In the Hurd, nothing implicitly changes what your controlling tty is. Only TIOCSCTTY does that (see libc/hurd/hurdioctl.c).
However, any fd you receive in any fashion might be an fd to your controlling tty, so you have to discover and then treat it as such. _hurd_intern_fd takes care of this for you. Thanks, Roland