[sr-dev] git:master: dialog(k): one more event_route[dialog:failed]

Daniel-Constantin Mierla miconda at gmail.com
Fri Feb 17 09:37:45 CET 2012


Module: sip-router
Branch: master
Commit: 65889069b9cbffc2f2ee746f14cef46db65cb5c5
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=65889069b9cbffc2f2ee746f14cef46db65cb5c5

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at 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 {




More information about the sr-dev mailing list