On Thu, Mar 27, 2008 at 8:10 PM, Pedro Sanchez <psanchez at nortel.com> wrote: > Hello, > > My PJSIP client is reporting a time out (408) and dropping a call > (sending a BYE message) just a few seconds after it has been > successfully established. I'm trying to understand why this is > happening. > > The client connects via a proxy server which happens to be front-ending > a pool of real servers. Therefore, upon processing an INVITE from my > client the proxy sends a REFER message telling my client the real > address to be contacted (specified in the Refer-To field). My client > sends the new INVITE, still via the original proxy, which is processed > fine, gets the 200 OK, and everyone is happy, the connection is > established. Okay. > In parallel to the above, my client sends NOTIFY messages to the proxy > telling it about the status of the REFER message it received before. It > first sends a NOTIFY Trying message, and upon successful call > establishment with the requested server it sends a NOTIFY OK message to > the proxy ... and it keeps sending them, one after another. These NOTIFY > messages get a "100 Trying" response each from the proxy, which my > reading of RFC 3515 tells me is acceptable (as well as any appropriate > 4xx-6xx class response). While it is acceptable, "100 Trying" is not a final response of course, so the UAC transaction continues. > Some times it happens that the original proxy decides to process the > original INVITE directly so no REFER message is sent to my client. In > these cases, the connection is established properly and the call is > never dropped. The session goes just fine. Right. > The only thing that puzzles me is why PJSIP keeps repeatedly sending the > NOTIFY OK messages after the call has been successfully established. > Isn't just one enough? Or is it that the "100 Trying" responses are not > expected by PJSIP? The NOTIFY SIP transactions are independent from one another and from the INVITE transaction. Each transaction must get a final response for it to terminate. And from your description above, the NOTIFY transaction has not been responded with final response by your proxy. So because of that, PJSIP continues to retransmit the NOTIFY request every 4 seconds (even though a provisional response has been received). This complies to RFC 3261 Section 17.1.2.1: "If a provisional response is received, retransmissions continue for unreliable transports, but at an interval of T2." > So, any ideas where this 408 timeout might be coming from? If the NOTIFY request is not responded with a final response after 32 seconds, the transaction layer in pjsip will raise 408 error to the upper layer. Cheers Benny > Thank you, > > -- > Pedro > > > > > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip at lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >