]> git.basschouten.com Git - openhab-addons.git/commitdiff
[iCalendar] Fix httpclient getting stuck with broken requests (#11866)
authorStefan Triller <t2000@users.noreply.github.com>
Fri, 31 Dec 2021 10:46:36 +0000 (11:46 +0100)
committerGitHub <noreply@github.com>
Fri, 31 Dec 2021 10:46:36 +0000 (11:46 +0100)
* [iCalendar] Fix httpclient getting stuck with broken requests

Fixes #9827

Signed-off-by: Stefan Triller <github@stefantriller.de>
bundles/org.openhab.binding.icalendar/src/main/java/org/openhab/binding/icalendar/internal/handler/PullJob.java

index 045100cc6f443edf5f55e10e18eacdb477c32701..65db2a29caea4ba5cb37269ab906a2efab078254 100644 (file)
@@ -102,22 +102,25 @@ class PullJob implements Runnable {
         try {
             response = asyncListener.get(HTTP_TIMEOUT_SECS, TimeUnit.SECONDS);
         } catch (InterruptedException e1) {
-            logger.warn("Download of calendar was interrupted.");
-            logger.debug("InterruptedException message is: {}", e1.getMessage());
+            logger.warn("Download of calendar was interrupted: {}", e1.getMessage());
+            request.abort(e1.getCause() != null ? e1.getCause() : e1);
             return;
         } catch (TimeoutException e1) {
-            logger.warn("Download of calendar timed out (waited too long for headers).");
-            logger.debug("TimeoutException message is: {}", e1.getMessage());
+            logger.warn("Download of calendar timed out (waited too long for headers): {}", e1.getMessage());
+            request.abort(e1.getCause() != null ? e1.getCause() : e1);
             return;
         } catch (ExecutionException e1) {
-            logger.warn("Download of calendar failed.");
-            logger.debug("ExecutionException message is: {}", e1.getCause().getMessage());
+            String msg = e1.getCause() != null ? e1.getCause().getMessage() : "";
+            logger.warn("Download of calendar failed with ExecutionException: {}", msg);
+            request.abort(e1.getCause() != null ? e1.getCause() : e1);
             return;
         }
 
         if (response.getStatus() != HttpStatus.OK_200) {
             logger.warn("Response status for getting \"{}\" was {} instead of 200. Ignoring it.", sourceURI,
                     response.getStatus());
+            request.abort(new IllegalStateException(
+                    "Got response status " + response.getStatus() + " while requesting " + sourceURI));
             return;
         }