Merge branch 'master' of https://github.com/mono/mono into issue4328
[mono.git] / mcs / class / System.ServiceModel / System.ServiceModel.Channels.Http / HttpListenerManager.cs
index 2c6c1a803bf0b2a5913b86b662dca67659587740..b3c3fe2c85d8ea26bdd2f7044c13936e6e1aa4c1 100644 (file)
@@ -96,11 +96,12 @@ namespace System.ServiceModel.Channels.Http
                        lock (ce.RetrieverLock) {
                                var q = ce.ContextQueue;
                                if (q.Count == 0) {
+                                       if (timeout.TotalMilliseconds < 0) return false;
                                        TimeSpan waitTimeout = timeout;
                                        if (timeout == TimeSpan.MaxValue)
                                                waitTimeout = TimeSpan.FromMilliseconds (int.MaxValue);
                                        bool ret = ce.WaitHandle.WaitOne (waitTimeout);
-                                       return ret && TryDequeueRequest (channel, timeout - (DateTime.Now - start), out context); // recurse, am lazy :/
+                                       return ret && TryDequeueRequest (channel, waitTimeout - (DateTime.Now - start), out context); // recurse, am lazy :/
                                }
                                context = q.Dequeue ();
                                return true;