--- a/RELEASE_NOTES Fri Jan 16 15:12:34 2015 +0900
+++ b/RELEASE_NOTES Sat Jan 17 00:45:26 2015 +0900
@@ -24,7 +24,6 @@
- Bug 2015 - static/optimized build fails to execute with a script under myscripts
- Bug 2035 - write(2)/send(2) crashes with connected UDP socket
- Bug 2036 - wrong return code from dce_readv in case it fails within multiple buffers loop
-- Bug 2039 - LinuxSocketImpl::RecvFrom uses fixed size buf and ignores maxSize
Release dce-1.4
===============
--- a/model/linux/linux-socket-impl.cc Fri Jan 16 15:12:34 2015 +0900
+++ b/model/linux/linux-socket-impl.cc Sat Jan 17 00:45:26 2015 +0900
@@ -425,12 +425,7 @@
Address &fromAddress)
{
NS_LOG_FUNCTION (this << maxSize << flags);
- uint8_t *buf = (uint8_t *)malloc (maxSize);
- if (!buf)
- {
- NS_ASSERT_MSG (0, "can't allocate memory (size=" << maxSize << ")");
- }
-
+ uint8_t buf[4096];
struct sockaddr_storage my_addr;
socklen_t addrlen = sizeof (struct sockaddr_storage);
struct msghdr msg;
@@ -439,7 +434,7 @@
msg.msg_controllen = 0;
msg.msg_iovlen = 1;
msg.msg_iov = &iov;
- iov.iov_len = maxSize;
+ iov.iov_len = sizeof (buf);
iov.iov_base = buf;
msg.msg_name = (void *)&my_addr;
msg.msg_namelen = addrlen;
@@ -450,7 +445,6 @@
{
NS_LOG_DEBUG ("recvmsg ret " << ret << " errno " << Current ()->err);
LeaveFakeTask (pid);
- free (buf);
return 0;
}
LeaveFakeTask (pid);
@@ -465,7 +459,6 @@
LeaveFakeTask (pid);
fromAddress = m_posixtons3 ((struct sockaddr *)&my_addr, addrlen);
- free (buf);
return p;
}