[OpenSIPS-Users] Persistent variables within B2B dialog

Ovidiu Sas osas at voipembedded.com
Sat Apr 21 03:31:12 CEST 2012


Storing something into a cache should work with b2b modules (storing
has nothing to do with opensips operating mode: proxy vs b2b).  There
is an avp that was storing the b2b key and that one should be
available for subsequent requests.  Right now that functionality is
broken in 1.8 and trunk due to some new development, but it should be
restored in the future.  The b2b key could be used as a unique key to
store something into the cache, but it should be used carefully,
because a key may be reused as soon as a call is ended.

Regards,
Ovidiu Sas

-- 
VoIP Embedded, Inc.
http://www.voipembedded.com


On Fri, Apr 20, 2012 at 9:06 PM, Duane Larson <duane.larson at gmail.com> wrote:
> That's a very good explanation and would be good to have on the b2b module
> pages or somewhere.
>
> As for my problem I was able to solve it but still wanted to hear what
> someone had to say about my question.  I found another post where someone
> solved a similar issue by using the localcache module and cache store and
> cache fetch.
>
> Thanks for the heads up on what to expect with b2b and how it works with the
> other modules.
>
> On Apr 20, 2012 7:29 PM, "Ovidiu Sas" <osas at voipembedded.com> wrote:
>>
>> This topic comes back again and again ...
>> It should be really documented in the wiki somewhere.
>>
>> OpenSIPS can operate in two different modes:
>>  - proxy,
>>  - back to back user agent.
>>
>> The two modes of operations are exclusive and modules that are bind to
>> one mode of operation are more or less incompatible with the other
>> mode.  The dialog module is tightly coupled with the proxy mode and
>> therefore is totally incompatible with the b2b mode.  Most of the
>> modules were designed based on the assumption that opensips is running
>> in proxy mode and as a result, most of them are more or less (leaning
>> towards more) incompatible with b2b mode.
>> To be more precise, whatever operation that can be done in proxy mode
>> before calling t_relay() and doesn't have a dependency on t_relay to
>> complete, is safe to be use in b2b mode.
>> For instance, routing can be done using whatever routing method one
>> might prefer (dispatcher, drouting, ...) before initiating the call in
>> b2b mode, but once the call is initiated in b2b mode, all the
>> subsequent routing failover mechanisms are discarded (because of
>> dependency on t_relay() - proxy routing mode - dealing all the time
>> with the initial transaction).  In b2b mode, we are dealing with two
>> transactions: the incoming one and the outgoing one and things are
>> becoming more complex.
>>
>> Hope this brings a little bit of light in what can be and what cannot
>> be done while routing calls in b2b mode.
>> In the future, modules could be enhanced to be both proxy and b2b
>> friendly, but that requires quite a bit of work: design and
>> implementation.
>>
>>
>> Regards,
>> Ovidiu Sas
>>
>> --
>> VoIP Embedded, Inc.
>> http://www.voipembedded.com
>>
>>
>> On Fri, Apr 20, 2012 at 6:22 PM, Duane Larson <duane.larson at gmail.com>
>> wrote:
>> > Is it possible to keep a persistent variable throughout a dialog when
>> > using
>> > the B2B module?  I tried the Dialog modules (set_dlg_flag() and
>> > is_dlg_flag_set()) and $dlg_val variable but none worked.  Not sure why.
>> >
>> > route[b2b_request] {
>> >
>> >         if (search_body("a=sendonly") && method == "INVITE"){
>> >                 xlog("SEARCHING: rm [$rm]  BING BING FOUND IT\n");
>> >
>> >                 create_dialog();
>> >
>> >                 $dlg_val("IsHolding") = "1";
>> >
>> > #               set_dlg_flag("3");
>> >         };
>> >
>> > $var(IsHolding) = $dlg_val("IsHolding");
>> > xlog("************************************************* var is
>> > [$var(IsHolding)] and call is rm [$rm]\n");
>> >         #if (is_dlg_flag_set("3") && method == "ACK"){
>> >         if ($var(IsHolding) == "1" && method == "ACK"){
>> >                 xlog("***********SEARCHING***********: rm [$rm]  WE HAVE
>> > AN
>> > ACK and VarISHolding equals one\n");
>> >         };
>> >
>> > }
>>



More information about the Users mailing list