'return first lowest unused session id'

def move_id(self, dst_id, src_id):

    with self.clients_lock:
        if isinstance(dst_id, int):
            dst_client = [x for x in self.clients if (x.desc['id'] == dst_id)]
            if (not dst_client):
                raise ValueError('Client    with    id    {}    not    found'.format(dst_id))
            dst_client = dst_client[0]
        else:
            dst_client = dst_id
        if isinstance(src_id, int):
            dst_client = [x for x in self.clients if (x.desc['id'] == src_id)]
            if (not src_client):
                raise ValueError('Client    with    id    {}    not    found'.format(src_id))
            src_client = src_client[0]
        else:
            src_client = src_id
        with self._current_id_lock:
            self._current_id.remove(dst_client.desc['id'])
            self._current_id.append(src_client.desc['id'])
        dst_client.desc['id'] = src_client.desc['id']
