X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Frssclient%2Fserv_rssclient.c;h=2fa5134e9173dd9a73f29ab1f561dae10a8e61e6;hb=924b8cd997f56b68e16fa1dfc1be55722596f5d8;hp=697b63b47b986111ca86f2e88609010b90e09f9b;hpb=7c94d5bb68f1c448770d31205ec5ae12bd8a02ed;p=citadel.git diff --git a/citadel/modules/rssclient/serv_rssclient.c b/citadel/modules/rssclient/serv_rssclient.c index 697b63b47..2fa5134e9 100644 --- a/citadel/modules/rssclient/serv_rssclient.c +++ b/citadel/modules/rssclient/serv_rssclient.c @@ -1,7 +1,7 @@ /* * Bring external RSS feeds into rooms. * - * Copyright (c) 2007-2015 by the citadel.org team + * Copyright (c) 2007-2016 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -375,20 +375,25 @@ int rss_format_item(AsyncIO *IO, networker_save_message *SaveMsg) StrBufSpaceToBlank(SaveMsg->title); len = StrLength(SaveMsg->title); Sbj = html_to_ascii(ChrPtr(SaveMsg->title), len, 512, 0); - len = strlen(Sbj); - if ((len > 0) && (Sbj[len - 1] == '\n')) - { - len --; - Sbj[len] = '\0'; - } - Encoded = NewStrBufPlain(Sbj, len); - free(Sbj); - - StrBufTrim(Encoded); - StrBufRFC2047encode(&QPEncoded, Encoded); + if (!IsEmptyStr(Sbj)) { + len = strlen(Sbj); + if ((Sbj[len - 1] == '\n')) + { + len --; + Sbj[len] = '\0'; + } + Encoded = NewStrBufPlain(Sbj, len); + - CM_SetAsFieldSB(&SaveMsg->Msg, eMsgSubject, &QPEncoded); - FreeStrBuf(&Encoded); + StrBufTrim(Encoded); + StrBufRFC2047encode(&QPEncoded, Encoded); + + CM_SetAsFieldSB(&SaveMsg->Msg, eMsgSubject, &QPEncoded); + FreeStrBuf(&Encoded); + } + if (Sbj != NULL) { + free(Sbj); + } } if (SaveMsg->link == NULL) SaveMsg->link = NewStrBufPlain(HKEY("")); @@ -502,9 +507,9 @@ eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO) void UpdateLastKnownGood(pRSSConfig *pCfg, time_t now) { - OneRoomNetCfg* pRNCfg; + OneRoomNetCfg *pRNCfg; begin_critical_section(S_NETCONFIGS); - pRNCfg = CtdlGetNetCfgForRoom (pCfg->QRnumber); + pRNCfg = CtdlGetNetCfgForRoom(pCfg->QRnumber); if (pRNCfg != NULL) { RSSCfgLine *RSSCfg = (RSSCfgLine *)pRNCfg->NetConfigs[rssclient]; @@ -518,11 +523,11 @@ void UpdateLastKnownGood(pRSSConfig *pCfg, time_t now) } if (RSSCfg != NULL) { - pRNCfg->changed = 1; RSSCfg->last_known_good = now; } } - + SaveRoomNetConfigFile(pRNCfg, pCfg->QRnumber); + FreeRoomNetworkStruct(&pRNCfg); end_critical_section(S_NETCONFIGS); } @@ -765,6 +770,8 @@ void rssclient_scan_room(struct ctdlroom *qrbuf, void *data, OneRoomNetCfg *OneR rss_aggregator *use_this_RSSAggr = NULL; void *vptr; + TRACE; + pthread_mutex_lock(&RSSQueueMutex); if (GetHash(RSSQueueRooms, LKEY(qrbuf->QRnumber), &vptr)) {