[SR-Dev] git:master: Use run_top_route where appropriate

Jan Janak jan at iptel.org
Sun Mar 29 18:07:15 CEST 2009


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

Author: Jan Janak <jan at iptel.org>
Committer: Jan Janak <jan at iptel.org>
Date:   Sun Mar 29 18:05:24 2009 +0200

Use run_top_route where appropriate

This patch replaces the sequence of

  reset_static_buffer();
  init_run_actions_ctx();
  run_actions();

at the following places in the code:
 * execution of a branch route in tm
 * execution of a failure route in tm
 * execution of an onreply route in tm
 * execution of on_sl_reply in tm
 * execution of a route block after t_continue has been called
 * execution of the top-level route block in the core when a new SIP
   request arrives
 * execution of the top-level onreply route block in the core when a
   new SIP reply arrives

---

 modules/tm/t_fwd.c     |   11 ++++-------
 modules/tm/t_reply.c   |   16 ++++------------
 modules/tm/t_suspend.c |    6 ++----
 receive.c              |    8 ++------
 4 files changed, 12 insertions(+), 29 deletions(-)

diff --git a/modules/tm/t_fwd.c b/modules/tm/t_fwd.c
index 9e7249c..23ebd2e 100644
--- a/modules/tm/t_fwd.c
+++ b/modules/tm/t_fwd.c
@@ -116,7 +116,6 @@
 #ifdef USE_DST_BLACKLIST
 #include "../../dst_blacklist.h"
 #endif
-#include "../../select_buf.h" /* reset_static_buffer() */
 #ifdef POSTPONE_MSG_CLONING
 #include "../../atomic_ops.h" /* membar_depends() */
 #endif
