fix: properly close HTTP responses after sending each email #14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change extracts per-email sending logic into a helper function for which proper resource closing can be performed. Previously it invoke defer res.Body.Close in a for-loop but Go's specifications and operations dictate that the defer will only be invoked when the surrounding function is returning or panicking: this means then that if very many emails are being sent, that risks potential resource exhaustion because so many connections won't be closed yet nor can they be garbage collected.
Fixes #13