s3-lsasd: Listen on parent messages
authorSimo Sorce <idra@samba.org>
Wed, 17 Aug 2011 19:21:52 +0000 (15:21 -0400)
committerSimo Sorce <idra@samba.org>
Sun, 21 Aug 2011 13:05:06 +0000 (09:05 -0400)
Signed-off-by: Andreas Schneider <asn@samba.org>
Signed-off-by: Simo Sorce <idra@samba.org>
source3/rpc_server/lsasd.c

index c6c3dc21b05078d07a019def65100b9198c4f651..23e11e0b1d79e98c9c706675383c00c2c6131b9b 100644 (file)
@@ -233,6 +233,22 @@ static bool lsasd_setup_chld_hup_handler(struct tevent_context *ev_ctx,
        return true;
 }
 
+static void parent_ping(struct messaging_context *msg_ctx,
+                       void *private_data,
+                       uint32_t msg_type,
+                       struct server_id server_id,
+                       DATA_BLOB *data)
+{
+
+       /* The fact we received this message is enough to let make the event
+        * loop if it was idle. lsasd_children_main will cycle through
+        * lsasd_next_client at least once. That function will take whatever
+        * action is necessary */
+
+       DEBUG(10, ("Got message that the parent changed status.\n"));
+       return;
+}
+
 static bool lsasd_child_init(struct tevent_context *ev_ctx,
                             int child_id,
                             struct pf_worker_data *pf)
@@ -262,6 +278,8 @@ static bool lsasd_child_init(struct tevent_context *ev_ctx,
 
        messaging_register(msg_ctx, ev_ctx,
                           MSG_SMB_CONF_UPDATED, lsasd_smb_conf_updated);
+       messaging_register(msg_ctx, ev_ctx,
+                          MSG_PREFORK_PARENT_EVENT, parent_ping);
 
        status = rpc_lsarpc_init(NULL);
        if (!NT_STATUS_IS_OK(status)) {