From d0011eb07f0d196a349ba49a9bf8989bf4a2ded6 Mon Sep 17 00:00:00 2001 From: Josh Nichols Date: Wed, 6 Dec 2023 15:51:07 -0500 Subject: [PATCH 1/2] select on server socket before trying to read, so we can time it out --- lib/spring/client/run.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/spring/client/run.rb b/lib/spring/client/run.rb index c5fe1dd5..5814b601 100644 --- a/lib/spring/client/run.rb +++ b/lib/spring/client/run.rb @@ -114,6 +114,10 @@ def stop_server end def verify_server_version + unless IO.select([server], [], [], CONNECT_TIMEOUT) + raise "Error connecting to Spring server" + end + server_version = server.gets.chomp if server_version != env.version $stderr.puts "There is a version mismatch between the Spring client " \ From fc6ef49c646e53937f4acec89376ca533f86eed5 Mon Sep 17 00:00:00 2001 From: Josh Nichols Date: Wed, 6 Dec 2023 16:13:16 -0500 Subject: [PATCH 2/2] Handle when select succeeds, but there's nothing to gets --- lib/spring/client/run.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/spring/client/run.rb b/lib/spring/client/run.rb index 5814b601..422325fe 100644 --- a/lib/spring/client/run.rb +++ b/lib/spring/client/run.rb @@ -118,7 +118,12 @@ def verify_server_version raise "Error connecting to Spring server" end - server_version = server.gets.chomp + line = server.gets + unless line + raise "Error connecting to Spring server" + end + + server_version = line.chomp if server_version != env.version $stderr.puts "There is a version mismatch between the Spring client " \ "(#{env.version}) and the server (#{server_version})."