From e3866c8f09e173e7d36cce25015ecfbd666cd5bc Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Tue, 21 Apr 2020 18:25:36 +0200 Subject: [PATCH] update API for cleanup of handle --- src/include/gnunet_revocation_service.h | 7 +- src/revocation/gnunet-revocation.c | 3 +- src/revocation/revocation_api.c | 29 +-- src/revocation/test_revocation.c | 2 +- src/transport/test_communicator_basic-udp | 228 ++++++++++++++++++++++ 5 files changed, 250 insertions(+), 19 deletions(-) create mode 100755 src/transport/test_communicator_basic-udp diff --git a/src/include/gnunet_revocation_service.h b/src/include/gnunet_revocation_service.h index 394f561dc..9a8918b43 100644 --- a/src/include/gnunet_revocation_service.h +++ b/src/include/gnunet_revocation_service.h @@ -244,13 +244,14 @@ GNUNET_REVOCATION_pow_round (struct GNUNET_REVOCATION_PowCalculationHandle *pc); /** - * Cleanup a PoW calculation + * Stop a PoW calculation * * @param pc the calculation to clean up + * @return #GNUNET_YES if pow valid, #GNUNET_NO if pow was set but is not + * valid */ void -GNUNET_REVOCATION_pow_cleanup ( - struct GNUNET_REVOCATION_PowCalculationHandle *pc); +GNUNET_REVOCATION_pow_stop (struct GNUNET_REVOCATION_PowCalculationHandle *pc); #if 0 /* keep Emacsens' auto-indent happy */ { diff --git a/src/revocation/gnunet-revocation.c b/src/revocation/gnunet-revocation.c index 2c46a20e7..de9560172 100644 --- a/src/revocation/gnunet-revocation.c +++ b/src/revocation/gnunet-revocation.c @@ -250,7 +250,8 @@ calculate_pow_shutdown (void *cls) GNUNET_SCHEDULER_cancel (pow_task); pow_task = NULL; } - GNUNET_REVOCATION_pow_cleanup (ph); + if (NULL != ph) + GNUNET_REVOCATION_pow_stop (ph); } diff --git a/src/revocation/revocation_api.c b/src/revocation/revocation_api.c index 5494f379c..18a312ab8 100644 --- a/src/revocation/revocation_api.c +++ b/src/revocation/revocation_api.c @@ -320,16 +320,16 @@ GNUNET_REVOCATION_revoke (const struct GNUNET_CONFIGURATION_Handle *cfg, "REVOCATION", "WORKBITS", &matching_bits))) - { + { GNUNET_break (0); GNUNET_free (h); return NULL; } if ((GNUNET_OK != GNUNET_CONFIGURATION_get_value_time (cfg, - "REVOCATION", - "EPOCH_DURATION", - &epoch_duration))) + "REVOCATION", + "EPOCH_DURATION", + &epoch_duration))) { GNUNET_break (0); GNUNET_free (h); @@ -345,7 +345,6 @@ GNUNET_REVOCATION_revoke (const struct GNUNET_CONFIGURATION_Handle *cfg, } - h->mq = GNUNET_CLIENT_connect (cfg, "revocation", handlers, @@ -454,8 +453,8 @@ GNUNET_REVOCATION_check_pow (const struct GNUNET_REVOCATION_Pow *pow, spurp.timestamp = pow->timestamp; spurp.purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_REVOCATION); spurp.purpose.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose) - + sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey) - + sizeof (struct GNUNET_TIME_AbsoluteNBO)); + + sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey) + + sizeof (struct GNUNET_TIME_AbsoluteNBO)); if (GNUNET_OK != GNUNET_CRYPTO_ecdsa_verify_ (GNUNET_SIGNATURE_PURPOSE_REVOCATION, &spurp.purpose, @@ -555,8 +554,8 @@ GNUNET_REVOCATION_pow_init (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key, rp.timestamp = pow->timestamp; rp.purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_REVOCATION); rp.purpose.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose) - + sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey) - + sizeof (struct GNUNET_TIME_AbsoluteNBO)); + + sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey) + + sizeof (struct GNUNET_TIME_AbsoluteNBO)); GNUNET_CRYPTO_ecdsa_key_get_public (key, &pow->key); rp.key = pow->key; GNUNET_assert (GNUNET_OK == @@ -577,8 +576,8 @@ GNUNET_REVOCATION_pow_init (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key, */ struct GNUNET_REVOCATION_PowCalculationHandle* GNUNET_REVOCATION_pow_start (struct GNUNET_REVOCATION_Pow *pow, - int epochs, - unsigned int difficulty) + int epochs, + unsigned int difficulty) { struct GNUNET_REVOCATION_PowCalculationHandle *pc; @@ -651,15 +650,17 @@ GNUNET_REVOCATION_pow_round (struct GNUNET_REVOCATION_PowCalculationHandle *pc) /** - * Cleanup a PoW calculation + * Stop a PoW calculation * * @param pc the calculation to clean up + * @return #GNUNET_YES if pow valid, #GNUNET_NO if pow was set but is not + * valid */ void -GNUNET_REVOCATION_pow_cleanup (struct - GNUNET_REVOCATION_PowCalculationHandle *pc) +GNUNET_REVOCATION_pow_stop (struct GNUNET_REVOCATION_PowCalculationHandle *pc) { GNUNET_free (pc); } + /* end of revocation_api.c */ diff --git a/src/revocation/test_revocation.c b/src/revocation/test_revocation.c index a7de15a3f..f193d5f6c 100644 --- a/src/revocation/test_revocation.c +++ b/src/revocation/test_revocation.c @@ -187,7 +187,7 @@ ego_cb (void *cls, const struct GNUNET_IDENTITY_Ego *ego) &proof_of_work, &revocation_cb, NULL); - GNUNET_REVOCATION_pow_cleanup (testpeers[1].pow); + GNUNET_REVOCATION_pow_stop (testpeers[1].pow); } } diff --git a/src/transport/test_communicator_basic-udp b/src/transport/test_communicator_basic-udp new file mode 100755 index 000000000..c8e2c5e1e --- /dev/null +++ b/src/transport/test_communicator_basic-udp @@ -0,0 +1,228 @@ +#! /bin/sh + +# test_communicator_basic-udp - temporary wrapper script for .libs/test_communicator_basic-udp +# Generated by libtool (GNU libtool) 2.4.6.44-b9b4-dirty +# +# The test_communicator_basic-udp program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/schanzen/dev/gnunet/src/transport; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \"\${LD_LIBRARY_PATH+set}\" || unset LD_LIBRARY_PATH || { LD_LIBRARY_PATH=; export LD_LIBRARY_PATH; }; }; PATH=/usr/local/sbin:/usr/local/opt/ruby/bin:/usr/local/bin:/usr/bin:/home/schanzen/software/bin; export PATH; clang -fno-strict-aliasing -Wall -g -O2 -Wno-address-of-packed-member -Wl,--unresolved-symbols=report-all -o \$progdir/\$file test_communicator_basic.o ./.libs/libgnunettransporttesting2.so /home/schanzen/dev/gnunet/src/transport/.libs/libgnunettransport.so /home/schanzen/dev/gnunet/src/ats/.libs/libgnunetats.so /home/schanzen/dev/gnunet/src/hello/.libs/libgnunethello.so ../../src/testing/.libs/libgnunettesting.so /home/schanzen/dev/gnunet/src/arm/.libs/libgnunetarm.so /home/schanzen/dev/gnunet/src/util/.libs/libgnunetutil.so ../../src/util/.libs/libgnunetutil.so -latomic -lgcrypt -lgpg-error -lltdl -lidn2 -lz -lunistring -lm -Wl,-rpath -Wl,/home/schanzen/dev/gnunet/src/transport/.libs -Wl,-rpath -Wl,/home/schanzen/dev/gnunet/src/ats/.libs -Wl,-rpath -Wl,/home/schanzen/dev/gnunet/src/hello/.libs -Wl,-rpath -Wl,/home/schanzen/dev/gnunet/src/testing/.libs -Wl,-rpath -Wl,/home/schanzen/dev/gnunet/src/arm/.libs -Wl,-rpath -Wl,/home/schanzen/dev/gnunet/src/util/.libs -Wl,-rpath -Wl,/home/schanzen/software/lib)" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.6.44-b9b4-dirty' + notinst_deplibs=' libgnunettransporttesting2.la /home/schanzen/dev/gnunet/src/transport/libgnunettransport.la /home/schanzen/dev/gnunet/src/ats/libgnunetats.la /home/schanzen/dev/gnunet/src/hello/libgnunethello.la ../../src/testing/libgnunettesting.la /home/schanzen/dev/gnunet/src/arm/libgnunetarm.la /home/schanzen/dev/gnunet/src/util/libgnunetutil.la ../../src/util/libgnunetutil.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "test_communicator_basic-udp:test_communicator_basic-udp:$LINENO: libtool wrapper (GNU libtool) 2.4.6.44-b9b4-dirty" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "test_communicator_basic-udp:test_communicator_basic-udp:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "test_communicator_basic-udp:test_communicator_basic-udp:$LINENO: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program=lt-'test_communicator_basic-udp' + progdir="$thisdir/.libs" + + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + $ECHO "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + if test -f "$progdir/$program"; then + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi -- 2.25.1