![]() |
GNUnet
0.11.x
|
GNUnet MESSENGER service. More...
#include "platform.h"
#include "gnunet_crypto_lib.h"
#include "gnunet-service-messenger_tunnel.h"
#include "messenger_api_message.h"
Go to the source code of this file.
Functions | |
void | recv_message_info (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received info message to change the current member id to the one generated by the host connected to. More... | |
void | recv_message_join (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received join message to forward all member information to the new member if the message was the direct reaction to a previous info message from this peer. More... | |
void | recv_message_leave (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received leave message. More... | |
void | recv_message_name (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received name message. More... | |
void | recv_message_key (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received key message. More... | |
void | recv_message_peer (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received peer message to link it to its origin tunnel if the peer identity matches. More... | |
void | recv_message_id (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received id message to change the tunnels linked member id if necessary. More... | |
void | recv_message_miss (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received miss message. More... | |
void | recv_message_request (struct GNUNET_MESSENGER_SrvRoom *room, struct GNUNET_MESSENGER_SrvTunnel *tunnel, struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles a received request message by checking for the requested message and forwarding it back if the message was found. More... | |
GNUnet MESSENGER service.
Definition in file gnunet-service-messenger_message_recv.h.
void recv_message_info | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received info message to change the current member id to the one generated by the host connected to.
(all current tunnels will be informed about the id change)
room | Room of the message |
tunnel | Receiving connection |
message | INFO-Message |
hash | Hash of the message |
Definition at line 30 of file gnunet-service-messenger_message_recv.c.
References GNUNET_MESSENGER_Message::body, change_room_host_id(), GNUNET_MESSENGER_SrvTunnel::contact_id, create_message_id(), create_message_join(), destroy_message(), GNUNET_MESSENGER_SrvHandle::ego, get_room_host_id(), GNUNET_CONTAINER_multishortmap_contains(), GNUNET_memcmp, GNUNET_memcpy, GNUNET_new, GNUNET_NO, GNUNET_YES, GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_SrvRoom::host, GNUNET_MESSENGER_MessageBody::info, GNUNET_MESSENGER_SrvRoom::members, send_room_message_ext(), send_tunnel_message(), GNUNET_MESSENGER_MessageHeader::sender_id, switch_room_member_id(), and GNUNET_MESSENGER_MessageInfo::unique_id.
Referenced by callback_room_recv().
void recv_message_join | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received join message to forward all member information to the new member if the message was the direct reaction to a previous info message from this peer.
room | Room of the message |
tunnel | Receiving connection |
message | JOIN-Message |
hash | Hash of the message |
Definition at line 109 of file gnunet-service-messenger_message_recv.c.
References GNUNET_MESSENGER_SrvTunnel::contact_id, find_room_tunnel_to(), get_room_host_id(), get_room_message(), GNUNET_CONTAINER_multishortmap_iterate(), GNUNET_memcmp, GNUNET_MESSENGER_KIND_INFO, GNUNET_NO, handle_message_join(), GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_SrvRoom::host, iterate_send_member_infos(), GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_SrvRoom::member_infos, GNUNET_MESSENGER_MessageHeader::previous, GNUNET_MESSENGER_MemberInfoSpread::room, GNUNET_MESSENGER_MessageHeader::sender_id, and GNUNET_MESSENGER_MemberInfoSpread::tunnel.
Referenced by callback_room_recv().
void recv_message_leave | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received leave message.
room | Room of the message |
tunnel | Receiving connection |
message | LEAVE-Message |
hash | Hash of the message |
Definition at line 135 of file gnunet-service-messenger_message_recv.c.
References handle_message_leave().
Referenced by callback_room_recv().
void recv_message_name | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received name message.
room | Room of the message |
tunnel | Receiving connection |
message | NAME-Message |
hash | Hash of the message |
Definition at line 142 of file gnunet-service-messenger_message_recv.c.
References handle_message_name().
Referenced by callback_room_recv().
void recv_message_key | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received key message.
room | Room of the message |
tunnel | Receiving connection |
message | KEY-Message |
hash | Hash of the message |
Definition at line 149 of file gnunet-service-messenger_message_recv.c.
References handle_message_key().
Referenced by callback_room_recv().
void recv_message_peer | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received peer message to link it to its origin tunnel if the peer identity matches.
(the peer message and the member id can potentially be linked to the tunnel)
TODO: This handling will only check the one given tunnel!
room | Room of the message |
tunnel | Receiving connection |
message | PEER-Message |
hash | Hash of the message |
Definition at line 156 of file gnunet-service-messenger_message_recv.c.
References GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_SrvTunnel::contact_id, GNUNET_memcmp, GNUNET_memcpy, GNUNET_new, GNUNET_PEER_resolve(), handle_message_peer(), GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_SrvTunnel::peer, GNUNET_MESSENGER_MessagePeer::peer, GNUNET_MESSENGER_MessageBody::peer, GNUNET_MESSENGER_SrvTunnel::peer_message, and GNUNET_MESSENGER_MessageHeader::sender_id.
Referenced by callback_room_recv().
void recv_message_id | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received id message to change the tunnels linked member id if necessary.
(the tunnels linked member id will be changed if the sender id is matching)
TODO: This handling will only check the one given tunnel!
room | Room of the message |
tunnel | Receiving connection |
message | ID-Message |
hash | Hash of the message |
Definition at line 179 of file gnunet-service-messenger_message_recv.c.
References GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_SrvTunnel::contact_id, GNUNET_memcmp, GNUNET_memcpy, handle_message_id(), GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageId::id, GNUNET_MESSENGER_MessageBody::id, and GNUNET_MESSENGER_MessageHeader::sender_id.
Referenced by callback_room_recv().
void recv_message_miss | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received miss message.
room | Room of the message |
tunnel | Receiving connection |
message | MISS-Message |
hash | Hash of the message |
Definition at line 189 of file gnunet-service-messenger_message_recv.c.
References handle_message_miss().
Referenced by callback_room_recv().
void recv_message_request | ( | struct GNUNET_MESSENGER_SrvRoom * | room, |
struct GNUNET_MESSENGER_SrvTunnel * | tunnel, | ||
struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles a received request message by checking for the requested message and forwarding it back if the message was found.
(this can also cause this peer to send a new request instead of only forwarding the received one)
TODO: Requests can cause exponentially more requests!
room | Room of the message |
tunnel | Receiving connection |
message | REQUEST-Message |
hash | Hash of the message |
Definition at line 196 of file gnunet-service-messenger_message_recv.c.
References GNUNET_MESSENGER_Message::body, forward_tunnel_message(), get_room_message(), GNUNET_NO, GNUNET_MESSENGER_MessageRequest::hash, GNUNET_MESSENGER_SrvRoom::host, msg, and GNUNET_MESSENGER_MessageBody::request.
Referenced by callback_room_recv().