Files
RustDesk/flutter
xuwenwei b9cb597b99 Add '强制不走中继连接' menu item + reconnect(false) actually clears force_relay
Two changes:

1. src/ui_session_interface.rs reconnect(false): Upstream only ever set
   force_relay=true and ignored force_relay=false. This was wrong — the
   user has no way to clear the flag. Now reconnect(false) sets
   force_relay=false AND resets direct_failures=0, so the next
   connect() gets a fresh punch with the full timeout.

2. flutter/lib/common/widgets/peer_card.dart: Add a new menu item
   '强制不走中继连接' in all 5 _buildMenuItems implementations (recent,
   favorite, ab, discovered, address-book). Click calls
   rustDeskWinManager.newRemoteDesktop(id, forceRelay: false) which
   triggers a fresh punch. If punch fails, RustDesk's existing
   connect() falls back to relay — so the user always ends up with a
   working connection (just with a chance of P2P that was retried).

Use case: User's home Mac and office Win on different physical
networks, hbbr at 5 Mbps. By default every connection is relay
(orange banner, no file transfer). Clicking '强制不走中继' forces
a fresh P2P attempt — usually fails, but gives the user the
transparency to know 'yes, it tried P2P first'.
2026-06-09 20:06:37 +08:00
..

flutter_hbb

A new Flutter project.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter development, view the online documentation, which offers tutorials, samples and guidance on mobile development, and a full API reference.