[Freeswitch-svn] [commit] r3988 - freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url

Freeswitch SVN mikej at freeswitch.org
Thu Jan 18 19:28:21 EST 2007


Author: mikej
Date: Thu Jan 18 19:28:21 2007
New Revision: 3988

Modified:
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/url.c

Log:
fix url parser from when I broke it trying to fix it, but now it's fixed.

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/url.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/url.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/url.c	Thu Jan 18 19:28:21 2007
@@ -555,7 +555,7 @@
 static
 int _url_d(url_t *url, char *s)
 {
-  size_t n;
+  size_t n, p;
   char *s0, rest_c, *host;
   int net_path = 1;
 
@@ -592,14 +592,23 @@
 
   if (url->url_type == url_sip || url->url_type == url_sips) {
     /* SIP URL may have /; in user part */
-    n = strcspn(s, "@");	/* Opaque part */
-	if (n == strlen(s)) {
-		if ((strchr(s, '#')))
-			n = 0;
-	} else {
-		if (strchr(s + n, '#'))
-			n = 0;
-	}
+#if 1
+	n = strcspn(s, "@#");   /* Opaque part */
+	if ((p = strcspn(s, "#")) == n) {
+	  n = strcspn(s, "@");
+      if (s[n] != '@')
+        n = 0;
+	}
+#else
+    n = strcspn(s, "@");/* Opaque part */
+    if (n == strlen(s)) {
+        if ((strchr(s, '#')))
+            n = 0;
+    } else {
+        if (strchr(s + n, '#'))
+            n = 0;
+    }
+#endif
     n += strcspn(s + n, "/;?#");
   }
   else if (url->url_type == url_wv) {



More information about the Freeswitch-svn mailing list