@@ -75,8 +75,8 @@ function onhandshakestart() {
75
75
}
76
76
}
77
77
78
- function emitSessionAttackError ( self ) {
79
- self . _emitTLSError ( new errors . Error ( 'ERR_TLS_SESSION_ATTACK' ) ) ;
78
+ function emitSessionAttackError ( socket ) {
79
+ socket . _emitTLSError ( new errors . Error ( 'ERR_TLS_SESSION_ATTACK' ) ) ;
80
80
}
81
81
82
82
function onhandshakedone ( ) {
@@ -100,121 +100,105 @@ function loadSession(hello) {
100
100
var once = false ;
101
101
function onSession ( err , session ) {
102
102
if ( once )
103
- return loadSessionDone ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) , owner ) ;
103
+ return owner . destroy ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) ) ;
104
104
once = true ;
105
105
106
106
if ( err )
107
- return loadSessionDone ( err , owner ) ;
107
+ return owner . destroy ( err ) ;
108
108
109
109
if ( owner . _handle === null )
110
- return loadSessionDone ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) , owner ) ;
110
+ return owner . destroy ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) ) ;
111
111
112
112
owner . _handle . loadSession ( session ) ;
113
- loadSessionDone ( null , owner ) ;
113
+ owner . _handle . endParser ( ) ;
114
114
}
115
115
116
116
if ( hello . sessionId . length <= 0 ||
117
117
hello . tlsTicket ||
118
118
owner . server &&
119
119
! owner . server . emit ( 'resumeSession' , hello . sessionId , onSession ) ) {
120
- loadSessionDone ( null , owner ) ;
120
+ owner . _handle . endParser ( ) ;
121
121
}
122
122
}
123
123
124
- function loadSessionDone ( err , self ) {
125
- if ( err !== null )
126
- return self . destroy ( err ) ;
127
-
128
- self . _handle . endParser ( ) ;
129
- }
130
-
131
124
132
125
function loadSNI ( info ) {
133
126
const owner = this . owner ;
134
127
const servername = info . servername ;
135
128
if ( ! servername || ! owner . _SNICallback )
136
- return requestOCSP ( null , owner , info ) ;
129
+ return requestOCSP ( owner , info ) ;
137
130
138
131
let once = false ;
139
132
owner . _SNICallback ( servername , ( err , context ) => {
140
133
if ( once )
141
- return requestOCSP ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) , owner ) ;
134
+ return owner . destroy ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) ) ;
142
135
once = true ;
143
136
144
137
if ( err )
145
- return requestOCSP ( err , owner ) ;
138
+ return owner . destroy ( err ) ;
146
139
147
140
if ( owner . _handle === null )
148
- return requestOCSP ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) , owner ) ;
141
+ return owner . destroy ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) ) ;
149
142
150
143
// TODO(indutny): eventually disallow raw `SecureContext`
151
144
if ( context )
152
145
owner . _handle . sni_context = context . context || context ;
153
146
154
- requestOCSP ( null , owner , info ) ;
147
+ requestOCSP ( owner , info ) ;
155
148
} ) ;
156
149
}
157
150
158
151
159
- function requestOCSP ( err , self , hello ) {
160
- if ( err !== null )
161
- return self . destroy ( err ) ;
152
+ function requestOCSP ( socket , info ) {
153
+ if ( ! info . OCSPRequest || ! socket . server )
154
+ return requestOCSPDone ( socket ) ;
162
155
163
- if ( ! hello . OCSPRequest || ! self . server )
164
- return requestOCSPDone ( null , self ) ;
165
-
166
- let ctx = self . _handle . sni_context ;
156
+ let ctx = socket . _handle . sni_context ;
167
157
168
158
if ( ! ctx )
169
- ctx = self . server . _sharedCreds ;
159
+ ctx = socket . server . _sharedCreds ;
170
160
171
161
// TLS socket is using a `net.Server` instead of a tls.TLSServer.
172
162
// Some TLS properties like `server._sharedCreds` will not be present
173
163
if ( ! ctx )
174
- return requestOCSPDone ( null , self ) ;
164
+ return requestOCSPDone ( socket ) ;
175
165
176
166
// TODO(indutny): eventually disallow raw `SecureContext`
177
167
if ( ctx . context )
178
168
ctx = ctx . context ;
179
169
180
- if ( self . server . listenerCount ( 'OCSPRequest' ) === 0 ) {
181
- return requestOCSPDone ( null , self ) ;
170
+ if ( socket . server . listenerCount ( 'OCSPRequest' ) === 0 ) {
171
+ return requestOCSPDone ( socket ) ;
182
172
}
183
173
184
174
let once = false ;
185
175
const onOCSP = ( err , response ) => {
186
176
if ( once )
187
- return requestOCSPDone ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) , self ) ;
177
+ return socket . destroy ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) ) ;
188
178
once = true ;
189
179
190
180
if ( err )
191
- return requestOCSPDone ( err , self ) ;
181
+ return socket . destroy ( err ) ;
192
182
193
- if ( self . _handle === null )
194
- return requestOCSPDone ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) , self ) ;
183
+ if ( socket . _handle === null )
184
+ return socket . destroy ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) ) ;
195
185
196
186
if ( response )
197
- self . _handle . setOCSPResponse ( response ) ;
198
- requestOCSPDone ( null , self ) ;
187
+ socket . _handle . setOCSPResponse ( response ) ;
188
+ requestOCSPDone ( socket ) ;
199
189
} ;
200
190
201
- self . server . emit ( 'OCSPRequest' ,
202
- ctx . getCertificate ( ) ,
203
- ctx . getIssuer ( ) ,
204
- onOCSP ) ;
191
+ socket . server . emit ( 'OCSPRequest' ,
192
+ ctx . getCertificate ( ) ,
193
+ ctx . getIssuer ( ) ,
194
+ onOCSP ) ;
205
195
}
206
196
207
- function requestOCSPDone ( err , self ) {
208
- if ( err !== null )
209
- return self . destroy ( err ) ;
210
-
211
- if ( self . _handle === null )
212
- return self . destroy ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) ) ;
213
-
197
+ function requestOCSPDone ( socket ) {
214
198
try {
215
- self . _handle . certCbDone ( ) ;
199
+ socket . _handle . certCbDone ( ) ;
216
200
} catch ( e ) {
217
- self . destroy ( e ) ;
201
+ socket . destroy ( e ) ;
218
202
}
219
203
}
220
204
@@ -980,17 +964,16 @@ Server.prototype.addContext = function(servername, context) {
980
964
981
965
function SNICallback ( servername , callback ) {
982
966
const contexts = this . server . _contexts ;
983
- var ctx ;
984
967
985
968
for ( var i = 0 ; i < contexts . length ; i ++ ) {
986
969
const elem = contexts [ i ] ;
987
970
if ( elem [ 0 ] . test ( servername ) ) {
988
- ctx = elem [ 1 ] ;
989
- break ;
971
+ callback ( null , elem [ 1 ] ) ;
972
+ return ;
990
973
}
991
974
}
992
975
993
- callback ( null , ctx ) ;
976
+ callback ( null , undefined ) ;
994
977
}
995
978
996
979
0 commit comments