node dnsLagDnsServer.js
node dnsLagServer.js
node dnsLag.js
--- dnsLag.js should timeout if the timeout was affected
| var dns = require("dns"); | |
| var http = require("http"); | |
| dns.setServers(["127.0.0.1"]); | |
| var req = http.request({ | |
| host : "www.foo.com", // routed through local so it doesn't matter | |
| port : 8080 | |
| }, function(res) { | |
| var data = ""; | |
| res.on("data", (chunk) => data += chunk); | |
| res.on("end", () => { | |
| console.log("request complete", data); | |
| }); | |
| }); | |
| req.setTimeout(500); // this timeout should halt the request becuase DNS will take 1000ms, but it doesn't | |
| req.on("error", (e) => { | |
| console.log("error", e); | |
| }); | |
| req.end(); |
| var proxyDns = require("proxy-dns"); | |
| var server = new proxyDns.default({ | |
| ttl : 600 | |
| }); | |
| server.use(function* (next) { | |
| console.log("got request", this.domain); | |
| yield new Promise((resolve, reject) => { | |
| setTimeout(() => { | |
| this.answers = ["127.0.0.1"]; | |
| resolve(); | |
| }, 1000); | |
| }); | |
| yield next; | |
| }); | |
| server.listen(53); |
| var http = require("http"); | |
| var server = http.createServer((req, res) => { | |
| console.log("connection received"); | |
| setTimeout(function() { | |
| res.end("content"); | |
| }, 100); | |
| }); | |
| server.listen(8080, () => { | |
| console.log("server booted"); | |
| }); |