[sr-dev] git:master: siputils: added functions to detect type of SIP message

Daniel-Constantin Mierla miconda at gmail.com
Sun Feb 27 16:45:52 CET 2011


Module: sip-router
Branch: master
Commit: f82c04eb21aa496b883c0e4ee486b247efeb04c9
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=f82c04eb21aa496b883c0e4ee486b247efeb04c9

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Sat Feb 26 22:20:49 2011 +0100

siputils: added functions to detect type of SIP message

- is_request() returns true if the SIP message is a request
- is_reply() returns true if the SIP message is a reply
- useful to check in sub-routes that can be executed from both request
  and reply routes

---

 modules_k/siputils/checks.c   |   27 +++++++++++++++++
 modules_k/siputils/checks.h   |   10 ++++++
 modules_k/siputils/siputils.c |   64 +++++++++++++++++++++++++----------------
 3 files changed, 76 insertions(+), 25 deletions(-)

diff --git a/modules_k/siputils/checks.c b/modules_k/siputils/checks.c
index c0cee5f..f729739 100644
--- a/modules_k/siputils/checks.c
+++ b/modules_k/siputils/checks.c
@@ -54,6 +54,33 @@
 #include "../../lvalue.h"
 #include "checks.h"
 
+/**
+ * return 1 (true) if the SIP message type is request
+ */
+int w_is_request(struct sip_msg* msg, char *foo, char *bar)
+{
+	if(msg==NULL)
+		return -1;
+
+	if(msg->first_line.type == SIP_REQUEST)
+		return 1;
+
+	return -1;
+}
+
+/**
+ * return 1 (true) if the SIP message type is reply
+ */
+int w_is_reply(struct sip_msg* msg, char *foo, char *bar)
+{
+	if(msg==NULL)
+		return -1;
+
+	if(msg->first_line.type == SIP_REPLY)
+		return 1;
+
+	return -1;
+}
 
 /*
  * Checks if From includes a To-tag -- good to identify
diff --git a/modules_k/siputils/checks.h b/modules_k/siputils/checks.h
index cb49850..eeb2788 100644
--- a/modules_k/siputils/checks.h
+++ b/modules_k/siputils/checks.h
@@ -95,4 +95,14 @@ int is_e164(struct sip_msg* _m, char* _sp, char* _s2);
  */
 int set_uri_user(struct sip_msg* _m, char* _uri, char* _value);
 
+/*
+ * Return true (1) if SIP message is request, otherwise false (-1)
+ */
+int w_is_request(struct sip_msg* msg, char *foo, char *bar);
+
+/*
+ * Return true (1) if SIP message is reply, otherwise false (-1)
+ */
+int w_is_reply(struct sip_msg* msg, char *foo, char *bar);
+
 #endif /* CHECKS_H */
