dnsproxy: Close the UDP socket on error condition.
The socket is created again on the next request.
Previously, an error condition only caused the event watch to be removed
and then added again on the next request to avoid processing spurious
error events. But in some network environments, the error condition is
caused by an overly aggressive firewall that rejects our UDP packets and
sends an ICMP error packet indicating an unreachable host and/or port.
In some of these cases we can recover by using a different UDP source
port for outgoing requests (i.e. by closing and re-opening the socket).