Module: sip-router
Branch: master
Commit: 65889069b9cbffc2f2ee746f14cef46db65cb5c5
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=6588906…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)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 {