From 5ec22dba2fe38ff9a489eff2bdcc5cb82c39d1ec Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Wed, 31 Jan 2018 19:25:06 -0800 Subject: [PATCH] reset response builder on disconnection #150 --- includes/cpp_redis/builders/reply_builder.hpp | 5 +++++ sources/builders/reply_builder.cpp | 6 ++++++ sources/network/redis_connection.cpp | 4 ++++ tacopie | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/includes/cpp_redis/builders/reply_builder.hpp b/includes/cpp_redis/builders/reply_builder.hpp index 4874cef6..1bce751e 100644 --- a/includes/cpp_redis/builders/reply_builder.hpp +++ b/includes/cpp_redis/builders/reply_builder.hpp @@ -81,6 +81,11 @@ class reply_builder { //! bool reply_available(void) const; + //! + //! reset the reply builder to its initial state (clear internal buffer and stages) + //! + void reset(void); + private: //! //! build reply using m_buffer content diff --git a/sources/builders/reply_builder.cpp b/sources/builders/reply_builder.cpp index d7edb4d9..2df6e896 100644 --- a/sources/builders/reply_builder.cpp +++ b/sources/builders/reply_builder.cpp @@ -41,6 +41,12 @@ reply_builder::operator<<(const std::string& data) { return *this; } +void +reply_builder::reset(void) { + m_builder = nullptr; + m_buffer.clear(); +} + bool reply_builder::build_reply(void) { if (!m_buffer.size()) diff --git a/sources/network/redis_connection.cpp b/sources/network/redis_connection.cpp index 31447bba..09116dd8 100644 --- a/sources/network/redis_connection.cpp +++ b/sources/network/redis_connection.cpp @@ -86,6 +86,8 @@ redis_connection::disconnect(bool wait_for_removal) { //! clear buffer m_buffer.clear(); + //! clear builder + m_builder.reset(); __CPP_REDIS_LOG(debug, "cpp_redis::network::redis_connection disconnected"); } @@ -186,6 +188,8 @@ redis_connection::tcp_client_disconnection_handler(void) { __CPP_REDIS_LOG(debug, "cpp_redis::network::redis_connection has been disconnected"); //! clear buffer m_buffer.clear(); + //! clear builder + m_builder.reset(); //! call disconnection handler call_disconnection_handler(); } diff --git a/tacopie b/tacopie index 4c551b8f..243089d8 160000 --- a/tacopie +++ b/tacopie @@ -1 +1 @@ -Subproject commit 4c551b8ff1c53c5fa63286371c9c884254fc9423 +Subproject commit 243089d84a5a8032b85e81cae237b823df99abee