コード例 #1
0
ファイル: connector.py プロジェクト: vesellov/datahaven
            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 )