host = rx_HostOf(peerp);
port = rx_PortOf(peerp);
- tsp = cm_FindServerByIP(host, CM_SERVER_FILE);
+ tsp = cm_FindServerByIP(host, port, CM_SERVER_FILE);
if (tsp) {
cellp = tsp->cellp;
cm_PutServer(tsp);
tsp = cm_FindServerByUuid(serverUuid, CM_SERVER_FILE);
}
if (!tsp)
- tsp = cm_FindServerByIP(host, CM_SERVER_FILE);
+ tsp = cm_FindServerByIP(host, port, CM_SERVER_FILE);
if (tsp) {
cellp = tsp->cellp;
cm_PutServer(tsp);
}
cm_server_t *
-cm_FindServerByIP(afs_uint32 ipaddr, int type)
+cm_FindServerByIP(afs_uint32 ipaddr, unsigned short port, int type)
{
cm_server_t *tsp;
lock_ObtainRead(&cm_serverLock);
for (tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
if (tsp->type == type &&
- tsp->addr.sin_addr.S_un.S_addr == ipaddr)
+ tsp->addr.sin_addr.S_un.S_addr == ipaddr &&
+ (tsp->addr.sin_port == port || tsp->addr.sin_port == 0))
break;
}
down = ctime(&tsp->downTime);
down[strlen(down)-1] = '\0';
- sprintf(output, "%s - tsp=0x%p cell=%s addr=%-15s uuid=%s type=%s caps=0x%x flags=0x%x waitCount=%u rank=%u downTime=\"%s\" refCount=%u\r\n",
- cookie, tsp, tsp->cellp ? tsp->cellp->name : "", hoststr, uuidstr, type,
- tsp->capabilities, tsp->flags, tsp->waitCount, tsp->ipRank,
+ sprintf(output, "%s - tsp=0x%p cell=%s addr=%-15s port=%u uuid=%s type=%s caps=0x%x flags=0x%x waitCount=%u rank=%u downTime=\"%s\" refCount=%u\r\n",
+ cookie, tsp, tsp->cellp ? tsp->cellp->name : "", tsp->addr.sin_port, hoststr, uuidstr, type,
+ tsp->capabilities, tsp->flags, tsp->waitCount, tsp->ipRank,
(tsp->flags & CM_SERVERFLAG_DOWN) ? down : "up",
tsp->refCount);
WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
extern void cm_SetServerNoInlineBulk(cm_server_t * serverp, int no);
-extern cm_server_t * cm_FindServerByIP(afs_uint32 addr, int type);
+extern cm_server_t * cm_FindServerByIP(afs_uint32 addr, unsigned short port, int type);
extern cm_server_t * cm_FindServerByUuid(afsUUID* uuid, int type);