コード例 #1
0
ファイル: HttpConnection.cs プロジェクト: mikem8361/runtime
        internal void Close(bool force)
        {
            if (_socket != null)
            {
                GetResponseStream()?.Close();

                _responseStream = null;
            }

            if (_socket != null)
            {
                force |= !_context.Request.KeepAlive;
                if (!force)
                {
                    force = (_context.Response.Headers[HttpKnownHeaderNames.Connection] == HttpHeaderStrings.Close);
                }

                if (!force && _context.Request.FlushInput())
                {
                    if (_chunked && _context.Response.ForceCloseChunked == false)
                    {
                        // Don't close. Keep working.
                        _reuses++;
                        Unbind();
                        Init();
                        BeginReadRequest();
                        return;
                    }

                    _reuses++;
                    Unbind();
                    Init();
                    BeginReadRequest();
                    return;
                }

                Socket s = _socket;
                _socket = null;
                try
                {
                    s?.Shutdown(SocketShutdown.Both);
                }
                catch
                {
                }
                finally
                {
                    s?.Close();
                }
                Unbind();
                RemoveConnection();
                return;
            }
        }
コード例 #2
0
 private void Init()
 {
     _contextBound   = false;
     _requestStream  = null;
     _responseStream = null;
     _prefix         = null;
     _chunked        = false;
     _memoryStream   = new MemoryStream();
     _position       = 0;
     _inputState     = InputState.RequestLine;
     _lineState      = LineState.None;
     _context        = new HttpListenerContext(this);
 }
コード例 #3
0
        public HttpResponseStream GetResponseStream()
        {
            if (_responseStream == null)
            {
                HttpListener?listener = _context._listener;

                if (listener == null)
                {
                    return(new HttpResponseStream(_stream, _context.Response, true));
                }

                _responseStream = new HttpResponseStream(_stream, _context.Response, listener.IgnoreWriteExceptions);
            }
            return(_responseStream);
        }