mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
s3:smbcontrol: let smbd pass the idmap msg to its children for convenience
Signed-off-by: Michael Adam <obnox@samba.org>
This commit is contained in:
parent
da85f5a43e
commit
6648d90652
@ -161,11 +161,11 @@ void id_cache_delete_from_cache(const struct id_cache_ref* id)
|
||||
}
|
||||
|
||||
|
||||
static void id_cache_flush(struct messaging_context *msg_ctx,
|
||||
void* private_data,
|
||||
uint32_t msg_type,
|
||||
struct server_id server_id,
|
||||
DATA_BLOB* data)
|
||||
void id_cache_flush_message(struct messaging_context *msg_ctx,
|
||||
void* private_data,
|
||||
uint32_t msg_type,
|
||||
struct server_id server_id,
|
||||
DATA_BLOB* data)
|
||||
{
|
||||
const char *msg = data ? (const char *)data->data : NULL;
|
||||
|
||||
@ -181,11 +181,11 @@ static void id_cache_flush(struct messaging_context *msg_ctx,
|
||||
}
|
||||
}
|
||||
|
||||
static void id_cache_delete(struct messaging_context *msg_ctx,
|
||||
void *private_data,
|
||||
uint32_t msg_type,
|
||||
struct server_id server_id,
|
||||
DATA_BLOB* data)
|
||||
void id_cache_delete_message(struct messaging_context *msg_ctx,
|
||||
void *private_data,
|
||||
uint32_t msg_type,
|
||||
struct server_id server_id,
|
||||
DATA_BLOB* data)
|
||||
{
|
||||
const char *msg = (data && data->data) ? (const char *)data->data : "<NULL>";
|
||||
struct id_cache_ref id;
|
||||
@ -200,6 +200,6 @@ static void id_cache_delete(struct messaging_context *msg_ctx,
|
||||
|
||||
void id_cache_register_msgs(struct messaging_context *ctx)
|
||||
{
|
||||
messaging_register(ctx, NULL, ID_CACHE_FLUSH, id_cache_flush);
|
||||
messaging_register(ctx, NULL, ID_CACHE_DELETE, id_cache_delete);
|
||||
messaging_register(ctx, NULL, ID_CACHE_FLUSH, id_cache_flush_message);
|
||||
messaging_register(ctx, NULL, ID_CACHE_DELETE, id_cache_delete_message);
|
||||
}
|
||||
|
@ -32,3 +32,15 @@ bool id_cache_ref_parse(const char* str, struct id_cache_ref* id);
|
||||
void id_cache_delete_from_cache(const struct id_cache_ref* id);
|
||||
|
||||
void id_cache_register_msgs(struct messaging_context *ctx);
|
||||
|
||||
void id_cache_delete_message(struct messaging_context *msg_ctx,
|
||||
void *private_data,
|
||||
uint32_t msg_type,
|
||||
struct server_id server_id,
|
||||
DATA_BLOB* data);
|
||||
|
||||
void id_cache_flush_message(struct messaging_context *msg_ctx,
|
||||
void* private_data,
|
||||
uint32_t msg_type,
|
||||
struct server_id server_id,
|
||||
DATA_BLOB* data);
|
||||
|
@ -129,13 +129,46 @@ static void id_cache_kill(struct messaging_context *msg_ctx,
|
||||
return;
|
||||
}
|
||||
|
||||
if (am_parent) {
|
||||
messaging_send_to_children(msg_ctx, msg_type, data);
|
||||
}
|
||||
|
||||
if (id_in_use(validated_users, &id)) {
|
||||
exit_server_cleanly(msg);
|
||||
}
|
||||
id_cache_delete_from_cache(&id);
|
||||
}
|
||||
|
||||
void id_cache_register_kill_msg(struct messaging_context *ctx)
|
||||
static void id_cache_flush(struct messaging_context *ctx,
|
||||
void* data,
|
||||
uint32_t msg_type,
|
||||
struct server_id srv_id,
|
||||
DATA_BLOB* msg_data)
|
||||
{
|
||||
id_cache_flush_message(ctx, data, msg_type, srv_id, msg_data);
|
||||
|
||||
if (am_parent) {
|
||||
messaging_send_to_children(ctx, msg_type, msg_data);
|
||||
}
|
||||
}
|
||||
|
||||
static void id_cache_delete(struct messaging_context *ctx,
|
||||
void* data,
|
||||
uint32_t msg_type,
|
||||
struct server_id srv_id,
|
||||
DATA_BLOB* msg_data)
|
||||
{
|
||||
id_cache_delete_message(ctx, data, msg_type, srv_id, msg_data);
|
||||
|
||||
if (am_parent) {
|
||||
messaging_send_to_children(ctx, msg_type, msg_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void msg_idmap_register_msg(struct messaging_context *ctx)
|
||||
{
|
||||
messaging_register(ctx, NULL, ID_CACHE_FLUSH, id_cache_flush);
|
||||
messaging_register(ctx, NULL, ID_CACHE_DELETE, id_cache_delete);
|
||||
messaging_register(ctx, NULL, ID_CACHE_KILL, id_cache_kill);
|
||||
}
|
||||
|
@ -1189,6 +1189,6 @@ void *avahi_start_register(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
|
||||
|
||||
/* The following definitions come from smbd/msg_idmap.c */
|
||||
|
||||
void id_cache_register_kill_msg(struct messaging_context *ctx);
|
||||
void msg_idmap_register_msg(struct messaging_context *ctx);
|
||||
|
||||
#endif /* _SMBD_PROTO_H_ */
|
||||
|
@ -759,8 +759,7 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent,
|
||||
smb_pcap_updated);
|
||||
brl_register_msgs(msg_ctx);
|
||||
|
||||
id_cache_register_msgs(msg_ctx);
|
||||
id_cache_register_kill_msg(msg_ctx);
|
||||
msg_idmap_register_msg(msg_ctx);
|
||||
|
||||
#ifdef CLUSTER_SUPPORT
|
||||
if (lp_clustering()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user