diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-09-02 13:34:01 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-09-02 13:34:01 +0400 |
commit | fa06cf6edf86aa1839d4f43bfd3bd9a3a36b5223 (patch) | |
tree | 705466443ec58fffa74a3499a3bcc56be1cdee9d /nanohttp.c | |
parent | 08f466c86ef859f2f3ab1f65677536cbccd85960 (diff) | |
parent | 3a8c2d58eab0410fe5e79a112614aa9be061dc46 (diff) | |
download | libxml2-fa06cf6edf86aa1839d4f43bfd3bd9a3a36b5223.tar.gz |
Merge branch 'master' of git://anonscm.debian.org/debian-xml-sgml/libxml2
Conflicts:
debian/changelog
debian/control
debian/rules
Diffstat (limited to 'nanohttp.c')
-rw-r--r-- | nanohttp.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -276,6 +276,8 @@ xmlNanoHTTPCleanup(void) { static void xmlNanoHTTPScanURL(xmlNanoHTTPCtxtPtr ctxt, const char *URL) { xmlURIPtr uri; + int len; + /* * Clear any existing data from the context */ @@ -307,7 +309,15 @@ xmlNanoHTTPScanURL(xmlNanoHTTPCtxtPtr ctxt, const char *URL) { } ctxt->protocol = xmlMemStrdup(uri->scheme); - ctxt->hostname = xmlMemStrdup(uri->server); + /* special case of IPv6 addresses, the [] need to be removed */ + if ((uri->server != NULL) && (*uri->server == '[')) { + len = strlen(uri->server); + if ((len > 2) && (uri->server[len - 1] == ']')) { + ctxt->hostname = (char *) xmlCharStrndup(uri->server + 1, len -2); + } else + ctxt->hostname = xmlMemStrdup(uri->server); + } else + ctxt->hostname = xmlMemStrdup(uri->server); if (uri->path != NULL) ctxt->path = xmlMemStrdup(uri->path); else |