diff options
author | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-10-18 05:27:22 +0000 |
---|---|---|
committer | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-10-18 05:27:22 +0000 |
commit | 196862402f0fed640b52ec7090cf5ab828fc7811 (patch) | |
tree | 055c6a89ceef2839393693b833707e8f42520c9d | |
parent | 0678982f6289a6d2d5392af30bbb71a7690b261c (diff) |
introduce uri_decode() so that '+' are translated into ' '
(e.g. browsers do this when they encode input strings from a form).
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@45474 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | main/http.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/main/http.c b/main/http.c index d5d33f88b..5da224e35 100644 --- a/main/http.c +++ b/main/http.c @@ -99,6 +99,17 @@ static char *ftype2mtype(const char *ftype, char *wkspace, int wkspacelen) return wkspace; } +/* like ast_uri_decode, but replace '+' with ' ' */ +static char *uri_decode(char *buf) +{ + char *c; + ast_uri_decode(buf); + for (c = buf; *c; c++) { + if (*c == '+') + *c = ' '; + } + return buf; +} static char *static_callback(struct sockaddr_in *req, const char *uri, struct ast_variable *vars, int *status, char **title, int *contentlength) { char result[4096]; @@ -298,7 +309,7 @@ static char *handle_uri(struct sockaddr_in *sin, char *uri, int *status, char ** while ((val = strsep(¶ms, "&"))) { var = strsep(&val, "="); if (val) - ast_uri_decode(val); + uri_decode(val); else val = ""; ast_uri_decode(var); |