[System.ServiceModel] Don't use DateTime.Now for measuring elapsed time
[mono.git] / mcs / class / System.ServiceModel / System.ServiceModel.Channels / PeerChannelListener.cs
index f6851dc0f569de016d077e91a492495190716e7c..39303073f964c48c950304ef7dc5ab60313c6595 100755 (executable)
@@ -44,7 +44,6 @@ namespace System.ServiceModel.Channels
                PeerTransportBindingElement source;
                BindingContext context;
                TChannel channel;
-               MessageEncoder encoder;
                AutoResetEvent accept_handle = new AutoResetEvent (false);
 
                public PeerChannelListener (PeerTransportBindingElement source,
@@ -52,15 +51,15 @@ namespace System.ServiceModel.Channels
                        : base (context)
                {
                        this.source = source;
-                       foreach (BindingElement be in context.RemainingBindingElements) {
+                       foreach (BindingElement be in context.Binding.Elements) {
                                MessageEncodingBindingElement mbe = be as MessageEncodingBindingElement;
                                if (mbe != null) {
-                                       encoder = CreateEncoder<TChannel> (mbe);
+                                       MessageEncoder = CreateEncoder<TChannel> (mbe);
                                        break;
                                }
                        }
-                       if (encoder == null)
-                               encoder = new BinaryMessageEncoder ();
+                       if (MessageEncoder == null)
+                               MessageEncoder = new BinaryMessageEncoder ();
                }
 
                public PeerResolver Resolver { get; set; }
@@ -69,17 +68,13 @@ namespace System.ServiceModel.Channels
                        get { return source; }
                }
 
-               public MessageEncoder MessageEncoder {
-                       get { return encoder; }
-               }
-
                protected override TChannel OnAcceptChannel (TimeSpan timeout)
                {
-                       DateTime start = DateTime.Now;
+                       DateTime start = DateTime.UtcNow;
                        if (channel != null)
                                if (!accept_handle.WaitOne (timeout))
                                        throw new TimeoutException ();
-                       channel = PopulateChannel (timeout - (DateTime.Now - start));
+                       channel = PopulateChannel (timeout - (DateTime.UtcNow - start));
                        ((CommunicationObject) (object) channel).Closed += delegate {
                                this.channel = null;
                                accept_handle.Set ();