From 9934b3bd345011eef6a96249d8d90de594c04cd0 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Thu, 18 Aug 2011 15:21:58 -0400 Subject: lib/dload: unlink on response code >=400 ftp and http both define >=400 as being "something bad happened" Signed-off-by: Dave Reisner Signed-off-by: Dan McGee --- lib/libalpm/dload.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c index 2a1fb41c..e181f425 100644 --- a/lib/libalpm/dload.c +++ b/lib/libalpm/dload.c @@ -189,7 +189,7 @@ static int curl_download_internal(struct dload_payload *payload, char hostname[256]; char error_buffer[CURL_ERROR_SIZE]; struct stat st; - long timecond, remote_time = -1; + long timecond, respcode = 0, remote_time = -1; double remote_size, bytes_dl; struct sigaction sig_pipe[2], sig_int[2]; /* shortcut to our handle within the payload */ @@ -309,6 +309,12 @@ static int curl_download_internal(struct dload_payload *payload, /* was it a success? */ switch(handle->curlerr) { case CURLE_OK: + /* get http/ftp response code */ + curl_easy_getinfo(handle->curl, CURLINFO_RESPONSE_CODE, &respcode); + if(respcode >=400) { + payload->unlink_on_fail = 1; + goto cleanup; + } break; case CURLE_ABORTED_BY_CALLBACK: goto cleanup; -- cgit v1.2.3-70-g09d2