X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FNetdeviceController.cc;h=a8f6a195c4b861c0c2b3340d6d3ba14d13e4d21c;hb=b89e3166f7680755683dccee5e48cb3a820185c0;hp=c5c2ca49488d8d4542027b419200b7bd6728a29b;hpb=3947db5d3fda79652b619af45e6ae59f441984fb;p=senf.git diff --git a/Socket/NetdeviceController.cc b/Socket/NetdeviceController.cc index c5c2ca4..a8f6a19 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; - - 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////////////////////////////////////////