From 9b449fd3a8574d33ba117b538ea768e1380960ee Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 5 Oct 2021 13:46:38 +0200 Subject: [PATCH] Stop clients when interrupted --- .../tdlight/common/internal/ResponseReceiver.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/it/tdlight/common/internal/ResponseReceiver.java b/src/main/java/it/tdlight/common/internal/ResponseReceiver.java index aef9bd1..8a55f0f 100644 --- a/src/main/java/it/tdlight/common/internal/ResponseReceiver.java +++ b/src/main/java/it/tdlight/common/internal/ResponseReceiver.java @@ -65,7 +65,9 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { public void run() { int[] sortIndex; try { - while (!Thread.interrupted() && ((!closeCalled.get() && !jvmShutdown.get()) || !registeredClients.isEmpty())) { + boolean interrupted; + while (!(interrupted = Thread.interrupted()) + && ((!closeCalled.get() && !jvmShutdown.get()) || !registeredClients.isEmpty())) { int resultsCount = NativeClientAccess.receive(clientIds, eventIds, events, 2.0 /*seconds*/); if (resultsCount <= 0) { @@ -165,6 +167,16 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { this.registeredClients.addAll(closedClients); } } + + if (interrupted) { + if (!jvmShutdown.get()) { + for (Integer clientId : this.registeredClients) { + long[] clientEventIds = new long[0]; + TdApi.Object[] clientEvents = new TdApi.Object[0]; + eventsHandler.handleClientEvents(clientId, true, clientEventIds, clientEvents); + } + } + } } finally { this.closeWait.countDown(); }