{
struct strbuf answer = STRBUF_INIT;
int ret;
+ int max_wait_ms = 30000;
+ int elapsed_ms = 0;
ret = fsmonitor_ipc__send_command("quit", &answer);
return ret;
trace2_region_enter("fsm_client", "polling-for-daemon-exit", NULL);
- while (fsmonitor_ipc__get_state() == IPC_STATE__LISTENING)
+ while (fsmonitor_ipc__get_state() == IPC_STATE__LISTENING) {
+ if (elapsed_ms >= max_wait_ms) {
+ trace2_region_leave("fsm_client",
+ "polling-for-daemon-exit", NULL);
+ return error(_("daemon did not stop within %d seconds"),
+ max_wait_ms / 1000);
+ }
sleep_millisec(50);
+ elapsed_ms += 50;
+ }
trace2_region_leave("fsm_client", "polling-for-daemon-exit", NULL);
return 0;