diff options
Diffstat (limited to 'src/util/pseudonym.c')
-rw-r--r-- | src/util/pseudonym.c | 282 |
1 files changed, 144 insertions, 138 deletions
diff --git a/src/util/pseudonym.c b/src/util/pseudonym.c index 85353c6da..b6e51af18 100644 --- a/src/util/pseudonym.c +++ b/src/util/pseudonym.c | |||
@@ -31,6 +31,10 @@ | |||
31 | #include "gnunet_pseudonym_lib.h" | 31 | #include "gnunet_pseudonym_lib.h" |
32 | #include "gnunet_bio_lib.h" | 32 | #include "gnunet_bio_lib.h" |
33 | 33 | ||
34 | #define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__) | ||
35 | |||
36 | #define LOG_STRERROR_FILE(kind,syscall,filename) GNUNET_log_from_strerror_file (kind, "util", syscall, filename) | ||
37 | |||
34 | /** | 38 | /** |
35 | * Name of the directory which stores meta data for pseudonym | 39 | * Name of the directory which stores meta data for pseudonym |
36 | */ | 40 | */ |
@@ -78,16 +82,16 @@ static struct DiscoveryCallback *head; | |||
78 | */ | 82 | */ |
79 | static void | 83 | static void |
80 | internal_notify (const GNUNET_HashCode * id, | 84 | internal_notify (const GNUNET_HashCode * id, |
81 | const struct GNUNET_CONTAINER_MetaData *md, int rating) | 85 | const struct GNUNET_CONTAINER_MetaData *md, int rating) |
82 | { | 86 | { |
83 | struct DiscoveryCallback *pos; | 87 | struct DiscoveryCallback *pos; |
84 | 88 | ||
85 | pos = head; | 89 | pos = head; |
86 | while (pos != NULL) | 90 | while (pos != NULL) |
87 | { | 91 | { |
88 | pos->callback (pos->closure, id, md, rating); | 92 | pos->callback (pos->closure, id, md, rating); |
89 | pos = pos->next; | 93 | pos = pos->next; |
90 | } | 94 | } |
91 | } | 95 | } |
92 | 96 | ||
93 | /** | 97 | /** |
@@ -99,9 +103,10 @@ internal_notify (const GNUNET_HashCode * id, | |||
99 | */ | 103 | */ |
100 | int | 104 | int |
101 | GNUNET_PSEUDONYM_discovery_callback_register (const struct | 105 | GNUNET_PSEUDONYM_discovery_callback_register (const struct |
102 | GNUNET_CONFIGURATION_Handle *cfg, | 106 | GNUNET_CONFIGURATION_Handle |
103 | GNUNET_PSEUDONYM_Iterator | 107 | *cfg, |
104 | iterator, void *closure) | 108 | GNUNET_PSEUDONYM_Iterator |
109 | iterator, void *closure) | ||
105 | { | 110 | { |
106 | struct DiscoveryCallback *list; | 111 | struct DiscoveryCallback *list; |
107 | 112 | ||
@@ -121,7 +126,7 @@ GNUNET_PSEUDONYM_discovery_callback_register (const struct | |||
121 | */ | 126 | */ |
122 | int | 127 | int |
123 | GNUNET_PSEUDONYM_discovery_callback_unregister (GNUNET_PSEUDONYM_Iterator | 128 | GNUNET_PSEUDONYM_discovery_callback_unregister (GNUNET_PSEUDONYM_Iterator |
124 | iterator, void *closure) | 129 | iterator, void *closure) |
125 | { | 130 | { |
126 | struct DiscoveryCallback *prev; | 131 | struct DiscoveryCallback *prev; |
127 | struct DiscoveryCallback *pos; | 132 | struct DiscoveryCallback *pos; |
@@ -129,11 +134,11 @@ GNUNET_PSEUDONYM_discovery_callback_unregister (GNUNET_PSEUDONYM_Iterator | |||
129 | prev = NULL; | 134 | prev = NULL; |
130 | pos = head; | 135 | pos = head; |
131 | while ((pos != NULL) && | 136 | while ((pos != NULL) && |
132 | ((pos->callback != iterator) || (pos->closure != closure))) | 137 | ((pos->callback != iterator) || (pos->closure != closure))) |
133 | { | 138 | { |
134 | prev = pos; | 139 | prev = pos; |
135 | pos = pos->next; | 140 | pos = pos->next; |
136 | } | 141 | } |
137 | if (pos == NULL) | 142 | if (pos == NULL) |
138 | return GNUNET_SYSERR; | 143 | return GNUNET_SYSERR; |
139 | if (prev == NULL) | 144 | if (prev == NULL) |
@@ -155,16 +160,17 @@ GNUNET_PSEUDONYM_discovery_callback_unregister (GNUNET_PSEUDONYM_Iterator | |||
155 | */ | 160 | */ |
156 | static char * | 161 | static char * |
157 | get_data_filename (const struct GNUNET_CONFIGURATION_Handle *cfg, | 162 | get_data_filename (const struct GNUNET_CONFIGURATION_Handle *cfg, |
158 | const char *prefix, const GNUNET_HashCode * psid) | 163 | const char *prefix, const GNUNET_HashCode * psid) |
159 | { | 164 | { |
160 | struct GNUNET_CRYPTO_HashAsciiEncoded enc; | 165 | struct GNUNET_CRYPTO_HashAsciiEncoded enc; |
161 | 166 | ||
162 | if (psid != NULL) | 167 | if (psid != NULL) |
163 | GNUNET_CRYPTO_hash_to_enc (psid, &enc); | 168 | GNUNET_CRYPTO_hash_to_enc (psid, &enc); |
164 | return GNUNET_DISK_get_home_filename (cfg, GNUNET_CLIENT_SERVICE_NAME, prefix, | 169 | return GNUNET_DISK_get_home_filename (cfg, GNUNET_CLIENT_SERVICE_NAME, |
165 | (psid == | 170 | prefix, |
166 | NULL) ? NULL : (const char *) &enc, | 171 | (psid == |
167 | NULL); | 172 | NULL) ? NULL : (const char *) &enc, |
173 | NULL); | ||
168 | } | 174 | } |
169 | 175 | ||
170 | 176 | ||
@@ -178,9 +184,9 @@ get_data_filename (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
178 | */ | 184 | */ |
179 | static void | 185 | static void |
180 | write_pseudonym_info (const struct GNUNET_CONFIGURATION_Handle *cfg, | 186 | write_pseudonym_info (const struct GNUNET_CONFIGURATION_Handle *cfg, |
181 | const GNUNET_HashCode * nsid, | 187 | const GNUNET_HashCode * nsid, |
182 | const struct GNUNET_CONTAINER_MetaData *meta, | 188 | const struct GNUNET_CONTAINER_MetaData *meta, |
183 | int32_t ranking, const char *ns_name) | 189 | int32_t ranking, const char *ns_name) |
184 | { | 190 | { |
185 | char *fn; | 191 | char *fn; |
186 | struct GNUNET_BIO_WriteHandle *fileW; | 192 | struct GNUNET_BIO_WriteHandle *fileW; |
@@ -189,23 +195,23 @@ write_pseudonym_info (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
189 | GNUNET_assert (fn != NULL); | 195 | GNUNET_assert (fn != NULL); |
190 | fileW = GNUNET_BIO_write_open (fn); | 196 | fileW = GNUNET_BIO_write_open (fn); |
191 | if (NULL != fileW) | 197 | if (NULL != fileW) |
192 | { | ||
193 | if ((GNUNET_OK != GNUNET_BIO_write_int32 (fileW, ranking)) || | ||
194 | (GNUNET_OK != GNUNET_BIO_write_string (fileW, ns_name)) || | ||
195 | (GNUNET_OK != GNUNET_BIO_write_meta_data (fileW, meta))) | ||
196 | { | 198 | { |
197 | (void) GNUNET_BIO_write_close (fileW); | 199 | if ((GNUNET_OK != GNUNET_BIO_write_int32 (fileW, ranking)) || |
198 | GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fn)); | 200 | (GNUNET_OK != GNUNET_BIO_write_string (fileW, ns_name)) || |
199 | GNUNET_free (fn); | 201 | (GNUNET_OK != GNUNET_BIO_write_meta_data (fileW, meta))) |
200 | return; | 202 | { |
201 | } | 203 | (void) GNUNET_BIO_write_close (fileW); |
202 | if (GNUNET_OK != GNUNET_BIO_write_close (fileW)) | 204 | GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fn)); |
203 | { | 205 | GNUNET_free (fn); |
204 | GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fn)); | 206 | return; |
205 | GNUNET_free (fn); | 207 | } |
206 | return; | 208 | if (GNUNET_OK != GNUNET_BIO_write_close (fileW)) |
209 | { | ||
210 | GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fn)); | ||
211 | GNUNET_free (fn); | ||
212 | return; | ||
213 | } | ||
207 | } | 214 | } |
208 | } | ||
209 | GNUNET_free (fn); | 215 | GNUNET_free (fn); |
210 | /* create entry for pseudonym name in names */ | 216 | /* create entry for pseudonym name in names */ |
211 | /* FIXME: 90% of what this call does is not needed | 217 | /* FIXME: 90% of what this call does is not needed |
@@ -224,9 +230,9 @@ write_pseudonym_info (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
224 | */ | 230 | */ |
225 | static int | 231 | static int |
226 | read_info (const struct GNUNET_CONFIGURATION_Handle *cfg, | 232 | read_info (const struct GNUNET_CONFIGURATION_Handle *cfg, |
227 | const GNUNET_HashCode * nsid, | 233 | const GNUNET_HashCode * nsid, |
228 | struct GNUNET_CONTAINER_MetaData **meta, int32_t * ranking, | 234 | struct GNUNET_CONTAINER_MetaData **meta, int32_t * ranking, |
229 | char **ns_name) | 235 | char **ns_name) |
230 | { | 236 | { |
231 | char *fn; | 237 | char *fn; |
232 | char *emsg; | 238 | char *emsg; |
@@ -236,10 +242,10 @@ read_info (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
236 | GNUNET_assert (fn != NULL); | 242 | GNUNET_assert (fn != NULL); |
237 | fileR = GNUNET_BIO_read_open (fn); | 243 | fileR = GNUNET_BIO_read_open (fn); |
238 | if (fileR == NULL) | 244 | if (fileR == NULL) |
239 | { | 245 | { |
240 | GNUNET_free (fn); | 246 | GNUNET_free (fn); |
241 | return GNUNET_SYSERR; | 247 | return GNUNET_SYSERR; |
242 | } | 248 | } |
243 | emsg = NULL; | 249 | emsg = NULL; |
244 | *ns_name = NULL; | 250 | *ns_name = NULL; |
245 | if ((GNUNET_OK != GNUNET_BIO_read_int32 (fileR, ranking)) || | 251 | if ((GNUNET_OK != GNUNET_BIO_read_int32 (fileR, ranking)) || |
@@ -247,30 +253,30 @@ read_info (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
247 | GNUNET_BIO_read_string (fileR, "Read string error!", ns_name, 200)) || | 253 | GNUNET_BIO_read_string (fileR, "Read string error!", ns_name, 200)) || |
248 | (GNUNET_OK != | 254 | (GNUNET_OK != |
249 | GNUNET_BIO_read_meta_data (fileR, "Read meta data error!", meta))) | 255 | GNUNET_BIO_read_meta_data (fileR, "Read meta data error!", meta))) |
250 | { | 256 | { |
251 | (void) GNUNET_BIO_read_close (fileR, &emsg); | 257 | (void) GNUNET_BIO_read_close (fileR, &emsg); |
252 | GNUNET_free_non_null (emsg); | 258 | GNUNET_free_non_null (emsg); |
253 | GNUNET_free_non_null (*ns_name); | 259 | GNUNET_free_non_null (*ns_name); |
254 | *ns_name = NULL; | 260 | *ns_name = NULL; |
255 | GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fn)); | 261 | GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fn)); |
256 | GNUNET_free (fn); | 262 | GNUNET_free (fn); |
257 | return GNUNET_SYSERR; | 263 | return GNUNET_SYSERR; |
258 | } | 264 | } |
259 | if (GNUNET_OK != GNUNET_BIO_read_close (fileR, &emsg)) | 265 | if (GNUNET_OK != GNUNET_BIO_read_close (fileR, &emsg)) |
260 | { | 266 | { |
261 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 267 | LOG (GNUNET_ERROR_TYPE_WARNING, |
262 | _ | 268 | _ |
263 | ("Failed to parse metadata about pseudonym from file `%s': %s\n"), | 269 | ("Failed to parse metadata about pseudonym from file `%s': %s\n"), |
264 | fn, emsg); | 270 | fn, emsg); |
265 | GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fn)); | 271 | GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fn)); |
266 | GNUNET_CONTAINER_meta_data_destroy (*meta); | 272 | GNUNET_CONTAINER_meta_data_destroy (*meta); |
267 | *meta = NULL; | 273 | *meta = NULL; |
268 | GNUNET_free_non_null (*ns_name); | 274 | GNUNET_free_non_null (*ns_name); |
269 | *ns_name = NULL; | 275 | *ns_name = NULL; |
270 | GNUNET_free_non_null (emsg); | 276 | GNUNET_free_non_null (emsg); |
271 | GNUNET_free (fn); | 277 | GNUNET_free (fn); |
272 | return GNUNET_SYSERR; | 278 | return GNUNET_SYSERR; |
273 | } | 279 | } |
274 | GNUNET_free (fn); | 280 | GNUNET_free (fn); |
275 | return GNUNET_OK; | 281 | return GNUNET_OK; |
276 | } | 282 | } |
@@ -286,7 +292,7 @@ read_info (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
286 | */ | 292 | */ |
287 | char * | 293 | char * |
288 | GNUNET_PSEUDONYM_id_to_name (const struct GNUNET_CONFIGURATION_Handle *cfg, | 294 | GNUNET_PSEUDONYM_id_to_name (const struct GNUNET_CONFIGURATION_Handle *cfg, |
289 | const GNUNET_HashCode * nsid) | 295 | const GNUNET_HashCode * nsid) |
290 | { | 296 | { |
291 | struct GNUNET_CONTAINER_MetaData *meta; | 297 | struct GNUNET_CONTAINER_MetaData *meta; |
292 | char *name; | 298 | char *name; |
@@ -304,25 +310,25 @@ GNUNET_PSEUDONYM_id_to_name (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
304 | meta = NULL; | 310 | meta = NULL; |
305 | name = NULL; | 311 | name = NULL; |
306 | if (GNUNET_OK == read_info (cfg, nsid, &meta, rank, &name)) | 312 | if (GNUNET_OK == read_info (cfg, nsid, &meta, rank, &name)) |
307 | { | ||
308 | if ((meta != NULL) && (name == NULL)) | ||
309 | name = | ||
310 | GNUNET_CONTAINER_meta_data_get_first_by_types (meta, | ||
311 | EXTRACTOR_METATYPE_TITLE, | ||
312 | EXTRACTOR_METATYPE_FILENAME, | ||
313 | EXTRACTOR_METATYPE_DESCRIPTION, | ||
314 | EXTRACTOR_METATYPE_SUBJECT, | ||
315 | EXTRACTOR_METATYPE_PUBLISHER, | ||
316 | EXTRACTOR_METATYPE_AUTHOR_NAME, | ||
317 | EXTRACTOR_METATYPE_COMMENT, | ||
318 | EXTRACTOR_METATYPE_SUMMARY, | ||
319 | -1); | ||
320 | if (meta != NULL) | ||
321 | { | 313 | { |
322 | GNUNET_CONTAINER_meta_data_destroy (meta); | 314 | if ((meta != NULL) && (name == NULL)) |
323 | meta = NULL; | 315 | name = |
316 | GNUNET_CONTAINER_meta_data_get_first_by_types (meta, | ||
317 | EXTRACTOR_METATYPE_TITLE, | ||
318 | EXTRACTOR_METATYPE_FILENAME, | ||
319 | EXTRACTOR_METATYPE_DESCRIPTION, | ||
320 | EXTRACTOR_METATYPE_SUBJECT, | ||
321 | EXTRACTOR_METATYPE_PUBLISHER, | ||
322 | EXTRACTOR_METATYPE_AUTHOR_NAME, | ||
323 | EXTRACTOR_METATYPE_COMMENT, | ||
324 | EXTRACTOR_METATYPE_SUMMARY, | ||
325 | -1); | ||
326 | if (meta != NULL) | ||
327 | { | ||
328 | GNUNET_CONTAINER_meta_data_destroy (meta); | ||
329 | meta = NULL; | ||
330 | } | ||
324 | } | 331 | } |
325 | } | ||
326 | if (name == NULL) | 332 | if (name == NULL) |
327 | name = GNUNET_strdup (_("no-name")); | 333 | name = GNUNET_strdup (_("no-name")); |
328 | GNUNET_CRYPTO_hash (name, strlen (name), &nh); | 334 | GNUNET_CRYPTO_hash (name, strlen (name), &nh); |
@@ -333,31 +339,31 @@ GNUNET_PSEUDONYM_id_to_name (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
333 | if (0 == STAT (fn, &sbuf)) | 339 | if (0 == STAT (fn, &sbuf)) |
334 | GNUNET_DISK_file_size (fn, &len, GNUNET_YES); | 340 | GNUNET_DISK_file_size (fn, &len, GNUNET_YES); |
335 | fh = GNUNET_DISK_file_open (fn, | 341 | fh = GNUNET_DISK_file_open (fn, |
336 | GNUNET_DISK_OPEN_CREATE | | 342 | GNUNET_DISK_OPEN_CREATE | |
337 | GNUNET_DISK_OPEN_READWRITE, | 343 | GNUNET_DISK_OPEN_READWRITE, |
338 | GNUNET_DISK_PERM_USER_READ | | 344 | GNUNET_DISK_PERM_USER_READ | |
339 | GNUNET_DISK_PERM_USER_WRITE); | 345 | GNUNET_DISK_PERM_USER_WRITE); |
340 | i = 0; | 346 | i = 0; |
341 | idx = -1; | 347 | idx = -1; |
342 | while ((len >= sizeof (GNUNET_HashCode)) && | 348 | while ((len >= sizeof (GNUNET_HashCode)) && |
343 | (sizeof (GNUNET_HashCode) == | 349 | (sizeof (GNUNET_HashCode) == |
344 | GNUNET_DISK_file_read (fh, &nh, sizeof (GNUNET_HashCode)))) | 350 | GNUNET_DISK_file_read (fh, &nh, sizeof (GNUNET_HashCode)))) |
345 | { | ||
346 | if (0 == memcmp (&nh, nsid, sizeof (GNUNET_HashCode))) | ||
347 | { | 351 | { |
348 | idx = i; | 352 | if (0 == memcmp (&nh, nsid, sizeof (GNUNET_HashCode))) |
349 | break; | 353 | { |
354 | idx = i; | ||
355 | break; | ||
356 | } | ||
357 | i++; | ||
358 | len -= sizeof (GNUNET_HashCode); | ||
350 | } | 359 | } |
351 | i++; | ||
352 | len -= sizeof (GNUNET_HashCode); | ||
353 | } | ||
354 | if (idx == -1) | 360 | if (idx == -1) |
355 | { | 361 | { |
356 | idx = i; | 362 | idx = i; |
357 | if (sizeof (GNUNET_HashCode) != | 363 | if (sizeof (GNUNET_HashCode) != |
358 | GNUNET_DISK_file_write (fh, nsid, sizeof (GNUNET_HashCode))) | 364 | GNUNET_DISK_file_write (fh, nsid, sizeof (GNUNET_HashCode))) |
359 | GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "write", fn); | 365 | LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "write", fn); |
360 | } | 366 | } |
361 | GNUNET_DISK_file_close (fh); | 367 | GNUNET_DISK_file_close (fh); |
362 | ret = GNUNET_malloc (strlen (name) + 32); | 368 | ret = GNUNET_malloc (strlen (name) + 32); |
363 | GNUNET_snprintf (ret, strlen (name) + 32, "%s-%u", name, idx); | 369 | GNUNET_snprintf (ret, strlen (name) + 32, "%s-%u", name, idx); |
@@ -376,7 +382,7 @@ GNUNET_PSEUDONYM_id_to_name (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
376 | */ | 382 | */ |
377 | int | 383 | int |
378 | GNUNET_PSEUDONYM_name_to_id (const struct GNUNET_CONFIGURATION_Handle *cfg, | 384 | GNUNET_PSEUDONYM_name_to_id (const struct GNUNET_CONFIGURATION_Handle *cfg, |
379 | const char *ns_uname, GNUNET_HashCode * nsid) | 385 | const char *ns_uname, GNUNET_HashCode * nsid) |
380 | { | 386 | { |
381 | size_t slen; | 387 | size_t slen; |
382 | uint64_t len; | 388 | uint64_t len; |
@@ -402,24 +408,24 @@ GNUNET_PSEUDONYM_name_to_id (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
402 | if ((GNUNET_OK != GNUNET_DISK_file_test (fn) || | 408 | if ((GNUNET_OK != GNUNET_DISK_file_test (fn) || |
403 | (GNUNET_OK != GNUNET_DISK_file_size (fn, &len, GNUNET_YES))) || | 409 | (GNUNET_OK != GNUNET_DISK_file_size (fn, &len, GNUNET_YES))) || |
404 | ((idx + 1) * sizeof (GNUNET_HashCode) > len)) | 410 | ((idx + 1) * sizeof (GNUNET_HashCode) > len)) |
405 | { | 411 | { |
406 | GNUNET_free (fn); | 412 | GNUNET_free (fn); |
407 | return GNUNET_SYSERR; | 413 | return GNUNET_SYSERR; |
408 | } | 414 | } |
409 | fh = GNUNET_DISK_file_open (fn, | 415 | fh = GNUNET_DISK_file_open (fn, |
410 | GNUNET_DISK_OPEN_CREATE | | 416 | GNUNET_DISK_OPEN_CREATE | |
411 | GNUNET_DISK_OPEN_READWRITE, | 417 | GNUNET_DISK_OPEN_READWRITE, |
412 | GNUNET_DISK_PERM_USER_READ | | 418 | GNUNET_DISK_PERM_USER_READ | |
413 | GNUNET_DISK_PERM_USER_WRITE); | 419 | GNUNET_DISK_PERM_USER_WRITE); |
414 | GNUNET_free (fn); | 420 | GNUNET_free (fn); |
415 | GNUNET_DISK_file_seek (fh, idx * sizeof (GNUNET_HashCode), | 421 | GNUNET_DISK_file_seek (fh, idx * sizeof (GNUNET_HashCode), |
416 | GNUNET_DISK_SEEK_SET); | 422 | GNUNET_DISK_SEEK_SET); |
417 | if (sizeof (GNUNET_HashCode) != | 423 | if (sizeof (GNUNET_HashCode) != |
418 | GNUNET_DISK_file_read (fh, nsid, sizeof (GNUNET_HashCode))) | 424 | GNUNET_DISK_file_read (fh, nsid, sizeof (GNUNET_HashCode))) |
419 | { | 425 | { |
420 | GNUNET_DISK_file_close (fh); | 426 | GNUNET_DISK_file_close (fh); |
421 | return GNUNET_SYSERR; | 427 | return GNUNET_SYSERR; |
422 | } | 428 | } |
423 | GNUNET_DISK_file_close (fh); | 429 | GNUNET_DISK_file_close (fh); |
424 | return GNUNET_OK; | 430 | return GNUNET_OK; |
425 | } | 431 | } |
@@ -469,15 +475,15 @@ list_pseudonym_helper (void *cls, const char *fullname) | |||
469 | if (strlen (fullname) < sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)) | 475 | if (strlen (fullname) < sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)) |
470 | return GNUNET_OK; | 476 | return GNUNET_OK; |
471 | fn = &fullname[strlen (fullname) + 1 - | 477 | fn = &fullname[strlen (fullname) + 1 - |
472 | sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)]; | 478 | sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)]; |
473 | if (fn[-1] != DIR_SEPARATOR) | 479 | if (fn[-1] != DIR_SEPARATOR) |
474 | return GNUNET_OK; | 480 | return GNUNET_OK; |
475 | ret = GNUNET_OK; | 481 | ret = GNUNET_OK; |
476 | if (GNUNET_OK != GNUNET_CRYPTO_hash_from_string (fn, &id)) | 482 | if (GNUNET_OK != GNUNET_CRYPTO_hash_from_string (fn, &id)) |
477 | return GNUNET_OK; /* invalid name */ | 483 | return GNUNET_OK; /* invalid name */ |
478 | str = NULL; | 484 | str = NULL; |
479 | if (GNUNET_OK != read_info (c->cfg, &id, &meta, &rating, &str)) | 485 | if (GNUNET_OK != read_info (c->cfg, &id, &meta, &rating, &str)) |
480 | return GNUNET_OK; /* ignore entry */ | 486 | return GNUNET_OK; /* ignore entry */ |
481 | GNUNET_free_non_null (str); | 487 | GNUNET_free_non_null (str); |
482 | if (c->iterator != NULL) | 488 | if (c->iterator != NULL) |
483 | ret = c->iterator (c->closure, &id, meta, rating); | 489 | ret = c->iterator (c->closure, &id, meta, rating); |
@@ -496,7 +502,7 @@ list_pseudonym_helper (void *cls, const char *fullname) | |||
496 | */ | 502 | */ |
497 | int | 503 | int |
498 | GNUNET_PSEUDONYM_list_all (const struct GNUNET_CONFIGURATION_Handle *cfg, | 504 | GNUNET_PSEUDONYM_list_all (const struct GNUNET_CONFIGURATION_Handle *cfg, |
499 | GNUNET_PSEUDONYM_Iterator iterator, void *closure) | 505 | GNUNET_PSEUDONYM_Iterator iterator, void *closure) |
500 | { | 506 | { |
501 | struct ListPseudonymClosure cls; | 507 | struct ListPseudonymClosure cls; |
502 | char *fn; | 508 | char *fn; |
@@ -525,7 +531,7 @@ GNUNET_PSEUDONYM_list_all (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
525 | */ | 531 | */ |
526 | int | 532 | int |
527 | GNUNET_PSEUDONYM_rank (const struct GNUNET_CONFIGURATION_Handle *cfg, | 533 | GNUNET_PSEUDONYM_rank (const struct GNUNET_CONFIGURATION_Handle *cfg, |
528 | const GNUNET_HashCode * nsid, int delta) | 534 | const GNUNET_HashCode * nsid, int delta) |
529 | { | 535 | { |
530 | struct GNUNET_CONTAINER_MetaData *meta; | 536 | struct GNUNET_CONTAINER_MetaData *meta; |
531 | int ret; | 537 | int ret; |
@@ -535,10 +541,10 @@ GNUNET_PSEUDONYM_rank (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
535 | name = NULL; | 541 | name = NULL; |
536 | ret = read_info (cfg, nsid, &meta, &ranking, &name); | 542 | ret = read_info (cfg, nsid, &meta, &ranking, &name); |
537 | if (ret == GNUNET_SYSERR) | 543 | if (ret == GNUNET_SYSERR) |
538 | { | 544 | { |
539 | ranking = 0; | 545 | ranking = 0; |
540 | meta = GNUNET_CONTAINER_meta_data_create (); | 546 | meta = GNUNET_CONTAINER_meta_data_create (); |
541 | } | 547 | } |
542 | ranking += delta; | 548 | ranking += delta; |
543 | write_pseudonym_info (cfg, nsid, meta, ranking, name); | 549 | write_pseudonym_info (cfg, nsid, meta, ranking, name); |
544 | GNUNET_CONTAINER_meta_data_destroy (meta); | 550 | GNUNET_CONTAINER_meta_data_destroy (meta); |
@@ -558,8 +564,8 @@ GNUNET_PSEUDONYM_rank (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
558 | */ | 564 | */ |
559 | void | 565 | void |
560 | GNUNET_PSEUDONYM_add (const struct GNUNET_CONFIGURATION_Handle *cfg, | 566 | GNUNET_PSEUDONYM_add (const struct GNUNET_CONFIGURATION_Handle *cfg, |
561 | const GNUNET_HashCode * id, | 567 | const GNUNET_HashCode * id, |
562 | const struct GNUNET_CONTAINER_MetaData *meta) | 568 | const struct GNUNET_CONTAINER_MetaData *meta) |
563 | { | 569 | { |
564 | char *name; | 570 | char *name; |
565 | int32_t ranking; | 571 | int32_t ranking; |
@@ -573,16 +579,16 @@ GNUNET_PSEUDONYM_add (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
573 | 579 | ||
574 | if ((0 == STAT (fn, &sbuf)) && | 580 | if ((0 == STAT (fn, &sbuf)) && |
575 | (GNUNET_OK == read_info (cfg, id, &old, &ranking, &name))) | 581 | (GNUNET_OK == read_info (cfg, id, &old, &ranking, &name))) |
576 | { | 582 | { |
577 | GNUNET_CONTAINER_meta_data_merge (old, meta); | 583 | GNUNET_CONTAINER_meta_data_merge (old, meta); |
578 | write_pseudonym_info (cfg, id, old, ranking, name); | 584 | write_pseudonym_info (cfg, id, old, ranking, name); |
579 | GNUNET_CONTAINER_meta_data_destroy (old); | 585 | GNUNET_CONTAINER_meta_data_destroy (old); |
580 | GNUNET_free_non_null (name); | 586 | GNUNET_free_non_null (name); |
581 | } | 587 | } |
582 | else | 588 | else |
583 | { | 589 | { |
584 | write_pseudonym_info (cfg, id, meta, ranking, NULL); | 590 | write_pseudonym_info (cfg, id, meta, ranking, NULL); |
585 | } | 591 | } |
586 | GNUNET_free (fn); | 592 | GNUNET_free (fn); |
587 | internal_notify (id, meta, ranking); | 593 | internal_notify (id, meta, ranking); |
588 | } | 594 | } |