diff --git a/lib/remote/httpserverconnection.cpp b/lib/remote/httpserverconnection.cpp
index 88a0af5fb..e9c834d3a 100644
--- a/lib/remote/httpserverconnection.cpp
+++ b/lib/remote/httpserverconnection.cpp
@@ -78,20 +78,13 @@ void HttpServerConnection::Disconnect()
Log(LogInformation, "HttpServerConnection")
<< "HTTP client disconnected (from " << m_PeerAddress << ")";
- try {
- m_Stream->next_layer().async_shutdown(yc);
- } catch (...) {
- }
+ boost::system::error_code ec;
- try {
- m_Stream->lowest_layer().shutdown(m_Stream->lowest_layer().shutdown_both);
- } catch (...) {
- }
+ m_Stream->next_layer().async_shutdown(yc[ec]);
- try {
- m_Stream->lowest_layer().cancel();
- } catch (...) {
- }
+ m_Stream->lowest_layer().shutdown(m_Stream->lowest_layer().shutdown_both, ec);
+
+ m_Stream->lowest_layer().cancel(ec);
m_CheckLivenessTimer.cancel();
@@ -148,16 +141,18 @@ bool EnsureValidHeaders(
bool httpError = true;
try {
- try {
- http::async_read_header(stream, buf, parser, yc);
- } catch (const boost::system::system_error& ex) {
+ boost::system::error_code ec;
+
+ http::async_read_header(stream, buf, parser, yc[ec]);
+
+ if (ec) {
/**
* Unfortunately there's no way to tell an HTTP protocol error
* from an error on a lower layer:
*
*
*/
- throw std::invalid_argument(ex.what());
+ throw std::invalid_argument(ec.message());
}
httpError = false;
@@ -185,8 +180,10 @@ bool EnsureValidHeaders(
response.set(http::field::connection, "close");
- http::async_write(stream, response, yc);
- stream.async_flush(yc);
+ boost::system::error_code ec;
+
+ http::async_write(stream, response, yc[ec]);
+ stream.async_flush(yc[ec]);
return false;
}
@@ -208,8 +205,10 @@ void HandleExpect100(
response.result(http::status::continue_);
- http::async_write(stream, response, yc);
- stream.async_flush(yc);
+ boost::system::error_code ec;
+
+ http::async_write(stream, response, yc[ec]);
+ stream.async_flush(yc[ec]);
}
}
@@ -252,8 +251,10 @@ bool HandleAccessControl(
response.set(http::field::content_length, response.body().size());
response.set(http::field::connection, "close");
- http::async_write(stream, response, yc);
- stream.async_flush(yc);
+ boost::system::error_code ec;
+
+ http::async_write(stream, response, yc[ec]);
+ stream.async_flush(yc[ec]);
return false;
}
@@ -281,8 +282,10 @@ bool EnsureAcceptHeader(
response.set(http::field::content_length, response.body().size());
response.set(http::field::connection, "close");
- http::async_write(stream, response, yc);
- stream.async_flush(yc);
+ boost::system::error_code ec;
+
+ http::async_write(stream, response, yc[ec]);
+ stream.async_flush(yc[ec]);
return false;
}
@@ -320,8 +323,10 @@ bool EnsureAuthenticatedUser(
response.set(http::field::content_length, response.body().size());
}
- http::async_write(stream, response, yc);
- stream.async_flush(yc);
+ boost::system::error_code ec;
+
+ http::async_write(stream, response, yc[ec]);
+ stream.async_flush(yc[ec]);
return false;
}
@@ -378,9 +383,11 @@ bool EnsureValidBody(
parser.body_limit(maxSize);
}
- try {
- http::async_read(stream, buf, parser, yc);
- } catch (const boost::system::system_error& ex) {
+ boost::system::error_code ec;
+
+ http::async_read(stream, buf, parser, yc[ec]);
+
+ if (ec) {
/**
* Unfortunately there's no way to tell an HTTP protocol error
* from an error on a lower layer:
@@ -393,18 +400,18 @@ bool EnsureValidBody(
if (parser.get()[http::field::accept] == "application/json") {
HttpUtility::SendJsonBody(response, nullptr, new Dictionary({
{ "error", 400 },
- { "status", String("Bad Request: ") + ex.what() }
+ { "status", String("Bad Request: ") + ec.message() }
}));
} else {
response.set(http::field::content_type, "text/html");
- response.body() = String("Bad Request
") + ex.what() + "
";
+ response.body() = String("Bad Request
") + ec.message() + "
";
response.set(http::field::content_length, response.body().size());
}
response.set(http::field::connection, "close");
- http::async_write(stream, response, yc);
- stream.async_flush(yc);
+ http::async_write(stream, response, yc[ec]);
+ stream.async_flush(yc[ec]);
return false;
}
@@ -438,8 +445,10 @@ bool ProcessRequest(
HttpUtility::SendJsonError(response, nullptr, 500, "Unhandled exception" , DiagnosticInformation(ex));
- http::async_write(stream, response, yc);
- stream.async_flush(yc);
+ boost::system::error_code ec;
+
+ http::async_write(stream, response, yc[ec]);
+ stream.async_flush(yc[ec]);
return true;
}
@@ -448,8 +457,10 @@ bool ProcessRequest(
return false;
}
- http::async_write(stream, response, yc);
- stream.async_flush(yc);
+ boost::system::error_code ec;
+
+ http::async_write(stream, response, yc[ec]);
+ stream.async_flush(yc[ec]);
return true;
}