FeedReader plugin:

- Added check of feed parent id in loadList
- Trimmed downloaded xml string to process xml strings with leading spaces

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7359 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2014-05-09 23:12:03 +00:00
parent 7f9fde8c1d
commit 31962ea0c5
2 changed files with 25 additions and 9 deletions

View File

@ -1555,26 +1555,39 @@ bool p3FeedReader::loadList(std::list<RsItem *>& load)
} }
} }
/* now sort msgs into feeds */
RsStackMutex stack(mFeedReaderMtx); /********** STACK LOCKED MTX ******/ RsStackMutex stack(mFeedReaderMtx); /********** STACK LOCKED MTX ******/
std::map<std::string, RsFeedReaderMsg*>::iterator it1; /* check feeds */
for (it1 = msgs.begin(); it1 != msgs.end(); ++it1) { std::map<std::string, RsFeedReaderFeed*>::iterator feedIt;
for (feedIt = mFeeds.begin(); feedIt != mFeeds.end(); ++feedIt) {
RsFeedReaderFeed *feed = feedIt->second;
if (!feed->parentId.empty()) {
/* check parent */
if (mFeeds.find(feed->parentId) == mFeeds.end()) {
/* parent not found, clear it */
feed->parentId.clear();
}
}
}
/* now sort msgs into feeds */
std::map<std::string, RsFeedReaderMsg*>::iterator msgIt;
for (msgIt = msgs.begin(); msgIt != msgs.end(); ++msgIt) {
uint32_t msgId = 0; uint32_t msgId = 0;
if (sscanf(it1->first.c_str(), "%u", &msgId) == 1) { if (sscanf(msgIt->first.c_str(), "%u", &msgId) == 1) {
std::map<std::string, RsFeedReaderFeed*>::iterator it2 = mFeeds.find(it1->second->feedId); feedIt = mFeeds.find(msgIt->second->feedId);
if (it2 == mFeeds.end()) { if (feedIt == mFeeds.end()) {
/* feed does not exist exists */ /* feed does not exist exists */
delete it1->second; delete msgIt->second;
continue; continue;
} }
it2->second->msgs[it1->first] = it1->second; feedIt->second->msgs[msgIt->first] = msgIt->second;
if (msgId + 1 > mNextMsgId) { if (msgId + 1 > mNextMsgId) {
mNextMsgId = msgId + 1; mNextMsgId = msgId + 1;
} }
} else { } else {
/* invalid msg id */ /* invalid msg id */
delete(it1->second); delete(msgIt->second);
} }
} }

View File

@ -70,6 +70,9 @@ void p3FeedReaderThread::run()
RsFeedReaderErrorState result = download(feed, content, icon, errorString); RsFeedReaderErrorState result = download(feed, content, icon, errorString);
if (result == RS_FEED_ERRORSTATE_OK) { if (result == RS_FEED_ERRORSTATE_OK) {
/* trim */
XMLWrapper::trimString(content);
mFeedReader->onDownloadSuccess(feed.feedId, content, icon); mFeedReader->onDownloadSuccess(feed.feedId, content, icon);
} else { } else {
mFeedReader->onDownloadError(feed.feedId, result, errorString); mFeedReader->onDownloadError(feed.feedId, result, errorString);