On Sun 02 Nov 2008, Torsten Foertsch wrote:
> On Sun 02 Nov 2008, Puneet Lakhina wrote:
> > > Input headers are found in $r->headers_in and are set even before
> > > PerlPostReadRequest. So, have a close look at your code. If that
> > > doesn't help try to create a test case as simple as you can and
> > > post it to the list.
> >
> > Not as per this:
> > http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_heade
> >rs _in_
>
> Then the documentation is wrong.

To show you that that is not an modperl-thing but implemented that way 
in apache, let's have a look at the ultimate docs. In 
httpd-2.x.y/server/protocol.c you'll find the ap_read_request function. 
It reads in a request, finds the virtual host that handles the request 
and calls PostReadRequest handlers. It is a bit lengthy. So I have 
removed the unnecessary for the problem stuff and put in a few 
comments:

request_rec *ap_read_request(conn_rec *conn)
{
...
    r->headers_in      = apr_table_make(r->pool, 25);

Here $r->headers_in is created as an empty table.

    /* Get the request... */
    if (!read_request_line(r, tmp_bb)) {

This reads the first request line, something like "GET / HTTP/1.1"

    if (!r->assbackwards) {
        ap_get_mime_headers_core(r, tmp_bb);

And this line reads in the headers and populates $r->headers_in.

        if (apr_table_get(r->headers_in, "Transfer-Encoding")
            && apr_table_get(r->headers_in, "Content-Length")) {

You see, even the function itself uses $r->headers_in.

    ap_update_vhost_from_headers(r);

Another example of $r->headers_in usage. Here the correct 
NamedVirtualHost is found. This function needs the Host request header.

    if ((access_status = ap_run_post_read_request(r))) {

And here a PerlPostReadRequestHandler is called.

...
}


Torsten

--
Need professional mod_perl support?
Just hire me: [EMAIL PROTECTED]

Reply via email to