X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_url_api.c;h=4f20de5e847c1117d0cec3d4c830606b15f8cdb7;hb=ad75baff52e98f85a3ac999cee3328819fee03b8;hp=882c390549f284cfda18d883fb95310058978faa;hpb=31f45628be37e6828b275130cc8db0f92efcf33c;p=m6w6%2Fext-http diff --git a/http_url_api.c b/http_url_api.c index 882c390..4f20de5 100644 --- a/http_url_api.c +++ b/http_url_api.c @@ -71,7 +71,7 @@ PHP_HTTP_API char *_http_absolute_url_ex( } else if (purl->scheme) { furl.scheme = purl->scheme; #if defined(PHP_WIN32) || defined(HAVE_NETDB_H) - } else if (port && (se = getservbyport(htons(port), "tcp"))) { + } else if (port && (se = getservbyport(htons((short) port), "tcp"))) { furl.scheme = (scheme = estrdup(se->s_name)); #endif } else { @@ -136,12 +136,13 @@ PHP_HTTP_API char *_http_absolute_url_ex( HTTP_URI_STRLCATL(URL, full_len, furl.host); - if (( (!strcmp(furl.scheme, "http") && (furl.port != 80)) || + if (furl.port && ( + (!strcmp(furl.scheme, "http") && (furl.port != 80)) || (!strcmp(furl.scheme, "https") && (furl.port != 443)) #if defined(PHP_WIN32) || defined(HAVE_NETDB_H) - || ((!(se = getservbyname(furl.scheme, "tcp"))) || (ntohs(se->s_port) != furl.port)) + || ((!(se = getservbyname(furl.scheme, "tcp"))) || (ntohs(se->s_port) != furl.port)) #endif - ) && furl.port) { + )) { char port_string[8] = {0}; snprintf(port_string, 7, ":%u", furl.port); HTTP_URI_STRLCATL(URL, full_len, port_string);