blob: ba98138bdca568cbf1942e4ea9650db3558bf14e [file] [log] [blame]
Roman Reissf29762f2015-05-19 11:00:061'use strict';
Ryan Dahl735b9d52010-11-29 22:07:552var common = require('../common');
3var http = require('http');
4var assert = require('assert');
5
6// first 204 or 304 works, subsequent anything fails
Oleg Efimov093dfaf2010-12-05 22:33:527var codes = [204, 200];
Ryan Dahl735b9d52010-11-29 22:07:558
9// Methods don't really matter, but we put in something realistic.
10var methods = ['DELETE', 'DELETE'];
11
Oleg Efimov093dfaf2010-12-05 22:33:5212var server = http.createServer(function(req, res) {
Ryan Dahl735b9d52010-11-29 22:07:5513 var code = codes.shift();
14 assert.equal('number', typeof code);
15 assert.ok(code > 0);
16 console.error('writing %d response', code);
17 res.writeHead(code, {});
18 res.end();
19});
20
Ryan Dahl735b9d52010-11-29 22:07:5521function nextRequest() {
22 var method = methods.shift();
Oleg Efimov093dfaf2010-12-05 22:33:5223 console.error('writing request: %s', method);
Ryan Dahl735b9d52010-11-29 22:07:5524
koichik8293bb82011-08-14 06:02:1425 var request = http.request({
Colton Baker87286cc2011-10-04 22:08:1826 port: common.PORT,
koichik8293bb82011-08-14 06:02:1427 method: method,
Colton Baker87286cc2011-10-04 22:08:1828 path: '/'
koichik8293bb82011-08-14 06:02:1429 }, function(response) {
Ryan Dahl735b9d52010-11-29 22:07:5530 response.on('end', function() {
31 if (methods.length == 0) {
Oleg Efimov093dfaf2010-12-05 22:33:5232 console.error('close server');
Ryan Dahl735b9d52010-11-29 22:07:5533 server.close();
34 } else {
35 // throws error:
36 nextRequest();
37 // works just fine:
38 //process.nextTick(nextRequest);
39 }
40 });
isaacs327b6e32013-03-10 02:05:3941 response.resume();
Ryan Dahl735b9d52010-11-29 22:07:5542 });
43 request.end();
44}
45
46server.listen(common.PORT, nextRequest);