diff --git a/libretro-common/net/net_socket.c b/libretro-common/net/net_socket.c index 44482c1868..6d0cfdf700 100644 --- a/libretro-common/net/net_socket.c +++ b/libretro-common/net/net_socket.c @@ -74,9 +74,16 @@ ssize_t socket_receive_all_nonblocking(int fd, bool *error, const uint8_t *data = (const uint8_t*)data_; ssize_t ret = recv(fd, (char*)data, size, 0); - if (ret >= 0) + if (ret > 0) return ret; + if (ret == 0) + { + /* Socket closed */ + *error = true; + return -1; + } + if (isagain(ret)) return 0; diff --git a/network/netplay/netplay_handshake.c b/network/netplay/netplay_handshake.c index e8856810f6..e2b65d1454 100644 --- a/network/netplay/netplay_handshake.c +++ b/network/netplay/netplay_handshake.c @@ -677,7 +677,12 @@ bool netplay_handshake_pre_sync(netplay_t *netplay, retro_ctx_memory_info_t mem_info; RECV(cmd, sizeof(cmd)) + { + char *msg = "Incorrect password."; + RARCH_ERR("%s\n", msg); + runloop_msg_queue_push(msg, 1, 180, false); return false; + } /* Only expecting a sync command */ if (ntohl(cmd[0]) != NETPLAY_CMD_SYNC ||