diff --git a/src/include/86box/plat_netsocket.h b/src/include/86box/plat_netsocket.h index 269f399ff..9a2181ae1 100644 --- a/src/include/86box/plat_netsocket.h +++ b/src/include/86box/plat_netsocket.h @@ -16,7 +16,7 @@ SOCKET plat_netsocket_create_server(int type, unsigned short port); void plat_netsocket_close(SOCKET socket); SOCKET plat_netsocket_accept(SOCKET socket); -int plat_netsocket_connected(SOCKET socket); +int plat_netsocket_connected(SOCKET socket); /* Returns -1 on trouble. */ int plat_netsocket_connect(SOCKET socket, const char* hostname, unsigned short port); /* Returns 0 in case of inability to send. -1 in case of errors. */ diff --git a/src/win/win_netsocket.c b/src/win/win_netsocket.c index 45ca1f760..044a59860 100644 --- a/src/win/win_netsocket.c +++ b/src/win/win_netsocket.c @@ -80,6 +80,9 @@ int plat_netsocket_connected(SOCKET socket) { struct sockaddr addr; socklen_t len = sizeof(struct sockaddr); + + + if (getpeername(socket, &addr, &len) == SOCKET_ERROR) return 0; @@ -113,6 +116,8 @@ int plat_netsocket_connect(SOCKET socket, const char* hostname, unsigned short p if (error == WSAEISCONN) return 0; + + res = -1; } return res; }