From 04c6d4d12e86c773d4cad9d13c56804073eaccef Mon Sep 17 00:00:00 2001
From: g0dil <g0dil@wiback.org>
Date: Tue, 2 Jun 2009 08:33:23 +0000
Subject: [PATCH] Socket: Fix NetdeviceController

---
 Socket/NetdeviceController.cc | 19 ++++++-------------
 Socket/NetdeviceController.hh |  2 --
 2 files changed, 6 insertions(+), 15 deletions(-)

diff --git a/Socket/NetdeviceController.cc b/Socket/NetdeviceController.cc
index c5c2ca494..a8f6a195c 100644
--- a/Socket/NetdeviceController.cc
+++ b/Socket/NetdeviceController.cc
@@ -169,11 +169,6 @@ prefix_ int senf::NetdeviceController::interfaceIndex()
     return ifindex_;
 }
 
-prefix_ senf::NetdeviceController::~NetdeviceController()
-{
-    close( sockfd_->fd);
-}
-
 prefix_ void senf::NetdeviceController::ifrName(ifreq& ifr)
     const
 {
@@ -199,24 +194,22 @@ prefix_ senf::NetdeviceController::SockFd::SockFd()
 {
     if ( fd < 0)
         SENF_THROW_SYSTEM_EXCEPTION("Could not open socket for NetdeviceController.");
+    std::cerr << ">>Made SockFd: " << fd << std::endl;
 }
 
 prefix_ senf::NetdeviceController::SockFd::~SockFd()
 {
+    std::cerr << ">>Dispose SockFd: " << fd << std::endl;
     ::close(fd);
 }
 
 prefix_ senf::NetdeviceController::SockFd::ptr senf::NetdeviceController::sockfd()
 {
     static boost::weak_ptr<SockFd> sockfd;
-
-    if (sockfd.expired()) {
-        SockFd::ptr newsockfd (new SockFd());
-        sockfd = newsockfd;
-        return newsockfd;
-    }
-    return sockfd.lock();
-        
+    SockFd::ptr p (sockfd.lock());
+    if (!p)
+         sockfd = p = SockFd::ptr(new SockFd());
+    return p;
 }
 
 ///////////////////////////////cc.e////////////////////////////////////////
diff --git a/Socket/NetdeviceController.hh b/Socket/NetdeviceController.hh
index 521e12938..e969cda37 100644
--- a/Socket/NetdeviceController.hh
+++ b/Socket/NetdeviceController.hh
@@ -55,8 +55,6 @@ namespace senf {
                                         ///< Construct a new controller for the given interface name.
         explicit NetdeviceController(int interface_index);
                                         ///< Construct a new controller for the given interface index.
-        virtual ~NetdeviceController();
-
         int interfaceIndex() const;     ///< return the interface index
         MACAddress hardwareAddress() const;
                                         ///< return hardware address
-- 
GitLab