by the way, I'm trying this using openser 1.3.0-pre1-notls from latest svn of trunk as of 12-4-07
I'm trying to do findme logic..
Call comes in, lookup settings for where it is supposed to go.
From the settings I find that the user wants it to ring a friends home phone, a cell phone, and the home ata associated with account. To keep voicemail handled by the home account and not by one of the places that they are forwarding to they want voicemail to be triggered after 15 seconds.
The friends home phone is actually one of our accounts and has two ata's associated with it that register as the same sip user and they have it also ring a cell phone and the account sends the call to voicemail after 18 seconds.
Psudo Call flow/Logic of what I have so far.
Call comes in to openser for 555/123-4567
pull from usr_preferences settings for the call destination number.
so I get a stack of avps $avp(s:brahch_uri) from usr_preferences like this:
sip:5551239876@127.0.0.1
sip:localuser3@127.0.0.1
sip:
5553216548@127.0.0.1
I do diversion header then branch for them with:
avp_pushto("$br", "$avp(s:branch_uri)"
I drop the local branch.
The branched calls come in as expected and verify that it is a valid intentional loopback by testing:
if ( ruri =~ "127.0.0.1" && dst_ip == 127.0.0.1 ) { < mark as valid loopback > }
Like the beginning of the original call I lookup where they should go and if the user in the diversion header is allowed to send them there (PSTN)
In this case
one call would be sent out through the PSTN gateways with full failover logic,
another would call the device associated with the account by doing a lookup("location")
and the third, (the one to the friend that our customer) would add another diversion header and start another parallel fork with loopback for the cell phone and two ata's
When I test with a simple forward to a single PSTN number,
in the loopbacked session, I rewrite the ruri accordingly with real dest user and real ip address.
the ruri shows what I want in the logs just before t_relay and exit and in branch_route[1]
after last log entry from branch_route, I have in the log:
ERROR:core:udp_send: sendto(sock,0xb619d954,1376,0,0xb619ba6c,16): Invalid argument(22)
CRITICAL:core:udp_send: invalid sendtoparameters one possible reason is the server is bound to localhost and attempts to send to the net
ERROR:tm:msg_send: udp_send failed
ERROR:tm:t_forward_nonack: sending request failed
Then I have log entrys from onreply_route[1]:
Reply - S=100 M=INVITE RURI=<null> src_ip =
127.0.0.1
Reply - S=477 M=INVITE RURI=<null> src_ip = 127.0.0.1
not the real world IP address of the other server I set in the ruri
and there is nothing in the logs on the intended server or the local server indicating routing logic for an invite failed
I'm woundering if the TM module, while processing the invite in the loopback, is matching up the transaction with the session that originated the loopback and using the settings and status from it.
Any Ideas, Thoughts, HELP!!?
Or is OpenSER just not ready for this yet?
Thanks Dave