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 10672f9beaa0c06d31dfe94bbb23013fb13e930a..77c0463f46763ea4950402fa013a599e2a12d58a 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 48ef6b65018e8ea2d50514fff99aafb7f0fc2f48..4a97e904709e148a696c83f8d83cb7b3f0902196 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