Subject: URL decoding changed semantics of + in URLs

From: Thomas Rast <[email-masked]>
Date: Fri, 23 Jul 2010 15:18:30 +0200

Hi Jeff

As pointed out by Jasper St. Pierre on #git, it is no longer possible
to clone

  git://git.gnome.org/gtk+

because your 9d2e942 (decode file:// and ssh:// URLs, 2010-05-23)
decodes + characters in URLs to spaces in the http style.  It was
later fixed by ce83eda (url.c: "<scheme>://" part at the beginning
should not be URL decoded, 2010-06-23) but the later part of the url
still decodes + as space.

The tests that go along with the commit make it clear that it was an
intended change.  But the interesting thing is, I cannot find any
reference in any RFC that + must have this meaning.  In particular,

  http://www.ietf.org/rfc/rfc2396.txt

doesn't say much about + and the only escaping defined is the usual
%xx style.  So is there a standard that mandates this, or was it just
a well-meaning but unnecessary backwards incompatible change?

-- 
Thomas Rast
trast@{inf,student}.ethz.ch