else: peerName, peerKeyID = CN, '' except (SSLError,X509Error,RSAError), e : logger.exception( 'ssl connect error' ) sslAbort( sslConn ) op.notify( None ) return if peerKey.toDER_PublicKey() != remotePublicKey.toDER_PublicKey() : logger.error( 'ssl connect public key mismatch' ) sslAbort( sslConn ) op.notify( None ) return # logger.info('onSSLConnect SUCCESSFUL with %s' % str(peerName)) op.notify( sslConn ) sslConn = SSLConnection( sslContext, sock ) sslConn.setConnectState() connectOp = sslConnect( sslConn, reactor, onSSLConnect ) op = AsyncOp( callback, doCancel ) return op def _directConnect( sslContext, remotePublicKey, directLocation, reactor, callback=None ) : def onConnect( connector ) : if connector.getError() != 0 : op.notify( None ) return authOp = _authenticateUser( connector.getSock(), sslContext, remotePublicKey, reactor, op.notify ) op.setCanceler( authOp.cancel ) connectOp = tcpConnect( directLocation.addr, reactor, onConnect ) op = AsyncOp( callback, connectOp.cancel )