aboutsummaryrefslogtreecommitdiff
path: root/src/messenger
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger')
-rw-r--r--src/messenger/gnunet-service-messenger.c4
-rw-r--r--src/messenger/gnunet-service-messenger_handle.c14
-rw-r--r--src/messenger/gnunet-service-messenger_handle.h4
-rw-r--r--src/messenger/gnunet-service-messenger_message_store.c2
-rw-r--r--src/messenger/gnunet-service-messenger_room.c19
-rw-r--r--src/messenger/gnunet-service-messenger_service.c2
-rw-r--r--src/messenger/gnunet-service-messenger_tunnel.c2
-rw-r--r--src/messenger/messenger.conf.in1
-rw-r--r--src/messenger/messenger_api.c6
-rw-r--r--src/messenger/messenger_api_handle.c2
-rw-r--r--src/messenger/messenger_api_message.c59
-rw-r--r--src/messenger/messenger_api_message.h15
12 files changed, 77 insertions, 53 deletions
diff --git a/src/messenger/gnunet-service-messenger.c b/src/messenger/gnunet-service-messenger.c
index a994e16ee..546f4c0d2 100644
--- a/src/messenger/gnunet-service-messenger.c
+++ b/src/messenger/gnunet-service-messenger.c
@@ -221,7 +221,7 @@ check_for_message:
221 221
222 struct GNUNET_MESSENGER_Message message; 222 struct GNUNET_MESSENGER_Message message;
223 223
224 if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN)) 224 if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, GNUNET_NO))
225 return GNUNET_NO; 225 return GNUNET_NO;
226 226
227 if (GNUNET_YES != decode_message (&message, msg_length, msg_buffer, GNUNET_NO, NULL)) 227 if (GNUNET_YES != decode_message (&message, msg_length, msg_buffer, GNUNET_NO, NULL))
@@ -310,7 +310,7 @@ callback_found_message (void *cls,
310 struct GNUNET_MESSENGER_MemberSession *session = get_member_session_of(member, message, hash); 310 struct GNUNET_MESSENGER_MemberSession *session = get_member_session_of(member, message, hash);
311 311
312 if (session) 312 if (session)
313 notify_handle_message (msg_client->handle, get_room_key(room), session, message, hash); 313 notify_handle_message (msg_client->handle, room, session, message, hash);
314} 314}
315 315
316static void 316static void
diff --git a/src/messenger/gnunet-service-messenger_handle.c b/src/messenger/gnunet-service-messenger_handle.c
index 2095f8b29..fa6830697 100644
--- a/src/messenger/gnunet-service-messenger_handle.c
+++ b/src/messenger/gnunet-service-messenger_handle.c
@@ -501,14 +501,14 @@ get_next_member_session_contect(const struct GNUNET_MESSENGER_MemberSession *ses
501 501
502static const struct GNUNET_MESSENGER_MemberSession* 502static const struct GNUNET_MESSENGER_MemberSession*
503get_handle_member_session (struct GNUNET_MESSENGER_SrvHandle *handle, 503get_handle_member_session (struct GNUNET_MESSENGER_SrvHandle *handle,
504 struct GNUNET_MESSENGER_SrvRoom *room,
504 const struct GNUNET_HashCode *key) 505 const struct GNUNET_HashCode *key)
505{ 506{
506 GNUNET_assert((handle) && (key) && (handle->service)); 507 GNUNET_assert((handle) && (room) && (key) && (handle->service));
507 508
508 const struct GNUNET_ShortHashCode *id = get_handle_member_id(handle, key); 509 const struct GNUNET_ShortHashCode *id = get_handle_member_id(handle, key);
509 struct GNUNET_MESSENGER_SrvRoom *room = get_service_room(handle->service, key);
510 510
511 if ((!id) || (!room)) 511 if (!id)
512 return NULL; 512 return NULL;
513 513
514 struct GNUNET_MESSENGER_MemberStore *store = get_room_member_store(room); 514 struct GNUNET_MESSENGER_MemberStore *store = get_room_member_store(room);
@@ -524,12 +524,14 @@ get_handle_member_session (struct GNUNET_MESSENGER_SrvHandle *handle,
524 524
525void 525void
526notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle, 526notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
527 const struct GNUNET_HashCode *key, 527 struct GNUNET_MESSENGER_SrvRoom *room,
528 const struct GNUNET_MESSENGER_MemberSession *session, 528 const struct GNUNET_MESSENGER_MemberSession *session,
529 const struct GNUNET_MESSENGER_Message *message, 529 const struct GNUNET_MESSENGER_Message *message,
530 const struct GNUNET_HashCode *hash) 530 const struct GNUNET_HashCode *hash)
531{ 531{
532 GNUNET_assert((handle) && (key) && (session) && (message) && (hash)); 532 GNUNET_assert((handle) && (room) && (session) && (message) && (hash));
533
534 const struct GNUNET_HashCode *key = get_room_key(room);
533 535
534 if ((!handle->mq) || (!get_handle_member_id (handle, key))) 536 if ((!handle->mq) || (!get_handle_member_id (handle, key)))
535 { 537 {
@@ -575,7 +577,7 @@ notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
575 577
576 msg->flags = (uint32_t) GNUNET_MESSENGER_FLAG_NONE; 578 msg->flags = (uint32_t) GNUNET_MESSENGER_FLAG_NONE;
577 579
578 if (get_handle_member_session(handle, key) == session) 580 if (get_handle_member_session(handle, room, key) == session)
579 msg->flags |= (uint32_t) GNUNET_MESSENGER_FLAG_SENT; 581 msg->flags |= (uint32_t) GNUNET_MESSENGER_FLAG_SENT;
580 582
581 if (private_message) 583 if (private_message)
diff --git a/src/messenger/gnunet-service-messenger_handle.h b/src/messenger/gnunet-service-messenger_handle.h
index 97a984721..4438570b9 100644
--- a/src/messenger/gnunet-service-messenger_handle.h
+++ b/src/messenger/gnunet-service-messenger_handle.h
@@ -219,14 +219,14 @@ send_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
219 * Notifies the handle that a new message was received or sent. 219 * Notifies the handle that a new message was received or sent.
220 * 220 *
221 * @param[in/out] handle Handle 221 * @param[in/out] handle Handle
222 * @param[in] key Key of room 222 * @param[in] room Room of the message
223 * @param[in] session Member session 223 * @param[in] session Member session
224 * @param[in] message Message 224 * @param[in] message Message
225 * @param[in] hash Hash of message 225 * @param[in] hash Hash of message
226 */ 226 */
227void 227void
228notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle, 228notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
229 const struct GNUNET_HashCode *key, 229 struct GNUNET_MESSENGER_SrvRoom *room,
230 const struct GNUNET_MESSENGER_MemberSession *session, 230 const struct GNUNET_MESSENGER_MemberSession *session,
231 const struct GNUNET_MESSENGER_Message *message, 231 const struct GNUNET_MESSENGER_Message *message,
232 const struct GNUNET_HashCode *hash); 232 const struct GNUNET_HashCode *hash);
diff --git a/src/messenger/gnunet-service-messenger_message_store.c b/src/messenger/gnunet-service-messenger_message_store.c
index 56448997a..ce20ac924 100644
--- a/src/messenger/gnunet-service-messenger_message_store.c
+++ b/src/messenger/gnunet-service-messenger_message_store.c
@@ -427,7 +427,7 @@ get_store_message (struct GNUNET_MESSENGER_MessageStore *store,
427 return NULL; 427 return NULL;
428 428
429 if ((GNUNET_DISK_file_read (store->storage_messages, buffer, entry->length) != entry->length) || 429 if ((GNUNET_DISK_file_read (store->storage_messages, buffer, entry->length) != entry->length) ||
430 (entry->length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN))) 430 (entry->length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, GNUNET_YES)))
431 goto free_buffer; 431 goto free_buffer;
432 432
433 message = create_message (GNUNET_MESSENGER_KIND_UNKNOWN); 433 message = create_message (GNUNET_MESSENGER_KIND_UNKNOWN);
diff --git a/src/messenger/gnunet-service-messenger_room.c b/src/messenger/gnunet-service-messenger_room.c
index 920abb10e..d34665511 100644
--- a/src/messenger/gnunet-service-messenger_room.c
+++ b/src/messenger/gnunet-service-messenger_room.c
@@ -212,7 +212,9 @@ join_room (struct GNUNET_MESSENGER_SrvRoom *room,
212 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Joining room: %s (%s)\n", GNUNET_h2s (get_room_key (room)), 212 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Joining room: %s (%s)\n", GNUNET_h2s (get_room_key (room)),
213 GNUNET_sh2s (get_member_id(member))); 213 GNUNET_sh2s (get_member_id(member)));
214 214
215 if (GNUNET_OK != change_handle_member_id (handle, get_room_key(room), get_member_id(member))) 215 const struct GNUNET_ShortHashCode *member_id = get_member_id(member);
216
217 if (GNUNET_OK != change_handle_member_id (handle, get_room_key(room), member_id))
216 return GNUNET_NO; 218 return GNUNET_NO;
217 219
218 struct GNUNET_MESSENGER_Message *message = create_message_join (get_handle_ego (handle)); 220 struct GNUNET_MESSENGER_Message *message = create_message_join (get_handle_ego (handle));
@@ -224,6 +226,7 @@ join_room (struct GNUNET_MESSENGER_SrvRoom *room,
224 return GNUNET_NO; 226 return GNUNET_NO;
225 } 227 }
226 228
229 GNUNET_memcpy(&(message->header.sender_id), member_id, sizeof(*member_id));
227 return send_room_message (room, handle, message); 230 return send_room_message (room, handle, message);
228} 231}
229 232
@@ -262,7 +265,7 @@ notify_about_members (struct GNUNET_MESSENGER_MemberNotify *notify,
262 const struct GNUNET_MESSENGER_Message *message = get_store_message(message_store, &(element->hash)); 265 const struct GNUNET_MESSENGER_Message *message = get_store_message(message_store, &(element->hash));
263 266
264 if (message) 267 if (message)
265 notify_handle_message (notify->handle, get_room_key(notify->room), session, message, &(element->hash)); 268 notify_handle_message (notify->handle, notify->room, session, message, &(element->hash));
266 } 269 }
267} 270}
268 271
@@ -359,12 +362,7 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room,
359 const struct GNUNET_ShortHashCode *member_id = get_handle_member_id (handle, get_room_key(room)); 362 const struct GNUNET_ShortHashCode *member_id = get_handle_member_id (handle, get_room_key(room));
360 363
361 struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room); 364 struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
362 struct GNUNET_MESSENGER_Member *member = get_store_member(member_store, member_id); 365 struct GNUNET_MESSENGER_Member *member = add_store_member(member_store, member_id);
363
364 if (member)
365 goto exit_open_room;
366
367 member = add_store_member(member_store, member_id);
368 366
369 if ((GNUNET_NO == join_room (room, handle, member)) && (room->port)) 367 if ((GNUNET_NO == join_room (room, handle, member)) && (room->port))
370 { 368 {
@@ -376,8 +374,9 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room,
376 return GNUNET_NO; 374 return GNUNET_NO;
377 } 375 }
378 376
379exit_open_room: 377 struct GNUNET_MESSENGER_Message *peer_msg = create_message_peer (room->service);
380 return (room->port ? send_room_message (room, handle, create_message_peer (room->service)) : GNUNET_NO); 378 GNUNET_memcpy(&(peer_msg->header.sender_id), member_id, sizeof(*member_id));
379 return (room->port ? send_room_message (room, handle, peer_msg) : GNUNET_NO);
381} 380}
382 381
383int 382int
diff --git a/src/messenger/gnunet-service-messenger_service.c b/src/messenger/gnunet-service-messenger_service.c
index 91165cf63..b53b72af8 100644
--- a/src/messenger/gnunet-service-messenger_service.c
+++ b/src/messenger/gnunet-service-messenger_service.c
@@ -313,7 +313,7 @@ handle_service_message (struct GNUNET_MESSENGER_Service *service,
313 313
314 while (element) 314 while (element)
315 { 315 {
316 notify_handle_message (element->handle, get_room_key(room), session, message, hash); 316 notify_handle_message (element->handle, room, session, message, hash);
317 element = element->next; 317 element = element->next;
318 } 318 }
319} 319}
diff --git a/src/messenger/gnunet-service-messenger_tunnel.c b/src/messenger/gnunet-service-messenger_tunnel.c
index c21f298b3..45c10c1af 100644
--- a/src/messenger/gnunet-service-messenger_tunnel.c
+++ b/src/messenger/gnunet-service-messenger_tunnel.c
@@ -122,7 +122,7 @@ check_tunnel_message (void *cls,
122 122
123 struct GNUNET_MESSENGER_Message message; 123 struct GNUNET_MESSENGER_Message message;
124 124
125 if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN)) 125 if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, GNUNET_YES))
126 { 126 {
127 GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Tunnel error: Message too short! (%d)\n", length); 127 GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Tunnel error: Message too short! (%d)\n", length);
128 return GNUNET_SYSERR; 128 return GNUNET_SYSERR;
diff --git a/src/messenger/messenger.conf.in b/src/messenger/messenger.conf.in
index 59e11b166..6b54550ea 100644
--- a/src/messenger/messenger.conf.in
+++ b/src/messenger/messenger.conf.in
@@ -1,5 +1,6 @@
1[messenger] 1[messenger]
2START_ON_DEMAND = YES 2START_ON_DEMAND = YES
3RUN_PER_USER = YES
3PORT = 2097 4PORT = 2097
4HOSTNAME = localhost 5HOSTNAME = localhost
5BINARY = gnunet-service-messenger 6BINARY = gnunet-service-messenger
diff --git a/src/messenger/messenger_api.c b/src/messenger/messenger_api.c
index c9b143662..2db841315 100644
--- a/src/messenger/messenger_api.c
+++ b/src/messenger/messenger_api.c
@@ -208,7 +208,7 @@ check_recv_message (void *cls,
208 208
209 struct GNUNET_MESSENGER_Message message; 209 struct GNUNET_MESSENGER_Message message;
210 210
211 if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN)) 211 if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, GNUNET_YES))
212 return GNUNET_NO; 212 return GNUNET_NO;
213 213
214 if (GNUNET_YES != decode_message (&message, length, buffer, GNUNET_YES, NULL)) 214 if (GNUNET_YES != decode_message (&message, length, buffer, GNUNET_YES, NULL))
@@ -255,8 +255,10 @@ handle_recv_message (void *cls,
255 255
256 handle_room_message (room, contact, &message, hash); 256 handle_room_message (room, contact, &message, hash);
257 257
258 const struct GNUNET_MESSENGER_Message *stored_message = get_room_message(room, hash);
259
258 if (handle->msg_callback) 260 if (handle->msg_callback)
259 handle->msg_callback (handle->msg_cls, room, contact, &message, hash, flags); 261 handle->msg_callback (handle->msg_cls, room, contact, stored_message, hash, flags);
260 } 262 }
261 else 263 else
262 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Room not found\n"); 264 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Room not found\n");
diff --git a/src/messenger/messenger_api_handle.c b/src/messenger/messenger_api_handle.c
index 516807e13..242389040 100644
--- a/src/messenger/messenger_api_handle.c
+++ b/src/messenger/messenger_api_handle.c
@@ -98,7 +98,7 @@ destroy_handle (struct GNUNET_MESSENGER_Handle *handle)
98 98
99 clear_contact_store(get_handle_contact_store(handle)); 99 clear_contact_store(get_handle_contact_store(handle));
100 100
101 GNUNET_free(handle->name); 101 GNUNET_free(handle);
102} 102}
103 103
104void 104void
diff --git a/src/messenger/messenger_api_message.c b/src/messenger/messenger_api_message.c
index 4e64cc22f..496c98dbf 100644
--- a/src/messenger/messenger_api_message.c
+++ b/src/messenger/messenger_api_message.c
@@ -229,13 +229,18 @@ get_message_body_kind_size (enum GNUNET_MESSENGER_MessageKind kind)
229typedef uint32_t kind_t; 229typedef uint32_t kind_t;
230 230
231uint16_t 231uint16_t
232get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind) 232get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind,
233 int include_header)
233{ 234{
234 uint16_t length = 0; 235 uint16_t length = 0;
235 236
236 length += member_size(struct GNUNET_MESSENGER_Message, header.timestamp); 237 if (GNUNET_YES == include_header)
237 length += member_size(struct GNUNET_MESSENGER_Message, header.sender_id); 238 {
238 length += member_size(struct GNUNET_MESSENGER_Message, header.previous); 239 length += member_size(struct GNUNET_MESSENGER_Message, header.timestamp);
240 length += member_size(struct GNUNET_MESSENGER_Message, header.sender_id);
241 length += member_size(struct GNUNET_MESSENGER_Message, header.previous);
242 }
243
239 length += sizeof(kind_t); 244 length += sizeof(kind_t);
240 245
241 return length + get_message_body_kind_size (kind); 246 return length + get_message_body_kind_size (kind);
@@ -279,16 +284,16 @@ get_message_body_size (enum GNUNET_MESSENGER_MessageKind kind,
279 284
280uint16_t 285uint16_t
281get_message_size (const struct GNUNET_MESSENGER_Message *message, 286get_message_size (const struct GNUNET_MESSENGER_Message *message,
282 int include_signature) 287 int include_header)
283{ 288{
284 GNUNET_assert(message); 289 GNUNET_assert(message);
285 290
286 uint16_t length = 0; 291 uint16_t length = 0;
287 292
288 if (GNUNET_YES == include_signature) 293 if (GNUNET_YES == include_header)
289 length += GNUNET_IDENTITY_signature_get_length(&(message->header.signature)); 294 length += GNUNET_IDENTITY_signature_get_length(&(message->header.signature));
290 295
291 length += get_message_kind_size (message->header.kind); 296 length += get_message_kind_size (message->header.kind, include_header);
292 length += get_message_body_size (message->header.kind, &(message->body)); 297 length += get_message_body_size (message->header.kind, &(message->body));
293 298
294 return length; 299 return length;
@@ -314,7 +319,7 @@ calc_usual_padding ()
314 uint16_t kind_size; 319 uint16_t kind_size;
315 320
316 for (int i = 0; i <= GNUNET_MESSENGER_KIND_MAX; i++) { 321 for (int i = 0; i <= GNUNET_MESSENGER_KIND_MAX; i++) {
317 kind_size = get_message_kind_size ((enum GNUNET_MESSENGER_MessageKind) i); 322 kind_size = get_message_kind_size ((enum GNUNET_MESSENGER_MessageKind) i, GNUNET_YES);
318 323
319 if (kind_size > padding) 324 if (kind_size > padding)
320 padding = kind_size; 325 padding = kind_size;
@@ -464,20 +469,24 @@ void
464encode_message (const struct GNUNET_MESSENGER_Message *message, 469encode_message (const struct GNUNET_MESSENGER_Message *message,
465 uint16_t length, 470 uint16_t length,
466 char *buffer, 471 char *buffer,
467 int include_signature) 472 int include_header)
468{ 473{
469 GNUNET_assert((message) && (buffer)); 474 GNUNET_assert((message) && (buffer));
470 475
471 uint16_t offset = 0; 476 uint16_t offset = 0;
472 477
473 if (GNUNET_YES == include_signature) 478 if (GNUNET_YES == include_header)
474 encode_step_signature(buffer, offset, &(message->header.signature), length); 479 encode_step_signature(buffer, offset, &(message->header.signature), length);
475 480
476 const kind_t kind = GNUNET_htobe32((kind_t) message->header.kind); 481 const kind_t kind = GNUNET_htobe32((kind_t) message->header.kind);
477 482
478 encode_step(buffer, offset, &(message->header.timestamp)); 483 if (GNUNET_YES == include_header)
479 encode_step(buffer, offset, &(message->header.sender_id)); 484 {
480 encode_step(buffer, offset, &(message->header.previous)); 485 encode_step(buffer, offset, &(message->header.timestamp));
486 encode_step(buffer, offset, &(message->header.sender_id));
487 encode_step(buffer, offset, &(message->header.previous));
488 }
489
481 encode_step(buffer, offset, &kind); 490 encode_step(buffer, offset, &kind);
482 491
483 encode_message_body (message->header.kind, &(message->body), length, buffer, offset); 492 encode_message_body (message->header.kind, &(message->body), length, buffer, offset);
@@ -619,14 +628,18 @@ int
619decode_message (struct GNUNET_MESSENGER_Message *message, 628decode_message (struct GNUNET_MESSENGER_Message *message,
620 uint16_t length, 629 uint16_t length,
621 const char *buffer, 630 const char *buffer,
622 int include_signature, 631 int include_header,
623 uint16_t *padding) 632 uint16_t *padding)
624{ 633{
625 GNUNET_assert((message) && (buffer) && (length >= get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN))); 634 GNUNET_assert(
635 (message) &&
636 (buffer) &&
637 (length >= get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, include_header))
638 );
626 639
627 uint16_t offset = 0; 640 uint16_t offset = 0;
628 641
629 if (GNUNET_YES == include_signature) 642 if (GNUNET_YES == include_header)
630 { 643 {
631 ssize_t result = GNUNET_IDENTITY_read_signature_from_buffer( 644 ssize_t result = GNUNET_IDENTITY_read_signature_from_buffer(
632 &(message->header.signature), buffer, length - offset 645 &(message->header.signature), buffer, length - offset
@@ -640,19 +653,23 @@ decode_message (struct GNUNET_MESSENGER_Message *message,
640 653
641 const uint16_t count = length - offset; 654 const uint16_t count = length - offset;
642 655
643 if (count < get_message_kind_size (GNUNET_MESSENGER_KIND_UNKNOWN)) 656 if (count < get_message_kind_size (GNUNET_MESSENGER_KIND_UNKNOWN, include_header))
644 return GNUNET_NO; 657 return GNUNET_NO;
645 658
646 kind_t kind; 659 kind_t kind;
647 660
648 decode_step(buffer, offset, &(message->header.timestamp)); 661 if (GNUNET_YES == include_header)
649 decode_step(buffer, offset, &(message->header.sender_id)); 662 {
650 decode_step(buffer, offset, &(message->header.previous)); 663 decode_step(buffer, offset, &(message->header.timestamp));
664 decode_step(buffer, offset, &(message->header.sender_id));
665 decode_step(buffer, offset, &(message->header.previous));
666 }
667
651 decode_step(buffer, offset, &kind); 668 decode_step(buffer, offset, &kind);
652 669
653 message->header.kind = (enum GNUNET_MESSENGER_MessageKind) GNUNET_be32toh(kind); 670 message->header.kind = (enum GNUNET_MESSENGER_MessageKind) GNUNET_be32toh(kind);
654 671
655 if (count < get_message_kind_size (message->header.kind)) 672 if (count < get_message_kind_size (message->header.kind, include_header))
656 return GNUNET_NO; 673 return GNUNET_NO;
657 674
658 const uint16_t result = decode_message_body (&(message->header.kind), &(message->body), length, buffer, offset); 675 const uint16_t result = decode_message_body (&(message->header.kind), &(message->body), length, buffer, offset);
diff --git a/src/messenger/messenger_api_message.h b/src/messenger/messenger_api_message.h
index 21161c134..46c5cb024 100644
--- a/src/messenger/messenger_api_message.h
+++ b/src/messenger/messenger_api_message.h
@@ -90,21 +90,23 @@ is_message_session_bound (const struct GNUNET_MESSENGER_Message *message);
90 * Returns the minimal size in bytes to encode a message of a specific <i>kind</i>. 90 * Returns the minimal size in bytes to encode a message of a specific <i>kind</i>.
91 * 91 *
92 * @param[in] kind Kind of message 92 * @param[in] kind Kind of message
93 * @param[in] include_header Flag to include header
93 * @return Minimal size to encode 94 * @return Minimal size to encode
94 */ 95 */
95uint16_t 96uint16_t
96get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind); 97get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind,
98 int include_header);
97 99
98/** 100/**
99 * Returns the exact size in bytes to encode a given <i>message</i>. 101 * Returns the exact size in bytes to encode a given <i>message</i>.
100 * 102 *
101 * @param[in] message Message 103 * @param[in] message Message
102 * @param[in] encode_signature Flag to include signature 104 * @param[in] include_header Flag to include header
103 * @return Size to encode 105 * @return Size to encode
104 */ 106 */
105uint16_t 107uint16_t
106get_message_size (const struct GNUNET_MESSENGER_Message *message, 108get_message_size (const struct GNUNET_MESSENGER_Message *message,
107 int include_signature); 109 int include_header);
108 110
109/** 111/**
110 * Encodes a given <i>message</i> into a <i>buffer</i> of a maximal <i>length</i> in bytes. 112 * Encodes a given <i>message</i> into a <i>buffer</i> of a maximal <i>length</i> in bytes.
@@ -112,13 +114,13 @@ get_message_size (const struct GNUNET_MESSENGER_Message *message,
112 * @param[in] message Message 114 * @param[in] message Message
113 * @param[in] length Maximal length to encode 115 * @param[in] length Maximal length to encode
114 * @param[out] buffer Buffer 116 * @param[out] buffer Buffer
115 * @param[in] encode_signature Flag to include signature 117 * @param[in] include_header Flag to include header
116 */ 118 */
117void 119void
118encode_message (const struct GNUNET_MESSENGER_Message *message, 120encode_message (const struct GNUNET_MESSENGER_Message *message,
119 uint16_t length, 121 uint16_t length,
120 char *buffer, 122 char *buffer,
121 int include_signature); 123 int include_header);
122 124
123/** 125/**
124 * Decodes a <i>message</i> from a given <i>buffer</i> of a maximal <i>length</i> in bytes. 126 * Decodes a <i>message</i> from a given <i>buffer</i> of a maximal <i>length</i> in bytes.
@@ -131,6 +133,7 @@ encode_message (const struct GNUNET_MESSENGER_Message *message,
131 * @param[out] message Message 133 * @param[out] message Message
132 * @param[in] length Maximal length to decode 134 * @param[in] length Maximal length to decode
133 * @param[in] buffer Buffer 135 * @param[in] buffer Buffer
136 * @param[in] include_header Flag to include header
134 * @param[out] padding Padding 137 * @param[out] padding Padding
135 * @return #GNUNET_YES on success, otherwise #GNUNET_NO 138 * @return #GNUNET_YES on success, otherwise #GNUNET_NO
136 */ 139 */
@@ -138,7 +141,7 @@ int
138decode_message (struct GNUNET_MESSENGER_Message *message, 141decode_message (struct GNUNET_MESSENGER_Message *message,
139 uint16_t length, 142 uint16_t length,
140 const char *buffer, 143 const char *buffer,
141 int include_signature, 144 int include_header,
142 uint16_t *padding); 145 uint16_t *padding);
143 146
144/** 147/**