From d5daa8e3a70ebbe2f8fb429460c818a9e3958184 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 2 Feb 2017 20:01:10 +0100 Subject: [PATCH] Skip default Content-Length if Transfer-Encoding header has been set Issue: SPR-15212 (cherry picked from commit 9b3131f) --- .../http/converter/AbstractHttpMessageConverter.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java index e990fcd774b..3bcf3785239 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -96,7 +96,7 @@ public abstract class AbstractHttpMessageConverter implements HttpMessageConv * Set the list of {@link MediaType} objects supported by this converter. */ public void setSupportedMediaTypes(List supportedMediaTypes) { - Assert.notEmpty(supportedMediaTypes, "'supportedMediaTypes' must not be empty"); + Assert.notEmpty(supportedMediaTypes, "MediaType List must not be empty"); this.supportedMediaTypes = new ArrayList(supportedMediaTypes); } @@ -231,8 +231,8 @@ public abstract class AbstractHttpMessageConverter implements HttpMessageConv /** * Add default headers to the output message. - *

This implementation delegates to {@link #getDefaultContentType(Object)} if a content - * type was not provided, set if necessary the default character set, calls + *

This implementation delegates to {@link #getDefaultContentType(Object)} if a + * content type was not provided, set if necessary the default character set, calls * {@link #getContentLength}, and sets the corresponding headers. * @since 4.2 */ @@ -256,7 +256,7 @@ public abstract class AbstractHttpMessageConverter implements HttpMessageConv headers.setContentType(contentTypeToUse); } } - if (headers.getContentLength() < 0) { + if (headers.getContentLength() < 0 && !headers.containsKey(HttpHeaders.TRANSFER_ENCODING)) { Long contentLength = getContentLength(t, headers.getContentType()); if (contentLength != null) { headers.setContentLength(contentLength);