Junio C Hamano <gitster@xxxxxxxxx> writes: > Jan Engelhardt <jengelh@xxxxxxx> writes: > >>>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. >> >>>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 #