From: Marcin Siodelski Date: Tue, 25 Apr 2017 12:04:10 +0000 (+0200) Subject: [5260] Properly handle EWOULDBLOCK and EAGAIN in Http unit tests. X-Git-Tag: Kea-1.2.0~10 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=2331c808907a4bb6ab40b0366c95c91d4c4eae7c;p=thirdparty%2Fkea.git [5260] Properly handle EWOULDBLOCK and EAGAIN in Http unit tests. --- diff --git a/src/lib/http/tests/listener_unittests.cc b/src/lib/http/tests/listener_unittests.cc index 2149a83595..4ccc0a51eb 100644 --- a/src/lib/http/tests/listener_unittests.cc +++ b/src/lib/http/tests/listener_unittests.cc @@ -168,10 +168,21 @@ public: [this, request](const boost::system::error_code& ec, std::size_t bytes_transferred) mutable { if (ec) { - ADD_FAILURE() << "error occurred while connecting: " - << ec.message(); - io_service_.stop(); - return; + if (ec.value() == boost::asio::error::operation_aborted) { + return; + + } else if ((ec.value() == boost::asio::error::try_again) || + (ec.value() == boost::asio::error::would_block)) { + // If we should try again make sure there is no garbage in the + // bytes_transferred. + bytes_transferred = 0; + + } else { + ADD_FAILURE() << "error occurred while connecting: " + << ec.message(); + io_service_.stop(); + return; + } } // Remove the part of the request which has been sent. @@ -199,14 +210,21 @@ public: std::size_t bytes_transferred) { if (ec) { // IO service stopped so simply return. - if (ec == boost::asio::error::operation_aborted) { + if (ec.value() == boost::asio::error::operation_aborted) { return; - } - // Error occurred, bail... - ADD_FAILURE() << "error occurred while receiving HTTP" - " response from the server: " << ec.message(); - io_service_.stop(); + } else if ((ec.value() == boost::asio::error::try_again) || + (ec.value() == boost::asio::error::would_block)) { + // If we should try again, make sure that there is no garbage + // in the bytes_transferred. + bytes_transferred = 0; + + } else { + // Error occurred, bail... + ADD_FAILURE() << "error occurred while receiving HTTP" + " response from the server: " << ec.message(); + io_service_.stop(); + } } if (bytes_transferred > 0) {