gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet] 07/16: MESSENGER: Types adjusted and added configuration fields


From: gnunet
Subject: [gnunet] 07/16: MESSENGER: Types adjusted and added configuration fields
Date: Sun, 17 Dec 2023 00:09:01 +0100

This is an automated email from the git hooks/post-receive script.

thejackimonster pushed a commit to branch master
in repository gnunet.

commit 934780b39b5dca514b0ee75f6ecd7247c3c72332
Author: TheJackiMonster <thejackimonster@gmail.com>
AuthorDate: Fri Dec 8 18:09:52 2023 +0100

    MESSENGER: Types adjusted and added configuration fields
    
    Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
 src/service/messenger/gnunet-service-messenger.c   |  3 +-
 .../messenger/gnunet-service-messenger_basement.c  |  4 +-
 .../messenger/gnunet-service-messenger_basement.h  |  6 +--
 .../messenger/gnunet-service-messenger_handle.c    | 52 +++++++++++-------
 .../messenger/gnunet-service-messenger_handle.h    | 13 +++--
 .../gnunet-service-messenger_list_handles.c        |  2 +-
 .../gnunet-service-messenger_list_handles.h        |  2 +-
 .../messenger/gnunet-service-messenger_member.c    | 14 ++---
 .../gnunet-service-messenger_member_session.c      | 22 ++++----
 .../gnunet-service-messenger_member_session.h      | 16 +++---
 .../gnunet-service-messenger_member_store.c        | 10 ++--
 .../gnunet-service-messenger_member_store.h        |  2 +-
 .../gnunet-service-messenger_message_recv.c        |  8 +--
 .../gnunet-service-messenger_message_recv.h        |  6 +--
 .../gnunet-service-messenger_message_send.c        |  2 +-
 .../gnunet-service-messenger_message_state.c       |  2 +-
 .../gnunet-service-messenger_message_state.h       |  2 +-
 .../gnunet-service-messenger_message_store.c       | 25 ++++-----
 .../gnunet-service-messenger_message_store.h       | 14 ++---
 .../messenger/gnunet-service-messenger_operation.c |  4 +-
 .../messenger/gnunet-service-messenger_operation.h |  4 +-
 .../gnunet-service-messenger_operation_store.c     |  6 +--
 .../gnunet-service-messenger_operation_store.h     |  4 +-
 .../messenger/gnunet-service-messenger_room.c      | 62 ++++++++++++----------
 .../messenger/gnunet-service-messenger_room.h      | 14 ++---
 .../messenger/gnunet-service-messenger_service.c   | 25 ++++++---
 .../messenger/gnunet-service-messenger_service.h   | 11 ++--
 .../messenger/gnunet-service-messenger_tunnel.c    | 31 +++++------
 .../messenger/gnunet-service-messenger_tunnel.h    | 11 ++--
 src/service/messenger/messenger.conf.in            |  4 +-
 src/service/messenger/messenger_api_message.c      | 34 ++++++------
 src/service/messenger/messenger_api_message.h      | 35 ++++++------
 src/service/messenger/messenger_api_room.c         |  2 +-
 33 files changed, 250 insertions(+), 202 deletions(-)

diff --git a/src/service/messenger/gnunet-service-messenger.c 
b/src/service/messenger/gnunet-service-messenger.c
index b1521f4f8..ae919bbd1 100644
--- a/src/service/messenger/gnunet-service-messenger.c
+++ b/src/service/messenger/gnunet-service-messenger.c
@@ -294,7 +294,8 @@ check_send_message (void *cls,
                                     NULL))
     return GNUNET_NO;
 
-  const int allowed = filter_message_sending (&message);
+  enum GNUNET_GenericReturnValue allowed;
+  allowed = filter_message_sending (&message);
 
   cleanup_message (&message);
   return GNUNET_SYSERR != allowed? GNUNET_OK : GNUNET_NO;
diff --git a/src/service/messenger/gnunet-service-messenger_basement.c 
b/src/service/messenger/gnunet-service-messenger_basement.c
index d4de28c4c..8e3dd3358 100644
--- a/src/service/messenger/gnunet-service-messenger_basement.c
+++ b/src/service/messenger/gnunet-service-messenger_basement.c
@@ -41,7 +41,7 @@ count_of_tunnels (const struct GNUNET_MESSENGER_ListTunnels 
*tunnels)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 should_connect_tunnel_to (size_t count,
                           size_t src,
                           size_t dst)
@@ -53,7 +53,7 @@ should_connect_tunnel_to (size_t count,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 required_connection_between (size_t count,
                              size_t src,
                              size_t dst)
diff --git a/src/service/messenger/gnunet-service-messenger_basement.h 
b/src/service/messenger/gnunet-service-messenger_basement.h
index a097b482f..988ff9d1a 100644
--- a/src/service/messenger/gnunet-service-messenger_basement.h
+++ b/src/service/messenger/gnunet-service-messenger_basement.h
@@ -1,6 +1,6 @@
 /*
    This file is part of GNUnet.
-   Copyright (C) 2020--2021 GNUnet e.V.
+   Copyright (C) 2020--2023 GNUnet e.V.
 
    GNUnet is free software: you can redistribute it and/or modify it
    under the terms of the GNU Affero General Public License as published
@@ -47,7 +47,7 @@ count_of_tunnels (const struct GNUNET_MESSENGER_ListTunnels 
*tunnels);
  * @param[in] dst Destination index
  * @return #GNUNET_YES or #GNUNET_NO based on topologic requirement
  */
-int
+enum GNUNET_GenericReturnValue
 should_connect_tunnel_to (size_t count,
                           size_t src,
                           size_t dst);
@@ -62,7 +62,7 @@ should_connect_tunnel_to (size_t count,
  * @param[in] dst Destination index
  * @return #GNUNET_YES or #GNUNET_NO based on topologic requirement
  */
-int
+enum GNUNET_GenericReturnValue
 required_connection_between (size_t count,
                              size_t src,
                              size_t dst);
diff --git a/src/service/messenger/gnunet-service-messenger_handle.c 
b/src/service/messenger/gnunet-service-messenger_handle.c
index 4f15ad2f3..d3e417c15 100644
--- a/src/service/messenger/gnunet-service-messenger_handle.c
+++ b/src/service/messenger/gnunet-service-messenger_handle.c
@@ -50,6 +50,7 @@ create_srv_handle (struct GNUNET_MESSENGER_Service *service,
 
   handle->member_ids = GNUNET_CONTAINER_multihashmap_create (8, GNUNET_NO);
   handle->next_ids = GNUNET_CONTAINER_multihashmap_create (4, GNUNET_NO);
+  handle->routing = GNUNET_CONTAINER_multihashmap_create (4, GNUNET_NO);
 
   handle->notify = NULL;
 
@@ -57,13 +58,12 @@ create_srv_handle (struct GNUNET_MESSENGER_Service *service,
 }
 
 
-int
-iterate_free_member_ids (void *cls,
-                         const struct GNUNET_HashCode *key,
-                         void *value)
+static enum GNUNET_GenericReturnValue
+iterate_free_values (void *cls,
+                     const struct GNUNET_HashCode *key,
+                     void *value)
 {
   GNUNET_free (value);
-
   return GNUNET_YES;
 }
 
@@ -77,12 +77,13 @@ destroy_srv_handle (struct GNUNET_MESSENGER_SrvHandle 
*handle)
     GNUNET_SCHEDULER_cancel (handle->notify);
 
   GNUNET_CONTAINER_multihashmap_iterate (handle->next_ids,
-                                         iterate_free_member_ids, NULL);
+                                         iterate_free_values, NULL);
   GNUNET_CONTAINER_multihashmap_iterate (handle->member_ids,
-                                         iterate_free_member_ids, NULL);
+                                         iterate_free_values, NULL);
 
   GNUNET_CONTAINER_multihashmap_destroy (handle->next_ids);
   GNUNET_CONTAINER_multihashmap_destroy (handle->member_ids);
+  GNUNET_CONTAINER_multihashmap_destroy (handle->routing);
 
   GNUNET_free (handle);
 }
