summaryrefslogtreecommitdiff
path: root/main/http.c
diff options
context:
space:
mode:
authorScott Griepentrog <sgriepentrog@digium.com>2014-03-18 15:45:04 +0000
committerScott Griepentrog <sgriepentrog@digium.com>2014-03-18 15:45:04 +0000
commiteecb74a9a730a87bcbbe0cba5b961e7e457d0968 (patch)
treec74c9dd0a504c82dab46d86c4c3ad9cb755d62d1 /main/http.c
parent77db94a25a39754f7d79b46e3067bc28376a2865 (diff)
ARI: allow json content type with zero length body
When a request was received with a Content-type of json, the body was sent for json parsing - even if it was zero length. This resulted in ARI requests failing that were valid, such as a channel DELETE with no parameters. The code has now been changed to skip json parsing with zero content length. (closes issue SWP-6748) Reported by: Samuel Galarneau Review: https://reviewboard.asterisk.org/r/3360/ ........ Merged revisions 410858 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@410863 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/http.c')
-rw-r--r--main/http.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/main/http.c b/main/http.c
index 0e45b60db..e2982a73b 100644
--- a/main/http.c
+++ b/main/http.c
@@ -880,12 +880,16 @@ struct ast_json *ast_http_get_json(
}
buf = ast_http_get_contents(&content_length, ser, headers);
- if (buf == NULL)
- {
+ if (buf == NULL) {
/* errno already set */
return NULL;
}
+ if (!content_length) {
+ /* it is not an error to have zero content */
+ return NULL;
+ }
+
body = ast_json_load_buf(buf, content_length, NULL);
if (body == NULL) {
/* Failed to parse JSON; treat as an I/O error */