summaryrefslogtreecommitdiff
path: root/ext/openssl/xp_ssl.c
diff options
context:
space:
mode:
authorAaron Piotrowski <aaron@trowski.com>2017-02-23 20:58:12 -0600
committerAaron Piotrowski <aaron@trowski.com>2017-02-23 20:59:43 -0600
commite9873d9853da2b6153776c2e5ed6858e87f0baa2 (patch)
tree459cb038968167aa5237248e9ab6e38aa853c211 /ext/openssl/xp_ssl.c
parent330a7b62c3558aa987ee80e12f1914347d3a9eee (diff)
downloadphp-git-e9873d9853da2b6153776c2e5ed6858e87f0baa2.tar.gz
Fix bug #74159
Thanks to @brzuchal for the patch to xp_ssl.c and @DaveRandom for helping debug the problem.
Diffstat (limited to 'ext/openssl/xp_ssl.c')
-rw-r--r--ext/openssl/xp_ssl.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index b4387cd738..9dd402a8bd 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -1666,6 +1666,16 @@ int php_openssl_setup_crypto(php_stream *stream,
SSL_set_mode(sslsock->ssl_handle, mode | SSL_MODE_RELEASE_BUFFERS);
} while (0);
#endif
+
+ do {
+ long mode = SSL_get_mode(sslsock->ssl_handle);
+ SSL_set_mode(sslsock->ssl_handle, mode | SSL_MODE_ENABLE_PARTIAL_WRITE);
+ } while (0);
+
+ do {
+ long mode = SSL_get_mode(sslsock->ssl_handle);
+ SSL_set_mode(sslsock->ssl_handle, mode | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
+ } while (0);
if (cparam->inputs.session) {
if (cparam->inputs.session->ops != &php_openssl_socket_ops) {