diff ssl_proxy_protocol.t @ 1168:8821e405b91e

Tests: handled SSL negotiation errors.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 20 Apr 2017 16:29:07 +0300
parents 8ef51dbb5d69
children cf14cfe9ec8c
line wrap: on
line diff
--- a/ssl_proxy_protocol.t
+++ b/ssl_proxy_protocol.t
@@ -153,10 +153,22 @@ sub pp_get {
 
 	my $s = http($proxy, start => 1);
 
-	IO::Socket::SSL->start_SSL($s,
-		SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE(),
-		SSL_error_trap => sub { die $_[1] }
-	);
+	eval {
+		local $SIG{ALRM} = sub { die "timeout\n" };
+		local $SIG{PIPE} = sub { die "sigpipe\n" };
+		alarm(2);
+		IO::Socket::SSL->start_SSL($s,
+			SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE(),
+			SSL_error_trap => sub { die $_[1] }
+		);
+		alarm(0);
+	};
+	alarm(0);
+
+	if ($@) {
+		log_in("died: $@");
+		return undef;
+	}
 
 	return http(<<EOF, socket => $s);
 GET $url HTTP/1.0