From 1d4b2d87f78b3aee51f95de3f7c416e3fd8dd9bf Mon Sep 17 00:00:00 2001 From: Kevin Clark Date: Wed, 18 Jun 2008 01:16:11 +0000 Subject: [PATCH] rb: Thrift::Socket should return false from #open? if an error occurred during a read/write (THRIFT-7) git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@669000 13f79535-47bb-0310-9956-ffa450edef68 --- lib/rb/lib/thrift/transport/socket.rb | 4 ++++ lib/rb/spec/socket_spec.rb | 15 +++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/rb/lib/thrift/transport/socket.rb b/lib/rb/lib/thrift/transport/socket.rb index 77abdc3c..6b648cfc 100644 --- a/lib/rb/lib/thrift/transport/socket.rb +++ b/lib/rb/lib/thrift/transport/socket.rb @@ -35,6 +35,8 @@ module Thrift begin @handle.write(str) rescue StandardError + @handle.close + @handle = nil raise TransportException.new(TransportException::NOT_OPEN) end end @@ -47,6 +49,8 @@ module Thrift data = @handle.read(sz) end rescue StandardError => e + @handle.close + @handle = nil raise TransportException.new(TransportException::NOT_OPEN, e.message) end if (data.nil? or data.length == 0) diff --git a/lib/rb/spec/socket_spec.rb b/lib/rb/spec/socket_spec.rb index 4d129b04..4f5868b6 100644 --- a/lib/rb/spec/socket_spec.rb +++ b/lib/rb/spec/socket_spec.rb @@ -6,6 +6,7 @@ class ThriftSocketSpec < Spec::ExampleGroup before(:each) do @socket = Socket.new @handle = mock("Handle") + @handle.stub!(:close) end describe Socket do @@ -68,14 +69,12 @@ class ThriftSocketSpec < Spec::ExampleGroup end it "should declare itself as closed when it has an error" do - pending do - TCPSocket.should_receive(:new).and_return(@handle) - @socket.open - @handle.should_receive(:write).with("fail").and_raise(StandardError) - @socket.should be_open - lambda { @socket.write("fail") }.should raise_error - @socket.should_not be_open - end + TCPSocket.should_receive(:new).and_return(@handle) + @socket.open + @handle.should_receive(:write).with("fail").and_raise(StandardError) + @socket.should be_open + lambda { @socket.write("fail") }.should raise_error + @socket.should_not be_open end end -- 2.17.1