static void mcache_sess_reinit_ev(const void *event_data, void *user_data) { int res; config_rec *c; /* A HOST command changed the main_server pointer, reinitialize ourselves. */ pr_event_unregister(&memcache_module, "core.exit", mcache_exit_ev); pr_event_unregister(&memcache_module, "core.session-reinit", mcache_sess_reinit_ev); (void) close(memcache_logfd); memcache_logfd = -1; c = find_config(session.prev_server->conf, CONF_PARAM, "MemcacheServers", FALSE); if (c != NULL) { memcached_server_st *memcache_servers; memcache_servers = c->argv[0]; memcache_set_servers(memcache_servers); } /* XXX Restore other memcache settings? */ /* reset MemcacheOptions */ /* reset MemcacheReplicas */ /* reset MemcacheTimeout */ res = mcache_sess_init(); if (res < 0) { pr_session_disconnect(&memcache_module, PR_SESS_DISCONNECT_SESSION_INIT_FAILED, NULL); } }
MODRET memcache_post_host(cmd_rec *cmd) { /* If the HOST command changed the main_server pointer, reinitialize * ourselves. */ if (session.prev_server != NULL) { int res; config_rec *c; pr_event_unregister(&memcache_module, "core.exit", mcache_exit_ev); (void) close(memcache_logfd); c = find_config(session.prev_server->conf, CONF_PARAM, "MemcacheServers", FALSE); if (c != NULL) { memcached_server_st *memcache_servers; memcache_servers = c->argv[0]; memcache_set_servers(memcache_servers); } /* XXX Restore other memcache settings? */ res = mcache_sess_init(); if (res < 0) { pr_session_disconnect(&memcache_module, PR_SESS_DISCONNECT_SESSION_INIT_FAILED, NULL); } } return PR_DECLINED(cmd); }