Commit be7d77c3 authored by James Hughes's avatar James Hughes
Browse files

Merge pull request #23 from thaimai/master

change message stream to support ssl
parents bdc8a037 81c32595
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ class MessageStream : public MessageStreamInterface {

class MessageStreamFactoryInterface {
    public:
    virtual bool NewMessageStream(int fd, bool use_ssl, uint32_t max_message_size_bytes,
    virtual bool NewMessageStream(int fd, bool use_ssl, SSL *ssl, uint32_t max_message_size_bytes,
        MessageStreamInterface **message_stream) = 0;
    virtual ~MessageStreamFactoryInterface() {}
};
@@ -72,7 +72,7 @@ class MessageStreamFactoryInterface {
class MessageStreamFactory : public MessageStreamFactoryInterface {
    public:
    MessageStreamFactory(SSL_CTX *ssl_context, IncomingValueFactoryInterface &value_factory);
    bool NewMessageStream(int fd, bool use_ssl, uint32_t max_message_size_bytes,
    bool NewMessageStream(int fd, bool use_ssl, SSL *ssl, uint32_t max_message_size_bytes,
        MessageStreamInterface **message_stream);
    virtual ~MessageStreamFactory() {}

+23 −21
Original line number Diff line number Diff line
@@ -109,9 +109,10 @@ MessageStreamFactory::MessageStreamFactory(SSL_CTX *ssl_context,
        IncomingValueFactoryInterface &value_factory)
    : ssl_context_(ssl_context), value_factory_(value_factory) {}

bool MessageStreamFactory::NewMessageStream(int fd, bool use_ssl, uint32_t max_message_size_bytes,
bool MessageStreamFactory::NewMessageStream(int fd, bool use_ssl, SSL *ssl, uint32_t max_message_size_bytes,
        MessageStreamInterface **message_stream) {
    if ( use_ssl) {
        if(ssl == NULL) {
            SSL *ssl = SSL_new(ssl_context_);
            // We want to automatically retry reads and writes when a renegotiation
            // takes place. This way the only errors we have to handle are real,
@@ -132,6 +133,7 @@ bool MessageStreamFactory::NewMessageStream(int fd, bool use_ssl, uint32_t max_m
                SSL_free(ssl);
                return false;
            }
        }
        LOG(INFO) << "Successfully performed SSL handshake";
        *message_stream = new MessageStream(max_message_size_bytes, new SslByteStream(ssl));
    } else {