diff --git a/dns-request.js b/dns-request.js index dca6f9c..d866191 100644 --- a/dns-request.js +++ b/dns-request.js @@ -102,12 +102,28 @@ function resolve(queryAb, opts) { } function resolveJson(query, opts) { - var queryAb = dnsjs.DNSPacket.write(query); + var queryAb; + try { + queryAb = dnsjs.DNSPacket.write(query); + } catch(e) { + if ('function' === typeof opts.onError) { opts.onError(e); return; } + throw e; + } + //console.log('[DEV] nameserver', opts.nameserver); var options = { onError: opts.onError , onMessage: function (nb) { - var packet = dnsjs.DNSPacket.parse(nb.buffer.slice(nb.byteOffset, nb.byteOffset + nb.byteLength)); + var packet; + try { + packet = dnsjs.DNSPacket.parse(nb.buffer.slice(nb.byteOffset, nb.byteOffset + nb.byteLength)); + } catch(e) { + if (opts.onError) { opts.onError(e); return; } + + console.error("[Error] couldn't parse incoming message"); + console.error(e); + return; + } opts.onMessage(packet); }