print reason phrase from HTTP status line on error (#676596)
This commit is contained in:
parent
06bb57a2b0
commit
20e0756c88
95
0003-curl-7.26.0-d317ca50.patch
Normal file
95
0003-curl-7.26.0-d317ca50.patch
Normal file
@ -0,0 +1,95 @@
|
||||
From 402328f2fc91e82c1f8b73500e3e8ce2e5b728c5 Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Dudka <kdudka@redhat.com>
|
||||
Date: Fri, 20 Jul 2012 13:33:58 +0200
|
||||
Subject: [PATCH] http: print reason phrase from HTTP status line on error
|
||||
|
||||
[upstream commit d317ca50ae7d8bb250431f86709e53b94f7f6ddf]
|
||||
|
||||
Bug: https://bugzilla.redhat.com/676596
|
||||
---
|
||||
lib/http.c | 39 +++++++++++++++++++++++++++++++++++++--
|
||||
tests/data/test24 | 5 ++++-
|
||||
2 files changed, 41 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/lib/http.c b/lib/http.c
|
||||
index a139894..1d6519f 100644
|
||||
--- a/lib/http.c
|
||||
+++ b/lib/http.c
|
||||
@@ -2727,6 +2727,42 @@ static CURLcode header_append(struct SessionHandle *data,
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
+static void print_http_error(struct SessionHandle *data)
|
||||
+{
|
||||
+ struct SingleRequest *k = &data->req;
|
||||
+ char *beg = k->p;
|
||||
+
|
||||
+ /* make sure that data->req.p points to the HTTP status line */
|
||||
+ if(!strncmp(beg, "HTTP", 4)) {
|
||||
+
|
||||
+ /* skip to HTTP status code */
|
||||
+ beg = strchr(beg, ' ');
|
||||
+ if(beg && *++beg) {
|
||||
+
|
||||
+ /* find trailing CR */
|
||||
+ char end_char = '\r';
|
||||
+ char *end = strchr(beg, end_char);
|
||||
+ if(!end) {
|
||||
+ /* try to find LF (workaround for non-compliant HTTP servers) */
|
||||
+ end_char = '\n';
|
||||
+ end = strchr(beg, end_char);
|
||||
+ }
|
||||
+
|
||||
+ if(end) {
|
||||
+ /* temporarily replace CR or LF by NUL and print the error message */
|
||||
+ *end = '\0';
|
||||
+ failf(data, "The requested URL returned error: %s", beg);
|
||||
+
|
||||
+ /* restore the previously replaced CR or LF */
|
||||
+ *end = end_char;
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* fall-back to printing the HTTP status code only */
|
||||
+ failf(data, "The requested URL returned error: %d", k->httpcode);
|
||||
+}
|
||||
|
||||
/*
|
||||
* Read any HTTP header lines from the server and pass them to the client app.
|
||||
@@ -3114,8 +3150,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
|
||||
}
|
||||
else {
|
||||
/* serious error, go home! */
|
||||
- failf (data, "The requested URL returned error: %d",
|
||||
- k->httpcode);
|
||||
+ print_http_error(data);
|
||||
return CURLE_HTTP_RETURNED_ERROR;
|
||||
}
|
||||
}
|
||||
diff --git a/tests/data/test24 b/tests/data/test24
|
||||
index 7985f43..18e7d5b 100644
|
||||
--- a/tests/data/test24
|
||||
+++ b/tests/data/test24
|
||||
@@ -24,7 +24,7 @@ http
|
||||
HTTP GET fail silently on HTTP error return
|
||||
</name>
|
||||
<command>
|
||||
-http://%HOSTIP:%HTTPPORT/24 --fail
|
||||
+http://%HOSTIP:%HTTPPORT/24 --fail --silent --show-error
|
||||
</command>
|
||||
</client>
|
||||
|
||||
@@ -43,5 +43,8 @@ Accept: */*
|
||||
<errorcode>
|
||||
22
|
||||
</errorcode>
|
||||
+<file2 name="log/stderr24">
|
||||
+curl: (22) The requested URL returned error: 404 BAD BOY
|
||||
+</file2>
|
||||
</verify>
|
||||
</testcase>
|
||||
--
|
||||
1.7.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
Summary: A utility for getting files from remote servers (FTP, HTTP, and others)
|
||||
Name: curl
|
||||
Version: 7.26.0
|
||||
Release: 5%{?dist}
|
||||
Release: 6%{?dist}
|
||||
License: MIT
|
||||
Group: Applications/Internet
|
||||
Source: http://curl.haxx.se/download/%{name}-%{version}.tar.lzma
|
||||
@ -14,6 +14,9 @@ Patch1: 0001-curl-7.26.0-72f4b534.patch
|
||||
# fix duplicated SSL handshake with multi interface and proxy (#788526)
|
||||
Patch2: 0002-curl-7.26.0-68857e40.patch
|
||||
|
||||
# print reason phrase from HTTP status line on error (#676596)
|
||||
Patch3: 0003-curl-7.26.0-d317ca50.patch
|
||||
|
||||
# patch making libcurl multilib ready
|
||||
Patch101: 0101-curl-7.25.0-multilib.patch
|
||||
|
||||
@ -115,6 +118,7 @@ documentation of the library, too.
|
||||
# upstream patches
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
|
||||
# Fedora patches
|
||||
%patch101 -p1
|
||||
@ -237,6 +241,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_datadir}/aclocal/libcurl.m4
|
||||
|
||||
%changelog
|
||||
* Mon Jul 23 2012 Kamil Dudka <kdudka@redhat.com> 7.26.0-6
|
||||
- print reason phrase from HTTP status line on error (#676596)
|
||||
|
||||
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7.26.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user