SSE client transport: tolerate return of RPC responses in POST requests. (#445)

* SSE client transport: handle return of RPC responses in POST requests.

* Remove accidental change.

* Address feedback

* Remove unused namespace.
This commit is contained in:
Eirik Tsarpalis 2025-05-23 21:39:54 +03:00 • committed by GitHub
commit 77f9e64e04
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -92,26 +92,18 @@ internal sealed partial class SseClientSessionTransport : TransportBase
StreamableHttpClientSessionTransport.CopyAdditionalHeaders(httpRequestMessage.Headers, _options.AdditionalHeaders);
var response = await _httpClient.SendAsync(httpRequestMessage, cancellationToken).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
if (string.IsNullOrEmpty(responseContent) || responseContent.Equals("accepted", StringComparison.OrdinalIgnoreCase))
{
LogAcceptedPost(Name, messageId);
}
else
if (!response.IsSuccessStatusCode)
{
if (_logger.IsEnabled(LogLevel.Trace))
{
LogRejectedPostSensitive(Name, messageId, responseContent);
LogRejectedPostSensitive(Name, messageId, await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false));
}
else
{
LogRejectedPost(Name, messageId);
}
throw new InvalidOperationException("Failed to send message");
response.EnsureSuccessStatusCode();
}
}