diff options
Diffstat (limited to 'mcs/class/System/System.Net/HttpWebRequest.cs')
-rw-r--r-- | mcs/class/System/System.Net/HttpWebRequest.cs | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/mcs/class/System/System.Net/HttpWebRequest.cs b/mcs/class/System/System.Net/HttpWebRequest.cs index 40dfe26a546..af18f9a6154 100644 --- a/mcs/class/System/System.Net/HttpWebRequest.cs +++ b/mcs/class/System/System.Net/HttpWebRequest.cs @@ -147,7 +147,7 @@ namespace System.Net get { return webHeaders ["Accept"]; } set { CheckRequestStarted (); - webHeaders.SetInternal ("Accept", value); + webHeaders.RemoveAndAdd ("Accept", value); } } @@ -199,7 +199,7 @@ namespace System.Net if (keepAlive && val.IndexOf ("keep-alive") == -1) value = value + ", Keep-Alive"; - webHeaders.SetInternal ("Connection", value); + webHeaders.RemoveAndAdd ("Connection", value); } } @@ -231,7 +231,7 @@ namespace System.Net webHeaders.RemoveInternal ("Content-Type"); return; } - webHeaders.SetInternal ("Content-Type", value); + webHeaders.RemoveAndAdd ("Content-Type", value); } } @@ -266,7 +266,7 @@ namespace System.Net if (val == "100-continue") throw new ArgumentException ("100-Continue cannot be set with this property.", "value"); - webHeaders.SetInternal ("Expect", value); + webHeaders.RemoveAndAdd ("Expect", value); } } @@ -452,7 +452,7 @@ namespace System.Net if (!sendChunked) throw new ArgumentException ("SendChunked must be True", "value"); - webHeaders.SetInternal ("Transfer-Encoding", value); + webHeaders.RemoveAndAdd ("Transfer-Encoding", value); } } @@ -484,7 +484,7 @@ namespace System.Net } internal bool ProxyQuery { - get { return servicePoint.UsesProxy; } + get { return servicePoint.UsesProxy && !servicePoint.UseConnect; } } // Methods @@ -584,7 +584,6 @@ namespace System.Net initialMethod = method; if (haveRequest) { if (writeStream != null) { - Monitor.Exit (this); asyncWrite.SetCompleted (true, writeStream); asyncWrite.DoCallback (); return asyncWrite; @@ -830,7 +829,7 @@ namespace System.Net throw new WebException ("No Location header found for " + (int) code, WebExceptionStatus.ProtocolError); - string host = actualUri.Host; + Uri prev = actualUri; try { actualUri = new Uri (actualUri, uriString); } catch (Exception) { @@ -839,7 +838,8 @@ namespace System.Net WebExceptionStatus.ProtocolError); } - hostChanged = (actualUri.Host != host); + hostChanged = (actualUri.Scheme != prev.Scheme || actualUri.Host != prev.Host || + actualUri.Port != prev.Port); return true; } @@ -852,13 +852,13 @@ namespace System.Net webHeaders.RemoveInternal ("Transfer-Encoding"); } else if (sendChunked) { continue100 = true; - webHeaders.SetInternal ("Transfer-Encoding", "chunked"); + webHeaders.RemoveAndAdd ("Transfer-Encoding", "chunked"); webHeaders.RemoveInternal ("Content-Length"); } if (actualVersion == HttpVersion.Version11 && continue100 && servicePoint.SendContinue) { // RFC2616 8.2.3 - webHeaders.SetInternal ("Expect" , "100-continue"); + webHeaders.RemoveAndAdd ("Expect" , "100-continue"); expectContinue = true; } else { webHeaders.RemoveInternal ("Expect"); @@ -871,9 +871,9 @@ namespace System.Net servicePoint.ProtocolVersion == HttpVersion.Version10); if (keepAlive && (version == HttpVersion.Version10 || spoint10)) { - webHeaders.SetInternal (connectionHeader, "keep-alive"); + webHeaders.RemoveAndAdd (connectionHeader, "keep-alive"); } else if (!keepAlive && version == HttpVersion.Version11) { - webHeaders.SetInternal (connectionHeader, "close"); + webHeaders.RemoveAndAdd (connectionHeader, "close"); } webHeaders.SetInternal ("Host", actualUri.Authority); @@ -883,9 +883,9 @@ namespace System.Net webHeaders.SetInternal ("Cookie", cookieHeader); } - if (!usedPreAuth && preAuthenticate) { + if (!usedPreAuth && preAuthenticate) DoPreAuthenticate (); - } + return webHeaders.ToString (); } |