Skip to content

Commit 1e6c0d2

Browse files
committed
Merge branch '5.3.x'
2 parents 08bce08 + 3be2b32 commit 1e6c0d2

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,13 @@ private Object buildEvent(List<String> lines, ResolvableType valueType, boolean
147147
for (String line : lines) {
148148
if (line.startsWith("data:")) {
149149
data = (data != null ? data : new StringBuilder());
150-
data.append(line.substring(5).trim()).append('\n');
150+
if (line.charAt(5) != ' ') {
151+
data.append(line, 5, line.length());
152+
}
153+
else {
154+
data.append(line, 6, line.length());
155+
}
156+
data.append('\n');
151157
}
152158
if (shouldWrap) {
153159
if (line.startsWith("id:")) {

spring-web/src/test/java/org/springframework/http/codec/ServerSentEventHttpMessageReaderTests.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,20 @@ public void readString() {
138138
.verify();
139139
}
140140

141+
@Test
142+
public void trimWhitespace() {
143+
MockServerHttpRequest request = MockServerHttpRequest.post("/")
144+
.body(Mono.just(stringBuffer("data: \tfoo \ndata:bar\t\n\n")));
145+
146+
Flux<String> data = reader.read(ResolvableType.forClass(String.class),
147+
request, Collections.emptyMap()).cast(String.class);
148+
149+
StepVerifier.create(data)
150+
.expectNext("\tfoo \nbar\t")
151+
.expectComplete()
152+
.verify();
153+
}
154+
141155
@Test
142156
public void readPojo() {
143157
MockServerHttpRequest request = MockServerHttpRequest.post("/")

0 commit comments

Comments
 (0)