viced-callback-lock-host-during-multi-breakcallback-20041011

since it looks like CheckHost is using a gc'd client conn, this more or less has to be it.

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================

since it looks like CheckHost is using a gc'd client conn, this more or less has
 to be it.

and don't deadlock.

====================

since it looks like CheckHost is using a gc'd client conn, this more or less has
 to be it.

and don't deadlock.

====================

since it looks like CheckHost is using a gc'd client conn, this more or less has
 to be it.

and don't deadlock.
This commit is contained in:
Derrick Brashear 2004-10-11 19:39:55 +00:00
parent 3b9cdc23b5
commit d98a0af85d

View File

@ -776,6 +776,7 @@ MultiBreakCallBack_r(struct cbstruct cba[], int ncbas,
if (!thishost || (thishost->hostFlags & HOSTDELETED)) { if (!thishost || (thishost->hostFlags & HOSTDELETED)) {
continue; continue;
} }
rx_GetConnection(thishost->callback_rxcon);
conns[j++] = thishost->callback_rxcon; conns[j++] = thishost->callback_rxcon;
#ifdef ADAPT_MTU #ifdef ADAPT_MTU
@ -853,8 +854,10 @@ MultiBreakCallBack_r(struct cbstruct cba[], int ncbas,
for (i = 0; i < ncbas; i++) { for (i = 0; i < ncbas; i++) {
struct host *hp; struct host *hp;
hp = cba[i].hp; hp = cba[i].hp;
if (hp && xhost != hp) if (hp && xhost != hp) {
rx_PutConnection(hp->callback_rxcon);
h_Release_r(hp); h_Release_r(hp);
}
} }
return; return;