"""
-import time, socket, operator, thread, ast, sys
+import time, socket, operator, thread, ast, sys,re
import psycopg2, binascii
import bitcoinrpc
stopping = False
-
+block_number = -1
sessions = {}
sessions_last_time = {}
dblock = thread.allocate_lock()
return
if cmd=='b':
- out = "%d"%store.get_block_number(1)
-
+ out = "%d"%block_number
elif cmd=='session':
session_id = random_string(10)
try:
if last_status != status:
sessions[session_id][addr] = status
ret[addr] = status
- out = repr( (store.get_block_number(1), ret ) )
+ out = repr( (block_number, ret ) )
elif cmd == 'h':
# history
def clean_session_thread():
while not stopping:
- time.sleep(30)
+ time.sleep(3)
t = time.time()
for k,t0 in sessions_last_time.items():
if t - t0 > 60:
try:
s = socket.socket()
s.connect(('irc.freenode.net', 6667))
- s.send('USER '+NICK+' '+NICK+' bla :'+NICK+'\n')
- s.send('NICK '+NICK+'\n')
+ s.send('USER '+HOST+' '+NICK+' bla :'+NICK+'\n')
+ s.send('NICK '+NICK+'\n')
s.send('JOIN #electrum\n')
t = 0
while not stopping:
s.send('PONG '+line[1]+'\n')
elif '353' in line: # answer to /names
k = line.index('353')
- k2 = line.index('366')
+ try:
+ k2 = line.index('366')
+ except:
+ continue
for item in line[k+1:k2]:
if item[0:2] == 'E_':
s.send('USERHOST %s\n'%item)
elif '302' in line: # answer to /userhost
k = line.index('302')
- name = line[k+1]
- host = line[k+2].split('@')[1]
- peer_list[name] = host
+ m = re.match( "^:(.*?)=\+~(.*?)@(.*?)$", line[k+2] )
+ if m:
+ name = m.group(1)
+ host = m.group(2)
+ ip = m.group(3)
+ peer_list[name] = (ip,host)
elif time.time() - t > 5*60:
s.send('NAMES #electrum\n')
t = time.time()
dblock.acquire()
store.catch_up()
memorypool_update(store)
+ block_number = store.get_block_number(1)
dblock.release()
except:
traceback.print_exc(file=sys.stdout)