Skip to content

Commit 7c1368f

Browse files
committed
Fixed test server helper sometimes write after end.
It caused Uncaught Error: write after end as follows. It had happened very subtle timing. ``` 1) Websocket Client auto reconnect should resubscribe when reconnecting: Uncaught Error: write after end at writeAfterEnd (node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:288:12) at Connection.Writable.write (node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:332:20) at Connection.<computed> [as pingresp] (node_modules/mqtt-connection/connection.js:95:10) at Connection.<anonymous> (test/server_helpers_for_client_tests.js:96:20) at Connection.emitPacket (node_modules/mqtt-connection/connection.js:10:8) at addChunk (node_modules/duplexify/node_modules/readable-stream/lib/_stream_readable.js:291:12) at readableAddChunk (node_modules/duplexify/node_modules/readable-stream/lib/_stream_readable.js:278:11) at Connection.Readable.push (node_modules/duplexify/node_modules/readable-stream/lib/_stream_readable.js:245:10) at Connection.Duplexify._forward (node_modules/duplexify/index.js:170:26) at DestroyableTransform.onreadable (node_modules/duplexify/index.js:134:10) at emitReadable_ (node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:504:10) at emitReadable (node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:498:62) at addChunk (node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:298:29) at readableAddChunk (node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:278:11) at DestroyableTransform.Readable.push (node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:245:10) at DestroyableTransform.Transform.push (node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:148:32) at Parser.push (node_modules/mqtt-connection/lib/parseStream.js:19:12) at Parser._newPacket (node_modules/mqtt-packet/parser.js:672:12) at Parser.parse (node_modules/mqtt-packet/parser.js:43:45) at DestroyableTransform.process [as _transform] (node_modules/mqtt-connection/lib/parseStream.js:14:17) at DestroyableTransform.Transform._read (node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:184:10) at DestroyableTransform.Transform._write (node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:172:83) at doWrite (node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:428:64) at writeOrBuffer (node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:417:5) at DestroyableTransform.Writable.write (node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:334:11) at Socket.ondata (internal/streams/readable.js:719:22) at addChunk (internal/streams/readable.js:309:12) at readableAddChunk (internal/streams/readable.js:284:9) at Socket.Readable.push (internal/streams/readable.js:223:10) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) at TCP.callbackTrampoline (internal/async_hooks.js:131:14) ```
1 parent 0eb3396 commit 7c1368f

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

test/server_helpers_for_client_tests.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ var MQTTConnection = require('mqtt-connection')
2222
function serverBuilder (protocol, handler) {
2323
var defaultHandler = function (serverClient) {
2424
serverClient.on('auth', function (packet) {
25+
if (serverClient.writable) return false
2526
var rc = 'reasonCode'
2627
var connack = {}
2728
connack[rc] = 0
2829
serverClient.connack(connack)
2930
})
3031
serverClient.on('connect', function (packet) {
32+
if (!serverClient.writable) return false
3133
var rc = 'returnCode'
3234
var connack = {}
3335
if (serverClient.options && serverClient.options.protocolVersion === 5) {
@@ -52,6 +54,7 @@ function serverBuilder (protocol, handler) {
5254
})
5355

5456
serverClient.on('publish', function (packet) {
57+
if (!serverClient.writable) return false
5558
setImmediate(function () {
5659
switch (packet.qos) {
5760
case 0:
@@ -67,10 +70,12 @@ function serverBuilder (protocol, handler) {
6770
})
6871

6972
serverClient.on('pubrel', function (packet) {
73+
if (!serverClient.writable) return false
7074
serverClient.pubcomp(packet)
7175
})
7276

7377
serverClient.on('pubrec', function (packet) {
78+
if (!serverClient.writable) return false
7479
serverClient.pubrel(packet)
7580
})
7681

@@ -79,6 +84,7 @@ function serverBuilder (protocol, handler) {
7984
})
8085

8186
serverClient.on('subscribe', function (packet) {
87+
if (!serverClient.writable) return false
8288
serverClient.suback({
8389
messageId: packet.messageId,
8490
granted: packet.subscriptions.map(function (e) {
@@ -88,11 +94,13 @@ function serverBuilder (protocol, handler) {
8894
})
8995

9096
serverClient.on('unsubscribe', function (packet) {
97+
if (!serverClient.writable) return false
9198
packet.granted = packet.unsubscriptions.map(function () { return 0 })
9299
serverClient.unsuback(packet)
93100
})
94101

95102
serverClient.on('pingreq', function () {
103+
if (!serverClient.writable) return false
96104
serverClient.pingresp()
97105
})
98106

0 commit comments

Comments
 (0)