summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog57
-rw-r--r--README3
-rw-r--r--configure.ac15
-rw-r--r--contrib/Makefile.am28
-rwxr-xr-xcontrib/conf/uncrustify_precommit4
-rw-r--r--contrib/gns/gns-bcd-simple.html2
-rw-r--r--contrib/gns/gns-bcd.html2
-rw-r--r--contrib/packages/arch/gnunet-git/.SRCINFO73
-rw-r--r--contrib/packages/arch/gnunet-git/PKGBUILD128
-rw-r--r--contrib/packages/arch/gnunet-git/gnunet-system.service13
-rw-r--r--contrib/packages/arch/gnunet-git/gnunet-uri.desktop9
-rw-r--r--contrib/packages/arch/gnunet-git/gnunet-user.conf3
-rw-r--r--contrib/packages/arch/gnunet-git/gnunet-user.service10
-rw-r--r--contrib/packages/arch/gnunet-git/gnunet.install54
-rw-r--r--contrib/packages/arch/gnunet-git/gnunet.sysusers3
-rw-r--r--contrib/packages/arch/gnunet-git/gnunet.tmpfiles9
-rw-r--r--contrib/packages/arch/gnunet/.SRCINFO72
-rw-r--r--contrib/packages/arch/gnunet/PKGBUILD118
-rw-r--r--contrib/packages/arch/gnunet/gnunet-system.service13
-rw-r--r--contrib/packages/arch/gnunet/gnunet-uri.desktop9
-rw-r--r--contrib/packages/arch/gnunet/gnunet-user.conf3
-rw-r--r--contrib/packages/arch/gnunet/gnunet-user.service10
-rw-r--r--contrib/packages/arch/gnunet/gnunet.install54
-rw-r--r--contrib/packages/arch/gnunet/gnunet.sysusers3
-rw-r--r--contrib/packages/arch/gnunet/gnunet.tmpfiles9
-rw-r--r--debian/changelog6
-rw-r--r--debian/libgnunet-dev.install1
-rw-r--r--doc/handbook/chapters/developer.texi2
-rw-r--r--doc/handbook/chapters/user.texi22
-rw-r--r--doc/man/gnunet-config.12
-rw-r--r--doc/man/gnunet-search.18
-rw-r--r--po/de.po153
-rw-r--r--po/es.po181
-rw-r--r--po/fr.po152
-rw-r--r--po/it.po152
-rw-r--r--po/sr.po157
-rw-r--r--po/sv.po169
-rw-r--r--po/vi.po157
-rw-r--r--po/zh_CN.po153
-rw-r--r--src/block/bg_bf.c38
-rw-r--r--src/block/block.c6
-rw-r--r--src/block/plugin_block_template.c25
-rw-r--r--src/block/plugin_block_test.c3
-rwxr-xr-xsrc/dht/dhtu_testbed_deploy.sh2
-rw-r--r--src/dht/gnunet-service-dht_clients.c3
-rw-r--r--src/dht/gnunet-service-dht_neighbours.c98
-rw-r--r--src/dht/plugin_block_dht.c3
-rw-r--r--src/dns/plugin_block_dns.c37
-rw-r--r--src/fs/gnunet-service-fs.c2
-rw-r--r--src/fs/gnunet-service-fs.h8
-rw-r--r--src/fs/gnunet-service-fs_cp.c1
-rw-r--r--src/fs/gnunet-service-fs_pr.c10
-rw-r--r--src/fs/gnunet-service-fs_pr.h2
-rw-r--r--src/fs/plugin_block_fs.c11
-rw-r--r--src/gns/plugin_block_gns.c4
-rw-r--r--src/gns/plugin_gnsrecord_gns.c70
-rw-r--r--src/gnsrecord/gnsrecord_misc.c9
-rw-r--r--src/gnsrecord/gnsrecord_serialization.c6
-rw-r--r--src/gnsrecord/gnunet-gnsrecord-tvg.c6
-rw-r--r--src/gnsrecord/test_gnsrecord_crypto.c4
-rw-r--r--src/hello/hello-uri.c11
-rw-r--r--src/include/gnunet_block_group_lib.h2
-rw-r--r--src/include/gnunet_block_lib.h3
-rw-r--r--src/include/gnunet_block_plugin.h21
-rw-r--r--src/include/gnunet_container_lib.h4
-rw-r--r--src/include/gnunet_crypto_lib.h2
-rw-r--r--src/include/gnunet_gnsrecord_lib.h2
-rw-r--r--src/include/gnunet_testing_netjail_lib.h2
-rw-r--r--src/include/gnunet_testing_ng_lib.h2
-rw-r--r--src/messenger/gnunet-service-messenger.c32
-rw-r--r--src/messenger/gnunet-service-messenger_ego_store.c2
-rw-r--r--src/messenger/gnunet-service-messenger_handle.c114
-rw-r--r--src/messenger/gnunet-service-messenger_handle.h70
-rw-r--r--src/messenger/gnunet-service-messenger_list_handles.c6
-rw-r--r--src/messenger/gnunet-service-messenger_member_session.c4
-rw-r--r--src/messenger/gnunet-service-messenger_member_store.c4
-rw-r--r--src/messenger/gnunet-service-messenger_message_handle.c16
-rw-r--r--src/messenger/gnunet-service-messenger_message_recv.c16
-rw-r--r--src/messenger/gnunet-service-messenger_message_send.c8
-rw-r--r--src/messenger/gnunet-service-messenger_room.c228
-rw-r--r--src/messenger/gnunet-service-messenger_room.h96
-rw-r--r--src/messenger/gnunet-service-messenger_service.c32
-rw-r--r--src/messenger/gnunet-service-messenger_tunnel.c14
-rw-r--r--src/reclaim/Makefile.am10
-rw-r--r--src/reclaim/oidc_helper.c160
-rw-r--r--src/reclaim/oidc_helper.h49
-rw-r--r--src/reclaim/plugin_rest_openid_connect.c365
-rw-r--r--src/reclaim/reclaim.conf5
-rw-r--r--src/regex/plugin_block_regex.c121
-rw-r--r--src/revocation/revocation_api.c6
-rw-r--r--src/testing/testing.c18
-rw-r--r--src/testing/testing_api_loop.c9
-rw-r--r--src/transport/gnunet-communicator-tcp.c20
-rw-r--r--src/transport/gnunet-service-tng.c7
-rw-r--r--src/transport/gnunet-transport-certificate-creation.in15
-rw-r--r--src/util/container_bloomfilter.c203
-rw-r--r--src/util/os_installation.c27
-rw-r--r--src/util/os_priority.c16
-rw-r--r--src/util/test_container_bloomfilter.c50
-rw-r--r--src/util/test_crypto_cs.c6
100 files changed, 2613 insertions, 1532 deletions
diff --git a/ChangeLog b/ChangeLog
index adb5daf2a..3881c487e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,60 @@
+Sun, 12 Jun 2022 15:50:22 +0100 (839640c0e)
+Restore lost quotes in `man gnunet-search` - madmurphy
+
+Sun, 12 Jun 2022 15:33:39 +0100 (22082c234)
+Add Arch packages - madmurphy
+
+Thu, 9 Jun 2022 18:17:52 +0200 (1da1632c4)
+log hash - Christian Grothoff
+
+Thu, 9 Jun 2022 11:49:32 +0200 (a87029a63)
+RECLAIM: Improve OIDC plugin; now requires jose (new optional dependency) - Martin Schanzenbach
+
+Tue, 31 May 2022 23:43:05 +0200 (edddc9384)
+protocol change: swap xquery and result filter, integrate mutator with result filter - Christian Grothoff
+
+Tue, 17 May 2022 10:00:25 +0200 (5fcabf87a)
+fix scheduler bug with same-priority immediately-ready tasks possibly hogging the scheduler - Christian Grothoff
+
+Sat, 14 May 2022 12:20:06 +0200 (b47e57809)
+BUILD: Change submodule handling, update gana - Martin Schanzenbach
+
+Thu, 12 May 2022 07:53:03 -0400 (69ac41f04)
+update contrib/gana to 5ada88d0d3e25587a1340cc35669c36f608a50db - Thien-Thi Nguyen
+
+Wed, 11 May 2022 05:15:34 -0400 (14464ed87)
+update submodule contrib/gana - Thien-Thi Nguyen
+
+Mon, 9 May 2022 10:49:46 +0200 (c42fd9b03)
+DHT: Move block type definitions to GANA - Martin Schanzenbach
+
+Mon, 9 May 2022 09:00:52 +0200 (2c589fcdf)
+FCFSD: Allow configuration of relative expiration time of added records - Martin Schanzenbach
+
+Tue, 26 Apr 2022 17:14:00 +0200 (132e09b6e)
+gnunet-crypto-tvg: edx25519 test vectors - Florian Dold
+
+Tue, 26 Apr 2022 17:13:36 +0200 (8d8e7d3da)
+edx25519: use SHA512/256 instead of SHA256 - Florian Dold
+
+Tue, 19 Apr 2022 14:53:07 +0200 (709e85100)
+edx25519: KDF call - Florian Dold
+
+Tue, 19 Apr 2022 14:43:30 +0200 (0487df9a0)
+edx25519: use libsodium, tweak KDF call - Florian Dold
+
+Sat, 9 Apr 2022 13:15:32 +0200 (25e750421)
+BUILD: Fix mysql detection as reported on ML - Martin Schanzenbach
+
+Tue, 5 Apr 2022 17:15:10 +0200 (2ea635b60)
+add flag to return 'not present' status from GNUNET_JSON_spec_mark_optional - Christian Grothoff
+
+Mon, 4 Apr 2022 22:49:41 +0200 (a15b424cb)
+UTIL: OpenBSD does not implement unsafe srandom - Martin Schanzenbach
+
+Mon, 4 Apr 2022 19:44:45 +0200 (aa3b3f27f)
+BUILD: Simplify mhd detection - Martin Schanzenbac
+
Tue, 29 Mar 2022 10:11:15 +0200 (a9b18aa64)
GNS: Do not fail on assertions in block processing - Martin Schanzenbach
diff --git a/README b/README
index 9afd57043..7c4dfe8c0 100644
--- a/README
+++ b/README
@@ -147,7 +147,8 @@ Dependencies of optional components/functionality:
- PABC credential support
* libpabc any (for re:claimID zero-knowledge privacy
credentials)
-
+- re:claimID OpenID Connect plugin
+ * libjose any (for re:claimID OpenID Connect support)
Additional dependencies to run the GNUnet testsuite:
diff --git a/configure.ac b/configure.ac
index 733eea06e..b1bc03e91 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
# This file is part of GNUnet.
-# (C) 2001--2021 GNUnet e.V.
+# (C) 2001--2022 GNUnet e.V.
#
# GNUnet is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
@@ -20,7 +20,7 @@
#
#
AC_PREREQ([2.69])
-AC_INIT([gnunet], m4_esyscmd_s([sh contrib/get_version.sh]), [bug-gnunet@gnu.org])
+AC_INIT([gnunet],[m4_esyscmd_s(sh contrib/get_version.sh)],[bug-gnunet@gnu.org])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIRS([m4])
@@ -719,6 +719,11 @@ CHECK_WITH_LIB([jansson], [json_loads], [jansson.h], [HAVE_JANSSON])
AS_IF([test "x$jansson" = "x0"],
[AC_MSG_ERROR([GNUnet requires jansson])])
+# check for jose
+CHECK_WITH_LIB([jose], [jose_jwk_gen], [jose/jose.h], [HAVE_JOSE])
+AS_IF([test "x$jose" = "x0"],
+ [AC_MSG_WARN([reclaimID OpenID Connect plugin requires jose])])
+
# check for libpulse (pulseaudio)
CHECK_WITH_LIB([pulse], [pa_stream_peek], [pulse/simple.h], [HAVE_PULSE])
@@ -1041,7 +1046,7 @@ AS_IF([test "x$libmhd" = "x0"],
AM_CONDITIONAL([HAVE_MHD], [test "x$libmhd" = "x1"])
AC_DEFINE_UNQUOTED([HAVE_MHD], [$libmhd],
- [Define to 1 if libmicrohttpd is avaliable])
+ [Define to 1 if libmicrohttpd is available])
AM_CONDITIONAL([HAVE_REST], [true])
# check for gnutls
@@ -1193,7 +1198,7 @@ AC_ARG_ENABLE([nse-histogram],
[nse_histogram=0])
AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
- [Define to 1 if NSE should send timestamp informations])
+ [Define to 1 if NSE should send timestamp information])
# check if 'make check' should run tests
AC_ARG_ENABLE([testruns],
@@ -1309,7 +1314,7 @@ AS_IF([test "x$enable_ttd" = "xyes"],
[AC_DEFINE([ENABLE_TTD], [1],
[Define if transport (not TNG) should warn about sending times.])])
-# get version informations
+# get version information
AC_PATH_PROG([gitcommand], [git])
AC_MSG_CHECKING([if source is under a VCS])
AS_IF([test "x$gitcommand" = "x"],
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index e05e9caf9..801eacecf 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -42,9 +42,6 @@ INITD_FILES = \
services/openrc/gnunet.initd
PACKAGES_FILES = \
- packages/guix/guix-env-py2.scm \
- packages/guix/guix-env-gillmann.scm \
- packages/guix/notest-guix-env.scm \
packages/alpine/gnunet-gtk/APKBUILD \
packages/alpine/gnurl/APKBUILD \
packages/alpine/gnunet/gnunet-user-services.initd \
@@ -57,9 +54,30 @@ PACKAGES_FILES = \
packages/alpine/gnunet/gnunet.pre-install \
packages/alpine/gnunet/gnunet-system-services.initd \
packages/alpine/gnunet/gnunet-gns-proxy.initd \
+ packages/arch/gnunet-git/gnunet.install \
+ packages/arch/gnunet-git/gnunet-system.service \
+ packages/arch/gnunet-git/gnunet.sysusers \
+ packages/arch/gnunet-git/gnunet.tmpfiles \
+ packages/arch/gnunet-git/gnunet-uri.desktop \
+ packages/arch/gnunet-git/gnunet-user.conf \
+ packages/arch/gnunet-git/gnunet-user.service \
+ packages/arch/gnunet-git/PKGBUILD \
+ packages/arch/gnunet-git/.SRCINFO \
+ packages/arch/gnunet/gnunet.install \
+ packages/arch/gnunet/gnunet-system.service \
+ packages/arch/gnunet/gnunet.sysusers \
+ packages/arch/gnunet/gnunet.tmpfiles \
+ packages/arch/gnunet/gnunet-uri.desktop \
+ packages/arch/gnunet/gnunet-user.conf \
+ packages/arch/gnunet/gnunet-user.service \
+ packages/arch/gnunet/PKGBUILD \
+ packages/arch/gnunet/.SRCINFO \
+ packages/guix/guix-env-py2.scm \
+ packages/guix/guix-env-gillmann.scm \
+ packages/guix/notest-guix-env.scm \
+ packages/homebrew/gnunet.rb \
packages/nix/gnunet-dev.nix \
- packages/nix/default.nix \
- packages/homebrew/gnunet.rb
+ packages/nix/default.nix
EXTRA_DIST = \
sounds/vonlynX-bdbAm-lo.wav \
diff --git a/contrib/conf/uncrustify_precommit b/contrib/conf/uncrustify_precommit
index fd29998c3..3a06511d1 100755
--- a/contrib/conf/uncrustify_precommit
+++ b/contrib/conf/uncrustify_precommit
@@ -29,7 +29,7 @@ done
if [ $RET = 1 ];
then
echo "Run"
- echo "uncrustify --no-backup -c uncrustify.cfg ${crustified}"
- echo "before commiting."
+ echo "uncrustify --replace -c uncrustify.cfg ${crustified}"
+ echo "before committing."
fi
exit $RET
diff --git a/contrib/gns/gns-bcd-simple.html b/contrib/gns/gns-bcd-simple.html
index 0af96b68e..11b99e2b1 100644
--- a/contrib/gns/gns-bcd-simple.html
+++ b/contrib/gns/gns-bcd-simple.html
@@ -128,7 +128,7 @@
<div class="gns-container">
<div class="gns-header">
<h1>GNU Name System Business Card</h1>
- <p>Please fill in the informations below to generate your business
+ <p>Please fill in the information below to generate your business
card.</p>
<p>Want a more detailed card? Use the <a href="/full">full
form</a>.</p>
diff --git a/contrib/gns/gns-bcd.html b/contrib/gns/gns-bcd.html
index b15e3fcc3..2046d159f 100644
--- a/contrib/gns/gns-bcd.html
+++ b/contrib/gns/gns-bcd.html
@@ -128,7 +128,7 @@
<div class="gns-container">
<div class="gns-header">
<h1>GNU Name System Business Card</h1>
- <p>Please fill in the informations below to generate your business
+ <p>Please fill in the information below to generate your business
card.</p>
</div>
<form name="gnsinput" action="/submit/full" method="get">
diff --git a/contrib/packages/arch/gnunet-git/.SRCINFO b/contrib/packages/arch/gnunet-git/.SRCINFO
new file mode 100644
index 000000000..d73829db6
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/.SRCINFO
@@ -0,0 +1,73 @@
+pkgbase = gnunet-git
+ pkgdesc = A framework for secure peer-to-peer networking
+ pkgver = 0.17.0.r0.g0a9c2aa9d
+ pkgrel = 1
+ url = http://gnunet.org
+ install = gnunet.install
+ arch = i686
+ arch = x86_64
+ license = AGPL
+ makedepends = bluez-libs
+ makedepends = gettext
+ makedepends = git
+ makedepends = libpulse
+ makedepends = libtool
+ makedepends = opus
+ makedepends = pkgconfig
+ makedepends = postgresql
+ makedepends = python
+ makedepends = recutils
+ depends = brotli
+ depends = gettext
+ depends = gnurl
+ depends = gnutls
+ depends = iptables
+ depends = jansson
+ depends = libextractor
+ depends = libgcrypt
+ depends = libidn2
+ depends = libmicrohttpd
+ depends = libsodium
+ depends = libtool
+ depends = libunistring
+ depends = nss
+ depends = openssl
+ depends = sqlite
+ depends = which
+ depends = zlib
+ optdepends = bluez: for bluetooth transport
+ optdepends = gnunet-gtk: for handling the gnunet:// URI scheme
+ optdepends = libgabe: for Attribute-Based Encryption
+ optdepends = libogg: for conversation service
+ optdepends = libpabc: for re:claimID zero-knowledge privacy credentials
+ optdepends = libpulse: for conversation service
+ optdepends = miniupnpc: for NAT uPnP support
+ optdepends = mysql: for an alternative to sqlite in the database plugin
+ optdepends = opus: for conversation service
+ optdepends = pbc: for Attribute-Based Encryption
+ optdepends = postgresql: for an alternative to sqlite in the database plugin
+ optdepends = python: for test suite
+ optdepends = texi2mdoc: for automatic mdoc generation
+ optdepends = texinfo: for building the documentation
+ optdepends = texlive-core: for generating GNS business cards via gnunet-bcd
+ optdepends = zbar: for reading/writing QR codes using gnunet-qr
+ provides = gnunet
+ conflicts = gnunet
+ conflicts = gnunet-bin
+ backup = etc/gnunet.conf
+ source = git+https://git.gnunet.org/gnunet.git
+ source = gnunet-system.service
+ source = gnunet.sysusers
+ source = gnunet.tmpfiles
+ source = gnunet-uri.desktop
+ source = gnunet-user.conf
+ source = gnunet-user.service
+ sha256sums = SKIP
+ sha256sums = 163818b89beddcaf78937daba5bdf0ae060b2975de0731aa13d1ccdd813cf262
+ sha256sums = 66299dbbdd0219d2f5f0520e69fc094f38f789724d973c2f63a421257ea4f755
+ sha256sums = 5c34e1ecc6208900426f8e399e8c3edbef12cce19eba605fd7364ddb3547d9f0
+ sha256sums = 98e4e1d6d4fd7c7fd05d9e16402c95f1e7afeb4b97c8c68ac63e8abd11ff4ee7
+ sha256sums = 3f17b9ed2c1f8cc0f919fe477df99678c17778a31f1eeb56517e285e3cef30f2
+ sha256sums = 60caee20b53bcc69522556b35ac3d35d89e28c49b9a22a2ed5121df4a2c33be5
+
+pkgname = gnunet-git
diff --git a/contrib/packages/arch/gnunet-git/PKGBUILD b/contrib/packages/arch/gnunet-git/PKGBUILD
new file mode 100644
index 000000000..bb4d3598d
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/PKGBUILD
@@ -0,0 +1,128 @@
+# Maintainer: grufo <madmurphy333 AT gmail DOT com>
+# Contributor: redfish <redfish AT galactica DOT pw>
+# Contributor: kertase <kertase AT gmail DOT com>
+# Contributor: Sergej Pupykin <pupykin DOT s+arch AT gmail.com>
+# Contributor: wahnby <wahnby AT yahoo DOT fr>
+
+_appname='gnunet'
+pkgname="${_appname}-git"
+pkgver=0.17.0.r0.g0a9c2aa9d
+pkgrel=1
+pkgdesc='A framework for secure peer-to-peer networking'
+arch=('i686' 'x86_64')
+url="http://${_appname}.org"
+license=('AGPL')
+conflicts=("${_appname}" "${_appname}-bin")
+provides=("${_appname}")
+depends=('brotli' 'gettext' 'gnurl' 'gnutls' 'iptables' 'jansson'
+ 'libextractor' 'libgcrypt' 'libidn2' 'libmicrohttpd' 'libsodium'
+ 'libtool' 'libunistring' 'nss' 'openssl' 'sqlite' 'which' 'zlib')
+makedepends=('bluez-libs' 'gettext' 'git' 'libpulse' 'libtool' 'opus'
+ 'pkgconfig' 'postgresql' 'python' 'recutils')
+optdepends=('bluez: for bluetooth transport'
+ 'gnunet-gtk: for handling the gnunet:// URI scheme'
+ 'libgabe: for Attribute-Based Encryption'
+ 'libogg: for conversation service'
+ 'libpabc: for re:claimID zero-knowledge privacy credentials'
+ 'libpulse: for conversation service'
+ 'miniupnpc: for NAT uPnP support'
+ 'mysql: for an alternative to sqlite in the database plugin'
+ 'opus: for conversation service'
+ 'pbc: for Attribute-Based Encryption'
+ 'postgresql: for an alternative to sqlite in the database plugin'
+ 'python: for test suite'
+ 'texi2mdoc: for automatic mdoc generation'
+ 'texinfo: for building the documentation'
+ 'texlive-core: for generating GNS business cards via gnunet-bcd'
+ 'zbar: for reading/writing QR codes using gnunet-qr')
+backup=("etc/${_appname}.conf")
+source=("git+https://git.${_appname}.org/${_appname}.git"
+ "${_appname}-system.service"
+ "${_appname}.sysusers"
+ "${_appname}.tmpfiles"
+ "${_appname}-uri.desktop"
+ "${_appname}-user.conf"
+ "${_appname}-user.service")
+install="${_appname}.install"
+sha256sums=('SKIP'
+ '163818b89beddcaf78937daba5bdf0ae060b2975de0731aa13d1ccdd813cf262'
+ '66299dbbdd0219d2f5f0520e69fc094f38f789724d973c2f63a421257ea4f755'
+ '5c34e1ecc6208900426f8e399e8c3edbef12cce19eba605fd7364ddb3547d9f0'
+ '98e4e1d6d4fd7c7fd05d9e16402c95f1e7afeb4b97c8c68ac63e8abd11ff4ee7'
+ '3f17b9ed2c1f8cc0f919fe477df99678c17778a31f1eeb56517e285e3cef30f2'
+ '60caee20b53bcc69522556b35ac3d35d89e28c49b9a22a2ed5121df4a2c33be5')
+
+pkgver() {
+
+ cd "${_appname}" > /dev/null 2>&1
+ git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
+
+}
+
+prepare() {
+
+ cd "${srcdir}/${_appname}"
+
+ export GNUNET_PREFIX='/usr/lib'
+ ./bootstrap
+
+}
+
+build() {
+
+ cd "${srcdir}/${_appname}"
+
+ ./configure --prefix='/usr' --enable-experimental
+ make
+ make -C contrib
+
+}
+
+package() {
+
+ cd "${srcdir}/${_appname}"
+
+ make DESTDIR="${pkgdir}" install
+ make DESTDIR="${pkgdir}" -C contrib install
+
+ install -dm755 "${pkgdir}/usr/lib/systemd/system"
+ install -Dm644 "${srcdir}/${_appname}-system.service" \
+ "${pkgdir}/usr/lib/systemd/system/${_appname}.service"
+
+ install -dm755 "${pkgdir}/usr/lib/systemd/user"
+ install -Dm644 "${srcdir}/${_appname}-user.service" \
+ "${pkgdir}/usr/lib/systemd/user/${_appname}.service"
+
+ install -dm755 "${pkgdir}/usr/lib/sysusers.d"
+ install -Dm644 "${srcdir}/${_appname}.sysusers" \
+ "${pkgdir}/usr/lib/sysusers.d/${_appname}.conf"
+
+ install -dm755 "${pkgdir}/usr/lib/tmpfiles.d"
+ install -Dm644 "${srcdir}/${_appname}.tmpfiles" \
+ "${pkgdir}/usr/lib/tmpfiles.d/${_appname}.conf"
+
+ install -dm755 "${pkgdir}/usr/share/applications"
+ install -Dm644 "${srcdir}/${_appname}-uri.desktop" \
+ "${pkgdir}/usr/share/applications/${_appname}-uri.desktop"
+
+ install -dm700 "${pkgdir}/etc/skel/.config"
+ install -Dm600 "${srcdir}/${_appname}-user.conf" \
+ "${pkgdir}/etc/skel/.config/${_appname}.conf"
+
+ # Automatically generate a configuration file using the content of
+ # `/usr/share/gnunet/config.d/` as model; in this way we can ensure
+ # that this configuration file is the one backed up with each update,
+ # while `/usr/share/gnunet/config.d/` is kept as immutable default
+ # configuration.
+
+ install -dm755 "${pkgdir}/etc"
+
+ {
+ echo "# /etc/${_appname}.conf"
+ (cd "${pkgdir}" > /dev/null 2>&1 && find "usr/share/${_appname}/config.d" -type f -name '*.conf' \
+ -printf '\n\n# For the default values of the the following lines please refer to\n# /%p\n\n' \
+ -exec cat '{}' ';')
+ } > "${pkgdir}/etc/${_appname}.conf"
+
+}
+
diff --git a/contrib/packages/arch/gnunet-git/gnunet-system.service b/contrib/packages/arch/gnunet-git/gnunet-system.service
new file mode 100644
index 000000000..b429caf46
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/gnunet-system.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=GNUnet system service
+After=network.target
+
+[Service]
+Type=simple
+User=gnunet
+ExecStart=/usr/lib/gnunet/libexec/gnunet-service-arm -c /etc/gnunet.conf
+StateDirectory=gnunet
+StateDirectoryMode=0700
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/packages/arch/gnunet-git/gnunet-uri.desktop b/contrib/packages/arch/gnunet-git/gnunet-uri.desktop
new file mode 100644
index 000000000..4f847d20f
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/gnunet-uri.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=GNUnet URI
+Exec=gnunet-uri %u
+GenericName=URI handler for the GNUnet network
+Icon=gnunet
+Type=Application
+Terminal=false
+NoDisplay=true
+MimeType=x-scheme-handler/gnunet;
diff --git a/contrib/packages/arch/gnunet-git/gnunet-user.conf b/contrib/packages/arch/gnunet-git/gnunet-user.conf
new file mode 100644
index 000000000..22f1fe37a
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/gnunet-user.conf
@@ -0,0 +1,3 @@
+[arm]
+START_SYSTEM_SERVICES = NO
+START_USER_SERVICES = YES
diff --git a/contrib/packages/arch/gnunet-git/gnunet-user.service b/contrib/packages/arch/gnunet-git/gnunet-user.service
new file mode 100644
index 000000000..ae9f0d4f5
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/gnunet-user.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=GNUnet user service
+After=network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/lib/gnunet/libexec/gnunet-service-arm -c ~/.config/gnunet.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/packages/arch/gnunet-git/gnunet.install b/contrib/packages/arch/gnunet-git/gnunet.install
new file mode 100644
index 000000000..2560926d8
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/gnunet.install
@@ -0,0 +1,54 @@
+post_install() {
+
+ local _PWD_PAIRS_="$(awk -F ':' '$3>=1000 && $3<2000 {print $1":"$6}' '/etc/passwd')"
+ local _USER_
+ local _GROUP_
+ local _CFG_DIR_
+
+ for _PWD_PAIR_ in ${_PWD_PAIRS_}; do
+ _USER_="$(echo $_PWD_PAIR_ | cut -d ':' -f 1)"
+ _GROUP_="$(id -gn "${_USER_}")"
+ _CFG_DIR_="$(echo $_PWD_PAIR_ | cut -d ':' -f 2)/.config"
+ test -e "${_CFG_DIR_}/gnunet.conf" || (install -dm700 -o \
+ "${_USER_}" -g "${_GROUP_}" "${_CFG_DIR_}" && install \
+ -Dm600 -o "${_USER_}" -g "${_GROUP_}" \
+ '/etc/skel/.config/gnunet.conf' \
+ "${_CFG_DIR_}/gnunet.conf")
+ done
+
+ echo
+ echo 'Do not forget to add your user to the `gnunet` group, with'
+ echo
+ echo ' sudo usermod -aG gnunet "$(whoami)"'
+ echo
+ echo 'If later you want to remove your user from the group, launch'
+ echo
+ echo ' sudo gpasswd --delete "$(whoami)" gnunet'
+ echo
+ echo 'For information on how to use GNUnet plaese refer to the GNUnet article in the'
+ echo 'ArchWiki (https://wiki.archlinux.org/title/GNUnet).'
+ echo
+
+}
+
+post_remove() {
+
+ echo
+ echo 'The home directory of the `gnunet` user (`/var/lib/gnunet/`) is left after'
+ echo 'uninstalling GNUnet. If you are sure that you are never going to use GNUnet'
+ echo 'ever again, launch:'
+ echo
+ echo ' for username in $(getent group gnunet | cut -d: -f4 | tr '\'','\'' '\'' '\''); do \'
+ echo ' sudo gpasswd --delete "${username}" gnunet; done'
+ echo ' sudo userdel -r gnunet'
+ echo ' sudo groupdel gnunetdns'
+ echo
+ echo '**Warning** The identity and all the information about the network'
+ echo 'cumulatively stored by the current peer will be destroyed - this will not'
+ echo 'affect files explicitly downloaded in other paths.'
+ echo
+ echo 'For further information plaese refer to the GNUnet article in the ArchWiki'
+ echo '(https://wiki.archlinux.org/title/GNUnet).'
+ echo
+
+}
diff --git a/contrib/packages/arch/gnunet-git/gnunet.sysusers b/contrib/packages/arch/gnunet-git/gnunet.sysusers
new file mode 100644
index 000000000..163895934
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/gnunet.sysusers
@@ -0,0 +1,3 @@
+g gnunet -
+u gnunet - "GNUnet system account" /var/lib/gnunet
+g gnunetdns -
diff --git a/contrib/packages/arch/gnunet-git/gnunet.tmpfiles b/contrib/packages/arch/gnunet-git/gnunet.tmpfiles
new file mode 100644
index 000000000..5b0b4174d
--- /dev/null
+++ b/contrib/packages/arch/gnunet-git/gnunet.tmpfiles
@@ -0,0 +1,9 @@
+d /var/lib/gnunet 0700 gnunet gnunet - -
+z /usr/lib/gnunet/libexec/gnunet-helper-dns 4750 root gnunetdns - -
+z /usr/lib/gnunet/libexec/gnunet-helper-exit 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-nat-client 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-nat-server 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-transport-bluetooth 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-transport-wlan 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-vpn 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-service-dns 2750 gnunet gnunetdns - -
diff --git a/contrib/packages/arch/gnunet/.SRCINFO b/contrib/packages/arch/gnunet/.SRCINFO
new file mode 100644
index 000000000..438f91230
--- /dev/null
+++ b/contrib/packages/arch/gnunet/.SRCINFO
@@ -0,0 +1,72 @@
+pkgbase = gnunet
+ pkgdesc = A framework for secure peer-to-peer networking
+ pkgver = 0.17.0
+ pkgrel = 1
+ url = http://gnunet.org
+ install = gnunet.install
+ arch = i686
+ arch = x86_64
+ license = AGPL
+ makedepends = bluez-libs
+ makedepends = libpulse
+ makedepends = libtool
+ makedepends = opus
+ makedepends = pkgconfig
+ makedepends = postgresql
+ makedepends = python
+ depends = brotli
+ depends = gettext
+ depends = gnurl
+ depends = gnutls
+ depends = iptables
+ depends = jansson
+ depends = libextractor
+ depends = libgcrypt
+ depends = libidn2
+ depends = libmicrohttpd
+ depends = libsodium
+ depends = libtool
+ depends = libunistring
+ depends = nss
+ depends = openssl
+ depends = sqlite
+ depends = which
+ depends = zlib
+ optdepends = bluez: for bluetooth transport
+ optdepends = gnunet-gtk: for handling the gnunet:// URI scheme
+ optdepends = libgabe: for Attribute-Based Encryption
+ optdepends = libogg: for conversation service
+ optdepends = libpabc: for re:claimID zero-knowledge privacy credentials
+ optdepends = libpulse: for conversation service
+ optdepends = miniupnpc: for NAT uPnP support
+ optdepends = mysql: for an alternative to sqlite in the database plugin
+ optdepends = opus: for conversation service
+ optdepends = pbc: for Attribute-Based Encryption
+ optdepends = postgresql: for an alternative to sqlite in the database plugin
+ optdepends = python: for test suite
+ optdepends = texi2mdoc: for automatic mdoc generation
+ optdepends = texinfo: for building the documentation
+ optdepends = texlive-core: for generating GNS business cards via gnunet-bcd
+ optdepends = zbar: for reading/writing QR codes using gnunet-qr
+ conflicts = gnunet-git
+ conflicts = gnunet-bin
+ backup = etc/gnunet.conf
+ source = ftp://ftp.gnu.org/gnu/gnunet/gnunet-0.17.0.tar.gz
+ source = ftp://ftp.gnu.org/gnu/gnunet/gnunet-0.17.0.tar.gz.sig
+ source = gnunet-system.service
+ source = gnunet.sysusers
+ source = gnunet.tmpfiles
+ source = gnunet-uri.desktop
+ source = gnunet-user.conf
+ source = gnunet-user.service
+ validpgpkeys = 3D11063C10F98D14BD24D1470B0998EF86F59B6A
+ sha256sums = 6b2f7bf34c3c3986f2c294f04e881dda9db8ef636c0e78ebcf8084b8a47d49ca
+ sha256sums = SKIP
+ sha256sums = 163818b89beddcaf78937daba5bdf0ae060b2975de0731aa13d1ccdd813cf262
+ sha256sums = 66299dbbdd0219d2f5f0520e69fc094f38f789724d973c2f63a421257ea4f755
+ sha256sums = 5c34e1ecc6208900426f8e399e8c3edbef12cce19eba605fd7364ddb3547d9f0
+ sha256sums = 98e4e1d6d4fd7c7fd05d9e16402c95f1e7afeb4b97c8c68ac63e8abd11ff4ee7
+ sha256sums = 3f17b9ed2c1f8cc0f919fe477df99678c17778a31f1eeb56517e285e3cef30f2
+ sha256sums = 60caee20b53bcc69522556b35ac3d35d89e28c49b9a22a2ed5121df4a2c33be5
+
+pkgname = gnunet
diff --git a/contrib/packages/arch/gnunet/PKGBUILD b/contrib/packages/arch/gnunet/PKGBUILD
new file mode 100644
index 000000000..2dfcdd6ec
--- /dev/null
+++ b/contrib/packages/arch/gnunet/PKGBUILD
@@ -0,0 +1,118 @@
+# Maintainer: grufo <madmurphy333 AT gmail DOT com>
+# Contributor: redfish <redfish AT galactica DOT pw>
+# Contributor: kertase <kertase AT gmail DOT com>
+# Contributor: Sergej Pupykin <pupykin DOT s+arch AT gmail.com>
+# Contributor: wahnby <wahnby AT yahoo DOT fr>
+
+pkgname='gnunet'
+pkgver='0.17.0'
+pkgrel=1
+pkgdesc='A framework for secure peer-to-peer networking'
+arch=('i686' 'x86_64')
+url="http://${pkgname}.org"
+license=('AGPL')
+conflicts=("${pkgname}-git" "${pkgname}-bin")
+depends=('brotli' 'gettext' 'gnurl' 'gnutls' 'iptables' 'jansson'
+ 'libextractor' 'libgcrypt' 'libidn2' 'libmicrohttpd' 'libsodium'
+ 'libtool' 'libunistring' 'nss' 'openssl' 'sqlite' 'which' 'zlib')
+makedepends=('bluez-libs' 'libpulse' 'libtool' 'opus' 'pkgconfig' 'postgresql'
+ 'python')
+optdepends=('bluez: for bluetooth transport'
+ 'gnunet-gtk: for handling the gnunet:// URI scheme'
+ 'libgabe: for Attribute-Based Encryption'
+ 'libogg: for conversation service'
+ 'libpabc: for re:claimID zero-knowledge privacy credentials'
+ 'libpulse: for conversation service'
+ 'miniupnpc: for NAT uPnP support'
+ 'mysql: for an alternative to sqlite in the database plugin'
+ 'opus: for conversation service'
+ 'pbc: for Attribute-Based Encryption'
+ 'postgresql: for an alternative to sqlite in the database plugin'
+ 'python: for test suite'
+ 'texi2mdoc: for automatic mdoc generation'
+ 'texinfo: for building the documentation'
+ 'texlive-core: for generating GNS business cards via gnunet-bcd'
+ 'zbar: for reading/writing QR codes using gnunet-qr')
+backup=("etc/${pkgname}.conf")
+source=("ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz"{,.sig}
+ "${pkgname}-system.service"
+ "${pkgname}.sysusers"
+ "${pkgname}.tmpfiles"
+ "${pkgname}-uri.desktop"
+ "${pkgname}-user.conf"
+ "${pkgname}-user.service")
+install="${pkgname}.install"
+validpgpkeys=('3D11063C10F98D14BD24D1470B0998EF86F59B6A')
+sha256sums=('6b2f7bf34c3c3986f2c294f04e881dda9db8ef636c0e78ebcf8084b8a47d49ca'
+ 'SKIP'
+ '163818b89beddcaf78937daba5bdf0ae060b2975de0731aa13d1ccdd813cf262'
+ '66299dbbdd0219d2f5f0520e69fc094f38f789724d973c2f63a421257ea4f755'
+ '5c34e1ecc6208900426f8e399e8c3edbef12cce19eba605fd7364ddb3547d9f0'
+ '98e4e1d6d4fd7c7fd05d9e16402c95f1e7afeb4b97c8c68ac63e8abd11ff4ee7'
+ '3f17b9ed2c1f8cc0f919fe477df99678c17778a31f1eeb56517e285e3cef30f2'
+ '60caee20b53bcc69522556b35ac3d35d89e28c49b9a22a2ed5121df4a2c33be5')
+
+prepare() {
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ export GNUNET_PREFIX='/usr/lib'
+ autoreconf -i
+
+}
+
+build() {
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix='/usr' --enable-experimental
+ make
+
+}
+
+package() {
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ install -dm755 "${pkgdir}/usr/lib/systemd/system"
+ install -Dm644 "${srcdir}/${pkgname}-system.service" \
+ "${pkgdir}/usr/lib/systemd/system/${pkgname}.service"
+
+ install -dm755 "${pkgdir}/usr/lib/systemd/user"
+ install -Dm644 "${srcdir}/${pkgname}-user.service" \
+ "${pkgdir}/usr/lib/systemd/user/${pkgname}.service"
+
+ install -dm755 "${pkgdir}/usr/lib/sysusers.d"
+ install -Dm644 "${srcdir}/${pkgname}.sysusers" \
+ "${pkgdir}/usr/lib/sysusers.d/${pkgname}.conf"
+
+ install -dm755 "${pkgdir}/usr/lib/tmpfiles.d"
+ install -Dm644 "${srcdir}/${pkgname}.tmpfiles" \
+ "${pkgdir}/usr/lib/tmpfiles.d/${pkgname}.conf"
+
+ install -dm755 "${pkgdir}/usr/share/applications"
+ install -Dm644 "${srcdir}/${pkgname}-uri.desktop" \
+ "${pkgdir}/usr/share/applications/${pkgname}-uri.desktop"
+
+ install -dm700 "${pkgdir}/etc/skel/.config"
+ install -Dm600 "${srcdir}/${pkgname}-user.conf" \
+ "${pkgdir}/etc/skel/.config/${pkgname}.conf"
+
+ # Automatically generate a configuration file using the content of
+ # `/usr/share/gnunet/config.d/` as model; in this way we can ensure
+ # that this configuration file is the one backed up with each update,
+ # while `/usr/share/gnunet/config.d/` is kept as immutable default
+ # configuration.
+
+ install -dm755 "${pkgdir}/etc"
+
+ {
+ echo "# /etc/${pkgname}.conf"
+ (cd "${pkgdir}" > /dev/null 2>&1 && find "usr/share/${pkgname}/config.d" -type f -name '*.conf' \
+ -printf '\n\n# For the default values of the the following lines please refer to\n# /%p\n\n' \
+ -exec cat '{}' ';')
+ } > "${pkgdir}/etc/${pkgname}.conf"
+
+}
diff --git a/contrib/packages/arch/gnunet/gnunet-system.service b/contrib/packages/arch/gnunet/gnunet-system.service
new file mode 100644
index 000000000..b429caf46
--- /dev/null
+++ b/contrib/packages/arch/gnunet/gnunet-system.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=GNUnet system service
+After=network.target
+
+[Service]
+Type=simple
+User=gnunet
+ExecStart=/usr/lib/gnunet/libexec/gnunet-service-arm -c /etc/gnunet.conf
+StateDirectory=gnunet
+StateDirectoryMode=0700
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/packages/arch/gnunet/gnunet-uri.desktop b/contrib/packages/arch/gnunet/gnunet-uri.desktop
new file mode 100644
index 000000000..4f847d20f
--- /dev/null
+++ b/contrib/packages/arch/gnunet/gnunet-uri.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=GNUnet URI
+Exec=gnunet-uri %u
+GenericName=URI handler for the GNUnet network
+Icon=gnunet
+Type=Application
+Terminal=false
+NoDisplay=true
+MimeType=x-scheme-handler/gnunet;
diff --git a/contrib/packages/arch/gnunet/gnunet-user.conf b/contrib/packages/arch/gnunet/gnunet-user.conf
new file mode 100644
index 000000000..22f1fe37a
--- /dev/null
+++ b/contrib/packages/arch/gnunet/gnunet-user.conf
@@ -0,0 +1,3 @@
+[arm]
+START_SYSTEM_SERVICES = NO
+START_USER_SERVICES = YES
diff --git a/contrib/packages/arch/gnunet/gnunet-user.service b/contrib/packages/arch/gnunet/gnunet-user.service
new file mode 100644
index 000000000..ae9f0d4f5
--- /dev/null
+++ b/contrib/packages/arch/gnunet/gnunet-user.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=GNUnet user service
+After=network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/lib/gnunet/libexec/gnunet-service-arm -c ~/.config/gnunet.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/packages/arch/gnunet/gnunet.install b/contrib/packages/arch/gnunet/gnunet.install
new file mode 100644
index 000000000..2560926d8
--- /dev/null
+++ b/contrib/packages/arch/gnunet/gnunet.install
@@ -0,0 +1,54 @@
+post_install() {
+
+ local _PWD_PAIRS_="$(awk -F ':' '$3>=1000 && $3<2000 {print $1":"$6}' '/etc/passwd')"
+ local _USER_
+ local _GROUP_
+ local _CFG_DIR_
+
+ for _PWD_PAIR_ in ${_PWD_PAIRS_}; do
+ _USER_="$(echo $_PWD_PAIR_ | cut -d ':' -f 1)"
+ _GROUP_="$(id -gn "${_USER_}")"
+ _CFG_DIR_="$(echo $_PWD_PAIR_ | cut -d ':' -f 2)/.config"
+ test -e "${_CFG_DIR_}/gnunet.conf" || (install -dm700 -o \
+ "${_USER_}" -g "${_GROUP_}" "${_CFG_DIR_}" && install \
+ -Dm600 -o "${_USER_}" -g "${_GROUP_}" \
+ '/etc/skel/.config/gnunet.conf' \
+ "${_CFG_DIR_}/gnunet.conf")
+ done
+
+ echo
+ echo 'Do not forget to add your user to the `gnunet` group, with'
+ echo
+ echo ' sudo usermod -aG gnunet "$(whoami)"'
+ echo
+ echo 'If later you want to remove your user from the group, launch'
+ echo
+ echo ' sudo gpasswd --delete "$(whoami)" gnunet'
+ echo
+ echo 'For information on how to use GNUnet plaese refer to the GNUnet article in the'
+ echo 'ArchWiki (https://wiki.archlinux.org/title/GNUnet).'
+ echo
+
+}
+
+post_remove() {
+
+ echo
+ echo 'The home directory of the `gnunet` user (`/var/lib/gnunet/`) is left after'
+ echo 'uninstalling GNUnet. If you are sure that you are never going to use GNUnet'
+ echo 'ever again, launch:'
+ echo
+ echo ' for username in $(getent group gnunet | cut -d: -f4 | tr '\'','\'' '\'' '\''); do \'
+ echo ' sudo gpasswd --delete "${username}" gnunet; done'
+ echo ' sudo userdel -r gnunet'
+ echo ' sudo groupdel gnunetdns'
+ echo
+ echo '**Warning** The identity and all the information about the network'
+ echo 'cumulatively stored by the current peer will be destroyed - this will not'
+ echo 'affect files explicitly downloaded in other paths.'
+ echo
+ echo 'For further information plaese refer to the GNUnet article in the ArchWiki'
+ echo '(https://wiki.archlinux.org/title/GNUnet).'
+ echo
+
+}
diff --git a/contrib/packages/arch/gnunet/gnunet.sysusers b/contrib/packages/arch/gnunet/gnunet.sysusers
new file mode 100644
index 000000000..163895934
--- /dev/null
+++ b/contrib/packages/arch/gnunet/gnunet.sysusers
@@ -0,0 +1,3 @@
+g gnunet -
+u gnunet - "GNUnet system account" /var/lib/gnunet
+g gnunetdns -
diff --git a/contrib/packages/arch/gnunet/gnunet.tmpfiles b/contrib/packages/arch/gnunet/gnunet.tmpfiles
new file mode 100644
index 000000000..5b0b4174d
--- /dev/null
+++ b/contrib/packages/arch/gnunet/gnunet.tmpfiles
@@ -0,0 +1,9 @@
+d /var/lib/gnunet 0700 gnunet gnunet - -
+z /usr/lib/gnunet/libexec/gnunet-helper-dns 4750 root gnunetdns - -
+z /usr/lib/gnunet/libexec/gnunet-helper-exit 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-nat-client 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-nat-server 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-transport-bluetooth 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-transport-wlan 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-helper-vpn 4755 root root - -
+z /usr/lib/gnunet/libexec/gnunet-service-dns 2750 gnunet gnunetdns - -
diff --git a/debian/changelog b/debian/changelog
index bf6682595..e342b202a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+gnunet (0.17.1) unstable; urgency=low
+
+ * Packaging latest release (with 7135 htonl fix).
+
+ -- Christian Grothoff <grothoff@gnu.org> Mon, 20 Jun 2022 21:14:18 +0200
+
gnunet (0.15.3-1) unstable; urgency=low
* Packaging latest code with bugfixes in libgnunetpq (and others) from upstream.
diff --git a/debian/libgnunet-dev.install b/debian/libgnunet-dev.install
index 90d8c987f..56fbde3ae 100644
--- a/debian/libgnunet-dev.install
+++ b/debian/libgnunet-dev.install
@@ -1,3 +1,4 @@
usr/include
usr/lib/*/*.so
usr/lib/*/pkgconfig
+usr/share/aclocal/gnunet.m4
diff --git a/doc/handbook/chapters/developer.texi b/doc/handbook/chapters/developer.texi
index 5f91a646e..c8905f2c1 100644
--- a/doc/handbook/chapters/developer.texi
+++ b/doc/handbook/chapters/developer.texi
@@ -9990,7 +9990,7 @@ Also MESSENGER provides multiple features with privacy in mind:
original sender (uses the MESSENGER provided verification)
@item MESSENGER allows using the publicly known anonymous ego instead of any
unique identifying ego
-@item MESSENGER allows your node to decide between acting as host of the used
+@item MESSENGER allows your node to decide between acting as relay of the used
messaging room (sharing your peer's identity with all nodes in the group)
or acting as guest (sharing your peer's identity only with the nodes you
explicitly open a connection to)
diff --git a/doc/handbook/chapters/user.texi b/doc/handbook/chapters/user.texi
index 0b44ab57c..d30c94c9b 100644
--- a/doc/handbook/chapters/user.texi
+++ b/doc/handbook/chapters/user.texi
@@ -2365,16 +2365,16 @@ that will terminate at the respective peer's service.
@section Using the GNUnet Messenger
The GNUnet Messenger subsystem allows decentralized message-based
-communication inside of so called rooms. Each room can be hosted by
+communication inside of so called rooms. Each room can be relayed by
a variable amount of peers. Every member of a room has the possibility
-to host the room on its own peer. A peer allows any amount of members
+to relay the room on its own peer. A peer allows any amount of members
to join a room. The amount of members in a room is not restricted.
-Messages in a room will be distributed between all peers hosting the
+Messages in a room will be distributed between all peers relaying the
room or being internally (in context of the messenger service) connected
-to a hosting peer. All received or sent messages will be stored on any
-peer locally which is hosting the respective room or is internally
-connected to such a hosting peer.
+to a relaying peer. All received or sent messages will be stored on any
+peer locally which is relaying the respective room or is internally
+connected to such a relaying peer.
The Messenger service is built on the CADET subsystem to make internal
connections between peers using a reliable and encrypted transmission.
@@ -2411,9 +2411,9 @@ library designed for messenger applications.
@node Entering a room
@subsection Entering a room
-You can enter any room by its ROOMKEY and any PEERIDENTITY of a hosting peer.
-Optionally you can provide any IDENTITY which can represent a local ego by
-its name.
+You can enter any room by its ROOMKEY and any PEERIDENTITY of a relaying
+peer. Optionally you can provide any IDENTITY which can represent a local
+ego by its name.
@example
$ gnunet-messenger [-e IDENTITY] -d PEERIDENTITY -r ROOMKEY
@@ -2441,14 +2441,14 @@ be distributed as your name for the service in any case.
@subsection Opening a room
You can open any room in a similar way to entering it. You just have to leave
-out the '-d' parameter and the PEERIDENTITY of the hosting peer.
+out the '-d' parameter and the PEERIDENTITY of the relaying peer.
@example
$ gnunet-messenger [-e IDENTITY] -r ROOMKEY
@end example
Providing ROOMKEY and IDENTITY is identical to entering a room. Opening a room
-will also make your peer to a host of this room. So others can enter the room
+will also make your peer to a relay of this room. So others can enter the room
through your peer if they have the required ROOMKEY and your peer ID.
If you want to use the zeroed hash as shared secret key for the room you can
diff --git a/doc/man/gnunet-config.1 b/doc/man/gnunet-config.1
index 93d943758..c454765cf 100644
--- a/doc/man/gnunet-config.1
+++ b/doc/man/gnunet-config.1
@@ -47,7 +47,7 @@
.Sh DESCRIPTION
.Nm
can be used to read or modify GNUnet configuration files.
-It can also provide informations to properly build applications on top of
+It can also provide information to properly build applications on top of
GNUnet, like appropriate values for CFLAGS or the installation prefix.
.Bl -tag -width indent
.It Fl b Ar BACKEND | Fl -supported-backend= Ns Ar BACKEND
diff --git a/doc/man/gnunet-search.1 b/doc/man/gnunet-search.1
index a3c6e8ece..3145842a4 100644
--- a/doc/man/gnunet-search.1
+++ b/doc/man/gnunet-search.1
@@ -90,7 +90,7 @@ defaults to
is missing too
.Fl -dir-printf
defaults to
-.Ql #%n:\engnunet-download -o "%f" -R %u\en\en Ns
+.Ql #%n:\engnunet-download -o Qo %f Qc -R %u\en\en Ns
\&.
.It Fl f Ar FORMAT | Fl -printf= Ns Ar FORMAT
Write the search results according to
@@ -171,7 +171,7 @@ character followed by any other character not listed above is treated as an ordi
If missing,
.Fl -printf
defaults to
-.Ql #%n:\engnunet-download -o "%f" %u\en\en Ns
+.Ql #%n:\engnunet-download -o Qo %f Qc %u\en\en Ns
\&.
.It Fl h | -help
Print the help page.
@@ -251,8 +251,8 @@ argument is required).
.It Fl t Ar DELAY | Fl -timeout= Ns Ar DELAY
Automatically timeout search after
.Ar DELAY .
-The value given must be a number followed by a space and a time unit, for example "500 ms".
-Note that the quotes are required on the shell. Without a unit it defaults to microseconds (1000000 = 1 second).
+The value given must be a number followed by a space and a time unit, for example
+.Qo 500 ms Qc . Note that the quotes are required on the shell. Without a unit it defaults to microseconds (1000000 = 1 second).
If 0 or omitted the search runs until gnunet-search is aborted with CTRL-C.
.It Fl v | -version
print the version number
diff --git a/po/de.po b/po/de.po
index b81215608..85674809e 100644
--- a/po/de.po
+++ b/po/de.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnunet 0.10.1\n"
"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2022-04-01 08:42+0200\n"
+"POT-Creation-Date: 2022-06-04 22:36+0200\n"
"PO-Revision-Date: 2015-03-08 16:16+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -32,7 +32,7 @@ msgid "Issuer public key `%s' is not well-formed\n"
msgstr ""
#: src/abd/gnunet-abd.c:558 src/abd/gnunet-service-abd.c:1751
-#: src/namestore/gnunet-namestore-fcfsd.c:1080
+#: src/namestore/gnunet-namestore-fcfsd.c:1096
#: src/namestore/gnunet-namestore.c:951
#, fuzzy, c-format
msgid "Failed to connect to namestore\n"
@@ -395,14 +395,14 @@ msgid "Require valid port number for service `%s' in configuration!\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:452 src/transport/plugin_transport_tcp.c:1163
-#: src/transport/tcp_service_legacy.c:634 src/util/client.c:527
+#: src/transport/tcp_service_legacy.c:634 src/util/client.c:529
#: src/util/service.c:1133
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:456 src/transport/plugin_transport_tcp.c:1167
-#: src/transport/tcp_service_legacy.c:638 src/util/client.c:532
+#: src/transport/tcp_service_legacy.c:638 src/util/client.c:534
#: src/util/service.c:1137
#, c-format
msgid "Using `%s' instead\n"
@@ -1507,7 +1507,7 @@ msgstr "# Bytes entschlüsselt"
#: src/core/gnunet-service-core_sessions.c:252
#: src/core/gnunet-service-core_sessions.c:337
-#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1520
+#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1519
#: src/topology/gnunet-daemon-topology.c:579
#: src/topology/gnunet-daemon-topology.c:671
#: src/transport/gnunet-service-transport_neighbours.c:723
@@ -3465,7 +3465,7 @@ msgstr "# verschlüsselter PING Nachrichten empfangen"
msgid "Migration of content to peer `%s' blocked for %s\n"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1343
+#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1342
msgid "# P2P searches active"
msgstr ""
@@ -3508,12 +3508,12 @@ msgstr "# gap Anfragen verworfen: Kollision in RT"
msgid "# requests dropped due TTL underflow"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:1339
+#: src/fs/gnunet-service-fs_cp.c:1338
#, fuzzy
msgid "# P2P query messages received and processed"
msgstr "# verschlüsselter PING Nachrichten empfangen"
-#: src/fs/gnunet-service-fs_cp.c:1709
+#: src/fs/gnunet-service-fs_cp.c:1708
#, fuzzy
msgid "# migration stop messages sent"
msgstr "# verschlüsselter PING Nachrichten empfangen"
@@ -3591,99 +3591,99 @@ msgstr "# dht Anfragen weitergeleitet"
msgid "# query plan entries"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:330
+#: src/fs/gnunet-service-fs_pr.c:325
#, fuzzy
msgid "# Pending requests created"
msgstr "# dht Anfragen weitergeleitet"
-#: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662
+#: src/fs/gnunet-service-fs_pr.c:416 src/fs/gnunet-service-fs_pr.c:654
#, fuzzy
msgid "# Pending requests active"
msgstr "# Client Trace-Anfragen empfangen"
-#: src/fs/gnunet-service-fs_pr.c:837
+#: src/fs/gnunet-service-fs_pr.c:829
#, fuzzy
msgid "# replies received and matched"
msgstr "# Bytes empfangen über TCP"
-#: src/fs/gnunet-service-fs_pr.c:911
+#: src/fs/gnunet-service-fs_pr.c:903
msgid "# results found locally"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1045
+#: src/fs/gnunet-service-fs_pr.c:1037
msgid "# Datastore `PUT' failures"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1074
+#: src/fs/gnunet-service-fs_pr.c:1066
#, fuzzy
msgid "# storage requests dropped due to high load"
msgstr "# Knotenankündigungen empfangen"
-#: src/fs/gnunet-service-fs_pr.c:1113
+#: src/fs/gnunet-service-fs_pr.c:1105
#, fuzzy
msgid "# Replies received from DHT"
msgstr "# Bytes empfangen über HTTP"
-#: src/fs/gnunet-service-fs_pr.c:1268
+#: src/fs/gnunet-service-fs_pr.c:1260
#, fuzzy
msgid "# Replies received from CADET"
msgstr "# Bytes empfangen über HTTP"
-#: src/fs/gnunet-service-fs_pr.c:1323
+#: src/fs/gnunet-service-fs_pr.c:1315
#, c-format
msgid "Datastore lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1344
+#: src/fs/gnunet-service-fs_pr.c:1336
#, c-format
msgid "On-demand lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1411
+#: src/fs/gnunet-service-fs_pr.c:1403
msgid "# requested DBLOCK or IBLOCK not found"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1473
+#: src/fs/gnunet-service-fs_pr.c:1465
msgid "# Datastore lookups concluded (error queueing)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1528
+#: src/fs/gnunet-service-fs_pr.c:1520
msgid "# Datastore lookups concluded (no results)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1543
+#: src/fs/gnunet-service-fs_pr.c:1535
msgid "# Datastore lookups concluded (seen all)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1558
msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1583
+#: src/fs/gnunet-service-fs_pr.c:1575
msgid "# on-demand blocks matched requests"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1604
+#: src/fs/gnunet-service-fs_pr.c:1596
msgid "# on-demand lookups performed successfully"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1610
+#: src/fs/gnunet-service-fs_pr.c:1602
msgid "# on-demand lookups failed"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1656
+#: src/fs/gnunet-service-fs_pr.c:1648
msgid "# Datastore lookups concluded (found last result)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1669
+#: src/fs/gnunet-service-fs_pr.c:1661
msgid "# Datastore lookups concluded (load too high)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1720
+#: src/fs/gnunet-service-fs_pr.c:1712
msgid "# Datastore lookups initiated"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1784
+#: src/fs/gnunet-service-fs_pr.c:1776
#, fuzzy
msgid "# GAP PUT messages received"
msgstr "# verschlüsselter PONG Nachrichten empfangen"
@@ -3732,12 +3732,12 @@ msgstr ""
msgid "Invalid port number %u\n"
msgstr "Ungültige Parameter. Abbruch.\n"
-#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1113
+#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1129
#, fuzzy
msgid "Unable to set up the daemon\n"
msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:987
+#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:992
#, fuzzy
msgid "Failed to start HTTP server\n"
msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
@@ -4064,35 +4064,35 @@ msgstr ""
msgid "Zone %s was revoked, resolution fails\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:136
+#: src/gns/plugin_gnsrecord_gns.c:138
msgid "This is a memento of an older block for internal maintenance."
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:175
+#: src/gns/plugin_gnsrecord_gns.c:177
#, fuzzy, c-format
msgid "Unable to parse zone key record `%s'\n"
msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
-#: src/gns/plugin_gnsrecord_gns.c:188
+#: src/gns/plugin_gnsrecord_gns.c:191
msgid "Record type does not match parsed record type\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:211
+#: src/gns/plugin_gnsrecord_gns.c:214
#, fuzzy, c-format
msgid "Unable to parse GNS2DNS record `%s'\n"
msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
-#: src/gns/plugin_gnsrecord_gns.c:227
+#: src/gns/plugin_gnsrecord_gns.c:231
#, fuzzy, c-format
msgid "Failed to serialize GNS2DNS record with value `%s': Not a DNS name.\n"
msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-#: src/gns/plugin_gnsrecord_gns.c:251
+#: src/gns/plugin_gnsrecord_gns.c:255
#, fuzzy, c-format
msgid "Unable to parse VPN record string `%s'\n"
msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
-#: src/gns/plugin_gnsrecord_gns.c:283
+#: src/gns/plugin_gnsrecord_gns.c:287
#, fuzzy, c-format
msgid "Unable to parse BOX record string `%s'\n"
msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
@@ -4701,7 +4701,7 @@ msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
msgid "Identity REST API initialized\n"
msgstr ""
-#: src/json/json.c:120
+#: src/json/json.c:130
#, fuzzy, c-format
msgid "Failed to parse JSON in option `%s': %s (%s)\n"
msgstr "Datei wurde als `%s' gespeichert.\n"
@@ -4817,101 +4817,106 @@ msgstr "Sqlite-Datenbank läuft\n"
msgid "Failed to setup database at `%s'\n"
msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:368
+#: src/namestore/gnunet-namestore-fcfsd.c:373
#, fuzzy
msgid "can not search the namestore"
msgstr "GNUnet testbed Controller starten."
-#: src/namestore/gnunet-namestore-fcfsd.c:422
-#: src/namestore/gnunet-namestore-fcfsd.c:563
+#: src/namestore/gnunet-namestore-fcfsd.c:427
+#: src/namestore/gnunet-namestore-fcfsd.c:568
#, fuzzy
msgid "unable to scan namestore"
msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:450
+#: src/namestore/gnunet-namestore-fcfsd.c:455
#, fuzzy, c-format
msgid "Failed to create record for `%s': %s\n"
msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:462
+#: src/namestore/gnunet-namestore-fcfsd.c:467
#, fuzzy
msgid "no errors"
msgstr "Unbekannter Fehler"
-#: src/namestore/gnunet-namestore-fcfsd.c:498
+#: src/namestore/gnunet-namestore-fcfsd.c:503
#, c-format
msgid "The requested key `%s' exists as `%s'\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:505
+#: src/namestore/gnunet-namestore-fcfsd.c:510
msgid "key exists"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:522
+#: src/namestore/gnunet-namestore-fcfsd.c:527
#, fuzzy
msgid "Error creating record data\n"
msgstr "=\tFehler beim Lesen des Verzeichnisses.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:526
+#: src/namestore/gnunet-namestore-fcfsd.c:531
#, fuzzy
msgid "unable to store record"
msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:597
+#: src/namestore/gnunet-namestore-fcfsd.c:602
#, c-format
msgid "Requested name `%s' exists with `%u' records\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:603
+#: src/namestore/gnunet-namestore-fcfsd.c:608
msgid "name exists\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:789
+#: src/namestore/gnunet-namestore-fcfsd.c:794
msgid "unable to process submitted data"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:800
+#: src/namestore/gnunet-namestore-fcfsd.c:805
msgid "the submitted data is invalid"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:819
+#: src/namestore/gnunet-namestore-fcfsd.c:824
#, fuzzy
msgid "invalid parameters"
msgstr "Ungültiges Argument »%s«\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:836
+#: src/namestore/gnunet-namestore-fcfsd.c:841
#, fuzzy
msgid "invalid name"
msgstr "Ungültiges Argument »%s«\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:847
+#: src/namestore/gnunet-namestore-fcfsd.c:852
#, fuzzy, c-format
msgid "Unable to parse key %s\n"
msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:851
+#: src/namestore/gnunet-namestore-fcfsd.c:856
#, fuzzy
msgid "unable to parse key"
msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:962
+#: src/namestore/gnunet-namestore-fcfsd.c:967
msgid "No ego configured for `fcfsd` subsystem\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
+#: src/namestore/gnunet-namestore-fcfsd.c:1076
+#, fuzzy
+msgid "No expiration specified for records.\n"
+msgstr "Keine Kommandos angegeben.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1087
msgid "No port specified, using default value\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1089
+#: src/namestore/gnunet-namestore-fcfsd.c:1105
#, fuzzy
msgid "Failed to connect to identity\n"
msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1136
+#: src/namestore/gnunet-namestore-fcfsd.c:1152
msgid "name of the zone managed by FCFSD"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1145
+#: src/namestore/gnunet-namestore-fcfsd.c:1161
msgid "GNU Name System First-Come-First-Served name registration service"
msgstr ""
@@ -5125,17 +5130,17 @@ msgstr ""
msgid "Failed to replicate block in namecache: %s\n"
msgstr ""
-#: src/namestore/gnunet-service-namestore.c:1559
+#: src/namestore/gnunet-service-namestore.c:1557
#, fuzzy
msgid "Error normalizing name."
msgstr "Fehler beim Anlegen des Tunnels\n"
-#: src/namestore/gnunet-service-namestore.c:1582
+#: src/namestore/gnunet-service-namestore.c:1580
#, fuzzy
msgid "Error deserializing records."
msgstr "=\tFehler beim Lesen des Verzeichnisses.\n"
-#: src/namestore/gnunet-service-namestore.c:1691
+#: src/namestore/gnunet-service-namestore.c:1689
#, fuzzy
msgid "Store failed"
msgstr "Verbindung fehlgeschlagen: %s\n"
@@ -5648,16 +5653,16 @@ msgstr ""
msgid "Could not load database backend `%s'\n"
msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
-#: src/peerstore/peerstore_api.c:594 src/peerstore/peerstore_api.c:642
+#: src/peerstore/peerstore_api.c:603 src/peerstore/peerstore_api.c:651
msgid "Unexpected iteration response, this should not happen.\n"
msgstr ""
-#: src/peerstore/peerstore_api.c:656
+#: src/peerstore/peerstore_api.c:665
#, fuzzy
msgid "Received a malformed response from service."
msgstr "Beschädigte Antwort auf `%s' von Knoten `%s' empfangen.\n"
-#: src/peerstore/peerstore_api.c:781
+#: src/peerstore/peerstore_api.c:790
msgid "Received a watch result for a non existing watch.\n"
msgstr ""
@@ -6885,7 +6890,7 @@ msgstr ""
#: src/transport/gnunet-communicator-tcp.c:3338
#: src/transport/gnunet-communicator-udp.c:3867
-#: src/transport/gnunet-service-tng.c:10926
+#: src/transport/gnunet-service-tng.c:11042
#: src/transport/gnunet-service-transport.c:2627
msgid "Transport service is lacking key configuration settings. Exiting.\n"
msgstr ""
@@ -8079,11 +8084,11 @@ msgstr "Ungültiger Parameter: `%s'\n"
msgid "Failed to serialize metadata `%s'"
msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-#: src/util/client.c:747 src/util/client.c:938
+#: src/util/client.c:749 src/util/client.c:940
msgid "not a valid filename"
msgstr ""
-#: src/util/client.c:1104
+#: src/util/client.c:1106
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
@@ -8237,7 +8242,7 @@ msgstr ""
msgid "failed to load configuration defaults"
msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
-#: src/util/container_bloomfilter.c:547
+#: src/util/container_bloomfilter.c:548
#, c-format
msgid ""
"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -8259,7 +8264,7 @@ msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n"
msgid "Could not load peer's private key\n"
msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
-#: src/util/crypto_random.c:381
+#: src/util/crypto_random.c:385
#, c-format
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr ""
@@ -8497,7 +8502,7 @@ msgstr ""
msgid "Manipulate GNUnet configuration files"
msgstr "GNUnet-Konfigurationsdateien bearbeiten"
-#: src/util/gnunet-crypto-tvg.c:1483
+#: src/util/gnunet-crypto-tvg.c:1522
msgid "verify a test vector from stdin"
msgstr ""
diff --git a/po/es.po b/po/es.po
index cf7e0b79d..a6c044142 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnunet 0.9.5a\n"
"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2022-04-01 08:42+0200\n"
+"POT-Creation-Date: 2022-06-04 22:36+0200\n"
"PO-Revision-Date: 2013-02-23 17:50+0100\n"
"Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -29,7 +29,7 @@ msgid "Issuer public key `%s' is not well-formed\n"
msgstr "El bloque del tipo %u está mal formado\n"
#: src/abd/gnunet-abd.c:558 src/abd/gnunet-service-abd.c:1751
-#: src/namestore/gnunet-namestore-fcfsd.c:1080
+#: src/namestore/gnunet-namestore-fcfsd.c:1096
#: src/namestore/gnunet-namestore.c:951
#, c-format
msgid "Failed to connect to namestore\n"
@@ -409,7 +409,7 @@ msgstr ""
"configuración!\n"
#: src/arm/gnunet-service-arm.c:452 src/transport/plugin_transport_tcp.c:1163
-#: src/transport/tcp_service_legacy.c:634 src/util/client.c:527
+#: src/transport/tcp_service_legacy.c:634 src/util/client.c:529
#: src/util/service.c:1133
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
@@ -417,7 +417,7 @@ msgstr ""
"La ruta tipo UNIX «%s» es demasiado larga, la longitud máxima es %llu\n"
#: src/arm/gnunet-service-arm.c:456 src/transport/plugin_transport_tcp.c:1167
-#: src/transport/tcp_service_legacy.c:638 src/util/client.c:532
+#: src/transport/tcp_service_legacy.c:638 src/util/client.c:534
#: src/util/service.c:1137
#, c-format
msgid "Using `%s' instead\n"
@@ -1577,7 +1577,7 @@ msgstr "# bytes de «payload» descifrados"
#: src/core/gnunet-service-core_sessions.c:252
#: src/core/gnunet-service-core_sessions.c:337
-#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1520
+#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1519
#: src/topology/gnunet-daemon-topology.c:579
#: src/topology/gnunet-daemon-topology.c:671
#: src/transport/gnunet-service-transport_neighbours.c:723
@@ -3600,7 +3600,7 @@ msgstr "# mensajes de detención de migración recibidos"
msgid "Migration of content to peer `%s' blocked for %s\n"
msgstr "Migración de contenido al par «%s» bloqueada durante %s\n"
-#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1343
+#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1342
msgid "# P2P searches active"
msgstr "# busquedas P2P activas"
@@ -3641,11 +3641,11 @@ msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
msgid "# requests dropped due TTL underflow"
msgstr "# peticiones omitidas debido a expiración del TTL"
-#: src/fs/gnunet-service-fs_cp.c:1339
+#: src/fs/gnunet-service-fs_cp.c:1338
msgid "# P2P query messages received and processed"
msgstr "# mensajes de búsqueda P2P recibidos y procesados"
-#: src/fs/gnunet-service-fs_cp.c:1709
+#: src/fs/gnunet-service-fs_cp.c:1708
msgid "# migration stop messages sent"
msgstr "# mensajes de detención de migración enviados"
@@ -3725,95 +3725,95 @@ msgstr "# peticiones refrescadas"
msgid "# query plan entries"
msgstr "# entradas de planes de búsqueda"
-#: src/fs/gnunet-service-fs_pr.c:330
+#: src/fs/gnunet-service-fs_pr.c:325
msgid "# Pending requests created"
msgstr "# Peticiones pendientes creadas"
-#: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662
+#: src/fs/gnunet-service-fs_pr.c:416 src/fs/gnunet-service-fs_pr.c:654
msgid "# Pending requests active"
msgstr "# Peticiones pendientes activas"
-#: src/fs/gnunet-service-fs_pr.c:837
+#: src/fs/gnunet-service-fs_pr.c:829
msgid "# replies received and matched"
msgstr "# respuestas recibidas y asociadas"
-#: src/fs/gnunet-service-fs_pr.c:911
+#: src/fs/gnunet-service-fs_pr.c:903
msgid "# results found locally"
msgstr "# resultados hallados localmente"
-#: src/fs/gnunet-service-fs_pr.c:1045
+#: src/fs/gnunet-service-fs_pr.c:1037
msgid "# Datastore `PUT' failures"
msgstr "# «PUT» en el almacén de datos fallidos"
-#: src/fs/gnunet-service-fs_pr.c:1074
+#: src/fs/gnunet-service-fs_pr.c:1066
msgid "# storage requests dropped due to high load"
msgstr "# peticiones de almacenamiento omitidas debido a alta carga"
-#: src/fs/gnunet-service-fs_pr.c:1113
+#: src/fs/gnunet-service-fs_pr.c:1105
msgid "# Replies received from DHT"
msgstr "# Respuestas recibidas de la DHT"
-#: src/fs/gnunet-service-fs_pr.c:1268
+#: src/fs/gnunet-service-fs_pr.c:1260
#, fuzzy
msgid "# Replies received from CADET"
msgstr "# Respuestas recibidas de la DHT"
-#: src/fs/gnunet-service-fs_pr.c:1323
+#: src/fs/gnunet-service-fs_pr.c:1315
#, c-format
msgid "Datastore lookup already took %s!\n"
msgstr "¡La búsqueda en el almacén de datos toma %s!\n"
-#: src/fs/gnunet-service-fs_pr.c:1344
+#: src/fs/gnunet-service-fs_pr.c:1336
#, c-format
msgid "On-demand lookup already took %s!\n"
msgstr "¡La búsqueda en bajo demanda toma %s!\n"
-#: src/fs/gnunet-service-fs_pr.c:1411
+#: src/fs/gnunet-service-fs_pr.c:1403
msgid "# requested DBLOCK or IBLOCK not found"
msgstr "# «DBLOCK» o «IBLOCK» pedido no encontrado"
-#: src/fs/gnunet-service-fs_pr.c:1473
+#: src/fs/gnunet-service-fs_pr.c:1465
msgid "# Datastore lookups concluded (error queueing)"
msgstr "# Búsquedas en el almacén de datos finalizadas (error encolando)"
-#: src/fs/gnunet-service-fs_pr.c:1528
+#: src/fs/gnunet-service-fs_pr.c:1520
msgid "# Datastore lookups concluded (no results)"
msgstr "# Búsquedas en el almacén de datos finalizadas (sin resultados)"
-#: src/fs/gnunet-service-fs_pr.c:1543
+#: src/fs/gnunet-service-fs_pr.c:1535
msgid "# Datastore lookups concluded (seen all)"
msgstr "# Búsquedas en el almacén de datos finalizadas (vistos todos)"
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1558
msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
msgstr "# Búsquedas en el almacén de datos finalizadas (más de «MAX_RESULTS»)"
-#: src/fs/gnunet-service-fs_pr.c:1583
+#: src/fs/gnunet-service-fs_pr.c:1575
msgid "# on-demand blocks matched requests"
msgstr "# peticiones asociadas de bloques bajo demanda"
-#: src/fs/gnunet-service-fs_pr.c:1604
+#: src/fs/gnunet-service-fs_pr.c:1596
msgid "# on-demand lookups performed successfully"
msgstr "# búsquedas satisfactorias de bloques bajo demanda"
-#: src/fs/gnunet-service-fs_pr.c:1610
+#: src/fs/gnunet-service-fs_pr.c:1602
msgid "# on-demand lookups failed"
msgstr "# búsquedas fallidas de bloques bajo demanda"
-#: src/fs/gnunet-service-fs_pr.c:1656
+#: src/fs/gnunet-service-fs_pr.c:1648
msgid "# Datastore lookups concluded (found last result)"
msgstr ""
"# Búsquedas en el almacén de datos finalizadas (encontrado último resultado)"
-#: src/fs/gnunet-service-fs_pr.c:1669
+#: src/fs/gnunet-service-fs_pr.c:1661
msgid "# Datastore lookups concluded (load too high)"
msgstr "# Búsquedas en el almacén de datos finalizadas (carga demasiado alta)"
-#: src/fs/gnunet-service-fs_pr.c:1720
+#: src/fs/gnunet-service-fs_pr.c:1712
msgid "# Datastore lookups initiated"
msgstr "# Búsquedas en el almacén de datos iniciadas"
-#: src/fs/gnunet-service-fs_pr.c:1784
+#: src/fs/gnunet-service-fs_pr.c:1776
msgid "# GAP PUT messages received"
msgstr "# Mensajes «GAP PUT» recibidos"
@@ -3857,12 +3857,12 @@ msgstr ""
msgid "Invalid port number %u\n"
msgstr "Número de puerto %llu no válido. Saliendo.\n"
-#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1113
+#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1129
#, fuzzy
msgid "Unable to set up the daemon\n"
msgstr "Imposible crear la cuenta de usuario:"
-#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:987
+#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:992
msgid "Failed to start HTTP server\n"
msgstr "Se produjo un fallo al iniciar el servidor HTTP\n"
@@ -4193,37 +4193,37 @@ msgstr ""
msgid "Zone %s was revoked, resolution fails\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:136
+#: src/gns/plugin_gnsrecord_gns.c:138
msgid "This is a memento of an older block for internal maintenance."
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:175
+#: src/gns/plugin_gnsrecord_gns.c:177
#, fuzzy, c-format
msgid "Unable to parse zone key record `%s'\n"
msgstr "No se pudo procesar el registro MX «%s»\n"
-#: src/gns/plugin_gnsrecord_gns.c:188
+#: src/gns/plugin_gnsrecord_gns.c:191
msgid "Record type does not match parsed record type\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:211
+#: src/gns/plugin_gnsrecord_gns.c:214
#, fuzzy, c-format
msgid "Unable to parse GNS2DNS record `%s'\n"
msgstr "No se pudo procesar el registro SOA «%s»\n"
-#: src/gns/plugin_gnsrecord_gns.c:227
+#: src/gns/plugin_gnsrecord_gns.c:231
#, fuzzy, c-format
msgid "Failed to serialize GNS2DNS record with value `%s': Not a DNS name.\n"
msgstr ""
"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
"de «%s»\n"
-#: src/gns/plugin_gnsrecord_gns.c:251
+#: src/gns/plugin_gnsrecord_gns.c:255
#, c-format
msgid "Unable to parse VPN record string `%s'\n"
msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
-#: src/gns/plugin_gnsrecord_gns.c:283
+#: src/gns/plugin_gnsrecord_gns.c:287
#, fuzzy, c-format
msgid "Unable to parse BOX record string `%s'\n"
msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
@@ -4871,7 +4871,7 @@ msgstr "Se produjo un fallo al leer el directorio «%s»\n"
msgid "Identity REST API initialized\n"
msgstr "Conexión fallida\n"
-#: src/json/json.c:120
+#: src/json/json.c:130
#, fuzzy, c-format
msgid "Failed to parse JSON in option `%s': %s (%s)\n"
msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
@@ -4988,103 +4988,108 @@ msgstr "Base de datos sqlite ejecutándose\n"
msgid "Failed to setup database at `%s'\n"
msgstr "Se produjo un fallo al inciar «%s» en «%s»\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:368
+#: src/namestore/gnunet-namestore-fcfsd.c:373
#, fuzzy
msgid "can not search the namestore"
msgstr "No se puede iniciar el controlador maestro"
-#: src/namestore/gnunet-namestore-fcfsd.c:422
-#: src/namestore/gnunet-namestore-fcfsd.c:563
+#: src/namestore/gnunet-namestore-fcfsd.c:427
+#: src/namestore/gnunet-namestore-fcfsd.c:568
#, fuzzy
msgid "unable to scan namestore"
msgstr "Se produjo un fallo al conectar con el almacén de nombres\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:450
+#: src/namestore/gnunet-namestore-fcfsd.c:455
#, fuzzy, c-format
msgid "Failed to create record for `%s': %s\n"
msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:462
+#: src/namestore/gnunet-namestore-fcfsd.c:467
#, fuzzy
msgid "no errors"
msgstr "error desconocido"
-#: src/namestore/gnunet-namestore-fcfsd.c:498
+#: src/namestore/gnunet-namestore-fcfsd.c:503
#, fuzzy, c-format
msgid "The requested key `%s' exists as `%s'\n"
msgstr "Creada la entrada '%s' en el espacio '%s'\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:505
+#: src/namestore/gnunet-namestore-fcfsd.c:510
msgid "key exists"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:522
+#: src/namestore/gnunet-namestore-fcfsd.c:527
#, fuzzy
msgid "Error creating record data\n"
msgstr "Error interno escaneando directorio.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:526
+#: src/namestore/gnunet-namestore-fcfsd.c:531
#, fuzzy
msgid "unable to store record"
msgstr "El almacén de nombres no pudo añadir el registro\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:597
+#: src/namestore/gnunet-namestore-fcfsd.c:602
#, c-format
msgid "Requested name `%s' exists with `%u' records\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:603
+#: src/namestore/gnunet-namestore-fcfsd.c:608
msgid "name exists\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:789
+#: src/namestore/gnunet-namestore-fcfsd.c:794
msgid "unable to process submitted data"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:800
+#: src/namestore/gnunet-namestore-fcfsd.c:805
msgid "the submitted data is invalid"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:819
+#: src/namestore/gnunet-namestore-fcfsd.c:824
#, fuzzy
msgid "invalid parameters"
msgstr "Parámetro no válido «%s»\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:836
+#: src/namestore/gnunet-namestore-fcfsd.c:841
#, fuzzy
msgid "invalid name"
msgstr "Parámetro no válido «%s»\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:847
+#: src/namestore/gnunet-namestore-fcfsd.c:852
#, fuzzy, c-format
msgid "Unable to parse key %s\n"
msgstr "No se pudo procesar el registro MX «%s»\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:851
+#: src/namestore/gnunet-namestore-fcfsd.c:856
#, fuzzy
msgid "unable to parse key"
msgstr "No se pudo procesar el registro MX «%s»\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:962
+#: src/namestore/gnunet-namestore-fcfsd.c:967
msgid "No ego configured for `fcfsd` subsystem\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
+#: src/namestore/gnunet-namestore-fcfsd.c:1076
+#, fuzzy
+msgid "No expiration specified for records.\n"
+msgstr "Ninguna interfaz especificada, usando la marcada por defecto\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1087
#, fuzzy
msgid "No port specified, using default value\n"
msgstr ""
"La configuración no especifica «%s», asumiendo el valor predeterminado."
-#: src/namestore/gnunet-namestore-fcfsd.c:1089
+#: src/namestore/gnunet-namestore-fcfsd.c:1105
#, fuzzy
msgid "Failed to connect to identity\n"
msgstr "Se produjo un fallo al conectar con GNS\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1136
+#: src/namestore/gnunet-namestore-fcfsd.c:1152
msgid "name of the zone managed by FCFSD"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1145
+#: src/namestore/gnunet-namestore-fcfsd.c:1161
#, fuzzy
msgid "GNU Name System First-Come-First-Served name registration service"
msgstr "Servicio de registro GNUnet GNS primero en llegar, primero en servirse"
@@ -5305,17 +5310,17 @@ msgstr "nombre de la sección a la que acceder"
msgid "Failed to replicate block in namecache: %s\n"
msgstr "Se produjo un fallo al crear el espacio de nombres «%s»\n"
-#: src/namestore/gnunet-service-namestore.c:1559
+#: src/namestore/gnunet-service-namestore.c:1557
#, fuzzy
msgid "Error normalizing name."
msgstr "Error creando el túnel\n"
-#: src/namestore/gnunet-service-namestore.c:1582
+#: src/namestore/gnunet-service-namestore.c:1580
#, fuzzy
msgid "Error deserializing records."
msgstr "Error interno escaneando directorio.\n"
-#: src/namestore/gnunet-service-namestore.c:1691
+#: src/namestore/gnunet-service-namestore.c:1689
#, fuzzy
msgid "Store failed"
msgstr "«gnunet-ecc» falló"
@@ -5841,17 +5846,17 @@ msgstr ""
msgid "Could not load database backend `%s'\n"
msgstr "No se pudo leer el fichero de la lista negra «%s»\n"
-#: src/peerstore/peerstore_api.c:594 src/peerstore/peerstore_api.c:642
+#: src/peerstore/peerstore_api.c:603 src/peerstore/peerstore_api.c:651
#, fuzzy
msgid "Unexpected iteration response, this should not happen.\n"
msgstr "El formato de salida es desconocido, ésto no debería pasar.\n"
-#: src/peerstore/peerstore_api.c:656
+#: src/peerstore/peerstore_api.c:665
#, fuzzy
msgid "Received a malformed response from service."
msgstr "Recibida petición DNS mal formada de %s\n"
-#: src/peerstore/peerstore_api.c:781
+#: src/peerstore/peerstore_api.c:790
msgid "Received a watch result for a non existing watch.\n"
msgstr ""
@@ -7128,7 +7133,7 @@ msgstr ""
#: src/transport/gnunet-communicator-tcp.c:3338
#: src/transport/gnunet-communicator-udp.c:3867
-#: src/transport/gnunet-service-tng.c:10926
+#: src/transport/gnunet-service-tng.c:11042
#: src/transport/gnunet-service-transport.c:2627
#, fuzzy
msgid "Transport service is lacking key configuration settings. Exiting.\n"
@@ -8390,11 +8395,11 @@ msgstr "Formato de tiempo no válido «%s»\n"
msgid "Failed to serialize metadata `%s'"
msgstr "Se produjo un fallo al serializar metadatos"
-#: src/util/client.c:747 src/util/client.c:938
+#: src/util/client.c:749 src/util/client.c:940
msgid "not a valid filename"
msgstr ""
-#: src/util/client.c:1104
+#: src/util/client.c:1106
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr "Se necesita un nombre de máquina no vacío para el servicio «%s».\n"
@@ -8549,7 +8554,7 @@ msgstr "el parámetro --option es necesario para establecer un valor\n"
msgid "failed to load configuration defaults"
msgstr "Se produjo un fallo al cargar la configuración de %s\n"
-#: src/util/container_bloomfilter.c:547
+#: src/util/container_bloomfilter.c:548
#, c-format
msgid ""
"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -8573,7 +8578,7 @@ msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n"
msgid "Could not load peer's private key\n"
msgstr "No se pudo acceder a la clave de máquina.\n"
-#: src/util/crypto_random.c:381
+#: src/util/crypto_random.c:385
#, c-format
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "libgcrypt no tiene la versión esperada (se necesita la versión %s).\n"
@@ -8811,7 +8816,7 @@ msgstr ""
msgid "Manipulate GNUnet configuration files"
msgstr "Manipular ficheros de configuración de GNUnet"
-#: src/util/gnunet-crypto-tvg.c:1483
+#: src/util/gnunet-crypto-tvg.c:1522
msgid "verify a test vector from stdin"
msgstr ""
@@ -11424,8 +11429,8 @@ msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
#~ "%llu, omitiendo bytes.\n"
#~ msgid ""
-#~ "Syntax error in topology specification at offset %llu, skipping bytes `"
-#~ "%s'.\n"
+#~ "Syntax error in topology specification at offset %llu, skipping bytes "
+#~ "`%s'.\n"
#~ msgstr ""
#~ "Error de sintaxis en la especificación de topología en el desplazamiento "
#~ "%llu, omitiendo bytes «%s».\n"
@@ -12986,10 +12991,10 @@ msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
#~ "You can specify a hostname, GNUnet will then use DNS to resolve it.\n"
#~ "If in doubt, leave this empty."
#~ msgstr ""
-#~ "Si tu proveedor siempre te asigna la misma dirección IP (una IP \"estática"
-#~ "\") introducela en el campo \"Dirección IP\". Si tu dirección IP cambia "
-#~ "pero hay un nombre de dominio que siempre apunta a tu dirección IP actual "
-#~ "(\"DNS dinámica\"), puedes introducirlo allí también.\n"
+#~ "Si tu proveedor siempre te asigna la misma dirección IP (una IP "
+#~ "\"estática\") introducela en el campo \"Dirección IP\". Si tu dirección "
+#~ "IP cambia pero hay un nombre de dominio que siempre apunta a tu dirección "
+#~ "IP actual (\"DNS dinámica\"), puedes introducirlo allí también.\n"
#~ "En caso de duda deja el campo en blanco. GNUnet intentará determinar tu "
#~ "dirección IP"
@@ -14359,8 +14364,8 @@ msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
#~ "SNAT, a un router o a un \"cortafuegos de hardware\" y otros ordenadores "
#~ "no pueden conectar con tu ordenador marca la última opción en ésta "
#~ "página. Déjala sin marcar en conexiones directas a través de modems, "
-#~ "tarjetas de RDSI y DNAT (también conocido como \"seguimiento de puertos"
-#~ "\")."
+#~ "tarjetas de RDSI y DNAT (también conocido como \"seguimiento de "
+#~ "puertos\")."
#~ msgid "Computer cannot receive inbound connections (SNAT/Firewall)"
#~ msgstr ""
@@ -14797,10 +14802,10 @@ msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
#~ "\n"
#~ "Si tu estás conectado a Internet a través de otro ordenador haciendo "
#~ "SNAT, un router o un \"cortafuegos de hardware\" y otros ordenadores no "
-#~ "pueden conectarse al tuyo a través de Internet directamente, responde \"si"
-#~ "\" aquí. Responde \"no\" en conexiones directas a través de módems, "
-#~ "tarjetas de RDSI y DNAT (también conocido como \"seguimiento de puertos"
-#~ "\")."
+#~ "pueden conectarse al tuyo a través de Internet directamente, responde "
+#~ "\"si\" aquí. Responde \"no\" en conexiones directas a través de módems, "
+#~ "tarjetas de RDSI y DNAT (también conocido como \"seguimiento de "
+#~ "puertos\")."
#, fuzzy
#~ msgid "Run gnunetd as this user."
@@ -15053,8 +15058,8 @@ msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
#~ msgstr "Recibido mensaje UDP no válido del %u.%u.%u.%u:%u, omitiendo.\n"
#~ msgid ""
-#~ "Configuration file must specify directory for storing FS data in section `"
-#~ "%s' under `%s'.\n"
+#~ "Configuration file must specify directory for storing FS data in section "
+#~ "`%s' under `%s'.\n"
#~ msgstr ""
#~ "El fichero de configuración debe especificar el directorio para almacenar "
#~ "los datos FS en la sección '%s' bajo '%s'.\n"
diff --git a/po/fr.po b/po/fr.po
index 2602072af..a1e383fb7 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnunet 0.10.1\n"
"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2022-04-01 08:42+0200\n"
+"POT-Creation-Date: 2022-06-04 22:36+0200\n"
"PO-Revision-Date: 2021-11-21 00:53+0100\n"
"Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
"Language-Team: French <traduc@traduc.org>\n"
@@ -28,7 +28,7 @@ msgid "Issuer public key `%s' is not well-formed\n"
msgstr ""
#: src/abd/gnunet-abd.c:558 src/abd/gnunet-service-abd.c:1751
-#: src/namestore/gnunet-namestore-fcfsd.c:1080
+#: src/namestore/gnunet-namestore-fcfsd.c:1096
#: src/namestore/gnunet-namestore.c:951
#, c-format
msgid "Failed to connect to namestore\n"
@@ -387,14 +387,14 @@ msgid "Require valid port number for service `%s' in configuration!\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:452 src/transport/plugin_transport_tcp.c:1163
-#: src/transport/tcp_service_legacy.c:634 src/util/client.c:527
+#: src/transport/tcp_service_legacy.c:634 src/util/client.c:529
#: src/util/service.c:1133
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:456 src/transport/plugin_transport_tcp.c:1167
-#: src/transport/tcp_service_legacy.c:638 src/util/client.c:532
+#: src/transport/tcp_service_legacy.c:638 src/util/client.c:534
#: src/util/service.c:1137
#, c-format
msgid "Using `%s' instead\n"
@@ -1463,7 +1463,7 @@ msgstr ""
#: src/core/gnunet-service-core_sessions.c:252
#: src/core/gnunet-service-core_sessions.c:337
-#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1520
+#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1519
#: src/topology/gnunet-daemon-topology.c:579
#: src/topology/gnunet-daemon-topology.c:671
#: src/transport/gnunet-service-transport_neighbours.c:723
@@ -3324,7 +3324,7 @@ msgstr ""
msgid "Migration of content to peer `%s' blocked for %s\n"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1343
+#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1342
msgid "# P2P searches active"
msgstr ""
@@ -3364,11 +3364,11 @@ msgstr ""
msgid "# requests dropped due TTL underflow"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:1339
+#: src/fs/gnunet-service-fs_cp.c:1338
msgid "# P2P query messages received and processed"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:1709
+#: src/fs/gnunet-service-fs_cp.c:1708
msgid "# migration stop messages sent"
msgstr ""
@@ -3442,93 +3442,93 @@ msgstr ""
msgid "# query plan entries"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:330
+#: src/fs/gnunet-service-fs_pr.c:325
msgid "# Pending requests created"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662
+#: src/fs/gnunet-service-fs_pr.c:416 src/fs/gnunet-service-fs_pr.c:654
msgid "# Pending requests active"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:837
+#: src/fs/gnunet-service-fs_pr.c:829
msgid "# replies received and matched"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:911
+#: src/fs/gnunet-service-fs_pr.c:903
msgid "# results found locally"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1045
+#: src/fs/gnunet-service-fs_pr.c:1037
msgid "# Datastore `PUT' failures"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1074
+#: src/fs/gnunet-service-fs_pr.c:1066
msgid "# storage requests dropped due to high load"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1113
+#: src/fs/gnunet-service-fs_pr.c:1105
msgid "# Replies received from DHT"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1268
+#: src/fs/gnunet-service-fs_pr.c:1260
msgid "# Replies received from CADET"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1323
+#: src/fs/gnunet-service-fs_pr.c:1315
#, c-format
msgid "Datastore lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1344
+#: src/fs/gnunet-service-fs_pr.c:1336
#, c-format
msgid "On-demand lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1411
+#: src/fs/gnunet-service-fs_pr.c:1403
msgid "# requested DBLOCK or IBLOCK not found"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1473
+#: src/fs/gnunet-service-fs_pr.c:1465
msgid "# Datastore lookups concluded (error queueing)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1528
+#: src/fs/gnunet-service-fs_pr.c:1520
msgid "# Datastore lookups concluded (no results)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1543
+#: src/fs/gnunet-service-fs_pr.c:1535
msgid "# Datastore lookups concluded (seen all)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1558
msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1583
+#: src/fs/gnunet-service-fs_pr.c:1575
msgid "# on-demand blocks matched requests"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1604
+#: src/fs/gnunet-service-fs_pr.c:1596
msgid "# on-demand lookups performed successfully"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1610
+#: src/fs/gnunet-service-fs_pr.c:1602
msgid "# on-demand lookups failed"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1656
+#: src/fs/gnunet-service-fs_pr.c:1648
msgid "# Datastore lookups concluded (found last result)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1669
+#: src/fs/gnunet-service-fs_pr.c:1661
msgid "# Datastore lookups concluded (load too high)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1720
+#: src/fs/gnunet-service-fs_pr.c:1712
msgid "# Datastore lookups initiated"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1784
+#: src/fs/gnunet-service-fs_pr.c:1776
msgid "# GAP PUT messages received"
msgstr ""
@@ -3572,11 +3572,11 @@ msgstr ""
msgid "Invalid port number %u\n"
msgstr "Argument invalide « %s »\n"
-#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1113
+#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1129
msgid "Unable to set up the daemon\n"
msgstr ""
-#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:987
+#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:992
msgid "Failed to start HTTP server\n"
msgstr ""
@@ -3891,35 +3891,35 @@ msgstr ""
msgid "Zone %s was revoked, resolution fails\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:136
+#: src/gns/plugin_gnsrecord_gns.c:138
msgid "This is a memento of an older block for internal maintenance."
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:175
+#: src/gns/plugin_gnsrecord_gns.c:177
#, c-format
msgid "Unable to parse zone key record `%s'\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:188
+#: src/gns/plugin_gnsrecord_gns.c:191
msgid "Record type does not match parsed record type\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:211
+#: src/gns/plugin_gnsrecord_gns.c:214
#, c-format
msgid "Unable to parse GNS2DNS record `%s'\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:227
+#: src/gns/plugin_gnsrecord_gns.c:231
#, c-format
msgid "Failed to serialize GNS2DNS record with value `%s': Not a DNS name.\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:251
+#: src/gns/plugin_gnsrecord_gns.c:255
#, c-format
msgid "Unable to parse VPN record string `%s'\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:283
+#: src/gns/plugin_gnsrecord_gns.c:287
#, c-format
msgid "Unable to parse BOX record string `%s'\n"
msgstr ""
@@ -4515,7 +4515,7 @@ msgstr ""
msgid "Identity REST API initialized\n"
msgstr ""
-#: src/json/json.c:120
+#: src/json/json.c:130
#, fuzzy, c-format
msgid "Failed to parse JSON in option `%s': %s (%s)\n"
msgstr "Résolution de « %s » échouée : %s\n"
@@ -4627,97 +4627,101 @@ msgstr ""
msgid "Failed to setup database at `%s'\n"
msgstr "Échec du démarrage de %s\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:368
+#: src/namestore/gnunet-namestore-fcfsd.c:373
msgid "can not search the namestore"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:422
-#: src/namestore/gnunet-namestore-fcfsd.c:563
+#: src/namestore/gnunet-namestore-fcfsd.c:427
+#: src/namestore/gnunet-namestore-fcfsd.c:568
msgid "unable to scan namestore"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:450
+#: src/namestore/gnunet-namestore-fcfsd.c:455
#, fuzzy, c-format
msgid "Failed to create record for `%s': %s\n"
msgstr "Résolution de « %s » échouée : %s\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:462
+#: src/namestore/gnunet-namestore-fcfsd.c:467
#, fuzzy
msgid "no errors"
msgstr "erreur unconnue."
-#: src/namestore/gnunet-namestore-fcfsd.c:498
+#: src/namestore/gnunet-namestore-fcfsd.c:503
#, c-format
msgid "The requested key `%s' exists as `%s'\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:505
+#: src/namestore/gnunet-namestore-fcfsd.c:510
msgid "key exists"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:522
+#: src/namestore/gnunet-namestore-fcfsd.c:527
#, fuzzy
msgid "Error creating record data\n"
msgstr "Erreur de création du tunnel\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:526
+#: src/namestore/gnunet-namestore-fcfsd.c:531
#, fuzzy
msgid "unable to store record"
msgstr "suprimer un enregistrement"
-#: src/namestore/gnunet-namestore-fcfsd.c:597
+#: src/namestore/gnunet-namestore-fcfsd.c:602
#, c-format
msgid "Requested name `%s' exists with `%u' records\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:603
+#: src/namestore/gnunet-namestore-fcfsd.c:608
msgid "name exists\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:789
+#: src/namestore/gnunet-namestore-fcfsd.c:794
msgid "unable to process submitted data"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:800
+#: src/namestore/gnunet-namestore-fcfsd.c:805
msgid "the submitted data is invalid"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:819
+#: src/namestore/gnunet-namestore-fcfsd.c:824
#, fuzzy
msgid "invalid parameters"
msgstr "adresse invalide"
-#: src/namestore/gnunet-namestore-fcfsd.c:836
+#: src/namestore/gnunet-namestore-fcfsd.c:841
#, fuzzy
msgid "invalid name"
msgstr "adresse invalide"
-#: src/namestore/gnunet-namestore-fcfsd.c:847
+#: src/namestore/gnunet-namestore-fcfsd.c:852
#, fuzzy, c-format
msgid "Unable to parse key %s\n"
msgstr "Échec du démarrage de %s\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:851
+#: src/namestore/gnunet-namestore-fcfsd.c:856
msgid "unable to parse key"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:962
+#: src/namestore/gnunet-namestore-fcfsd.c:967
msgid "No ego configured for `fcfsd` subsystem\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
+#: src/namestore/gnunet-namestore-fcfsd.c:1076
+msgid "No expiration specified for records.\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1087
msgid "No port specified, using default value\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1089
+#: src/namestore/gnunet-namestore-fcfsd.c:1105
msgid "Failed to connect to identity\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1136
+#: src/namestore/gnunet-namestore-fcfsd.c:1152
msgid "name of the zone managed by FCFSD"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1145
+#: src/namestore/gnunet-namestore-fcfsd.c:1161
msgid "GNU Name System First-Come-First-Served name registration service"
msgstr ""
@@ -4931,17 +4935,17 @@ msgstr ""
msgid "Failed to replicate block in namecache: %s\n"
msgstr ""
-#: src/namestore/gnunet-service-namestore.c:1559
+#: src/namestore/gnunet-service-namestore.c:1557
#, fuzzy
msgid "Error normalizing name."
msgstr "Erreur de création du tunnel\n"
-#: src/namestore/gnunet-service-namestore.c:1582
+#: src/namestore/gnunet-service-namestore.c:1580
#, fuzzy
msgid "Error deserializing records."
msgstr "Erreur de création du tunnel\n"
-#: src/namestore/gnunet-service-namestore.c:1691
+#: src/namestore/gnunet-service-namestore.c:1689
#, fuzzy
msgid "Store failed"
msgstr "pa_stream_new() échoué : %s\n"
@@ -5432,15 +5436,15 @@ msgstr ""
msgid "Could not load database backend `%s'\n"
msgstr "Impossible d’ouvrir « %s ».\n"
-#: src/peerstore/peerstore_api.c:594 src/peerstore/peerstore_api.c:642
+#: src/peerstore/peerstore_api.c:603 src/peerstore/peerstore_api.c:651
msgid "Unexpected iteration response, this should not happen.\n"
msgstr ""
-#: src/peerstore/peerstore_api.c:656
+#: src/peerstore/peerstore_api.c:665
msgid "Received a malformed response from service."
msgstr ""
-#: src/peerstore/peerstore_api.c:781
+#: src/peerstore/peerstore_api.c:790
msgid "Received a watch result for a non existing watch.\n"
msgstr ""
@@ -6635,7 +6639,7 @@ msgstr ""
#: src/transport/gnunet-communicator-tcp.c:3338
#: src/transport/gnunet-communicator-udp.c:3867
-#: src/transport/gnunet-service-tng.c:10926
+#: src/transport/gnunet-service-tng.c:11042
#: src/transport/gnunet-service-transport.c:2627
msgid "Transport service is lacking key configuration settings. Exiting.\n"
msgstr ""
@@ -7784,11 +7788,11 @@ msgstr ""
msgid "Failed to serialize metadata `%s'"
msgstr "Échec du démarrage de %s\n"
-#: src/util/client.c:747 src/util/client.c:938
+#: src/util/client.c:749 src/util/client.c:940
msgid "not a valid filename"
msgstr ""
-#: src/util/client.c:1104
+#: src/util/client.c:1106
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
@@ -7938,7 +7942,7 @@ msgstr ""
msgid "failed to load configuration defaults"
msgstr ""
-#: src/util/container_bloomfilter.c:547
+#: src/util/container_bloomfilter.c:548
#, c-format
msgid ""
"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -7959,7 +7963,7 @@ msgstr ""
msgid "Could not load peer's private key\n"
msgstr ""
-#: src/util/crypto_random.c:381
+#: src/util/crypto_random.c:385
#, c-format
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr ""
@@ -8192,7 +8196,7 @@ msgstr ""
msgid "Manipulate GNUnet configuration files"
msgstr ""
-#: src/util/gnunet-crypto-tvg.c:1483
+#: src/util/gnunet-crypto-tvg.c:1522
msgid "verify a test vector from stdin"
msgstr ""
diff --git a/po/it.po b/po/it.po
index eb6e6a7d2..a98ead37e 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnunet 0.10.1\n"
"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2022-04-01 08:42+0200\n"
+"POT-Creation-Date: 2022-06-04 22:36+0200\n"
"PO-Revision-Date: 2019-10-16 11:00+0200\n"
"Last-Translator: Sebastiano Pistore <sebastianopistore.info@protonmail.ch>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -31,7 +31,7 @@ msgid "Issuer public key `%s' is not well-formed\n"
msgstr ""
#: src/abd/gnunet-abd.c:558 src/abd/gnunet-service-abd.c:1751
-#: src/namestore/gnunet-namestore-fcfsd.c:1080
+#: src/namestore/gnunet-namestore-fcfsd.c:1096
#: src/namestore/gnunet-namestore.c:951
#, c-format
msgid "Failed to connect to namestore\n"
@@ -387,14 +387,14 @@ msgid "Require valid port number for service `%s' in configuration!\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:452 src/transport/plugin_transport_tcp.c:1163
-#: src/transport/tcp_service_legacy.c:634 src/util/client.c:527
+#: src/transport/tcp_service_legacy.c:634 src/util/client.c:529
#: src/util/service.c:1133
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:456 src/transport/plugin_transport_tcp.c:1167
-#: src/transport/tcp_service_legacy.c:638 src/util/client.c:532
+#: src/transport/tcp_service_legacy.c:638 src/util/client.c:534
#: src/util/service.c:1137
#, c-format
msgid "Using `%s' instead\n"
@@ -1469,7 +1469,7 @@ msgstr ""
#: src/core/gnunet-service-core_sessions.c:252
#: src/core/gnunet-service-core_sessions.c:337
-#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1520
+#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1519
#: src/topology/gnunet-daemon-topology.c:579
#: src/topology/gnunet-daemon-topology.c:671
#: src/transport/gnunet-service-transport_neighbours.c:723
@@ -3346,7 +3346,7 @@ msgstr ""
msgid "Migration of content to peer `%s' blocked for %s\n"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1343
+#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1342
msgid "# P2P searches active"
msgstr ""
@@ -3386,11 +3386,11 @@ msgstr ""
msgid "# requests dropped due TTL underflow"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:1339
+#: src/fs/gnunet-service-fs_cp.c:1338
msgid "# P2P query messages received and processed"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:1709
+#: src/fs/gnunet-service-fs_cp.c:1708
msgid "# migration stop messages sent"
msgstr ""
@@ -3464,93 +3464,93 @@ msgstr ""
msgid "# query plan entries"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:330
+#: src/fs/gnunet-service-fs_pr.c:325
msgid "# Pending requests created"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662
+#: src/fs/gnunet-service-fs_pr.c:416 src/fs/gnunet-service-fs_pr.c:654
msgid "# Pending requests active"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:837
+#: src/fs/gnunet-service-fs_pr.c:829
msgid "# replies received and matched"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:911
+#: src/fs/gnunet-service-fs_pr.c:903
msgid "# results found locally"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1045
+#: src/fs/gnunet-service-fs_pr.c:1037
msgid "# Datastore `PUT' failures"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1074
+#: src/fs/gnunet-service-fs_pr.c:1066
msgid "# storage requests dropped due to high load"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1113
+#: src/fs/gnunet-service-fs_pr.c:1105
msgid "# Replies received from DHT"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1268
+#: src/fs/gnunet-service-fs_pr.c:1260
msgid "# Replies received from CADET"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1323
+#: src/fs/gnunet-service-fs_pr.c:1315
#, c-format
msgid "Datastore lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1344
+#: src/fs/gnunet-service-fs_pr.c:1336
#, c-format
msgid "On-demand lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1411
+#: src/fs/gnunet-service-fs_pr.c:1403
msgid "# requested DBLOCK or IBLOCK not found"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1473
+#: src/fs/gnunet-service-fs_pr.c:1465
msgid "# Datastore lookups concluded (error queueing)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1528
+#: src/fs/gnunet-service-fs_pr.c:1520
msgid "# Datastore lookups concluded (no results)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1543
+#: src/fs/gnunet-service-fs_pr.c:1535
msgid "# Datastore lookups concluded (seen all)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1558
msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1583
+#: src/fs/gnunet-service-fs_pr.c:1575
msgid "# on-demand blocks matched requests"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1604
+#: src/fs/gnunet-service-fs_pr.c:1596
msgid "# on-demand lookups performed successfully"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1610
+#: src/fs/gnunet-service-fs_pr.c:1602
msgid "# on-demand lookups failed"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1656
+#: src/fs/gnunet-service-fs_pr.c:1648
msgid "# Datastore lookups concluded (found last result)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1669
+#: src/fs/gnunet-service-fs_pr.c:1661
msgid "# Datastore lookups concluded (load too high)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1720
+#: src/fs/gnunet-service-fs_pr.c:1712
msgid "# Datastore lookups initiated"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1784
+#: src/fs/gnunet-service-fs_pr.c:1776
msgid "# GAP PUT messages received"
msgstr ""
@@ -3594,12 +3594,12 @@ msgstr ""
msgid "Invalid port number %u\n"
msgstr "# messaggi PONG ricevuti"
-#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1113
+#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1129
#, fuzzy
msgid "Unable to set up the daemon\n"
msgstr "Generazione statistiche fallita\n"
-#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:987
+#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:992
msgid "Failed to start HTTP server\n"
msgstr "Impossibile avviare il server HTTP\n"
@@ -3915,35 +3915,35 @@ msgstr ""
msgid "Zone %s was revoked, resolution fails\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:136
+#: src/gns/plugin_gnsrecord_gns.c:138
msgid "This is a memento of an older block for internal maintenance."
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:175
+#: src/gns/plugin_gnsrecord_gns.c:177
#, fuzzy, c-format
msgid "Unable to parse zone key record `%s'\n"
msgstr "Impossibile avviare il servizio ' %s'\n"
-#: src/gns/plugin_gnsrecord_gns.c:188
+#: src/gns/plugin_gnsrecord_gns.c:191
msgid "Record type does not match parsed record type\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:211
+#: src/gns/plugin_gnsrecord_gns.c:214
#, c-format
msgid "Unable to parse GNS2DNS record `%s'\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:227
+#: src/gns/plugin_gnsrecord_gns.c:231
#, c-format
msgid "Failed to serialize GNS2DNS record with value `%s': Not a DNS name.\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:251
+#: src/gns/plugin_gnsrecord_gns.c:255
#, c-format
msgid "Unable to parse VPN record string `%s'\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:283
+#: src/gns/plugin_gnsrecord_gns.c:287
#, fuzzy, c-format
msgid "Unable to parse BOX record string `%s'\n"
msgstr "Impossibile avviare il servizio ' %s'\n"
@@ -4540,7 +4540,7 @@ msgstr ""
msgid "Identity REST API initialized\n"
msgstr ""
-#: src/json/json.c:120
+#: src/json/json.c:130
#, fuzzy, c-format
msgid "Failed to parse JSON in option `%s': %s (%s)\n"
msgstr "Impossibile avviare il servizio ' %s'\n"
@@ -4652,98 +4652,102 @@ msgstr ""
msgid "Failed to setup database at `%s'\n"
msgstr "Impossibile avviare il servizio ' %s'\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:368
+#: src/namestore/gnunet-namestore-fcfsd.c:373
msgid "can not search the namestore"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:422
-#: src/namestore/gnunet-namestore-fcfsd.c:563
+#: src/namestore/gnunet-namestore-fcfsd.c:427
+#: src/namestore/gnunet-namestore-fcfsd.c:568
msgid "unable to scan namestore"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:450
+#: src/namestore/gnunet-namestore-fcfsd.c:455
#, fuzzy, c-format
msgid "Failed to create record for `%s': %s\n"
msgstr "Impossibile avviare il servizio ' %s'\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:462
+#: src/namestore/gnunet-namestore-fcfsd.c:467
#, fuzzy
msgid "no errors"
msgstr "errore sconosciuto"
-#: src/namestore/gnunet-namestore-fcfsd.c:498
+#: src/namestore/gnunet-namestore-fcfsd.c:503
#, c-format
msgid "The requested key `%s' exists as `%s'\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:505
+#: src/namestore/gnunet-namestore-fcfsd.c:510
msgid "key exists"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:522
+#: src/namestore/gnunet-namestore-fcfsd.c:527
#, fuzzy
msgid "Error creating record data\n"
msgstr "Errore interno."
-#: src/namestore/gnunet-namestore-fcfsd.c:526
+#: src/namestore/gnunet-namestore-fcfsd.c:531
#, fuzzy
msgid "unable to store record"
msgstr "Impossibile avviare il servizio.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:597
+#: src/namestore/gnunet-namestore-fcfsd.c:602
#, c-format
msgid "Requested name `%s' exists with `%u' records\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:603
+#: src/namestore/gnunet-namestore-fcfsd.c:608
msgid "name exists\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:789
+#: src/namestore/gnunet-namestore-fcfsd.c:794
msgid "unable to process submitted data"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:800
+#: src/namestore/gnunet-namestore-fcfsd.c:805
msgid "the submitted data is invalid"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:819
+#: src/namestore/gnunet-namestore-fcfsd.c:824
#, fuzzy
msgid "invalid parameters"
msgstr "argomento non valido"
-#: src/namestore/gnunet-namestore-fcfsd.c:836
+#: src/namestore/gnunet-namestore-fcfsd.c:841
#, fuzzy
msgid "invalid name"
msgstr "argomento non valido"
-#: src/namestore/gnunet-namestore-fcfsd.c:847
+#: src/namestore/gnunet-namestore-fcfsd.c:852
#, fuzzy, c-format
msgid "Unable to parse key %s\n"
msgstr "Impossibile avviare il servizio ' %s'\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:851
+#: src/namestore/gnunet-namestore-fcfsd.c:856
#, fuzzy
msgid "unable to parse key"
msgstr "Impossibile avviare il servizio ' %s'\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:962
+#: src/namestore/gnunet-namestore-fcfsd.c:967
msgid "No ego configured for `fcfsd` subsystem\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
+#: src/namestore/gnunet-namestore-fcfsd.c:1076
+msgid "No expiration specified for records.\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1087
msgid "No port specified, using default value\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1089
+#: src/namestore/gnunet-namestore-fcfsd.c:1105
msgid "Failed to connect to identity\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1136
+#: src/namestore/gnunet-namestore-fcfsd.c:1152
msgid "name of the zone managed by FCFSD"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1145
+#: src/namestore/gnunet-namestore-fcfsd.c:1161
msgid "GNU Name System First-Come-First-Served name registration service"
msgstr ""
@@ -4957,17 +4961,17 @@ msgstr ""
msgid "Failed to replicate block in namecache: %s\n"
msgstr ""
-#: src/namestore/gnunet-service-namestore.c:1559
+#: src/namestore/gnunet-service-namestore.c:1557
#, fuzzy
msgid "Error normalizing name."
msgstr "Errore durante la scrittura di `%s'.\n"
-#: src/namestore/gnunet-service-namestore.c:1582
+#: src/namestore/gnunet-service-namestore.c:1580
#, fuzzy
msgid "Error deserializing records."
msgstr "Errore interno."
-#: src/namestore/gnunet-service-namestore.c:1691
+#: src/namestore/gnunet-service-namestore.c:1689
msgid "Store failed"
msgstr ""
@@ -5458,15 +5462,15 @@ msgstr ""
msgid "Could not load database backend `%s'\n"
msgstr ""
-#: src/peerstore/peerstore_api.c:594 src/peerstore/peerstore_api.c:642
+#: src/peerstore/peerstore_api.c:603 src/peerstore/peerstore_api.c:651
msgid "Unexpected iteration response, this should not happen.\n"
msgstr ""
-#: src/peerstore/peerstore_api.c:656
+#: src/peerstore/peerstore_api.c:665
msgid "Received a malformed response from service."
msgstr ""
-#: src/peerstore/peerstore_api.c:781
+#: src/peerstore/peerstore_api.c:790
msgid "Received a watch result for a non existing watch.\n"
msgstr ""
@@ -6664,7 +6668,7 @@ msgstr ""
#: src/transport/gnunet-communicator-tcp.c:3338
#: src/transport/gnunet-communicator-udp.c:3867
-#: src/transport/gnunet-service-tng.c:10926
+#: src/transport/gnunet-service-tng.c:11042
#: src/transport/gnunet-service-transport.c:2627
msgid "Transport service is lacking key configuration settings. Exiting.\n"
msgstr ""
@@ -7835,11 +7839,11 @@ msgstr ""
msgid "Failed to serialize metadata `%s'"
msgstr "Impossibile avviare il servizio ' %s'\n"
-#: src/util/client.c:747 src/util/client.c:938
+#: src/util/client.c:749 src/util/client.c:940
msgid "not a valid filename"
msgstr ""
-#: src/util/client.c:1104
+#: src/util/client.c:1106
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
@@ -7989,7 +7993,7 @@ msgstr ""
msgid "failed to load configuration defaults"
msgstr ""
-#: src/util/container_bloomfilter.c:547
+#: src/util/container_bloomfilter.c:548
#, c-format
msgid ""
"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -8010,7 +8014,7 @@ msgstr ""
msgid "Could not load peer's private key\n"
msgstr ""
-#: src/util/crypto_random.c:381
+#: src/util/crypto_random.c:385
#, c-format
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr ""
@@ -8243,7 +8247,7 @@ msgstr ""
msgid "Manipulate GNUnet configuration files"
msgstr ""
-#: src/util/gnunet-crypto-tvg.c:1483
+#: src/util/gnunet-crypto-tvg.c:1522
msgid "verify a test vector from stdin"
msgstr ""
diff --git a/po/sr.po b/po/sr.po
index f767e95fe..0f21eace4 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnunet-0.10.1\n"
"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2022-04-01 08:42+0200\n"
+"POT-Creation-Date: 2022-06-04 22:36+0200\n"
"PO-Revision-Date: 2020-10-23 18:39+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
#: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245
@@ -29,7 +29,7 @@ msgid "Issuer public key `%s' is not well-formed\n"
msgstr "Јавни кључ „%s“ није добро оформљен\n"
#: src/abd/gnunet-abd.c:558 src/abd/gnunet-service-abd.c:1751
-#: src/namestore/gnunet-namestore-fcfsd.c:1080
+#: src/namestore/gnunet-namestore-fcfsd.c:1096
#: src/namestore/gnunet-namestore.c:951
#, c-format
msgid "Failed to connect to namestore\n"
@@ -396,14 +396,14 @@ msgid "Require valid port number for service `%s' in configuration!\n"
msgstr "Захтева исправан број прикључника за услугу „%s“ у подешавањима!\n"
#: src/arm/gnunet-service-arm.c:452 src/transport/plugin_transport_tcp.c:1163
-#: src/transport/tcp_service_legacy.c:634 src/util/client.c:527
+#: src/transport/tcp_service_legacy.c:634 src/util/client.c:529
#: src/util/service.c:1133
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr "ЈУНИКС_ПУТАЊА „%s“ је предуга, највећа дужина је %llu\n"
#: src/arm/gnunet-service-arm.c:456 src/transport/plugin_transport_tcp.c:1167
-#: src/transport/tcp_service_legacy.c:638 src/util/client.c:532
+#: src/transport/tcp_service_legacy.c:638 src/util/client.c:534
#: src/util/service.c:1137
#, c-format
msgid "Using `%s' instead\n"
@@ -1529,7 +1529,7 @@ msgstr "# бајтови утовара су дешифровани"
#: src/core/gnunet-service-core_sessions.c:252
#: src/core/gnunet-service-core_sessions.c:337
-#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1520
+#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1519
#: src/topology/gnunet-daemon-topology.c:579
#: src/topology/gnunet-daemon-topology.c:671
#: src/transport/gnunet-service-transport_neighbours.c:723
@@ -3497,7 +3497,7 @@ msgstr "# поруке заустављања миграције су примљ
msgid "Migration of content to peer `%s' blocked for %s\n"
msgstr "Премештање садржаја за парњака „%s“ је блокирано за %s\n"
-#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1343
+#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1342
msgid "# P2P searches active"
msgstr "# П2П претраге су активне"
@@ -3538,11 +3538,11 @@ msgstr "# П2П поруке су одбачене због пуног реда"
msgid "# requests dropped due TTL underflow"
msgstr "# захтеви су одбачени услед ниског ТТЛ тока"
-#: src/fs/gnunet-service-fs_cp.c:1339
+#: src/fs/gnunet-service-fs_cp.c:1338
msgid "# P2P query messages received and processed"
msgstr "# поруке П2П упита су примљене и обрађене"
-#: src/fs/gnunet-service-fs_cp.c:1709
+#: src/fs/gnunet-service-fs_cp.c:1708
msgid "# migration stop messages sent"
msgstr "# поруке зауставља миграције су послате"
@@ -3619,94 +3619,94 @@ msgstr "# захтеви су освежени"
msgid "# query plan entries"
msgstr "# пропитује обичне уносе"
-#: src/fs/gnunet-service-fs_pr.c:330
+#: src/fs/gnunet-service-fs_pr.c:325
msgid "# Pending requests created"
msgstr "# Захтеви на чекању су створени"
-#: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662
+#: src/fs/gnunet-service-fs_pr.c:416 src/fs/gnunet-service-fs_pr.c:654
msgid "# Pending requests active"
msgstr "# Захтеви на чекању су активни"
-#: src/fs/gnunet-service-fs_pr.c:837
+#: src/fs/gnunet-service-fs_pr.c:829
msgid "# replies received and matched"
msgstr "# одговори су примљени и подударени"
-#: src/fs/gnunet-service-fs_pr.c:911
+#: src/fs/gnunet-service-fs_pr.c:903
msgid "# results found locally"
msgstr "# резултати су пронађени локално"
-#: src/fs/gnunet-service-fs_pr.c:1045
+#: src/fs/gnunet-service-fs_pr.c:1037
msgid "# Datastore `PUT' failures"
msgstr "# Неуспеси „СТАВИ“ смештаја података"
-#: src/fs/gnunet-service-fs_pr.c:1074
+#: src/fs/gnunet-service-fs_pr.c:1066
msgid "# storage requests dropped due to high load"
msgstr "# захтеви смештаја су одбачени услед високог утовара"
-#: src/fs/gnunet-service-fs_pr.c:1113
+#: src/fs/gnunet-service-fs_pr.c:1105
msgid "# Replies received from DHT"
msgstr "# Одговори су примљени од DHT-а"
-#: src/fs/gnunet-service-fs_pr.c:1268
+#: src/fs/gnunet-service-fs_pr.c:1260
#, fuzzy
msgid "# Replies received from CADET"
msgstr "# Одговори су примљени од DHT-а"
-#: src/fs/gnunet-service-fs_pr.c:1323
+#: src/fs/gnunet-service-fs_pr.c:1315
#, c-format
msgid "Datastore lookup already took %s!\n"
msgstr "Претрага смештаја података је већ узела „%s“!\n"
-#: src/fs/gnunet-service-fs_pr.c:1344
+#: src/fs/gnunet-service-fs_pr.c:1336
#, c-format
msgid "On-demand lookup already took %s!\n"
msgstr "Претрага на-захтев је већ узела „%s“!\n"
-#: src/fs/gnunet-service-fs_pr.c:1411
+#: src/fs/gnunet-service-fs_pr.c:1403
msgid "# requested DBLOCK or IBLOCK not found"
msgstr "# захтевани DBLOCK или IBLOCK нису нађени"
-#: src/fs/gnunet-service-fs_pr.c:1473
+#: src/fs/gnunet-service-fs_pr.c:1465
msgid "# Datastore lookups concluded (error queueing)"
msgstr "# Претраге смештаја података су закључене (грешка стављања у ред)"
-#: src/fs/gnunet-service-fs_pr.c:1528
+#: src/fs/gnunet-service-fs_pr.c:1520
msgid "# Datastore lookups concluded (no results)"
msgstr "# Претраге смештаја података су закључене (нема резултата)"
-#: src/fs/gnunet-service-fs_pr.c:1543
+#: src/fs/gnunet-service-fs_pr.c:1535
msgid "# Datastore lookups concluded (seen all)"
msgstr "# Претраге смештаја података су закључене (видех све)"
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1558
msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
msgstr "# Претраге смештаја података су прекинуте (више од „MAX_RESULTS“)"
-#: src/fs/gnunet-service-fs_pr.c:1583
+#: src/fs/gnunet-service-fs_pr.c:1575
msgid "# on-demand blocks matched requests"
msgstr "# блокови на-захтев одговарају захтевима"
-#: src/fs/gnunet-service-fs_pr.c:1604
+#: src/fs/gnunet-service-fs_pr.c:1596
msgid "# on-demand lookups performed successfully"
msgstr "# претраге на-захтев су обављене успешно"
-#: src/fs/gnunet-service-fs_pr.c:1610
+#: src/fs/gnunet-service-fs_pr.c:1602
msgid "# on-demand lookups failed"
msgstr "# претраге на-захтев нису успеле"
-#: src/fs/gnunet-service-fs_pr.c:1656
+#: src/fs/gnunet-service-fs_pr.c:1648
msgid "# Datastore lookups concluded (found last result)"
msgstr "# Претраге смештаја података су закључене (нађох последњи резултат)"
-#: src/fs/gnunet-service-fs_pr.c:1669
+#: src/fs/gnunet-service-fs_pr.c:1661
msgid "# Datastore lookups concluded (load too high)"
msgstr "# Претраге смештаја података су закључене (утовар је превелик)"
-#: src/fs/gnunet-service-fs_pr.c:1720
+#: src/fs/gnunet-service-fs_pr.c:1712
msgid "# Datastore lookups initiated"
msgstr "# Претраге смештаја података су покренуте"
-#: src/fs/gnunet-service-fs_pr.c:1784
+#: src/fs/gnunet-service-fs_pr.c:1776
msgid "# GAP PUT messages received"
msgstr "# поруке ЈАЗ СТАВИ су примљене"
@@ -3754,12 +3754,12 @@ msgstr ""
msgid "Invalid port number %u\n"
msgstr "Неисправан број прикључника %llu. Излазим.\n"
-#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1113
+#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1129
#, fuzzy
msgid "Unable to set up the daemon\n"
msgstr "Не могу да увезем приватни кључ из датотеке „%s“\n"
-#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:987
+#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:992
msgid "Failed to start HTTP server\n"
msgstr "Нисам успео да покренем ХТТП сервер\n"
@@ -4080,35 +4080,35 @@ msgstr "АТС је вратио резултате за %u адресе\n"
msgid "Zone %s was revoked, resolution fails\n"
msgstr "Зона %s је опозвана, резолуција није успела\n"
-#: src/gns/plugin_gnsrecord_gns.c:136
+#: src/gns/plugin_gnsrecord_gns.c:138
msgid "This is a memento of an older block for internal maintenance."
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:175
+#: src/gns/plugin_gnsrecord_gns.c:177
#, fuzzy, c-format
msgid "Unable to parse zone key record `%s'\n"
msgstr "Не могу да обрадим „MX“ запис „%s“\n"
-#: src/gns/plugin_gnsrecord_gns.c:188
+#: src/gns/plugin_gnsrecord_gns.c:191
msgid "Record type does not match parsed record type\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:211
+#: src/gns/plugin_gnsrecord_gns.c:214
#, c-format
msgid "Unable to parse GNS2DNS record `%s'\n"
msgstr "Не могу да обрадим „GNS2DNS“ запис „%s“\n"
-#: src/gns/plugin_gnsrecord_gns.c:227
+#: src/gns/plugin_gnsrecord_gns.c:231
#, fuzzy, c-format
msgid "Failed to serialize GNS2DNS record with value `%s': Not a DNS name.\n"
msgstr "Нисам успео да серијализујем ГНС2ДНС запис са вредношћу „%s“\n"
-#: src/gns/plugin_gnsrecord_gns.c:251
+#: src/gns/plugin_gnsrecord_gns.c:255
#, c-format
msgid "Unable to parse VPN record string `%s'\n"
msgstr "Не могу да обрадим ниску ВПН записа „%s“\n"
-#: src/gns/plugin_gnsrecord_gns.c:283
+#: src/gns/plugin_gnsrecord_gns.c:287
#, fuzzy, c-format
msgid "Unable to parse BOX record string `%s'\n"
msgstr "Не могу да обрадим ниску ВПН записа „%s“\n"
@@ -4728,7 +4728,7 @@ msgstr "Нисам успео да направим директоријум „
msgid "Identity REST API initialized\n"
msgstr ""
-#: src/json/json.c:120
+#: src/json/json.c:130
#, fuzzy, c-format
msgid "Failed to parse JSON in option `%s': %s (%s)\n"
msgstr "Нисам успео да обрадим „HELLO“ у датотеци „%s“: %s\n"
@@ -4842,100 +4842,105 @@ msgstr ""
msgid "Failed to setup database at `%s'\n"
msgstr "Нисам успео да покренем „%s“ на „%s“\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:368
+#: src/namestore/gnunet-namestore-fcfsd.c:373
#, fuzzy
msgid "can not search the namestore"
msgstr "Не могу да покренем главног контролора"
-#: src/namestore/gnunet-namestore-fcfsd.c:422
-#: src/namestore/gnunet-namestore-fcfsd.c:563
+#: src/namestore/gnunet-namestore-fcfsd.c:427
+#: src/namestore/gnunet-namestore-fcfsd.c:568
#, fuzzy
msgid "unable to scan namestore"
msgstr "Нисам успео да се повежем са смештајем назива\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:450
+#: src/namestore/gnunet-namestore-fcfsd.c:455
#, fuzzy, c-format
msgid "Failed to create record for `%s': %s\n"
msgstr "Нисам успео да направим запис за домен „%s“: %s\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:462
+#: src/namestore/gnunet-namestore-fcfsd.c:467
#, fuzzy
msgid "no errors"
msgstr "непозната грешка"
-#: src/namestore/gnunet-namestore-fcfsd.c:498
+#: src/namestore/gnunet-namestore-fcfsd.c:503
#, fuzzy, c-format
msgid "The requested key `%s' exists as `%s'\n"
msgstr "Скупови знакова се захтевају где је „%s“–>„%s“\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:505
+#: src/namestore/gnunet-namestore-fcfsd.c:510
msgid "key exists"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:522
+#: src/namestore/gnunet-namestore-fcfsd.c:527
#, fuzzy
msgid "Error creating record data\n"
msgstr "Грешка стварања тунела\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:526
+#: src/namestore/gnunet-namestore-fcfsd.c:531
#, fuzzy
msgid "unable to store record"
msgstr "Смештај назива није успео да смести запис\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:597
+#: src/namestore/gnunet-namestore-fcfsd.c:602
#, c-format
msgid "Requested name `%s' exists with `%u' records\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:603
+#: src/namestore/gnunet-namestore-fcfsd.c:608
msgid "name exists\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:789
+#: src/namestore/gnunet-namestore-fcfsd.c:794
msgid "unable to process submitted data"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:800
+#: src/namestore/gnunet-namestore-fcfsd.c:805
msgid "the submitted data is invalid"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:819
+#: src/namestore/gnunet-namestore-fcfsd.c:824
#, fuzzy
msgid "invalid parameters"
msgstr "Неисправан аргумент „%s“\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:836
+#: src/namestore/gnunet-namestore-fcfsd.c:841
#, fuzzy
msgid "invalid name"
msgstr "Неисправан аргумент „%s“\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:847
+#: src/namestore/gnunet-namestore-fcfsd.c:852
#, fuzzy, c-format
msgid "Unable to parse key %s\n"
msgstr "Не могу да обрадим „MX“ запис „%s“\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:851
+#: src/namestore/gnunet-namestore-fcfsd.c:856
#, fuzzy
msgid "unable to parse key"
msgstr "Не могу да обрадим „MX“ запис „%s“\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:962
+#: src/namestore/gnunet-namestore-fcfsd.c:967
msgid "No ego configured for `fcfsd` subsystem\n"
msgstr "Није подешен его за „fcfsd“ подсистем\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
+#: src/namestore/gnunet-namestore-fcfsd.c:1076
+#, fuzzy
+msgid "No expiration specified for records.\n"
+msgstr "Није наведена ниједна радња. Немам шта да радим.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1087
msgid "No port specified, using default value\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1089
+#: src/namestore/gnunet-namestore-fcfsd.c:1105
msgid "Failed to connect to identity\n"
msgstr "Нисам успео да се повежем са идентитетом\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1136
+#: src/namestore/gnunet-namestore-fcfsd.c:1152
msgid "name of the zone managed by FCFSD"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1145
+#: src/namestore/gnunet-namestore-fcfsd.c:1161
#, fuzzy
msgid "GNU Name System First-Come-First-Served name registration service"
msgstr "Услуга регистрације назива Први Стиже Први Служи ГНУ Система Назива"
@@ -5151,17 +5156,17 @@ msgstr "назив егоа који контролише зону"
msgid "Failed to replicate block in namecache: %s\n"
msgstr "Нисам успео да реплицирам блок у остави назива: %s\n"
-#: src/namestore/gnunet-service-namestore.c:1559
+#: src/namestore/gnunet-service-namestore.c:1557
#, fuzzy
msgid "Error normalizing name."
msgstr "Грешка стварања тунела\n"
-#: src/namestore/gnunet-service-namestore.c:1582
+#: src/namestore/gnunet-service-namestore.c:1580
#, fuzzy
msgid "Error deserializing records."
msgstr "Унутрашња грешка скенирања директоријума.\n"
-#: src/namestore/gnunet-service-namestore.c:1691
+#: src/namestore/gnunet-service-namestore.c:1689
#, fuzzy
msgid "Store failed"
msgstr "# Неуспеси „СТАВИ“ смештаја података"
@@ -5673,16 +5678,16 @@ msgstr ""
msgid "Could not load database backend `%s'\n"
msgstr "Не могу да отворим „%s“.\n"
-#: src/peerstore/peerstore_api.c:594 src/peerstore/peerstore_api.c:642
+#: src/peerstore/peerstore_api.c:603 src/peerstore/peerstore_api.c:651
msgid "Unexpected iteration response, this should not happen.\n"
msgstr ""
-#: src/peerstore/peerstore_api.c:656
+#: src/peerstore/peerstore_api.c:665
#, fuzzy
msgid "Received a malformed response from service."
msgstr "Примих лош ДНС захтев од „%s“\n"
-#: src/peerstore/peerstore_api.c:781
+#: src/peerstore/peerstore_api.c:790
msgid "Received a watch result for a non existing watch.\n"
msgstr ""
@@ -6958,7 +6963,7 @@ msgstr ""
#: src/transport/gnunet-communicator-tcp.c:3338
#: src/transport/gnunet-communicator-udp.c:3867
-#: src/transport/gnunet-service-tng.c:10926
+#: src/transport/gnunet-service-tng.c:11042
#: src/transport/gnunet-service-transport.c:2627
msgid "Transport service is lacking key configuration settings. Exiting.\n"
msgstr "Услузи преноса недостају поставке подешавања кључа. Излазим.\n"
@@ -8187,11 +8192,11 @@ msgstr "Неисправан формат времена „%s“\n"
msgid "Failed to serialize metadata `%s'"
msgstr "Нисам успео да серијализујем НС запис са вредношћу „%s“\n"
-#: src/util/client.c:747 src/util/client.c:938
+#: src/util/client.c:749 src/util/client.c:940
msgid "not a valid filename"
msgstr ""
-#: src/util/client.c:1104
+#: src/util/client.c:1106
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr "Потребан је не-празан назив домаћина за услугу „%s“.\n"
@@ -8346,7 +8351,7 @@ msgstr "аргумент „--option“ је потребан за постав
msgid "failed to load configuration defaults"
msgstr "Нисам успео да учитам подешавање за „%s“\n"
-#: src/util/container_bloomfilter.c:547
+#: src/util/container_bloomfilter.c:548
#, c-format
msgid ""
"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -8369,7 +8374,7 @@ msgstr "Провера „ECDSA“ потписа није успела на %s:
msgid "Could not load peer's private key\n"
msgstr "Не могу да учитам лични кључ парњака\n"
-#: src/util/crypto_random.c:381
+#: src/util/crypto_random.c:385
#, c-format
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "„libgcrypt“ није очекиваног издања (издање %s је потребно).\n"
@@ -8604,7 +8609,7 @@ msgstr ""
msgid "Manipulate GNUnet configuration files"
msgstr "Управља ГНУнет датотекама подешавања"
-#: src/util/gnunet-crypto-tvg.c:1483
+#: src/util/gnunet-crypto-tvg.c:1522
msgid "verify a test vector from stdin"
msgstr ""
diff --git a/po/sv.po b/po/sv.po
index 9795d9bf9..2747c8e40 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: GNUnet 0.7.0b\n"
"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2022-04-01 08:42+0200\n"
+"POT-Creation-Date: 2022-06-04 22:36+0200\n"
"PO-Revision-Date: 2006-01-21 17:16+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -27,7 +27,7 @@ msgid "Issuer public key `%s' is not well-formed\n"
msgstr "Ogiltigt argument: \"%s\"\n"
#: src/abd/gnunet-abd.c:558 src/abd/gnunet-service-abd.c:1751
-#: src/namestore/gnunet-namestore-fcfsd.c:1080
+#: src/namestore/gnunet-namestore-fcfsd.c:1096
#: src/namestore/gnunet-namestore.c:951
#, fuzzy, c-format
msgid "Failed to connect to namestore\n"
@@ -397,14 +397,14 @@ msgid "Require valid port number for service `%s' in configuration!\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:452 src/transport/plugin_transport_tcp.c:1163
-#: src/transport/tcp_service_legacy.c:634 src/util/client.c:527
+#: src/transport/tcp_service_legacy.c:634 src/util/client.c:529
#: src/util/service.c:1133
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:456 src/transport/plugin_transport_tcp.c:1167
-#: src/transport/tcp_service_legacy.c:638 src/util/client.c:532
+#: src/transport/tcp_service_legacy.c:638 src/util/client.c:534
#: src/util/service.c:1137
#, fuzzy, c-format
msgid "Using `%s' instead\n"
@@ -1535,7 +1535,7 @@ msgstr "# byte dekrypterade"
#: src/core/gnunet-service-core_sessions.c:252
#: src/core/gnunet-service-core_sessions.c:337
-#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1520
+#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1519
#: src/topology/gnunet-daemon-topology.c:579
#: src/topology/gnunet-daemon-topology.c:671
#: src/transport/gnunet-service-transport_neighbours.c:723
@@ -3487,7 +3487,7 @@ msgstr "# krypterade PONG-meddelanden mottagna"
msgid "Migration of content to peer `%s' blocked for %s\n"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1343
+#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1342
msgid "# P2P searches active"
msgstr ""
@@ -3528,12 +3528,12 @@ msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
msgid "# requests dropped due TTL underflow"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:1339
+#: src/fs/gnunet-service-fs_cp.c:1338
#, fuzzy
msgid "# P2P query messages received and processed"
msgstr "# krypterade PONG-meddelanden mottagna"
-#: src/fs/gnunet-service-fs_cp.c:1709
+#: src/fs/gnunet-service-fs_cp.c:1708
#, fuzzy
msgid "# migration stop messages sent"
msgstr "# krypterade PONG-meddelanden mottagna"
@@ -3612,98 +3612,98 @@ msgstr "# byte mottogs via TCP"
msgid "# query plan entries"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:330
+#: src/fs/gnunet-service-fs_pr.c:325
#, fuzzy
msgid "# Pending requests created"
msgstr "# byte mottogs via TCP"
-#: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662
+#: src/fs/gnunet-service-fs_pr.c:416 src/fs/gnunet-service-fs_pr.c:654
msgid "# Pending requests active"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:837
+#: src/fs/gnunet-service-fs_pr.c:829
#, fuzzy
msgid "# replies received and matched"
msgstr "# byte mottagna av typen %d"
-#: src/fs/gnunet-service-fs_pr.c:911
+#: src/fs/gnunet-service-fs_pr.c:903
msgid "# results found locally"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1045
+#: src/fs/gnunet-service-fs_pr.c:1037
msgid "# Datastore `PUT' failures"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1074
+#: src/fs/gnunet-service-fs_pr.c:1066
#, fuzzy
msgid "# storage requests dropped due to high load"
msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
-#: src/fs/gnunet-service-fs_pr.c:1113
+#: src/fs/gnunet-service-fs_pr.c:1105
#, fuzzy
msgid "# Replies received from DHT"
msgstr "# byte mottagna via HTTP"
-#: src/fs/gnunet-service-fs_pr.c:1268
+#: src/fs/gnunet-service-fs_pr.c:1260
#, fuzzy
msgid "# Replies received from CADET"
msgstr "# byte mottagna via HTTP"
-#: src/fs/gnunet-service-fs_pr.c:1323
+#: src/fs/gnunet-service-fs_pr.c:1315
#, c-format
msgid "Datastore lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1344
+#: src/fs/gnunet-service-fs_pr.c:1336
#, c-format
msgid "On-demand lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1411
+#: src/fs/gnunet-service-fs_pr.c:1403
msgid "# requested DBLOCK or IBLOCK not found"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1473
+#: src/fs/gnunet-service-fs_pr.c:1465
msgid "# Datastore lookups concluded (error queueing)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1528
+#: src/fs/gnunet-service-fs_pr.c:1520
msgid "# Datastore lookups concluded (no results)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1543
+#: src/fs/gnunet-service-fs_pr.c:1535
msgid "# Datastore lookups concluded (seen all)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1558
msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1583
+#: src/fs/gnunet-service-fs_pr.c:1575
msgid "# on-demand blocks matched requests"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1604
+#: src/fs/gnunet-service-fs_pr.c:1596
msgid "# on-demand lookups performed successfully"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1610
+#: src/fs/gnunet-service-fs_pr.c:1602
msgid "# on-demand lookups failed"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1656
+#: src/fs/gnunet-service-fs_pr.c:1648
msgid "# Datastore lookups concluded (found last result)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1669
+#: src/fs/gnunet-service-fs_pr.c:1661
msgid "# Datastore lookups concluded (load too high)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1720
+#: src/fs/gnunet-service-fs_pr.c:1712
msgid "# Datastore lookups initiated"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1784
+#: src/fs/gnunet-service-fs_pr.c:1776
#, fuzzy
msgid "# GAP PUT messages received"
msgstr "# krypterade PONG-meddelanden mottagna"
@@ -3752,12 +3752,12 @@ msgstr ""
msgid "Invalid port number %u\n"
msgstr "Ogiltiga argument. Avslutar.\n"
-#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1113
+#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1129
#, fuzzy
msgid "Unable to set up the daemon\n"
msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
-#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:987
+#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:992
#, fuzzy
msgid "Failed to start HTTP server\n"
msgstr "Misslyckades att starta samling.\n"
@@ -4084,35 +4084,35 @@ msgstr ""
msgid "Zone %s was revoked, resolution fails\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:136
+#: src/gns/plugin_gnsrecord_gns.c:138
msgid "This is a memento of an older block for internal maintenance."
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:175
+#: src/gns/plugin_gnsrecord_gns.c:177
#, fuzzy, c-format
msgid "Unable to parse zone key record `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/gns/plugin_gnsrecord_gns.c:188
+#: src/gns/plugin_gnsrecord_gns.c:191
msgid "Record type does not match parsed record type\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:211
+#: src/gns/plugin_gnsrecord_gns.c:214
#, fuzzy, c-format
msgid "Unable to parse GNS2DNS record `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/gns/plugin_gnsrecord_gns.c:227
+#: src/gns/plugin_gnsrecord_gns.c:231
#, fuzzy, c-format
msgid "Failed to serialize GNS2DNS record with value `%s': Not a DNS name.\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/gns/plugin_gnsrecord_gns.c:251
+#: src/gns/plugin_gnsrecord_gns.c:255
#, fuzzy, c-format
msgid "Unable to parse VPN record string `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/gns/plugin_gnsrecord_gns.c:283
+#: src/gns/plugin_gnsrecord_gns.c:287
#, fuzzy, c-format
msgid "Unable to parse BOX record string `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
@@ -4720,7 +4720,7 @@ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
msgid "Identity REST API initialized\n"
msgstr " Anslutning misslyckades\n"
-#: src/json/json.c:120
+#: src/json/json.c:130
#, fuzzy, c-format
msgid "Failed to parse JSON in option `%s': %s (%s)\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
@@ -4835,102 +4835,107 @@ msgstr ""
msgid "Failed to setup database at `%s'\n"
msgstr "Fel vid %s:%d.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:368
+#: src/namestore/gnunet-namestore-fcfsd.c:373
#, fuzzy
msgid "can not search the namestore"
msgstr "Misslyckades att ansluta till gnunetd.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:422
-#: src/namestore/gnunet-namestore-fcfsd.c:563
+#: src/namestore/gnunet-namestore-fcfsd.c:427
+#: src/namestore/gnunet-namestore-fcfsd.c:568
#, fuzzy
msgid "unable to scan namestore"
msgstr "Misslyckades att ansluta till gnunetd.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:450
+#: src/namestore/gnunet-namestore-fcfsd.c:455
#, fuzzy, c-format
msgid "Failed to create record for `%s': %s\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:462
+#: src/namestore/gnunet-namestore-fcfsd.c:467
#, fuzzy
msgid "no errors"
msgstr "Okänt fel"
-#: src/namestore/gnunet-namestore-fcfsd.c:498
+#: src/namestore/gnunet-namestore-fcfsd.c:503
#, fuzzy, c-format
msgid "The requested key `%s' exists as `%s'\n"
msgstr "Skapade post \"%s\" i namnrymd \"%s\"\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:505
+#: src/namestore/gnunet-namestore-fcfsd.c:510
msgid "key exists"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:522
+#: src/namestore/gnunet-namestore-fcfsd.c:527
#, fuzzy
msgid "Error creating record data\n"
msgstr "=\tFel vid läsning av katalog.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:526
+#: src/namestore/gnunet-namestore-fcfsd.c:531
#, fuzzy
msgid "unable to store record"
msgstr "Misslyckades att starta samling.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:597
+#: src/namestore/gnunet-namestore-fcfsd.c:602
#, c-format
msgid "Requested name `%s' exists with `%u' records\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:603
+#: src/namestore/gnunet-namestore-fcfsd.c:608
msgid "name exists\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:789
+#: src/namestore/gnunet-namestore-fcfsd.c:794
msgid "unable to process submitted data"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:800
+#: src/namestore/gnunet-namestore-fcfsd.c:805
msgid "the submitted data is invalid"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:819
+#: src/namestore/gnunet-namestore-fcfsd.c:824
#, fuzzy
msgid "invalid parameters"
msgstr "Ogiltigt argument: \"%s\"\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:836
+#: src/namestore/gnunet-namestore-fcfsd.c:841
#, fuzzy
msgid "invalid name"
msgstr "Ogiltigt argument: \"%s\"\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:847
+#: src/namestore/gnunet-namestore-fcfsd.c:852
#, fuzzy, c-format
msgid "Unable to parse key %s\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:851
+#: src/namestore/gnunet-namestore-fcfsd.c:856
#, fuzzy
msgid "unable to parse key"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:962
+#: src/namestore/gnunet-namestore-fcfsd.c:967
msgid "No ego configured for `fcfsd` subsystem\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
+#: src/namestore/gnunet-namestore-fcfsd.c:1076
+#, fuzzy
+msgid "No expiration specified for records.\n"
+msgstr "Inget tabellnamn angivet, använder \"%s\".\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1087
#, fuzzy
msgid "No port specified, using default value\n"
msgstr "Konfigurationsfil \"%s\" skapad.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1089
+#: src/namestore/gnunet-namestore-fcfsd.c:1105
#, fuzzy
msgid "Failed to connect to identity\n"
msgstr "Misslyckades att ansluta till gnunetd.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1136
+#: src/namestore/gnunet-namestore-fcfsd.c:1152
msgid "name of the zone managed by FCFSD"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1145
+#: src/namestore/gnunet-namestore-fcfsd.c:1161
msgid "GNU Name System First-Come-First-Served name registration service"
msgstr ""
@@ -5154,17 +5159,17 @@ msgstr "Visa värde av alternativet"
msgid "Failed to replicate block in namecache: %s\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/namestore/gnunet-service-namestore.c:1559
+#: src/namestore/gnunet-service-namestore.c:1557
#, fuzzy
msgid "Error normalizing name."
msgstr "Klar med skapandet av värdnyckel.\n"
-#: src/namestore/gnunet-service-namestore.c:1582
+#: src/namestore/gnunet-service-namestore.c:1580
#, fuzzy
msgid "Error deserializing records."
msgstr "=\tFel vid läsning av katalog.\n"
-#: src/namestore/gnunet-service-namestore.c:1691
+#: src/namestore/gnunet-service-namestore.c:1689
#, fuzzy
msgid "Store failed"
msgstr "gnunet-update misslyckades!"
@@ -5678,17 +5683,17 @@ msgstr ""
msgid "Could not load database backend `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/peerstore/peerstore_api.c:594 src/peerstore/peerstore_api.c:642
+#: src/peerstore/peerstore_api.c:603 src/peerstore/peerstore_api.c:651
#, fuzzy
msgid "Unexpected iteration response, this should not happen.\n"
msgstr "Utdataformat är inte känt, detta bör inte hända.\n"
-#: src/peerstore/peerstore_api.c:656
+#: src/peerstore/peerstore_api.c:665
#, fuzzy
msgid "Received a malformed response from service."
msgstr "Mottog ogiltig \"%s\" begäran (storlek %d)\n"
-#: src/peerstore/peerstore_api.c:781
+#: src/peerstore/peerstore_api.c:790
msgid "Received a watch result for a non existing watch.\n"
msgstr ""
@@ -6934,7 +6939,7 @@ msgstr ""
#: src/transport/gnunet-communicator-tcp.c:3338
#: src/transport/gnunet-communicator-udp.c:3867
-#: src/transport/gnunet-service-tng.c:10926
+#: src/transport/gnunet-service-tng.c:11042
#: src/transport/gnunet-service-transport.c:2627
#, fuzzy
msgid "Transport service is lacking key configuration settings. Exiting.\n"
@@ -7646,15 +7651,15 @@ msgstr "Testar transport(er) %s\n"
#, fuzzy, c-format
msgid "Specific IPv4 address `%s' in configuration file is invalid!\n"
msgstr ""
-"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s"
-"\".\n"
+"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion "
+"\"%s\".\n"
#: src/transport/plugin_transport_http_server.c:3133
#, fuzzy, c-format
msgid "Specific IPv6 address `%s' in configuration file is invalid!\n"
msgstr ""
-"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s"
-"\".\n"
+"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion "
+"\"%s\".\n"
#: src/transport/plugin_transport_http_server.c:3208
#, fuzzy, c-format
@@ -8172,11 +8177,11 @@ msgstr "Ogiltigt format för IP: \"%s\"\n"
msgid "Failed to serialize metadata `%s'"
msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
-#: src/util/client.c:747 src/util/client.c:938
+#: src/util/client.c:749 src/util/client.c:940
msgid "not a valid filename"
msgstr ""
-#: src/util/client.c:1104
+#: src/util/client.c:1106
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
@@ -8327,7 +8332,7 @@ msgstr ""
msgid "failed to load configuration defaults"
msgstr "Kunde inte spara konfigurationsfil \"%s\":"
-#: src/util/container_bloomfilter.c:547
+#: src/util/container_bloomfilter.c:548
#, c-format
msgid ""
"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -8349,7 +8354,7 @@ msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
msgid "Could not load peer's private key\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/util/crypto_random.c:381
+#: src/util/crypto_random.c:385
#, c-format
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "libgcrypt har inte den förväntande versionen (version %s krävs).\n"
@@ -8586,7 +8591,7 @@ msgstr ""
msgid "Manipulate GNUnet configuration files"
msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
-#: src/util/gnunet-crypto-tvg.c:1483
+#: src/util/gnunet-crypto-tvg.c:1522
msgid "verify a test vector from stdin"
msgstr ""
@@ -8920,8 +8925,8 @@ msgid ""
"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS "
"resolution will be unavailable.\n"
msgstr ""
-"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s"
-"\".\n"
+"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion "
+"\"%s\".\n"
#: src/util/resolver_api.c:887
#, fuzzy, c-format
@@ -12229,8 +12234,8 @@ msgstr "Misslyckades att ansluta till gnunetd.\n"
#~ msgstr "Kunde inte slå upp namnet för SMTP-server \"%s\": %s"
#~ msgid ""
-#~ "You must specify the name of a pipe for the SMTP transport in section `"
-#~ "%s' under `%s'.\n"
+#~ "You must specify the name of a pipe for the SMTP transport in section "
+#~ "`%s' under `%s'.\n"
#~ msgstr ""
#~ "Du måste ange ett namn på röret för SMTP-transporten i sektion \"%s\" "
#~ "under \"%s\".\n"
diff --git a/po/vi.po b/po/vi.po
index 13773f583..484f23c70 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnunet 0.8.0a\n"
"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2022-04-01 08:42+0200\n"
+"POT-Creation-Date: 2022-06-04 22:36+0200\n"
"PO-Revision-Date: 2008-09-10 22:05+0930\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -30,7 +30,7 @@ msgid "Issuer public key `%s' is not well-formed\n"
msgstr "Đối số không hợp lệ cho « %s ».\n"
#: src/abd/gnunet-abd.c:558 src/abd/gnunet-service-abd.c:1751
-#: src/namestore/gnunet-namestore-fcfsd.c:1080
+#: src/namestore/gnunet-namestore-fcfsd.c:1096
#: src/namestore/gnunet-namestore.c:951
#, fuzzy, c-format
msgid "Failed to connect to namestore\n"
@@ -404,14 +404,14 @@ msgid "Require valid port number for service `%s' in configuration!\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:452 src/transport/plugin_transport_tcp.c:1163
-#: src/transport/tcp_service_legacy.c:634 src/util/client.c:527
+#: src/transport/tcp_service_legacy.c:634 src/util/client.c:529
#: src/util/service.c:1133
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:456 src/transport/plugin_transport_tcp.c:1167
-#: src/transport/tcp_service_legacy.c:638 src/util/client.c:532
+#: src/transport/tcp_service_legacy.c:638 src/util/client.c:534
#: src/util/service.c:1137
#, fuzzy, c-format
msgid "Using `%s' instead\n"
@@ -1542,7 +1542,7 @@ msgstr "# các byte đã giải mã"
#: src/core/gnunet-service-core_sessions.c:252
#: src/core/gnunet-service-core_sessions.c:337
-#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1520
+#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1519
#: src/topology/gnunet-daemon-topology.c:579
#: src/topology/gnunet-daemon-topology.c:671
#: src/transport/gnunet-service-transport_neighbours.c:723
@@ -3525,7 +3525,7 @@ msgstr "# các thông báo phát hiện dht được nhận"
msgid "Migration of content to peer `%s' blocked for %s\n"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1343
+#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1342
msgid "# P2P searches active"
msgstr ""
@@ -3571,12 +3571,12 @@ msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
msgid "# requests dropped due TTL underflow"
msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
-#: src/fs/gnunet-service-fs_cp.c:1339
+#: src/fs/gnunet-service-fs_cp.c:1338
#, fuzzy
msgid "# P2P query messages received and processed"
msgstr "# các thông báo phát hiện dht được nhận"
-#: src/fs/gnunet-service-fs_cp.c:1709
+#: src/fs/gnunet-service-fs_cp.c:1708
#, fuzzy
msgid "# migration stop messages sent"
msgstr "# các thông báo phát hiện dht được nhận"
@@ -3656,100 +3656,100 @@ msgstr "# các yêu cầu get (lấy) dht được nhận"
msgid "# query plan entries"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:330
+#: src/fs/gnunet-service-fs_pr.c:325
#, fuzzy
msgid "# Pending requests created"
msgstr "# các yêu cầu get (lấy) dht được nhận"
-#: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662
+#: src/fs/gnunet-service-fs_pr.c:416 src/fs/gnunet-service-fs_pr.c:654
#, fuzzy
msgid "# Pending requests active"
msgstr "# các yêu cầu get (lấy) dht được nhận"
-#: src/fs/gnunet-service-fs_pr.c:837
+#: src/fs/gnunet-service-fs_pr.c:829
#, fuzzy
msgid "# replies received and matched"
msgstr "# các byte kiểu %d được nhận"
-#: src/fs/gnunet-service-fs_pr.c:911
+#: src/fs/gnunet-service-fs_pr.c:903
#, fuzzy
msgid "# results found locally"
msgstr "# nội dung lỗ hổng được tìm cục bộ"
-#: src/fs/gnunet-service-fs_pr.c:1045
+#: src/fs/gnunet-service-fs_pr.c:1037
msgid "# Datastore `PUT' failures"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1074
+#: src/fs/gnunet-service-fs_pr.c:1066
#, fuzzy
msgid "# storage requests dropped due to high load"
msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
-#: src/fs/gnunet-service-fs_pr.c:1113
+#: src/fs/gnunet-service-fs_pr.c:1105
#, fuzzy
msgid "# Replies received from DHT"
msgstr "# các byte đã nhận qua HTTP"
-#: src/fs/gnunet-service-fs_pr.c:1268
+#: src/fs/gnunet-service-fs_pr.c:1260
#, fuzzy
msgid "# Replies received from CADET"
msgstr "# các byte đã nhận qua HTTP"
-#: src/fs/gnunet-service-fs_pr.c:1323
+#: src/fs/gnunet-service-fs_pr.c:1315
#, c-format
msgid "Datastore lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1344
+#: src/fs/gnunet-service-fs_pr.c:1336
#, c-format
msgid "On-demand lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1411
+#: src/fs/gnunet-service-fs_pr.c:1403
msgid "# requested DBLOCK or IBLOCK not found"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1473
+#: src/fs/gnunet-service-fs_pr.c:1465
msgid "# Datastore lookups concluded (error queueing)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1528
+#: src/fs/gnunet-service-fs_pr.c:1520
msgid "# Datastore lookups concluded (no results)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1543
+#: src/fs/gnunet-service-fs_pr.c:1535
msgid "# Datastore lookups concluded (seen all)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1558
msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1583
+#: src/fs/gnunet-service-fs_pr.c:1575
msgid "# on-demand blocks matched requests"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1604
+#: src/fs/gnunet-service-fs_pr.c:1596
msgid "# on-demand lookups performed successfully"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1610
+#: src/fs/gnunet-service-fs_pr.c:1602
msgid "# on-demand lookups failed"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1656
+#: src/fs/gnunet-service-fs_pr.c:1648
msgid "# Datastore lookups concluded (found last result)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1669
+#: src/fs/gnunet-service-fs_pr.c:1661
msgid "# Datastore lookups concluded (load too high)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1720
+#: src/fs/gnunet-service-fs_pr.c:1712
msgid "# Datastore lookups initiated"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1784
+#: src/fs/gnunet-service-fs_pr.c:1776
#, fuzzy
msgid "# GAP PUT messages received"
msgstr "# các thông báo PONG đã mật mã được nhận"
@@ -3798,12 +3798,12 @@ msgstr ""
msgid "Invalid port number %u\n"
msgstr "Đối số không hợp lệ cho « %s ».\n"
-#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1113
+#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1129
#, fuzzy
msgid "Unable to set up the daemon\n"
msgstr "Không thể tạo tài khoản người dùng cho trình nền."
-#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:987
+#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:992
#, fuzzy
msgid "Failed to start HTTP server\n"
msgstr "Lỗi bắt đầu thu thập.\n"
@@ -4131,35 +4131,35 @@ msgstr ""
msgid "Zone %s was revoked, resolution fails\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:136
+#: src/gns/plugin_gnsrecord_gns.c:138
msgid "This is a memento of an older block for internal maintenance."
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:175
+#: src/gns/plugin_gnsrecord_gns.c:177
#, fuzzy, c-format
msgid "Unable to parse zone key record `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/gns/plugin_gnsrecord_gns.c:188
+#: src/gns/plugin_gnsrecord_gns.c:191
msgid "Record type does not match parsed record type\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:211
+#: src/gns/plugin_gnsrecord_gns.c:214
#, fuzzy, c-format
msgid "Unable to parse GNS2DNS record `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/gns/plugin_gnsrecord_gns.c:227
+#: src/gns/plugin_gnsrecord_gns.c:231
#, fuzzy, c-format
msgid "Failed to serialize GNS2DNS record with value `%s': Not a DNS name.\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/gns/plugin_gnsrecord_gns.c:251
+#: src/gns/plugin_gnsrecord_gns.c:255
#, fuzzy, c-format
msgid "Unable to parse VPN record string `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/gns/plugin_gnsrecord_gns.c:283
+#: src/gns/plugin_gnsrecord_gns.c:287
#, fuzzy, c-format
msgid "Unable to parse BOX record string `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
@@ -4780,7 +4780,7 @@ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
msgid "Identity REST API initialized\n"
msgstr "Lỗi sơ khởi lõi.\n"
-#: src/json/json.c:120
+#: src/json/json.c:130
#, fuzzy, c-format
msgid "Failed to parse JSON in option `%s': %s (%s)\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
@@ -4896,102 +4896,107 @@ msgstr "kho dữ liệu sqlite"
msgid "Failed to setup database at `%s'\n"
msgstr "Lỗi chạy %s: %s %d\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:368
+#: src/namestore/gnunet-namestore-fcfsd.c:373
#, fuzzy
msgid "can not search the namestore"
msgstr "Không kết nối được đến trình nền gnunetd."
-#: src/namestore/gnunet-namestore-fcfsd.c:422
-#: src/namestore/gnunet-namestore-fcfsd.c:563
+#: src/namestore/gnunet-namestore-fcfsd.c:427
+#: src/namestore/gnunet-namestore-fcfsd.c:568
#, fuzzy
msgid "unable to scan namestore"
msgstr "Không kết nối được đến trình nền gnunetd."
-#: src/namestore/gnunet-namestore-fcfsd.c:450
+#: src/namestore/gnunet-namestore-fcfsd.c:455
#, fuzzy, c-format
msgid "Failed to create record for `%s': %s\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:462
+#: src/namestore/gnunet-namestore-fcfsd.c:467
#, fuzzy
msgid "no errors"
msgstr "Lỗi không rõ"
-#: src/namestore/gnunet-namestore-fcfsd.c:498
+#: src/namestore/gnunet-namestore-fcfsd.c:503
#, fuzzy, c-format
msgid "The requested key `%s' exists as `%s'\n"
msgstr "Đã tạo mục nhập « %s » trong không gian tên « %s »\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:505
+#: src/namestore/gnunet-namestore-fcfsd.c:510
msgid "key exists"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:522
+#: src/namestore/gnunet-namestore-fcfsd.c:527
#, fuzzy
msgid "Error creating record data\n"
msgstr "=\tLỗi đọc thư mục.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:526
+#: src/namestore/gnunet-namestore-fcfsd.c:531
#, fuzzy
msgid "unable to store record"
msgstr "Lỗi bắt đầu thu thập.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:597
+#: src/namestore/gnunet-namestore-fcfsd.c:602
#, c-format
msgid "Requested name `%s' exists with `%u' records\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:603
+#: src/namestore/gnunet-namestore-fcfsd.c:608
msgid "name exists\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:789
+#: src/namestore/gnunet-namestore-fcfsd.c:794
msgid "unable to process submitted data"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:800
+#: src/namestore/gnunet-namestore-fcfsd.c:805
msgid "the submitted data is invalid"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:819
+#: src/namestore/gnunet-namestore-fcfsd.c:824
#, fuzzy
msgid "invalid parameters"
msgstr "Đối số không hợp lệ cho « %s ».\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:836
+#: src/namestore/gnunet-namestore-fcfsd.c:841
#, fuzzy
msgid "invalid name"
msgstr "Đối số không hợp lệ cho « %s ».\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:847
+#: src/namestore/gnunet-namestore-fcfsd.c:852
#, fuzzy, c-format
msgid "Unable to parse key %s\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:851
+#: src/namestore/gnunet-namestore-fcfsd.c:856
#, fuzzy
msgid "unable to parse key"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:962
+#: src/namestore/gnunet-namestore-fcfsd.c:967
msgid "No ego configured for `fcfsd` subsystem\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
+#: src/namestore/gnunet-namestore-fcfsd.c:1076
+#, fuzzy
+msgid "No expiration specified for records.\n"
+msgstr "Chưa xác định giao diện nên dùng mặc định.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1087
#, fuzzy
msgid "No port specified, using default value\n"
msgstr "Tập tin cấu hình « %s » đã được ghi.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1089
+#: src/namestore/gnunet-namestore-fcfsd.c:1105
#, fuzzy
msgid "Failed to connect to identity\n"
msgstr "Lỗi kết nối đến gnunetd.\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1136
+#: src/namestore/gnunet-namestore-fcfsd.c:1152
msgid "name of the zone managed by FCFSD"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1145
+#: src/namestore/gnunet-namestore-fcfsd.c:1161
msgid "GNU Name System First-Come-First-Served name registration service"
msgstr ""
@@ -5208,17 +5213,17 @@ msgstr ""
msgid "Failed to replicate block in namecache: %s\n"
msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
-#: src/namestore/gnunet-service-namestore.c:1559
+#: src/namestore/gnunet-service-namestore.c:1557
#, fuzzy
msgid "Error normalizing name."
msgstr "Hoàn thành tạo khoá.\n"
-#: src/namestore/gnunet-service-namestore.c:1582
+#: src/namestore/gnunet-service-namestore.c:1580
#, fuzzy
msgid "Error deserializing records."
msgstr "=\tLỗi đọc thư mục.\n"
-#: src/namestore/gnunet-service-namestore.c:1691
+#: src/namestore/gnunet-service-namestore.c:1689
#, fuzzy
msgid "Store failed"
msgstr "Kho dữ liệu đầy.\n"
@@ -5735,17 +5740,17 @@ msgstr ""
msgid "Could not load database backend `%s'\n"
msgstr "Không thể đọc danh sách bạn bè « %s »\n"
-#: src/peerstore/peerstore_api.c:594 src/peerstore/peerstore_api.c:642
+#: src/peerstore/peerstore_api.c:603 src/peerstore/peerstore_api.c:651
#, fuzzy
msgid "Unexpected iteration response, this should not happen.\n"
msgstr "Định dạng kết xuất không rõ, điều này không nên xảy ra.\n"
-#: src/peerstore/peerstore_api.c:656
+#: src/peerstore/peerstore_api.c:665
#, fuzzy
msgid "Received a malformed response from service."
msgstr "Nhận yêu cầu định tuyến\n"
-#: src/peerstore/peerstore_api.c:781
+#: src/peerstore/peerstore_api.c:790
msgid "Received a watch result for a non existing watch.\n"
msgstr ""
@@ -6995,7 +7000,7 @@ msgstr ""
#: src/transport/gnunet-communicator-tcp.c:3338
#: src/transport/gnunet-communicator-udp.c:3867
-#: src/transport/gnunet-service-tng.c:10926
+#: src/transport/gnunet-service-tng.c:11042
#: src/transport/gnunet-service-transport.c:2627
#, fuzzy
msgid "Transport service is lacking key configuration settings. Exiting.\n"
@@ -8226,11 +8231,11 @@ msgstr "Địa chỉ IP định dạng sai: %s\n"
msgid "Failed to serialize metadata `%s'"
msgstr "Lỗi lấy thông kê về truyền tải.\n"
-#: src/util/client.c:747 src/util/client.c:938
+#: src/util/client.c:749 src/util/client.c:940
msgid "not a valid filename"
msgstr ""
-#: src/util/client.c:1104
+#: src/util/client.c:1106
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
@@ -8385,7 +8390,7 @@ msgstr ""
msgid "failed to load configuration defaults"
msgstr "Không thể lưu tập tin cấu hình « %s »:"
-#: src/util/container_bloomfilter.c:547
+#: src/util/container_bloomfilter.c:548
#, c-format
msgid ""
"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -8407,7 +8412,7 @@ msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
msgid "Could not load peer's private key\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/util/crypto_random.c:381
+#: src/util/crypto_random.c:385
#, c-format
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "libgcrypt không có phiên bản mong đợi (yêu cầu phiên bản %s).\n"
@@ -8646,7 +8651,7 @@ msgstr ""
msgid "Manipulate GNUnet configuration files"
msgstr "cập nhật một giá trị trong tập tin cấu hình"
-#: src/util/gnunet-crypto-tvg.c:1483
+#: src/util/gnunet-crypto-tvg.c:1522
msgid "verify a test vector from stdin"
msgstr ""
@@ -10656,8 +10661,8 @@ msgstr "Không kết nối được đến trình nền gnunetd."
#, fuzzy
#~ msgid ""
-#~ "Syntax error in topology specification at offset %llu, skipping bytes `"
-#~ "%s'.\n"
+#~ "Syntax error in topology specification at offset %llu, skipping bytes "
+#~ "`%s'.\n"
#~ msgstr ""
#~ "Lỗi cú pháp trong sự xác định địa hình học, đang bỏ qua các byte « %s ».\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index b04d0adf9..a7c3d43e4 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnunet-0.8.1\n"
"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2022-04-01 08:42+0200\n"
+"POT-Creation-Date: 2022-06-04 22:36+0200\n"
"PO-Revision-Date: 2011-07-09 12:12+0800\n"
"Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -27,7 +27,7 @@ msgid "Issuer public key `%s' is not well-formed\n"
msgstr "“%s”的参数无效。\n"
#: src/abd/gnunet-abd.c:558 src/abd/gnunet-service-abd.c:1751
-#: src/namestore/gnunet-namestore-fcfsd.c:1080
+#: src/namestore/gnunet-namestore-fcfsd.c:1096
#: src/namestore/gnunet-namestore.c:951
#, fuzzy, c-format
msgid "Failed to connect to namestore\n"
@@ -388,14 +388,14 @@ msgid "Require valid port number for service `%s' in configuration!\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:452 src/transport/plugin_transport_tcp.c:1163
-#: src/transport/tcp_service_legacy.c:634 src/util/client.c:527
+#: src/transport/tcp_service_legacy.c:634 src/util/client.c:529
#: src/util/service.c:1133
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
#: src/arm/gnunet-service-arm.c:456 src/transport/plugin_transport_tcp.c:1167
-#: src/transport/tcp_service_legacy.c:638 src/util/client.c:532
+#: src/transport/tcp_service_legacy.c:638 src/util/client.c:534
#: src/util/service.c:1137
#, fuzzy, c-format
msgid "Using `%s' instead\n"
@@ -1491,7 +1491,7 @@ msgstr ""
#: src/core/gnunet-service-core_sessions.c:252
#: src/core/gnunet-service-core_sessions.c:337
-#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1520
+#: src/fs/gnunet-service-fs_cp.c:610 src/fs/gnunet-service-fs_cp.c:1519
#: src/topology/gnunet-daemon-topology.c:579
#: src/topology/gnunet-daemon-topology.c:671
#: src/transport/gnunet-service-transport_neighbours.c:723
@@ -3388,7 +3388,7 @@ msgstr ""
msgid "Migration of content to peer `%s' blocked for %s\n"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1343
+#: src/fs/gnunet-service-fs_cp.c:717 src/fs/gnunet-service-fs_cp.c:1342
msgid "# P2P searches active"
msgstr ""
@@ -3428,11 +3428,11 @@ msgstr ""
msgid "# requests dropped due TTL underflow"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:1339
+#: src/fs/gnunet-service-fs_cp.c:1338
msgid "# P2P query messages received and processed"
msgstr ""
-#: src/fs/gnunet-service-fs_cp.c:1709
+#: src/fs/gnunet-service-fs_cp.c:1708
msgid "# migration stop messages sent"
msgstr ""
@@ -3506,93 +3506,93 @@ msgstr ""
msgid "# query plan entries"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:330
+#: src/fs/gnunet-service-fs_pr.c:325
msgid "# Pending requests created"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662
+#: src/fs/gnunet-service-fs_pr.c:416 src/fs/gnunet-service-fs_pr.c:654
msgid "# Pending requests active"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:837
+#: src/fs/gnunet-service-fs_pr.c:829
msgid "# replies received and matched"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:911
+#: src/fs/gnunet-service-fs_pr.c:903
msgid "# results found locally"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1045
+#: src/fs/gnunet-service-fs_pr.c:1037
msgid "# Datastore `PUT' failures"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1074
+#: src/fs/gnunet-service-fs_pr.c:1066
msgid "# storage requests dropped due to high load"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1113
+#: src/fs/gnunet-service-fs_pr.c:1105
msgid "# Replies received from DHT"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1268
+#: src/fs/gnunet-service-fs_pr.c:1260
msgid "# Replies received from CADET"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1323
+#: src/fs/gnunet-service-fs_pr.c:1315
#, c-format
msgid "Datastore lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1344
+#: src/fs/gnunet-service-fs_pr.c:1336
#, c-format
msgid "On-demand lookup already took %s!\n"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1411
+#: src/fs/gnunet-service-fs_pr.c:1403
msgid "# requested DBLOCK or IBLOCK not found"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1473
+#: src/fs/gnunet-service-fs_pr.c:1465
msgid "# Datastore lookups concluded (error queueing)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1528
+#: src/fs/gnunet-service-fs_pr.c:1520
msgid "# Datastore lookups concluded (no results)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1543
+#: src/fs/gnunet-service-fs_pr.c:1535
msgid "# Datastore lookups concluded (seen all)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1558
msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1583
+#: src/fs/gnunet-service-fs_pr.c:1575
msgid "# on-demand blocks matched requests"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1604
+#: src/fs/gnunet-service-fs_pr.c:1596
msgid "# on-demand lookups performed successfully"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1610
+#: src/fs/gnunet-service-fs_pr.c:1602
msgid "# on-demand lookups failed"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1656
+#: src/fs/gnunet-service-fs_pr.c:1648
msgid "# Datastore lookups concluded (found last result)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1669
+#: src/fs/gnunet-service-fs_pr.c:1661
msgid "# Datastore lookups concluded (load too high)"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1720
+#: src/fs/gnunet-service-fs_pr.c:1712
msgid "# Datastore lookups initiated"
msgstr ""
-#: src/fs/gnunet-service-fs_pr.c:1784
+#: src/fs/gnunet-service-fs_pr.c:1776
msgid "# GAP PUT messages received"
msgstr ""
@@ -3636,12 +3636,12 @@ msgstr ""
msgid "Invalid port number %u\n"
msgstr "“%s”的参数无效。\n"
-#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1113
+#: src/gns/gnunet-bcd.c:614 src/namestore/gnunet-namestore-fcfsd.c:1129
#, fuzzy
msgid "Unable to set up the daemon\n"
msgstr "发送消息失败。\n"
-#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:987
+#: src/gns/gnunet-bcd.c:637 src/namestore/gnunet-namestore-fcfsd.c:992
#, fuzzy
msgid "Failed to start HTTP server\n"
msgstr "初始化“%s”服务失败。\n"
@@ -3965,35 +3965,35 @@ msgstr ""
msgid "Zone %s was revoked, resolution fails\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:136
+#: src/gns/plugin_gnsrecord_gns.c:138
msgid "This is a memento of an older block for internal maintenance."
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:175
+#: src/gns/plugin_gnsrecord_gns.c:177
#, fuzzy, c-format
msgid "Unable to parse zone key record `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gns/plugin_gnsrecord_gns.c:188
+#: src/gns/plugin_gnsrecord_gns.c:191
msgid "Record type does not match parsed record type\n"
msgstr ""
-#: src/gns/plugin_gnsrecord_gns.c:211
+#: src/gns/plugin_gnsrecord_gns.c:214
#, fuzzy, c-format
msgid "Unable to parse GNS2DNS record `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gns/plugin_gnsrecord_gns.c:227
+#: src/gns/plugin_gnsrecord_gns.c:231
#, fuzzy, c-format
msgid "Failed to serialize GNS2DNS record with value `%s': Not a DNS name.\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gns/plugin_gnsrecord_gns.c:251
+#: src/gns/plugin_gnsrecord_gns.c:255
#, fuzzy, c-format
msgid "Unable to parse VPN record string `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gns/plugin_gnsrecord_gns.c:283
+#: src/gns/plugin_gnsrecord_gns.c:287
#, fuzzy, c-format
msgid "Unable to parse BOX record string `%s'\n"
msgstr "解析配置文件“%s”失败\n"
@@ -4594,7 +4594,7 @@ msgstr "解析配置文件“%s”失败\n"
msgid "Identity REST API initialized\n"
msgstr ""
-#: src/json/json.c:120
+#: src/json/json.c:130
#, fuzzy, c-format
msgid "Failed to parse JSON in option `%s': %s (%s)\n"
msgstr "解析配置文件“%s”失败\n"
@@ -4709,102 +4709,107 @@ msgstr "sqlite 数据仓库"
msgid "Failed to setup database at `%s'\n"
msgstr "运行 %s失败:%s %d\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:368
+#: src/namestore/gnunet-namestore-fcfsd.c:373
#, fuzzy
msgid "can not search the namestore"
msgstr "初始化“%s”服务失败。\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:422
-#: src/namestore/gnunet-namestore-fcfsd.c:563
+#: src/namestore/gnunet-namestore-fcfsd.c:427
+#: src/namestore/gnunet-namestore-fcfsd.c:568
#, fuzzy
msgid "unable to scan namestore"
msgstr "初始化“%s”服务失败。\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:450
+#: src/namestore/gnunet-namestore-fcfsd.c:455
#, fuzzy, c-format
msgid "Failed to create record for `%s': %s\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:462
+#: src/namestore/gnunet-namestore-fcfsd.c:467
#, fuzzy
msgid "no errors"
msgstr "未知错误"
-#: src/namestore/gnunet-namestore-fcfsd.c:498
+#: src/namestore/gnunet-namestore-fcfsd.c:503
#, c-format
msgid "The requested key `%s' exists as `%s'\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:505
+#: src/namestore/gnunet-namestore-fcfsd.c:510
msgid "key exists"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:522
+#: src/namestore/gnunet-namestore-fcfsd.c:527
#, fuzzy
msgid "Error creating record data\n"
msgstr "未知错误。\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:526
+#: src/namestore/gnunet-namestore-fcfsd.c:531
#, fuzzy
msgid "unable to store record"
msgstr "运行 %s失败:%s %d\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:597
+#: src/namestore/gnunet-namestore-fcfsd.c:602
#, c-format
msgid "Requested name `%s' exists with `%u' records\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:603
+#: src/namestore/gnunet-namestore-fcfsd.c:608
msgid "name exists\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:789
+#: src/namestore/gnunet-namestore-fcfsd.c:794
msgid "unable to process submitted data"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:800
+#: src/namestore/gnunet-namestore-fcfsd.c:805
msgid "the submitted data is invalid"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:819
+#: src/namestore/gnunet-namestore-fcfsd.c:824
#, fuzzy
msgid "invalid parameters"
msgstr "“%s”的参数无效。\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:836
+#: src/namestore/gnunet-namestore-fcfsd.c:841
#, fuzzy
msgid "invalid name"
msgstr "“%s”的参数无效。\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:847
+#: src/namestore/gnunet-namestore-fcfsd.c:852
#, fuzzy, c-format
msgid "Unable to parse key %s\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:851
+#: src/namestore/gnunet-namestore-fcfsd.c:856
#, fuzzy
msgid "unable to parse key"
msgstr "解析配置文件“%s”失败\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:962
+#: src/namestore/gnunet-namestore-fcfsd.c:967
msgid "No ego configured for `fcfsd` subsystem\n"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
+#: src/namestore/gnunet-namestore-fcfsd.c:1076
+#, fuzzy
+msgid "No expiration specified for records.\n"
+msgstr "没有指定接口,将使用默认。\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1087
#, fuzzy
msgid "No port specified, using default value\n"
msgstr "配置文件“%s”已写入。\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1089
+#: src/namestore/gnunet-namestore-fcfsd.c:1105
#, fuzzy
msgid "Failed to connect to identity\n"
msgstr "初始化“%s”服务失败。\n"
-#: src/namestore/gnunet-namestore-fcfsd.c:1136
+#: src/namestore/gnunet-namestore-fcfsd.c:1152
msgid "name of the zone managed by FCFSD"
msgstr ""
-#: src/namestore/gnunet-namestore-fcfsd.c:1145
+#: src/namestore/gnunet-namestore-fcfsd.c:1161
msgid "GNU Name System First-Come-First-Served name registration service"
msgstr ""
@@ -5021,17 +5026,17 @@ msgstr ""
msgid "Failed to replicate block in namecache: %s\n"
msgstr "发送消息失败。\n"
-#: src/namestore/gnunet-service-namestore.c:1559
+#: src/namestore/gnunet-service-namestore.c:1557
#, fuzzy
msgid "Error normalizing name."
msgstr "创建用户出错"
-#: src/namestore/gnunet-service-namestore.c:1582
+#: src/namestore/gnunet-service-namestore.c:1580
#, fuzzy
msgid "Error deserializing records."
msgstr "未知错误。\n"
-#: src/namestore/gnunet-service-namestore.c:1691
+#: src/namestore/gnunet-service-namestore.c:1689
#, fuzzy
msgid "Store failed"
msgstr "“%s”已连接到“%s”。\n"
@@ -5536,17 +5541,17 @@ msgstr ""
msgid "Could not load database backend `%s'\n"
msgstr "无法解析“%s”(%s):%s\n"
-#: src/peerstore/peerstore_api.c:594 src/peerstore/peerstore_api.c:642
+#: src/peerstore/peerstore_api.c:603 src/peerstore/peerstore_api.c:651
#, fuzzy
msgid "Unexpected iteration response, this should not happen.\n"
msgstr "输出格式未知,不应出现这种情况。\n"
-#: src/peerstore/peerstore_api.c:656
+#: src/peerstore/peerstore_api.c:665
#, fuzzy
msgid "Received a malformed response from service."
msgstr "“%s”的参数无效。\n"
-#: src/peerstore/peerstore_api.c:781
+#: src/peerstore/peerstore_api.c:790
msgid "Received a watch result for a non existing watch.\n"
msgstr ""
@@ -6774,7 +6779,7 @@ msgstr ""
#: src/transport/gnunet-communicator-tcp.c:3338
#: src/transport/gnunet-communicator-udp.c:3867
-#: src/transport/gnunet-service-tng.c:10926
+#: src/transport/gnunet-service-tng.c:11042
#: src/transport/gnunet-service-transport.c:2627
#, fuzzy
msgid "Transport service is lacking key configuration settings. Exiting.\n"
@@ -7952,11 +7957,11 @@ msgstr "IP 格式无效:“%s”\n"
msgid "Failed to serialize metadata `%s'"
msgstr "发送消息失败。\n"
-#: src/util/client.c:747 src/util/client.c:938
+#: src/util/client.c:749 src/util/client.c:940
msgid "not a valid filename"
msgstr ""
-#: src/util/client.c:1104
+#: src/util/client.c:1106
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
@@ -8107,7 +8112,7 @@ msgstr ""
msgid "failed to load configuration defaults"
msgstr "解析配置文件“%s”失败\n"
-#: src/util/container_bloomfilter.c:547
+#: src/util/container_bloomfilter.c:548
#, c-format
msgid ""
"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -8129,7 +8134,7 @@ msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
msgid "Could not load peer's private key\n"
msgstr "找不到接口“%s”的一个 IP 地址。\n"
-#: src/util/crypto_random.c:381
+#: src/util/crypto_random.c:385
#, c-format
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "libgcrypt 的版本不符合预期(要求版本 %s)。\n"
@@ -8364,7 +8369,7 @@ msgstr ""
msgid "Manipulate GNUnet configuration files"
msgstr "更改配置文件中的一个值"
-#: src/util/gnunet-crypto-tvg.c:1483
+#: src/util/gnunet-crypto-tvg.c:1522
msgid "verify a test vector from stdin"
msgstr ""
diff --git a/src/block/bg_bf.c b/src/block/bg_bf.c
index 601f605a2..b79ea3c55 100644
--- a/src/block/bg_bf.c
+++ b/src/block/bg_bf.c
@@ -55,7 +55,6 @@ struct BfGroupInternals
* Serialize state of a block group.
*
* @param bg group to serialize
- * @param[out] nonce set to the nonce of the @a bg
* @param[out] raw_data set to the serialized state
* @param[out] raw_data_size set to the number of bytes in @a raw_data
* @return #GNUNET_OK on success, #GNUNET_NO if serialization is not
@@ -63,26 +62,27 @@ struct BfGroupInternals
*/
static enum GNUNET_GenericReturnValue
bf_group_serialize_cb (struct GNUNET_BLOCK_Group *bg,
- uint32_t *nonce,
void **raw_data,
size_t *raw_data_size)
{
struct BfGroupInternals *gi = bg->internal_cls;
- char *raw;
+ void *raw;
- raw = GNUNET_malloc (gi->bf_size);
+ raw = GNUNET_malloc (gi->bf_size + sizeof (uint32_t));
if (GNUNET_OK !=
GNUNET_CONTAINER_bloomfilter_get_raw_data (gi->bf,
- raw,
+ raw + sizeof (uint32_t),
gi->bf_size))
{
GNUNET_free (raw);
GNUNET_break (0);
return GNUNET_SYSERR;
}
- *nonce = gi->bf_mutator;
+ memcpy (raw,
+ &gi->bf_mutator,
+ sizeof (uint32_t));
*raw_data = raw;
- *raw_data_size = gi->bf_size;
+ *raw_data_size = gi->bf_size + sizeof (uint32_t);
return GNUNET_OK;
}
@@ -164,7 +164,6 @@ bf_group_destroy_cb (struct GNUNET_BLOCK_Group *bg)
* @param bf_size size of the Bloom filter
* @param bf_k K-value for the Bloom filter
* @param type block type
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @return block group handle, NULL if block groups are not supported
@@ -175,13 +174,32 @@ GNUNET_BLOCK_GROUP_bf_create (void *cls,
size_t bf_size,
unsigned int bf_k,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size)
{
struct BfGroupInternals *gi;
struct GNUNET_BLOCK_Group *bg;
+ uint32_t nonce;
+ if ( (NULL != raw_data) &&
+ (raw_data_size < sizeof (nonce)) )
+ {
+ GNUNET_break_op (0);
+ return NULL;
+ }
+ if (NULL != raw_data)
+ {
+ memcpy (&nonce,
+ raw_data,
+ sizeof (nonce));
+ raw_data += sizeof (nonce);
+ raw_data_size -= sizeof (nonce);
+ }
+ else
+ {
+ nonce = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_NONCE,
+ UINT32_MAX);
+ }
gi = GNUNET_new (struct BfGroupInternals);
gi->bf = GNUNET_CONTAINER_bloomfilter_init ((bf_size != raw_data_size) ?
NULL : raw_data,
@@ -210,7 +228,7 @@ GNUNET_BLOCK_GROUP_bf_create (void *cls,
* @return #GNUNET_YES if @a hc is (likely) a duplicate
* #GNUNET_NO if @a hc was definitively not in @bg (but now is)
*/
-int
+enum GNUNET_GenericReturnValue
GNUNET_BLOCK_GROUP_bf_test_and_set (struct GNUNET_BLOCK_Group *bg,
const struct GNUNET_HashCode *hc)
{
diff --git a/src/block/block.c b/src/block/block.c
index 98095b51c..4b2d8a960 100644
--- a/src/block/block.c
+++ b/src/block/block.c
@@ -91,6 +91,7 @@ struct MinglePacker
GNUNET_NETWORK_STRUCT_END
+
void
GNUNET_BLOCK_mingle_hash (const struct GNUNET_HashCode *in,
uint32_t mingle_number,
@@ -172,11 +173,9 @@ GNUNET_BLOCK_context_destroy (struct GNUNET_BLOCK_Context *ctx)
enum GNUNET_GenericReturnValue
GNUNET_BLOCK_group_serialize (struct GNUNET_BLOCK_Group *bg,
- uint32_t *nonce,
void **raw_data,
size_t *raw_data_size)
{
- *nonce = 0;
*raw_data = NULL;
*raw_data_size = 0;
if (NULL == bg)
@@ -184,7 +183,6 @@ GNUNET_BLOCK_group_serialize (struct GNUNET_BLOCK_Group *bg,
if (NULL == bg->serialize_cb)
return GNUNET_NO;
return bg->serialize_cb (bg,
- nonce,
raw_data,
raw_data_size);
}
@@ -248,7 +246,6 @@ find_plugin (struct GNUNET_BLOCK_Context *ctx,
struct GNUNET_BLOCK_Group *
GNUNET_BLOCK_group_create (struct GNUNET_BLOCK_Context *ctx,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
...)
@@ -267,7 +264,6 @@ GNUNET_BLOCK_group_create (struct GNUNET_BLOCK_Context *ctx,
raw_data_size);
bg = plugin->create_group (plugin->cls,
type,
- nonce,
raw_data,
raw_data_size,
ap);
diff --git a/src/block/plugin_block_template.c b/src/block/plugin_block_template.c
index dcaf1afaa..46a370924 100644
--- a/src/block/plugin_block_template.c
+++ b/src/block/plugin_block_template.c
@@ -48,7 +48,6 @@
*
* @param ctx block context in which the block group is created
* @param type type of the block for which we are creating the group
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @param va variable arguments specific to @a type
@@ -58,7 +57,6 @@
static struct GNUNET_BLOCK_Group *
block_plugin_template_create_group (void *cls,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
va_list va)
@@ -85,7 +83,6 @@ block_plugin_template_create_group (void *cls,
bf_size,
BLOOMFILTER_K,
type,
- nonce,
raw_data,
raw_data_size);
}
@@ -124,9 +121,9 @@ block_plugin_template_check_query (void *cls,
*/
static enum GNUNET_GenericReturnValue
block_plugin_template_check_block (void *cls,
- enum GNUNET_BLOCK_Type type,
- const void *block,
- size_t block_size)
+ enum GNUNET_BLOCK_Type type,
+ const void *block,
+ size_t block_size)
{
return GNUNET_SYSERR;
}
@@ -150,14 +147,14 @@ block_plugin_template_check_block (void *cls,
*/
static enum GNUNET_BLOCK_ReplyEvaluationResult
block_plugin_template_check_reply (
- void *cls,
- enum GNUNET_BLOCK_Type type,
- struct GNUNET_BLOCK_Group *group,
- const struct GNUNET_HashCode *query,
- const void *xquery,
- size_t xquery_size,
- const void *reply_block,
- size_t reply_block_size)
+ void *cls,
+ enum GNUNET_BLOCK_Type type,
+ struct GNUNET_BLOCK_Group *group,
+ const struct GNUNET_HashCode *query,
+ const void *xquery,
+ size_t xquery_size,
+ const void *reply_block,
+ size_t reply_block_size)
{
return GNUNET_BLOCK_REPLY_TYPE_NOT_SUPPORTED;
}
diff --git a/src/block/plugin_block_test.c b/src/block/plugin_block_test.c
index 05d379387..2e404bbc2 100644
--- a/src/block/plugin_block_test.c
+++ b/src/block/plugin_block_test.c
@@ -46,7 +46,6 @@
*
* @param ctx block context in which the block group is created
* @param type type of the block for which we are creating the group
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @param va variable arguments specific to @a type
@@ -56,7 +55,6 @@
static struct GNUNET_BLOCK_Group *
block_plugin_test_create_group (void *cls,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
va_list va)
@@ -83,7 +81,6 @@ block_plugin_test_create_group (void *cls,
bf_size,
BLOOMFILTER_K,
type,
- nonce,
raw_data,
raw_data_size);
}
diff --git a/src/dht/dhtu_testbed_deploy.sh b/src/dht/dhtu_testbed_deploy.sh
index 908bbf685..5a7fdde15 100755
--- a/src/dht/dhtu_testbed_deploy.sh
+++ b/src/dht/dhtu_testbed_deploy.sh
@@ -43,7 +43,7 @@ fi
MAX=`expr $1 - 1`
-# export GNUNET_FORCE_LOG="dht*;;;;DEBUG"
+export GNUNET_FORCE_LOG="dht*;;;;DEBUG"
echo -n "Starting $1 peers "
mkdir -p /tmp/deployment
diff --git a/src/dht/gnunet-service-dht_clients.c b/src/dht/gnunet-service-dht_clients.c
index 6a4f58d1f..fd65102b3 100644
--- a/src/dht/gnunet-service-dht_clients.c
+++ b/src/dht/gnunet-service-dht_clients.c
@@ -381,9 +381,6 @@ transmit_request (struct ClientQueryRecord *cqr)
GNUNET_NO);
bg = GNUNET_BLOCK_group_create (GDS_block_context,
cqr->type,
- GNUNET_CRYPTO_random_u32 (
- GNUNET_CRYPTO_QUALITY_WEAK,
- UINT32_MAX),
NULL, /* raw data */
0, /* raw data size */
"seen-set-size",
diff --git a/src/dht/gnunet-service-dht_neighbours.c b/src/dht/gnunet-service-dht_neighbours.c
index 2f9cbab84..fde25936f 100644
--- a/src/dht/gnunet-service-dht_neighbours.c
+++ b/src/dht/gnunet-service-dht_neighbours.c
@@ -39,15 +39,15 @@
__VA_ARGS__)
/**
- * Enable slow sanity checks to debug issues.
- *
+ * Enable slow sanity checks to debug issues.
+ *
* TODO: might want to eventually implement probabilistic
* load-based path verification, but for now it is all or nothing
* based on this define.
*
* 0: do not check -- if signatures become performance critical
* 1: check all external inputs -- normal production for now
- * 2: check internal computations as well -- for debugging
+ * 2: check internal computations as well -- for debugging
*/
#define SANITY_CHECKS 2
@@ -235,9 +235,9 @@ struct PeerGetMessage
uint16_t desired_replication_level GNUNET_PACKED;
/**
- * Size of the extended query.
+ * Size of the result filter.
*/
- uint16_t xquery_size;
+ uint16_t result_filter_size GNUNET_PACKED;
/**
* Bloomfilter (for peer identities) to stop circular routes
@@ -249,14 +249,10 @@ struct PeerGetMessage
*/
struct GNUNET_HashCode key;
- /**
- * Bloomfilter mutator.
- */
- uint32_t bf_mutator;
+ /* result bloomfilter */
/* xquery */
- /* result bloomfilter */
};
GNUNET_NETWORK_STRUCT_END
@@ -654,9 +650,6 @@ send_find_peer_message (void *cls)
bg = GNUNET_BLOCK_group_create (GDS_block_context,
GNUNET_BLOCK_TYPE_DHT_URL_HELLO,
- GNUNET_CRYPTO_random_u32 (
- GNUNET_CRYPTO_QUALITY_WEAK,
- UINT32_MAX),
NULL,
0,
"filter-size",
@@ -1287,9 +1280,9 @@ get_target_peers (const struct GNUNET_HashCode *key,
/**
- * If we got a HELLO, consider it for our own routing table
+ * If we got a HELLO, consider it for our own routing table
*
- * @param bd block data we got
+ * @param bd block data we got
*/
static void
hello_check (const struct GDS_DATACACHE_BlockData *bd)
@@ -1345,7 +1338,7 @@ GDS_NEIGHBOURS_handle_put (const struct GDS_DATACACHE_BlockData *bd,
GNUNET_h2s (&bd->key),
(options & GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE) ? "x" : "-",
(options & GNUNET_DHT_RO_RECORD_ROUTE) ? "R" : "-");
-
+
/* if we got a HELLO, consider it for our own routing table */
hello_check (bd);
GNUNET_CONTAINER_bloomfilter_add (bf,
@@ -1464,10 +1457,9 @@ GDS_NEIGHBOURS_handle_get (enum GNUNET_BLOCK_Type type,
unsigned int target_count;
struct PeerInfo **targets;
size_t msize;
- size_t reply_bf_size;
- void *reply_bf;
+ size_t result_filter_size;
+ void *result_filter;
unsigned int skip_count;
- uint32_t bf_nonce;
GNUNET_assert (NULL != peer_bf);
GNUNET_STATISTICS_update (GDS_stats,
@@ -1499,20 +1491,17 @@ GDS_NEIGHBOURS_handle_get (enum GNUNET_BLOCK_Type type,
}
if (GNUNET_OK !=
GNUNET_BLOCK_group_serialize (bg,
- &bf_nonce,
- &reply_bf,
- &reply_bf_size))
+ &result_filter,
+ &result_filter_size))
{
- reply_bf = NULL;
- reply_bf_size = 0;
- bf_nonce = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
- UINT32_MAX);
+ result_filter = NULL;
+ result_filter_size = 0;
}
- msize = xquery_size + reply_bf_size;
+ msize = xquery_size + result_filter_size;
if (msize + sizeof(struct PeerGetMessage) >= GNUNET_MAX_MESSAGE_SIZE)
{
GNUNET_break (0);
- GNUNET_free (reply_bf);
+ GNUNET_free (result_filter);
GNUNET_free (targets);
return GNUNET_NO;
}
@@ -1523,7 +1512,7 @@ GDS_NEIGHBOURS_handle_get (enum GNUNET_BLOCK_Type type,
struct PeerInfo *target = targets[i];
struct PeerGetMessage *pgm;
char buf[sizeof (*pgm) + msize] GNUNET_ALIGN;
- char *xq;
+ char *rf;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Routing GET for %s after %u hops to %s\n",
@@ -1537,8 +1526,7 @@ GDS_NEIGHBOURS_handle_get (enum GNUNET_BLOCK_Type type,
pgm->options = htons (options);
pgm->hop_count = htons (hop_count + 1);
pgm->desired_replication_level = htons (desired_replication_level);
- pgm->xquery_size = htonl (xquery_size);
- pgm->bf_mutator = bf_nonce;
+ pgm->result_filter_size = htons ((uint16_t) result_filter_size);
GNUNET_break (GNUNET_YES ==
GNUNET_CONTAINER_bloomfilter_test (peer_bf,
&target->phash));
@@ -1547,13 +1535,13 @@ GDS_NEIGHBOURS_handle_get (enum GNUNET_BLOCK_Type type,
pgm->bloomfilter,
DHT_BLOOM_SIZE));
pgm->key = *key;
- xq = (char *) &pgm[1];
- GNUNET_memcpy (xq,
+ rf = (char *) &pgm[1];
+ GNUNET_memcpy (rf,
+ result_filter,
+ result_filter_size);
+ GNUNET_memcpy (&rf[result_filter_size],
xquery,
xquery_size);
- GNUNET_memcpy (&xq[xquery_size],
- reply_bf,
- reply_bf_size);
do_send (target,
&pgm->header);
}
@@ -1562,7 +1550,7 @@ GDS_NEIGHBOURS_handle_get (enum GNUNET_BLOCK_Type type,
target_count - skip_count,
GNUNET_NO);
GNUNET_free (targets);
- GNUNET_free (reply_bf);
+ GNUNET_free (result_filter);
return (skip_count < target_count) ? GNUNET_OK : GNUNET_NO;
}
@@ -1852,7 +1840,7 @@ handle_dht_p2p_put (void *cls,
if (0 != (options & GNUNET_DHT_RO_RECORD_ROUTE))
{
unsigned int failure_offset;
-
+
GNUNET_memcpy (pp,
put_path,
putlen * sizeof(struct GNUNET_DHT_PathElement));
@@ -1861,10 +1849,10 @@ handle_dht_p2p_put (void *cls,
memset (&pp[putlen].sig,
0,
sizeof (pp[putlen].sig));
-#if SANITY_CHECKS
- /* TODO: might want to eventually implement probabilistic
- load-based path verification, but for now it is all or nothing */
- failure_offset
+#if SANITY_CHECKS
+ /* TODO: might want to eventually implement probabilistic
+ load-based path verification, but for now it is all or nothing */
+ failure_offset
= GNUNET_DHT_verify_path (bd.data,
bd.data_size,
bd.expiration_time,
@@ -1883,7 +1871,7 @@ handle_dht_p2p_put (void *cls,
GNUNET_assert (failure_offset <= putlen);
bd.put_path = &pp[failure_offset];
bd.put_path_length = putlen - failure_offset;
- }
+ }
}
else
{
@@ -2073,10 +2061,10 @@ check_dht_p2p_get (void *cls,
const struct PeerGetMessage *get)
{
uint16_t msize = ntohs (get->header.size);
- uint32_t xquery_size = ntohl (get->xquery_size);
+ uint16_t result_filter_size = ntohs (get->result_filter_size);
(void) cls;
- if (msize < sizeof(*get) + xquery_size)
+ if (msize < sizeof(*get) + result_filter_size)
{
GNUNET_break_op (0);
return GNUNET_SYSERR;
@@ -2098,14 +2086,15 @@ handle_dht_p2p_get (void *cls,
struct Target *t = cls;
struct PeerInfo *peer = t->pi;
uint16_t msize = ntohs (get->header.size);
- uint32_t xquery_size = ntohl (get->xquery_size);
- uint32_t hop_count = ntohs (get->hop_count);
- size_t reply_bf_size = msize - (sizeof(*get) + xquery_size);
+ uint16_t result_filter_size = ntohs (get->result_filter_size);
+ uint16_t hop_count = ntohs (get->hop_count);
enum GNUNET_BLOCK_Type type = (enum GNUNET_BLOCK_Type) ntohl (get->type);
enum GNUNET_DHT_RouteOption options = (enum GNUNET_DHT_RouteOption) ntohs (
get->options);
enum GNUNET_BLOCK_ReplyEvaluationResult eval = GNUNET_BLOCK_REPLY_OK_MORE;
- const void *xquery = (const void *) &get[1];
+ const void *result_filter = (const void *) &get[1];
+ const void *xquery = result_filter + result_filter_size;
+ size_t xquery_size = msize - sizeof (*get) - result_filter_size;
/* parse and validate message */
GNUNET_STATISTICS_update (GDS_stats,
@@ -2140,11 +2129,10 @@ handle_dht_p2p_get (void *cls,
&peer->phash));
bg = GNUNET_BLOCK_group_create (GDS_block_context,
type,
- get->bf_mutator,
- xquery + xquery_size,
- reply_bf_size,
+ result_filter,
+ result_filter_size,
"filter-size",
- reply_bf_size,
+ result_filter_size,
NULL);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"GET for %s at %s after %u hops\n",
@@ -2353,7 +2341,7 @@ handle_dht_p2p_result (void *cls,
};
const struct GNUNET_DHT_PathElement *get_path
= &bd.put_path[bd.put_path_length];
-
+
/* parse and validate message */
if (GNUNET_TIME_absolute_is_past (bd.expiration_time))
{
@@ -2416,7 +2404,7 @@ handle_dht_p2p_result (void *cls,
#if SANITY_CHECKS
/* TODO: might want to eventually implement probabilistic
load-based path verification, but for now it is all or nothing */
- failure_offset
+ failure_offset
= GNUNET_DHT_verify_path (bd.data,
bd.data_size,
bd.expiration_time,
diff --git a/src/dht/plugin_block_dht.c b/src/dht/plugin_block_dht.c
index 3dd3dd792..bee16736c 100644
--- a/src/dht/plugin_block_dht.c
+++ b/src/dht/plugin_block_dht.c
@@ -46,7 +46,6 @@
*
* @param ctx block context in which the block group is created
* @param type type of the block for which we are creating the group
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @param va variable arguments specific to @a type
@@ -56,7 +55,6 @@
static struct GNUNET_BLOCK_Group *
block_plugin_dht_create_group (void *cls,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
va_list va)
@@ -83,7 +81,6 @@ block_plugin_dht_create_group (void *cls,
bf_size,
BLOOMFILTER_K,
type,
- nonce,
raw_data,
raw_data_size);
}
diff --git a/src/dns/plugin_block_dns.c b/src/dns/plugin_block_dns.c
index a596beb28..0531a8a5f 100644
--- a/src/dns/plugin_block_dns.c
+++ b/src/dns/plugin_block_dns.c
@@ -46,7 +46,6 @@
*
* @param ctx block context in which the block group is created
* @param type type of the block for which we are creating the group
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @param va variable arguments specific to @a type
@@ -56,7 +55,6 @@
static struct GNUNET_BLOCK_Group *
block_plugin_dns_create_group (void *cls,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
va_list va)
@@ -83,7 +81,6 @@ block_plugin_dns_create_group (void *cls,
bf_size,
BLOOMFILTER_K,
type,
- nonce,
raw_data,
raw_data_size);
}
@@ -102,19 +99,19 @@ block_plugin_dns_create_group (void *cls,
*/
static enum GNUNET_GenericReturnValue
block_plugin_dns_check_query (void *cls,
- enum GNUNET_BLOCK_Type type,
- const struct GNUNET_HashCode *query,
- const void *xquery,
- size_t xquery_size)
+ enum GNUNET_BLOCK_Type type,
+ const struct GNUNET_HashCode *query,
+ const void *xquery,
+ size_t xquery_size)
{
switch (type)
{
case GNUNET_BLOCK_TYPE_DNS:
if (0 != xquery_size)
- {
- GNUNET_break_op (0);
- return GNUNET_NO;
- }
+ {
+ GNUNET_break_op (0);
+ return GNUNET_NO;
+ }
return GNUNET_OK;
default:
GNUNET_break (0);
@@ -158,7 +155,7 @@ block_plugin_dns_check_block (void *cls,
return GNUNET_NO;
}
if (GNUNET_TIME_absolute_is_past (
- GNUNET_TIME_absolute_ntoh (ad->expiration_time)))
+ GNUNET_TIME_absolute_ntoh (ad->expiration_time)))
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"DNS advertisement has expired\n");
@@ -199,14 +196,14 @@ block_plugin_dns_check_block (void *cls,
*/
static enum GNUNET_BLOCK_ReplyEvaluationResult
block_plugin_dns_check_reply (
- void *cls,
- enum GNUNET_BLOCK_Type type,
- struct GNUNET_BLOCK_Group *group,
- const struct GNUNET_HashCode *query,
- const void *xquery,
- size_t xquery_size,
- const void *reply_block,
- size_t reply_block_size)
+ void *cls,
+ enum GNUNET_BLOCK_Type type,
+ struct GNUNET_BLOCK_Group *group,
+ const struct GNUNET_HashCode *query,
+ const void *xquery,
+ size_t xquery_size,
+ const void *reply_block,
+ size_t reply_block_size)
{
struct GNUNET_HashCode phash;
diff --git a/src/fs/gnunet-service-fs.c b/src/fs/gnunet-service-fs.c
index 8c6c39885..05c7e2192 100644
--- a/src/fs/gnunet-service-fs.c
+++ b/src/fs/gnunet-service-fs.c
@@ -893,7 +893,7 @@ handle_client_start_search (void *cls,
&all_zeros,
sizeof(struct
GNUNET_PeerIdentity)))
- ? &sm->target : NULL, NULL, 0,
+ ? &sm->target : NULL, NULL,
0 /* bf */,
ntohl (sm->anonymity_level),
0 /* priority */,
diff --git a/src/fs/gnunet-service-fs.h b/src/fs/gnunet-service-fs.h
index a6b73db09..56d102673 100644
--- a/src/fs/gnunet-service-fs.h
+++ b/src/fs/gnunet-service-fs.h
@@ -103,13 +103,9 @@ struct GetMessage
int32_t ttl GNUNET_PACKED;
/**
- * The content hash should be mutated using this value
- * before checking against the bloomfilter (used to
- * get many different filters for the same hash codes).
- * The number should be in big-endian format when used
- * for mingling.
+ * These days not used.
*/
- uint32_t filter_mutator GNUNET_PACKED;
+ uint32_t reserved GNUNET_PACKED;
/**
* Which of the optional hash codes are present at the end of the
diff --git a/src/fs/gnunet-service-fs_cp.c b/src/fs/gnunet-service-fs_cp.c
index 5476aa2be..30b895752 100644
--- a/src/fs/gnunet-service-fs_cp.c
+++ b/src/fs/gnunet-service-fs_cp.c
@@ -1317,7 +1317,6 @@ handle_p2p_get (void *cls,
? (const char *) &opt[bits]
: NULL,
bfsize,
- ntohl (gm->filter_mutator),
1 /* anonymity */,
(uint32_t) tec.priority,
tec.ttl,
diff --git a/src/fs/gnunet-service-fs_pr.c b/src/fs/gnunet-service-fs_pr.c
index 154c454ca..f05194907 100644
--- a/src/fs/gnunet-service-fs_pr.c
+++ b/src/fs/gnunet-service-fs_pr.c
@@ -260,9 +260,6 @@ refresh_bloomfilter (enum GNUNET_BLOCK_Type type,
pr->bg =
GNUNET_BLOCK_group_create (GSF_block_ctx,
type,
- GNUNET_CRYPTO_random_u32 (
- GNUNET_CRYPTO_QUALITY_WEAK,
- UINT32_MAX),
NULL,
0,
"seen-set-size",
@@ -286,7 +283,6 @@ refresh_bloomfilter (enum GNUNET_BLOCK_Type type,
* @param target preferred target for the request, NULL for none
* @param bf_data raw data for bloom filter for known replies, can be NULL
* @param bf_size number of bytes in @a bf_data
- * @param mingle mingle value for bf
* @param anonymity_level desired anonymity level
* @param priority maximum outgoing cumulative request priority to use
* @param ttl current time-to-live for the request
@@ -305,7 +301,6 @@ GSF_pending_request_create_ (enum GSF_PendingRequestOptions options,
const struct GNUNET_PeerIdentity *target,
const char *bf_data,
size_t bf_size,
- uint32_t mingle,
uint32_t anonymity_level,
uint32_t priority,
int32_t ttl,
@@ -376,7 +371,6 @@ GSF_pending_request_create_ (enum GSF_PendingRequestOptions options,
{
pr->bg = GNUNET_BLOCK_group_create (GSF_block_ctx,
pr->public_data.type,
- mingle,
bf_data,
bf_size,
"seen-set-size",
@@ -533,7 +527,6 @@ GSF_pending_request_get_message_ (struct GSF_PendingRequest *pr)
int64_t ttl;
int do_route;
void *bf_data;
- uint32_t bf_nonce;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Building request message for `%s' of type %d\n",
@@ -559,7 +552,6 @@ GSF_pending_request_get_message_ (struct GSF_PendingRequest *pr)
}
if (GNUNET_OK !=
GNUNET_BLOCK_group_serialize (pr->bg,
- &bf_nonce,
&bf_data,
&bf_size))
{
@@ -582,7 +574,7 @@ GSF_pending_request_get_message_ (struct GSF_PendingRequest *pr)
now = GNUNET_TIME_absolute_get ();
ttl = (int64_t) (pr->public_data.ttl.abs_value_us - now.abs_value_us);
gm->ttl = htonl (ttl / 1000LL / 1000LL);
- gm->filter_mutator = htonl (bf_nonce);
+ gm->reserved = htonl (0);
gm->hash_bitmap = htonl (bm);
gm->query = pr->public_data.query;
ext = (struct GNUNET_PeerIdentity *) &gm[1];
diff --git a/src/fs/gnunet-service-fs_pr.h b/src/fs/gnunet-service-fs_pr.h
index a10fb9b4c..339e409c5 100644
--- a/src/fs/gnunet-service-fs_pr.h
+++ b/src/fs/gnunet-service-fs_pr.h
@@ -206,7 +206,6 @@ typedef void
* @param target preferred target for the request, NULL for none
* @param bf_data raw data for bloom filter for known replies, can be NULL
* @param bf_size number of bytes in bf_data
- * @param mingle mingle value for bf
* @param anonymity_level desired anonymity level
* @param priority maximum outgoing cumulative request priority to use
* @param ttl current time-to-live for the request
@@ -226,7 +225,6 @@ GSF_pending_request_create_ (enum GSF_PendingRequestOptions options,
const struct GNUNET_PeerIdentity *target,
const char *bf_data,
size_t bf_size,
- uint32_t mingle,
uint32_t anonymity_level,
uint32_t priority,
int32_t ttl,
diff --git a/src/fs/plugin_block_fs.c b/src/fs/plugin_block_fs.c
index 029f95bc5..18aa289ef 100644
--- a/src/fs/plugin_block_fs.c
+++ b/src/fs/plugin_block_fs.c
@@ -43,7 +43,6 @@
*
* @param ctx block context in which the block group is created
* @param type type of the block for which we are creating the group
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @param va variable arguments specific to @a type
@@ -53,7 +52,6 @@
static struct GNUNET_BLOCK_Group *
block_plugin_fs_create_group (void *cls,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
va_list va)
@@ -66,11 +64,9 @@ block_plugin_fs_create_group (void *cls,
case GNUNET_BLOCK_TYPE_FS_DBLOCK:
GNUNET_break (NULL == va_arg (va, const char *));
return NULL;
-
case GNUNET_BLOCK_TYPE_FS_IBLOCK:
GNUNET_break (NULL == va_arg (va, const char *));
return NULL;
-
case GNUNET_BLOCK_TYPE_FS_UBLOCK:
guard = va_arg (va, const char *);
if (0 == strcmp (guard,
@@ -98,7 +94,6 @@ block_plugin_fs_create_group (void *cls,
size,
BLOOMFILTER_K,
type,
- nonce,
raw_data,
raw_data_size);
@@ -218,7 +213,7 @@ block_plugin_fs_check_block (void *cls,
case GNUNET_BLOCK_TYPE_FS_UBLOCK:
{
const struct UBlock *ub;
-
+
if (block_size < sizeof(struct UBlock))
{
GNUNET_break_op (0);
@@ -226,8 +221,8 @@ block_plugin_fs_check_block (void *cls,
}
ub = block;
if (block_size !=
- ntohl (ub->purpose.size) +
- sizeof (struct GNUNET_CRYPTO_EcdsaSignature))
+ ntohl (ub->purpose.size)
+ + sizeof (struct GNUNET_CRYPTO_EcdsaSignature))
{
GNUNET_break_op (0);
return GNUNET_NO;
diff --git a/src/gns/plugin_block_gns.c b/src/gns/plugin_block_gns.c
index ffca16b6f..a683ecacc 100644
--- a/src/gns/plugin_block_gns.c
+++ b/src/gns/plugin_block_gns.c
@@ -48,7 +48,6 @@
*
* @param ctx block context in which the block group is created
* @param type type of the block for which we are creating the group
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @param va variable arguments specific to @a type
@@ -58,7 +57,6 @@
static struct GNUNET_BLOCK_Group *
block_plugin_gns_create_group (void *cls,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
va_list va)
@@ -85,7 +83,6 @@ block_plugin_gns_create_group (void *cls,
bf_size,
BLOOMFILTER_K,
type,
- nonce,
raw_data,
raw_data_size);
}
@@ -132,7 +129,6 @@ block_plugin_gns_get_key (void *cls,
}
-
/**
* Function called to validate a query.
*
diff --git a/src/gns/plugin_gnsrecord_gns.c b/src/gns/plugin_gnsrecord_gns.c
index dc7ffa9b2..0ce782a43 100644
--- a/src/gns/plugin_gnsrecord_gns.c
+++ b/src/gns/plugin_gnsrecord_gns.c
@@ -56,10 +56,11 @@ gns_value_to_string (void *cls,
{
case GNUNET_GNSRECORD_TYPE_PKEY:
case GNUNET_GNSRECORD_TYPE_EDKEY:
- if (GNUNET_OK != GNUNET_GNSRECORD_identity_from_data (data,
- data_size,
- type,
- &pk))
+ if (GNUNET_OK !=
+ GNUNET_GNSRECORD_identity_from_data (data,
+ data_size,
+ type,
+ &pk))
return NULL;
return GNUNET_IDENTITY_public_key_to_string (&pk);
@@ -133,8 +134,9 @@ gns_value_to_string (void *cls,
return box_str;
}
case GNUNET_GNSRECORD_TYPE_TOMBSTONE: {
- return GNUNET_strdup (_("This is a memento of an older block for internal maintenance."));
- }
+ return GNUNET_strdup (_ (
+ "This is a memento of an older block for internal maintenance."));
+ }
default:
return NULL;
}
@@ -177,10 +179,11 @@ gns_string_to_value (void *cls,
return GNUNET_SYSERR;
}
*data_size = GNUNET_IDENTITY_key_get_length (&pk);
- if (GNUNET_OK != GNUNET_GNSRECORD_data_from_identity (&pk,
- (char **) data,
- data_size,
- &record_type))
+ if (GNUNET_OK !=
+ GNUNET_GNSRECORD_data_from_identity (&pk,
+ (char **) data,
+ data_size,
+ &record_type))
return GNUNET_SYSERR;
if (record_type != type)
{
@@ -217,10 +220,11 @@ gns_string_to_value (void *cls,
at++;
off = 0;
- if (GNUNET_OK != GNUNET_DNSPARSER_builder_add_name (nsbuf,
- sizeof(nsbuf),
- &off,
- cpy))
+ if (GNUNET_OK !=
+ GNUNET_DNSPARSER_builder_add_name (nsbuf,
+ sizeof(nsbuf),
+ &off,
+ cpy))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_ (
@@ -305,7 +309,6 @@ gns_string_to_value (void *cls,
return GNUNET_OK;
}
-
default:
return GNUNET_SYSERR;
}
@@ -320,18 +323,20 @@ static struct
{
const char *name;
uint32_t number;
-} gns_name_map[] = { { "PKEY", GNUNET_GNSRECORD_TYPE_PKEY },
- { "EDKEY", GNUNET_GNSRECORD_TYPE_EDKEY },
- { "NICK", GNUNET_GNSRECORD_TYPE_NICK },
- { "LEHO", GNUNET_GNSRECORD_TYPE_LEHO },
- { "VPN", GNUNET_GNSRECORD_TYPE_VPN },
- { "GNS2DNS", GNUNET_GNSRECORD_TYPE_GNS2DNS },
- { "BOX", GNUNET_GNSRECORD_TYPE_BOX },
- { "REDIRECT", GNUNET_GNSRECORD_TYPE_REDIRECT },
- /* Tombstones should never be added manually
- * so this makes sense, kind of */
- { "\u271E", GNUNET_GNSRECORD_TYPE_TOMBSTONE },
- { NULL, UINT32_MAX } };
+} gns_name_map[] = {
+ { "PKEY", GNUNET_GNSRECORD_TYPE_PKEY },
+ { "EDKEY", GNUNET_GNSRECORD_TYPE_EDKEY },
+ { "NICK", GNUNET_GNSRECORD_TYPE_NICK },
+ { "LEHO", GNUNET_GNSRECORD_TYPE_LEHO },
+ { "VPN", GNUNET_GNSRECORD_TYPE_VPN },
+ { "GNS2DNS", GNUNET_GNSRECORD_TYPE_GNS2DNS },
+ { "BOX", GNUNET_GNSRECORD_TYPE_BOX },
+ { "REDIRECT", GNUNET_GNSRECORD_TYPE_REDIRECT },
+ /* Tombstones should never be added manually
+ * so this makes sense, kind of */
+ { "\u271E", GNUNET_GNSRECORD_TYPE_TOMBSTONE },
+ { NULL, UINT32_MAX }
+};
/**
@@ -342,7 +347,8 @@ static struct
* @return corresponding number, UINT32_MAX on error
*/
static uint32_t
-gns_typename_to_number (void *cls, const char *gns_typename)
+gns_typename_to_number (void *cls,
+ const char *gns_typename)
{
unsigned int i;
@@ -362,12 +368,14 @@ gns_typename_to_number (void *cls, const char *gns_typename)
* @return corresponding typestring, NULL on error
*/
static const char *
-gns_number_to_typename (void *cls, uint32_t type)
+gns_number_to_typename (void *cls,
+ uint32_t type)
{
unsigned int i;
i = 0;
- while ((NULL != gns_name_map[i].name) && (type != gns_name_map[i].number))
+ while ( (NULL != gns_name_map[i].name) &&
+ (type != gns_name_map[i].number) )
i++;
return gns_name_map[i].name;
}
@@ -384,8 +392,6 @@ gns_is_critical (void *cls, uint32_t type)
}
-
-
/**
* Entry point for the plugin.
*
diff --git a/src/gnsrecord/gnsrecord_misc.c b/src/gnsrecord/gnsrecord_misc.c
index 54d8fb860..5e3bbdb8c 100644
--- a/src/gnsrecord/gnsrecord_misc.c
+++ b/src/gnsrecord/gnsrecord_misc.c
@@ -44,6 +44,7 @@ GNUNET_GNSRECORD_string_normalize (const char *src)
return GNUNET_STRINGS_utf8_normalize (src);
}
+
enum GNUNET_GenericReturnValue
GNUNET_GNSRECORD_label_check (const char*label, char **emsg)
{
@@ -60,6 +61,7 @@ GNUNET_GNSRECORD_label_check (const char*label, char **emsg)
return GNUNET_OK;
}
+
/**
* Convert a zone key to a string (for printing debug messages).
* This is one of the very few calls in the entire API that is
@@ -409,6 +411,7 @@ GNUNET_GNSRECORD_record_to_identity_key (const struct GNUNET_GNSRECORD_Data *rd,
}
+
enum GNUNET_GenericReturnValue
GNUNET_GNSRECORD_normalize_record_set (const char *label,
const struct
@@ -488,7 +491,7 @@ GNUNET_GNSRECORD_normalize_record_set (const char *label,
(GNUNET_YES == have_gns2dns))
{
*emsg = GNUNET_strdup (_ (
- "Redirection record set conains mutually exclusive records."));
+ "Redirection record set contains mutually exclusive records."));
return GNUNET_SYSERR;
}
/* No redirection records under empty label*/
@@ -514,7 +517,7 @@ GNUNET_GNSRECORD_normalize_record_set (const char *label,
(GNUNET_YES == have_zone_delegation))
{
*emsg = GNUNET_strdup (_ (
- "Redirection record set conains mutually exclusive records."));
+ "Redirection record set contains mutually exclusive records."));
return GNUNET_SYSERR;
}
have_gns2dns = GNUNET_YES;
@@ -557,6 +560,7 @@ GNUNET_GNSRECORD_normalize_record_set (const char *label,
return GNUNET_OK;
}
+
enum GNUNET_GenericReturnValue
GNUNET_GNSRECORD_convert_records_for_export (const char *label,
const struct
@@ -580,5 +584,4 @@ GNUNET_GNSRECORD_convert_records_for_export (const char *label,
}
-
/* end of gnsrecord_misc.c */
diff --git a/src/gnsrecord/gnsrecord_serialization.c b/src/gnsrecord/gnsrecord_serialization.c
index eaa3a9ab2..97c488c2b 100644
--- a/src/gnsrecord/gnsrecord_serialization.c
+++ b/src/gnsrecord/gnsrecord_serialization.c
@@ -229,15 +229,15 @@ GNUNET_GNSRECORD_records_deserialize_get_size (size_t len,
off = 0;
for (off = 0; (off + sizeof(rec) <= len) && (off + sizeof(rec) >= off);)
{
+ GNUNET_memcpy (&rec,
+ &src[off],
+ sizeof(rec));
/*
* If we have found a byte string of zeroes, we have reached
* the padding
*/
if (0 == GNUNET_memcmp (&rec, &rec_zero))
break;
- GNUNET_memcpy (&rec,
- &src[off],
- sizeof(rec));
off += sizeof(rec);
if ((off + ntohs ((uint16_t) rec.data_size) > len) ||
(off + ntohs ((uint16_t) rec.data_size) < off))
diff --git a/src/gnsrecord/gnunet-gnsrecord-tvg.c b/src/gnsrecord/gnunet-gnsrecord-tvg.c
index 7fef6f8e7..d45b3a5d8 100644
--- a/src/gnsrecord/gnunet-gnsrecord-tvg.c
+++ b/src/gnsrecord/gnunet-gnsrecord-tvg.c
@@ -104,7 +104,7 @@ print_record (const struct GNUNET_GNSRECORD_Data *rd)
printf ("\nDATA_SIZE:\n");
print_bytes (&size_nbo, sizeof (size_nbo), 8);
printf ("\nTYPE:\n");
- print_bytes(&type_nbo, sizeof (type_nbo), 8);
+ print_bytes (&type_nbo, sizeof (type_nbo), 8);
printf ("\nFLAGS: ");
print_bytes ((void*) &flags, sizeof (flags), 8);
printf ("\n");
@@ -173,7 +173,7 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label)
printf ("Label:\n");
print_bytes (conv_lbl, strlen (conv_lbl), 8);
GNUNET_free (conv_lbl);
- printf ("\nNumber of records (integer): %d\n\n", rd_count);
+ printf ("\Number of records (integer): %d\n\n", rd_count);
for (int i = 0; i < rd_count; i++)
{
@@ -300,7 +300,7 @@ run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char*label)
print_bytes (conv_lbl, strlen (conv_lbl), 8);
GNUNET_free (conv_lbl);
fprintf (stdout,
- "\nNumber of records (integer): %d\n\n", rd_count);
+ "\Number of records (integer): %d\n\n", rd_count);
for (int i = 0; i < rd_count; i++)
{
diff --git a/src/gnsrecord/test_gnsrecord_crypto.c b/src/gnsrecord/test_gnsrecord_crypto.c
index ee14fa904..ad7b62cc8 100644
--- a/src/gnsrecord/test_gnsrecord_crypto.c
+++ b/src/gnsrecord/test_gnsrecord_crypto.c
@@ -101,7 +101,7 @@ test_with_type (struct GNUNET_IDENTITY_PrivateKey *privkey)
struct GNUNET_HashCode query_pub;
struct GNUNET_HashCode query_priv;
struct GNUNET_HashCode query_block;
- struct GNUNET_TIME_Absolute expire = GNUNET_TIME_absolute_get ();
+ struct GNUNET_TIME_Absolute expire = GNUNET_TIME_UNIT_FOREVER_ABS;
/* get public key */
@@ -143,7 +143,7 @@ test_with_type (struct GNUNET_IDENTITY_PrivateKey *privkey)
&pubkey,
s_name,
&rd_decrypt_cb,
- s_name));
+ NULL));
GNUNET_free (block);
}
diff --git a/src/hello/hello-uri.c b/src/hello/hello-uri.c
index bacaf697e..dd191738f 100644
--- a/src/hello/hello-uri.c
+++ b/src/hello/hello-uri.c
@@ -222,6 +222,10 @@ hash_addresses (const struct GNUNET_HELLO_Builder *builder,
NULL != a;
a = a->next)
{
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Hashing over %.*s\n",
+ (int) a->uri_len,
+ a->uri);
GNUNET_CRYPTO_hash_context_read (hc,
a->uri,
a->uri_len);
@@ -254,6 +258,9 @@ sign_hello (const struct GNUNET_HELLO_Builder *builder,
hash_addresses (builder,
&hsp.h_addrs);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Address hash is %s\n",
+ GNUNET_h2s_full (&hsp.h_addrs));
GNUNET_CRYPTO_eddsa_sign (priv,
&hsp,
sig);
@@ -565,7 +572,7 @@ GNUNET_HELLO_builder_to_env (const struct GNUNET_HELLO_Builder *builder,
env = GNUNET_MQ_msg_extra (msg,
blen,
GNUNET_MESSAGE_TYPE_HELLO_URI);
- msg->url_counter = htonl ((uint16_t) builder->a_length);
+ msg->url_counter = htons ((uint16_t) builder->a_length);
GNUNET_assert (GNUNET_OK ==
GNUNET_HELLO_builder_to_block (builder,
priv,
@@ -618,7 +625,7 @@ GNUNET_HELLO_builder_to_dht_hello_msg (
msg->sig = block->sig;
msg->expiration_time = block->expiration_time;
}
- msg->url_counter = htonl ((uint16_t) builder->a_length);
+ msg->url_counter = htons ((uint16_t) builder->a_length);
return &msg->header;
}
diff --git a/src/include/gnunet_block_group_lib.h b/src/include/gnunet_block_group_lib.h
index b03e913c6..d242ceefb 100644
--- a/src/include/gnunet_block_group_lib.h
+++ b/src/include/gnunet_block_group_lib.h
@@ -68,7 +68,6 @@ GNUNET_BLOCK_GROUP_compute_bloomfilter_size (unsigned int entry_count,
* @param bf_size size of the Bloom filter
* @param bf_k K-value for the Bloom filter
* @param type block type
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @return block group handle, NULL if block groups are not supported
@@ -79,7 +78,6 @@ GNUNET_BLOCK_GROUP_bf_create (void *cls,
size_t bf_size,
unsigned int bf_k,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size);
diff --git a/src/include/gnunet_block_lib.h b/src/include/gnunet_block_lib.h
index fb417412f..af61dcfb0 100644
--- a/src/include/gnunet_block_lib.h
+++ b/src/include/gnunet_block_lib.h
@@ -138,7 +138,6 @@ struct GNUNET_BLOCK_Group;
struct GNUNET_BLOCK_Group *
GNUNET_BLOCK_group_create (struct GNUNET_BLOCK_Context *ctx,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
...);
@@ -148,7 +147,6 @@ GNUNET_BLOCK_group_create (struct GNUNET_BLOCK_Context *ctx,
* Serialize state of a block group.
*
* @param bg group to serialize
- * @param[out] nonce set to the nonce of the @a bg
* @param[out] raw_data set to the serialized state
* @param[out] raw_data_size set to the number of bytes in @a raw_data
* @return #GNUNET_OK on success, #GNUNET_NO if serialization is not
@@ -156,7 +154,6 @@ GNUNET_BLOCK_group_create (struct GNUNET_BLOCK_Context *ctx,
*/
enum GNUNET_GenericReturnValue
GNUNET_BLOCK_group_serialize (struct GNUNET_BLOCK_Group *bg,
- uint32_t *nonce,
void **raw_data,
size_t *raw_data_size);
diff --git a/src/include/gnunet_block_plugin.h b/src/include/gnunet_block_plugin.h
index 1fa7ccf8b..6f9e8e9dc 100644
--- a/src/include/gnunet_block_plugin.h
+++ b/src/include/gnunet_block_plugin.h
@@ -49,9 +49,9 @@
*/
typedef void
(*GNUNET_BLOCK_GroupMarkSeenFunction)(
- struct GNUNET_BLOCK_Group *bg,
- const struct GNUNET_HashCode *seen_results,
- unsigned int seen_results_count);
+ struct GNUNET_BLOCK_Group *bg,
+ const struct GNUNET_HashCode *seen_results,
+ unsigned int seen_results_count);
/**
@@ -72,7 +72,6 @@ typedef enum GNUNET_GenericReturnValue
* Serialize state of a block group.
*
* @param bg group to serialize
- * @param[out] nonce set to the nonce of the @a bg
* @param[out] raw_data set to the serialized state
* @param[out] raw_data_size set to the number of bytes in @a raw_data
* @return #GNUNET_OK on success, #GNUNET_NO if serialization is not
@@ -80,7 +79,6 @@ typedef enum GNUNET_GenericReturnValue
*/
typedef enum GNUNET_GenericReturnValue
(*GNUNET_BLOCK_GroupSerializeFunction)(struct GNUNET_BLOCK_Group *bg,
- uint32_t *nonce,
void **raw_data,
size_t *raw_data_size);
@@ -156,7 +154,6 @@ struct GNUNET_BLOCK_Group
typedef struct GNUNET_BLOCK_Group *
(*GNUNET_BLOCK_GroupCreateFunction)(void *cls,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
va_list va);
@@ -238,11 +235,11 @@ typedef enum GNUNET_BLOCK_ReplyEvaluationResult
* #GNUNET_SYSERR if @a type not supported
*/
typedef enum GNUNET_GenericReturnValue
-(*GNUNET_BLOCK_GetKeyFunction) (void *cls,
- enum GNUNET_BLOCK_Type type,
- const void *block,
- size_t block_size,
- struct GNUNET_HashCode *key);
+(*GNUNET_BLOCK_GetKeyFunction)(void *cls,
+ enum GNUNET_BLOCK_Type type,
+ const void *block,
+ size_t block_size,
+ struct GNUNET_HashCode *key);
/**
@@ -285,7 +282,7 @@ struct GNUNET_BLOCK_PluginFunctions
/**
* Check that a reply block matches a query.
*/
- GNUNET_BLOCK_ReplyEvaluationFunction check_reply;
+ GNUNET_BLOCK_ReplyEvaluationFunction check_reply;
};
diff --git a/src/include/gnunet_container_lib.h b/src/include/gnunet_container_lib.h
index 3eb80595c..ae6c34f2b 100644
--- a/src/include/gnunet_container_lib.h
+++ b/src/include/gnunet_container_lib.h
@@ -277,9 +277,9 @@ GNUNET_CONTAINER_bloomfilter_get_raw_data (
*
* @param e the element
* @param bf the filter
- * @return #GNUNET_YES if the element is in the filter, #GNUNET_NO if not
+ * @return true if the element is in the filter, false if not
*/
-int
+bool
GNUNET_CONTAINER_bloomfilter_test (
const struct GNUNET_CONTAINER_BloomFilter *bf,
const struct GNUNET_HashCode *e);
diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h
index 7bc7cf143..2737ee0e9 100644
--- a/src/include/gnunet_crypto_lib.h
+++ b/src/include/gnunet_crypto_lib.h
@@ -289,7 +289,7 @@ struct GNUNET_CRYPTO_EddsaPrivateScalar
/**
* Private ECC key material encoded for transmission. To be used only for
- * Edx25519 signatures. An inital key corresponds to data from the key
+ * Edx25519 signatures. An initial key corresponds to data from the key
* expansion and clamping in the EdDSA key generation.
*/
struct GNUNET_CRYPTO_Edx25519PrivateKey
diff --git a/src/include/gnunet_gnsrecord_lib.h b/src/include/gnunet_gnsrecord_lib.h
index 51dd5972d..006211aee 100644
--- a/src/include/gnunet_gnsrecord_lib.h
+++ b/src/include/gnunet_gnsrecord_lib.h
@@ -78,7 +78,7 @@ enum GNUNET_GNSRECORD_Flags
/**
* This record is critical. If it cannot be processed
- * (for example beacuse the record type is unknown)
+ * (for example because the record type is unknown)
* resolution MUST fail
*/
GNUNET_GNSRECORD_RF_CRITICAL = 1,
diff --git a/src/include/gnunet_testing_netjail_lib.h b/src/include/gnunet_testing_netjail_lib.h
index 4b5d7cfa1..b65ae6537 100644
--- a/src/include/gnunet_testing_netjail_lib.h
+++ b/src/include/gnunet_testing_netjail_lib.h
@@ -293,7 +293,7 @@ GNUNET_TESTING_free_topology (struct GNUNET_TESTING_NetjailTopology *topology);
/**
- * Calculate the unique id identifying a node from a given connction.
+ * Calculate the unique id identifying a node from a given connection.
*
* @param node_connection The connection we calculate the id from.
* @param topology The topology we get all needed information from.
diff --git a/src/include/gnunet_testing_ng_lib.h b/src/include/gnunet_testing_ng_lib.h
index 7e1ee4249..1bc66e59d 100644
--- a/src/include/gnunet_testing_ng_lib.h
+++ b/src/include/gnunet_testing_ng_lib.h
@@ -240,7 +240,7 @@ GNUNET_TESTING_interpreter_lookup_command (
/**
* Lookup command by label.
- * All commands, first into the past, then into the furture are looked up.
+ * All commands, first into the past, then into the future are looked up.
*
* @param is interpreter to lookup command in
* @param label label of the command to lookup.
diff --git a/src/messenger/gnunet-service-messenger.c b/src/messenger/gnunet-service-messenger.c
index 31bffec18..506ab7443 100644
--- a/src/messenger/gnunet-service-messenger.c
+++ b/src/messenger/gnunet-service-messenger.c
@@ -56,7 +56,7 @@ handle_create (void *cls,
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Handle created with name: %s\n", name);
- setup_handle_name (msg_client->handle, strlen (name) > 0 ? name : NULL);
+ setup_srv_handle_name (msg_client->handle, strlen (name) > 0 ? name : NULL);
GNUNET_SERVICE_client_continue (msg_client->client);
}
@@ -67,7 +67,7 @@ handle_update (void *cls,
{
struct GNUNET_MESSENGER_Client *msg_client = cls;
- update_handle (msg_client->handle);
+ update_srv_handle (msg_client->handle);
GNUNET_SERVICE_client_continue (msg_client->client);
}
@@ -99,7 +99,7 @@ handle_set_name (void *cls,
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Handles name is now: %s\n", name);
- set_handle_name (msg_client->handle, name);
+ set_srv_handle_name (msg_client->handle, name);
GNUNET_SERVICE_client_continue (msg_client->client);
}
@@ -112,9 +112,9 @@ handle_room_open (void *cls,
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Opening room: %s\n", GNUNET_h2s (&(msg->key)));
- if (GNUNET_YES == open_handle_room (msg_client->handle, &(msg->key)))
+ if (GNUNET_YES == open_srv_handle_room (msg_client->handle, &(msg->key)))
{
- const struct GNUNET_ShortHashCode *member_id = get_handle_member_id (msg_client->handle, &(msg->key));
+ const struct GNUNET_ShortHashCode *member_id = get_srv_handle_member_id (msg_client->handle, &(msg->key));
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Opening room with member id: %s\n", GNUNET_sh2s (member_id));
@@ -139,9 +139,9 @@ handle_room_entry (void *cls,
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Entering room: %s, %s\n", GNUNET_h2s (&(msg->key)), GNUNET_i2s (&(msg->door)));
- if (GNUNET_YES == entry_handle_room (msg_client->handle, &(msg->door), &(msg->key)))
+ if (GNUNET_YES == entry_srv_handle_room (msg_client->handle, &(msg->door), &(msg->key)))
{
- const struct GNUNET_ShortHashCode *member_id = get_handle_member_id (msg_client->handle, &(msg->key));
+ const struct GNUNET_ShortHashCode *member_id = get_srv_handle_member_id (msg_client->handle, &(msg->key));
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Entering room with member id: %s\n", GNUNET_sh2s (member_id));
@@ -168,7 +168,7 @@ handle_room_close (void *cls,
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Closing room: %s\n", GNUNET_h2s (&(msg->key)));
- if (GNUNET_YES == close_handle_room (msg_client->handle, &(msg->key)))
+ if (GNUNET_YES == close_srv_handle_room (msg_client->handle, &(msg->key)))
{
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Closing room succeeded: %s\n", GNUNET_h2s (&(msg->key)));
@@ -271,7 +271,7 @@ handle_send_message (void *cls,
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Sending message: %s to %s\n",
GNUNET_MESSENGER_name_of_kind (message.header.kind), GNUNET_h2s (key));
- if (GNUNET_YES != send_handle_message (msg_client->handle, key, &message))
+ if (GNUNET_YES != send_srv_handle_message (msg_client->handle, key, &message))
GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Sending message failed: %s to %s\n",
GNUNET_MESSENGER_name_of_kind (message.header.kind), GNUNET_h2s (key));
@@ -291,11 +291,11 @@ callback_found_message (void *cls,
if (!message)
{
- send_room_message(room, msg_client->handle, create_message_request(hash));
+ send_srv_room_message(room, msg_client->handle, create_message_request(hash));
return;
}
- struct GNUNET_MESSENGER_MemberStore *store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *store = get_srv_room_member_store(room);
struct GNUNET_MESSENGER_Member *member = get_store_member_of(store, message);
@@ -308,7 +308,7 @@ callback_found_message (void *cls,
struct GNUNET_MESSENGER_MemberSession *session = get_member_session_of(member, message, hash);
if (session)
- notify_handle_message (msg_client->handle, room, session, message, hash);
+ notify_srv_handle_message (msg_client->handle, room, session, message, hash);
}
static void
@@ -327,9 +327,9 @@ handle_get_message (void *cls,
goto end_handling;
}
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
- struct GNUNET_MESSENGER_Member *member = get_store_member(member_store, get_handle_member_id(
+ struct GNUNET_MESSENGER_Member *member = get_store_member(member_store, get_srv_handle_member_id(
msg_client->handle, &(msg->key)
));
@@ -339,7 +339,7 @@ handle_get_message (void *cls,
goto end_handling;
}
- struct GNUNET_MESSENGER_MemberSession *session = get_member_session(member, &(get_handle_ego(msg_client->handle)->pub));
+ struct GNUNET_MESSENGER_MemberSession *session = get_member_session(member, &(get_srv_handle_ego(msg_client->handle)->pub));
if (!session)
{
@@ -347,7 +347,7 @@ handle_get_message (void *cls,
goto end_handling;
}
- request_room_message (room, &(msg->hash), session, callback_found_message, msg_client);
+ request_srv_room_message (room, &(msg->hash), session, callback_found_message, msg_client);
end_handling:
GNUNET_SERVICE_client_continue (msg_client->client);
diff --git a/src/messenger/gnunet-service-messenger_ego_store.c b/src/messenger/gnunet-service-messenger_ego_store.c
index 60a4d7bfc..8250d0902 100644
--- a/src/messenger/gnunet-service-messenger_ego_store.c
+++ b/src/messenger/gnunet-service-messenger_ego_store.c
@@ -132,7 +132,7 @@ iterate_create_ego (void *cls,
void *value)
{
struct GNUNET_MESSENGER_SrvHandle *handle = value;
- set_handle_ego (handle, (struct GNUNET_MESSENGER_Ego*) cls);
+ set_srv_handle_ego (handle, (struct GNUNET_MESSENGER_Ego*) cls);
return GNUNET_YES;
}
diff --git a/src/messenger/gnunet-service-messenger_handle.c b/src/messenger/gnunet-service-messenger_handle.c
index 218482e45..a4fa81623 100644
--- a/src/messenger/gnunet-service-messenger_handle.c
+++ b/src/messenger/gnunet-service-messenger_handle.c
@@ -31,8 +31,8 @@
#include "messenger_api_util.h"
struct GNUNET_MESSENGER_SrvHandle*
-create_handle (struct GNUNET_MESSENGER_Service *service,
- struct GNUNET_MQ_Handle *mq)
+create_srv_handle (struct GNUNET_MESSENGER_Service *service,
+ struct GNUNET_MQ_Handle *mq)
{
GNUNET_assert((service) && (mq));
@@ -60,12 +60,12 @@ iterate_free_member_ids (void *cls,
}
void
-destroy_handle (struct GNUNET_MESSENGER_SrvHandle *handle)
+destroy_srv_handle (struct GNUNET_MESSENGER_SrvHandle *handle)
{
GNUNET_assert(handle);
if (handle->service->dir)
- save_handle_configuration (handle);
+ save_srv_handle_configuration (handle);
if (handle->name)
{
@@ -83,9 +83,9 @@ destroy_handle (struct GNUNET_MESSENGER_SrvHandle *handle)
}
void
-get_handle_data_subdir (const struct GNUNET_MESSENGER_SrvHandle *handle,
- const char *name,
- char **dir)
+get_srv_handle_data_subdir (const struct GNUNET_MESSENGER_SrvHandle *handle,
+ const char *name,
+ char **dir)
{
GNUNET_assert((handle) && (dir));
@@ -124,8 +124,8 @@ create_handle_member_id (const struct GNUNET_MESSENGER_SrvHandle *handle,
}
const struct GNUNET_ShortHashCode*
-get_handle_member_id (const struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key)
+get_srv_handle_member_id (const struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key)
{
GNUNET_assert((handle) && (key));
@@ -133,9 +133,9 @@ get_handle_member_id (const struct GNUNET_MESSENGER_SrvHandle *handle,
}
int
-change_handle_member_id (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key,
- const struct GNUNET_ShortHashCode *unique_id)
+change_srv_handle_member_id (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key,
+ const struct GNUNET_ShortHashCode *unique_id)
{
GNUNET_assert((handle) && (key) && (unique_id));
@@ -214,7 +214,7 @@ change_handle_ego (struct GNUNET_MESSENGER_SrvHandle *handle,
handle->ego = ego;
- ego = get_handle_ego (handle);
+ ego = get_srv_handle_ego (handle);
const uint16_t length = GNUNET_IDENTITY_key_get_length(&(ego->pub));
@@ -244,14 +244,14 @@ iterate_send_message (void *cls,
{
struct GNUNET_MESSENGER_MessageHandle *msg_handle = cls;
- send_handle_message (msg_handle->handle, key, msg_handle->message);
+ send_srv_handle_message (msg_handle->handle, key, msg_handle->message);
return GNUNET_YES;
}
void
-set_handle_ego (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_MESSENGER_Ego *ego)
+set_srv_handle_ego (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_MESSENGER_Ego *ego)
{
GNUNET_assert((handle) && (ego));
@@ -268,7 +268,7 @@ set_handle_ego (struct GNUNET_MESSENGER_SrvHandle *handle,
}
const struct GNUNET_MESSENGER_Ego*
-get_handle_ego (const struct GNUNET_MESSENGER_SrvHandle *handle)
+get_srv_handle_ego (const struct GNUNET_MESSENGER_SrvHandle *handle)
{
GNUNET_assert(handle);
@@ -302,12 +302,12 @@ callback_setup_handle_name (void *cls,
change_handle_ego (handle, ego);
if (handle->service->dir)
- load_handle_configuration (handle);
+ load_srv_handle_configuration (handle);
}
void
-setup_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
- const char *name)
+setup_srv_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const char *name)
{
GNUNET_assert(handle);
@@ -336,7 +336,7 @@ callback_update_handle (void *cls,
}
void
-update_handle (struct GNUNET_MESSENGER_SrvHandle *handle)
+update_srv_handle (struct GNUNET_MESSENGER_SrvHandle *handle)
{
GNUNET_assert (handle);
@@ -369,10 +369,10 @@ callback_set_handle_name (void *cls,
struct GNUNET_MESSENGER_EgoStore *store = get_service_ego_store(handle->service);
char *old_dir;
- get_handle_data_subdir (handle, handle->name, &old_dir);
+ get_srv_handle_data_subdir (handle, handle->name, &old_dir);
char *new_dir;
- get_handle_data_subdir (handle, name, &new_dir);
+ get_srv_handle_data_subdir (handle, name, &new_dir);
if ((GNUNET_YES == GNUNET_DISK_directory_test (new_dir, GNUNET_NO)) &&
(GNUNET_OK != GNUNET_DISK_directory_remove(new_dir)))
@@ -403,8 +403,8 @@ free_dirs:
}
void
-set_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
- const char *name)
+set_srv_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const char *name)
{
GNUNET_assert(handle);
@@ -424,50 +424,50 @@ set_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
}
int
-open_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key)
+open_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key)
{
GNUNET_assert((handle) && (key));
- if ((!get_handle_member_id (handle, key)) && (GNUNET_YES != create_handle_member_id (handle, key)))
+ if ((!get_srv_handle_member_id (handle, key)) && (GNUNET_YES != create_handle_member_id (handle, key)))
return GNUNET_NO;
return open_service_room (handle->service, handle, key);
}
int
-entry_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_PeerIdentity *door,
- const struct GNUNET_HashCode *key)
+entry_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_PeerIdentity *door,
+ const struct GNUNET_HashCode *key)
{
GNUNET_assert((handle) && (door) && (key));
- if ((!get_handle_member_id (handle, key)) && (GNUNET_YES != create_handle_member_id (handle, key)))
+ if ((!get_srv_handle_member_id (handle, key)) && (GNUNET_YES != create_handle_member_id (handle, key)))
return GNUNET_NO;
return entry_service_room (handle->service, handle, door, key);
}
int
-close_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key)
+close_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key)
{
GNUNET_assert((handle) && (key));
- if (!get_handle_member_id (handle, key))
+ if (!get_srv_handle_member_id (handle, key))
return GNUNET_NO;
return close_service_room (handle->service, handle, key);
}
int
-send_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key,
- const struct GNUNET_MESSENGER_Message *message)
+send_srv_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key,
+ const struct GNUNET_MESSENGER_Message *message)
{
GNUNET_assert((handle) && (key) && (message));
- const struct GNUNET_ShortHashCode *id = get_handle_member_id (handle, key);
+ const struct GNUNET_ShortHashCode *id = get_srv_handle_member_id (handle, key);
if (!id)
{
@@ -487,7 +487,7 @@ send_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
GNUNET_memcpy(&(msg->header.sender_id), id, sizeof(*id));
- return send_room_message (room, handle, msg);
+ return send_srv_room_message (room, handle, msg);
}
static const struct GNUNET_HashCode*
@@ -506,15 +506,15 @@ get_handle_member_session (struct GNUNET_MESSENGER_SrvHandle *handle,
{
GNUNET_assert((handle) && (room) && (key) && (handle->service));
- const struct GNUNET_ShortHashCode *id = get_handle_member_id(handle, key);
+ const struct GNUNET_ShortHashCode *id = get_srv_handle_member_id(handle, key);
if (!id)
return NULL;
- struct GNUNET_MESSENGER_MemberStore *store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *store = get_srv_room_member_store(room);
struct GNUNET_MESSENGER_Member *member = get_store_member(store, id);
- const struct GNUNET_MESSENGER_Ego *ego = get_handle_ego(handle);
+ const struct GNUNET_MESSENGER_Ego *ego = get_srv_handle_ego(handle);
if (!ego)
return NULL;
@@ -523,17 +523,17 @@ get_handle_member_session (struct GNUNET_MESSENGER_SrvHandle *handle,
}
void
-notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
- struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_MESSENGER_MemberSession *session,
- const struct GNUNET_MESSENGER_Message *message,
- const struct GNUNET_HashCode *hash)
+notify_srv_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
+ struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_MESSENGER_MemberSession *session,
+ const struct GNUNET_MESSENGER_Message *message,
+ const struct GNUNET_HashCode *hash)
{
GNUNET_assert((handle) && (room) && (session) && (message) && (hash));
- const struct GNUNET_HashCode *key = get_room_key(room);
+ const struct GNUNET_HashCode *key = get_srv_room_key(room);
- if ((!handle->mq) || (!get_handle_member_id (handle, key)))
+ if ((!handle->mq) || (!get_srv_handle_member_id (handle, key)))
{
GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Notifying client about message requires membership!\n");
return;
@@ -554,7 +554,7 @@ notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
{
private_message = copy_message(message);
- if (GNUNET_YES != decrypt_message(private_message, &(get_handle_ego(handle)->priv)))
+ if (GNUNET_YES != decrypt_message(private_message, &(get_srv_handle_ego(handle)->priv)))
{
destroy_message(private_message);
private_message = NULL;
@@ -612,7 +612,7 @@ callback_scan_for_rooms (void *cls,
if ((GNUNET_OK == GNUNET_CONFIGURATION_get_data (cfg, "room", "key", &key, sizeof(key))) &&
(GNUNET_OK == GNUNET_CONFIGURATION_get_data (cfg, "room", "member_id", &member_id, sizeof(member_id))))
- change_handle_member_id (handle, &key, &member_id);
+ change_srv_handle_member_id (handle, &key, &member_id);
}
GNUNET_CONFIGURATION_destroy (cfg);
@@ -620,12 +620,12 @@ callback_scan_for_rooms (void *cls,
}
void
-load_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle)
+load_srv_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle)
{
GNUNET_assert(handle);
char *id_dir;
- get_handle_data_subdir (handle, handle->name, &id_dir);
+ get_srv_handle_data_subdir (handle, handle->name, &id_dir);
if (GNUNET_YES == GNUNET_DISK_directory_test (id_dir, GNUNET_YES))
{
@@ -650,7 +650,7 @@ iterate_save_rooms (void *cls,
struct GNUNET_ShortHashCode *member_id = value;
char *id_dir;
- get_handle_data_subdir (handle, handle->name, &id_dir);
+ get_srv_handle_data_subdir (handle, handle->name, &id_dir);
char *filename;
GNUNET_asprintf (&filename, "%s%s%c%s.cfg", id_dir, "rooms", DIR_SEPARATOR, GNUNET_h2s (key));
@@ -687,12 +687,12 @@ iterate_save_rooms (void *cls,
}
void
-save_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle)
+save_srv_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle)
{
GNUNET_assert(handle);
char *id_dir;
- get_handle_data_subdir (handle, handle->name, &id_dir);
+ get_srv_handle_data_subdir (handle, handle->name, &id_dir);
if ((GNUNET_YES == GNUNET_DISK_directory_test (id_dir, GNUNET_NO)) || (GNUNET_OK
== GNUNET_DISK_directory_create (id_dir)))
diff --git a/src/messenger/gnunet-service-messenger_handle.h b/src/messenger/gnunet-service-messenger_handle.h
index 4438570b9..8754716e9 100644
--- a/src/messenger/gnunet-service-messenger_handle.h
+++ b/src/messenger/gnunet-service-messenger_handle.h
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -60,8 +60,8 @@ struct GNUNET_MESSENGER_SrvHandle
* @return New handle
*/
struct GNUNET_MESSENGER_SrvHandle*
-create_handle (struct GNUNET_MESSENGER_Service *service,
- struct GNUNET_MQ_Handle *mq);
+create_srv_handle (struct GNUNET_MESSENGER_Service *service,
+ struct GNUNET_MQ_Handle *mq);
/**
* Destroys a handle and frees its memory fully.
@@ -69,7 +69,7 @@ create_handle (struct GNUNET_MESSENGER_Service *service,
* @param[in/out] handle Handle
*/
void
-destroy_handle (struct GNUNET_MESSENGER_SrvHandle *handle);
+destroy_srv_handle (struct GNUNET_MESSENGER_SrvHandle *handle);
/**
* Writes the path of the directory for a given <i>handle</i> using a specific <i>name</i> to the parameter
@@ -80,7 +80,7 @@ destroy_handle (struct GNUNET_MESSENGER_SrvHandle *handle);
* @param[out] dir Path to store data
*/
void
-get_handle_data_subdir (const struct GNUNET_MESSENGER_SrvHandle *handle,
+get_srv_handle_data_subdir (const struct GNUNET_MESSENGER_SrvHandle *handle,
const char *name,
char **dir);
@@ -94,8 +94,8 @@ get_handle_data_subdir (const struct GNUNET_MESSENGER_SrvHandle *handle,
* @return Member id or NULL
*/
const struct GNUNET_ShortHashCode*
-get_handle_member_id (const struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key);
+get_srv_handle_member_id (const struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key);
/**
* Changes the member id of a given <i>handle</i> in a specific <i>room</i> to match a <i>unique_id</i>
@@ -109,9 +109,9 @@ get_handle_member_id (const struct GNUNET_MESSENGER_SrvHandle *handle,
* @return GNUNET_OK on success, otherwise GNUNET_SYSERR
*/
int
-change_handle_member_id (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key,
- const struct GNUNET_ShortHashCode *unique_id);
+change_srv_handle_member_id (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key,
+ const struct GNUNET_ShortHashCode *unique_id);
/**
* Sets the EGO used by a given <i>handle</i>.
@@ -120,8 +120,8 @@ change_handle_member_id (struct GNUNET_MESSENGER_SrvHandle *handle,
* @param[in] ego EGO key pair
*/
void
-set_handle_ego (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_MESSENGER_Ego *ego);
+set_srv_handle_ego (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_MESSENGER_Ego *ego);
/**
* Returns the EGO used by a given <i>handle</i>.
@@ -130,7 +130,7 @@ set_handle_ego (struct GNUNET_MESSENGER_SrvHandle *handle,
* @return EGO key pair
*/
const struct GNUNET_MESSENGER_Ego*
-get_handle_ego (const struct GNUNET_MESSENGER_SrvHandle *handle);
+get_srv_handle_ego (const struct GNUNET_MESSENGER_SrvHandle *handle);
/**
* Tries to set the name and EGO key of a <i>handle</i> initially by looking up a specific <i>name</i>.
@@ -139,8 +139,8 @@ get_handle_ego (const struct GNUNET_MESSENGER_SrvHandle *handle);
* @param[in] name Name (optionally: valid EGO name)
*/
void
-setup_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
- const char *name);
+setup_srv_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const char *name);
/**
* Tries to change the key pair of an EGO of a <i>handle</i> under the same name and informs all rooms
@@ -149,7 +149,7 @@ setup_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
* @param[in/out] handle Handle
*/
void
-update_handle (struct GNUNET_MESSENGER_SrvHandle *handle);
+update_srv_handle (struct GNUNET_MESSENGER_SrvHandle *handle);
/**
* Tries to rename the handle which implies renaming the EGO its using and moving all related data into
@@ -161,8 +161,8 @@ update_handle (struct GNUNET_MESSENGER_SrvHandle *handle);
* @param[in] name New name
*/
void
-set_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
- const char *name);
+set_srv_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const char *name);
/**
* Makes a given <i>handle</i> a member of the room using a specific <i>key</i> and opens the
@@ -173,8 +173,8 @@ set_handle_name (struct GNUNET_MESSENGER_SrvHandle *handle,
* @return #GNUNET_YES on success, otherwise #GNUNET_NO
*/
int
-open_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key);
+open_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key);
/**
* Makes a given <i>handle</i> a member of the room using a specific <i>key</i> and enters the room
@@ -186,9 +186,9 @@ open_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
* @return #GNUNET_YES on success, otherwise #GNUNET_NO
*/
int
-entry_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_PeerIdentity *door,
- const struct GNUNET_HashCode *key);
+entry_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_PeerIdentity *door,
+ const struct GNUNET_HashCode *key);
/**
* Removes the membership of the room using a specific <i>key</i> and closes it if no other handle
@@ -199,8 +199,8 @@ entry_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
* @return #GNUNET_YES on success, otherwise #GNUNET_NO
*/
int
-close_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key);
+close_srv_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key);
/**
* Sends a <i>message</i> from a given <i>handle</i> to the room using a specific <i>key</i>.
@@ -211,9 +211,9 @@ close_handle_room (struct GNUNET_MESSENGER_SrvHandle *handle,
* @return #GNUNET_YES on success, #GNUNET_NO or #GNUNET_SYSERR otherwise.
*/
int
-send_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key,
- const struct GNUNET_MESSENGER_Message *message);
+send_srv_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key,
+ const struct GNUNET_MESSENGER_Message *message);
/**
* Notifies the handle that a new message was received or sent.
@@ -225,11 +225,11 @@ send_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
* @param[in] hash Hash of message
*/
void
-notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
- struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_MESSENGER_MemberSession *session,
- const struct GNUNET_MESSENGER_Message *message,
- const struct GNUNET_HashCode *hash);
+notify_srv_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
+ struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_MESSENGER_MemberSession *session,
+ const struct GNUNET_MESSENGER_Message *message,
+ const struct GNUNET_HashCode *hash);
/**
* Loads member ids and other potential configuration from a given <i>handle</i> which
@@ -238,7 +238,7 @@ notify_handle_message (struct GNUNET_MESSENGER_SrvHandle *handle,
* @param[out] handle Handle
*/
void
-load_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle);
+load_srv_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle);
/**
* Saves member ids and other potential configuration from a given <i>handle</i> which
@@ -247,6 +247,6 @@ load_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle);
* @param[in] handle Handle
*/
void
-save_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle);
+save_srv_handle_configuration (struct GNUNET_MESSENGER_SrvHandle *handle);
#endif //GNUNET_SERVICE_MESSENGER_HANDLE_H
diff --git a/src/messenger/gnunet-service-messenger_list_handles.c b/src/messenger/gnunet-service-messenger_list_handles.c
index c0ae18716..f2daa2e70 100644
--- a/src/messenger/gnunet-service-messenger_list_handles.c
+++ b/src/messenger/gnunet-service-messenger_list_handles.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -46,7 +46,7 @@ clear_list_handles (struct GNUNET_MESSENGER_ListHandles *handles)
struct GNUNET_MESSENGER_ListHandle *element = handles->head;
GNUNET_CONTAINER_DLL_remove(handles->head, handles->tail, element);
- destroy_handle (element->handle);
+ destroy_srv_handle (element->handle);
GNUNET_free(element);
}
@@ -97,7 +97,7 @@ find_list_handle_by_member (const struct GNUNET_MESSENGER_ListHandles *handles,
struct GNUNET_MESSENGER_ListHandle *element;
for (element = handles->head; element; element = element->next)
- if (get_handle_member_id ((struct GNUNET_MESSENGER_SrvHandle*) element->handle, key))
+ if (get_srv_handle_member_id ((struct GNUNET_MESSENGER_SrvHandle*) element->handle, key))
return element->handle;
return NULL;
diff --git a/src/messenger/gnunet-service-messenger_member_session.c b/src/messenger/gnunet-service-messenger_member_session.c
index 6bd1d24b8..d71513046 100644
--- a/src/messenger/gnunet-service-messenger_member_session.c
+++ b/src/messenger/gnunet-service-messenger_member_session.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2021 GNUnet e.V.
+ Copyright (C) 2021--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -101,7 +101,7 @@ check_member_session_completion (struct GNUNET_MESSENGER_MemberSession *session)
add_to_list_messages(&level, end);
- struct GNUNET_MESSENGER_MessageStore *store = get_room_message_store(session->member->store->room);
+ struct GNUNET_MESSENGER_MessageStore *store = get_srv_room_message_store(session->member->store->room);
struct GNUNET_MESSENGER_ListMessages list;
init_list_messages(&list);
diff --git a/src/messenger/gnunet-service-messenger_member_store.c b/src/messenger/gnunet-service-messenger_member_store.c
index e96ee3883..844130429 100644
--- a/src/messenger/gnunet-service-messenger_member_store.c
+++ b/src/messenger/gnunet-service-messenger_member_store.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -74,7 +74,7 @@ get_member_store_key (const struct GNUNET_MESSENGER_MemberStore *store)
{
GNUNET_assert (store);
- return get_room_key((const struct GNUNET_MESSENGER_SrvRoom*) store->room);
+ return get_srv_room_key((const struct GNUNET_MESSENGER_SrvRoom*) store->room);
}
static int
diff --git a/src/messenger/gnunet-service-messenger_message_handle.c b/src/messenger/gnunet-service-messenger_message_handle.c
index 701d78c89..6016ce438 100644
--- a/src/messenger/gnunet-service-messenger_message_handle.c
+++ b/src/messenger/gnunet-service-messenger_message_handle.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -43,12 +43,12 @@ handle_message_join (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_HashCode *hash)
{
GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Member (%s) joins room (%s).\n",
- GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s(get_room_key(room)));
+ GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s(get_srv_room_key(room)));
if (GNUNET_OK != reset_member_session(session, hash))
GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Resetting member session failed!\n");
- solve_room_member_collisions (
+ solve_srv_room_member_collisions (
room,
&(message->body.join.key),
&(message->header.sender_id),
@@ -63,7 +63,7 @@ handle_message_leave (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_HashCode *hash)
{
GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Member (%s) leaves room (%s).\n",
- GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s(get_room_key(room)));
+ GNUNET_sh2s (&(message->header.sender_id)), GNUNET_h2s(get_srv_room_key(room)));
close_member_session(session);
}
@@ -101,7 +101,7 @@ handle_message_peer (struct GNUNET_MESSENGER_SrvRoom *room,
add_to_list_tunnels (&(room->basement), &(message->body.peer.peer));
if (room->peer_message)
- rebuild_room_basement_structure (room);
+ rebuild_srv_room_basement_structure (room);
}
void
@@ -112,7 +112,7 @@ handle_message_id (struct GNUNET_MESSENGER_SrvRoom *room,
{
handle_session_switch (session, message, hash);
- solve_room_member_collisions (
+ solve_srv_room_member_collisions (
room,
get_member_session_public_key(session),
&(message->body.id.id),
@@ -134,7 +134,7 @@ handle_message_miss (struct GNUNET_MESSENGER_SrvRoom *room,
remove_from_list_tunnels (&(room->basement), element);
if (room->peer_message)
- rebuild_room_basement_structure (room);
+ rebuild_srv_room_basement_structure (room);
}
void
@@ -149,5 +149,5 @@ handle_message_delete (struct GNUNET_MESSENGER_SrvRoom *room,
action = GNUNET_TIME_absolute_add (action, delay);
delay = GNUNET_TIME_absolute_get_difference (GNUNET_TIME_absolute_get (), action);
- delete_room_message (room, session, &(message->body.deletion.hash), delay);
+ delete_srv_room_message (room, session, &(message->body.deletion.hash), delay);
}
diff --git a/src/messenger/gnunet-service-messenger_message_recv.c b/src/messenger/gnunet-service-messenger_message_recv.c
index bb6ee6f17..4e96cf552 100644
--- a/src/messenger/gnunet-service-messenger_message_recv.c
+++ b/src/messenger/gnunet-service-messenger_message_recv.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -36,7 +36,7 @@ forward_about_members (struct GNUNET_MESSENGER_SrvRoom *room,
if (session->prev)
forward_about_members (room, tunnel, session->prev, map);
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(room);
struct GNUNET_MESSENGER_ListMessage *element;
for (element = session->messages.head; element; element = element->next)
@@ -92,7 +92,7 @@ recv_message_info (struct GNUNET_MESSENGER_SrvRoom *room,
if (room->host)
{
- const struct GNUNET_MESSENGER_Ego *ego = get_handle_ego(room->host);
+ const struct GNUNET_MESSENGER_Ego *ego = get_srv_handle_ego(room->host);
send_tunnel_message (tunnel, room->host, create_message_info(ego));
}
@@ -102,12 +102,12 @@ recv_message_info (struct GNUNET_MESSENGER_SrvRoom *room,
if (GNUNET_YES != contains_list_tunnels(&(room->basement), &peer))
{
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
iterate_store_members(member_store, iterate_forward_members, tunnel);
}
- check_room_peer_status(room, tunnel);
+ check_srv_room_peer_status(room, tunnel);
return GNUNET_NO;
}
@@ -142,7 +142,7 @@ callback_found_message (void *cls,
if (!message)
{
- struct GNUNET_MESSENGER_OperationStore *operation_store = get_room_operation_store(room);
+ struct GNUNET_MESSENGER_OperationStore *operation_store = get_srv_room_operation_store(room);
use_store_operation(
operation_store,
@@ -165,7 +165,7 @@ recv_message_request (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_MESSENGER_Message *message,
const struct GNUNET_HashCode *hash)
{
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
struct GNUNET_MESSENGER_Member *member = get_store_member_of(member_store, message);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Request for message (%s)\n", GNUNET_h2s (hash));
@@ -178,7 +178,7 @@ recv_message_request (struct GNUNET_MESSENGER_SrvRoom *room,
if ((!session) || (GNUNET_YES != check_member_session_history(session, hash, GNUNET_NO)))
return GNUNET_NO;
- if (GNUNET_NO == request_room_message(room, &(message->body.request.hash), session, callback_found_message, tunnel))
+ if (GNUNET_NO == request_srv_room_message(room, &(message->body.request.hash), session, callback_found_message, tunnel))
return GNUNET_YES;
return GNUNET_NO;
diff --git a/src/messenger/gnunet-service-messenger_message_send.c b/src/messenger/gnunet-service-messenger_message_send.c
index 8cc2466d7..5cb3cd627 100644
--- a/src/messenger/gnunet-service-messenger_message_send.c
+++ b/src/messenger/gnunet-service-messenger_message_send.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -35,7 +35,7 @@ send_message_join (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_MESSENGER_Message *message,
const struct GNUNET_HashCode *hash)
{
- check_room_peer_status(room, NULL);
+ check_srv_room_peer_status(room, NULL);
}
void
@@ -56,7 +56,7 @@ send_message_id (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_MESSENGER_Message *message,
const struct GNUNET_HashCode *hash)
{
- change_handle_member_id (handle, get_room_key(room), &(message->body.id.id));
+ change_srv_handle_member_id (handle, get_srv_room_key(room), &(message->body.id.id));
}
void
@@ -65,7 +65,7 @@ send_message_request (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_MESSENGER_Message *message,
const struct GNUNET_HashCode *hash)
{
- struct GNUNET_MESSENGER_OperationStore *operation_store = get_room_operation_store(room);
+ struct GNUNET_MESSENGER_OperationStore *operation_store = get_srv_room_operation_store(room);
use_store_operation(
operation_store,
diff --git a/src/messenger/gnunet-service-messenger_room.c b/src/messenger/gnunet-service-messenger_room.c
index 7a20d2191..068597f51 100644
--- a/src/messenger/gnunet-service-messenger_room.c
+++ b/src/messenger/gnunet-service-messenger_room.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -43,8 +43,8 @@ static void
idle_request_room_messages (void *cls);
struct GNUNET_MESSENGER_SrvRoom*
-create_room (struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_HashCode *key)
+create_srv_room (struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_HashCode *key)
{
GNUNET_assert((handle) && (key));
@@ -58,9 +58,9 @@ create_room (struct GNUNET_MESSENGER_SrvHandle *handle,
room->tunnels = GNUNET_CONTAINER_multipeermap_create (8, GNUNET_NO);
- init_member_store(get_room_member_store(room), room);
- init_message_store (get_room_message_store(room));
- init_operation_store(get_room_operation_store(room), room);
+ init_member_store(get_srv_room_member_store(room), room);
+ init_message_store (get_srv_room_message_store(room));
+ init_operation_store(get_srv_room_operation_store(room), room);
init_list_tunnels (&(room->basement));
init_message_state(&(room->state));
@@ -71,7 +71,7 @@ create_room (struct GNUNET_MESSENGER_SrvHandle *handle,
room->idle = NULL;
if (room->service->dir)
- load_room (room);
+ load_srv_room (room);
room->idle = GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_IDLE, idle_request_room_messages, room);
@@ -92,8 +92,8 @@ static void
handle_room_messages (struct GNUNET_MESSENGER_SrvRoom *room);
void
-destroy_room (struct GNUNET_MESSENGER_SrvRoom *room,
- int deletion)
+destroy_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
+ int deletion)
{
GNUNET_assert(room);
@@ -113,14 +113,14 @@ destroy_room (struct GNUNET_MESSENGER_SrvRoom *room,
goto skip_saving;
if (GNUNET_YES == deletion)
- remove_room (room);
+ remove_srv_room (room);
else
- save_room (room);
+ save_srv_room (room);
skip_saving:
- clear_member_store (get_room_member_store(room));
- clear_message_store (get_room_message_store(room));
- clear_operation_store(get_room_operation_store(room));
+ clear_member_store (get_srv_room_member_store(room));
+ clear_message_store (get_srv_room_message_store(room));
+ clear_operation_store(get_srv_room_operation_store(room));
GNUNET_CONTAINER_multipeermap_destroy (room->tunnels);
clear_list_tunnels (&(room->basement));
@@ -133,7 +133,7 @@ skip_saving:
}
struct GNUNET_MESSENGER_MemberStore*
-get_room_member_store (struct GNUNET_MESSENGER_SrvRoom *room)
+get_srv_room_member_store (struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
@@ -141,7 +141,7 @@ get_room_member_store (struct GNUNET_MESSENGER_SrvRoom *room)
}
struct GNUNET_MESSENGER_MessageStore*
-get_room_message_store (struct GNUNET_MESSENGER_SrvRoom *room)
+get_srv_room_message_store (struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
@@ -149,7 +149,7 @@ get_room_message_store (struct GNUNET_MESSENGER_SrvRoom *room)
}
struct GNUNET_MESSENGER_OperationStore*
-get_room_operation_store (struct GNUNET_MESSENGER_SrvRoom *room)
+get_srv_room_operation_store (struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
@@ -164,7 +164,7 @@ send_room_info (struct GNUNET_MESSENGER_SrvRoom *room,
if ((!handle) || (!is_tunnel_connected (tunnel)))
return GNUNET_NO;
- return send_tunnel_message (tunnel, handle, create_message_info (get_handle_ego (handle)));
+ return send_tunnel_message (tunnel, handle, create_message_info (get_srv_handle_ego (handle)));
}
static void*
@@ -193,7 +193,7 @@ callback_room_connect (void *cls,
bind_tunnel(tunnel, channel);
GNUNET_log(GNUNET_ERROR_TYPE_INFO, "New tunnel in room (%s) established to peer: %s\n",
- GNUNET_h2s(get_room_key(room)), GNUNET_i2s (source));
+ GNUNET_h2s(get_srv_room_key(room)), GNUNET_i2s (source));
if (GNUNET_YES == send_room_info (room, room->host, tunnel))
return tunnel;
@@ -213,15 +213,15 @@ join_room (struct GNUNET_MESSENGER_SrvRoom *room,
{
GNUNET_assert((room) && (handle) && (member));
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Joining room: %s (%s)\n", GNUNET_h2s (get_room_key (room)),
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Joining room: %s (%s)\n", GNUNET_h2s (get_srv_room_key (room)),
GNUNET_sh2s (get_member_id(member)));
const struct GNUNET_ShortHashCode *member_id = get_member_id(member);
- if (GNUNET_OK != change_handle_member_id (handle, get_room_key(room), member_id))
+ if (GNUNET_OK != change_srv_handle_member_id (handle, get_srv_room_key(room), member_id))
return GNUNET_NO;
- struct GNUNET_MESSENGER_Message *message = create_message_join (get_handle_ego (handle));
+ struct GNUNET_MESSENGER_Message *message = create_message_join (get_srv_handle_ego (handle));
if (!message)
{
@@ -231,7 +231,7 @@ join_room (struct GNUNET_MESSENGER_SrvRoom *room,
}
GNUNET_memcpy(&(message->header.sender_id), member_id, sizeof(*member_id));
- return send_room_message (room, handle, message);
+ return send_srv_room_message (room, handle, message);
}
struct GNUNET_MESSENGER_MemberNotify
@@ -250,7 +250,7 @@ notify_about_members (struct GNUNET_MESSENGER_MemberNotify *notify,
if (session->prev)
notify_about_members (notify, session->prev, map, GNUNET_YES);
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(notify->room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(notify->room);
struct GNUNET_MESSENGER_ListMessage *element;
for (element = session->messages.head; element; element = element->next)
@@ -269,7 +269,7 @@ notify_about_members (struct GNUNET_MESSENGER_MemberNotify *notify,
const struct GNUNET_MESSENGER_Message *message = get_store_message(message_store, &(element->hash));
if (message)
- notify_handle_message (notify->handle, notify->room, session, message, &(element->hash));
+ notify_srv_handle_message (notify->handle, notify->room, session, message, &(element->hash));
}
}
@@ -295,15 +295,15 @@ static int
join_room_locally (struct GNUNET_MESSENGER_SrvRoom *room,
struct GNUNET_MESSENGER_SrvHandle *handle)
{
- const struct GNUNET_ShortHashCode *member_id = get_handle_member_id (handle, get_room_key(room));
+ const struct GNUNET_ShortHashCode *member_id = get_srv_handle_member_id (handle, get_srv_room_key(room));
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
struct GNUNET_MESSENGER_Member *member = add_store_member(member_store, member_id);
if (GNUNET_NO == join_room (room, handle, member))
return GNUNET_NO;
- const struct GNUNET_MESSENGER_Ego *ego = get_handle_ego(handle);
+ const struct GNUNET_MESSENGER_Ego *ego = get_srv_handle_ego(handle);
struct GNUNET_MESSENGER_MemberSession *session = get_member_session (member, &(ego->pub));
if (!session)
@@ -318,7 +318,7 @@ join_room_locally (struct GNUNET_MESSENGER_SrvRoom *room,
notify.handle = handle;
notify.session = session;
- iterate_store_members(get_room_member_store(room), iterate_notify_about_members, &notify);
+ iterate_store_members(get_srv_room_member_store(room), iterate_notify_about_members, &notify);
return GNUNET_YES;
}
@@ -336,16 +336,16 @@ callback_tunnel_disconnect (void *cls,
const struct GNUNET_CADET_Channel *channel);
int
-open_room (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvHandle *handle)
+open_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvHandle *handle)
{
GNUNET_assert((room) && (handle));
if (room->port)
return join_room_locally (room, handle);
- struct GNUNET_CADET_Handle *cadet = get_room_cadet (room);
- const struct GNUNET_HashCode *key = get_room_key (room);
+ struct GNUNET_CADET_Handle *cadet = get_srv_room_cadet (room);
+ const struct GNUNET_HashCode *key = get_srv_room_key (room);
struct GNUNET_MQ_MessageHandler handlers[] = { GNUNET_MQ_hd_var_size(tunnel_message, GNUNET_MESSAGE_TYPE_CADET_CLI,
struct GNUNET_MessageHeader, NULL),
@@ -358,14 +358,14 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room,
if (room->port)
GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Port of room (%s) was opened!\n",
- GNUNET_h2s(get_room_key(room)));
+ GNUNET_h2s(get_srv_room_key(room)));
else
GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Port of room (%s) could not be opened!\n",
- GNUNET_h2s(get_room_key(room)));
+ GNUNET_h2s(get_srv_room_key(room)));
- const struct GNUNET_ShortHashCode *member_id = get_handle_member_id (handle, get_room_key(room));
+ const struct GNUNET_ShortHashCode *member_id = get_srv_handle_member_id (handle, get_srv_room_key(room));
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
struct GNUNET_MESSENGER_Member *member = add_store_member(member_store, member_id);
if ((GNUNET_NO == join_room (room, handle, member)) && (room->port))
@@ -380,13 +380,13 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room,
struct GNUNET_MESSENGER_Message *peer_msg = create_message_peer (room->service);
GNUNET_memcpy(&(peer_msg->header.sender_id), member_id, sizeof(*member_id));
- return (room->port ? send_room_message (room, handle, peer_msg) : GNUNET_NO);
+ return (room->port ? send_srv_room_message (room, handle, peer_msg) : GNUNET_NO);
}
int
-enter_room_at (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_PeerIdentity *door)
+enter_srv_room_at (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_PeerIdentity *door)
{
GNUNET_assert((room) && (handle) && (door));
@@ -423,24 +423,24 @@ enter_room_at (struct GNUNET_MESSENGER_SrvRoom *room,
}
struct GNUNET_MQ_Envelope*
-pack_room_message (const struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_MESSENGER_SrvHandle *handle,
- struct GNUNET_MESSENGER_Message *message,
- struct GNUNET_HashCode *hash,
- int mode)
+pack_srv_room_message (const struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_MESSENGER_SrvHandle *handle,
+ struct GNUNET_MESSENGER_Message *message,
+ struct GNUNET_HashCode *hash,
+ int mode)
{
GNUNET_assert((room) && (handle) && (message) && (hash));
message->header.timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
- const struct GNUNET_ShortHashCode *id = get_handle_member_id (handle, get_room_key(room));
+ const struct GNUNET_ShortHashCode *id = get_srv_handle_member_id (handle, get_srv_room_key(room));
GNUNET_assert(id);
GNUNET_memcpy(&(message->header.sender_id), id, sizeof(struct GNUNET_ShortHashCode));
get_message_state_chain_hash (&(room->state), &(message->header.previous));
- return pack_message (message, hash, get_handle_ego (handle), mode);
+ return pack_message (message, hash, get_srv_handle_ego (handle), mode);
}
struct GNUNET_MESSENGER_ClosureSendRoom
@@ -473,7 +473,7 @@ iterate_send_room_message (void *cls,
if (closure->packed == GNUNET_NO)
{
- env = pack_room_message (closure->room, closure->handle, closure->message, closure->hash,
+ env = pack_srv_room_message (closure->room, closure->handle, closure->message, closure->hash,
GNUNET_MESSENGER_PACK_MODE_ENVELOPE);
if (env)
@@ -500,9 +500,9 @@ callback_room_handle_message (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_HashCode *hash);
int
-send_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvHandle *handle,
- struct GNUNET_MESSENGER_Message *message)
+send_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvHandle *handle,
+ struct GNUNET_MESSENGER_Message *message)
{
GNUNET_assert((room) && (handle));
@@ -510,10 +510,10 @@ send_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
return GNUNET_NO;
if (GNUNET_YES == is_message_session_bound(message))
- merge_room_last_messages(room, handle);
+ merge_srv_room_last_messages(room, handle);
GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Sending message from handle with member id: %s\n",
- GNUNET_sh2s(get_handle_member_id(handle, get_room_key(room))));
+ GNUNET_sh2s(get_srv_handle_member_id(handle, get_srv_room_key(room))));
struct GNUNET_HashCode hash;
struct GNUNET_MESSENGER_ClosureSendRoom closure;
@@ -528,7 +528,7 @@ send_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
GNUNET_CONTAINER_multipeermap_iterate (room->tunnels, iterate_send_room_message, &closure);
if (GNUNET_NO == closure.packed)
- pack_room_message (room, handle, message, &hash, GNUNET_MESSENGER_PACK_MODE_UNKNOWN);
+ pack_srv_room_message (room, handle, message, &hash, GNUNET_MESSENGER_PACK_MODE_UNKNOWN);
const int new_message = update_room_message (room, message, &hash);
@@ -558,10 +558,10 @@ send_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
}
void
-forward_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvTunnel *tunnel,
- struct GNUNET_MESSENGER_Message *message,
- const struct GNUNET_HashCode *hash)
+forward_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvTunnel *tunnel,
+ struct GNUNET_MESSENGER_Message *message,
+ const struct GNUNET_HashCode *hash)
{
GNUNET_assert((room) && (tunnel));
@@ -584,13 +584,13 @@ forward_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
}
void
-check_room_peer_status (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvTunnel *tunnel)
+check_srv_room_peer_status (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvTunnel *tunnel)
{
if (!room->peer_message)
return;
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(room);
const struct GNUNET_MESSENGER_Message *message = get_store_message(message_store, room->peer_message);
@@ -601,7 +601,7 @@ check_room_peer_status (struct GNUNET_MESSENGER_SrvRoom *room,
return;
}
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
struct GNUNET_MESSENGER_Member *member = get_store_member_of(member_store, message);
if (!member)
@@ -619,12 +619,12 @@ check_room_peer_status (struct GNUNET_MESSENGER_SrvRoom *room,
resend_peer_message:
if (room->host)
- send_room_message (room, room->host, create_message_peer (room->service));
+ send_srv_room_message (room, room->host, create_message_peer (room->service));
}
void
-merge_room_last_messages (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvHandle *handle)
+merge_srv_room_last_messages (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvHandle *handle)
{
GNUNET_assert(room);
@@ -639,7 +639,7 @@ merge_next:
if (!hash)
return;
- send_room_message (room, handle, create_message_merge (hash));
+ send_srv_room_message (room, handle, create_message_merge (hash));
goto merge_next;
}
@@ -647,7 +647,7 @@ void
callback_room_deletion (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_HashCode *hash)
{
- if (GNUNET_OK != delete_store_message (get_room_message_store(room), hash))
+ if (GNUNET_OK != delete_store_message (get_srv_room_message_store(room), hash))
{
GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Deletion of message failed! (%s)\n", GNUNET_h2s(hash));
return;
@@ -661,14 +661,14 @@ callback_room_merge (struct GNUNET_MESSENGER_SrvRoom *room,
if (!room->host)
return;
- send_room_message (room, room->host, create_message_merge (hash));
+ send_srv_room_message (room, room->host, create_message_merge (hash));
}
int
-delete_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_MemberSession *session,
- const struct GNUNET_HashCode *hash,
- const struct GNUNET_TIME_Relative delay)
+delete_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_MemberSession *session,
+ const struct GNUNET_HashCode *hash,
+ const struct GNUNET_TIME_Relative delay)
{
GNUNET_assert((room) && (session) && (hash));
@@ -680,7 +680,7 @@ delete_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
return GNUNET_SYSERR;
}
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(room);
const struct GNUNET_MESSENGER_Message *message = get_store_message(message_store, hash);
@@ -695,7 +695,7 @@ delete_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
return GNUNET_NO;
}
- struct GNUNET_MESSENGER_OperationStore *operation_store = get_room_operation_store(room);
+ struct GNUNET_MESSENGER_OperationStore *operation_store = get_srv_room_operation_store(room);
if (GNUNET_OK != use_store_operation(operation_store, hash, GNUNET_MESSENGER_OP_DELETE, delay))
{
@@ -707,7 +707,7 @@ delete_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
}
struct GNUNET_CADET_Handle*
-get_room_cadet (struct GNUNET_MESSENGER_SrvRoom *room)
+get_srv_room_cadet (struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
@@ -715,7 +715,7 @@ get_room_cadet (struct GNUNET_MESSENGER_SrvRoom *room)
}
const struct GNUNET_HashCode*
-get_room_key (const struct GNUNET_MESSENGER_SrvRoom *room)
+get_srv_room_key (const struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
@@ -723,8 +723,8 @@ get_room_key (const struct GNUNET_MESSENGER_SrvRoom *room)
}
const struct GNUNET_MESSENGER_SrvTunnel*
-get_room_tunnel (const struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_PeerIdentity *peer)
+get_srv_room_tunnel (const struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_PeerIdentity *peer)
{
GNUNET_assert((room) && (peer));
@@ -738,7 +738,7 @@ request_room_message_step (struct GNUNET_MESSENGER_SrvRoom *room,
GNUNET_MESSENGER_MessageRequestCallback callback,
void* cls)
{
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(room);
const struct GNUNET_MESSENGER_MessageLink *link = get_store_message_link(
message_store, hash, GNUNET_YES
@@ -771,11 +771,11 @@ forward:
}
int
-request_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_HashCode *hash,
- const struct GNUNET_MESSENGER_MemberSession *session,
- GNUNET_MESSENGER_MessageRequestCallback callback,
- void* cls)
+request_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_HashCode *hash,
+ const struct GNUNET_MESSENGER_MemberSession *session,
+ GNUNET_MESSENGER_MessageRequestCallback callback,
+ void* cls)
{
GNUNET_assert((room) && (hash));
@@ -804,7 +804,7 @@ callback_room_disconnect (struct GNUNET_MESSENGER_SrvRoom *room,
return;
if (GNUNET_YES == contains_list_tunnels (&(room->basement), &identity))
- send_room_message (room, room->host, create_message_miss (&identity));
+ send_srv_room_message (room, room->host, create_message_miss (&identity));
}
int
@@ -819,7 +819,7 @@ callback_verify_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
return GNUNET_SYSERR;
}
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(room);
const struct GNUNET_MESSENGER_Message *previous = get_store_message(message_store, &(message->header.previous));
@@ -849,7 +849,7 @@ idle_request_room_messages (void *cls)
room->idle = NULL;
- struct GNUNET_MESSENGER_OperationStore *operation_store = get_room_operation_store(room);
+ struct GNUNET_MESSENGER_OperationStore *operation_store = get_srv_room_operation_store(room);
const struct GNUNET_HashCode *hash = get_message_state_merge_hash(&(room->state));
if ((hash) &&
@@ -870,14 +870,14 @@ idle_request_room_messages (void *cls)
}
void
-solve_room_member_collisions (struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_IDENTITY_PublicKey *public_key,
- const struct GNUNET_ShortHashCode *member_id,
- struct GNUNET_TIME_Absolute timestamp)
+solve_srv_room_member_collisions (struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_IDENTITY_PublicKey *public_key,
+ const struct GNUNET_ShortHashCode *member_id,
+ struct GNUNET_TIME_Absolute timestamp)
{
GNUNET_assert ((room) && (public_key) && (member_id));
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
struct GNUNET_MESSENGER_Member *member = get_store_member(member_store, member_id);
if ((!member) || (1 >= GNUNET_CONTAINER_multihashmap_size(member->sessions)))
@@ -888,13 +888,13 @@ solve_room_member_collisions (struct GNUNET_MESSENGER_SrvRoom *room,
for (element = handles->head; element; element = element->next)
{
- if (0 != GNUNET_memcmp(member_id, get_handle_member_id(element->handle, get_room_key(room))))
+ if (0 != GNUNET_memcmp(member_id, get_srv_handle_member_id(element->handle, get_srv_room_key(room))))
continue;
- if (0 == GNUNET_memcmp(public_key, &(get_handle_ego(element->handle)->pub)))
+ if (0 == GNUNET_memcmp(public_key, &(get_srv_handle_ego(element->handle)->pub)))
continue;
- struct GNUNET_MESSENGER_MemberSession *session = get_member_session(member, &(get_handle_ego(element->handle)->pub));
+ struct GNUNET_MESSENGER_MemberSession *session = get_member_session(member, &(get_srv_handle_ego(element->handle)->pub));
if (!session)
continue;
@@ -907,12 +907,12 @@ solve_room_member_collisions (struct GNUNET_MESSENGER_SrvRoom *room,
struct GNUNET_ShortHashCode random_id;
generate_free_member_id (&random_id, member_store->members);
- send_room_message(room, element->handle, create_message_id(&random_id));
+ send_srv_room_message(room, element->handle, create_message_id(&random_id));
}
}
void
-rebuild_room_basement_structure (struct GNUNET_MESSENGER_SrvRoom *room)
+rebuild_srv_room_basement_structure (struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
@@ -961,8 +961,8 @@ rebuild_room_basement_structure (struct GNUNET_MESSENGER_SrvRoom *room)
static void
handle_room_messages (struct GNUNET_MESSENGER_SrvRoom *room)
{
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(room);
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
while (room->handling.head)
{
@@ -996,7 +996,7 @@ update_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
{
GNUNET_assert((room) && (message) && (hash));
- struct GNUNET_MESSENGER_OperationStore *operation_store = get_room_operation_store(room);
+ struct GNUNET_MESSENGER_OperationStore *operation_store = get_srv_room_operation_store(room);
const int requested = (GNUNET_MESSENGER_OP_REQUEST == get_store_operation_type(operation_store, hash)?
GNUNET_YES : GNUNET_NO
@@ -1005,11 +1005,11 @@ update_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
if (GNUNET_YES == requested)
cancel_store_operation(operation_store, hash);
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(room);
const struct GNUNET_MESSENGER_Message *old_message = get_store_message (message_store, hash);
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Handle a message in room (%s).\n", GNUNET_h2s (get_room_key(room)));
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Handle a message in room (%s).\n", GNUNET_h2s (get_srv_room_key(room)));
if ((old_message) || (GNUNET_OK != put_store_message (message_store, hash, message)))
{
@@ -1087,7 +1087,7 @@ callback_room_handle_message (struct GNUNET_MESSENGER_SrvRoom *room,
const struct GNUNET_MESSENGER_Message *message,
const struct GNUNET_HashCode *hash)
{
- struct GNUNET_MESSENGER_MemberStore *member_store = get_room_member_store(room);
+ struct GNUNET_MESSENGER_MemberStore *member_store = get_srv_room_member_store(room);
struct GNUNET_MESSENGER_Member *member = get_store_member_of(member_store, message);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Callback for message (%s)\n", GNUNET_h2s (hash));
@@ -1169,11 +1169,11 @@ get_room_data_subdir (struct GNUNET_MESSENGER_SrvRoom *room,
{
GNUNET_assert((room) && (dir));
- GNUNET_asprintf (dir, "%s%s%c%s%c", room->service->dir, "rooms", DIR_SEPARATOR, GNUNET_h2s (get_room_key(room)), DIR_SEPARATOR);
+ GNUNET_asprintf (dir, "%s%s%c%s%c", room->service->dir, "rooms", DIR_SEPARATOR, GNUNET_h2s (get_srv_room_key(room)), DIR_SEPARATOR);
}
void
-load_room (struct GNUNET_MESSENGER_SrvRoom *room)
+load_srv_room (struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
@@ -1182,9 +1182,9 @@ load_room (struct GNUNET_MESSENGER_SrvRoom *room)
if (GNUNET_YES == GNUNET_DISK_directory_test (room_dir, GNUNET_YES))
{
- load_member_store (get_room_member_store(room), room_dir);
- load_message_store (get_room_message_store(room), room_dir);
- load_operation_store(get_room_operation_store(room), room_dir);
+ load_member_store (get_srv_room_member_store(room), room_dir);
+ load_message_store (get_srv_room_message_store(room), room_dir);
+ load_operation_store(get_srv_room_operation_store(room), room_dir);
char *basement_file;
GNUNET_asprintf (&basement_file, "%s%s", room_dir, "basement.list");
@@ -1199,7 +1199,7 @@ load_room (struct GNUNET_MESSENGER_SrvRoom *room)
}
void
-save_room (struct GNUNET_MESSENGER_SrvRoom *room)
+save_srv_room (struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
@@ -1209,9 +1209,9 @@ save_room (struct GNUNET_MESSENGER_SrvRoom *room)
if ((GNUNET_YES == GNUNET_DISK_directory_test (room_dir, GNUNET_NO)) ||
(GNUNET_OK == GNUNET_DISK_directory_create (room_dir)))
{
- save_member_store(get_room_member_store(room), room_dir);
- save_message_store (get_room_message_store(room), room_dir);
- save_operation_store(get_room_operation_store(room), room_dir);
+ save_member_store(get_srv_room_member_store(room), room_dir);
+ save_message_store (get_srv_room_message_store(room), room_dir);
+ save_operation_store(get_srv_room_operation_store(room), room_dir);
char *basement_file;
GNUNET_asprintf (&basement_file, "%s%s", room_dir, "basement.list");
@@ -1226,7 +1226,7 @@ save_room (struct GNUNET_MESSENGER_SrvRoom *room)
}
void
-remove_room (struct GNUNET_MESSENGER_SrvRoom *room)
+remove_srv_room (struct GNUNET_MESSENGER_SrvRoom *room)
{
GNUNET_assert(room);
diff --git a/src/messenger/gnunet-service-messenger_room.h b/src/messenger/gnunet-service-messenger_room.h
index 58edc4121..a6ae45275 100644
--- a/src/messenger/gnunet-service-messenger_room.h
+++ b/src/messenger/gnunet-service-messenger_room.h
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -89,7 +89,7 @@ struct GNUNET_MESSENGER_SrvRoom
* @return New room
*/
struct GNUNET_MESSENGER_SrvRoom*
-create_room (struct GNUNET_MESSENGER_SrvHandle *handle,
+create_srv_room (struct GNUNET_MESSENGER_SrvHandle *handle,
const struct GNUNET_HashCode *key);
/**
@@ -102,7 +102,7 @@ create_room (struct GNUNET_MESSENGER_SrvHandle *handle,
* @param[in] deletion Flag to indicate context of destruction
*/
void
-destroy_room (struct GNUNET_MESSENGER_SrvRoom *room,
+destroy_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
int deletion);
/**
@@ -112,7 +112,7 @@ destroy_room (struct GNUNET_MESSENGER_SrvRoom *room,
* @return Member store
*/
struct GNUNET_MESSENGER_MemberStore*
-get_room_member_store (struct GNUNET_MESSENGER_SrvRoom *room);
+get_srv_room_member_store (struct GNUNET_MESSENGER_SrvRoom *room);
/**
* Returns the used message store of a given <i>room</i>.
@@ -121,7 +121,7 @@ get_room_member_store (struct GNUNET_MESSENGER_SrvRoom *room);
* @return Message store
*/
struct GNUNET_MESSENGER_MessageStore*
-get_room_message_store (struct GNUNET_MESSENGER_SrvRoom *room);
+get_srv_room_message_store (struct GNUNET_MESSENGER_SrvRoom *room);
/**
* Returns the used operation store of a given <i>room</i>.
@@ -130,7 +130,7 @@ get_room_message_store (struct GNUNET_MESSENGER_SrvRoom *room);
* @return Operation store
*/
struct GNUNET_MESSENGER_OperationStore*
-get_room_operation_store (struct GNUNET_MESSENGER_SrvRoom *room);
+get_srv_room_operation_store (struct GNUNET_MESSENGER_SrvRoom *room);
/**
* Tries to open a <i>room</i> for a given <i>handle</i>. If the room has already been opened, the handle
@@ -145,8 +145,8 @@ get_room_operation_store (struct GNUNET_MESSENGER_SrvRoom *room);
* @return #GNUNET_YES on success, #GNUNET_NO on failure.
*/
int
-open_room (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvHandle *handle);
+open_srv_room (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvHandle *handle);
/**
* Connects a tunnel to a hosting peer of a <i>room</i> through a so called <i>door</i> which is represented by
@@ -159,9 +159,9 @@ open_room (struct GNUNET_MESSENGER_SrvRoom *room,
* @return #GNUNET_YES on success, #GNUNET_NO on failure.
*/
int
-enter_room_at (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvHandle *handle,
- const struct GNUNET_PeerIdentity *door);
+enter_srv_room_at (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvHandle *handle,
+ const struct GNUNET_PeerIdentity *door);
/**
* Packs a <i>message</i> depending on the selected <i>mode</i> into a newly allocated envelope. It will set the
@@ -181,11 +181,11 @@ enter_room_at (struct GNUNET_MESSENGER_SrvRoom *room,
* @return New envelope or NULL
*/
struct GNUNET_MQ_Envelope*
-pack_room_message (const struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_MESSENGER_SrvHandle *handle,
- struct GNUNET_MESSENGER_Message *message,
- struct GNUNET_HashCode *hash,
- int mode);
+pack_srv_room_message (const struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_MESSENGER_SrvHandle *handle,
+ struct GNUNET_MESSENGER_Message *message,
+ struct GNUNET_HashCode *hash,
+ int mode);
/**
* Sends a <i>message</i> from a given <i>handle</i> into a <i>room</i>. The <i>hash</i> parameter will be
@@ -203,9 +203,9 @@ pack_room_message (const struct GNUNET_MESSENGER_SrvRoom *room,
* @return #GNUNET_YES on success, #GNUNET_NO or #GNUNET_SYSERR otherwise.
*/
int
-send_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvHandle *handle,
- struct GNUNET_MESSENGER_Message *message);
+send_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvHandle *handle,
+ struct GNUNET_MESSENGER_Message *message);
/**
* Forwards a <i>message</i> with a given <i>hash</i> to a specific <i>tunnel</i> inside of a <i>room</i>.
@@ -216,10 +216,10 @@ send_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
* @param[in] hash Hash of message
*/
void
-forward_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvTunnel *tunnel,
- struct GNUNET_MESSENGER_Message *message,
- const struct GNUNET_HashCode *hash);
+forward_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvTunnel *tunnel,
+ struct GNUNET_MESSENGER_Message *message,
+ const struct GNUNET_HashCode *hash);
/**
* Checks the current state of opening a given <i>room</i> from this peer and re-publishes it
@@ -230,8 +230,8 @@ forward_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
* @param[in/out] tunnel Tunnel
*/
void
-check_room_peer_status (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvTunnel *tunnel);
+check_srv_room_peer_status (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvTunnel *tunnel);
/**
* Reduces all current forks inside of the message history of a <i>room</i> to one remaining last message
@@ -241,8 +241,8 @@ check_room_peer_status (struct GNUNET_MESSENGER_SrvRoom *room,
* @param[in/out] handle Handle
*/
void
-merge_room_last_messages (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_SrvHandle *handle);
+merge_srv_room_last_messages (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_SrvHandle *handle);
/**
* Deletes a message from the <i>room</i> with a given <i>hash</i> in a specific <i>delay</i> if
@@ -255,10 +255,10 @@ merge_room_last_messages (struct GNUNET_MESSENGER_SrvRoom *room,
* @return #GNUNET_YES on success, #GNUNET_NO if permission gets denied, #GNUNET_SYSERR on operation failure
*/
int
-delete_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
- struct GNUNET_MESSENGER_MemberSession *session,
- const struct GNUNET_HashCode *hash,
- const struct GNUNET_TIME_Relative delay);
+delete_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
+ struct GNUNET_MESSENGER_MemberSession *session,
+ const struct GNUNET_HashCode *hash,
+ const struct GNUNET_TIME_Relative delay);
/**
* Returns the CADET handle from a rooms service.
@@ -267,7 +267,7 @@ delete_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
* @return CADET handle
*/
struct GNUNET_CADET_Handle*
-get_room_cadet (struct GNUNET_MESSENGER_SrvRoom *room);
+get_srv_room_cadet (struct GNUNET_MESSENGER_SrvRoom *room);
/**
* Returns the shared secret you need to access a <i>room</i>.
@@ -276,7 +276,7 @@ get_room_cadet (struct GNUNET_MESSENGER_SrvRoom *room);
* @return Shared secret
*/
const struct GNUNET_HashCode*
-get_room_key (const struct GNUNET_MESSENGER_SrvRoom *room);
+get_srv_room_key (const struct GNUNET_MESSENGER_SrvRoom *room);
/**
* Returns a tunnel inside of a <i>room</i> leading towards a given <i>peer</i> if such a tunnel exists,
@@ -287,8 +287,8 @@ get_room_key (const struct GNUNET_MESSENGER_SrvRoom *room);
* @return Tunnel or NULL
*/
const struct GNUNET_MESSENGER_SrvTunnel*
-get_room_tunnel (const struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_PeerIdentity *peer);
+get_srv_room_tunnel (const struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_PeerIdentity *peer);
/**
* Method called whenever a <i>message</i> is found during a request in a <i>room</i>.
@@ -321,11 +321,11 @@ typedef void (GNUNET_MESSENGER_MessageRequestCallback) (
* @return #GNUNET_YES if the request could be processed, otherwise #GNUNET_NO
*/
int
-request_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_HashCode *hash,
- const struct GNUNET_MESSENGER_MemberSession *session,
- GNUNET_MESSENGER_MessageRequestCallback callback,
- void* cls);
+request_srv_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_HashCode *hash,
+ const struct GNUNET_MESSENGER_MemberSession *session,
+ GNUNET_MESSENGER_MessageRequestCallback callback,
+ void* cls);
/**
* Checks for potential collisions with member ids and solves them changing active handles ids if they
@@ -337,10 +337,10 @@ request_room_message (struct GNUNET_MESSENGER_SrvRoom *room,
* @param[in] timestamp Timestamp
*/
void
-solve_room_member_collisions (struct GNUNET_MESSENGER_SrvRoom *room,
- const struct GNUNET_IDENTITY_PublicKey *public_key,
- const struct GNUNET_ShortHashCode *member_id,
- struct GNUNET_TIME_Absolute timestamp);
+solve_srv_room_member_collisions (struct GNUNET_MESSENGER_SrvRoom *room,
+ const struct GNUNET_IDENTITY_PublicKey *public_key,
+ const struct GNUNET_ShortHashCode *member_id,
+ struct GNUNET_TIME_Absolute timestamp);
/**
* Rebuilds the decentralized structure for a <i>room</i> by ensuring all required connections are made
@@ -349,7 +349,7 @@ solve_room_member_collisions (struct GNUNET_MESSENGER_SrvRoom *room,
* @param[in/out] room Room
*/
void
-rebuild_room_basement_structure (struct GNUNET_MESSENGER_SrvRoom *room);
+rebuild_srv_room_basement_structure (struct GNUNET_MESSENGER_SrvRoom *room);
/**
* Loads the local configuration for a given <i>room</i> of a service which contains the last messages hash
@@ -358,7 +358,7 @@ rebuild_room_basement_structure (struct GNUNET_MESSENGER_SrvRoom *room);
* @param[out] room Room
*/
void
-load_room (struct GNUNET_MESSENGER_SrvRoom *room);
+load_srv_room (struct GNUNET_MESSENGER_SrvRoom *room);
/**
* Saves the configuration for a given <i>room</i> of a service which contains the last messages hash
@@ -367,7 +367,7 @@ load_room (struct GNUNET_MESSENGER_SrvRoom *room);
* @param[in] room Room
*/
void
-save_room (struct GNUNET_MESSENGER_SrvRoom *room);
+save_srv_room (struct GNUNET_MESSENGER_SrvRoom *room);
/**
* Removes the configuration for a given <i>room</i> of a service.
@@ -375,6 +375,6 @@ save_room (struct GNUNET_MESSENGER_SrvRoom *room);
* @param[in] room Room
*/
void
-remove_room (struct GNUNET_MESSENGER_SrvRoom *room);
+remove_srv_room (struct GNUNET_MESSENGER_SrvRoom *room);
#endif //GNUNET_SERVICE_MESSENGER_ROOM_H
diff --git a/src/messenger/gnunet-service-messenger_service.c b/src/messenger/gnunet-service-messenger_service.c
index 83d7632d8..3d5801b09 100644
--- a/src/messenger/gnunet-service-messenger_service.c
+++ b/src/messenger/gnunet-service-messenger_service.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -94,7 +94,7 @@ iterate_destroy_rooms (void *cls,
void *value)
{
struct GNUNET_MESSENGER_SrvRoom *room = value;
- destroy_room (room, GNUNET_NO);
+ destroy_srv_room (room, GNUNET_NO);
return GNUNET_YES;
}
@@ -159,7 +159,7 @@ add_service_handle (struct GNUNET_MESSENGER_Service *service,
{
GNUNET_assert((service) && (mq));
- struct GNUNET_MESSENGER_SrvHandle *handle = create_handle (service, mq);
+ struct GNUNET_MESSENGER_SrvHandle *handle = create_srv_handle (service, mq);
if (handle)
{
@@ -179,7 +179,7 @@ remove_service_handle (struct GNUNET_MESSENGER_Service *service,
return;
if (GNUNET_YES == remove_list_handle (&(service->handles), handle))
- destroy_handle (handle);
+ destroy_srv_handle (handle);
}
int
@@ -210,17 +210,17 @@ open_service_room (struct GNUNET_MESSENGER_Service *service,
struct GNUNET_MESSENGER_SrvRoom *room = get_service_room (service, key);
if (room)
- return open_room (room, handle);
+ return open_srv_room (room, handle);
- room = create_room (handle, key);
+ room = create_srv_room (handle, key);
- if ((GNUNET_YES == open_room (room, handle)) &&
+ if ((GNUNET_YES == open_srv_room (room, handle)) &&
(GNUNET_OK == GNUNET_CONTAINER_multihashmap_put (service->rooms,
key, room,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST)))
return GNUNET_YES;
- destroy_room (room, GNUNET_YES);
+ destroy_srv_room (room, GNUNET_YES);
return GNUNET_NO;
}
@@ -236,15 +236,15 @@ entry_service_room (struct GNUNET_MESSENGER_Service *service,
if (room)
{
- if (GNUNET_YES == enter_room_at (room, handle, door))
+ if (GNUNET_YES == enter_srv_room_at (room, handle, door))
return GNUNET_YES;
else
return GNUNET_NO;
}
- room = create_room (handle, key);
+ room = create_srv_room (handle, key);
- if ((GNUNET_YES == enter_room_at (room, handle, door)) &&
+ if ((GNUNET_YES == enter_srv_room_at (room, handle, door)) &&
(GNUNET_OK == GNUNET_CONTAINER_multihashmap_put (service->rooms,
key, room,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST)))
@@ -253,7 +253,7 @@ entry_service_room (struct GNUNET_MESSENGER_Service *service,
}
else
{
- destroy_room (room, GNUNET_YES);
+ destroy_srv_room (room, GNUNET_YES);
return GNUNET_NO;
}
@@ -271,9 +271,9 @@ close_service_room (struct GNUNET_MESSENGER_Service *service,
if (!room)
return GNUNET_NO;
- send_room_message (room, handle, create_message_leave ());
+ send_srv_room_message (room, handle, create_message_leave ());
- const struct GNUNET_ShortHashCode *id = get_handle_member_id (handle, key);
+ const struct GNUNET_ShortHashCode *id = get_srv_handle_member_id (handle, key);
GNUNET_assert(id);
@@ -287,7 +287,7 @@ close_service_room (struct GNUNET_MESSENGER_Service *service,
{
if (GNUNET_OK == GNUNET_CONTAINER_multihashmap_remove (service->rooms, key, room))
{
- destroy_room (room, GNUNET_YES);
+ destroy_srv_room (room, GNUNET_YES);
return GNUNET_YES;
}
else
@@ -313,7 +313,7 @@ handle_service_message (struct GNUNET_MESSENGER_Service *service,
while (element)
{
- notify_handle_message (element->handle, room, session, message, hash);
+ notify_srv_handle_message (element->handle, room, session, message, hash);
element = element->next;
}
}
diff --git a/src/messenger/gnunet-service-messenger_tunnel.c b/src/messenger/gnunet-service-messenger_tunnel.c
index 45c10c1af..83973bbbe 100644
--- a/src/messenger/gnunet-service-messenger_tunnel.c
+++ b/src/messenger/gnunet-service-messenger_tunnel.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2020--2021 GNUnet e.V.
+ Copyright (C) 2020--2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -157,13 +157,13 @@ static void
update_tunnel_last_message (struct GNUNET_MESSENGER_SrvTunnel *tunnel,
const struct GNUNET_HashCode *hash)
{
- struct GNUNET_MESSENGER_OperationStore *operation_store = get_room_operation_store(tunnel->room);
+ struct GNUNET_MESSENGER_OperationStore *operation_store = get_srv_room_operation_store(tunnel->room);
const int requested = (GNUNET_MESSENGER_OP_REQUEST == get_store_operation_type(operation_store, hash)?
GNUNET_YES : GNUNET_NO
);
- struct GNUNET_MESSENGER_MessageStore *message_store = get_room_message_store(tunnel->room);
+ struct GNUNET_MESSENGER_MessageStore *message_store = get_srv_room_message_store(tunnel->room);
const struct GNUNET_MESSENGER_Message *message = get_store_message(message_store, hash);
@@ -221,7 +221,7 @@ handle_tunnel_message (void *cls, const struct GNUNET_MessageHeader *header)
if (GNUNET_YES == forward_message)
{
- forward_room_message (tunnel->room, tunnel, &message, &hash);
+ forward_srv_room_message (tunnel->room, tunnel, &message, &hash);
callback_room_handle_message (tunnel->room, NULL, &message, &hash);
}
@@ -241,8 +241,8 @@ connect_tunnel (struct GNUNET_MESSENGER_SrvTunnel *tunnel)
const struct GNUNET_PeerIdentity *door = GNUNET_PEER_resolve2 (tunnel->peer);
- struct GNUNET_CADET_Handle *cadet = get_room_cadet (tunnel->room);
- const struct GNUNET_HashCode *key = get_room_key (tunnel->room);
+ struct GNUNET_CADET_Handle *cadet = get_srv_room_cadet (tunnel->room);
+ const struct GNUNET_HashCode *key = get_srv_room_key (tunnel->room);
struct GNUNET_MQ_MessageHandler handlers[] = { GNUNET_MQ_hd_var_size(tunnel_message, GNUNET_MESSAGE_TYPE_CADET_CLI,
struct GNUNET_MessageHeader, NULL),
@@ -323,7 +323,7 @@ send_tunnel_message (struct GNUNET_MESSENGER_SrvTunnel *tunnel,
return GNUNET_NO;
struct GNUNET_HashCode hash;
- struct GNUNET_MQ_Envelope *env = pack_room_message (
+ struct GNUNET_MQ_Envelope *env = pack_srv_room_message (
tunnel->room, (struct GNUNET_MESSENGER_SrvHandle*) handle,
message, &hash, GNUNET_MESSENGER_PACK_MODE_ENVELOPE
);
diff --git a/src/reclaim/Makefile.am b/src/reclaim/Makefile.am
index a8300d6af..2f3df3456 100644
--- a/src/reclaim/Makefile.am
+++ b/src/reclaim/Makefile.am
@@ -10,9 +10,12 @@ endif
REST_PLUGIN = \
- libgnunet_plugin_rest_openid_connect.la \
libgnunet_plugin_rest_reclaim.la
+if HAVE_JOSE
+REST_PLUGIN += libgnunet_plugin_rest_openid_connect.la
+endif
+
CREDENTIAL_PLUGIN = \
libgnunet_plugin_reclaim_credential_jwt.la
@@ -66,7 +69,7 @@ libgnunet_plugin_rest_reclaim_la_LDFLAGS = \
$(GN_PLUGIN_LDFLAGS)
libgnunet_plugin_rest_reclaim_la_CFLAGS = $(MHD_CFLAGS) $(AM_CFLAGS)
-
+if HAVE_JOSE
libgnunet_plugin_rest_openid_connect_la_SOURCES = \
plugin_rest_openid_connect.c \
oidc_helper.h \
@@ -79,11 +82,12 @@ libgnunet_plugin_rest_openid_connect_la_LIBADD = \
$(top_builddir)/src/gns/libgnunetgns.la \
$(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
$(top_builddir)/src/util/libgnunetutil.la $(XLIBS) \
- $(LTLIBINTL) -ljansson $(MHD_LIBS) \
+ $(LTLIBINTL) -ljansson -ljose $(MHD_LIBS) \
$(LIBGCRYPT_LIBS)
libgnunet_plugin_rest_openid_connect_la_LDFLAGS = \
$(GN_PLUGIN_LDFLAGS)
libgnunet_plugin_rest_openid_connect_la_CFLAGS = $(MHD_CFLAGS) $(AM_CFLAGS)
+endif
if HAVE_PABC
libgnunet_plugin_rest_pabc_la_SOURCES = \
diff --git a/src/reclaim/oidc_helper.c b/src/reclaim/oidc_helper.c
index 9237902ce..cfa71b26c 100644
--- a/src/reclaim/oidc_helper.c
+++ b/src/reclaim/oidc_helper.c
@@ -22,10 +22,12 @@
* @file reclaim/oidc_helper.c
* @brief helper library for OIDC related functions
* @author Martin Schanzenbach
+ * @author Tristan Schwieren
*/
#include "platform.h"
#include <inttypes.h>
#include <jansson.h>
+#include <jose/jose.h>
#include "gnunet_util_lib.h"
#include "gnunet_reclaim_lib.h"
#include "gnunet_reclaim_service.h"
@@ -115,13 +117,13 @@ is_claim_in_address_scope (const char *claim)
static char *
-create_jwt_header (void)
+create_jwt_hmac_header (void)
{
json_t *root;
char *json_str;
root = json_object ();
- json_object_set_new (root, JWT_ALG, json_string (JWT_ALG_VALUE));
+ json_object_set_new (root, JWT_ALG, json_string (JWT_ALG_VALUE_HMAC));
json_object_set_new (root, JWT_TYP, json_string (JWT_TYP_VALUE));
json_str = json_dumps (root, JSON_INDENT (0) | JSON_COMPACT);
@@ -356,40 +358,22 @@ OIDC_generate_userinfo (const struct GNUNET_IDENTITY_PublicKey *sub_key,
}
-/**
- * Create a JWT from attributes
- *
- * @param aud_key the public of the audience
- * @param sub_key the public key of the subject
- * @param attrs the attribute list
- * @param presentations credential presentation list (may be empty)
- * @param expiration_time the validity of the token
- * @param secret_key the key used to sign the JWT
- * @return a new base64-encoded JWT string.
- */
char *
-OIDC_generate_id_token (const struct GNUNET_IDENTITY_PublicKey *aud_key,
+generate_id_token_body (const struct GNUNET_IDENTITY_PublicKey *aud_key,
const struct GNUNET_IDENTITY_PublicKey *sub_key,
const struct GNUNET_RECLAIM_AttributeList *attrs,
const struct
GNUNET_RECLAIM_PresentationList *presentations,
const struct GNUNET_TIME_Relative *expiration_time,
- const char *nonce,
- const char *secret_key)
+ const char *nonce)
{
struct GNUNET_HashCode signature;
struct GNUNET_TIME_Absolute exp_time;
struct GNUNET_TIME_Absolute time_now;
+ json_t *body;
char *audience;
char *subject;
- char *header;
char *body_str;
- char *result;
- char *header_base64;
- char *body_base64;
- char *signature_target;
- char *signature_base64;
- json_t *body;
body = generate_userinfo_json (sub_key,
attrs,
@@ -409,7 +393,6 @@ OIDC_generate_id_token (const struct GNUNET_IDENTITY_PublicKey *aud_key,
GNUNET_STRINGS_data_to_string_alloc (aud_key,
sizeof(struct
GNUNET_IDENTITY_PublicKey));
- header = create_jwt_header ();
// aud REQUIRED public key client_id must be there
json_object_set_new (body, "aud", json_string (audience));
@@ -429,19 +412,132 @@ OIDC_generate_id_token (const struct GNUNET_IDENTITY_PublicKey *aud_key,
if (NULL != nonce)
json_object_set_new (body, "nonce", json_string (nonce));
- body_str = json_dumps (body, JSON_INDENT (0) | JSON_COMPACT);
- json_decref (body);
+ // Error checking
+ body_str = json_dumps (body, JSON_INDENT (2) | JSON_COMPACT);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"ID-Token: %s\n", body_str);
+ json_decref (body);
+ GNUNET_free (subject);
+ GNUNET_free (audience);
+
+ return body_str;
+}
+
+
+/**
+ * Create a JWT using RSA256 algorithm from attributes
+ *
+ * @param aud_key the public of the audience
+ * @param sub_key the public key of the subject
+ * @param attrs the attribute list
+ * @param presentations credential presentation list (may be empty)
+ * @param expiration_time the validity of the token
+ * @param secret_rsa_key the key used to sign the JWT
+ * @return a new base64-encoded JWT string.
+ */
+char *
+OIDC_generate_id_token_rsa (const struct GNUNET_IDENTITY_PublicKey *aud_key,
+ const struct GNUNET_IDENTITY_PublicKey *sub_key,
+ const struct GNUNET_RECLAIM_AttributeList *attrs,
+ const struct
+ GNUNET_RECLAIM_PresentationList *presentations,
+ const struct GNUNET_TIME_Relative *expiration_time,
+ const char *nonce,
+ const json_t *secret_rsa_key)
+{
+ json_t *jws;
+ char *body_str;
+ char *result;
+
+ // Generate the body of the JSON Web Signature
+ body_str = generate_id_token_body (aud_key,
+ sub_key,
+ attrs,
+ presentations,
+ expiration_time,
+ nonce);
+
+ if (! body_str)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Body for the JWS could not be generated\n");
+ }
+
+ // Creating the JSON Web Signature.
+ jws = json_pack ("{s:o}", "payload",
+ jose_b64_enc (body_str, strlen (body_str)));
+
+ if (! jose_jws_sig (NULL, jws, NULL, secret_rsa_key))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Signature generation failed\n");
+ }
+
+ // Encoding JSON as compact JSON Web Signature
+ GNUNET_asprintf (&result, "%s.%s.%s",
+ json_string_value (json_object_get (jws, "protected")),
+ json_string_value (json_object_get (jws, "payload")),
+ json_string_value (json_object_get (jws, "signature")) );
+
+ json_decref(jws);
+ GNUNET_free(body_str);
+ return result;
+}
+
+/**
+ * Create a JWT using HMAC (HS256) from attributes
+ *
+ * @param aud_key the public of the audience
+ * @param sub_key the public key of the subject
+ * @param attrs the attribute list
+ * @param presentations credential presentation list (may be empty)
+ * @param expiration_time the validity of the token
+ * @param secret_key the key used to sign the JWT
+ * @return a new base64-encoded JWT string.
+ */
+char *
+OIDC_generate_id_token_hmac (const struct GNUNET_IDENTITY_PublicKey *aud_key,
+ const struct GNUNET_IDENTITY_PublicKey *sub_key,
+ const struct GNUNET_RECLAIM_AttributeList *attrs,
+ const struct
+ GNUNET_RECLAIM_PresentationList *presentations,
+ const struct GNUNET_TIME_Relative *expiration_time,
+ const char *nonce,
+ const char *secret_key)
+{
+ struct GNUNET_HashCode signature;
+ struct GNUNET_TIME_Absolute exp_time;
+ struct GNUNET_TIME_Absolute time_now;
+ char *header;
+ char *header_base64;
+ char *body_str;
+ char *body_base64;
+ char *signature_target;
+ char *signature_base64;
+ char *result;
+
+ // Generate and encode Header
+ header = create_jwt_hmac_header ();
GNUNET_STRINGS_base64url_encode (header, strlen (header), &header_base64);
fix_base64 (header_base64);
+ // Generate and encode the body of the JSON Web Signature
+ body_str = generate_id_token_body (aud_key,
+ sub_key,
+ attrs,
+ presentations,
+ expiration_time,
+ nonce);
+
+ if (! body_str)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Body for the JWS could not be generated\n");
+ }
+
GNUNET_STRINGS_base64url_encode (body_str, strlen (body_str), &body_base64);
fix_base64 (body_base64);
- GNUNET_free (subject);
- GNUNET_free (audience);
-
/**
* Creating the JWT signature. This might not be
* standards compliant, check.
@@ -463,12 +559,12 @@ OIDC_generate_id_token (const struct GNUNET_IDENTITY_PublicKey *aud_key,
body_base64,
signature_base64);
- GNUNET_free (signature_target);
GNUNET_free (header);
+ GNUNET_free (header_base64);
GNUNET_free (body_str);
- GNUNET_free (signature_base64);
GNUNET_free (body_base64);
- GNUNET_free (header_base64);
+ GNUNET_free (signature_target);
+ GNUNET_free (signature_base64);
return result;
}
diff --git a/src/reclaim/oidc_helper.h b/src/reclaim/oidc_helper.h
index 2a8b7bbae..b134c71ad 100644
--- a/src/reclaim/oidc_helper.h
+++ b/src/reclaim/oidc_helper.h
@@ -28,15 +28,13 @@
#define JWT_H
#define JWT_ALG "alg"
-
-/* Use 512bit HMAC */
-#define JWT_ALG_VALUE "HS512"
-
#define JWT_TYP "typ"
-
#define JWT_TYP_VALUE "jwt"
-#define SERVER_ADDRESS "https://api.reclaim"
+#define JWT_ALG_VALUE_HMAC "HS512"
+#define JWT_ALG_VALUE_RSA "RS256"
+
+#define SERVER_ADDRESS "http://localhost:7776"
enum OIDC_VerificationOptions
{
@@ -52,7 +50,28 @@ enum OIDC_VerificationOptions
};
/**
- * Create a JWT from attributes
+ * Create a JWT using RSA256 from attributes
+ *
+ * @param aud_key the public of the audience
+ * @param sub_key the public key of the subject
+ * @param attrs the attribute list
+ * @param presentations credential presentation list (may be empty)
+ * @param expiration_time the validity of the token
+ * @param secret_key the key used to sign the JWT
+ * @return a new base64-encoded JWT string.
+ */
+char *
+OIDC_generate_id_token_rsa (const struct GNUNET_IDENTITY_PublicKey *aud_key,
+ const struct GNUNET_IDENTITY_PublicKey *sub_key,
+ const struct GNUNET_RECLAIM_AttributeList *attrs,
+ const struct
+ GNUNET_RECLAIM_PresentationList *presentations,
+ const struct GNUNET_TIME_Relative *expiration_time,
+ const char *nonce,
+ const json_t *secret_rsa_key);
+
+/**
+ * Create a JWT using HMAC (HS256) from attributes
*
* @param aud_key the public of the audience
* @param sub_key the public key of the subject
@@ -63,14 +82,14 @@ enum OIDC_VerificationOptions
* @return a new base64-encoded JWT string.
*/
char*
-OIDC_generate_id_token (const struct GNUNET_IDENTITY_PublicKey *aud_key,
- const struct GNUNET_IDENTITY_PublicKey *sub_key,
- const struct GNUNET_RECLAIM_AttributeList *attrs,
- const struct
- GNUNET_RECLAIM_PresentationList *presentations,
- const struct GNUNET_TIME_Relative *expiration_time,
- const char *nonce,
- const char *secret_key);
+OIDC_generate_id_token_hmac (const struct GNUNET_IDENTITY_PublicKey *aud_key,
+ const struct GNUNET_IDENTITY_PublicKey *sub_key,
+ const struct GNUNET_RECLAIM_AttributeList *attrs,
+ const struct
+ GNUNET_RECLAIM_PresentationList *presentations,
+ const struct GNUNET_TIME_Relative *expiration_time,
+ const char *nonce,
+ const char *secret_key);
/**
* Builds an OIDC authorization code including
diff --git a/src/reclaim/plugin_rest_openid_connect.c b/src/reclaim/plugin_rest_openid_connect.c
index 1c00abcbd..8eb30aded 100644
--- a/src/reclaim/plugin_rest_openid_connect.c
+++ b/src/reclaim/plugin_rest_openid_connect.c
@@ -20,6 +20,7 @@
/**
* @author Martin Schanzenbach
* @author Philippe Buschmann
+ * @author Tristan Schwieren
* @file identity/plugin_rest_openid_connect.c
* @brief GNUnet Namestore REST plugin
*
@@ -27,6 +28,7 @@
#include "platform.h"
#include <inttypes.h>
#include <jansson.h>
+#include <jose/jose.h>
#include "gnunet_buffer_lib.h"
#include "gnunet_strings_lib.h"
@@ -63,6 +65,11 @@
#define GNUNET_REST_API_NS_TOKEN "/openid/token"
/**
+ * JSON Web Keys endpoint
+ */
+#define GNUNET_REST_API_JWKS "/jwks.json"
+
+/**
* UserInfo endpoint
*/
#define GNUNET_REST_API_NS_USERINFO "/openid/userinfo"
@@ -228,6 +235,11 @@
#define OIDC_ERROR_KEY_ACCESS_DENIED "access_denied"
/**
+ * OIDC key store file name
+ */
+#define OIDC_JWK_RSA_FILENAME "jwk_rsa.json"
+
+/**
* How long to wait for a consume in userinfo endpoint
*/
#define CONSUME_TIMEOUT GNUNET_TIME_relative_multiply ( \
@@ -295,6 +307,11 @@ static struct GNUNET_GNS_Handle *gns_handle;
static struct GNUNET_RECLAIM_Handle *idp;
/**
+ * Timeout for consume call on userinfo
+ */
+static struct GNUNET_TIME_Relative consume_timeout;
+
+/**
* @brief struct returned by the initialization function of the plugin
*/
struct Plugin
@@ -303,6 +320,11 @@ struct Plugin
};
/**
+ * @brief The RSA key used by the oidc enpoint
+ */
+json_t *oidc_jwk;
+
+/**
* OIDC needed variables
*/
struct OIDC_Variables
@@ -859,6 +881,118 @@ cookie_identity_interpretation (struct RequestHandle *handle)
/**
+ * @brief Read the the JSON Web Key in the given file and return it.
+ * Return NULL and emit warning if JSON can not be decoded or the key is
+ * invalid
+ *
+ * @param filename the file to read the JWK from
+ * @return json_t* the reed JWK
+ */
+json_t *
+read_jwk_from_file (const char *filename)
+{
+ json_t *jwk;
+ json_error_t error;
+
+ jwk = json_load_file (filename, JSON_DECODE_ANY, &error);
+
+ if (! jwk)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ ("Could not read OIDC RSA key from config file; %s\n"),
+ error.text);
+ }
+
+ return jwk;
+}
+
+/**
+ * @brief Write the JWK to file. If unsuccessful emit warning
+ *
+ * @param filename the name of the file the JWK is writen to
+ * @param jwk the JWK that is going to be written
+ * @return int Return GNUNET_OK if write is sucessfull
+ */
+static int
+write_jwk_to_file (const char *filename,
+ json_t *jwk)
+{
+ if (json_dump_file (jwk, filename, JSON_INDENT (2)))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ ("Could not write OIDC RSA key to file %s\n"),
+ filename);
+ return GNUNET_ERROR_TYPE_WARNING;
+ }
+ else
+ return GNUNET_OK;
+}
+
+/**
+ * @brief Generate a new RSA JSON Web Key
+ *
+ * @return json_t* the generated JWK
+ */
+json_t *
+generate_jwk ()
+{
+ json_t *jwk;
+ jwk = json_pack ("{s:s,s:i}", "kty", "RSA", "bits", 2048);
+ jose_jwk_gen (NULL, jwk);
+ json_incref (jwk);
+ return jwk;
+}
+
+/**
+ * Return the path to the oidc directory path
+ *
+ * @param cls the RequestHandle
+ */
+char *
+get_oidc_dir_path (void *cls)
+{
+ char *oidc_directory;
+ struct RequestHandle *handle = cls;
+
+ // Read OIDC directory from config
+ if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg,
+ "reclaim-rest-plugin",
+ "oidc_dir",
+ &oidc_directory))
+ {
+ // Could not read Config file
+ handle->emsg = GNUNET_strdup (OIDC_ERROR_KEY_SERVER_ERROR);
+ handle->edesc = GNUNET_strdup ("gnunet configuration failed");
+ handle->response_code = MHD_HTTP_INTERNAL_SERVER_ERROR;
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
+ return NULL;
+ }
+
+ return oidc_directory;
+}
+
+/**
+ * Return the path to the RSA JWK key file
+ *
+ * @param cls the RequestHandle
+ */
+char *
+get_oidc_jwk_path (void *cls)
+{
+ char *oidc_directory;
+ char *oidc_jwk_path;
+
+ oidc_directory = get_oidc_dir_path (cls);
+
+ // Create path to file
+ GNUNET_asprintf (&oidc_jwk_path, "%s/%s", oidc_directory,
+ OIDC_JWK_RSA_FILENAME);
+
+ return oidc_jwk_path;
+}
+
+
+/**
* Redirects to login page stored in configuration file
*/
static void
@@ -1954,7 +2088,7 @@ check_authorization (struct RequestHandle *handle,
// check client password
if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg,
"reclaim-rest-plugin",
- "OIDC_CLIENT_SECRET",
+ "OIDC_CLIENT_HMAC_SECRET",
&expected_pass))
{
if (0 != strcmp (expected_pass, received_cpw))
@@ -2047,9 +2181,14 @@ token_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
char *json_response;
char *id_token;
char *access_token;
+ char *jwa;
char *jwt_secret;
char *nonce = NULL;
char *code_verifier;
+ json_t *oidc_jwk;
+ char *oidc_jwk_path;
+ char *oidc_directory;
+ char *tmp_at;
/*
* Check Authorization
@@ -2156,43 +2295,110 @@ token_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
return;
}
-
- // TODO OPTIONAL acr,amr,azp
+ // Check if HMAC or RSA should be used
if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg,
"reclaim-rest-plugin",
- "jwt_secret",
- &jwt_secret))
+ "oidc_json_web_algorithm",
+ &jwa))
{
- handle->emsg = GNUNET_strdup (OIDC_ERROR_KEY_INVALID_REQUEST);
- handle->edesc = GNUNET_strdup ("No signing secret configured!");
- handle->response_code = MHD_HTTP_INTERNAL_SERVER_ERROR;
- GNUNET_free (code);
- GNUNET_RECLAIM_attribute_list_destroy (cl);
- GNUNET_RECLAIM_presentation_list_destroy (pl);
- if (NULL != nonce)
- GNUNET_free (nonce);
- GNUNET_SCHEDULER_add_now (&do_error, handle);
- return;
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Could not read OIDC JSON Web Algorithm config attribute."
+ "Defaulting to RS256.");
+ jwa = JWT_ALG_VALUE_RSA;
+ }
+
+ if ( ! strcmp (jwa, JWT_ALG_VALUE_RSA))
+ {
+ // Replace for now
+ oidc_jwk_path = get_oidc_jwk_path (cls);
+ oidc_jwk = read_jwk_from_file (oidc_jwk_path);
+
+ // Check if secret JWK exists
+ if (! oidc_jwk)
+ {
+ // Generate and save a new key
+ oidc_jwk = generate_jwk ();
+ oidc_directory = get_oidc_dir_path (cls);
+
+ // Create new oidc directory
+ if (GNUNET_OK != GNUNET_DISK_directory_create (oidc_directory))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ ("Failed to create directory `%s' for storing oidc data\n"),
+ oidc_directory);
+ }
+ else
+ {
+ write_jwk_to_file (oidc_jwk_path, oidc_jwk);
+ }
+ }
+
+ // Generate oidc token
+ id_token = OIDC_generate_id_token_rsa (&ticket.audience,
+ &ticket.identity,
+ cl,
+ pl,
+ &expiration_time,
+ (NULL != nonce) ? nonce : NULL,
+ oidc_jwk);
+ }
+ else if ( ! strcmp (jwa, JWT_ALG_VALUE_HMAC))
+ {
+ // TODO OPTIONAL acr,amr,azp
+ if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg,
+ "reclaim-rest-plugin",
+ "jwt_secret",
+ &jwt_secret))
+ {
+ handle->emsg = GNUNET_strdup (OIDC_ERROR_KEY_INVALID_REQUEST);
+ handle->edesc = GNUNET_strdup ("No signing secret configured!");
+ handle->response_code = MHD_HTTP_INTERNAL_SERVER_ERROR;
+ GNUNET_free (code);
+ GNUNET_RECLAIM_attribute_list_destroy (cl);
+ GNUNET_RECLAIM_presentation_list_destroy (pl);
+ if (NULL != nonce)
+ GNUNET_free (nonce);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
+ return;
+ }
+
+ id_token = OIDC_generate_id_token_hmac (&ticket.audience,
+ &ticket.identity,
+ cl,
+ pl,
+ &expiration_time,
+ (NULL != nonce) ? nonce : NULL,
+ jwt_secret);
+
+ GNUNET_free (jwt_secret);
+ }
+ else
+ {
+ // TODO: OPTION NOT FOUND ERROR
}
- id_token = OIDC_generate_id_token (&ticket.audience,
- &ticket.identity,
- cl,
- pl,
- &expiration_time,
- (NULL != nonce) ? nonce : NULL,
- jwt_secret);
- GNUNET_free (jwt_secret);
+
if (NULL != nonce)
GNUNET_free (nonce);
access_token = OIDC_access_token_new (&ticket);
- /* Store mapping from access token to code so we can later
- * fall back on the provided attributes in userinfo
+ /**
+ * Store mapping from access token to code so we can later
+ * fall back on the provided attributes in userinfo one time.
*/
GNUNET_CRYPTO_hash (access_token,
strlen (access_token),
&cache_key);
- char *tmp_at = GNUNET_CONTAINER_multihashmap_get (oidc_code_cache,
- &cache_key);
+ /**
+ * Note to future self: This cache has the following purpose:
+ * Some OIDC plugins call the userendpoint right after receiving an
+ * ID token and access token. There are reasons why this would make sense.
+ * Others not so much.
+ * In any case, in order to smoothen out the user experience upon login
+ * (authorization), we speculatively cache the next
+ * userinfo response in case the actual resolution through reclaim/GNS
+ * takes too long.
+ */
+ tmp_at = GNUNET_CONTAINER_multihashmap_get (oidc_code_cache,
+ &cache_key);
GNUNET_CONTAINER_multihashmap_put (oidc_code_cache,
&cache_key,
code,
@@ -2242,13 +2448,32 @@ consume_ticket (void *cls,
struct GNUNET_RECLAIM_AttributeListEntry *ale;
struct GNUNET_RECLAIM_PresentationListEntry *atle;
struct MHD_Response *resp;
+ struct GNUNET_HashCode cache_key;
char *result_str;
+ char *cached_code;
if (NULL != handle->consume_timeout_op)
GNUNET_SCHEDULER_cancel (handle->consume_timeout_op);
handle->consume_timeout_op = NULL;
handle->idp_op = NULL;
+ /**
+ * We received a reply. In any case clear the cache.
+ */
+ GNUNET_CRYPTO_hash (handle->access_token,
+ strlen (handle->access_token),
+ &cache_key);
+ cached_code = GNUNET_CONTAINER_multihashmap_get (oidc_code_cache,
+ &cache_key);
+ if (NULL != cached_code)
+ {
+ GNUNET_CONTAINER_multihashmap_remove (oidc_code_cache,
+ &cache_key,
+ cached_code);
+ GNUNET_free (cached_code);
+ }
+
+
if (NULL == identity)
{
result_str = OIDC_generate_userinfo (&handle->ticket.identity,
@@ -2301,15 +2526,18 @@ consume_ticket (void *cls,
static void
-consume_timeout (void*cls)
+consume_fail (void *cls)
{
struct RequestHandle *handle = cls;
struct GNUNET_HashCode cache_key;
struct GNUNET_RECLAIM_AttributeList *cl = NULL;
struct GNUNET_RECLAIM_PresentationList *pl = NULL;
struct GNUNET_RECLAIM_Ticket ticket;
+ struct MHD_Response *resp;
char *nonce;
char *cached_code;
+ char *result_str;
+
handle->consume_timeout_op = NULL;
if (NULL != handle->idp_op)
@@ -2331,6 +2559,12 @@ consume_timeout (void*cls)
GNUNET_SCHEDULER_add_now (&do_userinfo_error, handle);
return;
}
+ /**
+ * Remove the cached item
+ */
+ GNUNET_CONTAINER_multihashmap_remove (oidc_code_cache,
+ &cache_key,
+ cached_code);
// decode code
if (GNUNET_OK != OIDC_parse_authz_code (&handle->ticket.audience,
@@ -2348,8 +2582,7 @@ consume_timeout (void*cls)
return;
}
- struct MHD_Response *resp;
- char *result_str;
+ GNUNET_free (cached_code);
result_str = OIDC_generate_userinfo (&handle->ticket.identity,
cl,
@@ -2463,8 +2696,8 @@ userinfo_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
/* If the consume takes too long, we use values from the cache */
handle->access_token = GNUNET_strdup (authorization_access_token);
- handle->consume_timeout_op = GNUNET_SCHEDULER_add_delayed (CONSUME_TIMEOUT,
- &consume_timeout,
+ handle->consume_timeout_op = GNUNET_SCHEDULER_add_delayed (consume_timeout,
+ &consume_fail,
handle);
handle->idp_op = GNUNET_RECLAIM_ticket_consume (idp,
privkey,
@@ -2474,6 +2707,60 @@ userinfo_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
GNUNET_free (authorization);
}
+/**
+ * Responds to /jwks.json
+ *
+ * @param con_handle the connection handle
+ * @param url the url
+ * @param cls the RequestHandle
+ */
+static void
+jwks_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
+ const char *url,
+ void *cls)
+{
+ char *oidc_directory;
+ char *oidc_jwk_path;
+ char *oidc_jwk_pub_str;
+ json_t *oidc_jwk;
+ struct MHD_Response *resp;
+ struct RequestHandle *handle = cls;
+
+ oidc_jwk_path = get_oidc_jwk_path (cls);
+ oidc_jwk = read_jwk_from_file (oidc_jwk_path);
+
+ // Check if secret JWK exists
+ if (! oidc_jwk)
+ {
+ // Generate and save a new key
+ oidc_jwk = generate_jwk ();
+ oidc_directory = get_oidc_dir_path (cls);
+
+ // Create new oidc directory
+ if (GNUNET_OK != GNUNET_DISK_directory_create (oidc_directory))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ ("Failed to create directory `%s' for storing oidc data\n"),
+ oidc_directory);
+ }
+ else
+ {
+ write_jwk_to_file (oidc_jwk_path, oidc_jwk);
+ }
+ }
+
+ // Convert secret JWK to public JWK
+ jose_jwk_pub (NULL, oidc_jwk);
+
+ // Encode JWK as string and return to API endpoint
+ oidc_jwk_pub_str = json_dumps (oidc_jwk, JSON_INDENT (1));
+ resp = GNUNET_REST_create_response (oidc_jwk_pub_str);
+ handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
+ json_decref (oidc_jwk);
+ GNUNET_free (oidc_jwk_pub_str);
+ GNUNET_free (oidc_jwk_pub_str);
+ cleanup_handle (handle);
+}
/**
* If listing is enabled, prints information about the egos.
@@ -2621,10 +2908,15 @@ oidc_config_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
sig_algs = json_array ();
json_array_append_new (sig_algs,
json_string ("HS512"));
+ json_array_append_new (sig_algs,
+ json_string ("RS256"));
json_object_set_new (oidc_config,
"id_token_signing_alg_values_supported",
sig_algs);
json_object_set_new (oidc_config,
+ "jwks_uri",
+ json_string ("http://localhost:7776/jwks.json"));
+ json_object_set_new (oidc_config,
"userinfo_endpoint",
json_string ("http://localhost:7776/openid/userinfo"));
scopes = json_array ();
@@ -2719,6 +3011,7 @@ rest_identity_process_request (struct GNUNET_REST_RequestHandle *rest_handle,
{ MHD_HTTP_METHOD_POST, GNUNET_REST_API_NS_TOKEN, &token_endpoint },
{ MHD_HTTP_METHOD_GET, GNUNET_REST_API_NS_USERINFO, &userinfo_endpoint },
{ MHD_HTTP_METHOD_POST, GNUNET_REST_API_NS_USERINFO, &userinfo_endpoint },
+ { MHD_HTTP_METHOD_GET, GNUNET_REST_API_JWKS, &jwks_endpoint },
{ MHD_HTTP_METHOD_GET, GNUNET_REST_API_NS_OIDC_CONFIG,
&oidc_config_endpoint },
{ MHD_HTTP_METHOD_OPTIONS, GNUNET_REST_API_NS_OIDC_CONFIG,
@@ -2779,6 +3072,14 @@ libgnunet_plugin_rest_openid_connect_init (void *cls)
identity_handle = GNUNET_IDENTITY_connect (cfg, &list_ego, NULL);
gns_handle = GNUNET_GNS_connect (cfg);
idp = GNUNET_RECLAIM_connect (cfg);
+ if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_time (cfg,
+ "reclaim-rest-plugin",
+ "OIDC_USERINFO_CONSUME_TIMEOUT",
+ &consume_timeout))
+ {
+ consume_timeout = CONSUME_TIMEOUT;
+ }
+
state = ID_REST_STATE_INIT;
GNUNET_asprintf (&allow_methods,
diff --git a/src/reclaim/reclaim.conf b/src/reclaim/reclaim.conf
index 8655f2e0b..07facc232 100644
--- a/src/reclaim/reclaim.conf
+++ b/src/reclaim/reclaim.conf
@@ -14,6 +14,9 @@ TICKET_REFRESH_INTERVAL = 6h
[reclaim-rest-plugin]
#ADDRESS = https://identity.gnu:8000#/login
ADDRESS = https://ui.reclaim/#/login
-OIDC_CLIENT_SECRET = secret
+OIDC_JSON_WEB_ALGORITHM = RS256
+OIDC_CLIENT_HMAC_SECRET = secret
+OIDC_DIR = $GNUNET_DATA_HOME/oidc
+OIDC_USERINFO_CONSUME_TIMEOUT = 5s
JWT_SECRET = secret
EXPIRATION_TIME = 1d
diff --git a/src/regex/plugin_block_regex.c b/src/regex/plugin_block_regex.c
index 61442ac10..5f23a32df 100644
--- a/src/regex/plugin_block_regex.c
+++ b/src/regex/plugin_block_regex.c
@@ -49,7 +49,6 @@
*
* @param ctx block context in which the block group is created
* @param type type of the block for which we are creating the group
- * @param nonce random value used to seed the group creation
* @param raw_data optional serialized prior state of the group, NULL if unavailable/fresh
* @param raw_data_size number of bytes in @a raw_data, 0 if unavailable/fresh
* @param va variable arguments specific to @a type
@@ -59,7 +58,6 @@
static struct GNUNET_BLOCK_Group *
block_plugin_regex_create_group (void *cls,
enum GNUNET_BLOCK_Type type,
- uint32_t nonce,
const void *raw_data,
size_t raw_data_size,
va_list va)
@@ -86,7 +84,6 @@ block_plugin_regex_create_group (void *cls,
bf_size,
BLOOMFILTER_K,
type,
- nonce,
raw_data,
raw_data_size);
}
@@ -150,9 +147,9 @@ block_plugin_regex_check_query (void *cls,
*/
static enum GNUNET_GenericReturnValue
block_plugin_regex_check_block (void *cls,
- enum GNUNET_BLOCK_Type type,
- const void *block,
- size_t block_size)
+ enum GNUNET_BLOCK_Type type,
+ const void *block,
+ size_t block_size)
{
switch (type)
{
@@ -166,37 +163,37 @@ block_plugin_regex_check_block (void *cls,
return GNUNET_OK;
case GNUNET_BLOCK_TYPE_REGEX_ACCEPT:
{
- const struct RegexAcceptBlock *rba;
-
- if (sizeof(struct RegexAcceptBlock) != block_size)
- {
- GNUNET_break_op (0);
- return GNUNET_NO;
- }
- rba = block;
- if (ntohl (rba->purpose.size) !=
- sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)
- + sizeof(struct GNUNET_TIME_AbsoluteNBO)
- + sizeof(struct GNUNET_HashCode))
- {
- GNUNET_break_op (0);
- return GNUNET_NO;
- }
- if (GNUNET_TIME_absolute_is_past (GNUNET_TIME_absolute_ntoh (
- rba->expiration_time)))
- {
- return GNUNET_NO;
- }
- if (GNUNET_OK !=
- GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_REGEX_ACCEPT,
- &rba->purpose,
- &rba->signature,
- &rba->peer.public_key))
- {
- GNUNET_break_op (0);
- return GNUNET_NO;
- }
- return GNUNET_OK;
+ const struct RegexAcceptBlock *rba;
+
+ if (sizeof(struct RegexAcceptBlock) != block_size)
+ {
+ GNUNET_break_op (0);
+ return GNUNET_NO;
+ }
+ rba = block;
+ if (ntohl (rba->purpose.size) !=
+ sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)
+ + sizeof(struct GNUNET_TIME_AbsoluteNBO)
+ + sizeof(struct GNUNET_HashCode))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_NO;
+ }
+ if (GNUNET_TIME_absolute_is_past (GNUNET_TIME_absolute_ntoh (
+ rba->expiration_time)))
+ {
+ return GNUNET_NO;
+ }
+ if (GNUNET_OK !=
+ GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_REGEX_ACCEPT,
+ &rba->purpose,
+ &rba->signature,
+ &rba->peer.public_key))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_NO;
+ }
+ return GNUNET_OK;
}
default:
GNUNET_break (0);
@@ -223,14 +220,14 @@ block_plugin_regex_check_block (void *cls,
*/
static enum GNUNET_BLOCK_ReplyEvaluationResult
block_plugin_regex_check_reply (
- void *cls,
- enum GNUNET_BLOCK_Type type,
- struct GNUNET_BLOCK_Group *group,
- const struct GNUNET_HashCode *query,
- const void *xquery,
- size_t xquery_size,
- const void *reply_block,
- size_t reply_block_size)
+ void *cls,
+ enum GNUNET_BLOCK_Type type,
+ struct GNUNET_BLOCK_Group *group,
+ const struct GNUNET_HashCode *query,
+ const void *xquery,
+ size_t xquery_size,
+ const void *reply_block,
+ size_t reply_block_size)
{
struct GNUNET_HashCode chash;
@@ -240,7 +237,7 @@ block_plugin_regex_check_reply (
if (0 != xquery_size)
{
const char *s;
-
+
s = (const char *) xquery;
GNUNET_assert ('\0' == s[xquery_size - 1]);
}
@@ -267,22 +264,22 @@ block_plugin_regex_check_reply (
return GNUNET_BLOCK_REPLY_OK_MORE;
case GNUNET_BLOCK_TYPE_REGEX_ACCEPT:
{
- const struct RegexAcceptBlock *rba;
-
- GNUNET_assert (sizeof(struct RegexAcceptBlock) == reply_block_size);
- rba = reply_block;
- GNUNET_assert (ntohl (rba->purpose.size) ==
- sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)
- + sizeof(struct GNUNET_TIME_AbsoluteNBO)
- + sizeof(struct GNUNET_HashCode));
- GNUNET_CRYPTO_hash (reply_block,
- reply_block_size,
- &chash);
- if (GNUNET_YES ==
- GNUNET_BLOCK_GROUP_bf_test_and_set (group,
- &chash))
- return GNUNET_BLOCK_REPLY_OK_DUPLICATE;
- return GNUNET_BLOCK_REPLY_OK_MORE;
+ const struct RegexAcceptBlock *rba;
+
+ GNUNET_assert (sizeof(struct RegexAcceptBlock) == reply_block_size);
+ rba = reply_block;
+ GNUNET_assert (ntohl (rba->purpose.size) ==
+ sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)
+ + sizeof(struct GNUNET_TIME_AbsoluteNBO)
+ + sizeof(struct GNUNET_HashCode));
+ GNUNET_CRYPTO_hash (reply_block,
+ reply_block_size,
+ &chash);
+ if (GNUNET_YES ==
+ GNUNET_BLOCK_GROUP_bf_test_and_set (group,
+ &chash))
+ return GNUNET_BLOCK_REPLY_OK_DUPLICATE;
+ return GNUNET_BLOCK_REPLY_OK_MORE;
}
default:
GNUNET_break (0);
diff --git a/src/revocation/revocation_api.c b/src/revocation/revocation_api.c
index 9080ab862..b8c458e4f 100644
--- a/src/revocation/revocation_api.c
+++ b/src/revocation/revocation_api.c
@@ -460,7 +460,7 @@ check_signature (const struct GNUNET_REVOCATION_PowP *pow)
* Check if the given proof-of-work is valid.
*
* @param pow proof of work
- * @param matching_bits how many bits must match (configuration)
+ * @param difficulty how many bits must match (configuration) LSD0001: D
* @param epoch_duration length of single epoch in configuration
* @return #GNUNET_YES if the @a pow is acceptable, #GNUNET_NO if not
*/
@@ -477,6 +477,7 @@ GNUNET_REVOCATION_check_pow (const struct GNUNET_REVOCATION_PowP *pow,
struct GNUNET_TIME_Absolute exp;
struct GNUNET_TIME_Relative ttl;
struct GNUNET_TIME_Relative buffer;
+ /* LSD0001: D' */
unsigned int score = 0;
unsigned int tmp_score = 0;
unsigned int epochs;
@@ -535,7 +536,8 @@ GNUNET_REVOCATION_check_pow (const struct GNUNET_REVOCATION_PowP *pow,
score = score / POW_COUNT;
if (score < difficulty)
return GNUNET_NO;
- epochs = score - difficulty;
+ /* LSD0001: (D'-D+1) */
+ epochs = score - difficulty + 1;
/**
* Check expiration
diff --git a/src/testing/testing.c b/src/testing/testing.c
index 6480d32f9..a00d7217f 100644
--- a/src/testing/testing.c
+++ b/src/testing/testing.c
@@ -1319,7 +1319,7 @@ GNUNET_TESTING_peer_configure (struct GNUNET_TESTING_System *system,
peer->nports = nports;
return peer;
- err_ret:
+err_ret:
GNUNET_free (ss_instances);
GNUNET_free (ports);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%s", emsg_);
@@ -2258,17 +2258,11 @@ GNUNET_TESTING_free_topology (struct GNUNET_TESTING_NetjailTopology *topology)
GNUNET_free (topology);
}
-/**
- * Calculate the unique id identifying a node from a given connction.
- *
- * @param node_connection The connection we calculate the id from.
- * @param topology The topology we get all needed information from.
- * @return The unique id of the node from the connection.
- */
+
unsigned int
-GNUNET_TESTING_calculate_num (struct
- GNUNET_TESTING_NodeConnection *node_connection,
- struct GNUNET_TESTING_NetjailTopology *topology)
+GNUNET_TESTING_calculate_num (
+ struct GNUNET_TESTING_NodeConnection *node_connection,
+ struct GNUNET_TESTING_NetjailTopology *topology)
{
unsigned int n, m, num;
@@ -2677,7 +2671,7 @@ GNUNET_TESTING_get_topo_from_file (const char *filename)
}
LOG (GNUNET_ERROR_TYPE_DEBUG,
- "file lenght %lu\n",
+ "file length %lu\n",
fs);
data[fs] = '\0';
diff --git a/src/testing/testing_api_loop.c b/src/testing/testing_api_loop.c
index 95d6b88e6..283284f26 100644
--- a/src/testing/testing_api_loop.c
+++ b/src/testing/testing_api_loop.c
@@ -189,14 +189,6 @@ GNUNET_TESTING_interpreter_lookup_command (
}
-/**
- * Lookup command by label.
- * All commands, first into the past, then into the furture are looked up.
- *
- * @param is interpreter to lookup command in
- * @param label label of the command to lookup.
- * @return the command, if it is found, or NULL.
- */
const struct GNUNET_TESTING_Command *
GNUNET_TESTING_interpreter_lookup_command_all (
struct GNUNET_TESTING_Interpreter *is,
@@ -351,6 +343,7 @@ GNUNET_TESTING_interpreter_get_current_command (
return &is->commands[is->ip];
}
+
const char *
GNUNET_TESTING_interpreter_get_current_label (
struct GNUNET_TESTING_Interpreter *is)
diff --git a/src/transport/gnunet-communicator-tcp.c b/src/transport/gnunet-communicator-tcp.c
index be75fa0e8..6d7a151ec 100644
--- a/src/transport/gnunet-communicator-tcp.c
+++ b/src/transport/gnunet-communicator-tcp.c
@@ -1340,10 +1340,11 @@ do_rekey (struct Queue *queue, const struct TCPRekey *rekey)
GNUNET_TIME_absolute_ntoh (thp.monotonic_time)));
GNUNET_assert (ntohl ((&thp)->purpose.size) == sizeof (*(&thp)));
if (GNUNET_OK !=
- GNUNET_CRYPTO_eddsa_verify (GNUNET_SIGNATURE_PURPOSE_COMMUNICATOR_TCP_REKEY,
- &thp,
- &rekey->sender_sig,
- &queue->target.public_key))
+ GNUNET_CRYPTO_eddsa_verify (
+ GNUNET_SIGNATURE_PURPOSE_COMMUNICATOR_TCP_REKEY,
+ &thp,
+ &rekey->sender_sig,
+ &queue->target.public_key))
{
GNUNET_break (0);
queue_finish (queue);
@@ -1447,7 +1448,8 @@ handshake_ack_monotime_cb (void *cls,
* @param queue The queue context.
*/
static void
-send_challenge (struct GNUNET_CRYPTO_ChallengeNonceP challenge, struct Queue *queue)
+send_challenge (struct GNUNET_CRYPTO_ChallengeNonceP challenge, struct
+ Queue *queue)
{
struct TCPConfirmationAck tca;
struct TcpHandshakeAckSignature thas;
@@ -2450,7 +2452,7 @@ boot_queue (struct Queue *queue)
* Generate and transmit our ephemeral key and the signature for
* the initial KX with the other peer. Must be called first, before
* any other bytes are ever written to the output buffer. Note that
- * our cipher must already be initialized when calling thi function.
+ * our cipher must already be initialized when calling this function.
* Helper function for #start_initial_kx_out().
*
* @param queue queue to do KX for
@@ -2472,7 +2474,8 @@ transmit_kx (struct Queue *queue,
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
&tc.challenge,
sizeof(tc.challenge));
- ths.purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_COMMUNICATOR_TCP_HANDSHAKE);
+ ths.purpose.purpose = htonl (
+ GNUNET_SIGNATURE_PURPOSE_COMMUNICATOR_TCP_HANDSHAKE);
ths.purpose.size = htonl (sizeof(ths));
ths.sender = my_identity;
ths.receiver = queue->target;
@@ -2625,7 +2628,8 @@ decrypt_and_check_tc (struct Queue *queue,
sizeof(*tc),
&ibuf[sizeof(struct GNUNET_CRYPTO_EcdhePublicKey)],
sizeof(*tc)));
- ths.purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_COMMUNICATOR_TCP_HANDSHAKE);
+ ths.purpose.purpose = htonl (
+ GNUNET_SIGNATURE_PURPOSE_COMMUNICATOR_TCP_HANDSHAKE);
ths.purpose.size = htonl (sizeof(ths));
ths.sender = tc->sender;
ths.receiver = my_identity;
diff --git a/src/transport/gnunet-service-tng.c b/src/transport/gnunet-service-tng.c
index 18ec0aa0b..7efe07fda 100644
--- a/src/transport/gnunet-service-tng.c
+++ b/src/transport/gnunet-service-tng.c
@@ -82,7 +82,7 @@
#include "transport.h"
/**
- * Maximum number of FC retransmissions for a runing retransmission task.
+ * Maximum number of FC retransmissions for a running retransmission task.
*/
#define MAX_FC_RETRANSMIT_COUNT 1000
@@ -1934,9 +1934,6 @@ struct Queue
};
-
-
-
/**
* A neighbour that at least one communicator is connected to.
*/
@@ -9827,7 +9824,7 @@ handle_send_message_ack (void *cls,
(unsigned long long) queue->qid,
(unsigned long long) sma->mid);
qe = qep;
- if ((NULL != qe->pm)&&(qe->pm->qe != qe))
+ if ((NULL != qe->pm) && (qe->pm->qe != qe))
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"For pending message %llu we had retransmissions.\n",
qe->pm->logging_uuid);
diff --git a/src/transport/gnunet-transport-certificate-creation.in b/src/transport/gnunet-transport-certificate-creation.in
index 8348dd1b7..454f05a5d 100644
--- a/src/transport/gnunet-transport-certificate-creation.in
+++ b/src/transport/gnunet-transport-certificate-creation.in
@@ -107,14 +107,19 @@ generate_cert_key()
OPENSSL=0
if test -z "`gnutls-certtool --version`" > /dev/null
then
- if test -z "`openssl version`" > /dev/null
+ if test -z "`certtool --version`" > /dev/null
then
- warningmsg "Install either gnutls certtool or openssl for certificate generation!"
- exit 1
+ if test -z "`openssl version`" > /dev/null
+ then
+ warningmsg "Install either gnutls certtool or openssl for certificate generation!"
+ exit 1
+ else
+ OPENSSL=1
+ fi
+ CERTTOOL="openssl"
else
- OPENSSL=1
+ CERTTOOL="certtool"
fi
- CERTTOOL="openssl"
else
CERTTOOL="gnutls-certtool"
fi
diff --git a/src/util/container_bloomfilter.c b/src/util/container_bloomfilter.c
index 8a0487e04..9f6c3c0cc 100644
--- a/src/util/container_bloomfilter.c
+++ b/src/util/container_bloomfilter.c
@@ -83,12 +83,6 @@ struct GNUNET_CONTAINER_BloomFilter
};
-/**
- * Get the number of the addresses set per element in the bloom filter.
- *
- * @param bf the filter
- * @return addresses set per element in the bf
- */
size_t
GNUNET_CONTAINER_bloomfilter_get_element_addresses (
const struct GNUNET_CONTAINER_BloomFilter *bf)
@@ -99,12 +93,6 @@ GNUNET_CONTAINER_bloomfilter_get_element_addresses (
}
-/**
- * Get size of the bloom filter.
- *
- * @param bf the filter
- * @return number of bytes used for the data of the bloom filter
- */
size_t
GNUNET_CONTAINER_bloomfilter_get_size (
const struct GNUNET_CONTAINER_BloomFilter *bf)
@@ -115,12 +103,6 @@ GNUNET_CONTAINER_bloomfilter_get_size (
}
-/**
- * Copy an existing memory. Any association with a file
- * on-disk will be lost in the process.
- * @param bf the filter to copy
- * @return copy of the bf
- */
struct GNUNET_CONTAINER_BloomFilter *
GNUNET_CONTAINER_bloomfilter_copy (
const struct GNUNET_CONTAINER_BloomFilter *bf)
@@ -139,7 +121,8 @@ GNUNET_CONTAINER_bloomfilter_copy (
* @param bitIdx which bit to set
*/
static void
-setBit (char *bitArray, unsigned int bitIdx)
+setBit (char *bitArray,
+ unsigned int bitIdx)
{
size_t arraySlot;
unsigned int targetBit;
@@ -174,10 +157,11 @@ clearBit (char *bitArray, unsigned int bitIdx)
*
* @param bitArray memory area to set the bit in
* @param bitIdx which bit to test
- * @return GNUNET_YES if the bit is set, GNUNET_NO if not.
+ * @return true if the bit is set, false if not.
*/
-static int
-testBit (char *bitArray, unsigned int bitIdx)
+static bool
+testBit (char *bitArray,
+ unsigned int bitIdx)
{
size_t slot;
unsigned int targetBit;
@@ -185,9 +169,8 @@ testBit (char *bitArray, unsigned int bitIdx)
slot = bitIdx / 8;
targetBit = (1L << (bitIdx % 8));
if (bitArray[slot] & targetBit)
- return GNUNET_YES;
- else
- return GNUNET_NO;
+ return true;
+ return false;
}
@@ -211,7 +194,8 @@ incrementBit (char *bitArray,
unsigned int low;
unsigned int targetLoc;
- setBit (bitArray, bitIdx);
+ setBit (bitArray,
+ bitIdx);
if (GNUNET_DISK_handle_invalid (fh))
return;
/* Update the counter file on disk */
@@ -314,10 +298,11 @@ decrementBit (char *bitArray,
*
* @param fh the file handle
* @param size the size of the file
- * @return GNUNET_OK if created ok, GNUNET_SYSERR otherwise
+ * @return #GNUNET_OK if created ok, #GNUNET_SYSERR otherwise
*/
-static int
-make_empty_file (const struct GNUNET_DISK_FileHandle *fh, size_t size)
+static enum GNUNET_GenericReturnValue
+make_empty_file (const struct GNUNET_DISK_FileHandle *fh,
+ size_t size)
{
char buffer[BUFFSIZE];
size_t bytesleft = size;
@@ -360,10 +345,10 @@ make_empty_file (const struct GNUNET_DISK_FileHandle *fh, size_t size)
* @param bit the current bit
* @return #GNUNET_YES to continue, #GNUNET_NO to stop early
*/
-typedef int
-(*BitIterator) (void *cls,
- const struct GNUNET_CONTAINER_BloomFilter *bf,
- unsigned int bit);
+typedef enum GNUNET_GenericReturnValue
+(*BitIterator)(void *cls,
+ const struct GNUNET_CONTAINER_BloomFilter *bf,
+ unsigned int bit);
/**
@@ -418,16 +403,18 @@ iterateBits (const struct GNUNET_CONTAINER_BloomFilter *bf,
* @param cls pointer to writeable form of bf
* @param bf the filter to manipulate
* @param bit the bit to increment
- * @return GNUNET_YES
+ * @return #GNUNET_YES
*/
-static int
+static enum GNUNET_GenericReturnValue
incrementBitCallback (void *cls,
const struct GNUNET_CONTAINER_BloomFilter *bf,
unsigned int bit)
{
struct GNUNET_CONTAINER_BloomFilter *b = cls;
- incrementBit (b->bitArray, bit, bf->fh);
+ incrementBit (b->bitArray,
+ bit,
+ bf->fh);
return GNUNET_YES;
}
@@ -438,16 +425,18 @@ incrementBitCallback (void *cls,
* @param cls pointer to writeable form of bf
* @param bf the filter to manipulate
* @param bit the bit to decrement
- * @return GNUNET_YES
+ * @return #GNUNET_YES
*/
-static int
+static enum GNUNET_GenericReturnValue
decrementBitCallback (void *cls,
const struct GNUNET_CONTAINER_BloomFilter *bf,
unsigned int bit)
{
struct GNUNET_CONTAINER_BloomFilter *b = cls;
- decrementBit (b->bitArray, bit, bf->fh);
+ decrementBit (b->bitArray,
+ bit,
+ bf->fh);
return GNUNET_YES;
}
@@ -455,21 +444,21 @@ decrementBitCallback (void *cls,
/**
* Callback: test if all bits are set
*
- * @param cls pointer set to GNUNET_NO if bit is not set
+ * @param cls pointer set to false if bit is not set
* @param bf the filter
* @param bit the bit to test
- * @return YES if the bit is set, NO if not
+ * @return #GNUNET_YES if the bit is set, #GNUNET_NO if not
*/
-static int
+static enum GNUNET_GenericReturnValue
testBitCallback (void *cls,
const struct GNUNET_CONTAINER_BloomFilter *bf,
unsigned int bit)
{
- int *arg = cls;
+ bool *arg = cls;
- if (GNUNET_NO == testBit (bf->bitArray, bit))
+ if (! testBit (bf->bitArray, bit))
{
- *arg = GNUNET_NO;
+ *arg = false;
return GNUNET_NO;
}
return GNUNET_YES;
@@ -523,7 +512,9 @@ GNUNET_CONTAINER_bloomfilter_load (const char *filename,
{
/* file existed, try to read it! */
must_read = GNUNET_YES;
- if (GNUNET_OK != GNUNET_DISK_file_handle_size (bf->fh, &fsize))
+ if (GNUNET_OK !=
+ GNUNET_DISK_file_handle_size (bf->fh,
+ &fsize))
{
GNUNET_DISK_file_close (bf->fh);
GNUNET_free (bf);
@@ -532,9 +523,12 @@ GNUNET_CONTAINER_bloomfilter_load (const char *filename,
if (0 == fsize)
{
/* found existing empty file, just overwrite */
- if (GNUNET_OK != make_empty_file (bf->fh, size * 4LL))
+ if (GNUNET_OK !=
+ make_empty_file (bf->fh,
+ size * 4LL))
{
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "write");
+ GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
+ "write");
GNUNET_DISK_file_close (bf->fh);
GNUNET_free (bf);
return NULL;
@@ -625,19 +619,6 @@ GNUNET_CONTAINER_bloomfilter_load (const char *filename,
}
-/**
- * Create a bloom filter from raw bits.
- *
- * @param data the raw bits in memory (maybe NULL,
- * in which case all bits should be considered
- * to be zero).
- * @param size the size of the bloom-filter (number of
- * bytes of storage space to use); also size of data
- * -- unless data is NULL
- * @param k the number of GNUNET_CRYPTO_hash-functions to apply per
- * element (number of bits set per element in the set)
- * @return the bloomfilter
- */
struct GNUNET_CONTAINER_BloomFilter *
GNUNET_CONTAINER_bloomfilter_init (const char *data,
size_t size,
@@ -664,16 +645,7 @@ GNUNET_CONTAINER_bloomfilter_init (const char *data,
}
-/**
- * Copy the raw data of this bloomfilter into
- * the given data array.
- *
- * @param bf bloomfilter to take the raw data from
- * @param data where to write the data
- * @param size the size of the given data array
- * @return #GNUNET_SYSERR if the data array is not big enough
- */
-int
+enum GNUNET_GenericReturnValue
GNUNET_CONTAINER_bloomfilter_get_raw_data (
const struct GNUNET_CONTAINER_BloomFilter *bf,
char *data,
@@ -688,13 +660,6 @@ GNUNET_CONTAINER_bloomfilter_get_raw_data (
}
-/**
- * Free the space associated with a filter
- * in memory, flush to drive if needed (do not
- * free the space on the drive)
- *
- * @param bf the filter
- */
void
GNUNET_CONTAINER_bloomfilter_free (struct GNUNET_CONTAINER_BloomFilter *bf)
{
@@ -708,11 +673,6 @@ GNUNET_CONTAINER_bloomfilter_free (struct GNUNET_CONTAINER_BloomFilter *bf)
}
-/**
- * Reset a bloom filter to empty. Clears the file on disk.
- *
- * @param bf the filter
- */
void
GNUNET_CONTAINER_bloomfilter_clear (struct GNUNET_CONTAINER_BloomFilter *bf)
{
@@ -725,55 +685,38 @@ GNUNET_CONTAINER_bloomfilter_clear (struct GNUNET_CONTAINER_BloomFilter *bf)
}
-/**
- * Test if an element is in the filter.
- *
- * @param e the element
- * @param bf the filter
- * @return #GNUNET_YES if the element is in the filter, #GNUNET_NO if not
- */
-int
+bool
GNUNET_CONTAINER_bloomfilter_test (
const struct GNUNET_CONTAINER_BloomFilter *bf,
const struct GNUNET_HashCode *e)
{
- int res;
+ bool res;
if (NULL == bf)
- return GNUNET_YES;
- res = GNUNET_YES;
- iterateBits (bf, &testBitCallback, &res, e);
+ return true;
+ res = true;
+ iterateBits (bf,
+ &testBitCallback,
+ &res,
+ e);
return res;
}
-/**
- * Add an element to the filter
- *
- * @param bf the filter
- * @param e the element
- */
void
GNUNET_CONTAINER_bloomfilter_add (struct GNUNET_CONTAINER_BloomFilter *bf,
const struct GNUNET_HashCode *e)
{
if (NULL == bf)
return;
- iterateBits (bf, &incrementBitCallback, bf, e);
+ iterateBits (bf,
+ &incrementBitCallback,
+ bf,
+ e);
}
-/**
- * Or the entries of the given raw data array with the
- * data of the given bloom filter. Assumes that
- * the size of the data array and the current filter
- * match.
- *
- * @param bf the filter
- * @param data the data to or-in
- * @param size number of bytes in data
- */
-int
+enum GNUNET_GenericReturnValue
GNUNET_CONTAINER_bloomfilter_or (struct GNUNET_CONTAINER_BloomFilter *bf,
const char *data,
size_t size)
@@ -799,17 +742,7 @@ GNUNET_CONTAINER_bloomfilter_or (struct GNUNET_CONTAINER_BloomFilter *bf,
}
-/**
- * Or the entries of the given raw data array with the
- * data of the given bloom filter. Assumes that
- * the size of the data array and the current filter
- * match.
- *
- * @param bf the filter
- * @param to_or the bloomfilter to or-in
- * @return #GNUNET_OK on success
- */
-int
+enum GNUNET_GenericReturnValue
GNUNET_CONTAINER_bloomfilter_or2 (
struct GNUNET_CONTAINER_BloomFilter *bf,
const struct GNUNET_CONTAINER_BloomFilter *to_or)
@@ -840,12 +773,6 @@ GNUNET_CONTAINER_bloomfilter_or2 (
}
-/**
- * Remove an element from the filter.
- *
- * @param bf the filter
- * @param e the element to remove
- */
void
GNUNET_CONTAINER_bloomfilter_remove (struct GNUNET_CONTAINER_BloomFilter *bf,
const struct GNUNET_HashCode *e)
@@ -854,21 +781,13 @@ GNUNET_CONTAINER_bloomfilter_remove (struct GNUNET_CONTAINER_BloomFilter *bf,
return;
if (NULL == bf->filename)
return;
- iterateBits (bf, &decrementBitCallback, bf, e);
+ iterateBits (bf,
+ &decrementBitCallback,
+ bf,
+ e);
}
-/**
- * Resize a bloom filter. Note that this operation
- * is pretty costly. Essentially, the bloom filter
- * needs to be completely re-build.
- *
- * @param bf the filter
- * @param iterator an iterator over all elements stored in the BF
- * @param iterator_cls argument to the iterator function
- * @param size the new size for the filter
- * @param k the new number of GNUNET_CRYPTO_hash-function to apply per element
- */
void
GNUNET_CONTAINER_bloomfilter_resize (struct GNUNET_CONTAINER_BloomFilter *bf,
GNUNET_CONTAINER_HashCodeIterator iterator,
diff --git a/src/util/os_installation.c b/src/util/os_installation.c
index 171bb5baa..1835c6e84 100644
--- a/src/util/os_installation.c
+++ b/src/util/os_installation.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- Copyright (C) 2006-2018 GNUnet e.V.
+ Copyright (C) 2006-2018, 2022 GNUnet e.V.
GNUnet is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
@@ -80,11 +80,12 @@ static const struct GNUNET_OS_ProjectData default_pd = {
static const struct GNUNET_OS_ProjectData *current_pd = &default_pd;
/**
- * Whether or not gettext has been initialized for the library.
+ * PD for which gettext has been initialized last.
* Note that the gettext initialization done within
* GNUNET_PROGRAM_run2 is for the specific application.
*/
-static int gettextinit = 0;
+static const struct GNUNET_OS_ProjectData *gettextinit;
+
/**
* Return default project data used by 'libgnunetutil' for GNUnet.
@@ -102,13 +103,15 @@ GNUNET_OS_project_data_default (void)
const struct GNUNET_OS_ProjectData *
GNUNET_OS_project_data_get ()
{
- if (0 == gettextinit)
+ if (current_pd != gettextinit)
{
char *path = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_LOCALEDIR);
+
if (NULL != path)
- bindtextdomain (PACKAGE, path);
+ bindtextdomain (PACKAGE,
+ path);
GNUNET_free (path);
- gettextinit = 1;
+ gettextinit = current_pd;
}
return current_pd;
}
@@ -122,16 +125,18 @@ GNUNET_OS_project_data_get ()
void
GNUNET_OS_init (const struct GNUNET_OS_ProjectData *pd)
{
- if (0 == gettextinit)
+ GNUNET_assert (NULL != pd);
+ current_pd = pd;
+ if (pd != gettextinit)
{
char *path = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_LOCALEDIR);
+
if (NULL != path)
- bindtextdomain (PACKAGE, path);
+ bindtextdomain (PACKAGE,
+ path);
GNUNET_free (path);
- gettextinit = 1;
+ gettextinit = pd;
}
- GNUNET_assert (NULL != pd);
- current_pd = pd;
}
diff --git a/src/util/os_priority.c b/src/util/os_priority.c
index 08320b291..843b4734c 100644
--- a/src/util/os_priority.c
+++ b/src/util/os_priority.c
@@ -874,7 +874,7 @@ GNUNET_OS_start_process_s (enum GNUNET_OS_InheritStdioFlags std_inheritance,
* @param options WNOHANG if non-blocking is desired
* @return #GNUNET_OK on success, #GNUNET_NO if the process is still running, #GNUNET_SYSERR otherwise
*/
-static int
+static enum GNUNET_GenericReturnValue
process_status (struct GNUNET_OS_Process *proc,
enum GNUNET_OS_ProcessStatusType *type,
unsigned long *code,
@@ -884,10 +884,13 @@ process_status (struct GNUNET_OS_Process *proc,
int ret;
GNUNET_assert (0 != proc);
- ret = waitpid (proc->pid, &status, options);
+ ret = waitpid (proc->pid,
+ &status,
+ options);
if (ret < 0)
{
- LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "waitpid");
+ LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING,
+ "waitpid");
return GNUNET_SYSERR;
}
if (0 == ret)
@@ -898,7 +901,8 @@ process_status (struct GNUNET_OS_Process *proc,
}
if (proc->pid != ret)
{
- LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "waitpid");
+ LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING,
+ "waitpid");
return GNUNET_SYSERR;
}
if (WIFEXITED (status))
@@ -942,7 +946,7 @@ process_status (struct GNUNET_OS_Process *proc,
* @param code return code/signal number
* @return #GNUNET_OK on success, #GNUNET_NO if the process is still running, #GNUNET_SYSERR otherwise
*/
-int
+enum GNUNET_GenericReturnValue
GNUNET_OS_process_status (struct GNUNET_OS_Process *proc,
enum GNUNET_OS_ProcessStatusType *type,
unsigned long *code)
@@ -960,7 +964,7 @@ GNUNET_OS_process_status (struct GNUNET_OS_Process *proc,
* @param code return code/signal number
* @return #GNUNET_OK on success, #GNUNET_SYSERR otherwise
*/
-int
+enum GNUNET_GenericReturnValue
GNUNET_OS_process_wait_status (struct GNUNET_OS_Process *proc,
enum GNUNET_OS_ProcessStatusType *type,
unsigned long *code)
diff --git a/src/util/test_container_bloomfilter.c b/src/util/test_container_bloomfilter.c
index 67fbaf38b..06a3fb500 100644
--- a/src/util/test_container_bloomfilter.c
+++ b/src/util/test_container_bloomfilter.c
@@ -31,6 +31,47 @@
#define SIZE 65536
#define TESTFILE "/tmp/bloomtest.dat"
+
+static void
+bernd_interop (void)
+{
+ struct GNUNET_HashCode hc;
+ char val[128];
+ size_t len;
+ struct GNUNET_CONTAINER_BloomFilter *bf;
+
+ len = GNUNET_DNSPARSER_hex_to_bin (
+ "ac4d46b62f8ddaf3cefbc1c01e47536b7ff297cb081e27a396362b1e92e5729b",
+ val);
+ GNUNET_assert (len < 128);
+ GNUNET_CRYPTO_hash (val,
+ len,
+ &hc);
+ fprintf (stderr,
+ "sha512: %s\n",
+ GNUNET_DNSPARSER_bin_to_hex (&hc,
+ sizeof (hc)));
+ bf = GNUNET_CONTAINER_bloomfilter_init (NULL,
+ 128,
+ 16);
+ GNUNET_CONTAINER_bloomfilter_add (bf,
+ &hc);
+ len = GNUNET_CONTAINER_bloomfilter_get_size (bf);
+ {
+ char raw[len];
+
+ GNUNET_CONTAINER_bloomfilter_get_raw_data (bf,
+ raw,
+ len);
+ fprintf (stderr,
+ "BF: %s\n",
+ GNUNET_DNSPARSER_bin_to_hex (raw,
+ len));
+ }
+
+}
+
+
/**
* Generate a random hashcode.
*/
@@ -68,7 +109,14 @@ main (int argc, char *argv[])
char buf[SIZE];
struct stat sbuf;
- GNUNET_log_setup ("test-container-bloomfilter", "WARNING", NULL);
+ GNUNET_log_setup ("test-container-bloomfilter",
+ "WARNING",
+ NULL);
+ if (0)
+ {
+ bernd_interop ();
+ return 0;
+ }
GNUNET_CRYPTO_seed_weak_random (1);
if (0 == stat (TESTFILE, &sbuf))
if (0 != unlink (TESTFILE))
diff --git a/src/util/test_crypto_cs.c b/src/util/test_crypto_cs.c
index 914ded9bc..a56ff7421 100644
--- a/src/util/test_crypto_cs.c
+++ b/src/util/test_crypto_cs.c
@@ -241,7 +241,7 @@ test_calc_blindedc (const struct GNUNET_CRYPTO_CsBlindingSecret bs[2],
/* TEST 2
* Check if R' - aG -bX = R for b = 0
- * This test does the opposite operations and checks wether the equation is still correct.
+ * This test does the opposite operations and checks whether the equation is still correct.
*/
for (unsigned int b = 0; b <= 1; b++)
{
@@ -338,7 +338,7 @@ test_blind_sign (unsigned int *b,
/* TEST 2
* Check if s := rb + cbX
- * This test does the opposite operations and checks wether the equation is still correct.
+ * This test does the opposite operations and checks whether the equation is still correct.
*/
struct GNUNET_CRYPTO_Cs25519Scalar cb_mul_x;
struct GNUNET_CRYPTO_Cs25519Scalar s_min_rb;
@@ -393,7 +393,7 @@ test_unblinds (const struct GNUNET_CRYPTO_CsBlindS *blinded_signature_scalar,
/* TEST 2
* Check if s' := s + a mod p
- * This test does the opposite operations and checks wether the equation is still correct.
+ * This test does the opposite operations and checks whether the equation is still correct.
*/
struct GNUNET_CRYPTO_Cs25519Scalar s_min_a;