Roman Reiss | f29762f | 2015-05-19 11:00:06 | [diff] [blame] | 1 | 'use strict'; |
Ryan Dahl | 735b9d5 | 2010-11-29 22:07:55 | [diff] [blame] | 2 | var common = require('../common'); |
| 3 | var http = require('http'); |
| 4 | var assert = require('assert'); |
| 5 | |
| 6 | // first 204 or 304 works, subsequent anything fails |
Oleg Efimov | 093dfaf | 2010-12-05 22:33:52 | [diff] [blame] | 7 | var codes = [204, 200]; |
Ryan Dahl | 735b9d5 | 2010-11-29 22:07:55 | [diff] [blame] | 8 | |
| 9 | // Methods don't really matter, but we put in something realistic. |
| 10 | var methods = ['DELETE', 'DELETE']; |
| 11 | |
Oleg Efimov | 093dfaf | 2010-12-05 22:33:52 | [diff] [blame] | 12 | var server = http.createServer(function(req, res) { |
Ryan Dahl | 735b9d5 | 2010-11-29 22:07:55 | [diff] [blame] | 13 | 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 Dahl | 735b9d5 | 2010-11-29 22:07:55 | [diff] [blame] | 21 | function nextRequest() { |
| 22 | var method = methods.shift(); |
Oleg Efimov | 093dfaf | 2010-12-05 22:33:52 | [diff] [blame] | 23 | console.error('writing request: %s', method); |
Ryan Dahl | 735b9d5 | 2010-11-29 22:07:55 | [diff] [blame] | 24 | |
koichik | 8293bb8 | 2011-08-14 06:02:14 | [diff] [blame] | 25 | var request = http.request({ |
Colton Baker | 87286cc | 2011-10-04 22:08:18 | [diff] [blame] | 26 | port: common.PORT, |
koichik | 8293bb8 | 2011-08-14 06:02:14 | [diff] [blame] | 27 | method: method, |
Colton Baker | 87286cc | 2011-10-04 22:08:18 | [diff] [blame] | 28 | path: '/' |
koichik | 8293bb8 | 2011-08-14 06:02:14 | [diff] [blame] | 29 | }, function(response) { |
Ryan Dahl | 735b9d5 | 2010-11-29 22:07:55 | [diff] [blame] | 30 | response.on('end', function() { |
| 31 | if (methods.length == 0) { |
Oleg Efimov | 093dfaf | 2010-12-05 22:33:52 | [diff] [blame] | 32 | console.error('close server'); |
Ryan Dahl | 735b9d5 | 2010-11-29 22:07:55 | [diff] [blame] | 33 | server.close(); |
| 34 | } else { |
| 35 | // throws error: |
| 36 | nextRequest(); |
| 37 | // works just fine: |
| 38 | //process.nextTick(nextRequest); |
| 39 | } |
| 40 | }); |
isaacs | 327b6e3 | 2013-03-10 02:05:39 | [diff] [blame] | 41 | response.resume(); |
Ryan Dahl | 735b9d5 | 2010-11-29 22:07:55 | [diff] [blame] | 42 | }); |
| 43 | request.end(); |
| 44 | } |
| 45 | |
| 46 | server.listen(common.PORT, nextRequest); |