re-INVITE tsx takes very long to reach TERMINATED state on negative reply in sip_inv.c -- PATCH

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 6, 2009 at 8:32 PM, Ruud Klaver <ruud at ag-projects.com> wrote:

>
> It's probably good if you don't include this in the latest release, as
>>> there are still some issues with re-INVITEs. I took some time to investigate
>>> and try to fix them. I've included another two patches for this purpose.
>>>
>>> I've noticed that whenever you receive a 408 or 481 response with the
>>> INVITE dialog, you end the INVITE session. This is indeed what the RFC
>>> prescribes, but I've found that ending the session when receiving a 408 in
>>> response to a re-INVITE is probably not desired behaviour. What I'm doing in
>>> our application is sending a 180 in response to a re-INVITE and presenting a
>>> prompt to the user whenever a stream gets added in the SDP. Now if the user
>>> is away or not paying attention, the SIP proxy will send a 408 to the sender
>>> of the re-INVITE, which will terminate the session. I don't think this is
>>> what should happen, so I've included
>>> "pjsip-2553-sip_inv-dont_disconnect_on_408_reply_to_reinvite.patch", which
>>> doesn't terminate the INVITE session on a 408 if the state is CONFIRMED.
>>>
>>
>>
>> IMO ending the invite session on 408/481 is (still) the right thing to do.
>>
>> The real problem here is pjsip doesn't retransmit the 180. According to
>> the spec, proxy may terminate (INVITE) transaction after it sees provisional
>> response if it doesn't see further responses within 3 minutes, hence UAS
>> must retransmit (last sent) provisional response every 1 minute. Currently
>> we don't do that.
>>
>> I just added https://trac.pjsip.org/repos/ticket/822 to fix this in 1.3.
>>
>>
> That sound like a good workaround. The question is, who should be
> responsible for repeating the last provisional response, the pjsip_inv
> object or whomever is using it? I think both for the original INVITE and
> subsequent re-INVITEs the application could resend the provisional response
> itself, calling pjsip_inv functions.
>
>
I'm thinking that the transaction object should be responsible for this. So
while the app doesn't send final response, the transaction should retransmit
last provisional response every 1 minute. I don't think you have any
complaints with this approach. :)

cheers
 Benny
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20090512/1ae5107e/attachment.html>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux