2
0
Эх сурвалжийг харах

dialog(k): one more event_route[dialog:failed]

- executed when >=300 is replied to the INVITE
Daniel-Constantin Mierla 13 жил өмнө
parent
commit
65889069b9

+ 1 - 0
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 */

+ 3 - 1
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)

+ 4 - 3
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 {