Hi,
I'm setting up multiple OpenSER proxies in different locations to server a
SIP domain. The proxies use a shared location database so they always know
where to send requests to the client when an incoming call hits either one.
The clients have the outbound proxy set to whichever one is closest to them.
The problem is that because the clients are NAT they do not receive the
request if the proxy IP that sends it is not the same as the one they have
set as the outbound proxy. The NAT will reject the request because it does
not arrive from the same IP that the connection was established to.
How can I make OpenSER relay requests to the "home proxy" of the user so
that this can then forward it to the client? I have added an "ob_proxy"
column to the subscriber table and tried using avp_db_load to get this value
for use in a t_relay() but I'm getting errors in OpenSER.
With the following config:
modparam("avpops","avp_url","mysql://user:pass@localhost/openser")
modparam("avpops", "avp_table", "dummy")
modparam("avpops","db_scheme",
"scheme1:username_col=username;value_col=ob_proxy;table=subscriber")
avp_db_load("$to","$avp(s:ob_proxy)/subscriber");
I'm getting errors in Openser log:
/usr/local/sbin/openser[15470]: ERROR:mysql:db_mysql_submit_query: driver
error: Unknown column 'value' in 'field list'
/usr/local/sbin/openser[15470]: ERROR:mysql:db_mysql_query: error while
submitting query
/usr/local/sbin/openser[15470]: ERROR:avpops:ops_dbload_avps: db_load failed
Does anyone know how to fix this or is there a better way of doing it?