From 7a9d118929483c38f67df81514011414e229cd66 Mon Sep 17 00:00:00 2001 From: Zahary Karadjov Date: Tue, 6 Apr 2021 21:48:32 +0300 Subject: [PATCH] More proper client closing code --- json_rpc/clients/socketclient.nim | 6 ++++-- json_rpc/clients/websocketclient.nim | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/json_rpc/clients/socketclient.nim b/json_rpc/clients/socketclient.nim index 727cc1ba..54b1a7ac 100644 --- a/json_rpc/clients/socketclient.nim +++ b/json_rpc/clients/socketclient.nim @@ -63,5 +63,7 @@ proc connect*(client: RpcSocketClient, address: string, port: Port) {.async.} = client.loop = processData(client) method close*(client: RpcSocketClient) {.async.} = - # TODO: Stop the processData loop - await client.transport.closeWait() + await client.loop.cancelAndWait() + if not client.transport.isNil: + client.transport.close() + client.transport = nil diff --git a/json_rpc/clients/websocketclient.nim b/json_rpc/clients/websocketclient.nim index 48fcc185..9bdade3e 100644 --- a/json_rpc/clients/websocketclient.nim +++ b/json_rpc/clients/websocketclient.nim @@ -78,5 +78,8 @@ proc connect*(client: RpcWebSocketClient, uri: string, headers: StringTableRef = client.loop = processData(client) method close*(client: RpcWebSocketClient) {.async.} = + await client.loop.cancelAndWait() if not client.transport.isNil: - client.loop.cancel() + client.transport.close() + client.transport = nil +