summaryrefslogtreecommitdiff
path: root/core/curl
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-01-15 03:49:32 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-01-15 03:49:32 +0000
commit154321f7346db5c32dbdf9c730735969eabbd88f (patch)
treec89badf5b9547f313d7b28a7f400c3df404af70f /core/curl
parent271da49386e259723ef574713339f04886630604 (diff)
Wed Jan 15 03:43:12 UTC 2014
Diffstat (limited to 'core/curl')
-rw-r--r--core/curl/0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch47
-rw-r--r--core/curl/PKGBUILD10
2 files changed, 54 insertions, 3 deletions
diff --git a/core/curl/0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch b/core/curl/0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch
new file mode 100644
index 000000000..97858e3f5
--- /dev/null
+++ b/core/curl/0001-FILE-don-t-wait-due-to-CURLOPT_MAX_RECV_SPEED_LARGE.patch
@@ -0,0 +1,47 @@
+From 2715d7f948c8eb7cd3cba38f3dff6d4148e7cfaf Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@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
+
diff --git a/core/curl/PKGBUILD b/core/curl/PKGBUILD
index 3ea9f4915..929275905 100644
--- a/core/curl/PKGBUILD
+++ b/core/curl/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 203041 2014-01-02 14:43:46Z dreisner $
+# $Id: PKGBUILD 204043 2014-01-14 15:06:13Z dreisner $
# Maintainer: Dave Reisner <dreisner@archlinux.org>
# Contributor: Angel Velasquez <angvp@archlinux.org>
# Contributor: Eric Belanger <eric@archlinux.org>
@@ -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 @@ prepare() {
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 @@ build() {
--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