diff --git a/bundles/org.openhab.binding.avmfritz/src/main/java/org/openhab/binding/avmfritz/internal/callmonitor/CallMonitor.java b/bundles/org.openhab.binding.avmfritz/src/main/java/org/openhab/binding/avmfritz/internal/callmonitor/CallMonitor.java index 55707339f188..6905c9aa4910 100644 --- a/bundles/org.openhab.binding.avmfritz/src/main/java/org/openhab/binding/avmfritz/internal/callmonitor/CallMonitor.java +++ b/bundles/org.openhab.binding.avmfritz/src/main/java/org/openhab/binding/avmfritz/internal/callmonitor/CallMonitor.java @@ -75,6 +75,10 @@ public CallMonitor(String ip, BoxHandler handler, ScheduledExecutorService sched */ public void dispose() { reconnectJob.cancel(true); + CallMonitorThread monitorThread = this.monitorThread; + if (monitorThread != null) { + monitorThread.interrupt(); + } } public class CallMonitorThread extends Thread { @@ -120,11 +124,13 @@ public void run() { handler.setStatusInfo(ThingStatus.ONLINE, ThingStatusDetail.NONE, null); while (!interrupted) { try { - String line = reader.readLine(); - if (line != null) { - logger.debug("Received raw call string from fbox: {}", line); - CallEvent ce = new CallEvent(line); - handleCallEvent(ce); + if (reader.ready()) { + String line = reader.readLine(); + if (line != null) { + logger.debug("Received raw call string from fbox: {}", line); + CallEvent ce = new CallEvent(line); + handleCallEvent(ce); + } } } catch (IOException e) { if (interrupted) { @@ -136,8 +142,9 @@ public void run() { break; } finally { try { - sleep(1000L); + sleep(500L); } catch (InterruptedException e) { + interrupted = true; } } }