Blob Blame History Raw
From 4cf66fef48e992ae8f8196db50a742c6276e415b Mon Sep 17 00:00:00 2001
From: Michael Sweet <michael.r.sweet@gmail.com>
Date: Thu, 5 Oct 2017 15:04:19 -0400
Subject: [PATCH] The network backends now retry on more error conditions
 (Issue #5123)

---
 backend/ipp.c    | 5 ++---
 backend/lpd.c    | 5 ++---
 backend/socket.c | 5 ++---
 4 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/backend/ipp.c b/backend/ipp.c
index 685d4d9df..588ad995e 100644
--- a/backend/ipp.c
+++ b/backend/ipp.c
@@ -743,8 +743,7 @@ main(int  argc,				/* I - Number of command-line args */
 
       fprintf(stderr, "DEBUG: Connection error: %s\n", strerror(errno));
 
-      if (errno == ECONNREFUSED || errno == EHOSTDOWN ||
-          errno == EHOSTUNREACH)
+      if (errno == ECONNREFUSED || errno == EHOSTDOWN || errno == EHOSTUNREACH || errno == ETIMEDOUT || errno == ENOTCONN)
       {
         if (contimeout && (time(NULL) - start_time) > contimeout)
 	{
@@ -763,13 +762,13 @@ main(int  argc,				/* I - Number of command-line args */
 	      break;
 
 	  case EHOSTUNREACH :
+	  default :
 	      _cupsLangPrintFilter(stderr, "WARNING",
 				   _("The printer is unreachable at this "
 				     "time."));
 	      break;
 
 	  case ECONNREFUSED :
-	  default :
 	      _cupsLangPrintFilter(stderr, "WARNING",
 	                           _("The printer is in use."));
 	      break;
diff --git a/backend/lpd.c b/backend/lpd.c
index 835f9eaee..4325b7c78 100644
--- a/backend/lpd.c
+++ b/backend/lpd.c
@@ -867,8 +867,7 @@ lpd_queue(const char      *hostname,	/* I - Host to connect to */
 
       fprintf(stderr, "DEBUG: Connection error: %s\n", strerror(error));
 
-      if (error == ECONNREFUSED || error == EHOSTDOWN ||
-          error == EHOSTUNREACH)
+      if (errno == ECONNREFUSED || errno == EHOSTDOWN || errno == EHOSTUNREACH || errno == ETIMEDOUT || errno == ENOTCONN)
       {
         if (contimeout && (time(NULL) - start_time) > contimeout)
 	{
@@ -886,13 +885,13 @@ lpd_queue(const char      *hostname,	/* I - Host to connect to */
 	      break;
 
 	  case EHOSTUNREACH :
+	  default :
 	      _cupsLangPrintFilter(stderr, "WARNING",
 			           _("The printer is unreachable at "
 				     "this time."));
 	      break;
 
 	  case ECONNREFUSED :
-	  default :
 	      _cupsLangPrintFilter(stderr, "WARNING",
 	                           _("The printer is in use."));
 	      break;
diff --git a/backend/socket.c b/backend/socket.c
index 7fc0880f1..c16a1a097 100644
--- a/backend/socket.c
+++ b/backend/socket.c
@@ -330,8 +330,7 @@ main(int  argc,				/* I - Number of command-line arguments (6 or 7) */
 
       fprintf(stderr, "DEBUG: Connection error: %s\n", strerror(error));
 
-      if (error == ECONNREFUSED || error == EHOSTDOWN ||
-          error == EHOSTUNREACH)
+      if (errno == ECONNREFUSED || errno == EHOSTDOWN || errno == EHOSTUNREACH || errno == ETIMEDOUT || errno == ENOTCONN)
       {
         if (contimeout && (time(NULL) - start_time) > contimeout)
 	{
@@ -349,13 +348,13 @@ main(int  argc,				/* I - Number of command-line arguments (6 or 7) */
 	      break;
 
 	  case EHOSTUNREACH :
+	  default :
 	      _cupsLangPrintFilter(stderr, "WARNING",
 				   _("The printer is unreachable at this "
 				     "time."));
 	      break;
 
 	  case ECONNREFUSED :
-	  default :
 	      _cupsLangPrintFilter(stderr, "WARNING",
 	                           _("The printer is in use."));
 	      break;
-- 
2.13.6