From 198e8ee15037d1de39a3d23d3bf579fed0561ba3 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Mon, 19 May 2014 01:49:53 +0200 Subject: store structure version for all structures when marshalling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/mds-server/client.c | 6 +++++- src/mds-server/client.h | 2 ++ src/mds-server/interception_condition.c | 10 +++++++--- src/mds-server/interception_condition.h | 2 ++ src/mds-server/multicast.c | 9 ++++++--- src/mds-server/multicast.h | 2 ++ src/mds-server/queued_interception.c | 5 ++++- src/mds-server/queued_interception.h | 2 ++ 8 files changed, 30 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/mds-server/client.c b/src/mds-server/client.c index 76c7250..23511b4 100644 --- a/src/mds-server/client.c +++ b/src/mds-server/client.c @@ -141,7 +141,7 @@ void client_destroy(client_t* restrict this) */ size_t client_marshal_size(const client_t* restrict this) { - size_t n = sizeof(ssize_t) + 2 * sizeof(int) + sizeof(uint64_t) + 5 * sizeof(size_t); + size_t n = sizeof(ssize_t) + 3 * sizeof(int) + sizeof(uint64_t) + 5 * sizeof(size_t); size_t i; n += mds_message_marshal_size(&(this->message)); @@ -166,6 +166,7 @@ size_t client_marshal_size(const client_t* restrict this) size_t client_marshal(const client_t* restrict this, char* restrict data) { size_t i, n; + buf_set_next(data, int, CLIENT_T_VERSION); buf_set_next(data, ssize_t, this->list_entry); buf_set_next(data, int, this->socket_fd); buf_set_next(data, int, this->open); @@ -207,6 +208,8 @@ size_t client_unmarshal(client_t* restrict this, char* restrict data) this->modify_mutex_created = 0; this->modify_cond_created = 0; this->multicasts_count = 0; + /* buf_get_next(data, int, CLIENT_T_VERSION); */ + buf_next(data, int, 1); buf_get_next(data, ssize_t, this->list_entry); buf_get_next(data, int, this->socket_fd); buf_get_next(data, int, this->open); @@ -281,6 +284,7 @@ size_t client_unmarshal(client_t* restrict this, char* restrict data) size_t client_unmarshal_skip(char* restrict data) { size_t n, c, rc = sizeof(ssize_t) + 2 * sizeof(int) + sizeof(uint64_t) + 5 * sizeof(size_t); + buf_next(data, int, 1); buf_next(data, ssize_t, 1); buf_next(data, int, 2); buf_next(data, uint64_t, 1); diff --git a/src/mds-server/client.h b/src/mds-server/client.h index 39ed791..ab8046a 100644 --- a/src/mds-server/client.h +++ b/src/mds-server/client.h @@ -30,6 +30,8 @@ +#define CLIENT_T_VERSION 0 + /** * Client information structure */ diff --git a/src/mds-server/interception_condition.c b/src/mds-server/interception_condition.c index 47a082a..8f11adb 100644 --- a/src/mds-server/interception_condition.c +++ b/src/mds-server/interception_condition.c @@ -32,7 +32,7 @@ */ size_t interception_condition_marshal_size(const interception_condition_t* restrict this) { - return sizeof(size_t) + sizeof(int64_t) + sizeof(int) + (strlen(this->condition) + 1) * sizeof(char); + return sizeof(size_t) + sizeof(int64_t) + 2 * sizeof(int) + (strlen(this->condition) + 1) * sizeof(char); } /** @@ -44,12 +44,13 @@ size_t interception_condition_marshal_size(const interception_condition_t* restr */ size_t interception_condition_marshal(const interception_condition_t* restrict this, char* restrict data) { - size_t n = (strlen(this->condition) + 1) * sizeof(char);; + size_t n = (strlen(this->condition) + 1) * sizeof(char); + buf_set_next(data, int, INTERCEPTION_CONDITION_T_VERSION); buf_set_next(data, size_t, this->header_hash); buf_set_next(data, int64_t, this->priority); buf_set_next(data, int, this->modifying); memcpy(data, this->condition, n); - return sizeof(size_t) + sizeof(int64_t) + sizeof(int) + n; + return sizeof(size_t) + sizeof(int64_t) + 2 * sizeof(int) + n; } @@ -64,6 +65,8 @@ size_t interception_condition_unmarshal(interception_condition_t* restrict this, { size_t n; this->condition = NULL; + /* buf_get_next(data, int, INTERCEPTION_CONDITION_T_VERSION); */ + buf_next(data, int, 1); buf_get_next(data, size_t, this->header_hash); buf_get_next(data, int64_t, this->priority); buf_get_next(data, int, this->modifying); @@ -84,6 +87,7 @@ size_t interception_condition_unmarshal(interception_condition_t* restrict this, size_t interception_condition_unmarshal_skip(char* restrict data) { size_t n = sizeof(size_t) + sizeof(int64_t) + sizeof(int); + buf_next(data, int, 1); buf_next(data, size_t, 1); buf_next(data, int64_t, 1); buf_next(data, int, 1); diff --git a/src/mds-server/interception_condition.h b/src/mds-server/interception_condition.h index 63b9f1c..19f2c68 100644 --- a/src/mds-server/interception_condition.h +++ b/src/mds-server/interception_condition.h @@ -23,6 +23,8 @@ #include +#define INTERCEPTION_CONDITION_T_VERSION 0 + /** * A condition for a message being intercepted by a client */ diff --git a/src/mds-server/multicast.c b/src/mds-server/multicast.c index 9be0e8d..21c9e60 100644 --- a/src/mds-server/multicast.c +++ b/src/mds-server/multicast.c @@ -62,7 +62,7 @@ void multicast_destroy(multicast_t* restrict this) */ size_t multicast_marshal_size(const multicast_t* restrict this) { - size_t rc = 5 * sizeof(size_t) + this->message_length * sizeof(char); + size_t rc = sizeof(int) + 5 * sizeof(size_t) + this->message_length * sizeof(char); size_t i; for (i = 0; i < this->interceptions_count; i++) rc += queued_interception_marshal_size(); @@ -79,8 +79,9 @@ size_t multicast_marshal_size(const multicast_t* restrict this) */ size_t multicast_marshal(const multicast_t* restrict this, char* restrict data) { - size_t rc = 5 * sizeof(size_t); + size_t rc = sizeof(int) + 5 * sizeof(size_t); size_t i, n; + buf_set_next(data, int, MULTICAST_T_VERSION); buf_set_next(data, size_t, this->interceptions_count); buf_set_next(data, size_t, this->interceptions_ptr); buf_set_next(data, size_t, this->message_length); @@ -112,6 +113,8 @@ size_t multicast_unmarshal(multicast_t* restrict this, char* restrict data) size_t i, n; this->interceptions = NULL; this->message = NULL; + /* buf_get_next(data, int, MULTICAST_T_VERSION); */ + buf_next(data, int, 1); buf_get_next(data, size_t, this->interceptions_count); buf_get_next(data, size_t, this->interceptions_ptr); buf_get_next(data, size_t, this->message_length); @@ -143,7 +146,7 @@ size_t multicast_unmarshal_skip(char* restrict data) { size_t interceptions_count = buf_cast(data, size_t, 0); size_t message_length = buf_cast(data, size_t, 2); - size_t rc = 5 * sizeof(size_t) + message_length * sizeof(char); + size_t rc = sizeof(int) + 5 * sizeof(size_t) + message_length * sizeof(char); size_t n; while (interceptions_count--) { diff --git a/src/mds-server/multicast.h b/src/mds-server/multicast.h index 3ea1e07..d23d7ce 100644 --- a/src/mds-server/multicast.h +++ b/src/mds-server/multicast.h @@ -22,6 +22,8 @@ #include "queued_interception.h" +#define MULTICAST_T_VERSION 0 + /** * Message multicast state */ diff --git a/src/mds-server/queued_interception.c b/src/mds-server/queued_interception.c index 56d58c3..d162558 100644 --- a/src/mds-server/queued_interception.c +++ b/src/mds-server/queued_interception.c @@ -28,7 +28,7 @@ */ size_t queued_interception_marshal_size(void) { - return sizeof(int64_t) + 2 * sizeof(int); + return sizeof(int64_t) + 3 * sizeof(int); } @@ -41,6 +41,7 @@ size_t queued_interception_marshal_size(void) */ size_t queued_interception_marshal(const queued_interception_t* restrict this, char* restrict data) { + buf_set_next(data, int, QUEUED_INTERCEPTION_T_VERSION); buf_set_next(data, int64_t, this->priority); buf_set_next(data, int, this->modifying); buf_set_next(data, int, this->client->socket_fd); @@ -58,6 +59,8 @@ size_t queued_interception_marshal(const queued_interception_t* restrict this, c size_t queued_interception_unmarshal(queued_interception_t* restrict this, char* restrict data) { this->client = NULL; + /* buf_get_next(data, int, QUEUED_INTERCEPTION_T_VERSION); */ + buf_next(data, int, 1); buf_get_next(data, int64_t, this->priority); buf_get_next(data, int, this->modifying); buf_get_next(data, int, this->socket_fd); diff --git a/src/mds-server/queued_interception.h b/src/mds-server/queued_interception.h index ddab418..3c7fe51 100644 --- a/src/mds-server/queued_interception.h +++ b/src/mds-server/queued_interception.h @@ -24,6 +24,8 @@ #include +#define QUEUED_INTERCEPTION_T_VERSION 0 + /** * A queued interception */ -- cgit v1.2.3-70-g09d2