GNUnet 0.29.1-6-gb66d952d5
 
Loading...
Searching...
No Matches
gnunet-service-messenger_message_handle.c File Reference
Include dependency graph for gnunet-service-messenger_message_handle.c:

Go to the source code of this file.

Functions

static void handle_member_session_switch (struct GNUNET_MESSENGER_SrvMemberSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 
void handle_message_join (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent join message to make changes of current member information.
 
void handle_message_leave (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent leave message to make changes of current member information.
 
void handle_message_key (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent key message to change the key of a member and rearrange the contacts accordingly.
 
void handle_message_peer (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent peer message to make changes of the basement in the room.
 
void handle_message_id (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent id message to change a members id.
 
void handle_message_miss (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent miss message to drop a peer from the basement in the room.
 
void handle_message_delete (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent delete message to delete a specific message from the store.
 
void handle_message_connection (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent connection message to update connection information about a peer.
 
void handle_message_subscribe (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SenderSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
 Handles a received or sent subscribe message to subscribe a member to a discourse.
 

Function Documentation

◆ handle_member_session_switch()

static void handle_member_session_switch ( struct GNUNET_MESSENGER_SrvMemberSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)
static

Definition at line 33 of file gnunet-service-messenger_message_handle.c.

36{
38
39 GNUNET_assert ((session) && (message) && (hash));
40
41 next = switch_member_session (session, message, hash);
42
43 if (next != session)
45}
void add_member_session(struct GNUNET_MESSENGER_Member *member, struct GNUNET_MESSENGER_SrvMemberSession *session)
Adds a given member session to its member.
struct GNUNET_MESSENGER_SrvMemberSession * switch_member_session(struct GNUNET_MESSENGER_SrvMemberSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)
Creates and allocates a new member session closing and replacing a given other session of the same me...
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
struct GNUNET_MESSENGER_SrvMemberSession * next

References add_member_session(), GNUNET_assert, GNUNET_MESSENGER_SrvMemberSession::member, GNUNET_MESSENGER_SrvMemberSession::next, and switch_member_session().

Referenced by handle_message_id(), and handle_message_key().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_join()

void handle_message_join ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent join message to make changes of current member information.

(add matching member and clear member info)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messageJOIN-Message
[in]hashHash of the message

Definition at line 49 of file gnunet-service-messenger_message_handle.c.

53{
54 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Member (%s) joins room (%s).\n",
55 GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s (
56 get_srv_room_key (room)));
57
58 if (GNUNET_OK != reset_member_session (session->member, hash))
59 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Resetting member session failed!\n");
60
62 room,
63 &(message->body.join.key),
64 &(message->header.sender_id),
66}
enum GNUNET_GenericReturnValue reset_member_session(struct GNUNET_MESSENGER_SrvMemberSession *session, const struct GNUNET_HashCode *hash)
Resets a given member session which re-opens a member session for new usage.
void solve_srv_room_member_collisions(struct GNUNET_MESSENGER_SrvRoom *room, const struct GNUNET_CRYPTO_BlindablePublicKey *public_key, const struct GNUNET_ShortHashCode *member_id, struct GNUNET_TIME_Absolute timestamp)
Checks for potential collisions with member ids and solves them changing active handles ids if they u...
const struct GNUNET_HashCode * get_srv_room_key(const struct GNUNET_MESSENGER_SrvRoom *room)
Returns the shared secret you need to access a room.
#define GNUNET_log(kind,...)
@ GNUNET_OK
const char * GNUNET_sh2s(const struct GNUNET_ShortHashCode *shc)
Convert a short hash value to a string (for printing debug messages).
const char * GNUNET_h2s(const struct GNUNET_HashCode *hc)
Convert a hash value to a string (for printing debug messages).
@ GNUNET_ERROR_TYPE_ERROR
@ GNUNET_ERROR_TYPE_DEBUG
struct GNUNET_TIME_Absolute GNUNET_TIME_absolute_ntoh(struct GNUNET_TIME_AbsoluteNBO a)
Convert absolute time from network byte order.
Definition time.c:737
struct GNUNET_MESSENGER_MessageJoin join
struct GNUNET_TIME_AbsoluteNBO timestamp
The timestamp of the message.
struct GNUNET_ShortHashCode sender_id
The senders id inside of the room the message was sent in.
struct GNUNET_CRYPTO_BlindablePublicKey key
The senders blindable public key to verify its signatures.
struct GNUNET_MESSENGER_MessageHeader header
Header.
struct GNUNET_MESSENGER_MessageBody body
Body.
struct GNUNET_MESSENGER_SrvMemberSession * member

References GNUNET_MESSENGER_Message::body, get_srv_room_key(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_h2s(), GNUNET_log, GNUNET_OK, GNUNET_sh2s(), GNUNET_TIME_absolute_ntoh(), GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageBody::join, GNUNET_MESSENGER_MessageJoin::key, GNUNET_MESSENGER_SenderSession::member, reset_member_session(), GNUNET_MESSENGER_MessageHeader::sender_id, solve_srv_room_member_collisions(), and GNUNET_MESSENGER_MessageHeader::timestamp.

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_leave()

void handle_message_leave ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent leave message to make changes of current member information.

(remove matching member and clear member info)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messageLEAVE-Message
[in]hashHash of the message

Definition at line 70 of file gnunet-service-messenger_message_handle.c.

74{
75 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Member (%s) leaves room (%s).\n",
76 GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s (
77 get_srv_room_key (room)));
78
80}
void close_member_session(struct GNUNET_MESSENGER_SrvMemberSession *session)
Closes a given member session which opens the request for completion of the given member session.

References close_member_session(), get_srv_room_key(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_h2s(), GNUNET_log, GNUNET_sh2s(), GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_SenderSession::member, and GNUNET_MESSENGER_MessageHeader::sender_id.

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_key()

void handle_message_key ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent key message to change the key of a member and rearrange the contacts accordingly.

(move the member in the contacts and change its key)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messageKEY-Message
[in]hashHash of the message

Definition at line 84 of file gnunet-service-messenger_message_handle.c.

88{
89 handle_member_session_switch (session->member, message, hash);
90}
static void handle_member_session_switch(struct GNUNET_MESSENGER_SrvMemberSession *session, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash)

References handle_member_session_switch(), and GNUNET_MESSENGER_SenderSession::member.

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_peer()

void handle_message_peer ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent peer message to make changes of the basement in the room.

(add a new peer to the basement and restructure connections based on updated list of peers)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messagePEER-Message
[in]hashHash of the message

Definition at line 94 of file gnunet-service-messenger_message_handle.c.

98{
99 struct GNUNET_MESSENGER_PeerStore *store;
100
101 store = get_srv_room_peer_store (room);
102
103 if (0 == GNUNET_memcmp (session->peer, &(message->body.peer.peer)))
104 update_store_peer (store, &(message->body.peer.peer), GNUNET_YES);
105
107 &(message->body.peer.peer)))
108 add_to_list_tunnels (&(room->basement), &(message->body.peer.peer), hash);
109
110 if (room->peer_message)
112}
void update_store_peer(struct GNUNET_MESSENGER_PeerStore *store, const struct GNUNET_PeerIdentity *peer, enum GNUNET_GenericReturnValue active)
Adds a peer identity to the store if necessary.
void rebuild_srv_room_basement_structure(struct GNUNET_MESSENGER_SrvRoom *room)
Rebuilds the decentralized structure for a room by ensuring all required connections are made dependi...
struct GNUNET_MESSENGER_PeerStore * get_srv_room_peer_store(struct GNUNET_MESSENGER_SrvRoom *room)
Returns the used peer store of a given room.
#define GNUNET_memcmp(a, b)
Compare memory in a and b, where both must be of the same pointer type.
@ GNUNET_YES
@ GNUNET_NO
void add_to_list_tunnels(struct GNUNET_MESSENGER_ListTunnels *tunnels, const struct GNUNET_PeerIdentity *peer, const struct GNUNET_HashCode *hash)
Adds a specific peer from a tunnel to the end of the list.
enum GNUNET_GenericReturnValue contains_list_tunnels(struct GNUNET_MESSENGER_ListTunnels *tunnels, const struct GNUNET_PeerIdentity *peer)
Tests linearly if the list of tunnels peer identities contains a specific peer identity and returns G...
struct GNUNET_MESSENGER_MessagePeer peer
struct GNUNET_PeerIdentity peer
The peer identity of the sender opening a room.
struct GNUNET_MESSENGER_ListTunnels basement

References add_to_list_tunnels(), GNUNET_MESSENGER_SrvRoom::basement, GNUNET_MESSENGER_Message::body, contains_list_tunnels(), get_srv_room_peer_store(), GNUNET_memcmp, GNUNET_NO, GNUNET_YES, GNUNET_MESSENGER_MessagePeer::peer, GNUNET_MESSENGER_MessageBody::peer, GNUNET_MESSENGER_SenderSession::peer, GNUNET_MESSENGER_SrvRoom::peer_message, rebuild_srv_room_basement_structure(), and update_store_peer().

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_id()

void handle_message_id ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent id message to change a members id.

(change id of matching member)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messageID-Message
[in]hashHash of the message

Definition at line 116 of file gnunet-service-messenger_message_handle.c.

120{
121 handle_member_session_switch (session->member, message, hash);
122
124 room,
126 &(message->body.id.id),
128}
const struct GNUNET_CRYPTO_BlindablePublicKey * get_member_session_public_key(const struct GNUNET_MESSENGER_SrvMemberSession *session)
Returns the public key of a given member session.
struct GNUNET_MESSENGER_MessageId id
struct GNUNET_ShortHashCode id
The new id which will replace the senders id in a room.

References GNUNET_MESSENGER_Message::body, get_member_session_public_key(), GNUNET_TIME_absolute_ntoh(), handle_member_session_switch(), GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageId::id, GNUNET_MESSENGER_MessageBody::id, GNUNET_MESSENGER_SenderSession::member, solve_srv_room_member_collisions(), and GNUNET_MESSENGER_MessageHeader::timestamp.

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_miss()

void handle_message_miss ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent miss message to drop a peer from the basement in the room.

(remove a peer from the basement and restructure connections based on updated list of peers)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messageMISS-Message
[in]hashHash of the message

Definition at line 132 of file gnunet-service-messenger_message_handle.c.

136{
137 struct GNUNET_MESSENGER_PeerStore *store;
138 struct GNUNET_MESSENGER_ListTunnel *element;
139
140 store = get_srv_room_peer_store (room);
141
142 if (0 == GNUNET_memcmp (session->peer, &(message->body.miss.peer)))
143 update_store_peer (store, &(message->body.miss.peer), GNUNET_NO);
144
145 element = find_list_tunnels (&(room->basement),
146 &(message->body.miss.peer), NULL);
147
148 if (! element)
149 return;
150
151 remove_from_list_tunnels (&(room->basement), element);
152
153 if (room->peer_message)
155}
struct GNUNET_MESSENGER_ListTunnel * find_list_tunnels(struct GNUNET_MESSENGER_ListTunnels *tunnels, const struct GNUNET_PeerIdentity *peer, size_t *index)
Searches linearly through the list of tunnels peer identities for matching a specific peer identity a...
struct GNUNET_MESSENGER_ListTunnel * remove_from_list_tunnels(struct GNUNET_MESSENGER_ListTunnels *tunnels, struct GNUNET_MESSENGER_ListTunnel *element)
Removes a specific element from the list of tunnels peer identities and returns the next element in t...
struct GNUNET_MESSENGER_MessageMiss miss
struct GNUNET_PeerIdentity peer
The peer identity of a disconnected door to a room.

References GNUNET_MESSENGER_SrvRoom::basement, GNUNET_MESSENGER_Message::body, find_list_tunnels(), get_srv_room_peer_store(), GNUNET_memcmp, GNUNET_NO, GNUNET_MESSENGER_MessageBody::miss, GNUNET_MESSENGER_MessageMiss::peer, GNUNET_MESSENGER_SenderSession::peer, GNUNET_MESSENGER_SrvRoom::peer_message, rebuild_srv_room_basement_structure(), remove_from_list_tunnels(), and update_store_peer().

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_delete()

void handle_message_delete ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent delete message to delete a specific message from the store.

(remove a message from the store of a room under a given delay)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messageDELETE-Message
[in]hashHash of the message

Definition at line 159 of file gnunet-service-messenger_message_handle.c.

163{
164 struct GNUNET_TIME_Relative delay;
165
166 delay = get_message_timeout (message);
167
168 delete_srv_room_message (room, session->member,
169 &(message->body.deletion.hash), delay);
170}
enum GNUNET_GenericReturnValue delete_srv_room_message(struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvMemberSession *session, const struct GNUNET_HashCode *hash, const struct GNUNET_TIME_Relative delay)
Deletes a message from the room with a given hash in a specific delay if the provided member by its s...
struct GNUNET_TIME_Relative get_message_timeout(const struct GNUNET_MESSENGER_Message *message)
Return the relative timeout of the content from a given message that controls when a delayed handling...
struct GNUNET_MESSENGER_MessageDeletion deletion
struct GNUNET_HashCode hash
The hash of the message to delete.
Time for relative time used by GNUnet, in microseconds.

References GNUNET_MESSENGER_Message::body, delete_srv_room_message(), GNUNET_MESSENGER_MessageBody::deletion, get_message_timeout(), GNUNET_MESSENGER_MessageDeletion::hash, and GNUNET_MESSENGER_SenderSession::member.

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_connection()

void handle_message_connection ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent connection message to update connection information about a peer.

(update a peer in the basement)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messageDELETE-Message
[in]hashHash of the message

Definition at line 174 of file gnunet-service-messenger_message_handle.c.

178{
179 struct GNUNET_MESSENGER_ListTunnel *element;
180
181 element = find_list_tunnels (&(room->basement), session->peer, NULL);
182
183 if (! element)
184 return;
185
186 memcpy (&(element->connection), &(message->body.connection),
187 sizeof (struct GNUNET_MESSENGER_MessageConnection));
188}
struct GNUNET_MESSENGER_MessageConnection connection
struct GNUNET_MESSENGER_MessageConnection connection
A connection message body This allows to tell others about connection information about a peer.

References GNUNET_MESSENGER_SrvRoom::basement, GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_MessageBody::connection, GNUNET_MESSENGER_ListTunnel::connection, find_list_tunnels(), and GNUNET_MESSENGER_SenderSession::peer.

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message_subscribe()

void handle_message_subscribe ( struct GNUNET_MESSENGER_SrvRoom *  room,
struct GNUNET_MESSENGER_SenderSession *  session,
const struct GNUNET_MESSENGER_Message *  message,
const struct GNUNET_HashCode *  hash 
)

Handles a received or sent subscribe message to subscribe a member to a discourse.

(subscribe a member to a discourse)

Parameters
[in,out]roomRoom of the message
[in,out]sessionSender session
[in]messageSUBSCRIBE-Message
[in]hashHash of the message

Definition at line 192 of file gnunet-service-messenger_message_handle.c.

196{
197 struct GNUNET_MESSENGER_Member *member;
198 const struct GNUNET_ShortHashCode *discourse;
199 struct GNUNET_MESSENGER_Subscription *subscription;
200
201 member = session->member->member;
202
203 discourse = &(message->body.subscription.discourse);
204 subscription = get_member_subscription (member, discourse);
205
206 {
209
212
213 if (subscription)
214 update_subscription (subscription,
215 timestamp,
216 duration);
217 else
218 {
219 subscription =
220 create_subscription (room, member, discourse,
221 timestamp,
222 duration);
223
224 if (! subscription)
225 return;
226
227 add_member_subscription (member, subscription);
228 }
229 }
230
231 update_subscription_timing (subscription);
232 cleanup_srv_room_discourse_messages (room, discourse);
233}
static uint64_t timestamp(void)
Get current timestamp.
void add_member_subscription(struct GNUNET_MESSENGER_Member *member, struct GNUNET_MESSENGER_Subscription *subscription)
Adds a given subscription to a member.
struct GNUNET_MESSENGER_Subscription * get_member_subscription(struct GNUNET_MESSENGER_Member *member, const struct GNUNET_ShortHashCode *discourse)
Returns the active subscription of a given member to a selected discourse.
void cleanup_srv_room_discourse_messages(struct GNUNET_MESSENGER_SrvRoom *room, const struct GNUNET_ShortHashCode *discourse)
Cleanup discourse messages outside of current subscriptions from a specific discourse of all the memb...
void update_subscription_timing(struct GNUNET_MESSENGER_Subscription *subscription)
void update_subscription(struct GNUNET_MESSENGER_Subscription *subscription, struct GNUNET_TIME_Absolute timestamp, struct GNUNET_TIME_Relative duration)
struct GNUNET_MESSENGER_Subscription * create_subscription(struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_Member *member, const struct GNUNET_ShortHashCode *discourse, struct GNUNET_TIME_Absolute timestamp, struct GNUNET_TIME_Relative duration)
static struct GNUNET_TIME_Relative duration
Option '-d': duration of the mapping.
Definition gnunet-vpn.c:90
struct GNUNET_TIME_Relative GNUNET_TIME_relative_ntoh(struct GNUNET_TIME_RelativeNBO a)
Convert relative time from network byte order.
Definition time.c:626
struct GNUNET_MESSENGER_MessageSubscribtion subscription
struct GNUNET_TIME_RelativeNBO time
The time window of the subscription.
struct GNUNET_ShortHashCode discourse
The hash of the discourse to subscription.
A 256-bit hashcode.
Time for absolute times used by GNUnet, in microseconds.

References add_member_subscription(), GNUNET_MESSENGER_Message::body, cleanup_srv_room_discourse_messages(), create_subscription(), GNUNET_MESSENGER_MessageSubscribtion::discourse, GNUNET_MESSENGER_Subscription::discourse, duration, get_member_subscription(), GNUNET_TIME_absolute_ntoh(), GNUNET_TIME_relative_ntoh(), GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_SrvMemberSession::member, GNUNET_MESSENGER_SenderSession::member, GNUNET_MESSENGER_Subscription::member, GNUNET_MESSENGER_MessageBody::subscription, GNUNET_MESSENGER_MessageSubscribtion::time, GNUNET_MESSENGER_MessageHeader::timestamp, timestamp(), update_subscription(), and update_subscription_timing().

Referenced by callback_room_handle_message().

Here is the call graph for this function:
Here is the caller graph for this function: