diff --git a/Cargo.toml b/Cargo.toml index 95be3f6d..885087cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ edition = "2018" [dependencies] semver = { version = "0.11.0", features = ["serde"] } serde = { version = "1.0.107", features = ["derive"] } -serde_json = "1.0.1" +serde_json = { version = "1.0.59", features = ["unbounded_depth"] } [features] default = [] diff --git a/src/messages.rs b/src/messages.rs index 2aded38f..9b4fceb1 100644 --- a/src/messages.rs +++ b/src/messages.rs @@ -144,7 +144,11 @@ impl Iterator for MessageIter { type Item = io::Result; fn next(&mut self) -> Option { let line = self.lines.next()?; - let message = line.map(|it| serde_json::from_str(&it).unwrap_or(Message::TextLine(it))); + let message = line.map(|it| { + let mut deserializer = serde_json::Deserializer::from_str(&it); + deserializer.disable_recursion_limit(); + Message::deserialize(&mut deserializer).unwrap_or(Message::TextLine(it)) + }); Some(message) } }