private void _ParseAndSendServerMessages() { WebSocketMessage[] array = WebSocket._ParseMessagesFromStream(this, ref this.strmServerBytes, false, true); WebSocketMessage[] array2 = array; for (int i = 0; i < array2.Length; i++) { WebSocketMessage webSocketMessage = array2[i]; webSocketMessage.Timers.dtDoneRead = DateTime.Now; List <WebSocketMessage> obj; Monitor.Enter(obj = this.listMessages); try { this.listMessages.Add(webSocketMessage); } finally { Monitor.Exit(obj); } FiddlerApplication.DoOnWebSocketMessage(this._mySession, webSocketMessage); if (!webSocketMessage.WasAborted) { webSocketMessage.Timers.dtBeginSend = DateTime.Now; this.oCP.Send(webSocketMessage.ToByteArray()); webSocketMessage.Timers.dtDoneSend = DateTime.Now; } } }
internal bool ReadWebSocketMessageListFromStream(Stream oFS) { bool result; try { string[] array = WebSocket._ReadHeadersFromStream(oFS); List <WebSocketMessage> list = new List <WebSocketMessage>(); array = WebSocket._ReadHeadersFromStream(oFS); while (array != null && array.Length > 0) { int num = 0; bool bIsOutbound = false; DateTime dtDoneRead = new DateTime(0L); DateTime dtBeginSend = new DateTime(0L); DateTime dtDoneSend = new DateTime(0L); string[] array2 = array; for (int i = 0; i < array2.Length; i++) { string text = array2[i]; if (text.StartsWith("Request-Length:")) { bIsOutbound = true; num = int.Parse(text.Substring(16)); } if (text.StartsWith("Response-Length:")) { bIsOutbound = false; num = int.Parse(text.Substring(17)); } if (text.StartsWith("DoneRead:")) { dtDoneRead = WebSocket._GetDateTime(text.Substring(10)); } if (text.StartsWith("BeginSend:")) { dtBeginSend = WebSocket._GetDateTime(text.Substring(11)); } if (text.StartsWith("DoneSend:")) { dtDoneSend = WebSocket._GetDateTime(text.Substring(10)); } } if (num < 1) { throw new InvalidDataException("Missing size indication."); } byte[] buffer = new byte[num]; oFS.Read(buffer, 0, num); MemoryStream memoryStream = new MemoryStream(buffer); WebSocketMessage[] array3 = WebSocket._ParseMessagesFromStream(this, ref memoryStream, bIsOutbound, false); if (array3.Length == 1) { if (dtDoneRead.Ticks > 0L) { array3[0].Timers.dtDoneRead = dtDoneRead; } if (dtBeginSend.Ticks > 0L) { array3[0].Timers.dtBeginSend = dtBeginSend; } if (dtDoneSend.Ticks > 0L) { array3[0].Timers.dtDoneSend = dtDoneSend; } list.Add(array3[0]); } if (-1 != oFS.ReadByte()) { if (-1 != oFS.ReadByte()) { array = WebSocket._ReadHeadersFromStream(oFS); continue; } } array = null; } this.listMessages = list; result = true; } catch (Exception) { result = false; } return(result); }