From ed71e94d1be3fc0ec138834ff8536fb786e0bb89 Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Tue, 26 Apr 2016 13:39:41 +0200 Subject: [PATCH] add size of message when forwarding (so the remote end can skip unknown messages safely) --- common/utils/T/tracer/forward.c | 9 ++++++--- common/utils/T/tracer/remote.c | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/common/utils/T/tracer/forward.c b/common/utils/T/tracer/forward.c index 90ca43374e..27b36c9a9b 100644 --- a/common/utils/T/tracer/forward.c +++ b/common/utils/T/tracer/forward.c @@ -150,15 +150,18 @@ again: void forward(void *_forwarder, char *buf, int size) { forward_data *f = _forwarder; + int32_t ssize = size; databuf *new; new = malloc(sizeof(*new)); if (new == NULL) abort(); if (pthread_mutex_lock(&f->datalock)) abort(); - new->d = malloc(size); if (new->d == NULL) abort(); - memcpy(new->d, buf, size); - new->l = size; + new->d = malloc(size + 4); if (new->d == NULL) abort(); + /* put the size of the message at the head */ + memcpy(new->d, &ssize, 4); + memcpy(new->d+4, buf, size); + new->l = size+4; new->next = NULL; if (f->head == NULL) f->head = new; if (f->tail != NULL) f->tail->next = new; diff --git a/common/utils/T/tracer/remote.c b/common/utils/T/tracer/remote.c index 0656daa68d..225db809b7 100644 --- a/common/utils/T/tracer/remote.c +++ b/common/utils/T/tracer/remote.c @@ -91,7 +91,9 @@ void get_message(int s) printf("["x"]["y"] %s", str); \ } while (0) + int32_t size; int m; + if (GET(s, &size, 4) != 4) abort(); if (GET(s, &m, sizeof(int)) != sizeof(int)) abort(); switch (m) { case T_first: { -- GitLab