aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-05-05 11:33:16 +0100
committerGitHub <noreply@github.com>2022-05-05 11:33:16 +0100
commitd9e71b93b68efb57582d02448883b8a1259205e8 (patch)
treeec9e43445e09cc10908a8ef50223310ec1cac627
parent1bfe87aa5614d68cbb0cad127b375048cdc70ca9 (diff)
Use `gomatrixserverlib.Client` instead of `http.Client` (#2421)
* Update to matrix-org/gomatrixserverlib#303 * Use `gomatrixserverlib.Client` for phone-home stats * Use `gomatrixserverlib.Client` for push notifications * Use `gomatrixserverlib.Client` for appservices * Use `gomatrixserverlib.Client` for three-PID invites
-rw-r--r--appservice/appservice.go18
-rw-r--r--appservice/query/query.go8
-rw-r--r--appservice/workers/transaction_scheduler.go8
-rw-r--r--clientapi/threepid/invites.go4
-rw-r--r--go.mod4
-rw-r--r--go.sum4
-rw-r--r--internal/pushgateway/client.go21
-rw-r--r--userapi/util/phonehomestats.go12
8 files changed, 35 insertions, 44 deletions
diff --git a/appservice/appservice.go b/appservice/appservice.go
index 0db2c100..ac4ed967 100644
--- a/appservice/appservice.go
+++ b/appservice/appservice.go
@@ -16,8 +16,6 @@ package appservice
import (
"context"
- "crypto/tls"
- "net/http"
"sync"
"time"
@@ -36,6 +34,7 @@ import (
"github.com/matrix-org/dendrite/setup/config"
"github.com/matrix-org/dendrite/setup/jetstream"
userapi "github.com/matrix-org/dendrite/userapi/api"
+ "github.com/matrix-org/gomatrixserverlib"
)
// AddInternalRoutes registers HTTP handlers for internal API calls
@@ -50,15 +49,12 @@ func NewInternalAPI(
userAPI userapi.UserInternalAPI,
rsAPI roomserverAPI.RoomserverInternalAPI,
) appserviceAPI.AppServiceQueryAPI {
- client := &http.Client{
- Timeout: time.Second * 30,
- Transport: &http.Transport{
- DisableKeepAlives: true,
- TLSClientConfig: &tls.Config{
- InsecureSkipVerify: base.Cfg.AppServiceAPI.DisableTLSValidation,
- },
- },
- }
+ client := gomatrixserverlib.NewClient(
+ gomatrixserverlib.WithTimeout(time.Second*30),
+ gomatrixserverlib.WithKeepAlives(false),
+ gomatrixserverlib.WithSkipVerify(base.Cfg.AppServiceAPI.DisableTLSValidation),
+ )
+
js, _ := jetstream.Prepare(base.ProcessContext, &base.Cfg.Global.JetStream)
// Create a connection to the appservice postgres DB
diff --git a/appservice/query/query.go b/appservice/query/query.go
index dacd3caa..b7b0b335 100644
--- a/appservice/query/query.go
+++ b/appservice/query/query.go
@@ -23,6 +23,7 @@ import (
"github.com/matrix-org/dendrite/appservice/api"
"github.com/matrix-org/dendrite/setup/config"
+ "github.com/matrix-org/gomatrixserverlib"
opentracing "github.com/opentracing/opentracing-go"
log "github.com/sirupsen/logrus"
)
@@ -32,7 +33,7 @@ const userIDExistsPath = "/users/"
// AppServiceQueryAPI is an implementation of api.AppServiceQueryAPI
type AppServiceQueryAPI struct {
- HTTPClient *http.Client
+ HTTPClient *gomatrixserverlib.Client
Cfg *config.Dendrite
}
@@ -64,9 +65,8 @@ func (a *AppServiceQueryAPI) RoomAliasExists(
if err != nil {
return err
}
- req = req.WithContext(ctx)
- resp, err := a.HTTPClient.Do(req)
+ resp, err := a.HTTPClient.DoHTTPRequest(ctx, req)
if resp != nil {
defer func() {
err = resp.Body.Close()
@@ -130,7 +130,7 @@ func (a *AppServiceQueryAPI) UserIDExists(
if err != nil {
return err
}
- resp, err := a.HTTPClient.Do(req.WithContext(ctx))
+ resp, err := a.HTTPClient.DoHTTPRequest(ctx, req)
if resp != nil {
defer func() {
err = resp.Body.Close()
diff --git a/appservice/workers/transaction_scheduler.go b/appservice/workers/transaction_scheduler.go
index 4dab00bd..47d447c2 100644
--- a/appservice/workers/transaction_scheduler.go
+++ b/appservice/workers/transaction_scheduler.go
@@ -42,7 +42,7 @@ var (
// size), then send that off to the AS's /transactions/{txnID} endpoint. It also
// handles exponentially backing off in case the AS isn't currently available.
func SetupTransactionWorkers(
- client *http.Client,
+ client *gomatrixserverlib.Client,
appserviceDB storage.Database,
workerStates []types.ApplicationServiceWorkerState,
) error {
@@ -58,7 +58,7 @@ func SetupTransactionWorkers(
// worker is a goroutine that sends any queued events to the application service
// it is given.
-func worker(client *http.Client, db storage.Database, ws types.ApplicationServiceWorkerState) {
+func worker(client *gomatrixserverlib.Client, db storage.Database, ws types.ApplicationServiceWorkerState) {
log.WithFields(log.Fields{
"appservice": ws.AppService.ID,
}).Info("Starting application service")
@@ -200,7 +200,7 @@ func createTransaction(
// send sends events to an application service. Returns an error if an OK was not
// received back from the application service or the request timed out.
func send(
- client *http.Client,
+ client *gomatrixserverlib.Client,
appservice config.ApplicationService,
txnID int,
transaction []byte,
@@ -213,7 +213,7 @@ func send(
return err
}
req.Header.Set("Content-Type", "application/json")
- resp, err := client.Do(req)
+ resp, err := client.DoHTTPRequest(context.TODO(), req)
if err != nil {
return err
}
diff --git a/clientapi/threepid/invites.go b/clientapi/threepid/invites.go
index 6b750199..eee6992f 100644
--- a/clientapi/threepid/invites.go
+++ b/clientapi/threepid/invites.go
@@ -231,7 +231,7 @@ func queryIDServerStoreInvite(
profile = &authtypes.Profile{}
}
- client := http.Client{}
+ client := gomatrixserverlib.NewClient()
data := url.Values{}
data.Add("medium", body.Medium)
@@ -253,7 +253,7 @@ func queryIDServerStoreInvite(
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
- resp, err := client.Do(req.WithContext(ctx))
+ resp, err := client.DoHTTPRequest(ctx, req)
if err != nil {
return nil, err
}
diff --git a/go.mod b/go.mod
index a7caadfb..56f5dcbb 100644
--- a/go.mod
+++ b/go.mod
@@ -25,12 +25,12 @@ require (
github.com/h2non/filetype v1.1.3 // indirect
github.com/hashicorp/golang-lru v0.5.4
github.com/juju/testing v0.0.0-20220203020004-a0ff61f03494 // indirect
- github.com/kardianos/minwinsvc v1.0.0 // indirect
+ github.com/kardianos/minwinsvc v1.0.0
github.com/lib/pq v1.10.5
github.com/matrix-org/dugong v0.0.0-20210921133753-66e6b1c67e2e
github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91
github.com/matrix-org/gomatrix v0.0.0-20210324163249-be2af5ef2e16
- github.com/matrix-org/gomatrixserverlib v0.0.0-20220408160933-cf558306b56f
+ github.com/matrix-org/gomatrixserverlib v0.0.0-20220505092512-c4ceb4751ac2
github.com/matrix-org/pinecone v0.0.0-20220408153826-2999ea29ed48
github.com/matrix-org/util v0.0.0-20200807132607-55161520e1d4
github.com/mattn/go-sqlite3 v1.14.10
diff --git a/go.sum b/go.sum
index f8daca79..fccda40c 100644
--- a/go.sum
+++ b/go.sum
@@ -795,8 +795,8 @@ github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91/go.mod h1
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26/go.mod h1:3fxX6gUjWyI/2Bt7J1OLhpCzOfO/bB3AiX0cJtEKud0=
github.com/matrix-org/gomatrix v0.0.0-20210324163249-be2af5ef2e16 h1:ZtO5uywdd5dLDCud4r0r55eP4j9FuUNpl60Gmntcop4=
github.com/matrix-org/gomatrix v0.0.0-20210324163249-be2af5ef2e16/go.mod h1:/gBX06Kw0exX1HrwmoBibFA98yBk/jxKpGVeyQbff+s=
-github.com/matrix-org/gomatrixserverlib v0.0.0-20220408160933-cf558306b56f h1:MZrl4TgTnlaOn2Cu9gJCoJ3oyW5mT4/3QIZGgZXzKl4=
-github.com/matrix-org/gomatrixserverlib v0.0.0-20220408160933-cf558306b56f/go.mod h1:V5eO8rn/C3rcxig37A/BCeKerLFS+9Avg/77FIeTZ48=
+github.com/matrix-org/gomatrixserverlib v0.0.0-20220505092512-c4ceb4751ac2 h1:5/Y4BpiMk1D/l/HkJz8Ng8bLBz1BHwV6V4e+yMNySzk=
+github.com/matrix-org/gomatrixserverlib v0.0.0-20220505092512-c4ceb4751ac2/go.mod h1:V5eO8rn/C3rcxig37A/BCeKerLFS+9Avg/77FIeTZ48=
github.com/matrix-org/pinecone v0.0.0-20220408153826-2999ea29ed48 h1:W0sjjC6yjskHX4mb0nk3p0fXAlbU5bAFUFeEtlrPASE=
github.com/matrix-org/pinecone v0.0.0-20220408153826-2999ea29ed48/go.mod h1:ulJzsVOTssIVp1j/m5eI//4VpAGDkMt5NrRuAVX7wpc=
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7/go.mod h1:vVQlW/emklohkZnOPwD3LrZUBqdfsbiyO3p1lNV8F6U=
diff --git a/internal/pushgateway/client.go b/internal/pushgateway/client.go
index 49907cee..231327a1 100644
--- a/internal/pushgateway/client.go
+++ b/internal/pushgateway/client.go
@@ -3,31 +3,28 @@ package pushgateway
import (
"bytes"
"context"
- "crypto/tls"
"encoding/json"
"fmt"
"net/http"
"time"
+ "github.com/matrix-org/gomatrixserverlib"
"github.com/opentracing/opentracing-go"
)
type httpClient struct {
- hc *http.Client
+ hc *gomatrixserverlib.Client
}
// NewHTTPClient creates a new Push Gateway client.
func NewHTTPClient(disableTLSValidation bool) Client {
- hc := &http.Client{
- Timeout: 30 * time.Second,
- Transport: &http.Transport{
- DisableKeepAlives: true,
- TLSClientConfig: &tls.Config{
- InsecureSkipVerify: disableTLSValidation,
- },
- },
+ return &httpClient{
+ hc: gomatrixserverlib.NewClient(
+ gomatrixserverlib.WithTimeout(time.Second*30),
+ gomatrixserverlib.WithKeepAlives(false),
+ gomatrixserverlib.WithSkipVerify(disableTLSValidation),
+ ),
}
- return &httpClient{hc: hc}
}
func (h *httpClient) Notify(ctx context.Context, url string, req *NotifyRequest, resp *NotifyResponse) error {
@@ -44,7 +41,7 @@ func (h *httpClient) Notify(ctx context.Context, url string, req *NotifyRequest,
}
hreq.Header.Set("Content-Type", "application/json")
- hresp, err := h.hc.Do(hreq)
+ hresp, err := h.hc.DoHTTPRequest(ctx, hreq)
if err != nil {
return err
}
diff --git a/userapi/util/phonehomestats.go b/userapi/util/phonehomestats.go
index ad93a50e..e24daba6 100644
--- a/userapi/util/phonehomestats.go
+++ b/userapi/util/phonehomestats.go
@@ -39,7 +39,7 @@ type phoneHomeStats struct {
cfg *config.Dendrite
db storage.Statistics
isMonolith bool
- client *http.Client
+ client *gomatrixserverlib.Client
}
type timestampToRUUsage struct {
@@ -55,10 +55,9 @@ func StartPhoneHomeCollector(startTime time.Time, cfg *config.Dendrite, statsDB
cfg: cfg,
db: statsDB,
isMonolith: cfg.IsMonolith,
- client: &http.Client{
- Timeout: time.Second * 30,
- Transport: http.DefaultTransport,
- },
+ client: gomatrixserverlib.NewClient(
+ gomatrixserverlib.WithTimeout(time.Second * 30),
+ ),
}
// start initial run after 5min
@@ -152,8 +151,7 @@ func (p *phoneHomeStats) collect() {
}
request.Header.Set("User-Agent", "Dendrite/"+internal.VersionString())
- _, err = p.client.Do(request)
- if err != nil {
+ if _, err = p.client.DoHTTPRequest(ctx, request); err != nil {
logrus.WithError(err).Error("unable to send anonymous stats")
return
}