diff options
Diffstat (limited to 'src/messenger/gnunet-service-messenger_message_state.c')
-rw-r--r-- | src/messenger/gnunet-service-messenger_message_state.c | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/messenger/gnunet-service-messenger_message_state.c b/src/messenger/gnunet-service-messenger_message_state.c index b2328588e..112f03032 100644 --- a/src/messenger/gnunet-service-messenger_message_state.c +++ b/src/messenger/gnunet-service-messenger_message_state.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of GNUnet. | 2 | This file is part of GNUnet. |
3 | Copyright (C) 2020--2021 GNUnet e.V. | 3 | Copyright (C) 2020--2023 GNUnet e.V. |
4 | 4 | ||
5 | GNUnet is free software: you can redistribute it and/or modify it | 5 | GNUnet is free software: you can redistribute it and/or modify it |
6 | under the terms of the GNU Affero General Public License as published | 6 | under the terms of the GNU Affero General Public License as published |
@@ -29,35 +29,38 @@ | |||
29 | void | 29 | void |
30 | init_message_state (struct GNUNET_MESSENGER_MessageState *state) | 30 | init_message_state (struct GNUNET_MESSENGER_MessageState *state) |
31 | { | 31 | { |
32 | GNUNET_assert(state); | 32 | GNUNET_assert (state); |
33 | 33 | ||
34 | init_list_messages (&(state->last_messages)); | 34 | init_list_messages (&(state->last_messages)); |
35 | } | 35 | } |
36 | 36 | ||
37 | |||
37 | void | 38 | void |
38 | clear_message_state (struct GNUNET_MESSENGER_MessageState *state) | 39 | clear_message_state (struct GNUNET_MESSENGER_MessageState *state) |
39 | { | 40 | { |
40 | GNUNET_assert(state); | 41 | GNUNET_assert (state); |
41 | 42 | ||
42 | clear_list_messages (&(state->last_messages)); | 43 | clear_list_messages (&(state->last_messages)); |
43 | } | 44 | } |
44 | 45 | ||
46 | |||
45 | void | 47 | void |
46 | get_message_state_chain_hash (const struct GNUNET_MESSENGER_MessageState *state, | 48 | get_message_state_chain_hash (const struct GNUNET_MESSENGER_MessageState *state, |
47 | struct GNUNET_HashCode *hash) | 49 | struct GNUNET_HashCode *hash) |
48 | { | 50 | { |
49 | GNUNET_assert((state) && (hash)); | 51 | GNUNET_assert ((state) && (hash)); |
50 | 52 | ||
51 | if (state->last_messages.head) | 53 | if (state->last_messages.head) |
52 | GNUNET_memcpy(hash, &(state->last_messages.head->hash), sizeof(*hash)); | 54 | GNUNET_memcpy (hash, &(state->last_messages.head->hash), sizeof(*hash)); |
53 | else | 55 | else |
54 | memset (hash, 0, sizeof(*hash)); | 56 | memset (hash, 0, sizeof(*hash)); |
55 | } | 57 | } |
56 | 58 | ||
59 | |||
57 | const struct GNUNET_HashCode* | 60 | const struct GNUNET_HashCode* |
58 | get_message_state_merge_hash (const struct GNUNET_MESSENGER_MessageState *state) | 61 | get_message_state_merge_hash (const struct GNUNET_MESSENGER_MessageState *state) |
59 | { | 62 | { |
60 | GNUNET_assert(state); | 63 | GNUNET_assert (state); |
61 | 64 | ||
62 | if (state->last_messages.head == state->last_messages.tail) | 65 | if (state->last_messages.head == state->last_messages.tail) |
63 | return NULL; | 66 | return NULL; |
@@ -65,13 +68,14 @@ get_message_state_merge_hash (const struct GNUNET_MESSENGER_MessageState *state) | |||
65 | return &(state->last_messages.tail->hash); | 68 | return &(state->last_messages.tail->hash); |
66 | } | 69 | } |
67 | 70 | ||
71 | |||
68 | void | 72 | void |
69 | update_message_state (struct GNUNET_MESSENGER_MessageState *state, | 73 | update_message_state (struct GNUNET_MESSENGER_MessageState *state, |
70 | int requested, | 74 | int requested, |
71 | const struct GNUNET_MESSENGER_Message *message, | 75 | const struct GNUNET_MESSENGER_Message *message, |
72 | const struct GNUNET_HashCode *hash) | 76 | const struct GNUNET_HashCode *hash) |
73 | { | 77 | { |
74 | GNUNET_assert((state) && (message) && (hash)); | 78 | GNUNET_assert ((state) && (message) && (hash)); |
75 | 79 | ||
76 | if ((GNUNET_YES == requested) || | 80 | if ((GNUNET_YES == requested) || |
77 | (GNUNET_MESSENGER_KIND_INFO == message->header.kind) || | 81 | (GNUNET_MESSENGER_KIND_INFO == message->header.kind) || |
@@ -79,36 +83,38 @@ update_message_state (struct GNUNET_MESSENGER_MessageState *state, | |||
79 | return; | 83 | return; |
80 | 84 | ||
81 | if (GNUNET_MESSENGER_KIND_MERGE == message->header.kind) | 85 | if (GNUNET_MESSENGER_KIND_MERGE == message->header.kind) |
82 | remove_from_list_messages(&(state->last_messages), &(message->body.merge.previous)); | 86 | remove_from_list_messages (&(state->last_messages), |
83 | remove_from_list_messages(&(state->last_messages), &(message->header.previous)); | 87 | &(message->body.merge.previous)); |
88 | remove_from_list_messages (&(state->last_messages), | ||
89 | &(message->header.previous)); | ||
84 | 90 | ||
85 | add_to_list_messages (&(state->last_messages), hash); | 91 | add_to_list_messages (&(state->last_messages), hash); |
86 | } | 92 | } |
87 | 93 | ||
94 | |||
88 | void | 95 | void |
89 | load_message_state (struct GNUNET_MESSENGER_MessageState *state, | 96 | load_message_state (struct GNUNET_MESSENGER_MessageState *state, |
90 | const char *path) | 97 | const char *path) |
91 | { | 98 | { |
92 | GNUNET_assert((state) && (path)); | 99 | GNUNET_assert ((state) && (path)); |
93 | 100 | ||
94 | char *last_messages_file; | 101 | char *last_messages_file; |
95 | GNUNET_asprintf (&last_messages_file, "%s%s", path, "last_messages.list"); | 102 | GNUNET_asprintf (&last_messages_file, "%s%s", path, "last_messages.list"); |
96 | 103 | ||
97 | load_list_messages(&(state->last_messages), last_messages_file); | 104 | load_list_messages (&(state->last_messages), last_messages_file); |
98 | GNUNET_free(last_messages_file); | 105 | GNUNET_free (last_messages_file); |
99 | } | 106 | } |
100 | 107 | ||
108 | |||
101 | void | 109 | void |
102 | save_message_state (const struct GNUNET_MESSENGER_MessageState *state, | 110 | save_message_state (const struct GNUNET_MESSENGER_MessageState *state, |
103 | const char *path) | 111 | const char *path) |
104 | { | 112 | { |
105 | GNUNET_assert((state) && (path)); | 113 | GNUNET_assert ((state) && (path)); |
106 | 114 | ||
107 | char *last_messages_file; | 115 | char *last_messages_file; |
108 | GNUNET_asprintf (&last_messages_file, "%s%s", path, "last_messages.list"); | 116 | GNUNET_asprintf (&last_messages_file, "%s%s", path, "last_messages.list"); |
109 | 117 | ||
110 | save_list_messages(&(state->last_messages), last_messages_file); | 118 | save_list_messages (&(state->last_messages), last_messages_file); |
111 | GNUNET_free(last_messages_file); | 119 | GNUNET_free (last_messages_file); |
112 | } | 120 | } |
113 | |||
114 | |||