From 3207be46efdfaf03f0b188474336fde03ff9f7e5 Mon Sep 17 00:00:00 2001 From: fortrue Date: Fri, 29 Dec 2017 11:27:02 +0800 Subject: [PATCH] 1.fix issue14, don't add invalid sentinel address 2.add default compile option -g 3.fix command config get BufSize output 4.ignore online status for ClusterServerPool server --- src/ClusterServerPool.cpp | 6 ------ src/Handler.cpp | 2 +- src/Makefile | 2 +- src/SentinelServerPool.cpp | 17 +++++++++++++++++ 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/ClusterServerPool.cpp b/src/ClusterServerPool.cpp index 0dd5a5e..35591d2 100644 --- a/src/ClusterServerPool.cpp +++ b/src/ClusterServerPool.cpp @@ -148,7 +148,6 @@ void ClusterServerPool::handleResponse(Handler* h, ConnectConnection* s, Request p.master().data(), serv->dcName().data()); } else { - serv->setOnline(true); serv->setUpdating(false); } serv->setRole(p.role()); @@ -192,12 +191,7 @@ void ClusterServerPool::handleResponse(Handler* h, ConnectConnection* s, Request } for (auto serv : mServPool) { if (serv->updating()) { - serv->setOnline(false); serv->setUpdating(false); - if (ServerGroup* g = serv->group()) { - g->remove(serv); - serv->setGroup(nullptr); - } continue; } if (serv->role() == Server::Master) { diff --git a/src/Handler.cpp b/src/Handler.cpp index 5e8bd77..a61976c 100644 --- a/src/Handler.cpp +++ b/src/Handler.cpp @@ -1200,7 +1200,7 @@ void Handler::configGetRequest(Request* req) Append("Name", "%s", conf->name()); Append("Bind", "%s", conf->bind()); Append("WorkerThreads", "%d", conf->workerThreads()); - Append("BufSize", "%d", Buffer::getSize()); + Append("BufSize", "%d", Buffer::getSize() + sizeof(Buffer)); Append("LocalDC", "%s", conf->localDC().c_str()); Append("MaxMemory", "%ld", AllocBase::getMaxMemory()); Append("ClientTimeout", "%d", conf->clientTimeout() / 1000000); diff --git a/src/Makefile b/src/Makefile index 5205365..18055de 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,5 +1,5 @@ CXX ?= g++ -LVL ?= -O3 +LVL ?= -g -O3 Opts += $(LVL) ifeq ($(MT), false) diff --git a/src/SentinelServerPool.cpp b/src/SentinelServerPool.cpp index cce0c61..211b7fb 100644 --- a/src/SentinelServerPool.cpp +++ b/src/SentinelServerPool.cpp @@ -275,6 +275,18 @@ AddrParser::Status AddrParser::parse(SString& addr) return mState != Invalid ? Done : Error; } +static bool hasValidPort(const String& addr) +{ + const char* p = addr.data() + addr.length(); + for (int i = 0; i < addr.length(); ++i) { + if (*(--p) == ':') { + int port = atoi(p + 1); + return port > 0 && port < 65536; + } + } + return false; +} + void SentinelServerPool::handleSentinels(Handler* h, ConnectConnection* s, Request* req, Response* res) { if (!res || !res->isArray()) { @@ -286,6 +298,11 @@ void SentinelServerPool::handleSentinels(Handler* h, ConnectConnection* s, Reque auto st = parser.parse(addr); if (st == AddrParser::Ok) { logDebug("sentinel server pool parse sentinel %s", addr.data()); + if (!hasValidPort(addr)) { + logNotice("sentinel server pool parse sentienl %s invalid", + addr.data()); + continue; + } auto it = mServs.find(addr); Server* serv = it == mServs.end() ? nullptr : it->second; if (!serv) {