Spark not properly unescaping XMPP URIs

The way which Spark parses XMPP URIs is incorrect. Take for example the following (correct) URL:

xmpp:%23synfig@freenode.irc.deepdarc.com?join

This URI should join the conference room #synfig@freenode.irc.deepdarc.com. Instead, Spark joins %23synfig@freenode.irc.deepdarc.com, which is incorrect.

The following URL is bad:

xmpp:#synfig@freenode.irc.deepdarc.com?join

The hash (#) symbol is reserved for the ID/target portion of the URL, thus this URL should either display an error message or be ignored. Instead, the Spark client joins #synfig@freenode.irc.deepdarc.com, which is incorrect behavior as well.

The URL parser needs to first extract each part of the URL, and then perform the URL unescaping. The parts of the URL are (to the best of my recolection):

xmpp://[LOCAL-JID]/[REMOTE-JID]?[QUERY]#[TARGET]

or

xmpp:[REMOTE-JID]?[QUERY]#[TARGET]

After the URL is broken up into those parts, each part individually should be unescaped.

On a slightly different note, one URL which will really, really confuse spark is the following:

xmpp:testroomblah@conference.jabber.org/bubba?join

Try saying something after joining that room. This must be a bug, although I’'m not exactly sure what the correct behavior should be. I believe that the correct behavior would be to join the room with the nick ‘‘bubba’’ instead of whatever default spark would otherwise use. (Someone should verify this in the JEP/RFC)

(BTW: Shouldn’'t this forum support linking to XMPP URLs?)

Isn’‘t this a bug? Shouldn’'t this be added to the issue tracker?

Hi,

this may be really a bug. Derek is now working on Spark 2.0.1 - actually I hope so - and there are as far as I know some problems which must be resolved, and this looks more like a “nice-2-have” issue. So if there is no response within 10 days please update this thread again.

LG

Oh, it’‘s definitely a bug, it’'s just that we are making more stability fixes for 2.0.1. The incorrect parsing of XMPP URIs will be in the 2.0.2 build. Will file and post.

-Derek