[OpenSIPS-Users] [dialog] Can't fetch data in 200 reply route of BYE

liuf liuf at ffcs.cn
Tue Mar 9 10:44:29 CET 2010


My actions as below, please help me check:

1. I used fetch_dlg_value function in onreply_route, when opensips received
100/200 reply of INVITE, I can get dialog stored value, but in 200 reply of
BYE, I can't get any data.

2. First, I found opensips had not get dialog pointer in w_fetch_dlg_value
function. 

3. In get_current_dialog function, if 200 reply, ONREPLY_ROUTE,
trans->dialog_ctx will be return. 

4. I found dialog_ctx seem only can be set in function dlg_onreq when
opensips received BYE. 

5. According my addtion debug info, I found when opensips received BYE,
dlg_onreq will be exec. 

6. I guess when opensips received sequential request (BYE), it will create
new transaction, then set current dialog pointer to this new transaction in
dlg_onreq function. Then when reply of these requests (200) be received,
current dialog pointer can be get via get_current_dialog function.

7. So I consider in function dlg_onreq, move t->dialog_ctx =
(void*)current_dlg_pointer; to the position that before "if (
current_dlg_pointer->flags & DLG_FLAG_ISINIT )".

===========================================================
void dlg_onreq(struct cell* t, int type, struct tmcb_params *param)
{
	/* is the dialog already created? */
	if (current_dlg_pointer!=NULL) {

                t->dialog_ctx = (void*)current_dlg_pointer;

		/* new, un-initialized dialog ? */
		if ( current_dlg_pointer->flags & DLG_FLAG_ISINIT )
			return;

		/* dialog was previously created by create_dialog() 
		   -> just do the last settings */
		run_create_callbacks( current_dlg_pointer, param->req);
..........
===========================================================
-- 
View this message in context: http://n2.nabble.com/dialog-Can-t-fetch-data-in-200-reply-route-of-BYE-tp4699883p4701106.html
Sent from the OpenSIPS - Users mailing list archive at Nabble.com.



More information about the Users mailing list