[OpenSIPS-Users] Dialog vars not being sync'ed from DB to memory

Mariana Arduini marianarduini at gmail.com
Wed May 16 18:57:02 CEST 2012


Hi Razvan,

Do I need to open a bug about this issue somewhere? I saw Bogdan's message
about OpenSIPS 1.8 Stable being released tomorrow.

I think the problem is the dialog variables are not being fetched from DB,
either when OpenSIPS is restarded, either when we run the new fifo command
dlg_db_sync.

Thanks again!
Mariana.

On Wed, May 16, 2012 at 8:06 AM, Mariana Arduini <marianarduini at gmail.com>wrote:

> Hi, Razvan!
>
> Thank you for the $DLG_dir pseudovariable, it worked!
>
> The variables are properly flushed into the DB after 200 OK, and I can
> also see them using "opensipsctl fifo dlg_list_ctx", under context.
>
> Even using the $DLG_dir for the direction of a sequential request, I still
> need to access either the caller_contact or the callee_contact. Is there
> any other way to have those apart from the variables?
>
> Thanks again!
> Mariana.
>
>
> On Wed, May 16, 2012 at 5:34 AM, Razvan Crainea <razvan at opensips.org>wrote:
>
>>  Hi, Mariana!
>>
>> Can you check if the variables are properly flushed into the DB after
>> 200OK?
>> 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.
>>
>> [1] http://www.opensips.org/html/docs/modules/1.8.x/dialog.html#id295750
>>
>> Regards,
>>
>> --
>> Răzvan Crainea
>> OpenSIPS Developerhttp://www.opensips-solutions.com
>>
>>
>> On 05/15/2012 10:03 PM, Mariana Arduini wrote:
>>
>> Hello all,
>>
>>  We need to perform some substitutions in the R-URI and Contact header
>> in order to have the following flow working as required:
>>
>>  caller > opensips1 > opensips2 > callee
>>
>>  Currently, opensips1 stores "call_id", "caller_tag" and
>> "caller_contact" Dialog variables  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:
>>
>>  1) active opensips is running listening on virtual ip say 10.0.0.1
>> 2) caller sends INVITE to 10.0.0.1, which goes to active opensips
>> 3) active opensips is stopped and it's virtual ip set down; same virtual
>> ip is set up in stand by opensips and it is started; fifo command
>> dlg_db_sync is run on stand by opensips
>> 4) caller sends BYE to 10.0.0.1, which goes to stand by opensips
>>
>>  After loose_route(), stand by opensips cannot fetch_dlg_value for
>> "caller_tag" and the R-URI is set to 0. Then I tried the following, using
>> only one opensips:
>>
>>  1) caller sends INVITE to opensips
>> 2) fifo command dlg_list_ctx is run and shows all of the variables I
>> stored
>> 3) opensips is restarted and fifo command dlg_db_sync is run
>>  4) fifo command dlg_list_ctx is run again and shows only the dialog
>> info, not the variables in context
>>
>>  I also
>> tried get_dialog_info("caller_tag","$var(caller_tag)","call_id","$ci"); and
>> $dlg_val(), but yet the variables are not found:
>>
>>   22232: DBG:dialog:fetch_dlg_value: looking for <caller_tag>
>> 22232: DBG:dialog:fetch_dlg_value: var NOT found!
>> 22232: ERROR:core:do_assign: no value in right expression
>> 22232: ERROR:core:do_assign: error at line: 134
>> 22232: callid(1-5150 at 192.168.16.154) trying dlg_val(), caller_tag: 0
>> 22232: DBG:core:comp_scriptvar: str 20 : uac1192.168.16.154
>> 22232: DBG:dialog:fetch_dlg_value: looking for <caller_contact>
>> 22232: DBG:dialog:fetch_dlg_value: var NOT found!
>> 22232: ERROR:core:do_assign: no value in right expression
>> 22232: ERROR:core:do_assign: error at line: 146
>> 22232: callid(1-5150 at 192.168.16.154) trying dlg_val(), caller_contact: 0
>> 22232: DBG:tm:t_newtran: transaction on entrance=0xffffffffffffffff
>> 22232: DBG:core:parse_headers: flags=ffffffffffffffff
>> 22232: DBG:core:parse_headers: flags=78
>> 22232: DBG:tm:t_lookup_request: start searching: hash=5130, isACK=0
>> 22232: DBG:tm:matching_3261: RFC3261 transaction matching failed
>> 22232: DBG:tm:t_lookup_request: no transaction found
>> 22232: ERROR:core:parse_uri: uri too short: <0> (1)
>> 22232: ERROR:core:parse_sip_msg_uri: bad uri <0>
>> 22232: DBG:core:set_err_info: ec: 1, el: 3, ei: 'error parsing r-uri'
>> 22232: ERROR:tm:new_t: uri invalid
>> 22232: ERROR:tm:t_newtran: new_t failed
>>
>>  There is no error logs when dlg_db_sync is run. 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.
>>
>>  Can anyone see other type of solution that does not involve
>> storing/fetching dialog variables? I could take on that.
>>
>>  I'd really appreciate any help on this.
>>
>>   This is my cfg file:
>>
>>  ...
>>  modparam("dialog", "db_url",
>> "postgres://opensips:opensips@opensips_db_host:5432/opensips")
>> modparam("dialog", "db_mode", 1)
>> modparam("dialog", "db_flush_vals_profiles", 1)
>>  ...
>>  route {
>> ...
>>  if(is_method("INVITE")) {
>>  create_dialog();
>>  store_dlg_value("caller_tag", "$ft");
>>  xlog("L_INFO","Storing caller_tag: $ft");
>>  store_dlg_value("caller_contact", "$ct.fields(uri)");
>>  xlog("L_INFO","Storing caller_contact: $ct.fields(uri)");
>>  store_dlg_value("call_id", "$ci");
>>  xlog("L_INFO","Storing call_id: $ci");
>>                 route(1);
>>         }
>>  ...
>>  if (has_totag()) {
>>  # sequential request withing a dialog should
>>  # take the path determined by record-routing
>>  if (loose_route()) {
>>
>>                      $var(caller_tag) = $dlg_val(caller_tag);
>>                     xlog("L_INFO","trying dlg_val(), caller_tag:
>> $var(caller_tag)\n");
>>
>>                      if ($ft == $var(caller_tag)) {
>>                         $var(callee_contact) = $dlg_val(callee_contact);
>>                         xlog("L_INFO"," trying dlg_val(), callee_contact:
>> $var(callee_contact)\n");
>>                         $ru = $var(callee_contact);
>>                     } else {
>>                         $var(caller_contact) = $dlg_val(caller_contact);
>>                         xlog("L_INFO"," trying dlg_val(), caller_contact:
>> $var(caller_contact)\n");
>>                         $ru = $var(caller_contact);
>>                     }
>>
>>  }
>>  }
>>         record_route();
>>         if (!t_relay()) {
>>                 send_reply("500","Internal Error");
>>         };
>>         exit;
>> }
>> ...
>> route[1] {
>>  # for INVITEs enable some additional helper routes
>>  if (is_method("INVITE")) {
>>       $rd="opensips2.domain.com";
>>             $rp="5060";
>>
>>              # Change Contact header
>>             if
>> (subst('/^Contact\s*:\s*("[^"]*")?\s*<?sip:(([^@]*)@)?([^;>]*)((;[^;>]*)*)>?(.*)/Contact:
>> <sip:plain at my.domain.com\5>\7/ig')) {
>>                 xlog("L_DBG","CONTACT was modified");
>>             }
>>
>>      t_on_reply("2");
>>  }
>>
>>  }
>> ...
>> onreply_route[2] {
>>
>>          if(is_present_hf("Contact")) {
>>              xlog("L_INFO"," Storing callee_contact: $ct.fields(uri)");
>>             store_dlg_value("callee_contact", "$ct.fields(uri)");
>>         }
>>
>>          if
>> (subst('/^Contact\s*:\s*("[^"]*")?\s*<?sip:([^@]*)@[^;>]*((;[^;>]*)*)>?(.*)/Contact:
>> <sip:\2 at my.domain.com\3>\5/ig')) {
>>             xlog("L_DBG","CONTACT was modified");
>>         }
>> }
>>  ...
>>
>>
>>
>> _______________________________________________
>> Users mailing listUsers at lists.opensips.orghttp://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20120516/8ed20bf6/attachment-0001.htm>


More information about the Users mailing list