Comment 9 for bug 1329202

That is exactly like i would expect that it is right now.

At this point libShout is using HTTP, and so he mount should be escaped, i agree.
If Mixx does this by escaping the string before passing it to libShout, that problem would be solved.

But i also means, that libshout will always use the escaped name. The question i ask is, if this is correct wenn you do initialy set the source.

static int create_http_request(shout_t *self)
 char *auth;
 char *ai;

 /* this is lazy code that relies on the only error from queue_* being
 do {
  if (queue_printf(self, "SOURCE %s HTTP/1.0\r\n", self->mount))
I think that is not the case.

FIrstly: I'd say encoding would be wrong here, because the resource name is "/live?stream_id=1&tracking=2" and not "live%3Fstream_id%3D1%26tracking%3D2" (i have striped"/" here).
I suspect it would not connect to / create the correct (or better desired) mount on the server.
Kevin already described this already in an way, when he said that this " requires listeners to escape the characters in the URI"

Secondly: Encoded values are decoded somewhere (thats the point isn't it? :) ), and would result in the original string which now (again) does not exist because we've specified another name when connecting..

I'll come back to what i said: i think the expected behavior is achieved when encoding in libShout (for the metadataupdateurl only).

I am saying expected behavior because according to

(Did not find something REALLY official on the icecast website)

"The mountpoint itself is specified as the path part of the URL." - no mention of query parameters. But that doesn't mean that some hoster build something around it, which requires these parameters. I looked around on spreaker (a a mentioned example) a bit, and to me it looks like they use something thats just like close enough to icecast so that most of it works already out of the box.