Skip to content

Commit 1ecf4da

Browse files
fix res.write proxy
1 parent 50aa251 commit 1ecf4da

File tree

2 files changed

+12
-14
lines changed

2 files changed

+12
-14
lines changed

index.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,14 @@ function compression (options) {
106106
// HACK: node doesn't expose internal errors,
107107
// we need to fake response to throw underlying errors type
108108
var fakeRes = new ServerResponse({})
109-
if (!res.destroyed) {
110-
fakeRes.destroyed = fakeRes.finished = true
111-
} else {
112-
fakeRes.destroyed = true
113-
}
109+
fakeRes.on('error', function (err) {
110+
res.emit('error', err)
111+
})
112+
fakeRes.destroyed = res.destroyed
113+
fakeRes.finished = res.finished || ended
114114
// throw ERR_STREAM_DESTROYED or ERR_STREAM_WRITE_AFTER_END
115-
return _write.call(fakeRes, chunk, encoding, callback)
115+
_write.call(fakeRes, chunk, encoding, callback)
116+
return false
116117
}
117118

118119
if (!this._header) {

test/compression.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ describe('compression()', function () {
5959
res.write(1)
6060
} catch (err) {
6161
assert.ok(err.code === 'ERR_INVALID_ARG_TYPE')
62-
res.statusCode = 500
6362
res.flush()
6463
res.end()
6564
}
@@ -68,7 +67,7 @@ describe('compression()', function () {
6867
request(server)
6968
.get('/')
7069
.set('Accept-Encoding', 'gzip')
71-
.expect(500, done)
70+
.expect(200, done)
7271
})
7372

7473
it('res.write({}) should fire ERR_INVALID_ARG_TYPE', function (done) {
@@ -78,7 +77,6 @@ describe('compression()', function () {
7877
res.write({})
7978
} catch (err) {
8079
assert.ok(err.code === 'ERR_INVALID_ARG_TYPE')
81-
res.statusCode = 500
8280
res.flush()
8381
res.end()
8482
}
@@ -87,17 +85,16 @@ describe('compression()', function () {
8785
request(server)
8886
.get('/')
8987
.set('Accept-Encoding', 'gzip')
90-
.expect(500, done)
88+
.expect(200, done)
9189
})
9290

93-
it('res.write(null) should fire ERR_STREAM_NULL_VALUES', function (done) {
91+
it('res.write(null) should fire ERR_INVALID_ARG_TYPE or ERR_STREAM_NULL_VALUES', function (done) {
9492
var server = createServer({ threshold: 0 }, function (req, res) {
9593
res.setHeader('Content-Type', 'text/plain')
9694
try {
9795
res.write(null)
9896
} catch (err) {
99-
assert.ok(err.code === 'ERR_STREAM_NULL_VALUES')
100-
res.statusCode = 500
97+
assert.ok(err.code === 'ERR_INVALID_ARG_TYPE' || err.code === 'ERR_STREAM_NULL_VALUES')
10198
res.flush()
10299
res.end()
103100
}
@@ -106,7 +103,7 @@ describe('compression()', function () {
106103
request(server)
107104
.get('/')
108105
.set('Accept-Encoding', 'gzip')
109-
.expect(500, done)
106+
.expect(200, done)
110107
})
111108
})
112109

0 commit comments

Comments
 (0)