From 3a466475fdac5faccea173ad155b4d890a89f910 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 22 Sep 2020 13:12:21 -0400 Subject: [PATCH] Better error handling on Steam --- core/src/mindustry/content/UnitTypes.java | 1 - core/src/mindustry/net/ArcNetProvider.java | 16 +++------------- core/src/mindustry/net/Net.java | 16 ++++++++++++++-- desktop/src/mindustry/desktop/steam/SNet.java | 8 ++++++-- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 4e5f0cdecf..b96e250a99 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1365,7 +1365,6 @@ public class UnitTypes implements ContentList{ trailX = 5.5f; trailY = -4f; trailScl = 1.9f; - rotateShooting = false; abilities.add(new StatusFieldAbility(StatusEffects.overclock, 60f * 6, 60f * 6f, 60f)); diff --git a/core/src/mindustry/net/ArcNetProvider.java b/core/src/mindustry/net/ArcNetProvider.java index ea0146312e..bd4f948f89 100644 --- a/core/src/mindustry/net/ArcNetProvider.java +++ b/core/src/mindustry/net/ArcNetProvider.java @@ -61,7 +61,7 @@ public class ArcNetProvider implements NetProvider{ try{ net.handleClientReceived(object); }catch(Throwable e){ - handleException(e); + net.handleException(e); } }); @@ -144,14 +144,14 @@ public class ArcNetProvider implements NetProvider{ try{ client.run(); }catch(Exception e){ - if(!(e instanceof ClosedSelectorException)) handleException(e); + if(!(e instanceof ClosedSelectorException)) net.handleException(e); } }); client.connect(5000, ip, port, port); success.run(); }catch(Exception e){ - handleException(e); + net.handleException(e); } }); } @@ -269,16 +269,6 @@ public class ArcNetProvider implements NetProvider{ return null; } - void handleException(Throwable e){ - if(e instanceof ArcNetException){ - Core.app.post(() -> net.showError(new IOException("mismatch"))); - }else if(e instanceof ClosedChannelException){ - Core.app.post(() -> net.showError(new IOException("alreadyconnected"))); - }else{ - Core.app.post(() -> net.showError(e)); - } - } - class ArcConnection extends NetConnection{ public final Connection connection; diff --git a/core/src/mindustry/net/Net.java b/core/src/mindustry/net/Net.java index 3170a92617..af8d2ff739 100644 --- a/core/src/mindustry/net/Net.java +++ b/core/src/mindustry/net/Net.java @@ -1,10 +1,11 @@ package mindustry.net; import arc.*; -import arc.struct.*; import arc.func.*; -import arc.util.*; +import arc.net.*; +import arc.struct.*; import arc.util.ArcAnnotate.*; +import arc.util.*; import arc.util.pooling.*; import mindustry.gen.*; import mindustry.net.Packets.*; @@ -13,6 +14,7 @@ import net.jpountz.lz4.*; import java.io.*; import java.nio.*; +import java.nio.channels.*; import static mindustry.Vars.*; @@ -36,6 +38,16 @@ public class Net{ this.provider = provider; } + public void handleException(Throwable e){ + if(e instanceof ArcNetException){ + Core.app.post(() -> showError(new IOException("mismatch"))); + }else if(e instanceof ClosedChannelException){ + Core.app.post(() -> showError(new IOException("alreadyconnected"))); + }else{ + Core.app.post(() -> showError(e)); + } + } + /** Display a network error. Call on the graphics thread. */ public void showError(Throwable e){ diff --git a/desktop/src/mindustry/desktop/steam/SNet.java b/desktop/src/mindustry/desktop/steam/SNet.java index 86a2ecf4db..5d603067f3 100644 --- a/desktop/src/mindustry/desktop/steam/SNet.java +++ b/desktop/src/mindustry/desktop/steam/SNet.java @@ -79,10 +79,14 @@ public class SNet implements SteamNetworkingCallback, SteamMatchmakingCallback, Log.err(e); } }else if(currentServer != null && fromID == currentServer.getAccountID()){ - net.handleClientReceived(output); + try{ + net.handleClientReceived(output); + }catch(Throwable t){ + net.handleException(t); + } } }catch(SteamException e){ - e.printStackTrace(); + Log.err(e); } } }