diff --git a/Socket/Protocols/Raw/TunTapSocketHandle.cc b/Socket/Protocols/Raw/TunTapSocketHandle.cc index c2ab043385ea5e13a22bf2073bbc7dacd7a7a78e..9e02d6fd7878092078fb6efe85517847a8a4d315 100644 --- a/Socket/Protocols/Raw/TunTapSocketHandle.cc +++ b/Socket/Protocols/Raw/TunTapSocketHandle.cc @@ -69,15 +69,31 @@ prefix_ std::auto_ptr<senf::SocketProtocol> senf::TapProtocol::clone() } prefix_ unsigned senf::TapProtocol::available() - const + const { - if (! body().readable()) - return 0; - ssize_t l = ::recv(body().fd(),0,0,MSG_PEEK | MSG_TRUNC); - if (l < 0) - throwErrno(); - return l; + if (! body().readable()) + return 0; + ssize_t l = ::recv(body().fd(),0,0,MSG_PEEK | MSG_TRUNC); + if (l < 0) + //throwErrno(); + return 1588; + return l; +} + +/* +#include <linux/sockios.h> // for SIOCINQ / SIOCOUTQ + +prefix_ unsigned senf::TapProtocol::available() + const +{ + if (! body().readable()) + return 0; + int n; + if (::ioctl(body().fd(),SIOCINQ,&n) < 0) + throwErrno(); + return n; } +*/ prefix_ bool senf::TapProtocol::eof() const