@@ -157,13 +157,18 @@ module.exports = {
157
157
challengeMessage , // type 2
158
158
authenticateMessage , // type 3
159
159
ntlmType2Header ,
160
- parsedParameters ;
160
+ parsedParameters ,
161
161
162
- if ( response . code !== 401 && response . code !== 403 ) {
163
- auth . set ( STATE , STATES . INITIALIZED ) ;
164
- auth . set ( NTLM_HEADER , undefined ) ;
162
+ // resets the state and NTLM header and exits replay loop
163
+ resetStateAndStop = function ( err ) {
164
+ auth . set ( STATE , STATES . INITIALIZED ) ;
165
+ auth . set ( NTLM_HEADER , undefined ) ;
165
166
166
- return done ( null , true ) ;
167
+ return done ( err || null , true ) ;
168
+ } ;
169
+
170
+ if ( response . code !== 401 && response . code !== 403 ) {
171
+ return resetStateAndStop ( ) ;
167
172
}
168
173
169
174
// we try to extract domain from username if not specified.
@@ -178,7 +183,7 @@ module.exports = {
178
183
// Nothing to do if the server does not ask us for auth in the first place.
179
184
if ( ! ( response . headers . has ( WWW_AUTHENTICATE , NTLM ) ||
180
185
response . headers . has ( WWW_AUTHENTICATE , NEGOTIATE ) ) ) {
181
- return done ( null , true ) ;
186
+ return resetStateAndStop ( ) ;
182
187
}
183
188
184
189
// Create a type 1 message to send to the server
@@ -208,13 +213,13 @@ module.exports = {
208
213
} ) ;
209
214
210
215
if ( ! ntlmType2Header ) {
211
- return done ( new Error ( 'ntlm: server did not send NTLM type 2 message' ) ) ;
216
+ return resetStateAndStop ( new Error ( 'ntlm: server did not send NTLM type 2 message' ) ) ;
212
217
}
213
218
214
219
challengeMessage = ntlmUtil . parseType2Message ( ntlmType2Header . valueOf ( ) , _ . noop ) ;
215
220
216
221
if ( ! challengeMessage ) {
217
- return done ( new Error ( 'ntlm: server did not correctly process authentication request' ) ) ;
222
+ return resetStateAndStop ( new Error ( 'ntlm: server did not correctly process authentication request' ) ) ;
218
223
}
219
224
220
225
authenticateMessage = ntlmUtil . createType3Message ( challengeMessage , {
@@ -233,11 +238,11 @@ module.exports = {
233
238
}
234
239
else if ( state === STATES . T3_MSG_CREATED ) {
235
240
// Means we have tried to authenticate, so we should stop here without worrying about anything
236
- return done ( null , true ) ;
241
+ return resetStateAndStop ( ) ;
237
242
}
238
243
239
244
// We are in an undefined state
240
- return done ( null , true ) ;
245
+ return resetStateAndStop ( ) ;
241
246
} ,
242
247
243
248
/**
0 commit comments