From b5e713e0f03349f53200beff034bb654010e8da2 Mon Sep 17 00:00:00 2001
From: tho <tho@wiback.org>
Date: Mon, 15 Jun 2009 14:55:47 +0000
Subject: [PATCH] Socket: fixed bug in readfrom where socklen was not set

---
 Socket/ReadWritePolicy.cc  | 4 ++--
 Socket/ReadWritePolicy.cti | 2 +-
 Socket/ReadWritePolicy.hh  | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Socket/ReadWritePolicy.cc b/Socket/ReadWritePolicy.cc
index c8426044f..9ca08ad84 100644
--- a/Socket/ReadWritePolicy.cc
+++ b/Socket/ReadWritePolicy.cc
@@ -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:
diff --git a/Socket/ReadWritePolicy.cti b/Socket/ReadWritePolicy.cti
index 618c2d3ff..edb7915c9 100644
--- a/Socket/ReadWritePolicy.cti
+++ b/Socket/ReadWritePolicy.cti
@@ -38,7 +38,7 @@ readfrom(ClientSocketHandle<SPolicy> handle, char * buffer, unsigned size,
          typename SPolicy::AddressingPolicy::Address & address,
          typename IfCommunicationPolicyIs<SPolicy,UnconnectedCommunicationPolicy>::type *)
 {
-    return do_readfrom(handle, buffer, size, address.sockaddr_p(), address.socklen());
+    return do_readfrom(handle, buffer, size, address.sockaddr_p(), address.socklen_p());
 }
 #else
 template <class SPolicy>
diff --git a/Socket/ReadWritePolicy.hh b/Socket/ReadWritePolicy.hh
index 023b3f664..24d5cea6b 100644
--- a/Socket/ReadWritePolicy.hh
+++ b/Socket/ReadWritePolicy.hh
@@ -78,7 +78,7 @@ namespace senf {
 
     private:
         static unsigned do_readfrom(FileHandle handle, char * buffer, unsigned size,
-                                    struct ::sockaddr * addr, socklen_t len);
+                                    struct ::sockaddr * addr, socklen_t * len);
     };
 
     /** \brief ReadPolicy for unreadable sockets
-- 
GitLab