From 81d0017e36141c91881cc00305dc46a792330887 Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Tue, 3 May 2022 16:20:33 -0400 Subject: [PATCH] Updated how the error dialog gets the host name to avoid long pauses --- .../src/main/java/docking/ErrLogDialog.java | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/Ghidra/Framework/Docking/src/main/java/docking/ErrLogDialog.java b/Ghidra/Framework/Docking/src/main/java/docking/ErrLogDialog.java index 3eaf3c950d..ae90ec58d2 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/ErrLogDialog.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/ErrLogDialog.java @@ -20,8 +20,7 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.net.InetAddress; import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Date; +import java.util.*; import java.util.List; import javax.swing.*; @@ -117,12 +116,36 @@ public class ErrLogDialog extends AbstractErrDialog { sb.append(" "); sb.append(System.getProperty("os.arch")); sb.append(EOL); - sb.append("Workstation: "); - sb.append(getHostname()); - sb.append(EOL); + + String hostname = getHostnameString(); + if (hostname != null) { + sb.append("Workstation: "); + sb.append(getHostname()); + sb.append(EOL); + } return sb.toString(); } + private String getHostnameString() { + // + // Note: we avoid use of InetAddress; using that to get the host name can timeout + // + String name = null; + Map env = System.getenv(); + if (env.containsKey("COMPUTERNAME")) { + name = env.get("COMPUTERNAME"); + } + else if (env.containsKey("HOSTNAME")) { + name = env.get("HOSTNAME"); + } + + if (name == null) { + return null; + } + + return "Workstation: " + name; + } + private Object getHostname() { String hostname = ""; try { @@ -174,14 +197,14 @@ public class ErrLogDialog extends AbstractErrDialog { detailsPane = new ErrorDetailsSplitPane(); - JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEADING, 5, 5)); - buttonPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + JPanel sideButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEADING, 5, 5)); + sideButtonPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); if (errorReporter != null) { - buttonPanel.add(sendButton); + sideButtonPanel.add(sendButton); } - buttonPanel.add(detailsButton); + sideButtonPanel.add(detailsButton); - introPanel.add(buttonPanel, BorderLayout.EAST); + introPanel.add(sideButtonPanel, BorderLayout.EAST); mainPanel.add(detailsPane, BorderLayout.CENTER); addWorkPanel(mainPanel);