ws2_32: Invert SIOCATMARK logic.
This commit is contained in:
parent
8ad904c398
commit
06d759ed7e
|
@ -3133,7 +3133,14 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID
|
||||||
|| (!oob && ioctl(fd, SIOCATMARK, &atmark ) == -1))
|
|| (!oob && ioctl(fd, SIOCATMARK, &atmark ) == -1))
|
||||||
status = (errno == EBADF) ? WSAENOTSOCK : wsaErrno();
|
status = (errno == EBADF) ? WSAENOTSOCK : wsaErrno();
|
||||||
else
|
else
|
||||||
(*(WS_u_long *) out_buff) = oob | atmark;
|
{
|
||||||
|
/* The SIOCATMARK value read from ioctl() is reversed
|
||||||
|
* because BSD returns TRUE if it's in the OOB mark
|
||||||
|
* while Windows returns TRUE if there are NO OOB bytes.
|
||||||
|
*/
|
||||||
|
(*(WS_u_long *) out_buff) = oob | !atmark;
|
||||||
|
}
|
||||||
|
|
||||||
release_sock_fd( s, fd );
|
release_sock_fd( s, fd );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -506,7 +506,7 @@ static VOID WINAPI oob_server ( server_params *par )
|
||||||
|
|
||||||
/* check atmark state */
|
/* check atmark state */
|
||||||
ioctlsocket ( mem->sock[0].s, SIOCATMARK, &atmark );
|
ioctlsocket ( mem->sock[0].s, SIOCATMARK, &atmark );
|
||||||
todo_wine ok ( atmark == 1, "oob_server (%x): unexpectedly at the OOB mark: %i\n", id, atmark );
|
ok ( atmark == 1, "oob_server (%x): unexpectedly at the OOB mark: %i\n", id, atmark );
|
||||||
|
|
||||||
/* Receive normal data and check atmark state */
|
/* Receive normal data and check atmark state */
|
||||||
n_recvd = do_synchronous_recv ( mem->sock[0].s, mem->sock[0].buf, n_expected, par->buflen );
|
n_recvd = do_synchronous_recv ( mem->sock[0].s, mem->sock[0].buf, n_expected, par->buflen );
|
||||||
|
@ -516,7 +516,7 @@ static VOID WINAPI oob_server ( server_params *par )
|
||||||
ok ( pos == -1, "simple_server (%x): test pattern error: %d\n", id, pos);
|
ok ( pos == -1, "simple_server (%x): test pattern error: %d\n", id, pos);
|
||||||
|
|
||||||
ioctlsocket ( mem->sock[0].s, SIOCATMARK, &atmark );
|
ioctlsocket ( mem->sock[0].s, SIOCATMARK, &atmark );
|
||||||
todo_wine ok ( atmark == 1, "oob_server (%x): unexpectedly at the OOB mark: %i\n", id, atmark );
|
ok ( atmark == 1, "oob_server (%x): unexpectedly at the OOB mark: %i\n", id, atmark );
|
||||||
|
|
||||||
/* Receive a part of the out-of-band data and check atmark state */
|
/* Receive a part of the out-of-band data and check atmark state */
|
||||||
n_recvd = do_synchronous_recv ( mem->sock[0].s, mem->sock[0].buf, 8, par->buflen );
|
n_recvd = do_synchronous_recv ( mem->sock[0].s, mem->sock[0].buf, 8, par->buflen );
|
||||||
|
@ -525,13 +525,13 @@ static VOID WINAPI oob_server ( server_params *par )
|
||||||
n_expected -= 8;
|
n_expected -= 8;
|
||||||
|
|
||||||
ioctlsocket ( mem->sock[0].s, SIOCATMARK, &atmark );
|
ioctlsocket ( mem->sock[0].s, SIOCATMARK, &atmark );
|
||||||
ok ( atmark == 0, "oob_server (%x): not at the OOB mark: %i\n", id, atmark );
|
todo_wine ok ( atmark == 0, "oob_server (%x): not at the OOB mark: %i\n", id, atmark );
|
||||||
|
|
||||||
/* Receive the rest of the out-of-band data and check atmark state */
|
/* Receive the rest of the out-of-band data and check atmark state */
|
||||||
do_synchronous_recv ( mem->sock[0].s, mem->sock[0].buf, n_expected, par->buflen );
|
do_synchronous_recv ( mem->sock[0].s, mem->sock[0].buf, n_expected, par->buflen );
|
||||||
|
|
||||||
ioctlsocket ( mem->sock[0].s, SIOCATMARK, &atmark );
|
ioctlsocket ( mem->sock[0].s, SIOCATMARK, &atmark );
|
||||||
ok ( atmark == 0, "oob_server (%x): not at the OOB mark: %i\n", id, atmark );
|
todo_wine ok ( atmark == 0, "oob_server (%x): not at the OOB mark: %i\n", id, atmark );
|
||||||
|
|
||||||
/* cleanup */
|
/* cleanup */
|
||||||
wsa_ok ( closesocket ( mem->sock[0].s ), 0 ==, "oob_server (%x): closesocket error: %d\n" );
|
wsa_ok ( closesocket ( mem->sock[0].s ), 0 ==, "oob_server (%x): closesocket error: %d\n" );
|
||||||
|
@ -2970,7 +2970,7 @@ static void test_ioctlsocket(void)
|
||||||
|
|
||||||
ret = ioctlsocket(sock, SIOCATMARK, &arg);
|
ret = ioctlsocket(sock, SIOCATMARK, &arg);
|
||||||
ok(ret != SOCKET_ERROR, "ioctlsocket failed unexpectedly\n");
|
ok(ret != SOCKET_ERROR, "ioctlsocket failed unexpectedly\n");
|
||||||
todo_wine ok(arg, "SIOCATMARK expected a non-zero value\n");
|
ok(arg, "SIOCATMARK expected a non-zero value\n");
|
||||||
|
|
||||||
/* when SO_OOBINLINE is set SIOCATMARK must always return TRUE */
|
/* when SO_OOBINLINE is set SIOCATMARK must always return TRUE */
|
||||||
optval = 1;
|
optval = 1;
|
||||||
|
@ -2987,7 +2987,7 @@ static void test_ioctlsocket(void)
|
||||||
ok(ret != SOCKET_ERROR, "setsockopt failed unexpectedly\n");
|
ok(ret != SOCKET_ERROR, "setsockopt failed unexpectedly\n");
|
||||||
arg = 0;
|
arg = 0;
|
||||||
ret = ioctlsocket(sock, SIOCATMARK, &arg);
|
ret = ioctlsocket(sock, SIOCATMARK, &arg);
|
||||||
todo_wine ok(arg, "SIOCATMARK expected a non-zero value\n");
|
ok(arg, "SIOCATMARK expected a non-zero value\n");
|
||||||
|
|
||||||
ret = WSAIoctl(sock, SIO_KEEPALIVE_VALS, &arg, 0, NULL, 0, &arg, NULL, NULL);
|
ret = WSAIoctl(sock, SIO_KEEPALIVE_VALS, &arg, 0, NULL, 0, &arg, NULL, NULL);
|
||||||
ok(ret == SOCKET_ERROR, "WSAIoctl succeeded unexpectedly\n");
|
ok(ret == SOCKET_ERROR, "WSAIoctl succeeded unexpectedly\n");
|
||||||
|
|
Loading…
Reference in New Issue