X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FReadWritePolicy.cc;h=c0a9343ce27fb1c066dbee25251d1751b97c574c;hb=d0c31526ac12869eed085891e3ae13e8b21072e6;hp=9ca08ad84c27a9a7f3dc075288465959cc8492c0;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Socket/ReadWritePolicy.cc b/senf/Socket/ReadWritePolicy.cc index 9ca08ad..c0a9343 100644 --- a/senf/Socket/ReadWritePolicy.cc +++ b/senf/Socket/ReadWritePolicy.cc @@ -36,9 +36,9 @@ //#include "ReadWritePolicy.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -prefix_ unsigned senf::ReadablePolicy::read(FileHandle handle, char * buffer, +prefix_ unsigned senf::ReadablePolicy::read(FileHandle & handle, char * buffer, unsigned size) { int rv = -1; @@ -59,7 +59,7 @@ prefix_ unsigned senf::ReadablePolicy::read(FileHandle handle, char * buffer, return rv; } -prefix_ unsigned senf::ReadablePolicy::do_readfrom(FileHandle handle, char * buffer, +prefix_ unsigned senf::ReadablePolicy::do_readfrom(FileHandle & handle, char * buffer, unsigned size, struct ::sockaddr * addr, socklen_t * len) { @@ -80,7 +80,7 @@ prefix_ unsigned senf::ReadablePolicy::do_readfrom(FileHandle handle, char * buf return rv; } -prefix_ unsigned senf::WriteablePolicy::do_write(FileHandle handle, char const * buffer, +prefix_ unsigned senf::WriteablePolicy::do_write(FileHandle & handle, char const * buffer, unsigned size) { int rv = -1; @@ -91,6 +91,9 @@ prefix_ unsigned senf::WriteablePolicy::do_write(FileHandle handle, char const * case EINTR: break; case EAGAIN: + case ENOBUFS: + // According to the man page this should not happen, since packets are just silently being dropped. + // It does happen in NetEmu using small TxQueues on WLAN interfaces case ECONNREFUSED: // Writing to a UDP socket seems return this error code if a corresponding ICMP // error code has been received before (at least on linux). This is inconsistent @@ -106,7 +109,7 @@ prefix_ unsigned senf::WriteablePolicy::do_write(FileHandle handle, char const * return rv; } -prefix_ unsigned senf::WriteablePolicy::do_writeto(FileHandle handle, +prefix_ unsigned senf::WriteablePolicy::do_writeto(FileHandle & handle, char const * buffer, unsigned size, struct sockaddr const * addr, socklen_t len) { @@ -118,6 +121,9 @@ prefix_ unsigned senf::WriteablePolicy::do_writeto(FileHandle handle, case EINTR: break; case EAGAIN: + case ENOBUFS: + // According to the man page this should not happen, since packets are just silently being dropped. + // It does happen in NetEmu using small TxQueues on WLAN interfaces rv = 0; break; default: @@ -127,7 +133,7 @@ prefix_ unsigned senf::WriteablePolicy::do_writeto(FileHandle handle, return rv; } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "ReadWritePolicy.mpp"