windows-addr-change-mods-20060509
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 9 May 2006 06:18:08 +0000 (06:18 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 9 May 2006 06:18:08 +0000 (06:18 +0000)
When the client changes IP addresses, in order to obtain optimal
performance it must:

(1) force the replacement of all existing rx connections

(2) ping all up and down servers

src/WINNT/afsd/cm_daemon.c
src/WINNT/afsd/cm_server.c
src/WINNT/afsd/cm_server.h

index 0891836..ac210e1 100644 (file)
@@ -59,7 +59,8 @@ void cm_IpAddrDaemon(long parm)
        if (Result == NO_ERROR && daemon_ShutdownFlag == 0) {
            osi_Log0(afsd_logp, "cm_IpAddrDaemon CheckDownServers");
            Sleep(2500);
-            cm_CheckServers(CM_FLAG_CHECKDOWNSERVERS, NULL);
+           cm_ForceNewConnectionsAllServers();
+            cm_CheckServers(CM_FLAG_CHECKUPSERVERS | CM_FLAG_CHECKDOWNSERVERS, NULL);
            smb_CheckVCs();
        }       
     }
index e94e348..3d29d27 100644 (file)
@@ -29,6 +29,20 @@ osi_rwlock_t cm_serverLock;
 
 cm_server_t *cm_allServersp;
 
+void
+cm_ForceNewConnectionsAllServers(void)
+{
+    cm_server_t *tsp;
+
+    lock_ObtainRead(&cm_serverLock);
+    for (tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
+        cm_GetServerNoLock(tsp);
+       cm_ForceNewConnections(tsp);
+        cm_PutServerNoLock(tsp);
+    }
+    lock_ReleaseRead(&cm_serverLock);
+}
+
 void 
 cm_PingServer(cm_server_t *tsp)
 {
index 0212f0f..9182a2a 100644 (file)
@@ -103,4 +103,6 @@ extern void cm_FreeServer(cm_server_t* server);
 
 extern void cm_FreeServerList(cm_serverRef_t** list);
 
+extern void cm_ForceNewConnectionsAllServers(void);
+
 #endif /*  __CM_SERVER_H_ENV__ */