ctdb-protocol: Fix marshalling for ctdb_event_request_status
authorAmitay Isaacs <amitay@gmail.com>
Wed, 26 Jul 2017 15:33:45 +0000 (01:33 +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 8e27660275b3d1d085c56a0a86a7480ae3fe798a..d1cca15d3522eda9325fbe923ac6e74b8aec5dd2 100644 (file)
@@ -317,7 +317,7 @@ static size_t ctdb_event_request_status_len(
 
 static void ctdb_event_request_status_push(
                                struct ctdb_event_request_status *in,
-                               uint8_t *buf)
+                               uint8_t *buf, size_t *npush)
 {
        size_t offset = 0, np;
 
@@ -325,12 +325,16 @@ static void ctdb_event_request_status_push(
        offset += np;
 
        ctdb_event_status_state_push(in->state, buf+offset, &np);
+       offset += np;
+
+       *npush = offset;
 }
 
 static int ctdb_event_request_status_pull(
                                uint8_t *buf, size_t buflen,
                                TALLOC_CTX *mem_ctx,
-                               struct ctdb_event_request_status **out)
+                               struct ctdb_event_request_status **out,
+                               size_t *npull)
 {
        struct ctdb_event_request_status *rdata;
        size_t offset = 0, np;
@@ -354,8 +358,10 @@ static int ctdb_event_request_status_pull(
                talloc_free(rdata);
                return ret;
        }
+       offset += np;
 
        *out = rdata;
+       *npull = offset;
        return 0;
 }
 
@@ -483,7 +489,8 @@ static void ctdb_event_request_data_push(struct ctdb_event_request_data *in,
                break;
 
        case CTDB_EVENT_COMMAND_STATUS:
-               ctdb_event_request_status_push(in->data.status, buf+offset);
+               ctdb_event_request_status_push(in->data.status, buf+offset,
+                                              &np);
                break;
 
        case CTDB_EVENT_COMMAND_SCRIPT_LIST:
@@ -527,7 +534,8 @@ static int ctdb_event_request_data_pull(uint8_t *buf, size_t buflen,
        case CTDB_EVENT_COMMAND_STATUS:
                ret = ctdb_event_request_status_pull(
                                                buf+offset, buflen-offset,
-                                               mem_ctx, &out->data.status);
+                                               mem_ctx, &out->data.status,
+                                               &np);
                break;
 
        case CTDB_EVENT_COMMAND_SCRIPT_LIST:
index 7f7ad0cbeb1a0c8ad7b9d02918a60c77b830e944..c91791cb64988d76472db22c9199d2328b5706ed 100644 (file)
@@ -262,7 +262,8 @@ static void test_ctdb_event_reply(void)
 }
 
 PROTOCOL_TYPE3_TEST(struct ctdb_event_request_run, ctdb_event_request_run);
-DEFINE_TEST(struct ctdb_event_request_status, ctdb_event_request_status);
+PROTOCOL_TYPE3_TEST(struct ctdb_event_request_status,
+                               ctdb_event_request_status);
 DEFINE_TEST(struct ctdb_event_request_script_enable,
                                ctdb_event_request_script_enable);
 DEFINE_TEST(struct ctdb_event_request_script_disable,