mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-21 20:25:51 +12:00
Fix connecting on XMLSocket-
This commit is contained in:
parent
44ada661d7
commit
f716fedec5
7 changed files with 19 additions and 28 deletions
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue