Fix non-OK HTTP POST responses handling (#374)
Currently, JDK HttpClient SSE implementation incorrectly handles a non-2xx HTTP response code for POST. Instead of immediately failing the caller, it ignores the issue and the user awaits until the timeout kicks in. Set HttpClient to use HTTP/1.1 version explicitly for tests A related problem happened with the WebClient Streamable HTTP implementation, where the error was swallowed for non-400 responses. Signed-off-by: Dariusz Jędrzejczyk <dariusz.jedrzejczyk@broadcom.com>
This commit is contained in:
parent
b37c32cdba
commit
95df67ec05
1 changed files with 42 additions and 6 deletions
|
|
@ -421,13 +421,17 @@ public class HttpClientSseClientTransport implements McpClientTransport {
|
|||
}
|
||||
|
||||
return this.serializeMessage(message)
|
||||
.flatMap(body -> sendHttpPost(messageEndpointUri, body))
|
||||
.doOnNext(response -> {
|
||||
.flatMap(body -> sendHttpPost(messageEndpointUri, body).handle((response, sink) -> {
|
||||
if (response.statusCode() != 200 && response.statusCode() != 201 && response.statusCode() != 202
|
||||
&& response.statusCode() != 206) {
|
||||
logger.error("Error sending message: {}", response.statusCode());
|
||||
sink.error(new RuntimeException(
|
||||
"Sending message failed with a non-OK HTTP code: " + response.statusCode()));
|
||||
}
|
||||
})
|
||||
else {
|
||||
sink.next(response);
|
||||
sink.complete();
|
||||
}
|
||||
}))
|
||||
.doOnError(error -> {
|
||||
if (!isClosing) {
|
||||
logger.error("Error sending message: {}", error.getMessage());
|
||||
|
|
|
|||
Loading…
Reference in a new issue