ensure http bodies closed, matrix client some kinda closed

v0.5.14
bel 2022-03-16 16:42:25 -06:00
parent db1838b3ab
commit cfd1a177dd
3 changed files with 18 additions and 1 deletions

View File

@ -87,7 +87,7 @@ func (fe FastExact) _login(username, password string, db storage.DB) error {
return err return err
} }
b, _ := ioutil.ReadAll(resp.Body) b, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close() defer resp.Body.Close()
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
return fmt.Errorf("bad status logging into fast exact: %d: %s", resp.StatusCode, b) 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 { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close()
return fe.parse(resp) return fe.parse(resp)
} }
@ -165,6 +166,7 @@ func (fe FastExact) searchOneState(state config.State) ([]Job, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close()
return fe.parse(resp) return fe.parse(resp)
} }

View File

@ -374,6 +374,9 @@ func (ntg NTGVision) _searchStates(states []config.State) (io.ReadCloser, error)
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close()
b, _ := ioutil.ReadAll(resp.Body)
resp.Body = io.NopCloser(bytes.NewReader(b))
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
b, _ := ioutil.ReadAll(resp.Body) b, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close() resp.Body.Close()

View File

@ -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) { func (m Matrix) getclient() (*gomatrix.Client, error) {
client, err := gomatrix.NewClient(m.homeserver, m.username, m.token) client, err := gomatrix.NewClient(m.homeserver, m.username, m.token)
if err != nil { if err != nil {
@ -92,6 +99,7 @@ func (m *Matrix) Receive() ([]Message, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer m.closeclient(c)
messages := make([]Message, 0) messages := make([]Message, 0)
result, err := c.Messages(m.room, "999999999999999999", m.Continuation(), 'b', 50) result, err := c.Messages(m.room, "999999999999999999", m.Continuation(), 'b', 50)
if err != nil { if err != nil {
@ -147,6 +155,7 @@ func (m Matrix) Remove(id string) error {
if err != nil { if err != nil {
return err return err
} }
defer m.closeclient(c)
_, err = c.RedactEvent(m.room, id, &gomatrix.ReqRedact{Reason: "stale"}) _, err = c.RedactEvent(m.room, id, &gomatrix.ReqRedact{Reason: "stale"})
return err return err
} }
@ -160,6 +169,7 @@ func (m Matrix) Update(id, text string) error {
if err != nil { if err != nil {
return err return err
} }
defer m.closeclient(c)
type MRelatesTo struct { type MRelatesTo struct {
EventID string `json:"event_id"` EventID string `json:"event_id"`
RelType string `json:"rel_type"` RelType string `json:"rel_type"`
@ -203,6 +213,7 @@ func (m Matrix) SendTracked(text string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
defer m.closeclient(c)
resp, err := c.SendText(m.room, text) resp, err := c.SendText(m.room, text)
if err != nil { if err != nil {
return "", err return "", err
@ -238,6 +249,7 @@ func (m Matrix) SendImageTracked(uri string) (string, error) {
if err != nil { if err != nil {
return "", err return "", err
} }
defer m.closeclient(c)
mediaUpload, err := c.UploadToContentRepo(bytes.NewReader(b), "image/jpeg", int64(len(b))) mediaUpload, err := c.UploadToContentRepo(bytes.NewReader(b), "image/jpeg", int64(len(b)))
if err != nil { if err != nil {
return "", err return "", err