diff options
author | Håvard Pettersen <havardpe@oath.com> | 2018-09-17 09:48:13 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2018-09-17 09:48:13 +0000 |
commit | 9e565ca6db40ce80210222e0bbfb3cb900abf7f1 (patch) | |
tree | 496a55ae87893fba40547714dadaa023e9193535 /vespalib | |
parent | cbfa37a64fd7d5fa39783682c09bb4247c6ad2a2 (diff) |
drain as much as possible before reading more socket data
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/net/crypto_engine.cpp | 2 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp | 6 |
2 files changed, 6 insertions, 2 deletions
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; } |