Skip to content

Commit 3be2b32

Browse files
committed
Remove only leading space for SSE data
Prior to this commit, all white space was trimmed from Server Sent Event data. After this commit, only a leading space is removed (if present). Closes gh-27473
1 parent 85bdea6 commit 3be2b32

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)