Module: sip-router Branch: master Commit: 16f87ae1b1f78938ed56a7c9a336a2853022b86c URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=16f87ae1b1f78938ed56a7c9a336a2853022b86c
Author: Daniel-Constantin Mierla <[email protected]> Committer: Daniel-Constantin Mierla <[email protected]> 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 _______________________________________________ sr-dev mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
