Skip to content
Snippets Groups Projects
Commit 21ce9443 authored by Sébastien Blin's avatar Sébastien Blin
Browse files

tls_session: place timeout on request, not connection

This allow to cancel the request if the connection is too long
(ipv6 un-resolvable for example)

Change-Id: I24757dd7a9893c36a86eccdc46271d5453205de5
parent 3a7ccb3d
No related branches found
No related tags found
No related merge requests found
...@@ -771,20 +771,17 @@ TlsSession::TlsSessionImpl::sendOcspRequest(const std::string& uri, ...@@ -771,20 +771,17 @@ TlsSession::TlsSessionImpl::sendOcspRequest(const std::string& uri,
request->set_header_field(restinio::http_field_t::content_type, "application/ocsp-request"); request->set_header_field(restinio::http_field_t::content_type, "application/ocsp-request");
request->set_body(std::move(body)); request->set_body(std::move(body));
request->set_connection_type(restinio::http_connection_header_t::close); request->set_connection_type(restinio::http_connection_header_t::close);
request->add_on_state_change_callback( request->timeout(timeout, [this, request](const asio::error_code& ec) {
[this, cb = std::move(cb), timeout](const http::Request::State state,
const http::Response response) {
JAMI_DBG("HTTP OCSP Request state=%i status_code=%i",
(unsigned int) state,
response.status_code);
if (state == http::Request::State::SENDING) {
auto request = response.request.lock();
request->get_connection()->timeout(timeout, [request](const asio::error_code& ec) {
if (ec and ec != asio::error::operation_aborted) if (ec and ec != asio::error::operation_aborted)
JAMI_ERR("HTTP OCSP Request timeout with error: %s", ec.message().c_str()); JAMI_ERR("HTTP OCSP Request timeout with error: %s", ec.message().c_str());
request->cancel(); request->cancel();
}); });
} request->add_on_state_change_callback([this,
cb = std::move(cb)](const http::Request::State state,
const http::Response response) {
JAMI_DBG("HTTP OCSP Request state=%i status_code=%i",
(unsigned int) state,
response.status_code);
if (state != http::Request::State::DONE) if (state != http::Request::State::DONE)
return; return;
if (cb) if (cb)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment