summaryrefslogtreecommitdiff
path: root/ace/WIN32_Asynch_IO.cpp
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2005-02-21 17:48:11 +0000
committerSteve Huston <shuston@riverace.com>2005-02-21 17:48:11 +0000
commitabb08e053f764b94acdc17dc947190579e65a0be (patch)
tree323ffd51bf89f1b4839f9141fc8dbba1e05ffd7c /ace/WIN32_Asynch_IO.cpp
parent490ae0dce6d3b2db6174ee1b78c47f304ebd0ae2 (diff)
downloadATCD-abb08e053f764b94acdc17dc947190579e65a0be.tar.gz
ChangeLogTag:Mon Feb 21 12:43:41 2005 Steve Huston <shuston@riverace.com>
Diffstat (limited to 'ace/WIN32_Asynch_IO.cpp')
-rw-r--r--ace/WIN32_Asynch_IO.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/ace/WIN32_Asynch_IO.cpp b/ace/WIN32_Asynch_IO.cpp
index b88ae61b5f4..ed50a210ab5 100644
--- a/ace/WIN32_Asynch_IO.cpp
+++ b/ace/WIN32_Asynch_IO.cpp
@@ -2028,15 +2028,20 @@ ACE_WIN32_Asynch_Accept::accept (ACE_Message_Block &message_block,
ACE_HANDLE accept_handle,
const void *act,
int priority,
- int signal_number)
+ int signal_number,
+ int addr_family)
{
#if (defined (ACE_HAS_WINNT4) && (ACE_HAS_WINNT4 != 0)) || (defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0))
// Sanity check: make sure that enough space has been allocated by
// the caller.
- size_t address_size = sizeof (sockaddr_in) + sizeof (sockaddr);
- size_t space_in_use = message_block.wr_ptr () - message_block.base ();
- size_t total_size = message_block.size ();
- size_t available_space = total_size - space_in_use;
+ size_t address_size =
+#if defined (ACE_HAS_IPV6)
+ addr_family == AF_INET ? sizeof (sockaddr_in) : sizeof (sockaddr_in6);
+#else
+ sizeof (sockaddr_in);
+#endif /* ACE_HAS_IPV6 */
+ address_size += 16; // AcceptEx requires address size + 16 (minimum)
+ size_t available_space = message_block.space ();
size_t space_needed = bytes_to_read + 2 * address_size;
if (available_space < space_needed)
ACE_ERROR_RETURN ((LM_ERROR, ACE_LIB_TEXT ("Buffer too small\n")), -1);
@@ -2055,7 +2060,7 @@ ACE_WIN32_Asynch_Accept::accept (ACE_Message_Block &message_block,
// If the <accept_handle> is invalid, we will create a new socket.
if (accept_handle == ACE_INVALID_HANDLE)
{
- accept_handle = ACE_OS::socket (PF_INET,
+ accept_handle = ACE_OS::socket (addr_family,
SOCK_STREAM,
0);
if (accept_handle == ACE_INVALID_HANDLE)
@@ -2137,6 +2142,7 @@ ACE_WIN32_Asynch_Accept::accept (ACE_Message_Block &message_block,
ACE_UNUSED_ARG (act);
ACE_UNUSED_ARG (priority);
ACE_UNUSED_ARG (signal_number);
+ ACE_UNUSED_ARG (addr_family);
ACE_NOTSUP_RETURN (-1);
#endif /* (defined (ACE_HAS_WINNT4) && (ACE_HAS_WINNT4 != 0)) || (defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0)) || (defined (ACE_HAS_AIO_CALLS) */
}