diff --git a/src/connection.cpp b/src/connection.cpp
index ee5b1eb0baa284ca54d7e5ab286ec6772dbab9c5..64ef9a50e42f9638008adeb0f9273190212068f8 100644
--- a/src/connection.cpp
+++ b/src/connection.cpp
@@ -2322,7 +2322,12 @@ bool ConnectionReceiveThread::checkIncomingBuffers(Channel *channel,
 SharedBuffer<u8> ConnectionReceiveThread::processPacket(Channel *channel,
 		SharedBuffer<u8> packetdata, u16 peer_id, u8 channelnum, bool reliable)
 {
-	PeerHelper peer = m_connection->getPeer(peer_id);
+	PeerHelper peer = m_connection->getPeerNoEx(peer_id);
+
+	if (!peer) {
+		errorstream << "Peer not found (possible timeout)" << std::endl;
+		throw ProcessedSilentlyException("Peer not found (possible timeout)");
+	}
 
 	if(packetdata.getSize() < 1)
 		throw InvalidIncomingDataException("packetdata.getSize() < 1");