@@ -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 {
86− let mut parts = header.split(": ");
86+ debug!("<- header {}", header);
88+ let parts = header.split_once(": ");
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")?);
92− (Some(_), Some(_), None) => {}
94+ Some((_, _)) => {}
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()),