Updated Branches:
  refs/heads/master 2136694a2 -> f6acf4411

THRIFT-2303 TBufferredTransport not properly closing underlying transport

Patch: Alex Ausch


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/f6acf441
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/f6acf441
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/f6acf441

Branch: refs/heads/master
Commit: f6acf44117ebc96dff9eded7a836674be9924d84
Parents: 2136694
Author: Jens Geyer <[email protected]>
Authored: Thu Jan 2 22:58:43 2014 +0100
Committer: Jens Geyer <[email protected]>
Committed: Thu Jan 2 22:58:43 2014 +0100

----------------------------------------------------------------------
 lib/csharp/src/Transport/TBufferedTransport.cs | 22 +++++++++++++--------
 lib/csharp/test/ThriftTest/TestClient.cs       |  5 ++++-
 2 files changed, 18 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/f6acf441/lib/csharp/src/Transport/TBufferedTransport.cs
----------------------------------------------------------------------
diff --git a/lib/csharp/src/Transport/TBufferedTransport.cs 
b/lib/csharp/src/Transport/TBufferedTransport.cs
index 14b5db0..6cb0457 100644
--- a/lib/csharp/src/Transport/TBufferedTransport.cs
+++ b/lib/csharp/src/Transport/TBufferedTransport.cs
@@ -54,6 +54,18 @@ namespace Thrift.Transport
                        }
                }
 
+               private void CloseBuffers()
+               {
+                       if (inputBuffer != null && inputBuffer.CanRead)
+                       {
+                               inputBuffer.Close();
+                       }
+                       if (outputBuffer != null && outputBuffer.CanWrite)
+                       {
+                               outputBuffer.Close();
+                       }
+               }
+
                public TTransport UnderlyingTransport
                {
                        get { return transport; }
@@ -72,14 +84,8 @@ namespace Thrift.Transport
 
                public override void Close()
                {
-                       if (inputBuffer != null && inputBuffer.CanRead)
-                       {
-                               inputBuffer.Close();
-                       }
-                       if (outputBuffer != null && outputBuffer.CanWrite)
-                       {
-                               outputBuffer.Close();
-                       }
+                       CloseBuffers();
+                       transport.Close();
                }
 
                public override int Read(byte[] buf, int off, int len)

http://git-wip-us.apache.org/repos/asf/thrift/blob/f6acf441/lib/csharp/test/ThriftTest/TestClient.cs
----------------------------------------------------------------------
diff --git a/lib/csharp/test/ThriftTest/TestClient.cs 
b/lib/csharp/test/ThriftTest/TestClient.cs
index fe21f41..c7b81b4 100644
--- a/lib/csharp/test/ThriftTest/TestClient.cs
+++ b/lib/csharp/test/ThriftTest/TestClient.cs
@@ -99,7 +99,10 @@ namespace Test
                                                        trans = new 
TBufferedTransport(trans as TStreamTransport);
                                                if (framed)
                                                        trans = new 
TFramedTransport(trans);
-                                                       
+                                               
+                                               //ensure proper open/close of 
transport
+                                               trans.Open();
+                                               trans.Close();
                                                t.Start(trans);
                                        }
                                        else

Reply via email to