<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Daniel,<br>
    <br>
    Indeed the case with the state full replies seems not to be taken
    care of. I attach a patch with the proposed solution.<br>
    Could you please provide feedback?<br>
    <br>
    1. I am unsure if the place I introduced the run_onsend  call is
    appropriate  since the buf used for msg_send is constructed <br>
    build_res_buf_from_sip_req and build_res_buf_from_sip_res calls.<br>
    <br>
    2. Also, we can maybe unite these if call branches I created:<br>
        send_res = msg_send(&uas_rb->dst, buf, res_len);<br>
        send_res = SEND_PR_BUFFER( uas_rb, buf, res_len );<br>
    <br>
    3. Do you think a get_send_socket snippet as follows should be
    inserted before the <i><b>if (onsend_route_enabled(SIP_REPLY)){</b></i>
    :<br>
    <br>
        if(dst.send_sock == NULL) {<br>
            dst.send_sock=get_send_socket(msg, &dst.to, dst.proto);<br>
            if (dst.send_sock==0){<br>
                LM_ERR("cannot forward reply\n");<br>
            }<br>
        }<br>
    <br>
    Thank you,<br>
    Lucian<br>
    <br>
    On 10/29/2014 02:15 PM, Daniel-Constantin Mierla wrote:
    <blockquote cite="mid:5450DA4B.9050906@gmail.com" type="cite"> Hello
      Lucian,<br>
      <br>
      I applied your patch with some fixes.<br>
      <br>
      I haven't checked with stateful replies, at some point a function
      from core should be used. You can go ahead and see if it works, if
      not, let me know and I can look into it as well. You can follow
      the callbacks for TMCB_RESPONSE_OUT or TMCB_RESPONSE_FWDED inside
      tm code, they should lead to the place where a sip response is
      going to be sent out.<br>
      <br>
      Cheers,<br>
      Daniel<br>
      <br>
      <div class="moz-cite-prefix">On 27/10/14 12:51, Lucian Balaceanu
        wrote:<br>
      </div>
      <blockquote cite="mid:544E31B9.9060802@1and1.ro" type="cite">
        Hello Daniel,<br>
        <br>
        I must admit I only saw your mail last Friday. Until the 10th of
        October I was also on vacation. I know that you actually
        committed some of the changes together with your comments on the
        12th this month. <br>
        <br>
        I don't know if we can consider the topic of the patch closed.
        As far as I understand, the state-full replies have not been
        addressed, right? (There should be a change in the t_reply.c) I
        followed the code to the relay_reply but I did not yet come to
        find the send function. Should I pursue further?<br>
        <br>
        Thank you,<br>
        Lucian Balaceanu<br>
        <br>
        <blockquote cite="mid:5448B8C5.5030007@1und1.de" type="cite">
          <div class="moz-forward-container"> Hi Lucian,<br>
            <br>
            somehow I forgot to follow up on this. But we need to get
            sorted out soon, before we release, so it works as expected
            with the new version. See more comments inline.<br>
            <br>
            <br>
            <div class="moz-cite-prefix">On 17/09/14 18:09, Lucian
              Balaceanu wrote:<br>
            </div>
            <blockquote cite="mid:5419B240.5000005@1and1.ro" type="cite">
              Hi Daniel,<br>
              <br>
              Please forgive me for my delay in responding to your mail.<br>
              Please find attached a second version of the
              onsend_route_reply patch (which again has some problems).
              As per your previous indications I did the following:<br>
              <br>
              <b>Issue1</b><br>
              <blockquote cite="mid:53FDC46E.7050909@gmail.com"
                type="cite"> From performances point of view, there can
                be added a config parameter to enable running of
                onsend_route for replies:<br>
                <br>
                onsend_route_reply = 0|1<br>
              </blockquote>
              <br>
              Following <a moz-do-not-send="true"
                class="moz-txt-link-freetext"
                href="http://www.asipto.com/pub/kamailio-devel-guide/#c08add_parameters">http://www.asipto.com/pub/kamailio-devel-guide/#c08add_parameters</a>
              I have tried to add onsend_route_reply parameter. The code
              compiles, but when trying to start kamailio with this
              parameter inside, the parsing fails with syntax errors
              signaling:<br>
              <br>
              <i> 0(1321) :<core> [cfg.y:3423]: yyerror_at():
                parse error in config file kamailio-basic.cfg.4.1, from
                line 107, column 1 to line 108, column 0: syntax error<br>
                 0(1321) : <core> [cfg.y:3423]: yyerror_at():
                parse error in config file kamailio-basic.cfg.4.1, from
                line 107, column 1 to line 108, column 0: <br>
                ERROR: bad config file (2 errors)</i><br>
            </blockquote>
            <br>
            The issue is:<br>
            <br>
            <pre wrap="">+<INITIAL>{ONSEND_RT_REPLY}      {  yylval.intval=atoi(yytext);
+                                               yy_number_str=yytext; return NUMBER; }

It should be:

+<INITIAL>{ONSEND_RT_REPLY}       {  yylval.intval=atoi(yytext);
+                                               yy_number_str=yytext; return ONSEND_RT_REPLY; }
</pre>
            <br>
            <blockquote cite="mid:5419B240.5000005@1and1.ro" type="cite">
              <br>
              <b>Issue2</b><br>
              <blockquote cite="mid:53FDC46E.7050909@gmail.com"
                type="cite"> #define onsend_enabled(rtype)
(onsend_rt.rlist[DEFAULT_RT]?((rtype==SIP_REPLY)?onsend_route_reply:1):0)<br>
              </blockquote>
              That is to say you see it best to take the chek for
              onsend_rt.list[DEFAULT_RT] from inside run_onsend()
              function and call this onsend_enabled(...) before the
              run_onsend()? <br>
            </blockquote>
            <br>
            This is to detect whether the onsend_route should be
            executed for SIP replies. The condition being:<br>
            <br>
            - if is a sip reply and onsend_route is set and the
            onsend_route_reply parameter is 1<br>
            <blockquote cite="mid:5419B240.5000005@1and1.ro" type="cite">
              <br>
              <b>Issue3</b><br>
              <blockquote cite="mid:53FDC46E.7050909@gmail.com"
                type="cite"> On the other hand, is onsend_route also
                executed for local requests? I had in mind it is only
                for received requests that are forwarded ... Iirc, on
                onsend_route, the sip message is the one received, the
                outgoing content being accessible via $snd(buf).<br>
                <br>
              </blockquote>
              I agree with you with taking out the locally generated
              requests and only left the run_onsend call in
              do_forward_reply function (inside forward.c).<br>
              Could you point me to the reply relaying function that is
              called for state-full processing? <br>
            </blockquote>
            Stateful processing for replies is mainly done in t_reply.c
            from tm module. At some point there should be a send buffer
            function call.<br>
            <br>
            Cheers,<br>
            Daniel<br>
            <blockquote cite="mid:5419B240.5000005@1and1.ro" type="cite">
              <br>
              Thank you and sorry again for my late answer,<br>
              Lucian<br>
            </blockquote>
            <br>
            <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://twitter.com/#%21/miconda">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a></pre>
            <br>
          </div>
          <br>
        </blockquote>
        <br>
      </blockquote>
      <br>
      <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://twitter.com/#%21/miconda">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a></pre>
    </blockquote>
    <br>
  </body>
</html>