diff options
Diffstat (limited to 'src/rps/gnunet-service-rps_sampler_elem.c')
-rw-r--r-- | src/rps/gnunet-service-rps_sampler_elem.c | 97 |
1 files changed, 49 insertions, 48 deletions
diff --git a/src/rps/gnunet-service-rps_sampler_elem.c b/src/rps/gnunet-service-rps_sampler_elem.c index 6d5305f03..17b3be6d2 100644 --- a/src/rps/gnunet-service-rps_sampler_elem.c +++ b/src/rps/gnunet-service-rps_sampler_elem.c | |||
@@ -32,7 +32,7 @@ | |||
32 | 32 | ||
33 | #include "rps-test_util.h" | 33 | #include "rps-test_util.h" |
34 | 34 | ||
35 | #define LOG(kind, ...) GNUNET_log_from(kind, "rps-sampler_elem", __VA_ARGS__) | 35 | #define LOG(kind, ...) GNUNET_log_from (kind, "rps-sampler_elem", __VA_ARGS__) |
36 | 36 | ||
37 | 37 | ||
38 | /*********************************************************************** | 38 | /*********************************************************************** |
@@ -47,18 +47,18 @@ | |||
47 | * @param sampler_el The sampler element to (re-) initialise | 47 | * @param sampler_el The sampler element to (re-) initialise |
48 | */ | 48 | */ |
49 | void | 49 | void |
50 | RPS_sampler_elem_reinit(struct RPS_SamplerElement *sampler_elem) | 50 | RPS_sampler_elem_reinit (struct RPS_SamplerElement *sampler_elem) |
51 | { | 51 | { |
52 | sampler_elem->is_empty = EMPTY; | 52 | sampler_elem->is_empty = EMPTY; |
53 | 53 | ||
54 | // I guess I don't need to call GNUNET_CRYPTO_hmac_derive_key()... | 54 | // I guess I don't need to call GNUNET_CRYPTO_hmac_derive_key()... |
55 | GNUNET_CRYPTO_random_block(GNUNET_CRYPTO_QUALITY_STRONG, | 55 | GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_STRONG, |
56 | &(sampler_elem->auth_key.key), | 56 | &(sampler_elem->auth_key.key), |
57 | GNUNET_CRYPTO_HASH_LENGTH); | 57 | GNUNET_CRYPTO_HASH_LENGTH); |
58 | 58 | ||
59 | sampler_elem->last_client_request = GNUNET_TIME_UNIT_FOREVER_ABS; | 59 | sampler_elem->last_client_request = GNUNET_TIME_UNIT_FOREVER_ABS; |
60 | 60 | ||
61 | sampler_elem->birth = GNUNET_TIME_absolute_get(); | 61 | sampler_elem->birth = GNUNET_TIME_absolute_get (); |
62 | sampler_elem->num_peers = 0; | 62 | sampler_elem->num_peers = 0; |
63 | sampler_elem->num_change = 0; | 63 | sampler_elem->num_change = 0; |
64 | } | 64 | } |
@@ -73,13 +73,13 @@ RPS_sampler_elem_reinit(struct RPS_SamplerElement *sampler_elem) | |||
73 | * @return a newly created RPS_SamplerElement which currently holds no id. | 73 | * @return a newly created RPS_SamplerElement which currently holds no id. |
74 | */ | 74 | */ |
75 | struct RPS_SamplerElement * | 75 | struct RPS_SamplerElement * |
76 | RPS_sampler_elem_create(void) | 76 | RPS_sampler_elem_create (void) |
77 | { | 77 | { |
78 | struct RPS_SamplerElement *s; | 78 | struct RPS_SamplerElement *s; |
79 | 79 | ||
80 | s = GNUNET_new(struct RPS_SamplerElement); | 80 | s = GNUNET_new (struct RPS_SamplerElement); |
81 | 81 | ||
82 | RPS_sampler_elem_reinit(s); | 82 | RPS_sampler_elem_reinit (s); |
83 | 83 | ||
84 | return s; | 84 | return s; |
85 | } | 85 | } |
@@ -91,9 +91,9 @@ RPS_sampler_elem_create(void) | |||
91 | * @param sampler_elem the element to destroy | 91 | * @param sampler_elem the element to destroy |
92 | */ | 92 | */ |
93 | void | 93 | void |
94 | RPS_sampler_elem_destroy(struct RPS_SamplerElement *sampler_elem) | 94 | RPS_sampler_elem_destroy (struct RPS_SamplerElement *sampler_elem) |
95 | { | 95 | { |
96 | GNUNET_free(sampler_elem); | 96 | GNUNET_free (sampler_elem); |
97 | } | 97 | } |
98 | 98 | ||
99 | 99 | ||
@@ -104,50 +104,51 @@ RPS_sampler_elem_destroy(struct RPS_SamplerElement *sampler_elem) | |||
104 | * @param new_ID The PeerID to update with | 104 | * @param new_ID The PeerID to update with |
105 | */ | 105 | */ |
106 | void | 106 | void |
107 | RPS_sampler_elem_next(struct RPS_SamplerElement *sampler_elem, | 107 | RPS_sampler_elem_next (struct RPS_SamplerElement *sampler_elem, |
108 | const struct GNUNET_PeerIdentity *new_ID) | 108 | const struct GNUNET_PeerIdentity *new_ID) |
109 | { | 109 | { |
110 | struct GNUNET_HashCode other_hash; | 110 | struct GNUNET_HashCode other_hash; |
111 | 111 | ||
112 | sampler_elem->num_peers++; | 112 | sampler_elem->num_peers++; |
113 | 113 | ||
114 | if (0 == GNUNET_memcmp(new_ID, &(sampler_elem->peer_id))) | 114 | if (0 == GNUNET_memcmp (new_ID, &(sampler_elem->peer_id))) |
115 | { | ||
116 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Have already PeerID %s\n", | ||
117 | GNUNET_i2s (&(sampler_elem->peer_id))); | ||
118 | } | ||
119 | else | ||
120 | { | ||
121 | GNUNET_CRYPTO_hmac (&sampler_elem->auth_key, | ||
122 | new_ID, | ||
123 | sizeof(struct GNUNET_PeerIdentity), | ||
124 | &other_hash); | ||
125 | |||
126 | if (EMPTY == sampler_elem->is_empty) | ||
115 | { | 127 | { |
116 | LOG(GNUNET_ERROR_TYPE_DEBUG, "Have already PeerID %s\n", | 128 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
117 | GNUNET_i2s(&(sampler_elem->peer_id))); | 129 | "Got PeerID %s; Simply accepting (was empty previously).\n", |
130 | GNUNET_i2s (new_ID)); | ||
131 | sampler_elem->peer_id = *new_ID; | ||
132 | sampler_elem->peer_id_hash = other_hash; | ||
133 | |||
134 | sampler_elem->num_change++; | ||
118 | } | 135 | } |
119 | else | 136 | else if (0 > GNUNET_CRYPTO_hash_cmp (&other_hash, |
137 | &sampler_elem->peer_id_hash)) | ||
138 | { | ||
139 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Discarding old PeerID %s\n", | ||
140 | GNUNET_i2s (&sampler_elem->peer_id)); | ||
141 | sampler_elem->peer_id = *new_ID; | ||
142 | sampler_elem->peer_id_hash = other_hash; | ||
143 | |||
144 | sampler_elem->num_change++; | ||
145 | } | ||
146 | else | ||
120 | { | 147 | { |
121 | GNUNET_CRYPTO_hmac(&sampler_elem->auth_key, | 148 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Keeping old PeerID %s\n", |
122 | new_ID, | 149 | GNUNET_i2s (&sampler_elem->peer_id)); |
123 | sizeof(struct GNUNET_PeerIdentity), | ||
124 | &other_hash); | ||
125 | |||
126 | if (EMPTY == sampler_elem->is_empty) | ||
127 | { | ||
128 | LOG(GNUNET_ERROR_TYPE_DEBUG, | ||
129 | "Got PeerID %s; Simply accepting (was empty previously).\n", | ||
130 | GNUNET_i2s(new_ID)); | ||
131 | sampler_elem->peer_id = *new_ID; | ||
132 | sampler_elem->peer_id_hash = other_hash; | ||
133 | |||
134 | sampler_elem->num_change++; | ||
135 | } | ||
136 | else if (0 > GNUNET_CRYPTO_hash_cmp(&other_hash, &sampler_elem->peer_id_hash)) | ||
137 | { | ||
138 | LOG(GNUNET_ERROR_TYPE_DEBUG, "Discarding old PeerID %s\n", | ||
139 | GNUNET_i2s(&sampler_elem->peer_id)); | ||
140 | sampler_elem->peer_id = *new_ID; | ||
141 | sampler_elem->peer_id_hash = other_hash; | ||
142 | |||
143 | sampler_elem->num_change++; | ||
144 | } | ||
145 | else | ||
146 | { | ||
147 | LOG(GNUNET_ERROR_TYPE_DEBUG, "Keeping old PeerID %s\n", | ||
148 | GNUNET_i2s(&sampler_elem->peer_id)); | ||
149 | } | ||
150 | } | 150 | } |
151 | } | ||
151 | sampler_elem->is_empty = NOT_EMPTY; | 152 | sampler_elem->is_empty = NOT_EMPTY; |
152 | } | 153 | } |
153 | 154 | ||
@@ -158,8 +159,8 @@ RPS_sampler_elem_next(struct RPS_SamplerElement *sampler_elem, | |||
158 | * @param auth_key the key to use | 159 | * @param auth_key the key to use |
159 | */ | 160 | */ |
160 | void | 161 | void |
161 | RPS_sampler_elem_set(struct RPS_SamplerElement *sampler_elem, | 162 | RPS_sampler_elem_set (struct RPS_SamplerElement *sampler_elem, |
162 | struct GNUNET_CRYPTO_AuthKey auth_key) | 163 | struct GNUNET_CRYPTO_AuthKey auth_key) |
163 | { | 164 | { |
164 | sampler_elem->auth_key = auth_key; | 165 | sampler_elem->auth_key = auth_key; |
165 | } | 166 | } |