From 212626b7fc857f67f728f66f3045c7f87410ab58 Mon Sep 17 00:00:00 2001 From: ahoka Date: Sat, 25 Nov 2017 09:11:06 -0600 Subject: [PATCH] booru/imagefetcher: Handle timeout_ms according to curl docs --- src/booru/imagefetcher.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/booru/imagefetcher.cc b/src/booru/imagefetcher.cc index a0efac43..5cf783b4 100644 --- a/src/booru/imagefetcher.cc +++ b/src/booru/imagefetcher.cc @@ -46,8 +46,13 @@ int ImageFetcher::timer_cb(CURLM*, long timeout_ms, void *userp) { ImageFetcher *self = static_cast(userp); - self->m_TimeoutConn = self->m_MainContext->signal_timeout().connect( - sigc::mem_fun(self, &ImageFetcher::timeout_cb), timeout_ms); + if (timeout_ms > 0) + self->m_TimeoutConn = self->m_MainContext->signal_timeout().connect( + sigc::mem_fun(self, &ImageFetcher::timeout_cb), timeout_ms); + else if (timeout_ms == 0) + self->timeout_cb(); + else if (timeout_ms == -1 && self->m_TimeoutConn) + self->m_TimeoutConn.disconnect(); return 0; } @@ -68,6 +73,9 @@ ImageFetcher::ImageFetcher() ImageFetcher::~ImageFetcher() { + if (m_TimeoutConn) + m_TimeoutConn.disconnect(); + m_MainLoop->quit(); m_Thread.join();