Hi Juliusz,

httpWriteErrorHeaders() is called from a number of locations. In a few
cases, the message is allocated at the parameters to the call, so the caller
do not actually have a way to release the reference to the atom. e.g. in
tunnel.c

        tunnelError(tunnel, 400, internAtom(gettext("Couldn't parse
CONNECT")));

then in tunnelError(),
        n = httpWriteErrorHeaders(tunnel->buf2.buf, CHUNK_SIZE - 1, 0,
                              1, code, message, 1, NULL,
                              NULL, 0, NULL);
Also in client.c
                return httpClientRawErrorHeaders(connection,
                        request->error_code,
                        retainAtom(request->
                            error_message),
                        1, request->error_headers);

All seem to expect the called function to release the reference after use.

Regards,
Ming


On Mon, Apr 27, 2009 at 4:09 PM, Juliusz Chroboczek <
[email protected]> wrote:

> > Does this sound reasonable?
>
> Hmm, looks dodgy to me.  Message is allocated by the caller, hence it is
> the caller's responsibility to get rid of it, both in the failure and
> the success cases.
>
> I'll look into it.
>
>                                        Juliusz
>
------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Polipo-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/polipo-users

Reply via email to