From 0e83eba6df1218ce4a0451d9f89ce65499e98187 Mon Sep 17 00:00:00 2001
From: shortcutme <hello@noloop.me>
Date: Wed, 16 Nov 2016 11:22:38 +0100
Subject: [PATCH] Don't retry failed peer on optional file search

---
 src/Worker/WorkerManager.py | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/Worker/WorkerManager.py b/src/Worker/WorkerManager.py
index 90442bc3..749e6bfd 100644
--- a/src/Worker/WorkerManager.py
+++ b/src/Worker/WorkerManager.py
@@ -177,13 +177,15 @@ class WorkerManager(object):
             for task in optional_tasks:
                 optional_hash_id = task["optional_hash_id"]
                 if optional_hash_id in hashfield_set:
+                    if reset_task and len(task["failed"]) > 0:
+                        task["failed"] = []
+                    if peer in task["failed"]:
+                        continue
                     found[optional_hash_id].append(peer)
                     if task["peers"] and peer not in task["peers"]:
                         task["peers"].append(peer)
                     else:
                         task["peers"] = [peer]
-                    if reset_task and len(task["failed"]) > 0:
-                        task["failed"] = []
 
         return found
 
@@ -221,9 +223,9 @@ class WorkerManager(object):
                     task["peers"] = []
                 if peer not in task["peers"]:
                     task["peers"].append(peer)
+                    found[hash_id].append(peer)
                 if peer.hashfield.appendHashId(hash_id):  # Peer has this file
                     peer.time_hashfield = None  # Peer hashfield probably outdated
-                found[hash_id].append(peer)
 
         return found