[OpenSIPS-Devel] Using dialog module functions from LOCAL_ROUTE
Alex Massover
alex at jajah.com
Tue Sep 29 09:19:06 CEST 2009
Hi Bogdan!
The patch works perfectly for me, thank you!
Do you plan to commit it to SVN?
--
Best Regards,
Alex Massover
VoIP R&D TL
Jajah Inc.
-----Original Message-----
From: devel-bounces at lists.opensips.org [mailto:devel-bounces at lists.opensips.org] On Behalf Of Bogdan-Andrei Iancu
Sent: Sunday, September 27, 2009 10:54 PM
To: OpenSIPS devel mailling list
Subject: Re: [OpenSIPS-Devel] Using dialog module functions from LOCAL_ROUTE
Alex,
The simpler way to do it is to set the static dialog reference to the dialog before calling the TM ....more efficient as you do not have to find a dialog you already know...
Try the attached patch.
Regards,
Bogdan
Alex Massover wrote:
> Hi!
>
> Here's a patch that worked for me (for 1.5.3). Probably there're better ways to do it.
>
> --
> Best Regards,
> Alex Massover
> VoIP R&D TL
> Jajah Inc.
> -----Original Message-----
> From: devel-bounces at lists.opensips.org
> [mailto:devel-bounces at lists.opensips.org] On Behalf Of Bogdan-Andrei
> Iancu
> Sent: Sunday, September 27, 2009 10:09 PM
> To: OpenSIPS devel mailling list
> Subject: Re: [OpenSIPS-Devel] Using dialog module functions from
> LOCAL_ROUTE
>
> Hi Alex,
>
> Alex Massover wrote:
>
>>> It fails in dialog.c in w_fetch_dlg_value () here:
>>>
>>> if ( (dlg=get_current_dialog())==NULL ) {
>>> return -1;
>>>
>>> get_current_dialog() doesn't return a dialog :(
>>>
>>>
>> [Alex]
>>
>> get_current_dialog() looks to work either for initial requests or for established transactions.
>> I switched to get_dlg() that receives sip_msg.
>> The following works for me:
>>
>> unsigned int dir;
>> if ( ((dlg=get_current_dialog())==NULL) && ((dlg=get_dlg(&(msg->callid->body),&(get_from(msg)->tag_value),&(get_to(msg)->tag_value),&dir))==NULL) ) {
>> return -1;
>> }
>>
>> Why not to enable something like this in the version?
>> The only obstacle I can think of is a race condition (dialog can be destroyed) - but the same can happen in any other type or route as well.
>>
>>
> There is no race as the dialog module is based on a mechanism of
> referencing the dialog - as time the dialog is refed, it cannot be
> deleted ... as said, let me have a look into this...
>
> Regards,
> Bogdan
>
>
>
>>
>>> --
>>> Sincerely yours,
>>> Alex Massover
>>> VoIP R&D TL
>>> Jajah Inc.
>>>
>>>
>>>
>>>
>>>> -----Original Message-----
>>>> From: devel-bounces at lists.opensips.org [mailto:devel-
>>>> bounces at lists.opensips.org] On Behalf Of Alex Massover
>>>> Sent: Sunday, September 27, 2009 1:10 PM
>>>> To: OpenSIPS devel mailling list
>>>> Subject: Re: [OpenSIPS-Devel] Using dialog module functions from
>>>> LOCAL_ROUTE
>>>>
>>>> Hi!
>>>>
>>>> It's a BYE request generated by dlg_end_dlg(). I need to
>>>> fetch_dlg_value() to get variables stored on the dialog to send
>>>> them with accounting extra headers.
>>>>
>>>> This is what I have in opensips.cfg:
>>>>
>>>> modparam("acc", "radius_extra", "Connect-Info=$avp(s:info);.......
>>>> ") ...
>>>> ...
>>>> ...
>>>> local_route
>>>> {
>>>> if(is_method("BYE"))
>>>> {
>>>> fetch_dlg_value("internal_callid","$avp(s:info)");
>>>> acc_rad_request("200");
>>>> }
>>>> }
>>>>
>>>> This works for me for regular BYEs, but not with locally generated
>>>> BYEs, even with the hack below.
>>>>
>>>>
>>>> --
>>>> Sincerely yours,
>>>> Alex Massover
>>>> VoIP R&D TL
>>>> Jajah Inc.
>>>>
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: devel-bounces at lists.opensips.org [mailto:devel-
>>>>> bounces at lists.opensips.org] On Behalf Of Bogdan-Andrei Iancu
>>>>> Sent: Sunday, September 27, 2009 1:32 PM
>>>>> To: OpenSIPS devel mailling list
>>>>> Subject: Re: [OpenSIPS-Devel] Using dialog module functions from
>>>>> LOCAL_ROUTE
>>>>>
>>>>> Hi Alex,
>>>>>
>>>>> for what kind of requests (from LOCAL route) you try to use the
>>>>> dlg stuff?
>>>>>
>>>>> Regards,
>>>>> Bogdan
>>>>>
>>>>> Alex Massover wrote:
>>>>>
>>>>>
>>>>>> Hi!
>>>>>>
>>>>>> I'm looking for a way to use fetch_dlg_value() inside
>>>>>>
>>>>>>
>>> LOCAL_ROUTE.
>>>
>>>
>>>> I
>>>>
>>>>
>>>>>> edited dialog.c to to enable it:
>>>>>>
>>>>>> {"fetch_dlg_value",(cmd_function)w_fetch_dlg_value,
>>>>>>
>>>>>>
>>>> 2,fixup_dlg_fval,
>>>>
>>>>
>>>>>> 0, REQUEST_ROUTE| FAILURE_ROUTE | ONREPLY_ROUTE | BRANCH_ROUTE |
>>>>>> LOCAL_ROUTE },
>>>>>>
>>>>>> Now I can write fetch_dlg_value() inside the LOCAL_ROUTE, but I'm
>>>>>> getting NULLs always.
>>>>>>
>>>>>> Can anybody point me what else do I need to hack to have access
>>>>>>
>>>>>>
>>> to
>>>
>>>
>>>>>> dialog variables from LOCAL_ROUTE?
>>>>>>
>>>>>> Also what is the reason not to enable all dialog functions from
>>>>>> LOCAL_ROUTE?
>>>>>>
>>>>>>
>>>>>>
>
>
> _______________________________________________
> Devel mailing list
> Devel at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>
> This mail was received via Mail-SeCure System.
>
>
>
>
> This mail was sent via Mail-SeCure System.
>
>
>
> ----------------------------------------------------------------------
> --
>
> _______________________________________________
> Devel mailing list
> Devel at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>
This mail was received via Mail-SeCure System.
This mail was sent via Mail-SeCure System.
More information about the Devel
mailing list