Software / code / prosody
Comparison
net/adns.lua @ 6791:e813e8cf6046
Merge 0.10->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 20 Aug 2015 13:05:22 +0200 |
| parent | 6780:647adfd8f738 |
| child | 7475:ee878fa78b8b |
comparison
equal
deleted
inserted
replaced
| 6776:4412a2307c89 | 6791:e813e8cf6046 |
|---|---|
| 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 | 16 |
| 17 local function dummy_send(sock, data, i, j) return (j-i)+1; end | 17 local function dummy_send(sock, data, i, j) return (j-i)+1; end |
| 18 | 18 |
| 19 module "adns" | 19 local _ENV = nil; |
| 20 | 20 |
| 21 function lookup(handler, qname, qtype, qclass) | 21 local function lookup(handler, qname, qtype, qclass) |
| 22 return coroutine.wrap(function (peek) | 22 return coroutine.wrap(function (peek) |
| 23 if peek then | 23 if peek then |
| 24 log("debug", "Records for %s already cached, using those...", qname); | 24 log("debug", "Records for %s already cached, using those...", qname); |
| 25 handler(peek); | 25 handler(peek); |
| 26 return; | 26 return; |
| 41 log("error", "Error in DNS response handler: %s", tostring(err)); | 41 log("error", "Error in DNS response handler: %s", tostring(err)); |
| 42 end | 42 end |
| 43 end)(dns.peek(qname, qtype, qclass)); | 43 end)(dns.peek(qname, qtype, qclass)); |
| 44 end | 44 end |
| 45 | 45 |
| 46 function cancel(handle, call_handler, reason) | 46 local function cancel(handle, call_handler, reason) |
| 47 log("warn", "Cancelling DNS lookup for %s", tostring(handle[3])); | 47 log("warn", "Cancelling DNS lookup for %s", tostring(handle[3])); |
| 48 dns.cancel(handle[1], handle[2], handle[3], handle[4], call_handler); | 48 dns.cancel(handle[1], handle[2], handle[3], handle[4], call_handler); |
| 49 end | 49 end |
| 50 | 50 |
| 51 function new_async_socket(sock, resolver) | 51 local function new_async_socket(sock, resolver) |
| 52 local peername = "<unknown>"; | 52 local peername = "<unknown>"; |
| 53 local listener = {}; | 53 local listener = {}; |
| 54 local handler = {}; | 54 local handler = {}; |
| 55 local err; | 55 local err; |
| 56 function listener.onincoming(conn, data) | 56 function listener.onincoming(conn, data) |
| 86 return handler; | 86 return handler; |
| 87 end | 87 end |
| 88 | 88 |
| 89 dns.socket_wrapper_set(new_async_socket); | 89 dns.socket_wrapper_set(new_async_socket); |
| 90 | 90 |
| 91 return _M; | 91 return { |
| 92 lookup = lookup; | |
| 93 cancel = cancel; | |
| 94 new_async_socket = new_async_socket; | |
| 95 }; |