diff options
author | Daniel Stenberg <daniel@haxx.se> | 2002-08-05 16:50:55 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2002-08-05 16:50:55 +0000 |
commit | 215c44558311d7a670cba91a264eb28628f78a5d (patch) | |
tree | fb34fcd48e5a6f3dbd67a0a2e4a208952fff8ee8 | |
parent | 20d8e32a58b30c7d2bb96fdc2b9cb0aaae3866de (diff) |
re-added the RFC2732-parser that was lost for some reason during the flow
of time!
-rw-r--r-- | lib/url.c | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -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; |