Juha Heinanen writes:
thanks for your reply. the above proposal sounds very
promising
indeed. regarding socket, it could be a module param that can be set on
the dispatcher host to override socket value in location table.
daniel,
in fact, nathelper already has natping_socket param that can be used to
force dispatcher socket.
i tried to make dispatcher generate nat pings by setting usrloc and
nathelper params as follows:
# -- usrlog params
modparam("usrloc", "db_url",
"mysql://foo:bar@192.98.103.2/ser")
modparam("usrloc", "use_domain", 1)
modparam("usrloc", "db_mode", 3)
modparam("usrloc", "timer_interval", 0)
modparam("usrloc", "nat_bflag", 1)
# -- nathelper params
modparam("nathelper", "natping_interval", 20)
modparam("nathelper", "ping_nated_only", 0)
modparam("nathelper", "natping_socket",
"192.98.103.10:5060")
then i registered one sip phone over udp and checked that its contact
exists in ser/location table in db pointed by db_url param. the result
was that there was no sign of udp ping packets.
i added some debugging to nathelper/nathelper.c and saw that nathelper
makes once per second call:
rval = ul.get_all_ucontacts(buf, cblen, (ping_nated_only?ul.nat_flag:0),
((unsigned int)(unsigned long)timer_idx)*natping_interval+iteration,
natping_processes*natping_interval);
but does not get any records back.
i then turned on mysql debug on mysql server and found that after initial
connects to db, dispatcher is not sending any requests to db. so there
is no way that i could return something to nathelper.
could it be that in db_mode=3, ul.get_all_ucontacts does not work at
all? any other ideas?
-- juha