# HG changeset patch # User Jeff Forcier <jeff@bitprophet.org> # Date 1350276410 25200 # Sun Oct 14 21:46:50 2012 -0700 # Node ID e53caa0c2162c57570fafd07aab5209482e03879 # Parent 12a0c3693659b60c7e95551d54fa4cef6c1ed77d Move SFTPClient.get() termination condition to loop end. Ensures callback always executes even for zero-len files. Fixes #90 diff --git a/NEWS b/NEWS --- a/NEWS +++ b/NEWS @@ -15,6 +15,10 @@ v1.8.1 (DD MM YYYY) ------------------- +* #90: Ensure that callbacks handed to `SFTPClient.get()` always fire at least + once, even for zero-length files downloaded. Thanks to Github user `@enB` for + the catch. + v1.8.0 (3rd Oct 2012) --------------------- diff --git a/paramiko/sftp_client.py b/paramiko/sftp_client.py --- a/paramiko/sftp_client.py +++ b/paramiko/sftp_client.py @@ -612,12 +612,12 @@ size = 0 while True: data = fr.read(32768) - if len(data) == 0: - break fl.write(data) size += len(data) if callback is not None: callback(size, file_size) + if len(data) == 0: + break finally: fl.close() finally: