[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Wed Jun 18 13:18:04 MDT 2014
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 <vl at samba.org>
Date: Tue Jun 10 15:21:10 2014 +0000
messaging3: Make messaging_dgm_init return 0/errno
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Wed Jun 18 21:17:57 CEST 2014 on sn-devel-104
commit b84ea45fbd54fde820438d2065eedfb757b7158d
Author: Volker Lendecke <vl at samba.org>
Date: Tue Jun 10 14:57:05 2014 +0000
messaging3: Use "goto fail_nomem" where appropriate
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 4f4631831a379f2ebf0eb3d178fd9e91d951301a
Author: Volker Lendecke <vl at 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 <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 9fd8d5154f178208f82777f7f81682be66e79400
Author: Volker Lendecke <vl at samba.org>
Date: Wed Jun 4 14:47:05 2014 +0000
messaging3: Make messaging_dgm_wipe return 0/errno
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 2f3435085e0d6f64cd41b2d42e446da8821abc4b
Author: Volker Lendecke <vl at samba.org>
Date: Wed Jun 4 14:42:46 2014 +0000
messaging3: Make messaging_dgm_cleanup return 0/errno
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit e6b33ce6112bc41f2a5027f2097c74537c056a5b
Author: Volker Lendecke <vl at 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 <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 94db1b21d062099e1a0e2f290fc12e458c6c6f76
Author: Volker Lendecke <vl at samba.org>
Date: Mon Jun 2 23:01:46 2014 +0200
messaging3: Remove two uses of talloc_tos()
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 748ffccd5a1143048cbfe7b20fc6e850eb99cb2f
Author: Volker Lendecke <vl at 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 <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 516e2f5e68aa10306a346865922b35e9a1e299c2
Author: Volker Lendecke <vl at 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 <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 73a1205fe8a8aae357a96fb5074ed4dd16082fff
Author: Volker Lendecke <vl at 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 <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 0d81063ea93302b1782e6e5e942fcc6788c75afe
Author: Volker Lendecke <vl at 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 <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 6ea627b3572ad72202e062a9e006eba53cce1bc6
Author: Volker Lendecke <vl at 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 <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 4ca79b0b11c3c566927f7f1211254fb78f0bd6b9
Author: Volker Lendecke <vl at 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 <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at 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
More information about the samba-cvs
mailing list