]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-multi-check-servers-20080206
authorJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 6 Feb 2008 19:31:09 +0000 (19:31 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 6 Feb 2008 19:31:09 +0000 (19:31 +0000)
LICENSE MIT

do not leak references

remove signed vs unsigned warnings

retry all RXGEN_OPCODE responses regardless of whether or not the entry
had to be moved to consolidate the list.

(cherry picked from commit 5d61f37949fd561f4c9d777cc67c5fd3db835e29)

src/WINNT/afsd/cm_server.c

index 655fe44873157c9db2e559d17d861d5db9c6da08..20c62172868e15fbf2372154fe1a28a2e0578614 100644 (file)
@@ -273,10 +273,9 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
     int srvAddrCount = 0;
     struct srvAddr **addrs = NULL;
     cm_conn_t **conns = NULL;
-    int nconns = 0;
     struct rx_connection **rxconns = NULL;
     cm_req_t req;
-    afs_uint32 i, j;
+    afs_int32 i, j, nconns = 0;
     afs_int32 *conntimer, *results;
     Capabilities *caps = NULL;
     cm_server_t ** serversp, *tsp;
@@ -300,7 +299,9 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
 
     memset(caps, 0, j * sizeof(Capabilities));
 
-    if (!(flags & CM_FLAG_CHECKVLDBSERVERS)) {
+    if ((flags & CM_FLAG_CHECKFILESERVERS) || 
+        !(flags & (CM_FLAG_CHECKFILESERVERS|CM_FLAG_CHECKVLDBSERVERS)))
+    {
         lock_ObtainWrite(&cm_serverLock);
         nconns = 0;
         for (nconns=0, tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
@@ -465,10 +466,12 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
          * that RXAFS_GetCapabilities is not supported.
          */
         for ( i=0, j=0; i<nconns; i++) {
-            if (results[i] == RXGEN_OPCODE && i != j) {
-                conns[j] = conns[i];
-                rxconns[j] = rxconns[i];
-                serversp[j] = serversp[i];
+            if (results[i] == RXGEN_OPCODE) {
+                if (i != j) {
+                    conns[j] = conns[i];
+                    rxconns[j] = rxconns[i];
+                    serversp[j] = serversp[i];
+                }
                 j++;
             }
         }
@@ -585,7 +588,9 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
         }
     }
 
-    if (!(flags & CM_FLAG_CHECKFILESERVERS)) {
+    if ((flags & CM_FLAG_CHECKVLDBSERVERS) || 
+        !(flags & (CM_FLAG_CHECKFILESERVERS|CM_FLAG_CHECKVLDBSERVERS)))
+    {
         lock_ObtainWrite(&cm_serverLock);
         nconns = 0;
         for (nconns=0, tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
@@ -620,7 +625,8 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
             }
             lock_ObtainWrite(&cm_serverLock);
             rxconns[nconns] = cm_GetRxConn(conns[nconns]);
-            if (conntimer[nconns] = (isDown ? 1 : 0))
+            conntimer[nconns] = (isDown ? 1 : 0);
+            if (isDown)
                 rx_SetConnDeadTime(rxconns[nconns], 10);
 
             nconns++;
@@ -638,10 +644,6 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
 
         /* Process results of servers that support RXAFS_GetCapabilities */
         for (i=0; i<nconns; i++) {
-            /* Leave the servers that did not support GetCapabilities alone */
-            if (results[i] == RXGEN_OPCODE)
-                continue;
-
             if (conntimer[i])
                 rx_SetConnDeadTime(rxconns[i], ConnDeadtimeout);
             rx_PutConnection(rxconns[i]);