'Stop and then try to restart a L{tcp.Port}: after a restart, the
server should be able to handle client connections.'

def test_restartListening(self):

    serverFactory = MyServerFactory()
    port = reactor.listenTCP(0, serverFactory, interface='127.0.0.1')
    self.addCleanup(port.stopListening)
    def cbStopListening(ignored):
        port.startListening()
        client = MyClientFactory()
        serverFactory.protocolConnectionMade = defer.Deferred()
        client.protocolConnectionMade = defer.Deferred()
        connector = reactor.connectTCP('127.0.0.1', port.getHost().port, client)
        self.addCleanup(connector.disconnect)
        return defer.gatherResults([serverFactory.protocolConnectionMade, client.protocolConnectionMade]).addCallback(close)
    def close(result):
        (serverProto, clientProto) = result
        clientProto.transport.loseConnection()
        serverProto.transport.loseConnection()
    d = defer.maybeDeferred(port.stopListening)
    d.addCallback(cbStopListening)
    return d
