diff --git a/common/http/http.go b/common/http/http.go index b8f532cc1..f9804d857 100644 --- a/common/http/http.go +++ b/common/http/http.go @@ -38,19 +38,20 @@ func PostJSON( req.Header.Set("Content-Type", "application/json") res, err := httpClient.Do(req.WithContext(ctx)) - if res != nil { - defer (func() { - finalErr := res.Body.Close() - if err != nil && finalErr != nil { - err = fmt.Errorf("%s\n%s", err, finalErr) - } else if err == nil { - err = finalErr - } - })() - } + + defer (func() { + finalErr := res.Body.Close() + if err != nil && finalErr != nil { + err = fmt.Errorf("%s\n%s", err, finalErr) + } else if err == nil { + err = finalErr + } + })() + if err != nil { return err } + if res.StatusCode != http.StatusOK { var errorBody struct { Message string `json:"message"` diff --git a/common/test/client.go b/common/test/client.go index 55339e3a9..e4c6ba7e3 100644 --- a/common/test/client.go +++ b/common/test/client.go @@ -79,9 +79,7 @@ func (r *Request) Do() (err error) { }, } res, err := client.Do(r.Req) - if err != nil { - return err - } + defer (func() { finalErr := res.Body.Close() if err != nil && finalErr != nil { @@ -91,6 +89,10 @@ func (r *Request) Do() (err error) { } })() + if err != nil { + return err + } + if res.StatusCode != r.WantedStatusCode { return fmt.Errorf("incorrect status code. Expected: %d Got: %d", r.WantedStatusCode, res.StatusCode) } diff --git a/mediaapi/fileutils/fileutils.go b/mediaapi/fileutils/fileutils.go index a20623c8a..f9808b5c4 100644 --- a/mediaapi/fileutils/fileutils.go +++ b/mediaapi/fileutils/fileutils.go @@ -109,9 +109,7 @@ func WriteTempFile(reqReader io.Reader, maxFileSizeBytes config.FileSizeBytes, a size = -1 tmpFileWriter, tmpFile, tmpDir, err := createTempFileWriter(absBasePath) - if err != nil { - return - } + defer (func() { finalErr := tmpFile.Close() if err != nil && finalErr != nil { @@ -120,6 +118,11 @@ func WriteTempFile(reqReader io.Reader, maxFileSizeBytes config.FileSizeBytes, a err = finalErr } })() + + if err != nil { + return + } + // The amount of data read is limited to maxFileSizeBytes. At this point, if there is more data it will be truncated. limitedReader := io.LimitReader(reqReader, int64(maxFileSizeBytes)) // Hash the file data. The hash will be returned. The hash is useful as a diff --git a/mediaapi/thumbnailer/thumbnailer_nfnt.go b/mediaapi/thumbnailer/thumbnailer_nfnt.go index 73579d633..23233d649 100644 --- a/mediaapi/thumbnailer/thumbnailer_nfnt.go +++ b/mediaapi/thumbnailer/thumbnailer_nfnt.go @@ -123,9 +123,7 @@ func readFile(src string) (image.Image, error) { func writeFile(img image.Image, dst string) (err error) { out, err := os.Create(dst) - if err != nil { - return err - } + defer (func() { finalErr := out.Close() if err != nil && finalErr != nil { @@ -135,6 +133,10 @@ func writeFile(img image.Image, dst string) (err error) { } })() + if err != nil { + return err + } + return jpeg.Encode(out, img, &jpeg.Options{ Quality: 85, }) diff --git a/roomserver/storage/postgres/invite_table.go b/roomserver/storage/postgres/invite_table.go index 3a8816755..67c8a758f 100644 --- a/roomserver/storage/postgres/invite_table.go +++ b/roomserver/storage/postgres/invite_table.go @@ -118,9 +118,7 @@ func (s *inviteStatements) updateInviteRetired( ) (eventIDs []string, err error) { stmt := common.TxStmt(txn, s.updateInviteRetiredStmt) rows, err := stmt.QueryContext(ctx, roomNID, targetUserNID) - if err != nil { - return nil, err - } + defer (func() { finalErr := rows.Close() if err != nil && finalErr != nil { @@ -129,6 +127,10 @@ func (s *inviteStatements) updateInviteRetired( err = finalErr } })() + + if err != nil { + return nil, err + } for rows.Next() { var inviteEventID string if err := rows.Scan(&inviteEventID); err != nil {