/*
This file is part of GNUnet.
- Copyright (C) 2004, 2009 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2004, 2009 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
#include "gnunet_util_lib.h"
#include "gnunet_peerinfo_service.h"
#include "gnunet_testing_lib.h"
-#include "peerinfo.h"
+
static struct GNUNET_PEERINFO_IteratorContext *ic;
static struct GNUNET_PEERINFO_Handle *h;
+static struct GNUNET_PeerIdentity pid;
+
static unsigned int retries;
static int global_ret;
+
static ssize_t
-address_generator (void *cls, size_t max, void *buf)
+address_generator (void *cls,
+ size_t max,
+ void *buf)
{
size_t *agc = cls;
ssize_t ret;
if (0 == *agc)
return GNUNET_SYSERR; /* Done */
- memset (&address.peer, 0, sizeof (struct GNUNET_PeerIdentity));
+ memset (&address.peer,
+ 0,
+ sizeof (struct GNUNET_PeerIdentity));
address.address = "Address";
address.transport_name = "peerinfotest";
address.address_length = *agc;
- ret =
- GNUNET_HELLO_add_address (&address,
- GNUNET_TIME_relative_to_absolute
- (GNUNET_TIME_UNIT_HOURS), buf, max);
+ ret = GNUNET_HELLO_add_address (&address,
+ GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_HOURS),
+ buf,
+ max);
(*agc)--;
return ret;
}
-struct GNUNET_PeerIdentity pid;
static void
add_peer ()
agc = 2;
memset (&pid, 32, sizeof (pid));
- h2 = GNUNET_HELLO_create (&pid.public_key, &address_generator, &agc, GNUNET_YES);
- GNUNET_PEERINFO_add_peer (h, h2, NULL, NULL);
+ h2 = GNUNET_HELLO_create (&pid.public_key,
+ &address_generator,
+ &agc,
+ GNUNET_YES);
+ GNUNET_PEERINFO_add_peer (h,
+ h2,
+ NULL,
+ NULL);
GNUNET_free (h2);
}
static void
-process (void *cls, const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_HELLO_Message *hello, const char *err_msg)
+process (void *cls,
+ const struct GNUNET_PeerIdentity *peer,
+ const struct GNUNET_HELLO_Message *hello,
+ const char *err_msg)
{
- if (err_msg != NULL)
+ if (NULL != err_msg)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _("Error in communication with PEERINFO service\n"));
+ "Error in communication with PEERINFO service: %s\n",
+ err_msg);
}
-
- if (peer == NULL)
+ if (NULL == peer)
{
ic = NULL;
if ((3 == global_ret) && (retries < 50))
/* try again */
retries++;
add_peer ();
- ic = GNUNET_PEERINFO_iterate (h, GNUNET_NO, NULL,
- GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_SECONDS, 15), &process,
+ ic = GNUNET_PEERINFO_iterate (h,
+ GNUNET_NO,
+ NULL,
+ &process,
cls);
return;
}
GNUNET_assert (peer == NULL);
- GNUNET_assert (2 == global_ret);
GNUNET_PEERINFO_disconnect (h);
h = NULL;
global_ret = 0;
return;
}
- if (hello == NULL)
- {
- GNUNET_assert (3 == global_ret);
- global_ret = 2;
- }
- else
+ if ( (NULL != hello) &&
+ (GNUNET_YES == GNUNET_HELLO_is_friend_only (hello)) )
{
- fprintf (stderr, "Received %s HELLO\n",
- (GNUNET_YES == GNUNET_HELLO_is_friend_only (hello)) ? "friend only" : "public");
+ fprintf (stderr,
+ "Received friend-only HELLO\n");
+ global_ret = 1;
GNUNET_PEERINFO_disconnect (h);
h = NULL;
return;
h = GNUNET_PEERINFO_connect (cfg);
GNUNET_assert (NULL != h);
add_peer ();
- ic = GNUNET_PEERINFO_iterate (h, GNUNET_NO, &pid,
- GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_SECONDS, 15), &process, cls);
+ ic = GNUNET_PEERINFO_iterate (h,
+ GNUNET_NO,
+ &pid,
+ &process,
+ NULL);
}
int
-main (int argc, char *argv[])
+main (int argc,
+ char *argv[])
{
global_ret = 3;
if (0 != GNUNET_TESTING_service_run ("test-peerinfo-api-friend-only",