diff --git a/hphp/runtime/base/program_functions.cpp b/hphp/runtime/base/program_functions.cpp index 98a07efa5..4ef38ddd2 100644 --- a/hphp/runtime/base/program_functions.cpp +++ b/hphp/runtime/base/program_functions.cpp @@ -1468,6 +1468,7 @@ void hphp_session_exit() { } void hphp_process_exit() { + PageletServer::Stop(); XboxServer::Stop(); Eval::Debugger::Stop(); Extension::ShutdownModules(); diff --git a/hphp/runtime/base/server/pagelet_server.cpp b/hphp/runtime/base/server/pagelet_server.cpp index 3cefcbaa8..8017db1d4 100644 --- a/hphp/runtime/base/server/pagelet_server.cpp +++ b/hphp/runtime/base/server/pagelet_server.cpp @@ -288,11 +288,7 @@ bool PageletServer::Enabled() { } void PageletServer::Restart() { - if (s_dispatcher) { - s_dispatcher->stop(); - delete s_dispatcher; - s_dispatcher = nullptr; - } + Stop(); if (RuntimeOption::PageletServerThreadCount > 0) { s_dispatcher = new JobQueueDispatcher (RuntimeOption::PageletServerThreadCount, @@ -305,6 +301,14 @@ void PageletServer::Restart() { } } +void PageletServer::Stop() { + if (s_dispatcher) { + s_dispatcher->stop(); + delete s_dispatcher; + s_dispatcher = nullptr; + } +} + Object PageletServer::TaskStart(CStrRef url, CArrRef headers, CStrRef remote_host, CStrRef post_data /* = null_string */, diff --git a/hphp/runtime/base/server/pagelet_server.h b/hphp/runtime/base/server/pagelet_server.h index df5f3d09e..92ecae011 100644 --- a/hphp/runtime/base/server/pagelet_server.h +++ b/hphp/runtime/base/server/pagelet_server.h @@ -26,6 +26,7 @@ class PageletServer { public: static bool Enabled(); static void Restart(); + static void Stop(); /** * Create a task. This returns a task handle, or null object diff --git a/hphp/runtime/base/server/xbox_server.cpp b/hphp/runtime/base/server/xbox_server.cpp index daab98ed8..dac9f2732 100644 --- a/hphp/runtime/base/server/xbox_server.cpp +++ b/hphp/runtime/base/server/xbox_server.cpp @@ -204,11 +204,7 @@ private: static JobQueueDispatcher *s_dispatcher; void XboxServer::Restart() { - if (s_dispatcher) { - s_dispatcher->stop(); - delete s_dispatcher; - s_dispatcher = nullptr; - } + Stop(); if (RuntimeOption::XboxServerThreadCount > 0) { s_dispatcher = new JobQueueDispatcher