aboutsummaryrefslogtreecommitdiffstats
path: root/compat/fsmonitor/fsm-listen-darwin.c
diff options
context:
space:
mode:
authorTaylor Blau <me@ttaylorr.com>2024-10-15 16:56:43 -0400
committerTaylor Blau <me@ttaylorr.com>2024-10-15 16:56:43 -0400
commitb43e23fa02427067ceb605a5dd5ea602de4c6ac5 (patch)
treef3807a33e9cd06c829fdb1262a52eeb594f81920 /compat/fsmonitor/fsm-listen-darwin.c
parentMerge branch 'xx/remote-server-option-config' (diff)
parentfsmonitor: initialize fs event listener before accepting clients (diff)
downloadgit-b43e23fa02427067ceb605a5dd5ea602de4c6ac5.tar.gz
git-b43e23fa02427067ceb605a5dd5ea602de4c6ac5.zip
Merge branch 'jk/fsmonitor-event-listener-race-fix'
On macOS, fsmonitor can fall into a race condition that results in a client waiting forever to be notified for an event that have already happened. This problem has been corrected. * jk/fsmonitor-event-listener-race-fix: fsmonitor: initialize fs event listener before accepting clients simple-ipc: split async server initialization and running
Diffstat (limited to 'compat/fsmonitor/fsm-listen-darwin.c')
-rw-r--r--compat/fsmonitor/fsm-listen-darwin.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/compat/fsmonitor/fsm-listen-darwin.c b/compat/fsmonitor/fsm-listen-darwin.c
index 2fc67442eb..dfa551459d 100644
--- a/compat/fsmonitor/fsm-listen-darwin.c
+++ b/compat/fsmonitor/fsm-listen-darwin.c
@@ -516,6 +516,12 @@ void fsm_listen__loop(struct fsmonitor_daemon_state *state)
}
data->stream_started = 1;
+ /*
+ * Our fs event listener is now running, so it's safe to start
+ * serving client requests.
+ */
+ ipc_server_start_async(state->ipc_server_data);
+
pthread_mutex_lock(&data->dq_lock);
pthread_cond_wait(&data->dq_finished, &data->dq_lock);
pthread_mutex_unlock(&data->dq_lock);