LoginSignup
0
0

More than 5 years have passed since last update.

xmpppyで'_ssl._SSLSocket' object has no attribute 'issuer'

Last updated at Posted at 2015-10-26

なんか、xmpppyで通信しようとすると表題のエラーで失敗します。どうもSSL周りの動きがおかしい。ググっているとこちらを発見。

どうもパッチ適用でいけるっぽい?ちなみに手元のバージョンはこちら

[sayamada@PyXmppClient]$pip freeze|grep xmpp
xmpppy==0.5.0rc1

--- xmpp/transports.py.orig 2010-04-06 21:05:04.000000000 +0800
+++ xmpp/transports.py  2010-04-06 21:05:20.000000000 +0800
@@ -27,7 +27,7 @@ Transports are stackable so you - f.e. T
 Also exception 'error' is defined to allow capture of this module specific exceptions.
 """

-import socket,select,base64,dispatcher,sys
+import socket,ssl,select,base64,dispatcher,sys
 from simplexml import ustr
 from client import PlugIn
 from protocol import *
@@ -312,9 +312,9 @@ class TLS(PlugIn):
         """ Immidiatedly switch socket to TLS mode. Used internally."""
         """ Here we should switch pending_data to hint mode."""
         tcpsock=self._owner.Connection
-        tcpsock._sslObj    = socket.ssl(tcpsock._sock, None, None)
-        tcpsock._sslIssuer = tcpsock._sslObj.issuer()
-        tcpsock._sslServer = tcpsock._sslObj.server()
+        tcpsock._sslObj    = ssl.wrap_socket(tcpsock._sock, None, None)
+        tcpsock._sslIssuer = tcpsock._sslObj.getpeercert().get('issuer')
+        tcpsock._sslServer = tcpsock._sslObj.getpeercert().get('server')
         tcpsock._recv = tcpsock._sslObj.read
         tcpsock._send = tcpsock._sslObj.write


ということで、当ててみたところ無事に解消しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0