fix(agent): close base64 encoder on io.Copy error path
Previously when io.Copy to the base64 encoder failed, encoder.Close() was skipped. This left the encoder's internal buffer unflushed. Now always call Close() and handle both copy and close errors explicitly.
This commit is contained in:
parent
dff16dbb91
commit
d6371fcb68
1 changed files with 11 additions and 3 deletions
|
|
@ -172,14 +172,22 @@ func encodeImageToDataURL(localPath, mime string, info os.FileInfo, maxSize int)
|
|||
buf.WriteString(prefix)
|
||||
|
||||
encoder := base64.NewEncoder(base64.StdEncoding, &buf)
|
||||
if _, err := io.Copy(encoder, f); err != nil {
|
||||
_, copyErr := io.Copy(encoder, f)
|
||||
closeErr := encoder.Close()
|
||||
if copyErr != nil {
|
||||
logger.WarnCF("agent", "Failed to encode media file", map[string]any{
|
||||
"path": localPath,
|
||||
"error": err.Error(),
|
||||
"error": copyErr.Error(),
|
||||
})
|
||||
return ""
|
||||
}
|
||||
if closeErr != nil {
|
||||
logger.WarnCF("agent", "Failed to close base64 encoder", map[string]any{
|
||||
"path": localPath,
|
||||
"error": closeErr.Error(),
|
||||
})
|
||||
return ""
|
||||
}
|
||||
encoder.Close()
|
||||
|
||||
return buf.String()
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue