osi_Log1(afsd_logp, "cm_Analyze: Path MTU may have been exceeded addr[%s]",
osi_LogSaveString(afsd_logp,addr));
- retry = 1;
+ retry = 2;
}
else if (errorCode == RX_CALL_BUSY) {
/*
LogEvent(EVENTLOG_WARNING_TYPE, MSG_RX_BUSY_CALL_CHANNEL, addr);
osi_Log1(afsd_logp, "cm_Analyze: Retry RPC due to busy call channel addr[%s]",
osi_LogSaveString(afsd_logp,addr));
- retry = 1;
+ retry = 2;
}
else if (errorCode == VNOSERVICE) {
/*
osi_LogSaveString(afsd_logp,addr), fidp->volume, cellp->name);
}
- if (timeLeft > 2)
- retry = 1;
+ retry = 2;
}
else if (errorCode == RX_CALL_IDLE) {
/*
reqp->errorServp = serverp;
reqp->tokenError = errorCode;
- if (timeLeft > 2)
- retry = 1;
+ retry = 2;
}
LogEvent(EVENTLOG_WARNING_TYPE, MSG_RX_IDLE_DEAD_TIMEOUT, addr, retry);
forcing_new = 1;
cm_ForceNewConnections(serverp);
- if ( timeLeft > 2 )
- retry = 1;
+ if ( timeLeft > 2 )
+ retry = 2;
}
} else if (errorCode >= ERROR_TABLE_BASE_RXK && errorCode < ERROR_TABLE_BASE_RXK + 256) {
char * s = "unknown error";
reqp->flags |= CM_REQ_NEW_CONN_FORCED;
forcing_new = 1;
cm_ForceNewConnections(serverp);
- if ( timeLeft > 2 )
- retry = 1;
+ retry = 2;
} else {
if (connp)
_InterlockedAnd(&connp->flags, ~CM_CONN_FLAG_NEW);
/* If not allowed to retry, don't */
if (dead_session ||
- !forcing_new && (reqp->flags & CM_REQ_NORETRY) &&
+ !forcing_new && (retry < 2) && (reqp->flags & CM_REQ_NORETRY) &&
!(errorCode > -64 && errorCode <= RX_INVALID_OPERATION))
retry = 0;
userp = cm_rootUserp;
lock_ObtainMutex(&userp->mx);
+ /* find ucell structure */
+ ucellp = cm_GetUCell(userp, serverp->cellp);
+
lock_ObtainRead(&cm_connLock);
for (tcp = serverp->connsp; tcp; tcp=tcp->nextp) {
if (tcp->userp == userp &&
break;
}
- /* find ucell structure */
- ucellp = cm_GetUCell(userp, serverp->cellp);
if (!tcp) {
lock_ConvertRToW(&cm_connLock);
for (tcp = serverp->connsp; tcp; tcp=tcp->nextp) {
- if (tcp->userp == userp)
- break;
+ if (tcp->userp == userp &&
+ (replicated && (tcp->flags & CM_CONN_FLAG_REPLICATION) ||
+ !replicated && !(tcp->flags & CM_CONN_FLAG_REPLICATION)))
+ break;
}
if (tcp) {
InterlockedIncrement(&tcp->refCount);
{
cm_conn_t *tcp;
+ if (serverp == NULL)
+ return;
+
lock_ObtainWrite(&cm_connLock);
for (tcp = serverp->connsp; tcp; tcp=tcp->nextp) {
lock_ObtainMutex(&tcp->mx);