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: [email protected] [mailto:[email protected]] 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: [email protected] [mailto:devel- >>> [email protected]] 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: [email protected] [mailto:devel- >>>> [email protected]] 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 [email protected] 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.
dialog.c.patch
Description: dialog.c.patch
_______________________________________________ Devel mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
