From 78e0ec5f0389f09fe81546235724933e6a37ba6e Mon Sep 17 00:00:00 2001
From: losgrandes <pwajda@gmail.net.pl>
Date: Wed, 19 Oct 2016 11:53:23 +0200
Subject: [PATCH] Fixes #46584: wget --spider always returns zero exit status

* src/ftp.c: Return error as exit value if even one file doesn't exist
---
 src/ftp.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/ftp.c b/src/ftp.c
index 39f20fa0..947d8f20 100644
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -1191,6 +1191,7 @@ Error in server response, closing control connection.\n"));
       if (opt.spider)
         {
           bool exists = false;
+          bool all_exist = true;
           struct fileinfo *f;
           uerr_t _res = ftp_get_listing (u, original_url, con, &f);
           /* Set the DO_RETR command flag again, because it gets unset when
@@ -1206,6 +1207,8 @@ Error in server response, closing control connection.\n"));
                     {
                       exists = true;
                       break;
+                    } else {
+                      all_exist = false;
                     }
                   f = f->next;
                 }
@@ -1226,7 +1229,11 @@ Error in server response, closing control connection.\n"));
           con->csock = -1;
           fd_close (dtsock);
           fd_close (local_sock);
-          return RETRFINISHED;
+          if (all_exist) {
+              return RETRFINISHED;
+          } else {
+              return FTPNSFOD;
+          }
         }
 
       if (opt.verbose)