> if (_hurd_id.aux.nuids == 0) > { > newaux = &ruid; > naux = 1; > }
In this case we don't touch _hurd_id at all, so nothing has changed yet. > else > { > _hurd_id.aux.uids[0] = ruid; > _hurd_id.valid = 0; > } In this case we've clobbered _hurd_id with speculative data that doesn't match our actual auth port. > why is the valid field set to 0 in the case where it is actually updated > with the correct value? In case the call fails? Why don't we also set > valid to 0 in the first case, since _hurd_id is not updated in that > case? At the end we call __setauth to actually do something. That clears _hurd_id.valid when it installs the new port. The only way we ever set the valid flag is in _hurd_check_ids, when we have the information exactly as the auth server reported it. Thanks, Roland