git/list[1] front-page[2] threads[3] people[4] search[5] about
 

URL decoding changed semantics of + in URLs

From
Thomas Rast <trast@student.ethz.ch>
Date
Jul 23, 2010, 13:18 UTC
Message-ID
<201007231518.31071.trast@student.ethz.ch>
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
Next: Thomas Rast
Message 1 of 18 in “URL decoding changed semantics of + in URLs”
  1. Thomas RastJul 23, 2010
  2. Thomas RastJul 23, 2010
  3. Ævar Arnfjörð BjarmasonJul 23, 2010
  4. Jasper St. PierreJul 23, 2010
  5. Do not unquote + into ' ' in URLsThomas Rast, Jul 23, 2010
  6. Ævar Arnfjörð BjarmasonJul 23, 2010
  7. Junio C HamanoJul 23, 2010
  8. Thomas RastJul 23, 2010
  9. Do not unquote + into ' ' in URLsThomas Rast, Jul 24, 2010
  10. Jasper St. PierreJul 31, 2010
  11. Thomas RastJul 31, 2010
  12. Ralf EbertAug 6, 2010
  13. Jeff KingJul 26, 2010
  14. Ævar Arnfjörð BjarmasonJul 26, 2010
  15. Jasper St. PierreJul 26, 2010
  16. Matthieu MoyJul 26, 2010
  17. Ævar Arnfjörð BjarmasonJul 26, 2010
  18. Jasper St. PierreJul 26, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.