diff --git a/include/frnetlib/TcpSocket.h b/include/frnetlib/TcpSocket.h index 281ef64..3ccb835 100644 --- a/include/frnetlib/TcpSocket.h +++ b/include/frnetlib/TcpSocket.h @@ -91,6 +91,16 @@ public: */ int32_t get_socket_descriptor() const override; + /*! + * Calls the shutdown syscall on the socket. + * So you can receive data but not send. + * + * This can be called on a blocking socket to force + * it to immediately return (you might want to do this if + * you're exiting and need the blocking socket to return). + */ + void shutdown(); + protected: std::string unprocessed_buffer; std::unique_ptr recv_buffer; diff --git a/src/TcpSocket.cpp b/src/TcpSocket.cpp index f483e70..d039486 100644 --- a/src/TcpSocket.cpp +++ b/src/TcpSocket.cpp @@ -157,4 +157,9 @@ namespace fr return socket_descriptor; } + void TcpSocket::shutdown() + { + ::shutdown(socket_descriptor, 0); + } + } \ No newline at end of file