#!/usr/bin/perl
-use warnings;
+
use strict;
+use warnings;
+use WgetFeature qw(https);
use WgetTest; # For $WGETPATH.
+
+my $cert_path;
+my $key_path;
+
+if (@ARGV) {
+ my $top_srcdir = shift @ARGV;
+ $key_path = "$top_srcdir/tests/certs/server-key.pem";
+ $cert_path = "$top_srcdir/tests/certs/server-cert.pem";
+}
+
use HTTP::Daemon;
use HTTP::Request;
-use IO::Socket::SSL 'debug4';
+use IO::Socket::SSL;
+
+my $SOCKET = HTTP::Daemon->new (LocalAddr => 'localhost',
+ ReuseAddr => 1) or die "Cannot create server!!!";
sub get_request {
my $conn = shift;
sub do_server {
my $alrm = alarm 10;
- my $s = HTTP::Daemon->new (LocalAddr => 'localhost',
- LocalPort => '8080',
- ReuseAddr => 1) or die "Cannot create server!!!";
+ my $s = $SOCKET;
my $conn;
my $rqst;
my $rspn;
$rspn = HTTP::Response->new(200, 'OK');
$conn->send_response($rspn);
- $conn = IO::Socket::SSL->new_from_fd($conn->fileno, SSL_server => 1,
- SSL_passwd_cb => sub { return "Hello"; })
+ my %options = (
+ SSL_server => 1,
+ SSL_passwd_cb => sub { return "Hello"; });
+
+ $options{SSL_cert_file} = $cert_path if ($cert_path);
+ $options{SSL_key_file} = $key_path if ($key_path);
+
+ my @options = %options;
+
+ $conn = IO::Socket::SSL->new_from_fd($conn->fileno, @options)
or die "Couldn't initiate SSL";
$rqst = &get_request($conn)
'Content-Type' => 'text/plain',
'Connection' => 'close',
], "foobarbaz\n");
+ $rspn->protocol('HTTP/1.0');
+ print "=====\n";
+ print $rspn->as_string;
+ print "\n=====\n";
print $conn $rspn->as_string;
}
$conn->close;
}
system ('rm -f needs-auth.txt');
-&fork_server;
+my $pid = &fork_server;
sleep 1;
my $cmdline = $WgetTest::WGETPATH . " --user=fiddle-dee-dee"
- . " --password=Dodgson -e https_proxy=localhost:8080"
+ . " --password=Dodgson -e https_proxy=localhost:{{port}}"
. " --no-check-certificate"
. " https://no.such.domain/needs-auth.txt";
+$cmdline =~ s/{{port}}/$SOCKET->sockport()/e;
my $code = system($cmdline);
+system ('rm -f needs-auth.txt');
warn "Got code: $code\n" if $code;
-exit $code;
+kill ('TERM', $pid);
+exit ($code >> 8);