increase IRC socket timeout to 300 to avoid rare cases of nick collision
[electrum-server.git] / backends / irc / __init__.py
index e70746c..e13c6c6 100644 (file)
@@ -17,13 +17,24 @@ class IrcThread(threading.Thread):
         self.stratum_http_port = config.get('server','stratum_http_port')
         self.stratum_tcp_ssl_port = config.get('server','stratum_tcp_ssl_port')
         self.stratum_http_ssl_port = config.get('server','stratum_http_ssl_port')
+        self.report_stratum_tcp_port = config.get('server','report_stratum_tcp_port')
+        self.report_stratum_http_port = config.get('server','report_stratum_http_port')
+        self.report_stratum_tcp_ssl_port = config.get('server','report_stratum_tcp_ssl_port')
+        self.report_stratum_http_ssl_port = config.get('server','report_stratum_http_ssl_port')
         self.peers = {}
         self.host = config.get('server','host')
+        self.report_host = config.get('server','report_host')
         self.nick = config.get('server', 'irc_nick')
+       if self.report_stratum_tcp_port: self.stratum_tcp_port = self.report_stratum_tcp_port
+       if self.report_stratum_http_port: self.stratum_http_port = self.report_stratum_http_port
+       if self.report_stratum_tcp_ssl_port: self.stratum_tcp_ssl_port = self.report_stratum_tcp_ssl_port
+       if self.report_stratum_http_ssl_port: self.stratum_http_ssl_port = self.report_stratum_http_ssl_port
+       if self.report_host: self.host = self.report_host
         if not self.nick: self.nick = random_string(10)
         self.prepend = 'E_'
         if config.get('server', 'coin') == 'litecoin':
             self.prepend = 'EL_'
+        self.pruning = config.get('server', 'backend') == 'leveldb'
         self.nick = self.prepend + self.nick
 
     def get_peers(self):
@@ -32,6 +43,7 @@ class IrcThread(threading.Thread):
 
     def getname(self):
         s = 'v' + VERSION + ' '
+        if self.pruning: s += 'p '
         if self.stratum_tcp_port:
             s += 't' + self.stratum_tcp_port + ' ' 
         if self.stratum_http_port:
@@ -50,7 +62,9 @@ class IrcThread(threading.Thread):
             try:
                 s = socket.socket()
                 s.connect(('irc.freenode.net', 6667))
+                s.settimeout(300)
             except:
+                s.close()
                 time.sleep(10)
                 continue