mirror of
https://github.com/OpenVPN/openvpn.git
synced 2025-05-09 05:31:05 +08:00
Fix fatal error at switching remotes (#629)
If remote server has been resolved to multiple addresses, at least one connection attempt has been made and connection to the last address was skipped by management - resolved earlier link socket addrinfo objects will not be cleared neither on instance close nor in the next connection entry loop. This causes fatal error assert: >REMOTE:openvpn.net,1194,udp remote ACCEPT SUCCESS: remote command succeeded >REMOTE:openvpn.net,1194,udp remote SKIP SUCCESS: remote command succeeded >FATAL:Assertion failed at init.c:504 (c->c1.link_socket_addr.current_remote == NULL) Fix this behaviour by cleaning stale addrinfo objects. v2: better comment placement and too long length fix Signed-off-by: Vladislav Grishenko <themiron@yandex-team.ru> Acked-by: Lev Stipakov <lstipakov@gmail.com> Message-Id: <20200916141755.1923-1-themiron@yandex-team.ru> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg21019.html Signed-off-by: Gert Doering <gert@greenie.muc.de> (cherry picked from commit 3ad86c2534a92af137809b6d446d570193e6d01f)
This commit is contained in:
parent
64a76533b6
commit
7fdcd286a1
@ -458,6 +458,17 @@ next_connection_entry(struct context *c)
|
||||
*/
|
||||
if (!c->options.persist_remote_ip)
|
||||
{
|
||||
/* Connection entry addrinfo objects might have been
|
||||
* resolved earlier but the entry itself might have been
|
||||
* skipped by management on the previous loop.
|
||||
* If so, clear the addrinfo objects as close_instance does
|
||||
*/
|
||||
if (c->c1.link_socket_addr.remote_list)
|
||||
{
|
||||
clear_remote_addrlist(&c->c1.link_socket_addr,
|
||||
!c->options.resolve_in_advance);
|
||||
}
|
||||
|
||||
/* close_instance should have cleared the addrinfo objects */
|
||||
ASSERT(c->c1.link_socket_addr.current_remote == NULL);
|
||||
ASSERT(c->c1.link_socket_addr.remote_list == NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user