Esempio n. 1
0
 SSL* SSLManager::accept(int fd) {
     SSL* ssl = _secure(fd);
     int ret = SSL_accept(ssl);
     if (ret != 1)
         _handleSSLError(SSL_get_error(ssl, ret));
     return ssl;
 }
Esempio n. 2
0
 SSL* SSLManager::accept(int fd) {
     SSL* ssl = _secure(fd);
     ScopeGuard guard = MakeGuard(::SSL_free, ssl);
     int ret = SSL_accept(ssl);
     if (ret != 1)
         _handleSSLError(SSL_get_error(ssl, ret));
     guard.Dismiss();
     return ssl;
 }
Esempio n. 3
0
    int SSLManager::SSL_shutdown(SSLConnection* conn) {
        int status;
        do {
            status = ::SSL_shutdown(conn->ssl);
        } while(!_doneWithSSLOp(conn, status));
 
        if (status < 0)
            _handleSSLError(SSL_get_error(conn, status));
        return status;
    }
Esempio n. 4
0
    int SSLManager::SSL_write(SSLConnection* conn, const void* buf, int num) {
        int status;
        do {
            status = ::SSL_write(conn->ssl, buf, num);
        } while(!_doneWithSSLOp(conn, status));
 
        if (status <= 0)
            _handleSSLError(SSL_get_error(conn, status));
        return status;
    }
Esempio n. 5
0
    SSLConnection* SSLManager::accept(Socket* socket) {
        SSLConnection* sslConn = new SSLConnection(_serverContext, socket);
        ScopeGuard sslGuard = MakeGuard(::SSL_free, sslConn->ssl);
        ScopeGuard bioGuard = MakeGuard(::BIO_free, sslConn->networkBIO);
 
        int ret;
        do {
            ret = ::SSL_accept(sslConn->ssl);
        } while(!_doneWithSSLOp(sslConn, ret));
 
        if (ret != 1)
            _handleSSLError(SSL_get_error(sslConn, ret));
 
        sslGuard.Dismiss();
        bioGuard.Dismiss();
        return sslConn;
    }