]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
Make buf_append_urlencoded() percent-encode fewer characters.
authorDaniel Lenski <dlenski@gmail.com>
Sun, 16 Oct 2016 19:37:58 +0000 (12:37 -0700)
committerDavid Woodhouse <dwmw2@infradead.org>
Tue, 13 Dec 2016 11:46:09 +0000 (11:46 +0000)
Per RFC 3986, the characters '-', '_', '.', '~' don't need to be
percent-encoded anywhere in a URL or query string.

Removed special case for ' ' → '+' to prevent incompatibility with ocserv:
http://lists.infradead.org/pipermail/openconnect-devel/2016-October/004042.html

/* else if (c==' ')
buf_append_bytes(buf, "+", 1); */

Signed-off-by: Dan Lenski <dlenski@gmail.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
http.c

diff --git a/http.c b/http.c
index 28bac5aac7113254132ef3712160886eb126dc4e..6166bb3a178aa88476574d5e9cde62ccbf524eb0 100644 (file)
--- a/http.c
+++ b/http.c
@@ -45,7 +45,7 @@ void buf_append_urlencoded(struct oc_text_buf *buf, const char *str)
 {
        while (str && *str) {
                unsigned char c = *str;
-               if (c < 0x80 && isalnum((int)(c)))
+               if (c < 0x80 && (isalnum((int)(c)) || c=='-' || c=='_' || c=='.' || c=='~'))
                        buf_append_bytes(buf, str, 1);
                else
                        buf_append(buf, "%%%02x", c);