THRIFT-2303 TBufferredTransport not properly closing underlying transport
Patch: Alex Ausch
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 @@
}
}
+ 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 @@
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)
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 @@
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