Bug#788350: FTBFS - proxy tests
gregor herrmann
gregoa at debian.org
Wed Jun 10 16:05:00 UTC 2015
Control: tag -1 + confirmed
On Wed, 10 Jun 2015 13:43:59 +0000, Damyan Ivanov wrote:
> Package: libfurl-perl
> Version: 3.06-1
> Severity: serious
>
> libfurl fails to build in an up to date pbuilder chroot, with test failures:
>
> ...
> # Failed test at t/100_low/08_proxy.t line 42.
> # got: '1.0 pc1:51242 (HTTP::Proxy/0.303)'
> # expected: '1.0 VIA!VIA!VIA!'
Same here. I looked into t/100_low/08_proxy.t a bit:
First, it only unsets HTTP_PROXY but not http_proxy; after doing that
my errors look the same:
t/100_low/08_proxy.t .. 1/21
# Failed test at t/100_low/08_proxy.t line 45.
# got: '1.0 jadzia:50312 (HTTP::Proxy/0.303)'
# expected: '1.0 VIA!VIA!VIA!'
The line in 'got' is the default Via header as set by HTTP::Proxy:
118 if (!defined $self->{via}) {
119 $self->{via} = hostname() . ($self->{port} != 80 ? ':' . $self->{port} : '') . " (HTTP::Proxy/$VERSION)";
120 }
but t/100_low/08_proxy.t does set via at the bottom:
my $proxy = Test::HTTP::Proxy->new(port => $proxy_port, via => $via);
(and with some diag() sprinkled it we see:
# via_server: VIA!VIA!VIA!
)
And then I don't know what's really going on. Is the request from
client-client to client-server not going through server (= proxy)
here? But then we wouldn't get the default HTTP::Proxy Via string in
the reply. Or is HTTP::Proxy simply ignoring the via attreibute?
Data::Dumpering in /usr/share/perl5/HTTP/Proxy.pm:
$self before line 118 above:
$VAR1 = bless( {
'logmask' => 0,
'daemon' => undef,
'host' => 'localhost',
'max_keep_alive_requests' => 10,
'chunk' => 4096,
'conn' => 0,
'loop' => 1,
'timeout' => 60,
'agent' => undef,
'max_connections' => 0,
'port' => 50085,
'stash' => {},
'x_forwarded_for' => 1,
'logfh' => *::STDERR
}, 'Test::HTTP::Proxy' );
Hm, yeah, no 'via'. But the port is the one requested from
t/100_low/08_proxy.t. And the %params hash of the new() constructor
still looks as expected:
$VAR1 = 'port';
$VAR2 = 50819;
$VAR3 = 'via';
$VAR4 = 'VIA!VIA!VIA!';
Ok, this looks like a bug in HTTP::Proxy, maybe in
#v+
commit e105876f84220791f2a6b1e64d2a913658c1d269
Author: Slaven Rezic <slaven at rezic.de>
Date: Fri Nov 12 11:37:59 2010 +0100
add port to Via header
RFC 2616 kind of suggests to add the port to the Via header if it's not
the default port:
"If the port is not given, it MAY be assumed to be the default port
of the received-protocol."
This patch sets the port in the generated Via header if it's not the
default 80.
diff --git a/lib/HTTP/Proxy.pm b/lib/HTTP/Proxy.pm
index 1ac10c8..c074d24 100644
--- a/lib/HTTP/Proxy.pm
+++ b/lib/HTTP/Proxy.pm
@@ -90,7 +90,6 @@ sub new {
port => 8080,
stash => {},
timeout => 60,
- via => hostname() . " (HTTP::Proxy/$VERSION)",
x_forwarded_for => 1,
);
@@ -116,6 +115,10 @@ sub new {
$self->{$_} = exists $params{$_} ? delete( $params{$_} ) : $defaults{$_}
for keys %defaults;
+ if (!defined $self->{via}) {
+ $self->{via} = hostname() . ($self->{port} != 80 ? ':' . $self->{port} : '') . " (HTTP::Proxy/$VERSION)";
+ }
+
# choose an engine with the remaining parameters
$self->{engine} = HTTP::Proxy::Engine->new( %params, proxy => $self );
$self->log( PROXY, "PROXY", "Selected engine " . ref $self->{engine} );
#v-
And here we are:
Adding "via => undef" to the %defaults hash in
/usr/share/perl5/HTTP/Proxy.pm fixes the issue.
Does this make sense? Someone please sanity-check :)
Cheers,
gregor
--
.''`. Homepage: http://info.comodo.priv.at/ - OpenPGP key 0xBB3A68018649AA06
: :' : Debian GNU/Linux user, admin, and developer - https://www.debian.org/
`. `' Member of VIBE!AT & SPI, fellow of the Free Software Foundation Europe
`- NP: Willie Nelson: Bonaparte's Retreat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 949 bytes
Desc: Digital Signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-perl-maintainers/attachments/20150610/8e89bdf7/attachment-0001.sig>
More information about the pkg-perl-maintainers
mailing list