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.
Require: 100rel,precondition

Kamailio correctly forwards this response to A.
Require: sec-agree
Supported: timer

Notably, precondition is absent from both the Require and Supported headers.
Supported: 100rel,from-change,tdialog

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:

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