Skip to content

Commit

Permalink
ext/sockets: socket_get_option/socket_set_option timeout type on win3…
Browse files Browse the repository at this point in the history
…2. (#17123)

For SO_SNDTIMEO/SO_RCVTIMEO, normally the timeout ought to be of
DWORD/unsigned long.
  • Loading branch information
devnexen authored Dec 12, 2024
1 parent 3968dbf commit 07cd468
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions ext/sockets/sockets.c
Original file line number Diff line number Diff line change
Expand Up @@ -1645,7 +1645,7 @@ PHP_FUNCTION(socket_get_option)
struct linger linger_val;
struct timeval tv;
#ifdef PHP_WIN32
int timeout = 0;
DWORD timeout = 0;
#endif
socklen_t optlen;
php_socket *php_sock;
Expand Down Expand Up @@ -1757,15 +1757,15 @@ PHP_FUNCTION(socket_get_option)
RETURN_FALSE;
}
#else
optlen = sizeof(int);
optlen = sizeof(timeout);

if (getsockopt(php_sock->bsd_socket, level, optname, (char*)&timeout, &optlen) != 0) {
PHP_SOCKET_ERROR(php_sock, "Unable to retrieve socket option", errno);
RETURN_FALSE;
}

tv.tv_sec = timeout ? timeout / 1000 : 0;
tv.tv_usec = timeout ? (timeout * 1000) % 1000000 : 0;
tv.tv_sec = timeout ? (long)(timeout / 1000) : 0;
tv.tv_usec = timeout ? (long)((timeout * 1000) % 1000000) : 0;
#endif

array_init(return_value);
Expand Down Expand Up @@ -1874,7 +1874,7 @@ PHP_FUNCTION(socket_set_option)
php_socket *php_sock;
int ov, optlen, retval;
#ifdef PHP_WIN32
int timeout;
DWORD timeout;
#else
struct timeval tv;
#endif
Expand Down Expand Up @@ -2019,7 +2019,7 @@ PHP_FUNCTION(socket_set_option)
opt_ptr = &tv;
#else
timeout = Z_LVAL_P(sec) * 1000 + Z_LVAL_P(usec) / 1000;
optlen = sizeof(int);
optlen = sizeof(timeout);
opt_ptr = &timeout;
#endif
break;
Expand Down

0 comments on commit 07cd468

Please sign in to comment.