From 516ab164f6fcfe641cbf296d1244ac957fb16fd1 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 16 Mar 2017 20:13:56 -0400 Subject: redis: check for socket errors when loading database on startup --- modules/m_redis.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'modules/m_redis.cpp') diff --git a/modules/m_redis.cpp b/modules/m_redis.cpp index 7945ab9cc..23865e815 100644 --- a/modules/m_redis.cpp +++ b/modules/m_redis.cpp @@ -157,6 +157,11 @@ class MyRedisService : public Provider } public: + bool IsSocketDead() anope_override + { + return this->sock && this->sock->flags[SF_DEAD]; + } + void SendCommand(RedisSocket *s, Interface *i, const std::vector &cmds) { std::vector > args; @@ -201,9 +206,11 @@ class MyRedisService : public Provider public: bool BlockAndProcess() anope_override { - this->sock->ProcessWrite(); + if (!this->sock->ProcessWrite()) + this->sock->flags[SF_DEAD] = true; this->sock->SetBlocking(true); - this->sock->ProcessRead(); + if (!this->sock->ProcessRead()) + this->sock->flags[SF_DEAD] = true; this->sock->SetBlocking(false); return !this->sock->interfaces.empty(); } -- cgit