Alternate fix for #846, with concatenated errors

This commit is contained in:
CruxBox 2020-01-27 01:48:51 +05:30
parent 5741235833
commit 89e4ad9364
5 changed files with 42 additions and 6 deletions

View file

@ -39,7 +39,14 @@ func PostJSON(
res, err := httpClient.Do(req.WithContext(ctx)) res, err := httpClient.Do(req.WithContext(ctx))
if res != nil { if res != nil {
defer (func() { err = res.Body.Close() })() 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 { if err != nil {
return err return err

View file

@ -82,7 +82,14 @@ func (r *Request) Do() (err error) {
if err != nil { if err != nil {
return err return err
} }
defer (func() { err = res.Body.Close() })() 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 res.StatusCode != r.WantedStatusCode { if res.StatusCode != r.WantedStatusCode {
return fmt.Errorf("incorrect status code. Expected: %d Got: %d", r.WantedStatusCode, res.StatusCode) return fmt.Errorf("incorrect status code. Expected: %d Got: %d", r.WantedStatusCode, res.StatusCode)

View file

@ -112,8 +112,14 @@ func WriteTempFile(reqReader io.Reader, maxFileSizeBytes config.FileSizeBytes, a
if err != nil { if err != nil {
return return
} }
defer (func() { err = tmpFile.Close() })() defer (func() {
finalErr := tmpFile.Close()
if err != nil && finalErr != nil {
err = fmt.Errorf("%s\n%s", err, finalErr)
} else if err == nil {
err = finalErr
}
})()
// The amount of data read is limited to maxFileSizeBytes. At this point, if there is more data it will be truncated. // 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)) limitedReader := io.LimitReader(reqReader, int64(maxFileSizeBytes))
// Hash the file data. The hash will be returned. The hash is useful as a // Hash the file data. The hash will be returned. The hash is useful as a

View file

@ -18,6 +18,7 @@ package thumbnailer
import ( import (
"context" "context"
"fmt"
"image" "image"
"image/draw" "image/draw"
@ -125,7 +126,14 @@ func writeFile(img image.Image, dst string) (err error) {
if err != nil { if err != nil {
return err return err
} }
defer (func() { err = out.Close() })() defer (func() {
finalErr := out.Close()
if err != nil && finalErr != nil {
err = fmt.Errorf("%s\n%s", err, finalErr)
} else if err == nil {
err = finalErr
}
})()
return jpeg.Encode(out, img, &jpeg.Options{ return jpeg.Encode(out, img, &jpeg.Options{
Quality: 85, Quality: 85,

View file

@ -17,6 +17,7 @@ package storage
import ( import (
"context" "context"
"database/sql" "database/sql"
"fmt"
"github.com/matrix-org/dendrite/common" "github.com/matrix-org/dendrite/common"
"github.com/matrix-org/dendrite/roomserver/types" "github.com/matrix-org/dendrite/roomserver/types"
@ -119,7 +120,14 @@ func (s *inviteStatements) updateInviteRetired(
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer (func() { err = rows.Close() })() defer (func() {
finalErr := rows.Close()
if err != nil && finalErr != nil {
err = fmt.Errorf("%s\n%s", err, finalErr)
} else if err == nil {
err = finalErr
}
})()
for rows.Next() { for rows.Next() {
var inviteEventID string var inviteEventID string
if err := rows.Scan(&inviteEventID); err != nil { if err := rows.Scan(&inviteEventID); err != nil {