From: Nick Mathewson Date: Thu, 30 Jul 2009 20:40:50 +0000 (+0000) Subject: Set the SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag, and explain why. X-Git-Tag: release-2.0.3-alpha~144 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d5a3f1f11685af21bd38ffceddcb949b7997cd46;p=libevent Set the SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag, and explain why. svn:r1394 --- diff --git a/bufferevent_openssl.c b/bufferevent_openssl.c index 5347b03e..dd0b4edc 100644 --- a/bufferevent_openssl.c +++ b/bufferevent_openssl.c @@ -819,6 +819,7 @@ be_openssl_handshakecb(struct bufferevent *bev_base, void *ctx) struct bufferevent_openssl *bev_ssl = ctx; do_handshake(bev_ssl); } + static void be_openssl_handshakeeventcb(evutil_socket_t fd, short what, void *ptr) { @@ -1028,6 +1029,10 @@ bufferevent_openssl_new_impl(struct event_base *base, &bufferevent_ops_openssl, tmp_options) < 0) goto err; + /* Don't explode if we decide to realloc a chunk we're writing from in + * the output buffer. */ + SSL_set_mode(ssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); + bev_ssl->underlying = underlying; bev_ssl->ssl = ssl;