From 36d4e1f99c22aef40765ef8dcd4414ffa8d89399 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 6 Nov 2025 16:37:27 +0100 Subject: [PATCH] federation: don't close body when not reading it Closes #431 --- client.go | 1 + federation/client.go | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/client.go b/client.go index dcc3fe5e..3c60a2d1 100644 --- a/client.go +++ b/client.go @@ -707,6 +707,7 @@ const ErrorResponseSizeLimit = 512 * 1024 var DefaultResponseSizeLimit int64 = 512 * 1024 * 1024 func ParseErrorResponse(req *http.Request, res *http.Response) ([]byte, error) { + defer res.Body.Close() contents, err := readResponseBody(req, res, ErrorResponseSizeLimit) if err != nil { return contents, err diff --git a/federation/client.go b/federation/client.go index b20af4ab..b24fd2d2 100644 --- a/federation/client.go +++ b/federation/client.go @@ -314,9 +314,9 @@ func (c *Client) MakeFullRequest(ctx context.Context, params RequestParams) ([]b WrappedError: err, } } - defer func() { - _ = resp.Body.Close() - }() + if !params.DontReadBody { + defer resp.Body.Close() + } var body []byte if resp.StatusCode >= 300 { body, err = mautrix.ParseErrorResponse(req, resp)