Skip to content

Commit fce611b

Browse files
massongitclaude
andauthored
リソースCloseのエラーハンドリング追加 (#259)
* リソースCloseのエラーハンドリング追加 executeAndReadResponse関数とUploadFile関数にdefer Close処理を追加: - executeAndReadResponse: HTTPレスポンスBodyのClose処理 - UploadFile: multipart.WriterのClose処理 - 名前付き戻り値に変更しcloseErrでエラーシャドーイングを回避 - リソースリークを防止し、Close時のエラーを適切に処理 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * body -> readCloser --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 611e9e8 commit fce611b

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lib/amesh/amesh.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,13 +311,19 @@ func parseCoordinates(place string) (*Location, error) {
311311
}
312312

313313
// executeAndReadResponse HTTPリクエストを実行してレスポンスボディを読み込む
314-
func executeAndReadResponse(client *http.Client, req *http.Request) ([]byte, error) {
314+
func executeAndReadResponse(client *http.Client, req *http.Request) (body []byte, err error) {
315315
resp, err := httpclient.ExecuteHTTPRequest(client, req)
316316
if err != nil {
317317
return nil, errors.Wrap(err, "Failed to httpclient.ExecuteHTTPRequest")
318318
}
319319

320-
body, err := handleHTTPResponse(resp)
320+
defer func(readCloser io.ReadCloser) {
321+
if closeErr := readCloser.Close(); closeErr != nil {
322+
err = errors.Wrap(closeErr, "Failed to Close")
323+
}
324+
}(resp.Body)
325+
326+
body, err = handleHTTPResponse(resp)
321327
if err != nil {
322328
return nil, errors.Wrap(err, "Failed to handleHTTPResponse")
323329
}

lib/misskey/bot.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ func (bot *Bot) CreateNote(ctx context.Context, params *CreateNoteParams) (err e
9292
func (bot *Bot) UploadFile(ctx context.Context, reader io.Reader, fileName string) (file *File, err error) {
9393
var buf bytes.Buffer
9494
writer := multipart.NewWriter(&buf)
95+
defer func(writer *multipart.Writer) {
96+
if closeErr := writer.Close(); closeErr != nil {
97+
err = errors.Wrap(closeErr, "Failed to Close")
98+
}
99+
}(writer)
95100

96101
// トークンフィールドを追加
97102
if writeErr := writer.WriteField("i", bot.BotSetting.Token); writeErr != nil {

0 commit comments

Comments
 (0)