[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: MESSENGER: Implement automatic connectio
From: |
gnunet |
Subject: |
[gnunet] branch master updated: MESSENGER: Implement automatic connection to remaining routing peers on closed connection |
Date: |
Sun, 17 Dec 2023 15:34:57 +0100 |
This is an automated email from the git hooks/post-receive script.
thejackimonster pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new 81afa753e MESSENGER: Implement automatic connection to remaining
routing peers on closed connection
81afa753e is described below
commit 81afa753e5ce3dddd52863c0e4c7c8fc5ac9b980
Author: TheJackiMonster <thejackimonster@gmail.com>
AuthorDate: Sun Dec 17 15:34:48 2023 +0100
MESSENGER: Implement automatic connection to remaining routing peers on
closed connection
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
.../messenger/gnunet-service-messenger_room.c | 13 +++++++++++++
.../messenger/gnunet-service-messenger_service.c | 4 ++++
.../messenger/gnunet-service-messenger_service.h | 1 +
src/service/messenger/messenger.conf.in | 1 +
src/service/messenger/messenger_api_list_tunnels.c | 21 +++++++++++++++++++++
src/service/messenger/messenger_api_list_tunnels.h | 13 +++++++++++++
src/service/messenger/test_messenger_api.conf | 1 +
7 files changed, 54 insertions(+)
diff --git a/src/service/messenger/gnunet-service-messenger_room.c
b/src/service/messenger/gnunet-service-messenger_room.c
index 1ad20bfb9..8ff8b1af7 100644
--- a/src/service/messenger/gnunet-service-messenger_room.c
+++ b/src/service/messenger/gnunet-service-messenger_room.c
@@ -869,6 +869,19 @@ callback_room_disconnect (struct GNUNET_MESSENGER_SrvRoom
*room,
if (GNUNET_YES == contains_list_tunnels (&(room->basement), &identity))
send_srv_room_message (room, room->host, create_message_miss (&identity));
+
+ if ((0 < GNUNET_CONTAINER_multipeermap_size (room->tunnels)) ||
+ (GNUNET_NO == room->service->auto_connecting))
+ return;
+
+ struct GNUNET_MESSENGER_ListTunnel *element;
+ element = find_list_tunnels_alternate (&(room->basement), &identity);
+
+ if (!element)
+ return;
+
+ GNUNET_PEER_resolve (element->peer, &identity);
+ enter_srv_room_at (room, room->host, &identity);
}
diff --git a/src/service/messenger/gnunet-service-messenger_service.c
b/src/service/messenger/gnunet-service-messenger_service.c
index f55a3bb7b..d4d2a4a89 100644
--- a/src/service/messenger/gnunet-service-messenger_service.c
+++ b/src/service/messenger/gnunet-service-messenger_service.c
@@ -83,6 +83,10 @@ create_service (const struct GNUNET_CONFIGURATION_Handle
*config,
}
}
+ service->auto_connecting = GNUNET_CONFIGURATION_get_value_yesno
(service->config,
+
GNUNET_MESSENGER_SERVICE_NAME,
+
"MESSENGER_AUTO_CONNECTING");
+
service->auto_routing = GNUNET_CONFIGURATION_get_value_yesno
(service->config,
GNUNET_MESSENGER_SERVICE_NAME,
"MESSENGER_AUTO_ROUTING");
diff --git a/src/service/messenger/gnunet-service-messenger_service.h
b/src/service/messenger/gnunet-service-messenger_service.h
index 0df45b384..c0295691d 100644
--- a/src/service/messenger/gnunet-service-messenger_service.h
+++ b/src/service/messenger/gnunet-service-messenger_service.h
@@ -48,6 +48,7 @@ struct GNUNET_MESSENGER_Service
struct GNUNET_PeerIdentity *peer;
char *dir;
+ enum GNUNET_GenericReturnValue auto_connecting;
enum GNUNET_GenericReturnValue auto_routing;
unsigned long long min_routers;
diff --git a/src/service/messenger/messenger.conf.in
b/src/service/messenger/messenger.conf.in
index a1732118f..6e29dea44 100644
--- a/src/service/messenger/messenger.conf.in
+++ b/src/service/messenger/messenger.conf.in
@@ -12,5 +12,6 @@ UNIX_MATCH_GID = YES
# Directory to store messages and contacts
MESSENGER_DIR = $GNUNET_DATA_HOME/messenger/
+MESSENGER_AUTO_CONNECTING = YES
MESSENGER_AUTO_ROUTING = YES
MESSENGER_MIN_ROUTERS = 3
\ No newline at end of file
diff --git a/src/service/messenger/messenger_api_list_tunnels.c
b/src/service/messenger/messenger_api_list_tunnels.c
index 362a56aca..aa9b91bc5 100644
--- a/src/service/messenger/messenger_api_list_tunnels.c
+++ b/src/service/messenger/messenger_api_list_tunnels.c
@@ -114,6 +114,27 @@ find_list_tunnels (struct GNUNET_MESSENGER_ListTunnels
*tunnels,
}
+struct GNUNET_MESSENGER_ListTunnel*
+find_list_tunnels_alternate (struct GNUNET_MESSENGER_ListTunnels *tunnels,
+ const struct GNUNET_PeerIdentity *peer)
+{
+ GNUNET_assert ((tunnels) && (peer));
+
+ struct GNUNET_MESSENGER_ListTunnel *element;
+ struct GNUNET_PeerIdentity pid;
+
+ for (element = tunnels->head; element; element = element->next)
+ {
+ GNUNET_PEER_resolve (element->peer, &pid);
+
+ if (0 != GNUNET_memcmp (&pid, peer))
+ return element;
+ }
+
+ return NULL;
+}
+
+
enum GNUNET_GenericReturnValue
verify_list_tunnels_flag_token (const struct GNUNET_MESSENGER_ListTunnels
*tunnels,
const struct GNUNET_PeerIdentity *peer,
diff --git a/src/service/messenger/messenger_api_list_tunnels.h
b/src/service/messenger/messenger_api_list_tunnels.h
index 693126d8d..427d0ef13 100644
--- a/src/service/messenger/messenger_api_list_tunnels.h
+++ b/src/service/messenger/messenger_api_list_tunnels.h
@@ -97,6 +97,19 @@ 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
+ * against a specific <i>peer</i> identity and returns an element of the list
+ * which does not match it.
+ *
+ * @param[in,out] tunnels List of tunnels
+ * @param[in] peer Peer identity of tunnel
+ * @return Element in the list with unmatching peer identity
+ */
+struct GNUNET_MESSENGER_ListTunnel*
+find_list_tunnels_alternate (struct GNUNET_MESSENGER_ListTunnels *tunnels,
+ const struct GNUNET_PeerIdentity *peer);
+
/**
* Verifies that a specific tunnel selected by its <i>peer</i> identity in a
* list of <i>tunnels</i> is the first in order with a given connection
<i>flag</i>.
diff --git a/src/service/messenger/test_messenger_api.conf
b/src/service/messenger/test_messenger_api.conf
index 14b237a71..c6c7ea2d3 100644
--- a/src/service/messenger/test_messenger_api.conf
+++ b/src/service/messenger/test_messenger_api.conf
@@ -40,6 +40,7 @@ START_ON_DEMAND = YES
[messenger]
START_ON_DEMAND = YES
+MESSENGER_AUTO_CONNECTING = NO
MESSENGER_AUTO_ROUTING = NO
[nat]
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: MESSENGER: Implement automatic connection to remaining routing peers on closed connection,
gnunet <=