aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc/server.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2017-05-06 09:31:36 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2017-05-29 19:02:49 +0200
commit5a151555c8dce70bbf235e7f6d5bd1ced5e7c46c (patch)
tree2860c9db4994bc363a8a1ee036dd9dc2ad73b83b /src/nvim/msgpack_rpc/server.c
parent6a7593875827374c15484dd4eecd31a88f8c6f77 (diff)
downloadrneovim-5a151555c8dce70bbf235e7f6d5bd1ced5e7c46c.tar.gz
rneovim-5a151555c8dce70bbf235e7f6d5bd1ced5e7c46c.tar.bz2
rneovim-5a151555c8dce70bbf235e7f6d5bd1ced5e7c46c.zip
sockets: don't deadlock when connecting to own pipe address
Diffstat (limited to 'src/nvim/msgpack_rpc/server.c')
-rw-r--r--src/nvim/msgpack_rpc/server.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/nvim/msgpack_rpc/server.c b/src/nvim/msgpack_rpc/server.c
index bae5a32850..c9edd05dc2 100644
--- a/src/nvim/msgpack_rpc/server.c
+++ b/src/nvim/msgpack_rpc/server.c
@@ -97,6 +97,18 @@ char *server_address_new(void)
#endif
}
+/// Check if this instance owns a pipe address.
+/// The argument must already be resolved to an absolute path!
+bool server_owns_pipe_address(const char *path)
+{
+ for (int i = 0; i < watchers.ga_len; i++) {
+ if (!strcmp(path, ((SocketWatcher **)watchers.ga_data)[i]->addr)) {
+ return true;
+ }
+ }
+ return false;
+}
+
/// Starts listening for API calls.
///
/// The socket type is determined by parsing `endpoint`: If it's a valid IPv4