X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=blobdiff_plain;f=backends%2Firc%2F__init__.py;h=4732175dfcfe6254f031595bd8ed2be074eef16c;hp=bbd6fc3c05086bcceb1db32f1e2bc4db17ed2500;hb=2fd986c979cd9dbdf89133c1bd81556508faca15;hpb=77511c85467a86cd5b03b8da3ddd929857c3f5e8 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')