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.c83
1 files changed, 51 insertions, 32 deletions
diff --git a/src/messenger/gnunet-service-messenger_message_handle.c b/src/messenger/gnunet-service-messenger_message_handle.c
index 57b758fa4..77466b599 100644
--- a/src/messenger/gnunet-service-messenger_message_handle.c
+++ b/src/messenger/gnunet-service-messenger_message_handle.c
@@ -31,58 +31,67 @@ handle_member_session_switch (struct GNUNET_MESSENGER_MemberSession *session,
31 const struct GNUNET_MESSENGER_Message *message, 31 const struct GNUNET_MESSENGER_Message *message,
32 const struct GNUNET_HashCode *hash) 32 const struct GNUNET_HashCode *hash)
33{ 33{
34 struct GNUNET_MESSENGER_MemberSession *next = switch_member_session(session, message, hash); 34 struct GNUNET_MESSENGER_MemberSession *next = switch_member_session (session,
35 message,
36 hash);
35 37
36 if (next != session) 38 if (next != session)
37 add_member_session(next->member, next); 39 add_member_session (next->member, next);
38} 40}
39 41
42
40void 43void
41handle_message_join (struct GNUNET_MESSENGER_SrvRoom *room, 44handle_message_join (struct GNUNET_MESSENGER_SrvRoom *room,
42 struct GNUNET_MESSENGER_SenderSession *session, 45 struct GNUNET_MESSENGER_SenderSession *session,
43 const struct GNUNET_MESSENGER_Message *message, 46 const struct GNUNET_MESSENGER_Message *message,
44 const struct GNUNET_HashCode *hash) 47 const struct GNUNET_HashCode *hash)
45{ 48{
46 GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Member (%s) joins room (%s).\n", 49 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Member (%s) joins room (%s).\n",
47 GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s(get_srv_room_key(room))); 50 GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s (
51 get_srv_room_key (room)));
48 52
49 if (GNUNET_OK != reset_member_session(session->member, hash)) 53 if (GNUNET_OK != reset_member_session (session->member, hash))
50 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Resetting member session failed!\n"); 54 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Resetting member session failed!\n");
51 55
52 solve_srv_room_member_collisions ( 56 solve_srv_room_member_collisions (
53 room, 57 room,
54 &(message->body.join.key), 58 &(message->body.join.key),
55 &(message->header.sender_id), 59 &(message->header.sender_id),
56 GNUNET_TIME_absolute_ntoh(message->header.timestamp) 60 GNUNET_TIME_absolute_ntoh (message->header.timestamp)
57 ); 61 );
58} 62}
59 63
64
60void 65void
61handle_message_leave (struct GNUNET_MESSENGER_SrvRoom *room, 66handle_message_leave (struct GNUNET_MESSENGER_SrvRoom *room,
62 struct GNUNET_MESSENGER_SenderSession *session, 67 struct GNUNET_MESSENGER_SenderSession *session,
63 const struct GNUNET_MESSENGER_Message *message, 68 const struct GNUNET_MESSENGER_Message *message,
64 const struct GNUNET_HashCode *hash) 69 const struct GNUNET_HashCode *hash)
65{ 70{
66 GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Member (%s) leaves room (%s).\n", 71 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Member (%s) leaves room (%s).\n",
67 GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s(get_srv_room_key(room))); 72 GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s (
73 get_srv_room_key (room)));
68 74
69 close_member_session(session->member); 75 close_member_session (session->member);
70} 76}
71 77
78
72void 79void
73handle_message_name (struct GNUNET_MESSENGER_SrvRoom *room, 80handle_message_name (struct GNUNET_MESSENGER_SrvRoom *room,
74 struct GNUNET_MESSENGER_SenderSession *session, 81 struct GNUNET_MESSENGER_SenderSession *session,
75 const struct GNUNET_MESSENGER_Message *message, 82 const struct GNUNET_MESSENGER_Message *message,
76 const struct GNUNET_HashCode *hash) 83 const struct GNUNET_HashCode *hash)
77{ 84{
78 struct GNUNET_MESSENGER_Contact *contact = get_member_session_contact(session->member); 85 struct GNUNET_MESSENGER_Contact *contact = get_member_session_contact (
86 session->member);
79 87
80 if (!contact) 88 if (! contact)
81 return; 89 return;
82 90
83 set_contact_name (contact, message->body.name.name); 91 set_contact_name (contact, message->body.name.name);
84} 92}
85 93
94
86void 95void
87handle_message_key (struct GNUNET_MESSENGER_SrvRoom *room, 96handle_message_key (struct GNUNET_MESSENGER_SrvRoom *room,
88 struct GNUNET_MESSENGER_SenderSession *session, 97 struct GNUNET_MESSENGER_SenderSession *session,
@@ -92,6 +101,7 @@ handle_message_key (struct GNUNET_MESSENGER_SrvRoom *room,
92 handle_member_session_switch (session->member, message, hash); 101 handle_member_session_switch (session->member, message, hash);
93} 102}
94 103
104
95void 105void
96handle_message_peer (struct GNUNET_MESSENGER_SrvRoom *room, 106handle_message_peer (struct GNUNET_MESSENGER_SrvRoom *room,
97 struct GNUNET_MESSENGER_SenderSession *session, 107 struct GNUNET_MESSENGER_SenderSession *session,
@@ -100,16 +110,18 @@ handle_message_peer (struct GNUNET_MESSENGER_SrvRoom *room,
100{ 110{
101 struct GNUNET_MESSENGER_PeerStore *store = get_srv_room_peer_store (room); 111 struct GNUNET_MESSENGER_PeerStore *store = get_srv_room_peer_store (room);
102 112
103 if (0 == GNUNET_memcmp(session->peer, &(message->body.peer.peer))) 113 if (0 == GNUNET_memcmp (session->peer, &(message->body.peer.peer)))
104 update_store_peer(store, &(message->body.peer.peer)); 114 update_store_peer (store, &(message->body.peer.peer));
105 115
106 if (GNUNET_NO == contains_list_tunnels (&(room->basement), &(message->body.peer.peer))) 116 if (GNUNET_NO == contains_list_tunnels (&(room->basement),
117 &(message->body.peer.peer)))
107 add_to_list_tunnels (&(room->basement), &(message->body.peer.peer), hash); 118 add_to_list_tunnels (&(room->basement), &(message->body.peer.peer), hash);
108 119
109 if (room->peer_message) 120 if (room->peer_message)
110 rebuild_srv_room_basement_structure (room); 121 rebuild_srv_room_basement_structure (room);
111} 122}
112 123
124
113void 125void
114handle_message_id (struct GNUNET_MESSENGER_SrvRoom *room, 126handle_message_id (struct GNUNET_MESSENGER_SrvRoom *room,
115 struct GNUNET_MESSENGER_SenderSession *session, 127 struct GNUNET_MESSENGER_SenderSession *session,
@@ -119,13 +131,14 @@ handle_message_id (struct GNUNET_MESSENGER_SrvRoom *room,
119 handle_member_session_switch (session->member, message, hash); 131 handle_member_session_switch (session->member, message, hash);
120 132
121 solve_srv_room_member_collisions ( 133 solve_srv_room_member_collisions (
122 room, 134 room,
123 get_member_session_public_key(session->member), 135 get_member_session_public_key (session->member),
124 &(message->body.id.id), 136 &(message->body.id.id),
125 GNUNET_TIME_absolute_ntoh(message->header.timestamp) 137 GNUNET_TIME_absolute_ntoh (message->header.timestamp)
126 ); 138 );
127} 139}
128 140
141
129void 142void
130handle_message_miss (struct GNUNET_MESSENGER_SrvRoom *room, 143handle_message_miss (struct GNUNET_MESSENGER_SrvRoom *room,
131 struct GNUNET_MESSENGER_SenderSession *session, 144 struct GNUNET_MESSENGER_SenderSession *session,
@@ -134,12 +147,13 @@ handle_message_miss (struct GNUNET_MESSENGER_SrvRoom *room,
134{ 147{
135 struct GNUNET_MESSENGER_PeerStore *store = get_srv_room_peer_store (room); 148 struct GNUNET_MESSENGER_PeerStore *store = get_srv_room_peer_store (room);
136 149
137 if (0 == GNUNET_memcmp(session->peer, &(message->body.miss.peer))) 150 if (0 == GNUNET_memcmp (session->peer, &(message->body.miss.peer)))
138 remove_store_peer(store, &(message->body.miss.peer)); 151 remove_store_peer (store, &(message->body.miss.peer));
139 152
140 struct GNUNET_MESSENGER_ListTunnel *element = find_list_tunnels (&(room->basement), &(message->body.miss.peer), NULL); 153 struct GNUNET_MESSENGER_ListTunnel *element = find_list_tunnels (
154 &(room->basement), &(message->body.miss.peer), NULL);
141 155
142 if (!element) 156 if (! element)
143 return; 157 return;
144 158
145 remove_from_list_tunnels (&(room->basement), element); 159 remove_from_list_tunnels (&(room->basement), element);
@@ -148,17 +162,22 @@ handle_message_miss (struct GNUNET_MESSENGER_SrvRoom *room,
148 rebuild_srv_room_basement_structure (room); 162 rebuild_srv_room_basement_structure (room);
149} 163}
150 164
165
151void 166void
152handle_message_delete (struct GNUNET_MESSENGER_SrvRoom *room, 167handle_message_delete (struct GNUNET_MESSENGER_SrvRoom *room,
153 struct GNUNET_MESSENGER_SenderSession *session, 168 struct GNUNET_MESSENGER_SenderSession *session,
154 const struct GNUNET_MESSENGER_Message *message, 169 const struct GNUNET_MESSENGER_Message *message,
155 const struct GNUNET_HashCode *hash) 170 const struct GNUNET_HashCode *hash)
156{ 171{
157 struct GNUNET_TIME_Relative delay = GNUNET_TIME_relative_ntoh (message->body.deletion.delay); 172 struct GNUNET_TIME_Relative delay = GNUNET_TIME_relative_ntoh (
158 struct GNUNET_TIME_Absolute action = GNUNET_TIME_absolute_ntoh (message->header.timestamp); 173 message->body.deletion.delay);
174 struct GNUNET_TIME_Absolute action = GNUNET_TIME_absolute_ntoh (
175 message->header.timestamp);
159 176
160 action = GNUNET_TIME_absolute_add (action, delay); 177 action = GNUNET_TIME_absolute_add (action, delay);
161 delay = GNUNET_TIME_absolute_get_difference (GNUNET_TIME_absolute_get (), action); 178 delay = GNUNET_TIME_absolute_get_difference (GNUNET_TIME_absolute_get (),
179 action);
162 180
163 delete_srv_room_message (room, session->member, &(message->body.deletion.hash), delay); 181 delete_srv_room_message (room, session->member,
182 &(message->body.deletion.hash), delay);
164} 183}