Bugfix: close the crypto under correct conditions #1078
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
During the tests that have been involving closing the socket being members of a group in various unsynchronized conditions it has happened sometimes that a socket was attempted to be closed while it was during the process of closing. Normally all mutexes protecting internal data were preventing any clashes that could result from it. In the case of closing the crypto control object it was happening, however, that one has closed the crypto without having all flags updated, so it was happening that the crypto wasn't closed and therefore deferred the close up to the destructor (which was unwanted in cases when the destruction was called together with the application) or was attempted to be twice destroyed.
The fix has made this destruction relying on the object that represents the real state of existence of the object and attempted in every case when closing was requested.