diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs index 911f793..b9c68cb 100644 --- a/desktop/src-tauri/src/lib.rs +++ b/desktop/src-tauri/src/lib.rs @@ -503,13 +503,29 @@ async fn connect( peer_ok } _ => { - // Timeout or channel error — peer - // may be on an old build without - // Phase 6. Fall back to relay. - emit_call_debug(&app, "connect:peer_report_timeout", serde_json::json!({})); + // Timeout — the peer's report + // didn't arrive. This happens when + // peers are on different relays + // (no federation for MediaPathReport) + // or the peer is on an old build. + // + // If OUR direct path succeeded and + // the transport is still alive, + // trust it — the timeout is a relay + // forwarding issue, not a direct + // path failure. let mut sig = state.signal.lock().await; sig.pending_path_report = None; - false + let trust_direct = local_direct_ok + && race_result.direct_transport.as_ref() + .map(|t| t.connection().close_reason().is_none()) + .unwrap_or(false); + emit_call_debug(&app, "connect:peer_report_timeout", serde_json::json!({ + "local_direct_ok": local_direct_ok, + "direct_transport_alive": trust_direct, + "fallback": if trust_direct { "Direct" } else { "Relay" }, + })); + trust_direct } } }; diff --git a/scripts/build.sh b/scripts/build.sh index e21e701..3fab8d8 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -73,7 +73,7 @@ if [ "$USE_ALT" = "1" ]; then GIT_ORIGIN="ssh://git@git.tbs.amn.gg:2222/manawenuz/wzp.git" # Alt server uploads directly (no .env file) UPLOAD_MODE="direct" - PASTE_URL="http://paste.tbs.amn.gg" + PASTE_URL="https://paste.tbs.manko.yoga" PASTE_AUTH="X2j6szIQaoJGaxZjLkpl3A8IX9/mTkDgdhhgyYFcpaU=" else SERVER_TAG="PRI"