Packets/80221Bundle: fixed MIH message validation unit test @ ubuntu hardy
[senf.git] / senf / Socket / ReadWritePolicy.cc
index 9ca08ad..c0a9343 100644 (file)
@@ -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"