From: Aki Tuomi Date: Thu, 6 Mar 2025 07:17:07 +0000 (+0200) Subject: global: Ignore DNS callback result if it was aborted X-Git-Tag: 2.4.1~80 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=18519cd6752c78d1afdce15b35aa6b71b11927c4;p=thirdparty%2Fdovecot%2Fcore.git global: Ignore DNS callback result if it was aborted --- diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index b81e65b4b8..f7bf1fbfe2 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -2357,6 +2357,9 @@ static void auth_request_proxy_dns_callback(const struct dns_lookup_result *result, struct auth_request_proxy_dns_lookup_ctx *ctx) { + /* We ended up here because dns_lookup_abort() was used */ + if (result->ret == EAI_CANCELED) + return; struct auth_request *request = ctx->request; const char *host; unsigned int i; diff --git a/src/lib-dns-client/dns-lookup.h b/src/lib-dns-client/dns-lookup.h index 7df1786758..6e58fcefa7 100644 --- a/src/lib-dns-client/dns-lookup.h +++ b/src/lib-dns-client/dns-lookup.h @@ -2,6 +2,7 @@ #define DNS_LOOKUP_H #define DNS_CLIENT_SOCKET_NAME "dns-client" +#define EAI_CANCELED -101 struct dns_lookup; diff --git a/src/lib-http/http-client-host.c b/src/lib-http/http-client-host.c index 706c102e48..9135fd7259 100644 --- a/src/lib-http/http-client-host.c +++ b/src/lib-http/http-client-host.c @@ -115,6 +115,9 @@ static void http_client_host_shared_dns_callback(const struct dns_lookup_result *result, struct http_client_host_shared *hshared) { + /* We ended up here because dns_lookup_abort() was used */ + if (result->ret == EAI_CANCELED) + return; struct http_client_host *host; hshared->dns_lookup = NULL; diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 491c6b25d1..e770944b5a 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -1889,6 +1889,9 @@ static void imapc_connection_dns_callback(const struct dns_lookup_result *result, struct imapc_connection *conn) { + /* We ended up here because dns_lookup_abort() was used */ + if (result->ret == EAI_CANCELED) + return; conn->dns_lookup = NULL; if (result->ret != 0) { diff --git a/src/lib-smtp/smtp-client-connection.c b/src/lib-smtp/smtp-client-connection.c index 81a945bdd9..f915896d51 100644 --- a/src/lib-smtp/smtp-client-connection.c +++ b/src/lib-smtp/smtp-client-connection.c @@ -1845,6 +1845,9 @@ static void smtp_client_connection_dns_callback(const struct dns_lookup_result *result, struct smtp_client_connection *conn) { + /* We ended up here because dns_lookup_abort() was used */ + if (result->ret == EAI_CANCELED) + return; conn->dns_lookup = NULL; if (result->ret != 0) { diff --git a/src/lib-storage/index/pop3c/pop3c-client.c b/src/lib-storage/index/pop3c/pop3c-client.c index e1326664e0..0e1a2f43a0 100644 --- a/src/lib-storage/index/pop3c/pop3c-client.c +++ b/src/lib-storage/index/pop3c/pop3c-client.c @@ -640,6 +640,9 @@ static void pop3c_dns_callback(const struct dns_lookup_result *result, struct pop3c_client *client) { + /* We ended up here because dns_lookup_abort() was used */ + if (result->ret == EAI_CANCELED) + return; client->dns_lookup = NULL; if (result->ret != 0) {