Return-Path: Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: (qmail 72563 invoked from network); 12 Jan 2010 18:56:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 12 Jan 2010 18:56:11 -0000 Received: (qmail 87039 invoked by uid 500); 12 Jan 2010 18:56:10 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 86962 invoked by uid 500); 12 Jan 2010 18:56:10 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 86953 invoked by uid 99); 12 Jan 2010 18:56:10 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Jan 2010 18:56:10 +0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=OBSCURED_EMAIL,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of poirier@pobox.com designates 208.72.237.35 as permitted sender) Received: from [208.72.237.35] (HELO sasl.smtp.pobox.com) (208.72.237.35) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Jan 2010 18:55:58 +0000 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id 63EF983E4B for ; Tue, 12 Jan 2010 13:55:36 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to :subject:in-reply-to:references:date:message-id:mime-version :content-type; s=sasl; bh=/Bx2j5raNgZUk6dM/leFuO1epcM=; b=B95my7 hv65blZxyML4qbZgUvC1tgL83ygJGP9n+zAP13YOg6g1W93M3Nyj0DRqcqZOXYAt 7Dc8jRA/+O+Gy8VgulvvDPpTaEn5ZF6ZxxZXg5odhAcGg5r56N9Xdd2NwAgqpCxl YAfzyJbH/pjnm6a7JpW4+5cqTcSbb9tXqjsCE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:subject :in-reply-to:references:date:message-id:mime-version :content-type; q=dns; s=sasl; b=FjTHZ8x1UoNTfgHziSPYWr2Fvnq6gSgE EY15XiQ7h3hciIbOBrYWW79YMtKbg37w2zcWJ13Doh3n2mLiQjjwfKNqFSJch40l DGnG9k0MwPt8xl7XYcms7U7f4kLUg4iUW7wlVnzK35WtODxQlPQkGHomNfgf27o2 Di3enuc2cH0= Received: from b-pb-sasl-quonix. (unknown [127.0.0.1]) by b-sasl-quonix.pobox.com (Postfix) with ESMTP id 5FBF483E4A for ; Tue, 12 Jan 2010 13:55:36 -0500 (EST) Received: from slappy.raleigh.ibm.com (unknown [129.33.49.251]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by b-sasl-quonix.pobox.com (Postfix) with ESMTPSA id 07C3183E49 for ; Tue, 12 Jan 2010 13:55:35 -0500 (EST) From: Dan Poirier To: dev@httpd.apache.org Subject: mod_reqtimeout backport (was: svn commit: r897527 - /httpd/httpd/branches/2.2.x/STATUS) In-Reply-To: <20100109195247.B53EC238899B@eris.apache.org> (sf@apache.org's message of "Sat, 09 Jan 2010 19:52:47 -0000") References: <20100109195247.B53EC238899B@eris.apache.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (darwin) Date: Tue, 12 Jan 2010 13:55:34 -0500 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Pobox-Relay-ID: 11AB6E16-FFAC-11DE-816C-2B0D0635E987-25076293!b-pb-sasl-quonix.pobox.com X-Virus-Checked: Checked by ClamAV on apache.org Some comments based on : Code: - The units are confusing in the computation and use of the rate_factor values. rate_factor is computed as apr_time_from_sec(1)/min_rate where min_rate's units are bytes/second, so the units for the rate_factor are seconds^2/(10^6 * bytes). Then in extend_timeout(), that gets multipled by a length in bytes, so we end up with units of seconds^2/10^6 where we really want microseconds. I think it would be clearer to write the computation of the rate_factor as rate_factor = APR_USEC_PER_SEC / min_rate so the units work out as usec/byte and the timeout ends up in usec. (Yes, you end up with the same numbers, but it took me quite a while to prove that to myself, given that the units weren't right.) - I'd feel better if most of the AP_DEBUG_ASSERTs were replaced by code that would fail the request. In production this could result in crashes at runtime if any of these bad return values actually happen. - If headermax precedes headerinit on the RequestTimeout directive line, there's no check that headerinit <= headermax. Similarly for bodymax and bodyinit. Documentation: - Should the module status still be "Experimental" if it's backported? - Compatibility should show this available in 2.2.something if it's backported. - s/timout/timeout/g - Maybe an explanatory paragraph should be added, about xxxinit and xxxminrate and xxxmax and how they relate to each other and affect the timeout of requests. That would resolve some questions I had as I was reading through this, like "why is this called headerinit instead of headerread?". Dan