'Return the next authentication service for the pair of
user_input and session.  This function handles fallback.
@param discover: a callable that takes a URL and returns a
list of services
@type discover: str -> [service]
@return: the next available service'

def getNextService(self, discover):

    manager = self.getManager()
    if ((manager is not None) and (not manager)):
        self.destroyManager()
    if (not manager):
        (yadis_url, services) = discover(self.url)
        manager = self.createManager(services, yadis_url)
    if manager:
        service = manager.next()
        manager.store(self.session)
    else:
        service = None
    return service
