diff --git a/webrtc/base/opensslstreamadapter.cc b/webrtc/base/opensslstreamadapter.cc index 619f3e1ea4..f3ad599f1b 100644 --- a/webrtc/base/opensslstreamadapter.cc +++ b/webrtc/base/opensslstreamadapter.cc @@ -739,6 +739,12 @@ int OpenSSLStreamAdapter::BeginSSL() { SSL_set_app_data(ssl_, this); SSL_set_bio(ssl_, bio, bio); // the SSL object owns the bio now. + if (ssl_mode_ == SSL_MODE_DTLS) { + // Enable read-ahead for DTLS so whole packets are read from internal BIO + // before parsing. + // TODO(jbauch): Remove for BoringSSL when this is handled internally. + SSL_set_read_ahead(ssl_, 1); + } SSL_set_mode(ssl_, SSL_MODE_ENABLE_PARTIAL_WRITE | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);