[RISOLTO] Troppo tempo per la risoluzione del nome in getHostByName()

Salve a tutti, sto sviluppando con un Arduino Mega 2560 un sistema di datalogger che trasmette i dati rilevati ad un server MySQL tramite una scheda Ethernet Shield e fino a quando c'è la rete tutto funziona correttamente.
Ho implementato il sistema sfruttando anche la microSD della Ethernet Shield per memorizzare in essa le query di INSERT che non dovessero andare a buon fine, e che invio successivamente quando la rete lo permette, e anche questo funziona perfettamente.
Problema: quando eseguo la funzione getHostByName() per la risoluzione del nome ci impiega esattamente 60 lunghi secondi per restituirmi l'errore nel caso non ci sia rete. Ho provato a mettere come terzo parametro del metodo getHostByName() un tempo inferiore senza alcun risultato.
Anche client.setConnectionTimeout(AttesaHost) non risolve il problema.
Qualcuno ha un'idea da suggerirmi?
Questo è il codice che utilizzo per connettermi al server.

bool ConnettiServer(bool verifica) {
    Serial.print(F("Ricerca nome host... "));
    Ethernet.begin(mac_addr);
    dns_client.begin(Ethernet.dnsServerIP());

    if (dns_client.getHostByName(hostname, server_ip) == 1) { // si ferma per 60 secondi
        Serial.println(server_ip);
    }
    else {
        Serial.println(F("non risolto"));
        OkConnect = false;
        return false;
    }

    Serial.print(F("Connessione... "));
    OkConnect = conn.connect(server_ip, 3306, user, password);
    if (OkConnect) Serial.println(F("Ok"));
    else Serial.println(F("fallita"));
    if (verifica) conn.close();
    return OkConnect;
}

p.s. per provare a disconnettere la rete la stacco fisicamente il cavo Ethernet dalla scheda.

Grazie a tutti.

Dalla libreria (DNS.h) si vede che il default per il parametro timeout è 5000 quindi 5 secondi
int getHostByName(const char* aHostname, IPAddress& aResult, uint16_t timeout=5000);

Se non passandogli il parametro impiega 60 secondi c'e' qualcos'altro di anomalo
Dal codice della DNS.cpp sembra basarsi su millis(). Credo l'unica sia riempire di Serial.print la libreria/funzione e vedere i vari step quanto impiega e dove perde tempo

Grazie Igor,
ti (vi) farò sapere
Claudio

Risolto
Ho seguito il tuo consiglio Igor, ho messo una serie di Serial.Println() ma non ho trovato nulla perché non era, poverino, il getHostByName() che si piantava ma Ethernet.begin().
È stato sufficiente sostituire

Ethernet.begin(mac_addr);

con

Ethernet.begin(mac_addr, 15000);

che dopo 15 secondi uscisse dallo stallo
Un saluto a tutti e…
RESTIAMOACASA