NW->IO.IOB.TotalSentAlready = 0;
TotalSendSize = atol (ChrPtr(NW->IO.IOBuf) + 4);
- EVN_syslog(LOG_DEBUG, "Expecting to transfer %ld bytes\n", TotalSendSize);
+ EVN_syslog(LOG_DEBUG, "Expecting to transfer %d bytes\n", TotalSendSize);
if (TotalSendSize <= 0) {
NW->State = eNUOP - 1;
}
{
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);
eNextState rc;
AsyncIO *IO = &NW->IO;
/* we don't have any data to debug print here. */
- if (NW->IO.IOB.TotalSendSize == NW->IO.IOB.TotalSentAlready)
+ if (NW->IO.IOB.TotalSentAlready >= NW->IO.IOB.TotalSendSize)
{
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;
ChrPtr(NW->node));
StrBufStripSlashes(NW->SpoolFileName, 1);
- fd = open(ChrPtr(NW->SpoolFileName), O_RDONLY);
+ fd = open(ChrPtr(NW->SpoolFileName), O_EXCL|O_NONBLOCK|O_RDONLY);
if (fd < 0) {
if (errno != ENOENT) {
EVN_syslog(LOG_CRIT,
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;
}
{
AsyncIO *IO = &NW->IO;
eNextState rc;
- if (IO->IOB.TotalSendSize == NW->IO.IOB.TotalSentAlready)
+ if (NW->IO.IOB.TotalSentAlready >= IO->IOB.TotalSendSize)
{
NW->State ++;
EVN_syslog(LOG_DEBUG, "Removing <%s>\n", ChrPtr(NW->SpoolFileName));
unlink(ChrPtr(NW->SpoolFileName));
}
+ FDIOBufferDelete(&IO->IOB);
return eSendReply;
}