(self, reason="Unknown")
| 604 | |
| 605 | # Close connection |
| 606 | def close(self, reason="Unknown"): |
| 607 | if self.closed: |
| 608 | return False # Already closed |
| 609 | self.closed = True |
| 610 | self.connected = False |
| 611 | if self.event_connected: |
| 612 | self.event_connected.set(False) |
| 613 | |
| 614 | self.log( |
| 615 | "Closing connection: %s, waiting_requests: %s, sites: %s, buff: %s..." % |
| 616 | (reason, len(self.waiting_requests), self.sites, self.incomplete_buff_recv) |
| 617 | ) |
| 618 | for request in self.waiting_requests.values(): # Mark pending requests failed |
| 619 | request["evt"].set(False) |
| 620 | self.waiting_requests = {} |
| 621 | self.waiting_streams = {} |
| 622 | self.sites = 0 |
| 623 | self.server.removeConnection(self) # Remove connection from server registry |
| 624 | try: |
| 625 | if self.sock: |
| 626 | self.sock.shutdown(gevent.socket.SHUT_WR) |
| 627 | self.sock.close() |
| 628 | except Exception as err: |
| 629 | if config.debug_socket: |
| 630 | self.log("Close error: %s" % err) |
| 631 | |
| 632 | # Little cleanup |
| 633 | self.sock = None |
| 634 | self.unpacker = None |
| 635 | self.event_connected = None |
no test coverage detected