smiley22 / S22.Xmpp

S22.Xmpp is an easy-to-use and well-documented .NET assembly for communicating with an XMPP server. It supports basic Instant Messaging and Presence funtionality as well as a variety of XMPP extensions.
MIT License
54 stars 91 forks source link

Domain Label contains illegal character ':' #12

Open MashalRashid opened 6 years ago

MashalRashid commented 6 years ago

I am using Sharp.XMPP library for FCM. I can connect fine and it receives Upstream messages without issues. However, sending ack returns with Error Code 400 with following details

<JIDMalformed xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
<text>"Malformed JID 'XXXXXX:XXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXX_XXXXX_XXXXX-XXXXXXXXXXXXXXXXXXX': domain label contains illegal character ':'"</text>

whereas the Xs replace the device registration token from which the Upstream message was received. The code I'm using to form a message and send:

Sharp.Xmpp.Im.Message x = new Sharp.Xmpp.Im.Message(vFrom);
x.Data.SetAttribute("message_id", vMessageID);
x.Data.SetAttribute("message_type", "ack");
cl.SendMessage(x);

The string vFrom contains the device_token. I can not replace : as it is an essential part of device token and \: does not escape it either. Hexadecimal equivalents don't work. What is the correct way of using colon or other special characters in here?