From: Aki Tuomi Date: Thu, 6 Mar 2025 07:17:24 +0000 (+0200) Subject: lib-dns: Call lookup callback on abort with EAI_CANCELED X-Git-Tag: 2.4.1~79 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ad203c1e8044db0b1a1f98169b7c2c2ed6fb1111;p=thirdparty%2Fdovecot%2Fcore.git lib-dns: Call lookup callback on abort with EAI_CANCELED --- diff --git a/src/lib-dns-client/dns-lookup.c b/src/lib-dns-client/dns-lookup.c index 8216626ef1..cab27cc173 100644 --- a/src/lib-dns-client/dns-lookup.c +++ b/src/lib-dns-client/dns-lookup.c @@ -338,8 +338,13 @@ void dns_lookup_abort(struct dns_lookup **_lookup) struct dns_client *client = lookup->client; if (client->deinit_client_at_free) dns_client_deinit(&client); - else + else if (lookup->callback != NULL) { + dns_lookup_save_msecs(lookup); + lookup->result.ret = EAI_CANCELED, + lookup->result.error = "Lookup canceled"; + lookup->callback(&lookup->result, lookup->context); lookup->callback = NULL; + } } static void dns_lookup_switch_ioloop_real(struct dns_lookup *lookup) diff --git a/src/lib-dns-client/dns-lookup.h b/src/lib-dns-client/dns-lookup.h index 6e58fcefa7..5115cb6f7c 100644 --- a/src/lib-dns-client/dns-lookup.h +++ b/src/lib-dns-client/dns-lookup.h @@ -1,8 +1,13 @@ #ifndef DNS_LOOKUP_H #define DNS_LOOKUP_H +#include + #define DNS_CLIENT_SOCKET_NAME "dns-client" -#define EAI_CANCELED -101 + +#ifndef EAI_CANCELED +# define EAI_CANCELED INT_MIN +#endif struct dns_lookup;