LOGGING: add name to pop3 logging & message writing
[citadel.git] / citadel / modules / pop3client / serv_pop3client.c
index 599a35e69f396fd994c6621a78cd50f283d0d705..433309f38895ed0d9e6877f510ad40848e985d3c 100644 (file)
@@ -63,12 +63,12 @@ int POP3ClientDebugEnabled = 0;
 
 #define EVP3C_syslog(LEVEL, FORMAT, ...)                               \
        DBGLOG(LEVEL) syslog(LEVEL,                                     \
-                            "IO[%ld]CC[%d][%ld]" FORMAT,               \
+                            "IO[%ld]CC[%d][%ld]POP3: " FORMAT,         \
                             IO->ID, CCID, N, __VA_ARGS__)
 
 #define EVP3CM_syslog(LEVEL, FORMAT)                                   \
        DBGLOG(LEVEL) syslog(LEVEL,                                     \
-                            "IO[%ld]CC[%d][%ld]" FORMAT,               \
+                            "IO[%ld]CC[%d][%ld]POP3: " FORMAT,         \
                             IO->ID, CCID, N)
 
 #define EVP3CQ_syslog(LEVEL, FORMAT, ...)                              \
@@ -82,21 +82,23 @@ int POP3ClientDebugEnabled = 0;
                )
 
 #define EVP3CCS_syslog(LEVEL, FORMAT, ...)                             \
-       DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]" FORMAT,              \
+       DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]POP3: " FORMAT,        \
                             IO->ID, N, __VA_ARGS__)
 
-#define EVP3CCSM_syslog(LEVEL, FORMAT)                         \
-       DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]" FORMAT,      \
+#define EVP3CCSM_syslog(LEVEL, FORMAT)                                 \
+       DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]POP3: " FORMAT,        \
                             IO->ID, N)
 
 #define POP3C_DBG_SEND()                                               \
        EVP3C_syslog(LOG_DEBUG,                                         \
-                    "POP3: > %s\n",                                    \
+                    "IO[%ld]CC[%d][%ld]POP3: > %s\n",                  \
+                    IO->ID, CCID, N,                                   \
                     ChrPtr(RecvMsg->IO.SendBuf.Buf))
 
-#define POP3C_DBG_READ()                               \
-       EVP3C_syslog(LOG_DEBUG,                         \
-                    "POP3: < %s\n",                    \
+#define POP3C_DBG_READ()                                               \
+       EVP3C_syslog(LOG_DEBUG,                                         \
+                    "IO[%ld]CC[%d][%ld]POP3: < %s\n",                  \
+                    IO->ID, CCID, N,                                   \
                     ChrPtr(RecvMsg->IO.IOBuf))
 
 
@@ -171,6 +173,7 @@ struct pop3aggr {
        StrBuf          *Url;
        StrBuf *pop3user;
        StrBuf *pop3pass;
+       StrBuf *Host;
        StrBuf *RoomName; // TODO: fill me
        int keep;
        time_t interval;
@@ -188,6 +191,7 @@ void DeletePOP3Aggregator(void *vptr)
 //     FreeStrBuf(&ptr->rooms);
        FreeStrBuf(&ptr->pop3user);
        FreeStrBuf(&ptr->pop3pass);
+       FreeStrBuf(&ptr->Host);
        FreeStrBuf(&ptr->RoomName);
        FreeURL(&ptr->IO.ConnectMe);
        FreeStrBuf(&ptr->Url);
@@ -209,7 +213,7 @@ eNextState FinalizePOP3AggrRun(AsyncIO *IO)
        EVP3C_syslog(LOG_INFO,
                     "%s@%s: fetched %ld new of %d messages in %fs. bye.",
                     ChrPtr(cpptr->pop3user),
-                    ChrPtr(cpptr->pop3pass),
+                    ChrPtr(cpptr->Host),
                     cpptr->count,
                     GetCount(cpptr->MsgNumbers), 
                     IO->Now - cpptr->IOStart 
@@ -359,7 +363,8 @@ eNextState POP3_FetchNetworkUsetableEntry(AsyncIO *IO)
        struct cdbdata *cdbut;
        pop3aggr *RecvMsg = (pop3aggr *) IO->Data;
 
-       if(GetNextHashPos(RecvMsg->MsgNumbers,
+       if((RecvMsg->Pos != NULL) &&
+          GetNextHashPos(RecvMsg->MsgNumbers,
                          RecvMsg->Pos,
                          &HKLen,
                          &HKey,
@@ -423,7 +428,8 @@ eNextState POP3C_GetOneMessagID(pop3aggr *RecvMsg)
        if (rc != 0)
                EVP3CCS_syslog(LOG_DEBUG, "Hash Invalid: %d\n", rc);
 #endif
-       if(GetNextHashPos(RecvMsg->MsgNumbers,
+       if((RecvMsg->Pos != NULL) &&
+          GetNextHashPos(RecvMsg->MsgNumbers,
                          RecvMsg->Pos,
                          &HKLen, &HKey,
                          &vData))
@@ -437,7 +443,7 @@ eNextState POP3C_GetOneMessagID(pop3aggr *RecvMsg)
        }
        else
        {
-           RecvMsg->State++;
+               RecvMsg->State++;
                DeleteHashPos(&RecvMsg->Pos);
                /// done receiving uidls.. start looking them up now.
                RecvMsg->Pos = GetNewHashPos(RecvMsg->MsgNumbers, 0);
@@ -486,7 +492,8 @@ eNextState POP3C_SendGetOneMsg(pop3aggr *RecvMsg)
        void *vData;
 
        RecvMsg->CurrMsg = NULL;
-       while (GetNextHashPos(RecvMsg->MsgNumbers,
+       while ((RecvMsg->Pos != NULL) && 
+              GetNextHashPos(RecvMsg->MsgNumbers,
                              RecvMsg->Pos,
                              &HKLen, &HKey,
                              &vData) &&
@@ -1056,7 +1063,6 @@ void pop3client_scan_room(struct ctdlroom *qrbuf, void *data)
                        if (!strcasecmp("pop3client", ChrPtr(CfgType)))
                        {
                                pop3aggr *cptr;
-                               StrBuf *Tmp;
 /*
                                if (Count == NULL)
                                {
@@ -1075,9 +1081,10 @@ void pop3client_scan_room(struct ctdlroom *qrbuf, void *data)
                                cptr->pop3pass =
                                        NewStrBufPlain(NULL, StrLength(Line));
                                cptr->Url = NewStrBuf();
-                               Tmp = NewStrBuf();
+                               cptr->Host =
+                                       NewStrBufPlain(NULL, StrLength(Line));
 
-                               StrBufExtract_NextToken(Tmp, Line, &lPtr, '|');
+                               StrBufExtract_NextToken(cptr->Host, Line, &lPtr, '|');
                                StrBufExtract_NextToken(cptr->pop3user,
                                                        Line,
                                                        &lPtr,
@@ -1101,11 +1108,10 @@ void pop3client_scan_room(struct ctdlroom *qrbuf, void *data)
                                StrBufAppendBufPlain(cptr->Url, HKEY(":"), 0);
                                StrBufUrlescUPAppend(cptr->Url, cptr->pop3pass, NULL);
                                StrBufAppendBufPlain(cptr->Url, HKEY("@"), 0);
-                               StrBufAppendBuf(cptr->Url, Tmp, 0);
+                               StrBufAppendBuf(cptr->Url, cptr->Host, 0);
                                StrBufAppendBufPlain(cptr->Url, HKEY("/"), 0);
                                StrBufUrlescAppend(cptr->Url, cptr->RoomName, NULL);
 
-                               FreeStrBuf(&Tmp);
                                ParseURL(&cptr->IO.ConnectMe, cptr->Url, 110);
 
 
@@ -1260,7 +1266,7 @@ CTDL_MODULE_INIT(pop3client)
                pthread_mutex_init(&POP3QueueMutex, NULL);
                POP3QueueRooms = NewHash(1, lFlathash);
                POP3FetchUrls = NewHash(1, NULL);
-               CtdlRegisterSessionHook(pop3client_scan, EVT_TIMER);
+               CtdlRegisterSessionHook(pop3client_scan, EVT_TIMER, PRIO_AGGR + 50);
                CtdlRegisterEVCleanupHook(pop3_cleanup);
                CtdlRegisterDebugFlagHook(HKEY("pop3client"), LogDebugEnablePOP3Client, &POP3ClientDebugEnabled);
        }