}
else
{
+ int Error = atol(ChrPtr(NW->IO.IOBuf));
if (NW->IO.ErrMsg == NULL)
NW->IO.ErrMsg = NewStrBuf();
StrBufPrintf(NW->IO.ErrMsg,
- "Connected to node \"%s\" but my secret wasn't accurate.",
- ChrPtr(NW->node));
- EVN_syslog(LOG_ERR, "%s\n", ChrPtr(NW->IO.ErrMsg));
- CtdlAideMessage(ChrPtr(NW->IO.ErrMsg), "Network error");
-
+ "Connected to node \"%s\" but my secret wasn't accurate.\nReason was:%s\n",
+ ChrPtr(NW->node), ChrPtr(NW->IO.IOBuf) + 4);
+ if (Error == 552) {
+ EVN_syslog(LOG_INFO,
+ "Already talking to %s; skipping this time.\n",
+ ChrPtr(NW->node));
+
+ }
+ else {
+ EVN_syslog(LOG_ERR, "%s\n", ChrPtr(NW->IO.ErrMsg));
+ CtdlAideMessage(ChrPtr(NW->IO.ErrMsg), "Network error");
+ }
return eAbort;
}
}
{
FDIOBufferDelete(&NW->IO.IOB);
unlink(ChrPtr(NW->tempFileName));
+ FDIOBufferDelete(&IO->IOB);
return eAbort;
}
StrBufPrintf(NW->IO.SendBuf.Buf, "READ %ld|%ld\n",
NW->IO.IOB.ChunkSize = atol(ChrPtr(NW->IO.IOBuf)+4);
return eReadFile;
}
+ FDIOBufferDelete(&IO->IOB);
return eAbort;
}
eNextState NWC_ReadREADBlobDone(AsyncNetworker *NW);
NW->State ++;
FDIOBufferDelete(&NW->IO.IOB);
-
if (link(ChrPtr(NW->tempFileName), ChrPtr(NW->SpoolFileName)) != 0) {
EVN_syslog(LOG_ALERT,
"Could not link %s to %s: %s\n",
{
AsyncIO *IO = &NW->IO;
NWC_DBG_READ();
+ FDIOBufferDelete(&IO->IOB);
if (ChrPtr(NW->IO.IOBuf)[0] != '2')
return eTerminateConnection;
return eSendReply;
NW->State = eQUIT;
rc = NWC_SendQUIT(NW);
NWC_DBG_SEND();
+ if (fd > 0) close(fd);
return rc;
}
FDIOBufferInit(&NW->IO.IOB, &NW->IO.SendBuf, fd, TotalSendSize);
{
AsyncIO *IO = &NW->IO;
NWC_DBG_READ();
- if (ChrPtr(NW->IO.IOBuf)[0] != '2')
+ if (ChrPtr(NW->IO.IOBuf)[0] != '2') {
+ FDIOBufferDelete(&IO->IOB);
return eAbort;
+ }
return eSendReply;
}
NWC_DBG_READ();
if (ChrPtr(NW->IO.IOBuf)[0] != '7')
{
+ FDIOBufferDelete(&IO->IOB);
return eAbort;
}
EVN_syslog(LOG_DEBUG, "Removing <%s>\n", ChrPtr(NW->SpoolFileName));
unlink(ChrPtr(NW->SpoolFileName));
}
+ FDIOBufferDelete(&IO->IOB);
return eSendReply;
}
{
CtdlFillSystemContext(&networker_client_CC, "CitNetworker");
- CtdlRegisterSessionHook(network_do_clientqueue, EVT_TIMER);
+ CtdlRegisterSessionHook(network_do_clientqueue, EVT_TIMER, PRIO_SEND + 10);
CtdlRegisterDebugFlagHook(HKEY("networkclient"), LogDebugEnableNetworkClient, &NetworkClientDebugEnabled);
}