From 4fc5da7289ac840f309c0b9678089dc955309124 Mon Sep 17 00:00:00 2001 From: Steven Schlansker Date: Wed, 8 Mar 2023 13:07:14 -0800 Subject: [PATCH] Add a new JaxRsFeature to consume all content, on by default Fixes #108 --- .../com/fasterxml/jackson/jaxrs/base/ProviderBase.java | 3 +++ .../com/fasterxml/jackson/jaxrs/cfg/JaxRSFeature.java | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java b/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java index 380afe9f..40203fac 100644 --- a/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java +++ b/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java @@ -458,6 +458,9 @@ protected EP_CONFIG _configForReading(MAPPER mapper, } else { r = mapper.reader(); } + if (JaxRSFeature.READ_FULL_STREAM.enabledIn(_jaxRSFeatures)) { + r = r.withFeatures(DeserializationFeature.FAIL_ON_TRAILING_TOKENS); + } return _configForReading(r, annotations); } diff --git a/base/src/main/java/com/fasterxml/jackson/jaxrs/cfg/JaxRSFeature.java b/base/src/main/java/com/fasterxml/jackson/jaxrs/cfg/JaxRSFeature.java index 63bdd471..e0c57862 100644 --- a/base/src/main/java/com/fasterxml/jackson/jaxrs/cfg/JaxRSFeature.java +++ b/base/src/main/java/com/fasterxml/jackson/jaxrs/cfg/JaxRSFeature.java @@ -27,6 +27,14 @@ public enum JaxRSFeature implements ConfigFeature */ ALLOW_EMPTY_INPUT(true), + /** + * For HTTP keep-alive or multipart content to work correctly, Jackson must read the entire HTTP input + * stream up until reading EOF (-1). + * Issue #108 + * If set to true, always consume all input content. This has a side-effect of failing on trailing content. + */ + READ_FULL_STREAM(true), + /* /********************************************************** /* HTTP headers