FreeStrBuf(&ptr->IO.SendBuf.Buf);
FreeStrBuf(&ptr->IO.RecvBuf.Buf);
DeleteAsyncMsg(&ptr->IO.ReadMsg);
+ ((struct CitContext*)ptr->IO.CitContext)->state = CON_IDLE;
+ ((struct CitContext*)ptr->IO.CitContext)->kill_me = 1;
FreeAsyncIOContents(&ptr->IO);
free(ptr);
}
It = GetNewHashPos(POP3FetchUrls, 0);
pthread_mutex_lock(&POP3QueueMutex);
{
- GetHashPosFromKey(POP3FetchUrls, SKEY(cptr->Url), It);
- DeleteEntryFromHash(POP3FetchUrls, It);
+ if (GetHashPosFromKey(POP3FetchUrls, SKEY(cptr->Url), It))
+ DeleteEntryFromHash(POP3FetchUrls, It);
}
pthread_mutex_unlock(&POP3QueueMutex);
DeleteHashPos(&It);
syslog(LOG_DEBUG, "POP3: %s\n", __FUNCTION__);
switch (NextTCPState) {
+ case eSendFile:
case eSendReply:
case eSendMore:
Timeout = POP3_C_SendTimeouts[pMsg->State];
}
*/
break;
+ case eReadFile:
case eReadMessage:
Timeout = POP3_C_ReadTimeouts[pMsg->State];
/*
case eAbort:
Finished = eReadFail;
break;
+ case eSendFile:
case eSendReply:
case eSendMore:
case eReadMore:
case eReadMessage:
Finished = StrBufChunkSipLine(IO->IOBuf, &IO->RecvBuf);
break;
+ case eReadFile:
case eReadPayload:
Finished = CtdlReadMessageBodyAsync(IO);
break;
/////// SetConnectStatus(IO);
- return InitEventIO(IO, cpptr,
- POP3_C_ConnTimeout,
- POP3_C_ReadTimeouts[0],
- 1);
+ return EvConnectSock(IO, cpptr,
+ POP3_C_ConnTimeout,
+ POP3_C_ReadTimeouts[0],
+ 1);
}
eNextState pop3_get_one_host_ip_done(AsyncIO *IO)
cpptr->IO.Terminate = POP3_C_Terminate;
cpptr->IO.LineReader = POP3_C_ReadServerStatus;
cpptr->IO.ConnFail = POP3_C_ConnFail;
- cpptr->IO.DNSFail = POP3_C_DNSFail;
+ cpptr->IO.DNS.Fail = POP3_C_DNSFail;
cpptr->IO.Timeout = POP3_C_Timeout;
cpptr->IO.ShutdownAbort = POP3_C_Shutdown;
SubC = CloneContext (&pop3_client_CC);
SubC->session_specific_data = (char*) cpptr;
cpptr->IO.CitContext = SubC;
+ safestrncpy(SubC->cs_host,
+ ChrPtr(cpptr->Url),
+ sizeof(SubC->cs_host));
if (cpptr->IO.ConnectMe->IsIP) {
QueueEventContext(&cpptr->IO,
FreeStrBuf(&CfgData);
}
+static int doing_pop3client = 0;
void pop3client_scan(void) {
static time_t last_run = 0L;
- static int doing_pop3client = 0;
/// struct pop3aggr *pptr;
time_t fastest_scan;
HashPos *it;
void pop3_cleanup(void)
{
/* citthread_mutex_destroy(&POP3QueueMutex); TODO */
-// DeleteHash(&POP3FetchUrls);
+ while (doing_pop3client != 0) ;
+ DeleteHash(&POP3FetchUrls);
DeleteHash(&POP3QueueRooms);
}