From: Howard Chu Date: Thu, 7 Jul 2005 16:09:41 +0000 (+0000) Subject: Linux updates tv on select() so always use a second copy X-Git-Tag: OPENLDAP_AC_BP~437 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=2392f9c3f69ed39e148eec0a2e0298c53ec11e1a;p=openldap Linux updates tv on select() so always use a second copy --- diff --git a/libraries/libldap/result.c b/libraries/libldap/result.c index b8ed64d48f..5eaa9ab31b 100644 --- a/libraries/libldap/result.c +++ b/libraries/libldap/result.c @@ -251,7 +251,7 @@ wait4msg( LDAPMessage **result ) { int rc; - struct timeval tv, *tvp; + struct timeval tv, tv0, *tvp; time_t start_time = 0; time_t tmp_time; LDAPConn *lc, *nextlc; @@ -272,6 +272,7 @@ wait4msg( if ( timeout == NULL ) { tvp = NULL; } else { + tv0 = *timeout; tv = *timeout; tvp = &tv; start_time = time( NULL ); @@ -358,11 +359,12 @@ wait4msg( if ( rc == -2 && tvp != NULL ) { tmp_time = time( NULL ); - if (( tv.tv_sec -= ( tmp_time - start_time )) <= 0 ) { + if (( tv0.tv_sec -= ( tmp_time - start_time )) <= 0 ) { rc = 0; /* timed out */ ld->ld_errno = LDAP_TIMEOUT; break; } + tv.tv_sec = tv0.tv_sec; Debug( LDAP_DEBUG_TRACE, "wait4msg: %ld secs to go\n", (long) tv.tv_sec, 0, 0 );