Re: [PATCH] http-backend: give a hint that web browser access is not supported
From: Junio C Hamano <hidden>
Date: 2021-12-05 23:07:23
Junio C Hamano [off-list ref] writes:
Jan Engelhardt [off-list ref] writes:quoted
quoted
Also, will the real Git clients, which are the primary intended audiences this program is trying to talk to, be OK if we suddenly start giving a non-empty 404 page?I am confident enough to say yes. It's not like git-http-backend returned anything previously in the 404 case (like JSON or so), therefore clients could not possibly depend on content.quoted
If any implementations of Git HTTP client this program is serving (1) uses a 404 response as a cue to decide its next request (e.g. there may be some "try this URL and if it fails, do another one" fallback logic)Not sure if they heed Location: headers, but I am not changing that :-)I was more worried about clients barfing because they depend on *not* having content. They parse the status (404) out, and then leave the message part untouched---they may not even read the message in full, and that did not matter because there wasn't anything to read and discard. Now we are sending more. As long as the leftover bytes would not cause problem with the action they take after that step, we would be OK.
In any case, the patch in question seems to fail t5561. $ cd t && sh t5561-http-backend.sh -i -v Initialized empty Git repository in /home/jch/git/t/trash directory.t5561-http-backend/.git/ checking prerequisite: NOT_ROOT ... ok 13 - http.receivepack false expecting success of 5561.14 'server request log matches test results': check_access_log exp
--- exp.sorted 2021-12-05 23:05:09.418684299 +0000
+++ access.log.sorted 2021-12-05 23:05:09.422684296 +0000@@ -1,33 +1,33 @@ GET /smart/repo.git/HEAD HTTP/1.1 200 GET /smart/repo.git/HEAD HTTP/1.1 200 -GET /smart/repo.git/HEAD HTTP/1.1 403 +GET /smart/repo.git/HEAD HTTP/1.1 403 - GET /smart/repo.git/info/refs HTTP/1.1 200 GET /smart/repo.git/info/refs HTTP/1.1 200 -GET /smart/repo.git/info/refs HTTP/1.1 403 +GET /smart/repo.git/info/refs HTTP/1.1 403 - GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 -GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 -GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 +GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 - +GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 - GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 -GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 403 +GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 403 - GET /smart/repo.git/objects/01/494420155a3f7587b6c26d06a55b1a8bbef2f4 HTTP/1.1 200 GET /smart/repo.git/objects/01/494420155a3f7587b6c26d06a55b1a8bbef2f4 HTTP/1.1 200 -GET /smart/repo.git/objects/01/494420155a3f7587b6c26d06a55b1a8bbef2f4 HTTP/1.1 403 +GET /smart/repo.git/objects/01/494420155a3f7587b6c26d06a55b1a8bbef2f4 HTTP/1.1 403 - GET /smart/repo.git/objects/info/alternates HTTP/1.1 200 - GET /smart/repo.git/objects/info/alternates HTTP/1.1 200 - -GET /smart/repo.git/objects/info/alternates HTTP/1.1 403 +GET /smart/repo.git/objects/info/alternates HTTP/1.1 403 - GET /smart/repo.git/objects/info/http-alternates HTTP/1.1 200 - GET /smart/repo.git/objects/info/http-alternates HTTP/1.1 200 - -GET /smart/repo.git/objects/info/http-alternates HTTP/1.1 403 +GET /smart/repo.git/objects/info/http-alternates HTTP/1.1 403 - GET /smart/repo.git/objects/info/packs HTTP/1.1 200 GET /smart/repo.git/objects/info/packs HTTP/1.1 200 -GET /smart/repo.git/objects/info/packs HTTP/1.1 403 +GET /smart/repo.git/objects/info/packs HTTP/1.1 403 - GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.idx HTTP/1.1 200 GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.idx HTTP/1.1 200 -GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.idx HTTP/1.1 403 +GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.idx HTTP/1.1 403 - GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 200 GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 200 -GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 403 +GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 403 - GET /smart/repo.git/refs/heads/main HTTP/1.1 404 GET /smart_noexport/repo.git/HEAD HTTP/1.1 200 GET /smart_noexport/repo.git/HEAD HTTP/1.1 404
@@ -46,8 +46,8 @@ GET /smart_noexport/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 200 GET /smart_noexport/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 404 POST /smart/repo.git/git-receive-pack HTTP/1.1 200 - -POST /smart/repo.git/git-receive-pack HTTP/1.1 403 -POST /smart/repo.git/git-receive-pack HTTP/1.1 403 +POST /smart/repo.git/git-receive-pack HTTP/1.1 403 - +POST /smart/repo.git/git-receive-pack HTTP/1.1 403 - POST /smart/repo.git/git-upload-pack HTTP/1.1 200 - POST /smart/repo.git/git-upload-pack HTTP/1.1 200 - -POST /smart/repo.git/git-upload-pack HTTP/1.1 403 +POST /smart/repo.git/git-upload-pack HTTP/1.1 403 - --- exp 2021-12-05 23:05:09.410684305 +0000 +++ access.log.stripped 2021-12-05 23:05:09.422684296 +0000
@@ -31,23 +31,23 @@ GET /smart/repo.git/objects/01/494420155a3f7587b6c26d06a55b1a8bbef2f4 HTTP/1.1 200 GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 200 GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.idx HTTP/1.1 200 -GET /smart/repo.git/HEAD HTTP/1.1 403 -GET /smart/repo.git/info/refs HTTP/1.1 403 -GET /smart/repo.git/objects/info/packs HTTP/1.1 403 -GET /smart/repo.git/objects/info/alternates HTTP/1.1 403 -GET /smart/repo.git/objects/info/http-alternates HTTP/1.1 403 -GET /smart/repo.git/objects/01/494420155a3f7587b6c26d06a55b1a8bbef2f4 HTTP/1.1 403 -GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 403 -GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.idx HTTP/1.1 403 +GET /smart/repo.git/HEAD HTTP/1.1 403 - +GET /smart/repo.git/info/refs HTTP/1.1 403 - +GET /smart/repo.git/objects/info/packs HTTP/1.1 403 - +GET /smart/repo.git/objects/info/alternates HTTP/1.1 403 - +GET /smart/repo.git/objects/info/http-alternates HTTP/1.1 403 - +GET /smart/repo.git/objects/01/494420155a3f7587b6c26d06a55b1a8bbef2f4 HTTP/1.1 403 - +GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.pack HTTP/1.1 403 - +GET /smart/repo.git/objects/pack/pack-977dd2d10981235a806ccc52cc769a44e75c889e.idx HTTP/1.1 403 - GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 POST /smart/repo.git/git-upload-pack HTTP/1.1 200 - GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 POST /smart/repo.git/git-upload-pack HTTP/1.1 200 - -GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 403 -POST /smart/repo.git/git-upload-pack HTTP/1.1 403 -GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 -POST /smart/repo.git/git-receive-pack HTTP/1.1 403 +GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 403 - +POST /smart/repo.git/git-upload-pack HTTP/1.1 403 - +GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 - +POST /smart/repo.git/git-receive-pack HTTP/1.1 403 - GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 POST /smart/repo.git/git-receive-pack HTTP/1.1 200 - -GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 -POST /smart/repo.git/git-receive-pack HTTP/1.1 403 +GET /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 - +POST /smart/repo.git/git-receive-pack HTTP/1.1 403 -
not ok 14 - server request log matches test results # # check_access_log exp #