> > Is there a way to run some cleanup code in a module when the server is > being stopped, but not being restarted? Or, can a cleanup handler in a loaded > module determine whether the server is being shut down or restarted? > > With 2.4.x, you could use the ap_pglobal pool. > > Beware this should be done only once by register_hooks (called at every > restart), so something like: > { > void *data; > > apr_pool_userdata_get(&data, "my_module_key", ap_pglobal); > if (!data) { > char *key = apr_pstrdup(ap_pglobal, "my_module_key"); > apr_pool_userdata_set(key, key, apr_pool_cleanup_null, ap_pglobal); > } > }
Thanks for your suggestion. I am not yet on 2.4.x. Is ap_pglobal available to DSO modules? Also, if I register a cleanup handler for that pool, will the cleanup function get called before my module is unloaded? I think in previous versions the server unloads all of the loaded modules before destroying the global pool. That would lead to a crash.