Back to index

openldap  2.4.31
Functions
trans.c File Reference
#include "portable.h"
#include <stdio.h>
#include <ac/string.h>
#include "back-bdb.h"
#include "lber_pvt.h"
#include "lutil.h"

Go to the source code of this file.

Functions

void bdb_trans_backoff (int num_retries)

Function Documentation

void bdb_trans_backoff ( int  num_retries)

Definition at line 32 of file trans.c.

{
       int i;
       int delay = 0;
       int pow_retries = 1;
       unsigned long key = 0;
       unsigned long max_key = -1;
       struct timeval timeout;

       lutil_entropy( (unsigned char *) &key, sizeof( unsigned long ));

       for ( i = 0; i < num_retries; i++ ) {
              if ( i >= 5 ) break;
              pow_retries *= 4;
       }

       delay = 16384 * (key * (double) pow_retries / (double) max_key);
       delay = delay ? delay : 1;

       Debug( LDAP_DEBUG_TRACE,  "delay = %d, num_retries = %d\n", delay, num_retries, 0 );

       timeout.tv_sec = delay / 1000000;
       timeout.tv_usec = delay % 1000000;
       select( 0, NULL, NULL, NULL, &timeout );
}

Here is the call graph for this function: