summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2014-05-20 02:14:50 +0200
committermanuel <manuel@mausz.at>2014-05-20 02:14:50 +0200
commit3284e61d7a7a49620e64c7d634776f8bcf4f8119 (patch)
tree5afa69959a1910936bbf5b0a2f050f5104894c84
parentd386103631ccee7c6b5d558311816c6aecc372e4 (diff)
downloadqmail-3284e61d7a7a49620e64c7d634776f8bcf4f8119.tar.gz
qmail-3284e61d7a7a49620e64c7d634776f8bcf4f8119.tar.bz2
qmail-3284e61d7a7a49620e64c7d634776f8bcf4f8119.zip
Treat ECONNREFUSED the same as ETIMEDOUT
After an SMTP connection attempt times out, qmail-remote records the relevant IP address. If the same address fails again (after at least two minutes with no intervening successful connections), qmail-remote assumes that further attempts will fail for at least another hour.
-rw-r--r--error.c7
-rw-r--r--error.h1
-rw-r--r--qmail-remote.c2
3 files changed, 9 insertions, 1 deletions
diff --git a/error.c b/error.c
index d51304f..e705cf4 100644
--- a/error.c
+++ b/error.c
@@ -93,3 +93,10 @@ EACCES;
93#else 93#else
94-13; 94-13;
95#endif 95#endif
96
97int error_refused =
98#ifdef ECONNREFUSED
99ECONNREFUSED;
100#else
101-14;
102#endif
diff --git a/error.h b/error.h
index 5d98c6b..7c64e24 100644
--- a/error.h
+++ b/error.h
@@ -16,6 +16,7 @@ extern int error_again;
16extern int error_pipe; 16extern int error_pipe;
17extern int error_perm; 17extern int error_perm;
18extern int error_acces; 18extern int error_acces;
19extern int error_refused;
19 20
20extern char *error_str(); 21extern char *error_str();
21extern int error_temp(); 22extern int error_temp();
diff --git a/qmail-remote.c b/qmail-remote.c
index dc00d08..b865b4d 100644
--- a/qmail-remote.c
+++ b/qmail-remote.c
@@ -951,7 +951,7 @@ char **argv;
951#endif 951#endif
952 smtp(); /* only returns when the next MX is to be tried */ 952 smtp(); /* only returns when the next MX is to be tried */
953 } 953 }
954 tcpto_err(&ip.ix[i].ip,errno == error_timeout); 954 tcpto_err(&ip.ix[i].ip,errno == error_timeout || errno == error_refused);
955 close(smtpfd); 955 close(smtpfd);
956 } 956 }
957 957