Re: cvs commit: apr-util/include apr_buckets.h

2003-07-02 Thread Cliff Woolley
On Wed, 2 Jul 2003 [EMAIL PROTECTED] wrote:

 jwoolley2003/07/01 22:25:44

   Modified:buckets  apr_buckets_alloc.c
include  apr_buckets.h
   Log:
   an addition to the api to allow httpd mpm's to share an apr_allocator_t
   between a thread pool and the thread's bucket allocator.  this will allow
   the freelist max size to be managed.

I just realized there's a problem with this... if you call
apr_bucket_alloc_create_ex() and pass it an allocator, alloc_cleanup()
should not call apr_allocator_destroy(allocator)... that should be the job
of the caller.  I'm going to have to add a flag to the apr_bucket_alloc_t
to keep track of this.

At any rate, the MPM changes in httpd are turning into a lot of ugliness
the deeper I dig.  Several MPM's create their MPM's in the wrong spot or
are in some other way not being cooperative.  I'll commit the changes
tomorrow to httpd-2.1 anyway, but it's likely to take a week or so to make
sure I've not introduced accidentally any double-free conditions on
shutdown or memory leaks or anything else bad.  I'll need the people who
keep up with the MPM's (*all* of them) to test the changes after they're
made in 2.1-dev.

Bottom line: httpd 2.0.47 should not be held up for this.

--Cliff


Re: cvs commit: apr-util/include apr_buckets.h

2003-07-02 Thread Greg Stein
On Wed, Jul 02, 2003 at 02:03:39AM -0400, Cliff Woolley wrote:
 On Wed, 2 Jul 2003 [EMAIL PROTECTED] wrote:
 
  jwoolley2003/07/01 22:25:44
 
Modified:buckets  apr_buckets_alloc.c
 include  apr_buckets.h
Log:
an addition to the api to allow httpd mpm's to share an apr_allocator_t
between a thread pool and the thread's bucket allocator.  this will allow
the freelist max size to be managed.
 
 I just realized there's a problem with this... if you call
 apr_bucket_alloc_create_ex() and pass it an allocator, alloc_cleanup()
 should not call apr_allocator_destroy(allocator)... that should be the job
 of the caller.  I'm going to have to add a flag to the apr_bucket_alloc_t
 to keep track of this.

Eh? Why the flag? What is that for... doesn't the caller know when and if he
should clean up? So there shouldn't be a need for a flag...

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/


Re: cvs commit: apr-util/include apr_buckets.h

2003-07-02 Thread Cliff Woolley
On Tue, 1 Jul 2003, Greg Stein wrote:

 Eh? Why the flag? What is that for... doesn't the caller know when and if he
 should clean up? So there shouldn't be a need for a flag...

The caller knows.  But right now apr_buckets_alloc.c:alloc_cleanup() calls
apr_allocator_destroy(allocator) regardless of whether it owns the
allocator or not.

But I think this is irrelevant because I think there's an entirely cleaner
way to do this.  No flag, no extra API function.  Namely, we should just
have apr_bucket_alloc_create(apr_pool_t *p) {} use p's allocator always
(apr_pool_allocator_get(p)).  I think that will work fine and solve this
problem for good.  But I have to think about the ramifications.  From what
I've seen of the MPM's in looking through them just now, I think it will
be okay.  But I'll need to investigate further to be sure.

--Cliff