$NetBSD: patch-aa,v 1.2 2006/04/20 18:34:07 is Exp $ --- session.c.orig Sat Jun 29 21:27:04 2002 +++ session.c @@ -185,7 +185,7 @@ unsigned char *encode_url(unsigned char int l = 0; for (; *url; url++) { if (is_safe_in_shell(*url) && *url != '+') add_chr_to_str(&u, &l, *url); - else add_chr_to_str(&u, &l, '+'), add_chr_to_str(&u, &l, hx(*url >> 4)), add_chr_to_str(&u, &l, hx(*url & 0xf)); + else add_chr_to_str(&u, &l, '%'), add_chr_to_str(&u, &l, hx(*url >> 4)), add_chr_to_str(&u, &l, hx(*url & 0xf)); } return u; } @@ -195,7 +195,7 @@ unsigned char *decode_url(unsigned char unsigned char *u = init_str(); int l = 0; for (; *url; url++) { - if (*url != '+' || unhx(url[1]) == -1 || unhx(url[2]) == -1) add_chr_to_str(&u, &l, *url); + if (*url != '%' || unhx(url[1]) == -1 || unhx(url[2]) == -1) add_chr_to_str(&u, &l, *url); else add_chr_to_str(&u, &l, (unhx(url[1]) << 4) + unhx(url[2])), url += 2; } return u; @@ -2047,6 +2047,13 @@ void goto_url_f(struct session *ses, voi /* this doesn't send referer */ void goto_url(struct session *ses, unsigned char *url) { + char *p; + p = url + strlen(url); + do { + --p; + } while (isspace(*p)); + *++p = 0; + goto_url_f(ses, NULL, url, NULL, NULL, -1, 0, 1, 0); }