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