I am trying to write an implementation of git clone over ssh and am a little 
confused how to determine a server response has ended. Specifically, after a 
client sends its requested 'want', the server sends the pack content over. 
However, how does the client know to stop reading data? If I run a simple 
read() of the file descriptor:

A. If I use reading blocking, the client will wait until new data is available, 
potentially forever.
B. If I use non-blocking, the client might terminate reading for new data, when 
in reality new data is in transit.

I do not see a mechanism to specify the size or to indicate the end of the pack 
content. Am I missing something?

Farhan Khan
PGP Fingerprint: 1312 89CE 663E 1EB2 179C  1C83 C41D 2281 F8DA C0DE

Reply via email to