aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/os/server.c')
-rw-r--r--src/nvim/os/server.c34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/nvim/os/server.c b/src/nvim/os/server.c
index e9a11809ae..9b5410c323 100644
--- a/src/nvim/os/server.c
+++ b/src/nvim/os/server.c
@@ -43,16 +43,15 @@ typedef struct {
} socket;
} Server;
-static Map *servers = NULL;
+static Map(cstr_t) *servers = NULL;
-static void close_server(Map *map, const char *endpoint, void *server);
static void connection_cb(uv_stream_t *server, int status);
static void free_client(uv_handle_t *handle);
static void free_server(uv_handle_t *handle);
void server_init()
{
- servers = map_new();
+ servers = map_new(cstr_t)();
if (!os_getenv("NEOVIM_LISTEN_ADDRESS")) {
char *listen_address = (char *)vim_tempname('s');
@@ -70,7 +69,15 @@ void server_teardown()
return;
}
- map_foreach(servers, close_server);
+ Server *server;
+
+ map_foreach_value(servers, server, {
+ if (server->type == kServerTypeTcp) {
+ uv_close((uv_handle_t *)&server->socket.tcp.handle, free_server);
+ } else {
+ uv_close((uv_handle_t *)&server->socket.pipe.handle, free_server);
+ }
+ });
}
void server_start(char *endpoint, ChannelProtocol prot)
@@ -81,7 +88,7 @@ void server_start(char *endpoint, ChannelProtocol prot)
strncpy(addr, endpoint, sizeof(addr));
// Check if the server already exists
- if (map_has(servers, addr)) {
+ if (map_has(cstr_t)(servers, addr)) {
EMSG2("Already listening on %s", addr);
return;
}
@@ -167,7 +174,7 @@ void server_start(char *endpoint, ChannelProtocol prot)
server->type = server_type;
// Add the server to the hash table
- map_put(servers, addr, server);
+ map_put(cstr_t)(servers, addr, server);
}
void server_stop(char *endpoint)
@@ -178,7 +185,7 @@ void server_stop(char *endpoint)
// Trim to `ADDRESS_MAX_SIZE`
strncpy(addr, endpoint, sizeof(addr));
- if ((server = map_get(servers, addr)) == NULL) {
+ if ((server = map_get(cstr_t)(servers, addr)) == NULL) {
EMSG2("Not listening on %s", addr);
return;
}
@@ -189,7 +196,7 @@ void server_stop(char *endpoint)
uv_close((uv_handle_t *)&server->socket.pipe.handle, free_server);
}
- map_del(servers, addr);
+ map_del(cstr_t)(servers, addr);
}
static void connection_cb(uv_stream_t *server, int status)
@@ -221,17 +228,6 @@ static void connection_cb(uv_stream_t *server, int status)
channel_from_stream(client, srv->protocol);
}
-static void close_server(Map *map, const char *endpoint, void *srv)
-{
- Server *server = srv;
-
- if (server->type == kServerTypeTcp) {
- uv_close((uv_handle_t *)&server->socket.tcp.handle, free_server);
- } else {
- uv_close((uv_handle_t *)&server->socket.pipe.handle, free_server);
- }
-}
-
static void free_client(uv_handle_t *handle)
{
free(handle);