@@ -378,25 +378,6 @@ namespace Shadowsocks.Controller.Service
|
||||
private int _targetPort;
|
||||
private readonly Queue<string> _headers = new Queue<string>();
|
||||
|
||||
private bool ParseHost(string host)
|
||||
{
|
||||
var locs = host.Split(':');
|
||||
_targetHost = locs[0];
|
||||
if (locs.Length > 1)
|
||||
{
|
||||
if (!int.TryParse(locs[1], out _targetPort))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_targetPort = 80;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool OnLineRead(string line, object state)
|
||||
{
|
||||
if (_closed)
|
||||
@@ -422,9 +403,19 @@ namespace Shadowsocks.Controller.Service
|
||||
{
|
||||
_isConnect = true;
|
||||
|
||||
if (!ParseHost(m.Groups[2].Value))
|
||||
var location = m.Groups[2].Value;
|
||||
var locs = location.Split(':');
|
||||
_targetHost = locs[0];
|
||||
if (locs.Length > 1)
|
||||
{
|
||||
throw new Exception("Bad http header: " + line);
|
||||
if (!int.TryParse(locs[1], out _targetPort))
|
||||
{
|
||||
throw new Exception("Bad http header: " + line);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_targetPort = 80;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -440,9 +431,19 @@ namespace Shadowsocks.Controller.Service
|
||||
{
|
||||
if (line.StartsWith("Host: "))
|
||||
{
|
||||
if (!ParseHost(line.Substring(6).Trim()))
|
||||
var location = line.Substring(6).Trim();
|
||||
var locs = location.Split(':');
|
||||
_targetHost = locs[0];
|
||||
if (locs.Length > 1)
|
||||
{
|
||||
throw new Exception("Bad http header: " + line);
|
||||
if (!int.TryParse(locs[1], out _targetPort))
|
||||
{
|
||||
throw new Exception("Bad http header: " + line);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_targetPort = 80;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user