Fix connecting on XMLSocket-

This commit is contained in:
Li 2022-11-20 12:47:18 +13:00
parent 44ada661d7
commit f716fedec5
7 changed files with 19 additions and 28 deletions

View file

@ -13,7 +13,7 @@ namespace HISP.Server.Network
get
{
if(actualTransport == null)
return "TransportDeterminer";
return "Hybrid";
else
return actualTransport.Name;
}
@ -60,7 +60,7 @@ namespace HISP.Server.Network
if (ConfigReader.EnableWebSocket && WebSocket.IsStartOfHandshake(buffer))
{
Logger.InfoPrint(this.Ip + " Switching to WebSocket");
Logger.DebugPrint(this.Ip + " Switching to WebSocket");
actualTransport = new WebSocket();
actualTransport.passObjects(this.socket, this.onReceiveCallback, this.onDisconnectCallback);
@ -69,7 +69,7 @@ namespace HISP.Server.Network
}
else
{
Logger.InfoPrint(this.Ip + " Switching to XmlSocket");
Logger.DebugPrint(this.Ip + " Switching to XmlSocket");
actualTransport = new XmlSocket();
actualTransport.passObjects(this.socket, this.onReceiveCallback, this.onDisconnectCallback);

View file

@ -10,6 +10,7 @@ namespace HISP.Server.Network
{
private List<byte> currentPacket = new List<byte>();
private const byte XMLSOCKET_PACKET_TERMINATOR = 0x00;
private static byte[] XMLSOCKET_POLICY_FILE = Encoding.UTF8.GetBytes("<policy-file-request/>");
public override void ProcessReceivedPackets(int available, byte[] buffer)
{
// In XmlSocket Packets are terminates by 0x00 so we have to read until we receive that terminator
@ -18,17 +19,17 @@ namespace HISP.Server.Network
{
if (buffer[i] == XMLSOCKET_PACKET_TERMINATOR) // Read until \0...
{
onReceiveCallback(currentPacket.ToArray());
byte[] packet = currentPacket.ToArray();
if (Helper.ByteArrayStartsWith(packet, XMLSOCKET_POLICY_FILE))
this.Send(CrossDomainPolicy.GetPolicyFile());
onReceiveCallback(packet);
currentPacket.Clear();
continue;
}
currentPacket.Add(buffer[i]);
}
// Handle XMLSocket Policy File
if (Helper.ByteArrayStartsWith(buffer, Encoding.UTF8.GetBytes("<policy-file-request/>")))
{
this.Send(CrossDomainPolicy.GetPolicyFile());
}
}
public override string Name