Fix incomplete read from the remote side.

This commit is contained in:
Manuel Amador (Rudd-O) 2022-08-21 01:31:24 +00:00
parent 3ad3761f2f
commit 6918df4f62

View File

@ -138,16 +138,20 @@ def put(out_path):
chunksize = int(sys.stdin.readline(16)) chunksize = int(sys.stdin.readline(16))
if chunksize == 0: if chunksize == 0:
break break
chunk = sys.stdin.read(chunksize) while True:
assert len(chunk) == chunksize, ("Mismatch in chunk length", len(chunk), chunksize) chunk = sys.stdin.read(chunksize)
try: if chunk == b"":
f.write(chunk) assert chunksize == 0, "Never could finish reading the last %s bytes" % chunksize
sys.stdout.write(b'Y\n') break
except (IOError, OSError) as e: try:
sys.stdout.write(b'N\n') f.write(chunk)
encode_exception(e, sys.stdout) except (IOError, OSError) as e:
f.close() sys.stdout.write(b'N\n')
return encode_exception(e, sys.stdout)
f.close()
return
chunksize = chunksize - len(chunk)
sys.stdout.write(b'Y\n')
try: try:
f.flush() f.flush()
except (IOError, OSError) as e: except (IOError, OSError) as e: