diff --git a/packages/grpc-js/src/channel-options.ts b/packages/grpc-js/src/channel-options.ts index df6cbb2b..e1ad94dc 100644 --- a/packages/grpc-js/src/channel-options.ts +++ b/packages/grpc-js/src/channel-options.ts @@ -28,6 +28,7 @@ export interface ChannelOptions { 'grpc.keepalive_permit_without_calls'?: number; 'grpc.service_config'?: string; 'grpc.max_concurrent_streams'?: number; + 'grpc.max_session_memory'?: number; 'grpc.initial_reconnect_backoff_ms'?: number; 'grpc.max_reconnect_backoff_ms'?: number; 'grpc.use_local_subchannel_pool'?: number; @@ -53,6 +54,7 @@ export const recognizedOptions = { 'grpc.keepalive_permit_without_calls': true, 'grpc.service_config': true, 'grpc.max_concurrent_streams': true, + 'grpc.max_session_memory': true, 'grpc.initial_reconnect_backoff_ms': true, 'grpc.max_reconnect_backoff_ms': true, 'grpc.use_local_subchannel_pool': true, diff --git a/packages/grpc-js/src/server.ts b/packages/grpc-js/src/server.ts index 335a11fc..fe906af2 100644 --- a/packages/grpc-js/src/server.ts +++ b/packages/grpc-js/src/server.ts @@ -258,8 +258,11 @@ export class Server { } const serverOptions: http2.ServerOptions = { - maxSendHeaderBlockLength: Number.MAX_SAFE_INTEGER + maxSendHeaderBlockLength: Number.MAX_SAFE_INTEGER, }; + if ('grpc.max_session_memory' in this.options) { + serverOptions.maxSessionMemory = this.options['grpc.max_session_memory']; + } if ('grpc.max_concurrent_streams' in this.options) { serverOptions.settings = { maxConcurrentStreams: this.options['grpc.max_concurrent_streams'], diff --git a/packages/grpc-js/src/subchannel.ts b/packages/grpc-js/src/subchannel.ts index c32ee43e..bcbd8877 100644 --- a/packages/grpc-js/src/subchannel.ts +++ b/packages/grpc-js/src/subchannel.ts @@ -307,6 +307,9 @@ export class Subchannel { let connectionOptions: http2.SecureClientSessionOptions = this.credentials._getConnectionOptions() || {}; connectionOptions.maxSendHeaderBlockLength = Number.MAX_SAFE_INTEGER; + if ('grpc.max_session_memory' in this.options) { + connectionOptions.maxSessionMemory = this.options['grpc.max_session_memory']; + } let addressScheme = 'http://'; if ('secureContext' in connectionOptions) { addressScheme = 'https://';