From f99672495aef5abeab36cbb8b1e2035edbb0491b Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Tue, 9 Feb 2021 19:18:35 +0200 Subject: Feeds: Wait up to 10 seconds for response If a server doesn't respond, there is no use waiting indefinitely in a background request. --- src/feeds.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/feeds.c') 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++; } -- cgit v1.2.3