From a6cd8c3aa1f537568e972e1d52e7927b07bea804 Mon Sep 17 00:00:00 2001 From: Gregor Richards Date: Thu, 15 Dec 2016 12:15:02 -0500 Subject: [PATCH] Error reporting when a password is refused, plus a bugfix so that socket_receive_all_nonblocking actually reports disconnects. --- libretro-common/net/net_socket.c | 9 ++++++++- network/netplay/netplay_handshake.c | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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 ||