From: Jeroen van der Heijden Date: Mon, 20 Jan 2020 13:21:06 +0000 (+0100) Subject: Fix api bugs X-Git-Tag: archive/raspbian/2.0.44-1+rpi1~1^2~3^2~5^2~27 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=90ef95bfda76ae1ede5160c7538ccd99ff9677bb;p=siridb-server.git Fix api bugs --- diff --git a/itest/test_http_api.py b/itest/test_http_api.py index 5967a0b7..ee39ad3e 100644 --- a/itest/test_http_api.py +++ b/itest/test_http_api.py @@ -34,6 +34,21 @@ class TestHTTPAPI(TestBase): async def run(self): await self.client0.connect() + x = requests.get( + f'http://localhost:9020/get-version', auth=('sa', 'siri')) + + self.assertEqual(x.status_code, 200) + v = x.json() + self.assertTrue(isinstance(v, list)) + self.assertTrue(isinstance(v[0], str)) + + x = requests.post( + f'http://localhost:9020/insert/dbtest', + auth=('iris', 'siri'), + headers={'Content-Type': 'application/json'}) + + self.assertEqual(x.status_code, 400) + series_float = gen_points( tp=float, n=10000, time_precision=TIME_PRECISION, ts_gap='5m') diff --git a/src/siri/api.c b/src/siri/api.c index 56315187..bd3cf5ac 100644 --- a/src/siri/api.c +++ b/src/siri/api.c @@ -168,11 +168,15 @@ static int api__headers_complete_cb(http_parser * parser) assert (!ar->buf); - ar->buf = malloc(parser->content_length); - if (ar->buf) + if (parser->content_length != ULLONG_MAX) { - ar->len = parser->content_length; + ar->buf = malloc(parser->content_length); + if (ar->buf) + { + ar->len = parser->content_length; + } } + return 0; } @@ -725,18 +729,22 @@ static int api__service_cb(http_parser * parser) switch (ar->content_type) { case SIRI_API_CT_TEXT: - return api__plain_response(ar, E415_UNSUPPORTED_MEDIA_TYPE); + if (ar->len) + return api__plain_response(ar, E415_UNSUPPORTED_MEDIA_TYPE); + ar->content_type = SIRI_API_CT_JSON; + break; case SIRI_API_CT_JSON: - { - char * dst; - size_t dst_n; - if (qpjson_json_to_qp(ar->buf, ar->len, &dst, &dst_n)) - return api__plain_response(ar, E400_BAD_REQUEST); - free(ar->buf); - ar->buf = dst; - ar->len = dst_n; + if (ar->len) + { + char * dst; + size_t dst_n; + if (qpjson_json_to_qp(ar->buf, ar->len, &dst, &dst_n)) + return api__plain_response(ar, E400_BAD_REQUEST); + free(ar->buf); + ar->buf = dst; + ar->len = dst_n; + } break; - } case SIRI_API_CT_QPACK: break; }