summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot2006-06-16 01:03:15 -0500
committerroot2006-06-16 01:03:15 -0500
commitbeeb2f0e7d39a2c5ade80895a9c68d97357ce465 (patch)
tree3f1a101f38e6212a217a8b6def703c71edfee975
parent384f5733ff8e4be66505a47b6ef45be334792cc6 (diff)
./http/apache2/byterange.patch: 2006/06/15 sync stable from p4
-rw-r--r--http/apache2/byterange.patch80
1 files changed, 0 insertions, 80 deletions
diff --git a/http/apache2/byterange.patch b/http/apache2/byterange.patch
deleted file mode 100644
index 38fdd46d09..0000000000
--- a/http/apache2/byterange.patch
+++ /dev/null
@@ -1,80 +0,0 @@
---- modules/http/http_protocol.c (revision 226972)
-+++ modules/http/http_protocol.c (working copy)
-@@ -2856,18 +2856,35 @@
- #define MIN_LENGTH(len1, len2) ((len1 > len2) ? len2 : len1)
- request_rec *r = f->r;
- conn_rec *c = r->connection;
-- byterange_ctx *ctx = f->ctx;
-+ byterange_ctx *ctx;
- apr_bucket *e;
- apr_bucket_brigade *bsend;
- apr_off_t range_start;
- apr_off_t range_end;
- char *current;
-- apr_off_t bb_length;
- apr_off_t clength = 0;
- apr_status_t rv;
- int found = 0;
-
-- if (!ctx) {
-+ /* Iterate through the brigade until reaching EOS or a bucket with
-+ * unknown length. */
-+ for (e = APR_BRIGADE_FIRST(bb);
-+ (e != APR_BRIGADE_SENTINEL(bb) && !APR_BUCKET_IS_EOS(e)
-+ && e->length != (apr_size_t)-1);
-+ e = APR_BUCKET_NEXT(e)) {
-+ clength += e->length;
-+ }
-+
-+ /* Don't attempt to do byte range work if this brigade doesn't
-+ * contain an EOS, or if any of the buckets has an unknown length;
-+ * this avoids the cases where it is expensive to perform
-+ * byteranging (i.e. may require arbitrary amounts of memory). */
-+ if (!APR_BUCKET_IS_EOS(e) || clength <= 0) {
-+ ap_remove_output_filter(f);
-+ return ap_pass_brigade(f->next, bb);
-+ }
-+
-+ {
- int num_ranges = ap_set_byterange(r);
-
- /* We have nothing to do, get out of the way. */
-@@ -2876,7 +2893,7 @@
- return ap_pass_brigade(f->next, bb);
- }
-
-- ctx = f->ctx = apr_pcalloc(r->pool, sizeof(*ctx));
-+ ctx = apr_pcalloc(r->pool, sizeof(*ctx));
- ctx->num_ranges = num_ranges;
- /* create a brigade in case we never call ap_save_brigade() */
- ctx->bb = apr_brigade_create(r->pool, c->bucket_alloc);
-@@ -2903,29 +2920,6 @@
- }
- }
-
-- /* We can't actually deal with byte-ranges until we have the whole brigade
-- * because the byte-ranges can be in any order, and according to the RFC,
-- * we SHOULD return the data in the same order it was requested.
-- *
-- * XXX: We really need to dump all bytes prior to the start of the earliest
-- * range, and only slurp up to the end of the latest range. By this we
-- * mean that we should peek-ahead at the lowest first byte of any range,
-- * and the highest last byte of any range.
-- */
-- if (!APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb))) {
-- ap_save_brigade(f, &ctx->bb, &bb, r->pool);
-- return APR_SUCCESS;
-- }
--
-- /* Prepend any earlier saved brigades. */
-- APR_BRIGADE_PREPEND(bb, ctx->bb);
--
-- /* It is possible that we won't have a content length yet, so we have to
-- * compute the length before we can actually do the byterange work.
-- */
-- apr_brigade_length(bb, 1, &bb_length);
-- clength = (apr_off_t)bb_length;
--
- /* this brigade holds what we will be sending */
- bsend = apr_brigade_create(r->pool, c->bucket_alloc);
-