add size of message when forwarding (so the remote end can

skip unknown messages safely)
This commit is contained in:
Cedric Roux
2016-04-26 13:39:41 +02:00
parent 06cd5665eb
commit ed71e94d1b
2 changed files with 8 additions and 3 deletions
+6 -3
View File
@@ -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;
+2
View File
@@ -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: {