Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
"SASL Start" and "SASL End" are called in the SaslProtocol constructor and destructor. SaslProtocol is held by a shared_ptr so there's a race where the RpcConnection can be torn down and another can be put in it's place while a callback is still holding the shared_ptr preventing "SASL End" from being called.
This can matter a lot because both Cyrus SASL and gsasl aren't thread safe during negotiation. These event hooks provide a mechanism to pick up a process wide lock that guards access to the sasl library.