}
} catch (const std::exception& ex) {
Log(LogCritical, "ApiListener")
- << "Cannot bind TCP socket for host '" << node << "' on port '" << service << "': " << DiagnosticInformation(ex, false);
+ << "Cannot bind TCP socket for host '" << node << "' on port '" << service << "': " << ex.what();
return false;
}
asio::spawn(io, [this, sslConn](asio::yield_context yc) { NewClientHandler(yc, sslConn, String(), RoleServer); });
} catch (const std::exception& ex) {
Log(LogCritical, "ApiListener")
- << "Cannot accept new connection: " << DiagnosticInformation(ex, false);
+ << "Cannot accept new connection: " << ex.what();
}
}
}
auto& sslConn (client->next_layer());
- try {
- sslConn.async_handshake(role == RoleClient ? sslConn.client : sslConn.server, yc);
- } catch (const std::exception& ex) {
+ boost::system::error_code ec;
+
+ sslConn.async_handshake(role == RoleClient ? sslConn.client : sslConn.server, yc[ec]);
+
+ if (ec) {
+ // https://github.com/boostorg/beast/issues/915
+ // Google Chrome 73+ seems not close the connection properly, https://stackoverflow.com/questions/56272906/how-to-fix-certificate-unknown-error-from-chrome-v73
+ if (ec == asio::ssl::error::stream_truncated) {
+ Log(LogNotice, "ApiListener")
+ << "TLS stream was truncated, ignoring connection from " << conninfo;
+ return;
+ }
+
Log(LogCritical, "ApiListener")
- << "Client TLS handshake failed (" << conninfo << "): " << DiagnosticInformation(ex, false);
+ << "Client TLS handshake failed (" << conninfo << "): " << ec.message();
return;
}
if (client->async_fill(yc[ec]) == 0u) {
if (identity.IsEmpty()) {
Log(LogInformation, "ApiListener")
- << "No data received on new API connection. "
+ << "No data received on new API connection " << conninfo << ". "
<< "Ensure that the remote endpoints are properly configured in a cluster setup.";
} else {
Log(LogWarning, "ApiListener")
- << "No data received on new API connection for identity '" << identity << "'. "
+ << "No data received on new API connection " << conninfo << " for identity '" << identity << "'. "
<< "Ensure that the remote endpoints are properly configured in a cluster setup.";
}