<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40302 >
$subject This can and should go in soon, before any other IPv6 work. - ML
diff -Nurd -X.diff_ignore freeciv/server/meta.c freeciv/server/meta.c --- freeciv/server/meta.c 2008-06-16 04:25:57.000000000 +0300 +++ freeciv/server/meta.c 2008-06-22 08:33:07.000000000 +0300 @@ -428,7 +428,7 @@ metaserver_path = mystrdup(path); if (!net_lookup_service(metaname, metaport, &meta_addr)) { - freelog(LOG_ERROR, _("Metaserver: bad address: [%s:%d]."), + freelog(LOG_ERROR, _("Metaserver: bad address: <%s %d>."), metaname, metaport); metaserver_failed(); return FALSE; diff -Nurd -X.diff_ignore freeciv/server/srv_main.c freeciv/server/srv_main.c --- freeciv/server/srv_main.c 2008-06-16 04:25:57.000000000 +0300 +++ freeciv/server/srv_main.c 2008-06-22 08:34:43.000000000 +0300 @@ -1955,7 +1955,7 @@ maybe_automatic_meta_message(default_meta_message_string()); if(!(srvarg.metaserver_no_send)) { - freelog(LOG_NORMAL, _("Sending info to metaserver [%s]"), + freelog(LOG_NORMAL, _("Sending info to metaserver <%s>"), meta_addr_port()); /* Open socket for meta server */ if (!server_open_meta() diff -Nurd -X.diff_ignore freeciv/utility/netintf.c freeciv/utility/netintf.c --- freeciv/utility/netintf.c 2008-03-09 01:19:13.000000000 +0200 +++ freeciv/utility/netintf.c 2008-06-22 08:33:07.000000000 +0300 @@ -342,6 +342,8 @@ const char *my_lookup_httpd(char *server, int *port, const char *url) { const char *purl, *str, *ppath, *pport; + const char *str2; + int chars_between = 0; if ((purl = getenv("http_proxy"))) { if (strncmp(purl, "http://", strlen("http://")) != 0) { @@ -356,18 +358,30 @@ } str += strlen("http://"); - - pport = strchr(str, ':'); - ppath = strchr(str, '/'); + + if (*str == '[') { + /* Literal IPv6 address (RFC 2732) */ + str++; + str2 = strchr(str, ']') + 1; + if (!str2) { + str2 = str + strlen(str); + } + chars_between = 1; + } else { + str2 = str; + } + + pport = strchr(str2, ':'); + ppath = strchr(str2, '/'); /* snarf server. */ server[0] = '\0'; if (pport) { - strncat(server, str, MIN(MAX_LEN_ADDR, pport-str)); + strncat(server, str, MIN(MAX_LEN_ADDR, pport-str-chars_between)); } else { if (ppath) { - strncat(server, str, MIN(MAX_LEN_ADDR, ppath-str)); + strncat(server, str, MIN(MAX_LEN_ADDR, ppath-str-chars_between)); } else { strncat(server, str, MAX_LEN_ADDR); }
_______________________________________________ Freeciv-dev mailing list Freeciv-dev@gna.org https://mail.gna.org/listinfo/freeciv-dev