diff --git a/examples/client/client.c b/examples/client/client.c index 7dd11403a..faa97955f 100644 --- a/examples/client/client.c +++ b/examples/client/client.c @@ -807,7 +807,8 @@ static int ClientBenchmarkThroughput(WOLFSSL_CTX* ctx, char* host, word16 port, } else #endif - if (err != WOLFSSL_ERROR_WANT_READ) { + if (err != WOLFSSL_ERROR_WANT_READ && + err != WOLFSSL_ERROR_WANT_WRITE) { fprintf(stderr, "SSL_read bench error %d\n", err); err_sys("SSL_read failed"); } @@ -1072,7 +1073,9 @@ static int ClientRead(WOLFSSL* ssl, char* reply, int replyLen, int mustRead, } } - if (mustRead && err == WOLFSSL_ERROR_WANT_READ) { + if (mustRead && + (err == WOLFSSL_ERROR_WANT_READ + || err == WOLFSSL_ERROR_WANT_WRITE)) { elapsed = current_time(0) - start; if (elapsed > MAX_NON_BLOCK_SEC) { fprintf(stderr, "Nonblocking read timeout\n"); diff --git a/examples/server/server.c b/examples/server/server.c index 23973ee38..de6204c9a 100644 --- a/examples/server/server.c +++ b/examples/server/server.c @@ -416,6 +416,7 @@ int ServerEchoData(SSL* ssl, int clientfd, int echoData, int block, else #endif if (err != WOLFSSL_ERROR_WANT_READ && + err != WOLFSSL_ERROR_WANT_WRITE && err != WOLFSSL_ERROR_ZERO_RETURN && err != APP_DATA_READY) { fprintf(stderr, "SSL_read echo error %d\n", err); @@ -553,7 +554,9 @@ static void ServerRead(WOLFSSL* ssl, char* input, int inputLen) if (wolfSSL_pending(ssl)) err = WOLFSSL_ERROR_WANT_READ; } - } while (err == WC_PENDING_E || err == WOLFSSL_ERROR_WANT_READ); + } while (err == WC_PENDING_E + || err == WOLFSSL_ERROR_WANT_READ + || err == WOLFSSL_ERROR_WANT_WRITE); if (ret > 0) { /* null terminate message */ input[ret] = '\0';