aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/gnunet-service-messenger_message_handle.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger/gnunet-service-messenger_message_handle.c')
-rw-r--r--src/messenger/gnunet-service-messenger_message_handle.c153
1 files changed, 0 insertions, 153 deletions
diff --git a/src/messenger/gnunet-service-messenger_message_handle.c b/src/messenger/gnunet-service-messenger_message_handle.c
deleted file mode 100644
index 701d78c89..000000000
--- a/src/messenger/gnunet-service-messenger_message_handle.c
+++ /dev/null
@@ -1,153 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2020--2021 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20/**
21 * @author Tobias Frisch
22 * @file src/messenger/gnunet-service-messenger_message_handle.c
23 * @brief GNUnet MESSENGER service
24 */
25
26#include "gnunet-service-messenger_message_handle.h"
27
28static void
29handle_session_switch (struct GNUNET_MESSENGER_MemberSession *session,
30 const struct GNUNET_MESSENGER_Message *message,
31 const struct GNUNET_HashCode *hash)
32{
33 struct GNUNET_MESSENGER_MemberSession *next = switch_member_session(session, message, hash);
34
35 if (next != session)
36 add_member_session(next->member, next);
37}
38
39void
40handle_message_join (struct GNUNET_MESSENGER_SrvRoom *room,
41 struct GNUNET_MESSENGER_MemberSession *session,
42 const struct GNUNET_MESSENGER_Message *message,
43 const struct GNUNET_HashCode *hash)
44{
45 GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Member (%s) joins room (%s).\n",
46 GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s(get_room_key(room)));
47
48 if (GNUNET_OK != reset_member_session(session, hash))
49 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Resetting member session failed!\n");
50
51 solve_room_member_collisions (
52 room,
53 &(message->body.join.key),
54 &(message->header.sender_id),
55 GNUNET_TIME_absolute_ntoh(message->header.timestamp)
56 );
57}
58
59void
60handle_message_leave (struct GNUNET_MESSENGER_SrvRoom *room,
61 struct GNUNET_MESSENGER_MemberSession *session,
62 const struct GNUNET_MESSENGER_Message *message,
63 const struct GNUNET_HashCode *hash)
64{
65 GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Member (%s) leaves room (%s).\n",
66 GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s(get_room_key(room)));
67
68 close_member_session(session);
69}
70
71void
72handle_message_name (struct GNUNET_MESSENGER_SrvRoom *room,
73 struct GNUNET_MESSENGER_MemberSession *session,
74 const struct GNUNET_MESSENGER_Message *message,
75 const struct GNUNET_HashCode *hash)
76{
77 struct GNUNET_MESSENGER_Contact *contact = get_member_session_contact(session);
78
79 if (!contact)
80 return;
81
82 set_contact_name (contact, message->body.name.name);
83}
84
85void
86handle_message_key (struct GNUNET_MESSENGER_SrvRoom *room,
87 struct GNUNET_MESSENGER_MemberSession *session,
88 const struct GNUNET_MESSENGER_Message *message,
89 const struct GNUNET_HashCode *hash)
90{
91 handle_session_switch (session, message, hash);
92}
93
94void
95handle_message_peer (struct GNUNET_MESSENGER_SrvRoom *room,
96 struct GNUNET_MESSENGER_MemberSession *session,
97 const struct GNUNET_MESSENGER_Message *message,
98 const struct GNUNET_HashCode *hash)
99{
100 if (GNUNET_NO == contains_list_tunnels (&(room->basement), &(message->body.peer.peer)))
101 add_to_list_tunnels (&(room->basement), &(message->body.peer.peer));
102
103 if (room->peer_message)
104 rebuild_room_basement_structure (room);
105}
106
107void
108handle_message_id (struct GNUNET_MESSENGER_SrvRoom *room,
109 struct GNUNET_MESSENGER_MemberSession *session,
110 const struct GNUNET_MESSENGER_Message *message,
111 const struct GNUNET_HashCode *hash)
112{
113 handle_session_switch (session, message, hash);
114
115 solve_room_member_collisions (
116 room,
117 get_member_session_public_key(session),
118 &(message->body.id.id),
119 GNUNET_TIME_absolute_ntoh(message->header.timestamp)
120 );
121}
122
123void
124handle_message_miss (struct GNUNET_MESSENGER_SrvRoom *room,
125 struct GNUNET_MESSENGER_MemberSession *session,
126 const struct GNUNET_MESSENGER_Message *message,
127 const struct GNUNET_HashCode *hash)
128{
129 struct GNUNET_MESSENGER_ListTunnel *element = find_list_tunnels (&(room->basement), &(message->body.peer.peer), NULL);
130
131 if (!element)
132 return;
133
134 remove_from_list_tunnels (&(room->basement), element);
135
136 if (room->peer_message)
137 rebuild_room_basement_structure (room);
138}
139
140void
141handle_message_delete (struct GNUNET_MESSENGER_SrvRoom *room,
142 struct GNUNET_MESSENGER_MemberSession *session,
143 const struct GNUNET_MESSENGER_Message *message,
144 const struct GNUNET_HashCode *hash)
145{
146 struct GNUNET_TIME_Relative delay = GNUNET_TIME_relative_ntoh (message->body.deletion.delay);
147 struct GNUNET_TIME_Absolute action = GNUNET_TIME_absolute_ntoh (message->header.timestamp);
148
149 action = GNUNET_TIME_absolute_add (action, delay);
150 delay = GNUNET_TIME_absolute_get_difference (GNUNET_TIME_absolute_get (), action);
151
152 delete_room_message (room, session, &(message->body.deletion.hash), delay);
153}