[sr-dev] git:4.1: lib/ims: Replaced custom getter for P-Asserted-Identity with the Parser from Core

Hugh Waite hugh.waite at crocodile-rcs.com
Wed Jan 8 15:02:44 CET 2014


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

Author: Carsten Bock <carsten at ng-voice.com>
Committer: Hugh Waite <hugh.waite at crocodile-rcs.com>
Date:   Wed Dec 11 13:47:57 2013 +0100

lib/ims: Replaced custom getter for P-Asserted-Identity with the Parser from Core
(cherry picked from commit af1734cea213b2a07c9d725fff158cd4899725d1)

---

 lib/ims/ims_getters.c |   45 +++++++--------------------------------------
 1 files changed, 7 insertions(+), 38 deletions(-)

diff --git a/lib/ims/ims_getters.c b/lib/ims/ims_getters.c
index 8fce196..a41cd31 100644
--- a/lib/ims/ims_getters.c
+++ b/lib/ims/ims_getters.c
@@ -56,6 +56,7 @@
 #include "../../parser/parse_from.h"
 #include "../../parser/parse_content.h"
 #include "ims_getters.h"
+#include "../../parser/parse_ppi_pai.h"
 
 
 /**
@@ -389,45 +390,13 @@ str s_asserted_identity={"P-Asserted-Identity",19};
  */
 str cscf_get_asserted_identity(struct sip_msg *msg)
 {
-	name_addr_t id;
-	struct hdr_field *h;
-	rr_t *r;
-	memset(&id,0,sizeof(name_addr_t));
-	if (!msg) return id.uri;
-	if (parse_headers(msg, HDR_EOH_F, 0)<0) {
-		return id.uri;
-	}
-	h = msg->headers;
-	while(h)
-	{
-		if (h->name.len == s_asserted_identity.len  &&
-				strncasecmp(h->name.s,s_asserted_identity.s,s_asserted_identity.len)==0)
-		{
-			if (parse_rr(h)<0){
-				//This might be an old client
-				LM_CRIT("WARN:cscf_get_asserted_identity: P-Asserted-Identity header must contain a Nameaddr!!! Fix the client!\n");
-				id.name.s = h->body.s;
-				id.name.len = 0;
-				id.len = h->body.len;
-				id.uri = h->body;
-				while(id.uri.len && (id.uri.s[0]==' ' || id.uri.s[0]=='\t' || id.uri.s[0]=='<')){
-					id.uri.s = id.uri.s+1;
-					id.uri.len --;
-				}
-				while(id.uri.len && (id.uri.s[id.uri.len-1]==' ' || id.uri.s[id.uri.len-1]=='\t' || id.uri.s[id.uri.len-1]=='>')){
-					id.uri.len--;
-				}
-				return id.uri;	
-			}
-			r = (rr_t*) h->parsed;
-			id = r->nameaddr; 
-			free_rr(&r);
-			h->parsed=r;
-			return id.uri;
-		}
-		h = h->next;
+	str uri = {0,0};
+	if (!msg) return uri;
+	if((parse_pai_header(msg) == 0) && (msg->pai) && (msg->pai->parsed)) {
+		to_body_t *pai = get_pai(msg)->id;
+		return pai->uri;
 	}
-	return id.uri;
+	return uri;
 }
 
 static str phone_context_s={";phone-context=",15};




More information about the sr-dev mailing list