$NetBSD: patch-df,v 1.1 1999/04/28 23:57:04 rvb Exp $ diff -u /usr/pkgsrc/net/coda-5.2.2/coda-src/venus/comm.cc ./coda-src/venus/comm.cc --- /usr/pkgsrc/net/coda-5.2.2/coda-src/venus/comm.cc Mon Apr 19 20:02:53 1999 +++ ./coda-src/venus/comm.cc Wed Apr 28 13:01:26 1999 @@ -172,13 +172,6 @@ if (gethostname(myHostName, MAXHOSTNAMELEN) < 0) CHOKE("CommInit: gethostname failed"); - /* Hostid is needed for storeid generation. */ -#ifdef DJGPP - myHostId = __djgpp_get_my_host(); /* this needs MYHOST in the cwd */ -#else - myHostId = gethostid(); -#endif - /* Initialize Connections. */ connent::conntab = new olist; @@ -1074,6 +1067,7 @@ probeme = 0; EventCounter = 0; userbw = 0; + isweak = 0; bw = INIT_BW; bwvar = 0; timerclear(&lastobs); @@ -1353,6 +1347,7 @@ long srvent::GetBandwidth(unsigned long *Bandwidth) { long rc = 0; unsigned long oldbw = bw; + unsigned long bwmin, bwmax; LOG(1, ("srvent::GetBandwidth (%s) lastobs %ld.%06ld\n", name, lastobs.tv_sec, lastobs.tv_usec)); @@ -1371,9 +1366,9 @@ } /* retrieve the bandwidth information from RPC2 */ - if ((rc = RPC2_GetBandwidth(connid, &bw, &bwvar)) != RPC2_SUCCESS) + if ((rc = RPC2_GetBandwidth(connid, &bwmin, &bw, &bwmax)) != RPC2_SUCCESS) return(rc); - + LOG(1, ("srvent:GetBandWidth: --> new BW %d bytes/sec\n", bw)); /* update last observation time */ @@ -1383,20 +1378,22 @@ * Signal if we've crossed the weakly-connected threshold. Note * that the connection is considered strong until proven otherwise. */ - if (oldbw > WCThresh && bw <= WCThresh) { + if (!isweak && bwmax < WCThresh) { + isweak = 1; MarinerLog("connection::weak %s\n", name); VSGDB->WeakEvent(host); NotifyUsersOfServerWeakEvent(name); } - else if (oldbw <= WCThresh && bw > WCThresh) { + else if (isweak && bwmin > WCThresh) { + isweak = 0; MarinerLog("connection::strong %s\n", name); VSGDB->StrongEvent(host); NotifyUsersOfServerStrongEvent(name); } *Bandwidth = bw; + MarinerLog("connection::bandwidth %s %d %d %d\n", name,bwmin,bw,bwmax); if (bw != oldbw) { - MarinerLog("connection::bandwidth %s %d\n", name, bw); NotifyUsersOfServerBandwidthEvent(name,*Bandwidth); } LOG(1, ("srvent::GetBandwidth (%s) returns %d bytes/sec\n", @@ -1430,12 +1427,14 @@ */ bw = userbw ? b : INIT_BW; bwvar = 0; - if (oldbw > WCThresh && bw <= WCThresh) { + if (!isweak && bw <= WCThresh) { + isweak = 1; MarinerLog("connection::weak %s\n", name); VSGDB->WeakEvent(host); NotifyUsersOfServerWeakEvent(name); } - else if (oldbw <= WCThresh && bw > WCThresh) { + else if (isweak && bw > WCThresh) { + isweak = 0; MarinerLog("connection::strong %s\n", name); VSGDB->StrongEvent(host); NotifyUsersOfServerStrongEvent(name);