From: Pierangelo Masarati Date: Mon, 4 Sep 2006 08:40:40 +0000 (+0000) Subject: better handling of randomness X-Git-Tag: OPENLDAP_REL_ENG_2_3_MP~210 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=e1b83c881c430e13365de649b978b102287bccca;p=openldap better handling of randomness --- 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",