This commit is contained in:
Cloud Wu
2018-06-25 14:24:04 +08:00
parent a8e5c31381
commit d8ab9dea1b
2 changed files with 18 additions and 6 deletions

View File

@@ -286,17 +286,29 @@ local function resolve(content)
skynet.wakeup(resp.co)
end
local function connect_server()
local fd = socket.udp(function(str, from)
resolve(str)
end)
socket.udp_connect(fd, dns_server.address, dns_server.port)
if dns_server.fd then
socket.close(fd)
else
dns_server.fd = fd
skynet.error(string.format("Udp server open %s:%s (%d)", dns_server.address, dns_server.port, fd))
end
end
local DNS_SERVER_RETIRE = 60 * 100
local function touch_server()
dns_server.retire = skynet.now()
if dns_server.fd then
return
end
dns_server.fd = socket.udp(function(str, from)
resolve(str)
end)
skynet.error(string.format("Udp server open %s:%s (%d)", dns_server.address, dns_server.port, dns_server.fd))
socket.udp_connect(dns_server.fd, dns_server.address, dns_server.port)
connect_server()
local function check_alive()
if skynet.now() > dns_server.retire + DNS_SERVER_RETIRE then
local fd = dns_server.fd

View File

@@ -1542,7 +1542,7 @@ socket_server_send(struct socket_server *ss, int id, const void * buffer, int sz
union sockaddr_all sa;
socklen_t sasz = udp_socket_address(s, s->p.udp_address, &sa);
if (sasz == 0) {
fprintf(stderr, "socket-server : udp (%d) type mismatch.\n", id);
fprintf(stderr, "socket-server : set udp (%d) address first.\n", id);
socket_unlock(&l);
so.free_func((void *)buffer);
return -1;