From 32713c673d335f0d4667005a9e6f658e8a616e8f Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Fri, 9 Dec 2022 20:32:46 +0200 Subject: [PATCH] Don't allow duplicate listen calls Also add a function to check if the socket is already listening --- source/net/streamserversocket.cpp | 3 +++ source/net/streamserversocket.h | 1 + 2 files changed, 4 insertions(+) diff --git a/source/net/streamserversocket.cpp b/source/net/streamserversocket.cpp index 817145b..9b583a1 100644 --- a/source/net/streamserversocket.cpp +++ b/source/net/streamserversocket.cpp @@ -20,6 +20,9 @@ StreamServerSocket::StreamServerSocket(Family af, int proto): void StreamServerSocket::listen(const SockAddr &addr, unsigned backlog) { + if(listening) + throw bad_socket_state("already listening"); + bind(addr); int err = ::listen(priv->handle, backlog); diff --git a/source/net/streamserversocket.h b/source/net/streamserversocket.h index aa4868c..3152265 100644 --- a/source/net/streamserversocket.h +++ b/source/net/streamserversocket.h @@ -16,6 +16,7 @@ public: StreamServerSocket(Family, int = 0); virtual void listen(const SockAddr &, unsigned = 4); + bool is_listening() const { return listening; } virtual StreamSocket *accept(); }; -- 2.43.0