Module: sip-router Branch: master Commit: 16f87ae1b1f78938ed56a7c9a336a2853022b86c URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=16f87ae1...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Fri Sep 20 13:39:15 2013 +0200
sl: lookup event route for local response at startup
- group lookup of sl event routes in one function
---
modules/sl/sl.c | 6 +----- modules/sl/sl_funcs.c | 22 +++++++++++++++++++--- modules/sl/sl_funcs.h | 2 ++ 3 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/modules/sl/sl.c b/modules/sl/sl.c index 87449fd..ab5e737 100644 --- a/modules/sl/sl.c +++ b/modules/sl/sl.c @@ -78,8 +78,6 @@ MODULE_VERSION static int default_code = 500; static str default_reason = STR_STATIC_INIT("Internal Server Error");
-int _sl_filtered_ack_route = -1; /* default disabled */ - static int sl_bind_tm = 1; static struct tm_binds tmb;
@@ -176,9 +174,7 @@ static int mod_init(void) } }
- _sl_filtered_ack_route=route_lookup(&event_rt, "sl:filtered-ack"); - if (_sl_filtered_ack_route>=0 && event_rt.rlist[_sl_filtered_ack_route]==0) - _sl_filtered_ack_route=-1; /* disable */ + sl_lookup_event_routes();
return 0; } diff --git a/modules/sl/sl_funcs.c b/modules/sl/sl_funcs.c index 388f79c..c9c870c 100644 --- a/modules/sl/sl_funcs.c +++ b/modules/sl/sl_funcs.c @@ -75,7 +75,24 @@ static char *tag_suffix; we do not filter */ static unsigned int *sl_timeout;
-extern int _sl_filtered_ack_route; +static int _sl_filtered_ack_route = -1; /* default disabled */ + +static int _sl_evrt_local_response = -1; /* default disabled */ + +/*! + * lookup sl event routes + */ +void sl_lookup_event_routes(void) +{ + _sl_filtered_ack_route=route_lookup(&event_rt, "sl:filtered-ack"); + if (_sl_filtered_ack_route>=0 && event_rt.rlist[_sl_filtered_ack_route]==0) + _sl_filtered_ack_route=-1; /* disable */ + + _sl_evrt_local_response = route_lookup(&event_rt, "sl:local-response"); + if (_sl_evrt_local_response>=0 + && event_rt.rlist[_sl_evrt_local_response]!=NULL) + _sl_evrt_local_response = -1; +}
/*! * init sl internal structures @@ -207,8 +224,7 @@ int sl_reply_helper(struct sip_msg *msg, int code, char *reason, str *tag) ret = msg_send(&dst, buf.s, buf.len); mhomed=backup_mhomed;
- rt = route_lookup(&event_rt, "sl:local-response"); - if (unlikely(rt >= 0 && event_rt.rlist[rt] != NULL)) + if (unlikely(_sl_evrt_local_response >= 0)) { if (likely(build_sip_msg_from_buf(&pmsg, buf.s, buf.len, inc_msg_no()) == 0)) diff --git a/modules/sl/sl_funcs.h b/modules/sl/sl_funcs.h index 772f106..4654d80 100644 --- a/modules/sl/sl_funcs.h +++ b/modules/sl/sl_funcs.h @@ -48,4 +48,6 @@ int sl_reply_error(struct sip_msg *msg);
int sl_get_reply_totag(struct sip_msg *msg, str *totag);
+void sl_lookup_event_routes(void); + #endif