@@ -160,62 +160,58 @@ func Client() *ClientOptions {
160
160
161
161
// Validate validates the client options. This method will return the first error found.
162
162
func (c * ClientOptions ) Validate () error {
163
- c .validateAndSetError ()
164
- return c .err
165
- }
166
-
167
- func (c * ClientOptions ) validateAndSetError () {
168
163
if c .err != nil {
169
- return
164
+ return c . err
170
165
}
166
+ c .err = c .validate ()
167
+ return c .err
168
+ }
171
169
170
+ func (c * ClientOptions ) validate () error {
172
171
// Direct connections cannot be made if multiple hosts are specified or an SRV URI is used.
173
172
if c .Direct != nil && * c .Direct {
174
173
if len (c .Hosts ) > 1 {
175
- c .err = errors .New ("a direct connection cannot be made if multiple hosts are specified" )
176
- return
174
+ return errors .New ("a direct connection cannot be made if multiple hosts are specified" )
177
175
}
178
176
if c .cs != nil && c .cs .Scheme == connstring .SchemeMongoDBSRV {
179
- c .err = errors .New ("a direct connection cannot be made if an SRV URI is used" )
180
- return
177
+ return errors .New ("a direct connection cannot be made if an SRV URI is used" )
181
178
}
182
179
}
183
180
184
181
if c .MaxPoolSize != nil && c .MinPoolSize != nil && * c .MaxPoolSize != 0 && * c .MinPoolSize > * c .MaxPoolSize {
185
- c .err = fmt .Errorf ("minPoolSize must be less than or equal to maxPoolSize, got minPoolSize=%d maxPoolSize=%d" , * c .MinPoolSize , * c .MaxPoolSize )
186
- return
182
+ return fmt .Errorf ("minPoolSize must be less than or equal to maxPoolSize, got minPoolSize=%d maxPoolSize=%d" , * c .MinPoolSize , * c .MaxPoolSize )
187
183
}
188
184
189
185
// verify server API version if ServerAPIOptions are passed in.
190
186
if c .ServerAPIOptions != nil {
191
- c .err = c .ServerAPIOptions .ServerAPIVersion .Validate ()
187
+ if err := c .ServerAPIOptions .ServerAPIVersion .Validate (); err != nil {
188
+ return err
189
+ }
192
190
}
193
191
194
192
// Validation for load-balanced mode.
195
193
if c .LoadBalanced != nil && * c .LoadBalanced {
196
194
if len (c .Hosts ) > 1 {
197
- c .err = internal .ErrLoadBalancedWithMultipleHosts
198
- return
195
+ return internal .ErrLoadBalancedWithMultipleHosts
199
196
}
200
197
if c .ReplicaSet != nil {
201
- c .err = internal .ErrLoadBalancedWithReplicaSet
202
- return
198
+ return internal .ErrLoadBalancedWithReplicaSet
203
199
}
204
200
if c .Direct != nil {
205
- c .err = internal .ErrLoadBalancedWithDirectConnection
206
- return
201
+ return internal .ErrLoadBalancedWithDirectConnection
207
202
}
208
203
}
209
204
210
205
// Validation for srvMaxHosts.
211
206
if c .SRVMaxHosts != nil && * c .SRVMaxHosts > 0 {
212
207
if c .ReplicaSet != nil {
213
- c . err = internal .ErrSRVMaxHostsWithReplicaSet
208
+ return internal .ErrSRVMaxHostsWithReplicaSet
214
209
}
215
210
if c .LoadBalanced != nil && * c .LoadBalanced {
216
- c . err = internal .ErrSRVMaxHostsWithLoadBalanced
211
+ return internal .ErrSRVMaxHostsWithLoadBalanced
217
212
}
218
213
}
214
+ return nil
219
215
}
220
216
221
217
// GetURI returns the original URI used to configure the ClientOptions instance. If ApplyURI was not called during
0 commit comments