messaging3: Add messaging_send_iov
authorVolker Lendecke <vl@samba.org>
Tue, 25 Feb 2014 12:15:58 +0000 (12:15 +0000)
committerJeremy Allison <jra@samba.org>
Wed, 23 Apr 2014 20:33:08 +0000 (22:33 +0200)
This uses a copy, will be replaced by a direct iovec call through to
sendmsg on the unix domain socket

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/include/messages.h
source3/lib/messages.c

index b89af9c01f87da7c15c6ff4650f19726ba10aa17..3e1b664ce1d007846adafbacfe43529d4e06b012 100644 (file)
@@ -132,6 +132,9 @@ NTSTATUS messaging_send(struct messaging_context *msg_ctx,
 NTSTATUS messaging_send_buf(struct messaging_context *msg_ctx,
                            struct server_id server, uint32_t msg_type,
                            const uint8_t *buf, size_t len);
+NTSTATUS messaging_send_iov(struct messaging_context *msg_ctx,
+                           struct server_id server, uint32_t msg_type,
+                           const struct iovec *iov, int iovlen);
 void messaging_dispatch_rec(struct messaging_context *msg_ctx,
                            struct messaging_rec *rec);
 
index 5db1214e4481b8d4641ce566ebb75cbf84dec96e..b4ed80754bd44258e518707d321254f1210360ed 100644 (file)
@@ -419,6 +419,25 @@ NTSTATUS messaging_send_buf(struct messaging_context *msg_ctx,
        return messaging_send(msg_ctx, server, msg_type, &blob);
 }
 
+NTSTATUS messaging_send_iov(struct messaging_context *msg_ctx,
+                           struct server_id server, uint32_t msg_type,
+                           const struct iovec *iov, int iovlen)
+{
+       uint8_t *buf;
+       NTSTATUS status;
+
+       buf = iov_buf(talloc_tos(), iov, iovlen);
+       if (buf == NULL) {
+               return NT_STATUS_NO_MEMORY;
+       }
+
+       status = messaging_send_buf(msg_ctx, server, msg_type,
+                                   buf, talloc_get_size(buf));
+
+       TALLOC_FREE(buf);
+       return status;
+}
+
 static struct messaging_rec *messaging_rec_dup(TALLOC_CTX *mem_ctx,
                                               struct messaging_rec *rec)
 {