Ondřej Kuzník
c60ef73984
Rework upstream conn setup
2020-11-17 17:58:13 +00:00
Ondřej Kuzník
8d93e0baa0
Unify connection locking and I/O
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
5fcef01d62
Switch from a global mutex
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
f7cf34e69c
Reset connection state on abandon
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
6140cdf6f8
Handle a client connection disconnected from op
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
d4225924bc
CLOSING is another potential state we could be in
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
622b87d5e8
Make ready only when still alive
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
7046444327
Do not read on the last iteration.
...
When the pdu processing limit is hit, we still attempt to read another
PDU. If we succeed, the ber_get_next call in the read callback will
abort since a full PDU is already present.
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
65def94380
More logging improvements
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
30e538e836
Realign logging levels.
...
Stats now logs all operations, stats2 additionally intermediate messages
(search entries).
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
1dd0e5131a
Only one bind at a time
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
46fe014378
Make sure operation stays alive when we process it
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
0ff462b619
Fix issues in bind response handling
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
37cff37305
Manage connection refcnt better
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
05f2ac2583
Unify logging output
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
873d6fa3e1
Handle backend unsolicited response properly
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
961b600a42
Rework proxyauthz handling
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
6ee21f1181
Split bind configuration from backends
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
5b1ad43178
Handle upstream connection shutdown properly
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
a8a0fe26b0
Documentation updates
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
495dfa69a2
Split client/upstream PDU size limits
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
1082486874
Only enable verifycredentials if libldap does
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
26f721510a
Improve logging
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
cf05722b6c
Lookup operations by saved connid.
...
We reset the connection pointer on a destruction attempt, avoid the
spurious asserts.
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
f4afc06920
Tweak connection error logging.
...
Do not log when receiving the last bytes on a connection. Log failed
writes.
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
ee288cfc2d
Fix refcounting for all code paths
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
58a880bc7b
Convert backend and upstream management to use CIRCLEQ.
...
This alone doesn't make the server do a round robin.
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
643194e79e
Revert connection/operation mutex order.
...
There was still a race where the connection could be freed as the
operation was still being used.
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
9ebe5acb62
Clean up events properly
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
8eb7f3fbca
Stop the read callback on a dead connection.
...
The connection might be ready to read (close) but if we can't destroy it
yet, we don't want the callback to trigger all the time or process new
data.
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
6899d0123d
Do not bother to write to a dying connection
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
77f2c57132
Reset c_*ber after freeing and check c_pendingber race
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
07b5744c2a
Retain a reference around for handle_responses
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
c5584fd32a
Do not leak responses to abandoned ops
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
9d66c26be5
Operation reference counting
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
028f28690f
On a failed bind, stop the callback from firing again
...
Not a problem but causes a slew of calls to upstream_bind_cb that will
all fail in the same way.
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
cddc96322d
Do not clear c_pendingber on short write
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
fba4bed6e2
connection reference counting
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
c0d254a4ce
Do not leak BerElements
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
8f5bae921e
Pending operation tracking and limiting
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
e5fcf17506
Save connection ids on operation for logging purposes
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
b6b3f35aac
Fix proxyauthz handling
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
463bcdd2c4
Update backend progress tracking
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
dc5e2538ec
Configuration part for retry timeouts
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
673513a017
Maintain the configured amount of connections per backend
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
639c5912f5
Client authentication
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
4ad8ecd45e
Logging improvements
2020-11-17 17:55:46 +00:00
Ondřej Kuzník
f37e7757b1
Response handling, exploit optional bervals
2020-11-17 17:55:45 +00:00
Ondřej Kuzník
2fbc8ca473
Rename backend mutex
2020-11-17 17:42:44 +00:00
Ondřej Kuzník
3d1ea4693e
Authenticate the upstream connection if configured
2020-11-17 17:42:44 +00:00