# HG changeset patch # User carl # Date 1149608707 25200 # Node ID c5cd1261394de236d66e50b1234741052b4ee7e5 # Parent 9ab51896447f5ad2055eee23213d55f4b813312e ignore smtp connection attempts for 10 minutes when getting connection errors on verify hosts diff -r 9ab51896447f -r c5cd1261394d src/context.cpp --- a/src/context.cpp Thu Apr 27 10:05:43 2006 -0700 +++ b/src/context.cpp Tue Jun 06 08:45:07 2006 -0700 @@ -67,7 +67,7 @@ const int maxlen = 1000; // used for snprintf buffers const int maxage = 120; // smtp verify sockets older than this are ancient extern int NULL_SOCKET; -extern time_t ERROR_SOCKET_TIME; // number of seconds between attempts to open a socket an smtp host for address verification +const time_t ERROR_SMTP_SOCKET_TIME = 600; // number of seconds between attempts to open a socket to an smtp server int SMTP::writer() { @@ -293,9 +293,8 @@ } pthread_mutex_unlock(&mutex); if (conn) return conn; - time_t now = time(NULL); int sock = NULL_SOCKET; - if ((now - last_err) > ERROR_SOCKET_TIME) { + if ((time(NULL) - last_err) > ERROR_SMTP_SOCKET_TIME) { // nothing recent, maybe this time it will work hostent *h = gethostbyname(host); if (h) { @@ -310,12 +309,12 @@ shutdown(sock, SHUT_RDWR); close(sock); sock = NULL_SOCKET; - last_err = now; + last_err = time(NULL); } } - else last_err = now; + else last_err = time(NULL); } - else last_err = now; + else last_err = time(NULL); } if (sock != NULL_SOCKET) { conn = new SMTP(sock); diff -r 9ab51896447f -r c5cd1261394d src/dnsbl.cpp --- a/src/dnsbl.cpp Thu Apr 27 10:05:43 2006 -0700 +++ b/src/dnsbl.cpp Tue Jun 06 08:45:07 2006 -0700 @@ -88,10 +88,10 @@ pthread_mutex_t fd_pool_mutex; std::set fd_pool; -int NULL_SOCKET = -1; +const int NULL_SOCKET = -1; +const time_t ERROR_SOCKET_TIME = 60; // number of seconds between attempts to open a socket to the dns resolver process char *resolver_port = NULL; // unix domain socket to talk to the dns resolver process int resolver_socket = NULL_SOCKET; // socket used to listen for resolver requests -time_t ERROR_SOCKET_TIME = 60; // number of seconds between attempts to open a socket to the dns resolver process time_t last_error_time; int resolver_sock_count = 0; // protected with fd_pool_mutex int resolver_pool_size = 0; // protected with fd_pool_mutex @@ -188,8 +188,7 @@ int my_connect(); int my_connect() { // if we have had recent errors, don't even try to open the socket - time_t now = time(NULL); - if ((now - last_error_time) < ERROR_SOCKET_TIME) return NULL_SOCKET; + if ((time(NULL) - last_error_time) < ERROR_SOCKET_TIME) return NULL_SOCKET; // nothing recent, maybe this time it will work int sock = NULL_SOCKET; @@ -203,10 +202,10 @@ if (!rc) { my_disconnect(sock, false); sock = NULL_SOCKET; - last_error_time = now; + last_error_time = time(NULL); } } - else last_error_time = now; + else last_error_time = time(NULL); if (sock != NULL_SOCKET) { pthread_mutex_lock(&fd_pool_mutex); resolver_sock_count++;