aboutsummaryrefslogtreecommitdiff
path: root/src/util/pseudonym.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/pseudonym.c')
-rw-r--r--src/util/pseudonym.c282
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 */
79static void 83static void
80internal_notify (const GNUNET_HashCode * id, 84internal_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 */
100int 104int
101GNUNET_PSEUDONYM_discovery_callback_register (const struct 105GNUNET_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 */
122int 127int
123GNUNET_PSEUDONYM_discovery_callback_unregister (GNUNET_PSEUDONYM_Iterator 128GNUNET_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 */
156static char * 161static char *
157get_data_filename (const struct GNUNET_CONFIGURATION_Handle *cfg, 162get_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 */
179static void 185static void
180write_pseudonym_info (const struct GNUNET_CONFIGURATION_Handle *cfg, 186write_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 */
225static int 231static int
226read_info (const struct GNUNET_CONFIGURATION_Handle *cfg, 232read_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 */
287char * 293char *
288GNUNET_PSEUDONYM_id_to_name (const struct GNUNET_CONFIGURATION_Handle *cfg, 294GNUNET_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 */
377int 383int
378GNUNET_PSEUDONYM_name_to_id (const struct GNUNET_CONFIGURATION_Handle *cfg, 384GNUNET_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 */
497int 503int
498GNUNET_PSEUDONYM_list_all (const struct GNUNET_CONFIGURATION_Handle *cfg, 504GNUNET_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 */
526int 532int
527GNUNET_PSEUDONYM_rank (const struct GNUNET_CONFIGURATION_Handle *cfg, 533GNUNET_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 */
559void 565void
560GNUNET_PSEUDONYM_add (const struct GNUNET_CONFIGURATION_Handle *cfg, 566GNUNET_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}