diff --git a/proxywatchd.py b/proxywatchd.py index 39f1ffc..a24e734 100644 --- a/proxywatchd.py +++ b/proxywatchd.py @@ -47,6 +47,20 @@ class WorkerJob(): sock.connect() sock.send('%s\n' % random.choice(['NICK', 'USER', 'JOIN', 'MODE', 'PART', 'INVITE', 'KNOCK', 'WHOIS', 'WHO', 'NOTICE', 'PRIVMSG', 'PING', 'QUIT'])) return sock, proto, duration, torhost, srv, 0 + except rocksock.RocksockException as e: + et = e.get_errortype() + err = e.get_error() + fp = e.get_failedproxy() + + sock.disconnect() + + if et == rocksock.RS_ET_OWN: + if fp == 1 and \ + err == rocksock.RS_E_REMOTE_DISCONNECTED or \ + err == rocksock.RS_E_HIT_TIMEOUT: + # proxy is not online, so don't waste time trying all possible protocols + break + except KeyboardInterrupt as e: raise(e) except: sock.disconnect()