600 self.socketset = self.socketset or {}; |
600 self.socketset = self.socketset or {}; |
601 |
601 |
602 local sock = self.socket[servernum]; |
602 local sock = self.socket[servernum]; |
603 if sock then return sock; end |
603 if sock then return sock; end |
604 |
604 |
605 sock = socket.udp(); |
605 local err; |
|
606 sock, err = socket.udp(); |
|
607 if not sock then |
|
608 return nil, err; |
|
609 end |
606 if self.socket_wrapper then sock = self.socket_wrapper(sock, self); end |
610 if self.socket_wrapper then sock = self.socket_wrapper(sock, self); end |
607 sock:settimeout(0); |
611 sock:settimeout(0); |
608 -- todo: attempt to use a random port, fallback to 0 |
612 -- todo: attempt to use a random port, fallback to 0 |
609 sock:setsockname('*', 0); |
613 sock:setsockname('*', 0); |
610 sock:setpeername(self.server[servernum], 53); |
614 sock:setpeername(self.server[servernum], 53); |