diff options
Diffstat (limited to 'src/Common/Random.c')
-rw-r--r-- | src/Common/Random.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/Common/Random.c b/src/Common/Random.c index a2da77f8..09c55bf3 100644 --- a/src/Common/Random.c +++ b/src/Common/Random.c @@ -94,14 +94,21 @@ HCRYPTPROV hCryptProv; /* Init the random number generator, setup the hooks, and start the thread */ -int Randinit () +int RandinitWithCheck ( int* pAlreadyInitialized) { DWORD dwLastError = ERROR_SUCCESS; if (GetMaxPkcs5OutSize() > RNG_POOL_SIZE) TC_THROW_FATAL_EXCEPTION; if(bRandDidInit) + { + if (pAlreadyInitialized) + *pAlreadyInitialized = 1; return 0; + } + + if (pAlreadyInitialized) + *pAlreadyInitialized = 0; InitializeCriticalSection (&critRandProt); @@ -153,6 +160,11 @@ error: return 1; } +int Randinit () +{ + return RandinitWithCheck (NULL); +} + /* Close everything down, including the thread which is closed down by setting a flag which eventually causes the thread function to exit */ void RandStop (BOOL freePool) |