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: