Hello,

I am currently working on a scenario where I need to use Kamailio in the 
failure_route to process SIP responses, specifically handling negative SIP 
replies (e.g., 486 Busy Here) that Kamailio may receive.
Here is the topology:
    ##B2BUA (acts as a UAC with the Kamailio, because it sends the INVITE) -> 
Kamailio -> Callee##

In my setup, Kamailio needs to extract all Via headers from the received SIP 
response in the failure_route, focusing particularly on the bottom Via header 
(from the B2BUA' UAC part). However, I am encountering difficulties in 
achieving this. Here is what I have tried so far:

1. To extract the Via headers, I used the following line of code in the 
failure_route:
          ```$var(viaHeaderValues) = $T_rpl($hdr(Via));```
    However, this only returns the topmost Via header.

2. I attempted to get the first and last Via headers values with:
          ```$var(viaHeaderValueFirst) = $T_rpl($hdr(Via)[0]);
             $var(viaHeaderValueLast) = $T_rpl($hdr(Via)[1]);```
   Unfortunately, this also only returns the topmost Via header, which contains 
the address of Kamailio.


My goal is to make sure that when Kamailio sends the SIP reply to the UAC with 
send_reply method on the failure_route, it uses the extracted *Via header* of 
the incoming SIP response (only the bottom one). Here is an example scenario:
    - Received SIP Response in kamailio:
          ```
             SIP/2.0 486 Busy Here
             Via: SIP/2.0/UDP 
200.200.200.4;branch=z9hG4bK9157.090080a91105c0ec6279bb56882d1dc8.0
             Via: SIP/2.0/UDP 
200.200.200.3;received=200.200.200.3;rport=5060;branch=z9hG4bKF1aaZ7ea7yc2m
             From: <sip:[email protected]>;tag=222222
             To: <sip:[email protected]:5060>;tag=4545454
             Call-ID: [email protected]
             CSeq: 1 INVITE
             Content-Length: 0
          ```
    - Desired SIP Response from kamailio:
          ```
             SIP/2.0 486 Busy Here
             Via: SIP/2.0/UDP 
200.200.200.3;received=200.200.200.3;rport=5060;branch=z9hG4bKF1aaZ7ea7yc2m
             From: <sip:[email protected]>;tag=222222
             To: <sip:[email protected]:5060>;tag=4545454
             Call-ID: [email protected]
             CSeq: 1 INVITE
             Content-Length: 0
          ```

The current issue is that Kamailio modifies the Via header when sending the 
reply with send_reply method, resulting in:
          ```
             SIP/2.0 486 Busy Here
             Via: SIP/2.0/UDP 
200.200.200.3;rport=5060;branch=z9hG4bKF1aaZ7ea7yc2m;received=200.200.200.3
             From: <sip:[email protected]>;tag=222222
             To: <sip:[email protected]:5060>;tag=4545454
             Call-ID: [email protected]
             CSeq: 1 INVITE
             Content-Length: 0
          ```

Due to this change, the UAC does not correctly react to or understand the SIP 
response "SIP Reply follows the RFC standards, but my current UAC waits for a 
Via that looks like Via of the previous SIP messages in the structure of 
parameters.". It is crucial for the Via header to maintain the same important 
order such as the branch, received, and rport values as the previous exchanged 
SIP messages.

Could you please provide guidance on how to force Kamailio to send the SIP 
reply using send_reply method with the extracted bottom Via header from the 
incoming SIP response? Any advice or examples on handling this situation would 
be greatly appreciated.


Thank you for your time and assistance.
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the 
sender!
Edit mailing list options or unsubscribe:

Reply via email to