All pastes #15912 Raw Edit

tobz

public text v1 · immutable
#15912 ·published 2005-06-26 17:37 UTC
rendered paste body
public void RecvCallback(IAsyncResult Result)
		{
			try
			{
				if (Result == null) return;


				int RecvBytes = Socket.EndReceive(Result);
				byte[] TempBuffer = new byte[RecvBytes];

				if (BytesToGo == 0 && RecvBytes < 2)
				{
					// malformed packet, log this
					log.Info("RecvCallback::Malformed packet");
					return;
				} 



				if (BytesToGo == 0)
				{
					Array.Copy(RecvBuffer, 0, TempBuffer, 0, 2);

					BytesToGo = (int)Marshal.ConvertToInt16(TempBuffer);
				} else {
					BytesToGo -= RecvBytes;
				}

				if (RecvBytes > Packet.PacketSize)
				{
					log.Info("RecvCallback::Buffer overflow!");
					return;
				}

				Array.Copy(RecvBuffer, 0, PacketBuffer, PacketBuffer.Length, RecvBytes);

				RecvBuffer = new byte[Packet.PacketSize];

				if (PacketBuffer.Length > 0 && BytesToGo == 0)
				{
					ProcessBytes(PacketBuffer);

					PacketBuffer = new byte[Packet.PacketSize];
				}
				
				BeginRecv();
			}
			catch (Exception ex)
			{
				log.Info("RecvCallback::Exception", ex);
			}
		}