# 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: