fix the alarm()-based DNS timeout
authorThomas Lopatic <lopatic@yahoo-inc.com>
Mon, 22 Mar 2010 20:57:48 +0000 (21:57 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 22 Mar 2010 20:57:48 +0000 (21:57 +0100)
commit6657f12fff9e7b14e56da3790f0a271989c8b6a2
treea212aaf8da554ad0f991d5d0458af315d938dd6d
parent3cd5b1cfb078cd7e96d7cd490740d955b7905caf
fix the alarm()-based DNS timeout

Looking at the code of Curl_resolv_timeout() in hostip.c, I think
that in case of a timeout, the signal handler for SIGALRM never
gets removed. I think that in my case it gets executed at some
point later on when execution has long left Curl_resolv_timeout()
or even the cURL library.

The code that is jumped to with siglongjmp() simply sets the
error message to "name lookup timed out" and then returns with
CURLRESOLV_ERROR. I guess that instead of simply returning
without cleaning up, the code should have a goto that jumps to
the spot right after the call to Curl_resolv().
lib/hostip.c