X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FBSDSocketProtocol.cc;h=4524cae47bc65508adc3528b5f2092166a530a8f;hb=fd3a0e8ac95d1158e9ea661ddf9187b67c70169f;hp=79754e5fb577ab3d8d9bbdd9e22151a886ca89bd;hpb=034f9bec0a66d26314fb6ebc83dedf1618a2c19d;p=senf.git diff --git a/Socket/Protocols/BSDSocketProtocol.cc b/Socket/Protocols/BSDSocketProtocol.cc index 79754e5..4524cae 100644 --- a/Socket/Protocols/BSDSocketProtocol.cc +++ b/Socket/Protocols/BSDSocketProtocol.cc @@ -41,7 +41,7 @@ prefix_ std::pair senf::BSDSocketProtocol::linger() { struct linger ling; socklen_t len = sizeof(ling); - ::memset(&ling,sizeof(ling),0); + ::memset(&ling, 0, sizeof(ling)); if (::getsockopt(fd(),SOL_SOCKET,SO_LINGER,&ling,&len) < 0) SENF_THROW_SYSTEM_EXCEPTION(""); return std::make_pair(ling.l_onoff, ling.l_linger); @@ -75,6 +75,16 @@ prefix_ void senf::BSDSocketProtocol::priority(boost::uint8_t value) SENF_THROW_SYSTEM_EXCEPTION(""); } +prefix_ int senf::BSDSocketProtocol::error() + const +{ + int err; + socklen_t len (sizeof(err)); + if (::getsockopt(fd(),SOL_SOCKET,SO_ERROR,&err,&len) < 0) + SENF_THROW_SYSTEM_EXCEPTION(""); + return err; +} + prefix_ unsigned senf::BSDSocketProtocol::rcvbuf() const { @@ -137,7 +147,7 @@ prefix_ void senf::AddressableBSDSocketProtocol::reuseaddr(bool value) #undef prefix_ //#include "BSDSocketProtocol.mpp" - + // Local Variables: // mode: c++ // fill-column: 100