diff options
Diffstat (limited to 'pathod/pathoc.py')
| -rw-r--r-- | pathod/pathoc.py | 67 | 
1 files changed, 34 insertions, 33 deletions
diff --git a/pathod/pathoc.py b/pathod/pathoc.py index b2563988..21fc9845 100644 --- a/pathod/pathoc.py +++ b/pathod/pathoc.py @@ -291,44 +291,45 @@ class Pathoc(tcp.TCPClient):          if self.use_http2 and not self.ssl:              raise NotImplementedError("HTTP2 without SSL is not supported.") -        ret = tcp.TCPClient.connect(self) -        if connect_to: -            self.http_connect(connect_to) +        with tcp.TCPClient.connect(self) as closer: +            if connect_to: +                self.http_connect(connect_to) -        self.sslinfo = None -        if self.ssl: -            try: -                alpn_protos = [b'http/1.1'] -                if self.use_http2: -                    alpn_protos.append(b'h2') - -                self.convert_to_ssl( -                    sni=self.sni, -                    cert=self.clientcert, -                    method=self.ssl_version, -                    options=self.ssl_options, -                    cipher_list=self.ciphers, -                    alpn_protos=alpn_protos +            self.sslinfo = None +            if self.ssl: +                try: +                    alpn_protos = [b'http/1.1'] +                    if self.use_http2: +                        alpn_protos.append(b'h2') + +                    self.convert_to_ssl( +                        sni=self.sni, +                        cert=self.clientcert, +                        method=self.ssl_version, +                        options=self.ssl_options, +                        cipher_list=self.ciphers, +                        alpn_protos=alpn_protos +                    ) +                except exceptions.TlsException as v: +                    raise PathocError(str(v)) + +                self.sslinfo = SSLInfo( +                    self.connection.get_peer_cert_chain(), +                    self.get_current_cipher(), +                    self.get_alpn_proto_negotiated()                  ) -            except exceptions.TlsException as v: -                raise PathocError(str(v)) +                if showssl: +                    print(str(self.sslinfo), file=fp) -            self.sslinfo = SSLInfo( -                self.connection.get_peer_cert_chain(), -                self.get_current_cipher(), -                self.get_alpn_proto_negotiated() -            ) -            if showssl: -                print(str(self.sslinfo), file=fp) +                if self.use_http2: +                    self.protocol.check_alpn() +                    if not self.http2_skip_connection_preface: +                        self.protocol.perform_client_connection_preface() -            if self.use_http2: -                self.protocol.check_alpn() -                if not self.http2_skip_connection_preface: -                    self.protocol.perform_client_connection_preface() +            if self.timeout: +                self.settimeout(self.timeout) -        if self.timeout: -            self.settimeout(self.timeout) -        return ret +            return closer.pop()      def stop(self):          if self.ws_framereader:  | 
