aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/messenger_api_message.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger/messenger_api_message.c')
-rw-r--r--src/messenger/messenger_api_message.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/messenger/messenger_api_message.c b/src/messenger/messenger_api_message.c
index d65b80576..facd7b093 100644
--- a/src/messenger/messenger_api_message.c
+++ b/src/messenger/messenger_api_message.c
@@ -373,11 +373,14 @@ static void
373encode_message_body (enum GNUNET_MESSENGER_MessageKind kind, const struct GNUNET_MESSENGER_MessageBody *body, 373encode_message_body (enum GNUNET_MESSENGER_MessageKind kind, const struct GNUNET_MESSENGER_MessageBody *body,
374 uint16_t length, char *buffer, uint16_t offset) 374 uint16_t length, char *buffer, uint16_t offset)
375{ 375{
376 uint32_t version;
376 switch (kind) 377 switch (kind)
377 { 378 {
378 case GNUNET_MESSENGER_KIND_INFO: 379 case GNUNET_MESSENGER_KIND_INFO:
380 version = GNUNET_htobe32(body->info.messenger_version);
381
379 encode_step_key(buffer, offset, &(body->info.host_key), length); 382 encode_step_key(buffer, offset, &(body->info.host_key), length);
380 encode_step(buffer, offset, &(body->info.messenger_version)); 383 encode_step(buffer, offset, &version);
381 break; 384 break;
382 case GNUNET_MESSENGER_KIND_JOIN: 385 case GNUNET_MESSENGER_KIND_JOIN:
383 encode_step_key(buffer, offset, &(body->join.key), length); 386 encode_step_key(buffer, offset, &(body->join.key), length);
@@ -452,7 +455,7 @@ encode_message (const struct GNUNET_MESSENGER_Message *message, uint16_t length,
452 if (GNUNET_YES == include_signature) 455 if (GNUNET_YES == include_signature)
453 encode_step_signature(buffer, offset, &(message->header.signature), length); 456 encode_step_signature(buffer, offset, &(message->header.signature), length);
454 457
455 const kind_t kind = (kind_t) message->header.kind; 458 const kind_t kind = GNUNET_htobe32((kind_t) message->header.kind);
456 459
457 encode_step(buffer, offset, &(message->header.timestamp)); 460 encode_step(buffer, offset, &(message->header.timestamp));
458 encode_step(buffer, offset, &(message->header.sender_id)); 461 encode_step(buffer, offset, &(message->header.sender_id));
@@ -468,7 +471,7 @@ encode_short_message (const struct GNUNET_MESSENGER_ShortMessage *message, uint1
468 struct GNUNET_HashCode hash; 471 struct GNUNET_HashCode hash;
469 uint16_t offset = sizeof(hash); 472 uint16_t offset = sizeof(hash);
470 473
471 const kind_t kind = (kind_t) message->kind; 474 const kind_t kind = GNUNET_htobe32((kind_t) message->kind);
472 475
473 encode_step(buffer, offset, &kind); 476 encode_step(buffer, offset, &kind);
474 477
@@ -526,11 +529,14 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind *kind, struct GNUNET_MESS
526 529
527 length -= padding; 530 length -= padding;
528 531
532 uint32_t version;
529 switch (*kind) 533 switch (*kind)
530 { 534 {
531 case GNUNET_MESSENGER_KIND_INFO: { 535 case GNUNET_MESSENGER_KIND_INFO: {
532 decode_step_key(buffer, offset, &(body->info.host_key), length); 536 decode_step_key(buffer, offset, &(body->info.host_key), length);
533 decode_step(buffer, offset, &(body->info.messenger_version)); 537 decode_step(buffer, offset, &version);
538
539 body->info.messenger_version = GNUNET_be32toh(version);
534 break; 540 break;
535 } case GNUNET_MESSENGER_KIND_JOIN: { 541 } case GNUNET_MESSENGER_KIND_JOIN: {
536 decode_step_key(buffer, offset, &(body->join.key), length); 542 decode_step_key(buffer, offset, &(body->join.key), length);
@@ -618,7 +624,7 @@ decode_message (struct GNUNET_MESSENGER_Message *message, uint16_t length, const
618 decode_step(buffer, offset, &(message->header.previous)); 624 decode_step(buffer, offset, &(message->header.previous));
619 decode_step(buffer, offset, &kind); 625 decode_step(buffer, offset, &kind);
620 626
621 message->header.kind = (enum GNUNET_MESSENGER_MessageKind) kind; 627 message->header.kind = (enum GNUNET_MESSENGER_MessageKind) GNUNET_be32toh(kind);
622 628
623 if (count < get_message_kind_size (message->header.kind)) 629 if (count < get_message_kind_size (message->header.kind))
624 return GNUNET_NO; 630 return GNUNET_NO;
@@ -655,7 +661,7 @@ decode_short_message (struct GNUNET_MESSENGER_ShortMessage *message, uint16_t le
655 661
656 decode_step(buffer, offset, &kind); 662 decode_step(buffer, offset, &kind);
657 663
658 message->kind = (enum GNUNET_MESSENGER_MessageKind) kind; 664 message->kind = (enum GNUNET_MESSENGER_MessageKind) GNUNET_be32toh(kind);
659 665
660 if (length < get_short_message_size (message, GNUNET_NO)) 666 if (length < get_short_message_size (message, GNUNET_NO))
661 return GNUNET_NO; 667 return GNUNET_NO;