Fix for http-fetch from file:// URLs
PATCH 1/1 Fix for http-fetch from file:// URLs
Recognize missing files when using http-fetch with file:// URLs
Signed-off-by Nick Hengeveld <[email protected]>
---
By way of explanation, our content distribution clients use a self-referential file:// URL when fetching updates, and all actual content servers are listed in http-alternates. This removes the dependency on a single external primary server so updates will continue to work as long as any one server is available.
http-fetch.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-)
applies-to: 3ca81810fe174dec38fa6ccec874559a39d8893f 92865a7cc1ea511f88d1ab8aa4c0faa50e05566b
http-fetch.c +8 -4
@@ -267,7 +267,8 @@ static void process_object_response(void obj_req->state =COMPLETE ;/* Use alternates if necessary */ -if (obj_req->http_code ==404 ) { +if (obj_req->http_code ==404 || + obj_req->curl_result ==CURLE_FILE_COULDNT_READ_FILE ) {fetch_alternates (alt->base);if (obj_req->repo->next !=NULL ) { obj_req->repo =
@@ -475,7 +476,8 @@ static void process_alternates_response( } } }else if (slot->curl_result !=CURLE_OK ) { -if (slot->http_code !=404 ) { +if (slot->http_code !=404 && + slot->curl_result !=CURLE_FILE_COULDNT_READ_FILE ) { got_alternates =-1 ;return ; }
@@ -637,7 +639,8 @@ static int fetch_indices(struct alt_baseif (start_active_slot (slot)) {run_active_slot (slot);if (slot->curl_result !=CURLE_OK ) { -if (slot->http_code ==404 ) { +if (slot->http_code ==404 || + slot->curl_result ==CURLE_FILE_COULDNT_READ_FILE ) { repo->got_indices =1 ;free (buffer.buffer);return 0 ;
@@ -802,7 +805,8 @@ static int fetch_object(struct alt_base ret =error ("Request for %s aborted" , hex); }else if (obj_req->curl_result !=CURLE_OK && obj_req->http_code !=416 ) { -if (obj_req->http_code ==404 ) +if (obj_req->http_code ==404 || + obj_req->curl_result ==CURLE_FILE_COULDNT_READ_FILE ) ret =-1 ;/* Be silent, it is probably in a pack. */ else ret = error("%s (curl_result = %d, http_code = %ld, sha1 = %s)",
---
0.99.9.GIT