AmendHub

Download:

jcs

/

detritus

/

amendments

/

28

dnr: Try to bail on resolution after 4 seconds

There's not much point in waiting 30 seconds for this to fail. I'm
not 100% sure that dnr won't do something stupid when it finally
fails after we've already moved on, but let's find out.

jcs made amendment 28 about 1 year ago
--- dnr.c Mon Sep 30 15:36:50 2024 +++ dnr.c Thu Nov 7 09:57:54 2024 @@ -237,9 +237,10 @@ OSErr DNSResolveName(char *name, unsigned long *ipAddress, void (*yielder)(void)) { OSErr osErr; - struct hostInfo aHostInfo; + static struct hostInfo aHostInfo; volatile int done = 0; - + unsigned long started; + osErr = OpenResolver(nil); if (osErr) return osErr; @@ -249,11 +250,18 @@ DNSResolveName(char *name, unsigned long *ipAddress, v if (osErr == cacheFault) { /* StrToAddrMarkDone will set done when DNS resolution finishes */ - while (!done) { + started = Time; + done = 0; + while (!done && (Time - started < 4)) { if (yielder) yielder(); else SystemTask(); + } + + if (!done) { + *ipAddress = 0; + return noAnsErr; } }