Browse Source

Merge pull request #503 from smititelu/SIPPROXY-195

Complete the list of checking routing blocks types with t_is_request_route() config function
Daniel-Constantin Mierla 9 years ago
parent
commit
15c139831f
2 changed files with 38 additions and 0 deletions
  1. 25 0
      modules/tmx/doc/tmx_admin.xml
  2. 13 0
      modules/tmx/tmx_mod.c

+ 25 - 0
modules/tmx/doc/tmx_admin.xml

@@ -298,6 +298,31 @@ route[abc] {
     if(t_is_reply_route()) { ... }
 }
 ...
+</programlisting>
+		</example>
+	</section>
+	<section id="tmx.f.t_is_request_route">
+		<title>
+		<function moreinfo="none">t_is_request_route()</function>
+		</title>
+		<para>
+		Returns true if the top-executed route block is request_route.
+		</para>
+		<para>
+		This function can be used from ANY_ROUTE .
+		</para>
+		<example>
+		<title><function>t_is_request_route</function> usage</title>
+		<programlisting format="linespecific">
+...
+request_route[xyz] {
+    route(abc);
+}
+
+route[abc] {
+    if(t_is_request_route()) { ... }
+}
+...
 </programlisting>
 		</example>
 	</section>

+ 13 - 0
modules/tmx/tmx_mod.c

@@ -70,6 +70,7 @@ static int t_flush_flags(struct sip_msg* msg, char*, char* );
 static int t_is_failure_route(struct sip_msg* msg, char*, char* );
 static int t_is_branch_route(struct sip_msg* msg, char*, char* );
 static int t_is_reply_route(struct sip_msg* msg, char*, char*);
+static int t_is_request_route(struct sip_msg* msg, char*, char*);
 
 static int w_t_suspend(struct sip_msg* msg, char*, char*);
 static int w_t_continue(struct sip_msg* msg, char *idx, char *lbl, char *rtn);
@@ -191,6 +192,8 @@ static cmd_export_t cmds[]={
 			0, ANY_ROUTE  },
 	{"t_is_reply_route",    (cmd_function)t_is_reply_route,    0, 0,
 			0, ANY_ROUTE  },
+	{"t_is_request_route",    (cmd_function)t_is_request_route,    0, 0,
+			0, ANY_ROUTE  },
 	{"t_suspend",    (cmd_function)w_t_suspend,    0, 0,
 			0, ANY_ROUTE  },
 	{"t_continue", (cmd_function)w_t_continue,     3,
@@ -563,6 +566,16 @@ static int t_is_reply_route(struct sip_msg* msg, char *foo, char *bar)
 	return -1;
 }
 
+/**
+ *
+ */
+static int t_is_request_route(struct sip_msg* msg, char *foo, char *bar)
+{
+	if(route_type == REQUEST_ROUTE)
+		return 1;
+	return -1;
+}
+
 /**
  *
  */