#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
+#include <sysconfig.h>
#if TIME_WITH_SYS_TIME
# include <sys/time.h>
#define EVP3C_syslog(LEVEL, FORMAT, ...) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%d][%ld]POP3: " FORMAT, \
- IO->ID, CCID, N, __VA_ARGS__)
+ "%s[%ld]CC[%d][%ld]POP3: " FORMAT, \
+ IOSTR, IO->ID, CCID, N, __VA_ARGS__)
#define EVP3CM_syslog(LEVEL, FORMAT) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%d][%ld]POP3: " FORMAT, \
- IO->ID, CCID, N)
+ "%s[%ld]CC[%d][%ld]POP3: " FORMAT, \
+ IOSTR, IO->ID, CCID, N)
#define EVP3CQ_syslog(LEVEL, FORMAT, ...) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "P3Q:" FORMAT, \
- __VA_ARGS__)
+ "%s P3Q:" FORMAT, \
+ IOSTR, __VA_ARGS__)
#define EVP3CQM_syslog(LEVEL, FORMAT) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "P3Q" FORMAT \
- )
+ "%s P3Q" FORMAT, \
+ IOSTR)
#define EVP3CCS_syslog(LEVEL, FORMAT, ...) \
- DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]POP3: " FORMAT, \
- IO->ID, N, __VA_ARGS__)
+ DBGLOG(LEVEL) syslog(LEVEL, "%s[%ld][%ld]POP3: " FORMAT, \
+ IOSTR, IO->ID, N, __VA_ARGS__)
#define EVP3CCSM_syslog(LEVEL, FORMAT) \
- DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]POP3: " FORMAT, \
- IO->ID, N)
+ DBGLOG(LEVEL) syslog(LEVEL, "%s[%ld][%ld]POP3: " FORMAT, \
+ IOSTR, IO->ID, N)
#define POP3C_DBG_SEND() \
EVP3C_syslog(LOG_DEBUG, \
- "IO[%ld]CC[%d][%ld]POP3: > %s\n", \
- IO->ID, CCID, N, \
+ "%s[%ld]CC[%d][%ld]POP3: > %s\n", \
+ IOSTR, IO->ID, CCID, N, \
ChrPtr(RecvMsg->IO.SendBuf.Buf))
#define POP3C_DBG_READ() \
EVP3C_syslog(LOG_DEBUG, \
- "IO[%ld]CC[%d][%ld]POP3: < %s\n", \
- IO->ID, CCID, N, \
+ "%s[%ld]CC[%d][%ld]POP3: < %s\n", \
+ IOSTR, IO->ID, CCID, N, \
ChrPtr(RecvMsg->IO.IOBuf))
const char *HKey;
void *vData;
pop3aggr *RecvMsg = (pop3aggr *) IO->Data;
+ time_t seenstamp = 0;
SetPOP3State(IO, eUseTable);
if (server_shutting_down)
return eAbort;
- if (CheckIfAlreadySeen("POP3 Item Seen",
- RecvMsg->CurrMsg->MsgUID,
- IO->Now,
- IO->Now, //// todo
- eCheckUpdate,
- IO->ID, CCID)
- != 0)
+ RecvMsg->CurrMsg = (FetchItem*)vData;
+
+ seenstamp = CheckIfAlreadySeen("POP3 Item Seen",
+ RecvMsg->CurrMsg->MsgUID,
+ EvGetNow(IO),
+ EvGetNow(IO) - USETABLE_ANTIEXPIRE,
+ eCheckUpdate,
+ IO->ID, CCID);
+ if (seenstamp != 0)
{
/* Item has already been seen */
RecvMsg->CurrMsg->NeedFetch = 0;
/// done receiving uidls.. start looking them up now.
RecvMsg->Pos = GetNewHashPos(RecvMsg->MsgNumbers, 0);
return EventQueueDBOperation(&RecvMsg->IO,
- POP3_FetchNetworkUsetableEntry);
+ POP3_FetchNetworkUsetableEntry,
+ 0);
}
return eReadMore; /* TODO */
}
SetPOP3State(IO, eGetMsg);
+ EVP3CM_syslog(LOG_DEBUG, "fast forwarding to the next unknown message");
+
RecvMsg->CurrMsg = NULL;
while ((RecvMsg->Pos != NULL) &&
GetNextHashPos(RecvMsg->MsgNumbers,
if ((RecvMsg->CurrMsg != NULL ) && (RecvMsg->CurrMsg->NeedFetch == 1))
{
+ EVP3CM_syslog(LOG_DEBUG, "fetching next");
/* Message has not been seen.
* Tell the server to fetch the message... */
StrBufPrintf(RecvMsg->IO.SendBuf.Buf,
return eReadMessage;
}
else {
+ EVP3CM_syslog(LOG_DEBUG, "no more messages to fetch.");
RecvMsg->State = ReadQuitState;
return POP3_C_DispatchWriteDone(&RecvMsg->IO);
}
ChrPtr(RecvMsg->CurrMsg->MsgUID));
CheckIfAlreadySeen("POP3 Item Seen",
RecvMsg->CurrMsg->MsgUID,
- IO->Now,
- IO->Now, //// todo
+ EvGetNow(IO),
+ EvGetNow(IO) - USETABLE_ANTIEXPIRE,
eWrite,
IO->ID, CCID);
EVP3CM_syslog(LOG_DEBUG, "Converting message...");
RecvMsg->CurrMsg->Msg =
convert_internet_message_buf(&RecvMsg->IO.ReadMsg->MsgBuf);
- return EventQueueDBOperation(&RecvMsg->IO, POP3C_SaveMsg);
+ return EventQueueDBOperation(&RecvMsg->IO, POP3C_SaveMsg, 0);
}
eNextState POP3C_SendDelete(pop3aggr *RecvMsg)
AsyncIO *IO = &RecvMsg->IO;
POP3C_DBG_READ();
RecvMsg->State = GetOneMessageIDState;
- return eReadMessage;
+ return POP3_C_DispatchWriteDone(&RecvMsg->IO);
}
eNextState POP3C_SendQuit(pop3aggr *RecvMsg)