[arch-commits] Commit in curl/trunk (2 files)
Dave Reisner
dreisner at nymeria.archlinux.org
Sat Jan 4 17:28:23 UTC 2014
Date: Saturday, January 4, 2014 @ 18:28:23
Author: dreisner
Revision: 203172
upgpkg: curl 7.34.0-3
- add krb5 as dependency (FS#38322)
- backport fix for failures with file:// protocol
Added:
curl/trunk/0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch
Modified:
curl/trunk/PKGBUILD
----------------------------------------------------------------+
0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch | 47 ++++++++++
PKGBUILD | 8 +
2 files changed, 53 insertions(+), 2 deletions(-)
Added: 0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch
===================================================================
--- 0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch (rev 0)
+++ 0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch 2014-01-04 17:28:23 UTC (rev 203172)
@@ -0,0 +1,47 @@
+From 2715d7f948c8eb7cd3cba38f3dff6d4148e7cfaf Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel at haxx.se>
+Date: Sun, 22 Dec 2013 23:36:11 +0100
+Subject: [PATCH] FILE: don't wait due to CURLOPT_MAX_RECV_SPEED_LARGE
+
+The FILE:// code doesn't support this option - and it doesn't make sense
+to support it as long as it works as it does since then it'd only block
+even longer.
+
+But: setting CURLOPT_MAX_RECV_SPEED_LARGE would make the transfer first
+get done and then libcurl would wait until the average speed would get
+low enough. This happened because the transfer happens completely in the
+DO state for FILE:// but then it would still unconditionally continue in
+to the PERFORM state where the speed check is made.
+
+Starting now, the code will skip from DO_DONE to DONE immediately if no
+socket is set to be recv()ed or send()ed to.
+
+Bug: http://curl.haxx.se/bug/view.cgi?id=1312
+Reported-by: Mohammad AlSaleh
+---
+ lib/multi.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/lib/multi.c b/lib/multi.c
+index ec45ecb..191c9b8 100644
+--- a/lib/multi.c
++++ b/lib/multi.c
+@@ -1381,7 +1381,14 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
+ Curl_move_handle_from_send_to_recv_pipe(data, data->easy_conn);
+ /* Check if we can move pending requests to send pipe */
+ Curl_multi_process_pending_handles(multi);
+- multistate(data, CURLM_STATE_WAITPERFORM);
++
++ /* Only perform the transfer if there's a good socket to work with.
++ Having both BAD is a signal to skip immediately to DONE */
++ if((data->easy_conn->sockfd != CURL_SOCKET_BAD) ||
++ (data->easy_conn->writesockfd != CURL_SOCKET_BAD))
++ multistate(data, CURLM_STATE_WAITPERFORM);
++ else
++ multistate(data, CURLM_STATE_DONE);
+ result = CURLM_CALL_MULTI_PERFORM;
+ break;
+
+--
+1.8.5.2
+
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2014-01-04 17:15:35 UTC (rev 203171)
+++ PKGBUILD 2014-01-04 17:28:23 UTC (rev 203172)
@@ -7,19 +7,21 @@
pkgname=curl
pkgver=7.34.0
-pkgrel=2
+pkgrel=3
pkgdesc="An URL retrieval utility and library"
arch=('i686' 'x86_64')
url="http://curl.haxx.se"
license=('MIT')
-depends=('ca-certificates' 'libssh2' 'openssl' 'zlib')
+depends=('ca-certificates' 'krb5' 'libssh2' 'openssl' 'zlib')
provides=('libcurl.so')
options=('strip' 'debug')
source=("http://curl.haxx.se/download/$pkgname-$pkgver.tar.gz"{,.asc}
+ 0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch
0001-connect-Try-all-addresses-in-first-connection-attemp.patch
curlbuild.h)
md5sums=('d5b7edccbd1793e3549842e01331da20'
'SKIP'
+ 'ba766acdb7568aac0b23d479ebecd591'
'ee755b0e886207fc1e8154e426c46ca7'
'751bd433ede935c8fae727377625a8ae')
@@ -27,6 +29,7 @@
cd "$pkgname-$pkgver"
patch -Np1 <"$srcdir"/0001-connect-Try-all-addresses-in-first-connection-attemp.patch
+ patch -Np1 <"$srcdir"/0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch
}
build() {
@@ -41,6 +44,7 @@
--enable-manual \
--enable-versioned-symbols \
--enable-threaded-resolver \
+ --with-gssapi \
--without-libidn \
--with-random=/dev/urandom \
--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt
More information about the arch-commits
mailing list