Kaynağa Gözat

sl: lookup event route for local response at startup

- group lookup of sl event routes in one function
Daniel-Constantin Mierla 12 yıl önce
ebeveyn
işleme
16f87ae1b1
3 değiştirilmiş dosya ile 22 ekleme ve 8 silme
  1. 1 5
      modules/sl/sl.c
  2. 19 3
      modules/sl/sl_funcs.c
  3. 2 0
      modules/sl/sl_funcs.h

+ 1 - 5
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;
 }

+ 19 - 3
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))

+ 2 - 0
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