Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intermediate structure wrapping SSL on sockets #735

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

HoneyryderChuck
Copy link
Contributor

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").

@rhenium
Copy link
Member

rhenium commented Mar 27, 2024

Wrapping the SSL struct should be unnecessary. SSL has the ex_data to store an arbitrary data with it, and in ruby/openssl, every SSL struct has a corresponding SSLSocket object, so we can use its instance variables storage too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants