Socket: fixed bug in readfrom where socklen was not set
[senf.git] / Socket / ReadWritePolicy.cc
index d53a959..9ca08ad 100644 (file)
@@ -53,7 +53,7 @@ prefix_ unsigned senf::ReadablePolicy::read(FileHandle handle, char * buffer,
                 rv = 0;
                 break;
             default:
-                throw SystemException();
+                SENF_THROW_SYSTEM_EXCEPTION("");
             }
     } while (rv<0);
     return rv;
@@ -61,11 +61,11 @@ prefix_ unsigned senf::ReadablePolicy::read(FileHandle handle, char * buffer,
 
 prefix_ unsigned senf::ReadablePolicy::do_readfrom(FileHandle handle, char * buffer,
                                                           unsigned size,
-                                                          struct ::sockaddr * addr, socklen_t len)
+                                                          struct ::sockaddr * addr, socklen_t * len)
 {
     int rv = -1;
     do {
-        rv = ::recvfrom(handle.fd(),buffer, size, 0, addr, &len);
+        rv = ::recvfrom(handle.fd(),buffer, size, 0, addr, len);
         if (rv < 0)
             switch (errno) {
             case EINTR:
@@ -74,7 +74,7 @@ prefix_ unsigned senf::ReadablePolicy::do_readfrom(FileHandle handle, char * buf
                 rv = 0;
                 break;
             default:
-                throw SystemException();
+                SENF_THROW_SYSTEM_EXCEPTION("");
             }
     } while (rv<0);
     return rv;
@@ -100,7 +100,7 @@ prefix_ unsigned senf::WriteablePolicy::do_write(FileHandle handle, char const *
                 rv = 0;
                 break;
             default:
-                throw SystemException();
+                SENF_THROW_SYSTEM_EXCEPTION("");
             }
     } while (rv<0);
     return rv;
@@ -121,7 +121,7 @@ prefix_ unsigned senf::WriteablePolicy::do_writeto(FileHandle handle,
                 rv = 0;
                 break;
             default:
-                throw SystemException();
+                SENF_THROW_SYSTEM_EXCEPTION("");
             }
     } while (rv<0);
     return rv;