forked from mirrors/nixpkgs
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:
parent
1c515819ef
commit
e2abed75ec
|
@ -10,11 +10,11 @@ assert sslSupport -> openssl != null;
|
|||
assert scpSupport -> libssh2 != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "curl-7.28.0";
|
||||
name = "curl-7.29.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://curl.haxx.se/download/${name}.tar.bz2";
|
||||
sha256 = "b7f510db60f520ba0bc8a39cccee7e913362205b4a7709e16af2cba14093099b";
|
||||
sha256 = "0bw3sclhjqb2zwgcp6njjpaca62rwlj2mrw2r9wic47sqsxfhy4x";
|
||||
};
|
||||
|
||||
# Zlib and OpenSSL must be propagated because `libcurl.la' contains
|
||||
|
@ -55,6 +55,8 @@ stdenv.mkDerivation rec {
|
|||
inherit sslSupport openssl;
|
||||
};
|
||||
|
||||
patches = [ ./fix-curl-multi-cleanup.patch ];
|
||||
|
||||
preConfigure = ''
|
||||
sed -e 's|/usr/bin|/no-such-path|g' -i.bak configure
|
||||
'';
|
||||
|
|
32
pkgs/tools/networking/curl/fix-curl-multi-cleanup.patch
Normal file
32
pkgs/tools/networking/curl/fix-curl-multi-cleanup.patch
Normal 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;
|
Loading…
Reference in a new issue