using System; using System.IO; using System.Net.Sockets; using System.Text; using System.Threading; namespace System.Net { // Token: 0x02000265 RID: 613 internal class WebConnectionStream : Stream { // Token: 0x0600165F RID: 5727 RVA: 0x0004A5D0 File Offset: 0x000487D0 public WebConnectionStream(WebConnection cnc) { this.isRead = true; this.pending = new ManualResetEvent(true); this.request = cnc.Data.request; this.read_timeout = this.request.ReadWriteTimeout; this.write_timeout = this.read_timeout; this.cnc = cnc; string text = cnc.Data.Headers["Transfer-Encoding"]; bool flag = text != null && text.ToLower().IndexOf("chunked") != -1; string text2 = cnc.Data.Headers["Content-Length"]; if (!flag && text2 != null && text2 != string.Empty) { try { this.contentLength = int.Parse(text2); if (this.contentLength == 0 && !this.IsNtlmAuth()) { this.ReadAll(); } } catch { this.contentLength = int.MaxValue; } } else { this.contentLength = int.MaxValue; } } // Token: 0x06001660 RID: 5728 RVA: 0x0004A708 File Offset: 0x00048908 public WebConnectionStream(WebConnection cnc, HttpWebRequest request) { this.read_timeout = request.ReadWriteTimeout; this.write_timeout = this.read_timeout; this.isRead = false; this.cnc = cnc; this.request = request; this.allowBuffering = request.InternalAllowBuffering; this.sendChunked = request.SendChunked; if (this.sendChunked) { this.pending = new ManualResetEvent(true); } else if (this.allowBuffering) { this.writeBuffer = new MemoryStream(); } } // Token: 0x06001662 RID: 5730 RVA: 0x0004A7B8 File Offset: 0x000489B8 private bool IsNtlmAuth() { bool flag = this.request.Proxy != null && !this.request.Proxy.IsBypassed(this.request.Address); string text = ((!flag) ? "WWW-Authenticate" : "Proxy-Authenticate"); string text2 = this.cnc.Data.Headers[text]; return text2 != null && text2.IndexOf("NTLM") != -1; } // Token: 0x06001663 RID: 5731 RVA: 0x0004A840 File Offset: 0x00048A40 internal void CheckResponseInBuffer() { if (this.contentLength > 0 && this.readBufferSize - this.readBufferOffset >= this.contentLength && !this.IsNtlmAuth()) { this.ReadAll(); } } // Token: 0x1700072E RID: 1838 // (get) Token: 0x06001664 RID: 5732 RVA: 0x0004A878 File Offset: 0x00048A78 internal HttpWebRequest Request { get { return this.request; } } // Token: 0x1700072F RID: 1839 // (get) Token: 0x06001665 RID: 5733 RVA: 0x0004A880 File Offset: 0x00048A80 internal WebConnection Connection { get { return this.cnc; } } // Token: 0x17000730 RID: 1840 // (get) Token: 0x06001666 RID: 5734 RVA: 0x0004A888 File Offset: 0x00048A88 public override bool CanTimeout { get { return true; } } // Token: 0x17000731 RID: 1841 // (get) Token: 0x06001667 RID: 5735 RVA: 0x0004A88C File Offset: 0x00048A8C // (set) Token: 0x06001668 RID: 5736 RVA: 0x0004A894 File Offset: 0x00048A94 public override int ReadTimeout { get { return this.read_timeout; } set { if (value < -1) { throw new ArgumentOutOfRangeException("value"); } this.read_timeout = value; } } // Token: 0x17000732 RID: 1842 // (get) Token: 0x06001669 RID: 5737 RVA: 0x0004A8B0 File Offset: 0x00048AB0 // (set) Token: 0x0600166A RID: 5738 RVA: 0x0004A8B8 File Offset: 0x00048AB8 public override int WriteTimeout { get { return this.write_timeout; } set { if (value < -1) { throw new ArgumentOutOfRangeException("value"); } this.write_timeout = value; } } // Token: 0x17000733 RID: 1843 // (get) Token: 0x0600166B RID: 5739 RVA: 0x0004A8D4 File Offset: 0x00048AD4 internal bool CompleteRequestWritten { get { return this.complete_request_written; } } // Token: 0x17000734 RID: 1844 // (set) Token: 0x0600166C RID: 5740 RVA: 0x0004A8DC File Offset: 0x00048ADC internal bool SendChunked { set { this.sendChunked = value; } } // Token: 0x17000735 RID: 1845 // (set) Token: 0x0600166D RID: 5741 RVA: 0x0004A8E8 File Offset: 0x00048AE8 internal byte[] ReadBuffer { set { this.readBuffer = value; } } // Token: 0x17000736 RID: 1846 // (set) Token: 0x0600166E RID: 5742 RVA: 0x0004A8F4 File Offset: 0x00048AF4 internal int ReadBufferOffset { set { this.readBufferOffset = value; } } // Token: 0x17000737 RID: 1847 // (set) Token: 0x0600166F RID: 5743 RVA: 0x0004A900 File Offset: 0x00048B00 internal int ReadBufferSize { set { this.readBufferSize = value; } } // Token: 0x17000738 RID: 1848 // (get) Token: 0x06001670 RID: 5744 RVA: 0x0004A90C File Offset: 0x00048B0C internal byte[] WriteBuffer { get { return this.writeBuffer.GetBuffer(); } } // Token: 0x17000739 RID: 1849 // (get) Token: 0x06001671 RID: 5745 RVA: 0x0004A91C File Offset: 0x00048B1C internal int WriteBufferLength { get { return (this.writeBuffer == null) ? (-1) : ((int)this.writeBuffer.Length); } } // Token: 0x06001672 RID: 5746 RVA: 0x0004A93C File Offset: 0x00048B3C internal void ForceCompletion() { if (!this.nextReadCalled) { if (this.contentLength == 2147483647) { this.contentLength = 0; } this.nextReadCalled = true; this.cnc.NextRead(); } } // Token: 0x06001673 RID: 5747 RVA: 0x0004A980 File Offset: 0x00048B80 internal void CheckComplete() { if (!this.nextReadCalled && this.readBufferSize - this.readBufferOffset == this.contentLength) { this.nextReadCalled = true; this.cnc.NextRead(); } } // Token: 0x06001674 RID: 5748 RVA: 0x0004A9C4 File Offset: 0x00048BC4 internal void ReadAll() { if (!this.isRead || this.read_eof || this.totalRead >= this.contentLength || this.nextReadCalled) { if (this.isRead && !this.nextReadCalled) { this.nextReadCalled = true; this.cnc.NextRead(); } return; } this.pending.WaitOne(); object obj = this.locker; lock (obj) { if (this.totalRead >= this.contentLength) { return; } int num = this.readBufferSize - this.readBufferOffset; byte[] array2; int num3; if (this.contentLength == 2147483647) { MemoryStream memoryStream = new MemoryStream(); byte[] array = null; if (this.readBuffer != null && num > 0) { memoryStream.Write(this.readBuffer, this.readBufferOffset, num); if (this.readBufferSize >= 8192) { array = this.readBuffer; } } if (array == null) { array = new byte[8192]; } int num2; while ((num2 = this.cnc.Read(this.request, array, 0, array.Length)) != 0) { memoryStream.Write(array, 0, num2); } array2 = memoryStream.GetBuffer(); num3 = (int)memoryStream.Length; this.contentLength = num3; } else { num3 = this.contentLength - this.totalRead; array2 = new byte[num3]; if (this.readBuffer != null && num > 0) { if (num > num3) { num = num3; } Buffer.BlockCopy(this.readBuffer, this.readBufferOffset, array2, 0, num); } int num4 = num3 - num; int num5 = -1; while (num4 > 0 && num5 != 0) { num5 = this.cnc.Read(this.request, array2, num, num4); num4 -= num5; num += num5; } } this.readBuffer = array2; this.readBufferOffset = 0; this.readBufferSize = num3; this.totalRead = 0; this.nextReadCalled = true; } this.cnc.NextRead(); } // Token: 0x06001675 RID: 5749 RVA: 0x0004AC00 File Offset: 0x00048E00 private void WriteCallbackWrapper(IAsyncResult r) { WebAsyncResult webAsyncResult = r as WebAsyncResult; if (webAsyncResult != null && webAsyncResult.AsyncWriteAll) { return; } if (r.AsyncState != null) { webAsyncResult = (WebAsyncResult)r.AsyncState; webAsyncResult.InnerAsyncResult = r; webAsyncResult.DoCallback(); } else { this.EndWrite(r); } } // Token: 0x06001676 RID: 5750 RVA: 0x0004AC58 File Offset: 0x00048E58 private void ReadCallbackWrapper(IAsyncResult r) { if (r.AsyncState != null) { WebAsyncResult webAsyncResult = (WebAsyncResult)r.AsyncState; webAsyncResult.InnerAsyncResult = r; webAsyncResult.DoCallback(); } else { this.EndRead(r); } } // Token: 0x06001677 RID: 5751 RVA: 0x0004AC98 File Offset: 0x00048E98 public override int Read(byte[] buffer, int offset, int size) { AsyncCallback asyncCallback = new AsyncCallback(this.ReadCallbackWrapper); WebAsyncResult webAsyncResult = (WebAsyncResult)this.BeginRead(buffer, offset, size, asyncCallback, null); if (!webAsyncResult.IsCompleted && !webAsyncResult.WaitUntilComplete(this.ReadTimeout, false)) { this.nextReadCalled = true; this.cnc.Close(true); throw new WebException("The operation has timed out.", WebExceptionStatus.Timeout); } return this.EndRead(webAsyncResult); } // Token: 0x06001678 RID: 5752 RVA: 0x0004AD08 File Offset: 0x00048F08 public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback cb, object state) { if (!this.isRead) { throw new NotSupportedException("this stream does not allow reading"); } if (buffer == null) { throw new ArgumentNullException("buffer"); } int num = buffer.Length; if (offset < 0 || num < offset) { throw new ArgumentOutOfRangeException("offset"); } if (size < 0 || num - offset < size) { throw new ArgumentOutOfRangeException("size"); } object obj = this.locker; lock (obj) { this.pendingReads++; this.pending.Reset(); } WebAsyncResult webAsyncResult = new WebAsyncResult(cb, state, buffer, offset, size); if (this.totalRead >= this.contentLength) { webAsyncResult.SetCompleted(true, -1); webAsyncResult.DoCallback(); return webAsyncResult; } int num2 = this.readBufferSize - this.readBufferOffset; if (num2 > 0) { int num3 = ((num2 <= size) ? num2 : size); Buffer.BlockCopy(this.readBuffer, this.readBufferOffset, buffer, offset, num3); this.readBufferOffset += num3; offset += num3; size -= num3; this.totalRead += num3; if (size == 0 || this.totalRead >= this.contentLength) { webAsyncResult.SetCompleted(true, num3); webAsyncResult.DoCallback(); return webAsyncResult; } webAsyncResult.NBytes = num3; } if (cb != null) { cb = new AsyncCallback(this.ReadCallbackWrapper); } if (this.contentLength != 2147483647 && this.contentLength - this.totalRead < size) { size = this.contentLength - this.totalRead; } if (!this.read_eof) { webAsyncResult.InnerAsyncResult = this.cnc.BeginRead(this.request, buffer, offset, size, cb, webAsyncResult); } else { webAsyncResult.SetCompleted(true, webAsyncResult.NBytes); webAsyncResult.DoCallback(); } return webAsyncResult; } // Token: 0x06001679 RID: 5753 RVA: 0x0004AF10 File Offset: 0x00049110 public override int EndRead(IAsyncResult r) { WebAsyncResult webAsyncResult = (WebAsyncResult)r; if (webAsyncResult.EndCalled) { int nbytes = webAsyncResult.NBytes; return (nbytes < 0) ? 0 : nbytes; } webAsyncResult.EndCalled = true; if (!webAsyncResult.IsCompleted) { int num = -1; try { num = this.cnc.EndRead(this.request, webAsyncResult); } catch (Exception ex) { object obj = this.locker; lock (obj) { this.pendingReads--; if (this.pendingReads == 0) { this.pending.Set(); } } this.nextReadCalled = true; this.cnc.Close(true); webAsyncResult.SetCompleted(false, ex); webAsyncResult.DoCallback(); throw; } if (num < 0) { num = 0; this.read_eof = true; } this.totalRead += num; webAsyncResult.SetCompleted(false, num + webAsyncResult.NBytes); webAsyncResult.DoCallback(); if (num == 0) { this.contentLength = this.totalRead; } } object obj2 = this.locker; lock (obj2) { this.pendingReads--; if (this.pendingReads == 0) { this.pending.Set(); } } if (this.totalRead >= this.contentLength && !this.nextReadCalled) { this.ReadAll(); } int nbytes2 = webAsyncResult.NBytes; return (nbytes2 < 0) ? 0 : nbytes2; } // Token: 0x0600167A RID: 5754 RVA: 0x0004B0E8 File Offset: 0x000492E8 private void WriteRequestAsyncCB(IAsyncResult r) { WebAsyncResult webAsyncResult = (WebAsyncResult)r.AsyncState; try { this.cnc.EndWrite2(this.request, r); webAsyncResult.SetCompleted(false, 0); if (!this.initRead) { this.initRead = true; WebConnection.InitRead(this.cnc); } } catch (Exception ex) { this.KillBuffer(); this.nextReadCalled = true; this.cnc.Close(true); if (ex is global::System.Net.Sockets.SocketException) { ex = new IOException("Error writing request", ex); } webAsyncResult.SetCompleted(false, ex); } this.complete_request_written = true; webAsyncResult.DoCallback(); } // Token: 0x0600167B RID: 5755 RVA: 0x0004B1A4 File Offset: 0x000493A4 public override IAsyncResult BeginWrite(byte[] buffer, int offset, int size, AsyncCallback cb, object state) { if (this.request.Aborted) { throw new WebException("The request was canceled.", null, WebExceptionStatus.RequestCanceled); } if (this.isRead) { throw new NotSupportedException("this stream does not allow writing"); } if (buffer == null) { throw new ArgumentNullException("buffer"); } int num = buffer.Length; if (offset < 0 || num < offset) { throw new ArgumentOutOfRangeException("offset"); } if (size < 0 || num - offset < size) { throw new ArgumentOutOfRangeException("size"); } if (this.sendChunked) { object obj = this.locker; lock (obj) { this.pendingWrites++; this.pending.Reset(); } } WebAsyncResult webAsyncResult = new WebAsyncResult(cb, state); if (!this.sendChunked) { this.CheckWriteOverflow(this.request.ContentLength, this.totalWritten, (long)size); } if (this.allowBuffering && !this.sendChunked) { if (this.writeBuffer == null) { this.writeBuffer = new MemoryStream(); } this.writeBuffer.Write(buffer, offset, size); this.totalWritten += (long)size; if (this.request.ContentLength > 0L && this.totalWritten == this.request.ContentLength) { try { webAsyncResult.AsyncWriteAll = true; webAsyncResult.InnerAsyncResult = this.WriteRequestAsync(new AsyncCallback(this.WriteRequestAsyncCB), webAsyncResult); if (webAsyncResult.InnerAsyncResult == null) { if (!webAsyncResult.IsCompleted) { webAsyncResult.SetCompleted(true, 0); } webAsyncResult.DoCallback(); } } catch (Exception ex) { webAsyncResult.SetCompleted(true, ex); webAsyncResult.DoCallback(); } } else { webAsyncResult.SetCompleted(true, 0); webAsyncResult.DoCallback(); } return webAsyncResult; } AsyncCallback asyncCallback = null; if (cb != null) { asyncCallback = new AsyncCallback(this.WriteCallbackWrapper); } if (this.sendChunked) { this.WriteRequest(); string text = string.Format("{0:X}\r\n", size); byte[] bytes = Encoding.ASCII.GetBytes(text); int num2 = 2 + size + bytes.Length; byte[] array = new byte[num2]; Buffer.BlockCopy(bytes, 0, array, 0, bytes.Length); Buffer.BlockCopy(buffer, offset, array, bytes.Length, size); Buffer.BlockCopy(WebConnectionStream.crlf, 0, array, bytes.Length + size, WebConnectionStream.crlf.Length); buffer = array; offset = 0; size = num2; } webAsyncResult.InnerAsyncResult = this.cnc.BeginWrite(this.request, buffer, offset, size, asyncCallback, webAsyncResult); this.totalWritten += (long)size; return webAsyncResult; } // Token: 0x0600167C RID: 5756 RVA: 0x0004B47C File Offset: 0x0004967C private void CheckWriteOverflow(long contentLength, long totalWritten, long size) { if (contentLength == -1L) { return; } long num = contentLength - totalWritten; if (size > num) { this.KillBuffer(); this.nextReadCalled = true; this.cnc.Close(true); throw new ProtocolViolationException("The number of bytes to be written is greater than the specified ContentLength."); } } // Token: 0x0600167D RID: 5757 RVA: 0x0004B4C4 File Offset: 0x000496C4 public override void EndWrite(IAsyncResult r) { if (r == null) { throw new ArgumentNullException("r"); } WebAsyncResult webAsyncResult = r as WebAsyncResult; if (webAsyncResult == null) { throw new ArgumentException("Invalid IAsyncResult"); } if (webAsyncResult.EndCalled) { return; } webAsyncResult.EndCalled = true; if (webAsyncResult.AsyncWriteAll) { webAsyncResult.WaitUntilComplete(); if (webAsyncResult.GotException) { throw webAsyncResult.Exception; } return; } else { if (this.allowBuffering && !this.sendChunked) { return; } if (webAsyncResult.GotException) { throw webAsyncResult.Exception; } try { this.cnc.EndWrite2(this.request, webAsyncResult.InnerAsyncResult); webAsyncResult.SetCompleted(false, 0); webAsyncResult.DoCallback(); } catch (Exception ex) { webAsyncResult.SetCompleted(false, ex); webAsyncResult.DoCallback(); throw; } finally { if (this.sendChunked) { object obj = this.locker; lock (obj) { this.pendingWrites--; if (this.pendingWrites == 0) { this.pending.Set(); } } } } return; } } // Token: 0x0600167E RID: 5758 RVA: 0x0004B630 File Offset: 0x00049830 public override void Write(byte[] buffer, int offset, int size) { AsyncCallback asyncCallback = new AsyncCallback(this.WriteCallbackWrapper); WebAsyncResult webAsyncResult = (WebAsyncResult)this.BeginWrite(buffer, offset, size, asyncCallback, null); if (!webAsyncResult.IsCompleted && !webAsyncResult.WaitUntilComplete(this.WriteTimeout, false)) { this.KillBuffer(); this.nextReadCalled = true; this.cnc.Close(true); throw new IOException("Write timed out."); } this.EndWrite(webAsyncResult); } // Token: 0x0600167F RID: 5759 RVA: 0x0004B6A4 File Offset: 0x000498A4 public override void Flush() { } // Token: 0x06001680 RID: 5760 RVA: 0x0004B6A8 File Offset: 0x000498A8 internal void SetHeaders(byte[] buffer) { if (this.headersSent) { return; } this.headers = buffer; long num = this.request.ContentLength; string method = this.request.Method; bool flag = method == "GET" || method == "CONNECT" || method == "HEAD" || method == "TRACE" || method == "DELETE"; if (this.sendChunked || num > -1L || flag) { this.WriteHeaders(); if (!this.initRead) { this.initRead = true; WebConnection.InitRead(this.cnc); } if (!this.sendChunked && num == 0L) { this.requestWritten = true; } } } // Token: 0x1700073A RID: 1850 // (get) Token: 0x06001681 RID: 5761 RVA: 0x0004B784 File Offset: 0x00049984 internal bool RequestWritten { get { return this.requestWritten; } } // Token: 0x06001682 RID: 5762 RVA: 0x0004B78C File Offset: 0x0004998C private IAsyncResult WriteRequestAsync(AsyncCallback cb, object state) { this.requestWritten = true; byte[] buffer = this.writeBuffer.GetBuffer(); int num = (int)this.writeBuffer.Length; IAsyncResult asyncResult2; if (num > 0) { IAsyncResult asyncResult = this.cnc.BeginWrite(this.request, buffer, 0, num, cb, state); asyncResult2 = asyncResult; } else { asyncResult2 = null; } return asyncResult2; } // Token: 0x06001683 RID: 5763 RVA: 0x0004B7E0 File Offset: 0x000499E0 private void WriteHeaders() { if (this.headersSent) { return; } this.headersSent = true; string text = null; if (!this.cnc.Write(this.request, this.headers, 0, this.headers.Length, ref text)) { throw new WebException("Error writing request: " + text, null, WebExceptionStatus.SendFailure, null); } } // Token: 0x06001684 RID: 5764 RVA: 0x0004B840 File Offset: 0x00049A40 internal void WriteRequest() { if (this.requestWritten) { return; } this.requestWritten = true; if (this.sendChunked) { return; } if (!this.allowBuffering || this.writeBuffer == null) { return; } byte[] buffer = this.writeBuffer.GetBuffer(); int num = (int)this.writeBuffer.Length; if (this.request.ContentLength != -1L && this.request.ContentLength < (long)num) { this.nextReadCalled = true; this.cnc.Close(true); throw new WebException("Specified Content-Length is less than the number of bytes to write", null, WebExceptionStatus.ServerProtocolViolation, null); } if (!this.headersSent) { string method = this.request.Method; if (!(method == "GET") && !(method == "CONNECT") && !(method == "HEAD") && !(method == "TRACE") && !(method == "DELETE")) { this.request.InternalContentLength = (long)num; } this.request.SendRequestHeaders(true); } this.WriteHeaders(); if (this.cnc.Data.StatusCode != 0 && this.cnc.Data.StatusCode != 100) { return; } IAsyncResult asyncResult = null; if (num > 0) { asyncResult = this.cnc.BeginWrite(this.request, buffer, 0, num, null, null); } if (!this.initRead) { this.initRead = true; WebConnection.InitRead(this.cnc); } if (num > 0) { this.complete_request_written = this.cnc.EndWrite(this.request, asyncResult); } else { this.complete_request_written = true; } } // Token: 0x06001685 RID: 5765 RVA: 0x0004BA08 File Offset: 0x00049C08 internal void InternalClose() { this.disposed = true; } // Token: 0x06001686 RID: 5766 RVA: 0x0004BA14 File Offset: 0x00049C14 public override void Close() { if (this.sendChunked) { if (this.disposed) { return; } this.disposed = true; this.pending.WaitOne(); byte[] bytes = Encoding.ASCII.GetBytes("0\r\n\r\n"); string text = null; this.cnc.Write(this.request, bytes, 0, bytes.Length, ref text); return; } else { if (this.isRead) { if (!this.nextReadCalled) { this.CheckComplete(); if (!this.nextReadCalled) { this.nextReadCalled = true; this.cnc.Close(true); } } return; } if (!this.allowBuffering) { this.complete_request_written = true; if (!this.initRead) { this.initRead = true; WebConnection.InitRead(this.cnc); } return; } if (this.disposed || this.requestWritten) { return; } long num = this.request.ContentLength; if (!this.sendChunked && num != -1L && this.totalWritten != num) { IOException ex = new IOException("Cannot close the stream until all bytes are written"); this.nextReadCalled = true; this.cnc.Close(true); throw new WebException("Request was cancelled.", ex, WebExceptionStatus.RequestCanceled); } this.WriteRequest(); this.disposed = true; return; } } // Token: 0x06001687 RID: 5767 RVA: 0x0004BB5C File Offset: 0x00049D5C internal void KillBuffer() { this.writeBuffer = null; } // Token: 0x06001688 RID: 5768 RVA: 0x0004BB68 File Offset: 0x00049D68 public override long Seek(long a, SeekOrigin b) { throw new NotSupportedException(); } // Token: 0x06001689 RID: 5769 RVA: 0x0004BB70 File Offset: 0x00049D70 public override void SetLength(long a) { throw new NotSupportedException(); } // Token: 0x1700073B RID: 1851 // (get) Token: 0x0600168A RID: 5770 RVA: 0x0004BB78 File Offset: 0x00049D78 public override bool CanSeek { get { return false; } } // Token: 0x1700073C RID: 1852 // (get) Token: 0x0600168B RID: 5771 RVA: 0x0004BB7C File Offset: 0x00049D7C public override bool CanRead { get { return !this.disposed && this.isRead; } } // Token: 0x1700073D RID: 1853 // (get) Token: 0x0600168C RID: 5772 RVA: 0x0004BB94 File Offset: 0x00049D94 public override bool CanWrite { get { return !this.disposed && !this.isRead; } } // Token: 0x1700073E RID: 1854 // (get) Token: 0x0600168D RID: 5773 RVA: 0x0004BBB0 File Offset: 0x00049DB0 public override long Length { get { throw new NotSupportedException(); } } // Token: 0x1700073F RID: 1855 // (get) Token: 0x0600168E RID: 5774 RVA: 0x0004BBB8 File Offset: 0x00049DB8 // (set) Token: 0x0600168F RID: 5775 RVA: 0x0004BBC0 File Offset: 0x00049DC0 public override long Position { get { throw new NotSupportedException(); } set { throw new NotSupportedException(); } } // Token: 0x0400123B RID: 4667 private static byte[] crlf = new byte[] { 13, 10 }; // Token: 0x0400123C RID: 4668 private bool isRead; // Token: 0x0400123D RID: 4669 private WebConnection cnc; // Token: 0x0400123E RID: 4670 private HttpWebRequest request; // Token: 0x0400123F RID: 4671 private byte[] readBuffer; // Token: 0x04001240 RID: 4672 private int readBufferOffset; // Token: 0x04001241 RID: 4673 private int readBufferSize; // Token: 0x04001242 RID: 4674 private int contentLength; // Token: 0x04001243 RID: 4675 private int totalRead; // Token: 0x04001244 RID: 4676 private long totalWritten; // Token: 0x04001245 RID: 4677 private bool nextReadCalled; // Token: 0x04001246 RID: 4678 private int pendingReads; // Token: 0x04001247 RID: 4679 private int pendingWrites; // Token: 0x04001248 RID: 4680 private ManualResetEvent pending; // Token: 0x04001249 RID: 4681 private bool allowBuffering; // Token: 0x0400124A RID: 4682 private bool sendChunked; // Token: 0x0400124B RID: 4683 private MemoryStream writeBuffer; // Token: 0x0400124C RID: 4684 private bool requestWritten; // Token: 0x0400124D RID: 4685 private byte[] headers; // Token: 0x0400124E RID: 4686 private bool disposed; // Token: 0x0400124F RID: 4687 private bool headersSent; // Token: 0x04001250 RID: 4688 private object locker = new object(); // Token: 0x04001251 RID: 4689 private bool initRead; // Token: 0x04001252 RID: 4690 private bool read_eof; // Token: 0x04001253 RID: 4691 private bool complete_request_written; // Token: 0x04001254 RID: 4692 private int read_timeout; // Token: 0x04001255 RID: 4693 private int write_timeout; } }