Module: sip-router Branch: master Commit: 65889069b9cbffc2f2ee746f14cef46db65cb5c5 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=65889069...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Thu Feb 16 14:51:30 2012 +0100
dialog(k): one more event_route[dialog:failed]
- executed when >=300 is replied to the INVITE
---
modules_k/dialog/dialog.c | 1 + modules_k/dialog/dlg_handlers.c | 4 +++- modules_k/dialog/dlg_hash.h | 7 ++++--- 3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/modules_k/dialog/dialog.c b/modules_k/dialog/dialog.c index 0ce7464..8c3559d 100644 --- a/modules_k/dialog/dialog.c +++ b/modules_k/dialog/dialog.c @@ -414,6 +414,7 @@ static int mod_init(void)
dlg_event_rt[DLG_EVENTRT_START] = route_lookup(&event_rt, "dialog:start"); dlg_event_rt[DLG_EVENTRT_END] = route_lookup(&event_rt, "dialog:end"); + dlg_event_rt[DLG_EVENTRT_FAILED] = route_lookup(&event_rt, "dialog:failed");
#ifdef STATISTICS /* register statistics */ diff --git a/modules_k/dialog/dlg_handlers.c b/modules_k/dialog/dlg_handlers.c index a2208bb..6bc3670 100644 --- a/modules_k/dialog/dlg_handlers.c +++ b/modules_k/dialog/dlg_handlers.c @@ -1381,8 +1381,10 @@ void dlg_run_event_route(dlg_cell_t *dlg, sip_msg_t *msg, int ostate, int nstate if(nstate==DLG_STATE_CONFIRMED_NA) { rt = dlg_event_rt[DLG_EVENTRT_START]; } else if(nstate==DLG_STATE_DELETED) { - if(ostate==DLG_STATE_CONFIRMED || DLG_STATE_CONFIRMED_NA) + if(ostate==DLG_STATE_CONFIRMED || ostate==DLG_STATE_CONFIRMED_NA) rt = dlg_event_rt[DLG_EVENTRT_END]; + else if(ostate==DLG_STATE_UNCONFIRMED || ostate==DLG_STATE_EARLY) + rt = dlg_event_rt[DLG_EVENTRT_FAILED]; }
if(rt==-1 || event_rt.rlist[rt]==NULL) diff --git a/modules_k/dialog/dlg_hash.h b/modules_k/dialog/dlg_hash.h index f262c72..4cc702d 100644 --- a/modules_k/dialog/dlg_hash.h +++ b/modules_k/dialog/dlg_hash.h @@ -88,9 +88,10 @@ #define DLG_DIR_DOWNSTREAM 1 /*!< dialog has downstream direction */ #define DLG_DIR_UPSTREAM 2 /*!< dialog has upstream direction */
-#define DLG_EVENTRT_START 0 -#define DLG_EVENTRT_END 1 -#define DLG_EVENTRT_MAX 2 +#define DLG_EVENTRT_START 0 +#define DLG_EVENTRT_END 1 +#define DLG_EVENTRT_FAILED 2 +#define DLG_EVENTRT_MAX 3
/*! internal unique ide per dialog */ typedef struct dlg_iuid {