Hi Stian,
The CANCEL is a hop by hop request, which means it is not forwarded by a
SIP proxy, but rather re-generated each time (based on the INVITE is
cancels).
So, you cannot change the CANCEL in script, as built based on the INVITE.
Now, the changes you do over the INVITE are not SIP-wise - you cannot
simply change the FROM / TO with text ops, as such changes will not be
persistent during the entire SIP dialog (and as first result, the CANCEL
does not contain the changes you do over the INVITE).
RURI can be changed via textops (see subst_uri() or subst_user() from
textops - http://www.opensips.org/html/docs/modules/1.9.x/textops.html).
For the FROM and TO hdr, use uac_replace_[to|from]() functions from the
uac module -
http://www.opensips.org/html/docs/modules/1.9.x/uac.html#id250475 /
Do the changes only over the initial INVITE ! CANCEL and rest will be
automatically changed, no need for script handling for this.
Best regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com
On 02/16/2013 04:24 PM, Stian Øvrevåge wrote:
Hi list,
Our upstream SIP provider recently started sending a new field that
makes our UAs ignore most SIP packets. To mediate this I added a
replace_all to remove this field:
replace_all(";phone-context=national", "");
I have moved this to the top of my main route{} block to be as wide as
possible while troubleshooting.
It works great for INVITEs:
Incomming request from upstream:
Request-URI: sip:UserB;[email protected];user=phone
From:<sip:UserA;[email protected];user=phone>;tag=8322
To:<sip:UserB;[email protected];user=phone>
Message routed to UA:
Request-URI: sip:[email protected]:5060
From:<sip:[email protected];user=phone>;tag=8322
To:<sip:[email protected];user=phone>
And all is good.
However, if a CANCEL message is either relayed from upstream or
generated in OpenSIPS, the fields are still present, causing the UA to
not recognize the dialog and continue ringing.
Request-URI: sip:UserB;[email protected];user=phone
From:<sip:UserA;[email protected];user=phone>;tag=8322
To:<sip:UserB;[email protected];user=phone>
Request-URI: sip:[email protected]:5060
From:<sip:UserA;[email protected];user=phone>;tag=8322
To:<sip:UserB;[email protected];user=phone>
I have also added the replace_all to onreply_route[2]{} and failure_route[1]{}.
In my main block I have a section for CANCEL processing, I started by
adding the replacement there and writing to the log $hdr(From) etc.
But no matter what I did it logged the original values.
How do I fix my CANCEL messages?
And what would be the correct way to log the value of some fields in
an outgoing packet after modification?
Using opensips 1.8.0-notls (x86_64/linux).
Brgds,
Stian Øvrevåge
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users