URI: 
       tMerge pull request #1216 from kyuupichan/network-unthread - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 107cfc058de3d0f2d76468ff4b87166f1a09d386
   DIR parent 18032fc4f67cf405dc5912084f17b3dd3f890263
  HTML Author: ThomasV <electrumdev@gmail.com>
       Date:   Tue, 19 May 2015 10:18:08 +0200
       
       Merge pull request #1216 from kyuupichan/network-unthread
       
       No need for thread to handle requests
       Diffstat:
         M lib/network.py                      |      27 ++++++++-------------------
       
       1 file changed, 8 insertions(+), 19 deletions(-)
       ---
   DIR diff --git a/lib/network.py b/lib/network.py
       t@@ -1,4 +1,3 @@
       -import threading
        import time
        import Queue
        import os
       t@@ -129,7 +128,6 @@ class Network(util.DaemonThread):
                    config = {}  # Do not use mutables as default values!
                util.DaemonThread.__init__(self)
                self.config = SimpleConfig(config) if type(config) == type({}) else config
       -        self.lock = threading.Lock()
                self.num_server = 8 if not self.config.get('oneserver') else 0
                self.blockchain = Blockchain(self.config, self)
                self.interfaces = {}
       t@@ -303,8 +301,6 @@ class Network(util.DaemonThread):
                self.running = True
                self.response_queue = response_queue
                self.start_interfaces()
       -        t = threading.Thread(target=self.process_requests_thread)
       -        t.start()
                self.blockchain.start()
                util.DaemonThread.start(self)
        
       t@@ -433,13 +429,12 @@ class Network(util.DaemonThread):
                else:
                    self.response_queue.put(response)
        
       -    def process_requests_thread(self):
       -        while self.is_running():
       -            try:
       -                request = self.requests_queue.get(timeout=0.1)
       -            except Queue.Empty:
       -                continue
       -            self.process_request(request)
       +    def handle_requests(self):
       +        try:
       +            request = self.requests_queue.get(timeout=0.1)
       +        except Queue.Empty:
       +            return
       +        self.process_request(request)
        
            def process_request(self, request):
                method = request['method']
       t@@ -470,14 +465,7 @@ class Network(util.DaemonThread):
        
                # store unanswered request
                self.unanswered_requests[_id] = request
       -
       -        try:
       -            self.interface.send_request(request)
       -        except:
       -            # put it back in the queue
       -            self.print_error("warning: interface not ready for", request)
       -            self.requests_queue.put(request)
       -            time.sleep(0.1)
       +        self.interface.send_request(request)
        
            def check_interfaces(self):
                now = time.time()
       t@@ -509,6 +497,7 @@ class Network(util.DaemonThread):
            def run(self):
                while self.is_running():
                    self.check_interfaces()
       +            self.handle_requests()
                    try:
                        i, response = self.queue.get(timeout=0.1)
                    except Queue.Empty: