mirror of
https://github.com/tokio-rs/axum.git
synced 2025-01-06 02:35:42 +01:00
Don't drop leading spaces in SSE responses (#600)
* Don't drop leading spaces in SSE responses * Mention leading space fix in changelog Co-authored-by: David Pedersen <david.pdrsn@gmail.com>
This commit is contained in:
parent
980a0a466e
commit
d9bf100216
2 changed files with 15 additions and 3 deletions
|
@ -7,11 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
# Unreleased
|
# Unreleased
|
||||||
|
|
||||||
|
- **fixed:** `sse::Event` will no longer drop the leading space of data, event ID and name values
|
||||||
|
that have it ([#600])
|
||||||
- **fixed:** `sse::Event` is more strict about what field values it supports, disallowing any SSE
|
- **fixed:** `sse::Event` is more strict about what field values it supports, disallowing any SSE
|
||||||
events that break the specification (such as field values containing carriage returns) ([#599])
|
events that break the specification (such as field values containing carriage returns) ([#599])
|
||||||
- **added:** `axum::AddExtension::layer` ([#607])
|
- **added:** `axum::AddExtension::layer` ([#607])
|
||||||
|
|
||||||
[#599]: https://github.com/tokio-rs/axum/pull/599
|
[#599]: https://github.com/tokio-rs/axum/pull/599
|
||||||
|
[#600]: https://github.com/tokio-rs/axum/pull/600
|
||||||
[#607]: https://github.com/tokio-rs/axum/pull/607
|
[#607]: https://github.com/tokio-rs/axum/pull/607
|
||||||
|
|
||||||
# 0.4.2 (06. December, 2021)
|
# 0.4.2 (06. December, 2021)
|
||||||
|
|
|
@ -315,7 +315,7 @@ impl fmt::Display for Event {
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(event) = &self.event {
|
if let Some(event) = &self.event {
|
||||||
"event:".fmt(f)?;
|
"event: ".fmt(f)?;
|
||||||
event.fmt(f)?;
|
event.fmt(f)?;
|
||||||
f.write_char('\n')?;
|
f.write_char('\n')?;
|
||||||
}
|
}
|
||||||
|
@ -323,7 +323,7 @@ impl fmt::Display for Event {
|
||||||
match &self.data {
|
match &self.data {
|
||||||
Some(DataType::Text(data)) => {
|
Some(DataType::Text(data)) => {
|
||||||
for line in data.split('\n') {
|
for line in data.split('\n') {
|
||||||
"data:".fmt(f)?;
|
"data: ".fmt(f)?;
|
||||||
line.fmt(f)?;
|
line.fmt(f)?;
|
||||||
f.write_char('\n')?;
|
f.write_char('\n')?;
|
||||||
}
|
}
|
||||||
|
@ -338,7 +338,7 @@ impl fmt::Display for Event {
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(id) = &self.id {
|
if let Some(id) = &self.id {
|
||||||
"id:".fmt(f)?;
|
"id: ".fmt(f)?;
|
||||||
id.fmt(f)?;
|
id.fmt(f)?;
|
||||||
f.write_char('\n')?;
|
f.write_char('\n')?;
|
||||||
}
|
}
|
||||||
|
@ -452,3 +452,12 @@ impl KeepAliveStream {
|
||||||
Poll::Ready(event)
|
Poll::Ready(event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn leading_space_is_not_stripped() {
|
||||||
|
let no_leading_space = Event::default().data("\tfoobar");
|
||||||
|
assert_eq!(no_leading_space.to_string(), "data: \tfoobar\n\n");
|
||||||
|
|
||||||
|
let leading_space = Event::default().data(" foobar");
|
||||||
|
assert_eq!(leading_space.to_string(), "data: foobar\n\n");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue