From d3aa33db9f239f54c814cd66502803b8ac997af9 Mon Sep 17 00:00:00 2001 From: Philip Khaisman Date: Fri, 19 Jun 2026 14:50:00 -0400 Subject: [PATCH 1/4] Fix infinite look when connecting over TCP with TLS enabled --- .vscode/settings.json | 3 +++ .../java/org/sensorhub/impl/comm/TCPCommProvider.java | 10 ++++------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..7b016a89fb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java b/sensorhub-core/src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java index 7526e124fa..846918901a 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java @@ -82,17 +82,15 @@ protected void doStart() throws SensorHubException SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); socket = factory.createSocket(addr, config.remotePort); ((SSLSocket) socket).startHandshake(); - is = socket.getInputStream(); - os = socket.getOutputStream(); } else { SocketAddress endpoint = new InetSocketAddress(addr, config.remotePort); socket = new Socket(); socket.connect(endpoint, this.config.connection.connectTimeout); - is = socket.getInputStream(); - os = socket.getOutputStream(); -// isRetrying = false; - break; } + + is = socket.getInputStream(); + os = socket.getOutputStream(); + break; } catch (IOException e) { if(++count >= retryAttempts) throw new SensorHubException("Cannot connect to remote host " From 8dabfeb6fe2b553573b88207d0c145b91fc9f8e8 Mon Sep 17 00:00:00 2001 From: Philip Khaisman Date: Fri, 19 Jun 2026 14:51:57 -0400 Subject: [PATCH 2/4] Remove .vscode file from changes --- .vscode/settings.json | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 7b016a89fb..0000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.compile.nullAnalysis.mode": "automatic" -} \ No newline at end of file From ce8dd961c3f4dfdd739e5e2c78d42d8f62eb99bd Mon Sep 17 00:00:00 2001 From: Philip Khaisman Date: Fri, 19 Jun 2026 14:54:40 -0400 Subject: [PATCH 3/4] Remove comment --- .../src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java b/sensorhub-core/src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java index 846918901a..d902d77229 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/comm/TCPCommProvider.java @@ -73,7 +73,7 @@ protected void doStart() throws SensorHubException int count = 0; int retryAttempts = this.config.connection.reconnectAttempts; -// boolean isRetrying = retryAttempts >= 0; + while(true) { try { InetAddress addr = InetAddress.getByName(config.remoteHost); From 5ef7cd08c857070e41b1012ea92a9a9fc69f5764 Mon Sep 17 00:00:00 2001 From: Ian Patterson Date: Tue, 28 Jul 2026 21:00:41 -0500 Subject: [PATCH 4/4] fix(webui): fix ClassCastException displaying range component values Range components (QuantityRange etc.) are SimpleComponents but not DataValues, so rendering their latest value in the admin UI crashed. getStringValue(SimpleComponent) handles scalars and ranges alike. --- .../src/main/java/org/sensorhub/ui/SWECommonForm.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWECommonForm.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWECommonForm.java index face5ac2b0..0e2027e956 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWECommonForm.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWECommonForm.java @@ -15,7 +15,6 @@ package org.sensorhub.ui; import org.sensorhub.ui.api.UIConstants; -import org.vast.data.DataValue; import org.vast.swe.SWEDataTypeUtils; import net.opengis.swe.v20.DataArray; import net.opengis.swe.v20.DataChoice; @@ -168,7 +167,11 @@ protected String getCaption(DataComponent dataComponent, boolean showValues) if (showValues && dataComponent.hasData()) { - var str = sweUtils.getStringValue((DataValue)dataComponent); + // cast to SimpleComponent (not DataValue): range components + // (QuantityRange, etc.) are SimpleComponents but not DataValues. + // getStringValue(SimpleComponent) already renders both scalars + // and ranges, so this is the same call for scalars. + var str = sweUtils.getStringValue((SimpleComponent)dataComponent); if ("NaN".equals(str) || "null".equals(str)) str = "n/a";