Skip to content

Commit

Permalink
Reconnect when TCP is on use on network-change management command
Browse files Browse the repository at this point in the history
On some newer Android handsets, changing to a different network
often does not trigger a TCP reset but continues using the old
connection (e.g. using mobile connection when WiFi becomes available)

Force a reconnect in these situation to have a more expected beheaviour.

Change-Id: Id4febcceecab33ee5189cd67b249a15d12b84799
Signed-off-by: Arne Schwabe <[email protected]>
Acked-by: Gert Doering <[email protected]>
Message-Id: <[email protected]>
URL: https://www.mail-archive.com/[email protected]/msg30908.html
Signed-off-by: Gert Doering <[email protected]>
  • Loading branch information
schwabe authored and cron2 committed Feb 15, 2025
1 parent 6248e0a commit 43abb41
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/openvpn/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -4412,6 +4412,15 @@ management_callback_network_change(void *arg, bool samenetwork)
return -1;
}

/* On some newer Android handsets, changing to a different network
* often does not trigger a TCP reset but continue using the old
* connection (e.g. using mobile connection when WiFi becomes available */
struct link_socket_info *lsi = get_link_socket_info(c);
if (lsi && proto_is_tcp(lsi->proto) && !samenetwork)
{
return -2;
}

socketfd = c->c2.link_sockets[0]->sd;
if (!c->options.pull || c->c2.tls_multi->use_peer_id || samenetwork)
{
Expand Down

0 comments on commit 43abb41

Please sign in to comment.