summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>1998-05-21 04:01:17 +0000
committerSteve Huston <shuston@riverace.com>1998-05-21 04:01:17 +0000
commit86ffea8291b7773bbde4336fc10cf333c1f58154 (patch)
tree51317c375959831df9c66b5ff58480d2cdd10b68
parent5fa20cb58855b0901a32adecc31acdbb708e03f0 (diff)
downloadATCD-86ffea8291b7773bbde4336fc10cf333c1f58154.tar.gz
Trying to work around ACE::get_ip_interfaces problems on Win32 with dynamic
address assignment.
-rw-r--r--ace/SOCK_Dgram_Mcast.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/ace/SOCK_Dgram_Mcast.cpp b/ace/SOCK_Dgram_Mcast.cpp
index 43bd7cb4320..2601e6b0808 100644
--- a/ace/SOCK_Dgram_Mcast.cpp
+++ b/ace/SOCK_Dgram_Mcast.cpp
@@ -87,24 +87,34 @@ ACE_SOCK_Dgram_Mcast::subscribe (const ACE_INET_Addr &mcast_addr,
if (net_if == 0)
{
- ACE_INET_Addr *if_addrs;
+ ACE_INET_Addr *if_addrs = 0;
size_t if_cnt, nr_subscribed;
if (ACE::get_ip_interfaces(if_cnt, if_addrs) != 0)
return -1;
- for (nr_subscribed = 0; if_cnt > 0; )
+ if (if_cnt < 2)
{
- --if_cnt; // Convert to 0-based for indexing, and next loop check
- if (if_addrs[if_cnt].get_ip_address() == INADDR_LOOPBACK)
- continue;
if (this->subscribe(mcast_addr,
reuse_addr,
- ASYS_WIDE_STRING (if_addrs[if_cnt].get_host_addr()),
+ ASYS_WIDE_STRING ("0.0.0.0"),
protocol_family,
protocol) == 0)
++nr_subscribed;
}
+ else
+ for (nr_subscribed = 0; if_cnt > 0; )
+ {
+ --if_cnt; // Convert to 0-based for indexing, next loop check
+ if (if_addrs[if_cnt].get_ip_address() == INADDR_LOOPBACK)
+ continue;
+ if (this->subscribe(mcast_addr,
+ reuse_addr,
+ ASYS_WIDE_STRING (if_addrs[if_cnt].get_host_addr()),
+ protocol_family,
+ protocol) == 0)
+ ++nr_subscribed;
+ }
delete [] if_addrs;