Check self.__sock before dispatch, See
@@ -321,7 +321,10 @@ local function connect_once(self)
self.__sock = setmetatable( {fd} , channel_socket_meta )
self.__dispatch_thread = skynet.fork(function()
+ 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)
