@@ -28,7 +28,11 @@ import {
2828 type KMSProviders ,
2929 refreshKMSCredentials
3030} from './providers/index' ;
31- import { type CSFLEKMSTlsOptions , StateMachine } from './state_machine' ;
31+ import {
32+ type ClientEncryptionSocketOptions ,
33+ type CSFLEKMSTlsOptions ,
34+ StateMachine
35+ } from './state_machine' ;
3236
3337/**
3438 * @public
@@ -62,6 +66,8 @@ export class ClientEncryption {
6266 _tlsOptions : CSFLEKMSTlsOptions ;
6367 /** @internal */
6468 _kmsProviders : KMSProviders ;
69+ /** @internal */
70+ _socketOptions : ClientEncryptionSocketOptions ;
6571
6672 /** @internal */
6773 _mongoCrypt : MongoCrypt ;
@@ -108,6 +114,15 @@ export class ClientEncryption {
108114 this . _proxyOptions = options . proxyOptions ?? { } ;
109115 this . _tlsOptions = options . tlsOptions ?? { } ;
110116 this . _kmsProviders = options . kmsProviders || { } ;
117+ this . _socketOptions = { } ;
118+
119+ if ( 'autoSelectFamily' in client . s . options ) {
120+ this . _socketOptions . autoSelectFamily = client . s . options . autoSelectFamily ;
121+ }
122+ if ( 'autoSelectFamilyAttemptTimeout' in client . s . options ) {
123+ this . _socketOptions . autoSelectFamilyAttemptTimeout =
124+ client . s . options . autoSelectFamilyAttemptTimeout ;
125+ }
111126
112127 if ( options . keyVaultNamespace == null ) {
113128 throw new MongoCryptInvalidArgumentError ( 'Missing required option `keyVaultNamespace`' ) ;
@@ -199,7 +214,8 @@ export class ClientEncryption {
199214
200215 const stateMachine = new StateMachine ( {
201216 proxyOptions : this . _proxyOptions ,
202- tlsOptions : this . _tlsOptions
217+ tlsOptions : this . _tlsOptions ,
218+ socketOptions : this . _socketOptions
203219 } ) ;
204220
205221 const dataKey = deserialize ( await stateMachine . execute ( this , context ) ) as DataKey ;
@@ -256,7 +272,8 @@ export class ClientEncryption {
256272 const context = this . _mongoCrypt . makeRewrapManyDataKeyContext ( filterBson , keyEncryptionKeyBson ) ;
257273 const stateMachine = new StateMachine ( {
258274 proxyOptions : this . _proxyOptions ,
259- tlsOptions : this . _tlsOptions
275+ tlsOptions : this . _tlsOptions ,
276+ socketOptions : this . _socketOptions
260277 } ) ;
261278
262279 const { v : dataKeys } = deserialize ( await stateMachine . execute ( this , context ) ) ;
@@ -637,7 +654,8 @@ export class ClientEncryption {
637654
638655 const stateMachine = new StateMachine ( {
639656 proxyOptions : this . _proxyOptions ,
640- tlsOptions : this . _tlsOptions
657+ tlsOptions : this . _tlsOptions ,
658+ socketOptions : this . _socketOptions
641659 } ) ;
642660
643661 const { v } = deserialize ( await stateMachine . execute ( this , context ) ) ;
@@ -715,7 +733,8 @@ export class ClientEncryption {
715733 const valueBuffer = serialize ( { v : value } ) ;
716734 const stateMachine = new StateMachine ( {
717735 proxyOptions : this . _proxyOptions ,
718- tlsOptions : this . _tlsOptions
736+ tlsOptions : this . _tlsOptions ,
737+ socketOptions : this . _socketOptions
719738 } ) ;
720739 const context = this . _mongoCrypt . makeExplicitEncryptionContext ( valueBuffer , contextOptions ) ;
721740
0 commit comments