STABLE12-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


(cherry picked from commit 4f35fbb680)
This commit is contained in:
Love Hörnquist-Åstrand 2003-03-18 03:55:18 +00:00 committed by Derrick Brashear
parent fb45c4e0bf
commit 5020cd875f

View File

@ -1492,6 +1492,19 @@ int GetClient(tcon, 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));