On Tue, May 18, 2010 at 09:18:23AM +0200, Stefan Fritsch wrote: > On Tue, 18 May 2010, Ruediger Pluem wrote: > >So if you want to close this fd you IMHO would need to do some refcounting > >and only close it if no other filebucket still references it. > > The filebuckets already do refcounting. apr_bucket_shared_destroy(f) > in the patch above is only true if the refcount has reached zero.
They refcount the number of times the FILE bucket has been split/copied, they don't refcount the number of times the underlying apr_file_t object is used. APR does not seem to be consistent about of whether "ownership" of the object is passed on when you create a bucket wrapper for that object type; there are no API guarantees or constraints here. From a quick review, PIPE, MMAP, HEAP (kind of) do take ownership, FILE and SOCKET do not. Have you run the perl-framework test suite to see whether this breaks anything? This change does look like it'll break the APR test suite but only because of the way I happened to write one of the buckets tests. Regards, Joe