diff --git a/lualib/http/sockethelper.lua b/lualib/http/sockethelper.lua index 0d8e80fb..0ae6445d 100644 --- a/lualib/http/sockethelper.lua +++ b/lualib/http/sockethelper.lua @@ -71,12 +71,16 @@ function sockethelper.connect(host, port, timeout) local fd if timeout then local drop_fd + local co = coroutine.running() -- asynchronous connect skynet.fork(function() fd = socket.open(host, port) if drop_fd then -- sockethelper.connect already return, and raise socket_error socket.close(fd) + else + -- socket.open before sleep, wakeup. + skynet.wakeup(co) end end) skynet.sleep(timeout)