0
0
Fork 0
mirror of https://github.com/strukturag/nextcloud-spreed-signaling.git synced 2025-05-13 11:11:39 +00:00

Set WriteBufferPool for websocket connections.

This commit is contained in:
Joachim Bauch 2024-11-21 19:51:14 +01:00
parent 53ff3d39e7
commit bfc4d7facf
No known key found for this signature in database
GPG key ID: 77C1D22D53E15F02
5 changed files with 18 additions and 6 deletions

View file

@ -46,6 +46,8 @@ const (
var (
ErrFederationNotSupported = NewError("federation_unsupported", "The target server does not support federation.")
federationWriteBufferPool = &sync.Pool{}
)
func isClosedError(err error) bool {
@ -102,7 +104,9 @@ func NewFederationClient(ctx context.Context, hub *Hub, session *ClientSession,
return nil, fmt.Errorf("expected federation room message, got %+v", message)
}
var dialer websocket.Dialer
dialer := &websocket.Dialer{
WriteBufferPool: federationWriteBufferPool,
}
if hub.skipFederationVerify {
dialer.TLSClientConfig = &tls.Config{
InsecureSkipVerify: true,
@ -130,7 +134,7 @@ func NewFederationClient(ctx context.Context, hub *Hub, session *ClientSession,
reconnectDelay: initialFederationReconnectInterval,
dialer: &dialer,
dialer: dialer,
url: url,
closer: NewCloser(),
}

3
hub.go
View file

@ -105,6 +105,8 @@ var (
websocketReadBufferSize = 4096
websocketWriteBufferSize = 4096
websocketWriteBufferPool = &sync.Pool{}
// Delay after which a screen publisher should be cleaned up.
cleanupScreenPublisherDelay = time.Second
@ -322,6 +324,7 @@ func NewHub(config *goconf.ConfigFile, events AsyncEvents, rpcServer *GrpcServer
upgrader: websocket.Upgrader{
ReadBufferSize: websocketReadBufferSize,
WriteBufferSize: websocketWriteBufferSize,
WriteBufferPool: websocketWriteBufferPool,
},
cookie: NewSessionIdCodec([]byte(hashKey), blockBytes),
info: NewWelcomeServerMessage(version, DefaultFeatures...),

View file

@ -767,7 +767,7 @@ func TestWebsocketFeatures(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
defer cancel()
conn, response, err := websocket.DefaultDialer.DialContext(ctx, getWebsocketUrl(server.URL), nil)
conn, response, err := testClientDialer.DialContext(ctx, getWebsocketUrl(server.URL), nil)
require.NoError(err)
defer conn.Close() // nolint

View file

@ -119,8 +119,9 @@ const (
var (
janusDialer = websocket.Dialer{
Subprotocols: []string{"janus-protocol"},
Proxy: http.ProxyFromEnvironment,
Subprotocols: []string{"janus-protocol"},
Proxy: http.ProxyFromEnvironment,
WriteBufferPool: &sync.Pool{},
}
)

View file

@ -49,6 +49,10 @@ var (
testInternalSecret = []byte("internal-secret")
ErrNoMessageReceived = fmt.Errorf("no message was received by the server")
testClientDialer = websocket.Dialer{
WriteBufferPool: &sync.Pool{},
}
)
type TestBackendClientAuthParams struct {
@ -226,7 +230,7 @@ type TestClient struct {
func NewTestClientContext(ctx context.Context, t *testing.T, server *httptest.Server, hub *Hub) *TestClient {
// Reference "hub" to prevent compiler error.
conn, _, err := websocket.DefaultDialer.DialContext(ctx, getWebsocketUrl(server.URL), nil)
conn, _, err := testClientDialer.DialContext(ctx, getWebsocketUrl(server.URL), nil)
require.NoError(t, err)
messageChan := make(chan []byte)