本文整理汇总了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 );
}