aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--appservice/appservice.go13
-rw-r--r--appservice/query/query.go7
-rw-r--r--appservice/workers/transaction_scheduler.go8
-rw-r--r--go.sum2
-rw-r--r--setup/base.go16
5 files changed, 19 insertions, 27 deletions
diff --git a/appservice/appservice.go b/appservice/appservice.go
index f608e8e7..782e090a 100644
--- a/appservice/appservice.go
+++ b/appservice/appservice.go
@@ -16,7 +16,10 @@ package appservice
import (
"context"
+ "crypto/tls"
+ "net/http"
"sync"
+ "time"
"github.com/gorilla/mux"
appserviceAPI "github.com/matrix-org/dendrite/appservice/api"
@@ -46,7 +49,15 @@ func NewInternalAPI(
userAPI userapi.UserInternalAPI,
rsAPI roomserverAPI.RoomserverInternalAPI,
) appserviceAPI.AppServiceQueryAPI {
- client := base.CreateAppserviceClient()
+ client := &http.Client{
+ Timeout: time.Second * 30,
+ Transport: &http.Transport{
+ DisableKeepAlives: true,
+ TLSClientConfig: &tls.Config{
+ InsecureSkipVerify: base.Cfg.AppServiceAPI.DisableTLSValidation,
+ },
+ },
+ }
consumer, _ := kafka.SetupConsumerProducer(&base.Cfg.Global.Kafka)
// Create a connection to the appservice postgres DB
diff --git a/appservice/query/query.go b/appservice/query/query.go
index b4c33528..9f6c79a8 100644
--- a/appservice/query/query.go
+++ b/appservice/query/query.go
@@ -23,7 +23,6 @@ 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"
)
@@ -33,7 +32,7 @@ const userIDExistsPath = "/users/"
// AppServiceQueryAPI is an implementation of api.AppServiceQueryAPI
type AppServiceQueryAPI struct {
- HTTPClient *gomatrixserverlib.Client
+ HTTPClient *http.Client
Cfg *config.Dendrite
}
@@ -63,7 +62,7 @@ func (a *AppServiceQueryAPI) RoomAliasExists(
}
req = req.WithContext(ctx)
- resp, err := a.HTTPClient.DoHTTPRequest(ctx, req)
+ resp, err := a.HTTPClient.Do(req)
if resp != nil {
defer func() {
err = resp.Body.Close()
@@ -124,7 +123,7 @@ func (a *AppServiceQueryAPI) UserIDExists(
if err != nil {
return err
}
- resp, err := a.HTTPClient.DoHTTPRequest(ctx, req)
+ resp, err := a.HTTPClient.Do(req.WithContext(ctx))
if resp != nil {
defer func() {
err = resp.Body.Close()
diff --git a/appservice/workers/transaction_scheduler.go b/appservice/workers/transaction_scheduler.go
index 47d447c2..4dab00bd 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 *gomatrixserverlib.Client,
+ client *http.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 *gomatrixserverlib.Client, db storage.Database, ws types.ApplicationServiceWorkerState) {
+func worker(client *http.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 *gomatrixserverlib.Client,
+ client *http.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.DoHTTPRequest(context.TODO(), req)
+ resp, err := client.Do(req)
if err != nil {
return err
}
diff --git a/go.sum b/go.sum
index 351acc53..8bfeeee3 100644
--- a/go.sum
+++ b/go.sum
@@ -866,8 +866,6 @@ github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5k
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.0 h1:nfhvjKcUMhBMVqbKHJlk5RPrrfYr/NMo3692g0dwfWU=
github.com/sirupsen/logrus v1.8.0/go.mod h1:4GuYW9TZmE769R5STWrRakJc4UqQ3+QQ95fyz7ENv1A=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
diff --git a/setup/base.go b/setup/base.go
index f8a45409..e9aa2a45 100644
--- a/setup/base.go
+++ b/setup/base.go
@@ -290,22 +290,6 @@ func (b *BaseDendrite) CreateClient() *gomatrixserverlib.Client {
return client
}
-// CreateAppserviceClient creates a new client for application services.
-// It has a specific timeout and obeys TLS validation from the appservice
-// config rather than the federation config.
-func (b *BaseDendrite) CreateAppserviceClient() *gomatrixserverlib.Client {
- opts := []gomatrixserverlib.ClientOption{
- gomatrixserverlib.WithSkipVerify(b.Cfg.AppServiceAPI.DisableTLSValidation),
- gomatrixserverlib.WithTimeout(time.Second * 60),
- }
- if b.Cfg.Global.DNSCache.Enabled {
- opts = append(opts, gomatrixserverlib.WithDNSCache(b.DNSCache))
- }
- client := gomatrixserverlib.NewClient(opts...)
- client.SetUserAgent(fmt.Sprintf("Dendrite/%s", internal.VersionString()))
- return client
-}
-
// CreateFederationClient creates a new federation client. Should only be called
// once per component.
func (b *BaseDendrite) CreateFederationClient() *gomatrixserverlib.FederationClient {