From c2856e576efdf473c7c34b6c7c2558fa433cad27 Mon Sep 17 00:00:00 2001
From: g0dil <g0dil@wiback.org>
Date: Thu, 26 Feb 2009 12:48:57 +0000
Subject: [PATCH] Socket: Move shutdown from SocketProtocol::close() to
 INetSocketProtocol::close()

---
 Socket/Protocols/INet/TCPSocketProtocol.cc | 9 ++++++++-
 Socket/Protocols/INet/TCPSocketProtocol.hh | 1 +
 Socket/SocketProtocol.cc                   | 2 --
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/Socket/Protocols/INet/TCPSocketProtocol.cc b/Socket/Protocols/INet/TCPSocketProtocol.cc
index 781b5e645..5f49a4498 100644
--- a/Socket/Protocols/INet/TCPSocketProtocol.cc
+++ b/Socket/Protocols/INet/TCPSocketProtocol.cc
@@ -79,7 +79,14 @@ prefix_ void senf::TCPSocketProtocol::shutdown(ShutType type)
     const
 {
     if (::shutdown(fd(), type) < 0)
-        SENF_THROW_SYSTEM_EXCEPTION("");
+        SENF_THROW_SYSTEM_EXCEPTION("::shutdown()");
+}
+
+prefix_ void senf::TCPSocketProtocol::close()
+    const
+{
+    shutdown(ShutRDWR);
+    INetSocketProtocol::close();
 }
 
 prefix_ unsigned senf::TCPSocketProtocol::available()
diff --git a/Socket/Protocols/INet/TCPSocketProtocol.hh b/Socket/Protocols/INet/TCPSocketProtocol.hh
index d11578c33..91021a02f 100644
--- a/Socket/Protocols/INet/TCPSocketProtocol.hh
+++ b/Socket/Protocols/INet/TCPSocketProtocol.hh
@@ -66,6 +66,7 @@ namespace senf {
         ///\name Abstract Interface Implementation
         ///@{
 
+        void close() const;
         unsigned available() const;
         bool eof() const;
 
diff --git a/Socket/SocketProtocol.cc b/Socket/SocketProtocol.cc
index 67ed3407a..5e15222aa 100644
--- a/Socket/SocketProtocol.cc
+++ b/Socket/SocketProtocol.cc
@@ -37,8 +37,6 @@
 prefix_ void senf::SocketProtocol::close()
     const
 {
-    if (::shutdown(body().fd(),SHUT_RDWR) < 0)
-        SENF_THROW_SYSTEM_EXCEPTION("::shutdown(socket_fd)");
     if (::close(body().fd()) < 0)
         SENF_THROW_SYSTEM_EXCEPTION("::close(socket_fd)");
 }
-- 
GitLab