From 3b233f11ea1c26cae86303361a3bbb06358e8758 Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Tue, 30 Jan 2018 17:21:16 -0500 Subject: [PATCH] fix cpu-overload during file transfer acceptance TLS session was busy in handleStateEstablished() during a data-transfer in "wait_host_acceptance" state. Use a simple thread sleep instead of waitForData() to solve the issue. Change-Id: I38b7a036863da950202597d52debbfff3329b875 Reviewed-by: Olivier Soldano <olivier.soldano@savoirfairelinux.com> --- src/security/tls_session.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/security/tls_session.cpp b/src/security/tls_session.cpp index 761f725499..ede53dba09 100644 --- a/src/security/tls_session.cpp +++ b/src/security/tls_session.cpp @@ -1070,13 +1070,12 @@ TlsSession::TlsSessionImpl::handleStateEstablished(TlsSessionState state) { // Nothing to do in reliable mode, so just wait for state change if (transport_.isReliable()) { - std::error_code ec; - do { - transport_.waitForData(100, ec); + while (true) { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); state = state_.load(); if (state != TlsSessionState::ESTABLISHED) return state; - } while (!ec); + } return TlsSessionState::SHUTDOWN; } -- GitLab