On 02:12 Sat 16 Sep , Junio C Hamano wrote: > Sasha Khapyorsky <sashak@xxxxxxxxxxxx> writes: > > > Something like this? > > > > With this change I'm able to clone > > ftp://ftp.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git > > I think without you would have, just with extra error messages > that http codepath filters out. No, not really, without change it fails later: $ git-clone ftp://ftp.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git error: RETR response: 550 (curl_result = 19, http_code = 550, sha1 = 63b98080daa35f0d682db04f4fb7ada010888752) Getting pack list for ftp://ftp.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git/ Getting alternates list for ftp://ftp.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git/ Also look at ftp://ftp.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git/ Getting pack list for ftp://ftp.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git/ Getting index for pack 477061883bee3d10bece6e3432355b61ba02e594 error: Unable to find 63b98080daa35f0d682db04f4fb7ada010888752 under ftp://ftp.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git/ Cannot obtain needed none 63b98080daa35f0d682db04f4fb7ada010888752 while processing commit 0000000000000000000000000000000000000000. > > > diff --git a/http-fetch.c b/http-fetch.c > > index a113bb8..46d6029 100644 > > --- a/http-fetch.c > > +++ b/http-fetch.c > > @@ -324,7 +324,9 @@ static void process_object_response(void > > > > /* Use alternates if necessary */ > > if (obj_req->http_code == 404 || > > - obj_req->curl_result == CURLE_FILE_COULDNT_READ_FILE) { > > + obj_req->curl_result == CURLE_FILE_COULDNT_READ_FILE || > > + (obj_req->http_code == 550 && > > + obj_req->curl_result == CURLE_FTP_COULDNT_RETR_FILE)) { > > Here you do the same as the code would for HTTP 404 when you get > 550 _and_ RETR failure... > > > @@ -538,7 +540,9 @@ static void process_alternates_response( > > } > > } else if (slot->curl_result != CURLE_OK) { > > if (slot->http_code != 404 && > > - slot->curl_result != CURLE_FILE_COULDNT_READ_FILE) { > > + slot->curl_result != CURLE_FILE_COULDNT_READ_FILE && > > + (slot->http_code != 550 && > > + slot->curl_result != CURLE_FTP_COULDNT_RETR_FILE)) { > > got_alternates = -1; > > ... but you say, while the original code says "declare error if > it is not HTTP 404", "oh by the way, if it is 550 _or_ if it > is RETR failure then do not trigger this if()". I suspect you > meant to say this? > > (slot->http_code != 550 || > slot->curl_result != CURLE_FTP_COULDNT_RETR_FILE)) { I think with less strict checking this could be done so, but with _and_ this also ensures that we are really in FTP mode. Sasha - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html