|
@@ -31,15 +31,17 @@ def wait_for_log(s):
|
|
|
cutoff = time.time() + LOG_TIMEOUT
|
|
|
while time.time() < cutoff:
|
|
|
l = tor_process.stdout.readline()
|
|
|
- l = l.decode('utf8')
|
|
|
+ l = l.decode('utf8', 'backslashreplace')
|
|
|
if s in l:
|
|
|
logging.info('Tor logged: "{}"'.format(l.strip()))
|
|
|
return
|
|
|
- logging.info('Tor logged: "{}", waiting for "{}"'.format(l.strip(), s))
|
|
|
# readline() returns a blank string when there is no output
|
|
|
# avoid busy-waiting
|
|
|
- if len(s) == 0:
|
|
|
+ if len(l) == 0:
|
|
|
+ logging.debug('Tor has not logged anything, waiting for "{}"'.format(s))
|
|
|
time.sleep(LOG_WAIT)
|
|
|
+ else:
|
|
|
+ logging.info('Tor logged: "{}", waiting for "{}"'.format(l.strip(), s))
|
|
|
fail('Could not find "{}" in logs after {} seconds'.format(s, LOG_TIMEOUT))
|
|
|
|
|
|
def pick_random_port():
|
|
@@ -119,18 +121,18 @@ if control_socket.connect_ex(('127.0.0.1', control_port)):
|
|
|
tor_process.terminate()
|
|
|
fail('Cannot connect to ControlPort')
|
|
|
|
|
|
-control_socket.sendall('AUTHENTICATE \r\n'.encode('utf8'))
|
|
|
-control_socket.sendall('SETCONF SOCKSPort=0.0.0.0:{}\r\n'.format(socks_port).encode('utf8'))
|
|
|
+control_socket.sendall('AUTHENTICATE \r\n'.encode('ascii'))
|
|
|
+control_socket.sendall('SETCONF SOCKSPort=0.0.0.0:{}\r\n'.format(socks_port).encode('ascii'))
|
|
|
wait_for_log('Opened Socks listener')
|
|
|
|
|
|
try_connecting_to_socksport()
|
|
|
|
|
|
-control_socket.sendall('SETCONF SOCKSPort=127.0.0.1:{}\r\n'.format(socks_port).encode('utf8'))
|
|
|
+control_socket.sendall('SETCONF SOCKSPort=127.0.0.1:{}\r\n'.format(socks_port).encode('ascii'))
|
|
|
wait_for_log('Opened Socks listener')
|
|
|
|
|
|
try_connecting_to_socksport()
|
|
|
|
|
|
-control_socket.sendall('SIGNAL HALT\r\n'.encode('utf8'))
|
|
|
+control_socket.sendall('SIGNAL HALT\r\n'.encode('ascii'))
|
|
|
|
|
|
wait_for_log('exiting cleanly')
|
|
|
logging.info('OK')
|