mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-23 11:33:09 +00:00
fix #852
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user