Some missing from merge.

Signed-off-by: Salja <salja2012@hotmail.de>
This commit is contained in:
Salja 2012-08-05 14:54:07 +02:00 committed by Antz
parent ec939a5bce
commit f4be15a7af
1895 changed files with 160408 additions and 53601 deletions

View file

@ -1,3 +1,5 @@
// $Id: SOCK_Dgram.cpp 96985 2013-04-11 15:50:32Z huangh $
#include "ace/SOCK_Dgram.h"
#include "ace/Log_Category.h"
@ -8,9 +10,6 @@
#include "ace/OS_NS_ctype.h"
#include "ace/os_include/net/os_if.h"
#include "ace/Truncate.h"
#if defined (ACE_HAS_ALLOC_HOOKS)
# include "ace/Malloc_Base.h"
#endif /* ACE_HAS_ALLOC_HOOKS */
#if !defined (__ACE_INLINE__)
# include "ace/SOCK_Dgram.inl"
@ -66,16 +65,9 @@ ACE_SOCK_Dgram::recv (iovec *io_vec,
return -1;
else if (inlen > 0)
{
#if defined (ACE_HAS_ALLOC_HOOKS)
ACE_ALLOCATOR_RETURN (io_vec->iov_base,
static_cast<char*>(ACE_Allocator::instance()->malloc(sizeof(char) * inlen)),
-1);
#else
ACE_NEW_RETURN (io_vec->iov_base,
char[inlen],
-1);
#endif /* ACE_HAS_ALLOC_HOOKS */
ssize_t rcv_len = ACE_OS::recvfrom (this->get_handle (),
(char *) io_vec->iov_base,
inlen,
@ -84,11 +76,7 @@ ACE_SOCK_Dgram::recv (iovec *io_vec,
&addr_len);
if (rcv_len < 0)
{
#if defined (ACE_HAS_ALLOC_HOOKS)
ACE_Allocator::instance()->free(io_vec->iov_base);
#else
delete [] (char *)io_vec->iov_base;
#endif /* ACE_HAS_ALLOC_HOOKS */
io_vec->iov_base = 0;
}
else
@ -116,26 +104,10 @@ ACE_SOCK_Dgram::recv (iovec *io_vec,
int
ACE_SOCK_Dgram::shared_open (const ACE_Addr &local,
int protocol_family,
int ipv6_only)
int protocol_family)
{
ACE_TRACE ("ACE_SOCK_Dgram::shared_open");
bool error = false;
#if defined (ACE_HAS_IPV6)
int setting = !!ipv6_only;
if (protocol_family == PF_INET6 &&
-1 == ACE_OS::setsockopt (this->get_handle (),
IPPROTO_IPV6,
IPV6_V6ONLY,
(char *)&setting,
sizeof (setting)))
{
this->close();
return -1;
}
#else
ACE_UNUSED_ARG (ipv6_only);
#endif /* defined (ACE_HAS_IPV6) */
if (local == ACE_Addr::sap_any)
{
@ -169,8 +141,7 @@ ACE_SOCK_Dgram::open (const ACE_Addr &local,
ACE_Protocol_Info *protocolinfo,
ACE_SOCK_GROUP g,
u_long flags,
int reuse_addr,
int ipv6_only)
int reuse_addr)
{
if (ACE_SOCK::open (SOCK_DGRAM,
protocol_family,
@ -181,8 +152,7 @@ ACE_SOCK_Dgram::open (const ACE_Addr &local,
reuse_addr) == -1)
return -1;
else if (this->shared_open (local,
protocol_family,
ipv6_only) == -1)
protocol_family) == -1)
return -1;
else
return 0;
@ -194,8 +164,7 @@ int
ACE_SOCK_Dgram::open (const ACE_Addr &local,
int protocol_family,
int protocol,
int reuse_addr,
int ipv6_only)
int reuse_addr)
{
ACE_TRACE ("ACE_SOCK_Dgram::open");
@ -217,8 +186,7 @@ ACE_SOCK_Dgram::open (const ACE_Addr &local,
return -1;
else
return this->shared_open (local,
protocol_family,
ipv6_only);
protocol_family);
}
// Here's the general-purpose constructor used by a connectionless
@ -227,16 +195,14 @@ ACE_SOCK_Dgram::open (const ACE_Addr &local,
ACE_SOCK_Dgram::ACE_SOCK_Dgram (const ACE_Addr &local,
int protocol_family,
int protocol,
int reuse_addr,
int ipv6_only)
int reuse_addr)
{
ACE_TRACE ("ACE_SOCK_Dgram::ACE_SOCK_Dgram");
if (this->open (local,
protocol_family,
protocol,
reuse_addr,
ipv6_only) == -1)
reuse_addr) == -1)
ACELIB_ERROR ((LM_ERROR,
ACE_TEXT ("%p\n"),
ACE_TEXT ("ACE_SOCK_Dgram")));
@ -248,8 +214,7 @@ ACE_SOCK_Dgram::ACE_SOCK_Dgram (const ACE_Addr &local,
ACE_Protocol_Info *protocolinfo,
ACE_SOCK_GROUP g,
u_long flags,
int reuse_addr,
int ipv6_only)
int reuse_addr)
{
ACE_TRACE ("ACE_SOCK_Dgram::ACE_SOCK_Dgram");
if (this->open (local,
@ -258,8 +223,7 @@ ACE_SOCK_Dgram::ACE_SOCK_Dgram (const ACE_Addr &local,
protocolinfo,
g,
flags,
reuse_addr,
ipv6_only) == -1)
reuse_addr) == -1)
ACELIB_ERROR ((LM_ERROR,
ACE_TEXT ("%p\n"),
ACE_TEXT ("ACE_SOCK_Dgram")));
@ -291,7 +255,7 @@ ACE_SOCK_Dgram::send (const iovec iov[],
send_msg.msg_control = 0;
send_msg.msg_controllen = 0;
send_msg.msg_flags = 0;
#elif !defined ACE_LACKS_SENDMSG
#else
send_msg.msg_accrights = 0;
send_msg.msg_accrightslen = 0;
#endif /* ACE_HAS_4_4BSD_SENDMSG_RECVMSG */
@ -308,28 +272,11 @@ ssize_t
ACE_SOCK_Dgram::recv (iovec iov[],
int n,
ACE_Addr &addr,
int flags,
ACE_INET_Addr *to_addr) const
int flags) const
{
ACE_TRACE ("ACE_SOCK_Dgram::recv");
msghdr recv_msg;
#if defined (ACE_HAS_4_4BSD_SENDMSG_RECVMSG)
union control_buffer {
cmsghdr control_msg_header;
#if defined (IP_RECVDSTADDR)
u_char padding[CMSG_SPACE(sizeof (struct in_addr))];
#elif defined (IP_PKTINFO)
u_char padding[CMSG_SPACE(sizeof (struct in_pktinfo))];
#endif
#if defined (ACE_HAS_IPV6)
u_char padding6[CMSG_SPACE(sizeof (struct in6_pktinfo))];
#endif
} cbuf;
#else
ACE_UNUSED_ARG (to_addr);
#endif /* ACE_HAS_4_4BSD_SENDMSG_RECVMSG */
recv_msg.msg_iov = (iovec *) iov;
recv_msg.msg_iovlen = n;
#if defined (ACE_HAS_SOCKADDR_MSG_NAME)
@ -340,9 +287,9 @@ ACE_SOCK_Dgram::recv (iovec iov[],
recv_msg.msg_namelen = addr.get_size ();
#if defined (ACE_HAS_4_4BSD_SENDMSG_RECVMSG)
recv_msg.msg_control = to_addr ? &cbuf : 0;
recv_msg.msg_controllen = to_addr ? sizeof (cbuf) : 0;
#elif !defined ACE_LACKS_SENDMSG
recv_msg.msg_control = 0 ;
recv_msg.msg_controllen = 0 ;
#else
recv_msg.msg_accrights = 0;
recv_msg.msg_accrightslen = 0;
#endif /* ACE_HAS_4_4BSD_SENDMSG_RECVMSG */
@ -352,49 +299,6 @@ ACE_SOCK_Dgram::recv (iovec iov[],
flags);
addr.set_size (recv_msg.msg_namelen);
addr.set_type (((sockaddr_in *) addr.get_addr())->sin_family);
#if defined (ACE_HAS_4_4BSD_SENDMSG_RECVMSG)
if (to_addr) {
this->get_local_addr (*to_addr);
if (to_addr->get_type() == AF_INET) {
#if defined (IP_RECVDSTADDR) || defined (IP_PKTINFO)
for (cmsghdr *ptr = CMSG_FIRSTHDR (&recv_msg); ptr != 0; ptr = CMSG_NXTHDR (&recv_msg, ptr)) {
#if defined (IP_RECVDSTADDR)
if (ptr->cmsg_level == IPPROTO_IP &&
ptr->cmsg_type == IP_RECVDSTADDR) {
to_addr->set_address ((const char *)(CMSG_DATA (ptr)),
sizeof (struct in_addr),
0);
break;
}
#else
if (ptr->cmsg_level == IPPROTO_IP &&
ptr->cmsg_type == IP_PKTINFO) {
to_addr->set_address ((const char *)&(((struct in_pktinfo *)(CMSG_DATA (ptr)))->ipi_addr),
sizeof (struct in_addr),
0);
break;
}
#endif
}
#endif
}
#if defined (ACE_HAS_IPV6) && defined (IPV6_PKTINFO)
else if (to_addr->get_type() == AF_INET6) {
for (cmsghdr *ptr = CMSG_FIRSTHDR (&recv_msg); ptr != 0; ptr = CMSG_NXTHDR (&recv_msg, ptr)) {
if (ptr->cmsg_level == IPPROTO_IPV6 && ptr->cmsg_type == IPV6_PKTINFO) {
to_addr->set_address ((const char *)&(((struct in6_pktinfo *)(CMSG_DATA (ptr)))->ipi6_addr),
sizeof (struct in6_addr),
0);
break;
}
}
}
#endif
}
#endif /* ACE_HAS_4_4BSD_SENDMSG_RECVMSG */
return status;
}
@ -430,14 +334,9 @@ ACE_SOCK_Dgram::send (const iovec iov[],
#if defined (ACE_HAS_ALLOCA)
buf = alloca (length);
#else
# ifdef ACE_HAS_ALLOC_HOOKS
ACE_ALLOCATOR_RETURN (buf, (buf *)
ACE_Allocator::instance ()->malloc (length), -1);
# else
ACE_NEW_RETURN (buf,
char[length],
-1);
# endif /* ACE_HAS_ALLOC_HOOKS */
#endif /* !defined (ACE_HAS_ALLOCA) */
char *ptr = buf;
@ -450,11 +349,7 @@ ACE_SOCK_Dgram::send (const iovec iov[],
ssize_t result = ACE_SOCK_Dgram::send (buf, length, addr, flags);
#if !defined (ACE_HAS_ALLOCA)
# ifdef ACE_HAS_ALLOC_HOOKS
ACE_Allocator::instance ()->free (buf);
# else
delete [] buf;
# endif /* ACE_HAS_ALLOC_HOOKS */
#endif /* !defined (ACE_HAS_ALLOCA) */
return result;
}
@ -488,14 +383,9 @@ ACE_SOCK_Dgram::recv (iovec iov[],
#if defined (ACE_HAS_ALLOCA)
buf = alloca (length);
#else
# ifdef ACE_HAS_ALLOC_HOOKS
ACE_ALLOCATOR_RETURN (buf, (buf *)
ACE_Allocator::instance ()->malloc (length), -1);
# else
ACE_NEW_RETURN (buf,
char[length],
-1);
# endif /* ACE_HAS_ALLOC_HOOKS */
#endif /* !defined (ACE_HAS_ALLOCA) */
length = ACE_SOCK_Dgram::recv (buf, length, addr, flags);
@ -520,11 +410,7 @@ ACE_SOCK_Dgram::recv (iovec iov[],
}
#if !defined (ACE_HAS_ALLOCA)
# ifdef ACE_HAS_ALLOC_HOOKS
ACE_Allocator::instance ()->free (buf);
# else
delete [] buf;
# endif /* ACE_HAS_ALLOC_HOOKS */
#endif /* !defined (ACE_HAS_ALLOCA) */
return length;
}