private bool Handler(string method, string uri, HttpHeaders headers, SocketReader reader, Socket socket)
        {
            if (_handlers.Count == 0)
            {
                return(false);
            }

            string path, querystring;
            int    qindex = uri.IndexOf('?');

            if (qindex < 0)
            {
                path        = uri;
                querystring = null;
            }
            else
            {
                path        = uri.Substring(0, qindex);
                querystring = qindex == (uri.Length - 1) ? "" : uri.Substring(qindex + 1);
            }

            MemoryStream requestBodyStream = new MemoryStream();

            byte[] buffer = new byte[8192];
            int    bytesRead;

            while (0 != (bytesRead = reader.Read(buffer, 0, buffer.Length)))
            {
                requestBodyStream.Write(buffer, 0, bytesRead);
            }
            requestBodyStream.Seek(0, SeekOrigin.Begin);

            Stream readOnlyRequestBodyStream = new ReadOnlyStream(requestBodyStream);

            readOnlyRequestBodyStream.Seek(0, SeekOrigin.Begin);

            Request  request  = new Request(method, path, querystring, headers, readOnlyRequestBodyStream);
            Response response = new Response(new MemoryStream());

            if (StartFilter.Filter(request, response))
            {
                response.Stream.Seek(0, SeekOrigin.Begin);
                StreamHelper.Transfer(response.Stream, new SocketStream(socket, false));
                return(true);
            }
            return(false);
        }
		private bool Handler(string method, string uri, HttpHeaders headers, SocketReader reader, Socket socket)
		{
			if (_handlers.Count == 0)
				return false;
			
			string path, querystring;
			int qindex = uri.IndexOf('?');
			if (qindex < 0)
			{
				path = uri;
				querystring = null;
			}
			else
			{
				path = uri.Substring(0, qindex);
				querystring = qindex == (uri.Length - 1) ? "" : uri.Substring(qindex + 1);
			}
			
			MemoryStream requestBodyStream = new MemoryStream();
			byte[] buffer = new byte[8192];
			int bytesRead;
			while (0 != (bytesRead = reader.Read(buffer, 0, buffer.Length)))
			{
				requestBodyStream.Write(buffer, 0, bytesRead);
			}
			requestBodyStream.Seek(0, SeekOrigin.Begin);
			
			Stream readOnlyRequestBodyStream = new ReadOnlyStream(requestBodyStream);
			readOnlyRequestBodyStream.Seek(0, SeekOrigin.Begin);

			Request request = new Request(method, path, querystring, headers, readOnlyRequestBodyStream);
			Response response = new Response(new MemoryStream());
			if (StartFilter.Filter(request, response))
			{
				response.Stream.Seek(0, SeekOrigin.Begin);
				StreamHelper.Transfer(response.Stream, new SocketStream(socket, false));
				return true;
			}
			return false;
		}