diff options
author | Yann Leboulanger <asterix@lagaule.org> | 2012-12-23 20:47:21 +0400 |
---|---|---|
committer | Yann Leboulanger <asterix@lagaule.org> | 2012-12-23 20:47:21 +0400 |
commit | 6d2282068b7d2657cb64a4904d1c9bedecbaad69 (patch) | |
tree | 8e8462ee5d158b00a29f9bb5e3c4514d896cb92f | |
parent | 72ae2f08ce7fea0ba9f83ca59957345186b6d877 (diff) |
store all SSL errors
-rw-r--r-- | nbxmpp/tls_nb.py | 12 | ||||
-rw-r--r-- | nbxmpp/transports_nb.py | 6 |
2 files changed, 12 insertions, 6 deletions
diff --git a/nbxmpp/tls_nb.py b/nbxmpp/tls_nb.py index b6a4f62..b2db33e 100644 --- a/nbxmpp/tls_nb.py +++ b/nbxmpp/tls_nb.py @@ -393,7 +393,7 @@ class NonBlockingTLS(PlugIn): flags |= 16384 tcpsock._sslContext.set_options(flags) - tcpsock.ssl_errnum = 0 + tcpsock.ssl_errnum = [0] tcpsock._sslContext.set_verify(OpenSSL.SSL.VERIFY_PEER, self._ssl_verify_callback) try: @@ -449,11 +449,11 @@ class NonBlockingTLS(PlugIn): def _ssl_verify_callback(self, sslconn, cert, errnum, depth, ok): # Exceptions can't propagate up through this callback, so print them here. try: - self._owner.ssl_fingerprint_sha1 = cert.digest('sha1') - self._owner.ssl_certificate = cert - self._owner.ssl_errnum = errnum - self._owner.ssl_cert_pem = OpenSSL.crypto.dump_certificate( - OpenSSL.crypto.FILETYPE_PEM, cert) + self._owner.ssl_fingerprint_sha1.append(cert.digest('sha1')) + self._owner.ssl_certificate.append(cert) + self._owner.ssl_errnum.append(errnum) + self._owner.ssl_cert_pem.append(OpenSSL.crypto.dump_certificate( + OpenSSL.crypto.FILETYPE_PEM, cert)) return True except: log.error("Exception caught in _ssl_info_callback:", exc_info=True) diff --git a/nbxmpp/transports_nb.py b/nbxmpp/transports_nb.py index 2c17a39..e4101bd 100644 --- a/nbxmpp/transports_nb.py +++ b/nbxmpp/transports_nb.py @@ -310,6 +310,12 @@ class NonBlockingTCP(NonBlockingTransport, IdleObject): self.proxy_dict = proxy_dict self.on_remote_disconnect = self.disconnect + # ssl variables + self.ssl_fingerprint_sha1 = [] + self.ssl_certificate = [] + self.ssl_errnum = [] + self.ssl_cert_pem = [] + # FIXME: transport should not be aware xmpp def start_disconnect(self): NonBlockingTransport.start_disconnect(self) |