diff --git a/src/feeds.c b/src/feeds.c index c54ac945..3fb05d14 100644 --- a/src/feeds.c +++ b/src/feeds.c @@ -75,6 +75,8 @@ iBool isUnread_FeedEntry(const iFeedEntry *d) {  /*----------------------------------------------------------------------------------------------*/  +static int requestTimeoutSeconds_FeedJob_ = 10.0f; + struct Impl_FeedJob { iString url; uint32_t bookmarkId; @@ -104,6 +106,10 @@ static void deinit_FeedJob(iFeedJob *d) { deinit_String(&d->url); }  +static iBool isTimedOut_FeedJob_(iFeedJob *d) { + return elapsedSeconds_Time(&d->startTime) > requestTimeoutSeconds_FeedJob_; +} + iDefineTypeConstructionArgs(FeedJob, (const iBookmark *bm), bm)  /*----------------------------------------------------------------------------------------------*/ @@ -357,6 +363,11 @@ static iThreadResult fetch_Feeds_(iThread *thread) { delete_FeedJob(work[i]); work[i] = NULL; } + else if (isTimedOut_FeedJob_(work[i])) { + /* Maybe we'll get it next time! */ + delete_FeedJob(work[i]); + work[i] = NULL; + } else { ongoing++; }