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