Module: sip-router Branch: master Commit: f4b7f30172ae9c790d21493f26a77fb515b7953f URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=f4b7f301...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Sun Oct 9 12:01:22 2011 +0200
dialog(k): new dialogs can be created only by INVITE
- remove unnecessary reset of current dialog pointer added previously, spotted by Timo Reimann
---
modules_k/dialog/dlg_handlers.c | 2 +- modules_k/dialog/dlg_hash.c | 6 +----- modules_k/dialog/dlg_hash.h | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/modules_k/dialog/dlg_handlers.c b/modules_k/dialog/dlg_handlers.c index 7bfdbab..ccc95f1 100644 --- a/modules_k/dialog/dlg_handlers.c +++ b/modules_k/dialog/dlg_handlers.c @@ -750,7 +750,7 @@ int dlg_new_dialog(struct sip_msg *req, struct cell *t, const int run_initial_cb if(current_dlg_pointer != NULL) return -1;
- if(req->first_line.u.request.method_value == METHOD_CANCEL) + if(req->first_line.u.request.method_value != METHOD_INVITE) return -1;
if(pre_match_parse( req, &callid, &ftag, &ttag, 0)<0) { diff --git a/modules_k/dialog/dlg_hash.c b/modules_k/dialog/dlg_hash.c index aa94b7e..a09e78f 100644 --- a/modules_k/dialog/dlg_hash.c +++ b/modules_k/dialog/dlg_hash.c @@ -178,7 +178,7 @@ inline void destroy_dlg(struct dlg_cell *dlg) int ret = 0; struct dlg_var *var;
- LM_DBG("destroying dialog %p\n",dlg); + LM_DBG("destroying dialog %p (ref %d)\n", dlg, dlg->ref);
ret = remove_dialog_timer(&dlg->tl); if (ret < 0) { @@ -200,10 +200,6 @@ inline void destroy_dlg(struct dlg_cell *dlg) run_dlg_callbacks( DLGCB_DESTROY , dlg, NULL, NULL, DLG_DIR_NONE, 0);
- /* reset the global shortcut, if it is the case */ - if(current_dlg_pointer == dlg) - current_dlg_pointer = NULL; - /* delete the dialog from DB*/ if (dlg_db_mode) remove_dialog_from_db(dlg); diff --git a/modules_k/dialog/dlg_hash.h b/modules_k/dialog/dlg_hash.h index ed90d23..ecb6526 100644 --- a/modules_k/dialog/dlg_hash.h +++ b/modules_k/dialog/dlg_hash.h @@ -88,7 +88,7 @@
/*! entries in the dialog list */ -struct dlg_cell +typedef struct dlg_cell { volatile int ref; /*!< reference counter */ struct dlg_cell *next; /*!< next entry in the list */ @@ -116,7 +116,7 @@ struct dlg_cell struct dlg_head_cbl cbs; /*!< dialog callbacks */ struct dlg_profile_link *profile_links; /*!< dialog profiles */ struct dlg_var *vars; /*!< dialog variables */ -}; +} dlg_cell_t;
/*! entries in the main dialog table */
On 10/9/11 11:02 AM, Juha Heinanen wrote:
Daniel-Constantin Mierla writes:
dialog(k): new dialogs can be created only by INVITE
doesn't SUBSCRIBE also create a dislog?
a SIP dialog yes, but not a dialog-module dialog, since the states in dialog module works only for INVITE-based dialogs (e.g., after creation, expects ACK, then BYE to terminate it).
Are you using it for subscribes?
Cheers, Daniel
Hello,
On 10/9/11 11:21 AM, Juha Heinanen wrote:
Daniel-Constantin Mierla writes:
Are you using it for subscribes?
not now, but i can imagine that any day someone may ask me to limit the number of simultaneous subscribes to an aor.
probably such condition can be tested against active_watchers table from presence, there can be done more filtering specific for presence dialogs, like on event types. It should not be hard to implement at all.
Cheers, Daniel