Merge branch 'dl/remote-curl-deadlock-fix'
On-the-wire protocol v2 easily falls into a deadlock between the remote-curl helper and the fetch-pack process when the server side prematurely throws an error and disconnects. The communication has been updated to make it more robust. * dl/remote-curl-deadlock-fix: stateless-connect: send response end packet pkt-line: define PACKET_READ_RESPONSE_END remote-curl: error on incomplete packet pkt-line: extern packet_length() transport: extract common fetch_pack() call remote-curl: remove label indentation remote-curl: fix typo
This commit is contained in:
@ -405,7 +405,9 @@ Supported if the helper has the "connect" capability.
|
||||
trying to fall back). After line feed terminating the positive
|
||||
(empty) response, the output of the service starts. Messages
|
||||
(both request and response) must consist of zero or more
|
||||
PKT-LINEs, terminating in a flush packet. The client must not
|
||||
PKT-LINEs, terminating in a flush packet. Response messages will
|
||||
then have a response end packet after the flush packet to
|
||||
indicate the end of a response. The client must not
|
||||
expect the server to store any state in between request-response
|
||||
pairs. After the connection ends, the remote helper exits.
|
||||
+
|
||||
|
@ -33,6 +33,8 @@ In protocol v2 these special packets will have the following semantics:
|
||||
|
||||
* '0000' Flush Packet (flush-pkt) - indicates the end of a message
|
||||
* '0001' Delimiter Packet (delim-pkt) - separates sections of a message
|
||||
* '0002' Message Packet (response-end-pkt) - indicates the end of a response
|
||||
for stateless connections
|
||||
|
||||
Initial Client Request
|
||||
----------------------
|
||||
|
Reference in New Issue
Block a user