(self)
| 2650 | self.sock.close() |
| 2651 | |
| 2652 | def run(self): |
| 2653 | self.running = True |
| 2654 | if not self.server.starttls_server: |
| 2655 | if not self.wrap_conn(): |
| 2656 | return |
| 2657 | while self.running: |
| 2658 | try: |
| 2659 | msg = self.read() |
| 2660 | stripped = msg.strip() |
| 2661 | if not stripped: |
| 2662 | # eof, so quit this handler |
| 2663 | self.running = False |
| 2664 | try: |
| 2665 | self.sock = self.sslconn.unwrap() |
| 2666 | except OSError: |
| 2667 | # Many tests shut the TCP connection down |
| 2668 | # without an SSL shutdown. This causes |
| 2669 | # unwrap() to raise OSError with errno=0! |
| 2670 | pass |
| 2671 | else: |
| 2672 | self.sslconn = None |
| 2673 | self.close() |
| 2674 | elif stripped == b'over': |
| 2675 | if support.verbose and self.server.connectionchatty: |
| 2676 | sys.stdout.write(" server: client closed connection\n") |
| 2677 | self.close() |
| 2678 | return |
| 2679 | elif (self.server.starttls_server and |
| 2680 | stripped == b'STARTTLS'): |
| 2681 | if support.verbose and self.server.connectionchatty: |
| 2682 | sys.stdout.write(" server: read STARTTLS from client, sending OK...\n") |
| 2683 | self.write(b"OK\n") |
| 2684 | if not self.wrap_conn(): |
| 2685 | return |
| 2686 | elif (self.server.starttls_server and self.sslconn |
| 2687 | and stripped == b'ENDTLS'): |
| 2688 | if support.verbose and self.server.connectionchatty: |
| 2689 | sys.stdout.write(" server: read ENDTLS from client, sending OK...\n") |
| 2690 | self.write(b"OK\n") |
| 2691 | self.sock = self.sslconn.unwrap() |
| 2692 | self.sslconn = None |
| 2693 | if support.verbose and self.server.connectionchatty: |
| 2694 | sys.stdout.write(" server: connection is now unencrypted...\n") |
| 2695 | elif stripped == b'CB tls-unique': |
| 2696 | if support.verbose and self.server.connectionchatty: |
| 2697 | sys.stdout.write(" server: read CB tls-unique from client, sending our CB data...\n") |
| 2698 | data = self.sslconn.get_channel_binding("tls-unique") |
| 2699 | self.write(repr(data).encode("us-ascii") + b"\n") |
| 2700 | elif stripped == b'PHA': |
| 2701 | if support.verbose and self.server.connectionchatty: |
| 2702 | sys.stdout.write(" server: initiating post handshake auth\n") |
| 2703 | try: |
| 2704 | self.sslconn.verify_client_post_handshake() |
| 2705 | except ssl.SSLError as e: |
| 2706 | self.write(repr(e).encode("us-ascii") + b"\n") |
| 2707 | else: |
| 2708 | self.write(b"OK\n") |
| 2709 | elif stripped == b'HASCERT': |
nothing calls this directly
no test coverage detected