]>
git.ipfire.org Git - thirdparty/openldap.git/log
Ondřej Kuzník [Wed, 5 Dec 2018 13:54:37 +0000 (13:54 +0000)]
Introduce mutex checks
Switched off unless thread debugging is on, but still useful for static
analysis.
Ondřej Kuzník [Thu, 29 Nov 2018 12:08:30 +0000 (12:08 +0000)]
Thread error checking
Ondřej Kuzník [Thu, 21 Mar 2019 09:49:20 +0000 (09:49 +0000)]
Fix a SASL channel-binding leak
Ondřej Kuzník [Mon, 29 Oct 2018 14:00:24 +0000 (14:00 +0000)]
Fix race between unlinking a client and processing incoming data
Ondřej Kuzník [Fri, 26 Oct 2018 14:44:02 +0000 (15:44 +0100)]
Make sure read event is not enabled while upstream_bind is scheduled
Ondřej Kuzník [Thu, 18 Oct 2018 14:49:43 +0000 (15:49 +0100)]
Shorten to one epoch per PDU
A full read cycle can take a very long time if the limits are set too
high.
Ondřej Kuzník [Thu, 18 Oct 2018 14:59:36 +0000 (15:59 +0100)]
Implement client pending operation limits
Ondřej Kuzník [Fri, 5 Oct 2018 13:56:19 +0000 (14:56 +0100)]
Straighten up client pending op tracking
Ondřej Kuzník [Fri, 17 Aug 2018 11:28:13 +0000 (12:28 +0100)]
Epoch based memory reclamation
Similar to the algorithm presented in
https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-579.pdf
Not completely lock-free at the moment. Also the problems with epoch
based memory reclamation are still present - a thread actively observing
an epoch getting stuck will prevent LloadConnections and LloadOperations
being freed, potentially running out of memory.
Ondřej Kuzník [Thu, 2 Aug 2018 09:00:24 +0000 (10:00 +0100)]
Switch to LDAP_OTHER when handling a lost upstream.
LDAP_UNAVAILABLE signals "the server is shutting down or a subsystem
necessary to complete the operation is offline", so intelligent clients
tend to infer the connection will not be usable any more, which is not
the case here.
Ondřej Kuzník [Tue, 24 Jul 2018 08:56:52 +0000 (09:56 +0100)]
Fix races with backend_retry
Ondřej Kuzník [Tue, 19 Jun 2018 12:20:32 +0000 (13:20 +0100)]
SASL and proxyauthz tests
Ondřej Kuzník [Fri, 15 Jun 2018 14:14:49 +0000 (15:14 +0100)]
Add TLS tests
Ondřej Kuzník [Wed, 13 Jun 2018 16:08:47 +0000 (17:08 +0100)]
Tests for monitoring support
Ondřej Kuzník [Wed, 13 Jun 2018 16:07:44 +0000 (17:07 +0100)]
A failed cn=config ADD needs to be handled
Ondřej Kuzník [Thu, 24 May 2018 09:16:19 +0000 (10:16 +0100)]
Introduce SASL support for upstream connections
Ondřej Kuzník [Thu, 24 May 2018 09:16:55 +0000 (10:16 +0100)]
Do not enforce a valid ld in lutil_sasl_interact
Ondřej Kuzník [Thu, 24 May 2018 09:12:28 +0000 (10:12 +0100)]
Fix backend starttls= setting being ignored
Ondřej Kuzník [Tue, 8 May 2018 15:00:27 +0000 (16:00 +0100)]
Simplify pause handling
Gets rid of a race where unpause+pause fired in a quick succession would
miss the event_base_loopbreak() call.
Ondřej Kuzník [Thu, 3 May 2018 14:02:02 +0000 (15:02 +0100)]
Permit lloadd to share slapd TLS context
Nadezhda Ivanova [Tue, 24 Apr 2018 10:04:21 +0000 (13:04 +0300)]
Initial implementation of cn=config testing script
Ondřej Kuzník [Tue, 16 Apr 2019 16:12:51 +0000 (17:12 +0100)]
Reuse connection walking in monitor for upstreams too
Ondřej Kuzník [Fri, 20 Apr 2018 12:46:34 +0000 (13:46 +0100)]
Reuse connection_walk for client matters
Ondřej Kuzník [Fri, 20 Apr 2018 12:42:36 +0000 (13:42 +0100)]
Refactor backend reset
Reuse the connection walking facility in timeout management.
Ondřej Kuzník [Fri, 20 Apr 2018 12:28:10 +0000 (13:28 +0100)]
Tighten checks on retry management
Ondřej Kuzník [Fri, 20 Apr 2018 11:59:07 +0000 (12:59 +0100)]
Clean up backend_retry and its callers.
Ondřej Kuzník [Fri, 20 Apr 2018 11:53:24 +0000 (12:53 +0100)]
Fix a race in managing b_dns_req
Nadezhda Ivanova [Wed, 18 Apr 2018 14:55:30 +0000 (17:55 +0300)]
Fix a new backend not being operational if added via cn=config
Ondřej Kuzník [Tue, 10 Apr 2018 08:26:56 +0000 (09:26 +0100)]
libevent 2.0 support
Ondřej Kuzník [Thu, 5 Apr 2018 11:06:55 +0000 (12:06 +0100)]
Document config behaviour
Ondřej Kuzník [Wed, 4 Apr 2018 15:36:28 +0000 (16:36 +0100)]
Reorganise listener support in cn=config and module startup
Ondřej Kuzník [Wed, 4 Apr 2018 15:32:53 +0000 (16:32 +0100)]
Introduce lload_open_new_listener
Ondřej Kuzník [Wed, 4 Apr 2018 15:29:36 +0000 (16:29 +0100)]
Switch to ldap_parse_url_ext
This simplifies port parsing in the end. Also pass the url to
ldap_open_listener in anticipation of incremental listener config.
Ondřej Kuzník [Wed, 4 Apr 2018 15:37:55 +0000 (16:37 +0100)]
Make io-threads modification startup-only
Ondřej Kuzník [Wed, 28 Mar 2018 09:29:42 +0000 (10:29 +0100)]
Record connect task to allow canceling it
Ondřej Kuzník [Wed, 28 Mar 2018 09:19:14 +0000 (10:19 +0100)]
Record pending DNS resolution to be able to cancel
Ondřej Kuzník [Wed, 28 Mar 2018 09:16:24 +0000 (10:16 +0100)]
Keep a reference around for the bind task
Ondřej Kuzník [Mon, 26 Mar 2018 12:28:38 +0000 (13:28 +0100)]
Work around libevent base not waking up on shutdown
Ondřej Kuzník [Fri, 23 Mar 2018 16:19:34 +0000 (16:19 +0000)]
Protect operation when abandoning
Ondřej Kuzník [Fri, 23 Mar 2018 16:16:44 +0000 (16:16 +0000)]
Implement runtime monitor (un)registration
Unregistration is a hack and we shoould either make the subsystems into
an entry (if monitor allows subentry generation) or implement subsystem
unregistration in back-monitor.
Ondřej Kuzník [Tue, 20 Mar 2018 17:25:11 +0000 (17:25 +0000)]
Do not unlock upstream without referencing its dying ops
Ondřej Kuzník [Tue, 20 Mar 2018 17:21:22 +0000 (17:21 +0000)]
Module shutdown support
Ondřej Kuzník [Fri, 16 Mar 2018 13:08:08 +0000 (13:08 +0000)]
Rework lloadd startup
Ondřej Kuzník [Fri, 16 Mar 2018 13:05:21 +0000 (13:05 +0000)]
Deal with no backends being configured
Ondřej Kuzník [Fri, 16 Mar 2018 12:41:37 +0000 (12:41 +0000)]
Record the backend name
Ondřej Kuzník [Thu, 5 Apr 2018 10:34:20 +0000 (11:34 +0100)]
Reflect backend URI change in cn=monitor
Nadezhda Ivanova [Wed, 21 Feb 2018 09:27:33 +0000 (11:27 +0200)]
Enable dynamic configuration
Ondřej Kuzník [Fri, 23 Feb 2018 13:03:21 +0000 (13:03 +0000)]
Fix interaction of graceful connection closing and SASL bind support
Ondřej Kuzník [Wed, 21 Feb 2018 14:06:00 +0000 (14:06 +0000)]
Change log level for unsolicited response
Ondřej Kuzník [Wed, 21 Feb 2018 13:51:51 +0000 (13:51 +0000)]
Fix operation status tracking.
An operation is rejected iff it has to be dropped before we can find an
upstream for it (unless we handle it ourselves, that is). At that point
it is failed unless completed successfully.
This makes a difference for multi-stage binds which alternate between
'failed' (we are waiting on a server response) and 'completed' (server
did what we asked them to, waiting on client to continue).
Ondřej Kuzník [Tue, 20 Feb 2018 15:45:35 +0000 (15:45 +0000)]
Introduce infra to handle config changes
Ondřej Kuzník [Tue, 20 Feb 2018 15:14:09 +0000 (15:14 +0000)]
expose task functions for invalidation
Ondřej Kuzník [Mon, 19 Feb 2018 14:22:40 +0000 (14:22 +0000)]
Split backend destruction from resetting it
Ondřej Kuzník [Wed, 14 Feb 2018 15:48:53 +0000 (15:48 +0000)]
Introduce a new connection status - gentle shutdown
Ondřej Kuzník [Wed, 14 Feb 2018 15:44:51 +0000 (15:44 +0000)]
Fix operation counts
Trying to abandon an operation does not automatically make it completed,
it might have failed already but we're just racing to reach the client
to record that.
Ondřej Kuzník [Wed, 14 Feb 2018 15:43:16 +0000 (15:43 +0000)]
Move op counting to operation_init
Ondřej Kuzník [Thu, 8 Feb 2018 23:47:35 +0000 (23:47 +0000)]
Cleanup sasl_bind_mech resets
Ondřej Kuzník [Thu, 8 Feb 2018 23:44:31 +0000 (23:44 +0000)]
Fix a race on bind response processing.
During response processing, an upstream connection could be marked ready
after a different bind had already been allocated to it, thus allowing
two binds to be in progress on the same connection.
Ondřej Kuzník [Wed, 7 Feb 2018 12:38:40 +0000 (12:38 +0000)]
Implement pause handlers
Ondřej Kuzník [Wed, 7 Feb 2018 12:33:31 +0000 (12:33 +0000)]
More meaningful connection type reporting
Ondřej Kuzník [Wed, 7 Feb 2018 12:30:58 +0000 (12:30 +0000)]
Module shutdown
Ondřej Kuzník [Wed, 7 Feb 2018 10:29:20 +0000 (10:29 +0000)]
Rework monitor startup
Takes care of dealing with monitor not present/not configured and fix a
monitor startup issue.
Nadezhda Ivanova [Mon, 5 Feb 2018 09:04:02 +0000 (11:04 +0200)]
Convert the load balancer into a backend
Nadezhda Ivanova [Thu, 1 Feb 2018 15:24:48 +0000 (17:24 +0200)]
Use slapd's config.h
Nadezhda Ivanova [Thu, 25 Jan 2018 11:19:05 +0000 (13:19 +0200)]
Lload cn=monitor initial implementation
Ondřej Kuzník [Wed, 24 Jan 2018 17:48:29 +0000 (17:48 +0000)]
Update tests to support lloadd as a module
Ondřej Kuzník [Thu, 18 Jan 2018 14:46:24 +0000 (14:46 +0000)]
Resolve authzid after a successful auth
Ondřej Kuzník [Wed, 17 Jan 2018 15:31:11 +0000 (15:31 +0000)]
Add SASL documentation on SASL handling
Ondřej Kuzník [Wed, 17 Jan 2018 15:30:24 +0000 (15:30 +0000)]
Reset pin on simple bind
Ondřej Kuzník [Wed, 17 Jan 2018 15:29:58 +0000 (15:29 +0000)]
Fix pinned operation forwarding
Ondřej Kuzník [Wed, 17 Jan 2018 15:27:14 +0000 (15:27 +0000)]
Operation abandon related fixes
Ondřej Kuzník [Wed, 17 Jan 2018 15:16:05 +0000 (15:16 +0000)]
Manage c_sasl_bind_mech on upstream
Ondřej Kuzník [Tue, 16 Jan 2018 17:43:20 +0000 (17:43 +0000)]
Clear c_auth on every bind request
For a new bind request, this is obvious, for SASL bind requests, we do
not know the final identity until we have finished handling it, make
sure it stays empty until then.
Ondřej Kuzník [Tue, 16 Jan 2018 17:32:37 +0000 (17:32 +0000)]
Do not compare c_auth when NULL
Ondřej Kuzník [Wed, 13 Dec 2017 17:51:20 +0000 (17:51 +0000)]
Handle EXTERNAL mechanism
Will only try to extract the TLS client certificate name if used during
the last handshake.
Ondřej Kuzník [Wed, 13 Dec 2017 17:39:42 +0000 (17:39 +0000)]
SASL bind support
Introduces pinned operations. When SASL bind finishes, we might still
have to maintain a link between the client an an upstream for future
bind operations if we got a SASL Bind in Progress result code. We zero
out the msgids and remember a server-unique identifer on the client and
the relevant operation that lets us retrieve that link again. This
operation is reclaimed just like anything else when connections drop.
Hopefully, this should work for LDAP TXN and VC Exop support with SASL
later as well since it allows for many-to-many links to exist.
Ondřej Kuzník [Wed, 13 Dec 2017 17:34:59 +0000 (17:34 +0000)]
Refactor request parsing and sending.
We have to do most of out processing before we send the request over to
the upstream. If we don't, we might be too late and the response might
have arrived already.
Ondřej Kuzník [Wed, 13 Dec 2017 16:09:26 +0000 (16:09 +0000)]
Passing the client directly will allow clearing it from op
Ondřej Kuzník [Wed, 13 Dec 2017 16:03:36 +0000 (16:03 +0000)]
RFC4511 says Binds do not abandon, send a "reset" bind instead
Ondřej Kuzník [Wed, 13 Dec 2017 15:56:10 +0000 (15:56 +0000)]
Initial extension to upstream selection
Ondřej Kuzník [Fri, 19 Jan 2018 17:12:49 +0000 (17:12 +0000)]
Do not copy files from slapd, just link them
Nadezhda Ivanova [Thu, 11 Jan 2018 15:43:18 +0000 (17:43 +0200)]
Enable compilation of the load balancer as a module
To compile the balancer as a slapd module, pass --enable-balancer=mod to ./configure
Use --enable-balancer(=yes) to compile as standalone server.
Nadezhda Ivanova [Mon, 18 Dec 2017 10:53:39 +0000 (12:53 +0200)]
Clean ups and renames to coexist with slapd
Ondřej Kuzník [Wed, 13 Dec 2017 15:26:49 +0000 (15:26 +0000)]
Update test suite
Ondřej Kuzník [Wed, 13 Dec 2017 12:17:23 +0000 (12:17 +0000)]
request_abandon RFC4511 conformance
Ondřej Kuzník [Wed, 22 Nov 2017 14:01:30 +0000 (14:01 +0000)]
Log timed out connections more clearly
Ondřej Kuzník [Wed, 22 Nov 2017 13:15:54 +0000 (13:15 +0000)]
Protect currently impossible branch
Ondřej Kuzník [Wed, 22 Nov 2017 13:05:11 +0000 (13:05 +0000)]
Introduce operation timeout machinery
Ondřej Kuzník [Wed, 22 Nov 2017 12:59:21 +0000 (12:59 +0000)]
Factor out abandon message preparation
Ondřej Kuzník [Wed, 22 Nov 2017 12:56:53 +0000 (12:56 +0000)]
Record operation activity times
Ondřej Kuzník [Wed, 22 Nov 2017 12:55:20 +0000 (12:55 +0000)]
Upstream queues ordered by c_connid
In preparation for operation timeout events.
Ondřej Kuzník [Thu, 16 Nov 2017 13:34:40 +0000 (13:34 +0000)]
Make timeouts common and redo connection read timeouts
Ondřej Kuzník [Wed, 22 Nov 2017 11:03:33 +0000 (11:03 +0000)]
We should just be able to call backend_retry
Ondřej Kuzník [Thu, 16 Nov 2017 12:34:21 +0000 (12:34 +0000)]
Set up TLS context for backends
Ondřej Kuzník [Mon, 25 Sep 2017 10:17:04 +0000 (11:17 +0100)]
Client TLS support
Ondřej Kuzník [Mon, 25 Sep 2017 10:15:59 +0000 (11:15 +0100)]
Upstream TLS support
Ondřej Kuzník [Thu, 16 Nov 2017 14:50:10 +0000 (14:50 +0000)]
Respond to timeout events properly
Ondřej Kuzník [Thu, 16 Nov 2017 12:39:51 +0000 (12:39 +0000)]
Update write timeout to timeval
Ondřej Kuzník [Wed, 27 Sep 2017 10:49:39 +0000 (11:49 +0100)]
Move bind handling to bind.c
Ondřej Kuzník [Wed, 27 Sep 2017 10:33:28 +0000 (11:33 +0100)]
Move client related functions to client.c