The branch, v4-0-test has been updated
       via  a1d0339 s3-winbind: Send online/offline message of the domain to 
the parent.
       via  ddd3302 s3-winbind: Register handlers for domain online/offline 
messages.
       via  16dcb6c s3-winbind: Add functions for domain online/offline 
handling.
       via  e052e65 idl: Add a new message for winbind domain states.
       via  5a65f86 Fix bug #10187 - Missing talloc_free can leak stackframe in 
error path.
       via  c388828 s4:smb_server: call irpc_add_name() at startup (bug #9905)
       via  2c6ef14 s4:rpc_server: call irpc_add_name() at startup (bug #9905)
       via  95d66d0 s4:ldap_server: call irpc_add_name() at startup (bug #9905)
      from  acf4fe4 doc: Update documentation of pam_winbind krb5 support.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit a1d0339908ec80d39ba5c6d5a82bc2f39f2ebf39
Author: Andreas Schneider <a...@cryptomilk.org>
Date:   Thu Oct 10 10:03:32 2013 +0200

    s3-winbind: Send online/offline message of the domain to the parent.
    
    https://bugzilla.samba.org/show_bug.cgi?id=10194
    
    Signed-off-by: Andreas Schneider <a...@cryptomilk.org>
    Reviewed-by: Volker Lendecke <v...@samba.org>
    
    Autobuild-User(master): Volker Lendecke <v...@samba.org>
    Autobuild-Date(master): Fri Oct 11 13:37:56 CEST 2013 on sn-devel-104
    
    (cherry picked from commit 275f6586c4d4547978c6ff2f04670b0d8f89fd4b)
    
    Autobuild-User(v4-0-test): Karolin Seeger <ksee...@samba.org>
    Autobuild-Date(v4-0-test): Mon Oct 14 12:10:14 CEST 2013 on sn-devel-104

commit ddd330241cbea366f1fb8a10fa936091aff185a6
Author: Andreas Schneider <a...@cryptomilk.org>
Date:   Thu Oct 10 10:02:27 2013 +0200

    s3-winbind: Register handlers for domain online/offline messages.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10194
    
    Signed-off-by: Andreas Schneider <a...@cryptomilk.org>
    Reviewed-by: Volker Lendecke <v...@samba.org>
    
    (cherry picked from commit fc5941622010843d823b5c245eccc68d1d3bce19)

commit 16dcb6cf028e20281db16aab5861cc3f16e74d99
Author: Andreas Schneider <a...@cryptomilk.org>
Date:   Thu Oct 10 10:01:40 2013 +0200

    s3-winbind: Add functions for domain online/offline handling.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10194
    
    Signed-off-by: Andreas Schneider <a...@cryptomilk.org>
    Reviewed-by: Volker Lendecke <v...@samba.org>
    (cherry picked from commit 447ec17a6bec814a2ac5cadb74dbef5789f07c52)

commit e052e6587f3270bb186dda4b34cfd8f153cfb055
Author: Andreas Schneider <a...@cryptomilk.org>
Date:   Thu Oct 10 09:15:57 2013 +0200

    idl: Add a new message for winbind domain states.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10194
    
    Signed-off-by: Andreas Schneider <a...@cryptomilk.org>
    Reviewed-by: Volker Lendecke <v...@samba.org>
    (cherry picked from commit 1a884636542ba0e54c6d209662a5d1613d727a85)

commit 5a65f86bf2d43ccb5719a5734ee278e7c5d83921
Author: Jeremy Allison <j...@samba.org>
Date:   Tue Oct 8 15:01:38 2013 -0700

    Fix bug #10187 - Missing talloc_free can leak stackframe in error path.
    
    Fix error path.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: David Disseldorp <dd...@samba.org>
    
    Autobuild-User(master): David Disseldorp <dd...@samba.org>
    Autobuild-Date(master): Wed Oct  9 03:50:56 CEST 2013 on sn-devel-104

commit c388828165ce0ab5ae91a656b09c3db99cab5e55
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon May 27 12:10:57 2013 +0200

    s4:smb_server: call irpc_add_name() at startup (bug #9905)
    
    We should call irpc_add_name() when we start the smb_server task.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    (cherry picked from commit afb2bcc08489dbece732fc8f842cbd83862320be)

commit 2c6ef147c69bb4cb70c237870d650edaebeb0b52
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon May 27 12:10:57 2013 +0200

    s4:rpc_server: call irpc_add_name() at startup (bug #9905)
    
    We should call irpc_add_name() when we start the rpc_server task.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    (cherry picked from commit 12d9728131afab7fa093a9cd7ccaff076a74f271)

commit 95d66d039afae4eef284e3d2d4b20c66ac88f35a
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon May 27 12:10:57 2013 +0200

    s4:ldap_server: call irpc_add_name() at startup (bug #9905)
    
    We should call irpc_add_name() when we start the ldap_server task.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    (cherry picked from commit a1aeeee4302a4eaf7e210e8084416cd2a0d14384)

-----------------------------------------------------------------------

Summary of changes:
 source3/librpc/idl/messaging.idl  |    2 +
 source3/winbindd/winbindd.c       |    6 +++
 source3/winbindd/winbindd_cm.c    |   62 +++++++++++++++++++++++++++++++++++++
 source3/winbindd/winbindd_dual.c  |    5 +++
 source3/winbindd/winbindd_msrpc.c |    5 ++-
 source3/winbindd/winbindd_proto.h |   10 ++++++
 source4/ldap_server/ldap_server.c |    3 ++
 source4/rpc_server/service_rpc.c  |    1 +
 source4/smb_server/service_smb.c  |    1 +
 9 files changed, 93 insertions(+), 2 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/librpc/idl/messaging.idl b/source3/librpc/idl/messaging.idl
index c262889..a6258a8 100644
--- a/source3/librpc/idl/messaging.idl
+++ b/source3/librpc/idl/messaging.idl
@@ -100,6 +100,8 @@ interface messaging
                MSG_WINBIND_VALIDATE_CACHE      = 0x0408,
                MSG_WINBIND_DUMP_DOMAIN_LIST    = 0x0409,
                MSG_WINBIND_IP_DROPPED          = 0x040A,
+               MSG_WINBIND_DOMAIN_ONLINE       = 0x040B,
+               MSG_WINBIND_DOMAIN_OFFLINE      = 0x040C,
 
                /* event messages */
                MSG_DUMP_EVENT_LIST             = 0x0500,
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 21cc5f2..839655e 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -1137,6 +1137,12 @@ void winbindd_register_handlers(bool foreground)
        messaging_register(winbind_messaging_context(), NULL,
                           MSG_WINBIND_ONLINESTATUS, winbind_msg_onlinestatus);
 
+       /* Handle domain online/offline messages for domains */
+       messaging_register(winbind_messaging_context(), NULL,
+                          MSG_WINBIND_DOMAIN_OFFLINE, 
winbind_msg_domain_offline);
+       messaging_register(winbind_messaging_context(), NULL,
+                          MSG_WINBIND_DOMAIN_ONLINE, 
winbind_msg_domain_online);
+
        messaging_register(winbind_messaging_context(), NULL,
                           MSG_DUMP_EVENT_LIST, winbind_msg_dump_event_list);
 
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index e7b0d93..1883ddc 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -340,6 +340,46 @@ static void calc_new_online_timeout_check(struct 
winbindd_domain *domain)
        }
 }
 
+void winbind_msg_domain_offline(struct messaging_context *msg_ctx,
+                               void *private_data,
+                               uint32_t msg_type,
+                               struct server_id server_id,
+                               DATA_BLOB *data)
+{
+       const char *domain_name = (const char *)data->data;
+       struct winbindd_domain *domain;
+
+       domain = find_domain_from_name_noinit(domain_name);
+       if (domain == NULL) {
+               return;
+       }
+
+       domain->online = false;
+
+       DEBUG(10, ("Domain %s is marked as offline now.\n",
+                  domain_name));
+}
+
+void winbind_msg_domain_online(struct messaging_context *msg_ctx,
+                               void *private_data,
+                               uint32_t msg_type,
+                               struct server_id server_id,
+                               DATA_BLOB *data)
+{
+       const char *domain_name = (const char *)data->data;
+       struct winbindd_domain *domain;
+
+       domain = find_domain_from_name_noinit(domain_name);
+       if (domain == NULL) {
+               return;
+       }
+
+       domain->online = true;
+
+       DEBUG(10, ("Domain %s is marked as online now.\n",
+                  domain_name));
+}
+
 /****************************************************************
  Set domain offline and also add handler to put us back online
  if we detect a DC.
@@ -347,6 +387,8 @@ static void calc_new_online_timeout_check(struct 
winbindd_domain *domain)
 
 void set_domain_offline(struct winbindd_domain *domain)
 {
+       pid_t parent_pid = getppid();
+
        DEBUG(10,("set_domain_offline: called for domain %s\n",
                domain->name ));
 
@@ -394,6 +436,15 @@ void set_domain_offline(struct winbindd_domain *domain)
        DEBUG(10,("set_domain_offline: added event handler for domain %s\n",
                domain->name ));
 
+       /* Send a message to the parent that the domain is offline. */
+       if (parent_pid > 1 && !domain->internal) {
+               messaging_send_buf(winbind_messaging_context(),
+                                  pid_to_procid(parent_pid),
+                                  MSG_WINBIND_DOMAIN_OFFLINE,
+                                  (uint8 *)domain->name,
+                                  strlen(domain->name) + 1);
+       }
+
        /* Send an offline message to the idmap child when our
           primary domain goes offline */
 
@@ -418,6 +469,8 @@ void set_domain_offline(struct winbindd_domain *domain)
 
 static void set_domain_online(struct winbindd_domain *domain)
 {
+       pid_t parent_pid = getppid();
+
        DEBUG(10,("set_domain_online: called for domain %s\n",
                domain->name ));
 
@@ -469,6 +522,15 @@ static void set_domain_online(struct winbindd_domain 
*domain)
 
        domain->online = True;
 
+       /* Send a message to the parent that the domain is online. */
+       if (parent_pid > 1 && !domain->internal) {
+               messaging_send_buf(winbind_messaging_context(),
+                                  pid_to_procid(parent_pid),
+                                  MSG_WINBIND_DOMAIN_ONLINE,
+                                  (uint8 *)domain->name,
+                                  strlen(domain->name) + 1);
+       }
+
        /* Send an online message to the idmap child when our
           primary domain comes online */
 
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index 60b15e3..3c0e757 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -1223,6 +1223,11 @@ NTSTATUS winbindd_reinit_after_fork(const struct 
winbindd_child *myself,
        messaging_deregister(winbind_messaging_context(),
                             MSG_DEBUG, NULL);
 
+       messaging_deregister(winbind_messaging_context(),
+                            MSG_WINBIND_DOMAIN_OFFLINE, NULL);
+       messaging_deregister(winbind_messaging_context(),
+                            MSG_WINBIND_DOMAIN_ONLINE, NULL);
+
        /* We have destroyed all events in the winbindd_event_context
         * in reinit_after_fork(), so clean out all possible pending
         * event pointers. */
diff --git a/source3/winbindd/winbindd_msrpc.c 
b/source3/winbindd/winbindd_msrpc.c
index e86838c..61447d3 100644
--- a/source3/winbindd/winbindd_msrpc.c
+++ b/source3/winbindd/winbindd_msrpc.c
@@ -944,8 +944,9 @@ static NTSTATUS msrpc_trusted_domains(struct 
winbindd_domain *domain,
        }
 
        status = cm_connect_lsa(domain, tmp_ctx, &lsa_pipe, &lsa_policy);
-       if (!NT_STATUS_IS_OK(status))
-               return status;
+       if (!NT_STATUS_IS_OK(status)) {
+               goto done;
+       }
 
        status = rpc_trusted_domains(tmp_ctx,
                                     lsa_pipe,
diff --git a/source3/winbindd/winbindd_proto.h 
b/source3/winbindd/winbindd_proto.h
index 41aa9ac..59dfee0 100644
--- a/source3/winbindd/winbindd_proto.h
+++ b/source3/winbindd/winbindd_proto.h
@@ -151,6 +151,16 @@ enum winbindd_result winbindd_dual_ccache_ntlm_auth(struct 
winbindd_domain *doma
 void winbindd_ccache_save(struct winbindd_cli_state *state);
 
 /* The following definitions come from winbindd/winbindd_cm.c  */
+void winbind_msg_domain_offline(struct messaging_context *msg_ctx,
+                               void *private_data,
+                               uint32_t msg_type,
+                               struct server_id server_id,
+                               DATA_BLOB *data);
+void winbind_msg_domain_online(struct messaging_context *msg_ctx,
+                               void *private_data,
+                               uint32_t msg_type,
+                               struct server_id server_id,
+                               DATA_BLOB *data);
 
 void set_domain_offline(struct winbindd_domain *domain);
 void set_domain_online_request(struct winbindd_domain *domain);
diff --git a/source4/ldap_server/ldap_server.c 
b/source4/ldap_server/ldap_server.c
index a06feb0..0c0beca 100644
--- a/source4/ldap_server/ldap_server.c
+++ b/source4/ldap_server/ldap_server.c
@@ -1024,6 +1024,9 @@ static void ldapsrv_task_init(struct task_server *task)
        }
 
 #endif
+
+       /* register the server */
+       irpc_add_name(task->msg_ctx, "ldap_server");
        return;
 
 failed:
diff --git a/source4/rpc_server/service_rpc.c b/source4/rpc_server/service_rpc.c
index 299ee48..9ecfd6f 100644
--- a/source4/rpc_server/service_rpc.c
+++ b/source4/rpc_server/service_rpc.c
@@ -76,6 +76,7 @@ static void dcesrv_task_init(struct task_server *task)
                if (!NT_STATUS_IS_OK(status)) goto failed;
        }
 
+       irpc_add_name(task->msg_ctx, "rpc_server");
        return;
 failed:
        task_server_terminate(task, "Failed to startup dcerpc server task", 
true);      
diff --git a/source4/smb_server/service_smb.c b/source4/smb_server/service_smb.c
index c910b0f..958792e 100644
--- a/source4/smb_server/service_smb.c
+++ b/source4/smb_server/service_smb.c
@@ -77,6 +77,7 @@ static void smbsrv_task_init(struct task_server *task)
                talloc_free(wcard);
        }
 
+       irpc_add_name(task->msg_ctx, "smb_server");
        return;
 failed:
        task_server_terminate(task, "Failed to startup smb server task", true); 


-- 
Samba Shared Repository

Reply via email to