From 2fd986c979cd9dbdf89133c1bd81556508faca15 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Fri, 24 Jan 2014 16:47:09 +0100 Subject: [PATCH] fix excess flood --- backends/irc/__init__.py | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) diff --git a/backends/irc/__init__.py b/backends/irc/__init__.py index bbd6fc3..4732175 100644 --- a/backends/irc/__init__.py +++ b/backends/irc/__init__.py @@ -77,21 +77,29 @@ class IrcThread(threading.Thread): try: s = socket.socket() s.connect(('irc.freenode.net', 6667)) - s.settimeout(300) + s.settimeout(0.1) except: s.close() time.sleep(10) continue self.message = '' + out_msg = [] + try: s.send('USER electrum 0 * :' + self.host + ' ' + ircname + '\n') s.send('NICK ' + self.nick + '\n') s.send('JOIN #electrum\n') t = 0 + while not self.processor.shared.stopped(): try: data = s.recv(2048) + except socket.timeout, e: + if out_msg: + m = out_msg.pop(0) + s.send(m) + continue except: print_log( "irc: socket error" ) time.sleep(1) @@ -108,12 +116,12 @@ class IrcThread(threading.Thread): continue line = line.split() if line[0] == 'PING': - s.send('PONG ' + line[1] + '\n') + out_msg.append('PONG ' + line[1] + '\n') elif '353' in line: # answer to /names k = line.index('353') for item in line[k+1:]: if item.startswith(self.prepend): - s.send('WHO %s\n' % item) + out_msg.append('WHO %s\n' % item) elif '352' in line: # answer to /who # warning: this is a horrible hack which apparently works k = line.index('352') -- 1.7.1