<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <tt>Hi, Mariana!<br>
      <br>
      Can you check if the variables are properly flushed into the DB
      after 200OK?<br>
      Also, if you only want to check the direction of a sequential
      request, you could use directly the $DLG_dir [1] pseudovariable
      from the dialog module.<br>
      <br>
      [1] <a
href="http://www.opensips.org/html/docs/modules/1.8.x/dialog.html#id295750">http://www.opensips.org/html/docs/modules/1.8.x/dialog.html#id295750</a></tt>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <br>
    <tt><br>
      Regards,<br>
    </tt>
    <pre class="moz-signature" cols="72">--
R&#259;zvan Crainea
OpenSIPS Developer
<a class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
    <br>
    On 05/15/2012 10:03 PM, Mariana Arduini wrote:
    <blockquote
cite="mid:CABHUZgBVEexmpeQh5zt-s88pqOGTV62yqiO93mR7Jh3Yox_e8g@mail.gmail.com"
      type="cite">Hello all,
      <div><br>
      </div>
      <div>We need to perform some substitutions in the R-URI and
        Contact header in order to have the following flow working as
        required:</div>
      <div><br>
      </div>
      <div>caller &gt; opensips1 &gt; opensips2 &gt; callee</div>
      <div><br>
      </div>
      <div>Currently, opensips1 stores "call_id", "caller_tag" and
        "caller_contact" Dialog variables&nbsp;
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-1">
        using function store_dlg_value() on new INVITES, and
        "callee_contact" on 200 OK for the INVITES. Later, for
        sequential requests, it compares the from_tag with the
        caller_tag, accessed using fetch_dlg_value(), to find out
        whether it is a request from the caller or from the callee, and
        it works. Then I started working on failover for opensips1, and
        that's where I'm facing problems. I'm playing with
        "db_flush_vals_profiles" new parameter and "dlg_db_sync" new
        fifo command, both on Dialog module, in order to have a stand by
        opensips1 taking over the dialogs going on in an active
        opensips1, in case it fails. This is the test:
        <div>
          <br>
        </div>
        <div>1) active opensips is running listening on virtual ip say
          10.0.0.1</div>
        <div>2) caller sends INVITE to 10.0.0.1, which goes to active
          opensips</div>
        <div>3) active opensips is stopped and it's virtual ip set
          down;&nbsp;same virtual ip is set up in stand by opensips and it is
          started;&nbsp;fifo command dlg_db_sync is run on stand by opensips</div>
        <div>4) caller sends BYE to 10.0.0.1, which goes to stand by
          opensips</div>
        <div><br>
        </div>
        <div>After loose_route(), stand by opensips cannot
          fetch_dlg_value for "caller_tag" and the R-URI is set to
          0.&nbsp;Then I tried the following, using only one opensips:</div>
        <div><br>
        </div>
        <div>1) caller sends INVITE to opensips</div>
        <div>2) fifo command&nbsp;dlg_list_ctx is run and shows all of the
          variables I stored</div>
        <div>3) opensips is restarted and fifo command dlg_db_sync is
          run</div>
        <div>
          4)&nbsp;fifo command&nbsp;dlg_list_ctx is run again and shows only the
          dialog info, not the variables in context</div>
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-1">
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-1">
        <div>
          <br>
        </div>
        <div>I also
          tried&nbsp;get_dialog_info("caller_tag","$var(caller_tag)","call_id","$ci");
          and $dlg_val(), but yet the variables are not found:</div>
        <div><br>
        </div>
        <div>
          <div>
            <div>
              22232: DBG:dialog:fetch_dlg_value: looking for
              &lt;caller_tag&gt;</div>
            <div>22232: DBG:dialog:fetch_dlg_value: var NOT found!</div>
            <div>22232: ERROR:core:do_assign: no value in right
              expression</div>
            <div>22232: ERROR:core:do_assign: error at line: 134</div>
            <div>22232: callid(<a moz-do-not-send="true"
                href="mailto:1-5150@192.168.16.154">1-5150@192.168.16.154</a>)
              trying dlg_val(), caller_tag: 0</div>
            <div>22232: DBG:core:comp_scriptvar: str 20 :
              uac1192.168.16.154</div>
            <div>22232: DBG:dialog:fetch_dlg_value: looking for
              &lt;caller_contact&gt;</div>
            <div>22232: DBG:dialog:fetch_dlg_value: var NOT found!</div>
            <div>22232: ERROR:core:do_assign: no value in right
              expression</div>
            <div>22232: ERROR:core:do_assign: error at line: 146</div>
            <div>22232: callid(<a moz-do-not-send="true"
                href="mailto:1-5150@192.168.16.154">1-5150@192.168.16.154</a>)
              trying dlg_val(), caller_contact: 0</div>
            <div>22232: DBG:tm:t_newtran: transaction on
              entrance=0xffffffffffffffff</div>
            <div>22232: DBG:core:parse_headers: flags=ffffffffffffffff</div>
            <div>22232: DBG:core:parse_headers: flags=78</div>
            <div>22232: DBG:tm:t_lookup_request: start searching:
              hash=5130, isACK=0</div>
            <div>22232: DBG:tm:matching_3261: RFC3261 transaction
              matching failed</div>
            <div>22232: DBG:tm:t_lookup_request: no transaction found</div>
            <div>22232: ERROR:core:parse_uri: uri too short: &lt;0&gt;
              (1)</div>
            <div>22232: ERROR:core:parse_sip_msg_uri: bad uri &lt;0&gt;</div>
            <div>22232: DBG:core:set_err_info: ec: 1, el: 3, ei: 'error
              parsing r-uri'</div>
            <div>22232: ERROR:tm:new_t: uri invalid</div>
            <div>22232: ERROR:tm:t_newtran: new_t failed</div>
          </div>
        </div>
        <div><br>
        </div>
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-1">
        <div>
          There is no error logs when dlg_db_sync is run.&nbsp;I see in the
          dialog table a column called from_tag, is there a way to get
          its content for a certain dialog? It seems the functions
          get_dialog_info(), fetch_dlg_info() and $dlg_val() only look
          for variables in the column vars.</div>
        <div><br>
        </div>
        <div>Can anyone see other type of solution that does not involve
          storing/fetching dialog variables? I could take on that.</div>
        <div><br>
        </div>
        <div>I'd really appreciate any help on this.</div>
        <div><br>
        </div>
      </div>
      <div>
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-1">
        This is my cfg file:
        <div><br>
        </div>
        <div>...</div>
        <div>
          <div>modparam("dialog", "db_url",
            "postgres://opensips:opensips@opensips_db_host:5432/opensips")</div>
          <div>modparam("dialog", "db_mode", 1)</div>
          <div>modparam("dialog", "db_flush_vals_profiles", 1)</div>
        </div>
        <div>...</div>
        <div>
          <div>route {&nbsp; &nbsp;</div>
          <div>...</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>if(is_method("INVITE"))
            {</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>create_dialog();</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>store_dlg_value("caller_tag",
            "$ft");</div>
          <div>
            <span class="Apple-tab-span" style="white-space:pre"> </span>xlog("L_INFO","Storing
            caller_tag: $ft");</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>store_dlg_value("caller_contact",
            "$ct.fields(uri)");</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>xlog("L_INFO","Storing
            caller_contact: $ct.fields(uri)");</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>store_dlg_value("call_id",
            "$ci");</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>xlog("L_INFO","Storing
            call_id: $ci");</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; route(1);</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; }</div>
        </div>
        <div>...</div>
        <div>
          <div>if (has_totag()) {</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>#
            sequential request withing a dialog should</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>#
            take the path determined by record-routing</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>if
            (loose_route()) {</div>
          <div><br>
          </div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var(caller_tag) =
            $dlg_val(caller_tag);</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO","trying dlg_val(),
            caller_tag: $var(caller_tag)\n");</div>
          <div><br>
          </div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($ft == $var(caller_tag)) {</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var(callee_contact) =
            $dlg_val(callee_contact);</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO"," trying dlg_val(),
            callee_contact: $var(callee_contact)\n");</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ru = $var(callee_contact);</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var(caller_contact) =
            $dlg_val(caller_contact);</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO"," trying dlg_val(),
            caller_contact: $var(caller_contact)\n");</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ru = $var(caller_contact);</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>}&nbsp;</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; record_route();</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; if (!t_relay()) {</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; send_reply("500","Internal Error");</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; };</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; exit;</div>
          <div>}</div>
          <div>...</div>
          <div>route[1] {</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>#
            for INVITEs enable some additional helper routes</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>if
            (is_method("INVITE")) {</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span></div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>&nbsp;&nbsp;
            &nbsp;$rd="<a moz-do-not-send="true"
              href="http://opensips2.domain.com">opensips2.domain.com</a>";</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $rp="5060";<span class="Apple-tab-span"
              style="white-space:pre"> </span></div>
          <div><br>
          </div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Change Contact header</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if
            (subst('/^Contact\s*:\s*("[^"]*")?\s*&lt;?sip:(([^@]*)@)?([^;&gt;]*)((;[^;&gt;]*)*)&gt;?(.*)/Contact:
            &lt;<a moz-do-not-send="true"
              href="mailto:sip%3Aplain@my.domain.com">sip:plain@my.domain.com</a>\5&gt;\7/ig'))
            {</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_DBG","CONTACT was modified");</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
          <div><br>
          </div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>&nbsp;
            &nbsp;&nbsp;t_on_reply("2");</div>
          <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div>}</div>
          <div>...</div>
          <div>onreply_route[2] {</div>
          <div><br>
          </div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; if(is_present_hf("Contact")) {</div>
          <div>
            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_INFO"," Storing callee_contact:
            $ct.fields(uri)");</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; store_dlg_value("callee_contact",
            "$ct.fields(uri)");</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; }</div>
          <div><br>
          </div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; if
            (subst('/^Contact\s*:\s*("[^"]*")?\s*&lt;?sip:([^@]*)@[^;&gt;]*((;[^;&gt;]*)*)&gt;?(.*)/Contact:
            &lt;sip:\<a moz-do-not-send="true"
              href="mailto:2@my.domain.com">2@my.domain.com</a>\3&gt;\5/ig'))
            {</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("L_DBG","CONTACT was modified");</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;</div>
          <div>}</div>
        </div>
        <div>
          <div>...</div>
        </div>
      </div>
      <div><br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
    </blockquote>
  </body>
</html>