From 00065577286d65a2ac21f4760190b963cde22a5e Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sat, 28 Apr 2012 18:03:05 +0200 Subject: [PATCH] RSSClient: make debug log runtime configurable --- citadel/modules/rssclient/rss_atom_parser.c | 207 +++++++++++--------- citadel/modules/rssclient/serv_rssclient.c | 123 +++++++----- 2 files changed, 191 insertions(+), 139 deletions(-) diff --git a/citadel/modules/rssclient/rss_atom_parser.c b/citadel/modules/rssclient/rss_atom_parser.c index 610dd2b95..0c7290b5c 100644 --- a/citadel/modules/rssclient/rss_atom_parser.c +++ b/citadel/modules/rssclient/rss_atom_parser.c @@ -60,6 +60,29 @@ void rss_save_item(rss_item *ri, rss_aggregator *Cfg); +int RSSAtomParserDebugEnabled = 0; + +#define N ((rss_aggregator*)IO->Data)->QRnumber + +#define DBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (RSSAtomParserDebugEnabled != 0)) + +#define EVRSSATOM_syslog(LEVEL, FORMAT, ...) \ + DBGLOG(LEVEL) syslog(LEVEL, \ + "IO[%ld]CC[%d][%ld]RSSP" FORMAT, \ + 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) + +#define EVRSSATOMCS_syslog(LEVEL, FORMAT, ...) \ + DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]RSSP" FORMAT, \ + IO->ID, N, __VA_ARGS__) + +#define EVRSSATOMSM_syslog(LEVEL, FORMAT) \ + DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]RSSP" FORMAT, \ + IO->ID, N) /* * Convert an RDF/RSS datestamp into a time_t @@ -126,35 +149,38 @@ void flush_rss_item(rss_item *ri) void RSS_item_rss_start (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { - syslog(LOG_DEBUG, "RSS: This is an RSS feed.\n"); - Cfg->ItemType = RSS_RSS; + AsyncIO *IO = &RSSAggr->IO; + EVRSSATOMM_syslog(LOG_DEBUG, "RSS: This is an RSS feed.\n"); + RSSAggr->ItemType = RSS_RSS; } void RSS_item_rdf_start(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { - syslog(LOG_DEBUG, "RSS: This is an RDF feed.\n"); - Cfg->ItemType = RSS_RSS; + AsyncIO *IO = &RSSAggr->IO; + EVRSSATOMM_syslog(LOG_DEBUG, "RSS: This is an RDF feed.\n"); + RSSAggr->ItemType = RSS_RSS; } void ATOM_item_feed_start(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { - syslog(LOG_DEBUG, "RSS: This is an ATOM feed.\n"); - Cfg->ItemType = RSS_ATOM; + AsyncIO *IO = &RSSAggr->IO; + EVRSSATOMM_syslog(LOG_DEBUG, "RSS: This is an ATOM feed.\n"); + RSSAggr->ItemType = RSS_ATOM; } void RSS_item_item_start(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { ri->item_tag_nesting ++; @@ -163,7 +189,7 @@ void RSS_item_item_start(StrBuf *CData, void ATOM_item_entry_start(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { /* Atom feed... */ @@ -173,7 +199,7 @@ void ATOM_item_entry_start(StrBuf *CData, void ATOM_item_link_start (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { int i; @@ -256,7 +282,7 @@ void ATOM_item_link_start (StrBuf *CData, void ATOMRSS_item_title_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if ((ri->item_tag_nesting == 0) && (StrLength(CData) > 0)) { @@ -267,7 +293,7 @@ void ATOMRSS_item_title_end(StrBuf *CData, void RSS_item_guid_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -276,7 +302,7 @@ void RSS_item_guid_end(StrBuf *CData, } void ATOM_item_id_end(StrBuf *CData, - rss_item *ri, rss_aggregator *Cfg, const char** Attr) + rss_item *ri, rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { NewStrBufDupAppendFlush(&ri->guid, CData, NULL, 0); @@ -286,7 +312,7 @@ void ATOM_item_id_end(StrBuf *CData, void RSS_item_link_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -296,7 +322,7 @@ void RSS_item_link_end (StrBuf *CData, } void RSS_item_relink_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -307,7 +333,7 @@ void RSS_item_relink_end(StrBuf *CData, void RSSATOM_item_title_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -318,7 +344,7 @@ void RSSATOM_item_title_end (StrBuf *CData, void ATOM_item_content_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { long olen = StrLength (ri->description); @@ -345,7 +371,7 @@ void ATOM_item_content_end (StrBuf *CData, } void ATOM_item_summary_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { /* @@ -361,7 +387,7 @@ void ATOM_item_summary_end (StrBuf *CData, void RSS_item_description_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { long olen = StrLength (ri->description); @@ -388,7 +414,7 @@ void RSS_item_description_end (StrBuf *CData, void ATOM_item_published_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -399,7 +425,7 @@ void ATOM_item_published_end (StrBuf *CData, void ATOM_item_updated_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -410,7 +436,7 @@ void ATOM_item_updated_end (StrBuf *CData, void RSS_item_pubdate_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -422,7 +448,7 @@ void RSS_item_pubdate_end (StrBuf *CData, void RSS_item_date_end (StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -435,7 +461,7 @@ void RSS_item_date_end (StrBuf *CData, void RSS_item_author_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -447,7 +473,7 @@ void RSS_item_author_end(StrBuf *CData, void ATOM_item_name_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -458,7 +484,7 @@ void ATOM_item_name_end(StrBuf *CData, void ATOM_item_email_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -469,7 +495,7 @@ void ATOM_item_email_end(StrBuf *CData, void RSS_item_creator_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if ((StrLength(CData) > 0) && @@ -483,7 +509,7 @@ void RSS_item_creator_end(StrBuf *CData, void ATOM_item_uri_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { if (StrLength(CData) > 0) { @@ -494,45 +520,47 @@ void ATOM_item_uri_end(StrBuf *CData, void RSS_item_item_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { --ri->item_tag_nesting; - rss_save_item(ri, Cfg); + rss_save_item(ri, RSSAggr); } void ATOM_item_entry_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { --ri->item_tag_nesting; - rss_save_item(ri, Cfg); + rss_save_item(ri, RSSAggr); } void RSS_item_rss_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { -// syslog(LOG_DEBUG, "End of feed detected. Closing parser.\n"); + AsyncIO *IO = &RSSAggr->IO; + EVRSSATOMM_syslog(LOG_DEBUG, "End of feed detected. Closing parser.\n"); ri->done_parsing = 1; } void RSS_item_rdf_end(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { -// syslog(LOG_DEBUG, "End of feed detected. Closing parser.\n"); + AsyncIO *IO = &RSSAggr->IO; + EVRSSATOMM_syslog(LOG_DEBUG, "End of feed detected. Closing parser.\n"); ri->done_parsing = 1; } void RSSATOM_item_ignore(StrBuf *CData, rss_item *ri, - rss_aggregator *Cfg, + rss_aggregator *RSSAggr, const char** Attr) { } @@ -604,7 +632,7 @@ void AppendLink(StrBuf *Message, /* * Commit a fetched and parsed RSS item to disk */ -void rss_save_item(rss_item *ri, rss_aggregator *Cfg) +void rss_save_item(rss_item *ri, rss_aggregator *RSSAggr) { networker_save_message *SaveMsg; struct MD5Context md5context; @@ -612,7 +640,7 @@ void rss_save_item(rss_item *ri, rss_aggregator *Cfg) int msglen = 0; StrBuf *Message; StrBuf *guid; - AsyncIO *IO = &Cfg->IO; + AsyncIO *IO = &RSSAggr->IO; int n; @@ -647,7 +675,7 @@ void rss_save_item(rss_item *ri, rss_aggregator *Cfg) } /* translate Item into message. */ - EVM_syslog(LOG_DEBUG, "RSS: translating item...\n"); + EVRSSATOMM_syslog(LOG_DEBUG, "RSS: translating item...\n"); if (ri->description == NULL) ri->description = NewStrBufPlain(HKEY("")); StrBufSpaceToBlank(ri->description); SaveMsg->Msg.cm_magic = CTDLMESSAGE_MAGIC; @@ -767,8 +795,8 @@ void rss_save_item(rss_item *ri, rss_aggregator *Cfg) SaveMsg->MsgGUID = guid; SaveMsg->Message = Message; - n = GetCount(Cfg->Messages) + 1; - Put(Cfg->Messages, IKEY(n), SaveMsg, FreeNetworkSaveMessage); + n = GetCount(RSSAggr->Messages) + 1; + Put(RSSAggr->Messages, IKEY(n), SaveMsg, FreeNetworkSaveMessage); } @@ -776,6 +804,7 @@ void rss_xml_start(void *data, const char *supplied_el, const char **attr) { rss_xml_handler *h; rss_aggregator *RSSAggr = (rss_aggregator*) data; + AsyncIO *IO = &RSSAggr->IO; rss_item *ri = RSSAggr->Item; void *pv; const char *pel; @@ -784,7 +813,7 @@ void rss_xml_start(void *data, const char *supplied_el, const char **attr) /* Axe the namespace, we don't care about it */ /* syslog(LOG_DEBUG, - "RSS: supplied el %d: %s\n", RSSAggr->Cfg->ItemType, supplied_el); + "RSS: supplied el %d: %s\n", RSSAggr->RSSAggr->ItemType, supplied_el); */ pel = supplied_el; while (sep = strchr(pel, ':'), sep) { @@ -800,12 +829,10 @@ void rss_xml_start(void *data, const char *supplied_el, const char **attr) pel - supplied_el - 1, &v)) { -#ifdef DEBUG_RSS - syslog(LOG_DEBUG, - "RSS: START ignoring " - "because of wrong namespace [%s]\n", - supplied_el); -#endif + EVRSSATOM_syslog(LOG_DEBUG, + "RSS: START ignoring " + "because of wrong namespace [%s]\n", + supplied_el); return; } } @@ -834,27 +861,24 @@ void rss_xml_start(void *data, const char *supplied_el, const char **attr) RSSAggr, attr); } -#ifdef DEBUG_RSS else - syslog(LOG_DEBUG, - "RSS: START unhandled: [%s] [%s]...\n", - pel, - supplied_el); -#endif + EVRSSATOM_syslog(LOG_DEBUG, + "RSS: START unhandled: [%s] [%s]...\n", + pel, + supplied_el); } -#ifdef DEBUG_RSS else - syslog(LOG_DEBUG, - "RSS: START unhandled: [%s] [%s]...\n", - pel, - supplied_el); -#endif + EVRSSATOM_syslog(LOG_DEBUG, + "RSS: START unhandled: [%s] [%s]...\n", + pel, + supplied_el); } void rss_xml_end(void *data, const char *supplied_el) { rss_xml_handler *h; rss_aggregator *RSSAggr = (rss_aggregator*) data; + AsyncIO *IO = &RSSAggr->IO; rss_item *ri = RSSAggr->Item; const char *pel; char *sep = NULL; @@ -865,7 +889,7 @@ void rss_xml_end(void *data, const char *supplied_el) while (sep = strchr(pel, ':'), sep) { pel = sep + 1; } -// syslog(LOG_DEBUG, "RSS: END %s...\n", el); + EVRSSATOM_syslog(LOG_DEBUG, "RSS: END %s...\n", supplied_el); if (pel != supplied_el) { void *v; @@ -875,13 +899,11 @@ void rss_xml_end(void *data, const char *supplied_el) pel - supplied_el - 1, &v)) { -#ifdef DEBUG_RSS - syslog(LOG_DEBUG, - "RSS: END ignoring because of wrong namespace" - "[%s] = [%s]\n", - supplied_el, - ChrPtr(RSSAggr->CData)); -#endif + EVRSSATOM_syslog(LOG_DEBUG, + "RSS: END ignoring because of wrong namespace" + "[%s] = [%s]\n", + supplied_el, + ChrPtr(RSSAggr->CData)); FlushStrBuf(RSSAggr->CData); return; } @@ -908,23 +930,19 @@ void rss_xml_end(void *data, const char *supplied_el) { h->Handler(RSSAggr->CData, ri, RSSAggr, NULL); } -#ifdef DEBUG_RSS else - syslog(LOG_DEBUG, - "RSS: END unhandled: [%s] [%s] = [%s]...\n", - pel, - supplied_el, - ChrPtr(RSSAggr->CData)); -#endif + EVRSSATOM_syslog(LOG_DEBUG, + "RSS: END unhandled: [%s] [%s] = [%s]...\n", + pel, + supplied_el, + ChrPtr(RSSAggr->CData)); } -#ifdef DEBUG_RSS else - syslog(LOG_DEBUG, - "RSS: END unhandled: [%s] [%s] = [%s]...\n", - pel, - supplied_el, - ChrPtr(RSSAggr->CData)); -#endif + EVRSSATOM_syslog(LOG_DEBUG, + "RSS: END unhandled: [%s] [%s] = [%s]...\n", + pel, + supplied_el, + ChrPtr(RSSAggr->CData)); FlushStrBuf(RSSAggr->CData); } @@ -952,8 +970,8 @@ eNextState RSSAggregator_ParseReply(AsyncIO *IO) if (IO->HttpReq.httpcode != 200) { - EV_syslog(LOG_DEBUG, "need a 200, got a %ld !\n", - IO->HttpReq.httpcode); + EVRSSATOM_syslog(LOG_ALERT, "need a 200, got a %ld !\n", + IO->HttpReq.httpcode); // TODO: aide error message with rate limit return eAbort; } @@ -982,11 +1000,11 @@ eNextState RSSAggregator_ParseReply(AsyncIO *IO) else ptr = "UTF-8"; - syslog(LOG_DEBUG, "RSS: Now parsing [%s] \n", ChrPtr(RSSAggr->Url)); + EVRSSATOM_syslog(LOG_DEBUG, "RSS: Now parsing [%s] \n", ChrPtr(RSSAggr->Url)); RSSAggr->xp = XML_ParserCreateNS(ptr, ':'); if (!RSSAggr->xp) { - syslog(LOG_DEBUG, "Cannot create XML parser!\n"); + EVRSSATOMM_syslog(LOG_ALERT, "Cannot create XML parser!\n"); return eAbort; } FlushStrBuf(RSSAggr->Key); @@ -1008,8 +1026,8 @@ eNextState RSSAggregator_ParseReply(AsyncIO *IO) XML_Parse(RSSAggr->xp, "", 0, 1); - syslog(LOG_DEBUG, "RSS: XML Status [%s] \n", - XML_ErrorString(XML_GetErrorCode(RSSAggr->xp))); + EVRSSATOM_syslog(LOG_DEBUG, "RSS: XML Status [%s] \n", + XML_ErrorString(XML_GetErrorCode(RSSAggr->xp))); XML_ParserFree(RSSAggr->xp); flush_rss_item(ri); @@ -1021,7 +1039,7 @@ eNextState RSSAggregator_ParseReply(AsyncIO *IO) RSSAggr->Pos = GetNewHashPos(RSSAggr->Messages, 1); -//Cfg->next_poll = time(NULL) + config.c_net_freq; +//RSSAggr->next_poll = time(NULL) + config.c_net_freq; if (GetNextHashPos(RSSAggr->Messages, RSSAggr->Pos, &len, @@ -1068,6 +1086,10 @@ void rss_parser_cleanup(void) DeleteHash(&KnownNameSpaces); } +void LogDebugEnableRSSATOMParser(void) +{ + RSSAtomParserDebugEnabled = 1; +} CTDL_MODULE_INIT(rssparser) { @@ -1155,6 +1177,7 @@ CTDL_MODULE_INIT(rssparser) /* we don't like these namespaces because of they shadow our usefull parameters. */ Put(KnownNameSpaces, HKEY("http://search.yahoo.com/mrss/"), NULL, reference_free_handler); #endif + CtdlRegisterDebugFlagHook(HKEY("RSSAtomParser"), LogDebugEnableRSSATOMParser); CtdlRegisterCleanupHook(rss_parser_cleanup); } return "rssparser"; diff --git a/citadel/modules/rssclient/serv_rssclient.c b/citadel/modules/rssclient/serv_rssclient.c index 68f04ab75..638300feb 100644 --- a/citadel/modules/rssclient/serv_rssclient.c +++ b/citadel/modules/rssclient/serv_rssclient.c @@ -68,7 +68,30 @@ eNextState RSSAggregator_ShutdownAbort(AsyncIO *IO); struct CitContext rss_CC; struct rssnetcfg *rnclist = NULL; +int RSSClientDebugEnabled = 0; +#define N ((rss_aggregator*)IO->Data)->QRnumber +#define DBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (RSSClientDebugEnabled != 0)) + +#define EVRSSC_syslog(LEVEL, FORMAT, ...) \ + DBGLOG(LEVEL) syslog(LEVEL, \ + "IO[%ld]CC[%d][%ld]RSS" FORMAT, \ + 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) + +#define EVRSSQ_syslog(LEVEL, FORMAT, ...) \ + DBGLOG(LEVEL) syslog(LEVEL, "RSS" FORMAT, \ + __VA_ARGS__) +#define EVRSSQM_syslog(LEVEL, FORMAT) \ + DBGLOG(LEVEL) syslog(LEVEL, "RSS" FORMAT) + +#define EVRSSCSM_syslog(LEVEL, FORMAT) \ + DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]RSS" FORMAT, \ + IO->ID, N) void DeleteRoomReference(long QRnumber) { @@ -94,19 +117,19 @@ void DeleteRoomReference(long QRnumber) DeleteHashPos(&At); } -void UnlinkRooms(rss_aggregator *Cfg) +void UnlinkRooms(rss_aggregator *RSSAggr) { - DeleteRoomReference(Cfg->QRnumber); - if (Cfg->OtherQRnumbers != NULL) + DeleteRoomReference(RSSAggr->QRnumber); + if (RSSAggr->OtherQRnumbers != NULL) { long HKLen; const char *HK; HashPos *At; void *vData; - At = GetNewHashPos(Cfg->OtherQRnumbers, 0); + At = GetNewHashPos(RSSAggr->OtherQRnumbers, 0); while (! server_shutting_down && - GetNextHashPos(Cfg->OtherQRnumbers, + GetNextHashPos(RSSAggr->OtherQRnumbers, At, &HKLen, &HK, &vData) && @@ -120,15 +143,15 @@ void UnlinkRooms(rss_aggregator *Cfg) } } -void UnlinkRSSAggregator(rss_aggregator *Cfg) +void UnlinkRSSAggregator(rss_aggregator *RSSAggr) { HashPos *At; pthread_mutex_lock(&RSSQueueMutex); - UnlinkRooms(Cfg); + UnlinkRooms(RSSAggr); At = GetNewHashPos(RSSFetchUrls, 0); - if (GetHashPosFromKey(RSSFetchUrls, SKEY(Cfg->Url), At)) + if (GetHashPosFromKey(RSSFetchUrls, SKEY(RSSAggr->Url), At)) { DeleteEntryFromHash(RSSFetchUrls, At); } @@ -141,7 +164,7 @@ void DeleteRssCfg(void *vptr) { rss_aggregator *RSSAggr = (rss_aggregator *)vptr; AsyncIO *IO = &RSSAggr->IO; - EVM_syslog(LOG_DEBUG, "RSS: destroying\n"); + EVRSSCM_syslog(LOG_DEBUG, "RSS: destroying\n"); FreeStrBuf(&RSSAggr->Url); FreeStrBuf(&RSSAggr->rooms); @@ -170,7 +193,7 @@ eNextState RSSAggregator_Terminate(AsyncIO *IO) { rss_aggregator *RSSAggr = (rss_aggregator *)IO->Data; - EVM_syslog(LOG_DEBUG, "RSS: Terminating.\n"); + EVRSSCM_syslog(LOG_DEBUG, "RSS: Terminating.\n"); UnlinkRSSAggregator(RSSAggr); @@ -181,7 +204,7 @@ eNextState RSSAggregator_TerminateDB(AsyncIO *IO) { rss_aggregator *RSSAggr = (rss_aggregator *)IO->Data; - EVM_syslog(LOG_DEBUG, "RSS: Terminating.\n"); + EVRSSCM_syslog(LOG_DEBUG, "RSS: Terminating.\n"); UnlinkRSSAggregator(RSSAggr); @@ -197,7 +220,7 @@ eNextState RSSAggregator_ShutdownAbort(AsyncIO *IO) if (pUrl == NULL) pUrl = ""; - EV_syslog(LOG_DEBUG, "RSS: Aborting by shutdown: %s.\n", pUrl); + EVRSSC_syslog(LOG_DEBUG, "RSS: Aborting by shutdown: %s.\n", pUrl); UnlinkRSSAggregator(RSSAggr); @@ -252,7 +275,7 @@ eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO) #ifndef DEBUG_RSS if (cdbut != NULL) { /* Item has already been seen */ - EV_syslog(LOG_DEBUG, + EVRSSC_syslog(LOG_DEBUG, "%s has already been seen\n", ChrPtr(Ctx->ThisMsg->MsgGUID)); cdb_free(cdbut); @@ -283,41 +306,42 @@ eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO) /* * Begin a feed parse */ -int rss_do_fetching(rss_aggregator *Cfg) +int rss_do_fetching(rss_aggregator *RSSAggr) { + AsyncIO *IO = &RSSAggr->IO; rss_item *ri; time_t now; now = time(NULL); - if ((Cfg->next_poll != 0) && (now < Cfg->next_poll)) + if ((RSSAggr->next_poll != 0) && (now < RSSAggr->next_poll)) return 0; ri = (rss_item*) malloc(sizeof(rss_item)); memset(ri, 0, sizeof(rss_item)); - Cfg->Item = ri; + RSSAggr->Item = ri; - if (! InitcURLIOStruct(&Cfg->IO, - Cfg, + if (! InitcURLIOStruct(&RSSAggr->IO, + RSSAggr, "Citadel RSS Client", RSSAggregator_ParseReply, RSSAggregator_Terminate, RSSAggregator_TerminateDB, RSSAggregator_ShutdownAbort)) { - syslog(LOG_ALERT, "Unable to initialize libcurl.\n"); + EVRSSCM_syslog(LOG_ALERT, "Unable to initialize libcurl.\n"); return 0; } - safestrncpy(((CitContext*)Cfg->IO.CitContext)->cs_host, - ChrPtr(Cfg->Url), - sizeof(((CitContext*)Cfg->IO.CitContext)->cs_host)); + safestrncpy(((CitContext*)RSSAggr->IO.CitContext)->cs_host, + ChrPtr(RSSAggr->Url), + sizeof(((CitContext*)RSSAggr->IO.CitContext)->cs_host)); - syslog(LOG_DEBUG, "Fetching RSS feed <%s>\n", ChrPtr(Cfg->Url)); - ParseURL(&Cfg->IO.ConnectMe, Cfg->Url, 80); - CurlPrepareURL(Cfg->IO.ConnectMe); + EVRSSC_syslog(LOG_DEBUG, "Fetching RSS feed <%s>\n", ChrPtr(RSSAggr->Url)); + ParseURL(&RSSAggr->IO.ConnectMe, RSSAggr->Url, 80); + CurlPrepareURL(RSSAggr->IO.ConnectMe); - QueueCurlContext(&Cfg->IO); + QueueCurlContext(&RSSAggr->IO); return 1; } @@ -343,10 +367,10 @@ void rssclient_scan_room(struct ctdlroom *qrbuf, void *data) pthread_mutex_lock(&RSSQueueMutex); if (GetHash(RSSQueueRooms, LKEY(qrbuf->QRnumber), &vptr)) { - syslog(LOG_DEBUG, - "rssclient: [%ld] %s already in progress.\n", - qrbuf->QRnumber, - qrbuf->QRname); + EVRSSQ_syslog(LOG_DEBUG, + "rssclient: [%ld] %s already in progress.\n", + qrbuf->QRnumber, + qrbuf->QRname); pthread_mutex_unlock(&RSSQueueMutex); return; } @@ -370,10 +394,10 @@ void rssclient_scan_room(struct ctdlroom *qrbuf, void *data) return; if (fstat(fd, &statbuf) == -1) { - syslog(LOG_DEBUG, - "ERROR: could not stat configfile '%s' - %s\n", - filename, - strerror(errno)); + EVRSSQ_syslog(LOG_DEBUG, + "ERROR: could not stat configfile '%s' - %s\n", + filename, + strerror(errno)); return; } @@ -385,8 +409,8 @@ void rssclient_scan_room(struct ctdlroom *qrbuf, void *data) if (StrBufReadBLOB(CfgData, &fd, 1, statbuf.st_size, &Err) < 0) { close(fd); FreeStrBuf(&CfgData); - syslog(LOG_DEBUG, "ERROR: reading config '%s' - %s
\n", - filename, strerror(errno)); + EVRSSQ_syslog(LOG_ERR, "ERROR: reading config '%s' - %s
\n", + filename, strerror(errno)); return; } close(fd); @@ -481,8 +505,8 @@ void rssclient_scan_room(struct ctdlroom *qrbuf, void *data) { Count->QRnumber = qrbuf->QRnumber; pthread_mutex_lock(&RSSQueueMutex); - syslog(LOG_DEBUG, "rssclient: [%ld] %s now starting.\n", - qrbuf->QRnumber, qrbuf->QRname); + EVRSSQ_syslog(LOG_DEBUG, "client: [%ld] %s now starting.\n", + qrbuf->QRnumber, qrbuf->QRname); Put(RSSQueueRooms, LKEY(qrbuf->QRnumber), Count, NULL); pthread_mutex_unlock(&RSSQueueMutex); } @@ -505,10 +529,10 @@ void rssclient_scan(void) { /* Run no more than once every 15 minutes. */ if ((now - last_run) < 900) { - syslog(LOG_DEBUG, - "rssclient: polling interval not yet reached; last run was %ldm%lds ago", - ((now - last_run) / 60), - ((now - last_run) % 60) + EVRSSQ_syslog(LOG_DEBUG, + "Client: polling interval not yet reached; last run was %ldm%lds ago", + ((now - last_run) / 60), + ((now - last_run) % 60) ); return; } @@ -523,15 +547,15 @@ void rssclient_scan(void) { pthread_mutex_unlock(&RSSQueueMutex); if ((RSSRoomCount > 0) || (RSSCount > 0)) { - syslog(LOG_DEBUG, - "rssclient: concurrency check failed; %d rooms and %d url's are queued", - RSSRoomCount, RSSCount + EVRSSQ_syslog(LOG_DEBUG, + "rssclient: concurrency check failed; %d rooms and %d url's are queued", + RSSRoomCount, RSSCount ); return; } become_session(&rss_CC); - syslog(LOG_DEBUG, "rssclient started\n"); + EVRSSQM_syslog(LOG_DEBUG, "rssclient started\n"); CtdlForEachRoom(rssclient_scan_room, NULL); pthread_mutex_lock(&RSSQueueMutex); @@ -547,7 +571,7 @@ void rssclient_scan(void) { DeleteHashPos(&it); pthread_mutex_unlock(&RSSQueueMutex); - syslog(LOG_DEBUG, "rssclient ended\n"); + EVRSSQM_syslog(LOG_DEBUG, "rssclient ended\n"); return; } @@ -558,6 +582,10 @@ void rss_cleanup(void) DeleteHash(&RSSQueueRooms); } +void LogDebugEnableRSSClient(void) +{ + RSSClientDebugEnabled = 1; +} CTDL_MODULE_INIT(rssclient) { @@ -570,6 +598,7 @@ CTDL_MODULE_INIT(rssclient) syslog(LOG_INFO, "%s\n", curl_version()); CtdlRegisterSessionHook(rssclient_scan, EVT_TIMER); CtdlRegisterEVCleanupHook(rss_cleanup); + CtdlRegisterDebugFlagHook(HKEY("rssclient"), LogDebugEnableRSSClient); } return "rssclient"; } -- 2.30.2