'Return a new L{DNSDatagramProtocol} bound to a randomly selected port
number.'

def _connectedProtocol(self, interface=''):

    proto = dns.DNSDatagramProtocol(self, reactor=self._reactor)
    while True:
        try:
            self._reactor.listenUDP(dns.randomSource(), proto, interface=interface)
        except error.CannotListenError:
            pass
        else:
            return proto
