httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Davi Arnaut <d...@haxent.com.br>
Subject Re: svn commit: r467655 - in /httpd/httpd/trunk: CHANGES docs/manual/mod/mod_cache.xml modules/cache/mod_cache.c modules/cache/mod_cache.h
Date Wed, 25 Oct 2006 14:14:23 GMT
..

> +static int do_store_body(cache_request_rec *cache,
> +                         ap_filter_t *f,
> +                         apr_bucket_brigade *in) {
> +    apr_bucket *e;
> +    apr_bucket_brigade *bb;
> +    apr_status_t rv, rv2;
> +    cache_server_conf *conf;
> +    
> +    conf = (cache_server_conf *) ap_get_module_config(f->r->server->module_config,
> +                                                      &cache_module);
> +
> +    /* try split any buckets larger than threshold */
> +    rv = APR_SUCCESS; /* successful unless found otherwise */
> +    rv2 = APR_SUCCESS;
> +    if (conf->maxbucketsize > 0) {
> +        e = APR_BRIGADE_FIRST(in);
> +        while (e != APR_BRIGADE_SENTINEL(in)) {   

&& (rv == APR_SUCCESS && rv2 == APR_SUCCESS) {

Otherwise we may keep walking through the brigade unnecessarily.

> +    
> +            /* if necessary, split the brigade and send what we have so far */
> +            if (APR_SUCCESS == apr_bucket_split(e, conf->maxbucketsize)) {
> +                e = APR_BUCKET_NEXT(e);
> +                bb = in;
> +                in = apr_brigade_split(bb, e);
> +    
> +                /* if store body fails, don't try store body again */
> +                if (APR_SUCCESS == rv) {

Drop if.

> +                    rv = cache->provider->store_body(cache->handle, f->r,
bb);
> +                }
> +                
> +                /* try write split brigade to the filter stack and network */
> +                if (APR_SUCCESS == rv2) {

Drop if.

> +                    rv2 = ap_pass_brigade(f->next, bb);
> +                }
> +                apr_brigade_destroy(bb);
> +            }
> +            else {
> +                e = APR_BUCKET_NEXT(e);
> +            }
> +        }
> +    }
> +


Nice patch.

--
Davi Arnaut


Mime
View raw message