This is an automated email from the ASF dual-hosted git repository.

jensg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/thrift.git


The following commit(s) were added to refs/heads/master by this push:
     new 2f15843  THRIFT-5236 THttpTransport.cs still has bad timeout code 
Client: netstd Patch: Thomas Bruggink
2f15843 is described below

commit 2f158431656a59aa87fbe640562cc402da7a06d6
Author: Thomas <[email protected]>
AuthorDate: Fri Mar 26 15:56:37 2021 +0900

    THRIFT-5236 THttpTransport.cs still has bad timeout code
    Client: netstd
    Patch: Thomas Bruggink
    
    This closes #2360
---
 .../Thrift.Tests/Transports/THttpTransportTests.cs | 40 ++++++++++++++++++++++
 .../Thrift/Transport/Client/THttpTransport.cs      | 18 +++++++++-
 2 files changed, 57 insertions(+), 1 deletion(-)

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 0000000..2a2d884
--- /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 51f91ce..4ca439e 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;

Reply via email to