aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-09-17 13:30:52 +0200
committerGitHub <noreply@github.com>2018-09-17 13:30:52 +0200
commita940b388669b3ad3cc364c6f6ce638919ee76676 (patch)
treefc590a900ba0e5d240091086c4891c2d59be0ca1
parentcbfa37a64fd7d5fa39783682c09bb4247c6ad2a2 (diff)
parent8874dd8e3df66058143d0382ee80f539c3ed6b23 (diff)
Merge pull request #6973 from vespa-engine/havardpe/process-pending-data-before-reading-more
Havardpe/process pending data before reading more
-rw-r--r--fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp10
-rw-r--r--fnet/src/tests/frt/rpc/CMakeLists.txt4
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp6
4 files changed, 13 insertions, 9 deletions
diff --git a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
index 59ca9d4ccc0..31aec84afd5 100644
--- a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
+++ b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
@@ -119,7 +119,7 @@ void perform_test(size_t thread_id, Client &client, Result &result) {
CryptoEngine::SP null_crypto = std::make_shared<NullCryptoEngine>();
CryptoEngine::SP xor_crypto = std::make_shared<XorCryptoEngine>();
-// CryptoEngine::SP tls_crypto = std::make_shared<vespalib::TlsCryptoEngine>(vespalib::test::make_tls_options_for_testing());
+CryptoEngine::SP tls_crypto = std::make_shared<vespalib::TlsCryptoEngine>(vespalib::test::make_tls_options_for_testing());
TEST_MT_FFF("parallel rpc with 1/1 transport threads and 128 user threads (no encryption)",
128, Server(null_crypto, 1), Client(null_crypto, 1, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
@@ -127,8 +127,8 @@ TEST_MT_FFF("parallel rpc with 1/1 transport threads and 128 user threads (no en
TEST_MT_FFF("parallel rpc with 1/1 transport threads and 128 user threads (xor encryption)",
128, Server(xor_crypto, 1), Client(xor_crypto, 1, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
-// TEST_MT_FFF("parallel rpc with 1/1 transport threads and 128 user threads (tls encryption)",
-// 128, Server(tls_crypto, 1), Client(tls_crypto, 1, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
+TEST_MT_FFF("parallel rpc with 1/1 transport threads and 128 user threads (tls encryption)",
+ 128, Server(tls_crypto, 1), Client(tls_crypto, 1, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
TEST_MT_FFF("parallel rpc with 8/8 transport threads and 128 user threads (no encryption)",
128, Server(null_crypto, 8), Client(null_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
@@ -136,7 +136,7 @@ TEST_MT_FFF("parallel rpc with 8/8 transport threads and 128 user threads (no en
TEST_MT_FFF("parallel rpc with 8/8 transport threads and 128 user threads (xor encryption)",
128, Server(xor_crypto, 8), Client(xor_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
-// TEST_MT_FFF("parallel rpc with 8/8 transport threads and 128 user threads (tls encryption)",
-// 128, Server(tls_crypto, 8), Client(tls_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
+TEST_MT_FFF("parallel rpc with 8/8 transport threads and 128 user threads (tls encryption)",
+ 128, Server(tls_crypto, 8), Client(tls_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/fnet/src/tests/frt/rpc/CMakeLists.txt b/fnet/src/tests/frt/rpc/CMakeLists.txt
index 4c1883ee7bd..2bacd37686a 100644
--- a/fnet/src/tests/frt/rpc/CMakeLists.txt
+++ b/fnet/src/tests/frt/rpc/CMakeLists.txt
@@ -7,7 +7,7 @@ vespa_add_executable(fnet_invoke_test_app TEST
)
vespa_add_test(NAME fnet_invoke_test_app COMMAND fnet_invoke_test_app)
vespa_add_test(NAME fnet_invoke_test_app_xor COMMAND fnet_invoke_test_app ENVIRONMENT "CRYPTOENGINE=xor")
-# vespa_add_test(NAME fnet_invoke_test_app_tls COMMAND fnet_invoke_test_app ENVIRONMENT "CRYPTOENGINE=tls")
+vespa_add_test(NAME fnet_invoke_test_app_tls COMMAND fnet_invoke_test_app ENVIRONMENT "CRYPTOENGINE=tls")
vespa_add_executable(fnet_detach_return_invoke_test_app TEST
SOURCES
detach_return_invoke.cpp
@@ -23,7 +23,7 @@ vespa_add_executable(fnet_session_test_app TEST
)
vespa_add_test(NAME fnet_session_test_app COMMAND fnet_session_test_app)
vespa_add_test(NAME fnet_session_test_app_xor COMMAND fnet_session_test_app ENVIRONMENT "CRYPTOENGINE=xor")
-# vespa_add_test(NAME fnet_session_test_app_tls COMMAND fnet_session_test_app ENVIRONMENT "CRYPTOENGINE=tls")
+vespa_add_test(NAME fnet_session_test_app_tls COMMAND fnet_session_test_app ENVIRONMENT "CRYPTOENGINE=tls")
vespa_add_executable(fnet_sharedblob_test_app TEST
SOURCES
sharedblob.cpp
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
index ec225311b60..254a9b213ba 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
@@ -112,7 +112,7 @@ public:
}
size_t min_read_buffer_size() const override { return 1; }
ssize_t read(char *buf, size_t len) override {
- if (_input.obtain().size < CHUNK_SIZE) {
+ if (_input.obtain().size == 0) {
auto dst = _input.reserve(CHUNK_SIZE);
ssize_t res = _socket.read(dst.data, dst.size);
if (res > 0) {
diff --git a/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp b/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp
index f8fa4ab2b53..494919f449f 100644
--- a/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp
@@ -85,11 +85,15 @@ CryptoCodecAdapter::handshake()
ssize_t
CryptoCodecAdapter::read(char *buf, size_t len)
{
+ auto drain_res = drain(buf, len);
+ if (drain_res != 0) {
+ return drain_res;
+ }
auto fill_res = fill_input();
if (fill_res <= 0) {
return fill_res;
}
- auto drain_res = drain(buf, len);
+ drain_res = drain(buf, len);
if (drain_res != 0) {
return drain_res;
}