This commit is contained in:
Nidhi Agarwal 2024-02-09 07:45:14 -07:00 committed by GitHub
commit c9341d1965
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 1 deletions

View File

@ -10,6 +10,8 @@
#include "Buffer.h" #include "Buffer.h"
#include "String.h" #include "String.h"
#include "Server.h" #include "Server.h"
#include "arpa/inet.h"
#include "string.h"
class ClusterNodesParser class ClusterNodesParser
{ {
@ -55,6 +57,33 @@ public:
end = mSlotEnd; end = mSlotEnd;
return begin >= 0 && begin < end; return begin >= 0 && begin < end;
} }
bool validAddr() const {
if (mAddr.empty()) {
return false;
}
const char* host = mAddr.data();
const char* port = strrchr(mAddr, ':');
if (port) {
std::string tmp;
tmp.append(mAddr, port - mAddr);
host = tmp.c_str();
}
char dst1[INET_ADDRSTRLEN];
int isIpv4 = inet_pton(AF_INET, host, dst1);
if (isIpv4) {
return true;
}
char dst2[INET6_ADDRSTRLEN];
int isIpv6 = inet_pton(AF_INET6, host, dst2);
if (isIpv6) {
return true;
}
return false;
}
private: private:
enum State enum State
{ {

View File

@ -101,7 +101,7 @@ void ClusterServerPool::handleResponse(Handler* h, ConnectConnection* s, Request
p.addr().data(), p.addr().data(),
p.flags().data(), p.flags().data(),
p.master().data()); p.master().data());
if (p.addr().empty()) { if (!p.validAddr()) {
logWarn("redis cluster nodes get node invalid %s %s %s %s", logWarn("redis cluster nodes get node invalid %s %s %s %s",
p.nodeId().data(), p.nodeId().data(),
p.addr().data(), p.addr().data(),