From 6be5c8578d13894344623d06d72fd6bd2854096f Mon Sep 17 00:00:00 2001 From: JAJames Date: Sat, 30 Jan 2016 10:24:09 -0500 Subject: [PATCH] Added error handling for operation would block. --- Jupiter/HTTP_Server.cpp | 3 ++- Release/Jupiter.lib | Bin 301260 -> 301260 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Jupiter/HTTP_Server.cpp b/Jupiter/HTTP_Server.cpp index c829319..9bd9f25 100644 --- a/Jupiter/HTTP_Server.cpp +++ b/Jupiter/HTTP_Server.cpp @@ -256,7 +256,6 @@ HTTPSession::HTTPSession(Jupiter::Socket &&in_sock) : sock(std::move(in_sock)) HTTPSession::~HTTPSession() { - HTTPSession::sock.setBlocking(true); } // Server::Data struct @@ -864,6 +863,8 @@ int Jupiter::HTTP::Server::think() else // reject (too large) delete session; } + else if (session->sock.getLastError() == 10035) // store for more processing + Jupiter::HTTP::Server::data_->sessions.add(session); } } return 0; diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 7753ab085461d11899e6c5eb0fd9610952551af1..42221704d68becdbe5a6545399a80c47bc8da09d 100644 GIT binary patch delta 20014 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 DY7+So delta 20014 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 C1ILE|