~Server() { TRACE_POINT(); this_thread::disable_syscall_interruption dsi; this_thread::disable_interruption di; P_DEBUG("Shutting down helper agent..."); prestarterThread->interrupt_and_join(); if (messageServerThread != NULL) { messageServerThread->interrupt_and_join(); } messageServer.reset(); P_DEBUG("Destroying application pool..."); pool->destroy(); uninstallDiagnosticsDumper(); pool.reset(); poolLoop.stop(); requestLoop.stop(); requestHandler.reset(); if (!options.requestSocketLink.empty()) { syscalls::unlink(options.requestSocketLink.c_str()); } P_TRACE(2, "All threads have been shut down."); }
static void sigint_cb(struct ev_loop *loop, ev_signal *w, int revents) { P_WARN("Exiting loop"); delete handler; handler = NULL; pool->destroy(); pool.reset(); ev_signal_stop(loop, &sigquitwatcher); ev_signal_stop(loop, &sigintwatcher); ev_break(loop, EVBREAK_ONE); }
~Server() { TRACE_POINT(); this_thread::disable_syscall_interruption dsi; this_thread::disable_interruption di; P_DEBUG("Shutting down helper agent..."); prestarterThread->interrupt_and_join(); if (messageServerThread != NULL) { messageServerThread->interrupt_and_join(); } messageServer.reset(); P_DEBUG("Destroying application pool..."); pool->destroy(); uninstallDiagnosticsDumper(); pool.reset(); poolLoop.stop(); requestLoop.stop(); requestHandler.reset(); if (!options.requestSocketLink.empty()) { char path[PATH_MAX + 1]; ssize_t ret; bool shouldUnlink; ret = readlink(options.requestSocketLink.c_str(), path, PATH_MAX); if (ret != -1) { path[ret] = '\0'; // Only unlink if a new Flying Passenger instance hasn't overwritten the // symlink. // https://code.google.com/p/phusion-passenger/issues/detail?id=939 shouldUnlink = getRequestSocketFilename() == path; } else { shouldUnlink = true; } if (shouldUnlink) { syscalls::unlink(options.requestSocketLink.c_str()); } } P_TRACE(2, "All threads have been shut down."); }
~Server() { TRACE_POINT(); this_thread::disable_syscall_interruption dsi; this_thread::disable_interruption di; P_DEBUG("Shutting down helper agent..."); prestarterThread->interrupt_and_join(); if (messageServerThread != NULL) { messageServerThread->interrupt_and_join(); } messageServer.reset(); pool->destroy(); pool.reset(); requestHandler.reset(); poolLoop.stop(); requestLoop.stop(); P_TRACE(2, "All threads have been shut down."); }