Intermediate structure wrapping SSL on sockets #735
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.
To open the discussion on a solution approach for #731 .
A (relatively) conservative way to solve having "IO duck types" being passed to an SSLSocket, would be to use BIO_mem. This seems to be how python infrastructure deals with it as well.
In order to do so, the socket needs to hold the rbio and wbio somewhere. This is achievable by creating the internal structure holding ssl variables, which holds the SSL object for now, and can latter be used to access the bios as well.
connect/read/write/close operations can then be rewritten to contain a conditional path to deal with sslsockets holding bios (which means, it holds an "IO quack").