Return-Path: Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: (qmail 80252 invoked from network); 15 Nov 2007 20:45:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 15 Nov 2007 20:45:39 -0000 Received: (qmail 73835 invoked by uid 500); 15 Nov 2007 20:45:26 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 73786 invoked by uid 500); 15 Nov 2007 20:45:26 -0000 Mailing-List: contact cvs-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 cvs@httpd.apache.org Received: (qmail 73775 invoked by uid 99); 15 Nov 2007 20:45:26 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Nov 2007 12:45:26 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Nov 2007 20:45:24 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 43AD41A9832; Thu, 15 Nov 2007 12:45:18 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r595449 - /httpd/sandbox/amsterdam/d/modules/proxy/mod_serf.c Date: Thu, 15 Nov 2007 20:45:18 -0000 To: cvs@httpd.apache.org From: jerenkrantz@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071115204518.43AD41A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jerenkrantz Date: Thu Nov 15 12:45:16 2007 New Revision: 595449 URL: http://svn.apache.org/viewvc?rev=595449&view=rev Log: Amsterdam sandbox: Um, serf buckets support peek, so use that! And, implement peek for the brigade bucket. Suggested by: Greg Modified: httpd/sandbox/amsterdam/d/modules/proxy/mod_serf.c Modified: httpd/sandbox/amsterdam/d/modules/proxy/mod_serf.c URL: http://svn.apache.org/viewvc/httpd/sandbox/amsterdam/d/modules/proxy/mod_serf.c?rev=595449&r1=595448&r2=595449&view=diff ============================================================================== --- httpd/sandbox/amsterdam/d/modules/proxy/mod_serf.c (original) +++ httpd/sandbox/amsterdam/d/modules/proxy/mod_serf.c Thu Nov 15 12:45:16 2007 @@ -414,9 +414,7 @@ return serf_bucket_create(&serf_bucket_type_brigade, ctx->allocator, ctx); } -static apr_status_t brigade_read(serf_bucket_t *bucket, - apr_size_t requested, - const char **data, apr_size_t *len) +static void brigade_collapse(serf_bucket_t *bucket) { brigade_bucket_ctx_t *ctx = bucket->data; apr_status_t status; @@ -431,6 +429,16 @@ } ctx->last_read = 0; } +} + +static apr_status_t brigade_read(serf_bucket_t *bucket, + apr_size_t requested, + const char **data, apr_size_t *len) +{ + brigade_bucket_ctx_t *ctx = bucket->data; + apr_status_t status; + + brigade_collapse(bucket); if (APR_BRIGADE_EMPTY(ctx->bb) || APR_BUCKET_IS_EOS(APR_BRIGADE_FIRST(ctx->bb)) || @@ -491,7 +499,19 @@ const char **data, apr_size_t *len) { - return APR_ENOTIMPL; + brigade_bucket_ctx_t *ctx = bucket->data; + + brigade_collapse(bucket); + + if (APR_BRIGADE_EMPTY(ctx->bb) || + APR_BUCKET_IS_EOS(APR_BRIGADE_FIRST(ctx->bb)) || + AP_BUCKET_IS_EOR(APR_BRIGADE_FIRST(ctx->bb))) { + *len = 0; + return APR_EOF; + } + + return apr_bucket_read(APR_BRIGADE_FIRST(ctx->bb), data, len, + APR_BLOCK_READ); } static void brigade_destroy(serf_bucket_t *bucket) @@ -581,12 +601,8 @@ apr_bucket *b; serf_bucket_t *sb; - ctx->serf_bucket_status = serf_bucket_read(ctx->serf_in_bucket, - readbytes, &data, &len); - - sb = serf_bucket_simple_create(data, len, NULL, NULL, - ctx->serf_bkt_alloc); - serf_bucket_aggregate_prepend(ctx->serf_in_bucket, sb); + ctx->serf_bucket_status = serf_bucket_peek(ctx->serf_in_bucket, + &data, &len); b = apr_bucket_transient_create(data, len, f->c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, b);