Browse Source

Merge branch '5.3.x'

pull/28890/head
Rossen Stoyanchev 2 years ago
parent
commit
1aa4e7c68d
  1. 4
      spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java
  2. 8
      spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java
  3. 8
      spring-webflux/src/main/java/org/springframework/web/reactive/socket/adapter/AbstractListenerWebSocketSession.java
  4. 3
      spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java

4
spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java

@ -56,8 +56,6 @@ import org.springframework.util.StringUtils;
*/ */
public class ServletServerHttpRequest implements ServerHttpRequest { public class ServletServerHttpRequest implements ServerHttpRequest {
protected static final String FORM_CONTENT_TYPE = "application/x-www-form-urlencoded";
protected static final Charset FORM_CHARSET = StandardCharsets.UTF_8; protected static final Charset FORM_CHARSET = StandardCharsets.UTF_8;
@ -230,7 +228,7 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
private static boolean isFormPost(HttpServletRequest request) { private static boolean isFormPost(HttpServletRequest request) {
String contentType = request.getContentType(); String contentType = request.getContentType();
return (contentType != null && contentType.contains(FORM_CONTENT_TYPE) && return (contentType != null && contentType.contains(MediaType.APPLICATION_FORM_URLENCODED_VALUE) &&
HttpMethod.POST.matches(request.getMethod())); HttpMethod.POST.matches(request.getMethod()));
} }

8
spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2021 the original author or authors. * Copyright 2002-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -33,6 +33,7 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper; import jakarta.servlet.http.HttpServletRequestWrapper;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
/** /**
@ -54,9 +55,6 @@ import org.springframework.lang.Nullable;
*/ */
public class ContentCachingRequestWrapper extends HttpServletRequestWrapper { public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
private static final String FORM_CONTENT_TYPE = "application/x-www-form-urlencoded";
private final ByteArrayOutputStream cachedContent; private final ByteArrayOutputStream cachedContent;
@Nullable @Nullable
@ -151,7 +149,7 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
private boolean isFormPost() { private boolean isFormPost() {
String contentType = getContentType(); String contentType = getContentType();
return (contentType != null && contentType.contains(FORM_CONTENT_TYPE) && return (contentType != null && contentType.contains(MediaType.APPLICATION_FORM_URLENCODED_VALUE) &&
HttpMethod.POST.matches(getMethod())); HttpMethod.POST.matches(getMethod()));
} }

8
spring-webflux/src/main/java/org/springframework/web/reactive/socket/adapter/AbstractListenerWebSocketSession.java

@ -221,7 +221,13 @@ public abstract class AbstractListenerWebSocketSession<T> extends AbstractWebSoc
// Ignore result: can't overflow, ok if not first or no one listens // Ignore result: can't overflow, ok if not first or no one listens
this.handlerCompletionSink.tryEmitError(ex); this.handlerCompletionSink.tryEmitError(ex);
} }
close(CloseStatus.SERVER_ERROR.withReason(ex.getMessage())); if (logger.isDebugEnabled()) {
logger.debug("WebSocket session completed with error", ex);
}
else if (logger.isInfoEnabled()) {
logger.info("WebSocket session completed with error: " + ex.getMessage());
}
close(CloseStatus.SERVER_ERROR);
} }
@Override @Override

3
spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java

@ -49,6 +49,7 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PropertiesLoaderUtils; import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.springframework.core.log.LogFormatUtils; import org.springframework.core.log.LogFormatUtils;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.server.RequestPath; import org.springframework.http.server.RequestPath;
import org.springframework.http.server.ServletServerHttpRequest; import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
@ -986,7 +987,7 @@ public class DispatcherServlet extends FrameworkServlet {
} }
else { else {
// Avoid request body parsing for form data // Avoid request body parsing for form data
params = (StringUtils.startsWithIgnoreCase(contentType, "application/x-www-form-urlencoded") || params = (StringUtils.startsWithIgnoreCase(contentType, MediaType.APPLICATION_FORM_URLENCODED_VALUE) ||
!request.getParameterMap().isEmpty() ? "masked" : ""); !request.getParameterMap().isEmpty() ? "masked" : "");
} }

Loading…
Cancel
Save