From f2f7ba50ed61a6187814d633327a8cacda0f656f Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Fri, 28 Dec 2012 13:16:49 -0500 Subject: [PATCH] viced: initInterfaceAddr_r regardless of ICBS code Currently we only call initInterfaceAddr_r for a host if a call to RXAFS_InitCallBackState3 succeeds. However, this leaves the host without a host->interface structure, which indicates that the host does not support UUIDs, and is represented by just a single host,port pair. But this is not correct; the host probably does have the relevant UUID associated with it, but it is just not responding. So, with the current code, we create a uuid-less host structure for a host that probably has a uuid; that host structure will probably never be used, and will just get deleted later. So instead, always call initInterfaceAdd_r. Do it before the ICBS call, so the host will be findable via UUID as early as possible. If the ICBS call fails, the host will be marked as 'down' later on. Change-Id: I3a000af90773acbdd66fc22718e5e742619839a1 Reviewed-on: http://gerrit.openafs.org/8847 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/viced/host.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/viced/host.c b/src/viced/host.c index e65dee0b02..9e31e11564 100644 --- a/src/viced/host.c +++ b/src/viced/host.c @@ -2127,6 +2127,9 @@ h_GetHost_r(struct rx_connection *tcon) /* the new host is held and locked */ } else { /* This really is a new host */ + opr_Assert(interfValid == 1); + initInterfaceAddr_r(host, &interf); + cb_conn = host->callback_rxcon; rx_GetConnection(cb_conn); H_UNLOCK; @@ -2141,8 +2144,6 @@ h_GetHost_r(struct rx_connection *tcon) ("InitCallBackState3 success on host %" AFS_PTR_FMT " (%s:%d)\n", host, afs_inet_ntoa_r(host->host, hoststr), ntohs(host->port))); - opr_Assert(interfValid == 1); - initInterfaceAddr_r(host, &interf); } } }