From ad203c1e8044db0b1a1f98169b7c2c2ed6fb1111 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Thu, 6 Mar 2025 09:17:24 +0200 Subject: [PATCH] lib-dns: Call lookup callback on abort with EAI_CANCELED --- src/lib-dns-client/dns-lookup.c | 7 ++++++- src/lib-dns-client/dns-lookup.h | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) 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; -- 2.47.3