From 606cd23debf924b366df0533a3b37aab09f6fa42 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Wed, 13 Jan 2021 23:43:09 +0100 Subject: [PATCH] Bugfix --- .../tdlight/tdlibsession/td/direct/AsyncTdDirectImpl.java | 6 +++--- .../java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/it/tdlight/tdlibsession/td/direct/AsyncTdDirectImpl.java b/src/main/java/it/tdlight/tdlibsession/td/direct/AsyncTdDirectImpl.java index c2d6dd5..85c2984 100644 --- a/src/main/java/it/tdlight/tdlibsession/td/direct/AsyncTdDirectImpl.java +++ b/src/main/java/it/tdlight/tdlibsession/td/direct/AsyncTdDirectImpl.java @@ -87,9 +87,9 @@ public class AsyncTdDirectImpl implements AsyncTdDirect { // Send close if the stream is disposed before tdlib is closed emitter.onDispose(() -> { closedFromTd.asMono().take(Duration.ofMillis(10)).switchIfEmpty(Mono.fromRunnable(() -> client.send(new Close(), - result -> logger.trace("Close result: {}", result), - ex -> logger.trace("Error when disposing td client", ex) - ))).subscribe(); + result -> logger.warn("Close result: {}", result), + ex -> logger.error("Error when disposing td client", ex) + ))).subscribeOn(tdScheduler).subscribe(); }); }).subscribeOn(tdScheduler); } diff --git a/src/main/java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java b/src/main/java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java index 4fae33a..c77a35a 100644 --- a/src/main/java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java +++ b/src/main/java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java @@ -130,7 +130,7 @@ public class AsyncTdEasy { } private Flux getIncomingUpdates(boolean includePreAuthUpdates) { - return Flux.from(incomingUpdatesCo).subscribeOn(scheduler).doOnComplete(() -> requestedDefinitiveExit.onNext(true)); + return Flux.from(incomingUpdatesCo).doFinally(s -> requestedDefinitiveExit.onNext(true)).subscribeOn(scheduler); } /** @@ -294,6 +294,10 @@ public class AsyncTdEasy { .then(Mono.from(requestedDefinitiveExit).single()) .filter(closeRequested -> !closeRequested) .doOnSuccess(v -> requestedDefinitiveExit.onNext(true)) + .then(td.execute(new TdApi.Close(), false)) + .doOnNext(ok -> { + logger.debug("Received Ok after TdApi.Close"); + }) .then(authState .filter(authorizationState -> authorizationState.getConstructor() == AuthorizationStateClosed.CONSTRUCTOR) .take(1)