private void CloseSink(HTTPSession ss) { bool flag = false; string str = ""; ss.CancelAllEvents(); lock (this.TagQueue) { KeepAliveTimer.Remove(this.GetHashCode()); if (this.TagQueue.Count > 0) { EventLogger.Log(this, EventLogEntryType.Information, "Switching Pipeline Modes [" + ss.GetHashCode().ToString() + "]"); this._PIPELINE = false; if (!this.ReceivedFirstResponse) { str = ((StateData)this.TagQueue.Peek()).Dest.ToString(); } } if (!this.ReceivedFirstResponse) { EventLogger.Log(this, EventLogEntryType.Error, "Server[" + str + "] closed socket without answering"); flag = true; } while (this.TagQueue.Count > 0) { StateData data = (StateData)this.TagQueue.Dequeue(); if (!flag) { HTTPRequest request = new HTTPRequest(); request.ProxySetting = this.ProxySetting; request._PIPELINE = true; if (this.OnSniff != null) { request.OnSniff = (SniffHandler)Delegate.Combine(request.OnSniff, new SniffHandler(this.NonPipelinedSniffSink)); } if (this.OnSniffPacket != null) { request.OnSniffPacket = (RequestHandler)Delegate.Combine(request.OnSniffPacket, new RequestHandler(this.NonPipelinedSniffPacketSink)); } request.OnResponse = (RequestHandler)Delegate.Combine(request.OnResponse, new RequestHandler(this.NonPipelinedResponseSink)); this.NotPipelinedTable[request] = request; request.PipelineRequest(data.Dest, data.Request, data.Tag); } else if (this.OnResponse != null) { this.OnResponse(this, null, data.Tag); } } this.s = null; } }
private void CloseSink(HTTPSession ss) { bool err = false; string erraddr = ""; ss.CancelAllEvents(); lock (TagQueue) { KeepAliveTimer.Remove(this.GetHashCode()); if (TagQueue.Count > 0) { OpenSource.Utilities.EventLogger.Log(this, System.Diagnostics.EventLogEntryType.Information, "Switching Pipeline Modes [" + ss.GetHashCode().ToString() + "]"); _PIPELINE = false; if (!ReceivedFirstResponse) { erraddr = ((StateData)TagQueue.Peek()).Dest.ToString(); } } if (!ReceivedFirstResponse) { OpenSource.Utilities.EventLogger.Log(this, System.Diagnostics.EventLogEntryType.Error, "Server[" + erraddr + "] closed socket without answering"); err = true; } while (TagQueue.Count > 0) { StateData sd = (StateData)TagQueue.Dequeue(); if (!err) { HTTPRequest TR = new HTTPRequest(); TR.ProxySetting = ProxySetting; TR._PIPELINE = true; if (this.OnSniff != null) { TR.OnSniff += new HTTPRequest.SniffHandler(NonPipelinedSniffSink); } if (this.OnSniffPacket != null) { TR.OnSniffPacket += new HTTPRequest.RequestHandler(NonPipelinedSniffPacketSink); } TR.OnResponse += new HTTPRequest.RequestHandler(NonPipelinedResponseSink); this.NotPipelinedTable[TR] = TR; TR.PipelineRequest(sd.Dest, sd.Request, sd.Tag); } else { if (OnResponse != null) { OnResponse(this, null, sd.Tag); } } } s = null; } }