From ea3ac163419afeeba75eda97d433ed348f5b21f9 Mon Sep 17 00:00:00 2001
From: Moritz Maxeiner <mm@ucw.sh>
Date: Tue, 11 Jun 2019 15:52:11 +0200
Subject: [PATCH] Handle network disconnects

---
 Src/Model/Network/TcpListener.cpp | 5 ++++-
 Src/Model/Network/TcpListener.h   | 4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/Src/Model/Network/TcpListener.cpp b/Src/Model/Network/TcpListener.cpp
index bfd7a68..0a04c53 100644
--- a/Src/Model/Network/TcpListener.cpp
+++ b/Src/Model/Network/TcpListener.cpp
@@ -11,7 +11,10 @@ void TcpListener::acceptConnection()
 	while (this->hasPendingConnections())
 	{
 		QTcpSocket *socket = this->nextPendingConnection();
-		_sockets.push_back(socket);
+		_sockets.insert(socket);
+		QObject::connect(socket, &QTcpSocket::disconnected, [this, socket](){
+			_sockets.erase(socket);
+		});
 	}
 }
 
diff --git a/Src/Model/Network/TcpListener.h b/Src/Model/Network/TcpListener.h
index 23461d9..58a00dd 100644
--- a/Src/Model/Network/TcpListener.h
+++ b/Src/Model/Network/TcpListener.h
@@ -8,7 +8,7 @@
 
 #include "../TrackedComponents/pose/FishPose.h"
 
-#include <vector>
+#include <unordered_set>
 #include <chrono>
 
 class TcpListener : public QTcpServer
@@ -27,5 +27,5 @@ public slots:
 		std::chrono::system_clock::time_point ts);
 
 private:
-	std::vector<QTcpSocket *> _sockets;
+	std::unordered_set<QTcpSocket *> _sockets;
 };
-- 
GitLab