diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2012-06-16 13:38:10 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2012-06-16 13:38:10 +1200 |
commit | 4e53f1ee908949c0dcafd822bf05f9523e00d189 (patch) | |
tree | 856844675103ae220209be8911dd8d1cb7358b53 /libmproxy/tcpserver.py | |
parent | 8ae64337ed64b0dc85aeba92ed23d038466ff6f7 (diff) | |
download | mitmproxy-4e53f1ee908949c0dcafd822bf05f9523e00d189.tar.gz mitmproxy-4e53f1ee908949c0dcafd822bf05f9523e00d189.tar.bz2 mitmproxy-4e53f1ee908949c0dcafd822bf05f9523e00d189.zip |
Rename our tcpserver to netlib, expand to include client network functions.
Diffstat (limited to 'libmproxy/tcpserver.py')
-rw-r--r-- | libmproxy/tcpserver.py | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/libmproxy/tcpserver.py b/libmproxy/tcpserver.py deleted file mode 100644 index bf7ed0b4..00000000 --- a/libmproxy/tcpserver.py +++ /dev/null @@ -1,88 +0,0 @@ -import select, socket, threading - -class BaseHandler: - rbufsize = -1 - wbufsize = 0 - def __init__(self, connection, client_address, server): - self.connection = connection - self.rfile = self.connection.makefile('rb', self.rbufsize) - self.wfile = self.connection.makefile('wb', self.wbufsize) - - self.client_address = client_address - self.server = server - self.handle() - self.finish() - - def finish(self): - try: - if not getattr(self.wfile, "closed", False): - self.wfile.flush() - self.connection.close() - self.wfile.close() - self.rfile.close() - except IOError: - pass - - def handle(self): - raise NotImplementedError - - -class TCPServer: - request_queue_size = 20 - def __init__(self, server_address): - self.server_address = server_address - self.__is_shut_down = threading.Event() - self.__shutdown_request = False - self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - self.socket.bind(self.server_address) - self.server_address = self.socket.getsockname() - self.socket.listen(self.request_queue_size) - - def fileno(self): - return self.socket.fileno() - - def request_thread(self, request, client_address): - try: - self.handle_connection(request, client_address) - request.close() - except: - self.handle_error(request, client_address) - request.close() - - def serve_forever(self, poll_interval=0.5): - self.__is_shut_down.clear() - try: - while not self.__shutdown_request: - r, w, e = select.select([self], [], [], poll_interval) - if self in r: - try: - request, client_address = self.socket.accept() - except socket.error: - return - try: - t = threading.Thread(target = self.request_thread, - args = (request, client_address)) - t.setDaemon (1) - t.start() - except: - self.handle_error(request, client_address) - request.close() - finally: - self.__shutdown_request = False - self.__is_shut_down.set() - - def shutdown(self): - self.__shutdown_request = True - self.__is_shut_down.wait() - - def handle_error(self, request, client_address): - print '-'*40 - print 'Exception happened during processing of request from', - print client_address - import traceback - traceback.print_exc() # XXX But this goes to stderr! - print '-'*40 - - def handle_connection(self, request, client_address): - raise NotImplementedError |