Commit d32156d4 authored by Jean-Frederic Clere's avatar Jean-Frederic Clere
Browse files

try to prevent a single long request marking a worker in error.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1092076 13f79535-47bb-0310-9956-ffa450edef68
parent b4dc59b7
Loading
Loading
Loading
Loading
+1 −1
Changes for modules/proxy/ajp_link.c: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ apr_status_t ajp_ilink_receive(apr_socket_t *sock, ajp_msg_t *msg)
    if (status != APR_SUCCESS) {
        ap_log_error(APLOG_MARK, APLOG_ERR, status, NULL,
                     "ajp_ilink_receive() can't receive header");
        return AJP_ENO_HEADER;
        return (status == APR_TIMEUP ? APR_TIMEUP : AJP_ENO_HEADER);
    }

    status = ajp_msg_check_header(msg, &blen);
+9 −0
Changes for modules/proxy/mod_proxy_ajp.c: 9 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -336,6 +336,15 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                     "proxy: read response failed from %pI (%s)",
                     conn->worker->cp->addr,
                     conn->worker->s->hostname);

        /* If we had a successful cping/cpong and then a timeout
         * we assume it is a request that cause a back-end timeout,
         * but doesn't affect the whole worker.
         */
        if (status == APR_TIMEUP && conn->worker->ping_timeout_set) {
            return HTTP_GATEWAY_TIME_OUT;
        }

        /*
         * This is only non fatal when we have not sent (parts) of a possible
         * request body so far (we do not store it and thus cannot send it