From 5ae1a9dcda035cdf1dc5e64687cb3939ba754782 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Wed, 2 Sep 2020 02:14:57 +0200 Subject: [PATCH] Fix client unusual waits --- td/telegram/Client.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/td/telegram/Client.cpp b/td/telegram/Client.cpp index 0b6eaaf78..4a529df66 100644 --- a/td/telegram/Client.cpp +++ b/td/telegram/Client.cpp @@ -345,7 +345,15 @@ class TdReceiver { } else if (!include_responses && include_updates) { output_updates_queue_->reader_get_event_fd().wait(static_cast(timeout * 1000)); } else if (include_responses && include_updates) { - output_updates_queue_->reader_get_event_fd().wait(static_cast(timeout * 1000)); + auto cnt = 0; + //todo: find a better implementation by joining two fd together, instead of quickly cycling them. + while (cnt <= timeout * 1000) { + output_updates_queue_->reader_get_event_fd().wait(static_cast(10)); + if (output_updates_queue_->reader_wait_nonblock() > 0) break; + output_responses_queue_->reader_get_event_fd().wait(static_cast(10)); + if (output_responses_queue_->reader_wait_nonblock() > 0) break; + cnt += 10; + } } else { // do nothing, this configuration shouldn't be used. }