@ -66,14 +66,21 @@ var clientsOptions = [{
ca : [ loadPEM ( 'ca1-cert' ) ] ,
ca : [ loadPEM ( 'ca1-cert' ) ] ,
servername : 'a.example.com' ,
servername : 'a.example.com' ,
rejectUnauthorized : false
rejectUnauthorized : false
} , {
} , {
port : serverPort ,
port : serverPort ,
key : loadPEM ( 'agent2-key' ) ,
key : loadPEM ( 'agent2-key' ) ,
cert : loadPEM ( 'agent2-cert' ) ,
cert : loadPEM ( 'agent2-cert' ) ,
ca : [ loadPEM ( 'ca2-cert' ) ] ,
ca : [ loadPEM ( 'ca2-cert' ) ] ,
servername : 'b.test.com' ,
servername : 'b.test.com' ,
rejectUnauthorized : false
rejectUnauthorized : false
} , {
} , {
port : serverPort ,
key : loadPEM ( 'agent2-key' ) ,
cert : loadPEM ( 'agent2-cert' ) ,
ca : [ loadPEM ( 'ca2-cert' ) ] ,
servername : 'a.b.test.com' ,
rejectUnauthorized : false
} , {
port : serverPort ,
port : serverPort ,
key : loadPEM ( 'agent3-key' ) ,
key : loadPEM ( 'agent3-key' ) ,
cert : loadPEM ( 'agent3-cert' ) ,
cert : loadPEM ( 'agent3-cert' ) ,
@ -95,28 +102,29 @@ server.addContext('*.test.com', SNIContexts['asterisk.test.com']);
server . listen ( serverPort , startTest ) ;
server . listen ( serverPort , startTest ) ;
function startTest ( ) {
function startTest ( ) {
function connectClient ( options , callback ) {
var i = 0 ;
function start ( ) {
// No options left
if ( i === clientsOptions . length )
return server . close ( ) ;
var options = clientsOptions [ i ++ ] ;
var client = tls . connect ( options , function ( ) {
var client = tls . connect ( options , function ( ) {
clientResults . push (
clientResults . push (
client . authorizationError &&
client . authorizationError &&
/Hostname\/IP doesn't/ . test ( client . authorizationError ) ) ;
/Hostname\/IP doesn't/ . test ( client . authorizationError ) ) ;
client . destroy ( ) ;
client . destroy ( ) ;
callback ( ) ;
// Continue
start ( ) ;
} ) ;
} ) ;
} ;
} ;
connectClient ( clientsOptions [ 0 ] , function ( ) {
start ( ) ;
connectClient ( clientsOptions [ 1 ] , function ( ) {
connectClient ( clientsOptions [ 2 ] , function ( ) {
server . close ( ) ;
} ) ;
} ) ;
} ) ;
}
}
process . on ( 'exit' , function ( ) {
process . on ( 'exit' , function ( ) {
assert . deepEqual ( serverResults , [ 'a.example.com' , 'b.test.com' ,
assert . deepEqual ( serverResults , [ 'a.example.com' , 'b.test.com' ,
'c.wrong.com' ] ) ;
'a.b.test.com' , 'c.wrong.com' ] ) ;
assert . deepEqual ( clientResults , [ true , true , false ] ) ;
assert . deepEqual ( clientResults , [ true , true , false , false ] ) ;
} ) ;
} ) ;