Eric PTAK schrieb:
Hi all for a new debug day ;)
You're right Klaus, from my understanding :
- the expires value is taken from the dialog struct, or from
override_lifetime if it's set. ==> at this point, dialog->lifetime = 0, so if override_lifetime isn't set the expires will equal 0 too. so we need to go more deeply.
(not in call order)
- the dialog struct is given via the callback and filled by the dialog
module
- the dialog module calls get_dlg_timeout function which return the avp
lifetime or default_timeout if the avp doesn't exist
- the dialog module calls run_create_callbacks which then calls
registered callbacks like pua_dialoginfo's one
the weird thing, from dialog/dlg_handlers.c line 470 to 510, the dialog struct is built but the lifetime field is filled after the run_create_callbacks call...
I remember I have come across this before. Currently the order is:
/* first INVITE seen (dialog created, unconfirmed) */ run_create_callbacks( dlg, msg);
if ( seq_match_mode!=SEQ_MATCH_NO_ID && add_dlg_rr_param( msg, dlg->h_entry, dlg->h_id)<0 ) { LM_ERR("failed to add RR param\n"); goto error; }
if ( d_tmb.register_tmcb( msg, t, TMCB_RESPONSE_OUT|TMCB_RESPONSE_FWDED, dlg_onreply, (void*)dlg, unref_new_dialog)<0 ) { LM_ERR("failed to register TMCB\n"); goto error; }
dlg->lifetime = get_dlg_timeout(msg);
I wonder if it should be changed. Shouldn't run_create_callbacks() executed later? E.g. If there is an error creating the dialog IMO it makes no sense to call the callback at all.
Daniel, what do you think?
regards klaus
Regards, Eric. 2009/3/5 Klaus Darilion <klaus.mailinglists@pernau.at mailto:klaus.mailinglists@pernau.at>
I wonder why the lifetime was 0 at all? The lifetime should be the lifetime from the dialog module, and a liftime of 0 makes also in dialog module no sense. regards klaus Eric PTAK schrieb: Daniel was right ! I've changed override_lifetime pua_dialoginfo's parameter and it's now working ! Eric. 2009/3/4 Klaus Darilion <klaus.mailinglists@pernau.at <mailto:klaus.mailinglists@pernau.at> <mailto:klaus.mailinglists@pernau.at <mailto:klaus.mailinglists@pernau.at>>> Actually we still do not know if you use Kamailio or Opensips (which have slightly different implementations) The PUBLISh should be sent to: publish uri= sip:alice@domain If "domain" is yourself, it should be looped to the proxy via loopback interface (ngrep -d lo port 5060) regards klaus Eric PTAK schrieb: Hi, I'm trying to use *_dialoginfo modules but I'm facing to a missunderstanding, or a bug. In fact, the presence server is working and I'm also able to subscribe to dialog event. But when pua_dialoginfo uses pua to send the Publish, I don't know where it going... I even not sure publishes are really sent. This the log : DBG:dialog:run_create_callbacks: dialog=0xb59d30b0 DBG:pua_dialoginfo:__dialog_created: new INVITE dialog created: from=sip:alice@domain DBG:core:grep_aliases: comparing host [0:domain:0] with us [0:domain:0] DBG:core:grep_aliases: match found for: [0:domain:0] DBG:core:check_self: host == me DBG:pua_dialoginfo:build_dialoginfo: new_body: <?xml version="1.0"?> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" entity="sip:alice@domain"> <dialog id="MzQ3N2FiMzhiZGIwNzhhNDhhNjcxN2Y5OGJhY2M0N2Q." call-id="MzQ3N2FiMzhiZGIwNzhhNDhhNjcxN2Y5OGJhY2M0N2Q." direction="initiator"> <state>Trying</state> <remote> <identity>sip:bob@domain</identity> <target uri="sip:bob@domain"/> </remote> <local> <identity>sip:alice@domain</identity> <target uri="sip:alice@domain"/> </local> </dialog> </dialog-info> DBG:pua_dialoginfo:dialog_publish: publish uri= sip:alice@domain DBG:pua_dialoginfo:print_publ: publ: DBG:pua_dialoginfo:print_publ: uri= sip:alice@domain DBG:pua_dialoginfo:print_publ: id= DIALOG_PUBLISH.MzQ3N2FiMzhiZGIwNzhhNDhhNjcxN2Y5OGJhY2M0N2Q. DBG:pua_dialoginfo:print_publ: expires= 0 DBG:pua:send_publish: pres_uri=sip:alice@domain DBG:pua:search_htable: core_hash= 118 DBG:pua:search_htable: record not found DBG:pua:send_publish: insert type DBG:pua:send_publish: UPDATE_TYPE and no record found DBG:pua:send_publish: request for a publish with expires 0 and no record found DBG:dialog:get_dlg_timeout: invalid AVP value, use default timeout DBG:tm:run_reqin_callbacks: trans=0xb59d3270, callback type 1, id 0 entered Regards, Eric. ------------------------------------------------------------------------ _______________________________________________ Users mailing list Users@lists.opensips.org <mailto:Users@lists.opensips.org> <mailto:Users@lists.opensips.org <mailto:Users@lists.opensips.org>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users