Fixed error handling for ext/sockets under win

WSAGetLastError() must be the very next call after a socket
function had an invalid return. Any function call inbetween
will clear the error information.
This commit is contained in:
Anatol Belski 2013-05-16 19:23:31 +02:00
parent d82704b677
commit 8dec06ea2a

View file

@ -1822,8 +1822,8 @@ PHP_FUNCTION(socket_recvfrom)
retval = recvfrom(php_sock->bsd_socket, recv_buf, arg3, arg4, (struct sockaddr *)&s_un, (socklen_t *)&slen); retval = recvfrom(php_sock->bsd_socket, recv_buf, arg3, arg4, (struct sockaddr *)&s_un, (socklen_t *)&slen);
if (retval < 0) { if (retval < 0) {
efree(recv_buf);
PHP_SOCKET_ERROR(php_sock, "unable to recvfrom", errno); PHP_SOCKET_ERROR(php_sock, "unable to recvfrom", errno);
efree(recv_buf);
RETURN_FALSE; RETURN_FALSE;
} }
@ -1847,8 +1847,8 @@ PHP_FUNCTION(socket_recvfrom)
retval = recvfrom(php_sock->bsd_socket, recv_buf, arg3, arg4, (struct sockaddr *)&sin, (socklen_t *)&slen); retval = recvfrom(php_sock->bsd_socket, recv_buf, arg3, arg4, (struct sockaddr *)&sin, (socklen_t *)&slen);
if (retval < 0) { if (retval < 0) {
efree(recv_buf);
PHP_SOCKET_ERROR(php_sock, "unable to recvfrom", errno); PHP_SOCKET_ERROR(php_sock, "unable to recvfrom", errno);
efree(recv_buf);
RETURN_FALSE; RETURN_FALSE;
} }
@ -1876,8 +1876,8 @@ PHP_FUNCTION(socket_recvfrom)
retval = recvfrom(php_sock->bsd_socket, recv_buf, arg3, arg4, (struct sockaddr *)&sin6, (socklen_t *)&slen); retval = recvfrom(php_sock->bsd_socket, recv_buf, arg3, arg4, (struct sockaddr *)&sin6, (socklen_t *)&slen);
if (retval < 0) { if (retval < 0) {
efree(recv_buf);
PHP_SOCKET_ERROR(php_sock, "unable to recvfrom", errno); PHP_SOCKET_ERROR(php_sock, "unable to recvfrom", errno);
efree(recv_buf);
RETURN_FALSE; RETURN_FALSE;
} }