[PATCH] Enable ConnectTimeout with ConnectionAttempts
重村道人
i.am.shige at gmail.com
Sat Dec 15 04:47:28 AEDT 2018
Thank you for your replying.
> This diff seems to make the connect timeout apply independently to each
> TCP connection and then whatever is left of the timeout interval to be
> applied to banner exchange. Is that correct?
Yes, it's correct. I forgot about banner exchange.
I want to test "Connection timed out during banner exchange" error,
but I don't know how to audit this error on purpose.
Do you have any ideas?
2018年12月14日(金) 11:32 Damien Miller <djm at mindrot.org>:
>
> On Sun, 9 Dec 2018, Michihito Shigemura wrote:
>
> > Fix bug ConnectTimeout=N only works on the first ConnectionAttempts
> > https://bugzilla.mindrot.org/show_bug.cgi?id=2918
>
> Thanks for the reminder :)
>
> ConnectTimeout is supposed to apply to both the initial TCP connection
> and the subsequent banner exchange. This is done to allow it to detect
> servers (or middleboxes) that accept the connection but never return
> a banner.
>
> This diff seems to make the connect timeout apply independently to each
> TCP connection and then whatever is left of the timeout interval to be
> applied to banner exchange. Is that correct?
>
> If so, IMO it's a reasonable compromise between two fairly conflictual
> options...
>
> > sshconnect.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/sshconnect.c b/sshconnect.c
> > index 4862da5e..b837a83a 100644
> > --- a/sshconnect.c
> > +++ b/sshconnect.c
> > @@ -454,11 +454,12 @@ waitrfd(int fd, int *timeoutp)
> > {
> > struct pollfd pfd;
> > struct timeval t_start;
> > - int oerrno, r;
> > + int oerrno, r, next_timeout;
> >
> > monotime_tv(&t_start);
> > pfd.fd = fd;
> > pfd.events = POLLIN;
> > + next_timeout = *timeoutp;
> > for (; *timeoutp >= 0;) {
> > r = poll(&pfd, 1, *timeoutp);
> > oerrno = errno;
> > @@ -473,6 +474,7 @@ waitrfd(int fd, int *timeoutp)
> > }
> > /* timeout */
> > errno = ETIMEDOUT;
> > + *timeoutp = next_timeout;
> > return -1;
> > }
> >
> > --
> > 2.19.2
> >
> > _______________________________________________
> > openssh-unix-dev mailing list
> > openssh-unix-dev at mindrot.org
> > https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
> >
--
Michihito Shigemura
More information about the openssh-unix-dev
mailing list