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@xxxxxxxxxxx>: > > 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@xxxxxxxxxxx > > https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev > > -- Michihito Shigemura _______________________________________________ openssh-unix-dev mailing list openssh-unix-dev@xxxxxxxxxxx https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev