diff options
author | TheJackiMonster <thejackimonster@gmail.com> | 2021-05-24 01:30:17 +0200 |
---|---|---|
committer | TheJackiMonster <thejackimonster@gmail.com> | 2021-06-11 13:47:57 +0200 |
commit | d0eec6097f79c7fb3ea8b5d8bb0dcca1da1f85a6 (patch) | |
tree | c0cc57a0f066bc1d3c528323c33903038747eca8 /src | |
parent | 2549225b825f34b0dfbe9f4a13f134963f3ba58d (diff) | |
download | gnunet-d0eec6097f79c7fb3ea8b5d8bb0dcca1da1f85a6.tar.gz gnunet-d0eec6097f79c7fb3ea8b5d8bb0dcca1da1f85a6.zip |
-moved messenger service out of experimental
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-moved out of experimental, included protocol versions into ports and fixed byte-order of 32bit integers in messages
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/include/gnunet_messenger_service.h | 21 | ||||
-rw-r--r-- | src/messenger/gnunet-service-messenger_list_messages.c | 2 | ||||
-rw-r--r-- | src/messenger/gnunet-service-messenger_list_messages.h | 2 | ||||
-rw-r--r-- | src/messenger/gnunet-service-messenger_room.c | 4 | ||||
-rw-r--r-- | src/messenger/gnunet-service-messenger_tunnel.c | 4 | ||||
-rw-r--r-- | src/messenger/messenger_api.c | 46 | ||||
-rw-r--r-- | src/messenger/messenger_api_message.c | 18 | ||||
-rw-r--r-- | src/messenger/messenger_api_room.c | 36 | ||||
-rw-r--r-- | src/messenger/messenger_api_room.h | 11 | ||||
-rw-r--r-- | src/messenger/messenger_api_util.c | 16 | ||||
-rw-r--r-- | src/messenger/messenger_api_util.h | 14 |
12 files changed, 165 insertions, 13 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 5fd00e3f5..07b9cf1e9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am | |||
@@ -8,8 +8,7 @@ endif | |||
8 | 8 | ||
9 | if HAVE_EXPERIMENTAL | 9 | if HAVE_EXPERIMENTAL |
10 | EXP_DIR = \ | 10 | EXP_DIR = \ |
11 | rps \ | 11 | rps |
12 | messenger | ||
13 | #abd FTBFS | 12 | #abd FTBFS |
14 | if HAVE_ABE | 13 | if HAVE_ABE |
15 | EXP_DIR += \ | 14 | EXP_DIR += \ |
@@ -101,5 +100,6 @@ SUBDIRS = \ | |||
101 | pt \ | 100 | pt \ |
102 | secretsharing \ | 101 | secretsharing \ |
103 | reclaim \ | 102 | reclaim \ |
103 | messenger \ | ||
104 | $(EXP_DIR) \ | 104 | $(EXP_DIR) \ |
105 | integration-tests | 105 | integration-tests |
diff --git a/src/include/gnunet_messenger_service.h b/src/include/gnunet_messenger_service.h index 0576e239f..ad5cc4f12 100644 --- a/src/include/gnunet_messenger_service.h +++ b/src/include/gnunet_messenger_service.h | |||
@@ -50,6 +50,8 @@ extern "C" { | |||
50 | 50 | ||
51 | /** | 51 | /** |
52 | * Version number of GNUnet Messenger API. | 52 | * Version number of GNUnet Messenger API. |
53 | * | ||
54 | * Current version of the Messenger: 0.1 | ||
53 | */ | 55 | */ |
54 | #define GNUNET_MESSENGER_VERSION 0x00000001 | 56 | #define GNUNET_MESSENGER_VERSION 0x00000001 |
55 | 57 | ||
@@ -219,6 +221,10 @@ struct GNUNET_MESSENGER_MessageInfo | |||
219 | 221 | ||
220 | /** | 222 | /** |
221 | * The version of GNUnet Messenger API. | 223 | * The version of GNUnet Messenger API. |
224 | * | ||
225 | * The sixteen lower bits represent the lower version number while the sixteen higher bits | ||
226 | * represent the higher version number. A different higher version number implies imcompatibility | ||
227 | * to lower versions while differences in the lower version can still be supported potentially. | ||
222 | */ | 228 | */ |
223 | uint32_t messenger_version; | 229 | uint32_t messenger_version; |
224 | }; | 230 | }; |
@@ -672,6 +678,21 @@ void | |||
672 | GNUNET_MESSENGER_close_room (struct GNUNET_MESSENGER_Room *room); | 678 | GNUNET_MESSENGER_close_room (struct GNUNET_MESSENGER_Room *room); |
673 | 679 | ||
674 | /** | 680 | /** |
681 | * Searches for a specific <i>contact</i> in a given <i>room</i> and calls a selected <i>callback</i> with a given | ||
682 | * closure for each of them containing the contact as a member. The callback will receive a room matching the condition | ||
683 | * and the given contact. The function returns the amount of rooms iterated with the given callback. | ||
684 | * | ||
685 | * @param[in] handle Messenger handle to use | ||
686 | * @param[in] contact Contact handle | ||
687 | * @param[in] callback Function called for each room | ||
688 | * @param[in] cls Closure for the <i>callback</i> handler | ||
689 | * @return Amount of rooms iterated | ||
690 | */ | ||
691 | int | ||
692 | GNUNET_MESSENGER_find_rooms (const struct GNUNET_MESSENGER_Handle *handle, const struct GNUNET_MESSENGER_Contact *contact, | ||
693 | GNUNET_MESSENGER_MemberCallback callback, void *cls); | ||
694 | |||
695 | /** | ||
675 | * Get the contact of a member in a <i>room</i> which sent a specific message identified with a given <i>hash</i>. | 696 | * Get the contact of a member in a <i>room</i> which sent a specific message identified with a given <i>hash</i>. |
676 | * | 697 | * |
677 | * Notice that contacts are independent of rooms but will be removed if all rooms containing these contacts get closed. | 698 | * Notice that contacts are independent of rooms but will be removed if all rooms containing these contacts get closed. |
diff --git a/src/messenger/gnunet-service-messenger_list_messages.c b/src/messenger/gnunet-service-messenger_list_messages.c index bb6086e41..2666ccdab 100644 --- a/src/messenger/gnunet-service-messenger_list_messages.c +++ b/src/messenger/gnunet-service-messenger_list_messages.c | |||
@@ -125,7 +125,7 @@ load_list_messages (struct GNUNET_MESSENGER_ListMessages *messages, const char * | |||
125 | } | 125 | } |
126 | 126 | ||
127 | void | 127 | void |
128 | save_list_messages (struct GNUNET_MESSENGER_ListMessages *messages, const char *path) | 128 | save_list_messages (const struct GNUNET_MESSENGER_ListMessages *messages, const char *path) |
129 | { | 129 | { |
130 | GNUNET_assert((messages) && (path)); | 130 | GNUNET_assert((messages) && (path)); |
131 | 131 | ||
diff --git a/src/messenger/gnunet-service-messenger_list_messages.h b/src/messenger/gnunet-service-messenger_list_messages.h index 9ace84cbf..93ec203ea 100644 --- a/src/messenger/gnunet-service-messenger_list_messages.h +++ b/src/messenger/gnunet-service-messenger_list_messages.h | |||
@@ -104,6 +104,6 @@ load_list_messages (struct GNUNET_MESSENGER_ListMessages *messages, const char * | |||
104 | * @param[in] path Path of file | 104 | * @param[in] path Path of file |
105 | */ | 105 | */ |
106 | void | 106 | void |
107 | save_list_messages (struct GNUNET_MESSENGER_ListMessages *messages, const char *path); | 107 | save_list_messages (const struct GNUNET_MESSENGER_ListMessages *messages, const char *path); |
108 | 108 | ||
109 | #endif //GNUNET_SERVICE_MESSENGER_LIST_MESSAGES_H | 109 | #endif //GNUNET_SERVICE_MESSENGER_LIST_MESSAGES_H |
diff --git a/src/messenger/gnunet-service-messenger_room.c b/src/messenger/gnunet-service-messenger_room.c index e8fe5b1f3..c3a5e3a4b 100644 --- a/src/messenger/gnunet-service-messenger_room.c +++ b/src/messenger/gnunet-service-messenger_room.c | |||
@@ -329,7 +329,9 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvHan | |||
329 | struct GNUNET_MessageHeader, NULL), | 329 | struct GNUNET_MessageHeader, NULL), |
330 | GNUNET_MQ_handler_end() }; | 330 | GNUNET_MQ_handler_end() }; |
331 | 331 | ||
332 | room->port = GNUNET_CADET_open_port (cadet, key, callback_room_connect, room, NULL, callback_tunnel_disconnect, | 332 | struct GNUNET_HashCode port; |
333 | convert_messenger_key_to_port(key, &port); | ||
334 | room->port = GNUNET_CADET_open_port (cadet, &port, callback_room_connect, room, NULL, callback_tunnel_disconnect, | ||
333 | handlers); | 335 | handlers); |
334 | 336 | ||
335 | if (room->port) | 337 | if (room->port) |
diff --git a/src/messenger/gnunet-service-messenger_tunnel.c b/src/messenger/gnunet-service-messenger_tunnel.c index 80d8dfa5e..b9d063813 100644 --- a/src/messenger/gnunet-service-messenger_tunnel.c +++ b/src/messenger/gnunet-service-messenger_tunnel.c | |||
@@ -235,7 +235,9 @@ connect_tunnel (struct GNUNET_MESSENGER_SrvTunnel *tunnel) | |||
235 | struct GNUNET_MessageHeader, NULL), | 235 | struct GNUNET_MessageHeader, NULL), |
236 | GNUNET_MQ_handler_end() }; | 236 | GNUNET_MQ_handler_end() }; |
237 | 237 | ||
238 | tunnel->channel = GNUNET_CADET_channel_create (cadet, tunnel, door, key, NULL, callback_tunnel_disconnect, handlers); | 238 | struct GNUNET_HashCode port; |
239 | convert_messenger_key_to_port(key, &port); | ||
240 | tunnel->channel = GNUNET_CADET_channel_create (cadet, tunnel, door, &port, NULL, callback_tunnel_disconnect, handlers); | ||
239 | 241 | ||
240 | return GNUNET_YES; | 242 | return GNUNET_YES; |
241 | } | 243 | } |
diff --git a/src/messenger/messenger_api.c b/src/messenger/messenger_api.c index b42bb40cc..0536a3154 100644 --- a/src/messenger/messenger_api.c +++ b/src/messenger/messenger_api.c | |||
@@ -574,6 +574,50 @@ GNUNET_MESSENGER_close_room (struct GNUNET_MESSENGER_Room *room) | |||
574 | send_close_room (room->handle, room); | 574 | send_close_room (room->handle, room); |
575 | } | 575 | } |
576 | 576 | ||
577 | struct GNUNET_MESSENGER_RoomFind | ||
578 | { | ||
579 | struct GNUNET_MESSENGER_Contact *contact; | ||
580 | GNUNET_MESSENGER_MemberCallback callback; | ||
581 | size_t counter; | ||
582 | void *cls; | ||
583 | }; | ||
584 | |||
585 | static int | ||
586 | iterate_find_room (void* cls, const struct GNUNET_HashCode *key, void *value) | ||
587 | { | ||
588 | struct GNUNET_MESSENGER_RoomFind *find = cls; | ||
589 | struct GNUNET_MESSENGER_Room *room = value; | ||
590 | |||
591 | if ((find->counter > 0) && ((!find->contact) || (GNUNET_YES == find_room_member(room, find->contact)))) | ||
592 | { | ||
593 | find->counter--; | ||
594 | |||
595 | if (!find->callback) | ||
596 | return GNUNET_YES; | ||
597 | |||
598 | return find->callback(find->cls, room, find->contact); | ||
599 | } | ||
600 | else | ||
601 | return GNUNET_NO; | ||
602 | } | ||
603 | |||
604 | int | ||
605 | GNUNET_MESSENGER_find_rooms (const struct GNUNET_MESSENGER_Handle *handle, const struct GNUNET_MESSENGER_Contact *contact, | ||
606 | GNUNET_MESSENGER_MemberCallback callback, void *cls) | ||
607 | { | ||
608 | if (!handle) | ||
609 | return GNUNET_SYSERR; | ||
610 | |||
611 | struct GNUNET_MESSENGER_RoomFind find; | ||
612 | |||
613 | find.contact = contact; | ||
614 | find.callback = callback; | ||
615 | find.counter = (contact? contact->rc : SIZE_MAX); | ||
616 | find.cls = cls; | ||
617 | |||
618 | return GNUNET_CONTAINER_multihashmap_iterate(handle->rooms, iterate_find_room, &find); | ||
619 | } | ||
620 | |||
577 | struct GNUNET_MESSENGER_Contact* | 621 | struct GNUNET_MESSENGER_Contact* |
578 | GNUNET_MESSENGER_get_sender (const struct GNUNET_MESSENGER_Room *room, const struct GNUNET_HashCode *hash) | 622 | GNUNET_MESSENGER_get_sender (const struct GNUNET_MESSENGER_Room *room, const struct GNUNET_HashCode *hash) |
579 | { | 623 | { |
@@ -693,7 +737,7 @@ GNUNET_MESSENGER_get_message (const struct GNUNET_MESSENGER_Room *room, const st | |||
693 | 737 | ||
694 | int | 738 | int |
695 | GNUNET_MESSENGER_iterate_members (struct GNUNET_MESSENGER_Room *room, GNUNET_MESSENGER_MemberCallback callback, | 739 | GNUNET_MESSENGER_iterate_members (struct GNUNET_MESSENGER_Room *room, GNUNET_MESSENGER_MemberCallback callback, |
696 | void* cls) | 740 | void *cls) |
697 | { | 741 | { |
698 | if (!room) | 742 | if (!room) |
699 | return GNUNET_SYSERR; | 743 | return GNUNET_SYSERR; |
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 | |||
373 | encode_message_body (enum GNUNET_MESSENGER_MessageKind kind, const struct GNUNET_MESSENGER_MessageBody *body, | 373 | encode_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; |
diff --git a/src/messenger/messenger_api_room.c b/src/messenger/messenger_api_room.c index 5b7edee60..6779984bd 100644 --- a/src/messenger/messenger_api_room.c +++ b/src/messenger/messenger_api_room.c | |||
@@ -305,3 +305,39 @@ iterate_room_members (struct GNUNET_MESSENGER_Room *room, GNUNET_MESSENGER_Membe | |||
305 | 305 | ||
306 | return GNUNET_CONTAINER_multishortmap_iterate(room->members, iterate_local_members, &call); | 306 | return GNUNET_CONTAINER_multishortmap_iterate(room->members, iterate_local_members, &call); |
307 | } | 307 | } |
308 | |||
309 | struct GNUNET_MESSENGER_MemberFind | ||
310 | { | ||
311 | struct GNUNET_MESSENGER_Contact *contact; | ||
312 | int result; | ||
313 | }; | ||
314 | |||
315 | static int | ||
316 | iterate_find_member (void* cls, const struct GNUNET_ShortHashCode *key, void *value) | ||
317 | { | ||
318 | struct GNUNET_MESSENGER_MemberFind *find = cls; | ||
319 | struct GNUNET_MESSENGER_Contact *contact = value; | ||
320 | |||
321 | if (contact == find->contact) | ||
322 | { | ||
323 | find->result = GNUNET_YES; | ||
324 | return GNUNET_NO; | ||
325 | } | ||
326 | |||
327 | return GNUNET_YES; | ||
328 | } | ||
329 | |||
330 | int | ||
331 | find_room_member (const struct GNUNET_MESSENGER_Room *room, const struct GNUNET_MESSENGER_Contact *contact) | ||
332 | { | ||
333 | GNUNET_assert(room); | ||
334 | |||
335 | struct GNUNET_MESSENGER_MemberFind find; | ||
336 | |||
337 | find.contact = contact; | ||
338 | find.result = GNUNET_NO; | ||
339 | |||
340 | GNUNET_CONTAINER_multishortmap_iterate(room->members, iterate_find_member, &find); | ||
341 | |||
342 | return find.result; | ||
343 | } | ||
diff --git a/src/messenger/messenger_api_room.h b/src/messenger/messenger_api_room.h index eb41cf740..634052272 100644 --- a/src/messenger/messenger_api_room.h +++ b/src/messenger/messenger_api_room.h | |||
@@ -126,4 +126,15 @@ int | |||
126 | iterate_room_members (struct GNUNET_MESSENGER_Room *room, GNUNET_MESSENGER_MemberCallback callback, | 126 | iterate_room_members (struct GNUNET_MESSENGER_Room *room, GNUNET_MESSENGER_MemberCallback callback, |
127 | void* cls); | 127 | void* cls); |
128 | 128 | ||
129 | /** | ||
130 | * Checks through all members of a given <i>room</i> if a specific <i>contact</i> is found and | ||
131 | * returns a result depending on that. | ||
132 | * | ||
133 | * @param[in] room Room | ||
134 | * @param[in] contact | ||
135 | * @return #GNUNET_YES if found, otherwise #GNUNET_NO | ||
136 | */ | ||
137 | int | ||
138 | find_room_member (const struct GNUNET_MESSENGER_Room *room, const struct GNUNET_MESSENGER_Contact *contact); | ||
139 | |||
129 | #endif //GNUNET_MESSENGER_API_ROOM_H | 140 | #endif //GNUNET_MESSENGER_API_ROOM_H |
diff --git a/src/messenger/messenger_api_util.c b/src/messenger/messenger_api_util.c index 68e15d789..4ad00c45e 100644 --- a/src/messenger/messenger_api_util.c +++ b/src/messenger/messenger_api_util.c | |||
@@ -82,3 +82,19 @@ get_anonymous_public_key () | |||
82 | 82 | ||
83 | return &public_key; | 83 | return &public_key; |
84 | } | 84 | } |
85 | |||
86 | void | ||
87 | convert_messenger_key_to_port(const struct GNUNET_HashCode *key, struct GNUNET_HashCode *port) | ||
88 | { | ||
89 | static uint32_t version_value = 0; | ||
90 | static struct GNUNET_HashCode version; | ||
91 | |||
92 | if (!version_value) { | ||
93 | version_value = (uint32_t) (GNUNET_MESSENGER_VERSION); | ||
94 | version_value = ((version_value >> 16) & 0xFFFF); | ||
95 | version_value = GNUNET_htole32(version_value); | ||
96 | GNUNET_CRYPTO_hash(&version_value, sizeof(version_value), &version); | ||
97 | } | ||
98 | |||
99 | GNUNET_CRYPTO_hash_sum(key, &version, port); | ||
100 | } | ||
diff --git a/src/messenger/messenger_api_util.h b/src/messenger/messenger_api_util.h index c70a3601f..af562a1e8 100644 --- a/src/messenger/messenger_api_util.h +++ b/src/messenger/messenger_api_util.h | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "gnunet_crypto_lib.h" | 32 | #include "gnunet_crypto_lib.h" |
33 | #include "gnunet_disk_lib.h" | 33 | #include "gnunet_disk_lib.h" |
34 | #include "gnunet_identity_service.h" | 34 | #include "gnunet_identity_service.h" |
35 | #include "gnunet_messenger_service.h" | ||
35 | 36 | ||
36 | /** | 37 | /** |
37 | * Starts an urgent task to close a CADET channel asynchronously. | 38 | * Starts an urgent task to close a CADET channel asynchronously. |
@@ -61,4 +62,17 @@ generate_free_member_id (struct GNUNET_ShortHashCode *id, const struct GNUNET_CO | |||
61 | const struct GNUNET_IDENTITY_PublicKey* | 62 | const struct GNUNET_IDENTITY_PublicKey* |
62 | get_anonymous_public_key (); | 63 | get_anonymous_public_key (); |
63 | 64 | ||
65 | /** | ||
66 | * Converts a Messenger service key of a room to the specific port which | ||
67 | * gets used for the CADET channels. | ||
68 | * | ||
69 | * The port includes upper bits of the #GNUNET_MESSENGER_VERSION to | ||
70 | * reduce the chance of incompatible connections. | ||
71 | * | ||
72 | * @param[in] key Messenger service room key | ||
73 | * @param[out] port CADET service port | ||
74 | */ | ||
75 | void | ||
76 | convert_messenger_key_to_port(const struct GNUNET_HashCode *key, struct GNUNET_HashCode *port); | ||
77 | |||
64 | #endif //GNUNET_SERVICE_MESSENGER_UTIL_H | 78 | #endif //GNUNET_SERVICE_MESSENGER_UTIL_H |