Hi, Richard!

When a transaction is created, either by t_newtran(), either by using a function that internally creates it, the request message, along with its changes are stored/cloned in the transaction. When failure_route is run, you are actually seeing the message stored in the transaction. This essentially means that if the headers had been added *after* the transaction was created, you will not be able to access them in failure route. Of course, Ben is right as well - if you are adding the headers in the branch route, you will not see them in a different branch. And half of the reason is similar to the one above: when the transaction is created (i.e. by t_relay()), the request message is cloned in transaction, then branch routes are executed. Whatever change you make per branch, they are stored in each branch's structure (not in the message itself). Hence, when the failure route is executed, you will get the message cloned when the transaction was created (before branch routes are even executed).
Hope this helps you identify missing headers in failure route :)

Best regards,

Răzvan Crainea
OpenSIPS Core Developer
http://www.opensips-solutions.com

On 2/24/23 17:14, Ben Newlin wrote:
Richard,

Are you by chance adding the PAID/RPID headers in a branch route? Changes to a SIP message made in a branch route exist only in that branch, and will not be present in the failure route.

Ben Newlin

*From: *Users <users-boun...@lists.opensips.org> on behalf of Richard Robson <richard.rob...@8x8.com>
*Date: *Friday, February 24, 2023 at 6:58 AM
*To: *users@lists.opensips.org <users@lists.opensips.org>
*Subject: *[OpenSIPS-Users] PAID not in resent INVITE from Failure Block

* EXTERNAL EMAIL - Please use caution with links and attachments *

------------------------------------------------------------------------

I have an OpenSIPS 2.3 instance, where we are sending a call to the next hop and are receiving a 403 forbidden. This is expected and we need to update the from or to header and resend the call to the same destination whish will accept this. we do not make any other changed in the failure route, nor want to.

This is working, however, the additional PAID and RPID headers, which were added by OpenSIPs before the INVITE was t_relayed are missing from the updated INVITE, ( the from header is modified.)

The documentation implies that the headers should be there:

*Processing* : the original SIP request (that was sent out)

There is nothing in the failure route to cause the headers to be dropped.

Therefore is this by design? i.e. additional headers are dropped and need to be re-applied, they are missing because the 403 did not contain them or is this a bug and the headers should be there?

INVITE (with PAID & RPID  headers) ->

<- 403 forbidden (no PAID or RPID)

INVITE (no PAID & RPID  headers) ->   (this just has the from header modified)

Regards, Richard


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to