THRIFT-5499: Use blocking Read/Write calls to make sure the Receive/SendTimeout is checked.
Client: netstd
diff --git a/lib/netstd/Thrift/Transport/Client/TStreamTransport.cs b/lib/netstd/Thrift/Transport/Client/TStreamTransport.cs
index 90794c6..053a37b 100644
--- a/lib/netstd/Thrift/Transport/Client/TStreamTransport.cs
+++ b/lib/netstd/Thrift/Transport/Client/TStreamTransport.cs
@@ -80,11 +80,8 @@
"Cannot read from null inputstream");
}
-#if NETSTANDARD2_0
- return await InputStream.ReadAsync(buffer, offset, length, cancellationToken);
-#else
- return await InputStream.ReadAsync(new Memory<byte>(buffer, offset, length), cancellationToken);
-#endif
+ // The ReadAsync method should not be used since it does not check the ReceiveTimeout property.
+ return await Task.Run( () => InputStream.Read( buffer, offset, length ), cancellationToken );
}
public override async Task WriteAsync(byte[] buffer, int offset, int length, CancellationToken cancellationToken)
@@ -95,11 +92,8 @@
"Cannot write to null outputstream");
}
-#if NETSTANDARD2_0
- await OutputStream.WriteAsync(buffer, offset, length, cancellationToken);
-#else
- await OutputStream.WriteAsync(buffer.AsMemory(offset, length), cancellationToken);
-#endif
+ // The WriteAsync method should not be used since it does not check the SendTimeout property.
+ await Task.Run( () => OutputStream.Write( buffer, offset, length ), cancellationToken );
}
public override async Task FlushAsync(CancellationToken cancellationToken)