summaryrefslogtreecommitdiffstats
path: root/source3/lib/messages.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-07-17 09:44:41 +0000
committerJeremy Allison <jra@samba.org>2014-08-11 23:57:12 +0200
commit371e99959cf8c02b3a4e7b6352ed83f1d8b9200d (patch)
treedd1f4e302592bb8adbe2a475302a58ffb1824a36 /source3/lib/messages.c
parent42e1556bd92092caf997a87964d65d4ce6d0cc39 (diff)
downloadsamba-371e99959cf8c02b3a4e7b6352ed83f1d8b9200d.tar.gz
samba-371e99959cf8c02b3a4e7b6352ed83f1d8b9200d.tar.xz
samba-371e99959cf8c02b3a4e7b6352ed83f1d8b9200d.zip
messaging_dgm: Receive through a cb function
This avoids calling messaging_dispatch_rec directly from messaging_dgm.c Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/lib/messages.c')
-rw-r--r--source3/lib/messages.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/source3/lib/messages.c b/source3/lib/messages.c
index bbc5183343..2e80bab4c7 100644
--- a/source3/lib/messages.c
+++ b/source3/lib/messages.c
@@ -201,6 +201,27 @@ bool message_send_all(struct messaging_context *msg_ctx,
return true;
}
+static void messaging_recv_cb(int msg_type,
+ struct server_id src, struct server_id dst,
+ const uint8_t *msg, size_t msg_len,
+ void *private_data)
+{
+ struct messaging_context *msg_ctx = talloc_get_type_abort(
+ private_data, struct messaging_context);
+ struct messaging_rec rec;
+
+ rec = (struct messaging_rec) {
+ .msg_version = MESSAGE_VERSION,
+ .msg_type = msg_type,
+ .src = src,
+ .dest = dst,
+ .buf.data = discard_const_p(uint8, msg),
+ .buf.length = msg_len
+ };
+
+ messaging_dispatch_rec(msg_ctx, &rec);
+}
+
struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
struct tevent_context *ev)
{
@@ -223,7 +244,8 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
ctx->event_ctx = ev;
ctx->have_context = &have_context;
- ret = messaging_dgm_init(ctx, ctx, &ctx->local);
+ ret = messaging_dgm_init(ctx, ctx, &ctx->local,
+ messaging_recv_cb, ctx);
if (ret != 0) {
DEBUG(2, ("messaging_dgm_init failed: %s\n", strerror(ret)));
@@ -281,7 +303,8 @@ NTSTATUS messaging_reinit(struct messaging_context *msg_ctx)
msg_ctx->id = procid_self();
- ret = messaging_dgm_init(msg_ctx, msg_ctx, &msg_ctx->local);
+ ret = messaging_dgm_init(msg_ctx, msg_ctx, &msg_ctx->local,
+ messaging_recv_cb, msg_ctx);
if (ret != 0) {
DEBUG(0, ("messaging_dgm_init failed: %s\n", strerror(errno)));
return map_nt_error_from_unix(ret);