diff --git a/lib/ftp.c b/lib/ftp.c
index 0622e7edb27c6821fc3beb2c85b06095adfc4f5b..ffb5f0e892455c82035284c8b40ea92900e1d905 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -2485,10 +2485,11 @@ CURLcode Curl_ftp_disconnect(struct connectdata *conn)
      Curl_ftp_quit() will check the state of ftp->ctl_valid. If it's ok it
      will try to send the QUIT command, otherwise it will just return.
   */
-  (void)Curl_ftp_quit(conn); /* ignore errors on the QUIT */
 
   /* The FTP session may or may not have been allocated/setup at this point! */
   if(ftp) {
+    (void)Curl_ftp_quit(conn); /* ignore errors on the QUIT */
+
     if(ftp->entrypath)
       free(ftp->entrypath);
     if(ftp->cache) {