X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Frssclient%2Frss_atom_parser.c;h=c1f5285804341e07aaa525ed0076c271fa0d8d07;hb=e296d96701baded9253071b142887af824a1db84;hp=0c7290b5cc0857ce856d43a2ce614ca2eedb11aa;hpb=c064b240ff457c4bcdc119aaf7a6a09ff31952e2;p=citadel.git diff --git a/citadel/modules/rssclient/rss_atom_parser.c b/citadel/modules/rssclient/rss_atom_parser.c index 0c7290b5c..c1f528580 100644 --- a/citadel/modules/rssclient/rss_atom_parser.c +++ b/citadel/modules/rssclient/rss_atom_parser.c @@ -745,7 +745,7 @@ void rss_save_item(rss_item *ri, rss_aggregator *RSSAggr) len = StrLength(ri->title); Sbj = html_to_ascii(ChrPtr(ri->title), len, 512, 0); len = strlen(Sbj); - if (Sbj[len - 1] == '\n') + if ((len > 0) && (Sbj[len - 1] == '\n')) { len --; Sbj[len] = '\0'; @@ -777,7 +777,7 @@ void rss_save_item(rss_item *ri, rss_aggregator *RSSAggr) msglen += 1024 + StrLength(ri->link) + StrLength(ri->description) ; - Message = NewStrBufPlain(NULL, StrLength(ri->description)); + Message = NewStrBufPlain(NULL, msglen); StrBufPlain(Message, HKEY( "Content-type: text/html; charset=\"UTF-8\"\r\n\r\n" @@ -946,6 +946,8 @@ void rss_xml_end(void *data, const char *supplied_el) FlushStrBuf(RSSAggr->CData); } + + /* * Callback function for passing libcurl's output to expat for parsing * we don't do streamed parsing so expat can handle non-utf8 documents @@ -956,6 +958,8 @@ size_t rss_libcurl_callback(void *ptr, size_t size, size_t nmemb, void *stream) } */ + + eNextState RSSAggregator_ParseReply(AsyncIO *IO) { StrBuf *Buf; @@ -966,16 +970,6 @@ eNextState RSSAggregator_ParseReply(AsyncIO *IO) long len; const char *Key; - - if (IO->HttpReq.httpcode != 200) - { - - EVRSSATOM_syslog(LOG_ALERT, "need a 200, got a %ld !\n", - IO->HttpReq.httpcode); -// TODO: aide error message with rate limit - return eAbort; - } - RSSAggr = IO->Data; ri = RSSAggr->Item; RSSAggr->CData = NewStrBufPlain(NULL, SIZ); @@ -1045,7 +1039,7 @@ eNextState RSSAggregator_ParseReply(AsyncIO *IO) &len, &Key, (void**) &RSSAggr->ThisMsg)) - return QueueDBOperation(IO, RSS_FetchNetworkUsetableEntry); + return NextDBOperation(IO, RSS_FetchNetworkUsetableEntry); else return eAbort; } @@ -1086,9 +1080,9 @@ void rss_parser_cleanup(void) DeleteHash(&KnownNameSpaces); } -void LogDebugEnableRSSATOMParser(void) +void LogDebugEnableRSSATOMParser(const int n) { - RSSAtomParserDebugEnabled = 1; + RSSAtomParserDebugEnabled = n; } CTDL_MODULE_INIT(rssparser) @@ -1177,7 +1171,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); + CtdlRegisterDebugFlagHook(HKEY("RSSAtomParser"), LogDebugEnableRSSATOMParser, &RSSAtomParserDebugEnabled); CtdlRegisterCleanupHook(rss_parser_cleanup); } return "rssparser";