Lagrange [release]

Feeds: Wait up to 10 seconds for response

cd6f29f467f7e36f1c01456ae0a412c4cfd495a0
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++;
                 }