From: Pierangelo Masarati Date: Mon, 21 Jun 2004 21:31:55 +0000 (+0000) Subject: clear pagedresults_state if reusing an inactive connection; prepare for more consiste... X-Git-Tag: OPENDLAP_REL_ENG_2_2_MP~199 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=528b6c7e25b85a8f302be2c5c62bf074f9128d8f;p=openldap clear pagedresults_state if reusing an inactive connection; prepare for more consistent behavior of pagedResults control --- diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index 228c2ee009..934e067f8d 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -1573,6 +1573,10 @@ connection_input( op->o_preread_attrs = NULL; op->o_postread_attrs = NULL; op->o_vrFilter = NULL; + /* clear state if the connection is being reused from inactive */ + if ( conn->c_conn_state == SLAP_C_INACTIVE ) { + memset( &conn->c_pagedresults_state, 0, sizeof( conn->c_pagedresults_state ) ); + } op->o_pagedresults_state = conn->c_pagedresults_state; op->o_res_ber = NULL; diff --git a/servers/slapd/controls.c b/servers/slapd/controls.c index 1e06552ccb..097bfd4964 100644 --- a/servers/slapd/controls.c +++ b/servers/slapd/controls.c @@ -917,6 +917,16 @@ static int parsePagedResults ( } else { /* Initial request. Initialize state. */ +#if 0 + if ( op->o_conn->c_pagedresults_state.ps_cookie != 0 ) { + /* There's another pagedResults control on the + * same connection; reject new pagedResults controls + * (allowed by RFC2696) */ + rs->sr_text = "paged results cookie unavailable; try later"; + rc = LDAP_UNWILLING_TO_PERFORM; + goto done; + } +#endif op->o_pagedresults_state.ps_cookie = 0; op->o_pagedresults_state.ps_count = 0; }