From 07e68d463cc7c8c6b5afceda0fa8366a2b4c4fef Mon Sep 17 00:00:00 2001 From: Brendan Robert Date: Mon, 20 Jul 2015 20:26:58 -0500 Subject: [PATCH] Fixed issue with reloading card settings on start and hang on SSC/Smartmodem init --- src/main/java/jace/config/Configuration.java | 4 +++- src/main/java/jace/hardware/CardSSC.java | 17 +++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/jace/config/Configuration.java b/src/main/java/jace/config/Configuration.java index d9761df..e60459d 100644 --- a/src/main/java/jace/config/Configuration.java +++ b/src/main/java/jace/config/Configuration.java @@ -492,8 +492,10 @@ public class Configuration implements Reconfigurable { } newRoot.getChildren().stream().forEach((child) -> { String childName = child.toString(); + ConfigNode oldChild = oldRoot.findChild(childName); + if (oldChild == null) {oldChild = oldRoot.findChild(child.id);} // System.out.println("Applying settings for " + childName); - applyConfigTree(child, oldRoot.findChild(childName)); + applyConfigTree(child, oldChild); }); } diff --git a/src/main/java/jace/hardware/CardSSC.java b/src/main/java/jace/hardware/CardSSC.java index aa5a4e8..d20f764 100644 --- a/src/main/java/jace/hardware/CardSSC.java +++ b/src/main/java/jace/hardware/CardSSC.java @@ -122,6 +122,15 @@ public class CardSSC extends Card implements Reconfigurable { boolean newInputAvailable = false; public void socketMonitor() { + try { + socket = new ServerSocket(IP_PORT); + socket.setReuseAddress(true); + socket.setSoTimeout(0); + } catch (IOException ex) { + Logger.getLogger(CardSSC.class.getName()).log(Level.SEVERE, null, ex); + suspend(); + return; + } while (socket != null && !socket.isClosed()) { try { Logger.getLogger(CardSSC.class.getName()).log(Level.INFO, "Slot " + getSlot() + " listening on port " + IP_PORT, (Throwable) null); @@ -458,19 +467,11 @@ public class CardSSC extends Card implements Reconfigurable { TRANS_IRQ_ENABLED = false; IRQ_TRIGGERED = false; - try { - socket = new ServerSocket(IP_PORT); - socket.setReuseAddress(true); - socket.setSoTimeout(0); //socket.setReuseAddress(true); listenThread = new Thread(this::socketMonitor); listenThread.setDaemon(false); listenThread.setName("SSC port listener, slot" + getSlot()); listenThread.start(); - } catch (IOException ex) { - suspend(); - Logger.getLogger(CardSSC.class.getName()).log(Level.SEVERE, null, ex); - } } } }