From e1f56bbcb2c02558c01e99c2be87dcf821f9a1fd Mon Sep 17 00:00:00 2001 From: cxl Date: Sun, 26 Nov 2017 18:05:36 +0000 Subject: [PATCH] Core: Fixed WebSocket::Connect in non-blocking mode git-svn-id: svn://ultimatepp.org/upp/trunk@11498 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/WebSocket.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/uppsrc/Core/WebSocket.cpp b/uppsrc/Core/WebSocket.cpp index 96e535762..a08ffa14b 100644 --- a/uppsrc/Core/WebSocket.cpp +++ b/uppsrc/Core/WebSocket.cpp @@ -90,8 +90,10 @@ bool WebSocket::Connect(const String& url) return false; } } - else + else { opcode = DNS; + addrinfo.Start(host, port); + } return true; } @@ -152,6 +154,10 @@ void WebSocket::Dns() { if(addrinfo.InProgress()) return; + if(!addrinfo.GetResult()) { + Error("DNS lookup failed"); + return; + } LLOG("DNS resolved"); StartConnect(); } @@ -340,12 +346,13 @@ void WebSocket::Do0() int prev_opcode; do { prev_opcode = opcode; - if(socket->IsEof() && !(close_sent || close_received)) - Error("Socket has been closed unexpectedly"); + if(findarg(opcode, DNS, SSL_HANDSHAKE) < 0) { + Output(); + if(socket->IsEof() && !(close_sent || close_received)) + Error("Socket has been closed unexpectedly"); + } if(IsError()) return; - if(findarg(opcode, DNS, SSL_HANDSHAKE) < 0) - Output(); switch(opcode) { case DNS: Dns();