Dear Kamailio Developers,

I am using Kamailio as a SIP server to facilitate a phone call, but I am
encountering an issue where the call cannot be established due to Kamailio
sending a 408 Request Timeout to the caller.
Issue Details:

   - A (Caller) sends an initial INVITE to Kamailio, which then forwards it
   to B (Callee). The INVITE contains the following Supported header:

Supported: timer,100rel,replaces,precondition,from-change,histinfo,tdialog

I suspect the *precondition* option may be relevant to the issue.


   - *B* responds with a *183 Session Progress* message, which includes:

Require: 100rel,precondition

Kamailio correctly forwards this response to *A.*


   - *A* then sends a *PRACK* request to Kamailio. However, this request
   contains:

Require: sec-agree
Supported: timer

Notably, *precondition* is absent from both the *Require* and *Supported*
headers.


   - Kamailio forwards this *PRACK* to *B*, and *B* responds with *200 OK*,
   including:

Supported: 100rel,from-change,tdialog


   - However, Kamailio does not seem to acknowledge *B's 200 OK* and
   instead *keeps retransmitting the PRACK* to *B*. B responds with *200 OK*
   again, but the cycle repeats.


   - After three retransmissions of *PRACK*, Kamailio eventually sends *408
   Request Timeout* to *A*, leading *A* to send a *CANCEL* request.


Device Used:


   - *Caller (A):* Asus ROG Phone 5
   - *Callee (B):* Asus ROG Phone 6

Both are commercially available mobile phones.

Possible Cause:

According to *3GPP TS 24.229, Subclause 5.1.3.1*,

If the received response with an SDP body includes a Require header with
> the "precondition" option-tag, the originating UE shall include a Require
> header with the "precondition" option-tag in responses with an SDP body to
> subsequent requests that include an SDP body and include the "precondition"
> option-tag in either the Supported or Require header field received
> in-dialog.


In this case:

   - The *183 Session Progress* from *B* contains Require: *precondition*.
   - The subsequent *PRACK* from *A* does not include *precondition* in
   either *Require* or *Supported*.

Could this mismatch be the reason Kamailio keeps retransmitting *PRACK* and
ignoring *B's 200 OK*? Or could there be another factor causing Kamailio to
behave this way?

If additional details are needed, please let me know.

Best regards,
Ping Kuan Kao
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions -- 
[email protected]
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to