diff --git a/lualib/skynet/socketchannel.lua b/lualib/skynet/socketchannel.lua index 521d98325..3054de43f 100644 --- a/lualib/skynet/socketchannel.lua +++ b/lualib/skynet/socketchannel.lua @@ -388,13 +388,17 @@ end local function check_connection(self) if self.__sock then + local authco = self.__authcoroutine if socket.disconnected(self.__sock[1]) then -- closed by peer skynet.error("socket: disconnect detected ", self.__host, self.__port) close_channel_socket(self) + if authco and authco == coroutine.running() then + -- disconnected during auth, See #1513 + return false + end return end - local authco = self.__authcoroutine if not authco then return true end