diff options
author | Jeremy Allison <jra@samba.org> | 2010-06-10 13:17:35 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-06-10 13:17:35 -0700 |
commit | b5638a05601ce8206a85c2f3625f8894ed0e0a6f (patch) | |
tree | e8baf3ff8ceab674e54f5942784f2c8b70912484 /source3/smbd/globals.c | |
parent | 405a0c558c023a752e88e52b7e40048d3b7090c5 (diff) | |
download | samba-b5638a05601ce8206a85c2f3625f8894ed0e0a6f.tar.gz samba-b5638a05601ce8206a85c2f3625f8894ed0e0a6f.tar.bz2 samba-b5638a05601ce8206a85c2f3625f8894ed0e0a6f.zip |
Don't use the autofree context for the globals. This causes child smbd's forked
by modules to crash due to destructors being called (found when using the vfs_aio_fork
module with smb2).
Jeremy.
Diffstat (limited to 'source3/smbd/globals.c')
-rw-r--r-- | source3/smbd/globals.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c index 30a306efbb..3150b9f67f 100644 --- a/source3/smbd/globals.c +++ b/source3/smbd/globals.c @@ -125,7 +125,12 @@ struct smbd_server_connection *smbd_server_conn = NULL; struct messaging_context *smbd_messaging_context(void) { if (smbd_msg_ctx == NULL) { - smbd_msg_ctx = messaging_init(talloc_autofree_context(), + /* + * Note we MUST use the NULL context here, not the + * autofree context, to avoid side effects in forked + * children exiting. + */ + smbd_msg_ctx = messaging_init(NULL, procid_self(), smbd_event_context()); } @@ -138,7 +143,12 @@ struct messaging_context *smbd_messaging_context(void) struct memcache *smbd_memcache(void) { if (!smbd_memcache_ctx) { - smbd_memcache_ctx = memcache_init(talloc_autofree_context(), + /* + * Note we MUST use the NULL context here, not the + * autofree context, to avoid side effects in forked + * children exiting. + */ + smbd_memcache_ctx = memcache_init(NULL, lp_max_stat_cache_size()*1024); } if (!smbd_memcache_ctx) { |