mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 12:43:09 +00:00
@@ -125,6 +125,17 @@ local function pop_response(self)
|
|||||||
end
|
end
|
||||||
self.__wait_response = coroutine.running()
|
self.__wait_response = coroutine.running()
|
||||||
skynet.wait(self.__wait_response)
|
skynet.wait(self.__wait_response)
|
||||||
|
if not self.__sock then
|
||||||
|
-- disconnected before request, terminate dispatch_by_order
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function wakeup_response(self)
|
||||||
|
if self.__wait_response then
|
||||||
|
skynet.wakeup(self.__wait_response)
|
||||||
|
self.__wait_response = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -135,6 +146,7 @@ local function autoclose_cb(self, fd)
|
|||||||
-- closed by peer
|
-- closed by peer
|
||||||
skynet.error("socket closed by peer : ", self.__host, self.__port)
|
skynet.error("socket closed by peer : ", self.__host, self.__port)
|
||||||
close_channel_socket(self)
|
close_channel_socket(self)
|
||||||
|
wakeup_response(self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -146,10 +158,7 @@ local function push_response(self, response, co)
|
|||||||
-- response is a function, push it to __request
|
-- response is a function, push it to __request
|
||||||
table.insert(self.__request, response)
|
table.insert(self.__request, response)
|
||||||
table.insert(self.__thread, co)
|
table.insert(self.__thread, co)
|
||||||
if self.__wait_response then
|
wakeup_response(self)
|
||||||
skynet.wakeup(self.__wait_response)
|
|
||||||
self.__wait_response = nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -423,12 +432,12 @@ local function block_connect(self, once)
|
|||||||
else
|
else
|
||||||
self.__connecting[1] = true
|
self.__connecting[1] = true
|
||||||
err = try_connect(self, once)
|
err = try_connect(self, once)
|
||||||
self.__connecting[1] = nil
|
|
||||||
for i=2, #self.__connecting do
|
for i=2, #self.__connecting do
|
||||||
local co = self.__connecting[i]
|
local co = self.__connecting[i]
|
||||||
self.__connecting[i] = nil
|
self.__connecting[i] = nil
|
||||||
skynet.wakeup(co)
|
skynet.wakeup(co)
|
||||||
end
|
end
|
||||||
|
self.__connecting[1] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
r = check_connection(self)
|
r = check_connection(self)
|
||||||
|
|||||||
Reference in New Issue
Block a user