re-added the RFC2732-parser that was lost for some reason during the flow
authorDaniel Stenberg <daniel@haxx.se>
Mon, 5 Aug 2002 16:50:55 +0000 (16:50 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 5 Aug 2002 16:50:55 +0000 (16:50 +0000)
of time!

lib/url.c

index bbe2878..f11d5df 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -1391,6 +1391,7 @@ static CURLcode CreateConnection(struct SessionHandle *data,
 #ifdef HAVE_ALARM
   unsigned int prev_alarm;
 #endif
+  char endbracket;
 
 #ifdef HAVE_SIGACTION
   struct sigaction keep_sigact;   /* store the old struct here */
@@ -1980,8 +1981,19 @@ static CURLcode CreateConnection(struct SessionHandle *data,
    * The conn->name is currently [user:passwd@]host[:port] where host could
    * be a hostname, IPv4 address or IPv6 address.
    *************************************************************/
-
-  tmp = strrchr(conn->name, ':');
+  if((1 == sscanf(conn->name, "[%*39[0-9a-fA-F:.]%c", &endbracket)) &&
+     (']' == endbracket)) {
+    /* this is a RFC2732-style specified IP-address */
+
+    conn->name++; /* pass the starting bracket */ 
+    tmp = strchr(conn->name, ']');
+    *tmp = 0; /* zero terminate */
+    tmp++; /* pass the ending bracket */
+    if(':' != *tmp)
+      tmp = NULL; /* no port number available */
+  }
+  else
+    tmp = strrchr(conn->name, ':');
 
   if (tmp) {
     char *rest;