[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