1+ // Copyright Joyent, Inc. and other Node contributors.
2+ //
3+ // Permission is hereby granted, free of charge, to any person obtaining a
4+ // copy of this software and associated documentation files (the
5+ // "Software"), to deal in the Software without restriction, including
6+ // without limitation the rights to use, copy, modify, merge, publish,
7+ // distribute, sublicense, and/or sell copies of the Software, and to permit
8+ // persons to whom the Software is furnished to do so, subject to the
9+ // following conditions:
10+ //
11+ // The above copyright notice and this permission notice shall be included
12+ // in all copies or substantial portions of the Software.
13+ //
14+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+ var common = require ( '../common' ) ;
23+ var assert = require ( 'assert' ) ;
24+ var http = require ( 'http' ) ;
25+ var net = require ( 'net' ) ;
26+
27+ var caughtError = false ;
28+
29+ var options = {
30+ host : '127.0.0.1' ,
31+ port : common . PORT
32+ } ;
33+
34+ // start a tcp server that closes incoming connections immediately
35+ var server = net . createServer ( function ( client ) {
36+ client . destroy ( ) ;
37+ server . close ( ) ;
38+ } ) ;
39+ server . listen ( options . port , options . host , onListen ) ;
40+
41+ // do a GET request, expect it to fail
42+ function onListen ( ) {
43+ var req = http . request ( options , function ( res ) {
44+ assert . ok ( false , 'this should never run' ) ;
45+ } ) ;
46+ req . on ( 'error' , function ( err ) {
47+ assert . equal ( err . message , 'socket hang up' ) ;
48+ assert . equal ( err . code , 'ECONNRESET' ) ;
49+ caughtError = true ;
50+ } ) ;
51+ req . end ( ) ;
52+ }
53+
54+ process . on ( 'exit' , function ( ) {
55+ assert . equal ( caughtError , true ) ;
56+ } ) ;
0 commit comments