private void SubmitRequest(ServicePoint servicePoint) { GlobalLog.Enter("HttpWebRequest#" + ValidationHelper.HashString(this) + "::SubmitRequest"); GlobalLog.ThreadContract(ThreadKinds.Unknown, "HttpWebRequest#" + ValidationHelper.HashString(this) + "::SubmitRequest"); GlobalLog.Print("HttpWebRequest#" + ValidationHelper.HashString(this) + "::SubmitRequest() HaveResponse:" + HaveResponse + " Saw100Continue:" + Saw100Continue); if (!Async) { _ConnectionAResult = new LazyAsyncResult(this, null, null); _ConnectionReaderAResult = new LazyAsyncResult(this, null, null); OpenWriteSideResponseWindow(); } if (_Timer == null && !Async){ _Timer = TimerQueue.CreateTimer(s_TimeoutCallback, this); } try { if (_SubmitWriteStream != null && _SubmitWriteStream.IsPostStream) { // _OldSubmitWriteStream is the stream that holds real user data // In no case it can be overwritten. // For multiple resubmits the ContentLength was set already, so no need call it again. // on first resubmission the real user data hasn't been saved, so _OldSubmitWriteStream is null GlobalLog.Print("HttpWebRequest#" + ValidationHelper.HashString(this) + "::SubmitRequest() (resubmit) firstResubmission:" + (_OldSubmitWriteStream == null) + " NtlmKeepAlive:" + NtlmKeepAlive); if (_OldSubmitWriteStream == null && !_SubmitWriteStream.ErrorInStream && AllowWriteStreamBuffering) { // save the real user data. GlobalLog.Print("HttpWebRequest#" + ValidationHelper.HashString(this) + "::SubmitRequest() (resubmit) save the real user data _OldSubmitWriteStream#" + ValidationHelper.HashString(_OldSubmitWriteStream)); _OldSubmitWriteStream = _SubmitWriteStream; } // make sure we reformat the headers before resubmitting _WriteBuffer = null; } m_Retry = false; // If pre-authentication is requested call the AuthenticationManager // and add authorization header if there is response if (PreAuthenticate) { if (UsesProxySemantics && _Proxy != null && _Proxy.Credentials != null) ProxyAuthenticationState.PreAuthIfNeeded(this, _Proxy.Credentials); if (Credentials != null) ServerAuthenticationState.PreAuthIfNeeded(this, Credentials); } if (WriteBuffer == null) { UpdateHeaders(); } if (CheckCacheRetrieveBeforeSubmit()) { // We are done and internal Response processing is kicked in GlobalLog.Leave("HttpWebRequest#" + ValidationHelper.HashString(this) + "::SubmitRequest CACHED RESPONSE"); return; } // At this point we are going to send a live request // _AbortDelegate is set on submission process. servicePoint.SubmitRequest(this, GetConnectionGroupLine()); } finally { if (!Async) CheckWriteSideResponseProcessing(); } GlobalLog.Leave("HttpWebRequest#" + ValidationHelper.HashString(this) + "::SubmitRequest"); }