[sr-dev] git:master: parser: remove old URI parser and structure

Daniel-Constantin Mierla miconda at gmail.com
Wed Nov 30 15:20:12 CET 2011


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

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Wed Nov 30 15:19:35 2011 +0100

parser: remove old URI parser and structure

---

 parser/msg_parser.h |   13 -----
 parser/parse_uri.c  |  144 ---------------------------------------------------
 2 files changed, 0 insertions(+), 157 deletions(-)

diff --git a/parser/msg_parser.h b/parser/msg_parser.h
index 31582f5..eee2948 100644
--- a/parser/msg_parser.h
+++ b/parser/msg_parser.h
@@ -174,19 +174,6 @@ if (  (*tmp==(firstchar) || *tmp==((firstchar) | 32)) &&                  \
 (((m)->new_uri.s && (m)->new_uri.len) ? (&(m)->new_uri) : (&(m)->first_line.u.request.uri))
 
 
-#if 0
-	/* old version */
-struct sip_uri {
-	str user;     /* Username */
-	str passwd;   /* Password */
-	str host;     /* Host name */
-	str port;     /* Port number */
-	str params;   /* Parameters */
-	str headers;
-	unsigned short port_no;
-};
-#endif
-
 enum _uri_type{ERROR_URI_T=0, SIP_URI_T, SIPS_URI_T, TEL_URI_T, TELS_URI_T};
 typedef enum _uri_type uri_type;
 enum _uri_flags{
diff --git a/parser/parse_uri.c b/parser/parse_uri.c
index b337153..affe44f 100644
--- a/parser/parse_uri.c
+++ b/parser/parse_uri.c
@@ -52,9 +52,7 @@
 #include "parse_uri.h"
 #include <string.h>
 #include "../dprint.h"
-/* #ifdef PARSE_URI_OLD */ /* ZSW */
 #include "../ut.h"   /* q_memchr */
-/* #endif */
 #include "../error.h"
 #include "../core_stats.h"
 
@@ -62,7 +60,6 @@
  * len= len of uri
  * returns: fills uri & returns <0 on error or 0 if ok 
  */
-#ifndef PARSE_URI_OLD
 int parse_uri(char* buf, int len, struct sip_uri* uri)
 {
 	enum states  {	URI_INIT, URI_USER, URI_PASSWORD, URI_PASSWORD_ALPHA,
@@ -1234,147 +1231,6 @@ error_exit:
 	return E_BAD_URI;
 }
 
-#else /* PARSE_URI_OLD */
-
-int parse_uri(char *buf, int len, struct sip_uri* uri)
-{
-	char* next, *end;
-	char *user, *passwd, *host, *port, *params, *headers, *ipv6;
-	int host_len, port_len, params_len, headers_len;
-	int err;
-	int ret;
-	
-	
-	ret=0;
-	host_len=0;
-	end=buf+len;
-	memset(uri, 0, sizeof(struct sip_uri)); /* zero it all, just to be sure */
-	/* look for "sip:"*/;
-	next=q_memchr(buf, ':',  len);
-	if ((next==0)||(strncasecmp(buf,"sip",next-buf)!=0)){
-		LOG(L_DBG, "ERROR: parse_uri: bad sip uri\n");
-		ser_error=ret=E_BAD_URI;
-		return ret;
-	}
-	buf=next+1; /* next char after ':' */
-	if (buf>end){
-		LOG(L_DBG, "ERROR: parse_uri: uri too short\n");
-		ser_error=ret=E_BAD_URI;
-		return ret;
-	}
-	/*look for '@' */
-	next=q_memchr(buf,'@', end-buf);
-	if (next==0){
-		/* no '@' found, => no userinfo */
-		uri->user.s=0;
-		uri->passwd.s=0;
-		host=buf;
-	}else{
-		/* found it */
-		user=buf;
-		/* try to find passwd */
-		passwd=q_memchr(user,':', next-user);
-		if (passwd==0){
-			/* no ':' found => no password */
-			uri->passwd.s=0;
-			uri->user.s=user;
-			uri->user.len=next-user;
-		}else{
-			uri->user.s=user;
-			uri->user.len=passwd-user;
-			passwd++; /*skip ':' */
-			uri->passwd.s=passwd;
-			uri->passwd.len=next-passwd;
-		}
-		host=next+1; /* skip '@' */
-	}
-	/* try to find the rest */
-	if(host>=end){
-		LOG(L_DBG, "ERROR: parse_uri: missing hostport\n");
-		ser_error=ret=E_UNSPEC;
-		return ret;
-	}
-	next=host;
-	ipv6=q_memchr(host, '[', end-host);
-	if (ipv6){
-		host=ipv6+1; /* skip '[' in "[3ffe::abbcd]" */
-		if (host>=end){
-			LOG(L_DBG, "ERROR: parse_uri: bad ipv6 uri\n");
-			ret=E_UNSPEC;
-			return ret;
-		}
-		ipv6=q_memchr(host, ']', end-host);
-		if ((ipv6==0)||(ipv6==host)){
-			LOG(L_DBG, "ERROR: parse_uri: bad ipv6 uri - null address"
-					" or missing ']'\n");
-			ret=E_UNSPEC;
-			return ret;
-		}
-		host_len=ipv6-host;
-		next=ipv6;
-	}
-
-		
-	headers=q_memchr(next,'?',end-next);
-	params=q_memchr(next,';',end-next);
-	port=q_memchr(next,':',end-next);
-	if (host_len==0){ /* host not ipv6 addr */
-		host_len=(port)?port-host:(params)?params-host:(headers)?headers-host:
-				end-host;
-	}
-	/* get host */
-	uri->host.s=host;
-	uri->host.len=host_len;
-
-	/* get port*/
-	if ((port)&&(port+1<end)){
-		port++;
-		if ( ((params) &&(params<port))||((headers) &&(headers<port)) ){
-			/* error -> invalid uri we found ';' or '?' before ':' */
-			LOG(L_DBG, "ERROR: parse_uri: malformed sip uri\n");
-			ser_error=ret=E_BAD_URI;
-			return ret;
-		}
-		port_len=(params)?params-port:(headers)?headers-port:end-port;
-		uri->port.s=port;
-		uri->port.len=port_len;
-	}else uri->port.s=0;
-	/* get params */
-	if ((params)&&(params+1<end)){
-		params++;
-		if ((headers) && (headers<params)){
-			/* error -> invalid uri we found '?' or '?' before ';' */
-			LOG(L_DBG, "ERROR: parse_uri: malformed sip uri\n");
-			ser_error=ret=E_BAD_URI;
-			return ret;
-		}
-		params_len=(headers)?headers-params:end-params;
-		uri->params.s=params;
-		uri->params.len=params_len;
-	}else uri->params.s=0;
-	/*get headers */
-	if ((headers)&&(headers+1<end)){
-		headers++;
-		headers_len=end-headers;
-		uri->headers.s=headers;
-		uri->headers.len=headers_len;
-	}else uri->headers.s=0;
-
-	err=0;
-	if (uri->port.s) uri->port_no=str2s(uri->port.s, uri->port.len, &err);
-	if (err){
-		LOG(L_DBG, "ERROR: parse_uri: bad port number in sip uri: %.*s\n",
-				uri->port.len, ZSW(uri->port.s));
-		ser_error=ret=E_BAD_URI;
-		return ret;
-	}
-
-	return ret;
-}
-#endif
-
-
-
 
 static inline int _parse_ruri(str *uri,
 	int *status, struct sip_uri *parsed_uri)




More information about the sr-dev mailing list