aboutsummaryrefslogtreecommitdiffstats
path: root/test/openssl/ssl_server.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/openssl/ssl_server.rb')
-rw-r--r--test/openssl/ssl_server.rb23
1 files changed, 11 insertions, 12 deletions
diff --git a/test/openssl/ssl_server.rb b/test/openssl/ssl_server.rb
index 53e520379b..ce3c6132cd 100644
--- a/test/openssl/ssl_server.rb
+++ b/test/openssl/ssl_server.rb
@@ -49,30 +49,29 @@ Socket.do_not_reverse_lookup = true
tcps = TCPServer.new("0.0.0.0", port)
ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx)
ssls.start_immediately = start_immediately
-ssock = nil
Thread.start{
- while line = $stdin.gets
- if /STARTTLS/ =~ line
- ssock && ssock.accept
- end
+ while true
+ $stdin.gets || exit
end
- exit
}
$stdout.sync = true
$stdout.puts Process.pid
loop do
- s = ssls.accept
- ssock = s
+ ssl = ssls.accept
Thread.start{
q = Queue.new
- th = Thread.start{ s.write(q.shift) while true }
- while line = s.gets
+ th = Thread.start{ ssl.write(q.shift) while true }
+ while line = ssl.gets
+ if line =~ /^STARTTLS$/
+ ssl.accept
+ next
+ end
q.push(line)
end
- th.kill
- s.close unless s.closed?
+ th.kill if q.empty?
+ ssl.close
}
end