From: Love Hörnquist-Åstrand Date: Tue, 18 Mar 2003 03:54:51 +0000 (+0000) Subject: viced-vbusy-when-getclient-fails-20030317 X-Git-Tag: openafs-devel-1_3_50~308 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=4f35fbb68005579f626d021632e899301f551c66;p=packages%2Fo%2Fopenafs.git viced-vbusy-when-getclient-fails-20030317 more paranoia to not crash if GetClient fails, since there's apparently a race we haven't found yet --- diff --git a/src/viced/host.c b/src/viced/host.c index 36d718e5b..e77d8b2b0 100644 --- a/src/viced/host.c +++ b/src/viced/host.c @@ -1509,6 +1509,19 @@ int GetClient(struct rx_connection * tcon, struct client **cp) H_LOCK *cp = client = (struct client *) rx_GetSpecific(tcon, rxcon_client_key); + if (client == NULL || client->tcon == NULL) { + ViceLog(0, ("GetClient: no client in conn %x (host %x), VBUSYING\n", + tcon, rx_HostOf(rx_PeerOf(tcon)))); + H_UNLOCK + return VBUSY; + } + if (rxr_CidOf(client->tcon) != client->sid) { + ViceLog(0, ("GetClient: tcon %x tcon sid %d client sid %d\n", + client->tcon, rxr_CidOf(client->tcon), + client->sid)); + H_UNLOCK + return VBUSY; + } if (!(client && client->tcon && rxr_CidOf(client->tcon) == client->sid)) { if (!client) ViceLog(0, ("GetClient: no client in conn %x\n", tcon));