1
+ // This file was modified by Oracle on July 5, 2021.
2
+ // Errors generated by asynchronous authentication plugins are now being
3
+ // handled and subsequently emitted at the command level.
4
+ // Modifications copyright (c) 2021, Oracle and/or its affiliates.
5
+
1
6
'use strict' ;
2
7
3
8
const Packets = require ( '../packets/index.js' ) ;
@@ -17,6 +22,14 @@ function warnLegacyAuthSwitch() {
17
22
) ;
18
23
}
19
24
25
+ function authSwitchPluginError ( error , command ) {
26
+ // Authentication errors are fatal
27
+ error . code = 'AUTH_SWITCH_PLUGIN_ERROR' ;
28
+ error . fatal = true ;
29
+
30
+ command . emit ( 'error' , error ) ;
31
+ }
32
+
20
33
function authSwitchRequest ( packet , connection , command ) {
21
34
const { pluginName, pluginData } = Packets . AuthSwitchRequest . fromPacket (
22
35
packet
@@ -34,8 +47,7 @@ function authSwitchRequest(packet, connection, command) {
34
47
warnLegacyAuthSwitch ( ) ;
35
48
legacySwitchHandler ( { pluginName, pluginData } , ( err , data ) => {
36
49
if ( err ) {
37
- connection . emit ( 'error' , err ) ;
38
- return ;
50
+ return authSwitchPluginError ( err , command ) ;
39
51
}
40
52
connection . writePacket ( new Packets . AuthSwitchResponse ( data ) . toPacket ( ) ) ;
41
53
} ) ;
@@ -54,19 +66,20 @@ function authSwitchRequest(packet, connection, command) {
54
66
if ( data ) {
55
67
connection . writePacket ( new Packets . AuthSwitchResponse ( data ) . toPacket ( ) ) ;
56
68
}
69
+ } ) . catch ( err => {
70
+ authSwitchPluginError ( err , command ) ;
57
71
} ) ;
58
72
}
59
73
60
- function authSwitchRequestMoreData ( packet , connection ) {
74
+ function authSwitchRequestMoreData ( packet , connection , command ) {
61
75
const { data } = Packets . AuthSwitchRequestMoreData . fromPacket ( packet ) ;
62
76
63
77
if ( connection . config . authSwitchHandler ) {
64
78
const legacySwitchHandler = connection . config . authSwitchHandler ;
65
79
warnLegacyAuthSwitch ( ) ;
66
80
legacySwitchHandler ( { pluginData : data } , ( err , data ) => {
67
81
if ( err ) {
68
- connection . emit ( 'error' , err ) ;
69
- return ;
82
+ return authSwitchPluginError ( err , command ) ;
70
83
}
71
84
connection . writePacket ( new Packets . AuthSwitchResponse ( data ) . toPacket ( ) ) ;
72
85
} ) ;
@@ -82,6 +95,8 @@ function authSwitchRequestMoreData(packet, connection) {
82
95
if ( data ) {
83
96
connection . writePacket ( new Packets . AuthSwitchResponse ( data ) . toPacket ( ) ) ;
84
97
}
98
+ } ) . catch ( err => {
99
+ authSwitchPluginError ( err , command ) ;
85
100
} ) ;
86
101
}
87
102
0 commit comments