Skip to content

Commit 58c2c3c

Browse files
For registered binary content types, skip the
utf-8 scan
1 parent bc41b93 commit 58c2c3c

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletResponseWriter.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.amazonaws.serverless.exceptions.InvalidResponseObjectException;
1717
import com.amazonaws.serverless.proxy.ResponseWriter;
18+
import com.amazonaws.serverless.proxy.internal.LambdaContainerHandler;
1819
import com.amazonaws.serverless.proxy.internal.testutils.Timer;
1920
import com.amazonaws.serverless.proxy.model.AwsProxyResponse;
2021
import com.amazonaws.services.lambda.runtime.Context;
@@ -39,7 +40,7 @@ public AwsProxyResponse writeResponse(AwsHttpServletResponse containerResponse,
3940
if (containerResponse.getAwsResponseBodyString() != null) {
4041
String responseString;
4142

42-
if (isValidUtf8(containerResponse.getAwsResponseBodyBytes())) {
43+
if (!isBinary(containerResponse.getContentType()) && isValidUtf8(containerResponse.getAwsResponseBodyBytes())) {
4344
responseString = containerResponse.getAwsResponseBodyString();
4445
} else {
4546
responseString = Base64.getMimeEncoder().encodeToString(containerResponse.getAwsResponseBodyBytes());
@@ -55,4 +56,8 @@ public AwsProxyResponse writeResponse(AwsHttpServletResponse containerResponse,
5556
Timer.stop("SERVLET_RESPONSE_WRITE");
5657
return awsProxyResponse;
5758
}
59+
60+
private boolean isBinary(String contentType) {
61+
return contentType == null ? false : LambdaContainerHandler.getContainerConfig().isBinaryContentType(contentType);
62+
}
5863
}

0 commit comments

Comments
 (0)