diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2010-02-17 14:32:25 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2010-02-17 14:32:25 +0000 |
commit | 9051fc538f93393d9e5540c9f981858178f5a1c1 (patch) | |
tree | 0c2870e4c72bbc687a471c15cf93489df7035aba | |
parent | 03fd7f27dbad5cb8d1fa5852de89b8d8c2565430 (diff) |
PR: 2100
Submitted by: James Baker <jbaker@tableausoftware.com> et al.
Workaround for slow Heap32Next on some versions of Windows.
-rw-r--r-- | CHANGES | 5 | ||||
-rw-r--r-- | crypto/rand/rand_win.c | 1 |
2 files changed, 6 insertions, 0 deletions
@@ -845,6 +845,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)<MAXDELAY) && --entrycnt > 0); } } |