summaryrefslogtreecommitdiffstats
path: root/source3/lib
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-06-04 14:36:57 +0000
committerJeremy Allison <jra@samba.org>2014-06-18 18:51:13 +0200
commite6b33ce6112bc41f2a5027f2097c74537c056a5b (patch)
treebba896abf713a76550f9d1cafad10a4d4991ed03 /source3/lib
parent94db1b21d062099e1a0e2f290fc12e458c6c6f76 (diff)
downloadsamba-e6b33ce6112bc41f2a5027f2097c74537c056a5b.tar.gz
samba-e6b33ce6112bc41f2a5027f2097c74537c056a5b.tar.xz
samba-e6b33ce6112bc41f2a5027f2097c74537c056a5b.zip
messaging3: Make the _send function return 0/errno
This is to eventually make messaging_dgm usable in ctdb Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/lib')
-rw-r--r--source3/lib/messages.c20
-rw-r--r--source3/lib/messages_ctdbd.c15
-rw-r--r--source3/lib/messages_dgm.c23
3 files changed, 34 insertions, 24 deletions
diff --git a/source3/lib/messages.c b/source3/lib/messages.c
index 1263bf1698..a9015d05b0 100644
--- a/source3/lib/messages.c
+++ b/source3/lib/messages.c
@@ -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,
diff --git a/source3/lib/messages_ctdbd.c b/source3/lib/messages_ctdbd.c
index 3b7fa05322..add089da38 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 09b635db56..fb0419da5b 100644
--- a/source3/lib/messages_dgm.c
+++ b/source3/lib/messages_dgm.c
@@ -44,10 +44,10 @@ 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);
@@ -292,10 +292,10 @@ static int messaging_dgm_context_destructor(struct messaging_dgm_context *c)
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);
@@ -311,7 +311,7 @@ static NTSTATUS messaging_dgm_send(struct server_id src,
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 NT_STATUS_NAME_TOO_LONG;
+ return ENAMETOOLONG;
}
hdr.msg_version = MESSAGE_VERSION;
@@ -331,10 +331,7 @@ static NTSTATUS messaging_dgm_send(struct server_id src,
ret = unix_msg_send(ctx->dgm_ctx, &dst, iov2, iovlen + 1);
unbecome_root();
- 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,