当前位置: 首页>>代码示例>>C++>>正文


C++ HttpReq::addEnv方法代码示例

本文整理汇总了C++中HttpReq::addEnv方法的典型用法代码示例。如果您正苦于以下问题:C++ HttpReq::addEnv方法的具体用法?C++ HttpReq::addEnv怎么用?C++ HttpReq::addEnv使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在HttpReq的用法示例。


在下文中一共展示了HttpReq::addEnv方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: processHeaderLine


//.........这里部分代码省略.........
            if ( !HttpGlobals::getMime()->compressable( pValue ) )
                pReq->setGzip( 0 );
            *p1 = ch;
        }
        if ( pReq->isKeepAlive() )
            pReq->smartKeepAlive( pValue );
        {
            if ( !HttpMime::needCharset( pValue ) )
                break;
            const AutoStr2 * pCharset = pReq->getDefaultCharset();
            if ( !pCharset )
                break;
            if ( p )
            {
                while( isspace( *(++p) ) )
                    ;
                if ( strncmp( p, "charset=", 8 ) == 0 )
                    break;
            }
            AutoBuf& buf = pResp->getOutputBuf();
            if ( buf.available() < pLineEnd - pLineBegin + pCharset->len() + 4 )
            {
                buf.grow( pLineEnd - pLineBegin + pCharset->len() + 4 );
            }
            buf.appendNoCheck( pLineBegin, pLineEnd - pLineBegin );
            buf.appendNoCheck( pCharset->c_str(), pCharset->len() );
            buf.appendNoCheck( "\r\n", 2 );
        }
        return 0;
    case HttpHeader::H_CONTENT_ENCODING:
        pReq->setGzip( 0 );
        break;
    case HttpHeader::H_LOCATION:
        if ( pReq->getStatusCode() != SC_200 )
            break;
        if ( *pValue != '/' )
        {
            //set status code to 307
            pReq->setStatusCode( SC_302 );
        }
        else
        {
            pReq->setLocation( pValue, pLineEnd - pValue );
            return 0;
        }
        break;
    case HttpHeader::CGI_STATUS:
        index = HttpStatusCode::codeToIndex( pValue );
        if ( index != -1 )
        {
            pReq->updateNoRespBodyByStatus( index );
            if (( index >= SC_300 )&&( index < SC_400 ))
            {
                if ( *pReq->getLocation() )
                {
                    pResp->appendHeader( "Location: ", 10,
                        pReq->getLocation(), pReq->getLocationLen() );
                    pReq->clearLocation();    
                }
            }
            if (( status & HEC_RESP_AUTHORIZER )&&( index == SC_200))
                status |= HEC_RESP_AUTHORIZED;
        }
        return 0;
    case HttpHeader::H_TRANSFER_ENCODING:
        pResp->setContentLen( -1 );
        return 0;
    case HttpHeader::H_PROXY_CONNECTION:
    case HttpHeader::H_CONNECTION:
        if ( strncasecmp( pValue, "close", 5 ) == 0 )
            status |= HEC_RESP_CONN_CLOSE;
        return 0;
    case HttpHeader::H_CONTENT_LENGTH:
        if ( pResp->getContentLen() >= 0 )
        {
            long lContentLen = strtol( pValue, NULL, 10 );
            if (( lContentLen >= 0 )&&( lContentLen != LONG_MAX ))
                pResp->setContentLen( lContentLen );
        }
        //fall through
    case HttpHeader::H_KEEP_ALIVE:
    case HttpHeader::H_SERVER:
    case HttpHeader::H_DATE:
        return 0;
    default:
        //"script-control: no-abort" is not supported
        break;
    }
    if ( status & HEC_RESP_AUTHORIZED )
    {
        if (strncasecmp( pLineBegin, "Variable-", 9 ) == 0 )
        {
            if ( pKeyEnd > pLineBegin + 9 )
                pReq->addEnv( pLineBegin + 9, pKeyEnd - pLineBegin - 9,
                            pValue, pLineEnd - pValue );
        }
        return 0;
    }
    return pResp->appendHeaderLine( pLineBegin, pLineEnd );
}
开发者ID:DSpeichert,项目名称:OpenLiteSpeed,代码行数:101,代码来源:httpcgitool.cpp


注:本文中的HttpReq::addEnv方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。