diff --git a/lualib/skynet/socketchannel.lua b/lualib/skynet/socketchannel.lua index 3054de43..251ecc28 100644 --- a/lualib/skynet/socketchannel.lua +++ b/lualib/skynet/socketchannel.lua @@ -321,7 +321,10 @@ local function connect_once(self) self.__sock = setmetatable( {fd} , channel_socket_meta ) self.__dispatch_thread = skynet.fork(function() - pcall(dispatch_function(self), self) + if self.__sock then + -- self.__sock can be false (socket closed) if error during connecting, See #1513 + pcall(dispatch_function(self), self) + end -- clear dispatch_thread self.__dispatch_thread = nil end)