[Tcsh] [PATCH] REMOTEHOST causes hang with IPv6 addresses

Kimmo Suominen kim at netbsd.org
Fri Feb 24 04:27:15 UTC 2023


Hi Chuck,

Which version of tcsh are you having the issue with, and on which
operating system?

Thanks,
+ Kimmo

On Fri, 24 Feb 2023 at 02:51, Chuck Anderson <cra at fea.st> wrote:
>
> Please consider applying this patch to fix DNS-related hangs on shell
> initialization caused by IPv6 addresses in utmp.
>
> See also https://bugzilla.redhat.com/show_bug.cgi?id=2173067
>
> ------------------------------------------------------------------------
>
> Workaround DNS resolution hang with IPv6 remotehost on shell init
>
> The REMOTEHOST implementation is splitting the remote host info from
> utmp on the first colon.  As the comment indicates, it doesn't work
> with IPv6 addresses.  Just #ifdef 0 out this code in the same
> tradition of all the other #ifdef 0's spread throughout tcsh,
> including an earlier one related to DNS resolution.  This patch
> resolves a DNS hang when attempting to do a DNS lookup on a partial
> IPv6 address during shell initialization.
>
>             /* Look for host:display.screen */
>             /*
>              * There is conflict with IPv6 address and X DISPLAY.  So,
>              * we assume there is no IPv6 address in utmp and don't
>              * touch here.
>              */
>             if ((sptr = strchr(name, ':')) != NULL)
>                 *sptr = '\0';
>
> Signed-off-by: Chuck Anderson <cra at fea.st>
>
> diff --git a/tc.func.c b/tc.func.c
> index 1c1bf77..75aee55 100644
> --- a/tc.func.c
> +++ b/tc.func.c
> @@ -1942,7 +1942,8 @@ getremotehost(int dest_fd)
>         if (name != NULL && *name != '\0' && *name != ':') {
>             struct in_addr addr;
>             char *sptr;
> -
> +           sptr = name;
> +#if 0
>             /* Look for host:display.screen */
>             /*
>              * There is conflict with IPv6 address and X DISPLAY.  So,
> @@ -1951,6 +1952,7 @@ getremotehost(int dest_fd)
>              */
>             if ((sptr = strchr(name, ':')) != NULL)
>                 *sptr = '\0';
> +#endif
>             /* Leave IPv4 address as is */
>             /*
>              * we use inet_addr here, not inet_aton because many systems
> --
> Tcsh mailing list
> Tcsh at astron.com
> https://mailman.astron.com/mailman/listinfo/tcsh


More information about the Tcsh mailing list