[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Mon Oct 19 13:13:03 UTC 2015


The branch, master has been updated
       via  3194a4d lib: Remove unused serverid_get_random_unique_id
       via  22b320c lib: Add some debug to dgm_ref
       via  01d7e26 lib: Push down unique generation one level
       via  a788fd3 lib: Remove unused global my_unique_id
       via  62f2b86 lib: Remove unused procid_is_me()
       via  da88b0d lib: Remove unused procid_self()
       via  6eb6622 lib: Remove procid_self() from messages.c
       via  b9fd6e2 lib: Fix pid_to_procid()
       via  ad924ab winbindd: Remove reference to procid_self()
       via  bcc1521 fssd: Remove reference to procid_self()
       via  46308bb auth: Remove procid_self() from auth_samba4
      from  7c48369 smbd: Fix file name buflen and padding in notify repsonse

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 3194a4d342605a0a21f4bda55cd43c6eb983f941
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Oct 14 11:41:23 2015 +0200

    lib: Remove unused serverid_get_random_unique_id
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Mon Oct 19 15:12:22 CEST 2015 on sn-devel-104

commit 22b320caa02ea000314d9ff0c3c7fd8c6b9c4318
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Oct 14 11:31:07 2015 +0200

    lib: Add some debug to dgm_ref
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 01d7e26f7faa82da55aa66af28c5b224c7caa792
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 12 21:30:30 2015 +0200

    lib: Push down unique generation one level
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit a788fd306580952d83007319fca12635e431354c
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 12 20:59:57 2015 +0200

    lib: Remove unused global my_unique_id
    
    The unique_id is now always attached to a messaging_context.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 62f2b86f4fd262c1b299f8c7713e918f4e9a3be1
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 12 17:37:14 2015 +0200

    lib: Remove unused procid_is_me()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit da88b0da6694936c2ea79ac59c4f902d6c5ffce0
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 12 17:28:14 2015 +0200

    lib: Remove unused procid_self()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 6eb6622c13f74fd68ce0fe3fe9623bc967d3ce01
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 12 17:26:34 2015 +0200

    lib: Remove procid_self() from messages.c
    
    This together with the removal of procid_self obsoletes the global
    my_unique.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit b9fd6e24847826bf948041ed56bfd8767ec5db78
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Oct 16 11:36:48 2015 +0200

    lib: Fix pid_to_procid()
    
    Putting in my_unique_id is just wrong. Now that we have
    a cheap way to read everyone's unique ids out of the lockfile,
    we can fix it.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit ad924ab859f648587515304cde7054a1bf91b8a3
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 12 17:21:55 2015 +0200

    winbindd: Remove reference to procid_self()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit bcc152166286b5d3c4c23d055482865da86ee07a
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 12 17:21:30 2015 +0200

    fssd: Remove reference to procid_self()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit 46308bb2a6729dbf6ad913bd1cfab18827c62835
Author: Volker Lendecke <vl at samba.org>
Date:   Mon Oct 12 17:20:48 2015 +0200

    auth: Remove procid_self() from auth_samba4
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

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

Summary of changes:
 source3/auth/auth_samba4.c        |  9 ++++++++-
 source3/include/proto.h           |  3 ---
 source3/include/serverid.h        |  6 ------
 source3/lib/messages.c            | 13 +++++++++----
 source3/lib/messages_dgm.c        | 22 +++++++++++++++++++---
 source3/lib/messages_dgm.h        |  2 +-
 source3/lib/messages_dgm_ref.c    | 18 +++++++++++++++++-
 source3/lib/messages_dgm_ref.h    |  2 +-
 source3/lib/serverid.c            | 12 ------------
 source3/lib/util.c                | 37 ++++++++++---------------------------
 source3/rpc_server/fssd.c         |  2 +-
 source3/smbd/scavenger.c          |  5 -----
 source3/smbd/server.c             | 11 -----------
 source3/winbindd/winbindd.c       | 11 ++++++++++-
 source3/wscript_build             |  3 ++-
 source4/lib/messaging/messaging.c |  2 +-
 16 files changed, 79 insertions(+), 79 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/auth/auth_samba4.c b/source3/auth/auth_samba4.c
index 0a80d17..e68c702 100644
--- a/source3/auth/auth_samba4.c
+++ b/source3/auth/auth_samba4.c
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "source3/include/auth.h"
+#include "source3/include/messages.h"
 #include "source4/auth/auth.h"
 #include "auth/auth_sam_reply.h"
 #include "param/param.h"
@@ -48,6 +49,7 @@ static int free_task_id(struct server_id *server_id)
  * (ie, use talloc_free()) */
 static struct server_id *new_server_id_task(TALLOC_CTX *mem_ctx)
 {
+	struct messaging_context *msg_ctx;
 	struct server_id *server_id;
 	int task_id;
 	if (!task_id_tree) {
@@ -57,12 +59,17 @@ static struct server_id *new_server_id_task(TALLOC_CTX *mem_ctx)
 		}
 	}
 
+	msg_ctx = server_messaging_context();
+	if (msg_ctx == NULL) {
+		return NULL;
+	}
+
 	server_id = talloc(mem_ctx, struct server_id);
 
 	if (!server_id) {
 		return NULL;
 	}
-	*server_id = procid_self();
+	*server_id = messaging_server_id(msg_ctx);
 
 	/* 0 is the default server_id, so we need to start with 1 */
 	task_id = idr_get_new_above(task_id_tree, server_id, 1, INT32_MAX);
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 5b63897..c2d9166 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -436,11 +436,8 @@ uint32_t map_share_mode_to_deny_mode(uint32_t share_access, uint32_t private_opt
 pid_t procid_to_pid(const struct server_id *proc);
 void set_my_vnn(uint32_t vnn);
 uint32_t get_my_vnn(void);
-void set_my_unique_id(uint64_t unique_id);
 struct server_id pid_to_procid(pid_t pid);
-struct server_id procid_self(void);
 #define serverid_equal(p1, p2) server_id_equal(p1,p2)
-bool procid_is_me(const struct server_id *pid);
 struct server_id interpret_pid(const char *pid_string);
 bool procid_valid(const struct server_id *pid);
 bool procid_is_local(const struct server_id *pid);
diff --git a/source3/include/serverid.h b/source3/include/serverid.h
index 24ebcbe..03022dc 100644
--- a/source3/include/serverid.h
+++ b/source3/include/serverid.h
@@ -59,10 +59,4 @@ bool serverid_traverse_read(int (*fn)(const struct server_id *id,
  */
 bool serverid_parent_init(TALLOC_CTX *mem_ctx);
 
-/*
- * Get a random unique_id and make sure that it is not
- * SERVERID_UNIQUE_ID_NOT_TO_VERIFY
- */
-uint64_t serverid_get_random_unique_id(void);
-
 #endif
diff --git a/source3/lib/messages.c b/source3/lib/messages.c
index d059f23..ef8e83d 100644
--- a/source3/lib/messages.c
+++ b/source3/lib/messages.c
@@ -300,7 +300,10 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
 		return NULL;
 	}
 
-	ctx->id = procid_self();
+	ctx->id = (struct server_id) {
+		.pid = getpid(), .vnn = NONCLUSTER_VNN
+	};
+
 	ctx->event_ctx = ev;
 
 	sec_init();
@@ -336,7 +339,7 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
 	}
 
 	ctx->msg_dgm_ref = messaging_dgm_ref(
-		ctx, ctx->event_ctx, ctx->id.unique_id,
+		ctx, ctx->event_ctx, &ctx->id.unique_id,
 		priv_path, lck_path, messaging_recv_cb, ctx, &ret);
 
 	if (ctx->msg_dgm_ref == NULL) {
@@ -393,10 +396,12 @@ NTSTATUS messaging_reinit(struct messaging_context *msg_ctx)
 
 	TALLOC_FREE(msg_ctx->msg_dgm_ref);
 
-	msg_ctx->id = procid_self();
+	msg_ctx->id = (struct server_id) {
+		.pid = getpid(), .vnn = msg_ctx->id.vnn
+	};
 
 	msg_ctx->msg_dgm_ref = messaging_dgm_ref(
-		msg_ctx, msg_ctx->event_ctx, msg_ctx->id.unique_id,
+		msg_ctx, msg_ctx->event_ctx, &msg_ctx->id.unique_id,
 		private_path("msg.sock"), lock_path("msg.lock"),
 		messaging_recv_cb, msg_ctx, &ret);
 
diff --git a/source3/lib/messages_dgm.c b/source3/lib/messages_dgm.c
index 1acd2d7..006e917 100644
--- a/source3/lib/messages_dgm.c
+++ b/source3/lib/messages_dgm.c
@@ -29,6 +29,7 @@
 #include "lib/param/param.h"
 #include "poll_funcs/poll_funcs_tevent.h"
 #include "unix_msg/unix_msg.h"
+#include "lib/util/genrand.h"
 
 struct sun_path_buf {
 	/*
@@ -67,12 +68,13 @@ static int messaging_dgm_context_destructor(struct messaging_dgm_context *c);
 
 static int messaging_dgm_lockfile_create(struct messaging_dgm_context *ctx,
 					 pid_t pid, int *plockfile_fd,
-					 uint64_t unique)
+					 uint64_t *punique)
 {
 	char buf[64];
 	int lockfile_fd;
 	struct sun_path_buf lockfile_name;
 	struct flock lck;
+	uint64_t unique;
 	int unique_len, ret;
 	ssize_t written;
 
@@ -104,6 +106,19 @@ static int messaging_dgm_lockfile_create(struct messaging_dgm_context *ctx,
 		goto fail_close;
 	}
 
+	/*
+	 * Directly using the binary value for
+	 * SERVERID_UNIQUE_ID_NOT_TO_VERIFY is a layering
+	 * violation. But including all of ndr here just for this
+	 * seems to be a bit overkill to me. Also, messages_dgm might
+	 * be replaced sooner or later by something streams-based,
+	 * where unique_id generation will be handled differently.
+	 */
+
+	do {
+		generate_random_buffer((uint8_t *)&unique, sizeof(unique));
+	} while (unique == UINT64_C(0xFFFFFFFFFFFFFFFF));
+
 	unique_len = snprintf(buf, sizeof(buf), "%ju\n", (uintmax_t)unique);
 
 	/* shorten a potentially preexisting file */
@@ -124,6 +139,7 @@ static int messaging_dgm_lockfile_create(struct messaging_dgm_context *ctx,
 	}
 
 	*plockfile_fd = lockfile_fd;
+	*punique = unique;
 	return 0;
 
 fail_unlink:
@@ -134,7 +150,7 @@ fail_close:
 }
 
 int messaging_dgm_init(struct tevent_context *ev,
-		       uint64_t unique,
+		       uint64_t *punique,
 		       const char *socket_dir,
 		       const char *lockfile_dir,
 		       void (*recv_cb)(const uint8_t *msg,
@@ -186,7 +202,7 @@ int messaging_dgm_init(struct tevent_context *ev,
 	}
 
 	ret = messaging_dgm_lockfile_create(ctx, ctx->pid, &ctx->lockfile_fd,
-					    unique);
+					    punique);
 	if (ret != 0) {
 		DEBUG(1, ("%s: messaging_dgm_create_lockfile failed: %s\n",
 			  __func__, strerror(ret)));
diff --git a/source3/lib/messages_dgm.h b/source3/lib/messages_dgm.h
index d38cfcc..a9cbd81 100644
--- a/source3/lib/messages_dgm.h
+++ b/source3/lib/messages_dgm.h
@@ -25,7 +25,7 @@
 #include <tevent.h>
 
 int messaging_dgm_init(struct tevent_context *ev,
-		       uint64_t unique,
+		       uint64_t *unique,
 		       const char *socket_dir,
 		       const char *lockfile_dir,
 		       void (*recv_cb)(const uint8_t *msg,
diff --git a/source3/lib/messages_dgm_ref.c b/source3/lib/messages_dgm_ref.c
index 0a6cbf7..e3b2d88 100644
--- a/source3/lib/messages_dgm_ref.c
+++ b/source3/lib/messages_dgm_ref.c
@@ -40,7 +40,7 @@ static void msg_dgm_ref_recv(const uint8_t *msg, size_t msg_len,
 			     int *fds, size_t num_fds, void *private_data);
 
 void *messaging_dgm_ref(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
-			uint64_t unique,
+			uint64_t *unique,
 			const char *socket_dir,
 			const char *lockfile_dir,
 			void (*recv_cb)(const uint8_t *msg, size_t msg_len,
@@ -73,6 +73,8 @@ void *messaging_dgm_ref(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
 
 		ret = messaging_dgm_init(ev, unique, socket_dir, lockfile_dir,
 					 msg_dgm_ref_recv, NULL);
+		DBG_DEBUG("%s: messaging_dgm_init returned %s\n", __func__,
+			  strerror(ret));
 		if (ret != 0) {
 			DEBUG(10, ("messaging_dgm_init failed: %s\n",
 				   strerror(ret)));
@@ -82,6 +84,16 @@ void *messaging_dgm_ref(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
 		}
 		dgm_pid = getpid();
 	} else {
+		int ret;
+		ret = messaging_dgm_get_unique(getpid(), unique);
+		DBG_DEBUG("%s: messaging_dgm_get_unique returned %s\n",
+			  __func__, strerror(ret));
+		if (ret != 0) {
+			TALLOC_FREE(result);
+			*err = ret;
+			return NULL;
+		}
+
 		result->tevent_handle = messaging_dgm_register_tevent_context(
 			result, ev);
 		if (result->tevent_handle == NULL) {
@@ -91,6 +103,8 @@ void *messaging_dgm_ref(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
 		}
 	}
 
+	DBG_DEBUG("%s: unique = %"PRIu64"\n", __func__, *unique);
+
 	refs = tmp_refs;
 
 	result->recv_cb = recv_cb;
@@ -126,6 +140,8 @@ static int msg_dgm_ref_destructor(struct msg_dgm_ref *r)
 
 	TALLOC_FREE(r->tevent_handle);
 
+	DBG_DEBUG("%s: refs=%p\n", __func__, refs);
+
 	if (refs == NULL) {
 		messaging_dgm_destroy();
 	}
diff --git a/source3/lib/messages_dgm_ref.h b/source3/lib/messages_dgm_ref.h
index 3df0c06..8f0aff8 100644
--- a/source3/lib/messages_dgm_ref.h
+++ b/source3/lib/messages_dgm_ref.h
@@ -25,7 +25,7 @@
 #include "replace.h"
 
 void *messaging_dgm_ref(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
-			uint64_t unique,
+			uint64_t *unique,
 			const char *socket_dir,
 			const char *lockfile_dir,
 			void (*recv_cb)(const uint8_t *msg, size_t msg_len,
diff --git a/source3/lib/serverid.c b/source3/lib/serverid.c
index c219d21..5c2fa65 100644
--- a/source3/lib/serverid.c
+++ b/source3/lib/serverid.c
@@ -313,15 +313,3 @@ bool serverid_traverse(int (*fn)(struct db_record *rec,
 	status = dbwrap_traverse(db, serverid_traverse_fn, &state, NULL);
 	return NT_STATUS_IS_OK(status);
 }
-
-uint64_t serverid_get_random_unique_id(void)
-{
-	uint64_t unique_id = SERVERID_UNIQUE_ID_NOT_TO_VERIFY;
-
-	while (unique_id == SERVERID_UNIQUE_ID_NOT_TO_VERIFY) {
-		generate_random_buffer((uint8_t *)&unique_id,
-				       sizeof(unique_id));
-	}
-
-	return unique_id;
-}
diff --git a/source3/lib/util.c b/source3/lib/util.c
index a0da087..7c24f8a 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -28,6 +28,7 @@
 #include "ctdbd_conn.h"
 #include "../lib/util/util_pw.h"
 #include "messages.h"
+#include "messages_dgm.h"
 #include "libcli/security/security.h"
 #include "serverid.h"
 #include "lib/util/sys_rw.h"
@@ -1959,37 +1960,19 @@ uint32_t get_my_vnn(void)
 	return my_vnn;
 }
 
-static uint64_t my_unique_id = 0;
-
-void set_my_unique_id(uint64_t unique_id)
-{
-	my_unique_id = unique_id;
-}
-
 struct server_id pid_to_procid(pid_t pid)
 {
-	struct server_id result;
-	result.pid = pid;
-	result.task_id = 0;
-	result.unique_id = my_unique_id;
-	result.vnn = my_vnn;
-	return result;
-}
+	uint64_t unique = 0;
+	int ret;
 
-struct server_id procid_self(void)
-{
-	return pid_to_procid(getpid());
-}
+	ret = messaging_dgm_get_unique(pid, &unique);
+	if (ret != 0) {
+		DBG_WARNING("%s: messaging_dgm_get_unique failed: %s\n",
+			    __func__, strerror(ret));
+	}
 
-bool procid_is_me(const struct server_id *pid)
-{
-	if (pid->pid != getpid())
-		return False;
-	if (pid->task_id != 0)
-		return False;
-	if (pid->vnn != my_vnn)
-		return False;
-	return True;
+	return (struct server_id) {
+		.pid = pid, .unique_id = unique, .vnn = my_vnn };
 }
 
 struct server_id interpret_pid(const char *pid_string)
diff --git a/source3/rpc_server/fssd.c b/source3/rpc_server/fssd.c
index 1e96afe..8f55aff 100644
--- a/source3/rpc_server/fssd.c
+++ b/source3/rpc_server/fssd.c
@@ -182,7 +182,7 @@ void start_fssd(struct tevent_context *ev_ctx,
 	fssd_setup_sig_term_handler(ev_ctx);
 	fssd_setup_sig_hup_handler(ev_ctx, msg_ctx);
 
-	ok = serverid_register(procid_self(),
+	ok = serverid_register(messaging_server_id(msg_ctx),
 			       FLAG_MSG_GENERAL |
 			       FLAG_MSG_PRINT_GENERAL);
 	if (!ok) {
diff --git a/source3/smbd/scavenger.c b/source3/smbd/scavenger.c
index ea0a894..6171c29 100644
--- a/source3/smbd/scavenger.c
+++ b/source3/smbd/scavenger.c
@@ -196,7 +196,6 @@ static bool smbd_scavenger_start(struct smbd_scavenger_state *state)
 	struct tevent_fd *fde = NULL;
 	int fds[2];
 	int ret;
-	uint64_t unique_id;
 	bool ok;
 
 	SMB_ASSERT(server_id_equal(&state->parent_id, &self));
@@ -234,8 +233,6 @@ static bool smbd_scavenger_start(struct smbd_scavenger_state *state)
 	smb_set_close_on_exec(fds[0]);
 	smb_set_close_on_exec(fds[1]);
 
-	unique_id = serverid_get_random_unique_id();
-
 	ret = fork();
 	if (ret == -1) {
 		int err = errno;
@@ -252,8 +249,6 @@ static bool smbd_scavenger_start(struct smbd_scavenger_state *state)
 
 		close(fds[0]);
 
-		set_my_unique_id(unique_id);
-
 		status = smbd_reinit_after_fork(state->msg, state->ev,
 						true, "smbd-scavenger");
 		if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index ca9fb9e..ceb9599 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -575,7 +575,6 @@ static void smbd_accept_connection(struct tevent_context *ev,
 	socklen_t in_addrlen = sizeof(addr);
 	int fd;
 	pid_t pid = 0;
-	uint64_t unique_id;
 
 	fd = accept(s->fd, (struct sockaddr *)(void *)&addr,&in_addrlen);
 	if (fd == -1 && errno == EINTR)
@@ -599,12 +598,6 @@ static void smbd_accept_connection(struct tevent_context *ev,
 		return;
 	}
 
-	/*
-	 * Generate a unique id in the parent process so that we use
-	 * the global random state in the parent.
-	 */
-	unique_id = serverid_get_random_unique_id();
-
 	pid = fork();
 	if (pid == 0) {
 		NTSTATUS status = NT_STATUS_OK;
@@ -616,8 +609,6 @@ static void smbd_accept_connection(struct tevent_context *ev,
 		talloc_free(s->parent);
 		s = NULL;
 
-		set_my_unique_id(unique_id);
-
 		/* Stop zombies, the parent explicitly handles
 		 * them, counting worker smbds. */
 		CatchChild();
@@ -1363,8 +1354,6 @@ extern void build_options(bool screen);
 		become_daemon(Fork, no_process_group, log_stdout);
 	}
 
-        set_my_unique_id(serverid_get_random_unique_id());
-
 #if HAVE_SETPGID
 	/*
 	 * If we're interactive we want to set our own process group for
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index e6dd0e7..d555127 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -99,12 +99,20 @@ struct messaging_context *winbind_messaging_context(void)
 struct imessaging_context *winbind_imessaging_context(void)
 {
 	static struct imessaging_context *msg = NULL;
+	struct messaging_context *msg_ctx;
+	struct server_id myself;
 	struct loadparm_context *lp_ctx;
 
 	if (msg != NULL) {
 		return msg;
 	}
 
+	msg_ctx = server_messaging_context();
+	if (msg_ctx == NULL) {
+		smb_panic("server_messaging_context failed\n");
+	}
+	myself = messaging_server_id(msg_ctx);
+
 	lp_ctx = loadparm_init_s3(NULL, loadparm_s3_helpers());
 	if (lp_ctx == NULL) {
 		smb_panic("Could not load smb.conf to init winbindd's imessaging context.\n");
@@ -114,7 +122,8 @@ struct imessaging_context *winbind_imessaging_context(void)
 	 * Note we MUST use the NULL context here, not the autofree context,
 	 * to avoid side effects in forked children exiting.
 	 */
-	msg = imessaging_init(NULL, lp_ctx, procid_self(), winbind_event_context(), false);
+	msg = imessaging_init(NULL, lp_ctx, myself, winbind_event_context(),
+			      false);
 	talloc_unlink(NULL, lp_ctx);
 
 	if (msg == NULL) {
diff --git a/source3/wscript_build b/source3/wscript_build
index be0b7e6..1f9f757 100755
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -299,7 +299,8 @@ bld.SAMBA3_SUBSYSTEM('TDB_LIB',
 
 bld.SAMBA3_LIBRARY('messages_dgm',
                    source='''lib/messages_dgm.c lib/messages_dgm_ref.c''',
-                   deps='talloc UNIX_MSG POLL_FUNCS_TEVENT samba-debug',
+                   deps='''talloc UNIX_MSG POLL_FUNCS_TEVENT samba-debug
+                           genrand''',
                    private_library=True)
 
 bld.SAMBA3_LIBRARY('messages_util',
diff --git a/source4/lib/messaging/messaging.c b/source4/lib/messaging/messaging.c
index d91d175..bbc22ec 100644
--- a/source4/lib/messaging/messaging.c
+++ b/source4/lib/messaging/messaging.c
@@ -342,7 +342,7 @@ struct imessaging_context *imessaging_init(TALLOC_CTX *mem_ctx,
 	}
 
 	msg->msg_dgm_ref = messaging_dgm_ref(
-		msg, ev, server_id.unique_id, msg->sock_dir, msg->lock_dir,
+		msg, ev, &server_id.unique_id, msg->sock_dir, msg->lock_dir,
 		imessaging_dgm_recv, msg, &ret);
 
 	if (msg->msg_dgm_ref == NULL) {


-- 
Samba Shared Repository



More information about the samba-cvs mailing list