internal async Task ProcessAsync() { var reader = new StreamReader(client.GetInputStream()); StringBuilder request = await ReadRequest(reader); var localEndpoint = client.LocalEndPoint; var remoteEnpoint = client.RemoteEndPoint; // This code needs to be rewritten and simplified. var requestLines = request.ToString().Split('\n'); string requestMethod = requestLines[0].TrimEnd('\r'); string[] requestParts = requestMethod.Split(' '); LocalEndpoint = (IPEndPoint)localEndpoint; RemoteEndpoint = (IPEndPoint)remoteEnpoint; var lines = request.ToString().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); ParseHeaders(lines); ParseRequestLine(lines); await PrepareInputStream(reader); }