X-Git-Url: https://git.distorted.org.uk/~mdw/with-authinfo-kludge/blobdiff_plain/e8e64c07398b864c88e709ce90e902151f95268b..e0b2f3277cbedeca090d16552c730eb8d40b638b:/with-authinfo-kludge diff --git a/with-authinfo-kludge b/with-authinfo-kludge index d98aa83..950ea3b 100755 --- a/with-authinfo-kludge +++ b/with-authinfo-kludge @@ -23,8 +23,6 @@ ## things to do ## -## split parsing and resolution of addresses -## default port ## pidfiles my $VERSION = "0.1.0~unfinished"; @@ -200,7 +198,7 @@ sub chew_cli_server_configs (\@) { ARG: for (;;) { last ARG unless @$args; - my $arg = shift $args; + my $arg = shift @$args; if ($arg eq "+") { last ARG; } elsif ($arg =~ /^\+/) { $server = substr $arg, 1; @@ -298,7 +296,7 @@ sub dump_configuration () { for my $s (sort keys %S) { inform "Server `$s' parameters..."; - for my $p (sort keys $S{$s}) { inform_param $p, $S{$s}{$p}; } + for my $p (sort keys %{$S{$s}}) { inform_param $p, $S{$s}{$p}; } } } @@ -592,6 +590,8 @@ sub fix_server_config ($) { $s->{"_proxy_sockdir"} = undef; $s->{"_proxy_server"} = defined $s->{"via"} ? $s->{"sshbind"} : $s->{"remote"}; + $s->{"_proxy_server"} =~ s/:119$//; + $s->{"_proxy_server"} =~ s/^\[(.*)\]$/$1/; $s->{"_sshkid"} = undef; $s->{"_ssh_master"} = undef; } @@ -766,11 +766,13 @@ sub run_client (@) { sub accept_loop () { my $rfd_in = ""; for my $fd (keys %SERVMAP) { vec($rfd_in, $fd, 1) = 1; } - for (;;) { + SELECT: for (;;) { my ($n, $t) = select my $rfd_out = $rfd_in, undef, undef, undef; - $n >= 0 || $! == EINTR or sysfail "select failed: $!"; + if ($n >= 0) { } + elsif ($! == EINTR) { next SELECT; } + else { sysfail "select failed: $!"; } FD: for my $fd (keys %SERVMAP) { - next unless vec $rfd_out, $fd, 1; + next FD unless vec $rfd_out, $fd, 1; my ($s, $a, $sk) = @{$SERVMAP{$fd}}; my $nsk; unless (accept $nsk, $sk) {