On Sat, Sep 18, 2010 at 11:49 AM, mayamatakeshi <[email protected]>wrote:

>
> On Sat, Sep 18, 2010 at 7:57 AM, Stefano Pisani <
> [email protected]> wrote:
>
>>  No I don't.
>> I want that opensis uses same port of registration for INVITE.
>> i.e. the client is register on port 5061, opensips uses from port 5061
>> for INVITE
>>
>
> If you are dealing with more than 2 ports, this might get complicated.
> But in case of just 2 ports, you could check the ReceivedPort and set a
> bflag during handling of the REGISTER request:
>
> if($Rp == 5060) {
>   setbflag(BFLAG_RECEIVED_ON_PORT_5060);
> }
>
> The bflags are saved with the registration, so you can check them in a
> branch_route called after lookup and force the port to be used to relay the
> request:
>
> if (lookup("location")) {
>   t_on_branch("USER_BRANCH");
>   if (!t_relay()) {
>     sl_reply_error();
>     exit;
>   }
> }
>
> branch_route [USER_BRANCH] {
>   if (isbflagset(BFLAG_RECEIVED_ON_PORT_5060)) {
>     force_send_socket(MY_IP_ADDRESS:5060);
>    } else {
>     force_send_socket(MY_IP_ADDRESS:5061);
>   }
> }
>
> (obs: I actually, never tested this. I'm writing from my recollections of
> similar problems I had to deal with).
>
>
I looked at the docs. I'm not sure but maybe, the socket where the message
was received will be available in the branch_route as $(branch(socket)):

http://www.opensips.org/Resources/DocsCoreVar16#toc16

At least I can see this info being stored in the location table and I expect
the branch processing to load it as it does with the bflags.
So maybe you can use just $(branch(socket)) in the call to
force_send_socket:

force_send_socket($(branch(socket)));

(I don't know if it is necessary to remove the "sip:" prefix from the socket
info).
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to