On Fri, 17 Aug 2001, Geoffrey Young wrote:
> > I've got a question for the mod_perl world about the behavior of the
> > $r->headers_in->do(sub {...some code...}) method.
<code snipped>
> it probably won't matter, but do() iterates through the table and exits
> either when the list is exhausted or the subroutine returns a non-true value
>
> $r->headers_in->do(sub {
> $request->header(@_);
> #print STDERR "header passed: (@_)\n";
> 1;
> });
>
> like the Eagle book does and see if that helps. Otherwise, there might be
> something going on internally with Apache where the proxy headers are
> stripped. I don't do proxies, so I'm not that familar with the mechanics of
> them...
>
> --Geoff
Thanks Geoff. In fact, it did matter, and solved the problem.
In the process, I've found what seems to be a mistake, or at least an
oversight, in the Eagle book... (a good workman and all, I know, but bear with
me)
On page 475, it has do() explained exactly as Geoff stated above,
i.e. that the subroutine reference passed to it must return a true value
or the iteration will stop.
But on page 380, it has the following code as part of example 7-12:
$r->headers_in->do(sub {
$request->header(@_);
});
>From what I can see, HTTP::Request->header returns undef when
setting a header value, so while this code isn't strictly incorrect, it
won't pass the full header set, just the first header-value pair.
Is this right? I'm fairly new at this, so if anyone else would mind
checking this out, I'd appreciate it.
Thanks.
-mike
--
Michael Styer [EMAIL PROTECTED]
phone: 020 7603 5723 107 Shepherd's Bush Rd
fax: 020 7603 2504 London W6 7LP