> sub vhost_socket { > - my $module = shift; > + my ($module, $nossl) = @_; > local $Apache::TestRequest::Module = $module if $module; > > my $hostport = hostport(Apache::Test::config()); > @@ -224,7 +224,7 @@ > my($host, $port) = split ':', $hostport; > my(%args) = (PeerAddr => $host, PeerPort => $port); > > - if ($module and $module =~ /ssl/) { > + if (!$nossl and $module and $module =~ /ssl/) { > require Net::SSL; > local $ENV{https_proxy} ||= ""; #else uninitialized value in > Net/SSL.pm > return Net::SSL->new(%args, Timeout => UA_TIMEOUT);
that all looks reasonable. > This allows a fix for the ssl/http.t failure which has been around > forever: well, since I have never tried the SSL tests you're probably in a better position to judge the validity of the tests than I am. but a few comments anyway :) > -my $res = GET($rurl); > -ok t_cmp(400, > - $res->code, > - "Expected bad request from 'GET $rurl'" > - ); that the appropriate status code is returned seems like a valid test that we would want to keep around. maybe keep this but issue another request to test your below logic? > - > -ok t_cmp(qr{speaking plain HTTP to an SSL-enabled server port}, > - $res->content, > - "that error document contains the proper hint" > - ); I gather that this is the source of the failure that you mention - that for some reason $res->content isn't sufficient? just out of curiosity, could you explain the issue? to me, the process looks equivalent, except that the prior approach was standard. oh, and you're invoking mod_dir to get to index.html, instead of asking for it directly, so you'll probably need protection against users that don't have mod_dir installed. IIRC someone did report that once. > +my $s = Apache::TestRequest::vhost_socket($ssl_module, 1); > + > +unless ($s) { > + warn "cannot connect to $hostport: $!"; > + return undef; > +} you probably want to fail here instead of just returning undef. something like this might be better t_debug("could connect to $hostport? ", $! ? $! : 'yes'); ok($s); > +while (<$s>) { > + print "# read: $_"; I'd use t_debug here as well :) > + $res = 1 if /speaking plain HTTP to an SSL-enabled server port/; > +} > + > +ok t_cmp(1, > + $res, > + "expected error document hint from HTTP request on SSL port" > + ); > there's no reason you need to use t_cmp to compare 1 to 1. if you wanted, you could do something like $res = $1 if /(speaking plain HTTP to an SSL-enabled server port)/; then use that in the t_cmp, or just drop the t_cmp altogether and just use ok($res); since the complete response is already present in debug mode. anyway, just a few suggestions for what they are worth. kudos for keeping up with the test suite :) --Geoff