From 4548f22b3811cbd59dd2f19fe80351bb12c9f3b8 Mon Sep 17 00:00:00 2001 From: Tim Kosse Date: Mon, 23 Jan 2017 18:51:03 +0100 Subject: [PATCH] Add error variable to loop condition In case of connection errors before and during the handshake, net_select_result is retrying with the next address of the server. It however was immediately going to the last address as it was not checking the return value of try_connect for all intermediate addresses. --- unix/uxnet.c | 2 +- windows/winnet.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/unix/uxnet.c b/unix/uxnet.c index 730f1fa7..75f809d2 100644 --- a/unix/uxnet.c +++ b/unix/uxnet.c @@ -1351,7 +1351,7 @@ static int net_select_result(int fd, int event) int err = errno; if (s->addr) { plug_log(s->plug, 1, s->addr, s->port, strerror(err), err); - while (s->addr && sk_nextaddr(s->addr, &s->step)) { + while (err && s->addr && sk_nextaddr(s->addr, &s->step)) { err = try_connect(s); } } diff --git a/windows/winnet.c b/windows/winnet.c index b4264def..72360639 100644 --- a/windows/winnet.c +++ b/windows/winnet.c @@ -1580,7 +1580,7 @@ int select_result(WPARAM wParam, LPARAM lParam) if (s->addr) { plug_log(s->plug, 1, s->addr, s->port, winsock_error_string(err), err); - while (s->addr && sk_nextaddr(s->addr, &s->step)) { + while (err && s->addr && sk_nextaddr(s->addr, &s->step)) { err = try_connect(s); } } -- 2.45.2