[prev in list] [next in list] [prev in thread] [next in thread] 

List:       asterisk-dev
Subject:    [asterisk-dev] SIP autopeer bug and general retransmission
From:       "Kirill 'Big K' Katsnelson" <kkm () adaptiveai ! com>
Date:       2010-02-26 6:46:40
Message-ID: 4B876E50.5000207 () adaptiveai ! com
[Download RAW message or body]

I am trying to understand the general idea behind SIP retransmission 
implementation.

First, there is a related bug that makes manager event stream rather 
unusable: https://issues.asterisk.org/view.php?id=16908

The repro in the ticket is artificial; in real life the scenario happens 
when a reply to client's un-REGISTER packet is lost, and the client 
retransmits it.

As I am trying to follow the code path, it seems to me that in general 
there is no concept of true retransmission of a reply message. The code 
is supposed to rely on req->ignore flag, set if the request has a 
duplicate CSeq, but instead of just pulling the last reply from the 
dialog and sending it again, code calls the original incoming_* handler, 
assuming idempotence. I do not know about other handlers, but REGISTER 
messages for realtime and automatic peers are clearly NOT idempotent.

So the bug is actually TWO bugs: one is as described, and another is 
that the same thing occurs in a retransmission scenario. I can think of 
a fix that solves the latter issue alone, but none that would fix both.

Why is so complex an idea employed? Should that be changes -- can just 
the last reply be kept with the dialog and retransmitted when requested 
by the client, and why not if not?

  -kkm

-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic