From bd71b4ecbc59617d07a390763ec1a7d9211b68d2 Mon Sep 17 00:00:00 2001 From: bel Date: Wed, 16 Mar 2022 16:42:25 -0600 Subject: [PATCH] ensure http bodies closed, matrix client some kinda closed --- broker/fastexact.go | 4 +++- broker/ntgvision.go | 3 +++ message/matrix.go | 12 ++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/broker/fastexact.go b/broker/fastexact.go index 3b4b377..6b815a8 100644 --- a/broker/fastexact.go +++ b/broker/fastexact.go @@ -87,7 +87,7 @@ func (fe FastExact) _login(username, password string, db storage.DB) error { return err } b, _ := ioutil.ReadAll(resp.Body) - resp.Body.Close() + defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return fmt.Errorf("bad status logging into fast exact: %d: %s", resp.StatusCode, b) @@ -152,6 +152,7 @@ func (fe FastExact) searchOneZip(zip string) ([]Job, error) { if err != nil { return nil, err } + defer resp.Body.Close() return fe.parse(resp) } @@ -165,6 +166,7 @@ func (fe FastExact) searchOneState(state config.State) ([]Job, error) { if err != nil { return nil, err } + defer resp.Body.Close() return fe.parse(resp) } diff --git a/broker/ntgvision.go b/broker/ntgvision.go index 9ab49ef..95a10c6 100644 --- a/broker/ntgvision.go +++ b/broker/ntgvision.go @@ -374,6 +374,9 @@ func (ntg NTGVision) _searchStates(states []config.State) (io.ReadCloser, error) if err != nil { return nil, err } + defer resp.Body.Close() + b, _ := ioutil.ReadAll(resp.Body) + resp.Body = io.NopCloser(bytes.NewReader(b)) if resp.StatusCode != http.StatusOK { b, _ := ioutil.ReadAll(resp.Body) resp.Body.Close() diff --git a/message/matrix.go b/message/matrix.go index 74722cc..07c738c 100644 --- a/message/matrix.go +++ b/message/matrix.go @@ -45,6 +45,13 @@ func newMatrix(conf config.Matrix, cont string) Matrix { } } +func (m Matrix) closeclient(client *gomatrix.Client) { + go func() { + client.StopSync() + client.Logout() + }() +} + func (m Matrix) getclient() (*gomatrix.Client, error) { client, err := gomatrix.NewClient(m.homeserver, m.username, m.token) if err != nil { @@ -92,6 +99,7 @@ func (m *Matrix) Receive() ([]Message, error) { if err != nil { return nil, err } + defer m.closeclient(c) messages := make([]Message, 0) result, err := c.Messages(m.room, "999999999999999999", m.Continuation(), 'b', 50) if err != nil { @@ -147,6 +155,7 @@ func (m Matrix) Remove(id string) error { if err != nil { return err } + defer m.closeclient(c) _, err = c.RedactEvent(m.room, id, &gomatrix.ReqRedact{Reason: "stale"}) return err } @@ -160,6 +169,7 @@ func (m Matrix) Update(id, text string) error { if err != nil { return err } + defer m.closeclient(c) type MRelatesTo struct { EventID string `json:"event_id"` RelType string `json:"rel_type"` @@ -203,6 +213,7 @@ func (m Matrix) SendTracked(text string) (string, error) { if err != nil { return "", err } + defer m.closeclient(c) resp, err := c.SendText(m.room, text) if err != nil { return "", err @@ -238,6 +249,7 @@ func (m Matrix) SendImageTracked(uri string) (string, error) { if err != nil { return "", err } + defer m.closeclient(c) mediaUpload, err := c.UploadToContentRepo(bytes.NewReader(b), "image/jpeg", int64(len(b))) if err != nil { return "", err