aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2025-03-24 17:48:19 +0100
committerJustin M. Keyes <justinkz@gmail.com>2025-03-24 17:48:19 +0100
commitc49162be595852c04c56c14a1997e25ac69b7312 (patch)
tree0b3b171de077afad2e08fe8b5965667d8ea82c8e
parente73a3f1edc3ea9fe990a58f4269269c2d51fcff8 (diff)
downloadrneovim-c49162be595852c04c56c14a1997e25ac69b7312.tar.gz
rneovim-c49162be595852c04c56c14a1997e25ac69b7312.tar.bz2
rneovim-c49162be595852c04c56c14a1997e25ac69b7312.zip
fix(channel): log after (not before) channel-close
Problem: chan_close_on_err() writes to the log file before peforming its actual work. This could be slightly misleading in terms of log timestamps, or could delay important work on Windows where file-open/write can be slow. Solution: Log after closing the channel, instead of before.
-rw-r--r--src/nvim/msgpack_rpc/channel.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c
index ff2d260808..fe480fff45 100644
--- a/src/nvim/msgpack_rpc/channel.c
+++ b/src/nvim/msgpack_rpc/channel.c
@@ -521,7 +521,6 @@ void rpc_free(Channel *channel)
/// Logs a fatal error received from a channel, then closes the channel.
static void chan_close_on_err(Channel *channel, char *msg, int loglevel)
{
- LOG(loglevel, "RPC: %s", msg);
for (size_t i = 0; i < kv_size(channel->rpc.call_stack); i++) {
ChannelCallFrame *frame = kv_A(channel->rpc.call_stack, i);
frame->returned = true;
@@ -530,6 +529,8 @@ static void chan_close_on_err(Channel *channel, char *msg, int loglevel)
}
channel_close(channel->id, kChannelPartRpc, NULL);
+
+ LOG(loglevel, "RPC: %s", msg);
}
static void serialize_request(Channel **chans, size_t nchans, uint32_t request_id,