@@ -132,7 +133,7 @@ get_srv_handle_data_subdir (const struct 
GNUNET_MESSENGER_SrvHandle *handle,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 create_handle_member_id (const struct GNUNET_MESSENGER_SrvHandle *handle,
                          const struct GNUNET_HashCode *key)
 {
@@ -173,7 +174,7 @@ get_srv_handle_member_id (const struct 
GNUNET_MESSENGER_SrvHandle *handle,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 change_srv_handle_member_id (struct GNUNET_MESSENGER_SrvHandle *handle,
                              const struct GNUNET_HashCode *key,
                              const struct GNUNET_ShortHashCode *unique_id)
@@ -213,22 +214,28 @@ change_srv_handle_member_id (struct 
GNUNET_MESSENGER_SrvHandle *handle,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 open_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
                       const struct GNUNET_HashCode *key)
 {
   GNUNET_assert ((handle) && (key));
 
-  if ((! get_srv_handle_member_id (handle, key)) && (GNUNET_YES !=
-                                                     create_handle_member_id (
-                                                       handle, key)))
+  if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (handle->routing,
+                                                      key,
+                                                      NULL,
+                                                      
GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE))
+    return GNUNET_NO;
+
+  if ((! get_srv_handle_member_id (handle, key)) &&
+      (GNUNET_YES != create_handle_member_id (handle,
+                                              key)))
     return GNUNET_NO;
 
   return open_service_room (handle->service, handle, key);
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 entry_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
                        const struct GNUNET_PeerIdentity *door,
                        const struct GNUNET_HashCode *key)
@@ -244,14 +251,14 @@ entry_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle 
*handle,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 close_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
                        const struct GNUNET_HashCode *key)
 {
   GNUNET_assert ((handle) && (key));
 
   GNUNET_CONTAINER_multihashmap_get_multiple (handle->next_ids, key,
-                                              iterate_free_member_ids, NULL);
+                                              iterate_free_values, NULL);
   GNUNET_CONTAINER_multihashmap_remove_all (handle->next_ids, key);
 
   if ((handle->notify) && (0 == GNUNET_CONTAINER_multihashmap_size (
@@ -264,7 +271,14 @@ close_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle 
*handle,
   if (! get_srv_handle_member_id (handle, key))
     return GNUNET_NO;
 
-  return close_service_room (handle->service, handle, key);
+  enum GNUNET_GenericReturnValue result;
+  result = close_service_room (handle->service, handle, key);
+
+  if (GNUNET_YES != result)
+    return result;
+
+  GNUNET_CONTAINER_multihashmap_remove_all (handle->routing, key);
+  return result;
 }
 
 
@@ -290,7 +304,7 @@ sync_srv_handle_messages (struct GNUNET_MESSENGER_SrvHandle 
*handle,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 send_srv_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
                          const struct GNUNET_HashCode *key,
                          const struct GNUNET_MESSENGER_Message *message)
@@ -449,7 +463,7 @@ notify_srv_handle_message (struct 
GNUNET_MESSENGER_SrvHandle *handle,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_next_member_ids (void *cls,
                          const struct GNUNET_HashCode *key,
                          void *value)
diff --git a/src/service/messenger/gnunet-service-messenger_handle.h 
b/src/service/messenger/gnunet-service-messenger_handle.h
index feb121284..9d6e2d38e 100644
--- a/src/service/messenger/gnunet-service-messenger_handle.h
+++ b/src/service/messenger/gnunet-service-messenger_handle.h
@@ -45,6 +45,7 @@ struct GNUNET_MESSENGER_SrvHandle
 
   struct GNUNET_CONTAINER_MultiHashMap *member_ids;
   struct GNUNET_CONTAINER_MultiHashMap *next_ids;
+  struct GNUNET_CONTAINER_MultiHashMap *routing;
 
   struct GNUNET_SCHEDULER_Task *notify;
 };
@@ -124,7 +125,7 @@ get_srv_handle_member_id (const struct 
GNUNET_MESSENGER_SrvHandle *handle,
  * @param[in] unique_id Unique member id
  * @return GNUNET_OK on success, otherwise GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 change_srv_handle_member_id (struct GNUNET_MESSENGER_SrvHandle *handle,
                              const struct GNUNET_HashCode *key,
                              const struct GNUNET_ShortHashCode *unique_id);
@@ -137,7 +138,7 @@ change_srv_handle_member_id (struct 
GNUNET_MESSENGER_SrvHandle *handle,
  * @param[in] key Key of a room
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 open_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
                       const struct GNUNET_HashCode *key);
 
@@ -150,7 +151,7 @@ open_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle 
*handle,
  * @param[in] key Key of a room
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 entry_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
                        const struct GNUNET_PeerIdentity *door,
                        const struct GNUNET_HashCode *key);
@@ -163,10 +164,12 @@ entry_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle 
*handle,
  * @param[in] key Key of a room
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 close_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
                        const struct GNUNET_HashCode *key);
 
+
+
 /**
  * Returns the latest merged hash from a room of a given <i>handle</i> using a 
specific <i>key</i>
  * and the handles own latest known <i>hash</i> of a message. If the room does 
not contain other
@@ -192,7 +195,7 @@ sync_srv_handle_messages (struct GNUNET_MESSENGER_SrvHandle 
*handle,
  * @param[in] message Message
  * @return #GNUNET_YES on success, #GNUNET_NO or #GNUNET_SYSERR otherwise.
  */
-int
+enum GNUNET_GenericReturnValue
 send_srv_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
                          const struct GNUNET_HashCode *key,
                          const struct GNUNET_MESSENGER_Message *message);
diff --git a/src/service/messenger/gnunet-service-messenger_list_handles.c 
b/src/service/messenger/gnunet-service-messenger_list_handles.c
index 826e1f4ed..4384b842e 100644
--- a/src/service/messenger/gnunet-service-messenger_list_handles.c
+++ b/src/service/messenger/gnunet-service-messenger_list_handles.c
@@ -72,7 +72,7 @@ add_list_handle (struct GNUNET_MESSENGER_ListHandles *handles,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 remove_list_handle (struct GNUNET_MESSENGER_ListHandles *handles,
                     struct GNUNET_MESSENGER_SrvHandle *handle)
 {
diff --git a/src/service/messenger/gnunet-service-messenger_list_handles.h 
b/src/service/messenger/gnunet-service-messenger_list_handles.h
index 8c066519e..81da42c20 100644
--- a/src/service/messenger/gnunet-service-messenger_list_handles.h
+++ b/src/service/messenger/gnunet-service-messenger_list_handles.h
@@ -79,7 +79,7 @@ add_list_handle (struct GNUNET_MESSENGER_ListHandles *handles,
  * @param[in,out] handle Handle
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 remove_list_handle (struct GNUNET_MESSENGER_ListHandles *handles,
                     struct GNUNET_MESSENGER_SrvHandle *handle);
 
diff --git a/src/service/messenger/gnunet-service-messenger_member.c 
b/src/service/messenger/gnunet-service-messenger_member.c
index c57daa062..19cc9559d 100644
--- a/src/service/messenger/gnunet-service-messenger_member.c
+++ b/src/service/messenger/gnunet-service-messenger_member.c
@@ -54,7 +54,7 @@ create_member (struct GNUNET_MESSENGER_MemberStore *store,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_destroy_session (void *cls,
                          const struct GNUNET_HashCode *key,
                          void *value)
@@ -87,7 +87,7 @@ get_member_id (const struct GNUNET_MESSENGER_Member *member)
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 callback_scan_for_sessions (void *cls,
                             const char *filename)
 {
@@ -157,7 +157,7 @@ free_config:
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_load_next_session (void *cls,
                            const struct GNUNET_HashCode *key,
                            void *value)
@@ -194,7 +194,7 @@ load_member_next_sessions (const struct 
GNUNET_MESSENGER_Member *member,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_save_session (void *cls,
                       const struct GNUNET_HashCode *key,
                       void *value)
@@ -273,7 +273,7 @@ sync_session_contact_from_next (struct 
GNUNET_MESSENGER_MemberSession *session,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_sync_session_contact (void *cls,
                               const struct GNUNET_HashCode *key,
                               void *value)
@@ -318,7 +318,7 @@ struct GNUNET_MESSENGER_ClosureSearchSession
   struct GNUNET_MESSENGER_MemberSession *match;
 };
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_search_session (void *cls,
                         const struct GNUNET_HashCode *key,
                         void *value)
@@ -429,7 +429,7 @@ struct GNUNET_MESSENGER_ClosureIterateSessions
   void *cls;
 };
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_member_sessions_it (void *cls,
                             const struct GNUNET_HashCode *key,
                             void *value)
diff --git a/src/service/messenger/gnunet-service-messenger_member_session.c 
b/src/service/messenger/gnunet-service-messenger_member_session.c
index 8b369d2c4..206d6eac5 100644
--- a/src/service/messenger/gnunet-service-messenger_member_session.c
+++ b/src/service/messenger/gnunet-service-messenger_member_session.c
@@ -173,7 +173,7 @@ completion:
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_copy_history (void *cls,
                       const struct GNUNET_HashCode *key,
                       void *value)
@@ -287,7 +287,7 @@ destroy_member_session (struct 
GNUNET_MESSENGER_MemberSession *session)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 reset_member_session (struct GNUNET_MESSENGER_MemberSession *session,
                       const struct GNUNET_HashCode *hash)
 {
@@ -332,7 +332,7 @@ close_member_session (struct GNUNET_MESSENGER_MemberSession 
*session)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 is_member_session_closed (const struct GNUNET_MESSENGER_MemberSession *session)
 {
   GNUNET_assert (session);
@@ -341,7 +341,7 @@ is_member_session_closed (const struct 
GNUNET_MESSENGER_MemberSession *session)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 is_member_session_completed (const struct
                              GNUNET_MESSENGER_MemberSession *session)
 {
@@ -410,7 +410,7 @@ get_member_session_contact (struct 
GNUNET_MESSENGER_MemberSession *session)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 verify_member_session_as_sender (const struct
                                  GNUNET_MESSENGER_MemberSession *session,
                                  const struct GNUNET_MESSENGER_Message 
*message,
@@ -435,10 +435,11 @@ verify_member_session_as_sender (const struct
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 check_member_session_history (const struct
                               GNUNET_MESSENGER_MemberSession *session,
-                              const struct GNUNET_HashCode *hash, int 
ownership)
+                              const struct GNUNET_HashCode *hash,
+                              enum GNUNET_GenericReturnValue ownership)
 {
   GNUNET_assert ((session) && (hash));
 
@@ -452,7 +453,8 @@ check_member_session_history (const struct
 
 static void
 update_member_chain_history (struct GNUNET_MESSENGER_MemberSession *session,
-                             const struct GNUNET_HashCode *hash, int ownership)
+                             const struct GNUNET_HashCode *hash,
+                             enum GNUNET_GenericReturnValue ownership)
 {
   GNUNET_assert ((session) && (hash));
 
@@ -546,7 +548,7 @@ load_member_session_history (struct 
GNUNET_MESSENGER_MemberSession *session,
   struct GNUNET_MESSENGER_MemberSessionHistoryEntry entry;
   ssize_t len;
 
-  int status;
+  enum GNUNET_GenericReturnValue status;
 
   do {
     len = GNUNET_DISK_file_read (handle, &(entry.hash), sizeof(entry.hash));
@@ -734,7 +736,7 @@ free_config:
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_save_member_session_history_hentries (void *cls,
                                               const struct GNUNET_HashCode 
*key,
                                               void *value)
diff --git a/src/service/messenger/gnunet-service-messenger_member_session.h 
b/src/service/messenger/gnunet-service-messenger_member_session.h
index a702e52f6..1f37e3d1a 100644
--- a/src/service/messenger/gnunet-service-messenger_member_session.h
+++ b/src/service/messenger/gnunet-service-messenger_member_session.h
@@ -52,8 +52,8 @@ struct GNUNET_MESSENGER_MemberSession
 
   struct GNUNET_TIME_Absolute start;
 
-  int closed;
-  int completed;
+  enum GNUNET_GenericReturnValue closed;
+  enum GNUNET_GenericReturnValue completed;
 };
 
 /**
@@ -105,7 +105,7 @@ destroy_member_session (struct 
GNUNET_MESSENGER_MemberSession *session);
  * @param[in] hash Hash of initial message (JOIN message!)
  * @return #GNUNET_OK on success, #GNUNET_SYSERR otherwise
  */
-int
+enum GNUNET_GenericReturnValue
 reset_member_session (struct GNUNET_MESSENGER_MemberSession *session,
                       const struct GNUNET_HashCode *hash);
 
@@ -127,7 +127,7 @@ close_member_session (struct GNUNET_MESSENGER_MemberSession 
*session);
  * @param[in] session Member session
  * @return #GNUNET_YES or #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 is_member_session_closed (const struct GNUNET_MESSENGER_MemberSession 
*session);
 
 /**
@@ -139,7 +139,7 @@ is_member_session_closed (const struct 
GNUNET_MESSENGER_MemberSession *session);
  * @param[in] session Member session
  * @return #GNUNET_YES or #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 is_member_session_completed (const struct
                              GNUNET_MESSENGER_MemberSession *session);
 
@@ -211,7 +211,7 @@ get_member_session_contact (struct 
GNUNET_MESSENGER_MemberSession *session);
  * @param[in] hash Hash of message
  * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 verify_member_session_as_sender (const struct
                                  GNUNET_MESSENGER_MemberSession *session,
                                  const struct GNUNET_MESSENGER_Message 
*message,
@@ -227,11 +227,11 @@ verify_member_session_as_sender (const struct
  * @param[in] ownership Ownership flag
  * @return #GNUNET_YES if found, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 check_member_session_history (const struct
                               GNUNET_MESSENGER_MemberSession *session,
                               const struct GNUNET_HashCode *hash,
-                              int ownership);
+                              enum GNUNET_GenericReturnValue ownership);
 
 /**
  * Adds a given <i>message</i> to the history of a <i>session</i> using the 
messages
diff --git a/src/service/messenger/gnunet-service-messenger_member_store.c 
b/src/service/messenger/gnunet-service-messenger_member_store.c
index e7876b382..732e3f9a3 100644
--- a/src/service/messenger/gnunet-service-messenger_member_store.c
+++ b/src/service/messenger/gnunet-service-messenger_member_store.c
@@ -41,7 +41,7 @@ init_member_store (struct GNUNET_MESSENGER_MemberStore *store,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_destroy_members (void *cls,
                          const struct GNUNET_ShortHashCode *key,
                          void *value)
@@ -84,7 +84,7 @@ get_member_store_key (const struct 
GNUNET_MESSENGER_MemberStore *store)
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 callback_scan_for_members (void *cls,
                            const char *filename)
 {
@@ -105,7 +105,7 @@ callback_scan_for_members (void *cls,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_load_next_member_sessions (void *cls,
                                    const struct GNUNET_ShortHashCode *id,
                                    void *value)
@@ -129,7 +129,7 @@ iterate_load_next_member_sessions (void *cls,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_sync_member_contacts (void *cls,
                               const struct GNUNET_ShortHashCode *id,
                               void *value)
@@ -166,7 +166,7 @@ load_member_store (struct GNUNET_MESSENGER_MemberStore 
*store,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_save_members (void *cls,
                       const struct GNUNET_ShortHashCode *id,
                       void *value)
diff --git a/src/service/messenger/gnunet-service-messenger_member_store.h 
b/src/service/messenger/gnunet-service-messenger_member_store.h
index 0acb8ef9c..3bdd0fe7c 100644
--- a/src/service/messenger/gnunet-service-messenger_member_store.h
+++ b/src/service/messenger/gnunet-service-messenger_member_store.h
@@ -43,7 +43,7 @@ struct GNUNET_MESSENGER_MemberStore
   struct GNUNET_CONTAINER_MultiShortmap *members;
 };
 
-typedef int (*GNUNET_MESSENGER_MemberIteratorCallback) (
+typedef enum GNUNET_GenericReturnValue 
(*GNUNET_MESSENGER_MemberIteratorCallback) (
   void *cls,
   const struct GNUNET_CRYPTO_PublicKey *public_key,
   struct GNUNET_MESSENGER_MemberSession *session);
diff --git a/src/service/messenger/gnunet-service-messenger_message_recv.c 
b/src/service/messenger/gnunet-service-messenger_message_recv.c
index db8d246cb..637c41a85 100644
--- a/src/service/messenger/gnunet-service-messenger_message_recv.c
+++ b/src/service/messenger/gnunet-service-messenger_message_recv.c
@@ -63,7 +63,7 @@ forward_about_members (struct GNUNET_MESSENGER_SrvRoom *room,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_forward_members (void *cls,
                          const struct GNUNET_CRYPTO_PublicKey *public_key,
                          struct GNUNET_MESSENGER_MemberSession *session)
@@ -83,7 +83,7 @@ iterate_forward_members (void *cls,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 recv_message_info (struct GNUNET_MESSENGER_SrvRoom *room,
                    struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                    const struct GNUNET_MESSENGER_Message *message,
@@ -141,7 +141,7 @@ recv_message_info (struct GNUNET_MESSENGER_SrvRoom *room,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 recv_message_peer (struct GNUNET_MESSENGER_SrvRoom *room,
                    struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                    const struct GNUNET_MESSENGER_Message *message,
@@ -192,7 +192,7 @@ callback_found_message (void *cls,
  * Function returns GNUNET_NO to drop forwarding the request.
  * It will only be forwarded if it can't be answered!
  */
-int
+enum GNUNET_GenericReturnValue
 recv_message_request (struct GNUNET_MESSENGER_SrvRoom *room,
                       struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                       const struct GNUNET_MESSENGER_Message *message,
diff --git a/src/service/messenger/gnunet-service-messenger_message_recv.h 
b/src/service/messenger/gnunet-service-messenger_message_recv.h
index 104d62ba0..6050a2bed 100644
--- a/src/service/messenger/gnunet-service-messenger_message_recv.h
+++ b/src/service/messenger/gnunet-service-messenger_message_recv.h
@@ -43,7 +43,7 @@
  * @param[in] hash Hash of the message
  * @return #GNUNET_NO to not forward the message
  */
-int
+enum GNUNET_GenericReturnValue
 recv_message_info (struct GNUNET_MESSENGER_SrvRoom *room,
                    struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                    const struct GNUNET_MESSENGER_Message *message,
@@ -59,7 +59,7 @@ recv_message_info (struct GNUNET_MESSENGER_SrvRoom *room,
  * @param[in] hash Hash of the message
  * @return #GNUNET_YES to forward the message
  */
-int
+enum GNUNET_GenericReturnValue
 recv_message_peer (struct GNUNET_MESSENGER_SrvRoom *room,
                    struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                    const struct GNUNET_MESSENGER_Message *message,
@@ -76,7 +76,7 @@ recv_message_peer (struct GNUNET_MESSENGER_SrvRoom *room,
  * @param[in] hash Hash of the message
  * @return #GNUNET_YES or #GNUNET_NO depending on required forwarding
  */
-int
+enum GNUNET_GenericReturnValue
 recv_message_request (struct GNUNET_MESSENGER_SrvRoom *room,
                       struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                       const struct GNUNET_MESSENGER_Message *message,
diff --git a/src/service/messenger/gnunet-service-messenger_message_send.c 
b/src/service/messenger/gnunet-service-messenger_message_send.c
index fbb8215c2..ff70432cc 100644
--- a/src/service/messenger/gnunet-service-messenger_message_send.c
+++ b/src/service/messenger/gnunet-service-messenger_message_send.c
@@ -43,7 +43,7 @@ static void
 notify_about_members (struct GNUNET_MESSENGER_MemberNotify *notify,
                       struct GNUNET_MESSENGER_MemberSession *session,
                       struct GNUNET_CONTAINER_MultiHashMap *map,
-                      int check_permission)
+                      enum GNUNET_GenericReturnValue check_permission)
 {
   if (session->prev)
     notify_about_members (notify, session->prev, map, GNUNET_YES);
diff --git a/src/service/messenger/gnunet-service-messenger_message_state.c 
b/src/service/messenger/gnunet-service-messenger_message_state.c
index 112f03032..9fdb62918 100644
--- a/src/service/messenger/gnunet-service-messenger_message_state.c
+++ b/src/service/messenger/gnunet-service-messenger_message_state.c
@@ -71,7 +71,7 @@ get_message_state_merge_hash (const struct 
GNUNET_MESSENGER_MessageState *state)
 
 void
 update_message_state (struct GNUNET_MESSENGER_MessageState *state,
-                      int requested,
+                      enum GNUNET_GenericReturnValue requested,
                       const struct GNUNET_MESSENGER_Message *message,
                       const struct GNUNET_HashCode *hash)
 {
diff --git a/src/service/messenger/gnunet-service-messenger_message_state.h 
b/src/service/messenger/gnunet-service-messenger_message_state.h
index f6a1a41b9..5c6f3d981 100644
--- a/src/service/messenger/gnunet-service-messenger_message_state.h
+++ b/src/service/messenger/gnunet-service-messenger_message_state.h
@@ -53,7 +53,7 @@ get_message_state_merge_hash (const struct
 
 void
 update_message_state (struct GNUNET_MESSENGER_MessageState *state,
-                      int requested,
+                      enum GNUNET_GenericReturnValue requested,
                       const struct GNUNET_MESSENGER_Message *message,
                       const struct GNUNET_HashCode *hash);
 
diff --git a/src/service/messenger/gnunet-service-messenger_message_store.c 
b/src/service/messenger/gnunet-service-messenger_message_store.c
index d4bccca5c..f14be03b0 100644
--- a/src/service/messenger/gnunet-service-messenger_message_store.c
+++ b/src/service/messenger/gnunet-service-messenger_message_store.c
@@ -43,7 +43,7 @@ init_message_store (struct GNUNET_MESSENGER_MessageStore 
*store)
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_destroy_entries (void *cls,
                          const struct GNUNET_HashCode *key,
                          void *value)
@@ -56,7 +56,7 @@ iterate_destroy_entries (void *cls,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_destroy_messages (void *cls,
                           const struct GNUNET_HashCode *key,
                           void *value)
@@ -69,7 +69,7 @@ iterate_destroy_messages (void *cls,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_destroy_links (void *cls,
                        const struct GNUNET_HashCode *key,
                        void *value)
@@ -279,7 +279,7 @@ struct GNUNET_MESSENGER_ClosureMessageSave
   struct GNUNET_DISK_FileHandle *storage;
 };
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_save_entries (void *cls,
                       const struct GNUNET_HashCode *key,
                       void *value)
@@ -297,7 +297,7 @@ iterate_save_entries (void *cls,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_save_messages (void *cls,
                        const struct GNUNET_HashCode *key,
                        void *value)
@@ -340,7 +340,7 @@ iterate_save_messages (void *cls,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_save_links (void *cls,
                     const struct GNUNET_HashCode *key,
                     void *value)
@@ -451,7 +451,7 @@ close_entries:
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 contains_store_message (const struct GNUNET_MESSENGER_MessageStore *store,
                         const struct GNUNET_HashCode *hash)
 {
@@ -504,8 +504,9 @@ get_store_message (struct GNUNET_MESSENGER_MessageStore 
*store,
 
   message = create_message (GNUNET_MESSENGER_KIND_UNKNOWN);
 
-  const int decoding = decode_message (message, entry->length, buffer,
-                                       GNUNET_YES, NULL);
+  enum GNUNET_GenericReturnValue decoding;
+  decoding = decode_message (message, entry->length, buffer,
+                             GNUNET_YES, NULL);
 
   struct GNUNET_HashCode check;
   hash_message (message, entry->length, buffer, &check);
@@ -541,7 +542,7 @@ free_buffer:
 const struct GNUNET_MESSENGER_MessageLink*
 get_store_message_link (struct GNUNET_MESSENGER_MessageStore *store,
                         const struct GNUNET_HashCode *hash,
-                        int deleted_only)
+                        enum GNUNET_GenericReturnValue deleted_only)
 {
   if (deleted_only)
     goto get_link;
@@ -574,7 +575,7 @@ get_link:
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 put_store_message (struct GNUNET_MESSENGER_MessageStore *store,
                    const struct GNUNET_HashCode *hash,
                    struct GNUNET_MESSENGER_Message *message)
@@ -613,7 +614,7 @@ add_link (struct GNUNET_MESSENGER_MessageStore *store,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 delete_store_message (struct GNUNET_MESSENGER_MessageStore *store,
                       const struct GNUNET_HashCode *hash)
 {
diff --git a/src/service/messenger/gnunet-service-messenger_message_store.h 
b/src/service/messenger/gnunet-service-messenger_message_store.h
index 262d10555..f73e1c3f3 100644
--- a/src/service/messenger/gnunet-service-messenger_message_store.h
+++ b/src/service/messenger/gnunet-service-messenger_message_store.h
@@ -1,6 +1,6 @@
 /*
    This file is part of GNUnet.
-   Copyright (C) 2020--2021 GNUnet e.V.
+   Copyright (C) 2020--2023 GNUnet e.V.
 
    GNUnet is free software: you can redistribute it and/or modify it
    under the terms of the GNU Affero General Public License as published
@@ -53,8 +53,8 @@ struct GNUNET_MESSENGER_MessageStore
   struct GNUNET_CONTAINER_MultiHashMap *messages;
   struct GNUNET_CONTAINER_MultiHashMap *links;
 
-  int rewrite_entries;
-  int write_links;
+  enum GNUNET_GenericReturnValue rewrite_entries;
+  enum GNUNET_GenericReturnValue write_links;
 };
 
 /**
@@ -103,7 +103,7 @@ save_message_store (struct GNUNET_MESSENGER_MessageStore 
*store,
  * @param[in] hash Hash of message
  * @return #GNUNET_YES on match, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 contains_store_message (const struct GNUNET_MESSENGER_MessageStore *store,
                         const struct GNUNET_HashCode *hash);
 
@@ -138,7 +138,7 @@ get_store_message (struct GNUNET_MESSENGER_MessageStore 
*store,
 const struct GNUNET_MESSENGER_MessageLink*
 get_store_message_link (struct GNUNET_MESSENGER_MessageStore *store,
                         const struct GNUNET_HashCode *hash,
-                        int deleted_only);
+                        enum GNUNET_GenericReturnValue deleted_only);
 
 /**
  * Stores a message into the message store. The result indicates if the 
operation was successful.
@@ -148,7 +148,7 @@ get_store_message_link (struct 
GNUNET_MESSENGER_MessageStore *store,
  * @param[in,out] message Message
  * @return #GNUNET_OK on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 put_store_message (struct GNUNET_MESSENGER_MessageStore *store,
                    const struct GNUNET_HashCode *hash,
                    struct GNUNET_MESSENGER_Message *message);
@@ -161,7 +161,7 @@ put_store_message (struct GNUNET_MESSENGER_MessageStore 
*store,
  * @param[in] hash Hash of message
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure
  */
-int
+enum GNUNET_GenericReturnValue
 delete_store_message (struct GNUNET_MESSENGER_MessageStore *store,
                       const struct GNUNET_HashCode *hash);
 
diff --git a/src/service/messenger/gnunet-service-messenger_operation.c 
b/src/service/messenger/gnunet-service-messenger_operation.c
index f13db7de0..3abd8382b 100644
--- a/src/service/messenger/gnunet-service-messenger_operation.c
+++ b/src/service/messenger/gnunet-service-messenger_operation.c
@@ -189,7 +189,7 @@ callback_operation (void *cls)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 start_operation (struct GNUNET_MESSENGER_Operation *op,
                  enum GNUNET_MESSENGER_OperationType type,
                  struct GNUNET_MESSENGER_OperationStore *store,
@@ -220,7 +220,7 @@ start_operation (struct GNUNET_MESSENGER_Operation *op,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 stop_operation (struct GNUNET_MESSENGER_Operation *op)
 {
   GNUNET_assert (op);
diff --git a/src/service/messenger/gnunet-service-messenger_operation.h 
b/src/service/messenger/gnunet-service-messenger_operation.h
index 6631693cf..3885b3856 100644
--- a/src/service/messenger/gnunet-service-messenger_operation.h
+++ b/src/service/messenger/gnunet-service-messenger_operation.h
@@ -112,7 +112,7 @@ save_operation (const struct GNUNET_MESSENGER_Operation *op,
  * @param[in] delay Delay
  * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 start_operation (struct GNUNET_MESSENGER_Operation *op,
                  enum GNUNET_MESSENGER_OperationType type,
                  struct GNUNET_MESSENGER_OperationStore *store,
@@ -124,7 +124,7 @@ start_operation (struct GNUNET_MESSENGER_Operation *op,
  *
  * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 stop_operation (struct GNUNET_MESSENGER_Operation *op);
 
 #endif //GNUNET_SERVICE_MESSENGER_OPERATION_H
diff --git a/src/service/messenger/gnunet-service-messenger_operation_store.c 
b/src/service/messenger/gnunet-service-messenger_operation_store.c
index 670d5cdf5..d7e718474 100644
--- a/src/service/messenger/gnunet-service-messenger_operation_store.c
+++ b/src/service/messenger/gnunet-service-messenger_operation_store.c
@@ -64,7 +64,7 @@ clear_operation_store (struct GNUNET_MESSENGER_OperationStore 
*store)
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 callback_scan_for_operations (void *cls,
                               const char *filename)
 {
@@ -107,7 +107,7 @@ load_operation_store (struct 
GNUNET_MESSENGER_OperationStore *store,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_save_operations (void *cls,
                          const struct GNUNET_HashCode *key,
                          void *value)
@@ -162,7 +162,7 @@ get_store_operation_type (const struct 
GNUNET_MESSENGER_OperationStore *store,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 use_store_operation (struct GNUNET_MESSENGER_OperationStore *store,
                      const struct GNUNET_HashCode *hash,
                      enum GNUNET_MESSENGER_OperationType type,
diff --git a/src/service/messenger/gnunet-service-messenger_operation_store.h 
b/src/service/messenger/gnunet-service-messenger_operation_store.h
index 16531758c..3e7ab4a32 100644
--- a/src/service/messenger/gnunet-service-messenger_operation_store.h
+++ b/src/service/messenger/gnunet-service-messenger_operation_store.h
@@ -1,6 +1,6 @@
 /*
    This file is part of GNUnet.
-   Copyright (C) 2021 GNUnet e.V.
+   Copyright (C) 2021, 2023 GNUnet e.V.
 
    GNUnet is free software: you can redistribute it and/or modify it
    under the terms of the GNU Affero General Public License as published
@@ -107,7 +107,7 @@ get_store_operation_type (const struct 
GNUNET_MESSENGER_OperationStore *store,
  * @param[in] delay Delay
  * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 use_store_operation (struct GNUNET_MESSENGER_OperationStore *store,
                      const struct GNUNET_HashCode *hash,
                      enum GNUNET_MESSENGER_OperationType type,
diff --git a/src/service/messenger/gnunet-service-messenger_room.c 
b/src/service/messenger/gnunet-service-messenger_room.c
index ab1303f96..b9e150381 100644
--- a/src/service/messenger/gnunet-service-messenger_room.c
+++ b/src/service/messenger/gnunet-service-messenger_room.c
@@ -101,7 +101,7 @@ handle_room_messages (struct GNUNET_MESSENGER_SrvRoom 
*room);
 
 void
 destroy_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
-                  int deletion)
+                  enum GNUNET_GenericReturnValue deletion)
 {
   GNUNET_assert (room);
 
@@ -235,7 +235,7 @@ callback_room_connect (void *cls,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 join_room (struct GNUNET_MESSENGER_SrvRoom *room,
            struct GNUNET_MESSENGER_SrvHandle *handle,
            struct GNUNET_MESSENGER_Member *member,
@@ -264,7 +264,7 @@ join_room (struct GNUNET_MESSENGER_SrvRoom *room,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 join_room_locally (struct GNUNET_MESSENGER_SrvRoom *room,
                    struct GNUNET_MESSENGER_SrvHandle *handle)
 {
@@ -283,7 +283,7 @@ join_room_locally (struct GNUNET_MESSENGER_SrvRoom *room,
 }
 
 
-extern int
+extern enum GNUNET_GenericReturnValue
 check_tunnel_message (void *cls,
                       const struct GNUNET_MessageHeader *header);
 
@@ -295,7 +295,7 @@ extern void
 callback_tunnel_disconnect (void *cls,
                             const struct GNUNET_CADET_Channel *channel);
 
-int
+enum GNUNET_GenericReturnValue
 open_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
                struct GNUNET_MESSENGER_SrvHandle *handle)
 {
@@ -356,7 +356,7 @@ open_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 enter_srv_room_at (struct GNUNET_MESSENGER_SrvRoom *room,
                    struct GNUNET_MESSENGER_SrvHandle *handle,
                    const struct GNUNET_PeerIdentity *door)
@@ -420,7 +420,7 @@ pack_srv_room_message (const struct 
GNUNET_MESSENGER_SrvRoom *room,
                        const struct GNUNET_MESSENGER_SrvHandle *handle,
                        struct GNUNET_MESSENGER_Message *message,
                        struct GNUNET_HashCode *hash,
-                       int mode)
+                       enum GNUNET_MESSENGER_PackMode mode)
 {
   GNUNET_assert ((room) && (handle) && (message) && (hash));
 
@@ -454,10 +454,10 @@ struct GNUNET_MESSENGER_ClosureSendRoom
   struct GNUNET_MESSENGER_SrvTunnel *exclude;
   struct GNUNET_MESSENGER_Message *message;
   struct GNUNET_HashCode *hash;
-  int packed;
+  enum GNUNET_GenericReturnValue packed;
 };
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_send_room_message (void *cls,
                            const struct GNUNET_PeerIdentity *key,
                            void *value)
@@ -495,7 +495,7 @@ iterate_send_room_message (void *cls,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 update_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                      struct GNUNET_MESSENGER_Message *message,
                      const struct GNUNET_HashCode *hash);
@@ -505,7 +505,7 @@ callback_room_handle_message (struct 
GNUNET_MESSENGER_SrvRoom *room,
                               const struct GNUNET_MESSENGER_Message *message,
                               const struct GNUNET_HashCode *hash);
 
-int
+enum GNUNET_GenericReturnValue
 send_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                        struct GNUNET_MESSENGER_SrvHandle *handle,
                        struct GNUNET_MESSENGER_Message *message)
@@ -537,7 +537,8 @@ send_srv_room_message (struct GNUNET_MESSENGER_SrvRoom 
*room,
     pack_srv_room_message (room, handle, message, &hash,
                            GNUNET_MESSENGER_PACK_MODE_UNKNOWN);
 
-  const int new_message = update_room_message (room, message, &hash);
+  enum GNUNET_GenericReturnValue new_message;
+  new_message = update_room_message (room, message, &hash);
 
   if (GNUNET_YES != new_message)
     return GNUNET_SYSERR;
@@ -672,7 +673,7 @@ callback_room_merge (struct GNUNET_MESSENGER_SrvRoom *room,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 delete_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                          struct GNUNET_MESSENGER_MemberSession *session,
                          const struct GNUNET_HashCode *hash,
@@ -752,7 +753,7 @@ get_srv_room_tunnel (const struct GNUNET_MESSENGER_SrvRoom 
*room,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 request_room_message_step (struct GNUNET_MESSENGER_SrvRoom *room,
                            const struct GNUNET_HashCode *hash,
                            const struct GNUNET_MESSENGER_MemberSession 
*session,
@@ -769,8 +770,9 @@ request_room_message_step (struct GNUNET_MESSENGER_SrvRoom 
*room,
   if (! link)
     goto forward;
 
-  int result = request_room_message_step (room, &(link->first), session,
-                                          callback, cls);
+  enum GNUNET_GenericReturnValue result;
+  result = request_room_message_step (room, &(link->first), session,
+                                      callback, cls);
 
   if ((GNUNET_YES == link->multiple) &&
       (GNUNET_YES == request_room_message_step (room, &(link->second), session,
@@ -796,7 +798,7 @@ forward:
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 request_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                           const struct GNUNET_HashCode *hash,
                           const struct GNUNET_MESSENGER_MemberSession *session,
@@ -805,7 +807,8 @@ request_srv_room_message (struct GNUNET_MESSENGER_SrvRoom 
*room,
 {
   GNUNET_assert ((room) && (hash));
 
-  int result = request_room_message_step (room, hash, session, callback, cls);
+  enum GNUNET_GenericReturnValue result;
+  result = request_room_message_step (room, hash, session, callback, cls);
 
   if ((GNUNET_NO == result) && (callback))
     callback (cls, room, NULL, hash);
@@ -838,7 +841,7 @@ callback_room_disconnect (struct GNUNET_MESSENGER_SrvRoom 
*room,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 callback_verify_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                               void *cls,
                               struct GNUNET_MESSENGER_Message *message,
@@ -973,12 +976,14 @@ rebuild_srv_room_basement_structure (struct 
GNUNET_MESSENGER_SrvRoom *room)
   struct GNUNET_PeerIdentity peer;
   size_t src;
 
-  if ((GNUNET_OK != get_service_peer_identity (room->service, &peer)) ||
-      (! find_list_tunnels (&(room->basement), &peer, &src)))
+  if (GNUNET_OK != get_service_peer_identity (room->service, &peer))
     return;
 
   size_t count = count_of_tunnels (&(room->basement));
 
+  if (! find_list_tunnels (&(room->basement), &peer, &src))
+    return;
+
   struct GNUNET_MESSENGER_ListTunnel *element = room->basement.head;
   struct GNUNET_MESSENGER_SrvTunnel *tunnel;
 
@@ -1068,7 +1073,7 @@ finish_handling:
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 update_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                      struct GNUNET_MESSENGER_Message *message,
                      const struct GNUNET_HashCode *hash)
@@ -1078,10 +1083,10 @@ update_room_message (struct GNUNET_MESSENGER_SrvRoom 
*room,
   struct GNUNET_MESSENGER_OperationStore *operation_store =
     get_srv_room_operation_store (room);
 
-  const int requested = (GNUNET_MESSENGER_OP_REQUEST ==
-                         get_store_operation_type (operation_store, hash)?
-                         GNUNET_YES : GNUNET_NO
-                         );
+  enum GNUNET_GenericReturnValue requested;
+  requested = (GNUNET_MESSENGER_OP_REQUEST ==
+      get_store_operation_type (operation_store, hash)?
+          GNUNET_YES : GNUNET_NO);
 
   if (GNUNET_YES == requested)
     cancel_store_operation (operation_store, hash);
@@ -1144,7 +1149,7 @@ struct GNUNET_MESSENGER_MemberUpdate
   struct GNUNET_MESSENGER_MemberSessionCompletion *tail;
 };
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_update_member_sessions (void *cls,
                                 const struct
                                 GNUNET_CRYPTO_PublicKey *public_key,
@@ -1242,7 +1247,8 @@ callback_room_handle_message (struct 
GNUNET_MESSENGER_SrvRoom *room,
     GNUNET_free (element);
   }
 
-  const int start_handle = room->handling.head ? GNUNET_NO : GNUNET_YES;
+  enum GNUNET_GenericReturnValue start_handle;
+  start_handle = room->handling.head ? GNUNET_NO : GNUNET_YES;
 
   add_to_list_messages (&(room->handling), hash);
 
diff --git a/src/service/messenger/gnunet-service-messenger_room.h 
b/src/service/messenger/gnunet-service-messenger_room.h
index c5381850d..5c61dd171 100644
--- a/src/service/messenger/gnunet-service-messenger_room.h
+++ b/src/service/messenger/gnunet-service-messenger_room.h
@@ -102,7 +102,7 @@ create_srv_room (struct GNUNET_MESSENGER_SrvHandle *handle,
  */
 void
 destroy_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
-                  int deletion);
+                  enum GNUNET_GenericReturnValue deletion);
 
 /**
  * Returns the used peer store of a given <i>room</i>.
@@ -152,7 +152,7 @@ get_srv_room_operation_store (struct 
GNUNET_MESSENGER_SrvRoom *room);
  * @param[in,out] handle Handle
  * @return #GNUNET_YES on success, #GNUNET_NO on failure.
  */
-int
+enum GNUNET_GenericReturnValue
 open_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
                struct GNUNET_MESSENGER_SrvHandle *handle);
 
@@ -166,7 +166,7 @@ open_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
  * @param[in] door Peer identity
  * @return #GNUNET_YES on success, #GNUNET_NO on failure.
  */
-int
+enum GNUNET_GenericReturnValue
 enter_srv_room_at (struct GNUNET_MESSENGER_SrvRoom *room,
                    struct GNUNET_MESSENGER_SrvHandle *handle,
                    const struct GNUNET_PeerIdentity *door);
@@ -193,7 +193,7 @@ pack_srv_room_message (const struct 
GNUNET_MESSENGER_SrvRoom *room,
                        const struct GNUNET_MESSENGER_SrvHandle *handle,
                        struct GNUNET_MESSENGER_Message *message,
                        struct GNUNET_HashCode *hash,
-                       int mode);
+                       enum GNUNET_MESSENGER_PackMode mode);
 
 /**
  * Sends a <i>message</i> from a given <i>handle</i> into a <i>room</i>. The 
<i>hash</i> parameter will be
@@ -210,7 +210,7 @@ pack_srv_room_message (const struct 
GNUNET_MESSENGER_SrvRoom *room,
  * @param[in,out] message Message
  * @return #GNUNET_YES on success, #GNUNET_NO or #GNUNET_SYSERR otherwise.
  */
-int
+enum GNUNET_GenericReturnValue
 send_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                        struct GNUNET_MESSENGER_SrvHandle *handle,
                        struct GNUNET_MESSENGER_Message *message);
@@ -262,7 +262,7 @@ merge_srv_room_last_messages (struct 
GNUNET_MESSENGER_SrvRoom *room,
  * @param[in] delay Delay of deletion
  * @return #GNUNET_YES on success, #GNUNET_NO if permission gets denied, 
#GNUNET_SYSERR on operation failure
  */
-int
+enum GNUNET_GenericReturnValue
 delete_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                          struct GNUNET_MESSENGER_MemberSession *session,
                          const struct GNUNET_HashCode *hash,
@@ -328,7 +328,7 @@ typedef void (GNUNET_MESSENGER_MessageRequestCallback) (
  * @param[in] cls Closure for the <i>callback</i>
  * @return #GNUNET_YES if the request could be processed, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 request_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                           const struct GNUNET_HashCode *hash,
                           const struct GNUNET_MESSENGER_MemberSession *session,
diff --git a/src/service/messenger/gnunet-service-messenger_service.c 
b/src/service/messenger/gnunet-service-messenger_service.c
index 964707112..bdb3b7169 100644
--- a/src/service/messenger/gnunet-service-messenger_service.c
+++ b/src/service/messenger/gnunet-service-messenger_service.c
@@ -83,6 +83,16 @@ create_service (const struct GNUNET_CONFIGURATION_Handle 
*config,
     }
   }
 
+  service->auto_routing = GNUNET_CONFIGURATION_get_value_yesno 
(service->config,
+                                                                
GNUNET_MESSENGER_SERVICE_NAME,
+                                                                
"MESSENGER_AUTO_ROUTING");
+
+  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (service->config,
+                                                          
GNUNET_MESSENGER_SERVICE_NAME,
+                                                          
"MESSENGER_MIN_ROUTERS",
+                                                          
&(service->min_routers)))
+    service->min_routers = 0;
+
   service->cadet = GNUNET_CADET_connect (service->config);
 
   init_list_handles (&(service->handles));
@@ -95,7 +105,7 @@ create_service (const struct GNUNET_CONFIGURATION_Handle 
*config,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 iterate_destroy_rooms (void *cls,
                        const struct GNUNET_HashCode *key,
                        void *value)
@@ -193,7 +203,7 @@ remove_service_handle (struct GNUNET_MESSENGER_Service 
*service,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 get_service_peer_identity (struct GNUNET_MESSENGER_Service *service,
                            struct GNUNET_PeerIdentity *peer)
 {
@@ -205,7 +215,8 @@ get_service_peer_identity (struct GNUNET_MESSENGER_Service 
*service,
     return GNUNET_OK;
   }
 
-  int result = GNUNET_CRYPTO_get_peer_identity (service->config, peer);
+  enum GNUNET_GenericReturnValue result;
+  result = GNUNET_CRYPTO_get_peer_identity (service->config, peer);
 
   if (GNUNET_OK != result)
     return result;
@@ -235,7 +246,7 @@ struct HandleInitializationClosure
   const struct GNUNET_CRYPTO_PublicKey *pubkey;
 };
 
-static int
+static enum GNUNET_GenericReturnValue
 find_member_session_in_room (void *cls,
                              const struct GNUNET_CRYPTO_PublicKey *public_key,
                              struct GNUNET_MESSENGER_MemberSession *session)
@@ -294,7 +305,7 @@ initialize_service_handle (struct 
GNUNET_MESSENGER_SrvHandle *handle,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 open_service_room (struct GNUNET_MESSENGER_Service *service,
                    struct GNUNET_MESSENGER_SrvHandle *handle,
                    const struct GNUNET_HashCode *key)
@@ -323,7 +334,7 @@ open_service_room (struct GNUNET_MESSENGER_Service *service,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 entry_service_room (struct GNUNET_MESSENGER_Service *service,
                     struct GNUNET_MESSENGER_SrvHandle *handle,
                     const struct GNUNET_PeerIdentity *door,
@@ -362,7 +373,7 @@ entry_service_room (struct GNUNET_MESSENGER_Service 
*service,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 close_service_room (struct GNUNET_MESSENGER_Service *service,
                     struct GNUNET_MESSENGER_SrvHandle *handle,
                     const struct GNUNET_HashCode *key)
diff --git a/src/service/messenger/gnunet-service-messenger_service.h 
b/src/service/messenger/gnunet-service-messenger_service.h
index 69486b415..0df45b384 100644
--- a/src/service/messenger/gnunet-service-messenger_service.h
+++ b/src/service/messenger/gnunet-service-messenger_service.h
@@ -48,6 +48,9 @@ struct GNUNET_MESSENGER_Service
   struct GNUNET_PeerIdentity *peer;
   char *dir;
 
+  enum GNUNET_GenericReturnValue auto_routing;
+  unsigned long long min_routers;
+
   struct GNUNET_CADET_Handle *cadet;
 
   struct GNUNET_MESSENGER_ContactStore contact_store;
@@ -114,7 +117,7 @@ remove_service_handle (struct GNUNET_MESSENGER_Service 
*service,
  * @param[out] peer Peer identity
  * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 get_service_peer_identity (struct GNUNET_MESSENGER_Service *service,
                            struct GNUNET_PeerIdentity *peer);
 
@@ -139,7 +142,7 @@ get_service_room (const struct GNUNET_MESSENGER_Service 
*service,
  * @param[in] key Key of room
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 open_service_room (struct GNUNET_MESSENGER_Service *service,
                    struct GNUNET_MESSENGER_SrvHandle *handle,
                    const struct GNUNET_HashCode *key);
@@ -157,7 +160,7 @@ open_service_room (struct GNUNET_MESSENGER_Service *service,
  * @param[in] key Key of room
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 entry_service_room (struct GNUNET_MESSENGER_Service *service,
                     struct GNUNET_MESSENGER_SrvHandle *handle,
                     const struct GNUNET_PeerIdentity *door,
@@ -175,7 +178,7 @@ entry_service_room (struct GNUNET_MESSENGER_Service 
*service,
  * @param[in] key Key of room
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 close_service_room (struct GNUNET_MESSENGER_Service *service,
                     struct GNUNET_MESSENGER_SrvHandle *handle,
                     const struct GNUNET_HashCode *key);
diff --git a/src/service/messenger/gnunet-service-messenger_tunnel.c 
b/src/service/messenger/gnunet-service-messenger_tunnel.c
index 5262ba79b..ebc95d9fc 100644
--- a/src/service/messenger/gnunet-service-messenger_tunnel.c
+++ b/src/service/messenger/gnunet-service-messenger_tunnel.c
@@ -108,13 +108,13 @@ callback_tunnel_disconnect (void *cls,
 }
 
 
-extern int
+extern enum GNUNET_GenericReturnValue
 callback_verify_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                               void *cls,
                               struct GNUNET_MESSENGER_Message *message,
                               struct GNUNET_HashCode *hash);
 
-int
+enum GNUNET_GenericReturnValue
 check_tunnel_message (void *cls,
                       const struct GNUNET_MessageHeader *header)
 {
@@ -152,7 +152,7 @@ check_tunnel_message (void *cls,
 }
 
 
-extern int
+extern enum GNUNET_GenericReturnValue
 update_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
                      struct GNUNET_MESSENGER_Message *message,
                      const struct GNUNET_HashCode *hash);
@@ -169,10 +169,10 @@ update_tunnel_last_message (struct 
GNUNET_MESSENGER_SrvTunnel *tunnel,
   struct GNUNET_MESSENGER_OperationStore *operation_store =
     get_srv_room_operation_store (tunnel->room);
 
-  const int requested = (GNUNET_MESSENGER_OP_REQUEST ==
-                         get_store_operation_type (operation_store, hash)?
-                         GNUNET_YES : GNUNET_NO
-                         );
+  enum GNUNET_GenericReturnValue requested;
+  requested = (GNUNET_MESSENGER_OP_REQUEST ==
+      get_store_operation_type (operation_store, hash)?
+          GNUNET_YES : GNUNET_NO);
 
   struct GNUNET_MESSENGER_MessageStore *message_store =
     get_srv_room_message_store (tunnel->room);
@@ -207,16 +207,17 @@ handle_tunnel_message (void *cls, const struct 
GNUNET_MessageHeader *header)
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got message of kind: %s!\n",
               GNUNET_MESSENGER_name_of_kind (message.header.kind));
 
-  const int new_message = update_room_message (
-    tunnel->room, copy_message (&message), &hash
-    );
+  enum GNUNET_GenericReturnValue new_message;
+  new_message = update_room_message (tunnel->room,
+                                     copy_message (&message),
+                                     &hash);
 
   if (GNUNET_YES != new_message)
     goto receive_done;
 
   update_tunnel_last_message (tunnel, &hash);
 
-  int forward_message = GNUNET_YES;
+  enum GNUNET_GenericReturnValue forward_message = GNUNET_YES;
 
   switch (message.header.kind)
   {
@@ -247,7 +248,7 @@ receive_done:
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 connect_tunnel (struct GNUNET_MESSENGER_SrvTunnel *tunnel)
 {
   GNUNET_assert (tunnel);
@@ -292,7 +293,7 @@ disconnect_tunnel (struct GNUNET_MESSENGER_SrvTunnel 
*tunnel)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 is_tunnel_connected (const struct GNUNET_MESSENGER_SrvTunnel *tunnel)
 {
   GNUNET_assert (tunnel);
@@ -340,7 +341,7 @@ send_tunnel_envelope (struct GNUNET_MESSENGER_SrvTunnel 
*tunnel,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 send_tunnel_message (struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                      void *handle,
                      struct GNUNET_MESSENGER_Message *message)
@@ -421,7 +422,7 @@ get_tunnel_messenger_version (const struct 
GNUNET_MESSENGER_SrvTunnel *tunnel)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 update_tunnel_messenger_version (struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                                  uint32_t version)
 {
diff --git a/src/service/messenger/gnunet-service-messenger_tunnel.h 
b/src/service/messenger/gnunet-service-messenger_tunnel.h
index 2ffa2d04f..a31ff31c6 100644
--- a/src/service/messenger/gnunet-service-messenger_tunnel.h
+++ b/src/service/messenger/gnunet-service-messenger_tunnel.h
@@ -1,6 +1,6 @@
 /*
    This file is part of GNUnet.
-   Copyright (C) 2020--2021 GNUnet e.V.
+   Copyright (C) 2020--2023 GNUnet e.V.
 
    GNUnet is free software: you can redistribute it and/or modify it
    under the terms of the GNU Affero General Public License as published
@@ -83,7 +83,7 @@ bind_tunnel (struct GNUNET_MESSENGER_SrvTunnel *tunnel,
  * @param[in,out] tunnel Tunnel
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 connect_tunnel (struct GNUNET_MESSENGER_SrvTunnel *tunnel);
 
 /**
@@ -101,7 +101,7 @@ disconnect_tunnel (struct GNUNET_MESSENGER_SrvTunnel 
*tunnel);
  * @param[in] tunnel Tunnel
  * @return #GNUNET_YES or #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 is_tunnel_connected (const struct GNUNET_MESSENGER_SrvTunnel *tunnel);
 
 /**
@@ -127,7 +127,7 @@ send_tunnel_envelope (struct GNUNET_MESSENGER_SrvTunnel 
*tunnel,
  * @param[in,out] message Message
  * @return #GNUNET_YES on success, GNUNET_NO otherwise
  */
-int
+enum GNUNET_GenericReturnValue
 send_tunnel_message (struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                      void *handle,
                      struct GNUNET_MESSENGER_Message *message);
@@ -185,8 +185,9 @@ get_tunnel_messenger_version (const struct 
GNUNET_MESSENGER_SrvTunnel *tunnel);
  *
  * @param[in,out] tunnel Tunnel
  * @param[in] version Version of messenger
+ * @result #GNUNET_OK on success, otherwise #GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 update_tunnel_messenger_version (struct GNUNET_MESSENGER_SrvTunnel *tunnel,
                                  uint32_t version);
 
diff --git a/src/service/messenger/messenger.conf.in 
b/src/service/messenger/messenger.conf.in
index ef0544681..a1732118f 100644
--- a/src/service/messenger/messenger.conf.in
+++ b/src/service/messenger/messenger.conf.in
@@ -11,4 +11,6 @@ UNIX_MATCH_UID = NO
 UNIX_MATCH_GID = YES
 
 # Directory to store messages and contacts
-MESSENGER_DIR = $GNUNET_DATA_HOME/messenger/
\ No newline at end of file
+MESSENGER_DIR = $GNUNET_DATA_HOME/messenger/
+MESSENGER_AUTO_ROUTING = YES
+MESSENGER_MIN_ROUTERS = 3
\ No newline at end of file
diff --git a/src/service/messenger/messenger_api_message.c 
b/src/service/messenger/messenger_api_message.c
index 8bd34f8f7..2a2cbe2e2 100644
--- a/src/service/messenger/messenger_api_message.c
+++ b/src/service/messenger/messenger_api_message.c
@@ -153,7 +153,7 @@ destroy_message (struct GNUNET_MESSENGER_Message *message)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 is_message_session_bound (const struct GNUNET_MESSENGER_Message *message)
 {
   GNUNET_assert (message);
@@ -253,7 +253,7 @@ typedef uint32_t kind_t;
 
 uint16_t
 get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind,
-                       int include_header)
+                       enum GNUNET_GenericReturnValue include_header)
 {
   uint16_t length = 0;
 
@@ -306,7 +306,7 @@ get_message_body_size (enum GNUNET_MESSENGER_MessageKind 
kind,
 
 uint16_t
 get_message_size (const struct GNUNET_MESSENGER_Message *message,
-                  int include_header)
+                  enum GNUNET_GenericReturnValue include_header)
 {
   GNUNET_assert (message);
 
@@ -325,7 +325,7 @@ get_message_size (const struct GNUNET_MESSENGER_Message 
*message,
 
 static uint16_t
 get_short_message_size (const struct GNUNET_MESSENGER_ShortMessage *message,
-                        int include_body)
+                        enum GNUNET_GenericReturnValue include_body)
 {
   const uint16_t minimum_size = sizeof(struct GNUNET_HashCode) + 
sizeof(kind_t);
 
@@ -345,7 +345,7 @@ calc_usual_padding ()
   uint16_t padding = 0;
   uint16_t kind_size;
 
-  for (int i = 0; i <= GNUNET_MESSENGER_KIND_MAX; i++)
+  for (unsigned int i = 0; i <= GNUNET_MESSENGER_KIND_MAX; i++)
   {
     kind_size = get_message_kind_size ((enum GNUNET_MESSENGER_MessageKind) i,
                                        GNUNET_YES);
@@ -513,7 +513,7 @@ void
 encode_message (const struct GNUNET_MESSENGER_Message *message,
                 uint16_t length,
                 char *buffer,
-                int include_header)
+                enum GNUNET_GenericReturnValue include_header)
 {
   GNUNET_assert ((message) && (buffer));
 
@@ -678,11 +678,11 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind 
*kind,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 decode_message (struct GNUNET_MESSENGER_Message *message,
                 uint16_t length,
                 const char *buffer,
-                int include_header,
+                enum GNUNET_GenericReturnValue include_header,
                 uint16_t *padding)
 {
   GNUNET_assert (
@@ -740,7 +740,7 @@ decode_message (struct GNUNET_MESSENGER_Message *message,
 }
 
 
-static int
+static enum GNUNET_GenericReturnValue
 decode_short_message (struct GNUNET_MESSENGER_ShortMessage *message,
                       uint16_t length,
                       const char *buffer)
@@ -853,7 +853,7 @@ sign_message_by_peer (struct GNUNET_MESSENGER_Message 
*message,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 verify_message (const struct GNUNET_MESSENGER_Message *message,
                 const struct GNUNET_HashCode *hash,
                 const struct GNUNET_CRYPTO_PublicKey *key)
@@ -876,7 +876,7 @@ verify_message (const struct GNUNET_MESSENGER_Message 
*message,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 verify_message_by_peer (const struct GNUNET_MESSENGER_Message *message,
                         const struct GNUNET_HashCode *hash,
                         const struct GNUNET_PeerIdentity *identity)
@@ -900,7 +900,7 @@ verify_message_by_peer (const struct 
GNUNET_MESSENGER_Message *message,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 encrypt_message (struct GNUNET_MESSENGER_Message *message,
                  const struct GNUNET_CRYPTO_PublicKey *key)
 {
@@ -945,7 +945,7 @@ encrypt_message (struct GNUNET_MESSENGER_Message *message,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 decrypt_message (struct GNUNET_MESSENGER_Message *message,
                  const struct GNUNET_CRYPTO_PrivateKey *key)
 {
@@ -997,7 +997,7 @@ struct GNUNET_MQ_Envelope*
 pack_message (struct GNUNET_MESSENGER_Message *message,
               struct GNUNET_HashCode *hash,
               const GNUNET_MESSENGER_SignFunction sign,
-              int mode,
+              enum GNUNET_MESSENGER_PackMode mode,
               const void *cls)
 {
   GNUNET_assert (message);
@@ -1045,7 +1045,7 @@ pack_message (struct GNUNET_MESSENGER_Message *message,
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 is_peer_message (const struct GNUNET_MESSENGER_Message *message)
 {
   switch (message->header.kind)
@@ -1061,7 +1061,7 @@ is_peer_message (const struct GNUNET_MESSENGER_Message 
*message)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 is_service_message (const struct GNUNET_MESSENGER_Message *message)
 {
   if (GNUNET_YES == is_peer_message (message))
@@ -1105,7 +1105,7 @@ is_service_message (const struct GNUNET_MESSENGER_Message 
*message)
 }
 
 
-int
+enum GNUNET_GenericReturnValue
 filter_message_sending (const struct GNUNET_MESSENGER_Message *message)
 {
   if (GNUNET_YES == is_peer_message (message))
diff --git a/src/service/messenger/messenger_api_message.h 
b/src/service/messenger/messenger_api_message.h
index 1874a4fe4..dd399975f 100644
--- a/src/service/messenger/messenger_api_message.h
+++ b/src/service/messenger/messenger_api_message.h
@@ -81,7 +81,7 @@ destroy_message (struct GNUNET_MESSENGER_Message *message);
  * @param[in] message Message
  * @return #GNUNET_YES or #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 is_message_session_bound (const struct GNUNET_MESSENGER_Message *message);
 
 /**
@@ -93,7 +93,7 @@ is_message_session_bound (const struct 
GNUNET_MESSENGER_Message *message);
  */
 uint16_t
 get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind,
-                       int include_header);
+                       enum GNUNET_GenericReturnValue include_header);
 
 /**
  * Returns the exact size in bytes to encode a given <i>message</i>.
@@ -104,7 +104,7 @@ get_message_kind_size (enum GNUNET_MESSENGER_MessageKind 
kind,
  */
 uint16_t
 get_message_size (const struct GNUNET_MESSENGER_Message *message,
-                  int include_header);
+                  enum GNUNET_GenericReturnValue include_header);
 
 /**
  * Encodes a given <i>message</i> into a <i>buffer</i> of a maximal 
<i>length</i> in bytes.
@@ -118,7 +118,7 @@ void
 encode_message (const struct GNUNET_MESSENGER_Message *message,
                 uint16_t length,
                 char *buffer,
-                int include_header);
+                enum GNUNET_GenericReturnValue include_header);
 
 /**
  * Decodes a <i>message</i> from a given <i>buffer</i> of a maximal 
<i>length</i> in bytes.
@@ -135,11 +135,11 @@ encode_message (const struct GNUNET_MESSENGER_Message 
*message,
  * @param[out] padding Padding
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 decode_message (struct GNUNET_MESSENGER_Message *message,
                 uint16_t length,
                 const char *buffer,
-                int include_header,
+                enum GNUNET_GenericReturnValue include_header,
                 uint16_t *padding);
 
 /**
@@ -201,7 +201,7 @@ sign_message_by_peer (struct GNUNET_MESSENGER_Message 
*message,
  * @param[in] key Public key
  * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 verify_message (const struct GNUNET_MESSENGER_Message *message,
                 const struct GNUNET_HashCode *hash,
                 const struct GNUNET_CRYPTO_PublicKey *key);
@@ -216,7 +216,7 @@ verify_message (const struct GNUNET_MESSENGER_Message 
*message,
  * @param[in] identity Peer identity
  * @return #GNUNET_OK on success, otherwise #GNUNET_SYSERR
  */
-int
+enum GNUNET_GenericReturnValue
 verify_message_by_peer (const struct GNUNET_MESSENGER_Message *message,
                         const struct GNUNET_HashCode *hash,
                         const struct GNUNET_PeerIdentity *identity);
@@ -230,7 +230,7 @@ verify_message_by_peer (const struct 
GNUNET_MESSENGER_Message *message,
  * @param[in] key Public key
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 encrypt_message (struct GNUNET_MESSENGER_Message *message,
                  const struct GNUNET_CRYPTO_PublicKey *key);
 
@@ -243,7 +243,7 @@ encrypt_message (struct GNUNET_MESSENGER_Message *message,
  * @param[in] key Private key
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
-int
+enum GNUNET_GenericReturnValue
 decrypt_message (struct GNUNET_MESSENGER_Message *message,
                  const struct GNUNET_CRYPTO_PrivateKey *key);
 
@@ -255,8 +255,11 @@ typedef void (*GNUNET_MESSENGER_SignFunction)(
   const struct GNUNET_HashCode *hash
   );
 
-#define GNUNET_MESSENGER_PACK_MODE_ENVELOPE 0x1
-#define GNUNET_MESSENGER_PACK_MODE_UNKNOWN 0x0
+enum GNUNET_MESSENGER_PackMode
+{
+  GNUNET_MESSENGER_PACK_MODE_ENVELOPE = 0x1,
+  GNUNET_MESSENGER_PACK_MODE_UNKNOWN = 0x0,
+};
 
 /**
  * Encodes the <i>message</i> to pack it into a newly allocated envelope if 
<i>mode</i>
@@ -275,7 +278,7 @@ struct GNUNET_MQ_Envelope*
 pack_message (struct GNUNET_MESSENGER_Message *message,
               struct GNUNET_HashCode *hash,
               const GNUNET_MESSENGER_SignFunction sign,
-              int mode,
+              enum GNUNET_MESSENGER_PackMode mode,
               const void *cls);
 
 /**
@@ -286,7 +289,7 @@ pack_message (struct GNUNET_MESSENGER_Message *message,
  * @param[in] message Message
  * @return #GNUNET_YES if sending is allowed, #GNUNET_NO otherwise
  */
-int
+enum GNUNET_GenericReturnValue
 is_peer_message (const struct GNUNET_MESSENGER_Message *message);
 
 /**
@@ -300,7 +303,7 @@ is_peer_message (const struct GNUNET_MESSENGER_Message 
*message);
  * @param[in] message Message
  * @return #GNUNET_YES if encrypting is disallowed, #GNUNET_NO or 
#GNUNET_SYSERR otherwise
  */
-int
+enum GNUNET_GenericReturnValue
 is_service_message (const struct GNUNET_MESSENGER_Message *message);
 
 /**
@@ -311,7 +314,7 @@ is_service_message (const struct GNUNET_MESSENGER_Message 
*message);
  * @param[in] message Message
  * @return #GNUNET_YES if sending is allowed, #GNUNET_NO or #GNUNET_SYSERR 
otherwise
  */
-int
+enum GNUNET_GenericReturnValue
 filter_message_sending (const struct GNUNET_MESSENGER_Message *message);
 
 #endif //GNUNET_MESSENGER_API_MESSAGE_H
diff --git a/src/service/messenger/messenger_api_room.c 
b/src/service/messenger/messenger_api_room.c
index 1aca8a7d5..b2f0a9f9e 100644
--- a/src/service/messenger/messenger_api_room.c
+++ b/src/service/messenger/messenger_api_room.c
@@ -459,7 +459,7 @@ iterate_room_members (struct GNUNET_MESSENGER_Room *room,
 struct GNUNET_MESSENGER_MemberFind
 {
   const struct GNUNET_MESSENGER_Contact *contact;
-  int result;
+  enum GNUNET_GenericReturnValue result;
 };
 
 static int

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]