diff --git a/modules_k/siputils/siputils.c b/modules_k/siputils/siputils.c
index 3b31ad0..054dc9b 100644
--- a/modules_k/siputils/siputils.c
+++ b/modules_k/siputils/siputils.c
@@ -113,36 +113,50 @@ static int fixup_free_set_uri(void** param, int param_no);
 char *contact_flds_separator = DEFAULT_SEPARATOR;
 
 static cmd_export_t cmds[]={
-	{"ring_insert_callid", (cmd_function)ring_insert_callid, 0, ring_fixup, 0, REQUEST_ROUTE|FAILURE_ROUTE},
-	{"options_reply",      (cmd_function)opt_reply, 0, 0, 0, REQUEST_ROUTE},
-	{"is_user",            (cmd_function)is_user,        1, fixup_str_null, 0, REQUEST_ROUTE|LOCAL_ROUTE},
-	{"has_totag", 	       (cmd_function)has_totag,      0, 0, 0, ANY_ROUTE},
-	{"uri_param",          (cmd_function)uri_param_1,    1, fixup_str_null, 0, REQUEST_ROUTE|LOCAL_ROUTE},
-	{"uri_param",          (cmd_function)uri_param_2,    2, fixup_str_str, 0, REQUEST_ROUTE|LOCAL_ROUTE},
-	{"add_uri_param",      (cmd_function)add_uri_param,  1, fixup_str_null, 0, REQUEST_ROUTE},
-	{"tel2sip",            (cmd_function)tel2sip,        0, 0,         0, REQUEST_ROUTE},
-	{"is_e164",            (cmd_function)is_e164, 1, fixup_pvar_null, fixup_free_pvar_null, REQUEST_ROUTE|FAILURE_ROUTE|LOCAL_ROUTE},
-	{"is_uri_user_e164",   (cmd_function)is_uri_user_e164, 1, fixup_pvar_null, fixup_free_pvar_null, REQUEST_ROUTE|FAILURE_ROUTE|LOCAL_ROUTE},
-	{"encode_contact",     (cmd_function)encode_contact,2,0, 0, REQUEST_ROUTE|ONREPLY_ROUTE},
-	{"decode_contact",     (cmd_function)decode_contact,0,0, 0, REQUEST_ROUTE},
-	{"decode_contact_header", (cmd_function)decode_contact_header,0,0,0,REQUEST_ROUTE|ONREPLY_ROUTE},
-	{"cmp_uri",  (cmd_function)w_cmp_uri, 2,
-		fixup_spve_spve, 0,
-		ANY_ROUTE},
-	{"cmp_aor",  (cmd_function)w_cmp_aor, 2,
-		fixup_spve_spve, 0,
-		ANY_ROUTE},
-	{"is_rpid_user_e164",   (cmd_function)is_rpid_user_e164,       0, 0,
+	{"ring_insert_callid", (cmd_function)ring_insert_callid, 0, ring_fixup,
+		0, REQUEST_ROUTE|FAILURE_ROUTE},
+	{"options_reply",      (cmd_function)opt_reply,         0, 0,
+		0, REQUEST_ROUTE},
+	{"is_user",            (cmd_function)is_user,           1, fixup_str_null,
+		0, REQUEST_ROUTE|LOCAL_ROUTE},
+	{"has_totag", 	       (cmd_function)has_totag,         0, 0,
+		0, ANY_ROUTE},
+	{"uri_param",          (cmd_function)uri_param_1,       1, fixup_str_null,
+		0, REQUEST_ROUTE|LOCAL_ROUTE},
+	{"uri_param",          (cmd_function)uri_param_2,       2, fixup_str_str,
+		0, REQUEST_ROUTE|LOCAL_ROUTE},
+	{"add_uri_param",      (cmd_function)add_uri_param,     1, fixup_str_null,
+		0, REQUEST_ROUTE},
+	{"tel2sip",            (cmd_function)tel2sip,           0, 0,
+		0, REQUEST_ROUTE},
+	{"is_e164",            (cmd_function)is_e164,           1, fixup_pvar_null,
+		fixup_free_pvar_null, REQUEST_ROUTE|FAILURE_ROUTE|LOCAL_ROUTE},
+	{"is_uri_user_e164",   (cmd_function)is_uri_user_e164,  1, fixup_pvar_null,
+		fixup_free_pvar_null, REQUEST_ROUTE|FAILURE_ROUTE|LOCAL_ROUTE},
+	{"encode_contact",     (cmd_function)encode_contact,    2, 0,
+		0, REQUEST_ROUTE|ONREPLY_ROUTE},
+	{"decode_contact",     (cmd_function)decode_contact,    0, 0,
+		0, REQUEST_ROUTE},
+	{"decode_contact_header", (cmd_function)decode_contact_header, 0, 0,
+		0,REQUEST_ROUTE|ONREPLY_ROUTE},
+	{"cmp_uri",  (cmd_function)w_cmp_uri,                   2, fixup_spve_spve,
+		0, ANY_ROUTE},
+	{"cmp_aor",  (cmd_function)w_cmp_aor,                   2, fixup_spve_spve,
+		0, ANY_ROUTE},
+	{"is_rpid_user_e164",   (cmd_function)is_rpid_user_e164, 0, 0,
 			0, REQUEST_ROUTE},
-	{"append_rpid_hf",      (cmd_function)append_rpid_hf,          0, 0,
+	{"append_rpid_hf",      (cmd_function)append_rpid_hf,    0, 0,
 			0, REQUEST_ROUTE|BRANCH_ROUTE|FAILURE_ROUTE},
-	{"append_rpid_hf",      (cmd_function)append_rpid_hf_p,        2, fixup_str_str,
+	{"append_rpid_hf",      (cmd_function)append_rpid_hf_p,  2, fixup_str_str,
 			0, REQUEST_ROUTE|BRANCH_ROUTE|FAILURE_ROUTE},
-	{"set_uri_user", (cmd_function)set_uri_user, 2, fixup_set_uri,
-	 fixup_free_set_uri,	
-	 REQUEST_ROUTE|BRANCH_ROUTE|FAILURE_ROUTE|ONREPLY_ROUTE},
+	{"set_uri_user", (cmd_function)set_uri_user,             2, fixup_set_uri,
+		    fixup_free_set_uri,	ANY_ROUTE},
 	{"bind_siputils",       (cmd_function)bind_siputils,           0, 0,
 			0, 0},
+	{"is_request",          (cmd_function)w_is_request,            0, 0,
+			0, ANY_ROUTE},
+	{"is_reply",            (cmd_function)w_is_reply,              0, 0,
+			0, ANY_ROUTE},
 	{0,0,0,0,0,0}
 };
 




More information about the sr-dev mailing list