X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_url_api.c;fp=http_url_api.c;h=9068378fcaebb17302cd81504a76139eeb3155dd;hp=fb7f0ae74f3581149ea811bb7a27362bf23f0553;hb=6e0f8b58a679ce54bbe274e936056551066df7af;hpb=d309416dd166624d97ee795bd87ee5b06714f932 diff --git a/http_url_api.c b/http_url_api.c index fb7f0ae..9068378 100644 --- a/http_url_api.c +++ b/http_url_api.c @@ -32,10 +32,10 @@ static inline char *localhostname(void) if (SUCCESS == gethostname(hostname, lenof(hostname))) { return estrdup(hostname); } -#elif defined(HAVE_UNISTD_H) +#elif defined(HAVE_GETHOSTNAME) if (SUCCESS == gethostname(hostname, lenof(hostname))) { +# if defined(HAVE_GETDOMAINNAME) size_t hlen = strlen(hostname); - if (hlen <= lenof(hostname) - lenof("(none)")) { hostname[hlen++] = '.'; if (SUCCESS == getdomainname(&hostname[hlen], lenof(hostname) - hlen)) { @@ -45,6 +45,10 @@ static inline char *localhostname(void) return estrdup(hostname); } } +# endif + if (strcmp(hostname, "(none)")) { + return estrdup(hostname); + } } #endif return estrdup("localhost"); @@ -92,7 +96,7 @@ PHP_HTTP_API char *_http_absolute_url(const char *url TSRMLS_DC) /* {{{ void http_build_url(int flags, const php_url *, const php_url *, php_url **, char **, size_t *) */ PHP_HTTP_API void _http_build_url(int flags, const php_url *old_url, const php_url *new_url, php_url **url_ptr, char **url_str, size_t *url_len TSRMLS_DC) { -#ifdef HTTP_HAVE_NETDB +#if defined(HAVE_GETSERVBYPORT) || defined(HAVE_GETSERVBYNAME) struct servent *se; #endif php_url *url = ecalloc(1, sizeof(php_url)); @@ -165,14 +169,14 @@ PHP_HTTP_API void _http_build_url(int flags, const php_url *old_url, const php_u url->scheme = estrndup("https", lenof("https")); break; -#ifndef HTTP_HAVE_NETDB +#ifndef HAVE_GETSERVBYPORT default: #endif case 80: url->scheme = estrndup("http", lenof("http")); break; -#ifdef HTTP_HAVE_NETDB +#ifdef HAVE_GETSERVBYPORT default: if ((se = getservbyport(htons(url->port), "tcp")) && se->s_name) { url->scheme = estrdup(se->s_name); @@ -254,8 +258,12 @@ PHP_HTTP_API void _http_build_url(int flags, const php_url *old_url, const php_u } } memmove(&ptr[1], pos, end - pos); + break; + } else if (!ptr[3]) { + /* .. at the end */ + ptr[1] = '\0'; } - break; + /* fallthrough */ default: /* something else */ @@ -268,7 +276,7 @@ PHP_HTTP_API void _http_build_url(int flags, const php_url *old_url, const php_u if (url->port) { if ( ((url->port == 80) && !strcmp(url->scheme, "http")) || ((url->port ==443) && !strcmp(url->scheme, "https")) -#ifdef HTTP_HAVE_NETDB +#ifdef HAVE_GETSERVBYNAME || ((se = getservbyname(url->scheme, "tcp")) && se->s_port && (url->port == ntohs(se->s_port))) #endif