PR: 1949
authorDr. Stephen Henson <steve@openssl.org>
Fri, 26 Jun 2009 15:02:01 +0000 (15:02 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 26 Jun 2009 15:02:01 +0000 (15:02 +0000)
Submitted by: David.Smith@cern.ch
Approved by: steve@openssl.org

When checking whether to flush the output BIO use BIO_CTRL_WPENDING instead
of BIO_CTRL_INFO. In most cases this will have no effect since the following
BIOs wont buffer. In the case of a following buffering BIO this will check
for any pending data in the whole chain and not just the single BIO.

See:
https://issues.apache.org/bugzilla/show_bug.cgi?id=46952
for a detailed analysis of this issue.

ssl/s3_srvr.c

index 80b45eb86ff1aeb79ddf8d623019e3e89279f8da..a9f00779684664e08083944bcd8b0116ac664256 100644 (file)
@@ -436,7 +436,7 @@ int ssl3_accept(SSL *s)
                
                case SSL3_ST_SW_FLUSH:
                        /* number of bytes to be flushed */
-                       num1=BIO_ctrl(s->wbio,BIO_CTRL_INFO,0,NULL);
+                       num1=BIO_ctrl(s->wbio,BIO_CTRL_WPENDING,0,NULL);
                        if (num1 > 0)
                                {
                                s->rwstate=SSL_WRITING;