On Wednesday 21 November 2001 12:00 pm, Ian Holsman wrote:
> On Wed, 2001-11-21 at 10:25, [EMAIL PROTECTED] 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
No, it shouldn't have been committed. I'll remove it ASAP.
Ryan
>
> > 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;
--
______________________________________________________________
Ryan Bloom [EMAIL PROTECTED]
Covalent Technologies [EMAIL PROTECTED]
--------------------------------------------------------------