aboutsummaryrefslogtreecommitdiff
path: root/src/network/connectionthreads.cpp
diff options
context:
space:
mode:
authorred-001 <red-001@outlook.ie>2020-11-02 21:21:03 +0000
committerGitHub <noreply@github.com>2020-11-02 22:21:03 +0100
commit0abb3e89fa6298041faa7e46d437e5a81f71cdd3 (patch)
treea5043443766349fd63d452e4f33dbea65213de70 /src/network/connectionthreads.cpp
parent9c9344ceb31892a8563994190f1ec31cb872f12c (diff)
downloadminetest-0abb3e89fa6298041faa7e46d437e5a81f71cdd3.tar.xz
Block attempts to connect to the client (#10589)
A Minetest peer initiates a connection by sending a packet with an invalid peer_id, for whatever reason the code for doing this ran on both the client and the server meaning you could connect to a client if you knew what the address:port tuple it was listening on.
Diffstat (limited to 'src/network/connectionthreads.cpp')
-rw-r--r--src/network/connectionthreads.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/network/connectionthreads.cpp b/src/network/connectionthreads.cpp
index 28ed798d9..7b62bc792 100644
--- a/src/network/connectionthreads.cpp
+++ b/src/network/connectionthreads.cpp
@@ -956,8 +956,11 @@ void ConnectionReceiveThread::receive(SharedBuffer<u8> &packetdata,
// command was sent reliably.
}
- /* The peer was not found in our lists. Add it. */
if (peer_id == PEER_ID_INEXISTENT) {
+ /* Ignore it if we are a client */
+ if (m_connection->ConnectedToServer())
+ return;
+ /* The peer was not found in our lists. Add it. */
peer_id = m_connection->createPeer(sender, MTP_MINETEST_RELIABLE_UDP, 0);
}