From 7a4aaaf5d40c2992763ac992e840edd4efbe4623 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sun, 29 Apr 2012 15:48:48 +0200 Subject: [PATCH] XMPP: make logging configurable. --- citadel/modules/xmpp/serv_xmpp.c | 31 +++++++++++++-------- citadel/modules/xmpp/serv_xmpp.h | 13 +++++++++ citadel/modules/xmpp/xmpp_presence.c | 14 +++++----- citadel/modules/xmpp/xmpp_query_namespace.c | 10 +++---- citadel/modules/xmpp/xmpp_queue.c | 2 +- 5 files changed, 45 insertions(+), 25 deletions(-) diff --git a/citadel/modules/xmpp/serv_xmpp.c b/citadel/modules/xmpp/serv_xmpp.c index 86685664d..374c49142 100644 --- a/citadel/modules/xmpp/serv_xmpp.c +++ b/citadel/modules/xmpp/serv_xmpp.c @@ -64,6 +64,8 @@ struct xmpp_event *xmpp_queue = NULL; +int XMPPSrvDebugEnable = 0; + #ifdef HAVE_XML_STOPPARSER @@ -74,7 +76,7 @@ static void xmpp_entity_declaration(void *userData, const XML_Char *entityName, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName ) { - syslog(LOG_WARNING, "Illegal entity declaration encountered; stopping parser."); + XMPPM_syslog(LOG_WARNING, "Illegal entity declaration encountered; stopping parser."); XML_StopParser(XMPP->xp, XML_FALSE); } #endif @@ -203,9 +205,9 @@ void xmpp_xml_start(void *data, const char *supplied_el, const char **attr) { } /* - syslog(LOG_DEBUG, "XMPP ELEMENT START: <%s>\n", el); + XMPP_syslog(LOG_DEBUG, "XMPP ELEMENT START: <%s>\n", el); for (i=0; attr[i] != NULL; i+=2) { - syslog(LOG_DEBUG, " Attribute '%s' = '%s'\n", attr[i], attr[i+1]); + XMPP_syslog(LOG_DEBUG, " Attribute '%s' = '%s'\n", attr[i], attr[i+1]); } uncomment for more verbosity */ @@ -275,9 +277,9 @@ void xmpp_xml_end(void *data, const char *supplied_el) { } /* - syslog(LOG_DEBUG, "XMPP ELEMENT END : <%s>\n", el); + XMPP_syslog(LOG_DEBUG, "XMPP ELEMENT END : <%s>\n", el); if (XMPP->chardata_len > 0) { - syslog(LOG_DEBUG, " chardata: %s\n", XMPP->chardata); + XMPP_syslog(LOG_DEBUG, " chardata: %s\n", XMPP->chardata); } uncomment for more verbosity */ @@ -338,9 +340,9 @@ void xmpp_xml_end(void *data, const char *supplied_el) { * Unknown query ... return the XML equivalent of a blank stare */ else { - syslog(LOG_DEBUG, - "Unknown query <%s> - returning \n", - el + XMPP_syslog(LOG_DEBUG, + "Unknown query <%s> - returning \n", + el ); cprintf("", xmlesc(xmlbuf, XMPP->iq_id, sizeof xmlbuf)); cprintf("" @@ -473,14 +475,14 @@ void xmpp_xml_end(void *data, const char *supplied_el) { } else if (!strcasecmp(el, "stream")) { - syslog(LOG_DEBUG, "XMPP client shut down their stream\n"); + XMPPM_syslog(LOG_DEBUG, "XMPP client shut down their stream\n"); xmpp_massacre_roster(); cprintf("\n"); CC->kill_me = KILLME_CLIENT_LOGGED_OUT; } else { - syslog(LOG_DEBUG, "Ignoring unknown tag <%s>\n", el); + XMPP_syslog(LOG_DEBUG, "Ignoring unknown tag <%s>\n", el); } XMPP->chardata_len = 0; @@ -545,7 +547,7 @@ void xmpp_greeting(void) { XMPP->xp = XML_ParserCreateNS("UTF-8", ':'); if (XMPP->xp == NULL) { - syslog(LOG_ALERT, "Cannot create XML parser!\n"); + XMPPM_syslog(LOG_ALERT, "Cannot create XML parser!\n"); CC->kill_me = KILLME_XML_PARSER; return; } @@ -582,7 +584,7 @@ void xmpp_command_loop(void) { XML_Parse(XMPP->xp, ChrPtr(stream_input), rc, 0); } else { - syslog(LOG_ERR, "XMPP: client disconnected: ending session.\n"); + XMPPM_syslog(LOG_ERR, "client disconnected: ending session.\n"); CC->kill_me = KILLME_CLIENT_DISCONNECTED; } FreeStrBuf(&stream_input); @@ -614,6 +616,10 @@ void xmpp_logout_hook(void) { } +void LogXMPPSrvDebugEnable(const int n) +{ + XMPPSrvDebugEnable = n; +} const char *CitadelServiceXMPP="XMPP"; extern void xmpp_cleanup_events(void); CTDL_MODULE_INIT(xmpp) @@ -626,6 +632,7 @@ CTDL_MODULE_INIT(xmpp) xmpp_async_loop, CitadelServiceXMPP ); + CtdlRegisterDebugFlagHook(HKEY("serv_xmpp"), LogXMPPSrvDebugEnable, &XMPPSrvDebugEnable); CtdlRegisterSessionHook(xmpp_cleanup_function, EVT_STOP); CtdlRegisterSessionHook(xmpp_login_hook, EVT_LOGIN); CtdlRegisterSessionHook(xmpp_logout_hook, EVT_LOGOUT); diff --git a/citadel/modules/xmpp/serv_xmpp.h b/citadel/modules/xmpp/serv_xmpp.h index df1298c9d..c3281a5c4 100644 --- a/citadel/modules/xmpp/serv_xmpp.h +++ b/citadel/modules/xmpp/serv_xmpp.h @@ -83,3 +83,16 @@ void xmpp_massacre_roster(void); void xmpp_delete_old_buddies_who_no_longer_exist_from_the_client_roster(void); int xmpp_is_visible(struct CitContext *from, struct CitContext *to_whom); char *xmlesc(char *buf, char *str, int bufsiz); + +extern int XMPPSrvDebugEnable; + +#define DBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (XMPPSrvDebugEnable != 0)) + +#define XMPP_syslog(LEVEL, FORMAT, ...) \ + DBGLOG(LEVEL) syslog(LEVEL, \ + "XMPP: " FORMAT, __VA_ARGS__) + +#define XMPPM_syslog(LEVEL, FORMAT) \ + DBGLOG(LEVEL) syslog(LEVEL, \ + "XMPP: " FORMAT); + diff --git a/citadel/modules/xmpp/xmpp_presence.c b/citadel/modules/xmpp/xmpp_presence.c index f42d74f40..d4e69316a 100644 --- a/citadel/modules/xmpp/xmpp_presence.c +++ b/citadel/modules/xmpp/xmpp_presence.c @@ -194,13 +194,13 @@ void xmpp_presence_notify(char *presence_jid, int event_type) { } } - syslog(LOG_DEBUG, "%d sessions for <%s> are now visible to session %d\n", - visible_sessions, presence_jid, CC->cs_pid); + XMPP_syslog(LOG_DEBUG, "%d sessions for <%s> are now visible to session %d\n", + visible_sessions, presence_jid, CC->cs_pid); if ( (event_type == XMPP_EVT_LOGIN) && (visible_sessions == 1) ) { - syslog(LOG_DEBUG, "Telling session %d that <%s> logged in\n", - CC->cs_pid, presence_jid); + XMPP_syslog(LOG_DEBUG, "Telling session %d that <%s> logged in\n", + CC->cs_pid, presence_jid); /* Do an unsolicited roster update that adds a new contact. */ assert(which_cptr_is_relevant >= 0); @@ -214,8 +214,8 @@ void xmpp_presence_notify(char *presence_jid, int event_type) { } if (visible_sessions == 0) { - syslog(LOG_DEBUG, "Telling session %d that <%s> logged out\n", - CC->cs_pid, presence_jid); + XMPP_syslog(LOG_DEBUG, "Telling session %d that <%s> logged out\n", + CC->cs_pid, presence_jid); xmpp_destroy_buddy(presence_jid, 0); /* non aggressive presence update */ } @@ -271,7 +271,7 @@ void xmpp_fetch_mortuary_backend(long msgnum, void *userdata) { HashList *xmpp_fetch_mortuary(void) { HashList *mortuary = NewHash(1, NULL); if (!mortuary) { - syslog(LOG_ALERT, "NewHash() failed!\n"); + XMPPM_syslog(LOG_ALERT, "NewHash() failed!\n"); return(NULL); } diff --git a/citadel/modules/xmpp/xmpp_query_namespace.c b/citadel/modules/xmpp/xmpp_query_namespace.c index 161d306d3..cf6f423a5 100644 --- a/citadel/modules/xmpp/xmpp_query_namespace.c +++ b/citadel/modules/xmpp/xmpp_query_namespace.c @@ -88,7 +88,7 @@ void xmpp_iq_roster_query(void) if (cptr) { for (i=0; i\n", - query_xmlns + XMPP_syslog(LOG_DEBUG, + "Unknown query namespace '%s' - returning \n", + query_xmlns ); cprintf("" "" diff --git a/citadel/modules/xmpp/xmpp_queue.c b/citadel/modules/xmpp/xmpp_queue.c index 530ea5a76..8cb5662d8 100644 --- a/citadel/modules/xmpp/xmpp_queue.c +++ b/citadel/modules/xmpp/xmpp_queue.c @@ -66,7 +66,7 @@ void xmpp_queue_event(int event_type, char *email_addr) { int purged_something = 0; struct CitContext *cptr; - syslog(LOG_DEBUG, "xmpp_queue_event(%d, %s)\n", event_type, email_addr); + XMPP_syslog(LOG_DEBUG, "xmpp_queue_event(%d, %s)\n", event_type, email_addr); /* Purge events more than a minute old */ begin_critical_section(S_XMPP_QUEUE); -- 2.30.2