fix: accept 200 with empty body in response to notifications in addition to 202 (#849)
This commit is contained in:
parent
3529c3675f
commit
cc66e3091e
1 changed files with 79 additions and 0 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue