diff --git a/CHANGES b/CHANGES
index 8a77b0487b3554e58f6af568b6a6ff19ac4de239..050f161b07057f0f22c08a60e0e4c02c49dbb2a2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,13 @@
 
                                   Changelog
 
+Daniel Stenberg (31 Aug 2009)
+- When using the multi interface with FTP and you asked for NOBODY, you did no
+  QUOTE commands and the request used the same path as the connection had
+  already changed to, it would decide that no commands would be necessary for
+  the "DO" action and that was not handled properly but libcurl would instead
+  hang.
+
 Kamil Dudka (28 Aug 2009)
 - Improved error message for not matching certificate subject name in
   libcurl-NSS. Originally reported at:
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index fbdd93ff4d8913779fef519c3779ce952d012b2f..d35158624234572c8de7e55ade7790e1e5a6cb3e 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -10,6 +10,7 @@ Curl and libcurl 7.19.7
 This release includes the following changes:
 
  o -T. is now for non-blocking uploading from stdin
+ o SYST handling on FTP for OS/400 FTP server cases
 
 This release includes the following bugfixes:
 
@@ -21,6 +22,9 @@ This release includes the following bugfixes:
  o missing strdup() return code check
  o CURLOPT_PROXY_TRANSFER_MODE could pass along wrong syntax
  o configure --with-gnutls=PATH fixed
+ o ftp response reader bug on failed control connections
+ o improved NSS error message on failed host name verifications
+ o ftp NOBODY on re-used connection hang
 
 This release includes the following known bugs:
 
diff --git a/lib/ftp.c b/lib/ftp.c
index 26cf197953f421f305067af89f2577155ec2e4d7..99115dda63ef2fcf32603e8e928632ed578d311b 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -3026,10 +3026,14 @@ static CURLcode ftp_multi_statemach(struct connectdata *conn,
   }
   else if(rc != 0) {
     result = ftp_statemach_act(conn);
-    *done = (bool)(ftpc->state == FTP_STOP);
   }
   /* if rc == 0, then select() timed out */
 
+  /* Check for the state outside of the Curl_socket_ready() return code checks
+     since at times we are in fact already in this state when this function
+     gets called. */
+  *done = (bool)(ftpc->state == FTP_STOP);
+
   return result;
 }