Beispiel #1
0
int LsapiConn::doWrite()
{
    if ( getConnector() )
    {
        int state = getConnector()->getState();
        if ((!state)||( state & (HEC_FWD_REQ_HEADER | HEC_FWD_REQ_BODY) ))
        {
            int ret = getConnector()->extOutputReady();
            if ( getState() == ABORT )
            {
                if ( getConnector() )
                {
                    incReqProcessed();
                    getConnector()->endResponse( 0, 0 );
                }
            }
            return ret;
        }
    }
    if ( m_iTotalPending > 0 )
        return flush();
    else
        suspendWrite();
    return 0;
}
Beispiel #2
0
int ProxyConn::doWrite()
{
    int ret;
    if ((m_iSsl) && (!m_ssl.isConnected()))
    {
        ret = connectSSL();
        if (ret != 1)
            return ret;
    }
    if (getConnector())
    {
        int state = getConnector()->getState();
        if ((!state) || (state & (HEC_FWD_REQ_HEADER | HEC_FWD_REQ_BODY)))
        {
            int ret = getConnector()->extOutputReady();
            if (getState() == ABORT)
            {
                if (getConnector())
                {
                    incReqProcessed();
                    getConnector()->endResponse(0, 0);
                }
            }
            return ret;
        }
    }
    if (m_iTotalPending > 0)
        return flush();
    else
        suspendWrite();
    return 0;
}
Beispiel #3
0
int  LsapiConn::endOfReqBody()
{
    if ( m_iTotalPending )
    {
        int ret = flush();
        if ( ret )
            return ret;
    }
    suspendWrite();
    m_lReqSentTime = DateTime::s_curTime;
    return 0;
}
int CgidConn::endOfReqBody()
{
    if ( m_iTotalPending )
    {
        int ret = flush();
        if ( ret )
            return ret;
    }
    suspendWrite();
    ::shutdown( getfd(), SHUT_WR );
    return 0;
}
Beispiel #5
0
int  ProxyConn::endOfReqBody()
{
    if (m_iTotalPending)
    {
        int ret = flush();
        if (ret)
            return ret;
    }
    suspendWrite();
    m_lReqSentTime = time(NULL);
    return 0;
}
int CgiConnection::onWrite()
{
    if ( !getConnector() )
        return -1;
    if ( D_ENABLED( DL_MEDIUM ) )
        LOG_D(( getLogger(), "[%s] CgiConnection::onWrite()\n", getLogId() ));
    int ret = extOutputReady();
    if (!( getConnector()->getState() & HEC_FWD_REQ_BODY ))
    {
        suspendWrite();
    }
    return ret;
}
Beispiel #7
0
int  JConn::endOfReqBody()
{
    if ( m_iPendingBody )
        sendReqBodyPacket();
    if ( m_iTotalPending )
    {
        int ret = flush();
        if ( ret )
            return ret;
    }
    //JkAjp13::buildAjpHeader( m_pBufEnd, 0 );
    //write( m_pBufEnd, 4 );
    suspendWrite();
    return 0;
}
Beispiel #8
0
int JConn::doWrite()
{
    if ( getConnector() )
    {
        int state = getConnector()->getState();
        if ((!state)||( state & (HEC_FWD_REQ_HEADER | HEC_FWD_REQ_BODY) ))
        {
            return getConnector()->extOutputReady();
        }
    }
    if ( m_iTotalPending > 0 )
        return flush();
    else
        suspendWrite();
    return 0;
}
int CgidConn::doWrite()
{
    if ( !getConnector() )
        return -1;
    if ( D_ENABLED( DL_MEDIUM ) )
        LOG_D(( getLogger(), "[%s] CgidConn::onWrite()\n", getLogId() ));
    int ret = getConnector()->extOutputReady();
    if (!( getConnector()->getState() & HEC_FWD_REQ_BODY ))
    {
        if ( m_iTotalPending > 0 )
            return flush();
        else
        {
            suspendWrite();
            ::shutdown( getfd(), SHUT_WR );
        }
    }
    return ret;
}
Beispiel #10
0
int L4Handler::onWriteEx()
{
    bool full = ((getBuf()->available() == 0) ? true : false);
    int length;
    
    while ((length = getBuf()->blockSize()) > 0 )
    {
        int n = getStream()->write(getBuf()->begin(), length);
        if ( D_ENABLED( DL_LESS ) )
                LOG_D ((getLogger(), "[%s] L4Handler: write [%d of %d]", getLogId(), n, length ));
        
        if (n > 0)
            getBuf()->pop_front(n);
        else if ( n == 0 )
            break;
        else // if (n < 0)
        {
            closeBothConnection();
            return -1;
        }
    }
    
    if (getBuf()->available() != 0)
    {
        if (full)
            m_pL4conn->continueRead();
    
        if ( getBuf()->empty() )
        {
            suspendWrite();
            if ( D_ENABLED( DL_LESS ) )
            {
                LOG_D(( getLogger(), "[%s] [L4conn] m_pL4conn->continueRead",
                    getLogId() ));
            }
        }
    }
        
    return 0;
}
Beispiel #11
0
int CgiConnection::endOfReqBody()
{
    suspendWrite();
    ::shutdown( getfd(), SHUT_WR );
    return 0;
}