From 4f20b7305efcea9d930f64c348fc58555a736c6b Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 9 Oct 2015 10:20:41 -0400 Subject: [PATCH] Windows: if no known IP addrs, query the addr list If cm_noIPAddrs == 0, then no servers will be probed. If syscfg_GetIFInfo() fails then cm_noIPAddrs is set to 0. Therefore, also set cm_LanAdapterChangeDetected to non-zero if syscfg_GetIFInfo() fails so that the interface info can be queried again prior to a server probe attempt. Change-Id: I6639441fa6266671cfb875256eb23c3b018e67c9 Reviewed-on: http://gerrit.openafs.org/12055 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- src/WINNT/afsd/cm_server.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/WINNT/afsd/cm_server.c b/src/WINNT/afsd/cm_server.c index 8b327aa..fa3a7e9 100644 --- a/src/WINNT/afsd/cm_server.c +++ b/src/WINNT/afsd/cm_server.c @@ -765,6 +765,17 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp) DWORD dummyLen; DWORD multi = 1; + lock_ObtainRead(&cm_syscfgLock); + if (cm_LanAdapterChangeDetected) { + lock_ConvertRToW(&cm_syscfgLock); + if (cm_LanAdapterChangeDetected) { + code = cm_UpdateIFInfo(); + } + lock_ReleaseWrite(&cm_syscfgLock); + } else { + lock_ReleaseRead(&cm_syscfgLock); + } + code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY, 0, KEY_QUERY_VALUE, &parmKey); if (code == ERROR_SUCCESS) { @@ -861,7 +872,9 @@ afs_int32 cm_UpdateIFInfo(void) code = syscfg_GetIFInfo(&cm_noIPAddr, cm_IPAddr, cm_SubnetMask, cm_NetMtu, cm_NetFlags); - cm_LanAdapterChangeDetected = 0; + + cm_LanAdapterChangeDetected = (code != 0); + return code; } -- 1.9.4