On Oct 18, 2012, at 9:41 PM, Nathan Mower <nath...@securitymetrics.com> wrote:

> The following sample code worked until Twisted began to prefer memory BIOs 
> over socket BIOs.  Now it produces this error...
> 
> exceptions.AttributeError: 'NoneType' object has no attribute 'getpeername'
> 
> ...on line 9 where getpeername() is called by the verify() callback.
> 
> Is there any way to obtain the peer name, given the OpenSSL.SSL.Connection 
> object passed into verify()?  Anything that surfaces the underlying socket?  
> (Perhaps something similar to what is done in connectionMade(), which does 
> work.)  Or alternatively, is there a way to tell the reactor to employ socket 
> BIOs?

The 'socket' attribute that you're accessing is not a documented attribute of 
ITransport, so in a way I'm glad that your code broke - this wasn't a valid way 
to use Twisted in the first place :).  See 
<http://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.ITransport.html>.

Now, as it happens, 
<http://twistedmatrix.com/documents/current/api/twisted.protocols.tls.TLSMemoryBIOProtocol.html>
 implements 
<http://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.ISSLTransport.html>
 which is a subinterface of 
<http://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.ITCPTransport.html>,
 which is therefore guaranteed to have a getPeer method 
<http://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.ITCPTransport.html#getPeer>
 that returns an IPv4Address 
<http://twistedmatrix.com/documents/current/api/twisted.internet.address.IPv4Address.html>
 or IPv6Address 
<http://twistedmatrix.com/documents/current/api/twisted.internet.address.IPv6Address.html>,
 both of which have a 'host' attribute that is the hostname.

So, in short, substitute "self.transport.getPeer().host" and your code should 
work again.

-glyph


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to