anchor.diff:                  RecieveMessage(PacketSender, @SenderClient.fBuffer[6], PacketLength);
           else    ScheduleSendData(PacketRecipient, @SenderClient.fBuffer[0], PacketLength+6);
         end;
  +    end;
   
       //Processing that packet may have caused this client to be kicked (joining room where banned)
       //and in that case SenderClient is invalid so we must exit immediately
  
positive.code: 
  implementation
  uses
    KM_CommonTypes;
  
  const
  
negative.code: 
      //If sender from packet contents doesn't match the socket handle, don't process this packet (client trying to fake sender)
      if PacketSender = aHandle then
      begin
        Kind := GetMessKind(PacketSender, @SenderClient.fBuffer[6], PacketLength);
        gLog.AddTime(Format('Got msg %s from %d to %d',
                            [GetEnumName(TypeInfo(TKMessageKind), Integer(Kind)), PacketSender, PacketRecipient]));
        case PacketRecipient of
          NET_ADDRESS_OTHERS: //Transmit to all except sender
                  //Iterate backwards because sometimes calling Send results in ClientDisconnect (LNet only?)
                  for I := fClientList.Count - 1 downto 0 do
                    if (aHandle <> fClientList[i].Handle) and (SenderRoom = fClientList[i].Room) then
                      ScheduleSendData(fClientList[i].Handle, @SenderClient.fBuffer[0], PacketLength+6);
          NET_ADDRESS_ALL: //Transmit to all including sender (used mainly by TextMessages)
                  //Iterate backwards because sometimes calling Send results in ClientDisconnect (LNet only?)
                  for I := fClientList.Count - 1 downto 0 do
                    if SenderRoom = fClientList[i].Room then
                      ScheduleSendData(fClientList[i].Handle, @SenderClient.fBuffer[0], PacketLength+6);
          NET_ADDRESS_HOST:
  