Mercurial > prosody-hg
comparison net/adns.lua @ 2558:0a65fc0c7bee
net.adns: Use different flavour of voodoo to make UDP sockets work smoothly with libevent (no packet merging)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 31 Jan 2010 19:54:56 +0000 |
| parents | 50d1ba86a959 |
| children | 61e5eff54415 |
comparison
equal
deleted
inserted
replaced
| 2557:e5254ccd5ef8 | 2558:0a65fc0c7bee |
|---|---|
| 11 | 11 |
| 12 local log = require "util.logger".init("adns"); | 12 local log = require "util.logger".init("adns"); |
| 13 | 13 |
| 14 local t_insert, t_remove = table.insert, table.remove; | 14 local t_insert, t_remove = table.insert, table.remove; |
| 15 local coroutine, tostring, pcall = coroutine, tostring, pcall; | 15 local coroutine, tostring, pcall = coroutine, tostring, pcall; |
| 16 | |
| 17 local function dummy_send(sock, data, i, j) return (j-i)+1; end | |
| 16 | 18 |
| 17 module "adns" | 19 module "adns" |
| 18 | 20 |
| 19 function lookup(handler, qname, qtype, qclass) | 21 function lookup(handler, qname, qtype, qclass) |
| 20 return coroutine.wrap(function (peek) | 22 return coroutine.wrap(function (peek) |
| 63 log("warn", "handler is nil"); | 65 log("warn", "handler is nil"); |
| 64 end | 66 end |
| 65 | 67 |
| 66 handler.settimeout = function () end | 68 handler.settimeout = function () end |
| 67 handler.setsockname = function (_, ...) return sock:setsockname(...); end | 69 handler.setsockname = function (_, ...) return sock:setsockname(...); end |
| 68 handler.setpeername = function (_, ...) peername = (...); local ret = sock:setpeername(...); _:set_send(sock.send); return ret; end | 70 handler.setpeername = function (_, ...) peername = (...); local ret = sock:setpeername(...); _:set_send(dummy_send); return ret; end |
| 69 handler.connect = function (_, ...) return sock:connect(...) end | 71 handler.connect = function (_, ...) return sock:connect(...) end |
| 70 handler.send = function (_, data) _:write(data); return _.sendbuffer and _.sendbuffer(); end | 72 --handler.send = function (_, data) _:write(data); return _.sendbuffer and _.sendbuffer(); end |
| 73 handler.send = function (_, data) return sock:send(data); end | |
| 71 return handler; | 74 return handler; |
| 72 end | 75 end |
| 73 | 76 |
| 74 dns:socket_wrapper_set(new_async_socket); | 77 dns:socket_wrapper_set(new_async_socket); |
| 75 | 78 |
