From bdc124ba4149dc605b9c7aa2d9f7c54a382383a6 Mon Sep 17 00:00:00 2001
From: sfan5 <sfan5@live.de>
Date: Sat, 6 Jan 2024 21:39:06 +0100
Subject: [PATCH] Require client to consistently use peer ID

---
 src/network/connectionthreads.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/network/connectionthreads.cpp b/src/network/connectionthreads.cpp
index 03771b33f..ed2bcd0b6 100644
--- a/src/network/connectionthreads.cpp
+++ b/src/network/connectionthreads.cpp
@@ -1018,6 +1018,13 @@ void ConnectionReceiveThread::receive(SharedBuffer<u8> &packetdata,
 			peer->SetFullyOpen();
 			// Setup phase has a fixed timeout
 			peer->ResetTimeout();
+		} else if (!peer->isHalfOpen()) {
+			// If the peer talks to us without a peer ID when it has done so
+			// before something is definitely fishy.
+			LOG(derr_con << m_connection->getDesc()
+				<< " Peer " << peer_id << " sending without peer id?!"
+				" Ignoring." << std::endl);
+			return;
 		}
 
 		auto *udpPeer = dynamic_cast<UDPPeer *>(&peer);