*/
static struct GNUNET_IDENTITY_ATTRIBUTE_ClaimList *attr_list;
+/**
+ * Attribute expiration interval
+ */
+static struct GNUNET_TIME_Relative exp_interval;
+
+/**
+ * Timeout task
+ */
+static struct GNUNET_SCHEDULER_Task *timeout;
+
static void
do_cleanup(void *cls)
{
+ if (NULL != timeout)
+ GNUNET_SCHEDULER_cancel (timeout);
+ if (NULL != idp_op)
+ GNUNET_IDENTITY_PROVIDER_cancel (idp_op);
if (NULL != attr_iterator)
GNUNET_IDENTITY_PROVIDER_get_attributes_stop (attr_iterator);
if (NULL != idp_handle)
const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket)
{
char* ticket_str;
+ idp_op = NULL;
if (NULL != ticket) {
ticket_str = GNUNET_STRINGS_data_to_string_alloc (ticket,
sizeof (struct GNUNET_IDENTITY_PROVIDER_Ticket));
int32_t success,
const char*emsg)
{
+ idp_op = NULL;
if (GNUNET_SYSERR == success) {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"%s\n", emsg);
char *value_str;
if (NULL == identity)
{
+ idp_op = NULL;
GNUNET_SCHEDULER_add_now (&do_cleanup, NULL);
return;
}
GNUNET_SCHEDULER_add_now (&do_cleanup, NULL);
}
+static void
+timeout_task (void *cls)
+{
+ timeout = NULL;
+ ret = 1;
+ GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
+ "Timeout\n");
+ GNUNET_SCHEDULER_add_now (&do_cleanup, NULL);
+}
+
static void
process_rvk (void *cls, int success, const char* msg)
{
+ idp_op = NULL;
if (GNUNET_OK != success)
{
GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
&ticket,
&process_attrs,
NULL);
+ timeout = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 10),
+ &timeout_task,
+ NULL);
return;
}
if (revoke_ticket)
idp_op = GNUNET_IDENTITY_PROVIDER_attribute_store (idp_handle,
pkey,
claim,
+ &exp_interval,
&store_attr_cont,
NULL);
int
main(int argc, char *const argv[])
{
+ exp_interval = GNUNET_TIME_UNIT_HOURS;
struct GNUNET_GETOPT_CommandLineOption options[] = {
GNUNET_GETOPT_option_string ('a',
NULL,
gettext_noop ("Type of attribute"),
&type_str),
+ GNUNET_GETOPT_option_relative_time ('E',
+ "expiration",
+ NULL,
+ gettext_noop ("Expiration interval of the attribute"),
+ &exp_interval),
+
GNUNET_GETOPT_OPTION_END
};
- return (GNUNET_OK == GNUNET_PROGRAM_run (argc, argv, "ct",
+ if (GNUNET_OK != GNUNET_PROGRAM_run (argc, argv, "ct",
"ct", options,
- &run, NULL));
+ &run, NULL))
+ return 1;
+ else
+ return ret;
}