Module: sip-router
Branch: master
Commit: 4a8fd3e4d16e460b315083b22ce3b52b6d1e0667
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=4a8fd3e…
Author: Jan Janak <jan(a)iptel.org>
Committer: Jan Janak <jan(a)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");