diff --git a/gns3server/web/route.py b/gns3server/web/route.py index 4f9da445..5912e8f9 100644 --- a/gns3server/web/route.py +++ b/gns3server/web/route.py @@ -35,11 +35,11 @@ from ..config import Config @asyncio.coroutine -def parse_request(request, input_schema): +def parse_request(request, input_schema, raw): """Parse body of request and raise HTTP errors in case of problems""" content_length = request.content_length - if content_length is not None and content_length > 0 and input_schema: + if content_length is not None and content_length > 0 and not raw: body = yield from request.read() try: request.json = json.loads(body.decode('utf-8')) @@ -176,7 +176,7 @@ class Route(object): if api_version is None or raw is True: response = Response(request=request, route=route, output_schema=output_schema) - request = yield from parse_request(request, None) + request = yield from parse_request(request, None, raw) yield from func(request, response) return response @@ -184,7 +184,7 @@ class Route(object): if "controller" in func.__module__ and server_config.getboolean("controller", False) is False: raise aiohttp.web.HTTPForbidden(text="The server is not a controller") - request = yield from parse_request(request, input_schema) + request = yield from parse_request(request, input_schema, raw) record_file = server_config.get("record") if record_file: try: