From ed03501d4f67d8acef116c6609393cca28923cd0 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 3 May 2012 11:33:00 +0000 Subject: [PATCH] -applying fix based on fixed #2210 --- src/Makefile.am | 1 - src/peerinfo-tool/gnunet-peerinfo.c | 37 +++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 1f10a51b7..1a4e58826 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,7 +28,6 @@ SUBDIRS = \ block \ statistics \ arm \ - lockmanager \ peerinfo \ $(MYSQL_DIR) \ $(POSTGRES_DIR) \ diff --git a/src/peerinfo-tool/gnunet-peerinfo.c b/src/peerinfo-tool/gnunet-peerinfo.c index 5f9e2cefa..d450bf748 100644 --- a/src/peerinfo-tool/gnunet-peerinfo.c +++ b/src/peerinfo-tool/gnunet-peerinfo.c @@ -215,6 +215,11 @@ static struct PrintContext *pc_head; */ static struct PrintContext *pc_tail; +/** + * Handle to current 'GNUNET_PEERINFO_add_peer' operation. + */ +static struct GNUNET_PEERINFO_AddContext *ac; + /** * Main state machine that goes over all options and @@ -664,6 +669,25 @@ add_address_to_hello (void *cls, size_t max, void *buffer) } +/** + * Continuation called from 'GNUNET_PEERINFO_add_peer' + * + * @param cls closure, NULL + * @param emsg error message, NULL on success + */ +static void +add_continuation (void *cls, + const char *emsg) +{ + ai = NULL; + if (NULL != emsg) + fprintf (stderr, + _("Failure adding HELLO: %s\n"), + emsg); + tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL); +} + + /** * Parse the PUT URI given at the command line and add it to our peerinfo * database. @@ -698,16 +722,16 @@ parse_hello_uri (const char *put_uri) if (NULL != hello) { /* WARNING: this adds the address from URI WITHOUT verification! */ - if (GNUNET_OK == ctx.ret) - GNUNET_PEERINFO_add_peer (peerinfo, hello, NULL, NULL); + if (GNUNET_OK == ctx.ret) + ac = GNUNET_PEERINFO_add_peer (peerinfo, hello, NULL, NULL); + else + tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL); GNUNET_free (hello); } /* wait 1s to give peerinfo operation a chance to succeed */ /* FIXME: current peerinfo API sucks to require this; not to mention that we get no feedback to determine if the operation actually succeeded */ - tt = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, - &state_machine, NULL); return ctx.ret; } @@ -730,6 +754,11 @@ shutdown_task (void *cls, struct AddressRecord *ar; unsigned int i; + if (NULL != ac) + { + GNUNET_PEERINFO_add_peer_cancel (ac); + ac = NULL; + } if (GNUNET_SCHEDULER_NO_TASK != tt) { GNUNET_SCHEDULER_cancel (tt); -- 2.25.1