From e1b83c881c430e13365de649b978b102287bccca Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Mon, 4 Sep 2006 08:40:40 +0000 Subject: [PATCH] better handling of randomness --- servers/slapd/overlays/retcode.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/servers/slapd/overlays/retcode.c b/servers/slapd/overlays/retcode.c index 5a1bb5be91..b966a4b1dd 100644 --- a/servers/slapd/overlays/retcode.c +++ b/servers/slapd/overlays/retcode.c @@ -95,7 +95,11 @@ retcode_sleep( int s ) { /* sleep as required */ if ( s < 0 ) { - return sleep( (unsigned int)(rand() % ( -s )) ); +#if 0 /* use high-order bits for better randomness (Numerical Recipes in "C") */ + unsigned r = rand() % (-s); +#endif + unsigned r = ((double)(-s))*rand()/(RAND_MAX + 1.0); + return sleep( r ); } if ( s > 0 ) { @@ -626,6 +630,8 @@ retcode_db_init( BackendDB *be ) slap_overinst *on = (slap_overinst *)be->bd_info; retcode_t *rd; + srand( getpid() ); + rd = (retcode_t *)ch_malloc( sizeof( retcode_t ) ); memset( rd, 0, sizeof( retcode_t ) ); @@ -865,7 +871,6 @@ retcode_db_config( } else if ( strncasecmp( argv[ i ], "sleeptime=", STRLENOF( "sleeptime=" ) ) == 0 ) { - char *next; if ( rdi.rdi_sleeptime != 0 ) { fprintf( stderr, "%s: line %d: retcode: " "\"sleeptime\" already provided.\n", -- 2.39.5