Joseph Wu created MESOS-10010:
---------------------------------
Summary: Implement an SSL socket for Windows, using OpenSSL
directly
Key: MESOS-10010
URL: https://issues.apache.org/jira/browse/MESOS-10010
Project: Mesos
Issue Type: Task
Components: libprocess
Reporter: Joseph Wu
Assignee: Joseph Wu
{code}
class WindowsSSLSocketImpl : public SocketImpl
{
public:
// This will be the entry point for Socket::create(SSL).
static Try<std::shared_ptr<SocketImpl>> create(int_fd s);
WindowsSSLSocketImpl(int_fd _s);
~WindowsSSLSocketImpl() override;
// Overrides for the 'SocketImpl' interface below.
// Unreachable.
Future<Nothing> connect(const Address& address) override;
// This will initialize SSL objects then call windows::connect()
// and chain that onto the appropriate call to SSL_do_handshake.
Future<Nothing> connect(
const Address& address,
const openssl::TLSClientConfig& config) override;
// These will call SSL_read or SSL_write as appropriate.
// As long as the SSL context is set up correctly, these will be
// thin wrappers. (More details after the code block.)
Future<size_t> recv(char* data, size_t size) override;
Future<size_t> send(const char* data, size_t size) override;
Future<size_t> sendfile(int_fd fd, off_t offset, size_t size) override;
// Nothing SSL here, just a plain old listener.
Try<Nothing> listen(int backlog) override;
// This will initialize SSL objects then call windows::accept()
// and then perform handshaking. Any downgrading will
// happen here. Since we control the event loop, we can
// easily peek at the first few bytes to check SSL-ness.
Future<std::shared_ptr<SocketImpl>> accept() override;
SocketImpl::Kind kind() const override { return SocketImpl::Kind::SSL; }
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)