From d65b1d9eba2ee8ff28df39fc7f909d90a672eaac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20P=C3=A4tzold?= Date: Tue, 3 Dec 2019 16:42:13 +0100 Subject: [PATCH] Fix: Erroneous calculation of content-length can result in errors on client-side due to chopping of JSON reponse in certain situations (problem related to character encoding) --- .../main/java/graphql/servlet/SingleQueryResponseWriter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/graphql-java-servlet/src/main/java/graphql/servlet/SingleQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/servlet/SingleQueryResponseWriter.java index 33475a11..3073062c 100644 --- a/graphql-java-servlet/src/main/java/graphql/servlet/SingleQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/servlet/SingleQueryResponseWriter.java @@ -6,6 +6,8 @@ import graphql.ExecutionResult; import graphql.kickstart.execution.GraphQLObjectMapper; import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -21,7 +23,7 @@ public void write(HttpServletRequest request, HttpServletResponse response) thro response.setContentType(APPLICATION_JSON_UTF8); response.setStatus(STATUS_OK); String responseContent = graphQLObjectMapper.serializeResultAsJson(result); - response.setContentLength(responseContent.length()); + response.setContentLength(responseContent.getBytes(StandardCharsets.UTF_8).length); response.getWriter().write(responseContent); }