case when we're destroying a client connection with active
calls.
The second part fixes a minor connection refcount leak in
my recent modification to protect against half-reachable
clients.
(Note: the first part of this was pulled up a while ago. The second
part wasn't, and is being pulled up now.)
{
if (error) {
register int i;
+ MUTEX_ENTER(&conn->conn_data_lock);
if (conn->challengeEvent)
rxevent_Cancel(conn->challengeEvent, (struct rx_call*)0, 0);
if (conn->checkReachEvent) {
rxevent_Cancel(conn->checkReachEvent, (struct rx_call*)0, 0);
conn->checkReachEvent = 0;
+ conn->refCount--;
}
+ MUTEX_EXIT(&conn->conn_data_lock);
for (i=0; i<RX_MAXCALLS; i++) {
struct rx_call *call = conn->call[i];
if (call) {