[sr-dev] git:master: xcap_server: set content-type per auid in reply

Daniel-Constantin Mierla miconda at gmail.com
Tue Sep 21 14:21:47 CEST 2010


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

Author: root <root at boyce.voipuser.org>
Committer: root <root at boyce.voipuser.org>
Date:   Tue Sep 21 13:09:42 2010 +0100

xcap_server: set content-type per auid in reply

- accept also xcap-caps auid

---

 modules_k/xcap_server/xcap_misc.c   |    4 ++++
 modules_k/xcap_server/xcap_server.c |   19 +++++++++++++++++--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/modules_k/xcap_server/xcap_misc.c b/modules_k/xcap_server/xcap_misc.c
index 1c844e7..103d218 100644
--- a/modules_k/xcap_server/xcap_misc.c
+++ b/modules_k/xcap_server/xcap_misc.c
@@ -145,6 +145,10 @@ int xcap_parse_uri(str *huri, str *xroot, xcap_uri_t *xuri)
 		LM_DBG("matched resource-lists\n");
 		xuri->type = RESOURCE_LIST;
 		xuri->auid.len = 14;
+	} else if(s.len>10 && strncmp(s.s, "xcap-caps/", 10)==0) {
+		LM_DBG("matched xcap-caps\n");
+		xuri->type = XCAP_CAPS;
+		xuri->auid.len = 9;
 	} else {
 		LM_ERR("unsupported auid in [%.*s]\n", xuri->uri.len,
 				xuri->uri.s);
diff --git a/modules_k/xcap_server/xcap_server.c b/modules_k/xcap_server/xcap_server.c
index 4f5d5c0..d37c860 100644
--- a/modules_k/xcap_server/xcap_server.c
+++ b/modules_k/xcap_server/xcap_server.c
@@ -403,6 +403,13 @@ static str xcaps_str_ok         = {"OK", 2};
 static str xcaps_str_srverr     = {"Server error", 12};
 static str xcaps_str_nocontent  = {"No content", 10};
 static str xcaps_str_appxml     = {"application/xml", 15};
+static str xcaps_str_apprlxml   = {"application/resource-lists+xml", 30};
+static str xcaps_str_apprsxml   = {"application/rls-services+xml", 28};
+#if 0
+static str xcaps_str_appxcxml   = {"application/xcap-caps+xml", 25};
+#endif
+static str xcaps_str_appapxml   = {"application/auth-policy+xml", 27};
+
 
 /**
  *
@@ -721,6 +728,7 @@ static int w_xcaps_get(sip_msg_t* msg, char* puri, char* ppath)
 	str body;
 	int ret = 0;
 	xcap_uri_t xuri;
+	str *ctype;
 
 	if(puri==0 || ppath==0)
 	{
@@ -771,11 +779,18 @@ static int w_xcaps_get(sip_msg_t* msg, char* puri, char* ppath)
 	if(ret==0)
 	{
 		/* doc found */
+		ctype = &xcaps_str_appxml;
+		if(xuri.type==RESOURCE_LIST)
+			ctype = &xcaps_str_apprlxml;
+		else if(xuri.type==PRES_RULES)
+			ctype = &xcaps_str_appapxml;
+		else if(xuri.type==RLS_SERVICE)
+			ctype = &xcaps_str_apprsxml;
 		xcaps_send_reply(msg, 200, &xcaps_str_ok, &etag,
-				&xcaps_str_appxml, &body);
+				ctype, &body);
 	} else {
 		/* doc not found */
-		xcaps_send_reply(msg, 204, &xcaps_str_nocontent, &xcaps_str_empty,
+		xcaps_send_reply(msg, 200, &xcaps_str_nocontent, &xcaps_str_empty,
 				&xcaps_str_empty, &xcaps_str_empty);
 	}
 	return 1;




More information about the sr-dev mailing list