on master help sign in
lsp: slightly refactor header parsing, add more logging
7eff905Blaž Hrastnik
helix-lsp/src/transport.rs+9−13
@@ -1,7 +1,7 @@
1use crate::Result;
1use crate::Result;
2−use anyhow::Context;
2+use anyhow::{anyhow, Context};
3use jsonrpc_core as jsonrpc;
3use jsonrpc_core as jsonrpc;
4−use log::{error, info};
4+use log::{debug, error, info};
5use serde::{Deserialize, Serialize};
5use serde::{Deserialize, Serialize};
6use serde_json::Value;
6use serde_json::Value;
7use std::collections::HashMap;
7use std::collections::HashMap;
@@ -83,20 +83,16 @@ impl Transport {
83 break;
83 break;
84 }
84 }
85
85
86− let mut parts = header.split(": ");
86+ debug!("<- header {}", header);
87
87
88+ let parts = header.split_once(": ");
89+
88− match (parts.next(), parts.next(), parts.next()) {
90+ match parts {
89− (Some("Content-Length"), Some(value), None) => {
91+ Some(("Content-Length", value)) => {
90 content_length = Some(value.parse().context("invalid content length")?);
92 content_length = Some(value.parse().context("invalid content length")?);
91 }
93 }
92− (Some(_), Some(_), None) => {}
94+ Some((_, _)) => {}
93− _ => {
94− return Err(std::io::Error::new(
95− std::io::ErrorKind::Other,
96− "Failed to parse header",
95+ None => return Err(anyhow!("Failed to parse header: {:?}", header).into()),
97− )
98− .into());
99− }
100 }
96 }
101 }
97 }
102
98