diff options
author | Eric Covener <covener@apache.org> | 2014-07-05 00:06:15 +0000 |
---|---|---|
committer | Eric Covener <covener@apache.org> | 2014-07-05 00:06:15 +0000 |
commit | 2eaa646655f8f3f4b51d352b007670aff983bb63 (patch) | |
tree | 11ea20f949b2b9aae46df29272465f67aa349877 /modules/ldap | |
parent | 0ff069dd31a423f0db85f7ad5381b76e356e846b (diff) | |
download | httpd-2eaa646655f8f3f4b51d352b007670aff983bb63.tar.gz |
make LDAPConnectionPoolTTL more conservative, use r->request_time rather than
end-of-request time, and only update it after a round-trip with the LDAP
server rather than every time we check back into the pool.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1607960 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/ldap')
-rw-r--r-- | modules/ldap/util_ldap.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/modules/ldap/util_ldap.c b/modules/ldap/util_ldap.c index 750e6a7259..38c9b86493 100644 --- a/modules/ldap/util_ldap.c +++ b/modules/ldap/util_ldap.c @@ -524,6 +524,7 @@ static int uldap_simple_bind(util_ldap_connection_t *ldc, char *binddn, return uldap_ld_errno(ldc); } else { + ldc->last_backend_conn = ldc->r->request_time; ap_log_rerror(APLOG_MARK, APLOG_TRACE5, 0, ldc->r, "LDC %pp bind", ldc); } return rc; @@ -730,10 +731,10 @@ static util_ldap_connection_t * && !compare_client_certs(dc->client_certs, l->client_certs)) { if (st->connection_pool_ttl > 0) { - if (l->bound && (now - l->freed) > st->connection_pool_ttl) { + if (l->bound && (now - l->last_backend_conn) > st->connection_pool_ttl) { ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "Removing LDAP connection last used %" APR_TIME_T_FMT " seconds ago", - (now - l->freed) / APR_USEC_PER_SEC); + (now - l->last_backend_conn) / APR_USEC_PER_SEC); l->r = r; uldap_connection_unbind(l); /* Go ahead (by falling through) and use it, so we don't create more just to unbind some other old ones */ @@ -768,10 +769,10 @@ static util_ldap_connection_t * !compare_client_certs(dc->client_certs, l->client_certs)) { if (st->connection_pool_ttl > 0) { - if (l->bound && (now - l->freed) > st->connection_pool_ttl) { + if (l->bound && (now - l->last_backend_conn) > st->connection_pool_ttl) { ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "Removing LDAP connection last used %" APR_TIME_T_FMT " seconds ago", - (now - l->freed) / APR_USEC_PER_SEC); + (now - l->last_backend_conn) / APR_USEC_PER_SEC); l->r = r; uldap_connection_unbind(l); /* Go ahead (by falling through) and use it, so we don't create more just to unbind some other old ones */ @@ -995,6 +996,7 @@ start_over: return result; } + ldc->last_backend_conn = r->request_time; entry = ldap_first_entry(ldc->ldap, res); searchdn = ldap_get_dn(ldc->ldap, entry); @@ -1146,6 +1148,7 @@ start_over: goto start_over; } + ldc->last_backend_conn = r->request_time; ldc->reason = "Comparison complete"; if ((LDAP_COMPARE_TRUE == result) || (LDAP_COMPARE_FALSE == result) || @@ -1271,6 +1274,7 @@ start_over: return res; } + ldc->last_backend_conn = r->request_time; entry = ldap_first_entry(ldc->ldap, sga_res); /* @@ -1753,6 +1757,7 @@ start_over: * We should have found exactly one entry; to find a different * number is an error. */ + ldc->last_backend_conn = r->request_time; count = ldap_count_entries(ldc->ldap, res); if (count != 1) { @@ -2013,6 +2018,7 @@ start_over: * We should have found exactly one entry; to find a different * number is an error. */ + ldc->last_backend_conn = r->request_time; count = ldap_count_entries(ldc->ldap, res); if (count != 1) { |