@@ -5,29 +5,42 @@ if (!common.hasCrypto) {
5
5
return ;
6
6
}
7
7
8
- const assert = require ( 'assert' ) ;
9
- const https = require ( 'https' ) ;
10
-
11
8
if ( ! common . hasIPv6 ) {
12
9
common . skip ( 'no IPv6 support' ) ;
13
10
return ;
14
11
}
15
12
16
- const ciphers = 'AECDH-NULL-SHA' ;
17
- https . createServer ( { ciphers } , function ( req , res ) {
18
- this . close ( ) ;
19
- res . end ( ) ;
20
- } ) . listen ( common . PORT , '::1' , function ( ) {
21
- const options = {
22
- host : 'localhost' ,
23
- port : common . PORT ,
24
- family : 6 ,
25
- ciphers : ciphers ,
26
- rejectUnauthorized : false ,
27
- } ;
28
- // Will fail with ECONNREFUSED if the address family is not honored.
29
- https . get ( options , common . mustCall ( function ( ) {
30
- assert . strictEqual ( '::1' , this . socket . remoteAddress ) ;
31
- this . destroy ( ) ;
13
+ const assert = require ( 'assert' ) ;
14
+ const https = require ( 'https' ) ;
15
+ const dns = require ( 'dns' ) ;
16
+
17
+ function runTest ( ) {
18
+ const ciphers = 'AECDH-NULL-SHA' ;
19
+ https . createServer ( { ciphers } , common . mustCall ( function ( req , res ) {
20
+ this . close ( ) ;
21
+ res . end ( ) ;
22
+ } ) ) . listen ( common . PORT , '::1' , common . mustCall ( function ( ) {
23
+ const options = {
24
+ host : 'localhost' ,
25
+ port : common . PORT ,
26
+ family : 6 ,
27
+ ciphers : ciphers ,
28
+ rejectUnauthorized : false ,
29
+ } ;
30
+ // Will fail with ECONNREFUSED if the address family is not honored.
31
+ https . get ( options , common . mustCall ( function ( ) {
32
+ assert . strictEqual ( '::1' , this . socket . remoteAddress ) ;
33
+ this . destroy ( ) ;
34
+ } ) ) ;
32
35
} ) ) ;
36
+ }
37
+
38
+ dns . lookup ( 'localhost' , { family : 6 , all : true } , ( err , addresses ) => {
39
+ if ( err )
40
+ throw err ;
41
+
42
+ if ( addresses . some ( ( val ) => { return val . address === '::1' ; } ) )
43
+ runTest ( ) ;
44
+ else
45
+ common . skip ( 'localhost does not resolve to ::1' ) ;
33
46
} ) ;
0 commit comments