From 215c44558311d7a670cba91a264eb28628f78a5d Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 5 Aug 2002 16:50:55 +0000 Subject: [PATCH] re-added the RFC2732-parser that was lost for some reason during the flow of time! --- lib/url.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/url.c b/lib/url.c index bbe28788d..f11d5df17 100644 --- 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. *************************************************************/ + if((1 == sscanf(conn->name, "[%*39[0-9a-fA-F:.]%c", &endbracket)) && + (']' == endbracket)) { + /* this is a RFC2732-style specified IP-address */ - tmp = strrchr(conn->name, ':'); + 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;