Skip to content

Commit d79fcd0

Browse files
ferossmafintosh
authored andcommitted
Fix "Cannot read property 'y' of null" (#9) (#10)
* add failing test for #9 For: #9 * Fix "Cannot read property 'y' of null" (#9) Fixes: #9
1 parent 4a986c6 commit d79fcd0

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ function RPC (opts) {
6363
return self.emit('warning', e)
6464
}
6565

66-
var type = message.y && message.y.toString()
66+
var type = message && message.y && message.y.toString()
6767

6868
if (type === 'r' || type === 'e') {
6969
if (!Buffer.isBuffer(message.t)) return

test.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var tape = require('tape')
22
var rpc = require('./')
3+
var dgram = require('dgram')
34

45
tape('query + response', function (t) {
56
var server = rpc()
@@ -92,3 +93,30 @@ tape('timeout', function (t) {
9293
t.end()
9394
})
9495
})
96+
97+
tape('do not crash on empty string', function (t) {
98+
if (/^v0\.10\./.test(process.version)) {
99+
// Sending a zero length udp message does not work on Node 0.10
100+
t.pass('skipping test on Node 0.10')
101+
t.end()
102+
return
103+
}
104+
var server = rpc()
105+
var socket = dgram.createSocket('udp4')
106+
107+
server.on('query', function (query, peer) {
108+
t.fail('should not get a query')
109+
})
110+
111+
server.on('warning', function (err) {
112+
t.ok(err instanceof Error, 'got expected warning')
113+
server.destroy()
114+
socket.close()
115+
t.end()
116+
})
117+
118+
server.bind(0, function () {
119+
var port = server.address().port
120+
socket.send('' /* invalid bencoded data */, 0, 0, port, '127.0.0.1')
121+
})
122+
})

0 commit comments

Comments
 (0)