Skip to content

Commit ae2974e

Browse files
authored
Merge pull request #1413 from Unity-Technologies/fix-1313205
Implementing a slightly different variation of upstream's fix for HttpWebRequest timeout bug (case 1313205)
2 parents 9478aba + 9ecc86c commit ae2974e

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,9 @@ async Task<HttpResponseMessage> SendAsyncWorker (HttpRequestMessage request, Htt
269269
using (var lcts = CancellationTokenSource.CreateLinkedTokenSource (cts.Token, cancellationToken)) {
270270
lcts.CancelAfter (timeout);
271271

272+
if (handler is HttpClientHandler clientHandler)
273+
clientHandler.Timeout = timeout;
274+
272275
var task = base.SendAsync (request, lcts.Token);
273276
if (task == null)
274277
throw new InvalidOperationException ("Handler failed to return a value");

mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public class HttpClientHandler : HttpMessageHandler
5757
bool sentRequest;
5858
string connectionGroupName;
5959
bool disposed;
60+
internal TimeSpan? Timeout;
6061

6162
public HttpClientHandler ()
6263
{
@@ -279,6 +280,9 @@ internal virtual HttpWebRequest CreateWebRequest (HttpRequestMessage request)
279280

280281
wr.ServicePoint.Expect100Continue = request.Headers.ExpectContinue == true;
281282

283+
if (Timeout != null)
284+
wr.Timeout = (int)Timeout.Value.TotalMilliseconds;
285+
282286
// Add request headers
283287
var headers = wr.Headers;
284288
foreach (var header in request.Headers) {

mcs/class/System.Net.Http/System.Net.Http/HttpMessageInvoker.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ namespace System.Net.Http
3333
{
3434
public class HttpMessageInvoker : IDisposable
3535
{
36-
HttpMessageHandler handler;
36+
protected private HttpMessageHandler handler;
3737
readonly bool disposeHandler;
3838

3939
public HttpMessageInvoker (HttpMessageHandler handler)

0 commit comments

Comments
 (0)