new upstream release - 7.44.0
This commit is contained in:
parent
c6f2e7c0fe
commit
bfaeb9dd10
@ -1,111 +0,0 @@
|
|||||||
From 2f8154c11e2cc139067973e47f1ffe5a302fb89d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kamil Dudka <kdudka@redhat.com>
|
|
||||||
Date: Thu, 30 Jul 2015 12:01:20 +0200
|
|
||||||
Subject: [PATCH] http: move HTTP/2 cleanup code off http_disconnect()
|
|
||||||
|
|
||||||
Otherwise it would never be called for an HTTP/2 connection, which has
|
|
||||||
its own disconnect handler.
|
|
||||||
|
|
||||||
I spotted this while debugging <https://bugzilla.redhat.com/1248389>
|
|
||||||
where the http_disconnect() handler was called on an FTP session handle
|
|
||||||
causing 'dnf' to crash. conn->data->req.protop of type (struct FTP *)
|
|
||||||
was reinterpreted as type (struct HTTP *) which resulted in SIGSEGV in
|
|
||||||
Curl_add_buffer_free() after printing the "Connection cache is full,
|
|
||||||
closing the oldest one." message.
|
|
||||||
|
|
||||||
A previously working version of libcurl started to crash after it was
|
|
||||||
recompiled with the HTTP/2 support despite the HTTP/2 protocol was not
|
|
||||||
actually used. This commit makes it work again although I suspect the
|
|
||||||
root cause (reinterpreting session handle data of incompatible protocol)
|
|
||||||
still has to be fixed. Otherwise the same will happen when mixing FTP
|
|
||||||
and HTTP/2 connections and exceeding the connection cache limit.
|
|
||||||
|
|
||||||
Reported-by: Tomas Tomecek
|
|
||||||
Bug: https://bugzilla.redhat.com/1248389
|
|
||||||
|
|
||||||
Upstream-commit: f7dcc7c11817f6eaee61b1cd84ffc1b2b1fcac43
|
|
||||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
|
||||||
---
|
|
||||||
lib/http.c | 25 ++-----------------------
|
|
||||||
lib/http2.c | 11 +++++++++++
|
|
||||||
2 files changed, 13 insertions(+), 23 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/http.c b/lib/http.c
|
|
||||||
index a1eef81..8d5b9a4 100644
|
|
||||||
--- a/lib/http.c
|
|
||||||
+++ b/lib/http.c
|
|
||||||
@@ -86,7 +86,6 @@
|
|
||||||
* Forward declarations.
|
|
||||||
*/
|
|
||||||
|
|
||||||
-static CURLcode http_disconnect(struct connectdata *conn, bool dead);
|
|
||||||
static int http_getsock_do(struct connectdata *conn,
|
|
||||||
curl_socket_t *socks,
|
|
||||||
int numsocks);
|
|
||||||
@@ -117,7 +116,7 @@ const struct Curl_handler Curl_handler_http = {
|
|
||||||
http_getsock_do, /* doing_getsock */
|
|
||||||
ZERO_NULL, /* domore_getsock */
|
|
||||||
ZERO_NULL, /* perform_getsock */
|
|
||||||
- http_disconnect, /* disconnect */
|
|
||||||
+ ZERO_NULL, /* disconnect */
|
|
||||||
ZERO_NULL, /* readwrite */
|
|
||||||
PORT_HTTP, /* defport */
|
|
||||||
CURLPROTO_HTTP, /* protocol */
|
|
||||||
@@ -141,7 +140,7 @@ const struct Curl_handler Curl_handler_https = {
|
|
||||||
http_getsock_do, /* doing_getsock */
|
|
||||||
ZERO_NULL, /* domore_getsock */
|
|
||||||
ZERO_NULL, /* perform_getsock */
|
|
||||||
- http_disconnect, /* disconnect */
|
|
||||||
+ ZERO_NULL, /* disconnect */
|
|
||||||
ZERO_NULL, /* readwrite */
|
|
||||||
PORT_HTTPS, /* defport */
|
|
||||||
CURLPROTO_HTTPS, /* protocol */
|
|
||||||
@@ -168,21 +167,6 @@ CURLcode Curl_http_setup_conn(struct connectdata *conn)
|
|
||||||
return CURLE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static CURLcode http_disconnect(struct connectdata *conn, bool dead_connection)
|
|
||||||
-{
|
|
||||||
-#ifdef USE_NGHTTP2
|
|
||||||
- struct HTTP *http = conn->data->req.protop;
|
|
||||||
- if(http) {
|
|
||||||
- Curl_add_buffer_free(http->header_recvbuf);
|
|
||||||
- http->header_recvbuf = NULL; /* clear the pointer */
|
|
||||||
- }
|
|
||||||
-#else
|
|
||||||
- (void)conn;
|
|
||||||
-#endif
|
|
||||||
- (void)dead_connection;
|
|
||||||
- return CURLE_OK;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
/*
|
|
||||||
* checkheaders() checks the linked list of custom HTTP headers for a
|
|
||||||
* particular header (prefix).
|
|
||||||
diff --git a/lib/http2.c b/lib/http2.c
|
|
||||||
index 1a2c486..eec0c9f 100644
|
|
||||||
--- a/lib/http2.c
|
|
||||||
+++ b/lib/http2.c
|
|
||||||
@@ -79,6 +79,7 @@ static int http2_getsock(struct connectdata *conn,
|
|
||||||
static CURLcode http2_disconnect(struct connectdata *conn,
|
|
||||||
bool dead_connection)
|
|
||||||
{
|
|
||||||
+ struct HTTP *http = conn->data->req.protop;
|
|
||||||
struct http_conn *c = &conn->proto.httpc;
|
|
||||||
(void)dead_connection;
|
|
||||||
|
|
||||||
@@ -88,6 +89,11 @@ static CURLcode http2_disconnect(struct connectdata *conn,
|
|
||||||
Curl_safefree(c->inbuf);
|
|
||||||
Curl_hash_destroy(&c->streamsh);
|
|
||||||
|
|
||||||
+ if(http) {
|
|
||||||
+ Curl_add_buffer_free(http->header_recvbuf);
|
|
||||||
+ http->header_recvbuf = NULL; /* clear the pointer */
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
DEBUGF(infof(conn->data, "HTTP/2 DISCONNECT done\n"));
|
|
||||||
|
|
||||||
return CURLE_OK;
|
|
||||||
--
|
|
||||||
2.4.6
|
|
||||||
|
|
@ -12,7 +12,7 @@ diff --git a/configure b/configure
|
|||||||
index 8f079a3..53b4774 100755
|
index 8f079a3..53b4774 100755
|
||||||
--- a/configure
|
--- a/configure
|
||||||
+++ b/configure
|
+++ b/configure
|
||||||
@@ -16075,18 +16075,11 @@ $as_echo "yes" >&6; }
|
@@ -16109,18 +16109,11 @@ $as_echo "yes" >&6; }
|
||||||
gccvhi=`echo $gccver | cut -d . -f1`
|
gccvhi=`echo $gccver | cut -d . -f1`
|
||||||
gccvlo=`echo $gccver | cut -d . -f2`
|
gccvlo=`echo $gccver | cut -d . -f2`
|
||||||
compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null`
|
compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null`
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
Version: GnuPG v1
|
|
||||||
|
|
||||||
iEYEABECAAYFAlWBDEMACgkQeOEcayedXJEmEACfRhRhpQINTGbbdK2u/p97qMzq
|
|
||||||
EBsAn1SxVVYoOudPZ0SOZ+10cau0b0sC
|
|
||||||
=Zuc9
|
|
||||||
-----END PGP SIGNATURE-----
|
|
7
curl-7.44.0.tar.lzma.asc
Normal file
7
curl-7.44.0.tar.lzma.asc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
iEYEABECAAYFAlXK47IACgkQeOEcayedXJEpMgCg8hUSyXOqdU+6oSo5j+FCQVy1
|
||||||
|
kaUAoLxHC7qRuXCP3ZCsL+VvsiOqDc/E
|
||||||
|
=JM7A
|
||||||
|
-----END PGP SIGNATURE-----
|
11
curl.spec
11
curl.spec
@ -1,15 +1,12 @@
|
|||||||
Summary: A utility for getting files from remote servers (FTP, HTTP, and others)
|
Summary: A utility for getting files from remote servers (FTP, HTTP, and others)
|
||||||
Name: curl
|
Name: curl
|
||||||
Version: 7.43.0
|
Version: 7.44.0
|
||||||
Release: 3%{?dist}
|
Release: 1%{?dist}
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: Applications/Internet
|
Group: Applications/Internet
|
||||||
Source: http://curl.haxx.se/download/%{name}-%{version}.tar.lzma
|
Source: http://curl.haxx.se/download/%{name}-%{version}.tar.lzma
|
||||||
Source2: curlbuild.h
|
Source2: curlbuild.h
|
||||||
|
|
||||||
# prevent dnf from crashing when using both FTP and HTTP (#1248389)
|
|
||||||
Patch1: 0001-curl-7.43.0-f7dcc7c1.patch
|
|
||||||
|
|
||||||
# patch making libcurl multilib ready
|
# patch making libcurl multilib ready
|
||||||
Patch101: 0101-curl-7.32.0-multilib.patch
|
Patch101: 0101-curl-7.32.0-multilib.patch
|
||||||
|
|
||||||
@ -115,7 +112,6 @@ documentation of the library, too.
|
|||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
# upstream patches
|
# upstream patches
|
||||||
%patch1 -p1
|
|
||||||
|
|
||||||
# Fedora patches
|
# Fedora patches
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
@ -235,6 +231,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_datadir}/aclocal/libcurl.m4
|
%{_datadir}/aclocal/libcurl.m4
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Aug 12 2015 Kamil Dudka <kdudka@redhat.com> 7.44.0-1
|
||||||
|
- new upstream release
|
||||||
|
|
||||||
* Thu Jul 30 2015 Kamil Dudka <kdudka@redhat.com> 7.43.0-3
|
* Thu Jul 30 2015 Kamil Dudka <kdudka@redhat.com> 7.43.0-3
|
||||||
- prevent dnf from crashing when using both FTP and HTTP (#1248389)
|
- prevent dnf from crashing when using both FTP and HTTP (#1248389)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user