From: Dr. Stephen Henson Date: Wed, 17 Feb 2010 14:32:01 +0000 (+0000) Subject: PR: 2100 X-Git-Tag: OpenSSL_0_9_8m~12 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=657b02d0cfa4a84765dc20b0e5eab20cb93988bb;p=oweals%2Fopenssl.git PR: 2100 Submitted by: James Baker et al. Workaround for slow Heap32Next on some versions of Windows. --- diff --git a/CHANGES b/CHANGES index bafe422807..dca7ce58d7 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,11 @@ Changes between 0.9.8l and 0.9.8m [xx XXX xxxx] + *) On some versions of WIN32 Heap32Next is very slow. This can cause + excessive delays in the RAND_poll(): over a minute. As a workaround + include a time check in the inner Heap32Next loop too. + [Steve Henson] + *) The code that handled flushing of data in SSL/TLS originally used the BIO_CTRL_INFO ctrl to see if any data was pending first. This caused the problem outlined in PR#1949. The fix suggested there however can diff --git a/crypto/rand/rand_win.c b/crypto/rand/rand_win.c index 9bad067f43..5198351cf3 100644 --- a/crypto/rand/rand_win.c +++ b/crypto/rand/rand_win.c @@ -527,6 +527,7 @@ int RAND_poll(void) RAND_add(&hentry, hentry.dwSize, 5); while (heap_next(&hentry) + && (!good || (GetTickCount()-starttime) 0); } }