in src/main/csharp/Protocol/StompFrame.cs [330:375]
private String DecodeHeader(String header)
{
MemoryStream decoded = new MemoryStream();
int value = -1;
byte[] utf8buf = this.encoding.GetBytes(header);
MemoryStream stream = new MemoryStream(utf8buf);
while((value = stream.ReadByte()) != -1)
{
if(value == 92)
{
int next = stream.ReadByte();
if (next != -1)
{
switch(next) {
case 110:
decoded.WriteByte(BREAK);
break;
case 99:
decoded.WriteByte(COLON);
break;
case 92:
decoded.WriteByte(ESCAPE);
break;
default:
stream.Seek(-1, SeekOrigin.Current);
decoded.WriteByte((byte)value);
break;
}
}
else
{
decoded.WriteByte((byte)value);
}
}
else
{
decoded.WriteByte((byte)value);
}
}
byte[] data = decoded.ToArray();
return encoding.GetString(data, 0, data.Length);
}