extern int DebugSession;
#define CONDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugSession != 0))
-#define CON_syslog(LEVEL, FORMAT, ...) \
- CONDBGLOG(LEVEL) syslog(LEVEL, \
- "Context: " FORMAT, __VA_ARGS__)
+#define CON_syslog(LEVEL, FORMAT, ...) \
+ CONDBGLOG(LEVEL) syslog(LEVEL, \
+ "%s Context: " FORMAT, IOSTR, __VA_ARGS__)
-#define CONM_syslog(LEVEL, FORMAT) \
- CONDBGLOG(LEVEL) syslog(LEVEL, \
- "Context: " FORMAT);
+#define CONM_syslog(LEVEL, FORMAT) \
+ CONDBGLOG(LEVEL) syslog(LEVEL, \
+ "%s Context: " FORMAT, IOSTR);
#endif /* CONTEXT_H */
#define DBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (SeentDebugEnabled != 0))
#define SEENM_syslog(LEVEL, FORMAT) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%ld] SEEN[%s][%d] " FORMAT, \
- ioid, ccid, Facility, cType)
+ "%s[%ld]CC[%ld] SEEN[%s][%d] " FORMAT, \
+ IOSTR, ioid, ccid, Facility, cType)
time_t CheckIfAlreadySeen(const char *Facility,
StrBuf *guid,
void StopClientWatchers(AsyncIO *IO, int CloseFD)
{
+ EVM_syslog(LOG_DEBUG, "EVENT StopClientWatchers");
+
ev_timer_stop (event_base, &IO->rw_timeout);
ev_timer_stop(event_base, &IO->conn_fail);
ev_idle_stop(event_base, &IO->unwind_stack);
typedef struct CitContext CitContext;
#endif
+extern pthread_key_t evConKey;
+
typedef enum __eIOState {
eDBQ,
eQDBNext,
extern int DebugEventLoop;
extern int DebugCAres;
+#define IOSTR (const char *) pthread_getspecific(evConKey)
+
#define EDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugEventLoop != 0))
#define CCID ((CitContext*)IO->CitContext)?((CitContext*)IO->CitContext)->cs_pid:-1
#define EVQ_syslog(LEVEL, FORMAT, ...) \
- EDBGLOG (LEVEL) syslog(LEVEL, "IOQ " FORMAT, __VA_ARGS__)
+ EDBGLOG (LEVEL) syslog(LEVEL, "%sQ " FORMAT, IOSTR, __VA_ARGS__)
#define EVQM_syslog(LEVEL, FORMAT) \
- EDBGLOG (LEVEL) syslog(LEVEL, "IO " FORMAT)
+ EDBGLOG (LEVEL) syslog(LEVEL, "%s " FORMAT, IOSTR)
#define EV_syslog(LEVEL, FORMAT, ...) \
- EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d] " FORMAT, IO->ID, CCID, __VA_ARGS__)
+ EDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]CC[%d] " FORMAT, IOSTR, IO->ID, CCID, __VA_ARGS__)
#define EVM_syslog(LEVEL, FORMAT) \
- EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d] " FORMAT, IO->ID, CCID)
+ EDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]CC[%d] " FORMAT, IOSTR, IO->ID, CCID)
#define EVNC_syslog(LEVEL, FORMAT, ...) \
- EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld] " FORMAT, IO->ID, __VA_ARGS__)
+ EDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld] " FORMAT, IOSTR, IO->ID, __VA_ARGS__)
-#define EVNCM_syslog(LEVEL, FORMAT) EDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]" FORMAT, IO->ID)
+#define EVNCM_syslog(LEVEL, FORMAT) EDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]" FORMAT, IOSTR, IO->ID)
#define CDBGLOG() if (DebugCAres != 0)
#define CEDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugCAres != 0))
#define EV_DNS_LOG_START(a) \
- CDBGLOG () {syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %s %p FD %d", IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
+ CDBGLOG () {syslog(LOG_DEBUG, "%s[%ld]CC[%d] + Starting " #a " %s %p FD %d", IOSTR, IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
EV_backtrace(IO);}
#define EV_DNS_LOG_STOP(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %s %p FD %d", IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
+ CDBGLOG () { syslog(LOG_DEBUG, "%s[%ld]CC[%d] - Stopping " #a " %s %p FD %d", IOSTR, IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
EV_backtrace(IO);}
#define EV_DNS_LOG_INIT(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %s %p FD %d", IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
+ CDBGLOG () { syslog(LOG_DEBUG, "%s[%ld]CC[%d] * Init " #a " %s %p FD %d", IOSTR, IO->ID, CCID, __FUNCTION__, &IO->a, IO->a.fd); \
EV_backtrace(IO);}
#define EV_DNS_LOGT_START(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] + Starting " #a " %s %p", IO->ID, CCID, __FUNCTION__, &IO->a); \
+ CDBGLOG () { syslog(LOG_DEBUG, "%s[%ld]CC[%d] + Starting " #a " %s %p", IOSTR, IO->ID, CCID, __FUNCTION__, &IO->a); \
EV_backtrace(IO);}
#define EV_DNS_LOGT_STOP(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] - Stopping " #a " %s %p", IO->ID, CCID, __FUNCTION__, &IO->a); \
+ CDBGLOG () { syslog(LOG_DEBUG, "%s[%ld]CC[%d] - Stopping " #a " %s %p", IOSTR, IO->ID, CCID, __FUNCTION__, &IO->a); \
EV_backtrace(IO); }
#define EV_DNS_LOGT_INIT(a) \
- CDBGLOG () { syslog(LOG_DEBUG, "IO[%ld]CC[%d] * Init " #a " %p", IO->ID, CCID, &IO->a); \
+ CDBGLOG () { syslog(LOG_DEBUG, "%s[%ld]CC[%d] * Init " #a " %p", IOSTR, IO->ID, CCID, &IO->a); \
EV_backtrace(IO);}
#define EV_DNS_syslog(LEVEL, FORMAT, ...) \
- CEDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d] " FORMAT, IO->ID, CCID, __VA_ARGS__)
+ CEDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]CC[%d] " FORMAT, IOSTR, IO->ID, CCID, __VA_ARGS__)
#define EVM_DNS_syslog(LEVEL, FORMAT) \
- CEDBGLOG (LEVEL) syslog(LEVEL, "IO[%ld]CC[%d] " FORMAT, IO->ID, CCID)
+ CEDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]CC[%d] " FORMAT, IOSTR, IO->ID, CCID)
void FreeAsyncIOContents(AsyncIO *IO);
int DebugEventLoop = 0;
int DebugEventLoopBacktrace = 0;
int DebugCurl = 0;
+pthread_key_t evConKey;
long EvIDSource = 1;
/*****************************************************************************
#define DBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugCurl != 0))
#define EVCURL_syslog(LEVEL, FORMAT, ...) \
- DBGLOG (LEVEL) syslog(LEVEL, "EVCURL:IO[%ld]CC[%d] " FORMAT, \
- IO->ID, CCID, __VA_ARGS__)
+ DBGLOG (LEVEL) syslog(LEVEL, "EVCURL:%s[%ld]CC[%d] " FORMAT, \
+ IOSTR, IO->ID, CCID, __VA_ARGS__)
#define EVCURLM_syslog(LEVEL, FORMAT) \
- DBGLOG (LEVEL) syslog(LEVEL, "EVCURL:IO[%ld]CC[%d] " FORMAT, \
- IO->ID, CCID)
+ DBGLOG (LEVEL) syslog(LEVEL, "EVCURL:%s[%ld]CC[%d] " FORMAT, \
+ IOSTR, IO->ID, CCID)
#define CURL_syslog(LEVEL, FORMAT, ...) \
DBGLOG (LEVEL) syslog(LEVEL, "CURL: " FORMAT, __VA_ARGS__)
extern void CtdlDestroyEVCleanupHooks(void);
extern int EVQShutDown;
+const char *IOLog = "IO";
/*
* this thread operates the select() etc. via libev.
*/
struct CitContext libev_client_CC;
CtdlFillSystemContext(&libev_client_CC, "LibEv Thread");
-// citthread_setspecific(MyConKey, (void *)&smtp_queue_CC);
+
+ pthread_setspecific(evConKey, IOLog);
+
EVQM_syslog(LOG_DEBUG, "client_event_thread() initializing\n");
event_base = ev_default_loop (EVFLAG_AUTO);
DBInboundEventQueue = DBInboundEventQueues[0];
}
+const char *DBLog = "BD";
+
/*
* this thread operates writing to the message database via libev.
*/
ev_loop *tmp;
struct CitContext libev_msg_CC;
+ pthread_setspecific(evConKey, DBLog);
+
CtdlFillSystemContext(&libev_msg_CC, "LibEv DB IO Thread");
EVQM_syslog(LOG_DEBUG, "dbevent_thread() initializing\n");
DebugCurl = n;
}
+const char *WLog = "WX";
CTDL_MODULE_INIT(event_client)
{
if (!threading)
{
+ if (pthread_key_create(&evConKey, NULL) != 0) {
+ syslog(LOG_CRIT, "Can't create TSD key: %s", strerror(errno));
+ }
+ pthread_setspecific(evConKey, WLog);
+
CtdlRegisterDebugFlagHook(HKEY("eventloop"), DebugEventloopEnable, &DebugEventLoop);
CtdlRegisterDebugFlagHook(HKEY("eventloopbacktrace"), DebugEventloopBacktraceEnable, &DebugEventLoopBacktrace);
CtdlRegisterDebugFlagHook(HKEY("curl"), DebugCurlEnable, &DebugCurl);
#define IMAPDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (IMAPDebugEnabled != 0))
#define CCCID CCC->cs_pid
-#define IMAP_syslog(LEVEL, FORMAT, ...) \
- IMAPDBGLOG(LEVEL) syslog(LEVEL, \
- "IMAPCC[%d] " FORMAT, \
- CCCID, __VA_ARGS__)
-
-#define IMAPM_syslog(LEVEL, FORMAT) \
- IMAPDBGLOG(LEVEL) syslog(LEVEL, \
- "IMAPCC[%d] " FORMAT, \
- CCCID)
+#define IMAP_syslog(LEVEL, FORMAT, ...) \
+ IMAPDBGLOG(LEVEL) syslog(LEVEL, \
+ "IMAP %s CC[%d] " FORMAT, \
+ IOSTR, CCCID, __VA_ARGS__)
+
+#define IMAPM_syslog(LEVEL, FORMAT) \
+ IMAPDBGLOG(LEVEL) syslog(LEVEL, \
+ "IMAP %s CC[%d] " FORMAT, \
+ IOSTR, CCCID)
#define I_FLAG_NONE (0)
#define I_FLAG_LOGGED_IN (1<<0)
#define EVN_syslog(LEVEL, FORMAT, ...) \
NCDBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%d]NW[%s][%ld]" FORMAT, \
- IO->ID, CCID, NODE, N, __VA_ARGS__)
+ "%s[%ld]CC[%d]NW[%s][%ld]" FORMAT, \
+ IOSTR, IO->ID, CCID, NODE, N, __VA_ARGS__)
#define EVNM_syslog(LEVEL, FORMAT) \
NCDBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%d]NW[%s][%ld]" FORMAT, \
- IO->ID, CCID, NODE, N)
+ "%s[%ld]CC[%d]NW[%s][%ld]" FORMAT, \
+ IOSTR, IO->ID, CCID, NODE, N)
#define EVNCS_syslog(LEVEL, FORMAT, ...) \
- NCDBGLOG(LEVEL) syslog(LEVEL, "IO[%ld]NW[%s][%ld]" FORMAT, \
- IO->ID, NODE, N, __VA_ARGS__)
+ NCDBGLOG(LEVEL) syslog(LEVEL, "%s[%ld]NW[%s][%ld]" FORMAT, \
+ IOSTR, IO->ID, NODE, N, __VA_ARGS__)
#define EVNCSM_syslog(LEVEL, FORMAT) \
- NCDBGLOG(LEVEL) syslog(LEVEL, "IO[%ld]NW[%s][%ld]" FORMAT, \
- IO->ID, NODE, N)
+ NCDBGLOG(LEVEL) syslog(LEVEL, "%s[%ld]NW[%s][%ld]" FORMAT, \
+ IOSTR, IO->ID, NODE, N)
typedef enum _eNWCState {
#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))
#define EVRSSATOM_syslog(LEVEL, FORMAT, ...) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%d][%ld]RSSP" FORMAT, \
- IO->ID, CCID, N, __VA_ARGS__)
+ "%s[%ld]CC[%d][%ld]RSSP" FORMAT, \
+ IOSTR, IO->ID, CCID, N, __VA_ARGS__)
#define EVRSSATOMM_syslog(LEVEL, FORMAT) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%d][%ld]RSSP" FORMAT, \
- IO->ID, CCID, N)
+ "%s[%ld]CC[%d][%ld]RSSP" FORMAT, \
+ IOSTR, IO->ID, CCID, N)
#define EVRSSATOMCS_syslog(LEVEL, FORMAT, ...) \
- DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]RSSP" FORMAT, \
- IO->ID, N, __VA_ARGS__)
+ DBGLOG(LEVEL) syslog(LEVEL, "%s[%ld][%ld]RSSP" FORMAT, \
+ IOSTR, IO->ID, N, __VA_ARGS__)
#define EVRSSATOMSM_syslog(LEVEL, FORMAT) \
- DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]RSSP" FORMAT, \
- IO->ID, N)
+ DBGLOG(LEVEL) syslog(LEVEL, "%s[%ld][%ld]RSSP" FORMAT, \
+ IOSTR, IO->ID, N)
/*
* Convert an RDF/RSS datestamp into a time_t
#define EVRSSC_syslog(LEVEL, FORMAT, ...) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%d][%ld]RSS" FORMAT, \
- IO->ID, CCID, N, __VA_ARGS__)
+ "%s[%ld]CC[%d][%ld]RSS" FORMAT, \
+ IOSTR, IO->ID, CCID, N, __VA_ARGS__)
#define EVRSSCM_syslog(LEVEL, FORMAT) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "IO[%ld]CC[%d][%ld]RSS" FORMAT, \
- IO->ID, CCID, N)
+ "%s[%ld]CC[%d][%ld]RSS" FORMAT, \
+ IOSTR, IO->ID, CCID, N)
#define EVRSSQ_syslog(LEVEL, FORMAT, ...) \
DBGLOG(LEVEL) syslog(LEVEL, "RSS" FORMAT, \
DBGLOG(LEVEL) syslog(LEVEL, "RSS" FORMAT)
#define EVRSSCSM_syslog(LEVEL, FORMAT) \
- DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]RSS" FORMAT, \
- IO->ID, N)
+ DBGLOG(LEVEL) syslog(LEVEL, "%s[%ld][%ld]RSS" FORMAT, \
+ IOSTR, IO->ID, N)
typedef enum _RSSState {
eRSSCreated,
#define EVS_syslog(LEVEL, FORMAT, ...) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "SMTPC:IO[%ld]CC[%d]S[%ld][%ld] " FORMAT, \
- IO->ID, CCID, QID, N, __VA_ARGS__)
+ "SMTPC:%s[%ld]CC[%d]S[%ld][%ld] " FORMAT, \
+ IOSTR, IO->ID, CCID, QID, N, __VA_ARGS__)
#define EVSM_syslog(LEVEL, FORMAT) \
DBGLOG(LEVEL) syslog(LEVEL, \
- "SMTPC:IO[%ld]CC[%d]S[%ld][%ld] " FORMAT, \
- IO->ID, CCID, QID, N)
+ "SMTPC:%s[%ld]CC[%d]S[%ld][%ld] " FORMAT, \
+ IOSTR, IO->ID, CCID, QID, N)
#define EVNCS_syslog(LEVEL, FORMAT, ...) \
- DBGLOG(LEVEL) syslog(LEVEL, "SMTPC:IO[%ld]S[%ld][%ld] " FORMAT, \
- IO->ID, QID, N, __VA_ARGS__)
+ DBGLOG(LEVEL) syslog(LEVEL, "SMTPC:%s[%ld]S[%ld][%ld] " FORMAT, \
+ IOSTR, IO->ID, QID, N, __VA_ARGS__)
#define EVNCSM_syslog(LEVEL, FORMAT) \
- DBGLOG(LEVEL) syslog(LEVEL, "SMTPC:IO[%ld]S[%ld][%ld] " FORMAT, \
- IO->ID, QID, N)
+ DBGLOG(LEVEL) syslog(LEVEL, "SMTPC:%s[%ld]S[%ld][%ld] " FORMAT, \
+ IOSTR, IO->ID, QID, N)
#define SMTPC_syslog(LEVEL, FORMAT, ...) \
DBGLOG(LEVEL) syslog(LEVEL, \
extern int DebugModules;
#define MDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugModules != 0))
-#define MOD_syslog(LEVEL, FORMAT, ...) \
- MDBGLOG(LEVEL) syslog(LEVEL, \
- "Modules: " FORMAT, __VA_ARGS__)
+#define MOD_syslog(LEVEL, FORMAT, ...) \
+ MDBGLOG(LEVEL) syslog(LEVEL, \
+ "%s Modules: " FORMAT, IOSTR, __VA_ARGS__)
-#define MODM_syslog(LEVEL, FORMAT) \
- MDBGLOG(LEVEL) syslog(LEVEL, \
- "Modules: " FORMAT);
+#define MODM_syslog(LEVEL, FORMAT) \
+ MDBGLOG(LEVEL) syslog(LEVEL, \
+ "%s Modules: " FORMAT, IOSTR);
}
-
+const char *WorkerLogStr = "W";
/*
* This loop just keeps going and going and going...
*/
++num_workers;
pthread_mutex_unlock(&ThreadCountMutex);
+ pthread_setspecific(evConKey, WorkerLogStr);
+
while (!server_shutting_down) {
/* make doubly sure we're not holding any stale db handles