struct AFSCBs tc;
int code;
int j;
+ struct rx_connection *cb_conn = NULL;
#ifdef ADAPT_MTU
rx_SetConnDeadTime(ahost->callback_rxcon, 4);
tc.AFSCBs_len = i;
tc.AFSCBs_val = tcbs;
+ cb_conn = ahost->callback_rxcon;
+ rx_GetConnection(cb_conn);
H_UNLOCK;
- code |= RXAFSCB_CallBack(ahost->callback_rxcon, &tf, &tc);
+ code |= RXAFSCB_CallBack(cb_conn, &tf, &tc);
+ rx_PutConnection(cb_conn);
+ cb_conn = NULL;
H_LOCK;
}
struct CallBack *cb;
int code;
char hoststr[16];
+ struct rx_connection *cb_conn;
cbstuff.nbreakers++;
if (!(host->hostFlags & RESETDONE) && !(host->hostFlags & HOSTDELETED)) {
host->hostFlags &= ~ALTADDR; /* alterrnate addresses are invalid */
+ cb_conn = host->callback_rxcon;
+ rx_GetConnection(cb_conn);
if (host->interface) {
H_UNLOCK;
code =
- RXAFSCB_InitCallBackState3(host->callback_rxcon,
- &FS_HostUUID);
- H_LOCK;
+ RXAFSCB_InitCallBackState3(cb_conn, &FS_HostUUID);
} else {
H_UNLOCK;
- code = RXAFSCB_InitCallBackState(host->callback_rxcon);
- H_LOCK;
+ code = RXAFSCB_InitCallBackState(cb_conn);
}
+ rx_PutConnection(cb_conn);
+ cb_conn = NULL;
+ H_LOCK;
host->hostFlags |= ALTADDR; /* alternate addresses are valid */
if (code) {
if (ShowProblems) {
int code;
int held = 0;
char hoststr[16];
+ struct rx_connection *cb_conn = NULL;
ViceLog(5,
("GSS: Delete longest inactive host %s\n",
} else {
/* host is up, try a call */
hp->hostFlags &= ~ALTADDR; /* alternate addresses are invalid */
+ cb_conn = hp->callback_rxcon;
+ rx_GetConnection(hp->callback_rxcon);
if (hp->interface) {
H_UNLOCK;
code =
- RXAFSCB_InitCallBackState3(hp->callback_rxcon, &FS_HostUUID);
- H_LOCK;
+ RXAFSCB_InitCallBackState3(cb_conn, &FS_HostUUID);
} else {
H_UNLOCK;
- code = RXAFSCB_InitCallBackState(hp->callback_rxcon);
- H_LOCK;
+ code = RXAFSCB_InitCallBackState(cb_conn);
}
+ rx_PutConnection(cb_conn);
+ cb_conn = NULL;
+ H_LOCK;
hp->hostFlags |= ALTADDR; /* alternate addresses are valid */
if (code) {
/* failed, mark host down and need reset */
afs_int32 hport;
char hoststr[16], hoststr2[16];
Capabilities caps;
+ struct rx_connection *cb_conn = NULL;
caps.Capabilities_val = NULL;
goto retry;
}
host->hostFlags &= ~ALTADDR;
+ cb_conn = host->callback_rxcon;
+ rx_GetConnection(cb_conn);
H_UNLOCK;
code =
- RXAFSCB_TellMeAboutYourself(host->callback_rxcon, &interf, &caps);
+ RXAFSCB_TellMeAboutYourself(cb_conn, &interf, &caps);
if (code == RXGEN_OPCODE)
- code = RXAFSCB_WhoAreYou(host->callback_rxcon, &interf);
+ code = RXAFSCB_WhoAreYou(cb_conn, &interf);
+ rx_PutConnection(cb_conn);
+ cb_conn=NULL;
H_LOCK;
if (code == RXGEN_OPCODE) {
identP = (struct Identity *)malloc(sizeof(struct Identity));
h_gethostcps_r(host, FT_ApproxTime());
if (!(host->Console & 1)) {
int pident = 0;
+ cb_conn = host->callback_rxcon;
+ rx_GetConnection(cb_conn);
H_UNLOCK;
code =
- RXAFSCB_TellMeAboutYourself(host->callback_rxcon, &interf,
- &caps);
+ RXAFSCB_TellMeAboutYourself(cb_conn, &interf, &caps);
if (code == RXGEN_OPCODE)
- code = RXAFSCB_WhoAreYou(host->callback_rxcon, &interf);
+ code = RXAFSCB_WhoAreYou(cb_conn, &interf);
+ rx_PutConnection(cb_conn);
+ cb_conn=NULL;
H_LOCK;
if (code == RXGEN_OPCODE) {
if (!identP)
ntohs(host->port)));
}
if (code == 0 && !identP->valid) {
+ cb_conn = host->callback_rxcon;
+ rx_GetConnection(cb_conn);
H_UNLOCK;
- code = RXAFSCB_InitCallBackState(host->callback_rxcon);
+ code = RXAFSCB_InitCallBackState(cb_conn);
+ rx_PutConnection(cb_conn);
+ cb_conn=NULL;
H_LOCK;
} else if (code == 0) {
oldHost = h_LookupUuid_r(&identP->uuid);
} else {
/* This really is a new host */
hashInsertUuid_r(&identP->uuid, host);
+ cb_conn = host->callback_rxcon;
+ rx_GetConnection(cb_conn);
H_UNLOCK;
code =
- RXAFSCB_InitCallBackState3(host->callback_rxcon,
+ RXAFSCB_InitCallBackState3(cb_conn,
&FS_HostUUID);
+ rx_PutConnection(cb_conn);
+ cb_conn=NULL;
H_LOCK;
if (code == 0) {
ViceLog(25,
CheckHost(register struct host *host, int held)
{
register struct client *client;
+ struct rx_connection *cb_conn = NULL;
int code;
/* Host is held by h_Enumerate */
}
if (host->LastCall < checktime) {
h_Lock_r(host);
+ cb_conn = host->callback_rxcon;
+ rx_GetConnection(cb_conn);
if (!(host->hostFlags & HOSTDELETED)) {
if (host->LastCall < clientdeletetime) {
host->hostFlags |= HOSTDELETED;
if (host->interface) {
H_UNLOCK;
code =
- RXAFSCB_InitCallBackState3(host->callback_rxcon,
+ RXAFSCB_InitCallBackState3(cb_conn,
&FS_HostUUID);
H_LOCK;
} else {
H_UNLOCK;
code =
- RXAFSCB_InitCallBackState(host->callback_rxcon);
+ RXAFSCB_InitCallBackState(cb_conn);
H_LOCK;
}
host->hostFlags |= ALTADDR; /* alternate addresses valid */
if (host->interface) {
afsUUID uuid = host->interface->uuid;
H_UNLOCK;
- code = RXAFSCB_ProbeUuid(host->callback_rxcon, &uuid);
+ code = RXAFSCB_ProbeUuid(cb_conn, &uuid);
H_LOCK;
if (code) {
if (MultiProbeAlternateAddress_r(host)) {
}
} else {
H_UNLOCK;
- code = RXAFSCB_Probe(host->callback_rxcon);
+ code = RXAFSCB_Probe(cb_conn);
H_LOCK;
if (code) {
char hoststr[16];
}
}
}
+ H_UNLOCK;
+ rx_PutConnection(cb_conn);
+ cb_conn=NULL;
+ H_LOCK;
h_Unlock_r(host);
}
H_UNLOCK;