aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2009-04-20 03:03:07 +0100
committerMatthew Wild <mwild1@gmail.com>2009-04-20 03:03:07 +0100
commitdabd9b0b5364630a603daecd3261d45999eff3c7 (patch)
treedc7e3765689e50d37e541743d7e88ba9f0144b0d /net
parentf0a842ae4bcf5b7d09a08b65275e4b828838cfe5 (diff)
parentcface37b4928e922a43ef37d1bc49ab3a4009479 (diff)
downloadprosody-dabd9b0b5364630a603daecd3261d45999eff3c7.tar.gz
prosody-dabd9b0b5364630a603daecd3261d45999eff3c7.zip
Merging stable into unstable
Diffstat (limited to 'net')
-rw-r--r--net/adns.lua14
-rw-r--r--net/server.lua12
2 files changed, 17 insertions, 9 deletions
diff --git a/net/adns.lua b/net/adns.lua
index 4c0e5c38..07d4fe54 100644
--- a/net/adns.lua
+++ b/net/adns.lua
@@ -8,17 +8,21 @@ local coroutine, tostring, pcall = coroutine, tostring, pcall;
module "adns"
function lookup(handler, qname, qtype, qclass)
- return dns.peek(qname, qtype, qclass) or
- coroutine.wrap(function ()
- log("debug", "Records for "..qname.." not in cache, sending query (%s)...", tostring(coroutine.running()));
+ return coroutine.wrap(function (peek)
+ if peek then
+ log("debug", "Records for %s already cached, using those...", qname);
+ handler(peek);
+ return;
+ end
+ log("debug", "Records for %s not in cache, sending query (%s)...", qname, tostring(coroutine.running()));
dns.query(qname, qtype, qclass);
coroutine.yield(nil); -- Wait for reply
- log("debug", "Reply for "..qname.." (%s)", tostring(coroutine.running()));
+ log("debug", "Reply for %s (%s)", qname, tostring(coroutine.running()));
local ok, err = pcall(handler, dns.peek(qname, qtype, qclass));
if not ok then
log("debug", "Error in DNS response handler: %s", tostring(err));
end
- end)();
+ end)(dns.peek(qname, qtype, qclass));
end
function new_async_socket(sock)
diff --git a/net/server.lua b/net/server.lua
index 0097be3c..77bc2f5c 100644
--- a/net/server.lua
+++ b/net/server.lua
@@ -325,7 +325,9 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
if not ( forced or fatalerror ) then
handler.sendbuffer( )
if bufferqueuelen ~= 0 then -- try again...
- handler.write = nil -- ... but no further writing allowed
+ if handler then
+ handler.write = nil -- ... but no further writing allowed
+ end
toclose = true
return false
end
@@ -337,9 +339,11 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport
socket:close( )
_sendlistlen = removesocket( _sendlist, socket, _sendlistlen )
_socketlist[ socket ] = nil
- _writetimes[ handler ] = nil
- _closelist[ handler ] = nil
- handler = nil
+ if handler then
+ _writetimes[ handler ] = nil
+ _closelist[ handler ] = nil
+ handler = nil
+ end
socket = nil
mem_free( )
if server then