summaryrefslogtreecommitdiff
path: root/lib/netstd
diff options
context:
space:
mode:
authorThomas <thomas@linecorp.com>2021-03-26 15:56:37 +0900
committerJens Geyer <jensg@apache.org>2021-03-26 22:25:04 +0100
commit2f158431656a59aa87fbe640562cc402da7a06d6 (patch)
tree36f22c06c132a4fc272022b8fdf984c2df7dfdac /lib/netstd
parenteb0f1175a7e966812e8ddfc44006a7fc8df6102a (diff)
downloadthrift-2f158431656a59aa87fbe640562cc402da7a06d6.tar.gz
THRIFT-5236 THttpTransport.cs still has bad timeout code
Client: netstd Patch: Thomas Bruggink This closes #2360
Diffstat (limited to 'lib/netstd')
-rw-r--r--lib/netstd/Tests/Thrift.Tests/Transports/THttpTransportTests.cs40
-rw-r--r--lib/netstd/Thrift/Transport/Client/THttpTransport.cs18
2 files changed, 57 insertions, 1 deletions
diff --git a/lib/netstd/Tests/Thrift.Tests/Transports/THttpTransportTests.cs b/lib/netstd/Tests/Thrift.Tests/Transports/THttpTransportTests.cs
new file mode 100644
index 000000000..2a2d88420
--- /dev/null
+++ b/lib/netstd/Tests/Thrift.Tests/Transports/THttpTransportTests.cs
@@ -0,0 +1,40 @@
+// Licensed to the Apache Software Foundation(ASF) under one
+// or more contributor license agreements.See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+using System.Net.Http;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Thrift.Transport.Client;
+
+namespace Thrift.Tests.Transports
+{
+ [TestClass]
+ public class THttpTransportTests
+ {
+ [TestMethod]
+ public void THttpTransport_Uses_Configured_ConnectionTimeout_Test()
+ {
+ var client = new HttpClient();
+ var httpClientTransport = new THttpTransport(client, null)
+ {
+ ConnectTimeout = 5000
+ };
+
+ Assert.IsTrue(client.Timeout.TotalMilliseconds == 5000);
+ Assert.IsTrue(httpClientTransport.ConnectTimeout == 5000);
+ }
+ }
+}
diff --git a/lib/netstd/Thrift/Transport/Client/THttpTransport.cs b/lib/netstd/Thrift/Transport/Client/THttpTransport.cs
index 51f91ce8a..4ca439e4f 100644
--- a/lib/netstd/Thrift/Transport/Client/THttpTransport.cs
+++ b/lib/netstd/Thrift/Transport/Client/THttpTransport.cs
@@ -36,7 +36,7 @@ namespace Thrift.Transport.Client
private readonly X509Certificate[] _certificates;
private readonly Uri _uri;
- private readonly int _connectTimeout = 30000; // Timeouts in milliseconds
+ private int _connectTimeout = 30000; // Timeouts in milliseconds
private HttpClient _httpClient;
private Stream _inputStream;
private MemoryStream _outputStream = new MemoryStream();
@@ -92,6 +92,22 @@ namespace Thrift.Transport.Client
// According to RFC 2616 section 3.8, the "User-Agent" header may not carry a version number
public readonly string UserAgent = "Thrift netstd THttpClient";
+ public int ConnectTimeout
+ {
+ set
+ {
+ _connectTimeout = value;
+ if(_httpClient != null)
+ _httpClient.Timeout = TimeSpan.FromMilliseconds(_connectTimeout);
+ }
+ get
+ {
+ if (_httpClient == null)
+ return _connectTimeout;
+ return (int)_httpClient.Timeout.TotalMilliseconds;
+ }
+ }
+
public override bool IsOpen => true;
public HttpRequestHeaders RequestHeaders => _httpClient.DefaultRequestHeaders;