Skip to content

Commit

Permalink
If you have a timeout on the client AND a timeout on the request, the…
Browse files Browse the repository at this point in the history
… resulting actual timeout is going to be the shorter of the two. By default HttpClient has a timeout of 100 seconds built in, so that means if someone is expecting to be able to send a request and have it wait longer than 100 seconds, it won't work if the client is also changed.

So I propose we change the property in RestClientOptions which is then applied to HttpClient to be called MaxTimeout so it is a lot more clear what the connection is? You cannot have a longer timeout for any request unless you change this value.

It might also make sense to set this to a default value of something (maybe 100 seconds to make it clear) rather than leaving it null, so the user of the library will be more aware of how the client timeout and request timeout interact with each other?

The other option would be to always set the timeout in the client to infinite, and then always use a request timeout that is the Max() of either the client timeout or the request one if the request one was provided?
  • Loading branch information
kendallb committed Mar 18, 2022
1 parent 17a3532 commit 895877a
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/RestSharp/RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public RestClient(HttpClient httpClient, RestClientOptions options, bool dispose
public RestClient(HttpMessageHandler handler, bool disposeHandler = true) : this(new HttpClient(handler, disposeHandler), true) { }

void ConfigureHttpClient(HttpClient httpClient) {
if (Options.Timeout > 0) httpClient.Timeout = TimeSpan.FromMilliseconds(Options.Timeout);
if (Options.MaxTimeout > 0) httpClient.Timeout = TimeSpan.FromMilliseconds(Options.MaxTimeout);
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(Options.UserAgent);
}

Expand Down
2 changes: 1 addition & 1 deletion src/RestSharp/RestClientOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public RestClientOptions(string baseUrl) : this(new Uri(Ensure.NotEmptyString(ba
public bool FollowRedirects { get; set; } = true;
public CookieContainer? CookieContainer { get; set; }
public string UserAgent { get; set; } = DefaultUserAgent;
public int Timeout { get; set; }
public int MaxTimeout { get; set; }
public Encoding Encoding { get; set; } = Encoding.UTF8;

/// <summary>
Expand Down

0 comments on commit 895877a

Please sign in to comment.