fix header parsing
This commit is contained in:
parent
8f53ab3249
commit
2906470ea4
@ -35,6 +35,7 @@ namespace HttpServer
|
||||
{
|
||||
key = headerLine.Substring(0, index).Trim();
|
||||
value = headerLine.Substring(index + 1).Trim();
|
||||
return;
|
||||
}
|
||||
throw new IOException("Invalid header");
|
||||
}
|
||||
@ -61,12 +62,14 @@ namespace HttpServer
|
||||
byte[]? body = null;
|
||||
var io = tcp.GetStream();
|
||||
var first = true;
|
||||
//var lines = LineReader.ReadLines(io);
|
||||
foreach (var line in LineReader.ReadLines(io))
|
||||
{
|
||||
if (first)
|
||||
{
|
||||
path = ParseRequestStatusLine(line);
|
||||
first = false;
|
||||
continue;
|
||||
}
|
||||
ParseHeader(line, out string headerName, out string headerValue);
|
||||
var values = headers.GetValueOrDefault(headerName, new List<string>());
|
||||
|
@ -56,7 +56,6 @@ namespace HttpServer
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Debug(ex, ex.Message);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
@ -1,8 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using TraceLog;
|
||||
|
||||
namespace HttpServer
|
||||
{
|
||||
@ -10,6 +10,9 @@ namespace HttpServer
|
||||
{
|
||||
internal static IEnumerable<string> ReadLines(Stream stream)
|
||||
{
|
||||
//try
|
||||
//{
|
||||
// var lines = new List<string>();
|
||||
var buffer = new StringBuilder();
|
||||
while (true)
|
||||
{
|
||||
@ -18,10 +21,19 @@ namespace HttpServer
|
||||
if (x == '\n')
|
||||
{
|
||||
if (buffer.Length == 0) yield break;
|
||||
yield return buffer.ToString();
|
||||
var line = buffer.ToString();
|
||||
buffer = new StringBuilder();
|
||||
yield return line;
|
||||
}
|
||||
if (x != '\r') buffer.Append((char)x);
|
||||
else if (x != '\r') buffer.Append((char)x);
|
||||
}
|
||||
//return lines;
|
||||
//}
|
||||
//catch (Exception e)
|
||||
//{
|
||||
// Log.Debug(e, "Error parsing headers");
|
||||
// throw e;
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
32
app/XDM/XDM_Tests/NanoServerTests.cs
Normal file
32
app/XDM/XDM_Tests/NanoServerTests.cs
Normal file
@ -0,0 +1,32 @@
|
||||
using HttpServer;
|
||||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace XDM.SystemTests
|
||||
{
|
||||
class NanoServerTests
|
||||
{
|
||||
[Test]
|
||||
public void TestServer()
|
||||
{
|
||||
var me = new ManualResetEvent(false);
|
||||
var server = new NanoServer(IPAddress.Loopback, 5454);
|
||||
server.RequestReceived += (a, b) =>
|
||||
{
|
||||
me.Set();
|
||||
};
|
||||
server.Start();
|
||||
//new Thread(() => server.Start());
|
||||
//Thread.Sleep(200000000);
|
||||
////var wr = WebRequest.CreateHttp("http://127.0.0.1:5454/hello");
|
||||
////wr.GetResponse().GetResponseStream().Close();
|
||||
//me.WaitOne();
|
||||
}
|
||||
}
|
||||
}
|
@ -19,6 +19,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\HttpServer\HttpServer.csproj" />
|
||||
<ProjectReference Include="..\MediaParser.Hls\MediaParser.csproj" />
|
||||
<ProjectReference Include="..\MockServer\MockServer.csproj" />
|
||||
<ProjectReference Include="..\XDM_CoreFx\XDM.Core.csproj" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user