瀏覽代碼

[HttpWebRequest] Use the timeout in GetResponse()

	The timeout was not being used in GetResponse.
	Fixes bug #603794.
Gonzalo Paniagua Javier 15 年之前
父節點
當前提交
2fa2ca3565
共有 1 個文件被更改,包括 6 次插入1 次删除
  1. 6 1
      mcs/class/System/System.Net/HttpWebRequest.cs

+ 6 - 1
mcs/class/System/System.Net/HttpWebRequest.cs

@@ -811,7 +811,7 @@ namespace System.Net
 				asyncWrite = (WebAsyncResult) asyncResult;
 			}
 
-			if (!asyncResult.AsyncWaitHandle.WaitOne (timeout, false)) {
+			if (!asyncResult.IsCompleted && !asyncResult.AsyncWaitHandle.WaitOne (timeout, false)) {
 				Abort ();
 				throw new WebException ("The request timed out", WebExceptionStatus.Timeout);
 			}
@@ -907,6 +907,11 @@ namespace System.Net
 		public override WebResponse GetResponse()
 		{
 			WebAsyncResult result = (WebAsyncResult) BeginGetResponse (null, null);
+			if (!result.IsCompleted && !result.AsyncWaitHandle.WaitOne (timeout, false)) {
+				Abort ();
+				throw new WebException ("The request timed out", WebExceptionStatus.Timeout);
+			}
+
 			return EndGetResponse (result);
 		}