Author: rhuijben Date: Wed Nov 4 00:55:46 2015 New Revision: 1712450 URL: http://svn.apache.org/viewvc?rev=1712450&view=rev Log: Following up on r1712447, remove write buffer but add a bit more logging to the read buffer test.
* test/MockHTTPinC/MockHTTP_server.c (sslCtx_t): Add retry_len to exactly match arguments when needed. (initSSLCtx): Apply a few more mode flags. (sslSocketRead): Tweak a bit for debugging. Modified: serf/trunk/test/MockHTTPinC/MockHTTP_server.c Modified: serf/trunk/test/MockHTTPinC/MockHTTP_server.c URL: http://svn.apache.org/viewvc/serf/trunk/test/MockHTTPinC/MockHTTP_server.c?rev=1712450&r1=1712449&r2=1712450&view=diff ============================================================================== --- serf/trunk/test/MockHTTPinC/MockHTTP_server.c (original) +++ serf/trunk/test/MockHTTPinC/MockHTTP_server.c Wed Nov 4 00:55:46 2015 @@ -2230,8 +2230,8 @@ struct sslCtx_t { SSL* ssl; BIO *bio; + apr_size_t retry_len; char read_buffer[8192]; - char write_buffer[8192]; }; static int init_done = 0; @@ -2699,7 +2699,9 @@ static apr_status_t initSSLCtx(_mhClient } #endif - SSL_CTX_set_mode(ssl_ctx->ctx, SSL_MODE_ENABLE_PARTIAL_WRITE); + SSL_CTX_set_mode(ssl_ctx->ctx, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER + | SSL_MODE_ENABLE_PARTIAL_WRITE + | SSL_MODE_AUTO_RETRY); ssl_ctx->bio = BIO_new(&bio_apr_socket_method); ssl_ctx->bio->ptr = cctx; @@ -2720,15 +2722,11 @@ sslSocketWrite(_mhClientCtx_t *cctx, con sslCtx_t *ssl_ctx = cctx->ssl_ctx; int result, ssl_err; - if (*len > sizeof(ssl_ctx->write_buffer)) - *len = sizeof(ssl_ctx->write_buffer); - memcpy(ssl_ctx->write_buffer, data, *len); - if (*len == 0) return APR_SUCCESS; ssl_ctx->bio_status = APR_SUCCESS; - result = SSL_write(ssl_ctx->ssl, ssl_ctx->write_buffer, *len); + result = SSL_write(ssl_ctx->ssl, data, *len); if (result > 0) { *len = result; return APR_SUCCESS; @@ -2784,12 +2782,15 @@ sslSocketRead(apr_socket_t *skt, void *b if (*len > sizeof(ssl_ctx->read_buffer)) *len = sizeof(ssl_ctx->read_buffer); + if (ssl_ctx->retry_len) + *len = ssl_ctx->retry_len; ssl_ctx->bio_status = APR_SUCCESS; result = SSL_read(ssl_ctx->ssl, ssl_ctx->read_buffer, *len); if (result > 0) { *len = result; memcpy(data, ssl_ctx->read_buffer, *len); + ssl_ctx->retry_len = 0; return APR_SUCCESS; } else { int ssl_err; @@ -2805,6 +2806,9 @@ sslSocketRead(apr_socket_t *skt, void *b return ssl_ctx->bio_status; case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: + ssl_ctx->retry_len = *len; + fprintf(stderr, "WANT %s\n", (ssl_err== SSL_ERROR_WANT_READ) + ? "read" : "write"); *len = 0; return APR_EAGAIN; case SSL_ERROR_SSL: