static Dictionary<string, string> DeserializeMessageHeaders(Message m)
{
var result = new Dictionary<string, string>();
if (m.Extension.Length == 0)
{
return result;
}
//This is to make us compatible with v3 messages that are affected by this bug:
//http://stackoverflow.com/questions/3779690/xml-serialization-appending-the-0-backslash-0-or-null-character
var extension = Encoding.UTF8.GetString(m.Extension).TrimEnd('\0');
object o;
using (var stream = new StringReader(extension))
{
using (var reader = XmlReader.Create(stream, new XmlReaderSettings
{
CheckCharacters = false
}))
{
o = headerSerializer.Deserialize(reader);
}
}
foreach (var pair in (List<HeaderInfo>)o)
{
if (pair.Key != null)
{
result.Add(pair.Key, pair.Value);
}
}
return result;
}