Socket: Fix handle.state() on invalid handles
[senf.git] / Socket / NetdeviceController.cc
index c5c2ca4..fa020d8 100644 (file)
@@ -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
 {
@@ -209,14 +204,10 @@ prefix_ senf::NetdeviceController::SockFd::~SockFd()
 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////////////////////////////////////////