public unsafe bool FlushReceive() { if (base.Closed) { return true; } if (!base.Parent.AsyncReceive && !base.Parent.RequestData(this)) { return true; } if (((this.EncodedLength != 0) && !this.m_firstPacket) && !this.m_authenticated) { return true; } Label_0045: if (base.Closed) { return true; } if (this.m_lastSize == 0) { if (!this.m_packetReceiveQueue.Dequeue(this.m_lastHeader, this.m_headerSize)) { //goto Label_0151; return true; } this.m_lastSize = this.PacketSize(this.m_lastHeader); if (this.m_lastSize == -1) { return false; } } if (this.m_packetReceiveQueue.Length >= (this.m_lastSize - this.m_headerSize)) { byte* data = stackalloc byte[(1 * (this.m_lastSize - this.m_headerSize))]; if (m_packetReceiveQueue.Dequeue(data, this.m_lastSize - this.m_headerSize)) { HeapBuffer heapBuffer = new HeapBuffer(this.m_lastSize); heapBuffer.WriteData(this.m_lastHeader, 0, this.m_headerSize, 0); heapBuffer.WriteData(data, 0, this.m_lastSize - this.m_headerSize, this.m_headerSize); this.EnqueueIncomingPacket(new HeapBinReader(heapBuffer, this.m_lastSize)); this.m_lastSize = 0; if (!this.m_firstPacket) { goto Label_0045; } this.m_firstPacket = false; if (this.EncodedLength == 0) { goto Label_0045; } return true; } } return true; }