diff --git a/CHANGES b/CHANGES index e8883c4719..17a4d5991d 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,9 @@ Changelog +Kamil Dudka (4 Apr 2010) +- Eliminated a race condition in Curl_resolv_timeout(). + Daniel Stenberg (1 Apr 2010) - Matt Wixson found and fixed a bug in the SCP/SFTP area where the code treated a 0 return code from libssh2 to be the same as EAGAIN while in diff --git a/lib/hostip.c b/lib/hostip.c index e34fd5a99a..9255f6a202 100644 --- a/lib/hostip.c +++ b/lib/hostip.c @@ -628,6 +628,9 @@ int Curl_resolv_timeout(struct connectdata *conn, clean_up: if (timeout > 0) { + if(!prev_alarm) + /* deactivate a possibly active alarm before uninstalling the handler */ + alarm(0); #ifdef HAVE_SIGACTION if(keep_copysig) { @@ -664,8 +667,6 @@ clean_up: else alarm((unsigned int)alarm_set); } - else - alarm(0); /* just shut it off */ } #endif /* USE_ALARM_TIMEOUT */