Pārlūkot izejas kodu

core: set actions context for running kemi reply_route callback

Daniel-Constantin Mierla 9 gadi atpakaļ
vecāks
revīzija
daf7aa398e
1 mainītis faili ar 9 papildinājumiem un 6 dzēšanām
  1. 9 6
      receive.c

+ 9 - 6
receive.c

@@ -117,6 +117,7 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
 {
 	struct sip_msg* msg;
 	struct run_act_ctx ctx;
+	struct run_act_ctx *bctx;
 	int ret;
 #ifdef STATS
 	int skipped = 1;
@@ -294,14 +295,16 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
 		}
 
 		/* exec the onreply routing script */
-		if (onreply_rt.rlist[DEFAULT_RT]){
+		keng = sr_kemi_eng_get();
+		if (onreply_rt.rlist[DEFAULT_RT]!=NULL || keng!=NULL){
 			set_route_type(CORE_ONREPLY_ROUTE);
 			ret = 1;
-			if(unlikely(main_rt.rlist[DEFAULT_RT]==NULL)) {
-				keng = sr_kemi_eng_get();
-				if(keng!=NULL) {
-					ret = keng->froute(msg, REQUEST_ROUTE, NULL);
-				}
+			if(unlikely(keng!=NULL)) {
+				bctx = sr_kemi_act_ctx_get();
+				init_run_actions_ctx(&ctx);
+				sr_kemi_act_ctx_set(&ctx);
+				ret = keng->froute(msg, CORE_ONREPLY_ROUTE, NULL);
+				sr_kemi_act_ctx_set(bctx);
 			} else {
 				ret=run_top_route(onreply_rt.rlist[DEFAULT_RT], msg, &ctx);
 			}