@@ -152,7 +151,6 @@ static char *print_uac_request( struct cell *t, struct sip_msg *i_req,
 	struct sip_uri parsed_uri_bak;
 	int parsed_uri_ok_bak, uri_backed_up;
 	str msg_uri_bak;
-	struct run_act_ctx ra_ctx;
 
 	shbuf=0;
 	msg_uri_bak.s=0; /* kill warnings */
@@ -190,13 +188,12 @@ static char *print_uac_request( struct cell *t, struct sip_msg *i_req,
 	i_req->body_lumps = dup_lump_list(i_req->body_lumps);
 
 	if (unlikely(branch_route)) {
-		reset_static_buffer();
 		     /* run branch_route actions if provided */
 		set_route_type(BRANCH_ROUTE);
-		init_run_actions_ctx(&ra_ctx);
-		if (run_actions(&ra_ctx, branch_rt.rlist[branch_route], i_req) < 0) {
-			LOG(L_ERR, "ERROR: print_uac_request: Error in run_actions\n");
-               }
+		
+		if (run_top_route(branch_rt.rlist[branch_route], i_req) < 0) {
+			LOG(L_ERR, "ERROR: print_uac_request: Error in run_top_route\n");
+		}
 	}
 
 	/* run the specific callbacks for this transaction */
diff --git a/modules/tm/t_reply.c b/modules/tm/t_reply.c
index 4e8a884..a8d1ec3 100644
--- a/modules/tm/t_reply.c
+++ b/modules/tm/t_reply.c
@@ -114,7 +114,6 @@
 #include "../../usr_avp.h"
 #include "../../atomic_ops.h" /* membar_write() */
 #include "../../compiler_opt.h"
-#include "../../select_buf.h" /* reset_static_buffer() */
 #ifdef USE_DST_BLACKLIST
 #include "../../dst_blacklist.h"
 #endif
@@ -824,7 +823,6 @@ int run_failure_handlers(struct cell *t, struct sip_msg *rpl,
 	static struct sip_msg faked_req;
 	struct sip_msg *shmem_msg = t->uas.request;
 	int on_failure;
-	struct run_act_ctx ra_ctx;
 
 	/* failure_route for a local UAC? */
 	if (!shmem_msg) {
@@ -859,11 +857,9 @@ int run_failure_handlers(struct cell *t, struct sip_msg *rpl,
 		 * on failure */
 		on_failure = t->on_negative;
 		t->on_negative=0;
-		reset_static_buffer();
 		/* run a reply_route action if some was marked */
-		init_run_actions_ctx(&ra_ctx);
-		if (run_actions(&ra_ctx, failure_rt.rlist[on_failure], &faked_req)<0)
-			LOG(L_ERR, "ERROR: run_failure_handlers: Error in do_action\n");
+		if (run_top_route(failure_rt.rlist[on_failure], &faked_req)<0)
+			LOG(L_ERR, "ERROR: run_failure_handlers: Error in run_top_route\n");
 	}
 
 	/* restore original environment and free the fake msg */
@@ -1818,7 +1814,6 @@ int reply_received( struct sip_msg  *p_msg )
 	avp_list_t* backup_user_from, *backup_user_to;
 	avp_list_t* backup_domain_from, *backup_domain_to;
 	avp_list_t* backup_uri_from, *backup_uri_to;
-	struct run_act_ctx ra_ctx;
 #ifdef USE_DNS_FAILOVER
 	int branch_ret;
 	int prev_branch;
@@ -1962,9 +1957,7 @@ int reply_received( struct sip_msg  *p_msg )
 		backup_user_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER, &t->user_avps_to );
 		backup_domain_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_DOMAIN, &t->domain_avps_from );
 		backup_domain_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, &t->domain_avps_to );
-		reset_static_buffer();
-		init_run_actions_ctx(&ra_ctx);
-		if (run_actions(&ra_ctx, onreply_rt.rlist[t->on_reply], p_msg)<0)
+		if (run_top_route(onreply_rt.rlist[t->on_reply], p_msg)<0)
 			LOG(L_ERR, "ERROR: on_reply processing failed\n");
 		/* transfer current message context back to t */
 		if (t->uas.request) t->uas.request->flags=p_msg->flags;
@@ -2090,8 +2083,7 @@ trans_not_found:
 	if (goto_on_sl_reply) {
 		/* the script writer has a chance to decide whether to
 		forward the reply or not */
-		init_run_actions_ctx(&ra_ctx);
-		return run_actions(&ra_ctx, onreply_rt.rlist[goto_on_sl_reply], p_msg);
+		return run_top_route(onreply_rt.rlist[goto_on_sl_reply], p_msg);
 	} else {
 		/* let the core forward the reply */
 		return 1;
diff --git a/modules/tm/t_suspend.c b/modules/tm/t_suspend.c
index 9b418c1..4a31b80 100644
--- a/modules/tm/t_suspend.c
+++ b/modules/tm/t_suspend.c
@@ -106,7 +106,6 @@ int t_continue(unsigned int hash_index, unsigned int label,
 {
 	struct cell	*t;
 	struct sip_msg	faked_req;
-	struct run_act_ctx	ra_ctx;
 	int	branch;
 
 	if (t_lookup_ident(&t, hash_index, label) < 0) {
@@ -148,9 +147,8 @@ int t_continue(unsigned int hash_index, unsigned int label,
 	}
 	faked_env( t, &faked_req);
 
-	init_run_actions_ctx(&ra_ctx);
-	if (run_actions(&ra_ctx, route, &faked_req)<0)
-		LOG(L_ERR, "ERROR: t_continue: Error in run_action\n");
+	if (run_top_route(route, &faked_req)<0)
+		LOG(L_ERR, "ERROR: t_continue: Error in run_top_route\n");
 
 	/* TODO: save_msg_lumps should clone the lumps to shm mem */
 
diff --git a/receive.c b/receive.c
index beb4c58..9941df7 100644
--- a/receive.c
+++ b/receive.c
@@ -85,7 +85,6 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
 {
 	struct sip_msg* msg;
 	int ret;
-	struct run_act_ctx ra_ctx;
 #ifdef STATS
 	int skipped = 1;
 	struct timeval tvb, tve;	
@@ -123,7 +122,6 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
 
 	/* ... clear branches from previous message */
 	clear_branches();
-	reset_static_buffer();
 
 	if (msg->first_line.type==SIP_REQUEST){
 		if (!IS_SIP(msg)){
@@ -171,8 +169,7 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
 
 		set_route_type(REQUEST_ROUTE);
 		/* exec the routing script */
-		init_run_actions_ctx(&ra_ctx);
-		if (run_actions(&ra_ctx, main_rt.rlist[DEFAULT_RT], msg)<0){
+		if (run_top_route(main_rt.rlist[DEFAULT_RT], msg)<0){
 			LOG(L_WARN, "WARNING: receive_msg: "
 					"error while trying script\n");
 			goto error_req;
@@ -215,8 +212,7 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
 		/* exec the onreply routing script */
 		if (onreply_rt.rlist[DEFAULT_RT]){
 			set_route_type(ONREPLY_ROUTE);
-			init_run_actions_ctx(&ra_ctx);
-			ret=run_actions(&ra_ctx, onreply_rt.rlist[DEFAULT_RT], msg);
+			ret=run_top_route(onreply_rt.rlist[DEFAULT_RT], msg);
 			if (ret<0){
 				LOG(L_WARN, "WARNING: receive_msg: "
 						"error while trying onreply script\n");




More information about the sr-dev mailing list