mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-31 12:09:35 -05:00
honor network timeout even when doing full async
This commit is contained in:
parent
aa3c9bad3e
commit
9b5ea6a205
3 changed files with 15 additions and 4 deletions
|
|
@ -243,6 +243,7 @@ typedef struct ldap_conn {
|
|||
void *lconn_sasl_sockctx; /* for security layer */
|
||||
#endif
|
||||
int lconn_refcnt;
|
||||
time_t lconn_created; /* time */
|
||||
time_t lconn_lastused; /* time */
|
||||
int lconn_rebind_inprogress; /* set if rebind in progress */
|
||||
char ***lconn_rebind_queue; /* used if rebind in progress */
|
||||
|
|
|
|||
|
|
@ -345,6 +345,8 @@ ldap_int_open_connection(
|
|||
break;
|
||||
}
|
||||
|
||||
conn->lconn_created = time( NULL );
|
||||
|
||||
#ifdef LDAP_DEBUG
|
||||
ber_sockbuf_add_io( conn->lconn_sb, &ber_sockbuf_io_debug,
|
||||
INT_MAX, (void *)"ldap_" );
|
||||
|
|
|
|||
|
|
@ -223,10 +223,18 @@ ldap_send_server_request(
|
|||
lc->lconn_status = LDAP_CONNST_CONNECTED;
|
||||
break;
|
||||
|
||||
case -2:
|
||||
/* caller will have to call again */
|
||||
ld->ld_errno = LDAP_X_CONNECTING;
|
||||
/* fallthru */
|
||||
case -2: {
|
||||
/* async only occurs if a network timeout is set */
|
||||
struct timeval *tvp = ld->ld_options.ldo_tm_net;
|
||||
assert( tvp != NULL );
|
||||
|
||||
/* honor network timeout */
|
||||
if ( time( NULL ) - lc->lconn_created <= tvp->tv_sec )
|
||||
{
|
||||
/* caller will have to call again */
|
||||
ld->ld_errno = LDAP_X_CONNECTING;
|
||||
}
|
||||
} /* fallthru */
|
||||
|
||||
default:
|
||||
/* error */
|
||||
|
|
|
|||
Loading…
Reference in a new issue