2#include "lwip/ip_addr.h"
13static void dns_callback(
const char* name,
const ip_addr_t* ipaddr,
void* callback_arg) {
31 TRACE(
"[DNS] Starting DNS lookup for %s\n", hostname);
37 TRACE(
"[DNS] Hostname resolved immediately: %s -> %s\n", hostname, ipaddr_ntoa(&
resolved_ip));
40 }
else if (err == ERR_INPROGRESS) {
41 TRACE(
"[DNS] Lookup in progress for %s, waiting...\n", hostname);
43 TRACE(
"[DNS] dns_gethostbyname failed with error %d\n", err);
48 absolute_time_t deadline = make_timeout_time_ms(timeout_ms);
49 while (!
dns_done && absolute_time_diff_us(get_absolute_time(), deadline) > 0) {
54 TRACE(
"[DNS] DNS resolved after wait: %s -> %s\n", hostname, ipaddr_ntoa(&
resolved_ip));
58 printf(
"[DNS] DNS resolution timed out or returned null\n");
Macro-based debug trace system with optional SD file logging.
#define TRACE_INIT(MODULE_NAME)
Declare trace usage in a source file for a given module.
#define TRACE(...)
Default trace (INFO level).
Delegates to user or system configuration.
static volatile bool dns_done
static ip_addr_t resolved_ip
static void dns_callback(const char *name, const ip_addr_t *ipaddr, void *callback_arg)
bool resolveHostnameBlocking(const char *hostname, ip_addr_t *result, uint32_t timeout_ms=5000)
Blocking DNS resolution using lwIP.