Revert "Revert "curl: Update to version 7.29.0.""

This reverts commit ec4f56b347.

With the added patch, the curl segfault seems to be fixed.
This commit is contained in:
Shea Levy 2013-02-10 13:43:10 -05:00
parent 1c515819ef
commit e2abed75ec
2 changed files with 36 additions and 2 deletions

View File

@ -10,11 +10,11 @@ assert sslSupport -> openssl != null;
assert scpSupport -> libssh2 != null; assert scpSupport -> libssh2 != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "curl-7.28.0"; name = "curl-7.29.0";
src = fetchurl { src = fetchurl {
url = "http://curl.haxx.se/download/${name}.tar.bz2"; url = "http://curl.haxx.se/download/${name}.tar.bz2";
sha256 = "b7f510db60f520ba0bc8a39cccee7e913362205b4a7709e16af2cba14093099b"; sha256 = "0bw3sclhjqb2zwgcp6njjpaca62rwlj2mrw2r9wic47sqsxfhy4x";
}; };
# Zlib and OpenSSL must be propagated because `libcurl.la' contains # Zlib and OpenSSL must be propagated because `libcurl.la' contains
@ -55,6 +55,8 @@ stdenv.mkDerivation rec {
inherit sslSupport openssl; inherit sslSupport openssl;
}; };
patches = [ ./fix-curl-multi-cleanup.patch ];
preConfigure = '' preConfigure = ''
sed -e 's|/usr/bin|/no-such-path|g' -i.bak configure sed -e 's|/usr/bin|/no-such-path|g' -i.bak configure
''; '';

View File

@ -0,0 +1,32 @@
commit 249c981407b8c52edf2b0833a78cd3d3d8bd2823
Author: Shea Levy <shea@shealevy.com>
Date: Sun Feb 10 13:27:10 2013 -0500
curl_multi_cleanup: Don't try to cleanup the closure_handle if it is NULL.
Without this, curl_multi_cleanup(curl_multi_init()) segfaults.
Signed-off-by: Shea Levy <shea@shealevy.com>
diff --git a/lib/multi.c b/lib/multi.c
index fa0afb9..5b9d0bb 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -1773,11 +1773,13 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle)
/* Close all the connections in the connection cache */
close_all_connections(multi);
- multi->closure_handle->dns.hostcache = multi->hostcache;
- Curl_hostcache_clean(multi->closure_handle);
+ if (multi->closure_handle) {
+ multi->closure_handle->dns.hostcache = multi->hostcache;
+ Curl_hostcache_clean(multi->closure_handle);
- Curl_close(multi->closure_handle);
- multi->closure_handle = NULL;
+ Curl_close(multi->closure_handle);
+ multi->closure_handle = NULL;
+ }
Curl_hash_destroy(multi->sockhash);
multi->sockhash = NULL;