The logic here is somewhat ugly because the worker pool structure
gets freed early, so we need to explicitly transfer ownership.
{
php_module_shutdown();
sapi_shutdown();
+ if (limit_extensions) {
+ fpm_worker_pool_free_limit_extensions(limit_extensions);
+ }
}
/* }}} */
}
if (wp->limit_extensions) {
+ /* Take ownership of limit_extensions. */
limit_extensions = wp->limit_extensions;
+ wp->limit_extensions = NULL;
}
return 0;
}
struct fpm_worker_pool_s *fpm_worker_all_pools;
+void fpm_worker_pool_free_limit_extensions(char **limit_extensions) {
+ char **ext = limit_extensions;
+ while (*ext) {
+ free(*ext);
+ ext++;
+ }
+ free(limit_extensions);
+}
+
void fpm_worker_pool_free(struct fpm_worker_pool_s *wp) /* {{{ */
{
if (wp->config) {
if (wp->home) {
free(wp->home);
}
+ if (wp->limit_extensions) {
+ fpm_worker_pool_free_limit_extensions(wp->limit_extensions);
+ }
fpm_unix_free_socket_premissions(wp);
free(wp);
}
void fpm_worker_pool_free(struct fpm_worker_pool_s *wp);
int fpm_worker_pool_init_main();
+void fpm_worker_pool_free_limit_extensions(char **limit_extensions);
+
extern struct fpm_worker_pool_s *fpm_worker_all_pools;
#endif