Merge d6f7e692b3
into 91863dd854
This commit is contained in:
commit
dff18af4ac
|
@ -1547,12 +1547,18 @@ void clusterProcessGossipSection(clusterMsg *hdr, clusterLink *link) {
|
|||
/* IP -> string conversion. 'buf' is supposed to at least be 46 bytes.
|
||||
* If 'announced_ip' length is non-zero, it is used instead of extracting
|
||||
* the IP from the socket peer address. */
|
||||
void nodeIp2String(char *buf, clusterLink *link, char *announced_ip) {
|
||||
int nodeIp2String(char *buf, clusterLink *link, char *announced_ip) {
|
||||
if (announced_ip[0] != '\0') {
|
||||
memcpy(buf,announced_ip,NET_IP_STR_LEN);
|
||||
buf[NET_IP_STR_LEN-1] = '\0'; /* We are not sure the input is sane. */
|
||||
return C_OK;
|
||||
} else {
|
||||
connPeerToString(link->conn, buf, NET_IP_STR_LEN, NULL);
|
||||
if (connPeerToString(link->conn, buf, NET_IP_STR_LEN, NULL) == C_ERR) {
|
||||
serverLog(LL_NOTICE, "Error converting peer IP to string: %s",
|
||||
link->conn ? connGetLastError(link->conn) : "no link");
|
||||
return C_ERR;
|
||||
}
|
||||
return C_OK;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1584,7 +1590,11 @@ int nodeUpdateAddressIfNeeded(clusterNode *node, clusterLink *link,
|
|||
* it is safe to call during packet processing. */
|
||||
if (link == node->link) return 0;
|
||||
|
||||
nodeIp2String(ip,link,hdr->myip);
|
||||
/* If the peer IP is unavailable for some reasons like invalid fd or closed
|
||||
* link, just give up the update this time, and the update will be retried
|
||||
* in the next round of PINGs */
|
||||
if (nodeIp2String(ip,link,hdr->myip) == C_ERR) return 0;
|
||||
|
||||
if (node->port == port && node->cport == cport && node->pport == pport &&
|
||||
strcmp(ip,node->ip) == 0) return 0;
|
||||
|
||||
|
@ -1899,7 +1909,7 @@ int clusterProcessPacket(clusterLink *link) {
|
|||
clusterNode *node;
|
||||
|
||||
node = createClusterNode(NULL,CLUSTER_NODE_HANDSHAKE);
|
||||
nodeIp2String(node->ip,link,hdr->myip);
|
||||
serverAssert(nodeIp2String(node->ip,link,hdr->myip) == C_OK);
|
||||
node->port = ntohs(hdr->port);
|
||||
node->pport = ntohs(hdr->pport);
|
||||
node->cport = ntohs(hdr->cport);
|
||||
|
|
|
@ -373,7 +373,11 @@ int connGetSocketError(connection *conn) {
|
|||
}
|
||||
|
||||
int connPeerToString(connection *conn, char *ip, size_t ip_len, int *port) {
|
||||
return anetFdToString(conn ? conn->fd : -1, ip, ip_len, port, FD_TO_PEER_NAME);
|
||||
if (anetFdToString(conn ? conn->fd : -1, ip, ip_len, port, FD_TO_PEER_NAME) == -1) {
|
||||
if (conn) conn->last_errno = errno;
|
||||
return C_ERR;
|
||||
}
|
||||
return C_OK;
|
||||
}
|
||||
|
||||
int connSockName(connection *conn, char *ip, size_t ip_len, int *port) {
|
||||
|
|
Loading…
Reference in New Issue