fix: accept 200 with empty body in response to notifications in addition to 202 (#849)

This commit is contained in:
Alex Hancock 2026-05-14 14:52:11 -04:00 • committed by GitHub
commit cc66e3091e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -257,12 +257,29 @@ impl StreamableHttpClient for UnixSocketHttpClient {
}
let content_type = response.headers().get(http::header::CONTENT_TYPE).cloned();
let content_length = response
.headers()
.get(http::header::CONTENT_LENGTH)
.and_then(|v| v.to_str().ok())
.and_then(|v| v.parse::<u64>().ok());
let session_id = response
.headers()
.get(HEADER_SESSION_ID)
.and_then(|v| v.to_str().ok())
.map(|s| s.to_string());
if status.is_success()
&& content_length == Some(0)
&& matches!(
message,
ClientJsonRpcMessage::Notification(_)
| ClientJsonRpcMessage::Response(_)
| ClientJsonRpcMessage::Error(_)
)
{
return Ok(StreamableHttpPostResponse::Accepted);
}
match content_type {
Some(ref ct) if ct.as_bytes().starts_with(EVENT_STREAM_MIME_TYPE.as_bytes()) => {
let sse_stream = SseStream::new(response.into_body()).boxed();