From e1bf67e0500c109a09662d684e92fe622c08df60 Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Wed, 29 Sep 2010 21:58:56 +0900 Subject: [PATCH] [wcf-discovery] ExclusiveAddressUse won't work. AcceptChannel() should nreturn null when it is being closed. --- .../System.ServiceModel.Discovery.Udp/UdpChannelListener.cs | 2 ++ .../System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelListener.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelListener.cs index 10672f9beaa..77c0463f467 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelListener.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelListener.cs @@ -98,6 +98,8 @@ namespace System.ServiceModel.Discovery.Udp if (!accept_wait_handle.WaitOne (timeout)) throw new TimeoutException (); accept_wait_handle.Reset (); + if (State != CommunicationState.Opened) + return null; // happens during Close() or Abort(). channel = new UdpDuplexChannel (this); channel.Closed += delegate { accept_wait_handle.Set (); diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs index 48ef6b65018..4a97e904709 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs @@ -252,7 +252,6 @@ if (result == null) throw new ArgumentNullException ("result"); if (isMulticast) { multicast_address = ip; client = new UdpClient (new IPEndPoint (IPAddress.Any, port)); - client.ExclusiveAddressUse = false; client.JoinMulticastGroup (ip, binding_element.TransportSettings.TimeToLive); } else -- GitLab