On Fri, 2008-03-28 at 09:28 +0000, Benny Prijono wrote: > 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 > > > > I see the point. What response would be considered final in this case? -- Pedro