Merge pull request #2417 from razzfazz/guard_substr
[mono.git] / mcs / class / corlib / System.Runtime.Remoting / ServerIdentity.cs
index 765b8c040787f0f3e7ac6a247fee6226627ceafb..1e075d88b3647f9f3941970a7d57ed6dbc415d87 100644 (file)
@@ -34,6 +34,7 @@ using System.Runtime.Remoting.Messaging;
 using System.Runtime.Remoting.Contexts;
 using System.Runtime.Remoting.Lifetime;
 using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Services;
 
 namespace System.Runtime.Remoting
 {
@@ -103,6 +104,8 @@ namespace System.Runtime.Remoting
 
                public void AttachServerObject (MarshalByRefObject serverObject, Context context)
                {
+                       DisposeServerObject();
+
                        _context = context;
                        _serverObject = serverObject;
                        
@@ -141,8 +144,11 @@ namespace System.Runtime.Remoting
                        // object is marshalled again.
                        
                        if (_serverObject != null) {
+                               MarshalByRefObject obj = _serverObject;
                                _serverObject.ObjectIdentity = null;
                                _serverObject = null;
+                               _serverSink = null;
+                               TrackingServices.NotifyDisconnectedObject (obj);
                        }
                }
        }