def handle_single(self): """Handle a single HTTP request""" self.raw_requestline = self.rfile.readline(65537) if len(self.raw_requestline) > 65536: self.requestline = '' self.request_version = '' self.command = '' self.close_connection = 1 self.send_error(414) return if not self.parse_request(): # An error code has been sent, just exit return handler = ServerHandler(self.rfile, self.wfile, self.get_stderr(), self.get_environ()) handler.http_version = "1.1" handler.request_handler = self # backpointer for logging # eNodeB will sometimes close connection to enodebd. # The cause of this is unknown, but we can safely ignore the # closed connection, and continue as normal otherwise. # # While this throws a BrokenPipe exception in wsgi server, # it also causes an AttributeError to be raised because of a # bug in the wsgi server. # https://bugs.python.org/issue27682 try: handler.run(self.server.get_app()) except BrokenPipeError: self.log_error( "eNodeB has unexpectedly closed the TCP connection.")
def handle_single(self): """Handle a single HTTP request""" self.raw_requestline = self.rfile.readline(65537) if len(self.raw_requestline) > 65536: self.requestline = '' self.request_version = '' self.command = '' self.close_connection = 1 self.send_error(414) return if not self.parse_request(): # An error code has been sent, just exit return handler = ServerHandler(self.rfile, self.wfile, self.get_stderr(), self.get_environ()) handler.http_version = "1.1" handler.request_handler = self # backpointer for logging handler.run(self.server.get_app())
def handle_write(self): self._can_write = False handler = ServerHandler(self._input_stream, self.wfile, self.get_stderr(), self.get_environ()) handler.server_software = self.server_version handler.http_version = self.protocol_version[5:] handler.request_handler = self # backpointer for logging handler.wsgi_multiprocess = False handler.wsgi_multithread = False try: handler.run(self.server.get_app()) except Exception: self.handle_error() return if self.close_connection: self.handle_close() else: try: self.wfile.flush() except socket.error: self.handle_error() else: self._can_read = True