Skip to content

Commit 9117b7a

Browse files
committed
Merge timeout
2 parents 6891792 + c9482f3 commit 9117b7a

File tree

7 files changed

+13
-10
lines changed

7 files changed

+13
-10
lines changed

src/RestSharp/Options/RestClientOptions.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,9 @@ public RestClientOptions(string baseUrl) : this(new Uri(Ensure.NotEmptyString(ba
180180
public CookieContainer? CookieContainer { get; set; }
181181

182182
/// <summary>
183-
/// Maximum request duration in milliseconds. When the request timeout is specified using <seealso cref="RestRequest.Timeout"/>,
184-
/// the lowest value between the client timeout and request timeout will be used.
183+
/// Request duration. Used when the request timeout is not specified using <seealso cref="RestRequest.Timeout"/>,
185184
/// </summary>
186-
public int MaxTimeout { get; set; }
185+
public TimeSpan? Timeout { get; set; }
187186

188187
/// <summary>
189188
/// Default encoding to use when no encoding is specified in the content type header.

src/RestSharp/Request/RestRequest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public RestRequest(Uri resource, Method method = Method.Get)
139139
/// <summary>
140140
/// Custom request timeout
141141
/// </summary>
142-
public int Timeout { get; set; }
142+
public TimeSpan? Timeout { get; set; }
143143

144144
/// <summary>
145145
/// The Resource URL to make the request against.

src/RestSharp/RestClient.Async.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
namespace RestSharp;
2020

2121
public partial class RestClient {
22+
// Default HttpClient timeout
23+
public TimeSpan DefaultTimeout = TimeSpan.FromSeconds(100);
2224
/// <inheritdoc />
2325
public async Task<RestResponse> ExecuteAsync(RestRequest request, CancellationToken cancellationToken = default) {
2426
using var internalResponse = await ExecuteRequestAsync(request, cancellationToken).ConfigureAwait(false);
@@ -113,7 +115,7 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
113115
message.Headers.Host = Options.BaseHost;
114116
message.Headers.CacheControl = request.CachePolicy ?? Options.CachePolicy;
115117

116-
using var timeoutCts = new CancellationTokenSource(request.Timeout > 0 ? request.Timeout : int.MaxValue);
118+
using var timeoutCts = new CancellationTokenSource(request.Timeout ?? Options.Timeout ?? DefaultTimeout);
117119
using var cts = CancellationTokenSource.CreateLinkedTokenSource(timeoutCts.Token, cancellationToken);
118120

119121
var ct = cts.Token;

src/RestSharp/RestClient.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,9 @@ public RestClient(
226226
: this(new HttpClient(handler, disposeHandler), true, configureRestClient, configureSerialization) { }
227227

228228
static void ConfigureHttpClient(HttpClient httpClient, RestClientOptions options) {
229-
if (options.MaxTimeout > 0) httpClient.Timeout = TimeSpan.FromMilliseconds(options.MaxTimeout);
229+
230+
// We will use Options.Timeout in ExecuteAsInternalAsync method
231+
httpClient.Timeout = Timeout.InfiniteTimeSpan;
230232

231233
if (options.Expect100Continue != null) httpClient.DefaultRequestHeaders.ExpectContinue = options.Expect100Continue;
232234
}

test/RestSharp.Tests.Integrated/NonProtocolExceptionHandlingTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public async Task Handles_HttpClient_Timeout_Error() {
4545
public async Task Handles_Server_Timeout_Error() {
4646
using var client = new RestClient(_server.Url!);
4747

48-
var request = new RestRequest("timeout") { Timeout = 500 };
48+
var request = new RestRequest("404") { Timeout = TimeSpan.FromMilliseconds(500) };
4949
var response = await client.ExecuteAsync(request);
5050

5151
response.ErrorException.Should().BeOfType<TaskCanceledException>();
@@ -56,7 +56,7 @@ public async Task Handles_Server_Timeout_Error() {
5656
public async Task Handles_Server_Timeout_Error_With_Deserializer() {
5757
using var client = new RestClient(_server.Url!);
5858

59-
var request = new RestRequest("timeout") { Timeout = 500 };
59+
var request = new RestRequest("timeout") { Timeout = TimeSpan.FromMilliseconds(500) };
6060
var response = await client.ExecuteAsync<SuccessResponse>(request);
6161

6262
response.Data.Should().BeNull();

test/RestSharp.Tests.Integrated/PutTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public async Task Can_Timeout_PUT_Async() {
3131
var request = new RestRequest("/timeout", Method.Put).AddBody("Body_Content");
3232

3333
// Half the value of ResponseHandler.Timeout
34-
request.Timeout = 200;
34+
request.Timeout = TimeSpan.FromMilliseconds(200);
3535

3636
var response = await _client.ExecuteAsync(request);
3737

test/RestSharp.Tests.Integrated/RequestTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public async Task Can_Timeout_GET_Async() {
5555
var request = new RestRequest("timeout").AddBody("Body_Content");
5656

5757
// Half the value of ResponseHandler.Timeout
58-
request.Timeout = 200;
58+
request.Timeout = TimeSpan.FromMilliseconds(200);
5959

6060
var response = await _client.ExecuteAsync(request);
6161

0 commit comments

Comments
 (0)