<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    I have some comments related to the patches, as I couldn't dig much
    into sources due to traveling constraints. See them inline.<br>
    <br>
    <div class="moz-cite-prefix">On 6/14/13 2:10 PM, Halina Nowak wrote:<br>
    </div>
    <blockquote cite="mid:51BB0853.9000205@mbdsys.com" type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      <font size="-1">These modifications were implementated for dialogs
        having PRACK and UPDATE<br>
        <br>
        --- a/modules/dialog/dlg_handlers.c    Fri Jun 14 13:45:41 2013
        +0200<br>
        +++ b/modules/dialog/dlg_handlers.c    Fri Jun 14 13:55:24 2013
        +0200<br>
        @@ -1249,16 +1249,18 @@<br>
             }<br>
         <br>
             if ( (event==DLG_EVENT_REQ || event==DLG_EVENT_REQACK)<br>
        -    && new_state==DLG_STATE_CONFIRMED) {<br>
        +         && (new_state==DLG_STATE_CONFIRMED ||
        new_state==DLG_STATE_EARLY)) {<br>
      </font></blockquote>
    <br>
    <font size="-1">This above is to catch PRACK, right? UPDATE should
      be sent after 200ok, or is allowed also for early dialogs?<br>
      <br>
    </font>
    <blockquote cite="mid:51BB0853.9000205@mbdsys.com" type="cite"><font
        size="-1">  <br>
                 timeout = get_dlg_timeout(req);<br>
                 if (timeout!=default_timeout) {<br>
                     dlg->lifetime = timeout;<br>
                 }<br>
        -        if (update_dlg_timer( &dlg->tl, dlg->lifetime
        )==-1) {<br>
        +        if (new_state!=DLG_STATE_EARLY) {<br>
        +          if (update_dlg_timer( &dlg->tl,
        dlg->lifetime )==-1) {<br>
                     LM_ERR("failed to update dialog lifetime\n");<br>
        +          }<br>
                 }<br>
        -        if (update_cseqs(dlg, req, dir)!=0) {<br>
        +        if ((event != DLG_EVENT_REQACK) &&
        (update_cseqs(dlg, req, dir)!=0)) {<br>
                     LM_ERR("cseqs update failed\n");<br>
                 } else {<br>
                     dlg->dflags |= DLG_FLAG_CHANGED;<br>
        <br>
        --- a/modules/dialog/dlg_hash.c    Fri Jun 14 13:45:41 2013
        +0200<br>
        +++ b/modules/dialog/dlg_hash.c    Fri Jun 14 13:55:24 2013
        +0200<br>
        @@ -883,6 +883,7 @@<br>
                     break;<br>
                 case DLG_EVENT_REQACK:<br>
                     switch (dlg->state) {<br>
        +                         case DLG_STATE_EARLY:<br>
                         case DLG_STATE_CONFIRMED_NA:<br>
                             dlg->state = DLG_STATE_CONFIRMED;<br>
      </font></blockquote>
    Here it seems to go to state DLG_STATE_CONFIRMED due to an ACK even
    there was no 200ok reply. Why is needed like that or have I
    misunderstood something?<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
</pre>
  </body>
</html>