The branch, master has been updated via 364bdad messaging3: Make messaging_dgm_init return 0/errno via b84ea45 messaging3: Use "goto fail_nomem" where appropriate via 4f46318 messaging3: simplify messaging_dgm_lockfile_remove via 9fd8d51 messaging3: Make messaging_dgm_wipe return 0/errno via 2f34350 messaging3: Make messaging_dgm_cleanup return 0/errno via e6b33ce messaging3: Make the _send function return 0/errno via 94db1b2 messaging3: Remove two uses of talloc_tos() via 748ffcc messaging3: Remove use of full_path_tos() via 516e2f5 unix_msg: Lift sockaddr_un handling from unix_msg_send via 73a1205 unix_msg: Lift sockaddr_un handling from unix_msg_init via 0d81063 unix_msg: Lift sockaddr_un handling from unix_dgram_send via 6ea627b unix_msg: Lift sockaddr_un handling from unix_dgram_send_queue_init via 4ca79b0 unix_msg: Lift sockaddr_un handling from unix_dgram_init from 32b45bf lib: Apply const to nt_time_to_unix_timespec
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 364bdadde3159dde1ddcc8c5fa4be981448f6833 Author: Volker Lendecke <v...@samba.org> Date: Tue Jun 10 15:21:10 2014 +0000 messaging3: Make messaging_dgm_init return 0/errno Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Wed Jun 18 21:17:57 CEST 2014 on sn-devel-104 commit b84ea45fbd54fde820438d2065eedfb757b7158d Author: Volker Lendecke <v...@samba.org> Date: Tue Jun 10 14:57:05 2014 +0000 messaging3: Use "goto fail_nomem" where appropriate Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 4f4631831a379f2ebf0eb3d178fd9e91d951301a Author: Volker Lendecke <v...@samba.org> Date: Fri May 30 15:31:33 2014 +0000 messaging3: simplify messaging_dgm_lockfile_remove full_path_tos() isn't really required here, this is not a hot code path Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 9fd8d5154f178208f82777f7f81682be66e79400 Author: Volker Lendecke <v...@samba.org> Date: Wed Jun 4 14:47:05 2014 +0000 messaging3: Make messaging_dgm_wipe return 0/errno Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 2f3435085e0d6f64cd41b2d42e446da8821abc4b Author: Volker Lendecke <v...@samba.org> Date: Wed Jun 4 14:42:46 2014 +0000 messaging3: Make messaging_dgm_cleanup return 0/errno Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit e6b33ce6112bc41f2a5027f2097c74537c056a5b Author: Volker Lendecke <v...@samba.org> Date: Wed Jun 4 14:36:57 2014 +0000 messaging3: Make the _send function return 0/errno This is to eventually make messaging_dgm usable in ctdb Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 94db1b21d062099e1a0e2f290fc12e458c6c6f76 Author: Volker Lendecke <v...@samba.org> Date: Mon Jun 2 23:01:46 2014 +0200 messaging3: Remove two uses of talloc_tos() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 748ffccd5a1143048cbfe7b20fc6e850eb99cb2f Author: Volker Lendecke <v...@samba.org> Date: Mon Jun 2 22:29:44 2014 +0200 messaging3: Remove use of full_path_tos() This is not performance critical, and this removes source3 specific code Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 516e2f5e68aa10306a346865922b35e9a1e299c2 Author: Volker Lendecke <v...@samba.org> Date: Sun Jun 1 20:57:21 2014 +0200 unix_msg: Lift sockaddr_un handling from unix_msg_send Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 73a1205fe8a8aae357a96fb5074ed4dd16082fff Author: Volker Lendecke <v...@samba.org> Date: Sun Jun 1 20:57:21 2014 +0200 unix_msg: Lift sockaddr_un handling from unix_msg_init Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0d81063ea93302b1782e6e5e942fcc6788c75afe Author: Volker Lendecke <v...@samba.org> Date: Sun Jun 1 20:57:21 2014 +0200 unix_msg: Lift sockaddr_un handling from unix_dgram_send Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 6ea627b3572ad72202e062a9e006eba53cce1bc6 Author: Volker Lendecke <v...@samba.org> Date: Sun Jun 1 20:57:21 2014 +0200 unix_msg: Lift sockaddr_un handling from unix_dgram_send_queue_init Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 4ca79b0b11c3c566927f7f1211254fb78f0bd6b9 Author: Volker Lendecke <v...@samba.org> Date: Sun Jun 1 20:57:21 2014 +0200 unix_msg: Lift sockaddr_un handling from unix_dgram_init Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: source3/include/messages.h | 18 ++-- source3/lib/messages.c | 45 ++++++---- source3/lib/messages_ctdbd.c | 15 ++-- source3/lib/messages_dgm.c | 172 +++++++++++++++++------------------- source3/lib/unix_msg/test_drain.c | 9 +- source3/lib/unix_msg/test_source.c | 6 +- source3/lib/unix_msg/tests.c | 32 ++++--- source3/lib/unix_msg/unix_msg.c | 76 ++++++---------- source3/lib/unix_msg/unix_msg.h | 6 +- source3/smbd/server.c | 6 +- source3/utils/smbcontrol.c | 10 +- 11 files changed, 195 insertions(+), 200 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/include/messages.h b/source3/include/messages.h index 5784e41..b718dd7 100644 --- a/source3/include/messages.h +++ b/source3/include/messages.h @@ -66,18 +66,18 @@ struct messaging_context; struct messaging_rec; struct messaging_backend { - NTSTATUS (*send_fn)(struct server_id src, - struct server_id pid, int msg_type, - const struct iovec *iov, int iovlen, - struct messaging_backend *backend); + int (*send_fn)(struct server_id src, + struct server_id pid, int msg_type, + const struct iovec *iov, int iovlen, + struct messaging_backend *backend); void *private_data; }; -NTSTATUS messaging_dgm_init(struct messaging_context *msg_ctx, - TALLOC_CTX *mem_ctx, - struct messaging_backend **presult); -NTSTATUS messaging_dgm_cleanup(struct messaging_context *msg_ctx, pid_t pid); -NTSTATUS messaging_dgm_wipe(struct messaging_context *msg_ctx); +int messaging_dgm_init(struct messaging_context *msg_ctx, + TALLOC_CTX *mem_ctx, + struct messaging_backend **presult); +int messaging_dgm_cleanup(struct messaging_context *msg_ctx, pid_t pid); +int messaging_dgm_wipe(struct messaging_context *msg_ctx); void *messaging_dgm_register_tevent_context(TALLOC_CTX *mem_ctx, struct messaging_context *msg_ctx, struct tevent_context *ev); diff --git a/source3/lib/messages.c b/source3/lib/messages.c index 1263bf1..9514392 100644 --- a/source3/lib/messages.c +++ b/source3/lib/messages.c @@ -209,6 +209,7 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx, { struct messaging_context *ctx; NTSTATUS status; + int ret; static bool have_context = false; if (have_context) { @@ -225,11 +226,10 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx, ctx->event_ctx = ev; ctx->have_context = &have_context; - status = messaging_dgm_init(ctx, ctx, &ctx->local); + ret = messaging_dgm_init(ctx, ctx, &ctx->local); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(2, ("messaging_dgm_init failed: %s\n", - nt_errstr(status))); + if (ret != 0) { + DEBUG(2, ("messaging_dgm_init failed: %s\n", strerror(ret))); TALLOC_FREE(ctx); return NULL; } @@ -278,16 +278,16 @@ struct server_id messaging_server_id(const struct messaging_context *msg_ctx) NTSTATUS messaging_reinit(struct messaging_context *msg_ctx) { NTSTATUS status; + int ret; TALLOC_FREE(msg_ctx->local); msg_ctx->id = procid_self(); - status = messaging_dgm_init(msg_ctx, msg_ctx, &msg_ctx->local); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0, ("messaging_dgm_init failed: %s\n", - nt_errstr(status))); - return status; + ret = messaging_dgm_init(msg_ctx, msg_ctx, &msg_ctx->local); + if (ret != 0) { + DEBUG(0, ("messaging_dgm_init failed: %s\n", strerror(errno))); + return map_nt_error_from_unix(ret); } TALLOC_FREE(msg_ctx->remote); @@ -412,14 +412,20 @@ NTSTATUS messaging_send_iov(struct messaging_context *msg_ctx, struct server_id server, uint32_t msg_type, const struct iovec *iov, int iovlen) { + int ret; + if (server_id_is_disconnected(&server)) { return NT_STATUS_INVALID_PARAMETER_MIX; } if (!procid_is_local(&server)) { - return msg_ctx->remote->send_fn(msg_ctx->id, server, - msg_type, iov, iovlen, - msg_ctx->remote); + ret = msg_ctx->remote->send_fn(msg_ctx->id, server, + msg_type, iov, iovlen, + msg_ctx->remote); + if (ret != 0) { + return map_nt_error_from_unix(ret); + } + return NT_STATUS_OK; } if (messaging_is_self_send(msg_ctx, &server)) { @@ -444,8 +450,12 @@ NTSTATUS messaging_send_iov(struct messaging_context *msg_ctx, return NT_STATUS_OK; } - return msg_ctx->local->send_fn(msg_ctx->id, server, msg_type, - iov, iovlen, msg_ctx->local); + ret = msg_ctx->local->send_fn(msg_ctx->id, server, msg_type, + iov, iovlen, msg_ctx->local); + if (ret != 0) { + return map_nt_error_from_unix(ret); + } + return NT_STATUS_OK; } static struct messaging_rec *messaging_rec_dup(TALLOC_CTX *mem_ctx, @@ -869,10 +879,11 @@ static int mess_parent_dgm_cleanup(void *private_data) { struct messaging_context *msg_ctx = talloc_get_type_abort( private_data, struct messaging_context); - NTSTATUS status; + int ret; - status = messaging_dgm_wipe(msg_ctx); - DEBUG(10, ("messaging_dgm_wipe returned %s\n", nt_errstr(status))); + ret = messaging_dgm_wipe(msg_ctx); + DEBUG(10, ("messaging_dgm_wipe returned %s\n", + ret ? strerror(ret) : "ok")); return lp_parm_int(-1, "messaging", "messaging dgm cleanup interval", 60*15); } diff --git a/source3/lib/messages_ctdbd.c b/source3/lib/messages_ctdbd.c index 3b7fa05..add089d 100644 --- a/source3/lib/messages_ctdbd.c +++ b/source3/lib/messages_ctdbd.c @@ -88,10 +88,10 @@ struct ctdbd_connection *messaging_ctdbd_connection(void) return global_ctdbd_connection; } -static NTSTATUS messaging_ctdb_send(struct server_id src, - struct server_id pid, int msg_type, - const struct iovec *iov, int iovlen, - struct messaging_backend *backend) +static int messaging_ctdb_send(struct server_id src, + struct server_id pid, int msg_type, + const struct iovec *iov, int iovlen, + struct messaging_backend *backend) { struct messaging_ctdbd_context *ctx = talloc_get_type_abort( backend->private_data, struct messaging_ctdbd_context); @@ -102,7 +102,7 @@ static NTSTATUS messaging_ctdb_send(struct server_id src, buf = iov_buf(talloc_tos(), iov, iovlen); if (buf == NULL) { - return NT_STATUS_NO_MEMORY; + return ENOMEM; } @@ -116,7 +116,10 @@ static NTSTATUS messaging_ctdb_send(struct server_id src, TALLOC_FREE(buf); - return status; + if (NT_STATUS_IS_OK(status)) { + return 0; + } + return map_errno_from_nt_status(status); } static int messaging_ctdbd_destructor(struct messaging_ctdbd_context *ctx) diff --git a/source3/lib/messages_dgm.c b/source3/lib/messages_dgm.c index c3ab0d1..8b897f6 100644 --- a/source3/lib/messages_dgm.c +++ b/source3/lib/messages_dgm.c @@ -44,22 +44,22 @@ struct messaging_dgm_hdr { struct server_id src; }; -static NTSTATUS messaging_dgm_send(struct server_id src, - struct server_id pid, int msg_type, - const struct iovec *iov, int iovlen, - struct messaging_backend *backend); +static int messaging_dgm_send(struct server_id src, + struct server_id pid, int msg_type, + const struct iovec *iov, int iovlen, + struct messaging_backend *backend); static void messaging_dgm_recv(struct unix_msg_ctx *ctx, uint8_t *msg, size_t msg_len, void *private_data); static int messaging_dgm_context_destructor(struct messaging_dgm_context *c); -static int messaging_dgm_lockfile_create(const char *cache_dir, pid_t pid, +static int messaging_dgm_lockfile_create(TALLOC_CTX *tmp_ctx, + const char *cache_dir, pid_t pid, int *plockfile_fd, uint64_t unique) { - char buf[PATH_MAX]; - char *dir, *to_free; - ssize_t dirlen; + fstring buf; + char *dir; char *lockfile_name; int lockfile_fd; struct flock lck = {}; @@ -67,9 +67,8 @@ static int messaging_dgm_lockfile_create(const char *cache_dir, pid_t pid, ssize_t written; bool ok; - dirlen = full_path_tos(cache_dir, "lck", buf, sizeof(buf), - &dir, &to_free); - if (dirlen == -1) { + dir = talloc_asprintf(tmp_ctx, "%s/lck", cache_dir); + if (dir == NULL) { return ENOMEM; } @@ -78,13 +77,13 @@ static int messaging_dgm_lockfile_create(const char *cache_dir, pid_t pid, ret = errno; DEBUG(1, ("%s: Could not create lock directory: %s\n", __func__, strerror(ret))); - TALLOC_FREE(to_free); + TALLOC_FREE(dir); return ret; } - lockfile_name = talloc_asprintf(talloc_tos(), "%s/%u", dir, + lockfile_name = talloc_asprintf(tmp_ctx, "%s/%u", dir, (unsigned)pid); - TALLOC_FREE(to_free); + TALLOC_FREE(dir); if (lockfile_name == NULL) { DEBUG(1, ("%s: talloc_asprintf failed\n", __func__)); return ENOMEM; @@ -143,35 +142,32 @@ fail_free: return ret; } -static int messaging_dgm_lockfile_remove(const char *cache_dir, pid_t pid) +static int messaging_dgm_lockfile_remove(TALLOC_CTX *tmp_ctx, + const char *cache_dir, pid_t pid) { - fstring fname; - char buf[PATH_MAX]; - char *lockfile_name, *to_free; - ssize_t len; + char *lockfile_name; int ret; - fstr_sprintf(fname, "lck/%u", (unsigned)pid); - - len = full_path_tos(cache_dir, fname, buf, sizeof(buf), - &lockfile_name, &to_free); - if (len == -1) { + lockfile_name = talloc_asprintf( + tmp_ctx, "%s/lck/%u", cache_dir, (unsigned)pid); + if (lockfile_name == NULL) { return ENOMEM; } ret = unlink(lockfile_name); if (ret == -1) { ret = errno; - DEBUG(10, ("%s: unlink failed: %s\n", __func__, - strerror(ret))); + DEBUG(10, ("%s: unlink(%s) failed: %s\n", __func__, + lockfile_name, strerror(ret))); } - TALLOC_FREE(to_free); + + TALLOC_FREE(lockfile_name); return ret; } -NTSTATUS messaging_dgm_init(struct messaging_context *msg_ctx, - TALLOC_CTX *mem_ctx, - struct messaging_backend **presult) +int messaging_dgm_init(struct messaging_context *msg_ctx, + TALLOC_CTX *mem_ctx, + struct messaging_backend **presult) { struct messaging_backend *result; struct messaging_dgm_context *ctx; @@ -179,13 +175,14 @@ NTSTATUS messaging_dgm_init(struct messaging_context *msg_ctx, int ret; bool ok; const char *cache_dir; - char *socket_dir, *socket_name; + char *socket_dir; + struct sockaddr_un socket_address; + size_t sockname_len; uint64_t cookie; cache_dir = lp_cache_directory(); if (cache_dir == NULL) { - NTSTATUS status = map_nt_error_from_unix(errno); - return status; + return errno; } result = talloc(mem_ctx, struct messaging_backend); @@ -209,35 +206,37 @@ NTSTATUS messaging_dgm_init(struct messaging_context *msg_ctx, if (socket_dir == NULL) { goto fail_nomem; } - socket_name = talloc_asprintf(ctx, "%s/%u", socket_dir, - (unsigned)pid.pid); - if (socket_name == NULL) { - goto fail_nomem; + + socket_address = (struct sockaddr_un) { .sun_family = AF_UNIX }; + sockname_len = snprintf(socket_address.sun_path, + sizeof(socket_address.sun_path), + "%s/%u", socket_dir, (unsigned)pid.pid); + if (sockname_len >= sizeof(socket_address.sun_path)) { + TALLOC_FREE(result); + return ENAMETOOLONG; } sec_init(); - ret = messaging_dgm_lockfile_create(cache_dir, pid.pid, + ret = messaging_dgm_lockfile_create(ctx, cache_dir, pid.pid, &ctx->lockfile_fd, pid.unique_id); if (ret != 0) { DEBUG(1, ("%s: messaging_dgm_create_lockfile failed: %s\n", __func__, strerror(ret))); TALLOC_FREE(result); - return map_nt_error_from_unix(ret); + return ret; } ctx->msg_callbacks = poll_funcs_init_tevent(ctx); if (ctx->msg_callbacks == NULL) { - TALLOC_FREE(result); - return NT_STATUS_NO_MEMORY; + goto fail_nomem; } ctx->tevent_handle = poll_funcs_tevent_register( ctx, ctx->msg_callbacks, messaging_tevent_context(msg_ctx)); if (ctx->tevent_handle == NULL) { - TALLOC_FREE(result); - return NT_STATUS_NO_MEMORY; + goto fail_nomem; } ok = directory_create_or_exist_strict(socket_dir, sec_initial_uid(), @@ -245,30 +244,29 @@ NTSTATUS messaging_dgm_init(struct messaging_context *msg_ctx, if (!ok) { DEBUG(1, ("Could not create socket directory\n")); TALLOC_FREE(result); - return NT_STATUS_ACCESS_DENIED; + return EACCES; } TALLOC_FREE(socket_dir); - unlink(socket_name); + unlink(socket_address.sun_path); generate_random_buffer((uint8_t *)&cookie, sizeof(cookie)); - ret = unix_msg_init(socket_name, ctx->msg_callbacks, 1024, cookie, + ret = unix_msg_init(&socket_address, ctx->msg_callbacks, 1024, cookie, messaging_dgm_recv, ctx, &ctx->dgm_ctx); - TALLOC_FREE(socket_name); if (ret != 0) { DEBUG(1, ("unix_msg_init failed: %s\n", strerror(ret))); TALLOC_FREE(result); - return map_nt_error_from_unix(ret); + return ret; } talloc_set_destructor(ctx, messaging_dgm_context_destructor); *presult = result; - return NT_STATUS_OK; + return 0; fail_nomem: TALLOC_FREE(result); - return NT_STATUS_NO_MEMORY; + return ENOMEM; } static int messaging_dgm_context_destructor(struct messaging_dgm_context *c) @@ -282,34 +280,32 @@ static int messaging_dgm_context_destructor(struct messaging_dgm_context *c) unix_msg_free(c->dgm_ctx); if (getpid() == pid.pid) { - (void)messaging_dgm_lockfile_remove(c->cache_dir, pid.pid); + (void)messaging_dgm_lockfile_remove(c, c->cache_dir, pid.pid); } close(c->lockfile_fd); return 0; } -static NTSTATUS messaging_dgm_send(struct server_id src, - struct server_id pid, int msg_type, - const struct iovec *iov, int iovlen, - struct messaging_backend *backend) +static int messaging_dgm_send(struct server_id src, + struct server_id pid, int msg_type, + const struct iovec *iov, int iovlen, + struct messaging_backend *backend) { struct messaging_dgm_context *ctx = talloc_get_type_abort( backend->private_data, struct messaging_dgm_context); - fstring pid_str; - char buf[PATH_MAX]; - char *dst_sock, *to_free; struct messaging_dgm_hdr hdr; struct iovec iov2[iovlen + 1]; - ssize_t pathlen; struct server_id_buf idbuf; + struct sockaddr_un dst; + ssize_t dst_pathlen; int ret; - fstr_sprintf(pid_str, "msg/%u", (unsigned)pid.pid); + dst = (struct sockaddr_un) { .sun_family = AF_UNIX }; - pathlen = full_path_tos(ctx->cache_dir, pid_str, buf, sizeof(buf), - &dst_sock, &to_free); - if (pathlen == -1) { - return NT_STATUS_NO_MEMORY; + dst_pathlen = snprintf(dst.sun_path, sizeof(dst.sun_path), + "%s/msg/%u", ctx->cache_dir, (unsigned)pid.pid); + if (dst_pathlen >= sizeof(dst.sun_path)) { + return ENAMETOOLONG; } hdr.msg_version = MESSAGE_VERSION; @@ -326,15 +322,10 @@ static NTSTATUS messaging_dgm_send(struct server_id src, memcpy(iov2+1, iov, iovlen*sizeof(struct iovec)); become_root(); - ret = unix_msg_send(ctx->dgm_ctx, dst_sock, iov2, iovlen + 1); + ret = unix_msg_send(ctx->dgm_ctx, &dst, iov2, iovlen + 1); unbecome_root(); - TALLOC_FREE(to_free); - - if (ret != 0) { - return map_nt_error_from_unix(ret); - } - return NT_STATUS_OK; + return ret; } static void messaging_dgm_recv(struct unix_msg_ctx *ctx, @@ -371,7 +362,7 @@ static void messaging_dgm_recv(struct unix_msg_ctx *ctx, messaging_dispatch_rec(dgm_ctx->msg_ctx, &rec); } -NTSTATUS messaging_dgm_cleanup(struct messaging_context *msg_ctx, pid_t pid) +int messaging_dgm_cleanup(struct messaging_context *msg_ctx, pid_t pid) { struct messaging_backend *be = messaging_local_backend(msg_ctx); struct messaging_dgm_context *ctx = talloc_get_type_abort( @@ -379,26 +370,25 @@ NTSTATUS messaging_dgm_cleanup(struct messaging_context *msg_ctx, pid_t pid) char *lockfile_name, *socket_name; int fd, ret; struct flock lck = {}; - NTSTATUS status = NT_STATUS_OK; lockfile_name = talloc_asprintf(talloc_tos(), "%s/lck/%u", ctx->cache_dir, (unsigned)pid); if (lockfile_name == NULL) { - return NT_STATUS_NO_MEMORY; + return ENOMEM; } socket_name = talloc_asprintf(lockfile_name, "%s/msg/%u", ctx->cache_dir, (unsigned)pid); if (socket_name == NULL) { TALLOC_FREE(lockfile_name); - return NT_STATUS_NO_MEMORY; + return ENOMEM; } fd = open(lockfile_name, O_NONBLOCK|O_WRONLY, 0); if (fd == -1) { - status = map_nt_error_from_unix(errno); + ret = errno; DEBUG(10, ("%s: open(%s) failed: %s\n", __func__, - lockfile_name, strerror(errno))); - return status; + lockfile_name, strerror(ret))); + return ret; } lck.l_type = F_WRLCK; @@ -408,12 +398,12 @@ NTSTATUS messaging_dgm_cleanup(struct messaging_context *msg_ctx, pid_t pid) ret = fcntl(fd, F_SETLK, &lck); -- Samba Shared Repository