diff options
author | Gonzalo Paniagua Javier <gonzalo.mono@gmail.com> | 2009-06-17 19:26:34 +0400 |
---|---|---|
committer | Gonzalo Paniagua Javier <gonzalo.mono@gmail.com> | 2009-06-17 19:26:34 +0400 |
commit | 497ee8788b3b68022aa34154538adb033aecbbc2 (patch) | |
tree | 6afbda15564e96653421a97c742d8080ea0ad663 | |
parent | 0bdac5d044811d85c402a8254d836fbc1db329c9 (diff) |
2009-06-17 Gonzalo Paniagua Javier <gonzalo@novell.com>
* EndPointListener.cs: call CheckIfRemove() after removing a regular
prefix. Fixes bug #513849.
* EndPointManager.cs: make sure we use the right lock when one prefix
of a collection fails to be added and we need to remove all of the
prefixes.
Clear the ip_to_endpoints hashtable if there are no more prefixes
listening on that address.
svn path=/branches/mono-2-4-2/mcs/; revision=136322
-rw-r--r-- | mcs/class/System/System.Net/ChangeLog | 10 | ||||
-rw-r--r-- | mcs/class/System/System.Net/EndPointListener.cs | 1 | ||||
-rw-r--r-- | mcs/class/System/System.Net/EndPointManager.cs | 5 |
3 files changed, 15 insertions, 1 deletions
diff --git a/mcs/class/System/System.Net/ChangeLog b/mcs/class/System/System.Net/ChangeLog index 0c89d983530..d03db9e75ab 100644 --- a/mcs/class/System/System.Net/ChangeLog +++ b/mcs/class/System/System.Net/ChangeLog @@ -1,3 +1,13 @@ +2009-06-17 Gonzalo Paniagua Javier <gonzalo@novell.com> + + * EndPointListener.cs: call CheckIfRemove() after removing a regular + prefix. Fixes bug #513849. + * EndPointManager.cs: make sure we use the right lock when one prefix + of a collection fails to be added and we need to remove all of the + prefixes. + Clear the ip_to_endpoints hashtable if there are no more prefixes + listening on that address. + 2009-06-05 Robert Jordan <robertj@gmx.net> * WebClient.cs (UploadValuesCore): Encode POST arguments with UTF-8. diff --git a/mcs/class/System/System.Net/EndPointListener.cs b/mcs/class/System/System.Net/EndPointListener.cs index 23aff2518c2..16f4ea0e331 100644 --- a/mcs/class/System/System.Net/EndPointListener.cs +++ b/mcs/class/System/System.Net/EndPointListener.cs @@ -307,6 +307,7 @@ namespace System.Net { if (prefixes.ContainsKey (prefix)) { prefixes.Remove (prefix); + CheckIfRemove (); } } } diff --git a/mcs/class/System/System.Net/EndPointManager.cs b/mcs/class/System/System.Net/EndPointManager.cs index ea33ff93701..33c5940b432 100644 --- a/mcs/class/System/System.Net/EndPointManager.cs +++ b/mcs/class/System/System.Net/EndPointManager.cs @@ -52,7 +52,7 @@ namespace System.Net { } } catch { foreach (string prefix in added) { - RemovePrefixInternal (prefix, listener); + RemovePrefix (prefix, listener); } throw; } @@ -107,6 +107,9 @@ namespace System.Net { Hashtable p = null; p = (Hashtable) ip_to_endpoints [ep.Address]; p.Remove (ep.Port); + if (p.Count == 0) { + ip_to_endpoints.Remove (ep.Address); + } epl.Close (); } } |