diff --git a/src/ebusd/network.cpp b/src/ebusd/network.cpp index 550fa024..c7c7276d 100644 --- a/src/ebusd/network.cpp +++ b/src/ebusd/network.cpp @@ -183,8 +183,10 @@ void Connection::run() { } } - delete m_socket; - m_socket = nullptr; + if (m_socket) { + delete m_socket; + m_socket = nullptr; + } logInfo(lf_network, "[%05d] connection closed", getID()); } diff --git a/src/ebusd/network.h b/src/ebusd/network.h index 13f1069c..2d6373bd 100644 --- a/src/ebusd/network.h +++ b/src/ebusd/network.h @@ -231,7 +231,12 @@ class Connection : public Thread { m_id = ++m_ids; } - virtual ~Connection() { if (m_socket) delete m_socket; } + virtual ~Connection() { + if (m_socket) { + delete m_socket; + m_socket = nullptr; + } + } /** * endless loop for connection instance. */