From 92d3f642ac5b620fcc896a0300281f8b8d770111 Mon Sep 17 00:00:00 2001 From: Jocelyn Fiat Date: Wed, 27 Feb 2013 21:49:03 +0100 Subject: [PATCH] Provided a way to report cURL error code back to http_client, via HTTP_CLIENT_RESPONSE --- .../network/http_client/src/http_client_response.e | 9 +++++++++ .../src/spec/libcurl/libcurl_http_client_request.e | 12 ++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/library/network/http_client/src/http_client_response.e b/library/network/http_client/src/http_client_response.e index 1decadb7..f16a181a 100644 --- a/library/network/http_client/src/http_client_response.e +++ b/library/network/http_client/src/http_client_response.e @@ -27,6 +27,8 @@ feature -- Status error_occurred: BOOLEAN -- Error occurred during request + error_message: detachable READABLE_STRING_8 + feature {HTTP_CLIENT_REQUEST} -- Status setting set_error_occurred (b: BOOLEAN) @@ -35,6 +37,13 @@ feature {HTTP_CLIENT_REQUEST} -- Status setting error_occurred := b end + set_error_message (m: READABLE_STRING_8) + -- Set `error_message' to `m' + do + set_error_occurred (True) + error_message := m + end + feature -- Access url: STRING_8 diff --git a/library/network/http_client/src/spec/libcurl/libcurl_http_client_request.e b/library/network/http_client/src/spec/libcurl/libcurl_http_client_request.e index 17482807..8382b77f 100644 --- a/library/network/http_client/src/spec/libcurl/libcurl_http_client_request.e +++ b/library/network/http_client/src/spec/libcurl/libcurl_http_client_request.e @@ -215,7 +215,7 @@ feature -- Execution Result.status := response_status_code (curl_easy, curl_handle) set_header_and_body_to (l_curl_string.string, Result) else - Result.set_error_occurred (True) + Result.set_error_message ("Error: cURL Error[" + l_result.out + "]") Result.status := response_status_code (curl_easy, curl_handle) end @@ -225,10 +225,10 @@ feature -- Execution curl_easy.cleanup (curl_handle) else create Result.make (url) - Result.set_error_occurred (True) + Result.set_error_message ("Error: internal error") end - --| Remaining cleaning + --| Remaining cleaning if l_form /= Void then l_form.dispose end @@ -339,7 +339,11 @@ feature {NONE} -- Implementation --| ex: HTTP/1.1 200 OK%R%N l_start := l_start + 2 end - if l_start < a_source.count and then a_source[l_start] = '%R' and a_source[l_start + 1] = '%N' then + if l_start = 0 or else + (l_start < a_source.count and then + a_source[l_start] = '%R' and a_source[l_start + 1] = '%N' + ) + then res.set_body (a_source) else pos := a_source.substring_index ("%R%N%R%N", l_start)