Re: Endless loop in split_on_bdry() of library/parser_multipart.c?

Joe Schaefer <[email protected]>
Newsgroups gmane.comp.apache.apreq
Message-ID <[email protected]>
"Philip M. Gollucci" <[email protected]> writes:

>             do {
>                 apr_bucket *f = APR_BRIGADE_FIRST(in);
>                 APR_BUCKET_REMOVE(f);
>                 APR_BRIGADE_INSERT_TAIL(out, f);
>             } while (e != APR_BRIGADE_FIRST(in));

This loop appends all the buckets before e onto the end of out.

>
>           apr_bucket *f = APR_RING_FIRST(&in->list);
>           apr_bucket *l = APR_RING_LAST(&in->list);

That l is wrong, it should point at APR_BUCKET_PREV(e) 
(which is not the sentinel).

>
>           APR_RING_UNSPLICE(f, l, link);
>           APR_RING_SPLICE_TAIL(&out->list, f, l, apr_bucket, link);
>

This is the right approach, I think.  But the person who'd be
in the best place to test/commit it is Bojan.  Just be sure
to bump the patch level in apreq_version.h, and add a comment
to CHANGES.

-- 
Joe Schaefer
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.