From f5a97a145e09a16a9b2d3ab485f33f520235b7e9 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 11 May 2009 15:15:35 +0000 Subject: [PATCH] windows-hard-and-idle-dead-timeouts-20090511 LICENSE MIT Fix conditional test that assigns value to idleDeadTimeout Modify event log message to indicate timeout could be either a hard or an idle timeout. As described in the source comments, do not retry on a hard or idle timeout. --- src/WINNT/afsd/afsd_eventmessages.mc | 2 +- src/WINNT/afsd/cm_conn.c | 32 ++++++++++++++-------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/WINNT/afsd/afsd_eventmessages.mc b/src/WINNT/afsd/afsd_eventmessages.mc index 53f48a618..37c76a0be 100644 --- a/src/WINNT/afsd/afsd_eventmessages.mc +++ b/src/WINNT/afsd/afsd_eventmessages.mc @@ -163,7 +163,7 @@ Severity=Warning Facility=System SymbolicName=MSG_RX_HARD_DEAD_TIME_EXCEEDED Language=English -Hard Dead Time exceeded when communicating with server %1 +Hard or Idle Dead Time exceeded when communicating with server %1 . MessageId= diff --git a/src/WINNT/afsd/cm_conn.c b/src/WINNT/afsd/cm_conn.c index 693b7feae..4d28832fc 100644 --- a/src/WINNT/afsd/cm_conn.c +++ b/src/WINNT/afsd/cm_conn.c @@ -107,7 +107,7 @@ void cm_InitConn(void) HardDeadtimeout = (unsigned short) RDRtimeout; afsi_log("HardDeadTimeout is %d", HardDeadtimeout); } - if (ConnDeadtimeout == 0) { + if (IdleDeadtimeout == 0) { IdleDeadtimeout = (unsigned short) RDRtimeout; afsi_log("IdleDeadTimeout is %d", IdleDeadtimeout); } @@ -604,28 +604,28 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp, /* RX codes */ else if (errorCode == RX_CALL_TIMEOUT) { - /* server took longer than hardDeadTime + /* RPC took longer than hardDeadTime or the server + * reported idle for longer than idleDeadTime * don't mark server as down but don't retry * this is to prevent the SMB session from timing out * In addition, we log an event to the event log */ if (serverp) { - /* Log server being offline for this volume */ - sprintf(addr, "%d.%d.%d.%d", - ((serverp->addr.sin_addr.s_addr & 0xff)), - ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8), - ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16), - ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); - - LogEvent(EVENTLOG_WARNING_TYPE, MSG_RX_HARD_DEAD_TIME_EXCEEDED, addr); + /* Log server being offline for this volume */ + sprintf(addr, "%d.%d.%d.%d", + ((serverp->addr.sin_addr.s_addr & 0xff)), + ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8), + ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16), + ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); + + LogEvent(EVENTLOG_WARNING_TYPE, MSG_RX_HARD_DEAD_TIME_EXCEEDED, addr); - osi_Log1(afsd_logp, "cm_Analyze: hardDeadTime exceeded addr[%s]", - osi_LogSaveString(afsd_logp,addr)); - reqp->tokenIdleErrorServp = serverp; - reqp->idleError++; - retry = 1; - } + osi_Log1(afsd_logp, "cm_Analyze: hardDeadTime or idleDeadtime exceeded addr[%s]", + osi_LogSaveString(afsd_logp,addr)); + reqp->tokenIdleErrorServp = serverp; + reqp->idleError++; + } } else if (errorCode >= -64 && errorCode < 0) { /* mark server as down */ -- 2.39.5