net/socket.hpp | 73 +++++++++++++++++++++++++++------------------------------ 1 file changed, 35 insertions(+), 38 deletions(-)
New commits: commit 78a99f019b310ba2cb6b7a3f9aa411ba63480331 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sat Feb 18 16:14:48 2017 -0500 nb: refactor and reuse ssl handshake handler Change-Id: Ie65b7d1bac8391ccb2905fa8376a26ee4c3d4e30 Reviewed-on: https://gerrit.libreoffice.org/34416 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/net/socket.hpp b/net/socket.hpp index dc04d4d..1a6c4a1 100644 --- a/net/socket.hpp +++ b/net/socket.hpp @@ -417,25 +417,10 @@ class SslStreamSocket : public BufferingSocket public: bool readIncomingData() override { - if (_doHandshake) + const int rc = doHandshake(); + if (rc <= 0) { - int rc; - do - { - rc = SSL_do_handshake(_ssl); - } - while (rc < 0 && errno == EINTR); - - if (rc <= 0) - { - rc = handleSslState(rc); - if (rc <= 0) - { - return (rc != 0); - } - } - - _doHandshake = false; + return (rc != 0); } // Default implementation. @@ -444,25 +429,10 @@ public: void writeOutgoingData() override { - if (_doHandshake) + const int rc = doHandshake(); + if (rc <= 0) { - int rc; - do - { - rc = SSL_do_handshake(_ssl); - } - while (rc < 0 && errno == EINTR); - - if (rc <= 0) - { - rc = handleSslState(rc); - if (rc <= 0) - { - return; - } - } - - _doHandshake = false; + return; } // Default implementation. @@ -493,8 +463,8 @@ public: return POLLOUT; } - // Do whatever makes sense based on buffer state. - return (_outBuffer.empty() ? POLLIN : (POLLIN | POLLOUT)); + // Do the default. + return BufferingSocket::getPollEvents(); } protected: @@ -538,6 +508,33 @@ private: Write }; + int doHandshake() + { + if (_doHandshake) + { + int rc; + do + { + rc = SSL_do_handshake(_ssl); + } + while (rc < 0 && errno == EINTR); + + if (rc <= 0) + { + rc = handleSslState(rc); + if (rc <= 0) + { + return (rc != 0); + } + } + + _doHandshake = false; + } + + // Handshake complete. + return 1; + } + /// Handles the state of SSL after read or write. int handleSslState(const int rc) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits