diff options
author | Denton Liu <liu.denton@gmail.com> | 2020-05-19 06:53:58 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-05-24 16:26:00 -0700 |
commit | 74b082ad34fe2c727c676dac5c33d5e1e5f5ca56 (patch) | |
tree | 22b53bf2d7dae28186452dfba44f5866d81f3b4e /t/lib-httpd/incomplete-length-upload-pack-v2-http.sh | |
parent | pkt-line: extern packet_length() (diff) | |
download | tgif-74b082ad34fe2c727c676dac5c33d5e1e5f5ca56.tar.xz |
remote-curl: error on incomplete packet
Currently, remote-curl acts as a proxy and blindly forwards packets
between an HTTP server and fetch-pack. In the case of a stateless RPC
connection where the connection is terminated with a partially written
packet, remote-curl will blindly send the partially written packet
before waiting on more input from fetch-pack. Meanwhile, fetch-pack will
read the partial packet and continue reading, expecting more input. This
results in a deadlock between the two processes.
For a stateless connection, inspect packets before sending them and
error out if a packet line packet is incomplete.
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/lib-httpd/incomplete-length-upload-pack-v2-http.sh')
-rw-r--r-- | t/lib-httpd/incomplete-length-upload-pack-v2-http.sh | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/t/lib-httpd/incomplete-length-upload-pack-v2-http.sh b/t/lib-httpd/incomplete-length-upload-pack-v2-http.sh new file mode 100644 index 0000000000..dce552e348 --- /dev/null +++ b/t/lib-httpd/incomplete-length-upload-pack-v2-http.sh @@ -0,0 +1,3 @@ +printf "Content-Type: text/%s\n" "application/x-git-upload-pack-result" +echo +printf "%s" "00" |