ctdb-protocol: Fix marshalling for ctdb_event_request_run
authorAmitay Isaacs <amitay@gmail.com>
Wed, 26 Jul 2017 15:32:10 +0000 (01:32 +1000)
committerMartin Schwenke <martins@samba.org>
Wed, 30 Aug 2017 12:59:26 +0000 (14:59 +0200)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/protocol/protocol_event.c
ctdb/tests/src/protocol_event_test.c

index e9abac565f94f69a8c8127fe9ccdebb5bc1841f9..8e27660275b3d1d085c56a0a86a7480ae3fe798a 100644 (file)
@@ -249,7 +249,7 @@ static size_t ctdb_event_request_run_len(struct ctdb_event_request_run *in)
 }
 
 static void ctdb_event_request_run_push(struct ctdb_event_request_run *in,
-                                       uint8_t *buf)
+                                       uint8_t *buf, size_t *npush)
 {
        size_t offset = 0, np;
 
@@ -260,11 +260,15 @@ static void ctdb_event_request_run_push(struct ctdb_event_request_run *in,
        offset += np;
 
        ctdb_stringn_push(&in->arg_str, buf+offset, &np);
+       offset += np;
+
+       *npush = offset;
 }
 
 static int ctdb_event_request_run_pull(uint8_t *buf, size_t buflen,
                                       TALLOC_CTX *mem_ctx,
-                                      struct ctdb_event_request_run **out)
+                                      struct ctdb_event_request_run **out,
+                                      size_t *npull)
 {
        struct ctdb_event_request_run *rdata;
        size_t offset = 0, np;
@@ -293,8 +297,10 @@ static int ctdb_event_request_run_pull(uint8_t *buf, size_t buflen,
        if (ret != 0) {
                goto fail;
        }
+       offset += np;
 
        *out = rdata;
+       *npull = offset;
        return 0;
 
 fail:
@@ -473,7 +479,7 @@ static void ctdb_event_request_data_push(struct ctdb_event_request_data *in,
 
        switch (in->command) {
        case CTDB_EVENT_COMMAND_RUN:
-               ctdb_event_request_run_push(in->data.run, buf+offset);
+               ctdb_event_request_run_push(in->data.run, buf+offset, &np);
                break;
 
        case CTDB_EVENT_COMMAND_STATUS:
@@ -514,7 +520,8 @@ static int ctdb_event_request_data_pull(uint8_t *buf, size_t buflen,
        switch (out->command) {
        case CTDB_EVENT_COMMAND_RUN:
                ret = ctdb_event_request_run_pull(buf+offset, buflen-offset,
-                                                 mem_ctx, &out->data.run);
+                                                 mem_ctx, &out->data.run,
+                                                 &np);
                break;
 
        case CTDB_EVENT_COMMAND_STATUS:
index df911eebd7998a6e08860b54948ddb8335a7faec..7f7ad0cbeb1a0c8ad7b9d02918a60c77b830e944 100644 (file)
@@ -261,7 +261,7 @@ static void test_ctdb_event_reply(void)
        fflush(stdout);
 }
 
-DEFINE_TEST(struct ctdb_event_request_run, ctdb_event_request_run);
+PROTOCOL_TYPE3_TEST(struct ctdb_event_request_run, ctdb_event_request_run);
 DEFINE_TEST(struct ctdb_event_request_status, ctdb_event_request_status);
 DEFINE_TEST(struct ctdb_event_request_script_enable,
                                ctdb_event_request_script_enable);