Selaa lähdekoodia

dialog: backup and restore exiting route type when executing dialog event_route blocks

- reported by Nuno Miguel Reis

(cherry picked from commit 4fab97fb54334a55b1fce4e0d2f417fda5727c3a)
(cherry picked from commit 4eb7b5b0d4b2d914f488d15d637e4448102d6d63)
Daniel-Constantin Mierla 11 vuotta sitten
vanhempi
commit
8a8295fdbb
1 muutettua tiedostoa jossa 3 lisäystä ja 0 poistoa
  1. 3 0
      modules/dialog/dlg_handlers.c

+ 3 - 0
modules/dialog/dlg_handlers.c

@@ -1454,6 +1454,7 @@ void dlg_run_event_route(dlg_cell_t *dlg, sip_msg_t *msg, int ostate, int nstate
 {
 	sip_msg_t *fmsg;
 	int rt;
+	int bkroute;
 
 	if(dlg==NULL)
 		return;
@@ -1483,11 +1484,13 @@ void dlg_run_event_route(dlg_cell_t *dlg, sip_msg_t *msg, int ostate, int nstate
 		dlg_ref(dlg, 1);
 		dlg_set_ctx_iuid(dlg);
 		LM_DBG("executing event_route %d on state %d\n", rt, nstate);
+		bkroute = get_route_type();
 		set_route_type(LOCAL_ROUTE);
 		run_top_route(event_rt.rlist[rt], fmsg, 0);
 		dlg_reset_ctx_iuid();
 		exec_post_script_cb(fmsg, LOCAL_CB_TYPE);
 		dlg_unref(dlg, 1);
+		set_route_type(bkroute);
 	}
 }