mirror of
https://github.com/joyieldInc/predixy.git
synced 2025-12-24 22:46:41 +08:00
Throw error on empty ip address
This commit is contained in:
parent
dacf3fb30c
commit
6c49085347
@ -10,6 +10,8 @@
|
||||
#include "Buffer.h"
|
||||
#include "String.h"
|
||||
#include "Server.h"
|
||||
#include "arpa/inet.h"
|
||||
#include "string.h"
|
||||
|
||||
class ClusterNodesParser
|
||||
{
|
||||
@ -55,6 +57,33 @@ public:
|
||||
end = mSlotEnd;
|
||||
return begin >= 0 && begin < end;
|
||||
}
|
||||
bool validAddr() const {
|
||||
if (mAddr.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const char* host = "";
|
||||
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:
|
||||
enum State
|
||||
{
|
||||
|
||||
@ -101,7 +101,7 @@ void ClusterServerPool::handleResponse(Handler* h, ConnectConnection* s, Request
|
||||
p.addr().data(),
|
||||
p.flags().data(),
|
||||
p.master().data());
|
||||
if (p.addr().empty()) {
|
||||
if (!p.validAddr()) {
|
||||
logWarn("redis cluster nodes get node invalid %s %s %s %s",
|
||||
p.nodeId().data(),
|
||||
p.addr().data(),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user