@@ -75,8 +75,8 @@ function onhandshakestart() {
7575 }
7676}
7777
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' ) ) ;
8080}
8181
8282function onhandshakedone ( ) {
@@ -100,121 +100,105 @@ function loadSession(hello) {
100100 var once = false ;
101101 function onSession ( err , session ) {
102102 if ( once )
103- return loadSessionDone ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) , owner ) ;
103+ return owner . destroy ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) ) ;
104104 once = true ;
105105
106106 if ( err )
107- return loadSessionDone ( err , owner ) ;
107+ return owner . destroy ( err ) ;
108108
109109 if ( owner . _handle === null )
110- return loadSessionDone ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) , owner ) ;
110+ return owner . destroy ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) ) ;
111111
112112 owner . _handle . loadSession ( session ) ;
113- loadSessionDone ( null , owner ) ;
113+ owner . _handle . endParser ( ) ;
114114 }
115115
116116 if ( hello . sessionId . length <= 0 ||
117117 hello . tlsTicket ||
118118 owner . server &&
119119 ! owner . server . emit ( 'resumeSession' , hello . sessionId , onSession ) ) {
120- loadSessionDone ( null , owner ) ;
120+ owner . _handle . endParser ( ) ;
121121 }
122122}
123123
124- function loadSessionDone ( err , self ) {
125- if ( err !== null )
126- return self . destroy ( err ) ;
127-
128- self . _handle . endParser ( ) ;
129- }
130-
131124
132125function loadSNI ( info ) {
133126 const owner = this . owner ;
134127 const servername = info . servername ;
135128 if ( ! servername || ! owner . _SNICallback )
136- return requestOCSP ( null , owner , info ) ;
129+ return requestOCSP ( owner , info ) ;
137130
138131 let once = false ;
139132 owner . _SNICallback ( servername , ( err , context ) => {
140133 if ( once )
141- return requestOCSP ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) , owner ) ;
134+ return owner . destroy ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) ) ;
142135 once = true ;
143136
144137 if ( err )
145- return requestOCSP ( err , owner ) ;
138+ return owner . destroy ( err ) ;
146139
147140 if ( owner . _handle === null )
148- return requestOCSP ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) , owner ) ;
141+ return owner . destroy ( new errors . Error ( 'ERR_SOCKET_CLOSED' ) ) ;
149142
150143 // TODO(indutny): eventually disallow raw `SecureContext`
151144 if ( context )
152145 owner . _handle . sni_context = context . context || context ;
153146
154- requestOCSP ( null , owner , info ) ;
147+ requestOCSP ( owner , info ) ;
155148 } ) ;
156149}
157150
158151
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 ) ;
162155
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 ;
167157
168158 if ( ! ctx )
169- ctx = self . server . _sharedCreds ;
159+ ctx = socket . server . _sharedCreds ;
170160
171161 // TLS socket is using a `net.Server` instead of a tls.TLSServer.
172162 // Some TLS properties like `server._sharedCreds` will not be present
173163 if ( ! ctx )
174- return requestOCSPDone ( null , self ) ;
164+ return requestOCSPDone ( socket ) ;
175165
176166 // TODO(indutny): eventually disallow raw `SecureContext`
177167 if ( ctx . context )
178168 ctx = ctx . context ;
179169
180- if ( self . server . listenerCount ( 'OCSPRequest' ) === 0 ) {
181- return requestOCSPDone ( null , self ) ;
170+ if ( socket . server . listenerCount ( 'OCSPRequest' ) === 0 ) {
171+ return requestOCSPDone ( socket ) ;
182172 }
183173
184174 let once = false ;
185175 const onOCSP = ( err , response ) => {
186176 if ( once )
187- return requestOCSPDone ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) , self ) ;
177+ return socket . destroy ( new errors . Error ( 'ERR_MULTIPLE_CALLBACK' ) ) ;
188178 once = true ;
189179
190180 if ( err )
191- return requestOCSPDone ( err , self ) ;
181+ return socket . destroy ( err ) ;
192182
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' ) ) ;
195185
196186 if ( response )
197- self . _handle . setOCSPResponse ( response ) ;
198- requestOCSPDone ( null , self ) ;
187+ socket . _handle . setOCSPResponse ( response ) ;
188+ requestOCSPDone ( socket ) ;
199189 } ;
200190
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 ) ;
205195}
206196
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 ) {
214198 try {
215- self . _handle . certCbDone ( ) ;
199+ socket . _handle . certCbDone ( ) ;
216200 } catch ( e ) {
217- self . destroy ( e ) ;
201+ socket . destroy ( e ) ;
218202 }
219203}
220204
@@ -980,17 +964,16 @@ Server.prototype.addContext = function(servername, context) {
980964
981965function SNICallback ( servername , callback ) {
982966 const contexts = this . server . _contexts ;
983- var ctx ;
984967
985968 for ( var i = 0 ; i < contexts . length ; i ++ ) {
986969 const elem = contexts [ i ] ;
987970 if ( elem [ 0 ] . test ( servername ) ) {
988- ctx = elem [ 1 ] ;
989- break ;
971+ callback ( null , elem [ 1 ] ) ;
972+ return ;
990973 }
991974 }
992975
993- callback ( null , ctx ) ;
976+ callback ( null , undefined ) ;
994977}
995978
996979
0 commit comments