On 09/04/2010 08:28 AM, Amos Jeffries wrote:

If your comment is correct and connKeepReadingIncompleteRequest() only
refer to the headers. Could the function name be updated too say that?

In connCancelIncompleteRequests the debugs look useless for level 1.
There is no info about which requests they refer. If you wish to retain
them at that level please use DBG_IMPORTANT, reference something to
track the request and add a WARNING or NOTICE etc tag to highlight why
they are at that level.

I will morph the functions below into a single ConnStateData::checkForHugeHeaders() method and raise the debug level unless there are objections.

Thank you,

Alex.


// here, an "incomplete request" means we have not found the end of headers yet
int
connKeepReadingIncompleteRequest(ConnStateData * conn)
{
    return conn->in.notYetUsed >= Config.maxRequestHeaderSize ? 0 : 1;
}

void
connCancelIncompleteRequests(ConnStateData * conn)
{
    ClientSocketContext *context = parseHttpRequestAbort(conn, "error:request-!
    clientStreamNode *node = context->getClientReplyContext();
    assert(!connKeepReadingIncompleteRequest(conn));
    debugs(33, 1, "Request header is too large (" << conn->in.notYetUsed << " !
    debugs(33, 1, "Config 'request_header_max_size'= " << Config.maxRequestHea!
    clientReplyContext *repContext = dynamic_cast<clientReplyContext *>(node->!
    assert (repContext);
    repContext->setReplyToError(ERR_TOO_BIG,
                                HTTP_BAD_REQUEST, METHOD_NONE, NULL,
                                conn->peer, NULL, NULL, NULL);
    context->registerWithConn();
    context->pullData();
}

Reply via email to