Skip to content

Commit 2ae99a8

Browse files
committed
ext/sockets: GH-20532 socket_addrinfo_lookup() return EAI error code on
resolution failures.
1 parent 15ca366 commit 2ae99a8

File tree

3 files changed

+179
-6
lines changed

3 files changed

+179
-6
lines changed

ext/sockets/sockets.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2731,6 +2731,7 @@ PHP_FUNCTION(socket_addrinfo_lookup)
27312731
size_t service_len = 0;
27322732
zend_string *hostname, *key;
27332733
zval *hint, *zhints = NULL;
2734+
int ret = 0;
27342735

27352736
struct addrinfo hints, *result, *rp;
27362737
php_addrinfo *res;
@@ -2825,8 +2826,8 @@ PHP_FUNCTION(socket_addrinfo_lookup)
28252826
} ZEND_HASH_FOREACH_END();
28262827
}
28272828

2828-
if (getaddrinfo(ZSTR_VAL(hostname), service, &hints, &result) != 0) {
2829-
RETURN_FALSE;
2829+
if ((ret = getaddrinfo(ZSTR_VAL(hostname), service, &hints, &result)) != 0) {
2830+
RETURN_LONG(ret);
28302831
}
28312832

28322833
array_init(return_value);

ext/sockets/sockets.stub.php

Lines changed: 123 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2053,6 +2053,127 @@
20532053
const SHUT_RDWR = UNKNOWN;
20542054
#endif
20552055

2056+
2057+
#ifdef EAI_BADFLAGS
2058+
/**
2059+
* @var int
2060+
* @cvalue EAI_BADFLAGS
2061+
*/
2062+
const EAI_BADFLAGS = UNKNOWN;
2063+
#endif
2064+
#ifdef EAI_NONAME
2065+
/**
2066+
* @var int
2067+
* @cvalue EAI_NONAME
2068+
*/
2069+
const EAI_NONAME = UNKNOWN;
2070+
#endif
2071+
#ifdef EAI_AGAIN
2072+
/**
2073+
* @var int
2074+
* @cvalue EAI_AGAIN
2075+
*/
2076+
const EAI_AGAIN = UNKNOWN;
2077+
#endif
2078+
#ifdef EAI_FAIL
2079+
/**
2080+
* @var int
2081+
* @cvalue EAI_FAIL
2082+
*/
2083+
const EAI_FAIL = UNKNOWN;
2084+
#endif
2085+
#ifdef EAI_NODATA
2086+
/**
2087+
* @var int
2088+
* @cvalue EAI_NODATA
2089+
*/
2090+
const EAI_NODATA = UNKNOWN;
2091+
#endif
2092+
#ifdef EAI_FAMILY
2093+
/**
2094+
* @var int
2095+
* @cvalue EAI_FAMILY
2096+
*/
2097+
const EAI_FAMILY = UNKNOWN;
2098+
#endif
2099+
#ifdef EAI_SOCKTYPE
2100+
/**
2101+
* @var int
2102+
* @cvalue EAI_SOCKTYPE
2103+
*/
2104+
const EAI_SOCKTYPE = UNKNOWN;
2105+
#endif
2106+
#ifdef EAI_SERVICE
2107+
/**
2108+
* @var int
2109+
* @cvalue EAI_SERVICE
2110+
*/
2111+
const EAI_SERVICE = UNKNOWN;
2112+
#endif
2113+
#ifdef EAI_ADDRFAMILY
2114+
/**
2115+
* @var int
2116+
* @cvalue EAI_ADDRFAMILY
2117+
*/
2118+
const EAI_ADDRFAMILY = UNKNOWN;
2119+
#endif
2120+
#ifdef EAI_SYSTEM
2121+
/**
2122+
* @var int
2123+
* @cvalue EAI_SYSTEM
2124+
*/
2125+
const EAI_SYSTEM = UNKNOWN;
2126+
#endif
2127+
#ifdef EAI_OVERFLOW
2128+
/**
2129+
* @var int
2130+
* @cvalue EAI_OVERFLOW
2131+
*/
2132+
const EAI_OVERFLOW = UNKNOWN;
2133+
#endif
2134+
#ifdef EAI_INPROGRESS
2135+
/**
2136+
* @var int
2137+
* @cvalue EAI_INPROGRESS
2138+
*/
2139+
const EAI_INPROGRESS = UNKNOWN;
2140+
#endif
2141+
#ifdef EAI_CANCELED
2142+
/**
2143+
* @var int
2144+
* @cvalue EAI_CANCELED
2145+
*/
2146+
const EAI_CANCELED = UNKNOWN;
2147+
#endif
2148+
#ifdef EAI_NOTCANCELED
2149+
/**
2150+
* @var int
2151+
* @cvalue EAI_NOTCANCELED
2152+
*/
2153+
const EAI_NOTCANCELED = UNKNOWN;
2154+
#endif
2155+
#ifdef EAI_ALLDONE
2156+
/**
2157+
* @var int
2158+
* @cvalue EAI_ALLDONE
2159+
*/
2160+
const EAI_ALLDONE = UNKNOWN;
2161+
#endif
2162+
#ifdef EAI_INTR
2163+
/**
2164+
* @var int
2165+
* @cvalue EAI_INTR
2166+
*/
2167+
const EAI_INTR = UNKNOWN;
2168+
#endif
2169+
#ifdef EAI_IDN_ENCODE
2170+
/**
2171+
* @var int
2172+
* @cvalue EAI_IDN_ENCODE
2173+
*/
2174+
const EAI_IDN_ENCODE = UNKNOWN;
2175+
#endif
2176+
20562177
/**
20572178
* @strict-properties
20582179
* @not-serializable
@@ -2172,10 +2293,10 @@ function socket_recvmsg(Socket $socket, array &$message, int $flags = 0): int|fa
21722293
function socket_cmsg_space(int $level, int $type, int $num = 0): ?int {}
21732294

21742295
/**
2175-
* @return array<int, AddressInfo>|false
2296+
* @return array<int, AddressInfo>|int
21762297
* @refcount 1
21772298
*/
2178-
function socket_addrinfo_lookup(string $host, ?string $service = null, array $hints = []): array|false {}
2299+
function socket_addrinfo_lookup(string $host, ?string $service = null, array $hints = []): array|int {}
21792300

21802301
function socket_addrinfo_connect(AddressInfo $address): Socket|false {}
21812302

ext/sockets/sockets_arginfo.h

Lines changed: 53 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)