From cd4933419991eb086d6d33f71ed3367a75807273 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 16 Nov 2014 14:35:36 -0800 Subject: [PATCH] If we've previously been able to reach a machine via a local or remote IP, always try that one first when polling on subsequent tries --- .../limelight/computers/ComputerManagerService.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/limelight/computers/ComputerManagerService.java b/app/src/main/java/com/limelight/computers/ComputerManagerService.java index e1f9ea87..11049d1d 100644 --- a/app/src/main/java/com/limelight/computers/ComputerManagerService.java +++ b/app/src/main/java/com/limelight/computers/ComputerManagerService.java @@ -347,7 +347,18 @@ public class ComputerManagerService extends Service { } private boolean doPollMachine(ComputerDetails details) { - return pollComputer(details, true); + if (details.reachability == ComputerDetails.Reachability.UNKNOWN || + details.reachability == ComputerDetails.Reachability.OFFLINE) { + // Always try local first to avoid potential UDP issues when + // attempting to stream via the router's external IP address + // behind its NAT + return pollComputer(details, true); + } + else { + // If we're already reached a machine via a particular IP address, + // always try that one first + return pollComputer(details, details.reachability == ComputerDetails.Reachability.LOCAL); + } } @Override