From: Jeffrey Altman Date: Fri, 9 Oct 2015 14:20:41 +0000 (-0400) Subject: Windows: if no known IP addrs, query the addr list X-Git-Tag: upstream/1.8.0_pre1^2~222 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=4f20b7305efcea9d930f64c348fc58555a736c6b;p=packages%2Fo%2Fopenafs.git 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 --- diff --git a/src/WINNT/afsd/cm_server.c b/src/WINNT/afsd/cm_server.c index 8b327aa46..fa3a7e9c6 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; }