[peruser] peruser 0.1.3 released

Sean Gabriel Heacock gabriel at telana.com
Mon Jun 13 05:53:22 MDT 2005

I think I fixed the POST problem in the 0.1.x series.  The problem was
that the pass_request() function was sending making two connections to
the processor socket if POST data was sent, and now that all processors
in a server environment listen on the same socket, there was a chance
that one processor would pick up the header data and a different one
would pick up the body, resulting in a segfault.

One method to fix it would have been to get the accept lock working
again, but I couldn't figure out how to make the mutex work with
processes calling chroot() and setuid().  Instead, I changed it so that
the body data was sent along with the headers in the same connection,
which should hopefully make this an atomic operation and remove the need
for the accept lock (although we may need it later on if we want to have
multiple multiplexers).

Anyway, here's the patch:


I missed my window for testing it on my live server, so I'll have to
wait until tonight when traffic is at its lowest.  It seems to work in
testing but the problem is one of those things that doesn't show unless
apache is getting a fair amount of hits.  This is still very much alpha,
so try it at your own risk.

If this works, the major design problem of the older releases will be
finally solved, and I can proceed with fixing bugs and cleaning up the
codebase.  There's a lot of leftover hacks that can probably be removed
entirely now.  After that we can see about submitting it to the apache
group for inclusion.

Sean Gabriel Heacock
Telana Internet Services

More information about the Peruser mailing list