httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ian Holsman <i...@cnet.com>
Subject Re: cvs commit: httpd-2.0/server core.c
Date Wed, 21 Nov 2001 20:00:11 GMT
On Wed, 2001-11-21 at 10:25, rbb@apache.org wrote:
> rbb         01/11/21 10:25:40
> 
>   Modified:    modules/generators config5.m4
>                server   core.c
hey Ryan 
you forgot to add test_pass_brigade.c
to CVS

>   Log:
>   Fix a bug in our output filter buffering.  If a lot of small brigades are
>   sent, the core will send the first 16 buckets, regardless of how much
>   data there is.  In the pathological case, this can cause a lot of 16
>   byte packets.  Now, if we see less than AP_MIN_BYTES, we combine
>   all of the buckets into a single bucket to be sent in a later packet.
>   
>   This can cause a lot of memory copies, but it eases our network traffic.
>   
>   Revision  Changes    Path
>   1.10      +1 -0      httpd-2.0/modules/generators/config5.m4
>   
>   Index: config5.m4
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/modules/generators/config5.m4,v
>   retrieving revision 1.9
>   retrieving revision 1.10
>   diff -u -r1.9 -r1.10
>   --- config5.m4	2001/11/19 18:07:27	1.9
>   +++ config5.m4	2001/11/21 18:25:40	1.10
>   @@ -8,6 +8,7 @@
>    APACHE_MODULE(autoindex, directory listing, , , yes)
>    APACHE_MODULE(asis, as-is filetypes, , , yes)
>    APACHE_MODULE(info, server information, , , most)
>   +APACHE_MODULE(test_pass_brigade, TEST, , , most)
>    APACHE_MODULE(suexec, set uid and gid for spawned processes, , , no, [
>                  other_targets=suexec ] )
>    
>   
>   
>   
>   1.102     +20 -3     httpd-2.0/server/core.c
>   
>   Index: core.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/core.c,v
>   retrieving revision 1.101
>   retrieving revision 1.102
>   diff -u -r1.101 -r1.102
>   --- core.c	2001/11/21 03:46:22	1.101
>   +++ core.c	2001/11/21 18:25:40	1.102
>   @@ -3079,9 +3079,26 @@
>                    if (n) {
>                        if (!fd) {
>                            if (nvec == MAX_IOVEC_TO_WRITE) {
>   -                            /* woah! too many. stop now. */
>   -                            more = apr_brigade_split(b, e);
>   -                            break;
>   +                            /* woah! too many. buffer them up, for use later. */
>   +                            apr_bucket *temp;
>   +                            apr_bucket_brigade *temp_brig;
>   +
>   +                            temp_brig = apr_brigade_create(f->c->pool);
>   +                            temp = APR_BRIGADE_FIRST(b);
>   +                            while (temp != e) {
>   +                                apr_bucket *d;
>   +                                rv = apr_bucket_read(e, &str, &n, APR_BLOCK_READ);
>   +                                apr_brigade_write(temp_brig, NULL, NULL, str, n);
>   +                                d = temp;
>   +                                temp = APR_BUCKET_NEXT(temp);
>   +                                apr_bucket_delete(d);
>   +                            }
>   +                            temp = APR_BRIGADE_FIRST(temp_brig);
>   +                            APR_BUCKET_REMOVE(temp);
>   +                            APR_BRIGADE_INSERT_HEAD(b, temp);
>   +                            apr_brigade_destroy(temp_brig);
>   +                            e = temp;
>   +                            nvec = 0;
>                            }
>                            vec[nvec].iov_base = (char*) str;
>                            vec[nvec].iov_len = n;
>   
>   
>   
-- 
Ian Holsman          IanH@cnet.com
Performance Measurement & Analysis
CNET Networks   -   (415) 344-2608


Mime
View raw message