diff --git a/src/server_api.cpp b/src/server_api.cpp index 79480bb..4a98d15 100644 --- a/src/server_api.cpp +++ b/src/server_api.cpp @@ -98,8 +98,13 @@ void crpc_init_with_address(const char *ip, int port) { } void crpc_deinit() { - if (server) + if (server) { + // Must stop() before join(): stop() clears running_ so the accept + // thread can exit; join() alone would block forever while a client + // thread is blocked in a read (deadlock observed in Unity e2e). + server->stop(); server->join(); + } server.reset(); std::lock_guard lock(gc_mtx); gc.clear();