예제 #1
0
        IEnumerable <ByteBuffer> ResponseFinishedCallback()
        {
            IBaseWatcher handler = null;

            handler = Server.Context.CreateIdleWatcher(delegate {
                handler.Dispose();
                responseFinished = true;
                bool disconnect  = true;

                if (!NoKeepAlive)
                {
                    string dis;
                    if (Request.MinorVersion > 0 && Request.Headers.TryGetValue("Connection", out dis))
                    {
                        disconnect = (dis == "close");
                    }
                }

                if (disconnect)
                {
                    Socket.Close();
                    if (wantClose)
                    {
                        Close();
                    }
                }
                else
                {
                    responseFinished = false;
                    wantClose        = false;
                    Request.Read(Close);
                }
            });
            handler.Start();
            yield break;
        }
예제 #2
0
        IEnumerable<ByteBuffer> ResponseFinishedCallback()
        {
            if (handler != null) {
                handler.Dispose ();
            }
            handler = Server.Context.CreateIdleWatcher (delegate {
                handler.Dispose ();
                responseFinished = true;
                bool disconnect = true;

                if (!NoKeepAlive) {
                    string dis;
                    if (Request.MinorVersion > 0 && Request.Headers.TryGetValue ("Connection", out dis))
                        disconnect = (dis == "close");
                }

                if (disconnect) {
                    Socket.Close ();
                    if (wantClose) {
                        Close ();
                    }
                } else {
                    responseFinished = false;
                    wantClose = false;
                    Request.Read (Close);
                }
            });
            handler.Start ();
            yield break;
        }