Date: Monday, November 11, 2019 @ 14:29:15 Author: eworm Revision: 526739
upgpkg: libcurl-compat 7.67.0-2 remove_handle: clear expire timers after multi_done (FS#64414) Added: libcurl-compat/trunk/0001-remove_handle-clear-expire-timers-after-multi_done.patch Modified: libcurl-compat/trunk/PKGBUILD ---------------------------------------------------------------+ 0001-remove_handle-clear-expire-timers-after-multi_done.patch | 43 ++++++++++ PKGBUILD | 14 ++- 2 files changed, 54 insertions(+), 3 deletions(-) Added: 0001-remove_handle-clear-expire-timers-after-multi_done.patch =================================================================== --- 0001-remove_handle-clear-expire-timers-after-multi_done.patch (rev 0) +++ 0001-remove_handle-clear-expire-timers-after-multi_done.patch 2019-11-11 14:29:15 UTC (rev 526739) @@ -0,0 +1,43 @@ +From 13182b33f727cf5a56a5a13419904369f7f3baad Mon Sep 17 00:00:00 2001 +From: Daniel Stenberg <dan...@haxx.se> +Date: Sun, 10 Nov 2019 16:23:53 +0100 +Subject: remove_handle: clear expire timers after multi_done() + +Since 59041f0, a new timer might be set in multi_done() so the clearing +of the timers need to happen afterwards! + +Reported-by: Max Kellermann +Fixes #4575 +Closes #4583 +--- + lib/multi.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/lib/multi.c b/lib/multi.c +index 6dfe8842e..7e8e38dc9 100755 +--- a/lib/multi.c ++++ b/lib/multi.c +@@ -695,11 +695,6 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi, + easy_owns_conn = TRUE; + } + +- /* The timer must be shut down before data->multi is set to NULL, +- else the timenode will remain in the splay tree after +- curl_easy_cleanup is called. */ +- Curl_expire_clear(data); +- + if(data->conn) { + + /* we must call multi_done() here (if we still own the connection) so that +@@ -715,6 +710,11 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi, + } + } + ++ /* The timer must be shut down before data->multi is set to NULL, else the ++ timenode will remain in the splay tree after curl_easy_cleanup is ++ called. Do it after multi_done() in case that sets another time! */ ++ Curl_expire_clear(data); ++ + if(data->connect_queue.ptr) + /* the handle was in the pending list waiting for an available connection, + so go ahead and remove it */ Modified: PKGBUILD =================================================================== --- PKGBUILD 2019-11-11 14:13:53 UTC (rev 526738) +++ PKGBUILD 2019-11-11 14:29:15 UTC (rev 526739) @@ -3,7 +3,7 @@ pkgname=libcurl-compat pkgver=7.67.0 -pkgrel=1 +pkgrel=2 pkgdesc='An URL retrieval library (without versioned symbols)' arch=('x86_64') url='https://curl.haxx.se' @@ -11,11 +11,19 @@ depends=('curl' 'glibc' 'krb5' 'openssl' 'libpsl' 'zlib' 'libssh2.so') options=('strip') -source=("https://curl.haxx.se/download/curl-${pkgver}.tar.gz"{,.asc}) +source=("https://curl.haxx.se/download/curl-${pkgver}.tar.gz"{,.asc} + '0001-remove_handle-clear-expire-timers-after-multi_done.patch') sha512sums=('73365f964df733b5e79d690ba7260a279986a9637ba0026b37cca2eca7ba8e37967251751bdf26de730f6f432713da8b7e0a315e84f1e9dad0e0bfd3d7882f92' - 'SKIP') + 'SKIP' + '99515e750f3d2319f4380e03fcfa2d6bd2ecef21cf8b760b5f5dcac94c4bd9ae544a75a0fbf9afa03e4912096aef0300421e2a43f0495362568a2b07c0808fee') validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg +prepare() { + cd curl-${pkgver} + + patch -Np1 < ../0001-remove_handle-clear-expire-timers-after-multi_done.patch +} + build() { cd curl-${pkgver}