aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--AUTHORS7
-rw-r--r--Makefile.am4
-rw-r--r--README50
-rw-r--r--configure.ac58
-rw-r--r--contrib/apparmor/gnunet-mesh13
-rw-r--r--contrib/branding/logo/gnunet-logo-dark-only-text.svg1144
-rw-r--r--contrib/gnunet.rb47
-rwxr-xr-xcontrib/scripts/gnunet-bugreport26
-rwxr-xr-xcontrib/scripts/gnunet-chk.py.in14
-rw-r--r--contrib/scripts/gnunet_pyexpect.py.in1
-rw-r--r--contrib/scripts/pydiffer.py.in3
-rwxr-xr-xcontrib/scripts/regression.sh2
-rw-r--r--contrib/scripts/terminate.py.in1
-rw-r--r--contrib/tox.ini2
-rw-r--r--doc/handbook/.gitignore2
-rw-r--r--doc/handbook/Makefile.am7
-rw-r--r--doc/handbook/chapters/developer.texi25
-rw-r--r--doc/handbook/chapters/installation.texi6
-rw-r--r--doc/handbook/chapters/keyconcepts.texi12
-rw-r--r--doc/man/gnunet-arm.12
-rw-r--r--doc/man/gnunet-ats.12
-rw-r--r--doc/man/gnunet-auto-share.12
-rw-r--r--doc/man/gnunet-bcd.12
-rw-r--r--doc/man/gnunet-cadet.12
-rw-r--r--doc/man/gnunet-config.12
-rw-r--r--doc/man/gnunet-conversation-test.12
-rw-r--r--doc/man/gnunet-conversation.12
-rw-r--r--doc/man/gnunet-core.12
-rw-r--r--doc/man/gnunet-datastore.12
-rw-r--r--doc/man/gnunet-directory.12
-rw-r--r--doc/man/gnunet-dns2gns.12
-rw-r--r--doc/man/gnunet-download-manager.12
-rw-r--r--doc/man/gnunet-download.12
-rw-r--r--doc/man/gnunet-ecc.12
-rw-r--r--doc/man/gnunet-fs.12
-rw-r--r--doc/man/gnunet-gns-proxy.12
-rw-r--r--doc/man/gnunet-gns.12
-rw-r--r--doc/man/gnunet-identity.12
-rw-r--r--doc/man/gnunet-namecache.12
-rw-r--r--doc/man/gnunet-namestore-fcfsd.12
-rw-r--r--doc/man/gnunet-namestore.12
-rw-r--r--doc/man/gnunet-nat-auto.12
-rw-r--r--doc/man/gnunet-nat-server.12
-rw-r--r--doc/man/gnunet-nat.12
-rw-r--r--doc/man/gnunet-peerinfo.12
-rw-r--r--doc/man/gnunet-publish.12
-rw-r--r--doc/man/gnunet-qr.12
-rw-r--r--doc/man/gnunet-resolver.12
-rw-r--r--doc/man/gnunet-revocation.12
-rw-r--r--doc/man/gnunet-scalarproduct.12
-rw-r--r--doc/man/gnunet-scrypt.12
-rw-r--r--doc/man/gnunet-search.12
-rw-r--r--doc/man/gnunet-testbed-profiler.12
-rw-r--r--doc/man/gnunet-testing-run-service.12
-rw-r--r--doc/man/gnunet-testing.12
-rw-r--r--doc/man/gnunet-timeout.12
-rw-r--r--doc/man/gnunet-transport-certificate-creation.12
-rw-r--r--doc/man/gnunet-transport.12
-rw-r--r--doc/man/gnunet-unindex.12
-rw-r--r--doc/man/gnunet-uri.12
-rw-r--r--doc/man/gnunet-vpn.12
-rw-r--r--doc/man/gnunet-zoneimport.12
-rw-r--r--doc/man/gnunet.conf.52
-rw-r--r--doc/tutorial/Makefile.am7
-rw-r--r--doc/tutorial/docstyle.css76
-rw-r--r--doc/tutorial/gnunet-tutorial.texi20
-rw-r--r--doc/tutorial/htmlxref.cnf668
-rw-r--r--doc/tutorial/manual.css52
-rw-r--r--doc/tutorial/reset.css114
-rwxr-xr-xdoc/tutorial/run-gendocs.sh18
-rw-r--r--doc/tutorial/style.css174
-rw-r--r--pkgconfig/Makefile.am17
-rw-r--r--pkgconfig/gnunetdv.pc.in12
-rw-r--r--pkgconfig/gnunetmulticast.pc.in12
-rw-r--r--pkgconfig/gnunetpsyc.pc.in12
-rw-r--r--pkgconfig/gnunetpsycstore.pc.in12
-rw-r--r--pkgconfig/gnunetsocial.pc.in12
-rw-r--r--po/POTFILES.in135
-rw-r--r--po/de.po4798
-rw-r--r--po/es.po4833
-rw-r--r--po/fr.po4706
-rw-r--r--po/it.po4673
-rw-r--r--po/sv.po4808
-rw-r--r--po/vi.po4796
-rw-r--r--po/zh_CN.po4796
-rw-r--r--src/Makefile.am8
-rw-r--r--src/arm/arm.conf.in2
-rw-r--r--src/ats-tests/Makefile.am1
-rw-r--r--src/ats/Makefile.am4
-rw-r--r--src/cadet/cadet.h10
-rw-r--r--src/cadet/cadet_api_get_path.c13
-rw-r--r--src/cadet/cadet_test_lib.c4
-rw-r--r--src/cadet/gnunet-cadet.c16
-rw-r--r--src/cadet/gnunet-service-cadet.c10
-rw-r--r--src/consensus/consensus-simulation.py.in18
-rw-r--r--src/consensus/test_consensus.conf4
-rw-r--r--src/datacache/perf_datacache.c4
-rw-r--r--src/datacache/test_datacache.c4
-rw-r--r--src/datacache/test_datacache_quota.c4
-rw-r--r--src/datastore/perf_datastore_api.c4
-rw-r--r--src/datastore/perf_plugin_datastore.c6
-rw-r--r--src/datastore/plugin_datastore_postgres.c8
-rw-r--r--src/datastore/test_datastore_api.c10
-rw-r--r--src/datastore/test_datastore_api_management.c6
-rw-r--r--src/datastore/test_plugin_datastore.c6
-rw-r--r--src/dht/test_dht_tools.py.in2
-rw-r--r--src/dv/.gitignore2
-rw-r--r--src/dv/Makefile.am100
-rw-r--r--src/dv/dv.conf.in15
-rw-r--r--src/dv/dv.h172
-rw-r--r--src/dv/dv_api.c467
-rw-r--r--src/dv/gnunet-dv.c185
-rw-r--r--src/dv/gnunet-service-dv.c2146
-rw-r--r--src/dv/plugin_transport_dv.c910
-rw-r--r--src/dv/template_dv.conf33
-rw-r--r--src/dv/test_transport_blacklist.c69
-rw-r--r--src/dv/test_transport_blacklist_data.conf5
-rw-r--r--src/dv/test_transport_dv.c131
-rw-r--r--src/dv/test_transport_dv_data.conf19
-rw-r--r--src/fs/Makefile.am5
-rw-r--r--src/fs/fs.conf.in2
-rw-r--r--src/fs/fs_dirmetascan.c8
-rw-r--r--src/fs/fs_publish.c18
-rw-r--r--src/fs/gnunet-publish.c4
-rw-r--r--src/fs/gnunet-search.c5
-rw-r--r--src/fs/gnunet-service-fs_cadet_client.c21
-rwxr-xr-xsrc/fs/test_gnunet_fs_psd.py.in1
-rw-r--r--src/gns/.gitignore6
-rw-r--r--src/gns/Makefile.am18
-rw-r--r--src/gns/gnunet-gns-proxy-setup-ca.in (renamed from src/gns/gnunet-gns-proxy-setup-ca)9
-rw-r--r--src/gns/gnunet-gns-proxy.c7
-rw-r--r--src/gns/openssl.cnf245
-rw-r--r--src/gns/test_gns_nick_shorten.conf24
-rwxr-xr-xsrc/gns/test_gns_rel_expiration.sh7
-rw-r--r--src/include/Makefile.am17
-rw-r--r--src/include/gnunet_cadet_service.h21
-rw-r--r--src/include/gnunet_common.h3
-rw-r--r--src/include/gnunet_dv_service.h166
-rw-r--r--src/include/gnunet_hello_lib.h2
-rw-r--r--src/include/gnunet_multicast_service.h925
-rw-r--r--src/include/gnunet_namestore_plugin.h9
-rw-r--r--src/include/gnunet_protocols.h35
-rw-r--r--src/include/gnunet_psyc_env.h340
-rw-r--r--src/include/gnunet_psyc_message.h278
-rw-r--r--src/include/gnunet_psyc_service.h1364
-rw-r--r--src/include/gnunet_psyc_slicer.h378
-rw-r--r--src/include/gnunet_psyc_util_lib.h53
-rw-r--r--src/include/gnunet_psycstore_plugin.h383
-rw-r--r--src/include/gnunet_psycstore_service.h701
-rw-r--r--src/include/gnunet_rps_service.h2
-rw-r--r--src/include/gnunet_sensor_service.h199
-rw-r--r--src/include/gnunet_sensor_util_lib.h520
-rw-r--r--src/include/gnunet_sensordashboard_service.h55
-rw-r--r--src/include/gnunet_social_service.h1344
-rw-r--r--src/include/gnunet_transport_address_service.h116
-rw-r--r--src/include/gnunet_transport_hello_service.h4
-rw-r--r--src/include/platform.h12
-rw-r--r--src/integration-tests/confs/c_bootstrap_server.conf21
-rw-r--r--src/integration-tests/confs/c_nat_client.conf7
-rw-r--r--src/integration-tests/confs/c_no_nat_client.conf11
-rw-r--r--src/integration-tests/confs/c_no_nat_client_2.conf10
-rw-r--r--src/integration-tests/gnunet_pyexpect.py.in1
-rw-r--r--src/integration-tests/gnunet_testing.py.in104
-rwxr-xr-xsrc/integration-tests/test_integration_bootstrap_and_connect.py.in3
-rwxr-xr-xsrc/integration-tests/test_integration_clique.py.in1
-rwxr-xr-xsrc/integration-tests/test_integration_disconnect.py.in87
-rwxr-xr-xsrc/integration-tests/test_integration_disconnect_nat.py.in3
-rwxr-xr-xsrc/integration-tests/test_integration_reconnect.py.in113
-rwxr-xr-xsrc/integration-tests/test_integration_reconnect_nat.py.in3
-rw-r--r--src/multicast/.gitignore7
-rw-r--r--src/multicast/Makefile.am79
-rw-r--r--src/multicast/gnunet-multicast.c79
-rw-r--r--src/multicast/gnunet-service-multicast.c2234
-rw-r--r--src/multicast/multicast.conf.in22
-rw-r--r--src/multicast/multicast.h303
-rw-r--r--src/multicast/multicast_api.c1399
-rw-r--r--src/multicast/test_multicast.c758
-rw-r--r--src/multicast/test_multicast.conf56
-rw-r--r--src/multicast/test_multicast_2peers.c520
-rw-r--r--src/multicast/test_multicast_line.conf63
-rw-r--r--src/multicast/test_multicast_multipeer.c643
-rw-r--r--src/multicast/test_multicast_star.conf64
-rw-r--r--src/namecache/plugin_namecache_flat.c2
-rw-r--r--src/namecache/test_plugin_namecache.c4
-rw-r--r--src/namestore/gnunet-service-namestore.c45
-rw-r--r--src/namestore/plugin_namestore_heap.c93
-rw-r--r--src/namestore/plugin_namestore_postgres.c1
-rw-r--r--src/namestore/plugin_namestore_sqlite.c1
-rw-r--r--src/namestore/test_plugin_namestore.c7
-rw-r--r--src/peerinfo/peerinfo_api.c5
-rw-r--r--src/peerstore/Makefile.am4
-rw-r--r--src/peerstore/peerstore_api.c140
-rw-r--r--src/peerstore/plugin_peerstore_flat.c4
-rw-r--r--src/peerstore/test_plugin_peerstore.c4
-rw-r--r--src/pq/pq_result_helper.c2
-rw-r--r--src/psyc/.gitignore2
-rw-r--r--src/psyc/Makefile.am77
-rw-r--r--src/psyc/gnunet-service-psyc.c2860
-rw-r--r--src/psyc/psyc.conf.in12
-rw-r--r--src/psyc/psyc.h178
-rw-r--r--src/psyc/psyc_api.c1584
-rw-r--r--src/psyc/psyc_test_lib.h67
-rw-r--r--src/psyc/test_psyc.c1018
-rw-r--r--src/psyc/test_psyc.conf28
-rw-r--r--src/psyc/test_psyc2.c284
-rw-r--r--src/psyc/test_psyc_api_join.c282
-rw-r--r--src/psycstore/.gitignore5
-rw-r--r--src/psycstore/Makefile.am155
-rw-r--r--src/psycstore/gnunet-service-psycstore.c1049
-rw-r--r--src/psycstore/plugin_psycstore_mysql.c1960
-rw-r--r--src/psycstore/plugin_psycstore_postgres.c1530
-rw-r--r--src/psycstore/plugin_psycstore_sqlite.c1948
-rw-r--r--src/psycstore/psycstore.conf.in28
-rw-r--r--src/psycstore/psycstore.h520
-rw-r--r--src/psycstore/psycstore_api.c1285
-rw-r--r--src/psycstore/test_plugin_psycstore.c532
-rw-r--r--src/psycstore/test_plugin_psycstore_mysql.conf7
-rw-r--r--src/psycstore/test_plugin_psycstore_postgres.conf2
-rw-r--r--src/psycstore/test_plugin_psycstore_sqlite.conf2
-rw-r--r--src/psycstore/test_psycstore.c586
-rw-r--r--src/psycstore/test_psycstore.conf8
-rw-r--r--src/psycutil/.gitignore1
-rw-r--r--src/psycutil/Makefile.am45
-rw-r--r--src/psycutil/psyc_env.c196
-rw-r--r--src/psycutil/psyc_message.c1355
-rw-r--r--src/psycutil/psyc_slicer.c711
-rw-r--r--src/psycutil/test_psyc_env.c96
-rw-r--r--src/rest-plugins/Makefile.am2
-rw-r--r--src/rest-plugins/plugin_rest_openid_connect.c98
-rw-r--r--src/revocation/test_local_revocation.py.in1
-rw-r--r--src/rps/gnunet-rps-profiler.c16
-rw-r--r--src/rps/gnunet-service-rps.c173
-rw-r--r--src/rps/gnunet-service-rps_custommap.c39
-rw-r--r--src/rps/profiler_rps.conf3
-rw-r--r--src/rps/rps-test_util.c55
-rw-r--r--src/rps/rps-test_util.h4
-rw-r--r--src/rps/rps.h2
-rw-r--r--src/rps/rps_api.c2
-rw-r--r--src/rps/test_rps.c4
-rw-r--r--src/rps/test_rps.conf2
-rw-r--r--src/secretsharing/gnunet-service-secretsharing.c60
-rw-r--r--src/secretsharing/secretsharing.conf.in3
-rw-r--r--src/secretsharing/test_secretsharing.conf4
-rw-r--r--src/social/.gitignore3
-rw-r--r--src/social/Makefile.am79
-rw-r--r--src/social/gnunet-service-social.c3760
-rw-r--r--src/social/gnunet-social.c1411
-rw-r--r--src/social/social.conf.in15
-rw-r--r--src/social/social.h292
-rw-r--r--src/social/social_api.c2827
-rw-r--r--src/social/test_social.c1449
-rw-r--r--src/social/test_social.conf19
-rw-r--r--src/sq/sq.c2
-rw-r--r--src/testbed/test_testbed_api_template.conf4
-rw-r--r--src/testing/Makefile.am3
-rw-r--r--src/testing/test_testing_defaults.conf4
-rw-r--r--src/testing/test_testing_sharedservices.conf4
-rw-r--r--src/testing/testing.c8
-rw-r--r--src/topology/friends.c2
-rw-r--r--src/topology/test_gnunet_daemon_topology_data.conf4
-rw-r--r--src/transport/Makefile.am13
-rw-r--r--src/transport/gnunet-communicator-tcp.c2
-rw-r--r--src/transport/gnunet-communicator-udp.c8
-rw-r--r--src/transport/gnunet-service-tng.c349
-rw-r--r--src/transport/gnunet-service-transport_validation.c5
-rw-r--r--src/transport/plugin_transport_tcp.c8
-rw-r--r--src/transport/transport.h26
-rw-r--r--src/transport/transport_api2_address.c249
-rw-r--r--src/transport/transport_api_core.c2
-rw-r--r--src/util/.gitignore1
-rw-r--r--src/util/Makefile.am9
-rw-r--r--src/util/container_multihashmap.c23
-rw-r--r--src/util/container_multihashmap32.c26
-rw-r--r--src/util/container_multipeermap.c34
-rw-r--r--src/util/container_multishortmap.c36
-rw-r--r--src/util/dnsparser.c13
-rwxr-xr-xsrc/util/gnunet-qr.py.in6
-rw-r--r--src/util/gnunet-service-resolver.c392
-rw-r--r--src/util/mq.c1
-rw-r--r--src/util/scheduler.c4
-rw-r--r--src/util/service.c2
282 files changed, 21033 insertions, 63817 deletions
diff --git a/.gitignore b/.gitignore
index 4f58c79ac..230946ed6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -55,3 +55,6 @@ flake8.log
55.cache/ 55.cache/
56__pycache__/ 56__pycache__/
57build-aux/ 57build-aux/
58src/ats/test_ats2_lib
59doc/handbook/gversion.texi
60doc/tutorial/gversion.texi
diff --git a/AUTHORS b/AUTHORS
index 718038ab8..829a0803e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,9 +1,9 @@
1Program: GNUnet 1Program: GNUnet
2Homepage: https://gnunet.org/ 2Homepage: https://gnunet.org/
3Maintainer: Christian Grothoff <christian@grothoff.org> 3Maintainer: Christian Grothoff <christian@grothoff.org>
4Bug reports: https://gnunet.org/bugs/ 4Bug reports: https://bugs.gnunet.org
5Security related bug reports: security@gnunet.org 5Security related bug reports: security@gnunet.org
6License: some GPLv2+, mostly GPLv3+ 6License: some GPLv2+, mostly AGPLv3+
7 7
8Primary developers (0.9.x series): 8Primary developers (0.9.x series):
9Alejandra Morales 9Alejandra Morales
@@ -123,7 +123,8 @@ Nix: : viric, rahul
123OpenWrt/LEDE : Daniel Golle <daniel@makrotopia.org> 123OpenWrt/LEDE : Daniel Golle <daniel@makrotopia.org>
124OS X : Jussi Eloranta <eloranta@cc.jyu.fi> 124OS X : Jussi Eloranta <eloranta@cc.jyu.fi>
125Gentoo : Carlo von lynX <psyc://loupsycedyglgamf.onion/~lynX> 125Gentoo : Carlo von lynX <psyc://loupsycedyglgamf.onion/~lynX>
126 Nils Gillmann <ng0@n0.is> 126 N. Gillmann <ng0@n0.is>
127NetBSD pkgsrc : N. Gillmann <ng0@n0.is>
127 128
128If you have contributed and are not listed here, please 129If you have contributed and are not listed here, please
129notify one of the maintainers in order to be added. 130notify one of the maintainers in order to be added.
diff --git a/Makefile.am b/Makefile.am
index ad32cf920..fd18d7c3c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3,7 +3,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/include
3 3
4if DOCUMENTATION_ONLY 4if DOCUMENTATION_ONLY
5 SUBDIRS = doc 5 SUBDIRS = doc
6else 6else
7 SUBDIRS = m4 src po pkgconfig 7 SUBDIRS = m4 src po pkgconfig
8if DOCUMENTATION 8if DOCUMENTATION
9 SUBDIRS += doc 9 SUBDIRS += doc
@@ -17,7 +17,6 @@ endif
17EXTRA_DIST = \ 17EXTRA_DIST = \
18 ABOUT-NLS \ 18 ABOUT-NLS \
19 config.rpath \ 19 config.rpath \
20 install-sh \
21 acinclude.m4 \ 20 acinclude.m4 \
22 README.1st 21 README.1st
23 22
@@ -28,4 +27,3 @@ docdir = $(datadir)/doc/gnunet/
28doc_DATA = COPYING README 27doc_DATA = COPYING README
29 28
30ACLOCAL_AMFLAGS = -I m4 29ACLOCAL_AMFLAGS = -I m4
31
diff --git a/README b/README
index 43d6671d7..4cfba4070 100644
--- a/README
+++ b/README
@@ -23,6 +23,8 @@ fork!
23 23
24Additional documentation about GNUnet can be found at 24Additional documentation about GNUnet can be found at
25https://gnunet.org/ and in the 'doc/' folder. 25https://gnunet.org/ and in the 'doc/' folder.
26Online documentation is provided at
27'https://docs.gnunet.org' and 'https://tutorial.gnunet.org'.
26 28
27 29
28Dependencies: 30Dependencies:
@@ -32,7 +34,7 @@ These are the direct dependencies for running GNUnet:
32 34
33- libmicrohttpd >= 0.9.42 35- libmicrohttpd >= 0.9.42
34- libgcrypt >= 1.6 36- libgcrypt >= 1.6
35- libgnurl >= 7.35.0 (recommended, available from https://gnunet.org/gnurl) 37- libgnurl >= 7.35.0 (recommended, available from https://gnunet.org/en/gnurl.html)
36- libcurl >= 7.35.0 (alternative to libgnurl) 38- libcurl >= 7.35.0 (alternative to libgnurl)
37- libunistring >= 0.9.2 39- libunistring >= 0.9.2
38- gnutls >= 3.2.12 (highly recommended a gnutls linked against libunbound) 40- gnutls >= 3.2.12 (highly recommended a gnutls linked against libunbound)
@@ -41,14 +43,17 @@ These are the direct dependencies for running GNUnet:
41 or 43 or
42 - libidn >= 1.0 44 - libidn >= 1.0
43- libextractor >= 0.6.1 (highly recommended) 45- libextractor >= 0.6.1 (highly recommended)
44- openssl >= 1.0 (binary, used to generate X.509 certificate) 46- openssl >= 1.0 (binary, used to generate X.509 certificate
47 for gnunet-gns-proxy-setup-ca)
48- nss (certutil binary, for
49 gnunet-gns-proxy-setup-ca)
45- libltdl >= 2.2 (part of GNU libtool) 50- libltdl >= 2.2 (part of GNU libtool)
46- sqlite >= 3.8 (default database, required) 51- sqlite >= 3.8 (default database, required)
47- mysql >= 5.1 (alternative to sqlite) 52- mysql >= 5.1 (alternative to sqlite)
48- postgres >= 9.5 (alternative to sqlite) 53- postgres >= 9.5 (alternative to sqlite)
49- Texinfo >= 5.2 [*1] 54- Texinfo >= 5.2 [*1]
50- makeinfo >= 4.8 (at least 4.8 at the time of writing is tested) 55- makeinfo >= 4.8
51- which (for the bootstrap script) 56- which (bootstrap script and some Makefiles)
52- gettext 57- gettext
53- zlib 58- zlib
54- pkg-config 59- pkg-config
@@ -57,8 +62,8 @@ These are the direct dependencies for running GNUnet:
57These are the dependencies for GNUnet's testsuite: 62These are the dependencies for GNUnet's testsuite:
58 63
59- Bash (optional (?), for some tests) 64- Bash (optional (?), for some tests)
60- python >= 2.7 (optional, only python 2.7 is supported) 65- python >= 3.7 (optional, only python 3.7 is supported)
61- python-future >= 2.7 (optional, only python 2.7 is supported) 66- python-future >= 3.7 (optional, only python 3.7 is supported)
62 67
63 68
64These are the optional dependencies: 69These are the optional dependencies:
@@ -67,13 +72,14 @@ These are the optional dependencies:
67- libpulse >= 2.0 (optional, for experimental conversation tool) 72- libpulse >= 2.0 (optional, for experimental conversation tool)
68- libogg >= 1.3.0 (optional, for experimental conversation tool) 73- libogg >= 1.3.0 (optional, for experimental conversation tool)
69- libnss (optional, certtool binary (for convenient installation of GNS proxy)) 74- libnss (optional, certtool binary (for convenient installation of GNS proxy))
70- python-future (optional, for some testcases and utilities) 75- python2.7-future (optional, for gnunet-qr)
71- python-zbar >= 0.10 (optional, for gnunet-qr) 76- python-zbar >= 0.10 (optional, for gnunet-qr)
72- TeX Live >= 2012 (optional, for gnunet-bcd[*]) 77- TeX Live >= 2012 (optional, for gnunet-bcd[*])
73- texi2mdoc (optional, for automatic mdoc generation [*2]) 78- texi2mdoc (optional, for automatic mdoc generation [*2])
74- libglpk >= 4.45 (optional, for experimental code) 79- libglpk >= 4.45 (optional, for experimental code)
75- perl5 (optional, for some utilities) 80- perl5 (optional, for some utilities)
76- python >= 2.7 (optional, for gnunet-qr, only python 2.7 is supported) 81- guile 1.6.4 (or later up to 1.8?, optional for gnunet-download-manager)
82- python2.7 >= 2.7 (optional, for gnunet-qr, only python 2.7 is supported)
77- bluez (optional, for bluetooth support) 83- bluez (optional, for bluetooth support)
78- miniupnpc 84- miniupnpc
79- libpbc >= 0.5.14 (optional, for Attribute-Based Encryption and Identity Provider functionality) 85- libpbc >= 0.5.14 (optional, for Attribute-Based Encryption and Identity Provider functionality)
@@ -160,22 +166,12 @@ Building GNUnet from source
160~~~~~~~~~~~~~~~~~~~~~~~~~~~ 166~~~~~~~~~~~~~~~~~~~~~~~~~~~
161 167
162IMPORTANT: You can read further notes about compilation from source in 168IMPORTANT: You can read further notes about compilation from source in
163the 'doc/FILENAME' document, which includes notes about specific 169the handbook under doc/handbook/, which includes notes about specific
164requirements for operating systems aswell. If you are a package 170requirements for operating systems aswell. If you are a package
165mantainer for an Operating System we invite you to add your notes if 171mantainer for an Operating System we invite you to add your notes if
166you feel it is necessary and can not be covered in your Operating 172you feel it is necessary and can not be covered in your Operating
167System's documentation. 173System's documentation.
168 174
169If you are building GNUnet from source you are either interested
170in furthering its development (we have further notes for developer
171builds in our 'GNUnet Developer Handbook') or you don't trust other
172people's binaries or your Operating System doesn't provide any
173binary package (at the moment).
174
175If you're on Gentoo you can build GNUnet using the recipes provided
176in the 'youbroketheinternet' overlay. Other Operating Systems may
177unintentionally require you to build GNUnet from source.
178
179Two prominent examples which currently lack cross-compilation 175Two prominent examples which currently lack cross-compilation
180support in GNUnet (and native binaries) are MS Windows and Apple macOS. 176support in GNUnet (and native binaries) are MS Windows and Apple macOS.
181For macOS we recommend you to do the build process via Homebrew and a 177For macOS we recommend you to do the build process via Homebrew and a
@@ -199,7 +195,7 @@ If you install from source, you need to install GNU libextractor first
199(download from https://www.gnu.org/software/libextractor/). We also 195(download from https://www.gnu.org/software/libextractor/). We also
200recommend installing GNU libmicrohttpd (download from 196recommend installing GNU libmicrohttpd (download from
201https://www.gnu.org/software/libmicrohttpd/). Furthermore we recommend 197https://www.gnu.org/software/libmicrohttpd/). Furthermore we recommend
202libgnurl (from https://gnunet.org/gnurl). 198libgnurl (from https://gnunet.org/en/gnurl.html).
203Then you can start the actual GNUnet compilation process with: 199Then you can start the actual GNUnet compilation process with:
204 200
205 201
@@ -311,7 +307,7 @@ Usage
311===== 307=====
312 308
313For detailed usage notes, instructions and examples, refer to the 309For detailed usage notes, instructions and examples, refer to the
314included 'GNUnet User Handbook'. 310included 'GNUnet Handbook'.
315 311
316First, you must obtain an initial list of GNUnet hosts. Knowing a 312First, you must obtain an initial list of GNUnet hosts. Knowing a
317single peer is sufficient since after that GNUnet propagates 313single peer is sufficient since after that GNUnet propagates
@@ -372,7 +368,7 @@ Hacking GNUnet
372============== 368==============
373 369
374Contributions are welcome. Please submit bugs you find to 370Contributions are welcome. Please submit bugs you find to
375https://gnunet.org/bugs/. 371https://bugs.gnunet.org/ or our bugs mailinglist.
376Please make sure to run the script "contrib/scripts/gnunet-bugreport" 372Please make sure to run the script "contrib/scripts/gnunet-bugreport"
377and include the output with your bug reports. More about how to 373and include the output with your bug reports. More about how to
378report bugs can be found in the GNUnet FAQ on the webpage. Submit 374report bugs can be found in the GNUnet FAQ on the webpage. Submit
@@ -392,7 +388,7 @@ $ make install
392$ export $GNUNET_PREFIX=$SOMEWHERE 388$ export $GNUNET_PREFIX=$SOMEWHERE
393$ make check 389$ make check
394 390
395Some of the testcases require python >= 2.7, and the python modules 391Some of the testcases require python >= 3.7, and the python modules
396"python-future" (http://python-future.org/) and "pexpect" to be installed. 392"python-future" (http://python-future.org/) and "pexpect" to be installed.
397If any testcases fail to pass on your system, run 393If any testcases fail to pass on your system, run
398"contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport" 394"contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport"
@@ -457,9 +453,9 @@ Further Reading
457 There are currently 2 ways to get them: 453 There are currently 2 ways to get them:
458 454
459 * Using git: 455 * Using git:
460 git clone https://gnunet.org/git/bibliography.git 456 git clone https://git.gnunet.org/bibliography.git
461 * Using Drupal: 457 * Using Drupal:
462 https://gnunet.org/bibliography 458 https://old.gnunet.org/bibliography
463 459
464 The Drupal access will be replaced by a new interface to our 460 The Drupal access will be replaced by a new interface to our
465 bibliography in 2019. 461 bibliography in 2019.
@@ -469,8 +465,8 @@ Stay tuned
469========== 465==========
470 466
471* https://gnunet.org/ 467* https://gnunet.org/
472* https://gnunet.org/bugs/ 468* https://bugs.gnunet.org
473* https://gnunet.org/git/ 469* https://git.gnunet.org
474* http://www.gnu.org/software/gnunet/ 470* http://www.gnu.org/software/gnunet/
475* http://mail.gnu.org/mailman/listinfo/gnunet-developers 471* http://mail.gnu.org/mailman/listinfo/gnunet-developers
476* http://mail.gnu.org/mailman/listinfo/help-gnunet 472* http://mail.gnu.org/mailman/listinfo/help-gnunet
diff --git a/configure.ac b/configure.ac
index 3dd1ce3e6..87a60cb04 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
1# This file is part of GNUnet. 1# This file is part of GNUnet.
2# (C) 2001--2018 GNUnet e.V. 2# (C) 2001--2019 GNUnet e.V.
3# 3#
4# GNUnet is free software: you can redistribute it and/or modify it 4# GNUnet is free software: you can redistribute it and/or modify it
5# under the terms of the GNU Affero General Public License as published 5# under the terms of the GNU Affero General Public License as published
@@ -71,6 +71,7 @@ case "$host_os" in
71 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS" 71 CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
72 CFLAGS="-fno-common $CFLAGS" 72 CFLAGS="-fno-common $CFLAGS"
73 AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS]) 73 AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
74 AC_CHECK_LIB(intl, gettext)
74 build_target="darwin" 75 build_target="darwin"
75 DEFAULT_INTERFACE="\"en0\"" 76 DEFAULT_INTERFACE="\"en0\""
76 LIBPREFIX= 77 LIBPREFIX=
@@ -192,8 +193,8 @@ AC_UNALIGNED_64_ACCESS
192 193
193# some other checks for standard libs 194# some other checks for standard libs
194AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32]) 195AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
195AC_SEARCH_LIBS([memrchr], [], [], 196AC_SEARCH_LIBS([memrchr], [],
196 AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported])) 197 AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported]), [])
197AC_CHECK_LIB(socket, socket) 198AC_CHECK_LIB(socket, socket)
198AC_CHECK_LIB(m, log) 199AC_CHECK_LIB(m, log)
199AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported])) 200AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
@@ -206,6 +207,13 @@ AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
206AM_CONDITIONAL(HAVE_SSH_KEY, ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n) 207AM_CONDITIONAL(HAVE_SSH_KEY, ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n)
207rm -f /tmp/gnunet_test_cosks_ssh_garbage 208rm -f /tmp/gnunet_test_cosks_ssh_garbage
208 209
210# autotools' m4 for python has no maximum version!
211# python3.7 for tests
212m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[python3 python3.7 python])
213AM_PATH_PYTHON([3.7],, [:])
214AC_SUBST([PYTHON])
215AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
216
209# iptables is a soft requirement to run tests 217# iptables is a soft requirement to run tests
210AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false) 218AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
211 219
@@ -369,7 +377,6 @@ AC_ARG_ENABLE(gcc-hardening,
369 LDFLAGS="$LDFLAGS -pie" 377 LDFLAGS="$LDFLAGS -pie"
370fi]) 378fi])
371 379
372
373# Linker hardening options 380# Linker hardening options
374# Currently these options are ELF specific - you can't use this with MacOSX 381# Currently these options are ELF specific - you can't use this with MacOSX
375AC_ARG_ENABLE(linker-hardening, 382AC_ARG_ENABLE(linker-hardening,
@@ -862,7 +869,7 @@ AS_IF([test x$my_with_libidn2 = x1],
862 LIBS="-lidn2 $LIBS" 869 LIBS="-lidn2 $LIBS"
863 AC_DEFINE_UNQUOTED([HAVE_LIBIDN2], 870 AC_DEFINE_UNQUOTED([HAVE_LIBIDN2],
864 [1], 871 [1],
865 [Define to 1 if you have 'libidn2' (-lidn).])], 872 [Define to 1 if you have 'libidn2' (-lidn2).])],
866 [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2" 873 [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2"
867 MISSING_SEP=", "])]) 874 MISSING_SEP=", "])])
868AM_CONDITIONAL(HAVE_LIBIDN2, test x$working_libidn2 = x1) 875AM_CONDITIONAL(HAVE_LIBIDN2, test x$working_libidn2 = x1)
@@ -1208,10 +1215,6 @@ AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
1208# restore LIBS 1215# restore LIBS
1209LIBS=$SAVE_LIBS 1216LIBS=$SAVE_LIBS
1210 1217
1211# check for python & pexpect (used for some testcases only)
1212AM_PATH_PYTHON([2.6],, [:])
1213AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
1214
1215# check for gettext 1218# check for gettext
1216AM_GNU_GETTEXT([external]) 1219AM_GNU_GETTEXT([external])
1217AM_GNU_GETTEXT_VERSION([0.18.1]) 1220AM_GNU_GETTEXT_VERSION([0.18.1])
@@ -1297,6 +1300,8 @@ AC_SUBST(LIBPREFIX)
1297AC_SUBST(DLLDIR) 1300AC_SUBST(DLLDIR)
1298AC_SUBST(EXT_LIB_PATH) 1301AC_SUBST(EXT_LIB_PATH)
1299 1302
1303DATAROOTDIR=$datarootdir
1304AC_SUBST(DATAROOTDIR)
1300 1305
1301# test for sudo 1306# test for sudo
1302AC_MSG_CHECKING(for sudo) 1307AC_MSG_CHECKING(for sudo)
@@ -1436,23 +1441,6 @@ AC_MSG_RESULT($enable_test_run)
1436AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"]) 1441AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
1437 1442
1438 1443
1439# should monkey be used when running (certain) services?
1440AC_MSG_CHECKING(whether to run with monkey)
1441AC_ARG_ENABLE([monkey],
1442 [AS_HELP_STRING([--enable-monkey], [enable running with monkey])],
1443 [enable_monkey=${enableval}],
1444 [enable_monkey=no])
1445AC_MSG_RESULT($enable_monkey)
1446AM_CONDITIONAL([ENABLE_MONKEY], [test "x$enable_monkey" = "xyes"])
1447if test "x$enable_monkey" = "xyes"
1448then
1449 MONKEYPREFIX="pathologist -d $(eval echo ${datarootdir}/gnunet/gnunet.sqlite) -p 30 --"
1450else
1451 MONKEYPREFIX=""
1452fi
1453AC_SUBST(MONKEYPREFIX)
1454
1455
1456AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)]) 1444AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
1457AC_ARG_ENABLE([benchmark], 1445AC_ARG_ENABLE([benchmark],
1458 [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])], 1446 [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
@@ -1542,7 +1530,7 @@ AC_MSG_CHECKING(whether to start peer's services on demand by default)
1542AC_ARG_ENABLE([autostart], 1530AC_ARG_ENABLE([autostart],
1543 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])], 1531 [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
1544 [enable_autostart=${enableval} 1532 [enable_autostart=${enableval}
1545 if test "x$enable_autostart" == "xno" 1533 if test "x$enable_autostart" = "xno"
1546 then 1534 then
1547 START_ON_DEMAND="NO" 1535 START_ON_DEMAND="NO"
1548 fi 1536 fi
@@ -1766,8 +1754,6 @@ src/include/Makefile
1766src/integration-tests/Makefile 1754src/integration-tests/Makefile
1767src/json/Makefile 1755src/json/Makefile
1768src/hostlist/Makefile 1756src/hostlist/Makefile
1769src/multicast/Makefile
1770src/multicast/multicast.conf
1771src/my/Makefile 1757src/my/Makefile
1772src/mysql/Makefile 1758src/mysql/Makefile
1773src/namecache/Makefile 1759src/namecache/Makefile
@@ -1787,11 +1773,6 @@ src/peerinfo-tool/Makefile
1787src/peerstore/Makefile 1773src/peerstore/Makefile
1788src/peerstore/peerstore.conf 1774src/peerstore/peerstore.conf
1789src/pq/Makefile 1775src/pq/Makefile
1790src/psycutil/Makefile
1791src/psyc/Makefile
1792src/psyc/psyc.conf
1793src/psycstore/Makefile
1794src/psycstore/psycstore.conf
1795src/pt/Makefile 1776src/pt/Makefile
1796src/regex/Makefile 1777src/regex/Makefile
1797src/regex/regex.conf 1778src/regex/regex.conf
@@ -1805,8 +1786,6 @@ src/scalarproduct/Makefile
1805src/scalarproduct/scalarproduct.conf 1786src/scalarproduct/scalarproduct.conf
1806src/set/Makefile 1787src/set/Makefile
1807src/set/set.conf 1788src/set/set.conf
1808src/social/Makefile
1809src/social/social.conf
1810src/sq/Makefile 1789src/sq/Makefile
1811src/statistics/Makefile 1790src/statistics/Makefile
1812src/statistics/statistics.conf 1791src/statistics/statistics.conf
@@ -1842,7 +1821,6 @@ pkgconfig/gnunetdatacache.pc
1842pkgconfig/gnunetdatastore.pc 1821pkgconfig/gnunetdatastore.pc
1843pkgconfig/gnunetdht.pc 1822pkgconfig/gnunetdht.pc
1844pkgconfig/gnunetdns.pc 1823pkgconfig/gnunetdns.pc
1845pkgconfig/gnunetdv.pc
1846pkgconfig/gnunetenv.pc 1824pkgconfig/gnunetenv.pc
1847pkgconfig/gnunetfragmentation.pc 1825pkgconfig/gnunetfragmentation.pc
1848pkgconfig/gnunetfs.pc 1826pkgconfig/gnunetfs.pc
@@ -1850,21 +1828,17 @@ pkgconfig/gnunetgns.pc
1850pkgconfig/gnunethello.pc 1828pkgconfig/gnunethello.pc
1851pkgconfig/gnunetidentity.pc 1829pkgconfig/gnunetidentity.pc
1852pkgconfig/gnunetmicrophone.pc 1830pkgconfig/gnunetmicrophone.pc
1853pkgconfig/gnunetmulticast.pc
1854pkgconfig/gnunetmysql.pc 1831pkgconfig/gnunetmysql.pc
1855pkgconfig/gnunetnamestore.pc 1832pkgconfig/gnunetnamestore.pc
1856pkgconfig/gnunetnat.pc 1833pkgconfig/gnunetnat.pc
1857pkgconfig/gnunetnse.pc 1834pkgconfig/gnunetnse.pc
1858pkgconfig/gnunetpeerinfo.pc 1835pkgconfig/gnunetpeerinfo.pc
1859pkgconfig/gnunetpq.pc 1836pkgconfig/gnunetpq.pc
1860pkgconfig/gnunetpsyc.pc
1861pkgconfig/gnunetpsycstore.pc
1862pkgconfig/gnunetregex.pc 1837pkgconfig/gnunetregex.pc
1863pkgconfig/gnunetrevocation.pc 1838pkgconfig/gnunetrevocation.pc
1864pkgconfig/gnunetrps.pc 1839pkgconfig/gnunetrps.pc
1865pkgconfig/gnunetscalarproduct.pc 1840pkgconfig/gnunetscalarproduct.pc
1866pkgconfig/gnunetset.pc 1841pkgconfig/gnunetset.pc
1867pkgconfig/gnunetsocial.pc
1868pkgconfig/gnunetspeaker.pc 1842pkgconfig/gnunetspeaker.pc
1869pkgconfig/gnunetstatistics.pc 1843pkgconfig/gnunetstatistics.pc
1870pkgconfig/gnunettestbed.pc 1844pkgconfig/gnunettestbed.pc
@@ -1974,7 +1948,7 @@ require fresh login to come into effect):
1974"USERNAME" with the respective login names). If you have a global IP 1948"USERNAME" with the respective login names). If you have a global IP
1975address, no further configuration is required. 1949address, no further configuration is required.
1976 1950
1977For more detailed setup instructions, see https://gnunet.org/installation 1951For more detailed setup instructions, see https://docs.gnunet.org/
1978 1952
1979Optionally, download and compile gnunet-gtk to get a GUI for 1953Optionally, download and compile gnunet-gtk to get a GUI for
1980file-sharing and configuration. This is particularly recommended 1954file-sharing and configuration. This is particularly recommended
diff --git a/contrib/apparmor/gnunet-mesh b/contrib/apparmor/gnunet-mesh
deleted file mode 100644
index 9f5b07fc5..000000000
--- a/contrib/apparmor/gnunet-mesh
+++ /dev/null
@@ -1,13 +0,0 @@
1# Last Modified: Fri Aug 7 18:02:28 2015
2#include <tunables/global>
3#include <tunables/gnunet>
4
5profile @{GNUNET_PREFIX}/bin/gnunet-mesh {
6 #include <abstractions/base>
7 #include <abstractions/gnunet-common>
8
9 @{GNUNET_PREFIX}/bin/gnunet-mesh mr,
10
11 # Site-specific additions and overrides. See local/README for details.
12 #include <local/gnunet>
13}
diff --git a/contrib/branding/logo/gnunet-logo-dark-only-text.svg b/contrib/branding/logo/gnunet-logo-dark-only-text.svg
new file mode 100644
index 000000000..f4ca0f9d2
--- /dev/null
+++ b/contrib/branding/logo/gnunet-logo-dark-only-text.svg
@@ -0,0 +1,1144 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg
3 xmlns:dc="http://purl.org/dc/elements/1.1/"
4 xmlns:cc="http://creativecommons.org/ns#"
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6 xmlns:svg="http://www.w3.org/2000/svg"
7 xmlns="http://www.w3.org/2000/svg"
8 xmlns:xlink="http://www.w3.org/1999/xlink"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 version="1.1"
12 id="svg2"
13 height="42.057301"
14 width="159.35417"
15 sodipodi:docname="gnunet-logo-dark-only-text.svg"
16 inkscape:version="0.92.3 (2405546, 2018-03-11)">
17 <sodipodi:namedview
18 pagecolor="#ffffff"
19 bordercolor="#666666"
20 borderopacity="1"
21 objecttolerance="10"
22 gridtolerance="10"
23 guidetolerance="10"
24 inkscape:pageopacity="0"
25 inkscape:pageshadow="2"
26 inkscape:window-width="1130"
27 inkscape:window-height="760"
28 id="namedview5639"
29 showgrid="false"
30 inkscape:zoom="3.2071429"
31 inkscape:cx="-2.4948441"
32 inkscape:cy="7.4954053"
33 inkscape:window-x="0"
34 inkscape:window-y="0"
35 inkscape:window-maximized="0"
36 inkscape:current-layer="svg2" />
37 <title
38 id="title3310">logo for GNUnet</title>
39 <defs
40 id="defs4">
41 <linearGradient
42 id="gnunet">
43 <stop
44 style="stop-color:#ff0000;stop-opacity:0.58431375;"
45 offset="0"
46 id="stop9516" />
47 <stop
48 style="stop-color:#ffcc00;stop-opacity:1;"
49 offset="1"
50 id="stop9518" />
51 </linearGradient>
52 <linearGradient
53 id="linearGradient4094">
54 <stop
55 style="stop-color:#232323;stop-opacity:1;"
56 offset="0"
57 id="stop4096" />
58 <stop
59 style="stop-color:#4d4d4d;stop-opacity:1;"
60 offset="1"
61 id="stop4098" />
62 </linearGradient>
63 <linearGradient
64 id="linearGradient4014">
65 <stop
66 style="stop-color:#a0a0a0;stop-opacity:1;"
67 offset="0"
68 id="stop4016" />
69 <stop
70 style="stop-color:#ffffff;stop-opacity:1;"
71 offset="1"
72 id="stop4018" />
73 </linearGradient>
74 <linearGradient
75 id="linearGradient4678">
76 <stop
77 style="stop-color:#e5e5e5;stop-opacity:1;"
78 offset="0"
79 id="stop4680" />
80 <stop
81 style="stop-color:#d3cdcd;stop-opacity:1;"
82 offset="1"
83 id="stop4682" />
84 </linearGradient>
85 <linearGradient
86 id="linearGradient4341">
87 <stop
88 id="stop4343"
89 offset="0"
90 style="stop-color:#333333;stop-opacity:1;" />
91 <stop
92 id="stop4345"
93 offset="1"
94 style="stop-color:#484848;stop-opacity:1;" />
95 </linearGradient>
96 <linearGradient
97 id="linearGradient4696-5">
98 <stop
99 id="stop4698-6"
100 offset="0"
101 style="stop-color:#ffb638;stop-opacity:1;" />
102 <stop
103 id="stop4700-2"
104 offset="1"
105 style="stop-color:#f0ae26;stop-opacity:1;" />
106 </linearGradient>
107 <linearGradient
108 id="linearGradient4702-3-6">
109 <stop
110 id="stop4704-1"
111 offset="0"
112 style="stop-color:#ff0000;stop-opacity:0.58431375;" />
113 <stop
114 id="stop4706-8"
115 offset="1"
116 style="stop-color:#ffcc00;stop-opacity:1;" />
117 </linearGradient>
118 <color-profile
119 name="Artifex-PS-CMYK-Profile"
120 xlink:href="/usr/share/color/icc/ghostscript/ps_cmyk.icc"
121 id="color-profile5435" />
122 <linearGradient
123 y2="69.791016"
124 x2="177.04297"
125 y1="63.65625"
126 x1="142.96875"
127 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
128 gradientUnits="userSpaceOnUse"
129 id="linearGradient3138"
130 xlink:href="#linearGradient4702-3-6" />
131 <linearGradient
132 y2="1043.709"
133 x2="80.655251"
134 y1="1025.709"
135 x1="108.08774"
136 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
137 gradientUnits="userSpaceOnUse"
138 id="linearGradient3141"
139 xlink:href="#linearGradient4696-5" />
140 <linearGradient
141 y2="922.07178"
142 x2="78.000107"
143 y1="1004.8033"
144 x1="113.5146"
145 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
146 gradientUnits="userSpaceOnUse"
147 id="linearGradient3144"
148 xlink:href="#linearGradient4702-3-6" />
149 <linearGradient
150 y2="70.667412"
151 x2="176.60477"
152 y1="63.65625"
153 x1="142.96875"
154 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
155 gradientUnits="userSpaceOnUse"
156 id="linearGradient3148"
157 xlink:href="#linearGradient4702-3-6" />
158 <linearGradient
159 y2="70.667412"
160 x2="176.60477"
161 y1="63.65625"
162 x1="142.96875"
163 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
164 gradientUnits="userSpaceOnUse"
165 id="linearGradient3780"
166 xlink:href="#linearGradient4702-3-6" />
167 <linearGradient
168 y2="922.07178"
169 x2="78.000107"
170 y1="1004.8033"
171 x1="113.5146"
172 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
173 gradientUnits="userSpaceOnUse"
174 id="linearGradient3782"
175 xlink:href="#linearGradient4702-3-6" />
176 <linearGradient
177 y2="1043.709"
178 x2="80.655251"
179 y1="1025.709"
180 x1="108.08774"
181 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
182 gradientUnits="userSpaceOnUse"
183 id="linearGradient3784"
184 xlink:href="#linearGradient4696-5" />
185 <linearGradient
186 y2="69.791016"
187 x2="177.04297"
188 y1="63.65625"
189 x1="142.96875"
190 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
191 gradientUnits="userSpaceOnUse"
192 id="linearGradient3786"
193 xlink:href="#linearGradient4702-3-6" />
194 <filter
195 id="filter9204"
196 style="color-interpolation-filters:sRGB">
197 <feColorMatrix
198 id="feColorMatrix9194"
199 result="colormatrix"
200 values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -0.2125 -0.7154 -0.0721 1 0 "
201 in="SourceGraphic" />
202 <feComposite
203 k1="0"
204 id="feComposite9196"
205 result="composite"
206 k4="0"
207 k3="0"
208 k2="1"
209 operator="arithmetic"
210 in2="colormatrix"
211 in="SourceGraphic" />
212 <feGaussianBlur
213 id="feGaussianBlur9198"
214 result="blur1"
215 stdDeviation="5 0.01" />
216 <feGaussianBlur
217 id="feGaussianBlur9200"
218 result="blur2"
219 stdDeviation="0.01 5"
220 in="composite" />
221 <feBlend
222 id="feBlend9202"
223 result="blend"
224 mode="darken"
225 in2="blur1"
226 in="blur2" />
227 </filter>
228 <filter
229 id="filter9330"
230 style="color-interpolation-filters:sRGB">
231 <feGaussianBlur
232 id="feGaussianBlur9328"
233 result="blur"
234 stdDeviation="2 2" />
235 </filter>
236 </defs>
237 <metadata
238 id="metadata7">
239 <rdf:RDF>
240 <cc:Work
241 rdf:about="">
242 <dc:format>image/svg+xml</dc:format>
243 <dc:type
244 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
245 <dc:title>logo for GNUnet</dc:title>
246 <dc:creator>
247 <cc:Agent>
248 <dc:title>Luis Felipe López Acevedo, Amirouche Boubekki, carlo von lynX</dc:title>
249 </cc:Agent>
250 </dc:creator>
251 <dc:rights>
252 <cc:Agent>
253 <dc:title>GNUnet e.V.</dc:title>
254 </cc:Agent>
255 </dc:rights>
256 <cc:license
257 rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
258 <dc:description />
259 </cc:Work>
260 <cc:License
261 rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
262 <cc:permits
263 rdf:resource="http://creativecommons.org/ns#Reproduction" />
264 <cc:permits
265 rdf:resource="http://creativecommons.org/ns#Distribution" />
266 <cc:requires
267 rdf:resource="http://creativecommons.org/ns#Notice" />
268 <cc:requires
269 rdf:resource="http://creativecommons.org/ns#Attribution" />
270 <cc:permits
271 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
272 <cc:requires
273 rdf:resource="http://creativecommons.org/ns#ShareAlike" />
274 </cc:License>
275 </rdf:RDF>
276 </metadata>
277 <g
278 id="g5346"
279 style="display:none"
280 transform="translate(-467.72664,-836.92541)">
281 <text
282 xml:space="preserve"
283 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
284 x="453.95291"
285 y="869.96057"
286 id="text5344"><tspan
287 id="tspan5342"
288 x="453.95291"
289 y="869.96057"
290 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.33333206px;font-family:'Ubuntu Bold';-inkscape-font-specification:'Ubuntu Bold, ';fill:#ffffff;stroke-width:1.03365779px"
291 dx="0 0 0">gnu net</tspan></text>
292 </g>
293 <g
294 transform="translate(-467.72664,-836.92541)"
295 style="display:none"
296 id="g950">
297 <text
298 id="text948"
299 y="869.21057"
300 x="467.77612"
301 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
302 xml:space="preserve"><tspan
303 dx="0 -2.5 -3 0 -19.25 -2.5 -3"
304 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:1.03365779px"
305 y="869.21057"
306 x="467.77612"
307 id="tspan946">gnu net</tspan></text>
308 </g>
309 <g
310 id="g941"
311 style="display:none"
312 transform="translate(-80.31201,-247.1061)">
313 <ellipse
314 ry="17.690269"
315 rx="17.68549"
316 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
317 id="ellipse937"
318 cx="157.97346"
319 cy="180.65355" />
320 <ellipse
321 ry="17.690269"
322 rx="17.68549"
323 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
324 id="ellipse939"
325 cx="157.97346"
326 cy="111.16864" />
327 </g>
328 <g
329 transform="translate(-467.72664,-836.92541)"
330 style="display:none"
331 id="g935">
332 <g
333 aria-label="gnu net"
334 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto"
335 id="g933">
336 <path
337 d="m 423.90503,684.79003 h 22.14128 v 61.61056 q 0,11.55196 4.3855,16.04443 4.38546,4.49242 12.72857,4.49242 12.19374,0 20.00203,-9.94753 7.80828,-9.94753 7.80828,-27.48942 v -44.71046 h 22.14128 v 99.6893 h -22.14128 v -24.92231 q -3.31586,12.83553 -12.30071,20.10899 -8.98489,7.27346 -22.14132,7.27346 -15.29567,0 -23.95963,-9.94753 -8.664,-10.0545 -8.664,-30.59135 z"
338 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px"
339 id="path925"
340 inkscape:connector-curvature="0" />
341 <path
342 d="m 669.48029,784.47933 h -22.14128 v -61.50359 q 0,-11.65892 -4.3855,-16.15139 -4.38546,-4.49243 -12.72857,-4.49243 -12.30071,0 -20.10899,9.94753 -7.70132,9.94754 -7.70132,27.48947 v 44.71041 h -22.14128 v -99.6893 h 22.14128 v 25.02928 q 3.31586,-12.94249 12.30071,-20.10899 8.98489,-7.27346 22.14132,-7.27346 15.29567,0 23.95967,9.94753 8.66396,9.94753 8.66396,30.59135 z"
343 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px"
344 id="path927"
345 inkscape:connector-curvature="0" />
346 </g>
347 </g>
348 <g
349 id="g1296"
350 style="display:none"
351 transform="translate(-80.31201,-294.38421)">
352 <path
353 style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
354 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
355 id="path1256"
356 inkscape:connector-curvature="0" />
357 <path
358 style="fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
359 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
360 id="path1258"
361 inkscape:connector-curvature="0" />
362 <path
363 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
364 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
365 id="path1260"
366 inkscape:connector-curvature="0" />
367 <path
368 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
369 d="m 98.868943,129.31358 37.045597,48.02106"
370 id="path1262"
371 inkscape:connector-curvature="0" />
372 <path
373 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
374 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
375 id="path1264"
376 inkscape:connector-curvature="0" />
377 <path
378 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
379 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
380 id="path1266"
381 inkscape:connector-curvature="0" />
382 <path
383 transform="translate(-387.41463,-542.5412)"
384 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
385 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
386 id="path1268"
387 inkscape:connector-curvature="0" />
388 <path
389 transform="translate(-387.41463,-542.5412)"
390 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
391 d="m 601.57854,741.42859 -2.26809,-64.28015"
392 id="path1270"
393 inkscape:connector-curvature="0" />
394 <path
395 style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
396 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
397 id="path1272"
398 inkscape:connector-curvature="0" />
399 <path
400 transform="translate(-387.41463,-542.5412)"
401 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
402 d="m 475.69911,700.21367 24.57107,51.42411"
403 id="path1274"
404 inkscape:connector-curvature="0" />
405 <path
406 transform="translate(-387.41463,-542.5412)"
407 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
408 d="m 534.29164,751.63778 12.85257,40.08057"
409 id="path1276"
410 inkscape:connector-curvature="0" />
411 <path
412 transform="translate(-387.41463,-542.5412)"
413 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
414 d="m 525.21925,783.02162 0.37803,45.75234"
415 id="path1278"
416 inkscape:connector-curvature="0" />
417 <path
418 transform="translate(-387.41463,-542.5412)"
419 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
420 d="m 601.95657,742.56293 -12.09653,36.6775"
421 id="path1280"
422 inkscape:connector-curvature="0" />
423 <path
424 transform="translate(-387.41463,-542.5412)"
425 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
426 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
427 id="path1282"
428 inkscape:connector-curvature="0" />
429 <path
430 transform="translate(-387.41463,-542.5412)"
431 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
432 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
433 id="path1284"
434 inkscape:connector-curvature="0" />
435 <path
436 transform="translate(-387.41463,-542.5412)"
437 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
438 d="m 557.35064,768.27501 31.75336,10.5873"
439 id="path1286"
440 inkscape:connector-curvature="0" />
441 <path
442 transform="translate(-387.41463,-542.5412)"
443 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
444 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
445 id="path1288"
446 inkscape:connector-curvature="0" />
447 <path
448 transform="translate(-387.41463,-542.5412)"
449 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
450 d="m 524.46323,829.53019 44.98392,-0.37812"
451 id="path1290"
452 inkscape:connector-curvature="0" />
453 <path
454 transform="translate(-387.41463,-542.5412)"
455 style="display:inline;opacity:1;fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
456 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
457 id="path1292"
458 inkscape:connector-curvature="0" />
459 <path
460 transform="translate(-387.41463,-542.5412)"
461 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
462 d="m 409.92428,677.14844 54.05634,6.0499"
463 id="path1294"
464 inkscape:connector-curvature="0" />
465 </g>
466 <g
467 transform="translate(-80.31201,-294.38421)"
468 style="display:none"
469 id="g1254">
470 <ellipse
471 transform="translate(-387.41463,-542.5412)"
472 ry="4.1593032"
473 rx="4.1581793"
474 cy="829.24042"
475 cx="568.98083"
476 id="ellipse1194"
477 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
478 <ellipse
479 transform="translate(-387.41463,-542.5412)"
480 ry="4.1593032"
481 rx="4.1581793"
482 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
483 id="ellipse1196"
484 cx="588.85413"
485 cy="778.67493" />
486 <ellipse
487 transform="translate(-387.41463,-542.5412)"
488 ry="4.1593032"
489 rx="4.1581793"
490 cy="740.67249"
491 cx="601.57867"
492 id="ellipse1198"
493 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
494 <ellipse
495 transform="translate(-387.41463,-542.5412)"
496 ry="4.1593032"
497 rx="4.1581793"
498 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
499 id="ellipse1200"
500 cx="525.79852"
501 cy="829.24042" />
502 <ellipse
503 transform="translate(-387.41463,-542.5412)"
504 ry="4.1593032"
505 rx="4.1581793"
506 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
507 id="ellipse1202"
508 cx="557.82654"
509 cy="768.71582" />
510 <ellipse
511 transform="translate(-387.41463,-542.5412)"
512 ry="4.1593032"
513 rx="4.1581793"
514 cy="783.02173"
515 cx="525.21936"
516 id="ellipse1204"
517 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
518 <ellipse
519 transform="translate(-387.41463,-542.5412)"
520 ry="4.1593032"
521 rx="4.1581793"
522 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
523 id="ellipse1206"
524 cx="400.09586"
525 cy="647.34271" />
526 <ellipse
527 transform="translate(-387.41463,-542.5412)"
528 ry="4.1593032"
529 rx="4.1581793"
530 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
531 id="ellipse1208"
532 cx="450.11285"
533 cy="628.31934" />
534 <ellipse
535 transform="translate(-387.41463,-542.5412)"
536 ry="4.1593032"
537 rx="4.1581793"
538 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
539 id="ellipse1210"
540 cx="622.36951"
541 cy="699.45752" />
542 <ellipse
543 transform="translate(-387.41463,-542.5412)"
544 ry="4.1593032"
545 rx="4.1581793"
546 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
547 id="ellipse1212"
548 cx="547.21771"
549 cy="792.29773" />
550 <ellipse
551 transform="translate(-387.41463,-542.5412)"
552 ry="4.1593032"
553 rx="4.1581793"
554 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
555 id="ellipse1214"
556 cx="566.20697"
557 cy="800.12549" />
558 <ellipse
559 transform="translate(-387.41463,-542.5412)"
560 ry="4.1593032"
561 rx="4.1581793"
562 cy="751.63794"
563 cx="500.64822"
564 id="ellipse1216"
565 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
566 <ellipse
567 transform="translate(-387.41463,-542.5412)"
568 ry="4.1593032"
569 rx="4.1581793"
570 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
571 id="ellipse1218"
572 cx="533.33447"
573 cy="751.72632" />
574 <ellipse
575 transform="translate(-387.41463,-542.5412)"
576 ry="4.1593032"
577 rx="4.1581793"
578 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
579 id="ellipse1220"
580 cx="450.75012"
581 cy="699.83545" />
582 <ellipse
583 transform="translate(-387.41463,-542.5412)"
584 ry="4.1593032"
585 rx="4.1581793"
586 cy="700.59174"
587 cx="476.07718"
588 id="ellipse1222"
589 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
590 <ellipse
591 transform="translate(-387.41463,-542.5412)"
592 ry="4.1593032"
593 rx="4.1581793"
594 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
595 id="ellipse1224"
596 cx="521.49146"
597 cy="719.65314" />
598 <ellipse
599 transform="translate(-387.41463,-542.5412)"
600 ry="4.1593032"
601 rx="4.1581793"
602 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
603 id="ellipse1226"
604 cx="500.6362"
605 cy="703.87305" />
606 <ellipse
607 ry="4.1593032"
608 rx="4.1581793"
609 cy="134.28851"
610 cx="211.9584"
611 id="ellipse1228"
612 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
613 <ellipse
614 transform="translate(-387.41463,-542.5412)"
615 ry="4.1593032"
616 rx="4.1581793"
617 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
618 id="ellipse1230"
619 cx="576.62964"
620 cy="713.44794" />
621 <ellipse
622 ry="4.1593032"
623 rx="4.1581793"
624 cy="123.16669"
625 cx="43.166531"
626 id="ellipse1232"
627 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
628 <ellipse
629 ry="4.1593032"
630 rx="4.1581793"
631 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
632 id="ellipse1234"
633 cx="98.865997"
634 cy="129.43542" />
635 <ellipse
636 ry="4.1593032"
637 rx="4.1581793"
638 cy="130.05022"
639 cx="267.08618"
640 id="ellipse1236"
641 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
642 <ellipse
643 transform="translate(-387.41463,-542.5412)"
644 ry="4.1593032"
645 rx="4.1581793"
646 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
647 id="ellipse1238"
648 cx="679.07196"
649 cy="686.22339" />
650 <ellipse
651 transform="translate(-387.41463,-542.5412)"
652 ry="4.1593032"
653 rx="4.1581793"
654 cy="748.99109"
655 cx="577.00763"
656 id="ellipse1240"
657 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
658 <ellipse
659 transform="translate(-387.41463,-542.5412)"
660 ry="4.1593032"
661 rx="4.1581793"
662 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
663 id="ellipse1242"
664 cx="577.00763"
665 cy="748.99109" />
666 <ellipse
667 transform="translate(-387.41463,-542.5412)"
668 ry="4.1593032"
669 rx="4.1581793"
670 cy="748.99109"
671 cx="577.07013"
672 id="ellipse1244"
673 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
674 <ellipse
675 transform="translate(0,-3e-6)"
676 ry="4.1593032"
677 rx="4.1581793"
678 cy="133.85095"
679 cx="22.887779"
680 id="ellipse1246"
681 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
682 <ellipse
683 transform="translate(-387.41463,-542.5412)"
684 ry="4.1593032"
685 rx="4.1581793"
686 cy="682.1922"
687 cx="462.47165"
688 id="ellipse1248"
689 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
690 <ellipse
691 transform="translate(-387.41463,-542.5412)"
692 ry="4.1593032"
693 rx="4.1581793"
694 cy="647.3053"
695 cx="694.58264"
696 id="ellipse1250"
697 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
698 <ellipse
699 transform="translate(-387.41463,-542.5412)"
700 ry="4.1593032"
701 rx="4.1581793"
702 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
703 id="ellipse1252"
704 cx="649.61285"
705 cy="628.31934" />
706 </g>
707 <g
708 id="g1539"
709 style="display:inline"
710 transform="translate(-80.31201,-247.1061)">
711 <ellipse
712 ry="4.1593032"
713 rx="4.1581793"
714 style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
715 id="ellipse1535"
716 cx="159.80099"
717 cy="276.32968" />
718 <ellipse
719 ry="4.1593032"
720 rx="4.1581793"
721 style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
722 id="ellipse1537"
723 cx="159.80099"
724 cy="259.99252" />
725 </g>
726 <g
727 transform="translate(-80.31201,-294.38421)"
728 style="display:none"
729 id="layer3">
730 <path
731 id="path5313"
732 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
733 style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
734 inkscape:connector-curvature="0" />
735 <path
736 id="path5311"
737 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
738 style="fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
739 inkscape:connector-curvature="0" />
740 <path
741 id="path9316"
742 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
743 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
744 inkscape:connector-curvature="0" />
745 <path
746 id="path9318"
747 d="m 98.868943,129.31358 37.045597,48.02106"
748 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
749 inkscape:connector-curvature="0" />
750 <path
751 id="path12058"
752 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
753 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
754 inkscape:connector-curvature="0" />
755 <path
756 id="path12250"
757 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
758 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
759 inkscape:connector-curvature="0" />
760 <path
761 id="path5161"
762 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
763 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
764 transform="translate(-387.41463,-542.5412)"
765 inkscape:connector-curvature="0" />
766 <path
767 id="path12206"
768 d="m 601.57854,741.42859 -2.26809,-64.28015"
769 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
770 transform="translate(-387.41463,-542.5412)"
771 inkscape:connector-curvature="0" />
772 <path
773 id="path5331"
774 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
775 style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
776 inkscape:connector-curvature="0" />
777 <path
778 id="path9320"
779 d="m 475.69911,700.21367 24.57107,51.42411"
780 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
781 transform="translate(-387.41463,-542.5412)"
782 inkscape:connector-curvature="0" />
783 <path
784 id="path9322"
785 d="m 534.29164,751.63778 12.85257,40.08057"
786 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
787 transform="translate(-387.41463,-542.5412)"
788 inkscape:connector-curvature="0" />
789 <path
790 id="path9324"
791 d="m 525.21925,783.02162 0.37803,45.75234"
792 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
793 transform="translate(-387.41463,-542.5412)"
794 inkscape:connector-curvature="0" />
795 <path
796 id="path9326"
797 d="m 601.95657,742.56293 -12.09653,36.6775"
798 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
799 transform="translate(-387.41463,-542.5412)"
800 inkscape:connector-curvature="0" />
801 <path
802 id="path12060"
803 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
804 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
805 transform="translate(-387.41463,-542.5412)"
806 inkscape:connector-curvature="0" />
807 <path
808 id="path12208"
809 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
810 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
811 transform="translate(-387.41463,-542.5412)"
812 inkscape:connector-curvature="0" />
813 <path
814 id="path12210"
815 d="m 557.35064,768.27501 31.75336,10.5873"
816 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
817 transform="translate(-387.41463,-542.5412)"
818 inkscape:connector-curvature="0" />
819 <path
820 id="path12212"
821 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
822 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
823 transform="translate(-387.41463,-542.5412)"
824 inkscape:connector-curvature="0" />
825 <path
826 id="path12216"
827 d="m 524.46323,829.53019 44.98392,-0.37812"
828 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
829 transform="translate(-387.41463,-542.5412)"
830 inkscape:connector-curvature="0" />
831 <path
832 id="path5163"
833 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
834 style="display:inline;opacity:1;fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
835 transform="translate(-387.41463,-542.5412)"
836 inkscape:connector-curvature="0" />
837 <path
838 id="path12214"
839 d="m 409.92428,677.14844 54.05634,6.0499"
840 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
841 transform="translate(-387.41463,-542.5412)"
842 inkscape:connector-curvature="0" />
843 </g>
844 <g
845 id="g325"
846 style="display:none"
847 transform="translate(-80.31201,-294.38421)">
848 <ellipse
849 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
850 id="ellipse12254"
851 cx="568.98083"
852 cy="829.24042"
853 rx="4.1581793"
854 ry="4.1593032"
855 transform="translate(-387.41463,-542.5412)" />
856 <ellipse
857 cy="778.67493"
858 cx="588.85413"
859 id="ellipse12290"
860 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
861 rx="4.1581793"
862 ry="4.1593032"
863 transform="translate(-387.41463,-542.5412)" />
864 <ellipse
865 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
866 id="ellipse12284"
867 cx="601.57867"
868 cy="740.67249"
869 rx="4.1581793"
870 ry="4.1593032"
871 transform="translate(-387.41463,-542.5412)" />
872 <ellipse
873 cy="829.24042"
874 cx="525.79852"
875 id="ellipse12256"
876 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
877 rx="4.1581793"
878 ry="4.1593032"
879 transform="translate(-387.41463,-542.5412)" />
880 <ellipse
881 cy="768.71582"
882 cx="557.82654"
883 id="ellipse12306"
884 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
885 rx="4.1581793"
886 ry="4.1593032"
887 transform="translate(-387.41463,-542.5412)" />
888 <ellipse
889 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
890 id="ellipse12280"
891 cx="525.21936"
892 cy="783.02173"
893 rx="4.1581793"
894 ry="4.1593032"
895 transform="translate(-387.41463,-542.5412)" />
896 <ellipse
897 cy="647.34271"
898 cx="400.09586"
899 id="ellipse12258"
900 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
901 rx="4.1581793"
902 ry="4.1593032"
903 transform="translate(-387.41463,-542.5412)" />
904 <ellipse
905 cy="628.31934"
906 cx="450.11285"
907 id="ellipse12258-3"
908 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
909 rx="4.1581793"
910 ry="4.1593032"
911 transform="translate(-387.41463,-542.5412)" />
912 <ellipse
913 cy="699.45752"
914 cx="622.36951"
915 id="ellipse12294"
916 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
917 rx="4.1581793"
918 ry="4.1593032"
919 transform="translate(-387.41463,-542.5412)" />
920 <ellipse
921 cy="792.29773"
922 cx="547.21771"
923 id="ellipse12252"
924 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
925 rx="4.1581793"
926 ry="4.1593032"
927 transform="translate(-387.41463,-542.5412)" />
928 <ellipse
929 cy="800.12549"
930 cx="566.20697"
931 id="ellipse12282"
932 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
933 rx="4.1581793"
934 ry="4.1593032"
935 transform="translate(-387.41463,-542.5412)" />
936 <ellipse
937 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
938 id="ellipse12276"
939 cx="500.64822"
940 cy="751.63794"
941 rx="4.1581793"
942 ry="4.1593032"
943 transform="translate(-387.41463,-542.5412)" />
944 <ellipse
945 cy="751.72632"
946 cx="533.33447"
947 id="ellipse12278"
948 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
949 rx="4.1581793"
950 ry="4.1593032"
951 transform="translate(-387.41463,-542.5412)" />
952 <ellipse
953 cy="699.83545"
954 cx="450.75012"
955 id="ellipse12262"
956 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
957 rx="4.1581793"
958 ry="4.1593032"
959 transform="translate(-387.41463,-542.5412)" />
960 <ellipse
961 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
962 id="ellipse12268"
963 cx="476.07718"
964 cy="700.59174"
965 rx="4.1581793"
966 ry="4.1593032"
967 transform="translate(-387.41463,-542.5412)" />
968 <ellipse
969 cy="719.65314"
970 cx="521.49146"
971 id="ellipse12270"
972 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
973 rx="4.1581793"
974 ry="4.1593032"
975 transform="translate(-387.41463,-542.5412)" />
976 <ellipse
977 cy="703.87305"
978 cx="500.6362"
979 id="ellipse12274"
980 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
981 rx="4.1581793"
982 ry="4.1593032"
983 transform="translate(-387.41463,-542.5412)" />
984 <ellipse
985 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
986 id="ellipse12292"
987 cx="211.9584"
988 cy="134.28851"
989 rx="4.1581793"
990 ry="4.1593032" />
991 <ellipse
992 cy="713.44794"
993 cx="576.62964"
994 id="ellipse12286"
995 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
996 rx="4.1581793"
997 ry="4.1593032"
998 transform="translate(-387.41463,-542.5412)" />
999 <ellipse
1000 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1001 id="ellipse12260"
1002 cx="43.166531"
1003 cy="123.16669"
1004 rx="4.1581793"
1005 ry="4.1593032" />
1006 <ellipse
1007 cy="129.43542"
1008 cx="98.865997"
1009 id="ellipse12266"
1010 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1011 rx="4.1581793"
1012 ry="4.1593032" />
1013 <ellipse
1014 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1015 id="ellipse12296"
1016 cx="267.08618"
1017 cy="130.05022"
1018 rx="4.1581793"
1019 ry="4.1593032" />
1020 <ellipse
1021 cy="686.22339"
1022 cx="679.07196"
1023 id="ellipse12298"
1024 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1025 rx="4.1581793"
1026 ry="4.1593032"
1027 transform="translate(-387.41463,-542.5412)" />
1028 <ellipse
1029 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1030 id="ellipse12288"
1031 cx="577.00763"
1032 cy="748.99109"
1033 rx="4.1581793"
1034 ry="4.1593032"
1035 transform="translate(-387.41463,-542.5412)" />
1036 <ellipse
1037 cy="748.99109"
1038 cx="577.00763"
1039 id="ellipse12302"
1040 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1041 rx="4.1581793"
1042 ry="4.1593032"
1043 transform="translate(-387.41463,-542.5412)" />
1044 <ellipse
1045 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1046 id="ellipse12304"
1047 cx="577.07013"
1048 cy="748.99109"
1049 rx="4.1581793"
1050 ry="4.1593032"
1051 transform="translate(-387.41463,-542.5412)" />
1052 <ellipse
1053 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1054 id="ellipse12264"
1055 cx="22.887779"
1056 cy="133.85095"
1057 rx="4.1581793"
1058 ry="4.1593032"
1059 transform="translate(0,-3e-6)" />
1060 <ellipse
1061 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1062 id="ellipse12272"
1063 cx="462.47165"
1064 cy="682.1922"
1065 rx="4.1581793"
1066 ry="4.1593032"
1067 transform="translate(-387.41463,-542.5412)" />
1068 <ellipse
1069 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1070 id="ellipse12300"
1071 cx="694.58264"
1072 cy="647.3053"
1073 rx="4.1581793"
1074 ry="4.1593032"
1075 transform="translate(-387.41463,-542.5412)" />
1076 <ellipse
1077 cy="628.31934"
1078 cx="649.61285"
1079 id="ellipse12258-3-0"
1080 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1081 rx="4.1581793"
1082 ry="4.1593032"
1083 transform="translate(-387.41463,-542.5412)" />
1084 </g>
1085 <g
1086 transform="translate(-80.31201,-247.1061)"
1087 style="display:none"
1088 id="layer6">
1089 <ellipse
1090 cy="276.32968"
1091 cx="159.80099"
1092 id="ellipse12282-8-9-0"
1093 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
1094 rx="4.1581793"
1095 ry="4.1593032" />
1096 <ellipse
1097 cy="259.99252"
1098 cx="159.80099"
1099 id="ellipse12282-8-9"
1100 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
1101 rx="4.1581793"
1102 ry="4.1593032" />
1103 </g>
1104 <g
1105 id="g975"
1106 style="display:inline"
1107 transform="translate(-467.72664,-836.92541)">
1108 <g
1109 id="text973"
1110 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto"
1111 aria-label="gnu net">
1112 <path
1113 id="path977"
1114 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1115 d="m 489.62118,868.96318 q 0,2.375 -0.81641,4.23046 -0.81641,1.85547 -2.30078,3.14193 -1.45964,1.28646 -3.46354,1.95443 -1.97917,0.69271 -4.42839,0.69271 -6.01172,0 -10.26693,-3.63672 l 2.42448,-3.95834 q 3.53776,3.04297 7.84245,3.04297 2.64714,0 4.25521,-1.31119 1.63281,-1.28646 1.63281,-4.0573 v -2.47395 q -1.58333,1.36067 -3.04297,2.02864 -1.45963,0.64323 -3.38932,0.64323 -2.22656,0 -4.13151,-0.9401 -1.90495,-0.94011 -3.29037,-2.54818 -1.36067,-1.63281 -2.15234,-3.78516 -0.76693,-2.15234 -0.76693,-4.57682 0,-2.42448 0.76693,-4.57682 0.79167,-2.17709 2.15234,-3.76042 1.38542,-1.60807 3.29037,-2.52344 1.90495,-0.9401 4.13151,-0.9401 1.92969,0 3.4388,0.66797 1.50912,0.64323 2.99349,1.95442 v -2.07812 h 5.1211 z m -5.1211,-16.67448 q -0.91536,-1.01433 -2.375,-1.53386 -1.43489,-0.54427 -2.79557,-0.54427 -2.89453,0 -4.70052,2.02865 -1.78125,2.02864 -1.78125,5.17057 0,1.55859 0.47005,2.89453 0.49479,1.3112 1.33594,2.27604 0.86588,0.96485 2.05338,1.53386 1.21224,0.54427 2.6224,0.54427 1.36068,0 2.79557,-0.54427 1.45964,-0.56901 2.375,-1.58334 z"
1116 inkscape:connector-curvature="0" />
1117 <path
1118 id="path979"
1119 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1120 d="m 514.82951,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54166,2.30078 2.00391,2.30078 2.00391,7.07552 z"
1121 inkscape:connector-curvature="0" />
1122 <path
1123 id="path981"
1124 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1125 d="m 518.90503,846.15328 h 5.12109 v 14.25 q 0,2.67187 1.01433,3.71094 1.01432,1.03906 2.94401,1.03906 2.82031,0 4.6263,-2.30078 1.80599,-2.30078 1.80599,-6.35807 v -10.34115 h 5.12109 v 23.05729 h -5.12109 v -5.76432 q -0.76693,2.96875 -2.84505,4.65104 -2.07813,1.68229 -5.1211,1.68229 -3.53776,0 -5.54166,-2.30078 -2.00391,-2.32552 -2.00391,-7.07552 z"
1126 inkscape:connector-curvature="0" />
1127 <path
1128 id="path983"
1129 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1130 d="m 575.70451,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54167,2.30078 2.0039,2.30078 2.0039,7.07552 z"
1131 inkscape:connector-curvature="0" />
1132 <path
1133 id="path985"
1134 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1135 d="m 583.76832,859.63635 q 0.37109,2.375 2.2513,3.95834 1.90495,1.55859 5.09635,1.55859 2.4987,0 4.32943,-0.76693 1.85547,-0.79166 3.19141,-2.07812 l 2.62239,3.61198 q -2.22656,2.22656 -4.72526,3.04297 -2.47396,0.8164 -5.41797,0.8164 -2.67187,0 -4.97265,-0.89062 -2.30079,-0.89063 -3.98308,-2.47396 -1.68229,-1.60807 -2.64713,-3.8099 -0.94011,-2.20182 -0.94011,-4.89844 0,-2.62239 0.86589,-4.82421 0.89062,-2.22657 2.47396,-3.83464 1.60807,-1.63281 3.83463,-2.52344 2.22657,-0.91536 4.92318,-0.91536 2.79557,0 5.07161,0.96484 2.27605,0.94011 3.88412,2.7461 1.63281,1.80599 2.54818,4.42838 0.91536,2.59766 0.91536,5.88802 z m 13.53255,-4.5026 q -0.39584,-2.22656 -2.30078,-3.5625 -1.90495,-1.36068 -4.32943,-1.36068 -2.42448,0 -4.35417,1.36068 -1.92968,1.33594 -2.32552,3.5625 z"
1136 inkscape:connector-curvature="0" />
1137 <path
1138 id="path987"
1139 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1140 d="m 627.08081,861.86291 q -0.39583,3.63672 -2.86979,5.78907 -2.44922,2.1276 -6.13542,2.1276 -2.02864,0 -3.71094,-0.66797 -1.68229,-0.66797 -2.86979,-1.85547 -1.1875,-1.1875 -1.85547,-2.84505 -0.64322,-1.68229 -0.64322,-3.66146 v -9.97005 h -5.22006 v -4.6263 h 5.22006 v -9.22787 h 5.12109 v 9.22787 h 9.67318 v 4.6263 h -9.67318 v 9.97005 q 0,2.22657 1.08854,3.31511 1.08854,1.08854 2.86979,1.08854 2.17709,0 3.24089,-1.26172 1.0638,-1.26172 1.26172,-3.04297 z"
1141 inkscape:connector-curvature="0" />
1142 </g>
1143 </g>
1144</svg>
diff --git a/contrib/gnunet.rb b/contrib/gnunet.rb
new file mode 100644
index 000000000..94625e6b8
--- /dev/null
+++ b/contrib/gnunet.rb
@@ -0,0 +1,47 @@
1class Gnunet < Formula
2 desc "GNUnet"
3 homepage "https://gnunet.org/"
4 #url "http://ftpmirror.gnu.org/gnunet/gnunet-0.11.0pre66.tar.gz"
5 head do
6 url "https://gnunet.org/git/gnunet.git"
7 depends_on "automake"
8 end
9 mirror "http://ftpmirror.gnu.org/gnunet/gnunet-0.11.0pre66.tar.gz"
10 sha256 "07ed1e456c0cc982fe4c6d335eb2fd41820eb24dcf1c9abc93dad868aa72edbf"
11
12 #bottle do
13 # cellar :any
14 # sha256 "7507da89370f72be8fb22d1932524295231904a2a180ff0bfc4a14d3bd496e31" => :mojave
15 # sha256 "3bdf1fbe152231ba3a9cd19445c242cfb14140fa942a1df03af5c69754e09225" => :high_sierra
16 # sha256 "6dec32c6b29e69d051edd1220bc040cb01911cd20220687dd09bf6e76317b42a" => :sierra
17 #end
18
19 depends_on "pkg-config" => :build
20 depends_on "glpk"
21 depends_on "gettext"
22 depends_on "gnutls"
23 depends_on "jansson"
24 depends_on "libextractor"
25 depends_on "libgcrypt"
26 depends_on "libffi"
27 depends_on "libidn2"
28 depends_on "libmicrohttpd"
29 depends_on "libmpc"
30 depends_on "libunistring"
31 depends_on "unbound"
32
33 def install
34 args = %W[
35 --disable-documentation
36 --prefix=#{prefix}
37 ]
38
39 system "./bootstrap" if build.head?
40 system "./configure", *args
41 system "make", "install"
42 end
43
44 test do
45 system bin/"gnutls-arm", "--version"
46 end
47end
diff --git a/contrib/scripts/gnunet-bugreport b/contrib/scripts/gnunet-bugreport
index f17cb7636..e7d9caa7e 100755
--- a/contrib/scripts/gnunet-bugreport
+++ b/contrib/scripts/gnunet-bugreport
@@ -24,6 +24,22 @@ else
24 echo "gcc : Not Found"; 24 echo "gcc : Not Found";
25fi 25fi
26 26
27TEST=`$WHICH cc 2>/dev/null`
28if test -n "$TEST"; then
29 VERS=`cc --version 2>/dev/null | head -n 1`
30 echo "cc : $VERS"
31else
32 echo "cc : Not Found";
33fi
34
35TEST=`$WHICH c++ 2>/dev/null`
36if test -n "$TEST"; then
37 VERS=`c++ --version 2>/dev/null | head -n 1`
38 echo "c++ : $VERS"
39else
40 echo "c++ : Not Found";
41fi
42
27TEST=`$WHICH gmake 2>/dev/null` 43TEST=`$WHICH gmake 2>/dev/null`
28if test -n "$TEST" ; then 44if test -n "$TEST" ; then
29 gmake --version 2>/dev/null |\ 45 gmake --version 2>/dev/null |\
@@ -176,6 +192,16 @@ else
176 fi 192 fi
177fi 193fi
178 194
195TEST=`$WHICH pkg_add 2> /dev/null`
196if test -n "$TEST"; then
197 VERSION_UNISTRING=`pkg_info -Nb libunistring`
198 VERSION_GMP=`pkg_info -Nb gmp`
199 echo "libunistring :"
200 echo "$VERSION_UNISTRING"
201 echo "GMP :"
202 echo "$VERSION_GMP"
203fi
204
179TEST=`$WHICH gettext 2> /dev/null` 205TEST=`$WHICH gettext 2> /dev/null`
180if test -n "$TEST"; then 206if test -n "$TEST"; then
181 gettext --version | head -n1 2> /dev/null | \ 207 gettext --version | head -n1 2> /dev/null | \
diff --git a/contrib/scripts/gnunet-chk.py.in b/contrib/scripts/gnunet-chk.py.in
index c60211556..1f5a0726c 100755
--- a/contrib/scripts/gnunet-chk.py.in
+++ b/contrib/scripts/gnunet-chk.py.in
@@ -21,6 +21,12 @@
21# Brief: Computes GNUNET style Content Hash Key for a given file 21# Brief: Computes GNUNET style Content Hash Key for a given file
22# Author: Sree Harsha Totakura 22# Author: Sree Harsha Totakura
23 23
24from __future__ import print_function
25from __future__ import division
26from builtins import str
27from builtins import range
28from past.utils import old_div
29from builtins import object
24from hashlib import sha512 30from hashlib import sha512
25import logging 31import logging
26import os 32import os
@@ -90,7 +96,7 @@ def sha512_hash(data):
90 return hash_obj.digest() 96 return hash_obj.digest()
91 97
92 98
93class AESKey: 99class AESKey(object):
94 """Class for AES Keys. Contains the main key and the initialization 100 """Class for AES Keys. Contains the main key and the initialization
95 vector. """ 101 vector. """
96 102
@@ -177,7 +183,7 @@ def aes_decrypt(aes_key, data):
177 return ptext 183 return ptext
178 184
179 185
180class Chk: 186class Chk(object):
181 """Class for the content hash key.""" 187 """Class for the content hash key."""
182 key = None 188 key = None
183 query = None 189 query = None
@@ -248,7 +254,7 @@ def compute_chk_offset_(depth, end_offset):
248 bds = compute_tree_size_(depth) 254 bds = compute_tree_size_(depth)
249 if (depth > 0): 255 if (depth > 0):
250 end_offset -= 1 256 end_offset -= 1
251 ret = end_offset / bds 257 ret = old_div(end_offset, bds)
252 return ret % CHK_PER_INODE 258 return ret % CHK_PER_INODE
253 259
254 260
@@ -272,7 +278,7 @@ def compute_iblock_size_(depth, offset):
272 ret = CHK_PER_INODE 278 ret = CHK_PER_INODE
273 else: 279 else:
274 bds /= CHK_PER_INODE 280 bds /= CHK_PER_INODE
275 ret = mod / bds 281 ret = old_div(mod, bds)
276 if (mod % bds) is not 0: 282 if (mod % bds) is not 0:
277 ret += 1 283 ret += 1
278 return ret 284 return ret
diff --git a/contrib/scripts/gnunet_pyexpect.py.in b/contrib/scripts/gnunet_pyexpect.py.in
index 810d5b321..4202da8d0 100644
--- a/contrib/scripts/gnunet_pyexpect.py.in
+++ b/contrib/scripts/gnunet_pyexpect.py.in
@@ -19,6 +19,7 @@
19# 19#
20# Testcase for gnunet-peerinfo 20# Testcase for gnunet-peerinfo
21from __future__ import print_function 21from __future__ import print_function
22from builtins import object
22import os 23import os
23import re 24import re
24import subprocess 25import subprocess
diff --git a/contrib/scripts/pydiffer.py.in b/contrib/scripts/pydiffer.py.in
index 10145371c..1dbe856db 100644
--- a/contrib/scripts/pydiffer.py.in
+++ b/contrib/scripts/pydiffer.py.in
@@ -1,4 +1,5 @@
1#!@PYTHON@ 1#!@PYTHON@
2from __future__ import print_function
2import os 3import os
3import sys 4import sys
4import difflib 5import difflib
@@ -23,7 +24,7 @@ def dc_getdiff(dc, old, new):
23 for f in dc.diff_files: 24 for f in dc.diff_files:
24 r = getdiff(os.path.join(old, f), os.path.join(new, f)) 25 r = getdiff(os.path.join(old, f), os.path.join(new, f))
25 diff.extend(r) 26 diff.extend(r)
26 for dn, dc in dc.subdirs.items(): 27 for dn, dc in list(dc.subdirs.items()):
27 r = dc_getdiff(dc, os.path.join(old, dn), os.path.join(new, dn)) 28 r = dc_getdiff(dc, os.path.join(old, dn), os.path.join(new, dn))
28 diff.extend(r) 29 diff.extend(r)
29 return diff 30 return diff
diff --git a/contrib/scripts/regression.sh b/contrib/scripts/regression.sh
index 1f799797a..8d05bdc41 100755
--- a/contrib/scripts/regression.sh
+++ b/contrib/scripts/regression.sh
@@ -43,7 +43,7 @@ do
43done 43done
44echo "================END====================" >> regression.$H 44echo "================END====================" >> regression.$H
45 45
46if [ $KEEP == 0] 46if [ $KEEP = 0]
47then 47then
48 rm regression.$H.$RUN* 48 rm regression.$H.$RUN*
49 rm regression.$H 49 rm regression.$H
diff --git a/contrib/scripts/terminate.py.in b/contrib/scripts/terminate.py.in
index 161b4db61..9ed356502 100644
--- a/contrib/scripts/terminate.py.in
+++ b/contrib/scripts/terminate.py.in
@@ -21,6 +21,7 @@
21# For other platforms it's equivalent to Popen.kill () 21# For other platforms it's equivalent to Popen.kill ()
22# Requires pywin32 on W32. 22# Requires pywin32 on W32.
23 23
24from builtins import object
24import sys 25import sys
25import subprocess 26import subprocess
26import os 27import os
diff --git a/contrib/tox.ini b/contrib/tox.ini
index c91f2de94..aee00e3b7 100644
--- a/contrib/tox.ini
+++ b/contrib/tox.ini
@@ -1,4 +1,4 @@
1[flake8] 1[flake8]
2max-line-length = 160 2max-line-length = 160
3exclude = .git 3exclude = .git *.bak
4filename = *.py* \ No newline at end of file 4filename = *.py* \ No newline at end of file
diff --git a/doc/handbook/.gitignore b/doc/handbook/.gitignore
index f490c3412..80ac74ea0 100644
--- a/doc/handbook/.gitignore
+++ b/doc/handbook/.gitignore
@@ -7,3 +7,5 @@ manual
7*.pg 7*.pg
8*.tp 8*.tp
9*.vr 9*.vr
10gnunet
11gnunet.html
diff --git a/doc/handbook/Makefile.am b/doc/handbook/Makefile.am
index 1be5d1da7..120f63297 100644
--- a/doc/handbook/Makefile.am
+++ b/doc/handbook/Makefile.am
@@ -96,9 +96,12 @@ gnunet_TEXINFOS = \
96EXTRA_DIST = \ 96EXTRA_DIST = \
97 $(gnunet_TEXINFOS) \ 97 $(gnunet_TEXINFOS) \
98 htmlxref.cnf \ 98 htmlxref.cnf \
99 gversion.texi 99 gversion.texi \
100 run-gendocs.sh \ 100 run-gendocs.sh \
101 docstyle.css 101 docstyle.css \
102 manual.css \
103 reset.css \
104 style.css
102 105
103 106
104# $(DOT_FILES) \ 107# $(DOT_FILES) \
diff --git a/doc/handbook/chapters/developer.texi b/doc/handbook/chapters/developer.texi
index a1b5583cb..cd81fcfb7 100644
--- a/doc/handbook/chapters/developer.texi
+++ b/doc/handbook/chapters/developer.texi
@@ -100,7 +100,7 @@ following links:
100@itemize @bullet 100@itemize @bullet
101@item @xref{Top, Introduction,, gnunet-c-tutorial, The GNUnet C Tutorial}. 101@item @xref{Top, Introduction,, gnunet-c-tutorial, The GNUnet C Tutorial}.
102@c broken link 102@c broken link
103@c @item @uref{https://gnunet.org/git/gnunet.git/plain/doc/gnunet-c-tutorial.pdf, GNUnet C tutorial} 103@c @item @uref{https://git.gnunet.org/gnunet.git/plain/doc/gnunet-c-tutorial.pdf, GNUnet C tutorial}
104@item GNUnet Java tutorial 104@item GNUnet Java tutorial
105@end itemize 105@end itemize
106 106
@@ -124,7 +124,7 @@ The public subsystems on the GNUnet server that help developers are:
124 124
125@item The version control system (git) keeps our code and enables 125@item The version control system (git) keeps our code and enables
126distributed development. 126distributed development.
127It is publicly accessible at @uref{https://gnunet.org/git/}. 127It is publicly accessible at @uref{https://git.gnunet.org/}.
128Only developers with write access can commit code, everyone else is 128Only developers with write access can commit code, everyone else is
129encouraged to submit patches to the GNUnet-developers mailinglist: 129encouraged to submit patches to the GNUnet-developers mailinglist:
130@uref{https://lists.gnu.org/mailman/listinfo/gnunet-developers, https://lists.gnu.org/mailman/listinfo/gnunet-developers} 130@uref{https://lists.gnu.org/mailman/listinfo/gnunet-developers, https://lists.gnu.org/mailman/listinfo/gnunet-developers}
@@ -133,14 +133,14 @@ encouraged to submit patches to the GNUnet-developers mailinglist:
133We use it to track feature requests, open bug reports and their 133We use it to track feature requests, open bug reports and their
134resolutions. 134resolutions.
135It can be accessed at 135It can be accessed at
136@uref{https://gnunet.org/bugs/, https://gnunet.org/bugs/}. 136@uref{https://bugs.gnunet.org/, https://bugs.gnunet.org/}.
137Anyone can report bugs. 137Anyone can report bugs.
138 138
139@item Our site installation of the 139@item Our site installation of the
140Continuous Integration (CI) system @code{Buildbot} is used 140Continuous Integration (CI) system @code{Buildbot} is used
141to check GNUnet builds automatically on a range of platforms. 141to check GNUnet builds automatically on a range of platforms.
142The web interface of this CI is exposed at 142The web interface of this CI is exposed at
143@uref{https://gnunet.org/buildbot/, https://gnunet.org/buildbot/}. 143@uref{https://old.gnunet.org/buildbot/, https://old.gnunet.org/buildbot/}.
144Builds are triggered automatically 30 minutes after the last commit to 144Builds are triggered automatically 30 minutes after the last commit to
145our repository was made. 145our repository was made.
146 146
@@ -1098,7 +1098,7 @@ development of GNUnet services, command line tools, APIs and tests.
1098First of all you have to obtain gnunet-ext from git: 1098First of all you have to obtain gnunet-ext from git:
1099 1099
1100@example 1100@example
1101git clone https://gnunet.org/git/gnunet-ext.git 1101git clone https://git.gnunet.org/gnunet-ext.git
1102@end example 1102@end example
1103 1103
1104The next step is to bootstrap and configure it. For configure you have to 1104The next step is to bootstrap and configure it. For configure you have to
@@ -1905,7 +1905,7 @@ topology where peer connectivity follows power law - new peers are
1905connected with high probability to well connected peers. 1905connected with high probability to well connected peers.
1906(See Emergence of Scaling in Random Networks. Science 286, 1906(See Emergence of Scaling in Random Networks. Science 286,
1907509-512, 1999 1907509-512, 1999
1908(@uref{https://gnunet.org/git/bibliography.git/plain/docs/emergence_of_scaling_in_random_networks__barabasi_albert_science_286__1999.pdf, pdf})) 1908(@uref{https://git.gnunet.org/bibliography.git/plain/docs/emergence_of_scaling_in_random_networks__barabasi_albert_science_286__1999.pdf, pdf}))
1909 1909
1910@item @code{GNUNET_TESTBED_TOPOLOGY_FROM_FILE}: The topology information 1910@item @code{GNUNET_TESTBED_TOPOLOGY_FROM_FILE}: The topology information
1911is loaded from a file. The path to the file has to be given. 1911is loaded from a file. The path to the file has to be given.
@@ -2133,8 +2133,8 @@ To automate the GNUnet we created a set of automation tools to simplify
2133the large-scale deployment. We provide you a set of scripts you can use 2133the large-scale deployment. We provide you a set of scripts you can use
2134to deploy GNUnet on a set of nodes and manage your installation. 2134to deploy GNUnet on a set of nodes and manage your installation.
2135 2135
2136Please also check @uref{https://gnunet.org/installation-fedora8-svn} and 2136Please also check @uref{https://old.gnunet.org/installation-fedora8-svn} and
2137@uref{https://gnunet.org/installation-fedora12-svn} to find detailed 2137@uref{https://old.gnunet.org/installation-fedora12-svn} to find detailed
2138instructions how to install GNUnet on a PlanetLab node. 2138instructions how to install GNUnet on a PlanetLab node.
2139 2139
2140 2140
@@ -2300,7 +2300,7 @@ subsystem.
2300@subsubsection CORE must be started 2300@subsubsection CORE must be started
2301 2301
2302A uncomplicated issue is bug #3993 2302A uncomplicated issue is bug #3993
2303(@uref{https://gnunet.org/bugs/view.php?id=3993, https://gnunet.org/bugs/view.php?id=3993}): 2303(@uref{https://bugs.gnunet.org/view.php?id=3993, https://bugs.gnunet.org/view.php?id=3993}):
2304Your configuration MUST somehow ensure that for each peer the 2304Your configuration MUST somehow ensure that for each peer the
2305@code{CORE} service is started when the peer is setup, otherwise 2305@code{CORE} service is started when the peer is setup, otherwise
2306@code{TESTBED} may fail to connect peers when the topology is initialized, 2306@code{TESTBED} may fail to connect peers when the topology is initialized,
@@ -2747,7 +2747,8 @@ code.
2747 2747
2748Since now activating DEBUG automatically makes it VERBOSE and activates 2748Since now activating DEBUG automatically makes it VERBOSE and activates
2749@strong{all} debug messages by default, you probably want to use the 2749@strong{all} debug messages by default, you probably want to use the
2750https://gnunet.org/logging functionality to filter only relevant messages. 2750@uref{https://old.gnunet.org/logging, https://old.gnunet.org/logging}
2751functionality to filter only relevant messages.
2751A suitable configuration could be: 2752A suitable configuration could be:
2752 2753
2753@example 2754@example
@@ -8674,7 +8675,7 @@ eliminate the need to first create a directory.
8674 8675
8675Collections are also advertised using @code{KSBlock}s. 8676Collections are also advertised using @code{KSBlock}s.
8676 8677
8677@c https://gnunet.org/sites/default/files/ecrs.pdf 8678@c https://old.gnunet.org/sites/default/files/ecrs.pdf
8678 8679
8679@node File-sharing persistence directory structure 8680@node File-sharing persistence directory structure
8680@subsection File-sharing persistence directory structure 8681@subsection File-sharing persistence directory structure
@@ -8794,7 +8795,7 @@ The gnunet-regex-profiler can be used to profile the usage of mesh/regex
8794for a given set of regular expressions and strings. 8795for a given set of regular expressions and strings.
8795Mesh/regex allows you to announce your peer ID under a certain regex and 8796Mesh/regex allows you to announce your peer ID under a certain regex and
8796search for peers matching a particular regex using a string. 8797search for peers matching a particular regex using a string.
8797See @uref{https://gnunet.org/szengel2012ms, szengel2012ms} for a full 8798See @uref{https://old.gnunet.org/szengel2012ms, szengel2012ms} for a full
8798introduction. 8799introduction.
8799 8800
8800First of all, the regex profiler uses GNUnet testbed, thus all the 8801First of all, the regex profiler uses GNUnet testbed, thus all the
diff --git a/doc/handbook/chapters/installation.texi b/doc/handbook/chapters/installation.texi
index c41c7c7db..9cd2b1bcc 100644
--- a/doc/handbook/chapters/installation.texi
+++ b/doc/handbook/chapters/installation.texi
@@ -75,11 +75,11 @@ git installed) or as an archive.
75 75
76Using git type 76Using git type
77@example 77@example
78git clone https://gnunet.org/git/gnunet.git 78git clone https://git.gnunet.org/gnunet.git
79@end example 79@end example
80 80
81The archive can be found at 81The archive can be found at
82@uref{https://gnunet.org/downloads}. Extract it using a graphical 82@uref{https://ftpmirror.gnu.org/gnu/gnunet/}. Extract it using a graphical
83archive tool or @code{tar}: 83archive tool or @code{tar}:
84@example 84@example
85tar xzvf gnunet-0.11.0pre66.tar.gz 85tar xzvf gnunet-0.11.0pre66.tar.gz
@@ -1708,7 +1708,7 @@ will take the serial as a reference point and request the zone. The server will
1708either answer the IXFR request with a correct incremental zone or with the 1708either answer the IXFR request with a correct incremental zone or with the
1709entire zone, which depends on the server configuration. 1709entire zone, which depends on the server configuration.
1710 1710
1711You can find the source code here: @code{https://gnunet.org/git/ascension.git/} 1711You can find the source code here: @code{https://git.gnunet.org/ascension.git/}
1712 1712
1713The software can be installed into a Python virtual environment like this: 1713The software can be installed into a Python virtual environment like this:
1714@example 1714@example
diff --git a/doc/handbook/chapters/keyconcepts.texi b/doc/handbook/chapters/keyconcepts.texi
index b4a60024c..829fed82e 100644
--- a/doc/handbook/chapters/keyconcepts.texi
+++ b/doc/handbook/chapters/keyconcepts.texi
@@ -88,7 +88,7 @@ Ronaldo A. Ferreira, Christian Grothoff, and Paul Ruth.
88A Transport Layer Abstraction for Peer-to-Peer Networks 88A Transport Layer Abstraction for Peer-to-Peer Networks
89Proceedings of the 3rd International Symposium on Cluster Computing 89Proceedings of the 3rd International Symposium on Cluster Computing
90and the Grid (GRID 2003), 2003. 90and the Grid (GRID 2003), 2003.
91(@uref{https://gnunet.org/git/bibliography.git/plain/docs/transport.pdf, https://gnunet.org/git/bibliography.git/plain/docs/transport.pdf}) 91(@uref{https://git.gnunet.org/bibliography.git/plain/docs/transport.pdf, https://git.gnunet.org/bibliography.git/plain/docs/transport.pdf})
92 92
93@cindex Accounting to Encourage Resource Sharing 93@cindex Accounting to Encourage Resource Sharing
94@node Accounting to Encourage Resource Sharing 94@node Accounting to Encourage Resource Sharing
@@ -125,7 +125,7 @@ the network load is high.
125For more information, refer to the following paper: 125For more information, refer to the following paper:
126Christian Grothoff. An Excess-Based Economic Model for Resource 126Christian Grothoff. An Excess-Based Economic Model for Resource
127Allocation in Peer-to-Peer Networks. Wirtschaftsinformatik, June 2003. 127Allocation in Peer-to-Peer Networks. Wirtschaftsinformatik, June 2003.
128(@uref{https://gnunet.org/git/bibliography.git/plain/docs/ebe.pdf, https://gnunet.org/git/bibliography.git/plain/docs/ebe.pdf}) 128(@uref{https://git.gnunet.org/bibliography.git/plain/docs/ebe.pdf, https://git.gnunet.org/bibliography.git/plain/docs/ebe.pdf})
129 129
130@cindex Confidentiality 130@cindex Confidentiality
131@node Confidentiality 131@node Confidentiality
@@ -162,7 +162,7 @@ scientific metrics
162(Claudia Díaz, Stefaan Seys, Joris Claessens, 162(Claudia Díaz, Stefaan Seys, Joris Claessens,
163and Bart Preneel. Towards measuring anonymity. 163and Bart Preneel. Towards measuring anonymity.
1642002. 1642002.
165(@uref{https://gnunet.org/git/bibliography.git/plain/docs/article-89.pdf, https://gnunet.org/git/bibliography.git/plain/docs/article-89.pdf})) 165(@uref{https://git.gnunet.org/bibliography.git/plain/docs/article-89.pdf, https://git.gnunet.org/bibliography.git/plain/docs/article-89.pdf}))
166that can help quantify the level of anonymity that a given mechanism 166that can help quantify the level of anonymity that a given mechanism
167provides, there is no such thing as "complete anonymity". 167provides, there is no such thing as "complete anonymity".
168GNUnet's file-sharing implementation allows users to select for each 168GNUnet's file-sharing implementation allows users to select for each
@@ -225,7 +225,7 @@ Refer to the following paper for more:
225Krista Bennett and Christian Grothoff. 225Krista Bennett and Christian Grothoff.
226GAP --- practical anonymous networking. In Proceedings of 226GAP --- practical anonymous networking. In Proceedings of
227Designing Privacy Enhancing Technologies, 2003. 227Designing Privacy Enhancing Technologies, 2003.
228(@uref{https://gnunet.org/git/bibliography.git/plain/docs/aff.pdf, https://gnunet.org/git/bibliography.git/plain/docs/aff.pdf}) 228(@uref{https://git.gnunet.org/bibliography.git/plain/docs/aff.pdf, https://git.gnunet.org/bibliography.git/plain/docs/aff.pdf})
229 229
230@cindex Deniability 230@cindex Deniability
231@node Deniability 231@node Deniability
@@ -253,7 +253,7 @@ Christian Grothoff, Krista Grothoff, Tzvetan Horozov,
253and Jussi T. Lindgren. 253and Jussi T. Lindgren.
254An Encoding for Censorship-Resistant Sharing. 254An Encoding for Censorship-Resistant Sharing.
2552009. 2552009.
256(@uref{https://gnunet.org/git/bibliography.git/plain/docs/ecrs.pdf, https://gnunet.org/git/bibliography.git/plain/docs/ecrs.pdf}) 256(@uref{https://git.gnunet.org/bibliography.git/plain/docs/ecrs.pdf, https://git.gnunet.org/bibliography.git/plain/docs/ecrs.pdf})
257 257
258@cindex Peer Identities 258@cindex Peer Identities
259@node Peer Identities 259@node Peer Identities
@@ -284,7 +284,7 @@ GNS (Matthias Wachs, Martin Schanzenbach, and Christian Grothoff.
284A Censorship-Resistant, Privacy-Enhancing and Fully Decentralized Name 284A Censorship-Resistant, Privacy-Enhancing and Fully Decentralized Name
285System. In proceedings of 13th International Conference on Cryptology and 285System. In proceedings of 13th International Conference on Cryptology and
286Network Security (CANS 2014). 2014. 286Network Security (CANS 2014). 2014.
287@uref{https://gnunet.org/git/bibliography.git/plain/docs/gns2014wachs.pdf, https://gnunet.org/git/bibliography.git/plain/docs/gns2014wachs.pdf}) 287@uref{https://git.gnunet.org/bibliography.git/plain/docs/gns2014wachs.pdf, https://git.gnunet.org/bibliography.git/plain/docs/gns2014wachs.pdf})
288zones are similar to those of DNS zones, but instead of a hierarchy of 288zones are similar to those of DNS zones, but instead of a hierarchy of
289authorities to governing their use, GNS zones are controlled by a private 289authorities to governing their use, GNS zones are controlled by a private
290key. 290key.
diff --git a/doc/man/gnunet-arm.1 b/doc/man/gnunet-arm.1
index 0e7486d28..b17e74a73 100644
--- a/doc/man/gnunet-arm.1
+++ b/doc/man/gnunet-arm.1
@@ -51,7 +51,7 @@ List all running services.
51.IP "\-v, \-\-version" 51.IP "\-v, \-\-version"
52Print GNUnet version number. 52Print GNUnet version number.
53.SH BUGS 53.SH BUGS
54Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 54Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
55electronic mail to <gnunet\-developers@gnu.org> 55electronic mail to <gnunet\-developers@gnu.org>
56.SH SEE ALSO 56.SH SEE ALSO
57gnunet\-config(1), gnunet\-setup(1) 57gnunet\-config(1), gnunet\-setup(1)
diff --git a/doc/man/gnunet-ats.1 b/doc/man/gnunet-ats.1
index 895c71942..c098ed576 100644
--- a/doc/man/gnunet-ats.1
+++ b/doc/man/gnunet-ats.1
@@ -60,7 +60,7 @@ Print verbose output (include ATS address properties)
60.IP "\-v, \-\-version" 60.IP "\-v, \-\-version"
61Print GNUnet version number. 61Print GNUnet version number.
62.SH BUGS 62.SH BUGS
63Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 63Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
64electronic mail to <bug\-gnunet@gnu.org> 64electronic mail to <bug\-gnunet@gnu.org>
65.SH SEE ALSO 65.SH SEE ALSO
66gnunet\-transport(1) 66gnunet\-transport(1)
diff --git a/doc/man/gnunet-auto-share.1 b/doc/man/gnunet-auto-share.1
index 3989b1351..a2965b19f 100644
--- a/doc/man/gnunet-auto-share.1
+++ b/doc/man/gnunet-auto-share.1
@@ -99,7 +99,7 @@ Share a directory "$HOME/gnunet\-share/":
99~/.config/gnunet.conf 99~/.config/gnunet.conf
100GNUnet configuration file 100GNUnet configuration file
101.SH BUGS 101.SH BUGS
102Report bugs to <https://gnunet.org/bugs/> or by sending electronic 102Report bugs to <https://bugs.gnunet.org/> or by sending electronic
103mail to <gnunet\-developers@gnu.org> 103mail to <gnunet\-developers@gnu.org>
104.SH SEE ALSO 104.SH SEE ALSO
105\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1), 105\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1),
diff --git a/doc/man/gnunet-bcd.1 b/doc/man/gnunet-bcd.1
index f10e6f891..02b4397de 100644
--- a/doc/man/gnunet-bcd.1
+++ b/doc/man/gnunet-bcd.1
@@ -29,7 +29,7 @@ Use LOGLEVEL for logging. Valid values are DEBUG, INFO, WARNING and ERROR.
29.IP "\-v, \-\-version" 29.IP "\-v, \-\-version"
30Print GNUnet version number. 30Print GNUnet version number.
31.SH BUGS 31.SH BUGS
32Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 32Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
33electronic mail to <gnunet\-developers@gnu.org> 33electronic mail to <gnunet\-developers@gnu.org>
34.SH SEE ALSO 34.SH SEE ALSO
35The full documentation for 35The full documentation for
diff --git a/doc/man/gnunet-cadet.1 b/doc/man/gnunet-cadet.1
index 9c84066bc..8404f085c 100644
--- a/doc/man/gnunet-cadet.1
+++ b/doc/man/gnunet-cadet.1
@@ -61,7 +61,7 @@ Use LOGLEVEL for logging. Valid values are DEBUG, INFO, WARNING and ERROR.
61Print GNUnet version number. 61Print GNUnet version number.
62 62
63.SH BUGS 63.SH BUGS
64Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 64Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
65electronic mail to <gnunet\-developers@gnu.org> 65electronic mail to <gnunet\-developers@gnu.org>
66.SH SEE ALSO 66.SH SEE ALSO
67The full documentation for 67The full documentation for
diff --git a/doc/man/gnunet-config.1 b/doc/man/gnunet-config.1
index c4f979fb0..f1443283f 100644
--- a/doc/man/gnunet-config.1
+++ b/doc/man/gnunet-config.1
@@ -42,7 +42,7 @@ Use LOGLEVEL for logging. Valid values are DEBUG, INFO, WARNING and ERROR.
42.IP "\-v, \-\-version" 42.IP "\-v, \-\-version"
43Print GNUnet version number. 43Print GNUnet version number.
44.SH BUGS 44.SH BUGS
45Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 45Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
46electronic mail to <gnunet\-developers@gnu.org> 46electronic mail to <gnunet\-developers@gnu.org>
47.SH SEE ALSO 47.SH SEE ALSO
48The full documentation for 48The full documentation for
diff --git a/doc/man/gnunet-conversation-test.1 b/doc/man/gnunet-conversation-test.1
index 046091752..5c08d3dab 100644
--- a/doc/man/gnunet-conversation-test.1
+++ b/doc/man/gnunet-conversation-test.1
@@ -31,7 +31,7 @@ Valid values are DEBUG, INFO, WARNING and ERROR.
31.IP "\-v, \-\-version" 31.IP "\-v, \-\-version"
32Print GNUnet version number. 32Print GNUnet version number.
33.SH BUGS 33.SH BUGS
34Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 34Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
35electronic mail to <gnunet\-developers@gnu.org> 35electronic mail to <gnunet\-developers@gnu.org>
36.SH SEE ALSO 36.SH SEE ALSO
37\fBgnunet\-conversation\fP(1) 37\fBgnunet\-conversation\fP(1)
diff --git a/doc/man/gnunet-conversation.1 b/doc/man/gnunet-conversation.1
index fb0596e19..5925871da 100644
--- a/doc/man/gnunet-conversation.1
+++ b/doc/man/gnunet-conversation.1
@@ -37,7 +37,7 @@ The default LINE is zero, which should be fine for most users.
37.IP "\-v, \-\-version" 37.IP "\-v, \-\-version"
38Print GNUnet version number. 38Print GNUnet version number.
39.SH BUGS 39.SH BUGS
40Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 40Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
41electronic mail to <gnunet\-developers@gnu.org> 41electronic mail to <gnunet\-developers@gnu.org>
42.SH SEE ALSO 42.SH SEE ALSO
43\fBgnunet\-identity\fP(1), \fBgnunet\-namestore\fP(1), \fBgnunet\-gns\fP(1) 43\fBgnunet\-identity\fP(1), \fBgnunet\-namestore\fP(1), \fBgnunet\-gns\fP(1)
diff --git a/doc/man/gnunet-core.1 b/doc/man/gnunet-core.1
index dd2b566f9..89dad31b2 100644
--- a/doc/man/gnunet-core.1
+++ b/doc/man/gnunet-core.1
@@ -28,7 +28,7 @@ print the version number
28\fB\-V\fR, \fB\-\-verbose\fR 28\fB\-V\fR, \fB\-\-verbose\fR
29be verbose 29be verbose
30.SH BUGS 30.SH BUGS
31Report bugs by using mantis <https://gnunet.org/bugs/> or by sending 31Report bugs by using mantis <https://bugs.gnunet.org/> or by sending
32electronic mail to <gnunet\-developers@gnu.org> 32electronic mail to <gnunet\-developers@gnu.org>
33.SH SEE ALSO 33.SH SEE ALSO
34\fBgnunet\-transport\fP(1) 34\fBgnunet\-transport\fP(1)
diff --git a/doc/man/gnunet-datastore.1 b/doc/man/gnunet-datastore.1
index 4cb536f51..5dd8cec52 100644
--- a/doc/man/gnunet-datastore.1
+++ b/doc/man/gnunet-datastore.1
@@ -36,7 +36,7 @@ configure logging to write logs to FILENAME
36\fB\-v\fR, \fB\-\-version\fR 36\fB\-v\fR, \fB\-\-version\fR
37print the version number 37print the version number
38.SH BUGS 38.SH BUGS
39Report bugs by using mantis <https://gnunet.org/bugs/> or by sending 39Report bugs by using mantis <https://bugs.gnunet.org/> or by sending
40electronic mail to <gnunet\-developers@gnu.org> 40electronic mail to <gnunet\-developers@gnu.org>
41.SH SEE ALSO 41.SH SEE ALSO
42\fBgnunet\-publish\fP(1) 42\fBgnunet\-publish\fP(1)
diff --git a/doc/man/gnunet-directory.1 b/doc/man/gnunet-directory.1
index 109b2fc6c..c08eca46d 100644
--- a/doc/man/gnunet-directory.1
+++ b/doc/man/gnunet-directory.1
@@ -56,7 +56,7 @@ by \fBgnunet\-download\fP(1) for later processing or be handled more directly
56by \fBgnunet\-fs\-gtk\fP(1). 56by \fBgnunet\-fs\-gtk\fP(1).
57 57
58.SH BUGS 58.SH BUGS
59Report bugs by using mantis <https://gnunet.org/bugs/> or by sending 59Report bugs by using mantis <https://bugs.gnunet.org/> or by sending
60electronic mail to <gnunet\-developers@gnu.org> 60electronic mail to <gnunet\-developers@gnu.org>
61.SH SEE ALSO 61.SH SEE ALSO
62\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1), 62\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1),
diff --git a/doc/man/gnunet-dns2gns.1 b/doc/man/gnunet-dns2gns.1
index 6ecad3c42..552df25b6 100644
--- a/doc/man/gnunet-dns2gns.1
+++ b/doc/man/gnunet-dns2gns.1
@@ -35,7 +35,7 @@ Use LOGLEVEL for logging. Valid values are DEBUG, INFO, WARNING and ERROR.
35Print GNUnet version number. 35Print GNUnet version number.
36 36
37.SH BUGS 37.SH BUGS
38Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 38Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
39electronic mail to <bug\-gnunet@gnu.org> 39electronic mail to <bug\-gnunet@gnu.org>
40.SH SEE ALSO 40.SH SEE ALSO
41gnunet\-gns\-fcfs(1), gnunet\-gns(1), gnunet\-identity(1) 41gnunet\-gns\-fcfs(1), gnunet\-gns(1), gnunet\-identity(1)
diff --git a/doc/man/gnunet-download-manager.1 b/doc/man/gnunet-download-manager.1
index 7cc6dbffb..ebc884678 100644
--- a/doc/man/gnunet-download-manager.1
+++ b/doc/man/gnunet-download-manager.1
@@ -47,7 +47,7 @@ downloads.
47~/.gnunet-download-manager.scm 47~/.gnunet-download-manager.scm
48Configuration file. 48Configuration file.
49.SH BUGS 49.SH BUGS
50Report bugs by using mantis <https://gnunet.org/bugs/> or by sending 50Report bugs by using mantis <https://bugs.gnunet.org/> or by sending
51electronic mail to <gnunet-developers@gnu.org>. 51electronic mail to <gnunet-developers@gnu.org>.
52.PP 52.PP
53Furthermore it is assumed that gnunet-download-manager is no longer 53Furthermore it is assumed that gnunet-download-manager is no longer
diff --git a/doc/man/gnunet-download.1 b/doc/man/gnunet-download.1
index 58e82e790..064a803d0 100644
--- a/doc/man/gnunet-download.1
+++ b/doc/man/gnunet-download.1
@@ -131,7 +131,7 @@ do the same.
131~/.config/gnunet.conf 131~/.config/gnunet.conf
132GNUnet configuration file 132GNUnet configuration file
133.SH BUGS 133.SH BUGS
134Report bugs to <https://gnunet.org/bugs/> or by sending electronic 134Report bugs to <https://bugs.gnunet.org/> or by sending electronic
135mail to <gnunet\-developers@gnu.org> 135mail to <gnunet\-developers@gnu.org>
136.SH SEE ALSO 136.SH SEE ALSO
137\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1), 137\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1),
diff --git a/doc/man/gnunet-ecc.1 b/doc/man/gnunet-ecc.1
index e3db11eab..aedc0bc49 100644
--- a/doc/man/gnunet-ecc.1
+++ b/doc/man/gnunet-ecc.1
@@ -49,7 +49,7 @@ Print GNUnet version number.
49 49
50 50
51.SH BUGS 51.SH BUGS
52Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 52Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
53electronic mail to <gnunet\-developers@gnu.org> 53electronic mail to <gnunet\-developers@gnu.org>
54.SH SEE ALSO 54.SH SEE ALSO
55The full documentation for 55The full documentation for
diff --git a/doc/man/gnunet-fs.1 b/doc/man/gnunet-fs.1
index 8a9f0838c..dcaf90d72 100644
--- a/doc/man/gnunet-fs.1
+++ b/doc/man/gnunet-fs.1
@@ -33,7 +33,7 @@ print the version number
33\fB\-V\fR, \fB\-\-verbose\fR 33\fB\-V\fR, \fB\-\-verbose\fR
34be verbose 34be verbose
35.SH BUGS 35.SH BUGS
36Report bugs by using mantis <https://gnunet.org/bugs/> or by sending 36Report bugs by using mantis <https://bugs.gnunet.org/> or by sending
37electronic mail to <gnunet\-developers@gnu.org> 37electronic mail to <gnunet\-developers@gnu.org>
38.SH SEE ALSO 38.SH SEE ALSO
39\fBgnunet\-publish\fP(1) 39\fBgnunet\-publish\fP(1)
diff --git a/doc/man/gnunet-gns-proxy.1 b/doc/man/gnunet-gns-proxy.1
index f99be5104..6c12e2c09 100644
--- a/doc/man/gnunet-gns-proxy.1
+++ b/doc/man/gnunet-gns-proxy.1
@@ -38,7 +38,7 @@ ERROR.
38.IP "\-v, \-\-version" 38.IP "\-v, \-\-version"
39Print GNUnet version number. 39Print GNUnet version number.
40.SH BUGS 40.SH BUGS
41Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 41Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
42electronic mail to <bug\-gnunet@gnu.org> 42electronic mail to <bug\-gnunet@gnu.org>
43.SH SEE ALSO 43.SH SEE ALSO
44gnunet\-gns(1) 44gnunet\-gns(1)
diff --git a/doc/man/gnunet-gns.1 b/doc/man/gnunet-gns.1
index 9f7a651a7..597297629 100644
--- a/doc/man/gnunet-gns.1
+++ b/doc/man/gnunet-gns.1
@@ -41,7 +41,7 @@ Print GNUnet version number.
41gnunet\-gns will return 0 on success, 1 on internal failures, 2 on 41gnunet\-gns will return 0 on success, 1 on internal failures, 2 on
42launch failures, 4 if the given name is not configured to use GNS. 42launch failures, 4 if the given name is not configured to use GNS.
43.SH BUGS 43.SH BUGS
44Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 44Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
45electronic mail to <gnunet\-developers@gnu.org> 45electronic mail to <gnunet\-developers@gnu.org>
46.SH SEE ALSO 46.SH SEE ALSO
47\fBgnunet\-namestore\fP(1), \fBgnunet\-identity\fP(1) 47\fBgnunet\-namestore\fP(1), \fBgnunet\-identity\fP(1)
diff --git a/doc/man/gnunet-identity.1 b/doc/man/gnunet-identity.1
index 8d009d07b..ca4acfebe 100644
--- a/doc/man/gnunet-identity.1
+++ b/doc/man/gnunet-identity.1
@@ -54,7 +54,7 @@ This will fail if NAME does not yet exist.
54~/.local/share/gnunet/identity/egos 54~/.local/share/gnunet/identity/egos
55Directory where the egos are stored (by default) 55Directory where the egos are stored (by default)
56.SH BUGS 56.SH BUGS
57Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 57Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
58electronic mail to <gnunet\-developers@gnu.org> 58electronic mail to <gnunet\-developers@gnu.org>
59.SH SEE ALSO 59.SH SEE ALSO
60\fBgnunet\-gns\fP(1), \fBgnunet\-namestore\fP(1) 60\fBgnunet\-gns\fP(1), \fBgnunet\-namestore\fP(1)
diff --git a/doc/man/gnunet-namecache.1 b/doc/man/gnunet-namecache.1
index 528656218..78acb017b 100644
--- a/doc/man/gnunet-namecache.1
+++ b/doc/man/gnunet-namecache.1
@@ -35,7 +35,7 @@ Specifies the public key of the zone to inspect (mandatory option)
35 35
36 36
37.SH BUGS 37.SH BUGS
38Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 38Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
39electronic mail to <gnunet\-developers@gnu.org> 39electronic mail to <gnunet\-developers@gnu.org>
40.SH SEE ALSO 40.SH SEE ALSO
41\fBgnunet\-gns\fP(1) 41\fBgnunet\-gns\fP(1)
diff --git a/doc/man/gnunet-namestore-fcfsd.1 b/doc/man/gnunet-namestore-fcfsd.1
index 3f22145e2..a6c9d2b32 100644
--- a/doc/man/gnunet-namestore-fcfsd.1
+++ b/doc/man/gnunet-namestore-fcfsd.1
@@ -44,7 +44,7 @@ Print GNUnet version number.
44.IP "\-z EGO, \-\-zone=EGO" 44.IP "\-z EGO, \-\-zone=EGO"
45Specifies for which EGO should FCFSD manage the zone. 45Specifies for which EGO should FCFSD manage the zone.
46.SH BUGS 46.SH BUGS
47Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 47Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
48electronic mail to <bug\-gnunet@gnu.org> 48electronic mail to <bug\-gnunet@gnu.org>
49.SH SEE ALSO 49.SH SEE ALSO
50gnunet\-identity(1), gnunet\-gns(1), gnunet\-gns\-proxy(1) 50gnunet\-identity(1), gnunet\-gns(1), gnunet\-gns\-proxy(1)
diff --git a/doc/man/gnunet-namestore.1 b/doc/man/gnunet-namestore.1
index 45309fad6..7517a4f5e 100644
--- a/doc/man/gnunet-namestore.1
+++ b/doc/man/gnunet-namestore.1
@@ -98,7 +98,7 @@ Specifies the name of the ego controlling the private key for the zone
98 98
99 99
100.SH BUGS 100.SH BUGS
101Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 101Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
102electronic mail to <gnunet\-developers@gnu.org> 102electronic mail to <gnunet\-developers@gnu.org>
103.SH SEE ALSO 103.SH SEE ALSO
104\fBgnunet\-gns\fP(1), \fBgnunet\-namestore\-gtk\fP(1) 104\fBgnunet\-gns\fP(1), \fBgnunet\-namestore\-gtk\fP(1)
diff --git a/doc/man/gnunet-nat-auto.1 b/doc/man/gnunet-nat-auto.1
index bc95972c4..8514a5c99 100644
--- a/doc/man/gnunet-nat-auto.1
+++ b/doc/man/gnunet-nat-auto.1
@@ -45,7 +45,7 @@ Test HTTP configuration
45# gnunet\-nat\-auto -u \-S transport-udp 45# gnunet\-nat\-auto -u \-S transport-udp
46Test UDP configuration 46Test UDP configuration
47.SH BUGS 47.SH BUGS
48Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 48Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
49electronic mail to <gnunet\-developers@gnu.org> 49electronic mail to <gnunet\-developers@gnu.org>
50.SH SEE ALSO 50.SH SEE ALSO
51gnunet\-transport(1) gnunet\-nat(1) 51gnunet\-transport(1) gnunet\-nat(1)
diff --git a/doc/man/gnunet-nat-server.1 b/doc/man/gnunet-nat-server.1
index 1fdf1e265..f31e69b26 100644
--- a/doc/man/gnunet-nat-server.1
+++ b/doc/man/gnunet-nat-server.1
@@ -45,7 +45,7 @@ are supposed to autoconfigure with this server.
45.IP "\-c FILENAME, \-\-config=FILENAME" 45.IP "\-c FILENAME, \-\-config=FILENAME"
46Use the configuration file FILENAME. 46Use the configuration file FILENAME.
47.SH BUGS 47.SH BUGS
48Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 48Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
49electronic mail to <gnunet\-developers@gnu.org> 49electronic mail to <gnunet\-developers@gnu.org>
50.SH SEE ALSO 50.SH SEE ALSO
51gnunet\-transport(1) 51gnunet\-transport(1)
diff --git a/doc/man/gnunet-nat.1 b/doc/man/gnunet-nat.1
index cf48e1dc6..4a6a56e97 100644
--- a/doc/man/gnunet-nat.1
+++ b/doc/man/gnunet-nat.1
@@ -84,7 +84,7 @@ Assume manually punched NAT, but determine external IP automatically:
84# gnunet-nat FIXME -s 84# gnunet-nat FIXME -s
85XXX 85XXX
86.SH BUGS 86.SH BUGS
87Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 87Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
88electronic mail to <gnunet\-developers@gnu.org> 88electronic mail to <gnunet\-developers@gnu.org>
89.SH SEE ALSO 89.SH SEE ALSO
90gnunet\-transport(1) 90gnunet\-transport(1)
diff --git a/doc/man/gnunet-peerinfo.1 b/doc/man/gnunet-peerinfo.1
index 03246d968..bd37fa635 100644
--- a/doc/man/gnunet-peerinfo.1
+++ b/doc/man/gnunet-peerinfo.1
@@ -44,7 +44,7 @@ order to consider this peer one of their friends in F2F mode).
44.IP "\-v, \-\-version" 44.IP "\-v, \-\-version"
45Print the version number 45Print the version number
46.SH BUGS 46.SH BUGS
47Report bugs by using mantis <https://gnunet.org/bugs/> or by sending 47Report bugs by using mantis <https://bugs.gnunet.org/> or by sending
48electronic mail to <gnunet\-developers@gnu.org> 48electronic mail to <gnunet\-developers@gnu.org>
49.SH SEE ALSO 49.SH SEE ALSO
50gnunet.conf(5) 50gnunet.conf(5)
diff --git a/doc/man/gnunet-publish.1 b/doc/man/gnunet-publish.1
index 5bc2eec76..b07208732 100644
--- a/doc/man/gnunet-publish.1
+++ b/doc/man/gnunet-publish.1
@@ -314,7 +314,7 @@ Update the previous entry, do not allow any future updates:
314~/.config/gnunet.conf 314~/.config/gnunet.conf
315GNUnet configuration file 315GNUnet configuration file
316.SH BUGS 316.SH BUGS
317Report bugs to <https://gnunet.org/bugs/> or by sending electronic 317Report bugs to <https://bugs.gnunet.org/> or by sending electronic
318mail to <gnunet\-developers@gnu.org> 318mail to <gnunet\-developers@gnu.org>
319.SH SEE ALSO 319.SH SEE ALSO
320\fBgnunet\-auto\-share\fP(1) 320\fBgnunet\-auto\-share\fP(1)
diff --git a/doc/man/gnunet-qr.1 b/doc/man/gnunet-qr.1
index b80f18bb3..0145a3523 100644
--- a/doc/man/gnunet-qr.1
+++ b/doc/man/gnunet-qr.1
@@ -25,7 +25,7 @@ Do not show preview windows.
25.IP "\-v, \-\-verbose" 25.IP "\-v, \-\-verbose"
26Be verbose. 26Be verbose.
27.SH BUGS 27.SH BUGS
28Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 28Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
29electronic mail to <gnunet\-developers@gnu.org> 29electronic mail to <gnunet\-developers@gnu.org>
30.SH SEE ALSO 30.SH SEE ALSO
31The full documentation for 31The full documentation for
diff --git a/doc/man/gnunet-resolver.1 b/doc/man/gnunet-resolver.1
index 56eef560d..66f1ba9a8 100644
--- a/doc/man/gnunet-resolver.1
+++ b/doc/man/gnunet-resolver.1
@@ -27,7 +27,7 @@ Perform a reverse lookup.
27.IP "\-v, \-\-version" 27.IP "\-v, \-\-version"
28Print GNUnet version number. 28Print GNUnet version number.
29.SH BUGS 29.SH BUGS
30Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 30Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
31electronic mail to <gnunet\-developers@gnu.org> 31electronic mail to <gnunet\-developers@gnu.org>
32.SH SEE ALSO 32.SH SEE ALSO
33The full documentation for 33The full documentation for
diff --git a/doc/man/gnunet-revocation.1 b/doc/man/gnunet-revocation.1
index 1afda399c..f21f82612 100644
--- a/doc/man/gnunet-revocation.1
+++ b/doc/man/gnunet-revocation.1
@@ -67,7 +67,7 @@ Print GNUnet version number.
67 67
68 68
69.SH BUGS 69.SH BUGS
70Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending electronic mail to <gnunet\-developers@gnu.org> 70Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending electronic mail to <gnunet\-developers@gnu.org>
71.SH "SEE ALSO" 71.SH "SEE ALSO"
72The full documentation for 72The full documentation for
73.B gnunet 73.B gnunet
diff --git a/doc/man/gnunet-scalarproduct.1 b/doc/man/gnunet-scalarproduct.1
index 4ccb2a740..1c8938daf 100644
--- a/doc/man/gnunet-scalarproduct.1
+++ b/doc/man/gnunet-scalarproduct.1
@@ -73,7 +73,7 @@ Use LOGLEVEL for logging. Valid values are DEBUG, INFO, WARNING and ERROR.
73.IP "\-v, \-\-version" 73.IP "\-v, \-\-version"
74Print GNUnet version number. 74Print GNUnet version number.
75.SH BUGS 75.SH BUGS
76Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 76Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
77electronic mail to <gnunet\-developers@gnu.org> 77electronic mail to <gnunet\-developers@gnu.org>
78.SH SEE ALSO 78.SH SEE ALSO
79gnunet\-peerinfo(1) 79gnunet\-peerinfo(1)
diff --git a/doc/man/gnunet-scrypt.1 b/doc/man/gnunet-scrypt.1
index d156e17e8..01ac4205a 100644
--- a/doc/man/gnunet-scrypt.1
+++ b/doc/man/gnunet-scrypt.1
@@ -36,7 +36,7 @@ Time to wait between calculations.
36.IP "\-v, \-\-version" 36.IP "\-v, \-\-version"
37Print GNUnet version number. 37Print GNUnet version number.
38.SH BUGS 38.SH BUGS
39Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 39Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
40electronic mail to <gnunet\-developers@gnu.org> 40electronic mail to <gnunet\-developers@gnu.org>
41.SH SEE ALSO 41.SH SEE ALSO
42The full documentation for 42The full documentation for
diff --git a/doc/man/gnunet-search.1 b/doc/man/gnunet-search.1
index 79991e375..af72d369d 100644
--- a/doc/man/gnunet-search.1
+++ b/doc/man/gnunet-search.1
@@ -137,7 +137,7 @@ for gnunet\-publish on how to supply meta-data by hand).
137~/.config/gnunet.conf 137~/.config/gnunet.conf
138GNUnet configuration file; specifies the default value for the timeout 138GNUnet configuration file; specifies the default value for the timeout
139.SH "REPORTING BUGS" 139.SH "REPORTING BUGS"
140Report bugs to <https://gnunet.org/bugs/> or by sending electronic mail to <gnunet\-developers@gnu.org> 140Report bugs to <https://bugs.gnunet.org/> or by sending electronic mail to <gnunet\-developers@gnu.org>
141.SH "SEE ALSO" 141.SH "SEE ALSO"
142\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1), \fBgnunet\-download\fP(1), \fBgnunet.conf\fP(5), 142\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1), \fBgnunet\-download\fP(1), \fBgnunet.conf\fP(5),
143The full documentation for 143The full documentation for
diff --git a/doc/man/gnunet-testbed-profiler.1 b/doc/man/gnunet-testbed-profiler.1
index cac6e9af7..b1dde99dd 100644
--- a/doc/man/gnunet-testbed-profiler.1
+++ b/doc/man/gnunet-testbed-profiler.1
@@ -38,7 +38,7 @@ Create COUNT number of peers.
38.IP "\-v, \-\-version" 38.IP "\-v, \-\-version"
39Print GNUnet version number. 39Print GNUnet version number.
40.SH BUGS 40.SH BUGS
41Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending electronic mail to <gnunet\-developers@gnu.org> 41Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending electronic mail to <gnunet\-developers@gnu.org>
42.SH "SEE ALSO" 42.SH "SEE ALSO"
43The full documentation for 43The full documentation for
44.B gnunet 44.B gnunet
diff --git a/doc/man/gnunet-testing-run-service.1 b/doc/man/gnunet-testing-run-service.1
index 60c40bf7f..43fdb8ecf 100644
--- a/doc/man/gnunet-testing-run-service.1
+++ b/doc/man/gnunet-testing-run-service.1
@@ -27,7 +27,7 @@ Print short help on options.
27.IP "\-s SERVICE, \-\-service=SERVICE" 27.IP "\-s SERVICE, \-\-service=SERVICE"
28Name of the service to run. 28Name of the service to run.
29.SH BUGS 29.SH BUGS
30Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 30Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
31electronic mail to <gnunet\-developers@gnu.org> 31electronic mail to <gnunet\-developers@gnu.org>
32.SH SEE ALSO 32.SH SEE ALSO
33The full documentation for 33The full documentation for
diff --git a/doc/man/gnunet-testing.1 b/doc/man/gnunet-testing.1
index ff1af50ef..357d0df44 100644
--- a/doc/man/gnunet-testing.1
+++ b/doc/man/gnunet-testing.1
@@ -40,7 +40,7 @@ Configuration template.
40.IP "\-v, \-\-version" 40.IP "\-v, \-\-version"
41Print GNUnet version number. 41Print GNUnet version number.
42.SH BUGS 42.SH BUGS
43Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 43Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
44electronic mail to <gnunet\-developers@gnu.org> 44electronic mail to <gnunet\-developers@gnu.org>
45.SH SEE ALSO 45.SH SEE ALSO
46The full documentation for 46The full documentation for
diff --git a/doc/man/gnunet-timeout.1 b/doc/man/gnunet-timeout.1
index 8adb85571..653f211cd 100644
--- a/doc/man/gnunet-timeout.1
+++ b/doc/man/gnunet-timeout.1
@@ -9,7 +9,7 @@ gnunet\-timeout \- run process with timeout
9timeout. Provided as the standard "timout" utility may not be 9timeout. Provided as the standard "timout" utility may not be
10available on all platforms. 10available on all platforms.
11.SH BUGS 11.SH BUGS
12Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 12Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
13electronic mail to <gnunet\-developers@gnu.org> 13electronic mail to <gnunet\-developers@gnu.org>
14.SH SEE ALSO 14.SH SEE ALSO
15timeout(1) 15timeout(1)
diff --git a/doc/man/gnunet-transport-certificate-creation.1 b/doc/man/gnunet-transport-certificate-creation.1
index 0e1e681f8..9dc572acf 100644
--- a/doc/man/gnunet-transport-certificate-creation.1
+++ b/doc/man/gnunet-transport-certificate-creation.1
@@ -8,7 +8,7 @@ gnunet\-transport\-certificate\-creation \- create certificate for HTTPS transpo
8\fBgnunet\-transport\-certificate\-creation\fP uses openssl to generate a RSA 8\fBgnunet\-transport\-certificate\-creation\fP uses openssl to generate a RSA
9private key and then a self-signed certificate for HTTPS transport. 9private key and then a self-signed certificate for HTTPS transport.
10.SH BUGS 10.SH BUGS
11Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 11Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
12electronic mail to <gnunet\-developers@gnu.org> 12electronic mail to <gnunet\-developers@gnu.org>
13.SH SEE ALSO 13.SH SEE ALSO
14gnunet\-transport(1) 14gnunet\-transport(1)
diff --git a/doc/man/gnunet-transport.1 b/doc/man/gnunet-transport.1
index 2aafbb9ab..eef762174 100644
--- a/doc/man/gnunet-transport.1
+++ b/doc/man/gnunet-transport.1
@@ -60,7 +60,7 @@ print the version number
60\fB\-V\fR, \fB\-\-verbose\fR 60\fB\-V\fR, \fB\-\-verbose\fR
61be verbose 61be verbose
62.SH "REPORTING BUGS" 62.SH "REPORTING BUGS"
63Report bugs by using mantis <https://gnunet.org/bugs/> or by sending electronic mail to <gnunet\-developers@gnu.org> 63Report bugs by using mantis <https://bugs.gnunet.org/> or by sending electronic mail to <gnunet\-developers@gnu.org>
64.SH "SEE ALSO" 64.SH "SEE ALSO"
65\fBgnunet\-arm\fP(1), \fBgnunet\-ats\fP(1) 65\fBgnunet\-arm\fP(1), \fBgnunet\-ats\fP(1)
66The full documentation for 66The full documentation for
diff --git a/doc/man/gnunet-unindex.1 b/doc/man/gnunet-unindex.1
index 1c9d1a58c..6aee4f62e 100644
--- a/doc/man/gnunet-unindex.1
+++ b/doc/man/gnunet-unindex.1
@@ -34,7 +34,7 @@ move locally.
34~/.config/gnunet.conf 34~/.config/gnunet.conf
35GNUnet configuration file 35GNUnet configuration file
36.SH "REPORTING BUGS" 36.SH "REPORTING BUGS"
37Report bugs to <https://gnunet.org/bugs/> or by sending electronic mail to <gnunet\-developers@gnu.org> 37Report bugs to <https://bugs.gnunet.org/> or by sending electronic mail to <gnunet\-developers@gnu.org>
38.SH "SEE ALSO" 38.SH "SEE ALSO"
39\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1), \fBgnunet\-search\fP(1), \fBgnunet\-download\fP(1), \fBgnunet.conf\fP(5) 39\fBgnunet\-fs\-gtk\fP(1), \fBgnunet\-publish\fP(1), \fBgnunet\-search\fP(1), \fBgnunet\-download\fP(1), \fBgnunet.conf\fP(5)
40The full documentation for 40The full documentation for
diff --git a/doc/man/gnunet-uri.1 b/doc/man/gnunet-uri.1
index 72105c4c8..2fe1a05d2 100644
--- a/doc/man/gnunet-uri.1
+++ b/doc/man/gnunet-uri.1
@@ -24,7 +24,7 @@ Use LOGLEVEL for logging. Valid values are DEBUG, INFO, WARNING and ERROR.
24.IP "\-v, \-\-version" 24.IP "\-v, \-\-version"
25Print GNUnet version number. 25Print GNUnet version number.
26.SH BUGS 26.SH BUGS
27Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 27Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
28electronic mail to <gnunet\-developers@gnu.org> 28electronic mail to <gnunet\-developers@gnu.org>
29.SH SEE ALSO 29.SH SEE ALSO
30The full documentation for 30The full documentation for
diff --git a/doc/man/gnunet-vpn.1 b/doc/man/gnunet-vpn.1
index 838624d98..ddb53a7bd 100644
--- a/doc/man/gnunet-vpn.1
+++ b/doc/man/gnunet-vpn.1
@@ -76,7 +76,7 @@ Be verbose.
76.IP "\-v, \-\-version" 76.IP "\-v, \-\-version"
77Print GNUnet version number. 77Print GNUnet version number.
78.SH BUGS 78.SH BUGS
79Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 79Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
80electronic mail to <gnunet\-developers@gnu.org> 80electronic mail to <gnunet\-developers@gnu.org>
81.SH SEE ALSO 81.SH SEE ALSO
82gnunet\-setup(1) 82gnunet\-setup(1)
diff --git a/doc/man/gnunet-zoneimport.1 b/doc/man/gnunet-zoneimport.1
index 97d784136..2a67718f9 100644
--- a/doc/man/gnunet-zoneimport.1
+++ b/doc/man/gnunet-zoneimport.1
@@ -63,7 +63,7 @@ unless you are importing millions of domain names from a zone.
63Typical invocaton would be: 63Typical invocaton would be:
64$ gnunet\-zoneimport 1.2.3.4 < names.txt 64$ gnunet\-zoneimport 1.2.3.4 < names.txt
65.SH BUGS 65.SH BUGS
66Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 66Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
67electronic mail to <gnunet\-developers@gnu.org> 67electronic mail to <gnunet\-developers@gnu.org>
68.SH SEE ALSO 68.SH SEE ALSO
69gnunet\-gns(1), gnunet\-namestore(1) 69gnunet\-gns(1), gnunet\-namestore(1)
diff --git a/doc/man/gnunet.conf.5 b/doc/man/gnunet.conf.5
index 3c88305ba..46ea11319 100644
--- a/doc/man/gnunet.conf.5
+++ b/doc/man/gnunet.conf.5
@@ -130,7 +130,7 @@ to the actual external address for your usage.
130~/.config/gnunet.conf 130~/.config/gnunet.conf
131GNUnet configuration file 131GNUnet configuration file
132.SH BUGS 132.SH BUGS
133Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 133Report bugs by using Mantis <https://bugs.gnunet.org/> or by sending
134electronic mail to <bug-gnunet@gnu.org> 134electronic mail to <bug-gnunet@gnu.org>
135.SH SEE ALSO 135.SH SEE ALSO
136\fBgnunet\-setup\fP(1), \fBgnunet\-arm\fP(1) 136\fBgnunet\-setup\fP(1), \fBgnunet\-arm\fP(1)
diff --git a/doc/tutorial/Makefile.am b/doc/tutorial/Makefile.am
index 412ac3a6f..bd09bf64d 100644
--- a/doc/tutorial/Makefile.am
+++ b/doc/tutorial/Makefile.am
@@ -73,12 +73,15 @@ EXTRA_DIST = \
73 $(gnunet_tutorial_examples) \ 73 $(gnunet_tutorial_examples) \
74 htmlxref.cnf \ 74 htmlxref.cnf \
75 run-gendocs.sh \ 75 run-gendocs.sh \
76 docstyle.css 76 docstyle.css \
77 manual.css \
78 reset.css \
79 style.css
77 80
78 81
79DISTCLEANFILES = \ 82DISTCLEANFILES = \
80 gnunet-tutorial.cps \ 83 gnunet-tutorial.cps \
81 fdl-1.3.cps 84 fdl-1.3.cps
82 85
83# XXX: is this sed invocation portable enough? otherwise try tr(1). 86# XXX: is this sed invocation portable enough? otherwise try tr(1).
84version.texi/replacement: version.texi/replacement/revert 87version.texi/replacement: version.texi/replacement/revert
diff --git a/doc/tutorial/docstyle.css b/doc/tutorial/docstyle.css
new file mode 100644
index 000000000..8719248d0
--- /dev/null
+++ b/doc/tutorial/docstyle.css
@@ -0,0 +1,76 @@
1html, body {
2 font-size: 1em;
3 text-align: left;
4 text-decoration: none;
5}
6html { background-color: #e7e7e7; }
7
8body {
9 max-width: 74.92em;
10 margin: 0 auto;
11 padding: .5em 1em 1em 1em;
12 background-color: white;
13 border: .1em solid #c0c0c0;
14}
15
16h1, h2, h3, h4 { color: #333; }
17h5, h6, dt { color: #222; }
18
19
20a h3 {
21 color: #005090;
22}
23
24a[href] { color: #005090; }
25a[href]:visited { color: #100070; }
26a[href]:active, a[href]:hover {
27 color: #100070;
28 text-decoration: none;
29}
30
31.linkrow {
32 margin: 3em 0;
33}
34
35.linkrow {
36 text-align: center;
37}
38
39div.example { padding: .8em 1.2em .4em; }
40pre.example { padding: .8em 1.2em; }
41div.example, pre.example {
42 margin: 1em 0 1em 3% ;
43 -webkit-border-radius: .3em;
44 -moz-border-radius: .3em;
45 border-radius: .3em;
46 border: 1px solid #d4cbb6;
47 background-color: #f2efe4;
48}
49div.example > pre.example {
50 padding: 0 0 .4em;
51 margin: 0;
52 border: none;
53}
54
55
56/* This makes the very long tables of contents in Gnulib and other
57 manuals easier to read. */
58.contents ul, .shortcontents ul { font-weight: bold; }
59.contents ul ul, .shortcontents ul ul { font-weight: normal; }
60.contents ul { list-style: none; }
61
62/* For colored navigation bars (Emacs manual): make the bar extend
63 across the whole width of the page and give it a decent height. */
64.header, .node { margin: 0 -1em; padding: 0 1em; }
65.header p, .node p { line-height: 2em; }
66
67/* For navigation links */
68.node a, .header a { display: inline-block; line-height: 2em; }
69.node a:hover, .header a:hover { background: #f2efe4; }
70
71table.cartouche {
72 border-collapse: collapse;
73 border-color: darkred;
74 border-style: solid;
75 border-width: 3px;
76}
diff --git a/doc/tutorial/gnunet-tutorial.texi b/doc/tutorial/gnunet-tutorial.texi
index 339984833..89f39b507 100644
--- a/doc/tutorial/gnunet-tutorial.texi
+++ b/doc/tutorial/gnunet-tutorial.texi
@@ -68,14 +68,14 @@ GNUnet can be used to develop a Peer-to-Peer application.
68Detailed installation instructions for 68Detailed installation instructions for
69various operating systems and a detailed list of all 69various operating systems and a detailed list of all
70dependencies can be found on our website at 70dependencies can be found on our website at
71@uref{https://gnunet.org/installation} and in our 71@uref{https://old.gnunet.org/installation} and in our
72Reference Documentation (GNUnet Handbook). 72Reference Documentation (GNUnet Handbook).
73 73
74Please read this tutorial carefully since every single step is 74Please read this tutorial carefully since every single step is
75important, and do not hesitate to contact the GNUnet team if you have 75important, and do not hesitate to contact the GNUnet team if you have
76any questions or problems! Visit this link in your webbrowser to learn 76any questions or problems! Visit this link in your webbrowser to learn
77how to contact the GNUnet team: 77how to contact the GNUnet team:
78@uref{https://gnunet.org/contact_information} 78@uref{https://gnunet.org/en/contact.html}
79 79
80@menu 80@menu
81 81
@@ -192,7 +192,7 @@ $ mv gnunet-@value{VERSION} gnunet
192@noindent 192@noindent
193However, please note that stable versions can be very outdated. 193However, please note that stable versions can be very outdated.
194As a developer you are @b{strongly} encouraged to use the version 194As a developer you are @b{strongly} encouraged to use the version
195from @uref{https://gnunet.org/git/, git}. 195from @uref{https://git.gnunet.org/, the git server}.
196 196
197@node Installing Build Tool Chain and Dependencies 197@node Installing Build Tool Chain and Dependencies
198@section Installing Build Tool Chain and Dependencies 198@section Installing Build Tool Chain and Dependencies
@@ -209,7 +209,7 @@ Please check the notes at the end of the configure process about
209required dependencies. 209required dependencies.
210 210
211For GNUnet bootstrapping support and the HTTP(S) plugin you should 211For GNUnet bootstrapping support and the HTTP(S) plugin you should
212install @uref{https://gnunet.org/gnurl, libgnurl}. 212install @uref{https://gnunet.org/en/gnurl.html, libgnurl}.
213For the filesharing service you should install at least one of the 213For the filesharing service you should install at least one of the
214datastore backends (MySQL, SQlite and PostgreSQL are supported). 214datastore backends (MySQL, SQlite and PostgreSQL are supported).
215 215
@@ -230,7 +230,7 @@ This is required for obtaining the repository, which is achieved with
230the following command: 230the following command:
231 231
232@example 232@example
233$ git clone https://gnunet.org/git/gnunet 233$ git clone https://git.gnunet.org/gnunet
234@end example 234@end example
235 235
236@noindent 236@noindent
@@ -707,9 +707,9 @@ With the testbed API, a sample test case can be structured as follows:
707 707
708@noindent 708@noindent
709The source code for the above listing can be found at 709The source code for the above listing can be found at
710@uref{https://gnunet.org/git/gnunet.git/tree/doc/ 710@c FIXME: This is not the correct URL. Where is the file?
711documentation/testbed_test.c} 711@uref{https://git.gnunet.org/gnunet.git/tree/doc/documentation/testbed_test.c}
712or in the @file{doc/documentation/} folder of your repository check-out. 712or in the @file{doc/} folder of your repository check-out.
713After installing GNUnet, the above source code can be compiled as: 713After installing GNUnet, the above source code can be compiled as:
714 714
715@example 715@example
@@ -800,7 +800,7 @@ a template build system for writing GNUnet extensions in C. It can be
800obtained as follows: 800obtained as follows:
801 801
802@example 802@example
803$ git clone https://gnunet.org/git/gnunet-ext 803$ git clone https://git.gnunet.org/gnunet-ext
804$ cd gnunet-ext/ 804$ cd gnunet-ext/
805$ ./bootstrap 805$ ./bootstrap
806$ ./configure --prefix=$PREFIX --with-gnunet=$PREFIX 806$ ./configure --prefix=$PREFIX --with-gnunet=$PREFIX
@@ -1550,7 +1550,7 @@ The current log level is configured using the @code{$GNUNET_FORCE_LOG}
1550environmental variable. The @code{DEBUG} level is only available if 1550environmental variable. The @code{DEBUG} level is only available if
1551@command{--enable-logging=verbose} was used when running 1551@command{--enable-logging=verbose} was used when running
1552@command{configure}. More details about logging can be found under 1552@command{configure}. More details about logging can be found under
1553@uref{https://gnunet.org/logging}. 1553@uref{https://old.gnunet.org/logging}.
1554 1554
1555You should also probably enable the creation of core files, by setting 1555You should also probably enable the creation of core files, by setting
1556@code{ulimit}, and echo'ing @code{1} into 1556@code{ulimit}, and echo'ing @code{1} into
diff --git a/doc/tutorial/htmlxref.cnf b/doc/tutorial/htmlxref.cnf
new file mode 100644
index 000000000..a4928f6fe
--- /dev/null
+++ b/doc/tutorial/htmlxref.cnf
@@ -0,0 +1,668 @@
1# htmlxref.cnf - reference file for free Texinfo manuals on the web.
2# Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
3# Modified by ng0 <ng0@gnunet.org> for the GNUnet manual.
4
5htmlxrefversion=2017-10-26.06; # UTC
6
7# Copyright 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.
8#
9# Copying and distribution of this file, with or without modification,
10# are permitted in any medium without royalty provided the copyright
11# notice and this notice are preserved.
12#
13# The latest version of this file is available at
14# http://ftpmirror.gnu.org/texinfo/htmlxref.cnf.
15# Email corrections or additions to bug-texinfo@gnu.org.
16# The primary goal is to list all relevant GNU manuals;
17# other free manuals are also welcome.
18#
19# To be included in this list, a manual must:
20#
21# - have a generic url, e.g., no version numbers;
22# - have a unique file name (e.g., manual identifier), i.e., be related to the
23# package name. Things like "refman" or "tutorial" don't work.
24# - follow the naming convention for nodes described at
25# http://www.gnu.org/software/texinfo/manual/texinfo/html_node/HTML-Xref.html
26# This is what makeinfo and texi2html implement.
27#
28# Unless the above criteria are met, it's not possible to generate
29# reliable cross-manual references.
30#
31# For information on automatically generating all the useful formats for
32# a manual to put on the web, see
33# http://www.gnu.org/prep/maintain/html_node/Manuals-on-Web-Pages.html.
34
35# For people editing this file: when a manual named foo is related to a
36# package named bar, the url should contain a variable reference ${BAR}.
37# Otherwise, the gnumaint scripts have no way of knowing they are
38# associated, and thus gnu.org/manual can't include them.
39
40# shorten references to manuals on www.gnu.org.
41G = https://www.gnu.org
42GS = ${G}/software
43
443dldf mono ${GS}/3dldf/manual/user_ref/3DLDF.html
453dldf node ${GS}/3dldf/manual/user_ref/
46
47alive mono ${GS}/alive/manual/alive.html
48alive node ${GS}/alive/manual/html_node/
49
50anubis chapter ${GS}/anubis/manual/html_chapter/
51anubis section ${GS}/anubis/manual/html_section/
52anubis node ${GS}/anubis/manual/html_node/
53
54artanis mono ${GS}/artanis/manual/artanis.html
55artanis node ${GS}/artanis/manual/html_node/
56
57aspell section http://aspell.net/man-html/index.html
58
59auctex mono ${GS}/auctex/manual/auctex.html
60auctex node ${GS}/auctex/manual/auctex/
61
62autoconf mono ${GS}/autoconf/manual/autoconf.html
63autoconf node ${GS}/autoconf/manual/html_node/
64
65autogen mono ${GS}/autogen/manual/html_mono/autogen.html
66autogen chapter ${GS}/autogen/manual/html_chapter/
67autogen node ${GS}/autoconf/manual/html_node/
68
69automake mono ${GS}/automake/manual/automake.html
70automake node ${GS}/automake/manual/html_node/
71
72avl node http://www.stanford.edu/~blp/avl/libavl.html/
73
74bash mono ${GS}/bash/manual/bash.html
75bash node ${GS}/bash/manual/html_node/
76
77BINUTILS = http://sourceware.org/binutils/docs
78binutils node ${BINUTILS}/binutils/
79 as node ${BINUTILS}/as/
80 bfd node ${BINUTILS}/bfd/
81 gprof node ${BINUTILS}/gprof/
82 ld node ${BINUTILS}/ld/
83
84bison mono ${GS}/bison/manual/bison.html
85bison node ${GS}/bison/manual/html_node/
86
87bpel2owfn mono ${GS}/bpel2owfn/manual/2.0.x/bpel2owfn.html
88
89ccd2cue mono ${GS}/ccd2cue/manual/ccd2cue.html
90ccd2cue node ${GS}/ccd2cue/manual/html_node/
91
92cflow mono ${GS}/cflow/manual/cflow.html
93cflow node ${GS}/cflow/manual/html_node/
94
95chess mono ${GS}/chess/manual/gnuchess.html
96chess node ${GS}/chess/manual/html_node/
97
98combine mono ${GS}/combine/manual/combine.html
99combine chapter ${GS}/combine/manual/html_chapter/
100combine section ${GS}/combine/manual/html_section/
101combine node ${GS}/combine/manual/html_node/
102
103complexity mono ${GS}/complexity/manual/complexity.html
104complexity node ${GS}/complexity/manual/html_node/
105
106coreutils mono ${GS}/coreutils/manual/coreutils
107coreutils node ${GS}/coreutils/manual/html_node/
108
109cpio mono ${GS}/cpio/manual/cpio
110cpio node ${GS}/cpio/manual/html_node/
111
112cssc node ${GS}/cssc/manual/
113
114#cvs cannot be handled here; see http://ximbiot.com/cvs/manual.
115
116ddd mono ${GS}/ddd/manual/html_mono/ddd.html
117
118ddrescue mono ${GS}/ddrescue/manual/ddrescue_manual.html
119
120DICO = http://puszcza.gnu.org.ua/software/dico/manual
121dico mono ${DICO}/dico.html
122dico chapter ${DICO}/html_chapter/
123dico section ${DICO}/html_section/
124dico node ${DICO}/html_node/
125
126diffutils mono ${GS}/diffutils/manual/diffutils
127diffutils node ${GS}/diffutils/manual/html_node/
128
129ed mono ${GS}/ed/manual/ed_manual.html
130
131EMACS = ${GS}/emacs/manual
132emacs mono ${EMACS}/html_mono/emacs.html
133emacs node ${EMACS}/html_node/emacs/
134 #
135 ada-mode mono ${EMACS}/html_mono/ada-mode.html
136 ada-mode node ${EMACS}/html_node/ada-mode/
137 #
138 autotype mono ${EMACS}/html_mono/autotype.html
139 autotype node ${EMACS}/html_node/autotype/
140 #
141 ccmode mono ${EMACS}/html_mono/ccmode.html
142 ccmode node ${EMACS}/html_node/ccmode/
143 #
144 cl mono ${EMACS}/html_mono/cl.html
145 cl node ${EMACS}/html_node/cl/
146 #
147 ebrowse mono ${EMACS}/html_mono/ebrowse.html
148 ebrowse node ${EMACS}/html_node/ebrowse/
149 #
150 ediff mono ${EMACS}/html_mono/ediff.html
151 ediff node ${EMACS}/html_node/ediff/
152 #
153 eieio mono ${EMACS}/html_mono/eieio.html
154 eieio node ${EMACS}/html_node/eieio/
155 #
156 elisp mono ${EMACS}/html_mono/elisp.html
157 elisp node ${EMACS}/html_node/elisp/
158 #
159 epa mono ${EMACS}/html_mono/epa.html
160 epa node ${EMACS}/html_node/epa/
161 #
162 erc mono ${EMACS}/html_mono/erc.html
163 erc node ${EMACS}/html_node/erc/
164 #
165 dired-x mono ${EMACS}/html_mono/dired-x.html
166 dired-x node ${EMACS}/html_node/dired-x/
167 #
168 eshell mono ${EMACS}/html_mono/eshell.html
169 eshell node ${EMACS}/html_node/eshell/
170 #
171 flymake mono ${EMACS}/html_mono/flymake.html
172 flymake node ${EMACS}/html_node/flymake/
173 #
174 gnus mono ${EMACS}/html_mono/gnus.html
175 gnus node ${EMACS}/html_node/gnus/
176 #
177 idlwave mono ${EMACS}/html_mono/idlwave.html
178 idlwave node ${EMACS}/html_node/idlwave/
179 #
180 message mono ${EMACS}/html_mono/message.html
181 message node ${EMACS}/html_node/message/
182 #
183 mh-e mono ${EMACS}/html_mono/mh-e.html
184 mh-e node ${EMACS}/html_node/mh-e/
185 #
186 nxml-mode mono ${EMACS}/html_mono/nxml-mode.html
187 nxml-mode node ${EMACS}/html_node/nxml-mode/
188 #
189 org mono ${EMACS}/html_mono/org.html
190 org node ${EMACS}/html_node/org/
191 #
192 pcl-cvs mono ${EMACS}/html_mono/pcl-cvs.html
193 pcl-cvs node ${EMACS}/html_node/pcl-cvs/
194 #
195 rcirc mono ${EMACS}/html_mono/rcirc.html
196 rcirc node ${EMACS}/html_node/rcirc/
197 #
198 semantic mono ${EMACS}/html_mono/semantic.html
199 semantic node ${EMACS}/html_node/semantic/
200 #
201 smtp mono ${EMACS}/html_mono/smtpmail.html
202 smtp node ${EMACS}/html_node/smtpmail/
203 #
204 speedbar mono ${EMACS}/html_mono/speedbar.html
205 speedbar node ${EMACS}/html_node/speedbar/
206 #
207 tramp mono ${EMACS}/html_mono/tramp.html
208 tramp node ${EMACS}/html_node/tramp/
209 #
210 vip mono ${EMACS}/html_mono/vip.html
211 vip node ${EMACS}/html_node/vip/
212 #
213 viper mono ${EMACS}/html_mono/viper.html
214 viper node ${EMACS}/html_node/viper/
215 #
216 woman mono ${EMACS}/html_mono/woman.html
217 woman node ${EMACS}/html_node/woman/
218 # (end emacs manuals)
219
220easejs mono ${GS}/easejs/manual/easejs.html
221easejs node ${GS}/easejs/manual/
222
223EMACS_GUIX = https://alezost.github.io/guix.el/manual/latest
224emacs-guix mono ${EMACS_GUIX}/emacs-guix.html
225emacs-guix node ${EMACS_GUIX}/html_node/
226
227emacs-muse node ${GS}/emacs-muse/manual/muse.html
228emacs-muse node ${GS}/emacs-muse/manual/html_node/
229
230emms node ${GS}/emms/manual/
231
232# The file is called 'find.info' but the package is 'findutils'.
233find mono ${GS}/findutils/manual/html_mono/find.html
234find node ${GS}/findutils/manual/html_node/find_html
235findutils mono ${GS}/findutils/manual/html_mono/find.html
236findutils node ${GS}/findutils/manual/html_node/find_html
237
238FLEX = http://flex.sourceforge.net
239flex node ${FLEX}/manual/
240
241gama mono ${GS}/gama/manual/gama.html
242gama node ${GS}/gama/manual/html_node/
243
244GAWK = ${GS}/gawk/manual
245gawk mono ${GAWK}/gawk.html
246gawk node ${GAWK}/html_node/
247 gawkinet mono ${GAWK}/gawkinet/gawkinet.html
248 gawkinet node ${GAWK}/gawkinet/html_node/
249
250gcal mono ${GS}/gcal/manual/gcal.html
251gcal node ${GS}/gcal/manual/html_node/
252
253GCC = http://gcc.gnu.org/onlinedocs
254gcc node ${GCC}/gcc/
255 cpp node ${GCC}/cpp/
256 gcj node ${GCC}/gcj/
257 gfortran node ${GCC}/gfortran/
258 gnat_rm node ${GCC}/gnat_rm/
259 gnat_ugn_unw node ${GCC}/gnat_ugn_unw/
260 libgomp node ${GCC}/libgomp/
261 libstdc++ node ${GCC}/libstdc++/
262 #
263 gccint node ${GCC}/gccint/
264 cppinternals node ${GCC}/cppinternals/
265 gfc-internals node ${GCC}/gfc-internals/
266 gnat-style node ${GCC}/gnat-style/
267 libiberty node ${GCC}/libiberty/
268
269GDB = http://sourceware.org/gdb/current/onlinedocs
270gdb node ${GDB}/gdb/
271 stabs node ${GDB}/stabs/
272
273GDBM = http://www.gnu.org.ua/software/gdbm/manual
274gdbm mono ${GDBM}/gdbm.html
275gdbm chapter ${GDBM}/html_chapter/
276gdbm section ${GDBM}/html_section/
277gdbm node ${GDBM}/html_node/
278
279gettext mono ${GS}/gettext/manual/gettext.html
280gettext node ${GS}/gettext/manual/html_node/
281
282gforth node http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
283
284global mono ${GS}/global/manual/global.html
285
286gmediaserver node ${GS}/gmediaserver/manual/
287
288gmp node http://www.gmplib.org/manual/
289
290gnu-arch node ${GS}/gnu-arch/tutorial/
291
292gnu-c-manual mono ${GS}/gnu-c-manual/gnu-c-manual.html
293
294gnu-crypto node ${GS}/gnu-crypto/manual/
295
296gnubg mono ${GS}/gnubg/manual/gnubg.html
297gnubg node ${GS}/gnubg/manual/html_node/
298
299gnubik mono ${GS}/gnubik/manual/gnubik.html
300gnubik node ${GS}/gnubik/manual/html_node/
301
302gnulib mono ${GS}/gnulib/manual/gnulib.html
303gnulib node ${GS}/gnulib/manual/html_node/
304
305GNUN = ${GS}/trans-coord/manual
306gnun mono ${GNUN}/gnun/gnun.html
307gnun node ${GNUN}/gnun/html_node/
308 web-trans mono ${GNUN}/web-trans/web-trans.html
309 web-trans node ${GNUN}/web-trans/html_node/
310
311GNUNET = https://docs.gnunet.org/manuals
312gnunet node ${GNUNET}/gnunet/
313 gnunet-c-tutorial node ${GNUNET}/gnunet-c-tutorial/
314 gnunet-java-tutorial node ${GNUNET}/gnunet-java-tutorial/
315
316GNUPG = http://www.gnupg.org/documentation/manuals
317gnupg node ${GNUPG}/gnupg/
318 dirmngr node ${GNUPG}/dirmngr/
319 gcrypt node ${GNUPG}/gcrypt/
320 libgcrypt node ${GNUPG}/gcrypt/
321 ksba node ${GNUPG}/ksba/
322 assuan node ${GNUPG}/assuan/
323 gpgme node ${GNUPG}/gpgme/
324
325gnuprologjava node ${GS}/gnuprologjava/manual/
326
327gnuschool mono ${GS}/gnuschool/gnuschool.html
328
329GNUSTANDARDS = ${G}/prep
330 maintain mono ${GNUSTANDARDS}/maintain/maintain.html
331 maintain node ${GNUSTANDARDS}/maintain/html_node/
332 #
333 standards mono ${GNUSTANDARDS}/standards/standards.html
334 standards node ${GNUSTANDARDS}/standards/html_node/
335
336gnutls mono http://gnutls.org/manual/gnutls.html
337gnutls node http://gnutls.org/manual/html_node/
338
339gnutls-guile mono http://gnutls.org/manual/gnutls-guile.html
340gnutls-guile node http://gnutls.org/manual/gnutls-guile/
341
342gperf mono ${GS}/gperf/manual/gperf.html
343gperf node ${GS}/gperf/manual/html_node/
344
345grep mono ${GS}/grep/manual/grep.html
346grep node ${GS}/grep/manual/html_node/
347
348groff node ${GS}/groff/manual/html_node/
349
350GRUB = ${GS}/grub/manual
351 grub mono ${GRUB}/grub.html
352 grub node ${GRUB}/html_node/
353 #
354 multiboot mono ${GRUB}/multiboot/multiboot.html
355 multiboot node ${GRUB}/multiboot/html_node/
356
357gsasl mono ${GS}/gsasl/manual/gsasl.html
358gsasl node ${GS}/gsasl/manual/html_node/
359
360gsl node ${GS}/gsl/manual/html_node/
361
362gsrc mono ${GS}/gsrc/manual/gsrc.html
363gsrc node ${GS}/gsrc/manual/html_node/
364
365gss mono ${GS}/gss/manual/gss.html
366gss node ${GS}/gss/manual/html_node/
367
368gtypist mono ${GS}/gtypist/doc/
369
370guile mono ${GS}/guile/manual/guile.html
371guile node ${GS}/guile/manual/html_node/
372
373guile-avahi mono http://nongnu.org/guile-avahi/doc/guile-avahi.html
374
375GUILE_GNOME = ${GS}/guile-gnome/docs
376 gobject node ${GUILE_GNOME}/gobject/html/
377 glib node ${GUILE_GNOME}/glib/html/
378 atk node ${GUILE_GNOME}/atk/html/
379 pango node ${GUILE_GNOME}/pango/html/
380 pangocairo node ${GUILE_GNOME}/pangocairo/html/
381 gdk node ${GUILE_GNOME}/gdk/html/
382 gtk node ${GUILE_GNOME}/gtk/html/
383 libglade node ${GUILE_GNOME}/libglade/html/
384 gnome-vfs node ${GUILE_GNOME}/gnome-vfs/html/
385 libgnomecanvas node ${GUILE_GNOME}/libgnomecanvas/html/
386 gconf node ${GUILE_GNOME}/gconf/html/
387 libgnome node ${GUILE_GNOME}/libgnome/html/
388 libgnomeui node ${GUILE_GNOME}/libgnomeui/html/
389 corba node ${GUILE_GNOME}/corba/html/
390 clutter node ${GUILE_GNOME}/clutter/html/
391 clutter-glx node ${GUILE_GNOME}/clutter-glx/html/
392
393guile-gtk node ${GS}/guile-gtk/docs/guile-gtk/
394
395guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html
396guile-rpc node ${GS}/guile-rpc/manual/html_node/
397
398guix mono ${GS}/guix/manual/guix.html
399guix node ${GS}/guix/manual/html_node/
400
401gv mono ${GS}/gv/manual/gv.html
402gv node ${GS}/gv/manual/html_node/
403
404gzip mono ${GS}/gzip/manual/gzip.html
405gzip node ${GS}/gzip/manual/html_node/
406
407hello mono ${GS}/hello/manual/hello.html
408hello node ${GS}/hello/manual/html_node/
409
410help2man mono ${GS}/help2man/help2man.html
411
412idutils mono ${GS}/idutils/manual/idutils.html
413idutils node ${GS}/idutils/manual/html_node/
414
415inetutils mono ${GS}/inetutils/manual/inetutils.html
416inetutils node ${GS}/inetutils/manual/html_node/
417
418jwhois mono ${GS}/jwhois/manual/jwhois.html
419jwhois node ${GS}/jwhois/manual/html_node/
420
421libc mono ${GS}/libc/manual/html_mono/libc.html
422libc node ${GS}/libc/manual/html_node/
423
424LIBCDIO = ${GS}/libcdio
425 libcdio mono ${LIBCDIO}/libcdio.html
426 cd-text mono ${LIBCDIO}/cd-text-format.html
427
428libextractor mono ${GS}/libextractor/manual/libextractor.html
429libextractor node ${GS}/libextractor/manual/html_node/
430
431libidn mono ${GS}/libidn/manual/libidn.html
432libidn node ${GS}/libidn/manual/html_node/
433
434librejs mono ${GS}/librejs/manual/librejs.html
435librejs node ${GS}/librejs/manual/html_node/
436
437libmatheval mono ${GS}/libmatheval/manual/libmatheval.html
438
439LIBMICROHTTPD = ${GS}/libmicrohttpd
440libmicrohttpd mono ${LIBMICROHTTPD}/manual/libmicrohttpd.html
441libmicrohttpd node ${LIBMICROHTTPD}/manual/html_node/
442 microhttpd-tutorial mono ${LIBMICROHTTPD}/tutorial.html
443
444libtasn1 mono ${GS}/libtasn1/manual/libtasn1.html
445libtasn1 node ${GS}/libtasn1/manual/html_node/
446
447libtool mono ${GS}/libtool/manual/libtool.html
448libtool node ${GS}/libtool/manual/html_node/
449
450lightning mono ${GS}/lightning/manual/lightning.html
451lightning node ${GS}/lightning/manual/html_node/
452
453# The stable/ url redirects immediately, but that's ok.
454# The .html extension is omitted on their web site, but it works if given.
455LILYPOND = http://lilypond.org/doc/stable/Documentation
456 lilypond-internals node ${LILYPOND}/internals/
457 lilypond-learning node ${LILYPOND}/learning/
458 lilypond-notation node ${LILYPOND}/notation/
459 lilypond-snippets node ${LILYPOND}/snippets/
460 lilypond-usage node ${LILYPOND}/usage/
461 lilypond-web node ${LILYPOND}/web/
462 music-glossary node ${LILYPOND}/music-glossary/
463
464liquidwar6 mono ${GS}/liquidwar6/manual/liquidwar6.html
465liquidwar6 node ${GS}/liquidwar6/manual/html_node/
466
467lispintro mono ${GS}/emacs/emacs-lisp-intro/html_mono/emacs-lisp-intro.html
468lispintro node ${GS}/emacs/emacs-lisp-intro/html_node/index.html
469
470LSH = http://www.lysator.liu.se/~nisse/lsh
471 lsh mono ${LSH}/lsh.html
472
473m4 mono ${GS}/m4/manual/m4.html
474m4 node ${GS}/m4/manual/html_node/
475
476mailutils mono ${GS}/mailutils/manual/mailutils.html
477mailutils chapter ${GS}/mailutils/manual/html_chapter/
478mailutils section ${GS}/mailutils/manual/html_section/
479mailutils node ${GS}/mailutils/manual/html_node/
480
481make mono ${GS}/make/manual/make.html
482make node ${GS}/make/manual/html_node/
483
484mcron mono ${GS}/mcron/manual/mcron.html
485mcron node ${GS}/mcron/manual/html_node/
486
487mdk mono ${GS}/mdk/manual/mdk.html
488mdk node ${GS}/mdk/manual/html_node/
489
490METAEXCHANGE = http://ftp.gwdg.de/pub/gnu2/iwfmdh/doc/texinfo
491 iwf_mh node ${METAEXCHANGE}/iwf_mh.html
492 scantest node ${METAEXCHANGE}/scantest.html
493
494MIT_SCHEME = ${GS}/mit-scheme/documentation
495 mit-scheme-ref node ${MIT_SCHEME}/mit-scheme-ref/
496 mit-scheme-user node ${MIT_SCHEME}/mit-scheme-user/
497 sos node ${MIT_SCHEME}/mit-scheme-sos/
498 mit-scheme-imail node ${MIT_SCHEME}/mit-scheme-imail/
499
500moe mono ${GS}/moe/manual/moe_manual.html
501
502motti node ${GS}/motti/manual/
503
504mpc node http://www.multiprecision.org/index.php?prog=mpc&page=html
505
506mpfr mono http://www.mpfr.org/mpfr-current/mpfr.html
507
508mtools mono ${GS}/mtools/manual/mtools.html
509
510myserver node http://www.myserverproject.net/documentation/
511
512nano mono http://www.nano-editor.org/dist/latest/nano.html
513
514nettle chapter http://www.lysator.liu.se/~nisse/nettle/nettle.html
515
516ocrad mono ${GS}/ocrad/manual/ocrad_manual.html
517
518parted mono ${GS}/parted/manual/parted.html
519parted node ${GS}/parted/manual/html_node/
520
521pascal mono http://www.gnu-pascal.de/gpc/
522
523# can't use pcb since url's contain dates --30nov10
524
525perl mono ${GS}/perl/manual/perldoc-all.html
526
527PIES = http://www.gnu.org.ua/software/pies/manual
528pies mono ${PIES}/pies.html
529pies chapter ${PIES}/html_chapter/
530pies section ${PIES}/html_section/
531pies node ${PIES}/html_node/
532
533plotutils mono ${GS}/plotutils/manual/en/plotutils.html
534plotutils node ${GS}/plotutils/manual/en/html_node/
535
536proxyknife mono ${GS}/proxyknife/manual/proxyknife.html
537proxyknife node ${GS}/proxyknife/manual/html_node/
538
539pspp mono ${GS}/pspp/manual/pspp.html
540pspp node ${GS}/pspp/manual/html_node/
541
542pyconfigure mono ${GS}/pyconfigure/manual/pyconfigure.html
543pyconfigure node ${GS}/pyconfigure/manual/html_node/
544
545R = http://cran.r-project.org/doc/manuals
546 R-intro mono ${R}/R-intro.html
547 R-lang mono ${R}/R-lang.html
548 R-exts mono ${R}/R-exts.html
549 R-data mono ${R}/R-data.html
550 R-admin mono ${R}/R-admin.html
551 R-ints mono ${R}/R-ints.html
552
553rcs mono ${GS}/rcs/manual/rcs.html
554rcs node ${GS}/rcs/manual/html_node/
555
556READLINE = http://cnswww.cns.cwru.edu/php/chet/readline
557readline mono ${READLINE}/readline.html
558 rluserman mono ${READLINE}/rluserman.html
559 history mono ${READLINE}/history.html
560
561recode mono http://recode.progiciels-bpi.ca/manual/index.html
562
563recutils mono ${GS}/recutils/manual/recutils.html
564recutils node ${GS}/recutils/manual/html_node/
565
566reftex mono ${GS}/auctex/manual/reftex.html
567reftex node ${GS}/auctex/manual/reftex/
568
569remotecontrol mono ${GS}/remotecontrol/manual/remotecontrol.html
570remotecontrol node ${GS}/remotecontrol/manual/html_node/
571
572rottlog mono ${GS}/rottlog/manual/rottlog.html
573rottlog node ${GS}/rottlog/manual/html_node/
574
575RUSH = http://www.gnu.org.ua/software/rush/manual
576rush mono ${RUSH}/rush.html
577rush chapter ${RUSH}/html_chapter/
578rush section ${RUSH}/html_section/
579rush node ${RUSH}/html_node/
580
581screen mono ${GS}/screen/manual/screen.html
582screen node ${GS}/screen/manual/html_node/
583
584sed mono ${GS}/sed/manual/sed.html
585sed node ${GS}/sed/manual/html_node/
586
587sharutils mono ${GS}/sharutils/manual/html_mono/sharutils.html
588sharutils chapter ${GS}/sharutils/manual/html_chapter/
589sharutils node ${GS}/sharutils/manual/html_node/
590
591shepherd mono ${GS}/shepherd/manual/shepherd.html
592shepherd node ${GS}/shepherd/manual/html_node/
593
594# can't use mono files since they have generic names
595SMALLTALK = ${GS}/smalltalk
596smalltalk node ${SMALLTALK}/manual/html_node/
597 smalltalk-base node ${SMALLTALK}/manual-base/html_node/
598 smalltalk-libs node ${SMALLTALK}/manual-libs/html_node/
599
600sourceinstall mono ${GS}/sourceinstall/manual/sourceinstall.html
601sourceinstall node ${GS}/sourceinstall/manual/html_node/
602
603sqltutor mono ${GS}/sqltutor/manual/sqltutor.html
604sqltutor node ${GS}/sqltutor/manual/html_node/
605
606src-highlite mono ${GS}/src-highlite/source-highlight.html
607
608swbis mono ${GS}/swbis/manual.html
609
610tar mono ${GS}/tar/manual/tar.html
611tar chapter ${GS}/tar/manual/html_chapter/
612tar section ${GS}/tar/manual/html_section/
613tar node ${GS}/autoconf/manual/html_node/
614
615teseq mono ${GS}/teseq/teseq.html
616teseq node ${GS}/teseq/html_node/
617
618TEXINFO = ${GS}/texinfo/manual
619texinfo mono ${TEXINFO}/texinfo/texinfo.html
620texinfo node ${TEXINFO}/texinfo/html_node/
621 #
622 info mono ${TEXINFO}/info/info.html
623 info node ${TEXINFO}/info/html_node/
624 #
625 info-stnd mono ${TEXINFO}/info-stnd/info-stnd.html
626 info-stnd node ${TEXINFO}/info-stnd/html_node/
627
628thales node ${GS}/thales/manual/
629
630units mono ${GS}/units/manual/units.html
631units node ${GS}/units/manual/html_node/
632
633vc-dwim mono ${GS}/vc-dwim/manual/vc-dwim.html
634vc-dwim node ${GS}/vc-dwim/manual/html_node/
635
636wdiff mono ${GS}/wdiff/manual/wdiff.html
637wdiff node ${GS}/wdiff/manual/html_node/
638
639websocket4j mono ${GS}/websocket4j/manual/websocket4j.html
640websocket4j node ${GS}/websocket4j/manual/html_node/
641
642wget mono ${GS}/wget/manual/wget.html
643wget node ${GS}/wget/manual/html_node/
644
645xboard mono ${GS}/xboard/manual/xboard.html
646xboard node ${GS}/xboard/manual/html_node/
647
648# emacs-page
649# Free TeX-related Texinfo manuals on tug.org.
650
651T = http://tug.org/texinfohtml
652
653dvipng mono ${T}/dvipng.html
654dvips mono ${T}/dvips.html
655eplain mono ${T}/eplain.html
656kpathsea mono ${T}/kpathsea.html
657latex2e mono ${T}/latex2e.html
658tlbuild mono ${T}/tlbuild.html
659web2c mono ${T}/web2c.html
660
661
662# Local Variables:
663# eval: (add-hook 'write-file-hooks 'time-stamp)
664# time-stamp-start: "htmlxrefversion="
665# time-stamp-format: "%:y-%02m-%02d.%02H"
666# time-stamp-time-zone: "UTC"
667# time-stamp-end: "; # UTC"
668# End:
diff --git a/doc/tutorial/manual.css b/doc/tutorial/manual.css
new file mode 100644
index 000000000..404525dc2
--- /dev/null
+++ b/doc/tutorial/manual.css
@@ -0,0 +1,52 @@
1/* Style-sheet to use for manuals (copied from Emacs) */
2
3@import url('/style.css');
4
5/* makeinfo 6.5 converts @quotation to <blockquote>. Highlight them. */
6blockquote {
7 font-style: normal;
8 border-left: solid 10px red;
9 padding-left: 2.5%;
10 margin-left: 0px;
11}
12
13var { font-style: italic; }
14
15/* Lay out @lisp just like @example. Copied from what /style.css
16 does for the 'example' class. */
17div.lisp { padding: .8em 1.2em .4em; }
18pre.lisp { padding: .8em 1.2em; }
19div.lisp, pre.lisp {
20 margin: 1em 0 1em 3% ;
21 -webkit-border-radius: .3em;
22 -moz-border-radius: .3em;
23 border-radius: .3em;
24 border: 1px solid #d4cbb6;
25 background-color: #f2efe4;
26}
27div.lisp > pre.lisp {
28 padding: 0 0 .4em;
29 margin: 0;
30 border: none;
31}
32
33/* ----- coreutils specific styling ----- */
34
35/* layout.css indents "body p" when it should probably only indent "body > p"?
36 In any case, disable indenting of p in these sub elements. */
37dd p,li p {
38 margin-left: 0;
39 margin-right: 0;
40}
41
42/* underlined links are distracting, especially within outlined tables. */
43a { /*add :link for external links*/
44 text-decoration: none; /* don't underline links by default */
45 outline-style: none; /* don't put dotted box around clicked links */
46}
47a:hover {
48 text-decoration: underline;
49}
50
51/* The shadow around the body is distracting. */
52body { box-shadow: 0 0 0 0; }
diff --git a/doc/tutorial/reset.css b/doc/tutorial/reset.css
new file mode 100644
index 000000000..9a6c3065f
--- /dev/null
+++ b/doc/tutorial/reset.css
@@ -0,0 +1,114 @@
1/*
2Software License Agreement (BSD License)
3
4Copyright (c) 2006, Yahoo! Inc.
5All rights reserved.
6
7Redistribution and use of this software in source and
8binary forms, with or without modification, arepermitted
9provided that the following conditions are met:
10
11* Redistributions of source code must retain the above
12copyright notice, this list of conditions and the
13following disclaimer.
14
15* Redistributions in binary form must reproduce the above
16copyright notice, this list of conditions and the
17following disclaimer in the documentation and/or other
18materials provided with the distribution.
19
20* Neither the name of Yahoo! Inc. nor the names of its
21contributors may be used to endorse or promote products
22derived from this software without specific prior
23written permission of Yahoo! Inc.
24
25THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
26CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
27INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
28MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
30CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
32NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
35IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38SUCH DAMAGE.
39*/
40
41html {
42 color: #000;
43 background: #FFF;
44}
45
46body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4,
47h5, h6, pre, code, form, fieldset, legend, input,
48button, textarea, p, blockquote, th, td {
49 margin: 0;
50 padding: 0;
51}
52
53table {
54 border-collapse: collapse;
55 border-spacing: 0;
56}
57
58fieldset, img {
59 border: 0;
60}
61
62address, caption, cite, code, dfn, em, strong,
63th, var, optgroup {
64 font-style: inherit;
65 font-weight: inherit;
66}
67
68del, ins {
69 text-decoration: none;
70}
71
72li {
73 list-style:none;
74}
75
76caption, th {
77 text-align: left;
78}
79
80h1, h2, h3, h4, h5, h6 {
81 font-size: 100%;
82 font-weight: normal;
83}
84
85q:before, q:after {
86 content:'';
87}
88
89abbr, acronym {
90 border: 0;
91 font-variant: normal;
92}
93
94sup {
95 vertical-align: baseline;
96}
97sub {
98 vertical-align: baseline;
99}
100
101legend {
102 color: #000;
103}
104
105input, button, textarea, select, optgroup, option {
106 font-family: inherit;
107 font-size: inherit;
108 font-style: inherit;
109 font-weight: inherit;
110}
111
112input, button, textarea, select {
113 *font-size: 100%;
114}
diff --git a/doc/tutorial/run-gendocs.sh b/doc/tutorial/run-gendocs.sh
new file mode 100755
index 000000000..5e60a2d0f
--- /dev/null
+++ b/doc/tutorial/run-gendocs.sh
@@ -0,0 +1,18 @@
1#!/bin/sh
2
3make version.texi/replacement
4
5./gendocs.sh --email gnunet-developers@gnu.org gnunet-c-tutorial "GNUnet C Tutorial" -o "manual/gnunet-c-tutorial"
6#cd manual
7#mkdir gnunet-c-tutorial
8#mv * gnunet-c-tutorial/
9#cd ..
10./gendocs.sh --email gnunet-developers@gnu.org gnunet "GNUnet Reference Manual" -o "manual/gnunet"
11#cd manual
12#mkdir handbook
13#mkdir ../tmp-gnunet
14#mv gnunet ../tmp-gnunet
15#mv * handbook/
16#mv ../tmp-gnunet gnunet
17cp "index.html" manual/
18printf "Success"
diff --git a/doc/tutorial/style.css b/doc/tutorial/style.css
new file mode 100644
index 000000000..0c4525437
--- /dev/null
+++ b/doc/tutorial/style.css
@@ -0,0 +1,174 @@
1/* This stylesheet is used by manuals and a few older resources. */
2
3@import url('/reset.css');
4
5
6/*** PAGE LAYOUT ***/
7
8html, body {
9 font-size: 1em;
10 text-align: left;
11 text-decoration: none;
12}
13html { background-color: #e7e7e7; }
14
15body {
16 max-width: 74.92em;
17 margin: 0 auto;
18 padding: .5em 1em 1em 1em;
19 background-color: white;
20 border: .1em solid #c0c0c0;
21}
22
23
24/*** BASIC ELEMENTS ***/
25
26/* Size and positioning */
27
28p, pre, li, dt, dd, table, code, address { line-height: 1.3em; }
29
30h1 { font-size: 2em; margin: 1em 0 }
31h2 { font-size: 1.50em; margin: 1.0em 0 0.87em 0; }
32h3 { font-size: 1.30em; margin: 1.0em 0 0.87em 0; }
33h4 { font-size: 1.13em; margin: 1.0em 0 0.88em 0; }
34h5 { font-size: 1.00em; margin: 1.0em 0 1.00em 0; }
35
36p, pre { margin: 1em 0; }
37pre { overflow: auto; padding-bottom: .3em; }
38
39ul, ol, blockquote { margin-left: 1.5%; margin-right: 1.5%; }
40hr { margin: 1em 0; }
41/* Lists of underlined links are difficult to read. The top margin
42 gives a little more spacing between entries. */
43ul li { margin: .5em 1em; }
44ol li { margin: 1em; }
45ol ul li { margin: .5em 1em; }
46ul li p, ul ul li { margin-top: .3em; margin-bottom: .3em; }
47ul ul, ol ul { margin-top: 0; margin-bottom: 0; }
48
49/* Separate description lists from preceding text */
50dl { margin: 1em 0 0 0; }
51/* separate the "term" from subsequent "description" */
52dt { margin: .5em 0; }
53/* separate the "description" from subsequent list item
54 when the final <dd> child is an anonymous box */
55dd { margin: .5em 3% 1em 3%; }
56/* separate anonymous box (used to be the first element in <dd>)
57 from subsequent <p> */
58dd p { margin: .5em 0; }
59
60table {
61 display: block; overflow: auto;
62 margin-top: 1.5em; margin-bottom: 1.5em;
63}
64th { padding: .3em .5em; text-align: center; }
65td { padding: .2em .5em; }
66
67address { margin-bottom: 1em; }
68caption { margin-bottom: .5em; text-align: center; }
69sup { vertical-align: super; }
70sub { vertical-align: sub; }
71
72/* Style */
73
74h1, h2, h3, h4, h5, h6, strong, dt, th { font-weight: bold; }
75
76/* The default color (black) is too dark for large text in
77 bold font. */
78h1, h2, h3, h4 { color: #333; }
79h5, h6, dt { color: #222; }
80
81a[href] { color: #005090; }
82a[href]:visited { color: #100070; }
83a[href]:active, a[href]:hover {
84 color: #100070;
85 text-decoration: none;
86}
87
88h1 a[href]:visited, h2 a[href]:visited, h3 a[href]:visited,
89 h4 a[href]:visited { color: #005090; }
90h1 a[href]:hover, h2 a[href]:hover, h3 a[href]:hover,
91 h4 a[href]:hover { color: #100070; }
92
93ol { list-style: decimal outside;}
94ul { list-style: square outside; }
95ul ul, ol ul { list-style: circle; }
96li { list-style: inherit; }
97
98hr { background-color: #ede6d5; }
99table { border: 0; }
100
101abbr,acronym {
102 border-bottom:1px dotted #000;
103 text-decoration: none;
104 cursor:help;
105}
106del { text-decoration: line-through; }
107em { font-style: italic; }
108small { font-size: .9em; }
109
110img { max-width: 100%}
111
112
113/*** SIMPLE CLASSES ***/
114
115.center, .c { text-align: center; }
116.nocenter{ text-align: left; }
117
118.underline { text-decoration: underline; }
119.nounderline { text-decoration: none; }
120
121.no-bullet { list-style: none; }
122.inline-list li { display: inline }
123
124.netscape4, .no-display { display: none; }
125
126
127/*** MANUAL PAGES ***/
128
129/* This makes the very long tables of contents in Gnulib and other
130 manuals easier to read. */
131.contents ul, .shortcontents ul { font-weight: bold; }
132.contents ul ul, .shortcontents ul ul { font-weight: normal; }
133.contents ul { list-style: none; }
134
135/* For colored navigation bars (Emacs manual): make the bar extend
136 across the whole width of the page and give it a decent height. */
137.header, .node { margin: 0 -1em; padding: 0 1em; }
138.header p, .node p { line-height: 2em; }
139
140/* For navigation links */
141.node a, .header a { display: inline-block; line-height: 2em; }
142.node a:hover, .header a:hover { background: #f2efe4; }
143
144/* Inserts */
145table.cartouche td { padding: 1.5em; }
146
147div.display, div.lisp, div.smalldisplay,
148 div.smallexample, div.smalllisp { margin-left: 3%; }
149
150div.example { padding: .8em 1.2em .4em; }
151pre.example { padding: .8em 1.2em; }
152div.example, pre.example {
153 margin: 1em 0 1em 3% ;
154 -webkit-border-radius: .3em;
155 -moz-border-radius: .3em;
156 border-radius: .3em;
157 border: 1px solid #d4cbb6;
158 background-color: #f2efe4;
159}
160div.example > pre.example {
161 padding: 0 0 .4em;
162 margin: 0;
163 border: none;
164}
165
166pre.menu-comment { padding-top: 1.3em; margin: 0; }
167
168
169/*** FOR WIDE SCREENS ***/
170
171@media (min-width: 40em) {
172 body { padding: .5em 3em 1em 3em; }
173 div.header, div.node { margin: 0 -3em; padding: 0 3em; }
174}
diff --git a/pkgconfig/Makefile.am b/pkgconfig/Makefile.am
index 3a3102f0a..7b7af6369 100644
--- a/pkgconfig/Makefile.am
+++ b/pkgconfig/Makefile.am
@@ -10,7 +10,6 @@ pcfiles = \
10 gnunetdatastore.pc \ 10 gnunetdatastore.pc \
11 gnunetdht.pc \ 11 gnunetdht.pc \
12 gnunetdns.pc \ 12 gnunetdns.pc \
13 gnunetdv.pc \
14 gnunetenv.pc \ 13 gnunetenv.pc \
15 gnunetfragmentation.pc \ 14 gnunetfragmentation.pc \
16 gnunetfs.pc \ 15 gnunetfs.pc \
@@ -19,14 +18,11 @@ pcfiles = \
19 gnunetidentity.pc \ 18 gnunetidentity.pc \
20 gnunetcadet.pc \ 19 gnunetcadet.pc \
21 gnunetmicrophone.pc \ 20 gnunetmicrophone.pc \
22 gnunetmulticast.pc \
23 gnunetmysql.pc \ 21 gnunetmysql.pc \
24 gnunetnamestore.pc \ 22 gnunetnamestore.pc \
25 gnunetnat.pc \ 23 gnunetnat.pc \
26 gnunetnse.pc \ 24 gnunetnse.pc \
27 gnunetpeerinfo.pc \ 25 gnunetpeerinfo.pc \
28 gnunetpsyc.pc \
29 gnunetpsycstore.pc \
30 gnunetregex.pc \ 26 gnunetregex.pc \
31 gnunetrevocation.pc \ 27 gnunetrevocation.pc \
32 gnunetrps.pc \ 28 gnunetrps.pc \
@@ -38,7 +34,7 @@ pcfiles = \
38 gnunettesting.pc \ 34 gnunettesting.pc \
39 gnunettransport.pc \ 35 gnunettransport.pc \
40 gnunetutil.pc \ 36 gnunetutil.pc \
41 gnunetvpn.pc 37 gnunetvpn.pc
42 38
43all-local: $(pcfiles) 39all-local: $(pcfiles)
44 40
@@ -63,9 +59,6 @@ EXTRA_DIST = \
63 gnunetdatastore.pc.in \ 59 gnunetdatastore.pc.in \
64 gnunetdht.pc.in \ 60 gnunetdht.pc.in \
65 gnunetdns.pc.in \ 61 gnunetdns.pc.in \
66 gnunetdnsparser.pc.in \
67 gnunetdnsstub.pc.in \
68 gnunetdv.pc.in \
69 gnunetenv.pc.in \ 62 gnunetenv.pc.in \
70 gnunetfragmentation.pc.in \ 63 gnunetfragmentation.pc.in \
71 gnunetfs.pc.in \ 64 gnunetfs.pc.in \
@@ -74,15 +67,12 @@ EXTRA_DIST = \
74 gnunetidentity.pc.in \ 67 gnunetidentity.pc.in \
75 gnunetcadet.pc.in \ 68 gnunetcadet.pc.in \
76 gnunetmicrophone.pc.in \ 69 gnunetmicrophone.pc.in \
77 gnunetmulticast.pc.in \
78 gnunetmysql.pc.in \ 70 gnunetmysql.pc.in \
79 gnunetnamestore.pc.in \ 71 gnunetnamestore.pc.in \
80 gnunetnat.pc.in \ 72 gnunetnat.pc.in \
81 gnunetnse.pc.in \ 73 gnunetnse.pc.in \
82 gnunetpeerinfo.pc.in \ 74 gnunetpeerinfo.pc.in \
83 gnunetpostgres.pc.in \ 75 gnunetpostgres.pc.in \
84 gnunetpsyc.pc.in \
85 gnunetpsycstore.pc.in \
86 gnunetregex.pc.in \ 76 gnunetregex.pc.in \
87 gnunetrevocation.pc.in \ 77 gnunetrevocation.pc.in \
88 gnunetrps.pc.in \ 78 gnunetrps.pc.in \
@@ -93,11 +83,8 @@ EXTRA_DIST = \
93 gnunettestbed.pc.in \ 83 gnunettestbed.pc.in \
94 gnunettesting.pc.in \ 84 gnunettesting.pc.in \
95 gnunettransport.pc.in \ 85 gnunettransport.pc.in \
96 gnunettun.pc.in \
97 gnunetutil.pc.in \ 86 gnunetutil.pc.in \
98 gnunetvpn.pc.in 87 gnunetvpn.pc.in
99 88
100CLEANFILES = $(pcfiles) 89CLEANFILES = $(pcfiles)
101AM_CPPFLAGS = -I$(top_srcdir)/src/include 90AM_CPPFLAGS = -I$(top_srcdir)/src/include
102
103
diff --git a/pkgconfig/gnunetdv.pc.in b/pkgconfig/gnunetdv.pc.in
deleted file mode 100644
index bd5bd4278..000000000
--- a/pkgconfig/gnunetdv.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
1prefix=@prefix@
2exec_prefix=@exec_prefix@
3libdir=@libdir@
4includedir=@includedir@
5
6Name: GNUnet dv
7Description: Library to access GNUnet DV service
8URL: http://gnunet.org
9Version: @VERSION@
10Requires:
11Libs: -L${libdir} -lgnunetdv
12Cflags: -I${includedir}
diff --git a/pkgconfig/gnunetmulticast.pc.in b/pkgconfig/gnunetmulticast.pc.in
deleted file mode 100644
index 204555519..000000000
--- a/pkgconfig/gnunetmulticast.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
1prefix=@prefix@
2exec_prefix=@exec_prefix@
3libdir=@libdir@
4includedir=@includedir@
5
6Name: GNUnet MULTICAST
7Description: library to multicast messages to a group of peers
8URL: https://gnunet.org
9Version: @VERSION@
10Requires:
11Libs: -L${libdir} -lgnunetmulticast
12Cflags: -I${includedir}
diff --git a/pkgconfig/gnunetpsyc.pc.in b/pkgconfig/gnunetpsyc.pc.in
deleted file mode 100644
index 9cfabdf83..000000000
--- a/pkgconfig/gnunetpsyc.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
1prefix=@prefix@
2exec_prefix=@exec_prefix@
3libdir=@libdir@
4includedir=@includedir@
5
6Name: GNUnet PSYC
7Description: library for PSYC multicast channel management
8URL: https://gnunet.org
9Version: @VERSION@
10Requires:
11Libs: -L${libdir} -lgnunetpsyc
12Cflags: -I${includedir}
diff --git a/pkgconfig/gnunetpsycstore.pc.in b/pkgconfig/gnunetpsycstore.pc.in
deleted file mode 100644
index 765abdc5b..000000000
--- a/pkgconfig/gnunetpsycstore.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
1prefix=@prefix@
2exec_prefix=@exec_prefix@
3libdir=@libdir@
4includedir=@includedir@
5
6Name: GNUnet PSYCSTORE
7Description: library to for persistent storage of PSYC messages
8URL: https://gnunet.org
9Version: @VERSION@
10Requires:
11Libs: -L${libdir} -lgnunetpsycstore
12Cflags: -I${includedir}
diff --git a/pkgconfig/gnunetsocial.pc.in b/pkgconfig/gnunetsocial.pc.in
deleted file mode 100644
index 5ea9c6a26..000000000
--- a/pkgconfig/gnunetsocial.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
1prefix=@prefix@
2exec_prefix=@exec_prefix@
3libdir=@libdir@
4includedir=@includedir@
5
6Name: GNUnet Social
7Description: library for social interactions
8URL: https://gnunet.org
9Version: @VERSION@
10Requires:
11Libs: -L${libdir} -lgnunetsocial
12Cflags: -I${includedir}
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0ee48fcde..0d4569514 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,14 +4,6 @@ src/arm/arm_monitor_api.c
4src/arm/gnunet-arm.c 4src/arm/gnunet-arm.c
5src/arm/gnunet-service-arm.c 5src/arm/gnunet-service-arm.c
6src/arm/mockup-service.c 6src/arm/mockup-service.c
7src/ats-tests/ats-testing-experiment.c
8src/ats-tests/ats-testing-log.c
9src/ats-tests/ats-testing-preferences.c
10src/ats-tests/ats-testing-traffic.c
11src/ats-tests/ats-testing.c
12src/ats-tests/gnunet-ats-sim.c
13src/ats-tests/gnunet-solver-eval.c
14src/ats-tool/gnunet-ats.c
15src/ats/ats_api2_application.c 7src/ats/ats_api2_application.c
16src/ats/ats_api2_transport.c 8src/ats/ats_api2_transport.c
17src/ats/ats_api_connectivity.c 9src/ats/ats_api_connectivity.c
@@ -19,10 +11,10 @@ src/ats/ats_api_performance.c
19src/ats/ats_api_scanner.c 11src/ats/ats_api_scanner.c
20src/ats/ats_api_scheduling.c 12src/ats/ats_api_scheduling.c
21src/ats/gnunet-ats-solver-eval.c 13src/ats/gnunet-ats-solver-eval.c
22src/ats/gnunet-service-ats-new.c
23src/ats/gnunet-service-ats.c
24src/ats/gnunet-service-ats_addresses.c 14src/ats/gnunet-service-ats_addresses.c
15src/ats/gnunet-service-ats.c
25src/ats/gnunet-service-ats_connectivity.c 16src/ats/gnunet-service-ats_connectivity.c
17src/ats/gnunet-service-ats-new.c
26src/ats/gnunet-service-ats_normalization.c 18src/ats/gnunet-service-ats_normalization.c
27src/ats/gnunet-service-ats_performance.c 19src/ats/gnunet-service-ats_performance.c
28src/ats/gnunet-service-ats_plugins.c 20src/ats/gnunet-service-ats_plugins.c
@@ -34,6 +26,14 @@ src/ats/plugin_ats2_simple.c
34src/ats/plugin_ats_mlp.c 26src/ats/plugin_ats_mlp.c
35src/ats/plugin_ats_proportional.c 27src/ats/plugin_ats_proportional.c
36src/ats/plugin_ats_ril.c 28src/ats/plugin_ats_ril.c
29src/ats-tests/ats-testing.c
30src/ats-tests/ats-testing-experiment.c
31src/ats-tests/ats-testing-log.c
32src/ats-tests/ats-testing-preferences.c
33src/ats-tests/ats-testing-traffic.c
34src/ats-tests/gnunet-ats-sim.c
35src/ats-tests/gnunet-solver-eval.c
36src/ats-tool/gnunet-ats.c
37src/auction/gnunet-auction-create.c 37src/auction/gnunet-auction-create.c
38src/auction/gnunet-auction-info.c 38src/auction/gnunet-auction-info.c
39src/auction/gnunet-auction-join.c 39src/auction/gnunet-auction-join.c
@@ -50,8 +50,8 @@ src/cadet/cadet_api_list_peers.c
50src/cadet/cadet_api_list_tunnels.c 50src/cadet/cadet_api_list_tunnels.c
51src/cadet/cadet_test_lib.c 51src/cadet/cadet_test_lib.c
52src/cadet/desirability_table.c 52src/cadet/desirability_table.c
53src/cadet/gnunet-cadet-profiler.c
54src/cadet/gnunet-cadet.c 53src/cadet/gnunet-cadet.c
54src/cadet/gnunet-cadet-profiler.c
55src/cadet/gnunet-service-cadet.c 55src/cadet/gnunet-service-cadet.c
56src/cadet/gnunet-service-cadet_channel.c 56src/cadet/gnunet-service-cadet_channel.c
57src/cadet/gnunet-service-cadet_connection.c 57src/cadet/gnunet-service-cadet_connection.c
@@ -67,15 +67,15 @@ src/consensus/gnunet-service-consensus.c
67src/consensus/plugin_block_consensus.c 67src/consensus/plugin_block_consensus.c
68src/conversation/conversation_api.c 68src/conversation/conversation_api.c
69src/conversation/conversation_api_call.c 69src/conversation/conversation_api_call.c
70src/conversation/gnunet-conversation-test.c
71src/conversation/gnunet-conversation.c 70src/conversation/gnunet-conversation.c
72src/conversation/gnunet-helper-audio-playback-gst.c 71src/conversation/gnunet-conversation-test.c
72src/conversation/gnunet_gst.c
73src/conversation/gnunet_gst_test.c
73src/conversation/gnunet-helper-audio-playback.c 74src/conversation/gnunet-helper-audio-playback.c
74src/conversation/gnunet-helper-audio-record-gst.c 75src/conversation/gnunet-helper-audio-playback-gst.c
75src/conversation/gnunet-helper-audio-record.c 76src/conversation/gnunet-helper-audio-record.c
77src/conversation/gnunet-helper-audio-record-gst.c
76src/conversation/gnunet-service-conversation.c 78src/conversation/gnunet-service-conversation.c
77src/conversation/gnunet_gst.c
78src/conversation/gnunet_gst_test.c
79src/conversation/microphone.c 79src/conversation/microphone.c
80src/conversation/plugin_gnsrecord_conversation.c 80src/conversation/plugin_gnsrecord_conversation.c
81src/conversation/speaker.c 81src/conversation/speaker.c
@@ -111,6 +111,7 @@ src/dht/dht_api.c
111src/dht/dht_test_lib.c 111src/dht/dht_test_lib.c
112src/dht/gnunet-dht-get.c 112src/dht/gnunet-dht-get.c
113src/dht/gnunet-dht-monitor.c 113src/dht/gnunet-dht-monitor.c
114src/dht/gnunet_dht_profiler.c
114src/dht/gnunet-dht-put.c 115src/dht/gnunet-dht-put.c
115src/dht/gnunet-service-dht.c 116src/dht/gnunet-service-dht.c
116src/dht/gnunet-service-dht_clients.c 117src/dht/gnunet-service-dht_clients.c
@@ -119,7 +120,6 @@ src/dht/gnunet-service-dht_hello.c
119src/dht/gnunet-service-dht_neighbours.c 120src/dht/gnunet-service-dht_neighbours.c
120src/dht/gnunet-service-dht_nse.c 121src/dht/gnunet-service-dht_nse.c
121src/dht/gnunet-service-dht_routing.c 122src/dht/gnunet-service-dht_routing.c
122src/dht/gnunet_dht_profiler.c
123src/dht/plugin_block_dht.c 123src/dht/plugin_block_dht.c
124src/dns/dns_api.c 124src/dns/dns_api.c
125src/dns/gnunet-dns-monitor.c 125src/dns/gnunet-dns-monitor.c
@@ -128,13 +128,9 @@ src/dns/gnunet-helper-dns.c
128src/dns/gnunet-service-dns.c 128src/dns/gnunet-service-dns.c
129src/dns/gnunet-zonewalk.c 129src/dns/gnunet-zonewalk.c
130src/dns/plugin_block_dns.c 130src/dns/plugin_block_dns.c
131src/dv/dv_api.c
132src/dv/gnunet-dv.c
133src/dv/gnunet-service-dv.c
134src/dv/plugin_transport_dv.c
135src/exit/gnunet-daemon-exit.c 131src/exit/gnunet-daemon-exit.c
136src/exit/gnunet-helper-exit-windows.c
137src/exit/gnunet-helper-exit.c 132src/exit/gnunet-helper-exit.c
133src/exit/gnunet-helper-exit-windows.c
138src/fragmentation/defragmentation.c 134src/fragmentation/defragmentation.c
139src/fragmentation/fragmentation.c 135src/fragmentation/fragmentation.c
140src/fs/fs_api.c 136src/fs/fs_api.c
@@ -159,8 +155,8 @@ src/fs/gnunet-auto-share.c
159src/fs/gnunet-daemon-fsprofiler.c 155src/fs/gnunet-daemon-fsprofiler.c
160src/fs/gnunet-directory.c 156src/fs/gnunet-directory.c
161src/fs/gnunet-download.c 157src/fs/gnunet-download.c
162src/fs/gnunet-fs-profiler.c
163src/fs/gnunet-fs.c 158src/fs/gnunet-fs.c
159src/fs/gnunet-fs-profiler.c
164src/fs/gnunet-helper-fs-publish.c 160src/fs/gnunet-helper-fs-publish.c
165src/fs/gnunet-publish.c 161src/fs/gnunet-publish.c
166src/fs/gnunet-search.c 162src/fs/gnunet-search.c
@@ -180,10 +176,10 @@ src/gns/gns_tld_api.c
180src/gns/gnunet-bcd.c 176src/gns/gnunet-bcd.c
181src/gns/gnunet-dns2gns.c 177src/gns/gnunet-dns2gns.c
182src/gns/gnunet-gns-benchmark.c 178src/gns/gnunet-gns-benchmark.c
179src/gns/gnunet-gns.c
183src/gns/gnunet-gns-helper-service-w32.c 180src/gns/gnunet-gns-helper-service-w32.c
184src/gns/gnunet-gns-import.c 181src/gns/gnunet-gns-import.c
185src/gns/gnunet-gns-proxy.c 182src/gns/gnunet-gns-proxy.c
186src/gns/gnunet-gns.c
187src/gns/gnunet-service-gns.c 183src/gns/gnunet-service-gns.c
188src/gns/gnunet-service-gns_interceptor.c 184src/gns/gnunet-service-gns_interceptor.c
189src/gns/gnunet-service-gns_resolver.c 185src/gns/gnunet-service-gns_resolver.c
@@ -191,19 +187,19 @@ src/gns/nss/nss_gns.c
191src/gns/nss/nss_gns_query.c 187src/gns/nss/nss_gns_query.c
192src/gns/plugin_block_gns.c 188src/gns/plugin_block_gns.c
193src/gns/plugin_gnsrecord_gns.c 189src/gns/plugin_gnsrecord_gns.c
194src/gns/w32nsp-install.c
195src/gns/w32nsp-resolve.c
196src/gns/w32nsp-uninstall.c
197src/gns/w32nsp.c
198src/gnsrecord/gnsrecord.c 190src/gnsrecord/gnsrecord.c
199src/gnsrecord/gnsrecord_crypto.c 191src/gnsrecord/gnsrecord_crypto.c
200src/gnsrecord/gnsrecord_misc.c 192src/gnsrecord/gnsrecord_misc.c
201src/gnsrecord/gnsrecord_serialization.c 193src/gnsrecord/gnsrecord_serialization.c
202src/gnsrecord/plugin_gnsrecord_dns.c 194src/gnsrecord/plugin_gnsrecord_dns.c
195src/gns/w32nsp.c
196src/gns/w32nsp-install.c
197src/gns/w32nsp-resolve.c
198src/gns/w32nsp-uninstall.c
203src/hello/address.c 199src/hello/address.c
204src/hello/gnunet-hello.c 200src/hello/gnunet-hello.c
205src/hello/hello-ng.c
206src/hello/hello.c 201src/hello/hello.c
202src/hello/hello-ng.c
207src/hostlist/gnunet-daemon-hostlist.c 203src/hostlist/gnunet-daemon-hostlist.c
208src/hostlist/gnunet-daemon-hostlist_client.c 204src/hostlist/gnunet-daemon-hostlist_client.c
209src/hostlist/gnunet-daemon-hostlist_server.c 205src/hostlist/gnunet-daemon-hostlist_server.c
@@ -216,9 +212,6 @@ src/json/json_generator.c
216src/json/json_gnsrecord.c 212src/json/json_gnsrecord.c
217src/json/json_helper.c 213src/json/json_helper.c
218src/json/json_mhd.c 214src/json/json_mhd.c
219src/multicast/gnunet-multicast.c
220src/multicast/gnunet-service-multicast.c
221src/multicast/multicast_api.c
222src/my/my.c 215src/my/my.c
223src/my/my_query_helper.c 216src/my/my_query_helper.c
224src/my/my_result_helper.c 217src/my/my_result_helper.c
@@ -229,8 +222,8 @@ src/namecache/namecache_api.c
229src/namecache/plugin_namecache_flat.c 222src/namecache/plugin_namecache_flat.c
230src/namecache/plugin_namecache_postgres.c 223src/namecache/plugin_namecache_postgres.c
231src/namecache/plugin_namecache_sqlite.c 224src/namecache/plugin_namecache_sqlite.c
232src/namestore/gnunet-namestore-fcfsd.c
233src/namestore/gnunet-namestore.c 225src/namestore/gnunet-namestore.c
226src/namestore/gnunet-namestore-fcfsd.c
234src/namestore/gnunet-service-namestore.c 227src/namestore/gnunet-service-namestore.c
235src/namestore/gnunet-zoneimport.c 228src/namestore/gnunet-zoneimport.c
236src/namestore/namestore_api.c 229src/namestore/namestore_api.c
@@ -245,10 +238,10 @@ src/nat-auto/gnunet-service-nat-auto.c
245src/nat-auto/gnunet-service-nat-auto_legacy.c 238src/nat-auto/gnunet-service-nat-auto_legacy.c
246src/nat-auto/nat_auto_api.c 239src/nat-auto/nat_auto_api.c
247src/nat-auto/nat_auto_api_test.c 240src/nat-auto/nat_auto_api_test.c
248src/nat/gnunet-helper-nat-client-windows.c
249src/nat/gnunet-helper-nat-client.c 241src/nat/gnunet-helper-nat-client.c
250src/nat/gnunet-helper-nat-server-windows.c 242src/nat/gnunet-helper-nat-client-windows.c
251src/nat/gnunet-helper-nat-server.c 243src/nat/gnunet-helper-nat-server.c
244src/nat/gnunet-helper-nat-server-windows.c
252src/nat/gnunet-nat.c 245src/nat/gnunet-nat.c
253src/nat/gnunet-service-nat.c 246src/nat/gnunet-service-nat.c
254src/nat/gnunet-service-nat_externalip.c 247src/nat/gnunet-service-nat_externalip.c
@@ -257,16 +250,16 @@ src/nat/gnunet-service-nat_mini.c
257src/nat/gnunet-service-nat_stun.c 250src/nat/gnunet-service-nat_stun.c
258src/nat/nat_api.c 251src/nat/nat_api.c
259src/nat/nat_api_stun.c 252src/nat/nat_api_stun.c
260src/nse/gnunet-nse-profiler.c
261src/nse/gnunet-nse.c 253src/nse/gnunet-nse.c
254src/nse/gnunet-nse-profiler.c
262src/nse/gnunet-service-nse.c 255src/nse/gnunet-service-nse.c
263src/nse/nse_api.c 256src/nse/nse_api.c
264src/nt/nt.c 257src/nt/nt.c
265src/peerinfo-tool/gnunet-peerinfo.c
266src/peerinfo-tool/gnunet-peerinfo_plugins.c
267src/peerinfo/gnunet-service-peerinfo.c 258src/peerinfo/gnunet-service-peerinfo.c
268src/peerinfo/peerinfo_api.c 259src/peerinfo/peerinfo_api.c
269src/peerinfo/peerinfo_api_notify.c 260src/peerinfo/peerinfo_api_notify.c
261src/peerinfo-tool/gnunet-peerinfo.c
262src/peerinfo-tool/gnunet-peerinfo_plugins.c
270src/peerstore/gnunet-peerstore.c 263src/peerstore/gnunet-peerstore.c
271src/peerstore/gnunet-service-peerstore.c 264src/peerstore/gnunet-service-peerstore.c
272src/peerstore/peerstore_api.c 265src/peerstore/peerstore_api.c
@@ -280,16 +273,6 @@ src/pq/pq_exec.c
280src/pq/pq_prepare.c 273src/pq/pq_prepare.c
281src/pq/pq_query_helper.c 274src/pq/pq_query_helper.c
282src/pq/pq_result_helper.c 275src/pq/pq_result_helper.c
283src/psyc/gnunet-service-psyc.c
284src/psyc/psyc_api.c
285src/psycstore/gnunet-service-psycstore.c
286src/psycstore/plugin_psycstore_mysql.c
287src/psycstore/plugin_psycstore_postgres.c
288src/psycstore/plugin_psycstore_sqlite.c
289src/psycstore/psycstore_api.c
290src/psycutil/psyc_env.c
291src/psycutil/psyc_message.c
292src/psycutil/psyc_slicer.c
293src/pt/gnunet-daemon-pt.c 276src/pt/gnunet-daemon-pt.c
294src/reclaim-attribute/plugin_reclaim_attribute_gnuid.c 277src/reclaim-attribute/plugin_reclaim_attribute_gnuid.c
295src/reclaim-attribute/reclaim_attribute.c 278src/reclaim-attribute/reclaim_attribute.c
@@ -312,6 +295,7 @@ src/regex/regex_internal_dht.c
312src/regex/regex_test_graph.c 295src/regex/regex_test_graph.c
313src/regex/regex_test_lib.c 296src/regex/regex_test_lib.c
314src/regex/regex_test_random.c 297src/regex/regex_test_random.c
298src/rest/gnunet-rest-server.c
315src/rest-plugins/json_reclaim.c 299src/rest-plugins/json_reclaim.c
316src/rest-plugins/oidc_helper.c 300src/rest-plugins/oidc_helper.c
317src/rest-plugins/plugin_rest_copying.c 301src/rest-plugins/plugin_rest_copying.c
@@ -322,28 +306,27 @@ src/rest-plugins/plugin_rest_namestore.c
322src/rest-plugins/plugin_rest_openid_connect.c 306src/rest-plugins/plugin_rest_openid_connect.c
323src/rest-plugins/plugin_rest_peerinfo.c 307src/rest-plugins/plugin_rest_peerinfo.c
324src/rest-plugins/plugin_rest_reclaim.c 308src/rest-plugins/plugin_rest_reclaim.c
325src/rest/gnunet-rest-server.c
326src/rest/rest.c 309src/rest/rest.c
327src/revocation/gnunet-revocation.c 310src/revocation/gnunet-revocation.c
328src/revocation/gnunet-service-revocation.c 311src/revocation/gnunet-service-revocation.c
329src/revocation/plugin_block_revocation.c 312src/revocation/plugin_block_revocation.c
330src/revocation/revocation_api.c 313src/revocation/revocation_api.c
331src/rps/gnunet-rps-profiler.c
332src/rps/gnunet-rps.c 314src/rps/gnunet-rps.c
315src/rps/gnunet-rps-profiler.c
333src/rps/gnunet-service-rps.c 316src/rps/gnunet-service-rps.c
334src/rps/gnunet-service-rps_custommap.c 317src/rps/gnunet-service-rps_custommap.c
335src/rps/gnunet-service-rps_sampler.c 318src/rps/gnunet-service-rps_sampler.c
336src/rps/gnunet-service-rps_sampler_elem.c 319src/rps/gnunet-service-rps_sampler_elem.c
337src/rps/gnunet-service-rps_view.c 320src/rps/gnunet-service-rps_view.c
321src/rps/rps_api.c
338src/rps/rps-sampler_client.c 322src/rps/rps-sampler_client.c
339src/rps/rps-sampler_common.c 323src/rps/rps-sampler_common.c
340src/rps/rps-test_util.c 324src/rps/rps-test_util.c
341src/rps/rps_api.c
342src/scalarproduct/gnunet-scalarproduct.c 325src/scalarproduct/gnunet-scalarproduct.c
343src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
344src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c
345src/scalarproduct/gnunet-service-scalarproduct_alice.c 326src/scalarproduct/gnunet-service-scalarproduct_alice.c
346src/scalarproduct/gnunet-service-scalarproduct_bob.c 327src/scalarproduct/gnunet-service-scalarproduct_bob.c
328src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
329src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c
347src/scalarproduct/scalarproduct_api.c 330src/scalarproduct/scalarproduct_api.c
348src/secretsharing/gnunet-secretsharing-profiler.c 331src/secretsharing/gnunet-secretsharing-profiler.c
349src/secretsharing/gnunet-service-secretsharing.c 332src/secretsharing/gnunet-service-secretsharing.c
@@ -359,9 +342,6 @@ src/set/ibf.c
359src/set/ibf_sim.c 342src/set/ibf_sim.c
360src/set/plugin_block_set_test.c 343src/set/plugin_block_set_test.c
361src/set/set_api.c 344src/set/set_api.c
362src/social/gnunet-service-social.c
363src/social/gnunet-social.c
364src/social/social_api.c
365src/sq/sq.c 345src/sq/sq.c
366src/sq/sq_exec.c 346src/sq/sq_exec.c
367src/sq/sq_prepare.c 347src/sq/sq_prepare.c
@@ -372,16 +352,15 @@ src/statistics/gnunet-statistics.c
372src/statistics/statistics_api.c 352src/statistics/statistics_api.c
373src/template/gnunet-service-template.c 353src/template/gnunet-service-template.c
374src/template/gnunet-template.c 354src/template/gnunet-template.c
375src/testbed-logger/gnunet-service-testbed-logger.c
376src/testbed-logger/testbed_logger_api.c
377src/testbed/generate-underlay-topology.c 355src/testbed/generate-underlay-topology.c
378src/testbed/gnunet-daemon-latency-logger.c 356src/testbed/gnunet-daemon-latency-logger.c
379src/testbed/gnunet-daemon-testbed-blacklist.c 357src/testbed/gnunet-daemon-testbed-blacklist.c
380src/testbed/gnunet-daemon-testbed-underlay.c 358src/testbed/gnunet-daemon-testbed-underlay.c
381src/testbed/gnunet-helper-testbed.c 359src/testbed/gnunet-helper-testbed.c
360src/testbed/gnunet_mpi_test.c
382src/testbed/gnunet-service-test-barriers.c 361src/testbed/gnunet-service-test-barriers.c
383src/testbed/gnunet-service-testbed.c
384src/testbed/gnunet-service-testbed_barriers.c 362src/testbed/gnunet-service-testbed_barriers.c
363src/testbed/gnunet-service-testbed.c
385src/testbed/gnunet-service-testbed_cache.c 364src/testbed/gnunet-service-testbed_cache.c
386src/testbed/gnunet-service-testbed_connectionpool.c 365src/testbed/gnunet-service-testbed_connectionpool.c
387src/testbed/gnunet-service-testbed_cpustatus.c 366src/testbed/gnunet-service-testbed_cpustatus.c
@@ -389,19 +368,20 @@ src/testbed/gnunet-service-testbed_links.c
389src/testbed/gnunet-service-testbed_meminfo.c 368src/testbed/gnunet-service-testbed_meminfo.c
390src/testbed/gnunet-service-testbed_oc.c 369src/testbed/gnunet-service-testbed_oc.c
391src/testbed/gnunet-service-testbed_peers.c 370src/testbed/gnunet-service-testbed_peers.c
392src/testbed/gnunet-testbed-profiler.c
393src/testbed/gnunet_mpi_test.c
394src/testbed/gnunet_testbed_mpi_spawn.c 371src/testbed/gnunet_testbed_mpi_spawn.c
395src/testbed/testbed_api.c 372src/testbed/gnunet-testbed-profiler.c
373src/testbed-logger/gnunet-service-testbed-logger.c
374src/testbed-logger/testbed_logger_api.c
396src/testbed/testbed_api_barriers.c 375src/testbed/testbed_api_barriers.c
376src/testbed/testbed_api.c
397src/testbed/testbed_api_hosts.c 377src/testbed/testbed_api_hosts.c
398src/testbed/testbed_api_operations.c 378src/testbed/testbed_api_operations.c
399src/testbed/testbed_api_peers.c 379src/testbed/testbed_api_peers.c
400src/testbed/testbed_api_sd.c 380src/testbed/testbed_api_sd.c
401src/testbed/testbed_api_services.c 381src/testbed/testbed_api_services.c
402src/testbed/testbed_api_statistics.c 382src/testbed/testbed_api_statistics.c
403src/testbed/testbed_api_test.c
404src/testbed/testbed_api_testbed.c 383src/testbed/testbed_api_testbed.c
384src/testbed/testbed_api_test.c
405src/testbed/testbed_api_topology.c 385src/testbed/testbed_api_topology.c
406src/testbed/testbed_api_underlay.c 386src/testbed/testbed_api_underlay.c
407src/testing/gnunet-testing.c 387src/testing/gnunet-testing.c
@@ -413,29 +393,29 @@ src/transport/gnunet-communicator-tcp.c
413src/transport/gnunet-communicator-udp.c 393src/transport/gnunet-communicator-udp.c
414src/transport/gnunet-communicator-unix.c 394src/transport/gnunet-communicator-unix.c
415src/transport/gnunet-helper-transport-bluetooth.c 395src/transport/gnunet-helper-transport-bluetooth.c
416src/transport/gnunet-helper-transport-wlan-dummy.c
417src/transport/gnunet-helper-transport-wlan.c 396src/transport/gnunet-helper-transport-wlan.c
397src/transport/gnunet-helper-transport-wlan-dummy.c
418src/transport/gnunet-service-tng.c 398src/transport/gnunet-service-tng.c
419src/transport/gnunet-service-transport.c
420src/transport/gnunet-service-transport_ats.c 399src/transport/gnunet-service-transport_ats.c
400src/transport/gnunet-service-transport.c
421src/transport/gnunet-service-transport_hello.c 401src/transport/gnunet-service-transport_hello.c
422src/transport/gnunet-service-transport_manipulation.c 402src/transport/gnunet-service-transport_manipulation.c
423src/transport/gnunet-service-transport_neighbours.c 403src/transport/gnunet-service-transport_neighbours.c
424src/transport/gnunet-service-transport_plugins.c 404src/transport/gnunet-service-transport_plugins.c
425src/transport/gnunet-service-transport_validation.c 405src/transport/gnunet-service-transport_validation.c
406src/transport/gnunet-transport.c
426src/transport/gnunet-transport-certificate-creation.c 407src/transport/gnunet-transport-certificate-creation.c
427src/transport/gnunet-transport-profiler.c 408src/transport/gnunet-transport-profiler.c
428src/transport/gnunet-transport-wlan-receiver.c 409src/transport/gnunet-transport-wlan-receiver.c
429src/transport/gnunet-transport-wlan-sender.c 410src/transport/gnunet-transport-wlan-sender.c
430src/transport/gnunet-transport.c
431src/transport/plugin_transport_http_client.c 411src/transport/plugin_transport_http_client.c
432src/transport/plugin_transport_http_common.c 412src/transport/plugin_transport_http_common.c
433src/transport/plugin_transport_http_server.c 413src/transport/plugin_transport_http_server.c
434src/transport/plugin_transport_smtp.c 414src/transport/plugin_transport_smtp.c
435src/transport/plugin_transport_tcp.c 415src/transport/plugin_transport_tcp.c
436src/transport/plugin_transport_template.c 416src/transport/plugin_transport_template.c
437src/transport/plugin_transport_udp.c
438src/transport/plugin_transport_udp_broadcasting.c 417src/transport/plugin_transport_udp_broadcasting.c
418src/transport/plugin_transport_udp.c
439src/transport/plugin_transport_unix.c 419src/transport/plugin_transport_unix.c
440src/transport/plugin_transport_wlan.c 420src/transport/plugin_transport_wlan.c
441src/transport/plugin_transport_xt.c 421src/transport/plugin_transport_xt.c
@@ -444,11 +424,7 @@ src/transport/tcp_connection_legacy.c
444src/transport/tcp_server_legacy.c 424src/transport/tcp_server_legacy.c
445src/transport/tcp_server_mst_legacy.c 425src/transport/tcp_server_mst_legacy.c
446src/transport/tcp_service_legacy.c 426src/transport/tcp_service_legacy.c
447src/transport/transport-testing-filenames.c 427src/transport/transport_api2_address.c
448src/transport/transport-testing-loggers.c
449src/transport/transport-testing-main.c
450src/transport/transport-testing-send.c
451src/transport/transport-testing.c
452src/transport/transport_api2_communication.c 428src/transport/transport_api2_communication.c
453src/transport/transport_api2_core.c 429src/transport/transport_api2_core.c
454src/transport/transport_api2_monitor.c 430src/transport/transport_api2_monitor.c
@@ -460,6 +436,11 @@ src/transport/transport_api_manipulation.c
460src/transport/transport_api_monitor_peers.c 436src/transport/transport_api_monitor_peers.c
461src/transport/transport_api_monitor_plugins.c 437src/transport/transport_api_monitor_plugins.c
462src/transport/transport_api_offer_hello.c 438src/transport/transport_api_offer_hello.c
439src/transport/transport-testing.c
440src/transport/transport-testing-filenames.c
441src/transport/transport-testing-loggers.c
442src/transport/transport-testing-main.c
443src/transport/transport-testing-send.c
463src/util/bandwidth.c 444src/util/bandwidth.c
464src/util/benchmark.c 445src/util/benchmark.c
465src/util/bio.c 446src/util/bio.c
@@ -472,8 +453,8 @@ src/util/configuration_loader.c
472src/util/container_bloomfilter.c 453src/util/container_bloomfilter.c
473src/util/container_heap.c 454src/util/container_heap.c
474src/util/container_meta_data.c 455src/util/container_meta_data.c
475src/util/container_multihashmap.c
476src/util/container_multihashmap32.c 456src/util/container_multihashmap32.c
457src/util/container_multihashmap.c
477src/util/container_multipeermap.c 458src/util/container_multipeermap.c
478src/util/container_multishortmap.c 459src/util/container_multishortmap.c
479src/util/crypto_abe.c 460src/util/crypto_abe.c
@@ -495,15 +476,15 @@ src/util/dnsparser.c
495src/util/dnsstub.c 476src/util/dnsstub.c
496src/util/getopt.c 477src/util/getopt.c
497src/util/getopt_helpers.c 478src/util/getopt_helpers.c
498src/util/gnunet-config-diff.c
499src/util/gnunet-config.c 479src/util/gnunet-config.c
480src/util/gnunet-config-diff.c
500src/util/gnunet-ecc.c 481src/util/gnunet-ecc.c
501src/util/gnunet-helper-w32-console.c 482src/util/gnunet-helper-w32-console.c
502src/util/gnunet-resolver.c 483src/util/gnunet-resolver.c
503src/util/gnunet-scrypt.c 484src/util/gnunet-scrypt.c
504src/util/gnunet-service-resolver.c 485src/util/gnunet-service-resolver.c
505src/util/gnunet-timeout-w32.c
506src/util/gnunet-timeout.c 486src/util/gnunet-timeout.c
487src/util/gnunet-timeout-w32.c
507src/util/gnunet-uri.c 488src/util/gnunet-uri.c
508src/util/helper.c 489src/util/helper.c
509src/util/load.c 490src/util/load.c
@@ -532,13 +513,13 @@ src/util/tun.c
532src/util/w32cat.c 513src/util/w32cat.c
533src/util/win.c 514src/util/win.c
534src/util/winproc.c 515src/util/winproc.c
535src/vpn/gnunet-helper-vpn-windows.c
536src/vpn/gnunet-helper-vpn.c 516src/vpn/gnunet-helper-vpn.c
517src/vpn/gnunet-helper-vpn-windows.c
537src/vpn/gnunet-service-vpn.c 518src/vpn/gnunet-service-vpn.c
538src/vpn/gnunet-vpn.c 519src/vpn/gnunet-vpn.c
539src/vpn/vpn_api.c 520src/vpn/vpn_api.c
540src/zonemaster/gnunet-service-zonemaster-monitor.c
541src/zonemaster/gnunet-service-zonemaster.c 521src/zonemaster/gnunet-service-zonemaster.c
522src/zonemaster/gnunet-service-zonemaster-monitor.c
542src/fs/fs_api.h 523src/fs/fs_api.h
543src/include/compat.h 524src/include/compat.h
544src/include/gnunet_common.h 525src/include/gnunet_common.h
diff --git a/po/de.po b/po/de.po
index d036280f7..a543925fc 100644
--- a/po/de.po
+++ b/po/de.po
@@ -10,7 +10,7 @@ msgid ""
10msgstr "" 10msgstr ""
11"Project-Id-Version: gnunet 0.10.1\n" 11"Project-Id-Version: gnunet 0.10.1\n"
12"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" 12"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
13"POT-Creation-Date: 2018-10-20 11:13+0200\n" 13"POT-Creation-Date: 2019-02-13 00:37+0100\n"
14"PO-Revision-Date: 2015-03-08 16:16+0100\n" 14"PO-Revision-Date: 2015-03-08 16:16+0100\n"
15"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" 15"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
16"Language-Team: German <translation-team-de@lists.sourceforge.net>\n" 16"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -21,1027 +21,1021 @@ msgstr ""
21"Plural-Forms: nplurals=2; plural=(n != 1);\n" 21"Plural-Forms: nplurals=2; plural=(n != 1);\n"
22"X-Generator: Poedit 1.7.4\n" 22"X-Generator: Poedit 1.7.4\n"
23 23
24#: src/arm/gnunet-arm.c:154 24#: src/arm/gnunet-arm.c:156
25#, fuzzy, c-format 25#, fuzzy, c-format
26msgid "Failed to remove configuration file %s\n" 26msgid "Failed to remove configuration file %s\n"
27msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 27msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
28 28
29#: src/arm/gnunet-arm.c:160 29#: src/arm/gnunet-arm.c:162
30#, fuzzy, c-format 30#, fuzzy, c-format
31msgid "Failed to remove servicehome directory %s\n" 31msgid "Failed to remove servicehome directory %s\n"
32msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 32msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
33 33
34#: src/arm/gnunet-arm.c:220 src/testbed/gnunet-service-testbed_peers.c:1137 34#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
35msgid "Message was sent successfully" 35msgid "Message was sent successfully"
36msgstr "" 36msgstr ""
37 37
38#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139 38#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
39msgid "We disconnected from ARM before we could send a request" 39msgid "We disconnected from ARM before we could send a request"
40msgstr "" 40msgstr ""
41 41
42#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141 42#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
43msgid "Unknown request status" 43msgid "Unknown request status"
44msgstr "Unbekannter Anfragestatus" 44msgstr "Unbekannter Anfragestatus"
45 45
46#: src/arm/gnunet-arm.c:240 46#: src/arm/gnunet-arm.c:242
47#, fuzzy 47#, fuzzy
48msgid "is stopped" 48msgid "is stopped"
49msgstr "%s wurde gestoppt" 49msgstr "%s wurde gestoppt"
50 50
51#: src/arm/gnunet-arm.c:242 51#: src/arm/gnunet-arm.c:244
52#, fuzzy 52#, fuzzy
53msgid "is starting" 53msgid "is starting"
54msgstr "%s startet" 54msgstr "%s startet"
55 55
56#: src/arm/gnunet-arm.c:244 56#: src/arm/gnunet-arm.c:246
57#, fuzzy 57#, fuzzy
58msgid "is stopping" 58msgid "is stopping"
59msgstr "%s wird gestoppt" 59msgstr "%s wird gestoppt"
60 60
61#: src/arm/gnunet-arm.c:246 61#: src/arm/gnunet-arm.c:248
62#, fuzzy 62#, fuzzy
63msgid "is starting already" 63msgid "is starting already"
64msgstr "%s ist bereits gestartet" 64msgstr "%s ist bereits gestartet"
65 65
66#: src/arm/gnunet-arm.c:248 66#: src/arm/gnunet-arm.c:250
67#, fuzzy 67#, fuzzy
68msgid "is stopping already" 68msgid "is stopping already"
69msgstr "%s wird bereits gestoppt" 69msgstr "%s wird bereits gestoppt"
70 70
71#: src/arm/gnunet-arm.c:250 71#: src/arm/gnunet-arm.c:252
72#, fuzzy 72#, fuzzy
73msgid "is started already" 73msgid "is started already"
74msgstr "%s ist bereits gestartet" 74msgstr "%s ist bereits gestartet"
75 75
76#: src/arm/gnunet-arm.c:252 76#: src/arm/gnunet-arm.c:254
77#, fuzzy 77#, fuzzy
78msgid "is stopped already" 78msgid "is stopped already"
79msgstr "%s ist bereits gestoppt" 79msgstr "%s ist bereits gestoppt"
80 80
81#: src/arm/gnunet-arm.c:254 81#: src/arm/gnunet-arm.c:256
82msgid "service is not known to ARM" 82msgid "service is not known to ARM"
83msgstr "" 83msgstr ""
84 84
85#: src/arm/gnunet-arm.c:256 85#: src/arm/gnunet-arm.c:258
86#, fuzzy 86#, fuzzy
87msgid "service failed to start" 87msgid "service failed to start"
88msgstr "%s-Dienst konnte nicht gestartet werden" 88msgstr "%s-Dienst konnte nicht gestartet werden"
89 89
90#: src/arm/gnunet-arm.c:258 90#: src/arm/gnunet-arm.c:260
91msgid "service cannot be manipulated because ARM is shutting down" 91msgid "service cannot be manipulated because ARM is shutting down"
92msgstr "" 92msgstr ""
93 93
94#: src/arm/gnunet-arm.c:260 94#: src/arm/gnunet-arm.c:262
95#, fuzzy 95#, fuzzy
96msgid "Unknown result code." 96msgid "Unknown result code."
97msgstr "Unbekannter Anfragestatus" 97msgstr "Unbekannter Anfragestatus"
98 98
99#: src/arm/gnunet-arm.c:292 99#: src/arm/gnunet-arm.c:295
100msgid "Fatal error initializing ARM API.\n" 100msgid "Fatal error initializing ARM API.\n"
101msgstr "Schwerwiegender Fehler bei der Initialisierung der ARM-API.\n" 101msgstr "Schwerwiegender Fehler bei der Initialisierung der ARM-API.\n"
102 102
103#: src/arm/gnunet-arm.c:320 src/arm/gnunet-arm.c:329 103#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
104#, c-format 104#, c-format
105msgid "Failed to start the ARM service: %s\n" 105msgid "Failed to start the ARM service: %s\n"
106msgstr "ARM-Dienst konnte nicht gestartet werden: %s\n" 106msgstr "ARM-Dienst konnte nicht gestartet werden: %s\n"
107 107
108#: src/arm/gnunet-arm.c:363 108#: src/arm/gnunet-arm.c:368
109#, fuzzy, c-format 109#, fuzzy, c-format
110msgid "Failed to send a stop request to the ARM service: %s\n" 110msgid "Failed to send a stop request to the ARM service: %s\n"
111msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n" 111msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
112 112
113#: src/arm/gnunet-arm.c:374 113#: src/arm/gnunet-arm.c:379
114#, fuzzy, c-format 114#, fuzzy, c-format
115msgid "Failed to stop the ARM service: %s\n" 115msgid "Failed to stop the ARM service: %s\n"
116msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" 116msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
117 117
118#: src/arm/gnunet-arm.c:413 118#: src/arm/gnunet-arm.c:419
119#, fuzzy, c-format 119#, fuzzy, c-format
120msgid "Failed to send a request to start the `%s' service: %s\n" 120msgid "Failed to send a request to start the `%s' service: %s\n"
121msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n" 121msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n"
122 122
123#: src/arm/gnunet-arm.c:423 123#: src/arm/gnunet-arm.c:429
124#, fuzzy, c-format 124#, fuzzy, c-format
125msgid "Failed to start the `%s' service: %s\n" 125msgid "Failed to start the `%s' service: %s\n"
126msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" 126msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
127 127
128#: src/arm/gnunet-arm.c:460 128#: src/arm/gnunet-arm.c:467
129#, fuzzy, c-format 129#, fuzzy, c-format
130msgid "Failed to send a request to kill the `%s' service: %%s\n" 130msgid "Failed to send a request to kill the `%s' service: %%s\n"
131msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n" 131msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n"
132 132
133#: src/arm/gnunet-arm.c:471 133#: src/arm/gnunet-arm.c:478
134#, fuzzy, c-format 134#, fuzzy, c-format
135msgid "Failed to kill the `%s' service: %s\n" 135msgid "Failed to kill the `%s' service: %s\n"
136msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" 136msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
137 137
138#: src/arm/gnunet-arm.c:511 138#: src/arm/gnunet-arm.c:519
139#, fuzzy, c-format 139#, fuzzy, c-format
140msgid "Failed to request a list of services: %s\n" 140msgid "Failed to request a list of services: %s\n"
141msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 141msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
142 142
143#: src/arm/gnunet-arm.c:520 143#: src/arm/gnunet-arm.c:528
144msgid "Error communicating with ARM. ARM not running?\n" 144msgid "Error communicating with ARM. ARM not running?\n"
145msgstr "Fehler bei der Kommunikation mit ARM. Läuft ARM nicht?\n" 145msgstr "Fehler bei der Kommunikation mit ARM. Läuft ARM nicht?\n"
146 146
147#: src/arm/gnunet-arm.c:526 147#: src/arm/gnunet-arm.c:534
148msgid "Running services:\n" 148msgid "Running services:\n"
149msgstr "Laufende Dienste:\n" 149msgstr "Laufende Dienste:\n"
150 150
151#: src/arm/gnunet-arm.c:614 151#: src/arm/gnunet-arm.c:623
152#, c-format 152#, c-format
153msgid "Now only monitoring, press CTRL-C to stop.\n" 153msgid "Now only monitoring, press CTRL-C to stop.\n"
154msgstr "" 154msgstr ""
155 155
156#: src/arm/gnunet-arm.c:646 156#: src/arm/gnunet-arm.c:656
157#, c-format 157#, c-format
158msgid "Stopped %s.\n" 158msgid "Stopped %s.\n"
159msgstr "%s wurde gestoppt.\n" 159msgstr "%s wurde gestoppt.\n"
160 160
161#: src/arm/gnunet-arm.c:649 161#: src/arm/gnunet-arm.c:659
162#, c-format 162#, c-format
163msgid "Starting %s...\n" 163msgid "Starting %s...\n"
164msgstr "%s wird gestartet …\n" 164msgstr "%s wird gestartet …\n"
165 165
166#: src/arm/gnunet-arm.c:652 166#: src/arm/gnunet-arm.c:662
167#, c-format 167#, c-format
168msgid "Stopping %s...\n" 168msgid "Stopping %s...\n"
169msgstr "%s wird gestoppt …\n" 169msgstr "%s wird gestoppt …\n"
170 170
171#: src/arm/gnunet-arm.c:666 171#: src/arm/gnunet-arm.c:676
172#, fuzzy, c-format 172#, fuzzy, c-format
173msgid "Unknown status %u for service %s.\n" 173msgid "Unknown status %u for service %s.\n"
174msgstr "`%s': unbekannter Dienst: %s\n" 174msgstr "`%s': unbekannter Dienst: %s\n"
175 175
176#: src/arm/gnunet-arm.c:767 176#: src/arm/gnunet-arm.c:766
177msgid "stop all GNUnet services" 177msgid "stop all GNUnet services"
178msgstr "Alle GNUnet-Dienste stoppen" 178msgstr "Alle GNUnet-Dienste stoppen"
179 179
180#: src/arm/gnunet-arm.c:773 180#: src/arm/gnunet-arm.c:771
181msgid "start a particular service" 181msgid "start a particular service"
182msgstr "Einen bestimmten Dienst starten" 182msgstr "Einen bestimmten Dienst starten"
183 183
184#: src/arm/gnunet-arm.c:779 184#: src/arm/gnunet-arm.c:776
185msgid "stop a particular service" 185msgid "stop a particular service"
186msgstr "Einen bestimmten Dienst stoppen" 186msgstr "Einen bestimmten Dienst stoppen"
187 187
188#: src/arm/gnunet-arm.c:784 188#: src/arm/gnunet-arm.c:780
189msgid "start all GNUnet default services" 189msgid "start all GNUnet default services"
190msgstr "Alle Standard-GNUnet-Dienste starten" 190msgstr "Alle Standard-GNUnet-Dienste starten"
191 191
192#: src/arm/gnunet-arm.c:789 192#: src/arm/gnunet-arm.c:784
193msgid "stop and start all GNUnet default services" 193msgid "stop and start all GNUnet default services"
194msgstr "Alle Standard-GNUnet-Dienste stoppen und starten" 194msgstr "Alle Standard-GNUnet-Dienste stoppen und starten"
195 195
196#: src/arm/gnunet-arm.c:793 196#: src/arm/gnunet-arm.c:788
197msgid "delete config file and directory on exit" 197msgid "delete config file and directory on exit"
198msgstr "Konfigurationsdatei und Verzeichnis beim Beenden löschen" 198msgstr "Konfigurationsdatei und Verzeichnis beim Beenden löschen"
199 199
200#: src/arm/gnunet-arm.c:798 200#: src/arm/gnunet-arm.c:792
201msgid "monitor ARM activities" 201msgid "monitor ARM activities"
202msgstr "ARM-Aktivitäten überwachen" 202msgstr "ARM-Aktivitäten überwachen"
203 203
204#: src/arm/gnunet-arm.c:803 204#: src/arm/gnunet-arm.c:796
205msgid "don't print status messages" 205msgid "don't print status messages"
206msgstr "Keine Statusmeldungen ausgeben" 206msgstr "Keine Statusmeldungen ausgeben"
207 207
208#: src/arm/gnunet-arm.c:809 208#: src/arm/gnunet-arm.c:801
209msgid "exit with error status if operation does not finish after DELAY" 209msgid "exit with error status if operation does not finish after DELAY"
210msgstr "" 210msgstr ""
211 211
212#: src/arm/gnunet-arm.c:814 212#: src/arm/gnunet-arm.c:805
213msgid "list currently running services" 213msgid "list currently running services"
214msgstr "Alle derzeit laufenden Dienste auflisten" 214msgstr "Alle derzeit laufenden Dienste auflisten"
215 215
216#: src/arm/gnunet-arm.c:819 216#: src/arm/gnunet-arm.c:809
217msgid "don't let gnunet-service-arm inherit standard output" 217msgid "don't let gnunet-service-arm inherit standard output"
218msgstr "" 218msgstr ""
219 219
220#: src/arm/gnunet-arm.c:824 220#: src/arm/gnunet-arm.c:813
221msgid "don't let gnunet-service-arm inherit standard error" 221msgid "don't let gnunet-service-arm inherit standard error"
222msgstr "" 222msgstr ""
223 223
224#: src/arm/gnunet-arm.c:837 224#: src/arm/gnunet-arm.c:828
225msgid "Control services and the Automated Restart Manager (ARM)" 225msgid "Control services and the Automated Restart Manager (ARM)"
226msgstr "" 226msgstr ""
227 227
228#: src/arm/gnunet-service-arm.c:386 src/transport/plugin_transport_tcp.c:1118 228#: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
229#: src/transport/plugin_transport_xt.c:1118 229#: src/transport/plugin_transport_xt.c:1120
230#: src/transport/tcp_service_legacy.c:555 src/util/service.c:610 230#: src/transport/tcp_service_legacy.c:557 src/util/service.c:1167
231#, c-format 231#, c-format
232msgid "" 232msgid ""
233"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n" 233"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
234msgstr "" 234msgstr ""
235 235
236#: src/arm/gnunet-service-arm.c:410 src/arm/gnunet-service-arm.c:416 236#: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
237#: src/transport/plugin_transport_tcp.c:1137 237#: src/transport/plugin_transport_tcp.c:1139
238#: src/transport/plugin_transport_tcp.c:1143 238#: src/transport/plugin_transport_tcp.c:1145
239#: src/transport/plugin_transport_tcp.c:3823 239#: src/transport/plugin_transport_tcp.c:3829
240#: src/transport/plugin_transport_xt.c:1137 240#: src/transport/plugin_transport_xt.c:1139
241#: src/transport/plugin_transport_xt.c:1143 241#: src/transport/plugin_transport_xt.c:1145
242#: src/transport/plugin_transport_xt.c:3831 242#: src/transport/plugin_transport_xt.c:3833
243#: src/transport/tcp_service_legacy.c:574 243#: src/transport/tcp_service_legacy.c:576
244#: src/transport/tcp_service_legacy.c:580 src/util/service.c:635 244#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1192
245#: src/util/service.c:641 245#: src/util/service.c:1198
246#, c-format 246#, c-format
247msgid "Require valid port number for service `%s' in configuration!\n" 247msgid "Require valid port number for service `%s' in configuration!\n"
248msgstr "" 248msgstr ""
249 249
250#: src/arm/gnunet-service-arm.c:455 src/transport/plugin_transport_tcp.c:1174 250#: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
251#: src/transport/plugin_transport_xt.c:1174 251#: src/transport/plugin_transport_xt.c:1176
252#: src/transport/tcp_service_legacy.c:611 src/util/client.c:504 252#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
253#: src/util/service.c:680 253#: src/util/service.c:1237
254#, c-format 254#, c-format
255msgid "UNIXPATH `%s' too long, maximum length is %llu\n" 255msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
256msgstr "" 256msgstr ""
257 257
258#: src/arm/gnunet-service-arm.c:460 src/transport/plugin_transport_tcp.c:1178 258#: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
259#: src/transport/plugin_transport_xt.c:1178 259#: src/transport/plugin_transport_xt.c:1180
260#: src/transport/tcp_service_legacy.c:615 src/util/client.c:509 260#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
261#: src/util/service.c:685 261#: src/util/service.c:1242
262#, c-format 262#, c-format
263msgid "Using `%s' instead\n" 263msgid "Using `%s' instead\n"
264msgstr "" 264msgstr ""
265 265
266#: src/arm/gnunet-service-arm.c:493 src/transport/plugin_transport_tcp.c:1209 266#: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
267#: src/transport/plugin_transport_xt.c:1209 267#: src/transport/plugin_transport_xt.c:1211
268#: src/transport/tcp_service_legacy.c:646 src/util/service.c:721 268#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1278
269#, c-format 269#, c-format
270msgid "" 270msgid ""
271"Disabling UNIX domain socket support for service `%s', failed to create UNIX " 271"Disabling UNIX domain socket support for service `%s', failed to create UNIX "
272"domain socket: %s\n" 272"domain socket: %s\n"
273msgstr "" 273msgstr ""
274 274
275#: src/arm/gnunet-service-arm.c:515 src/transport/plugin_transport_tcp.c:1226 275#: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
276#: src/transport/plugin_transport_xt.c:1226 276#: src/transport/plugin_transport_xt.c:1228
277#: src/transport/tcp_service_legacy.c:663 src/util/service.c:739 277#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1296
278#, c-format 278#, c-format
279msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n" 279msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
280msgstr "" 280msgstr ""
281 281
282#: src/arm/gnunet-service-arm.c:554 282#: src/arm/gnunet-service-arm.c:556
283#: src/transport/plugin_transport_http_server.c:2682 283#: src/transport/plugin_transport_http_server.c:2688
284#: src/transport/plugin_transport_tcp.c:1257 284#: src/transport/plugin_transport_tcp.c:1259
285#: src/transport/plugin_transport_xt.c:1257 285#: src/transport/plugin_transport_xt.c:1259
286#: src/transport/tcp_service_legacy.c:694 src/util/service.c:780 286#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1337
287#, c-format 287#, c-format
288msgid "Failed to resolve `%s': %s\n" 288msgid "Failed to resolve `%s': %s\n"
289msgstr "»%s« konnte nicht aufgelöst werden: %s\n" 289msgstr "»%s« konnte nicht aufgelöst werden: %s\n"
290 290
291#: src/arm/gnunet-service-arm.c:573 291#: src/arm/gnunet-service-arm.c:575
292#: src/transport/plugin_transport_http_server.c:2700 292#: src/transport/plugin_transport_http_server.c:2706
293#: src/transport/plugin_transport_tcp.c:1276 293#: src/transport/plugin_transport_tcp.c:1278
294#: src/transport/plugin_transport_xt.c:1276 294#: src/transport/plugin_transport_xt.c:1278
295#: src/transport/tcp_service_legacy.c:713 src/util/service.c:800 295#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1357
296#, fuzzy, c-format 296#, fuzzy, c-format
297msgid "Failed to find %saddress for `%s'.\n" 297msgid "Failed to find %saddress for `%s'.\n"
298msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 298msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
299 299
300#: src/arm/gnunet-service-arm.c:984 300#: src/arm/gnunet-service-arm.c:986
301#, fuzzy, c-format 301#, fuzzy, c-format
302msgid "Failed to start service `%s'\n" 302msgid "Failed to start service `%s'\n"
303msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" 303msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
304 304
305#: src/arm/gnunet-service-arm.c:995 305#: src/arm/gnunet-service-arm.c:997
306#, fuzzy, c-format 306#, fuzzy, c-format
307msgid "Starting service `%s'\n" 307msgid "Starting service `%s'\n"
308msgstr "Collection `%s' begonnen.\n" 308msgstr "Collection `%s' begonnen.\n"
309 309
310#: src/arm/gnunet-service-arm.c:1107 310#: src/arm/gnunet-service-arm.c:1109
311#, fuzzy, c-format 311#, fuzzy, c-format
312msgid "Unable to create socket for service `%s': %s\n" 312msgid "Unable to create socket for service `%s': %s\n"
313msgstr "Fehler beim Anlegen des Benutzerkontos:" 313msgstr "Fehler beim Anlegen des Benutzerkontos:"
314 314
315#: src/arm/gnunet-service-arm.c:1142 315#: src/arm/gnunet-service-arm.c:1144
316#, c-format 316#, c-format
317msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n" 317msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n"
318msgstr "" 318msgstr ""
319 319
320#: src/arm/gnunet-service-arm.c:1185 320#: src/arm/gnunet-service-arm.c:1187
321#, c-format 321#, c-format
322msgid "ARM now monitors connections to service `%s' at `%s'\n" 322msgid "ARM now monitors connections to service `%s' at `%s'\n"
323msgstr "" 323msgstr ""
324 324
325#: src/arm/gnunet-service-arm.c:1364 325#: src/arm/gnunet-service-arm.c:1346
326#, fuzzy, c-format 326#, fuzzy, c-format
327msgid "Preparing to stop `%s'\n" 327msgid "Preparing to stop `%s'\n"
328msgstr "Collection `%s' begonnen.\n" 328msgstr "Collection `%s' begonnen.\n"
329 329
330#: src/arm/gnunet-service-arm.c:1669 330#: src/arm/gnunet-service-arm.c:1651
331#, c-format 331#, c-format
332msgid "Restarting service `%s'.\n" 332msgid "Restarting service `%s'.\n"
333msgstr "Dienst »%s« wird neu gestartet.\n" 333msgstr "Dienst »%s« wird neu gestartet.\n"
334 334
335#: src/arm/gnunet-service-arm.c:1830 335#: src/arm/gnunet-service-arm.c:1812
336msgid "exit" 336msgid "exit"
337msgstr "" 337msgstr ""
338 338
339#: src/arm/gnunet-service-arm.c:1835 339#: src/arm/gnunet-service-arm.c:1817
340msgid "signal" 340msgid "signal"
341msgstr "Signal" 341msgstr "Signal"
342 342
343#: src/arm/gnunet-service-arm.c:1840 343#: src/arm/gnunet-service-arm.c:1822
344msgid "unknown" 344msgid "unknown"
345msgstr "Unbekannt" 345msgstr "Unbekannt"
346 346
347#: src/arm/gnunet-service-arm.c:1846 347#: src/arm/gnunet-service-arm.c:1828
348#, c-format 348#, c-format
349msgid "Service `%s' took %s to terminate\n" 349msgid "Service `%s' took %s to terminate\n"
350msgstr "Dienst »%s« benötigte %s zum Beenden\n" 350msgstr "Dienst »%s« benötigte %s zum Beenden\n"
351 351
352#: src/arm/gnunet-service-arm.c:1872 352#: src/arm/gnunet-service-arm.c:1854
353#, c-format 353#, c-format
354msgid "Service `%s' terminated normally, will restart at any time\n" 354msgid "Service `%s' terminated normally, will restart at any time\n"
355msgstr "Dienst »%s« wurde normal beendet, wird jederzeit neu gestartet\n" 355msgstr "Dienst »%s« wurde normal beendet, wird jederzeit neu gestartet\n"
356 356
357#: src/arm/gnunet-service-arm.c:1888 357#: src/arm/gnunet-service-arm.c:1870
358#, c-format 358#, c-format
359msgid "Service `%s' terminated with status %s/%d, will restart in %s\n" 359msgid "Service `%s' terminated with status %s/%d, will restart in %s\n"
360msgstr "" 360msgstr ""
361 361
362#: src/arm/mockup-service.c:40 362#: src/arm/mockup-service.c:42
363msgid "Initiating shutdown as requested by client.\n" 363msgid "Initiating shutdown as requested by client.\n"
364msgstr "" 364msgstr ""
365 365
366#: src/ats/gnunet-ats-solver-eval.c:2779 src/ats/gnunet-ats-solver-eval.c:2820 366#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
367#, c-format 367#, c-format
368msgid "" 368msgid ""
369"Could not load quota for network `%s': `%s', assigning default bandwidth " 369"Could not load quota for network `%s': `%s', assigning default bandwidth "
370"%llu\n" 370"%llu\n"
371msgstr "" 371msgstr ""
372 372
373#: src/ats/gnunet-ats-solver-eval.c:2797 373#: src/ats/gnunet-ats-solver-eval.c:2799
374#, c-format 374#, c-format
375msgid "" 375msgid ""
376"No outbound quota configured for network `%s', assigning default bandwidth " 376"No outbound quota configured for network `%s', assigning default bandwidth "
377"%llu\n" 377"%llu\n"
378msgstr "" 378msgstr ""
379 379
380#: src/ats/gnunet-ats-solver-eval.c:2838 380#: src/ats/gnunet-ats-solver-eval.c:2840
381#, c-format 381#, c-format
382msgid "" 382msgid ""
383"No outbound quota configure for network `%s', assigning default bandwidth " 383"No outbound quota configure for network `%s', assigning default bandwidth "
384"%llu\n" 384"%llu\n"
385msgstr "" 385msgstr ""
386 386
387#: src/ats/gnunet-ats-solver-eval.c:3292 src/ats-tests/gnunet-solver-eval.c:937 387#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
388msgid "solver to use" 388msgid "solver to use"
389msgstr "" 389msgstr ""
390 390
391#: src/ats/gnunet-ats-solver-eval.c:3297 src/ats-tests/gnunet-solver-eval.c:943 391#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
392#: src/ats-tests/gnunet-solver-eval.c:948 392#: src/ats-tests/gnunet-solver-eval.c:950
393msgid "experiment to use" 393msgid "experiment to use"
394msgstr "" 394msgstr ""
395 395
396#: src/ats/gnunet-ats-solver-eval.c:3304 396#: src/ats/gnunet-ats-solver-eval.c:3306
397msgid "print logging" 397msgid "print logging"
398msgstr "" 398msgstr ""
399 399
400#: src/ats/gnunet-ats-solver-eval.c:3309 400#: src/ats/gnunet-ats-solver-eval.c:3311
401msgid "save logging to disk" 401msgid "save logging to disk"
402msgstr "" 402msgstr ""
403 403
404#: src/ats/gnunet-ats-solver-eval.c:3314 404#: src/ats/gnunet-ats-solver-eval.c:3316
405msgid "disable normalization" 405msgid "disable normalization"
406msgstr "" 406msgstr ""
407 407
408#: src/ats/gnunet-service-ats_plugins.c:302 408#: src/ats/gnunet-service-ats-new.c:756
409#: src/ats/gnunet-service-ats_plugins.c:451
410#, fuzzy, c-format
411msgid "Failed to initialize solver `%s'!\n"
412msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
413
414#: src/ats/gnunet-service-ats_plugins.c:304
409#, c-format 415#, c-format
410msgid "" 416msgid ""
411"Could not load %s quota for network `%s': `%s', assigning default bandwidth " 417"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
412"%llu\n" 418"%llu\n"
413msgstr "" 419msgstr ""
414 420
415#: src/ats/gnunet-service-ats_plugins.c:312 421#: src/ats/gnunet-service-ats_plugins.c:314
416#, c-format 422#, c-format
417msgid "%s quota configured for network `%s' is %llu\n" 423msgid "%s quota configured for network `%s' is %llu\n"
418msgstr "" 424msgstr ""
419 425
420#: src/ats/gnunet-service-ats_plugins.c:357 426#: src/ats/gnunet-service-ats_plugins.c:359
421#, c-format 427#, c-format
422msgid "" 428msgid ""
423"No %s-quota configured for network `%s', assigning default bandwidth %llu\n" 429"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
424msgstr "" 430msgstr ""
425 431
426#: src/ats/gnunet-service-ats_plugins.c:449 432#: src/ats/plugin_ats2_common.c:90
427#, fuzzy, c-format 433#, c-format
428msgid "Failed to initialize solver `%s'!\n" 434msgid ""
429msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n" 435"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
436"%llu\n"
437msgstr ""
430 438
431#: src/ats/plugin_ats_mlp.c:1272 439#: src/ats/plugin_ats_mlp.c:1274
432msgid "Problem size too large, cannot allocate memory!\n" 440msgid "Problem size too large, cannot allocate memory!\n"
433msgstr "" 441msgstr ""
434 442
435#: src/ats/plugin_ats_mlp.c:1868 443#: src/ats/plugin_ats_mlp.c:1870
436#, fuzzy, c-format 444#, fuzzy, c-format
437msgid "Adding address for peer `%s' multiple times\n" 445msgid "Adding address for peer `%s' multiple times\n"
438msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n" 446msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
439 447
440#: src/ats/plugin_ats_mlp.c:1912 448#: src/ats/plugin_ats_mlp.c:1914
441#, fuzzy, c-format 449#, fuzzy, c-format
442msgid "Updating address property for peer `%s' %p not added before\n" 450msgid "Updating address property for peer `%s' %p not added before\n"
443msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n" 451msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
444 452
445#: src/ats/plugin_ats_mlp.c:2474 453#: src/ats/plugin_ats_mlp.c:2476
446msgid "" 454msgid ""
447"MLP solver is not optimizing for anything, changing to feasibility check\n" 455"MLP solver is not optimizing for anything, changing to feasibility check\n"
448msgstr "" 456msgstr ""
449 457
450#: src/ats/plugin_ats_mlp.c:2514 src/ats/plugin_ats_mlp.c:2531 458#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
451#: src/ats/plugin_ats_mlp.c:2563 src/ats/plugin_ats_mlp.c:2581 459#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
452#: src/ats/plugin_ats_mlp.c:2600 src/ats/plugin_ats_proportional.c:1139 460#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
453#: src/ats/plugin_ats_ril.c:2610 src/ats/plugin_ats_ril.c:2627 461#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
454#: src/ats/plugin_ats_ril.c:2644 src/ats/plugin_ats_ril.c:2661 462#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
455#: src/ats/plugin_ats_ril.c:2678 src/ats/plugin_ats_ril.c:2695 463#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
456#: src/ats/plugin_ats_ril.c:2712 src/ats/plugin_ats_ril.c:2729 464#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
457#, fuzzy, c-format 465#, fuzzy, c-format
458msgid "Invalid %s configuration %f \n" 466msgid "Invalid %s configuration %f \n"
459msgstr "Konfiguration konnte nicht aus %s geladen werden\n" 467msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
460 468
461#: src/ats/plugin_ats_mlp.c:2669 469#: src/ats/plugin_ats_mlp.c:2671
462#, c-format 470#, c-format
463msgid "" 471msgid ""
464"Adjusting inconsistent outbound quota configuration for network `%s', is " 472"Adjusting inconsistent outbound quota configuration for network `%s', is "
465"%llu must be at least %llu\n" 473"%llu must be at least %llu\n"
466msgstr "" 474msgstr ""
467 475
468#: src/ats/plugin_ats_mlp.c:2678 476#: src/ats/plugin_ats_mlp.c:2680
469#, c-format 477#, c-format
470msgid "" 478msgid ""
471"Adjusting inconsistent inbound quota configuration for network `%s', is %llu " 479"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
472"must be at least %llu\n" 480"must be at least %llu\n"
473msgstr "" 481msgstr ""
474 482
475#: src/ats/plugin_ats_mlp.c:2688 483#: src/ats/plugin_ats_mlp.c:2690
476#, c-format 484#, c-format
477msgid "" 485msgid ""
478"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" 486"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
479msgstr "" 487msgstr ""
480 488
481#: src/ats/plugin_ats_mlp.c:2697 489#: src/ats/plugin_ats_mlp.c:2699
482#, c-format 490#, c-format
483msgid "" 491msgid ""
484"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" 492"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
485msgstr "" 493msgstr ""
486 494
487#: src/ats/plugin_ats_proportional.c:1162 495#: src/ats/plugin_ats_proportional.c:1164
488#, fuzzy, c-format 496#, fuzzy, c-format
489msgid "Invalid %s configuration %f\n" 497msgid "Invalid %s configuration %f\n"
490msgstr " gconfig\tGTK Konfiguration\n" 498msgstr " gconfig\tGTK Konfiguration\n"
491 499
492#: src/ats-tests/ats-testing.c:420 500#: src/ats-tests/ats-testing.c:422
493#, c-format 501#, c-format
494msgid "Connected master [%u] with slave [%u]\n" 502msgid "Connected master [%u] with slave [%u]\n"
495msgstr "" 503msgstr ""
496 504
497#: src/ats-tests/ats-testing.c:427 505#: src/ats-tests/ats-testing.c:429
498#, fuzzy, c-format 506#, fuzzy, c-format
499msgid "Failed to connect master peer [%u] with slave [%u]\n" 507msgid "Failed to connect master peer [%u] with slave [%u]\n"
500msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 508msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
501 509
502#: src/ats-tests/ats-testing-log.c:835 510#: src/ats-tests/ats-testing-log.c:837
503msgid "Stop logging\n" 511msgid "Stop logging\n"
504msgstr "Protokollierung stoppen\n" 512msgstr "Protokollierung stoppen\n"
505 513
506#: src/ats-tests/ats-testing-log.c:890 514#: src/ats-tests/ats-testing-log.c:892
507#, fuzzy, c-format 515#, fuzzy, c-format
508msgid "Start logging `%s'\n" 516msgid "Start logging `%s'\n"
509msgstr "Collection `%s' begonnen.\n" 517msgstr "Collection `%s' begonnen.\n"
510 518
511#: src/ats-tests/gnunet-ats-sim.c:88 519#: src/ats-tests/gnunet-ats-sim.c:90
512#, c-format 520#, c-format
513msgid "" 521msgid ""
514"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. " 522"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. "
515"= %u KiB/s\n" 523"= %u KiB/s\n"
516msgstr "" 524msgstr ""
517 525
518#: src/ats-tool/gnunet-ats.c:305 526#: src/ats-tool/gnunet-ats.c:307
519#, c-format 527#, c-format
520msgid "%u address resolutions had a timeout\n" 528msgid "%u address resolutions had a timeout\n"
521msgstr "" 529msgstr ""
522 530
523#: src/ats-tool/gnunet-ats.c:309 531#: src/ats-tool/gnunet-ats.c:311
524#, c-format 532#, c-format
525msgid "ATS returned stat_results for %u addresses\n" 533msgid "ATS returned stat_results for %u addresses\n"
526msgstr "" 534msgstr ""
527 535
528#: src/ats-tool/gnunet-ats.c:393 536#: src/ats-tool/gnunet-ats.c:395
529#, c-format 537#, c-format
530msgid "" 538msgid ""
531"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/" 539"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/"
532"s, %s\n" 540"s, %s\n"
533msgstr "" 541msgstr ""
534 542
535#: src/ats-tool/gnunet-ats.c:400 543#: src/ats-tool/gnunet-ats.c:402
536msgid "active " 544msgid "active "
537msgstr "" 545msgstr ""
538 546
539#: src/ats-tool/gnunet-ats.c:400 547#: src/ats-tool/gnunet-ats.c:402
540msgid "inactive " 548msgid "inactive "
541msgstr "" 549msgstr ""
542 550
543#: src/ats-tool/gnunet-ats.c:510 551#: src/ats-tool/gnunet-ats.c:512
544#, fuzzy, c-format 552#, fuzzy, c-format
545msgid "Removed address of peer `%s' with plugin `%s'\n" 553msgid "Removed address of peer `%s' with plugin `%s'\n"
546msgstr "Verfügbare(r) Transport(e): %s\n" 554msgstr "Verfügbare(r) Transport(e): %s\n"
547 555
548#: src/ats-tool/gnunet-ats.c:703 556#: src/ats-tool/gnunet-ats.c:705
549#, c-format 557#, c-format
550msgid "Quota for network `%11s' (in/out): %10s / %10s\n" 558msgid "Quota for network `%11s' (in/out): %10s / %10s\n"
551msgstr "" 559msgstr ""
552 560
553#: src/ats-tool/gnunet-ats.c:746 src/ats-tool/gnunet-ats.c:759 561#: src/ats-tool/gnunet-ats.c:748 src/ats-tool/gnunet-ats.c:761
554#, fuzzy, c-format 562#, fuzzy, c-format
555msgid "Failed to parse peer identity `%s'\n" 563msgid "Failed to parse peer identity `%s'\n"
556msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n" 564msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
557 565
558#: src/ats-tool/gnunet-ats.c:771 566#: src/ats-tool/gnunet-ats.c:773
559#, c-format 567#, c-format
560msgid "Please select one operation: %s or %s or %s or %s or %s\n" 568msgid "Please select one operation: %s or %s or %s or %s or %s\n"
561msgstr "" 569msgstr ""
562 570
563#: src/ats-tool/gnunet-ats.c:793 src/ats-tool/gnunet-ats.c:818 571#: src/ats-tool/gnunet-ats.c:795 src/ats-tool/gnunet-ats.c:820
564#: src/ats-tool/gnunet-ats.c:849 src/ats-tool/gnunet-ats.c:894 572#: src/ats-tool/gnunet-ats.c:851 src/ats-tool/gnunet-ats.c:896
565#, fuzzy 573#, fuzzy
566msgid "Cannot connect to ATS service, exiting...\n" 574msgid "Cannot connect to ATS service, exiting...\n"
567msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n" 575msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
568 576
569#: src/ats-tool/gnunet-ats.c:804 src/ats-tool/gnunet-ats.c:830 577#: src/ats-tool/gnunet-ats.c:806 src/ats-tool/gnunet-ats.c:832
570msgid "Cannot issue request to ATS service, exiting...\n" 578msgid "Cannot issue request to ATS service, exiting...\n"
571msgstr "" 579msgstr ""
572 580
573#: src/ats-tool/gnunet-ats.c:860 581#: src/ats-tool/gnunet-ats.c:862
574msgid "No preference type given!\n" 582msgid "No preference type given!\n"
575msgstr "" 583msgstr ""
576 584
577#: src/ats-tool/gnunet-ats.c:867 585#: src/ats-tool/gnunet-ats.c:869
578msgid "No peer given!\n" 586msgid "No peer given!\n"
579msgstr "Kein Knoten angegeben!\n" 587msgstr "Kein Knoten angegeben!\n"
580 588
581#: src/ats-tool/gnunet-ats.c:885 589#: src/ats-tool/gnunet-ats.c:887
582msgid "Valid type required\n" 590msgid "Valid type required\n"
583msgstr "Gültiger Typ ist erforderlich\n" 591msgstr "Gültiger Typ ist erforderlich\n"
584 592
585#: src/ats-tool/gnunet-ats.c:948 593#: src/ats-tool/gnunet-ats.c:950
586msgid "get list of active addresses currently used" 594msgid "get list of active addresses currently used"
587msgstr "Liste aller derzeit genutzten aktiven Adressen holen" 595msgstr "Liste aller derzeit genutzten aktiven Adressen holen"
588 596
589#: src/ats-tool/gnunet-ats.c:952 597#: src/ats-tool/gnunet-ats.c:954
590msgid "get list of all active addresses" 598msgid "get list of all active addresses"
591msgstr "Liste aller aktiven Adressen holen" 599msgstr "Liste aller aktiven Adressen holen"
592 600
593#: src/ats-tool/gnunet-ats.c:958 601#: src/ats-tool/gnunet-ats.c:960
594#, fuzzy 602#, fuzzy
595msgid "connect to PEER" 603msgid "connect to PEER"
596msgstr "Mit einem Knoten verbinden" 604msgstr "Mit einem Knoten verbinden"
597 605
598#: src/ats-tool/gnunet-ats.c:962 606#: src/ats-tool/gnunet-ats.c:964
599msgid "do not resolve IP addresses to hostnames" 607msgid "do not resolve IP addresses to hostnames"
600msgstr "IP-Adressen nicht zu Rechnernamen auflösen" 608msgstr "IP-Adressen nicht zu Rechnernamen auflösen"
601 609
602#: src/ats-tool/gnunet-ats.c:967 610#: src/ats-tool/gnunet-ats.c:969
603msgid "monitor mode" 611msgid "monitor mode"
604msgstr "Überwachungsmodus" 612msgstr "Überwachungsmodus"
605 613
606#: src/ats-tool/gnunet-ats.c:972 614#: src/ats-tool/gnunet-ats.c:974
607msgid "set preference for the given peer" 615msgid "set preference for the given peer"
608msgstr "" 616msgstr ""
609 617
610#: src/ats-tool/gnunet-ats.c:977 618#: src/ats-tool/gnunet-ats.c:979
611msgid "print all configured quotas" 619msgid "print all configured quotas"
612msgstr "" 620msgstr ""
613 621
614#: src/ats-tool/gnunet-ats.c:982 622#: src/ats-tool/gnunet-ats.c:984
615msgid "peer id" 623msgid "peer id"
616msgstr "Knoten-ID" 624msgstr "Knoten-ID"
617 625
618#: src/ats-tool/gnunet-ats.c:988 626#: src/ats-tool/gnunet-ats.c:990
619msgid "preference type to set: latency | bandwidth" 627msgid "preference type to set: latency | bandwidth"
620msgstr "" 628msgstr ""
621 629
622#: src/ats-tool/gnunet-ats.c:994 630#: src/ats-tool/gnunet-ats.c:996
623msgid "preference value" 631msgid "preference value"
624msgstr "" 632msgstr ""
625 633
626#: src/ats-tool/gnunet-ats.c:999 634#: src/ats-tool/gnunet-ats.c:1001
627msgid "verbose output (include ATS address properties)" 635msgid "verbose output (include ATS address properties)"
628msgstr "" 636msgstr ""
629 637
630#: src/ats-tool/gnunet-ats.c:1009 638#: src/ats-tool/gnunet-ats.c:1011
631#, fuzzy 639#, fuzzy
632msgid "Print information about ATS state" 640msgid "Print information about ATS state"
633msgstr "Informationen über andere GNUnet Knoten ausgeben." 641msgstr "Informationen über andere GNUnet Knoten ausgeben."
634 642
635#: src/auction/gnunet-auction-create.c:161 643#: src/auction/gnunet-auction-create.c:163
636msgid "description of the item to be sold" 644msgid "description of the item to be sold"
637msgstr "" 645msgstr ""
638 646
639#: src/auction/gnunet-auction-create.c:167 647#: src/auction/gnunet-auction-create.c:169
640msgid "mapping of possible prices" 648msgid "mapping of possible prices"
641msgstr "" 649msgstr ""
642 650
643#: src/auction/gnunet-auction-create.c:173 651#: src/auction/gnunet-auction-create.c:175
644msgid "max duration per round" 652msgid "max duration per round"
645msgstr "" 653msgstr ""
646 654
647#: src/auction/gnunet-auction-create.c:179 655#: src/auction/gnunet-auction-create.c:181
648msgid "duration until auction starts" 656msgid "duration until auction starts"
649msgstr "" 657msgstr ""
650 658
651#: src/auction/gnunet-auction-create.c:184 659#: src/auction/gnunet-auction-create.c:186
652msgid "" 660msgid ""
653"number of items to sell\n" 661"number of items to sell\n"
654"0 for first price auction\n" 662"0 for first price auction\n"
655">0 for vickrey/M+1st price auction" 663">0 for vickrey/M+1st price auction"
656msgstr "" 664msgstr ""
657 665
658#: src/auction/gnunet-auction-create.c:191 666#: src/auction/gnunet-auction-create.c:193
659msgid "public auction outcome" 667msgid "public auction outcome"
660msgstr "" 668msgstr ""
661 669
662#: src/auction/gnunet-auction-create.c:196 670#: src/auction/gnunet-auction-create.c:198
663msgid "keep running in foreground until auction completes" 671msgid "keep running in foreground until auction completes"
664msgstr "" 672msgstr ""
665 673
666#: src/auction/gnunet-auction-create.c:207 674#: src/auction/gnunet-auction-create.c:209
667msgid "create a new auction and start listening for bidders" 675msgid "create a new auction and start listening for bidders"
668msgstr "" 676msgstr ""
669 677
670#: src/auction/gnunet-auction-info.c:74 src/auction/gnunet-auction-join.c:74 678#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
671#: src/conversation/gnunet-conversation-test.c:252 679#: src/conversation/gnunet-conversation-test.c:254
672#: src/revocation/gnunet-revocation.c:560 src/template/gnunet-template.c:74 680#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
673msgid "help text" 681msgid "help text"
674msgstr "Hilfetext" 682msgstr "Hilfetext"
675 683
676#: src/cadet/gnunet-cadet.c:705 684#: src/cadet/gnunet-cadet.c:631
677#, fuzzy, c-format 685#, fuzzy, c-format
678msgid "Invalid peer ID `%s'\n" 686msgid "Invalid peer ID `%s'\n"
679msgstr "Ungültige Antwort auf `%s'.\n" 687msgstr "Ungültige Antwort auf `%s'.\n"
680 688
681#: src/cadet/gnunet-cadet.c:744 689#: src/cadet/gnunet-cadet.c:718
682#, fuzzy, c-format
683msgid "Invalid tunnel owner `%s'\n"
684msgstr "Ungültiger Parameter: `%s'\n"
685
686#: src/cadet/gnunet-cadet.c:817
687msgid "Extra arguments are not applicable in combination with this option.\n" 690msgid "Extra arguments are not applicable in combination with this option.\n"
688msgstr "" 691msgstr ""
689 692
690#: src/cadet/gnunet-cadet.c:908 693#: src/cadet/gnunet-cadet.c:795
691#, fuzzy, c-format 694#, fuzzy, c-format
692msgid "Invalid target `%s'\n" 695msgid "Invalid target `%s'\n"
693msgstr "Ungültiger Parameter: `%s'\n" 696msgstr "Ungültiger Parameter: `%s'\n"
694 697
695#: src/cadet/gnunet-cadet.c:945 698#: src/cadet/gnunet-cadet.c:832
696#, fuzzy 699#, fuzzy
697msgid "No action requested\n" 700msgid "No action requested\n"
698msgstr " Verbindung fehlgeschlagen\n" 701msgstr " Verbindung fehlgeschlagen\n"
699 702
700#: src/cadet/gnunet-cadet.c:970 703#: src/cadet/gnunet-cadet.c:857
701#, fuzzy 704#, fuzzy
702msgid "Provide information about a particular connection" 705msgid "Provide information about a particular connection"
703msgstr "Informationen über andere GNUnet Knoten ausgeben." 706msgstr "Informationen über andere GNUnet Knoten ausgeben."
704 707
705#: src/cadet/gnunet-cadet.c:975 708#: src/cadet/gnunet-cadet.c:861
706msgid "Activate echo mode" 709msgid "Activate echo mode"
707msgstr "" 710msgstr ""
708 711
709#: src/cadet/gnunet-cadet.c:980 712#: src/cadet/gnunet-cadet.c:866
710msgid "Dump debug information to STDERR"
711msgstr ""
712
713#: src/cadet/gnunet-cadet.c:986
714msgid "Listen for connections using a shared secret among sender and recipient" 713msgid "Listen for connections using a shared secret among sender and recipient"
715msgstr "" 714msgstr ""
716 715
717#: src/cadet/gnunet-cadet.c:993 716#: src/cadet/gnunet-cadet.c:871
718#, fuzzy 717#, fuzzy
719msgid "Provide information about a patricular peer" 718msgid "Provide information about a patricular peer"
720msgstr "Informationen über andere GNUnet Knoten ausgeben." 719msgstr "Informationen über andere GNUnet Knoten ausgeben."
721 720
722#: src/cadet/gnunet-cadet.c:999 721#: src/cadet/gnunet-cadet.c:875
723#, fuzzy 722#, fuzzy
724msgid "Provide information about all peers" 723msgid "Provide information about all peers"
725msgstr "Informationen über andere GNUnet Knoten ausgeben." 724msgstr "Informationen über andere GNUnet Knoten ausgeben."
726 725
727#: src/cadet/gnunet-cadet.c:1005 726#: src/cadet/gnunet-cadet.c:879
728#, fuzzy
729msgid "Provide information about a particular tunnel"
730msgstr "Informationen über andere GNUnet Knoten ausgeben."
731
732#: src/cadet/gnunet-cadet.c:1011
733#, fuzzy 727#, fuzzy
734msgid "Provide information about all tunnels" 728msgid "Provide information about all tunnels"
735msgstr "Informationen über andere GNUnet Knoten ausgeben." 729msgstr "Informationen über andere GNUnet Knoten ausgeben."
736 730
737#: src/consensus/gnunet-consensus-profiler.c:521 731#: src/consensus/gnunet-consensus-profiler.c:523
738#: src/secretsharing/gnunet-secretsharing-profiler.c:608 732#: src/secretsharing/gnunet-secretsharing-profiler.c:610
739#, fuzzy 733#, fuzzy
740msgid "number of peers in consensus" 734msgid "number of peers in consensus"
741msgstr "Anzahl an Durchläufen" 735msgstr "Anzahl an Durchläufen"
742 736
743#: src/consensus/gnunet-consensus-profiler.c:527 737#: src/consensus/gnunet-consensus-profiler.c:529
744msgid "" 738msgid ""
745"how many peers (random selection without replacement) receive one value?" 739"how many peers (random selection without replacement) receive one value?"
746msgstr "" 740msgstr ""
747 741
748#: src/consensus/gnunet-consensus-profiler.c:533 742#: src/consensus/gnunet-consensus-profiler.c:535
749#: src/set/gnunet-set-profiler.c:431 src/set/gnunet-set-profiler.c:437 743#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
750#: src/set/gnunet-set-profiler.c:460 744#: src/set/gnunet-set-profiler.c:462
751msgid "number of values" 745msgid "number of values"
752msgstr "Anzahl der Werte" 746msgstr "Anzahl der Werte"
753 747
754#: src/consensus/gnunet-consensus-profiler.c:539 748#: src/consensus/gnunet-consensus-profiler.c:541
755msgid "consensus timeout" 749msgid "consensus timeout"
756msgstr "" 750msgstr ""
757 751
758#: src/consensus/gnunet-consensus-profiler.c:546 752#: src/consensus/gnunet-consensus-profiler.c:548
759msgid "delay until consensus starts" 753msgid "delay until consensus starts"
760msgstr "" 754msgstr ""
761 755
762#: src/consensus/gnunet-consensus-profiler.c:552 756#: src/consensus/gnunet-consensus-profiler.c:554
763#: src/set/gnunet-set-profiler.c:478 757#: src/set/gnunet-set-profiler.c:480
764msgid "write statistics to file" 758msgid "write statistics to file"
765msgstr "" 759msgstr ""
766 760
767#: src/consensus/gnunet-consensus-profiler.c:557 761#: src/consensus/gnunet-consensus-profiler.c:559
768msgid "distribute elements to a static subset of good peers" 762msgid "distribute elements to a static subset of good peers"
769msgstr "" 763msgstr ""
770 764
771#: src/consensus/gnunet-consensus-profiler.c:562 765#: src/consensus/gnunet-consensus-profiler.c:564
772msgid "be more verbose (print received values)" 766msgid "be more verbose (print received values)"
773msgstr "Ausführlicherer Modus (empfangene Werte ausgeben)" 767msgstr "Ausführlicherer Modus (empfangene Werte ausgeben)"
774 768
775#: src/conversation/conversation_api.c:513 769#: src/conversation/conversation_api.c:515
776#: src/conversation/conversation_api_call.c:492 770#: src/conversation/conversation_api_call.c:494
777msgid "Connection to conversation service lost, trying to reconnect\n" 771msgid "Connection to conversation service lost, trying to reconnect\n"
778msgstr "" 772msgstr ""
779 773
780#: src/conversation/gnunet-conversation.c:275 774#: src/conversation/gnunet-conversation.c:277
781#, c-format 775#, c-format
782msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" 776msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
783msgstr "" 777msgstr ""
784 778
785#: src/conversation/gnunet-conversation.c:300 779#: src/conversation/gnunet-conversation.c:302
786#, fuzzy, c-format 780#, fuzzy, c-format
787msgid "Call from `%s' terminated\n" 781msgid "Call from `%s' terminated\n"
788msgstr "Aufruf von `%s' gibt %d zurück.\n" 782msgstr "Aufruf von `%s' gibt %d zurück.\n"
789 783
790#: src/conversation/gnunet-conversation.c:335 784#: src/conversation/gnunet-conversation.c:337
791#, c-format 785#, c-format
792msgid "Call from `%s' suspended by other user\n" 786msgid "Call from `%s' suspended by other user\n"
793msgstr "" 787msgstr ""
794 788
795#: src/conversation/gnunet-conversation.c:340 789#: src/conversation/gnunet-conversation.c:342
796#, c-format 790#, c-format
797msgid "Call from `%s' resumed by other user\n" 791msgid "Call from `%s' resumed by other user\n"
798msgstr "" 792msgstr ""
799 793
800#: src/conversation/gnunet-conversation.c:358 794#: src/conversation/gnunet-conversation.c:360
801#, c-format 795#, c-format
802msgid "Ego `%s' no longer available, phone is now down.\n" 796msgid "Ego `%s' no longer available, phone is now down.\n"
803msgstr "" 797msgstr ""
804 798
805#: src/conversation/gnunet-conversation.c:373 799#: src/conversation/gnunet-conversation.c:375
806msgid "Failed to setup phone (internal error)\n" 800msgid "Failed to setup phone (internal error)\n"
807msgstr "Telefon konnte nicht eingerichtet werden (interner Fehler)\n" 801msgstr "Telefon konnte nicht eingerichtet werden (interner Fehler)\n"
808 802
809#: src/conversation/gnunet-conversation.c:385 803#: src/conversation/gnunet-conversation.c:387
810#, c-format 804#, c-format
811msgid "Phone active at `%s'. Type `/help' for a list of available commands\n" 805msgid "Phone active at `%s'. Type `/help' for a list of available commands\n"
812msgstr "" 806msgstr ""
813 807
814#: src/conversation/gnunet-conversation.c:409 808#: src/conversation/gnunet-conversation.c:411
815#, c-format 809#, c-format
816msgid "Resolved address of `%s'. Now ringing other party.\n" 810msgid "Resolved address of `%s'. Now ringing other party.\n"
817msgstr "" 811msgstr ""
818 812
819#: src/conversation/gnunet-conversation.c:416 813#: src/conversation/gnunet-conversation.c:418
820#, fuzzy, c-format 814#, fuzzy, c-format
821msgid "Connection established to `%s'\n" 815msgid "Connection established to `%s'\n"
822msgstr " Verbindung fehlgeschlagen\n" 816msgstr " Verbindung fehlgeschlagen\n"
823 817
824#: src/conversation/gnunet-conversation.c:423 818#: src/conversation/gnunet-conversation.c:425
825#, c-format 819#, c-format
826msgid "Failed to resolve `%s'\n" 820msgid "Failed to resolve `%s'\n"
827msgstr "»%s« konnte nicht aufgelöst werden\n" 821msgstr "»%s« konnte nicht aufgelöst werden\n"
828 822
829#: src/conversation/gnunet-conversation.c:431 823#: src/conversation/gnunet-conversation.c:433
830#, fuzzy, c-format 824#, fuzzy, c-format
831msgid "Call to `%s' terminated\n" 825msgid "Call to `%s' terminated\n"
832msgstr "Aufruf von `%s' gibt %d zurück.\n" 826msgstr "Aufruf von `%s' gibt %d zurück.\n"
833 827
834#: src/conversation/gnunet-conversation.c:440 828#: src/conversation/gnunet-conversation.c:442
835#, c-format 829#, c-format
836msgid "Connection to `%s' suspended (by other user)\n" 830msgid "Connection to `%s' suspended (by other user)\n"
837msgstr "" 831msgstr ""
838 832
839#: src/conversation/gnunet-conversation.c:446 833#: src/conversation/gnunet-conversation.c:448
840#, c-format 834#, c-format
841msgid "Connection to `%s' resumed (by other user)\n" 835msgid "Connection to `%s' resumed (by other user)\n"
842msgstr "" 836msgstr ""
843 837
844#: src/conversation/gnunet-conversation.c:451 838#: src/conversation/gnunet-conversation.c:453
845msgid "Error with the call, restarting it\n" 839msgid "Error with the call, restarting it\n"
846msgstr "" 840msgstr ""
847 841
848#: src/conversation/gnunet-conversation.c:522 842#: src/conversation/gnunet-conversation.c:524
849#, c-format 843#, c-format
850msgid "Unknown command `%s'\n" 844msgid "Unknown command `%s'\n"
851msgstr "Unbekannter Befehl »%s«\n" 845msgstr "Unbekannter Befehl »%s«\n"
852 846
853#: src/conversation/gnunet-conversation.c:538 847#: src/conversation/gnunet-conversation.c:540
854#: src/conversation/gnunet-conversation.c:552 848#: src/conversation/gnunet-conversation.c:554
855#, fuzzy, c-format 849#, fuzzy, c-format
856msgid "Ego `%s' not available\n" 850msgid "Ego `%s' not available\n"
857msgstr "`%s' ist nicht verfügbar." 851msgstr "`%s' ist nicht verfügbar."
858 852
859#: src/conversation/gnunet-conversation.c:545 853#: src/conversation/gnunet-conversation.c:547
860#: src/conversation/gnunet-conversation.c:601 854#: src/conversation/gnunet-conversation.c:603
861msgid "You are calling someone else already, hang up first!\n" 855msgid "You are calling someone else already, hang up first!\n"
862msgstr "" 856msgstr ""
863 857
864#: src/conversation/gnunet-conversation.c:560 858#: src/conversation/gnunet-conversation.c:562
865#: src/conversation/gnunet-conversation.c:614 859#: src/conversation/gnunet-conversation.c:616
866#, c-format 860#, c-format
867msgid "You are answering call from `%s', hang up or suspend that call first!\n" 861msgid "You are answering call from `%s', hang up or suspend that call first!\n"
868msgstr "" 862msgstr ""
869 863
870#: src/conversation/gnunet-conversation.c:570 864#: src/conversation/gnunet-conversation.c:572
871msgid "Call recipient missing.\n" 865msgid "Call recipient missing.\n"
872msgstr "Anzurufender Teilnehmer fehlt.\n" 866msgstr "Anzurufender Teilnehmer fehlt.\n"
873 867
874#: src/conversation/gnunet-conversation.c:625 868#: src/conversation/gnunet-conversation.c:627
875msgid "There is no incoming call to accept here!\n" 869msgid "There is no incoming call to accept here!\n"
876msgstr "Es gibt keinen eingehenden Anruf, der angenommen werden könnte!\n" 870msgstr "Es gibt keinen eingehenden Anruf, der angenommen werden könnte!\n"
877 871
878#: src/conversation/gnunet-conversation.c:642 872#: src/conversation/gnunet-conversation.c:644
879#, c-format 873#, c-format
880msgid "There is no incoming call `%s' to accept right now!\n" 874msgid "There is no incoming call `%s' to accept right now!\n"
881msgstr "" 875msgstr ""
882"Es gibt keinen eingehenden Anruf »%s«, der jetzt angenommen werden könnte!\n" 876"Es gibt keinen eingehenden Anruf »%s«, der jetzt angenommen werden könnte!\n"
883 877
884#: src/conversation/gnunet-conversation.c:673 878#: src/conversation/gnunet-conversation.c:675
885msgid "We currently do not have an address.\n" 879msgid "We currently do not have an address.\n"
886msgstr "Derzeit keine Adresse vorhanden.\n" 880msgstr "Derzeit keine Adresse vorhanden.\n"
887 881
888#: src/conversation/gnunet-conversation.c:697 882#: src/conversation/gnunet-conversation.c:699
889#, c-format 883#, c-format
890msgid "We are currently trying to locate the private key for the ego `%s'.\n" 884msgid "We are currently trying to locate the private key for the ego `%s'.\n"
891msgstr "" 885msgstr ""
892 886
893#: src/conversation/gnunet-conversation.c:702 887#: src/conversation/gnunet-conversation.c:704
894#, c-format 888#, c-format
895msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n" 889msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n"
896msgstr "" 890msgstr ""
897 891
898#: src/conversation/gnunet-conversation.c:708 892#: src/conversation/gnunet-conversation.c:710
899#: src/conversation/gnunet-conversation.c:732 893#: src/conversation/gnunet-conversation.c:734
900#, c-format 894#, c-format
901msgid "You are having a conversation with `%s'.\n" 895msgid "You are having a conversation with `%s'.\n"
902msgstr "" 896msgstr ""
903 897
904#: src/conversation/gnunet-conversation.c:713 898#: src/conversation/gnunet-conversation.c:715
905msgid "" 899msgid ""
906"We had an internal error setting up our phone line. You can still make " 900"We had an internal error setting up our phone line. You can still make "
907"calls.\n" 901"calls.\n"
908msgstr "" 902msgstr ""
909 903
910#: src/conversation/gnunet-conversation.c:722 904#: src/conversation/gnunet-conversation.c:724
911#, c-format 905#, c-format
912msgid "We are trying to find the network address to call `%s'.\n" 906msgid "We are trying to find the network address to call `%s'.\n"
913msgstr "" 907msgstr ""
914 908
915#: src/conversation/gnunet-conversation.c:727 909#: src/conversation/gnunet-conversation.c:729
916#, c-format 910#, c-format
917msgid "We are calling `%s', their phone should be ringing.\n" 911msgid "We are calling `%s', their phone should be ringing.\n"
918msgstr "Wir rufen `%s' an, deren Telefon sollte jetzt klingeln.\n" 912msgstr "Wir rufen `%s' an, deren Telefon sollte jetzt klingeln.\n"
919 913
920#: src/conversation/gnunet-conversation.c:746 914#: src/conversation/gnunet-conversation.c:748
921msgid "Calls waiting:\n" 915msgid "Calls waiting:\n"
922msgstr "Anruf wartet:\n" 916msgstr "Anruf wartet:\n"
923 917
924#: src/conversation/gnunet-conversation.c:752 918#: src/conversation/gnunet-conversation.c:754
925#, c-format 919#, c-format
926msgid "#%u: `%s'\n" 920msgid "#%u: `%s'\n"
927msgstr "#%u: »%s«\n" 921msgstr "#%u: »%s«\n"
928 922
929#: src/conversation/gnunet-conversation.c:781 923#: src/conversation/gnunet-conversation.c:783
930#: src/conversation/gnunet-conversation.c:796 924#: src/conversation/gnunet-conversation.c:798
931msgid "There is no call that could be suspended right now.\n" 925msgid "There is no call that could be suspended right now.\n"
932msgstr "" 926msgstr ""
933 927
934#: src/conversation/gnunet-conversation.c:829 928#: src/conversation/gnunet-conversation.c:831
935#: src/conversation/gnunet-conversation.c:845 929#: src/conversation/gnunet-conversation.c:847
936msgid "There is no call that could be resumed right now.\n" 930msgid "There is no call that could be resumed right now.\n"
937msgstr "" 931msgstr ""
938 932
939#: src/conversation/gnunet-conversation.c:852 933#: src/conversation/gnunet-conversation.c:854
940#, c-format 934#, c-format
941msgid "Already talking with `%s', cannot resume a call right now.\n" 935msgid "Already talking with `%s', cannot resume a call right now.\n"
942msgstr "" 936msgstr ""
943 937
944#: src/conversation/gnunet-conversation.c:861 938#: src/conversation/gnunet-conversation.c:863
945msgid "There is no incoming call to resume here!\n" 939msgid "There is no incoming call to resume here!\n"
946msgstr "" 940msgstr ""
947 941
948#: src/conversation/gnunet-conversation.c:878 942#: src/conversation/gnunet-conversation.c:880
949#, c-format 943#, c-format
950msgid "There is no incoming call `%s' to resume right now!\n" 944msgid "There is no incoming call `%s' to resume right now!\n"
951msgstr "" 945msgstr ""
952 946
953#: src/conversation/gnunet-conversation.c:913 947#: src/conversation/gnunet-conversation.c:915
954msgid "There is no call that could be cancelled right now.\n" 948msgid "There is no call that could be cancelled right now.\n"
955msgstr "" 949msgstr ""
956 950
957#: src/conversation/gnunet-conversation.c:921 951#: src/conversation/gnunet-conversation.c:923
958msgid "There is no incoming call to refuse here!\n" 952msgid "There is no incoming call to refuse here!\n"
959msgstr "" 953msgstr ""
960 954
961#: src/conversation/gnunet-conversation.c:938 955#: src/conversation/gnunet-conversation.c:940
962#, c-format 956#, c-format
963msgid "There is no incoming call `%s' to refuse right now!\n" 957msgid "There is no incoming call `%s' to refuse right now!\n"
964msgstr "" 958msgstr ""
965 959
966#: src/conversation/gnunet-conversation.c:964 960#: src/conversation/gnunet-conversation.c:966
967msgid "Use `/address' to find out which address this phone should have in GNS" 961msgid "Use `/address' to find out which address this phone should have in GNS"
968msgstr "" 962msgstr ""
969 963
970#: src/conversation/gnunet-conversation.c:966 964#: src/conversation/gnunet-conversation.c:968
971msgid "Use `/call USER.gnu' to call USER" 965msgid "Use `/call USER.gnu' to call USER"
972msgstr "" 966msgstr ""
973 967
974#: src/conversation/gnunet-conversation.c:968 968#: src/conversation/gnunet-conversation.c:970
975msgid "Use `/accept #NUM' to accept incoming call #NUM" 969msgid "Use `/accept #NUM' to accept incoming call #NUM"
976msgstr "" 970msgstr ""
977 971
978#: src/conversation/gnunet-conversation.c:970 972#: src/conversation/gnunet-conversation.c:972
979msgid "Use `/suspend' to suspend the active call" 973msgid "Use `/suspend' to suspend the active call"
980msgstr "" 974msgstr ""
981 975
982#: src/conversation/gnunet-conversation.c:972 976#: src/conversation/gnunet-conversation.c:974
983msgid "" 977msgid ""
984"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming " 978"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming "
985"calls, no argument is needed to resume the current outgoing call." 979"calls, no argument is needed to resume the current outgoing call."
986msgstr "" 980msgstr ""
987 981
988#: src/conversation/gnunet-conversation.c:974 982#: src/conversation/gnunet-conversation.c:976
989msgid "Use `/cancel' to reject or terminate a call" 983msgid "Use `/cancel' to reject or terminate a call"
990msgstr "" 984msgstr ""
991 985
992#: src/conversation/gnunet-conversation.c:976 986#: src/conversation/gnunet-conversation.c:978
993msgid "Use `/status' to print status information" 987msgid "Use `/status' to print status information"
994msgstr "" 988msgstr ""
995 989
996#: src/conversation/gnunet-conversation.c:978 990#: src/conversation/gnunet-conversation.c:980
997#, fuzzy 991#, fuzzy
998msgid "Use `/quit' to terminate gnunet-conversation" 992msgid "Use `/quit' to terminate gnunet-conversation"
999msgstr "Erlaubt es Clients die Konfiguration von gnunetd abzufragen" 993msgstr "Erlaubt es Clients die Konfiguration von gnunetd abzufragen"
1000 994
1001#: src/conversation/gnunet-conversation.c:980 995#: src/conversation/gnunet-conversation.c:982
1002msgid "Use `/help command' to get help for a specific command" 996msgid "Use `/help command' to get help for a specific command"
1003msgstr "" 997msgstr ""
1004 998
1005#: src/conversation/gnunet-conversation.c:1196 999#: src/conversation/gnunet-conversation.c:1198
1006#, c-format 1000#, c-format
1007msgid "Name of our ego changed to `%s'\n" 1001msgid "Name of our ego changed to `%s'\n"
1008msgstr "" 1002msgstr ""
1009 1003
1010#: src/conversation/gnunet-conversation.c:1209 1004#: src/conversation/gnunet-conversation.c:1211
1011#, fuzzy, c-format 1005#, fuzzy, c-format
1012msgid "Our ego `%s' was deleted!\n" 1006msgid "Our ego `%s' was deleted!\n"
1013msgstr "Pseudonym `%s' wurde gelöscht.\n" 1007msgstr "Pseudonym `%s' wurde gelöscht.\n"
1014 1008
1015#: src/conversation/gnunet-conversation.c:1247 1009#: src/conversation/gnunet-conversation.c:1249
1016#, fuzzy 1010#, fuzzy
1017msgid "You must specify the NAME of an ego to use\n" 1011msgid "You must specify the NAME of an ego to use\n"
1018msgstr "Sie müssen eine Liste von Dateien zum Einfügen angeben.\n" 1012msgstr "Sie müssen eine Liste von Dateien zum Einfügen angeben.\n"
1019 1013
1020#: src/conversation/gnunet-conversation.c:1271 1014#: src/conversation/gnunet-conversation.c:1273
1021#, fuzzy 1015#, fuzzy
1022msgid "Failed to start gnunet-helper-w32-console\n" 1016msgid "Failed to start gnunet-helper-w32-console\n"
1023msgstr "Fehler beim Starten der Collection.\n" 1017msgstr "Fehler beim Starten der Collection.\n"
1024 1018
1025#: src/conversation/gnunet-conversation.c:1300 1019#: src/conversation/gnunet-conversation.c:1302
1026msgid "sets the NAME of the ego to use for the caller ID" 1020msgid "sets the NAME of the ego to use for the caller ID"
1027msgstr "" 1021msgstr ""
1028 1022
1029#: src/conversation/gnunet-conversation.c:1305 1023#: src/conversation/gnunet-conversation.c:1307
1030msgid "sets the LINE to use for the phone" 1024msgid "sets the LINE to use for the phone"
1031msgstr "" 1025msgstr ""
1032 1026
1033#: src/conversation/gnunet-conversation.c:1334 1027#: src/conversation/gnunet-conversation.c:1336
1034msgid "Enables having a conversation with other GNUnet users." 1028msgid "Enables having a conversation with other GNUnet users."
1035msgstr "" 1029msgstr ""
1036 1030
1037#: src/conversation/gnunet-conversation-test.c:118 1031#: src/conversation/gnunet-conversation-test.c:120
1038#, c-format 1032#, c-format
1039msgid "" 1033msgid ""
1040"\n" 1034"\n"
1041"End of transmission. Have a GNU day.\n" 1035"End of transmission. Have a GNU day.\n"
1042msgstr "" 1036msgstr ""
1043 1037
1044#: src/conversation/gnunet-conversation-test.c:143 1038#: src/conversation/gnunet-conversation-test.c:145
1045#, c-format 1039#, c-format
1046msgid "" 1040msgid ""
1047"\n" 1041"\n"
@@ -1049,2491 +1043,2487 @@ msgid ""
1049"settings are working..." 1043"settings are working..."
1050msgstr "" 1044msgstr ""
1051 1045
1052#: src/conversation/gnunet-conversation-test.c:214 1046#: src/conversation/gnunet-conversation-test.c:216
1053#, c-format 1047#, c-format
1054msgid "" 1048msgid ""
1055"We will now be recording you for %s. After that time, the recording will be " 1049"We will now be recording you for %s. After that time, the recording will be "
1056"played back to you..." 1050"played back to you..."
1057msgstr "" 1051msgstr ""
1058 1052
1059#: src/conversation/gnunet_gst.c:620 1053#: src/conversation/gnunet_gst.c:622
1060#: src/conversation/gnunet-helper-audio-playback-gst.c:359 1054#: src/conversation/gnunet-helper-audio-playback-gst.c:361
1061#, c-format 1055#, c-format
1062msgid "Read error from STDIN: %d %s\n" 1056msgid "Read error from STDIN: %d %s\n"
1063msgstr "Fehler beim Lesen aus STDIN: %d %s\n" 1057msgstr "Fehler beim Lesen aus STDIN: %d %s\n"
1064 1058
1065#: src/conversation/gnunet-helper-audio-playback.c:323 1059#: src/conversation/gnunet-helper-audio-playback.c:325
1066#, c-format 1060#, c-format
1067msgid "pa_stream_write() failed: %s\n" 1061msgid "pa_stream_write() failed: %s\n"
1068msgstr "pa_stream_write() fehlgeschlagen: %s\n" 1062msgstr "pa_stream_write() fehlgeschlagen: %s\n"
1069 1063
1070#: src/conversation/gnunet-helper-audio-playback.c:625 1064#: src/conversation/gnunet-helper-audio-playback.c:627
1071msgid "gnunet-helper-audio-playback - Got signal, exiting\n" 1065msgid "gnunet-helper-audio-playback - Got signal, exiting\n"
1072msgstr "gnunet-helper-audio-playback - Signal erhalten, wird abgebrochen\n" 1066msgstr "gnunet-helper-audio-playback - Signal erhalten, wird abgebrochen\n"
1073 1067
1074#: src/conversation/gnunet-helper-audio-playback.c:651 1068#: src/conversation/gnunet-helper-audio-playback.c:653
1075#: src/conversation/gnunet-helper-audio-record.c:561 1069#: src/conversation/gnunet-helper-audio-record.c:563
1076#, fuzzy 1070#, fuzzy
1077msgid "Connection established.\n" 1071msgid "Connection established.\n"
1078msgstr " Verbindung fehlgeschlagen\n" 1072msgstr " Verbindung fehlgeschlagen\n"
1079 1073
1080#: src/conversation/gnunet-helper-audio-playback.c:656 1074#: src/conversation/gnunet-helper-audio-playback.c:658
1081#: src/conversation/gnunet-helper-audio-record.c:566 1075#: src/conversation/gnunet-helper-audio-record.c:568
1082#, c-format 1076#, c-format
1083msgid "pa_stream_new() failed: %s\n" 1077msgid "pa_stream_new() failed: %s\n"
1084msgstr "pa_stream_new() fehlgeschlagen: %s\n" 1078msgstr "pa_stream_new() fehlgeschlagen: %s\n"
1085 1079
1086#: src/conversation/gnunet-helper-audio-playback.c:670 1080#: src/conversation/gnunet-helper-audio-playback.c:672
1087#, c-format 1081#, c-format
1088msgid "pa_stream_connect_playback() failed: %s\n" 1082msgid "pa_stream_connect_playback() failed: %s\n"
1089msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n" 1083msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n"
1090 1084
1091#: src/conversation/gnunet-helper-audio-playback.c:683 1085#: src/conversation/gnunet-helper-audio-playback.c:685
1092#: src/conversation/gnunet-helper-audio-record.c:592 1086#: src/conversation/gnunet-helper-audio-record.c:594
1093#, c-format 1087#, c-format
1094msgid "Connection failure: %s\n" 1088msgid "Connection failure: %s\n"
1095msgstr "Verbindung fehlgeschlagen: %s\n" 1089msgstr "Verbindung fehlgeschlagen: %s\n"
1096 1090
1097#: src/conversation/gnunet-helper-audio-playback.c:704 1091#: src/conversation/gnunet-helper-audio-playback.c:706
1098#: src/conversation/gnunet-helper-audio-record.c:615 1092#: src/conversation/gnunet-helper-audio-record.c:617
1099msgid "Wrong Spec\n" 1093msgid "Wrong Spec\n"
1100msgstr "" 1094msgstr ""
1101 1095
1102#: src/conversation/gnunet-helper-audio-playback.c:710 1096#: src/conversation/gnunet-helper-audio-playback.c:712
1103#: src/conversation/gnunet-helper-audio-record.c:621 1097#: src/conversation/gnunet-helper-audio-record.c:623
1104msgid "pa_mainloop_new() failed.\n" 1098msgid "pa_mainloop_new() failed.\n"
1105msgstr "pa_mainloop_new() fehlgeschlagen.\n" 1099msgstr "pa_mainloop_new() fehlgeschlagen.\n"
1106 1100
1107#: src/conversation/gnunet-helper-audio-playback.c:724 1101#: src/conversation/gnunet-helper-audio-playback.c:726
1108#: src/conversation/gnunet-helper-audio-record.c:636 1102#: src/conversation/gnunet-helper-audio-record.c:638
1109msgid "pa_context_new() failed.\n" 1103msgid "pa_context_new() failed.\n"
1110msgstr "pa_context_new() fehlgeschlagen.\n" 1104msgstr "pa_context_new() fehlgeschlagen.\n"
1111 1105
1112#: src/conversation/gnunet-helper-audio-playback.c:731 1106#: src/conversation/gnunet-helper-audio-playback.c:733
1113#: src/conversation/gnunet-helper-audio-record.c:642 1107#: src/conversation/gnunet-helper-audio-record.c:644
1114#, c-format 1108#, c-format
1115msgid "pa_context_connect() failed: %s\n" 1109msgid "pa_context_connect() failed: %s\n"
1116msgstr "pa_context_connect() fehlgeschlagen: %s\n" 1110msgstr "pa_context_connect() fehlgeschlagen: %s\n"
1117 1111
1118#: src/conversation/gnunet-helper-audio-playback.c:737 1112#: src/conversation/gnunet-helper-audio-playback.c:739
1119#: src/conversation/gnunet-helper-audio-record.c:648 1113#: src/conversation/gnunet-helper-audio-record.c:650
1120msgid "pa_mainloop_run() failed.\n" 1114msgid "pa_mainloop_run() failed.\n"
1121msgstr "pa_mainloop_run() fehlgeschlagen.\n" 1115msgstr "pa_mainloop_run() fehlgeschlagen.\n"
1122 1116
1123#: src/conversation/gnunet-helper-audio-playback.c:816 1117#: src/conversation/gnunet-helper-audio-playback.c:818
1124#, c-format 1118#, c-format
1125msgid "Read error from STDIN: %s\n" 1119msgid "Read error from STDIN: %s\n"
1126msgstr "Fehler beim Lesen aus STDIN: %s\n" 1120msgstr "Fehler beim Lesen aus STDIN: %s\n"
1127 1121
1128#: src/conversation/gnunet-helper-audio-record.c:351 1122#: src/conversation/gnunet-helper-audio-record.c:353
1129#, c-format 1123#, c-format
1130msgid "opus_encode_float() failed: %s. Aborting\n" 1124msgid "opus_encode_float() failed: %s. Aborting\n"
1131msgstr "opus_encode_float() fehlgeschlagen: %s. Abbruch\n" 1125msgstr "opus_encode_float() fehlgeschlagen: %s. Abbruch\n"
1132 1126
1133#: src/conversation/gnunet-helper-audio-record.c:430 1127#: src/conversation/gnunet-helper-audio-record.c:432
1134#, c-format 1128#, c-format
1135msgid "pa_stream_peek() failed: %s\n" 1129msgid "pa_stream_peek() failed: %s\n"
1136msgstr "pa_stream_peek() fehlgeschlagen: %s\n" 1130msgstr "pa_stream_peek() fehlgeschlagen: %s\n"
1137 1131
1138#: src/conversation/gnunet-helper-audio-record.c:472 1132#: src/conversation/gnunet-helper-audio-record.c:474
1139msgid "Got signal, exiting.\n" 1133msgid "Got signal, exiting.\n"
1140msgstr "Signal erhalten, wird abgebrochen.\n" 1134msgstr "Signal erhalten, wird abgebrochen.\n"
1141 1135
1142#: src/conversation/gnunet-helper-audio-record.c:498 1136#: src/conversation/gnunet-helper-audio-record.c:500
1143msgid "Stream successfully created.\n" 1137msgid "Stream successfully created.\n"
1144msgstr "Datenstrom wurde erfolgreich erzeugt.\n" 1138msgstr "Datenstrom wurde erfolgreich erzeugt.\n"
1145 1139
1146#: src/conversation/gnunet-helper-audio-record.c:503 1140#: src/conversation/gnunet-helper-audio-record.c:505
1147#, c-format 1141#, c-format
1148msgid "pa_stream_get_buffer_attr() failed: %s\n" 1142msgid "pa_stream_get_buffer_attr() failed: %s\n"
1149msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n" 1143msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n"
1150 1144
1151#: src/conversation/gnunet-helper-audio-record.c:511 1145#: src/conversation/gnunet-helper-audio-record.c:513
1152#, c-format 1146#, c-format
1153msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" 1147msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
1154msgstr "" 1148msgstr ""
1155 1149
1156#: src/conversation/gnunet-helper-audio-record.c:515 1150#: src/conversation/gnunet-helper-audio-record.c:517
1157#, c-format 1151#, c-format
1158msgid "Using sample spec '%s', channel map '%s'.\n" 1152msgid "Using sample spec '%s', channel map '%s'.\n"
1159msgstr "" 1153msgstr ""
1160 1154
1161#: src/conversation/gnunet-helper-audio-record.c:522 1155#: src/conversation/gnunet-helper-audio-record.c:524
1162#, c-format 1156#, c-format
1163msgid "Connected to device %s (%u, %ssuspended).\n" 1157msgid "Connected to device %s (%u, %ssuspended).\n"
1164msgstr "" 1158msgstr ""
1165 1159
1166#: src/conversation/gnunet-helper-audio-record.c:531 1160#: src/conversation/gnunet-helper-audio-record.c:533
1167#, c-format 1161#, c-format
1168msgid "Stream error: %s\n" 1162msgid "Stream error: %s\n"
1169msgstr "Datenstromfehler: %s\n" 1163msgstr "Datenstromfehler: %s\n"
1170 1164
1171#: src/conversation/gnunet-helper-audio-record.c:579 1165#: src/conversation/gnunet-helper-audio-record.c:581
1172#, c-format 1166#, c-format
1173msgid "pa_stream_connect_record() failed: %s\n" 1167msgid "pa_stream_connect_record() failed: %s\n"
1174msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n" 1168msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
1175 1169
1176#: src/conversation/gnunet-helper-audio-record.c:693 1170#: src/conversation/gnunet-helper-audio-record.c:695
1177msgid "ogg_stream_init() failed.\n" 1171msgid "ogg_stream_init() failed.\n"
1178msgstr "ogg_stream_init() fehlgeschlagen.\n" 1172msgstr "ogg_stream_init() fehlgeschlagen.\n"
1179 1173
1180#: src/conversation/gnunet-helper-audio-record.c:738 1174#: src/conversation/gnunet-helper-audio-record.c:740
1181#, fuzzy, c-format 1175#, fuzzy, c-format
1182msgid "Failed to allocate %u bytes for second packet\n" 1176msgid "Failed to allocate %u bytes for second packet\n"
1183msgstr "UDP-Sockets können nicht geöffnet werden\n" 1177msgstr "UDP-Sockets können nicht geöffnet werden\n"
1184 1178
1185#: src/conversation/gnunet-service-conversation.c:1303 1179#: src/conversation/gnunet-service-conversation.c:1305
1186#, fuzzy, c-format 1180#, fuzzy, c-format
1187msgid "Could not open line, port %s already in use!\n" 1181msgid "Could not open line, port %s already in use!\n"
1188msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n" 1182msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n"
1189 1183
1190#: src/conversation/microphone.c:119 1184#: src/conversation/microphone.c:121
1191msgid "Could not start record audio helper\n" 1185msgid "Could not start record audio helper\n"
1192msgstr "" 1186msgstr ""
1193 1187
1194#: src/conversation/plugin_gnsrecord_conversation.c:70 1188#: src/conversation/plugin_gnsrecord_conversation.c:72
1195#, c-format 1189#, c-format
1196msgid "PHONE version %u not supported\n" 1190msgid "PHONE version %u not supported\n"
1197msgstr "" 1191msgstr ""
1198 1192
1199#: src/conversation/plugin_gnsrecord_conversation.c:133 1193#: src/conversation/plugin_gnsrecord_conversation.c:135
1200#: src/conversation/plugin_gnsrecord_conversation.c:147 1194#: src/conversation/plugin_gnsrecord_conversation.c:149
1201#, c-format 1195#, c-format
1202msgid "Unable to parse PHONE record `%s'\n" 1196msgid "Unable to parse PHONE record `%s'\n"
1203msgstr "" 1197msgstr ""
1204 1198
1205#: src/conversation/speaker.c:73 1199#: src/conversation/speaker.c:75
1206msgid "Could not start playback audio helper.\n" 1200msgid "Could not start playback audio helper.\n"
1207msgstr "" 1201msgstr ""
1208 1202
1209#: src/core/gnunet-core.c:88 1203#: src/core/gnunet-core.c:90
1210#, fuzzy 1204#, fuzzy
1211msgid "fresh connection" 1205msgid "fresh connection"
1212msgstr "# verbundener Freunde" 1206msgstr "# verbundener Freunde"
1213 1207
1214#: src/core/gnunet-core.c:91 1208#: src/core/gnunet-core.c:93
1215msgid "key sent" 1209msgid "key sent"
1216msgstr "" 1210msgstr ""
1217 1211
1218#: src/core/gnunet-core.c:94 1212#: src/core/gnunet-core.c:96
1219#, fuzzy 1213#, fuzzy
1220msgid "key received" 1214msgid "key received"
1221msgstr "# empfangene Ergebnisse" 1215msgstr "# empfangene Ergebnisse"
1222 1216
1223#: src/core/gnunet-core.c:97 1217#: src/core/gnunet-core.c:99
1224#, fuzzy 1218#, fuzzy
1225msgid "connection established" 1219msgid "connection established"
1226msgstr " Verbindung fehlgeschlagen\n" 1220msgstr " Verbindung fehlgeschlagen\n"
1227 1221
1228#: src/core/gnunet-core.c:100 1222#: src/core/gnunet-core.c:102
1229msgid "rekeying" 1223msgid "rekeying"
1230msgstr "" 1224msgstr ""
1231 1225
1232#: src/core/gnunet-core.c:103 1226#: src/core/gnunet-core.c:105
1233#, fuzzy 1227#, fuzzy
1234msgid "disconnected" 1228msgid "disconnected"
1235msgstr "# verbundener Freunde" 1229msgstr "# verbundener Freunde"
1236 1230
1237#: src/core/gnunet-core.c:110 1231#: src/core/gnunet-core.c:112
1238msgid "Connection to CORE service lost (reconnecting)" 1232msgid "Connection to CORE service lost (reconnecting)"
1239msgstr "" 1233msgstr ""
1240 1234
1241#: src/core/gnunet-core.c:113 1235#: src/core/gnunet-core.c:115
1242#, fuzzy 1236#, fuzzy
1243msgid "unknown state" 1237msgid "unknown state"
1244msgstr "Unbekannter Fehler" 1238msgstr "Unbekannter Fehler"
1245 1239
1246#: src/core/gnunet-core.c:118 1240#: src/core/gnunet-core.c:120
1247#, fuzzy, c-format 1241#, fuzzy, c-format
1248msgid "%24s: %-30s %4s (timeout in %6s)\n" 1242msgid "%24s: %-30s %4s (timeout in %6s)\n"
1249msgstr "%24s: %-17s %4s (%u Verbindungen insgesamt)\n" 1243msgstr "%24s: %-17s %4s (%u Verbindungen insgesamt)\n"
1250 1244
1251#: src/core/gnunet-core.c:142 src/peerinfo-tool/gnunet-peerinfo.c:726 1245#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
1252#, c-format 1246#, c-format
1253msgid "Invalid command line argument `%s'\n" 1247msgid "Invalid command line argument `%s'\n"
1254msgstr "Ungültiges Befehlszeilenargument »%s«\n" 1248msgstr "Ungültiges Befehlszeilenargument »%s«\n"
1255 1249
1256#: src/core/gnunet-core.c:153 1250#: src/core/gnunet-core.c:155
1257#, fuzzy 1251#, fuzzy
1258msgid "Failed to connect to CORE service!\n" 1252msgid "Failed to connect to CORE service!\n"
1259msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 1253msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
1260 1254
1261#: src/core/gnunet-core.c:175 src/transport/gnunet-transport.c:1447 1255#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
1262msgid "provide information about all current connections (continuously)" 1256msgid "provide information about all current connections (continuously)"
1263msgstr "" 1257msgstr ""
1264 1258
1265#: src/core/gnunet-core.c:184 1259#: src/core/gnunet-core.c:186
1266msgid "Print information about connected peers." 1260msgid "Print information about connected peers."
1267msgstr "Informationen über verbundene Knoten ausgeben." 1261msgstr "Informationen über verbundene Knoten ausgeben."
1268 1262
1269#: src/core/gnunet-service-core.c:345 1263#: src/core/gnunet-service-core.c:347
1270#, fuzzy 1264#, fuzzy
1271msgid "# send requests dropped (disconnected)" 1265msgid "# send requests dropped (disconnected)"
1272msgstr "# gap Anfragen verworfen: Kollision in RT" 1266msgstr "# gap Anfragen verworfen: Kollision in RT"
1273 1267
1274#: src/core/gnunet-service-core.c:369 1268#: src/core/gnunet-service-core.c:371
1275msgid "# dequeuing CAR (duplicate request)" 1269msgid "# dequeuing CAR (duplicate request)"
1276msgstr "" 1270msgstr ""
1277 1271
1278#: src/core/gnunet-service-core.c:441 1272#: src/core/gnunet-service-core.c:443
1279#, fuzzy, c-format 1273#, fuzzy, c-format
1280msgid "# bytes of messages of type %u received" 1274msgid "# bytes of messages of type %u received"
1281msgstr "# Bytes Rauschen empfangen" 1275msgstr "# Bytes Rauschen empfangen"
1282 1276
1283#: src/core/gnunet-service-core.c:539 1277#: src/core/gnunet-service-core.c:541
1284msgid "# messages discarded (session disconnected)" 1278msgid "# messages discarded (session disconnected)"
1285msgstr "" 1279msgstr ""
1286 1280
1287#: src/core/gnunet-service-core.c:877 1281#: src/core/gnunet-service-core.c:879
1288#, fuzzy, c-format 1282#, fuzzy, c-format
1289msgid "# messages of type %u discarded (client busy)" 1283msgid "# messages of type %u discarded (client busy)"
1290msgstr "# Bytes Rauschen empfangen" 1284msgstr "# Bytes Rauschen empfangen"
1291 1285
1292#: src/core/gnunet-service-core.c:986 1286#: src/core/gnunet-service-core.c:988
1293msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" 1287msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n"
1294msgstr "" 1288msgstr ""
1295 1289
1296#: src/core/gnunet-service-core.c:1007 1290#: src/core/gnunet-service-core.c:1009
1297#, fuzzy, c-format 1291#, fuzzy, c-format
1298msgid "Core service of `%s' ready.\n" 1292msgid "Core service of `%s' ready.\n"
1299msgstr "Dienst »%s« wird neu gestartet.\n" 1293msgstr "Dienst »%s« wird neu gestartet.\n"
1300 1294
1301#: src/core/gnunet-service-core_kx.c:615 1295#: src/core/gnunet-service-core_kx.c:617
1302msgid "# bytes encrypted" 1296msgid "# bytes encrypted"
1303msgstr "# Bytes verschlüsselt" 1297msgstr "# Bytes verschlüsselt"
1304 1298
1305#: src/core/gnunet-service-core_kx.c:675 1299#: src/core/gnunet-service-core_kx.c:677
1306msgid "# bytes decrypted" 1300msgid "# bytes decrypted"
1307msgstr "# Bytes entschlüsselt" 1301msgstr "# Bytes entschlüsselt"
1308 1302
1309#: src/core/gnunet-service-core_kx.c:777 1303#: src/core/gnunet-service-core_kx.c:779
1310msgid "# PAYLOAD dropped (out of order)" 1304msgid "# PAYLOAD dropped (out of order)"
1311msgstr "" 1305msgstr ""
1312 1306
1313#: src/core/gnunet-service-core_kx.c:827 1307#: src/core/gnunet-service-core_kx.c:829
1314msgid "# key exchanges initiated" 1308msgid "# key exchanges initiated"
1315msgstr "" 1309msgstr ""
1316 1310
1317#: src/core/gnunet-service-core_kx.c:889 1311#: src/core/gnunet-service-core_kx.c:891
1318msgid "# key exchanges stopped" 1312msgid "# key exchanges stopped"
1319msgstr "" 1313msgstr ""
1320 1314
1321#: src/core/gnunet-service-core_kx.c:923 1315#: src/core/gnunet-service-core_kx.c:925
1322#, fuzzy 1316#, fuzzy
1323msgid "# PING messages transmitted" 1317msgid "# PING messages transmitted"
1324msgstr "# PING Nachrichten erstellt" 1318msgstr "# PING Nachrichten erstellt"
1325 1319
1326#: src/core/gnunet-service-core_kx.c:990 1320#: src/core/gnunet-service-core_kx.c:992
1327msgid "# old ephemeral keys ignored" 1321msgid "# old ephemeral keys ignored"
1328msgstr "" 1322msgstr ""
1329 1323
1330#: src/core/gnunet-service-core_kx.c:1003 1324#: src/core/gnunet-service-core_kx.c:1005
1331#, fuzzy 1325#, fuzzy
1332msgid "# duplicate ephemeral keys ignored" 1326msgid "# duplicate ephemeral keys ignored"
1333msgstr "# verschlüsselter PONG Nachrichten empfangen" 1327msgstr "# verschlüsselter PONG Nachrichten empfangen"
1334 1328
1335#: src/core/gnunet-service-core_kx.c:1038 1329#: src/core/gnunet-service-core_kx.c:1040
1336#, fuzzy 1330#, fuzzy
1337msgid "# EPHEMERAL_KEYs rejected (bad signature)" 1331msgid "# EPHEMERAL_KEYs rejected (bad signature)"
1338msgstr "# verschlüsselter PONG Nachrichten empfangen" 1332msgstr "# verschlüsselter PONG Nachrichten empfangen"
1339 1333
1340#: src/core/gnunet-service-core_kx.c:1052 1334#: src/core/gnunet-service-core_kx.c:1054
1341#, c-format 1335#, c-format
1342msgid "" 1336msgid ""
1343"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match " 1337"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
1344"our system time (%llu not in [%llu,%llu]).\n" 1338"our system time (%llu not in [%llu,%llu]).\n"
1345msgstr "" 1339msgstr ""
1346 1340
1347#: src/core/gnunet-service-core_kx.c:1058 1341#: src/core/gnunet-service-core_kx.c:1060
1348#, fuzzy 1342#, fuzzy
1349msgid "# EPHEMERAL_KEY messages rejected due to time" 1343msgid "# EPHEMERAL_KEY messages rejected due to time"
1350msgstr "# verschlüsselter PONG Nachrichten empfangen" 1344msgstr "# verschlüsselter PONG Nachrichten empfangen"
1351 1345
1352#: src/core/gnunet-service-core_kx.c:1078 1346#: src/core/gnunet-service-core_kx.c:1080
1353#, fuzzy 1347#, fuzzy
1354msgid "# valid ephemeral keys received" 1348msgid "# valid ephemeral keys received"
1355msgstr "# verschlüsselter PONG Nachrichten empfangen" 1349msgstr "# verschlüsselter PONG Nachrichten empfangen"
1356 1350
1357#: src/core/gnunet-service-core_kx.c:1178 1351#: src/core/gnunet-service-core_kx.c:1180
1358#: src/transport/gnunet-service-transport_validation.c:1126 1352#: src/transport/gnunet-service-transport_validation.c:1128
1359#, fuzzy 1353#, fuzzy
1360msgid "# PING messages received" 1354msgid "# PING messages received"
1361msgstr "# PING Nachrichten erstellt" 1355msgstr "# PING Nachrichten erstellt"
1362 1356
1363#: src/core/gnunet-service-core_kx.c:1187 1357#: src/core/gnunet-service-core_kx.c:1189
1364#, fuzzy 1358#, fuzzy
1365msgid "# PING messages dropped (out of order)" 1359msgid "# PING messages dropped (out of order)"
1366msgstr "# PING Nachrichten erstellt" 1360msgstr "# PING Nachrichten erstellt"
1367 1361
1368#: src/core/gnunet-service-core_kx.c:1246 1362#: src/core/gnunet-service-core_kx.c:1248
1369#, fuzzy 1363#, fuzzy
1370msgid "# PONG messages created" 1364msgid "# PONG messages created"
1371msgstr "# PING Nachrichten erstellt" 1365msgstr "# PING Nachrichten erstellt"
1372 1366
1373#: src/core/gnunet-service-core_kx.c:1272 1367#: src/core/gnunet-service-core_kx.c:1274
1374msgid "# sessions terminated by timeout" 1368msgid "# sessions terminated by timeout"
1375msgstr "" 1369msgstr ""
1376 1370
1377#: src/core/gnunet-service-core_kx.c:1285 1371#: src/core/gnunet-service-core_kx.c:1287
1378#, fuzzy 1372#, fuzzy
1379msgid "# keepalive messages sent" 1373msgid "# keepalive messages sent"
1380msgstr "# Klartext PING Nachrichten gesendet" 1374msgstr "# Klartext PING Nachrichten gesendet"
1381 1375
1382#: src/core/gnunet-service-core_kx.c:1349 1376#: src/core/gnunet-service-core_kx.c:1351
1383#: src/transport/gnunet-service-transport_validation.c:1459 1377#: src/transport/gnunet-service-transport_validation.c:1461
1384#, fuzzy 1378#, fuzzy
1385msgid "# PONG messages received" 1379msgid "# PONG messages received"
1386msgstr "# verschlüsselter PONG Nachrichten empfangen" 1380msgstr "# verschlüsselter PONG Nachrichten empfangen"
1387 1381
1388#: src/core/gnunet-service-core_kx.c:1356 1382#: src/core/gnunet-service-core_kx.c:1358
1389msgid "# PONG messages dropped (connection down)" 1383msgid "# PONG messages dropped (connection down)"
1390msgstr "" 1384msgstr ""
1391 1385
1392#: src/core/gnunet-service-core_kx.c:1361 1386#: src/core/gnunet-service-core_kx.c:1363
1393#, fuzzy 1387#, fuzzy
1394msgid "# PONG messages dropped (out of order)" 1388msgid "# PONG messages dropped (out of order)"
1395msgstr "# PING Nachrichten erstellt" 1389msgstr "# PING Nachrichten erstellt"
1396 1390
1397#: src/core/gnunet-service-core_kx.c:1396 1391#: src/core/gnunet-service-core_kx.c:1398
1398#, fuzzy 1392#, fuzzy
1399msgid "# PONG messages decrypted" 1393msgid "# PONG messages decrypted"
1400msgstr "# PING Nachrichten erstellt" 1394msgstr "# PING Nachrichten erstellt"
1401 1395
1402#: src/core/gnunet-service-core_kx.c:1434 1396#: src/core/gnunet-service-core_kx.c:1436
1403#, fuzzy 1397#, fuzzy
1404msgid "# session keys confirmed via PONG" 1398msgid "# session keys confirmed via PONG"
1405msgstr "# Knotenankündigungen empfangen" 1399msgstr "# Knotenankündigungen empfangen"
1406 1400
1407#: src/core/gnunet-service-core_kx.c:1445 1401#: src/core/gnunet-service-core_kx.c:1447
1408#, fuzzy 1402#, fuzzy
1409msgid "# timeouts prevented via PONG" 1403msgid "# timeouts prevented via PONG"
1410msgstr "# Bytes empfangen über TCP" 1404msgstr "# Bytes empfangen über TCP"
1411 1405
1412#: src/core/gnunet-service-core_kx.c:1452 1406#: src/core/gnunet-service-core_kx.c:1454
1413#, fuzzy 1407#, fuzzy
1414msgid "# rekey operations confirmed via PONG" 1408msgid "# rekey operations confirmed via PONG"
1415msgstr "# Knotenankündigungen empfangen" 1409msgstr "# Knotenankündigungen empfangen"
1416 1410
1417#: src/core/gnunet-service-core_kx.c:1640 1411#: src/core/gnunet-service-core_kx.c:1642
1418msgid "# DATA message dropped (out of order)" 1412msgid "# DATA message dropped (out of order)"
1419msgstr "" 1413msgstr ""
1420 1414
1421#: src/core/gnunet-service-core_kx.c:1648 1415#: src/core/gnunet-service-core_kx.c:1650
1422#, c-format 1416#, c-format
1423msgid "" 1417msgid ""
1424"Session to peer `%s' went down due to key expiration (should not happen)\n" 1418"Session to peer `%s' went down due to key expiration (should not happen)\n"
1425msgstr "" 1419msgstr ""
1426 1420
1427#: src/core/gnunet-service-core_kx.c:1651 1421#: src/core/gnunet-service-core_kx.c:1653
1428msgid "# sessions terminated by key expiration" 1422msgid "# sessions terminated by key expiration"
1429msgstr "" 1423msgstr ""
1430 1424
1431#: src/core/gnunet-service-core_kx.c:1740 1425#: src/core/gnunet-service-core_kx.c:1742
1432#: src/core/gnunet-service-core_kx.c:1766 1426#: src/core/gnunet-service-core_kx.c:1768
1433#, fuzzy 1427#, fuzzy
1434msgid "# bytes dropped (duplicates)" 1428msgid "# bytes dropped (duplicates)"
1435msgstr "# Bytes verworfen von TCP (ausgehend)" 1429msgstr "# Bytes verworfen von TCP (ausgehend)"
1436 1430
1437#: src/core/gnunet-service-core_kx.c:1753 1431#: src/core/gnunet-service-core_kx.c:1755
1438#, fuzzy 1432#, fuzzy
1439msgid "# bytes dropped (out of sequence)" 1433msgid "# bytes dropped (out of sequence)"
1440msgstr "# Bytes verworfen von TCP (ausgehend)" 1434msgstr "# Bytes verworfen von TCP (ausgehend)"
1441 1435
1442#: src/core/gnunet-service-core_kx.c:1795 1436#: src/core/gnunet-service-core_kx.c:1797
1443#, fuzzy 1437#, fuzzy
1444msgid "# bytes dropped (ancient message)" 1438msgid "# bytes dropped (ancient message)"
1445msgstr "# Bytes verworfen von TCP (ausgehend)" 1439msgstr "# Bytes verworfen von TCP (ausgehend)"
1446 1440
1447#: src/core/gnunet-service-core_kx.c:1803 1441#: src/core/gnunet-service-core_kx.c:1805
1448#, fuzzy 1442#, fuzzy
1449msgid "# bytes of payload decrypted" 1443msgid "# bytes of payload decrypted"
1450msgstr "# Bytes entschlüsselt" 1444msgstr "# Bytes entschlüsselt"
1451 1445
1452#: src/core/gnunet-service-core_sessions.c:258 1446#: src/core/gnunet-service-core_sessions.c:260
1453#: src/core/gnunet-service-core_sessions.c:348 1447#: src/core/gnunet-service-core_sessions.c:350
1454#: src/dht/gnunet-service-dht_neighbours.c:739 1448#: src/dht/gnunet-service-dht_neighbours.c:741
1455#: src/dht/gnunet-service-dht_neighbours.c:802 1449#: src/dht/gnunet-service-dht_neighbours.c:804
1456#: src/fs/gnunet-service-fs_cp.c:613 src/fs/gnunet-service-fs_cp.c:1520 1450#: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
1457#: src/topology/gnunet-daemon-topology.c:615 1451#: src/topology/gnunet-daemon-topology.c:617
1458#: src/topology/gnunet-daemon-topology.c:717 1452#: src/topology/gnunet-daemon-topology.c:719
1459#: src/transport/gnunet-service-transport_neighbours.c:719 1453#: src/transport/gnunet-service-transport_neighbours.c:720
1460#: src/transport/gnunet-service-transport_neighbours.c:727 1454#: src/transport/gnunet-service-transport_neighbours.c:728
1461msgid "# peers connected" 1455msgid "# peers connected"
1462msgstr "# verbundener Knoten" 1456msgstr "# verbundener Knoten"
1463 1457
1464#: src/core/gnunet-service-core_sessions.c:294 1458#: src/core/gnunet-service-core_sessions.c:296
1465#, fuzzy 1459#, fuzzy
1466msgid "# type map refreshes sent" 1460msgid "# type map refreshes sent"
1467msgstr "# p2p Trace-Antworten gesendet" 1461msgstr "# p2p Trace-Antworten gesendet"
1468 1462
1469#: src/core/gnunet-service-core_sessions.c:414 1463#: src/core/gnunet-service-core_sessions.c:416
1470#, fuzzy 1464#, fuzzy
1471msgid "# outdated typemap confirmations received" 1465msgid "# outdated typemap confirmations received"
1472msgstr "# Bytes empfangen über TCP" 1466msgstr "# Bytes empfangen über TCP"
1473 1467
1474#: src/core/gnunet-service-core_sessions.c:431 1468#: src/core/gnunet-service-core_sessions.c:433
1475#, fuzzy 1469#, fuzzy
1476msgid "# valid typemap confirmations received" 1470msgid "# valid typemap confirmations received"
1477msgstr "# Bytes empfangen über TCP" 1471msgstr "# Bytes empfangen über TCP"
1478 1472
1479#: src/core/gnunet-service-core_typemap.c:167 1473#: src/core/gnunet-service-core_typemap.c:169
1480#: src/core/gnunet-service-core_typemap.c:179 1474#: src/core/gnunet-service-core_typemap.c:181
1481#, fuzzy 1475#, fuzzy
1482msgid "# type maps received" 1476msgid "# type maps received"
1483msgstr "# Bytes empfangen über TCP" 1477msgstr "# Bytes empfangen über TCP"
1484 1478
1485#: src/core/gnunet-service-core_typemap.c:210 1479#: src/core/gnunet-service-core_typemap.c:212
1486msgid "# updates to my type map" 1480msgid "# updates to my type map"
1487msgstr "" 1481msgstr ""
1488 1482
1489#: src/credential/credential_misc.c:86 1483#: src/credential/credential_misc.c:88
1490#, fuzzy, c-format 1484#, fuzzy, c-format
1491msgid "Unable to parse CRED record string `%s'\n" 1485msgid "Unable to parse CRED record string `%s'\n"
1492msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 1486msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
1493 1487
1494#: src/credential/gnunet-credential.c:262 src/namestore/gnunet-namestore.c:887 1488#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
1495#, fuzzy, c-format 1489#, fuzzy, c-format
1496msgid "Ego `%s' not known to identity service\n" 1490msgid "Ego `%s' not known to identity service\n"
1497msgstr "`%s': unbekannter Dienst: %s\n" 1491msgstr "`%s': unbekannter Dienst: %s\n"
1498 1492
1499#: src/credential/gnunet-credential.c:278 1493#: src/credential/gnunet-credential.c:280
1500#: src/credential/gnunet-credential.c:432 1494#: src/credential/gnunet-credential.c:434
1501#, c-format 1495#, c-format
1502msgid "Issuer public key `%s' is not well-formed\n" 1496msgid "Issuer public key `%s' is not well-formed\n"
1503msgstr "" 1497msgstr ""
1504 1498
1505#: src/credential/gnunet-credential.c:359 1499#: src/credential/gnunet-credential.c:361
1506#: src/credential/gnunet-credential.c:421 1500#: src/credential/gnunet-credential.c:423
1507#, fuzzy, c-format 1501#, fuzzy, c-format
1508msgid "Issuer public key not well-formed\n" 1502msgid "Issuer public key not well-formed\n"
1509msgstr "Ungültiger Parameter: `%s'\n" 1503msgstr "Ungültiger Parameter: `%s'\n"
1510 1504
1511#: src/credential/gnunet-credential.c:370 1505#: src/credential/gnunet-credential.c:372
1512#: src/credential/gnunet-credential.c:442 1506#: src/credential/gnunet-credential.c:444
1513#, fuzzy, c-format 1507#, fuzzy, c-format
1514msgid "Failed to connect to CREDENTIAL\n" 1508msgid "Failed to connect to CREDENTIAL\n"
1515msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 1509msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
1516 1510
1517#: src/credential/gnunet-credential.c:377 1511#: src/credential/gnunet-credential.c:379
1518#, c-format 1512#, c-format
1519msgid "You must provide issuer the attribute\n" 1513msgid "You must provide issuer the attribute\n"
1520msgstr "" 1514msgstr ""
1521 1515
1522#: src/credential/gnunet-credential.c:385 1516#: src/credential/gnunet-credential.c:387
1523#, fuzzy, c-format 1517#, fuzzy, c-format
1524msgid "ego required\n" 1518msgid "ego required\n"
1525msgstr "Gültiger Typ ist erforderlich\n" 1519msgstr "Gültiger Typ ist erforderlich\n"
1526 1520
1527#: src/credential/gnunet-credential.c:401 1521#: src/credential/gnunet-credential.c:403
1528#, c-format 1522#, c-format
1529msgid "Subject public key needed\n" 1523msgid "Subject public key needed\n"
1530msgstr "" 1524msgstr ""
1531 1525
1532#: src/credential/gnunet-credential.c:412 1526#: src/credential/gnunet-credential.c:414
1533#, c-format 1527#, c-format
1534msgid "Subject public key `%s' is not well-formed\n" 1528msgid "Subject public key `%s' is not well-formed\n"
1535msgstr "" 1529msgstr ""
1536 1530
1537#: src/credential/gnunet-credential.c:449 1531#: src/credential/gnunet-credential.c:451
1538#, c-format 1532#, c-format
1539msgid "You must provide issuer and subject attributes\n" 1533msgid "You must provide issuer and subject attributes\n"
1540msgstr "" 1534msgstr ""
1541 1535
1542#: src/credential/gnunet-credential.c:502 1536#: src/credential/gnunet-credential.c:504
1543#, fuzzy, c-format 1537#, fuzzy, c-format
1544msgid "Issuer ego required\n" 1538msgid "Issuer ego required\n"
1545msgstr "Gültiger Typ ist erforderlich\n" 1539msgstr "Gültiger Typ ist erforderlich\n"
1546 1540
1547#: src/credential/gnunet-credential.c:514 1541#: src/credential/gnunet-credential.c:516
1548#, c-format 1542#, c-format
1549msgid "Please specify name to lookup, subject key and issuer key!\n" 1543msgid "Please specify name to lookup, subject key and issuer key!\n"
1550msgstr "" 1544msgstr ""
1551 1545
1552#: src/credential/gnunet-credential.c:534 1546#: src/credential/gnunet-credential.c:536
1553msgid "create credential" 1547msgid "create credential"
1554msgstr "" 1548msgstr ""
1555 1549
1556#: src/credential/gnunet-credential.c:538 1550#: src/credential/gnunet-credential.c:540
1557msgid "verify credential against attribute" 1551msgid "verify credential against attribute"
1558msgstr "" 1552msgstr ""
1559 1553
1560#: src/credential/gnunet-credential.c:543 1554#: src/credential/gnunet-credential.c:545
1561#, fuzzy 1555#, fuzzy
1562msgid "The public key of the subject to lookup the credential for" 1556msgid "The public key of the subject to lookup the credential for"
1563msgstr "Die Priorität des Inhalts angeben" 1557msgstr "Die Priorität des Inhalts angeben"
1564 1558
1565#: src/credential/gnunet-credential.c:548 1559#: src/credential/gnunet-credential.c:550
1566msgid "The name of the credential presented by the subject" 1560msgid "The name of the credential presented by the subject"
1567msgstr "" 1561msgstr ""
1568 1562
1569#: src/credential/gnunet-credential.c:553 1563#: src/credential/gnunet-credential.c:555
1570msgid "The public key of the authority to verify the credential against" 1564msgid "The public key of the authority to verify the credential against"
1571msgstr "" 1565msgstr ""
1572 1566
1573#: src/credential/gnunet-credential.c:558 1567#: src/credential/gnunet-credential.c:560
1574msgid "The ego to use" 1568msgid "The ego to use"
1575msgstr "" 1569msgstr ""
1576 1570
1577#: src/credential/gnunet-credential.c:563 1571#: src/credential/gnunet-credential.c:565
1578msgid "The issuer attribute to verify against or to issue" 1572msgid "The issuer attribute to verify against or to issue"
1579msgstr "" 1573msgstr ""
1580 1574
1581#: src/credential/gnunet-credential.c:568 1575#: src/credential/gnunet-credential.c:570
1582msgid "The time to live for the credential" 1576msgid "The time to live for the credential"
1583msgstr "" 1577msgstr ""
1584 1578
1585#: src/credential/gnunet-credential.c:572 1579#: src/credential/gnunet-credential.c:574
1586msgid "collect credentials" 1580msgid "collect credentials"
1587msgstr "" 1581msgstr ""
1588 1582
1589#: src/credential/gnunet-credential.c:586 1583#: src/credential/gnunet-credential.c:588
1590#, fuzzy 1584#, fuzzy
1591msgid "GNUnet credential resolver tool" 1585msgid "GNUnet credential resolver tool"
1592msgstr "GNUnet Netzwerk Topologie tracen." 1586msgstr "GNUnet Netzwerk Topologie tracen."
1593 1587
1594#: src/credential/gnunet-service-credential.c:1136 src/gns/gnunet-gns.c:183 1588#: src/credential/gnunet-service-credential.c:1138 src/gns/gnunet-gns.c:185
1595#: src/gns/gnunet-gns-helper-service-w32.c:725 1589#: src/gns/gnunet-gns-helper-service-w32.c:727
1596#, fuzzy, c-format 1590#, fuzzy, c-format
1597msgid "Failed to connect to GNS\n" 1591msgid "Failed to connect to GNS\n"
1598msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 1592msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
1599 1593
1600#: src/credential/gnunet-service-credential.c:1142 1594#: src/credential/gnunet-service-credential.c:1144
1601#: src/namestore/gnunet-namestore.c:913 1595#: src/namestore/gnunet-namestore.c:1019
1602#: src/namestore/gnunet-namestore-fcfsd.c:1136 1596#: src/namestore/gnunet-namestore-fcfsd.c:1138
1603#, fuzzy, c-format 1597#, fuzzy, c-format
1604msgid "Failed to connect to namestore\n" 1598msgid "Failed to connect to namestore\n"
1605msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 1599msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
1606 1600
1607#: src/credential/plugin_gnsrecord_credential.c:184 1601#: src/credential/plugin_gnsrecord_credential.c:186
1608#, fuzzy, c-format 1602#, fuzzy, c-format
1609msgid "Unable to parse ATTR record string `%s'\n" 1603msgid "Unable to parse ATTR record string `%s'\n"
1610msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 1604msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
1611 1605
1612#: src/datacache/datacache.c:117 src/datacache/datacache.c:309 1606#: src/datacache/datacache.c:119 src/datacache/datacache.c:311
1613#: src/datastore/gnunet-service-datastore.c:755 1607#: src/datastore/gnunet-service-datastore.c:757
1614msgid "# bytes stored" 1608msgid "# bytes stored"
1615msgstr "# gespeicherte Bytes" 1609msgstr "# gespeicherte Bytes"
1616 1610
1617#: src/datacache/datacache.c:121 src/datacache/datacache.c:313 1611#: src/datacache/datacache.c:123 src/datacache/datacache.c:315
1618msgid "# items stored" 1612msgid "# items stored"
1619msgstr "# gespeicherte Objekte" 1613msgstr "# gespeicherte Objekte"
1620 1614
1621#: src/datacache/datacache.c:204 1615#: src/datacache/datacache.c:206
1622#, c-format 1616#, c-format
1623msgid "Loading `%s' datacache plugin\n" 1617msgid "Loading `%s' datacache plugin\n"
1624msgstr "" 1618msgstr ""
1625 1619
1626#: src/datacache/datacache.c:215 1620#: src/datacache/datacache.c:217
1627#, fuzzy, c-format 1621#, fuzzy, c-format
1628msgid "Failed to load datacache plugin for `%s'\n" 1622msgid "Failed to load datacache plugin for `%s'\n"
1629msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 1623msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
1630 1624
1631#: src/datacache/datacache.c:343 1625#: src/datacache/datacache.c:345
1632msgid "# requests received" 1626msgid "# requests received"
1633msgstr "# Anfragen empfangen" 1627msgstr "# Anfragen empfangen"
1634 1628
1635#: src/datacache/datacache.c:353 1629#: src/datacache/datacache.c:355
1636msgid "# requests filtered by bloom filter" 1630msgid "# requests filtered by bloom filter"
1637msgstr "" 1631msgstr ""
1638 1632
1639#: src/datacache/datacache.c:383 1633#: src/datacache/datacache.c:385
1640#, fuzzy 1634#, fuzzy
1641msgid "# requests for random value received" 1635msgid "# requests for random value received"
1642msgstr "# Anfragen empfangen" 1636msgstr "# Anfragen empfangen"
1643 1637
1644#: src/datacache/datacache.c:415 1638#: src/datacache/datacache.c:417
1645#, fuzzy 1639#, fuzzy
1646msgid "# proximity search requests received" 1640msgid "# proximity search requests received"
1647msgstr "# Klartext PONG Nachrichten empfangen" 1641msgstr "# Klartext PONG Nachrichten empfangen"
1648 1642
1649#: src/datacache/plugin_datacache_heap.c:551 1643#: src/datacache/plugin_datacache_heap.c:553
1650msgid "Heap datacache running\n" 1644msgid "Heap datacache running\n"
1651msgstr "" 1645msgstr ""
1652 1646
1653#: src/datacache/plugin_datacache_sqlite.c:116 1647#: src/datacache/plugin_datacache_sqlite.c:118
1654#: src/datacache/plugin_datacache_sqlite.c:125 1648#: src/datacache/plugin_datacache_sqlite.c:127
1655#: src/datastore/plugin_datastore_mysql.c:890 1649#: src/datastore/plugin_datastore_mysql.c:892
1656#: src/datastore/plugin_datastore_sqlite.c:56 1650#: src/datastore/plugin_datastore_sqlite.c:58
1657#: src/datastore/plugin_datastore_sqlite.c:64 src/my/my.c:79 src/my/my.c:91 1651#: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
1658#: src/mysql/mysql.c:40 src/mysql/mysql.c:47 1652#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
1659#: src/namecache/plugin_namecache_sqlite.c:50 1653#: src/namecache/plugin_namecache_sqlite.c:52
1660#: src/namestore/plugin_namestore_sqlite.c:51 1654#: src/namestore/plugin_namestore_sqlite.c:53
1661#: src/peerstore/plugin_peerstore_sqlite.c:50 1655#: src/peerstore/plugin_peerstore_sqlite.c:52
1662#: src/psycstore/plugin_psycstore_mysql.c:60 1656#: src/reclaim/plugin_reclaim_sqlite.c:52
1663#: src/reclaim/plugin_reclaim_sqlite.c:50 1657#: src/testbed/generate-underlay-topology.c:47
1664#: src/testbed/generate-underlay-topology.c:45 1658#: src/testbed/gnunet-daemon-latency-logger.c:52
1665#: src/testbed/gnunet-daemon-latency-logger.c:50 1659#: src/testbed/gnunet-daemon-testbed-underlay.c:56
1666#: src/testbed/gnunet-daemon-testbed-underlay.c:54 1660#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
1667#: src/testbed/testbed_api_hosts.c:67 src/util/crypto_ecc.c:51 1661#: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
1668#: src/util/crypto_ecc_setup.c:39 src/util/crypto_mpi.c:37 1662#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
1669#: src/include/gnunet_common.h:816 src/include/gnunet_common.h:825 1663#: src/scalarproduct/scalarproduct.h:35
1670#: src/scalarproduct/scalarproduct.h:33
1671#, c-format 1664#, c-format
1672msgid "`%s' failed at %s:%d with error: %s\n" 1665msgid "`%s' failed at %s:%d with error: %s\n"
1673msgstr "»%s« schlug bei %s:%d mit dem Fehler %s fehl\n" 1666msgstr "»%s« schlug bei %s:%d mit dem Fehler %s fehl\n"
1674 1667
1675#: src/datacache/plugin_datacache_sqlite.c:861 1668#: src/datacache/plugin_datacache_sqlite.c:863
1676#: src/datastore/plugin_datastore_sqlite.c:506 1669#: src/datastore/plugin_datastore_sqlite.c:508
1677#: src/namecache/plugin_namecache_sqlite.c:327 1670#: src/namecache/plugin_namecache_sqlite.c:229
1678#: src/namestore/plugin_namestore_sqlite.c:262 1671#: src/namestore/plugin_namestore_sqlite.c:265
1679#: src/reclaim/plugin_reclaim_sqlite.c:334 1672#: src/reclaim/plugin_reclaim_sqlite.c:336
1680msgid "Tried to close sqlite without finalizing all prepared statements.\n" 1673msgid "Tried to close sqlite without finalizing all prepared statements.\n"
1681msgstr "" 1674msgstr ""
1682 1675
1683#: src/datastore/datastore_api.c:346 1676#: src/datastore/datastore_api.c:348
1684#, fuzzy 1677#, fuzzy
1685msgid "DATASTORE disconnected" 1678msgid "DATASTORE disconnected"
1686msgstr "# verbundener Freunde" 1679msgstr "# verbundener Freunde"
1687 1680
1688#: src/datastore/datastore_api.c:466 1681#: src/datastore/datastore_api.c:468
1689#, fuzzy 1682#, fuzzy
1690msgid "Disconnected from DATASTORE" 1683msgid "Disconnected from DATASTORE"
1691msgstr "# verbundener Knoten" 1684msgstr "# verbundener Knoten"
1692 1685
1693#: src/datastore/datastore_api.c:567 1686#: src/datastore/datastore_api.c:569
1694msgid "# queue overflows" 1687msgid "# queue overflows"
1695msgstr "" 1688msgstr ""
1696 1689
1697#: src/datastore/datastore_api.c:597 1690#: src/datastore/datastore_api.c:599
1698#, fuzzy 1691#, fuzzy
1699msgid "# queue entries created" 1692msgid "# queue entries created"
1700msgstr "# PING Nachrichten erstellt" 1693msgstr "# PING Nachrichten erstellt"
1701 1694
1702#: src/datastore/datastore_api.c:758 1695#: src/datastore/datastore_api.c:760
1703msgid "# status messages received" 1696msgid "# status messages received"
1704msgstr "# empfangene Statusmeldungen" 1697msgstr "# empfangene Statusmeldungen"
1705 1698
1706#: src/datastore/datastore_api.c:812 1699#: src/datastore/datastore_api.c:814
1707msgid "# Results received" 1700msgid "# Results received"
1708msgstr "# empfangene Ergebnisse" 1701msgstr "# empfangene Ergebnisse"
1709 1702
1710#: src/datastore/datastore_api.c:918 1703#: src/datastore/datastore_api.c:920
1711msgid "# datastore connections (re)created" 1704msgid "# datastore connections (re)created"
1712msgstr "" 1705msgstr ""
1713 1706
1714#: src/datastore/datastore_api.c:1032 1707#: src/datastore/datastore_api.c:1034
1715#, fuzzy 1708#, fuzzy
1716msgid "# PUT requests executed" 1709msgid "# PUT requests executed"
1717msgstr "# dht Anfragen weitergeleitet" 1710msgstr "# dht Anfragen weitergeleitet"
1718 1711
1719#: src/datastore/datastore_api.c:1093 1712#: src/datastore/datastore_api.c:1095
1720#, fuzzy 1713#, fuzzy
1721msgid "# RESERVE requests executed" 1714msgid "# RESERVE requests executed"
1722msgstr "# dht Anfragen weitergeleitet" 1715msgstr "# dht Anfragen weitergeleitet"
1723 1716
1724#: src/datastore/datastore_api.c:1158 1717#: src/datastore/datastore_api.c:1160
1725msgid "# RELEASE RESERVE requests executed" 1718msgid "# RELEASE RESERVE requests executed"
1726msgstr "" 1719msgstr ""
1727 1720
1728#: src/datastore/datastore_api.c:1236 1721#: src/datastore/datastore_api.c:1238
1729#, fuzzy 1722#, fuzzy
1730msgid "# REMOVE requests executed" 1723msgid "# REMOVE requests executed"
1731msgstr "# dht Anfragen weitergeleitet" 1724msgstr "# dht Anfragen weitergeleitet"
1732 1725
1733#: src/datastore/datastore_api.c:1296 1726#: src/datastore/datastore_api.c:1298
1734msgid "# GET REPLICATION requests executed" 1727msgid "# GET REPLICATION requests executed"
1735msgstr "" 1728msgstr ""
1736 1729
1737#: src/datastore/datastore_api.c:1358 1730#: src/datastore/datastore_api.c:1360
1738msgid "# GET ZERO ANONYMITY requests executed" 1731msgid "# GET ZERO ANONYMITY requests executed"
1739msgstr "" 1732msgstr ""
1740 1733
1741#: src/datastore/datastore_api.c:1439 1734#: src/datastore/datastore_api.c:1441
1742msgid "# GET requests executed" 1735msgid "# GET requests executed"
1743msgstr "# ausgeführte GET-Anfragen" 1736msgstr "# ausgeführte GET-Anfragen"
1744 1737
1745#: src/datastore/gnunet-datastore.c:187 1738#: src/datastore/gnunet-datastore.c:189
1746#, c-format 1739#, c-format
1747msgid "Dumped %<PRIu64> records\n" 1740msgid "Dumped %<PRIu64> records\n"
1748msgstr "" 1741msgstr ""
1749 1742
1750#: src/datastore/gnunet-datastore.c:215 src/datastore/gnunet-datastore.c:227 1743#: src/datastore/gnunet-datastore.c:217 src/datastore/gnunet-datastore.c:229
1751#, c-format 1744#, c-format
1752msgid "Short write to file: %zd bytes expecting %zd\n" 1745msgid "Short write to file: %zd bytes expecting %zd\n"
1753msgstr "" 1746msgstr ""
1754 1747
1755#: src/datastore/gnunet-datastore.c:259 1748#: src/datastore/gnunet-datastore.c:261
1756#, fuzzy 1749#, fuzzy
1757msgid "Error queueing datastore GET operation\n" 1750msgid "Error queueing datastore GET operation\n"
1758msgstr "Fehler beim Anlegen des Benutzers" 1751msgstr "Fehler beim Anlegen des Benutzers"
1759 1752
1760#: src/datastore/gnunet-datastore.c:285 src/datastore/gnunet-datastore.c:410 1753#: src/datastore/gnunet-datastore.c:287 src/datastore/gnunet-datastore.c:412
1761#, fuzzy, c-format 1754#, fuzzy, c-format
1762msgid "Unable to open dump file: %s\n" 1755msgid "Unable to open dump file: %s\n"
1763msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" 1756msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
1764 1757
1765#: src/datastore/gnunet-datastore.c:324 1758#: src/datastore/gnunet-datastore.c:326
1766#, c-format 1759#, c-format
1767msgid "Failed to store item: %s, aborting\n" 1760msgid "Failed to store item: %s, aborting\n"
1768msgstr "Objekt konnte nicht gespeichert werden: %s, Abbruch\n" 1761msgstr "Objekt konnte nicht gespeichert werden: %s, Abbruch\n"
1769 1762
1770#: src/datastore/gnunet-datastore.c:338 1763#: src/datastore/gnunet-datastore.c:340
1771#, c-format 1764#, c-format
1772msgid "Inserted %<PRIu64> records\n" 1765msgid "Inserted %<PRIu64> records\n"
1773msgstr "" 1766msgstr ""
1774 1767
1775#: src/datastore/gnunet-datastore.c:347 src/datastore/gnunet-datastore.c:361 1768#: src/datastore/gnunet-datastore.c:349 src/datastore/gnunet-datastore.c:363
1776#, c-format 1769#, c-format
1777msgid "Short read from file: %zd bytes expecting %zd\n" 1770msgid "Short read from file: %zd bytes expecting %zd\n"
1778msgstr "" 1771msgstr ""
1779 1772
1780#: src/datastore/gnunet-datastore.c:387 1773#: src/datastore/gnunet-datastore.c:389
1781#, fuzzy 1774#, fuzzy
1782msgid "Error queueing datastore PUT operation\n" 1775msgid "Error queueing datastore PUT operation\n"
1783msgstr "Fehler beim Anlegen des Benutzers" 1776msgstr "Fehler beim Anlegen des Benutzers"
1784 1777
1785#: src/datastore/gnunet-datastore.c:430 1778#: src/datastore/gnunet-datastore.c:432
1786msgid "Input file is not of a supported format\n" 1779msgid "Input file is not of a supported format\n"
1787msgstr "" 1780msgstr ""
1788 1781
1789#: src/datastore/gnunet-datastore.c:456 1782#: src/datastore/gnunet-datastore.c:458
1790#, fuzzy 1783#, fuzzy
1791msgid "Failed connecting to the datastore.\n" 1784msgid "Failed connecting to the datastore.\n"
1792msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden." 1785msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden."
1793 1786
1794#: src/datastore/gnunet-datastore.c:468 1787#: src/datastore/gnunet-datastore.c:470
1795#, c-format 1788#, c-format
1796msgid "Please choose at least one operation: %s, %s\n" 1789msgid "Please choose at least one operation: %s, %s\n"
1797msgstr "" 1790msgstr ""
1798 1791
1799#: src/datastore/gnunet-datastore.c:491 1792#: src/datastore/gnunet-datastore.c:493
1800msgid "Dump all records from the datastore" 1793msgid "Dump all records from the datastore"
1801msgstr "" 1794msgstr ""
1802 1795
1803#: src/datastore/gnunet-datastore.c:495 1796#: src/datastore/gnunet-datastore.c:497
1804#, fuzzy 1797#, fuzzy
1805msgid "Insert records into the datastore" 1798msgid "Insert records into the datastore"
1806msgstr "# bytes in der Datenbank" 1799msgstr "# bytes in der Datenbank"
1807 1800
1808#: src/datastore/gnunet-datastore.c:500 1801#: src/datastore/gnunet-datastore.c:502
1809msgid "File to dump or insert" 1802msgid "File to dump or insert"
1810msgstr "" 1803msgstr ""
1811 1804
1812#: src/datastore/gnunet-datastore.c:509 1805#: src/datastore/gnunet-datastore.c:511
1813#, fuzzy 1806#, fuzzy
1814msgid "Manipulate GNUnet datastore" 1807msgid "Manipulate GNUnet datastore"
1815msgstr "sqlite Datenspeicher" 1808msgstr "sqlite Datenspeicher"
1816 1809
1817#: src/datastore/gnunet-service-datastore.c:336 1810#: src/datastore/gnunet-service-datastore.c:338
1818msgid "# bytes expired" 1811msgid "# bytes expired"
1819msgstr "# abgelaufene Bytes" 1812msgstr "# abgelaufene Bytes"
1820 1813
1821#: src/datastore/gnunet-service-datastore.c:418 1814#: src/datastore/gnunet-service-datastore.c:420
1822msgid "# bytes purged (low-priority)" 1815msgid "# bytes purged (low-priority)"
1823msgstr "" 1816msgstr ""
1824 1817
1825#: src/datastore/gnunet-service-datastore.c:560 1818#: src/datastore/gnunet-service-datastore.c:562
1826msgid "# results found" 1819msgid "# results found"
1827msgstr "# gefundene Ergebnisse" 1820msgstr "# gefundene Ergebnisse"
1828 1821
1829#: src/datastore/gnunet-service-datastore.c:601 1822#: src/datastore/gnunet-service-datastore.c:603
1830#, c-format 1823#, c-format
1831msgid "" 1824msgid ""
1832"Insufficient space (%llu bytes are available) to satisfy RESERVE request for " 1825"Insufficient space (%llu bytes are available) to satisfy RESERVE request for "
1833"%llu bytes\n" 1826"%llu bytes\n"
1834msgstr "" 1827msgstr ""
1835 1828
1836#: src/datastore/gnunet-service-datastore.c:612 1829#: src/datastore/gnunet-service-datastore.c:614
1837#, c-format 1830#, c-format
1838msgid "" 1831msgid ""
1839"The requested amount (%llu bytes) is larger than the cache size (%llu " 1832"The requested amount (%llu bytes) is larger than the cache size (%llu "
1840"bytes)\n" 1833"bytes)\n"
1841msgstr "" 1834msgstr ""
1842 1835
1843#: src/datastore/gnunet-service-datastore.c:618 1836#: src/datastore/gnunet-service-datastore.c:620
1844msgid "" 1837msgid ""
1845"Insufficient space to satisfy request and requested amount is larger than " 1838"Insufficient space to satisfy request and requested amount is larger than "
1846"cache size" 1839"cache size"
1847msgstr "" 1840msgstr ""
1848 1841
1849#: src/datastore/gnunet-service-datastore.c:625 1842#: src/datastore/gnunet-service-datastore.c:627
1850msgid "Insufficient space to satisfy request" 1843msgid "Insufficient space to satisfy request"
1851msgstr "" 1844msgstr ""
1852 1845
1853#: src/datastore/gnunet-service-datastore.c:632 1846#: src/datastore/gnunet-service-datastore.c:634
1854#: src/datastore/gnunet-service-datastore.c:687 1847#: src/datastore/gnunet-service-datastore.c:689
1855#: src/datastore/gnunet-service-datastore.c:835 1848#: src/datastore/gnunet-service-datastore.c:837
1856#: src/datastore/gnunet-service-datastore.c:1467 1849#: src/datastore/gnunet-service-datastore.c:1469
1857msgid "# reserved" 1850msgid "# reserved"
1858msgstr "" 1851msgstr ""
1859 1852
1860#: src/datastore/gnunet-service-datastore.c:705 1853#: src/datastore/gnunet-service-datastore.c:707
1861msgid "Could not find matching reservation" 1854msgid "Could not find matching reservation"
1862msgstr "" 1855msgstr ""
1863 1856
1864#: src/datastore/gnunet-service-datastore.c:771 1857#: src/datastore/gnunet-service-datastore.c:773
1865#, c-format 1858#, c-format
1866msgid "Need %llu bytes more space (%llu allowed, using %llu)\n" 1859msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
1867msgstr "" 1860msgstr ""
1868 1861
1869#: src/datastore/gnunet-service-datastore.c:874 1862#: src/datastore/gnunet-service-datastore.c:876
1870#, fuzzy 1863#, fuzzy
1871msgid "# GET requests received" 1864msgid "# GET requests received"
1872msgstr "# Client Trace-Anfragen empfangen" 1865msgstr "# Client Trace-Anfragen empfangen"
1873 1866
1874#: src/datastore/gnunet-service-datastore.c:905 1867#: src/datastore/gnunet-service-datastore.c:907
1875#, fuzzy 1868#, fuzzy
1876msgid "# GET KEY requests received" 1869msgid "# GET KEY requests received"
1877msgstr "# Client Trace-Anfragen empfangen" 1870msgstr "# Client Trace-Anfragen empfangen"
1878 1871
1879#: src/datastore/gnunet-service-datastore.c:918 1872#: src/datastore/gnunet-service-datastore.c:920
1880msgid "# requests filtered by bloomfilter" 1873msgid "# requests filtered by bloomfilter"
1881msgstr "" 1874msgstr ""
1882 1875
1883#: src/datastore/gnunet-service-datastore.c:954 1876#: src/datastore/gnunet-service-datastore.c:956
1884#, fuzzy 1877#, fuzzy
1885msgid "# GET REPLICATION requests received" 1878msgid "# GET REPLICATION requests received"
1886msgstr "# Client Trace-Anfragen empfangen" 1879msgstr "# Client Trace-Anfragen empfangen"
1887 1880
1888#: src/datastore/gnunet-service-datastore.c:987 1881#: src/datastore/gnunet-service-datastore.c:989
1889#, fuzzy 1882#, fuzzy
1890msgid "# GET ZERO ANONYMITY requests received" 1883msgid "# GET ZERO ANONYMITY requests received"
1891msgstr "# Client Trace-Anfragen empfangen" 1884msgstr "# Client Trace-Anfragen empfangen"
1892 1885
1893#: src/datastore/gnunet-service-datastore.c:1034 1886#: src/datastore/gnunet-service-datastore.c:1036
1894msgid "Content not found" 1887msgid "Content not found"
1895msgstr "Kein Inhalt gefunden" 1888msgstr "Kein Inhalt gefunden"
1896 1889
1897#: src/datastore/gnunet-service-datastore.c:1041 1890#: src/datastore/gnunet-service-datastore.c:1043
1898msgid "# bytes removed (explicit request)" 1891msgid "# bytes removed (explicit request)"
1899msgstr "" 1892msgstr ""
1900 1893
1901#: src/datastore/gnunet-service-datastore.c:1086 1894#: src/datastore/gnunet-service-datastore.c:1088
1902#, fuzzy 1895#, fuzzy
1903msgid "# REMOVE requests received" 1896msgid "# REMOVE requests received"
1904msgstr "# Client Trace-Anfragen empfangen" 1897msgstr "# Client Trace-Anfragen empfangen"
1905 1898
1906#: src/datastore/gnunet-service-datastore.c:1135 1899#: src/datastore/gnunet-service-datastore.c:1137
1907#, c-format 1900#, c-format
1908msgid "" 1901msgid ""
1909"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n" 1902"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
1910msgstr "" 1903msgstr ""
1911 1904
1912#: src/datastore/gnunet-service-datastore.c:1141 1905#: src/datastore/gnunet-service-datastore.c:1143
1913#: src/datastore/gnunet-service-datastore.c:1316 1906#: src/datastore/gnunet-service-datastore.c:1318
1914#, c-format 1907#, c-format
1915msgid "New payload: %lld\n" 1908msgid "New payload: %lld\n"
1916msgstr "" 1909msgstr ""
1917 1910
1918#: src/datastore/gnunet-service-datastore.c:1195 1911#: src/datastore/gnunet-service-datastore.c:1197
1919#, c-format 1912#, c-format
1920msgid "Loading `%s' datastore plugin\n" 1913msgid "Loading `%s' datastore plugin\n"
1921msgstr "" 1914msgstr ""
1922 1915
1923#: src/datastore/gnunet-service-datastore.c:1207 1916#: src/datastore/gnunet-service-datastore.c:1209
1924#, fuzzy, c-format 1917#, fuzzy, c-format
1925msgid "Failed to load datastore plugin for `%s'\n" 1918msgid "Failed to load datastore plugin for `%s'\n"
1926msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" 1919msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
1927 1920
1928#: src/datastore/gnunet-service-datastore.c:1267 1921#: src/datastore/gnunet-service-datastore.c:1269
1929msgid "Bloomfilter construction complete.\n" 1922msgid "Bloomfilter construction complete.\n"
1930msgstr "" 1923msgstr ""
1931 1924
1932#: src/datastore/gnunet-service-datastore.c:1323 1925#: src/datastore/gnunet-service-datastore.c:1325
1933msgid "Rebuilding bloomfilter. Please be patient.\n" 1926msgid "Rebuilding bloomfilter. Please be patient.\n"
1934msgstr "" 1927msgstr ""
1935 1928
1936#: src/datastore/gnunet-service-datastore.c:1334 1929#: src/datastore/gnunet-service-datastore.c:1336
1937msgid "Plugin does not support get_keys function. Please fix!\n" 1930msgid "Plugin does not support get_keys function. Please fix!\n"
1938msgstr "" 1931msgstr ""
1939 1932
1940#: src/datastore/gnunet-service-datastore.c:1504 1933#: src/datastore/gnunet-service-datastore.c:1506
1941#, fuzzy, c-format 1934#, fuzzy, c-format
1942msgid "# bytes used in file-sharing datastore `%s'" 1935msgid "# bytes used in file-sharing datastore `%s'"
1943msgstr "# bytes erlaubt in der Datenbank" 1936msgstr "# bytes erlaubt in der Datenbank"
1944 1937
1945#: src/datastore/gnunet-service-datastore.c:1520 1938#: src/datastore/gnunet-service-datastore.c:1522
1946msgid "# quota" 1939msgid "# quota"
1947msgstr "# Kontingent" 1940msgstr "# Kontingent"
1948 1941
1949#: src/datastore/gnunet-service-datastore.c:1525 1942#: src/datastore/gnunet-service-datastore.c:1527
1950msgid "# cache size" 1943msgid "# cache size"
1951msgstr "# Zwischenspeichergröße" 1944msgstr "# Zwischenspeichergröße"
1952 1945
1953#: src/datastore/gnunet-service-datastore.c:1541 1946#: src/datastore/gnunet-service-datastore.c:1543
1954#, c-format 1947#, c-format
1955msgid "Could not use specified filename `%s' for bloomfilter.\n" 1948msgid "Could not use specified filename `%s' for bloomfilter.\n"
1956msgstr "" 1949msgstr ""
1957 1950
1958#: src/datastore/gnunet-service-datastore.c:1559 1951#: src/datastore/gnunet-service-datastore.c:1561
1959#: src/datastore/gnunet-service-datastore.c:1575 1952#: src/datastore/gnunet-service-datastore.c:1577
1960#, fuzzy, c-format 1953#, fuzzy, c-format
1961msgid "Failed to remove bogus bloomfilter file `%s'\n" 1954msgid "Failed to remove bogus bloomfilter file `%s'\n"
1962msgstr "Datei wurde als `%s' gespeichert.\n" 1955msgstr "Datei wurde als `%s' gespeichert.\n"
1963 1956
1964#: src/datastore/gnunet-service-datastore.c:1607 1957#: src/datastore/gnunet-service-datastore.c:1609
1965msgid "Failed to initialize bloomfilter.\n" 1958msgid "Failed to initialize bloomfilter.\n"
1966msgstr "Bloomfilter konnte nicht initialisiert werden.\n" 1959msgstr "Bloomfilter konnte nicht initialisiert werden.\n"
1967 1960
1968#: src/datastore/plugin_datastore_heap.c:891 1961#: src/datastore/plugin_datastore_heap.c:893
1969msgid "Heap database running\n" 1962msgid "Heap database running\n"
1970msgstr "Heap-Datenbank läuft\n" 1963msgstr "Heap-Datenbank läuft\n"
1971 1964
1972#: src/datastore/plugin_datastore_mysql.c:369 1965#: src/datastore/plugin_datastore_mysql.c:371
1973#: src/datastore/plugin_datastore_mysql.c:421 1966#: src/datastore/plugin_datastore_mysql.c:423
1974#: src/datastore/plugin_datastore_mysql.c:1073 1967#: src/datastore/plugin_datastore_mysql.c:1075
1975msgid "MySQL statement run failure" 1968msgid "MySQL statement run failure"
1976msgstr "" 1969msgstr ""
1977 1970
1978#: src/datastore/plugin_datastore_mysql.c:408 1971#: src/datastore/plugin_datastore_mysql.c:410
1979#: src/datastore/plugin_datastore_sqlite.c:676 1972#: src/datastore/plugin_datastore_sqlite.c:678
1980#, fuzzy 1973#, fuzzy
1981msgid "Data too large" 1974msgid "Data too large"
1982msgstr "Anzahl der Werte" 1975msgstr "Anzahl der Werte"
1983 1976
1984#: src/datastore/plugin_datastore_mysql.c:846 1977#: src/datastore/plugin_datastore_mysql.c:848
1985#, fuzzy, c-format 1978#, fuzzy, c-format
1986msgid "`%s' for `%s' failed at %s:%d with error: %s\n" 1979msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
1987msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n" 1980msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n"
1988 1981
1989#: src/datastore/plugin_datastore_mysql.c:1178 1982#: src/datastore/plugin_datastore_mysql.c:1180
1990#: src/psycstore/plugin_psycstore_mysql.c:1934
1991msgid "Mysql database running\n" 1983msgid "Mysql database running\n"
1992msgstr "MySQL-Datenbank läuft\n" 1984msgstr "MySQL-Datenbank läuft\n"
1993 1985
1994#: src/datastore/plugin_datastore_postgres.c:274 1986#: src/datastore/plugin_datastore_postgres.c:276
1995#: src/datastore/plugin_datastore_postgres.c:891 1987#: src/datastore/plugin_datastore_postgres.c:893
1996msgid "Postgress exec failure" 1988msgid "Postgress exec failure"
1997msgstr "" 1989msgstr ""
1998 1990
1999#: src/datastore/plugin_datastore_postgres.c:852 1991#: src/datastore/plugin_datastore_postgres.c:854
2000#, fuzzy 1992#, fuzzy
2001msgid "Failed to drop table from database.\n" 1993msgid "Failed to drop table from database.\n"
2002msgstr "Fehler beim Binden an UDP Port %d.\n" 1994msgstr "Fehler beim Binden an UDP Port %d.\n"
2003 1995
2004#: src/datastore/plugin_datastore_postgres.c:950 1996#: src/datastore/plugin_datastore_postgres.c:952
2005#: src/psycstore/plugin_psycstore_postgres.c:1504
2006msgid "Postgres database running\n" 1997msgid "Postgres database running\n"
2007msgstr "PostgreSQL-Datenbank läuft\n" 1998msgstr "PostgreSQL-Datenbank läuft\n"
2008 1999
2009#: src/datastore/plugin_datastore_sqlite.c:64 2000#: src/datastore/plugin_datastore_sqlite.c:66
2010#: src/testbed/generate-underlay-topology.c:48 2001#: src/testbed/generate-underlay-topology.c:50
2011#: src/testbed/gnunet-daemon-latency-logger.c:53 2002#: src/testbed/gnunet-daemon-latency-logger.c:55
2012#: src/testbed/gnunet-daemon-testbed-underlay.c:57 2003#: src/testbed/gnunet-daemon-testbed-underlay.c:59
2013#, fuzzy, c-format 2004#, fuzzy, c-format
2014msgid "`%s' failed at %s:%u with error: %s" 2005msgid "`%s' failed at %s:%u with error: %s"
2015msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n" 2006msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
2016 2007
2017#: src/datastore/plugin_datastore_sqlite.c:269 2008#: src/datastore/plugin_datastore_sqlite.c:271
2018#: src/namecache/plugin_namecache_sqlite.c:207 2009#: src/namecache/plugin_namecache_sqlite.c:173
2019#: src/namestore/plugin_namestore_sqlite.c:203 2010#: src/namestore/plugin_namestore_sqlite.c:206
2020#: src/peerstore/plugin_peerstore_sqlite.c:533 2011#: src/peerstore/plugin_peerstore_sqlite.c:535
2021#: src/psycstore/plugin_psycstore_sqlite.c:323 2012#: src/reclaim/plugin_reclaim_sqlite.c:212
2022#: src/reclaim/plugin_reclaim_sqlite.c:210
2023#, c-format 2013#, c-format
2024msgid "Unable to initialize SQLite: %s.\n" 2014msgid "Unable to initialize SQLite: %s.\n"
2025msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n" 2015msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
2026 2016
2027#: src/datastore/plugin_datastore_sqlite.c:627 2017#: src/datastore/plugin_datastore_sqlite.c:629
2028msgid "sqlite bind failure" 2018msgid "sqlite bind failure"
2029msgstr "" 2019msgstr ""
2030 2020
2031#: src/datastore/plugin_datastore_sqlite.c:1325 2021#: src/datastore/plugin_datastore_sqlite.c:1327
2032msgid "sqlite version to old to determine size, assuming zero\n" 2022msgid "sqlite version to old to determine size, assuming zero\n"
2033msgstr "" 2023msgstr ""
2034 2024
2035#: src/datastore/plugin_datastore_sqlite.c:1359 2025#: src/datastore/plugin_datastore_sqlite.c:1361
2036#, c-format 2026#, c-format
2037msgid "" 2027msgid ""
2038"Using sqlite page utilization to estimate payload (%llu pages of size %llu " 2028"Using sqlite page utilization to estimate payload (%llu pages of size %llu "
2039"bytes)\n" 2029"bytes)\n"
2040msgstr "" 2030msgstr ""
2041 2031
2042#: src/datastore/plugin_datastore_sqlite.c:1403 2032#: src/datastore/plugin_datastore_sqlite.c:1405
2043#: src/namecache/plugin_namecache_sqlite.c:638 2033#: src/namecache/plugin_namecache_sqlite.c:557
2044#: src/namestore/plugin_namestore_sqlite.c:753 2034#: src/namestore/plugin_namestore_sqlite.c:750
2045#: src/reclaim/plugin_reclaim_sqlite.c:709 2035#: src/reclaim/plugin_reclaim_sqlite.c:711
2046msgid "Sqlite database running\n" 2036msgid "Sqlite database running\n"
2047msgstr "Sqlite-Datenbank läuft\n" 2037msgstr "Sqlite-Datenbank läuft\n"
2048 2038
2049#: src/datastore/plugin_datastore_template.c:251 2039#: src/datastore/plugin_datastore_template.c:253
2050msgid "Template database running\n" 2040msgid "Template database running\n"
2051msgstr "" 2041msgstr ""
2052 2042
2053#: src/dht/gnunet-dht-get.c:156 2043#: src/dht/gnunet-dht-get.c:158
2054#, c-format 2044#, c-format
2055msgid "" 2045msgid ""
2056"Result %d, type %d:\n" 2046"Result %d, type %d:\n"
2057"%.*s\n" 2047"%.*s\n"
2058msgstr "" 2048msgstr ""
2059 2049
2060#: src/dht/gnunet-dht-get.c:157 2050#: src/dht/gnunet-dht-get.c:159
2061#, c-format 2051#, c-format
2062msgid "Result %d, type %d:\n" 2052msgid "Result %d, type %d:\n"
2063msgstr "" 2053msgstr ""
2064 2054
2065#: src/dht/gnunet-dht-get.c:202 2055#: src/dht/gnunet-dht-get.c:204
2066msgid "Must provide key for DHT GET!\n" 2056msgid "Must provide key for DHT GET!\n"
2067msgstr "" 2057msgstr ""
2068 2058
2069#: src/dht/gnunet-dht-get.c:208 src/dht/gnunet-dht-monitor.c:255 2059#: src/dht/gnunet-dht-get.c:210 src/dht/gnunet-dht-monitor.c:257
2070msgid "Failed to connect to DHT service!\n" 2060msgid "Failed to connect to DHT service!\n"
2071msgstr "Verbindung zum DHT-Dienst ist fehlgeschlagen!\n" 2061msgstr "Verbindung zum DHT-Dienst ist fehlgeschlagen!\n"
2072 2062
2073#: src/dht/gnunet-dht-get.c:217 2063#: src/dht/gnunet-dht-get.c:219
2074msgid "Issueing DHT GET with key" 2064msgid "Issuing DHT GET with key"
2075msgstr "" 2065msgstr ""
2076 2066
2077#: src/dht/gnunet-dht-get.c:246 src/dht/gnunet-dht-monitor.c:305 2067#: src/dht/gnunet-dht-get.c:248 src/dht/gnunet-dht-monitor.c:307
2078#: src/dht/gnunet-dht-put.c:196 2068#: src/dht/gnunet-dht-put.c:198
2079msgid "the query key" 2069msgid "the query key"
2080msgstr "" 2070msgstr ""
2081 2071
2082#: src/dht/gnunet-dht-get.c:251 2072#: src/dht/gnunet-dht-get.c:253
2083msgid "how many parallel requests (replicas) to create" 2073msgid "how many parallel requests (replicas) to create"
2084msgstr "" 2074msgstr ""
2085 2075
2086#: src/dht/gnunet-dht-get.c:256 src/dht/gnunet-dht-monitor.c:311 2076#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
2087msgid "the type of data to look for" 2077msgid "the type of data to look for"
2088msgstr "" 2078msgstr ""
2089 2079
2090#: src/dht/gnunet-dht-get.c:261 2080#: src/dht/gnunet-dht-get.c:263
2091msgid "how long to execute this query before giving up?" 2081msgid "how long to execute this query before giving up?"
2092msgstr "" 2082msgstr ""
2093 2083
2094#: src/dht/gnunet-dht-get.c:265 src/dht/gnunet-dht-put.c:200 2084#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
2095msgid "use DHT's demultiplex everywhere option" 2085msgid "use DHT's demultiplex everywhere option"
2096msgstr "" 2086msgstr ""
2097 2087
2098#: src/dht/gnunet-dht-get.c:278 2088#: src/dht/gnunet-dht-get.c:280
2099msgid "Issue a GET request to the GNUnet DHT, prints results." 2089msgid "Issue a GET request to the GNUnet DHT, prints results."
2100msgstr "" 2090msgstr ""
2101 2091
2102#: src/dht/gnunet-dht-monitor.c:317 2092#: src/dht/gnunet-dht-monitor.c:319
2103msgid "how long should the monitor command run" 2093msgid "how long should the monitor command run"
2104msgstr "" 2094msgstr ""
2105 2095
2106#: src/dht/gnunet-dht-monitor.c:322 src/fs/gnunet-download.c:370 2096#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
2107#: src/nse/gnunet-nse-profiler.c:876 2097#: src/nse/gnunet-nse-profiler.c:878
2108msgid "be verbose (print progress information)" 2098msgid "be verbose (print progress information)"
2109msgstr "" 2099msgstr ""
2110 2100
2111#: src/dht/gnunet-dht-monitor.c:335 2101#: src/dht/gnunet-dht-monitor.c:337
2112msgid "Prints all packets that go through the DHT." 2102msgid "Prints all packets that go through the DHT."
2113msgstr "" 2103msgstr ""
2114 2104
2115#: src/dht/gnunet_dht_profiler.c:914 src/testbed/gnunet-testbed-profiler.c:251 2105#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
2116#, c-format 2106#, c-format
2117msgid "Exiting as the number of peers is %u\n" 2107msgid "Exiting as the number of peers is %u\n"
2118msgstr "" 2108msgstr ""
2119 2109
2120#: src/dht/gnunet_dht_profiler.c:947 src/rps/gnunet-rps-profiler.c:2764 2110#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
2121#, fuzzy 2111#, fuzzy
2122msgid "number of peers to start" 2112msgid "number of peers to start"
2123msgstr "Anzahl an Durchläufen" 2113msgstr "Anzahl an Durchläufen"
2124 2114
2125#: src/dht/gnunet_dht_profiler.c:952 2115#: src/dht/gnunet_dht_profiler.c:954
2126msgid "number of PUTs to perform per peer" 2116msgid "number of PUTs to perform per peer"
2127msgstr "" 2117msgstr ""
2128 2118
2129#: src/dht/gnunet_dht_profiler.c:957 src/nse/gnunet-nse-profiler.c:858 2119#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
2130#: src/testbed/gnunet-testbed-profiler.c:302 2120#: src/testbed/gnunet-testbed-profiler.c:304
2131msgid "name of the file with the login information for the testbed" 2121msgid "name of the file with the login information for the testbed"
2132msgstr "" 2122msgstr ""
2133 2123
2134#: src/dht/gnunet_dht_profiler.c:962 2124#: src/dht/gnunet_dht_profiler.c:964
2135msgid "delay between rounds for collecting statistics (default: 30 sec)" 2125msgid "delay between rounds for collecting statistics (default: 30 sec)"
2136msgstr "" 2126msgstr ""
2137 2127
2138#: src/dht/gnunet_dht_profiler.c:967 2128#: src/dht/gnunet_dht_profiler.c:969
2139msgid "delay to start doing PUTs (default: 1 sec)" 2129msgid "delay to start doing PUTs (default: 1 sec)"
2140msgstr "" 2130msgstr ""
2141 2131
2142#: src/dht/gnunet_dht_profiler.c:972 2132#: src/dht/gnunet_dht_profiler.c:974
2143msgid "delay to start doing GETs (default: 5 min)" 2133msgid "delay to start doing GETs (default: 5 min)"
2144msgstr "" 2134msgstr ""
2145 2135
2146#: src/dht/gnunet_dht_profiler.c:977 2136#: src/dht/gnunet_dht_profiler.c:979
2147msgid "replication degree for DHT PUTs" 2137msgid "replication degree for DHT PUTs"
2148msgstr "" 2138msgstr ""
2149 2139
2150#: src/dht/gnunet_dht_profiler.c:982 2140#: src/dht/gnunet_dht_profiler.c:984
2151msgid "chance that a peer is selected at random for PUTs" 2141msgid "chance that a peer is selected at random for PUTs"
2152msgstr "" 2142msgstr ""
2153 2143
2154#: src/dht/gnunet_dht_profiler.c:987 2144#: src/dht/gnunet_dht_profiler.c:989
2155msgid "timeout for DHT PUT and GET requests (default: 1 min)" 2145msgid "timeout for DHT PUT and GET requests (default: 1 min)"
2156msgstr "" 2146msgstr ""
2157 2147
2158#: src/dht/gnunet_dht_profiler.c:1007 2148#: src/dht/gnunet_dht_profiler.c:1009
2159msgid "Measure quality and performance of the DHT service." 2149msgid "Measure quality and performance of the DHT service."
2160msgstr "" 2150msgstr ""
2161 2151
2162#: src/dht/gnunet-dht-put.c:132 2152#: src/dht/gnunet-dht-put.c:134
2163msgid "Must provide KEY and DATA for DHT put!\n" 2153msgid "Must provide KEY and DATA for DHT put!\n"
2164msgstr "" 2154msgstr ""
2165 2155
2166#: src/dht/gnunet-dht-put.c:140 2156#: src/dht/gnunet-dht-put.c:142
2167#, fuzzy 2157#, fuzzy
2168msgid "Could not connect to DHT service!\n" 2158msgid "Could not connect to DHT service!\n"
2169msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n" 2159msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n"
2170 2160
2171#: src/dht/gnunet-dht-put.c:151 2161#: src/dht/gnunet-dht-put.c:153
2172#, c-format 2162#, c-format
2173msgid "Issuing put request for `%s' with data `%s'!\n" 2163msgid "Issuing put request for `%s' with data `%s'!\n"
2174msgstr "" 2164msgstr ""
2175 2165
2176#: src/dht/gnunet-dht-put.c:186 2166#: src/dht/gnunet-dht-put.c:188
2177msgid "the data to insert under the key" 2167msgid "the data to insert under the key"
2178msgstr "" 2168msgstr ""
2179 2169
2180#: src/dht/gnunet-dht-put.c:191 2170#: src/dht/gnunet-dht-put.c:193
2181msgid "how long to store this entry in the dht (in seconds)" 2171msgid "how long to store this entry in the dht (in seconds)"
2182msgstr "" 2172msgstr ""
2183 2173
2184#: src/dht/gnunet-dht-put.c:205 2174#: src/dht/gnunet-dht-put.c:207
2185msgid "how many replicas to create" 2175msgid "how many replicas to create"
2186msgstr "" 2176msgstr ""
2187 2177
2188#: src/dht/gnunet-dht-put.c:209 2178#: src/dht/gnunet-dht-put.c:211
2189msgid "use DHT's record route option" 2179msgid "use DHT's record route option"
2190msgstr "" 2180msgstr ""
2191 2181
2192#: src/dht/gnunet-dht-put.c:214 2182#: src/dht/gnunet-dht-put.c:216
2193msgid "the type to insert data as" 2183msgid "the type to insert data as"
2194msgstr "" 2184msgstr ""
2195 2185
2196#: src/dht/gnunet-dht-put.c:231 2186#: src/dht/gnunet-dht-put.c:233
2197msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY." 2187msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY."
2198msgstr "" 2188msgstr ""
2199 2189
2200#: src/dht/gnunet-service-dht_clients.c:367 2190#: src/dht/gnunet-service-dht_clients.c:369
2201#, fuzzy 2191#, fuzzy
2202msgid "# GET requests from clients injected" 2192msgid "# GET requests from clients injected"
2203msgstr "# gap Anfragen mit taktischer Entscheidung: nicht Antworten" 2193msgstr "# gap Anfragen mit taktischer Entscheidung: nicht Antworten"
2204 2194
2205#: src/dht/gnunet-service-dht_clients.c:481 2195#: src/dht/gnunet-service-dht_clients.c:483
2206#, fuzzy 2196#, fuzzy
2207msgid "# PUT requests received from clients" 2197msgid "# PUT requests received from clients"
2208msgstr "Die `%s' Anfrage, die vom Client empfangen wurde, ist beschädigt.\n" 2198msgstr "Die `%s' Anfrage, die vom Client empfangen wurde, ist beschädigt.\n"
2209 2199
2210#: src/dht/gnunet-service-dht_clients.c:614 2200#: src/dht/gnunet-service-dht_clients.c:616
2211#, fuzzy 2201#, fuzzy
2212msgid "# GET requests received from clients" 2202msgid "# GET requests received from clients"
2213msgstr "Die `%s' Anfrage, die vom Client empfangen wurde, ist beschädigt.\n" 2203msgstr "Die `%s' Anfrage, die vom Client empfangen wurde, ist beschädigt.\n"
2214 2204
2215#: src/dht/gnunet-service-dht_clients.c:840 2205#: src/dht/gnunet-service-dht_clients.c:842
2216#, fuzzy 2206#, fuzzy
2217msgid "# GET STOP requests received from clients" 2207msgid "# GET STOP requests received from clients"
2218msgstr "Die `%s' Anfrage, die vom Client empfangen wurde, ist beschädigt.\n" 2208msgstr "Die `%s' Anfrage, die vom Client empfangen wurde, ist beschädigt.\n"
2219 2209
2220#: src/dht/gnunet-service-dht_clients.c:1025 2210#: src/dht/gnunet-service-dht_clients.c:1027
2221msgid "# Key match, type mismatches in REPLY to CLIENT" 2211msgid "# Key match, type mismatches in REPLY to CLIENT"
2222msgstr "" 2212msgstr ""
2223 2213
2224#: src/dht/gnunet-service-dht_clients.c:1040 2214#: src/dht/gnunet-service-dht_clients.c:1042
2225msgid "# Duplicate REPLIES to CLIENT request dropped" 2215msgid "# Duplicate REPLIES to CLIENT request dropped"
2226msgstr "" 2216msgstr ""
2227 2217
2228#: src/dht/gnunet-service-dht_clients.c:1086 2218#: src/dht/gnunet-service-dht_clients.c:1088
2229#, c-format 2219#, c-format
2230msgid "Unsupported block type (%u) in request!\n" 2220msgid "Unsupported block type (%u) in request!\n"
2231msgstr "" 2221msgstr ""
2232 2222
2233#: src/dht/gnunet-service-dht_clients.c:1093 2223#: src/dht/gnunet-service-dht_clients.c:1095
2234msgid "# RESULTS queued for clients" 2224msgid "# RESULTS queued for clients"
2235msgstr "" 2225msgstr ""
2236 2226
2237#: src/dht/gnunet-service-dht_clients.c:1171 2227#: src/dht/gnunet-service-dht_clients.c:1173
2238msgid "# REPLIES ignored for CLIENTS (no match)" 2228msgid "# REPLIES ignored for CLIENTS (no match)"
2239msgstr "" 2229msgstr ""
2240 2230
2241#: src/dht/gnunet-service-dht_datacache.c:71 2231#: src/dht/gnunet-service-dht_datacache.c:73
2242#, c-format 2232#, c-format
2243msgid "%s request received, but have no datacache!\n" 2233msgid "%s request received, but have no datacache!\n"
2244msgstr "" 2234msgstr ""
2245 2235
2246#: src/dht/gnunet-service-dht_datacache.c:81 2236#: src/dht/gnunet-service-dht_datacache.c:83
2247msgid "# ITEMS stored in datacache" 2237msgid "# ITEMS stored in datacache"
2248msgstr "" 2238msgstr ""
2249 2239
2250#: src/dht/gnunet-service-dht_datacache.c:205 2240#: src/dht/gnunet-service-dht_datacache.c:207
2251msgid "# Good RESULTS found in datacache" 2241msgid "# Good RESULTS found in datacache"
2252msgstr "" 2242msgstr ""
2253 2243
2254#: src/dht/gnunet-service-dht_datacache.c:217 2244#: src/dht/gnunet-service-dht_datacache.c:219
2255msgid "# Duplicate RESULTS found in datacache" 2245msgid "# Duplicate RESULTS found in datacache"
2256msgstr "" 2246msgstr ""
2257 2247
2258#: src/dht/gnunet-service-dht_datacache.c:223 2248#: src/dht/gnunet-service-dht_datacache.c:225
2259msgid "# Invalid RESULTS found in datacache" 2249msgid "# Invalid RESULTS found in datacache"
2260msgstr "" 2250msgstr ""
2261 2251
2262#: src/dht/gnunet-service-dht_datacache.c:229 2252#: src/dht/gnunet-service-dht_datacache.c:231
2263msgid "# Irrelevant RESULTS found in datacache" 2253msgid "# Irrelevant RESULTS found in datacache"
2264msgstr "" 2254msgstr ""
2265 2255
2266#: src/dht/gnunet-service-dht_datacache.c:241 2256#: src/dht/gnunet-service-dht_datacache.c:243
2267msgid "# Unsupported RESULTS found in datacache" 2257msgid "# Unsupported RESULTS found in datacache"
2268msgstr "" 2258msgstr ""
2269 2259
2270#: src/dht/gnunet-service-dht_datacache.c:245 2260#: src/dht/gnunet-service-dht_datacache.c:247
2271#, c-format 2261#, c-format
2272msgid "Unsupported block type (%u) in local response!\n" 2262msgid "Unsupported block type (%u) in local response!\n"
2273msgstr "" 2263msgstr ""
2274 2264
2275#: src/dht/gnunet-service-dht_datacache.c:280 2265#: src/dht/gnunet-service-dht_datacache.c:282
2276msgid "# GET requests given to datacache" 2266msgid "# GET requests given to datacache"
2277msgstr "" 2267msgstr ""
2278 2268
2279#: src/dht/gnunet-service-dht_hello.c:84 2269#: src/dht/gnunet-service-dht_hello.c:86
2280msgid "# HELLOs obtained from peerinfo" 2270msgid "# HELLOs obtained from peerinfo"
2281msgstr "" 2271msgstr ""
2282 2272
2283#: src/dht/gnunet-service-dht_neighbours.c:677 2273#: src/dht/gnunet-service-dht_neighbours.c:679
2284#, fuzzy 2274#, fuzzy
2285msgid "# FIND PEER messages initiated" 2275msgid "# FIND PEER messages initiated"
2286msgstr "# PING Nachrichten erstellt" 2276msgstr "# PING Nachrichten erstellt"
2287 2277
2288#: src/dht/gnunet-service-dht_neighbours.c:850 2278#: src/dht/gnunet-service-dht_neighbours.c:852
2289#, fuzzy 2279#, fuzzy
2290msgid "# requests TTL-dropped" 2280msgid "# requests TTL-dropped"
2291msgstr "# dht Anfragen weitergeleitet" 2281msgstr "# dht Anfragen weitergeleitet"
2292 2282
2293#: src/dht/gnunet-service-dht_neighbours.c:1053 2283#: src/dht/gnunet-service-dht_neighbours.c:1055
2294#: src/dht/gnunet-service-dht_neighbours.c:1096 2284#: src/dht/gnunet-service-dht_neighbours.c:1098
2295msgid "# Peers excluded from routing due to Bloomfilter" 2285msgid "# Peers excluded from routing due to Bloomfilter"
2296msgstr "" 2286msgstr ""
2297 2287
2298#: src/dht/gnunet-service-dht_neighbours.c:1070 2288#: src/dht/gnunet-service-dht_neighbours.c:1072
2299#: src/dht/gnunet-service-dht_neighbours.c:1112 2289#: src/dht/gnunet-service-dht_neighbours.c:1114
2300#, fuzzy 2290#, fuzzy
2301msgid "# Peer selection failed" 2291msgid "# Peer selection failed"
2302msgstr " Verbindung fehlgeschlagen\n" 2292msgstr " Verbindung fehlgeschlagen\n"
2303 2293
2304#: src/dht/gnunet-service-dht_neighbours.c:1269 2294#: src/dht/gnunet-service-dht_neighbours.c:1271
2305#, fuzzy 2295#, fuzzy
2306msgid "# PUT requests routed" 2296msgid "# PUT requests routed"
2307msgstr "# dht Anfragen weitergeleitet" 2297msgstr "# dht Anfragen weitergeleitet"
2308 2298
2309#: src/dht/gnunet-service-dht_neighbours.c:1302 2299#: src/dht/gnunet-service-dht_neighbours.c:1304
2310msgid "# PUT messages queued for transmission" 2300msgid "# PUT messages queued for transmission"
2311msgstr "" 2301msgstr ""
2312 2302
2313#: src/dht/gnunet-service-dht_neighbours.c:1313 2303#: src/dht/gnunet-service-dht_neighbours.c:1315
2314#: src/dht/gnunet-service-dht_neighbours.c:1453 2304#: src/dht/gnunet-service-dht_neighbours.c:1455
2315#: src/dht/gnunet-service-dht_neighbours.c:1556 2305#: src/dht/gnunet-service-dht_neighbours.c:1558
2316msgid "# P2P messages dropped due to full queue" 2306msgid "# P2P messages dropped due to full queue"
2317msgstr "" 2307msgstr ""
2318 2308
2319#: src/dht/gnunet-service-dht_neighbours.c:1398 2309#: src/dht/gnunet-service-dht_neighbours.c:1400
2320#, fuzzy 2310#, fuzzy
2321msgid "# GET requests routed" 2311msgid "# GET requests routed"
2322msgstr "# dht Anfragen weitergeleitet" 2312msgstr "# dht Anfragen weitergeleitet"
2323 2313
2324#: src/dht/gnunet-service-dht_neighbours.c:1441 2314#: src/dht/gnunet-service-dht_neighbours.c:1443
2325msgid "# GET messages queued for transmission" 2315msgid "# GET messages queued for transmission"
2326msgstr "" 2316msgstr ""
2327 2317
2328#: src/dht/gnunet-service-dht_neighbours.c:1571 2318#: src/dht/gnunet-service-dht_neighbours.c:1573
2329msgid "# RESULT messages queued for transmission" 2319msgid "# RESULT messages queued for transmission"
2330msgstr "" 2320msgstr ""
2331 2321
2332#: src/dht/gnunet-service-dht_neighbours.c:1674 2322#: src/dht/gnunet-service-dht_neighbours.c:1676
2333#, fuzzy 2323#, fuzzy
2334msgid "# Expired PUTs discarded" 2324msgid "# Expired PUTs discarded"
2335msgstr "# verworfener Nachrichten" 2325msgstr "# verworfener Nachrichten"
2336 2326
2337#: src/dht/gnunet-service-dht_neighbours.c:1682 2327#: src/dht/gnunet-service-dht_neighbours.c:1684
2338#, fuzzy 2328#, fuzzy
2339msgid "# P2P PUT requests received" 2329msgid "# P2P PUT requests received"
2340msgstr "# Client Trace-Anfragen empfangen" 2330msgstr "# Client Trace-Anfragen empfangen"
2341 2331
2342#: src/dht/gnunet-service-dht_neighbours.c:1686 2332#: src/dht/gnunet-service-dht_neighbours.c:1688
2343#, fuzzy 2333#, fuzzy
2344msgid "# P2P PUT bytes received" 2334msgid "# P2P PUT bytes received"
2345msgstr "# Bytes empfangen über TCP" 2335msgstr "# Bytes empfangen über TCP"
2346 2336
2347#: src/dht/gnunet-service-dht_neighbours.c:1912 2337#: src/dht/gnunet-service-dht_neighbours.c:1914
2348msgid "# FIND PEER requests ignored due to Bloomfilter" 2338msgid "# FIND PEER requests ignored due to Bloomfilter"
2349msgstr "" 2339msgstr ""
2350 2340
2351#: src/dht/gnunet-service-dht_neighbours.c:1920 2341#: src/dht/gnunet-service-dht_neighbours.c:1922
2352msgid "# FIND PEER requests ignored due to lack of HELLO" 2342msgid "# FIND PEER requests ignored due to lack of HELLO"
2353msgstr "" 2343msgstr ""
2354 2344
2355#: src/dht/gnunet-service-dht_neighbours.c:2082 2345#: src/dht/gnunet-service-dht_neighbours.c:2084
2356#, fuzzy 2346#, fuzzy
2357msgid "# P2P GET requests received" 2347msgid "# P2P GET requests received"
2358msgstr "# Client Trace-Anfragen empfangen" 2348msgstr "# Client Trace-Anfragen empfangen"
2359 2349
2360#: src/dht/gnunet-service-dht_neighbours.c:2086 2350#: src/dht/gnunet-service-dht_neighbours.c:2088
2361#, fuzzy 2351#, fuzzy
2362msgid "# P2P GET bytes received" 2352msgid "# P2P GET bytes received"
2363msgstr "# Bytes empfangen über TCP" 2353msgstr "# Bytes empfangen über TCP"
2364 2354
2365#: src/dht/gnunet-service-dht_neighbours.c:2151 2355#: src/dht/gnunet-service-dht_neighbours.c:2153
2366msgid "# P2P FIND PEER requests processed" 2356msgid "# P2P FIND PEER requests processed"
2367msgstr "" 2357msgstr ""
2368 2358
2369#: src/dht/gnunet-service-dht_neighbours.c:2172 2359#: src/dht/gnunet-service-dht_neighbours.c:2174
2370#, fuzzy 2360#, fuzzy
2371msgid "# P2P GET requests ONLY routed" 2361msgid "# P2P GET requests ONLY routed"
2372msgstr "# dht Anfragen weitergeleitet" 2362msgstr "# dht Anfragen weitergeleitet"
2373 2363
2374#: src/dht/gnunet-service-dht_neighbours.c:2349 2364#: src/dht/gnunet-service-dht_neighbours.c:2351
2375#, fuzzy 2365#, fuzzy
2376msgid "# Expired results discarded" 2366msgid "# Expired results discarded"
2377msgstr "# verworfener Nachrichten" 2367msgstr "# verworfener Nachrichten"
2378 2368
2379#: src/dht/gnunet-service-dht_neighbours.c:2365 2369#: src/dht/gnunet-service-dht_neighbours.c:2367
2380msgid "# P2P RESULTS received" 2370msgid "# P2P RESULTS received"
2381msgstr "" 2371msgstr ""
2382 2372
2383#: src/dht/gnunet-service-dht_neighbours.c:2369 2373#: src/dht/gnunet-service-dht_neighbours.c:2371
2384#, fuzzy 2374#, fuzzy
2385msgid "# P2P RESULT bytes received" 2375msgid "# P2P RESULT bytes received"
2386msgstr "# Bytes empfangen über TCP" 2376msgstr "# Bytes empfangen über TCP"
2387 2377
2388#: src/dht/gnunet-service-dht_nse.c:57 2378#: src/dht/gnunet-service-dht_nse.c:59
2389#, fuzzy 2379#, fuzzy
2390msgid "# Network size estimates received" 2380msgid "# Network size estimates received"
2391msgstr "# verschlüsselter PING Nachrichten empfangen" 2381msgstr "# verschlüsselter PING Nachrichten empfangen"
2392 2382
2393#: src/dht/gnunet-service-dht_routing.c:221 2383#: src/dht/gnunet-service-dht_routing.c:223
2394msgid "# Good REPLIES matched against routing table" 2384msgid "# Good REPLIES matched against routing table"
2395msgstr "" 2385msgstr ""
2396 2386
2397#: src/dht/gnunet-service-dht_routing.c:235 2387#: src/dht/gnunet-service-dht_routing.c:237
2398msgid "# Duplicate REPLIES matched against routing table" 2388msgid "# Duplicate REPLIES matched against routing table"
2399msgstr "" 2389msgstr ""
2400 2390
2401#: src/dht/gnunet-service-dht_routing.c:241 2391#: src/dht/gnunet-service-dht_routing.c:243
2402msgid "# Invalid REPLIES matched against routing table" 2392msgid "# Invalid REPLIES matched against routing table"
2403msgstr "" 2393msgstr ""
2404 2394
2405#: src/dht/gnunet-service-dht_routing.c:247 2395#: src/dht/gnunet-service-dht_routing.c:249
2406msgid "# Irrelevant REPLIES matched against routing table" 2396msgid "# Irrelevant REPLIES matched against routing table"
2407msgstr "" 2397msgstr ""
2408 2398
2409#: src/dht/gnunet-service-dht_routing.c:259 2399#: src/dht/gnunet-service-dht_routing.c:261
2410msgid "# Unsupported REPLIES matched against routing table" 2400msgid "# Unsupported REPLIES matched against routing table"
2411msgstr "" 2401msgstr ""
2412 2402
2413#: src/dht/gnunet-service-dht_routing.c:337 2403#: src/dht/gnunet-service-dht_routing.c:339
2414msgid "# Entries removed from routing table" 2404msgid "# Entries removed from routing table"
2415msgstr "" 2405msgstr ""
2416 2406
2417#: src/dht/gnunet-service-dht_routing.c:413 2407#: src/dht/gnunet-service-dht_routing.c:415
2418msgid "# Entries added to routing table" 2408msgid "# Entries added to routing table"
2419msgstr "" 2409msgstr ""
2420 2410
2421#: src/dht/gnunet-service-dht_routing.c:435 2411#: src/dht/gnunet-service-dht_routing.c:437
2422#, fuzzy 2412#, fuzzy
2423msgid "# DHT requests combined" 2413msgid "# DHT requests combined"
2424msgstr "# dht Anfragen weitergeleitet" 2414msgstr "# dht Anfragen weitergeleitet"
2425 2415
2426#: src/dht/plugin_block_dht.c:187 2416#: src/dht/plugin_block_dht.c:189
2427#, fuzzy, c-format 2417#, fuzzy, c-format
2428msgid "Block not of type %u\n" 2418msgid "Block not of type %u\n"
2429msgstr "Kein Transport des Typs %d bekannt.\n" 2419msgstr "Kein Transport des Typs %d bekannt.\n"
2430 2420
2431#: src/dht/plugin_block_dht.c:196 2421#: src/dht/plugin_block_dht.c:198
2432msgid "Size mismatch for block\n" 2422msgid "Size mismatch for block\n"
2433msgstr "" 2423msgstr ""
2434 2424
2435#: src/dht/plugin_block_dht.c:207 2425#: src/dht/plugin_block_dht.c:209
2436#, c-format 2426#, c-format
2437msgid "Block of type %u is malformed\n" 2427msgid "Block of type %u is malformed\n"
2438msgstr "" 2428msgstr ""
2439 2429
2440#: src/dns/gnunet-dns-monitor.c:351 src/dns/gnunet-dns-monitor.c:356 2430#: src/dns/gnunet-dns-monitor.c:353 src/dns/gnunet-dns-monitor.c:358
2441msgid "only monitor DNS queries" 2431msgid "only monitor DNS queries"
2442msgstr "" 2432msgstr ""
2443 2433
2444#: src/dns/gnunet-dns-monitor.c:368 2434#: src/dns/gnunet-dns-monitor.c:370
2445msgid "Monitor DNS queries." 2435msgid "Monitor DNS queries."
2446msgstr "" 2436msgstr ""
2447 2437
2448#: src/dns/gnunet-dns-redirector.c:235 2438#: src/dns/gnunet-dns-redirector.c:237
2449msgid "set A records" 2439msgid "set A records"
2450msgstr "" 2440msgstr ""
2451 2441
2452#: src/dns/gnunet-dns-redirector.c:241 2442#: src/dns/gnunet-dns-redirector.c:243
2453msgid "set AAAA records" 2443msgid "set AAAA records"
2454msgstr "" 2444msgstr ""
2455 2445
2456#: src/dns/gnunet-dns-redirector.c:254 2446#: src/dns/gnunet-dns-redirector.c:256
2457msgid "Change DNS replies to point elsewhere." 2447msgid "Change DNS replies to point elsewhere."
2458msgstr "" 2448msgstr ""
2459 2449
2460#: src/dns/gnunet-service-dns.c:460 2450#: src/dns/gnunet-service-dns.c:462
2461msgid "# DNS requests answered via TUN interface" 2451msgid "# DNS requests answered via TUN interface"
2462msgstr "" 2452msgstr ""
2463 2453
2464#: src/dns/gnunet-service-dns.c:608 2454#: src/dns/gnunet-service-dns.c:610
2465msgid "# DNS exit failed (failed to open socket)" 2455msgid "# DNS exit failed (failed to open socket)"
2466msgstr "" 2456msgstr ""
2467 2457
2468#: src/dns/gnunet-service-dns.c:738 2458#: src/dns/gnunet-service-dns.c:740
2469msgid "# External DNS response discarded (no matching request)" 2459msgid "# External DNS response discarded (no matching request)"
2470msgstr "" 2460msgstr ""
2471 2461
2472#: src/dns/gnunet-service-dns.c:813 2462#: src/dns/gnunet-service-dns.c:815
2473msgid "# Client response discarded (no matching request)" 2463msgid "# Client response discarded (no matching request)"
2474msgstr "" 2464msgstr ""
2475 2465
2476#: src/dns/gnunet-service-dns.c:928 2466#: src/dns/gnunet-service-dns.c:930
2477msgid "Received malformed IPv4-UDP packet on TUN interface.\n" 2467msgid "Received malformed IPv4-UDP packet on TUN interface.\n"
2478msgstr "" 2468msgstr ""
2479 2469
2480#: src/dns/gnunet-service-dns.c:944 2470#: src/dns/gnunet-service-dns.c:946
2481msgid "Received malformed IPv6-UDP packet on TUN interface.\n" 2471msgid "Received malformed IPv6-UDP packet on TUN interface.\n"
2482msgstr "" 2472msgstr ""
2483 2473
2484#: src/dns/gnunet-service-dns.c:953 2474#: src/dns/gnunet-service-dns.c:955
2485#, c-format 2475#, c-format
2486msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n" 2476msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n"
2487msgstr "" 2477msgstr ""
2488 2478
2489#: src/dns/gnunet-service-dns.c:963 2479#: src/dns/gnunet-service-dns.c:965
2490msgid "DNS interceptor got non-DNS packet (dropped)\n" 2480msgid "DNS interceptor got non-DNS packet (dropped)\n"
2491msgstr "" 2481msgstr ""
2492 2482
2493#: src/dns/gnunet-service-dns.c:965 2483#: src/dns/gnunet-service-dns.c:967
2494msgid "# Non-DNS UDP packet received via TUN interface" 2484msgid "# Non-DNS UDP packet received via TUN interface"
2495msgstr "" 2485msgstr ""
2496 2486
2497#: src/dns/gnunet-service-dns.c:1032 2487#: src/dns/gnunet-service-dns.c:1034
2498msgid "# DNS requests received via TUN interface" 2488msgid "# DNS requests received via TUN interface"
2499msgstr "" 2489msgstr ""
2500 2490
2501#: src/dns/gnunet-service-dns.c:1080 src/exit/gnunet-daemon-exit.c:3563 2491#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
2502msgid "need a valid IPv4 or IPv6 address\n" 2492msgid "need a valid IPv4 or IPv6 address\n"
2503msgstr "" 2493msgstr ""
2504 2494
2505#: src/dns/gnunet-service-dns.c:1090 2495#: src/dns/gnunet-service-dns.c:1092
2506#, c-format 2496#, c-format
2507msgid "`%s' must be installed SUID, will not run DNS interceptor\n" 2497msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
2508msgstr "" 2498msgstr ""
2509 2499
2510#: src/dv/gnunet-dv.c:173 2500#: src/dv/gnunet-dv.c:175
2511#, fuzzy 2501#, fuzzy
2512msgid "Print information about DV state" 2502msgid "Print information about DV state"
2513msgstr "Informationen über andere GNUnet Knoten ausgeben." 2503msgstr "Informationen über andere GNUnet Knoten ausgeben."
2514 2504
2515#: src/exit/gnunet-daemon-exit.c:958 2505#: src/exit/gnunet-daemon-exit.c:960
2516#, fuzzy 2506#, fuzzy
2517msgid "# TCP packets sent via TUN" 2507msgid "# TCP packets sent via TUN"
2518msgstr "# Bytes gesendet über TCP" 2508msgstr "# Bytes gesendet über TCP"
2519 2509
2520#: src/exit/gnunet-daemon-exit.c:1059 2510#: src/exit/gnunet-daemon-exit.c:1061
2521#, fuzzy 2511#, fuzzy
2522msgid "# ICMP packets sent via TUN" 2512msgid "# ICMP packets sent via TUN"
2523msgstr "# Bytes gesendet über TCP" 2513msgstr "# Bytes gesendet über TCP"
2524 2514
2525#: src/exit/gnunet-daemon-exit.c:1338 2515#: src/exit/gnunet-daemon-exit.c:1340
2526#, fuzzy 2516#, fuzzy
2527msgid "# UDP packets sent via TUN" 2517msgid "# UDP packets sent via TUN"
2528msgstr "# Bytes gesendet über TCP" 2518msgstr "# Bytes gesendet über TCP"
2529 2519
2530#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570 2520#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
2531#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699 2521#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
2532#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951 2522#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
2533#: src/exit/gnunet-daemon-exit.c:2205 2523#: src/exit/gnunet-daemon-exit.c:2207
2534#, fuzzy 2524#, fuzzy
2535msgid "# Bytes received from CADET" 2525msgid "# Bytes received from CADET"
2536msgstr "# Bytes empfangen über TCP" 2526msgstr "# Bytes empfangen über TCP"
2537 2527
2538#: src/exit/gnunet-daemon-exit.c:1465 2528#: src/exit/gnunet-daemon-exit.c:1467
2539#, fuzzy 2529#, fuzzy
2540msgid "# UDP IP-exit requests received via cadet" 2530msgid "# UDP IP-exit requests received via cadet"
2541msgstr "# Client Trace-Anfragen empfangen" 2531msgstr "# Client Trace-Anfragen empfangen"
2542 2532
2543#: src/exit/gnunet-daemon-exit.c:1573 2533#: src/exit/gnunet-daemon-exit.c:1575
2544#, fuzzy 2534#, fuzzy
2545msgid "# UDP service requests received via cadet" 2535msgid "# UDP service requests received via cadet"
2546msgstr "# Client Trace-Anfragen empfangen" 2536msgstr "# Client Trace-Anfragen empfangen"
2547 2537
2548#: src/exit/gnunet-daemon-exit.c:1613 2538#: src/exit/gnunet-daemon-exit.c:1615
2549#, fuzzy 2539#, fuzzy
2550msgid "# TCP service creation requests received via cadet" 2540msgid "# TCP service creation requests received via cadet"
2551msgstr "# Client Trace-Anfragen empfangen" 2541msgstr "# Client Trace-Anfragen empfangen"
2552 2542
2553#: src/exit/gnunet-daemon-exit.c:1702 2543#: src/exit/gnunet-daemon-exit.c:1704
2554#, fuzzy 2544#, fuzzy
2555msgid "# TCP IP-exit creation requests received via cadet" 2545msgid "# TCP IP-exit creation requests received via cadet"
2556msgstr "# Client Trace-Anfragen empfangen" 2546msgstr "# Client Trace-Anfragen empfangen"
2557 2547
2558#: src/exit/gnunet-daemon-exit.c:1786 2548#: src/exit/gnunet-daemon-exit.c:1788
2559#, fuzzy 2549#, fuzzy
2560msgid "# TCP DATA requests dropped (no session)" 2550msgid "# TCP DATA requests dropped (no session)"
2561msgstr "# gap Anfragen verworfen: Kollision in RT" 2551msgstr "# gap Anfragen verworfen: Kollision in RT"
2562 2552
2563#: src/exit/gnunet-daemon-exit.c:1823 2553#: src/exit/gnunet-daemon-exit.c:1825
2564#, fuzzy 2554#, fuzzy
2565msgid "# TCP data requests received via cadet" 2555msgid "# TCP data requests received via cadet"
2566msgstr "# Client Trace-Anfragen empfangen" 2556msgstr "# Client Trace-Anfragen empfangen"
2567 2557
2568#: src/exit/gnunet-daemon-exit.c:1954 2558#: src/exit/gnunet-daemon-exit.c:1956
2569#, fuzzy 2559#, fuzzy
2570msgid "# ICMP IP-exit requests received via cadet" 2560msgid "# ICMP IP-exit requests received via cadet"
2571msgstr "# Client Trace-Anfragen empfangen" 2561msgstr "# Client Trace-Anfragen empfangen"
2572 2562
2573#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277 2563#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
2574#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:826 2564#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
2575#: src/vpn/gnunet-service-vpn.c:989 src/vpn/gnunet-service-vpn.c:2103 2565#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
2576msgid "# ICMPv4 packets dropped (type not allowed)" 2566msgid "# ICMPv4 packets dropped (type not allowed)"
2577msgstr "" 2567msgstr ""
2578 2568
2579#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336 2569#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
2580#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885 2570#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
2581#: src/vpn/gnunet-service-vpn.c:1022 src/vpn/gnunet-service-vpn.c:2156 2571#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
2582msgid "# ICMPv6 packets dropped (type not allowed)" 2572msgid "# ICMPv6 packets dropped (type not allowed)"
2583msgstr "" 2573msgstr ""
2584 2574
2585#: src/exit/gnunet-daemon-exit.c:2208 2575#: src/exit/gnunet-daemon-exit.c:2210
2586#, fuzzy 2576#, fuzzy
2587msgid "# ICMP service requests received via cadet" 2577msgid "# ICMP service requests received via cadet"
2588msgstr "# Client Trace-Anfragen empfangen" 2578msgstr "# Client Trace-Anfragen empfangen"
2589 2579
2590#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:983 2580#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
2591#: src/vpn/gnunet-service-vpn.c:2094 2581#: src/vpn/gnunet-service-vpn.c:2096
2592msgid "# ICMPv4 packets dropped (impossible PT to v6)" 2582msgid "# ICMPv4 packets dropped (impossible PT to v6)"
2593msgstr "" 2583msgstr ""
2594 2584
2595#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:873 2585#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
2596#: src/vpn/gnunet-service-vpn.c:2128 src/vpn/gnunet-service-vpn.c:2139 2586#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
2597msgid "# ICMPv6 packets dropped (impossible PT to v4)" 2587msgid "# ICMPv6 packets dropped (impossible PT to v4)"
2598msgstr "" 2588msgstr ""
2599 2589
2600#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066 2590#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
2601#, fuzzy 2591#, fuzzy
2602msgid "# Inbound CADET channels created" 2592msgid "# Inbound CADET channels created"
2603msgstr "# PING Nachrichten erstellt" 2593msgstr "# PING Nachrichten erstellt"
2604 2594
2605#: src/exit/gnunet-daemon-exit.c:2520 2595#: src/exit/gnunet-daemon-exit.c:2522
2606#, c-format 2596#, c-format
2607msgid "Got duplicate service records for `%s:%u'\n" 2597msgid "Got duplicate service records for `%s:%u'\n"
2608msgstr "" 2598msgstr ""
2609 2599
2610#: src/exit/gnunet-daemon-exit.c:2539 2600#: src/exit/gnunet-daemon-exit.c:2541
2611#, fuzzy 2601#, fuzzy
2612msgid "# Messages transmitted via cadet channels" 2602msgid "# Messages transmitted via cadet channels"
2613msgstr "# Bytes des Typs %d übertragen" 2603msgstr "# Bytes des Typs %d übertragen"
2614 2604
2615#: src/exit/gnunet-daemon-exit.c:2717 2605#: src/exit/gnunet-daemon-exit.c:2719
2616msgid "# ICMP packets dropped (not allowed)" 2606msgid "# ICMP packets dropped (not allowed)"
2617msgstr "" 2607msgstr ""
2618 2608
2619#: src/exit/gnunet-daemon-exit.c:2725 2609#: src/exit/gnunet-daemon-exit.c:2727
2620msgid "ICMP Packet dropped, have no matching connection information\n" 2610msgid "ICMP Packet dropped, have no matching connection information\n"
2621msgstr "" 2611msgstr ""
2622 2612
2623#: src/exit/gnunet-daemon-exit.c:2799 2613#: src/exit/gnunet-daemon-exit.c:2801
2624msgid "UDP Packet dropped, have no matching connection information\n" 2614msgid "UDP Packet dropped, have no matching connection information\n"
2625msgstr "" 2615msgstr ""
2626 2616
2627#: src/exit/gnunet-daemon-exit.c:2871 2617#: src/exit/gnunet-daemon-exit.c:2873
2628msgid "TCP Packet dropped, have no matching connection information\n" 2618msgid "TCP Packet dropped, have no matching connection information\n"
2629msgstr "" 2619msgstr ""
2630 2620
2631#: src/exit/gnunet-daemon-exit.c:2919 2621#: src/exit/gnunet-daemon-exit.c:2921
2632#, fuzzy 2622#, fuzzy
2633msgid "# Packets received from TUN" 2623msgid "# Packets received from TUN"
2634msgstr "# Bytes empfangen über TCP" 2624msgstr "# Bytes empfangen über TCP"
2635 2625
2636#: src/exit/gnunet-daemon-exit.c:2933 2626#: src/exit/gnunet-daemon-exit.c:2935
2637#, fuzzy 2627#, fuzzy
2638msgid "# Bytes received from TUN" 2628msgid "# Bytes received from TUN"
2639msgstr "# Bytes empfangen über TCP" 2629msgstr "# Bytes empfangen über TCP"
2640 2630
2641#: src/exit/gnunet-daemon-exit.c:2959 2631#: src/exit/gnunet-daemon-exit.c:2961
2642msgid "IPv4 packet options received. Ignored.\n" 2632msgid "IPv4 packet options received. Ignored.\n"
2643msgstr "IPv4-Paketoptionen empfangen, werden ignoriert.\n" 2633msgstr "IPv4-Paketoptionen empfangen, werden ignoriert.\n"
2644 2634
2645#: src/exit/gnunet-daemon-exit.c:2986 2635#: src/exit/gnunet-daemon-exit.c:2988
2646#, c-format 2636#, c-format
2647msgid "IPv4 packet with unsupported next header %u received. Ignored.\n" 2637msgid "IPv4 packet with unsupported next header %u received. Ignored.\n"
2648msgstr "" 2638msgstr ""
2649 2639
2650#: src/exit/gnunet-daemon-exit.c:3032 2640#: src/exit/gnunet-daemon-exit.c:3034
2651#, c-format 2641#, c-format
2652msgid "IPv6 packet with unsupported next header %d received. Ignored.\n" 2642msgid "IPv6 packet with unsupported next header %d received. Ignored.\n"
2653msgstr "" 2643msgstr ""
2654 2644
2655#: src/exit/gnunet-daemon-exit.c:3040 2645#: src/exit/gnunet-daemon-exit.c:3042
2656#, c-format 2646#, c-format
2657msgid "Packet from unknown protocol %u received. Ignored.\n" 2647msgid "Packet from unknown protocol %u received. Ignored.\n"
2658msgstr "" 2648msgstr ""
2659 2649
2660#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253 2650#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
2661#, c-format 2651#, c-format
2662msgid "Option `%s' for domain `%s' is not formatted correctly!\n" 2652msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
2663msgstr "Option »%s« für Domain »%s« ist nicht korrekt formatiert!\n" 2653msgstr "Option »%s« für Domain »%s« ist nicht korrekt formatiert!\n"
2664 2654
2665#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275 2655#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
2666#, c-format 2656#, c-format
2667msgid "`%s' is not a valid port number (for domain `%s')!" 2657msgid "`%s' is not a valid port number (for domain `%s')!"
2668msgstr "" 2658msgstr ""
2669 2659
2670#: src/exit/gnunet-daemon-exit.c:3316 2660#: src/exit/gnunet-daemon-exit.c:3318
2671#, c-format 2661#, c-format
2672msgid "No addresses found for hostname `%s' of service `%s'!\n" 2662msgid "No addresses found for hostname `%s' of service `%s'!\n"
2673msgstr "" 2663msgstr ""
2674 2664
2675#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343 2665#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
2676#, c-format 2666#, c-format
2677msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n" 2667msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
2678msgstr "" 2668msgstr ""
2679 2669
2680#: src/exit/gnunet-daemon-exit.c:3355 2670#: src/exit/gnunet-daemon-exit.c:3357
2681#, c-format 2671#, c-format
2682msgid "No IP addresses found for hostname `%s' of service `%s'!\n" 2672msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
2683msgstr "" 2673msgstr ""
2684 2674
2685#: src/exit/gnunet-daemon-exit.c:3499 2675#: src/exit/gnunet-daemon-exit.c:3501
2686msgid "" 2676msgid ""
2687"This system does not support IPv4, will disable IPv4 functions despite them " 2677"This system does not support IPv4, will disable IPv4 functions despite them "
2688"being enabled in the configuration\n" 2678"being enabled in the configuration\n"
2689msgstr "" 2679msgstr ""
2690 2680
2691#: src/exit/gnunet-daemon-exit.c:3507 2681#: src/exit/gnunet-daemon-exit.c:3509
2692msgid "" 2682msgid ""
2693"This system does not support IPv6, will disable IPv6 functions despite them " 2683"This system does not support IPv6, will disable IPv6 functions despite them "
2694"being enabled in the configuration\n" 2684"being enabled in the configuration\n"
2695msgstr "" 2685msgstr ""
2696 2686
2697#: src/exit/gnunet-daemon-exit.c:3514 2687#: src/exit/gnunet-daemon-exit.c:3516
2698msgid "" 2688msgid ""
2699"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use " 2689"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
2700"ENABLE_IPv4=YES\n" 2690"ENABLE_IPv4=YES\n"
2701msgstr "" 2691msgstr ""
2702 2692
2703#: src/exit/gnunet-daemon-exit.c:3520 2693#: src/exit/gnunet-daemon-exit.c:3522
2704msgid "" 2694msgid ""
2705"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use " 2695"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
2706"ENABLE_IPv6=YES\n" 2696"ENABLE_IPv6=YES\n"
2707msgstr "" 2697msgstr ""
2708 2698
2709#: src/exit/gnunet-daemon-exit.c:3688 2699#: src/exit/gnunet-daemon-exit.c:3690
2710msgid "Must be a number" 2700msgid "Must be a number"
2711msgstr "Muss eine Zahl sein" 2701msgstr "Muss eine Zahl sein"
2712 2702
2713#: src/exit/gnunet-daemon-exit.c:3803 2703#: src/exit/gnunet-daemon-exit.c:3805
2714#, c-format 2704#, c-format
2715msgid "`%s' must be installed SUID, EXIT will not work\n" 2705msgid "`%s' must be installed SUID, EXIT will not work\n"
2716msgstr "" 2706msgstr ""
2717 2707
2718#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202 2708#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
2719msgid "No useful service enabled. Exiting.\n" 2709msgid "No useful service enabled. Exiting.\n"
2720msgstr "" 2710msgstr ""
2721 2711
2722#: src/exit/gnunet-daemon-exit.c:3964 2712#: src/exit/gnunet-daemon-exit.c:3966
2723msgid "Daemon to run to provide an IP exit node for the VPN" 2713msgid "Daemon to run to provide an IP exit node for the VPN"
2724msgstr "" 2714msgstr ""
2725 2715
2726#: src/fragmentation/defragmentation.c:273 2716#: src/fragmentation/defragmentation.c:275
2727msgid "# acknowledgements sent for fragment" 2717msgid "# acknowledgements sent for fragment"
2728msgstr "" 2718msgstr ""
2729 2719
2730#: src/fragmentation/defragmentation.c:466 2720#: src/fragmentation/defragmentation.c:468
2731#: src/transport/plugin_transport_wlan.c:1552 2721#: src/transport/plugin_transport_wlan.c:1554
2732#, fuzzy 2722#, fuzzy
2733msgid "# fragments received" 2723msgid "# fragments received"
2734msgstr "# verworfener Nachrichten" 2724msgstr "# verworfener Nachrichten"
2735 2725
2736#: src/fragmentation/defragmentation.c:536 2726#: src/fragmentation/defragmentation.c:538
2737#, fuzzy 2727#, fuzzy
2738msgid "# duplicate fragments received" 2728msgid "# duplicate fragments received"
2739msgstr "# Bytes empfangen über TCP" 2729msgstr "# Bytes empfangen über TCP"
2740 2730
2741#: src/fragmentation/defragmentation.c:554 2731#: src/fragmentation/defragmentation.c:556
2742msgid "# messages defragmented" 2732msgid "# messages defragmented"
2743msgstr "# defragmentierter Nachrichten" 2733msgstr "# defragmentierter Nachrichten"
2744 2734
2745#: src/fragmentation/fragmentation.c:238 2735#: src/fragmentation/fragmentation.c:240
2746#, fuzzy 2736#, fuzzy
2747msgid "# fragments transmitted" 2737msgid "# fragments transmitted"
2748msgstr "# Selbstbekanntmachungen übertragen" 2738msgstr "# Selbstbekanntmachungen übertragen"
2749 2739
2750#: src/fragmentation/fragmentation.c:243 2740#: src/fragmentation/fragmentation.c:245
2751#, fuzzy 2741#, fuzzy
2752msgid "# fragments retransmitted" 2742msgid "# fragments retransmitted"
2753msgstr "# Selbstbekanntmachungen übertragen" 2743msgstr "# Selbstbekanntmachungen übertragen"
2754 2744
2755#: src/fragmentation/fragmentation.c:276 2745#: src/fragmentation/fragmentation.c:278
2756#, fuzzy 2746#, fuzzy
2757msgid "# fragments wrap arounds" 2747msgid "# fragments wrap arounds"
2758msgstr "# verworfener Nachrichten" 2748msgstr "# verworfener Nachrichten"
2759 2749
2760#: src/fragmentation/fragmentation.c:323 2750#: src/fragmentation/fragmentation.c:325
2761msgid "# messages fragmented" 2751msgid "# messages fragmented"
2762msgstr "# fragmentierter Nachrichten" 2752msgstr "# fragmentierter Nachrichten"
2763 2753
2764#: src/fragmentation/fragmentation.c:329 2754#: src/fragmentation/fragmentation.c:331
2765msgid "# total size of fragmented messages" 2755msgid "# total size of fragmented messages"
2766msgstr "" 2756msgstr ""
2767 2757
2768#: src/fragmentation/fragmentation.c:454 2758#: src/fragmentation/fragmentation.c:456
2769#, fuzzy 2759#, fuzzy
2770msgid "# fragment acknowledgements received" 2760msgid "# fragment acknowledgements received"
2771msgstr "# Knotenankündigungen empfangen" 2761msgstr "# Knotenankündigungen empfangen"
2772 2762
2773#: src/fragmentation/fragmentation.c:461 2763#: src/fragmentation/fragmentation.c:463
2774msgid "# bits removed from fragmentation ACKs" 2764msgid "# bits removed from fragmentation ACKs"
2775msgstr "" 2765msgstr ""
2776 2766
2777#: src/fragmentation/fragmentation.c:485 2767#: src/fragmentation/fragmentation.c:487
2778#, fuzzy 2768#, fuzzy
2779msgid "# fragmentation transmissions completed" 2769msgid "# fragmentation transmissions completed"
2780msgstr "# Klartext PONG Nachrichten empfangen" 2770msgstr "# Klartext PONG Nachrichten empfangen"
2781 2771
2782#: src/fs/fs_api.c:497 2772#: src/fs/fs_api.c:499
2783#, fuzzy, c-format 2773#, fuzzy, c-format
2784msgid "Could not open file `%s': %s" 2774msgid "Could not open file `%s': %s"
2785msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n" 2775msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n"
2786 2776
2787#: src/fs/fs_api.c:508 2777#: src/fs/fs_api.c:510
2788#, fuzzy, c-format 2778#, fuzzy, c-format
2789msgid "Could not read file `%s': %s" 2779msgid "Could not read file `%s': %s"
2790msgstr "`%s' konnte nicht aufgelöst werden: %s\n" 2780msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
2791 2781
2792#: src/fs/fs_api.c:516 2782#: src/fs/fs_api.c:518
2793#, c-format 2783#, c-format
2794msgid "Short read reading from file `%s'!" 2784msgid "Short read reading from file `%s'!"
2795msgstr "" 2785msgstr ""
2796 2786
2797#: src/fs/fs_api.c:1124 2787#: src/fs/fs_api.c:1126
2798#, fuzzy, c-format 2788#, fuzzy, c-format
2799msgid "Failed to resume publishing information `%s': %s\n" 2789msgid "Failed to resume publishing information `%s': %s\n"
2800msgstr "Datei wurde als `%s' gespeichert.\n" 2790msgstr "Datei wurde als `%s' gespeichert.\n"
2801 2791
2802#: src/fs/fs_api.c:1644 2792#: src/fs/fs_api.c:1646
2803#, c-format 2793#, c-format
2804msgid "Failure while resuming publishing operation `%s': %s\n" 2794msgid "Failure while resuming publishing operation `%s': %s\n"
2805msgstr "" 2795msgstr ""
2806 2796
2807#: src/fs/fs_api.c:1660 2797#: src/fs/fs_api.c:1662
2808#, fuzzy, c-format 2798#, fuzzy, c-format
2809msgid "Failed to resume publishing operation `%s': %s\n" 2799msgid "Failed to resume publishing operation `%s': %s\n"
2810msgstr "Datei wurde als `%s' gespeichert.\n" 2800msgstr "Datei wurde als `%s' gespeichert.\n"
2811 2801
2812#: src/fs/fs_api.c:2320 2802#: src/fs/fs_api.c:2322
2813#, c-format 2803#, c-format
2814msgid "Failure while resuming unindexing operation `%s': %s\n" 2804msgid "Failure while resuming unindexing operation `%s': %s\n"
2815msgstr "" 2805msgstr ""
2816 2806
2817#: src/fs/fs_api.c:2330 2807#: src/fs/fs_api.c:2332
2818#, fuzzy, c-format 2808#, fuzzy, c-format
2819msgid "Failed to resume unindexing operation `%s': %s\n" 2809msgid "Failed to resume unindexing operation `%s': %s\n"
2820msgstr "Datei wurde als `%s' gespeichert.\n" 2810msgstr "Datei wurde als `%s' gespeichert.\n"
2821 2811
2822#: src/fs/fs_api.c:2458 src/fs/fs_api.c:2704 2812#: src/fs/fs_api.c:2460 src/fs/fs_api.c:2706
2823#, fuzzy, c-format 2813#, fuzzy, c-format
2824msgid "Failed to resume sub-download `%s': %s\n" 2814msgid "Failed to resume sub-download `%s': %s\n"
2825msgstr "Datei wurde als `%s' gespeichert.\n" 2815msgstr "Datei wurde als `%s' gespeichert.\n"
2826 2816
2827#: src/fs/fs_api.c:2476 2817#: src/fs/fs_api.c:2478
2828#, fuzzy, c-format 2818#, fuzzy, c-format
2829msgid "Failed to resume sub-search `%s': %s\n" 2819msgid "Failed to resume sub-search `%s': %s\n"
2830msgstr "Datei wurde als `%s' gespeichert.\n" 2820msgstr "Datei wurde als `%s' gespeichert.\n"
2831 2821
2832#: src/fs/fs_api.c:2491 src/fs/fs_api.c:2510 src/fs/fs_api.c:3014 2822#: src/fs/fs_api.c:2493 src/fs/fs_api.c:2512 src/fs/fs_api.c:3016
2833#, c-format 2823#, c-format
2834msgid "Failure while resuming search operation `%s': %s\n" 2824msgid "Failure while resuming search operation `%s': %s\n"
2835msgstr "" 2825msgstr ""
2836 2826
2837#: src/fs/fs_api.c:2694 2827#: src/fs/fs_api.c:2696
2838#, c-format 2828#, c-format
2839msgid "Failed to resume sub-download `%s': could not open file `%s'\n" 2829msgid "Failed to resume sub-download `%s': could not open file `%s'\n"
2840msgstr "" 2830msgstr ""
2841 2831
2842#: src/fs/fs_api.c:2957 2832#: src/fs/fs_api.c:2959
2843msgid "Could not resume running search, will resume as paused search\n" 2833msgid "Could not resume running search, will resume as paused search\n"
2844msgstr "" 2834msgstr ""
2845 2835
2846#: src/fs/fs_api.c:3052 2836#: src/fs/fs_api.c:3054
2847#, c-format 2837#, c-format
2848msgid "Failure while resuming download operation `%s': %s\n" 2838msgid "Failure while resuming download operation `%s': %s\n"
2849msgstr "" 2839msgstr ""
2850 2840
2851#: src/fs/fs_directory.c:211 2841#: src/fs/fs_directory.c:213
2852#, fuzzy 2842#, fuzzy
2853msgid "MAGIC mismatch. This is not a GNUnet directory.\n" 2843msgid "MAGIC mismatch. This is not a GNUnet directory.\n"
2854msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 2844msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
2855 2845
2856#: src/fs/fs_download.c:308 2846#: src/fs/fs_download.c:310
2857#, fuzzy 2847#, fuzzy
2858msgid "" 2848msgid ""
2859"Recursive downloads of directories larger than 4 GB are not supported on 32-" 2849"Recursive downloads of directories larger than 4 GB are not supported on 32-"
2860"bit systems\n" 2850"bit systems\n"
2861msgstr "Rekursiver Download des Verzeichnisses `%s' bei %llu von %llu Bytes.\n" 2851msgstr "Rekursiver Download des Verzeichnisses `%s' bei %llu von %llu Bytes.\n"
2862 2852
2863#: src/fs/fs_download.c:333 2853#: src/fs/fs_download.c:335
2864msgid "Directory too large for system address space\n" 2854msgid "Directory too large for system address space\n"
2865msgstr "" 2855msgstr ""
2866 2856
2867#: src/fs/fs_download.c:345 2857#: src/fs/fs_download.c:347
2868#, fuzzy, c-format 2858#, fuzzy, c-format
2869msgid "" 2859msgid ""
2870"Failed to access full directroy contents of `%s' for recursive download\n" 2860"Failed to access full directroy contents of `%s' for recursive download\n"
2871msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 2861msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
2872 2862
2873#: src/fs/fs_download.c:532 src/fs/fs_download.c:544 2863#: src/fs/fs_download.c:534 src/fs/fs_download.c:546
2874#, fuzzy, c-format 2864#, fuzzy, c-format
2875msgid "Failed to open file `%s' for writing" 2865msgid "Failed to open file `%s' for writing"
2876msgstr "Datei wurde als `%s' gespeichert.\n" 2866msgstr "Datei wurde als `%s' gespeichert.\n"
2877 2867
2878#: src/fs/fs_download.c:954 2868#: src/fs/fs_download.c:956
2879#, fuzzy, c-format 2869#, fuzzy, c-format
2880msgid "Failed to create directory for recursive download of `%s'\n" 2870msgid "Failed to create directory for recursive download of `%s'\n"
2881msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 2871msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
2882 2872
2883#: src/fs/fs_download.c:1045 2873#: src/fs/fs_download.c:1047
2884#, c-format 2874#, c-format
2885msgid "" 2875msgid ""
2886"Internal error or bogus download URI (expected %u bytes at depth %u and " 2876"Internal error or bogus download URI (expected %u bytes at depth %u and "
2887"offset %llu/%llu, got %u bytes)" 2877"offset %llu/%llu, got %u bytes)"
2888msgstr "" 2878msgstr ""
2889 2879
2890#: src/fs/fs_download.c:1073 2880#: src/fs/fs_download.c:1075
2891msgid "internal error decrypting content" 2881msgid "internal error decrypting content"
2892msgstr "" 2882msgstr ""
2893 2883
2894#: src/fs/fs_download.c:1097 2884#: src/fs/fs_download.c:1099
2895#, fuzzy, c-format 2885#, fuzzy, c-format
2896msgid "Download failed: could not open file `%s': %s" 2886msgid "Download failed: could not open file `%s': %s"
2897msgstr "Datei wurde als `%s' gespeichert.\n" 2887msgstr "Datei wurde als `%s' gespeichert.\n"
2898 2888
2899#: src/fs/fs_download.c:1109 2889#: src/fs/fs_download.c:1111
2900#, fuzzy, c-format 2890#, fuzzy, c-format
2901msgid "Failed to seek to offset %llu in file `%s': %s" 2891msgid "Failed to seek to offset %llu in file `%s': %s"
2902msgstr "Datei wurde als `%s' gespeichert.\n" 2892msgstr "Datei wurde als `%s' gespeichert.\n"
2903 2893
2904#: src/fs/fs_download.c:1118 2894#: src/fs/fs_download.c:1120
2905#, c-format 2895#, c-format
2906msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s" 2896msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s"
2907msgstr "" 2897msgstr ""
2908 2898
2909#: src/fs/fs_download.c:1218 2899#: src/fs/fs_download.c:1220
2910msgid "internal error decoding tree" 2900msgid "internal error decoding tree"
2911msgstr "" 2901msgstr ""
2912 2902
2913#: src/fs/fs_download.c:1883 2903#: src/fs/fs_download.c:1885
2914#, fuzzy 2904#, fuzzy
2915msgid "Invalid URI" 2905msgid "Invalid URI"
2916msgstr "Ungültiger Parameter: `%s'\n" 2906msgstr "Ungültiger Parameter: `%s'\n"
2917 2907
2918#: src/fs/fs_getopt.c:224 2908#: src/fs/fs_getopt.c:235
2919#, c-format 2909#, c-format
2920msgid "" 2910msgid ""
2921"Unknown metadata type in metadata option `%s'. Using metadata type " 2911"Unknown metadata type in metadata option `%s'. Using metadata type "
2922"`unknown' instead.\n" 2912"`unknown' instead.\n"
2923msgstr "" 2913msgstr ""
2924 2914
2925#: src/fs/fs_list_indexed.c:150 2915#: src/fs/fs_list_indexed.c:152
2926#, fuzzy, c-format 2916#, fuzzy, c-format
2927msgid "Failed to receive response from `%s' service.\n" 2917msgid "Failed to receive response from `%s' service.\n"
2928msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n" 2918msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n"
2929 2919
2930#: src/fs/fs_list_indexed.c:194 2920#: src/fs/fs_list_indexed.c:196
2931#, fuzzy, c-format 2921#, fuzzy, c-format
2932msgid "Failed to not connect to `%s' service.\n" 2922msgid "Failed to not connect to `%s' service.\n"
2933msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" 2923msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
2934 2924
2935#: src/fs/fs_misc.c:126 2925#: src/fs/fs_misc.c:128
2936#, fuzzy, c-format 2926#, fuzzy, c-format
2937msgid "Did not find mime type `%s' in extension list.\n" 2927msgid "Did not find mime type `%s' in extension list.\n"
2938msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n" 2928msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n"
2939 2929
2940#: src/fs/fs_namespace.c:205 2930#: src/fs/fs_namespace.c:207
2941#, fuzzy, c-format 2931#, fuzzy, c-format
2942msgid "Failed to open `%s' for writing: %s\n" 2932msgid "Failed to open `%s' for writing: %s\n"
2943msgstr "Datei wurde als `%s' gespeichert.\n" 2933msgstr "Datei wurde als `%s' gespeichert.\n"
2944 2934
2945#: src/fs/fs_namespace.c:230 2935#: src/fs/fs_namespace.c:232
2946#, fuzzy, c-format 2936#, fuzzy, c-format
2947msgid "Failed to write `%s': %s\n" 2937msgid "Failed to write `%s': %s\n"
2948msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 2938msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
2949 2939
2950#: src/fs/fs_namespace.c:322 2940#: src/fs/fs_namespace.c:324
2951#, fuzzy, c-format 2941#, fuzzy, c-format
2952msgid "Failed to read `%s': %s\n" 2942msgid "Failed to read `%s': %s\n"
2953msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 2943msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
2954 2944
2955#: src/fs/fs_namespace.c:468 2945#: src/fs/fs_namespace.c:470
2956#, fuzzy 2946#, fuzzy
2957msgid "Failed to connect to datastore." 2947msgid "Failed to connect to datastore."
2958msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden." 2948msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden."
2959 2949
2960#: src/fs/fs_publish.c:125 src/fs/fs_publish.c:436 2950#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:438
2961#, fuzzy, c-format 2951#, fuzzy, c-format
2962msgid "Publishing failed: %s" 2952msgid "Publishing failed: %s"
2963msgstr "" 2953msgstr ""
2964"\n" 2954"\n"
2965"Fehler beim Uploaden der Datei: %s\n" 2955"Fehler beim Uploaden der Datei: %s\n"
2966 2956
2967#: src/fs/fs_publish.c:722 src/fs/fs_publish.c:776 src/fs/fs_publish.c:821 2957#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
2968#: src/fs/fs_publish.c:842 src/fs/fs_publish.c:872 src/fs/fs_publish.c:1138 2958#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
2969#, fuzzy, c-format 2959#, fuzzy, c-format
2970msgid "Can not index file `%s': %s. Will try to insert instead.\n" 2960msgid "Can not index file `%s': %s. Will try to insert instead.\n"
2971msgstr "Indizieren der Datei `%s' schlug fehl. Versuch Datei einzufügen...\n" 2961msgstr "Indizieren der Datei `%s' schlug fehl. Versuch Datei einzufügen...\n"
2972 2962
2973#: src/fs/fs_publish.c:778 2963#: src/fs/fs_publish.c:780
2974#, fuzzy 2964#, fuzzy
2975msgid "error on index-start request to `fs' service" 2965msgid "error on index-start request to `fs' service"
2976msgstr "Anfrage an den Transportdienst konnte nicht gestellt werden\n" 2966msgstr "Anfrage an den Transportdienst konnte nicht gestellt werden\n"
2977 2967
2978#: src/fs/fs_publish.c:823 2968#: src/fs/fs_publish.c:825
2979msgid "failed to compute hash" 2969msgid "failed to compute hash"
2980msgstr "" 2970msgstr ""
2981 2971
2982#: src/fs/fs_publish.c:843 2972#: src/fs/fs_publish.c:845
2983msgid "filename too long" 2973msgid "filename too long"
2984msgstr "Dateiname zu lang" 2974msgstr "Dateiname zu lang"
2985 2975
2986#: src/fs/fs_publish.c:874 2976#: src/fs/fs_publish.c:876
2987#, fuzzy 2977#, fuzzy
2988msgid "could not connect to `fs' service" 2978msgid "could not connect to `fs' service"
2989msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n" 2979msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
2990 2980
2991#: src/fs/fs_publish.c:900 2981#: src/fs/fs_publish.c:902
2992#, fuzzy, c-format 2982#, fuzzy, c-format
2993msgid "Failed to get file identifiers for `%s'\n" 2983msgid "Failed to get file identifiers for `%s'\n"
2994msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 2984msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
2995 2985
2996#: src/fs/fs_publish.c:989 src/fs/fs_publish.c:1025 2986#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
2997msgid "Can not create LOC URI. Will continue with CHK instead.\n" 2987msgid "Can not create LOC URI. Will continue with CHK instead.\n"
2998msgstr "" 2988msgstr ""
2999 2989
3000#: src/fs/fs_publish.c:1092 2990#: src/fs/fs_publish.c:1094
3001#, fuzzy, c-format 2991#, fuzzy, c-format
3002msgid "Recursive upload failed at `%s': %s" 2992msgid "Recursive upload failed at `%s': %s"
3003msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" 2993msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
3004 2994
3005#: src/fs/fs_publish.c:1100 2995#: src/fs/fs_publish.c:1102
3006#, fuzzy, c-format 2996#, fuzzy, c-format
3007msgid "Recursive upload failed: %s" 2997msgid "Recursive upload failed: %s"
3008msgstr "" 2998msgstr ""
3009"\n" 2999"\n"
3010"Fehler beim Uploaden der Datei: %s\n" 3000"Fehler beim Uploaden der Datei: %s\n"
3011 3001
3012#: src/fs/fs_publish.c:1140 3002#: src/fs/fs_publish.c:1142
3013#, fuzzy 3003#, fuzzy
3014msgid "needs to be an actual file" 3004msgid "needs to be an actual file"
3015msgstr "`%s' ist keine normale Datei.\n" 3005msgstr "`%s' ist keine normale Datei.\n"
3016 3006
3017#: src/fs/fs_publish.c:1379 3007#: src/fs/fs_publish.c:1381
3018#, fuzzy, c-format 3008#, fuzzy, c-format
3019msgid "Datastore failure: %s" 3009msgid "Datastore failure: %s"
3020msgstr "Verbindung fehlgeschlagen: %s\n" 3010msgstr "Verbindung fehlgeschlagen: %s\n"
3021 3011
3022#: src/fs/fs_publish.c:1470 3012#: src/fs/fs_publish.c:1472
3023#, c-format 3013#, c-format
3024msgid "Reserving space for %u entries and %llu bytes for publication\n" 3014msgid "Reserving space for %u entries and %llu bytes for publication\n"
3025msgstr "" 3015msgstr ""
3026 3016
3027#: src/fs/fs_publish_ksk.c:218 3017#: src/fs/fs_publish_ksk.c:220
3028#, fuzzy 3018#, fuzzy
3029msgid "Could not connect to datastore." 3019msgid "Could not connect to datastore."
3030msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n" 3020msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
3031 3021
3032#: src/fs/fs_publish_ublock.c:239 3022#: src/fs/fs_publish_ublock.c:241
3033#, fuzzy 3023#, fuzzy
3034msgid "Internal error." 3024msgid "Internal error."
3035msgstr "Unbekannter Fehler.\n" 3025msgstr "Unbekannter Fehler.\n"
3036 3026
3037#: src/fs/fs_search.c:820 src/fs/fs_search.c:890 3027#: src/fs/fs_search.c:822 src/fs/fs_search.c:892
3038#, fuzzy, c-format 3028#, fuzzy, c-format
3039msgid "Failed to parse URI `%s': %s\n" 3029msgid "Failed to parse URI `%s': %s\n"
3040msgstr "Datei wurde als `%s' gespeichert.\n" 3030msgstr "Datei wurde als `%s' gespeichert.\n"
3041 3031
3042#: src/fs/fs_search.c:977 3032#: src/fs/fs_search.c:979
3043#, c-format 3033#, c-format
3044msgid "Got result with unknown block type `%d', ignoring" 3034msgid "Got result with unknown block type `%d', ignoring"
3045msgstr "" 3035msgstr ""
3046 3036
3047#: src/fs/fs_unindex.c:61 3037#: src/fs/fs_unindex.c:63
3048msgid "Failed to find given position in file" 3038msgid "Failed to find given position in file"
3049msgstr "" 3039msgstr ""
3050 3040
3051#: src/fs/fs_unindex.c:66 3041#: src/fs/fs_unindex.c:68
3052#, fuzzy 3042#, fuzzy
3053msgid "Failed to read file" 3043msgid "Failed to read file"
3054msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" 3044msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
3055 3045
3056#: src/fs/fs_unindex.c:273 3046#: src/fs/fs_unindex.c:275
3057#, fuzzy 3047#, fuzzy
3058msgid "Error communicating with `fs' service." 3048msgid "Error communicating with `fs' service."
3059msgstr "Informationen über andere GNUnet Knoten ausgeben." 3049msgstr "Informationen über andere GNUnet Knoten ausgeben."
3060 3050
3061#: src/fs/fs_unindex.c:324 3051#: src/fs/fs_unindex.c:326
3062#, fuzzy 3052#, fuzzy
3063msgid "Failed to connect to FS service for unindexing." 3053msgid "Failed to connect to FS service for unindexing."
3064msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden." 3054msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden."
3065 3055
3066#: src/fs/fs_unindex.c:374 src/fs/fs_unindex.c:386 3056#: src/fs/fs_unindex.c:376 src/fs/fs_unindex.c:388
3067#, fuzzy 3057#, fuzzy
3068msgid "Failed to get KSKs from directory scan." 3058msgid "Failed to get KSKs from directory scan."
3069msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 3059msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
3070 3060
3071#: src/fs/fs_unindex.c:382 3061#: src/fs/fs_unindex.c:384
3072#, fuzzy, c-format 3062#, fuzzy, c-format
3073msgid "Internal error scanning `%s'.\n" 3063msgid "Internal error scanning `%s'.\n"
3074msgstr "Absicherung fehlgeschlagen bei %s:%d.\n" 3064msgstr "Absicherung fehlgeschlagen bei %s:%d.\n"
3075 3065
3076#: src/fs/fs_unindex.c:441 3066#: src/fs/fs_unindex.c:443
3077#, fuzzy, c-format 3067#, fuzzy, c-format
3078msgid "Failed to remove UBlock: %s\n" 3068msgid "Failed to remove UBlock: %s\n"
3079msgstr "Datei wurde als `%s' gespeichert.\n" 3069msgstr "Datei wurde als `%s' gespeichert.\n"
3080 3070
3081#: src/fs/fs_unindex.c:586 src/fs/fs_unindex.c:650 3071#: src/fs/fs_unindex.c:588 src/fs/fs_unindex.c:652
3082#, fuzzy 3072#, fuzzy
3083msgid "Failed to connect to `datastore' service." 3073msgid "Failed to connect to `datastore' service."
3084msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" 3074msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
3085 3075
3086#: src/fs/fs_unindex.c:663 3076#: src/fs/fs_unindex.c:665
3087#, fuzzy 3077#, fuzzy
3088msgid "Failed to open file for unindexing." 3078msgid "Failed to open file for unindexing."
3089msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden." 3079msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden."
3090 3080
3091#: src/fs/fs_unindex.c:702 3081#: src/fs/fs_unindex.c:704
3092#, fuzzy 3082#, fuzzy
3093msgid "Failed to compute hash of file." 3083msgid "Failed to compute hash of file."
3094msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden." 3084msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden."
3095 3085
3096#: src/fs/fs_uri.c:232 3086#: src/fs/fs_uri.c:234
3097#, fuzzy, no-c-format 3087#, fuzzy, no-c-format
3098msgid "Malformed KSK URI (`%' must be followed by HEX number)" 3088msgid "Malformed KSK URI (`%' must be followed by HEX number)"
3099msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n" 3089msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n"
3100 3090
3101#: src/fs/fs_uri.c:291 3091#: src/fs/fs_uri.c:293
3102#, fuzzy 3092#, fuzzy
3103msgid "Malformed KSK URI (must not begin or end with `+')" 3093msgid "Malformed KSK URI (must not begin or end with `+')"
3104msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n" 3094msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n"
3105 3095
3106#: src/fs/fs_uri.c:309 3096#: src/fs/fs_uri.c:311
3107#, fuzzy 3097#, fuzzy
3108msgid "Malformed KSK URI (`++' not allowed)" 3098msgid "Malformed KSK URI (`++' not allowed)"
3109msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n" 3099msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n"
3110 3100
3111#: src/fs/fs_uri.c:316 3101#: src/fs/fs_uri.c:318
3112#, fuzzy 3102#, fuzzy
3113msgid "Malformed KSK URI (quotes not balanced)" 3103msgid "Malformed KSK URI (quotes not balanced)"
3114msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n" 3104msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n"
3115 3105
3116#: src/fs/fs_uri.c:386 3106#: src/fs/fs_uri.c:388
3117msgid "Malformed SKS URI (wrong syntax)" 3107msgid "Malformed SKS URI (wrong syntax)"
3118msgstr "" 3108msgstr ""
3119 3109
3120#: src/fs/fs_uri.c:427 3110#: src/fs/fs_uri.c:429
3121msgid "Malformed CHK URI (wrong syntax)" 3111msgid "Malformed CHK URI (wrong syntax)"
3122msgstr "" 3112msgstr ""
3123 3113
3124#: src/fs/fs_uri.c:442 3114#: src/fs/fs_uri.c:444
3125msgid "Malformed CHK URI (failed to decode CHK)" 3115msgid "Malformed CHK URI (failed to decode CHK)"
3126msgstr "" 3116msgstr ""
3127 3117
3128#: src/fs/fs_uri.c:521 3118#: src/fs/fs_uri.c:523
3129msgid "LOC URI malformed (wrong syntax)" 3119msgid "LOC URI malformed (wrong syntax)"
3130msgstr "" 3120msgstr ""
3131 3121
3132#: src/fs/fs_uri.c:536 3122#: src/fs/fs_uri.c:538
3133msgid "LOC URI malformed (no CHK)" 3123msgid "LOC URI malformed (no CHK)"
3134msgstr "" 3124msgstr ""
3135 3125
3136#: src/fs/fs_uri.c:546 3126#: src/fs/fs_uri.c:548
3137msgid "LOC URI malformed (missing LOC)" 3127msgid "LOC URI malformed (missing LOC)"
3138msgstr "" 3128msgstr ""
3139 3129
3140#: src/fs/fs_uri.c:554 3130#: src/fs/fs_uri.c:556
3141msgid "LOC URI malformed (wrong syntax for public key)" 3131msgid "LOC URI malformed (wrong syntax for public key)"
3142msgstr "" 3132msgstr ""
3143 3133
3144#: src/fs/fs_uri.c:562 3134#: src/fs/fs_uri.c:564
3145msgid "LOC URI malformed (could not decode public key)" 3135msgid "LOC URI malformed (could not decode public key)"
3146msgstr "" 3136msgstr ""
3147 3137
3148#: src/fs/fs_uri.c:568 3138#: src/fs/fs_uri.c:570
3149msgid "LOC URI malformed (could not find signature)" 3139msgid "LOC URI malformed (could not find signature)"
3150msgstr "" 3140msgstr ""
3151 3141
3152#: src/fs/fs_uri.c:574 3142#: src/fs/fs_uri.c:576
3153msgid "LOC URI malformed (wrong syntax for signature)" 3143msgid "LOC URI malformed (wrong syntax for signature)"
3154msgstr "" 3144msgstr ""
3155 3145
3156#: src/fs/fs_uri.c:583 3146#: src/fs/fs_uri.c:585
3157msgid "LOC URI malformed (could not decode signature)" 3147msgid "LOC URI malformed (could not decode signature)"
3158msgstr "" 3148msgstr ""
3159 3149
3160#: src/fs/fs_uri.c:589 3150#: src/fs/fs_uri.c:591
3161msgid "LOC URI malformed (wrong syntax for expiration time)" 3151msgid "LOC URI malformed (wrong syntax for expiration time)"
3162msgstr "" 3152msgstr ""
3163 3153
3164#: src/fs/fs_uri.c:595 3154#: src/fs/fs_uri.c:597
3165msgid "LOC URI malformed (could not parse expiration time)" 3155msgid "LOC URI malformed (could not parse expiration time)"
3166msgstr "" 3156msgstr ""
3167 3157
3168#: src/fs/fs_uri.c:607 3158#: src/fs/fs_uri.c:609
3169msgid "LOC URI malformed (signature failed validation)" 3159msgid "LOC URI malformed (signature failed validation)"
3170msgstr "" 3160msgstr ""
3171 3161
3172#: src/fs/fs_uri.c:641 3162#: src/fs/fs_uri.c:643
3173#, fuzzy 3163#, fuzzy
3174msgid "invalid argument" 3164msgid "invalid argument"
3175msgstr "Ungültiges Argument »%s«\n" 3165msgstr "Ungültiges Argument »%s«\n"
3176 3166
3177#: src/fs/fs_uri.c:653 3167#: src/fs/fs_uri.c:655
3178msgid "Unrecognized URI type" 3168msgid "Unrecognized URI type"
3179msgstr "" 3169msgstr ""
3180 3170
3181#: src/fs/fs_uri.c:1057 src/fs/fs_uri.c:1084 3171#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
3182msgid "No keywords specified!\n" 3172msgid "No keywords specified!\n"
3183msgstr "Keine Schlüsselwörter angegeben!\n" 3173msgstr "Keine Schlüsselwörter angegeben!\n"
3184 3174
3185#: src/fs/fs_uri.c:1090 3175#: src/fs/fs_uri.c:1092
3186msgid "Number of double-quotes not balanced!\n" 3176msgid "Number of double-quotes not balanced!\n"
3187msgstr "" 3177msgstr ""
3188 3178
3189#: src/fs/gnunet-auto-share.c:230 3179#: src/fs/gnunet-auto-share.c:232
3190#, fuzzy, c-format 3180#, fuzzy, c-format
3191msgid "Failed to load state: %s\n" 3181msgid "Failed to load state: %s\n"
3192msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 3182msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
3193 3183
3194#: src/fs/gnunet-auto-share.c:283 src/fs/gnunet-auto-share.c:293 3184#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
3195#: src/fs/gnunet-auto-share.c:303 3185#: src/fs/gnunet-auto-share.c:305
3196#, fuzzy, c-format 3186#, fuzzy, c-format
3197msgid "Failed to save state to file %s\n" 3187msgid "Failed to save state to file %s\n"
3198msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 3188msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
3199 3189
3200#: src/fs/gnunet-auto-share.c:405 3190#: src/fs/gnunet-auto-share.c:407
3201#, c-format 3191#, c-format
3202msgid "Publication of `%s' done\n" 3192msgid "Publication of `%s' done\n"
3203msgstr "" 3193msgstr ""
3204 3194
3205#: src/fs/gnunet-auto-share.c:492 3195#: src/fs/gnunet-auto-share.c:494
3206#, c-format 3196#, c-format
3207msgid "Publishing `%s'\n" 3197msgid "Publishing `%s'\n"
3208msgstr "" 3198msgstr ""
3209 3199
3210#: src/fs/gnunet-auto-share.c:502 3200#: src/fs/gnunet-auto-share.c:504
3211#, fuzzy, c-format 3201#, fuzzy, c-format
3212msgid "Failed to run `%s'\n" 3202msgid "Failed to run `%s'\n"
3213msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 3203msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
3214 3204
3215#: src/fs/gnunet-auto-share.c:711 3205#: src/fs/gnunet-auto-share.c:713
3216#, fuzzy, c-format 3206#, fuzzy, c-format
3217msgid "" 3207msgid ""
3218"You must specify one and only one directory name for automatic publication.\n" 3208"You must specify one and only one directory name for automatic publication.\n"
3219msgstr "Sie dürfen nur eine Datei zum Deindizieren angeben.\n" 3209msgstr "Sie dürfen nur eine Datei zum Deindizieren angeben.\n"
3220 3210
3221#: src/fs/gnunet-auto-share.c:765 src/fs/gnunet-publish.c:898 3211#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
3222msgid "set the desired LEVEL of sender-anonymity" 3212msgid "set the desired LEVEL of sender-anonymity"
3223msgstr "Gewünschten Grad LEVEL an Sender-Anonymität festlegen" 3213msgstr "Gewünschten Grad LEVEL an Sender-Anonymität festlegen"
3224 3214
3225#: src/fs/gnunet-auto-share.c:770 src/fs/gnunet-publish.c:902 3215#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
3226msgid "disable adding the creation time to the metadata of the uploaded file" 3216msgid "disable adding the creation time to the metadata of the uploaded file"
3227msgstr "" 3217msgstr ""
3228 3218
3229#: src/fs/gnunet-auto-share.c:775 src/fs/gnunet-publish.c:907 3219#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
3230msgid "do not use libextractor to add keywords or metadata" 3220msgid "do not use libextractor to add keywords or metadata"
3231msgstr "" 3221msgstr ""
3232 3222
3233#: src/fs/gnunet-auto-share.c:781 src/fs/gnunet-publish.c:942 3223#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
3234msgid "specify the priority of the content" 3224msgid "specify the priority of the content"
3235msgstr "Die Priorität des Inhalts angeben" 3225msgstr "Die Priorität des Inhalts angeben"
3236 3226
3237#: src/fs/gnunet-auto-share.c:787 src/fs/gnunet-publish.c:954 3227#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
3238msgid "set the desired replication LEVEL" 3228msgid "set the desired replication LEVEL"
3239msgstr "" 3229msgstr ""
3240 3230
3241#: src/fs/gnunet-auto-share.c:811 3231#: src/fs/gnunet-auto-share.c:813
3242msgid "Automatically publish files from a directory on GNUnet" 3232msgid "Automatically publish files from a directory on GNUnet"
3243msgstr "" 3233msgstr ""
3244 3234
3245#: src/fs/gnunet-daemon-fsprofiler.c:646 3235#: src/fs/gnunet-daemon-fsprofiler.c:648
3246msgid "Daemon to use file-sharing to measure its performance." 3236msgid "Daemon to use file-sharing to measure its performance."
3247msgstr "" 3237msgstr ""
3248 3238
3249#: src/fs/gnunet-directory.c:51 3239#: src/fs/gnunet-directory.c:53
3250#, c-format 3240#, c-format
3251msgid "\t<original file embedded in %u bytes of meta data>\n" 3241msgid "\t<original file embedded in %u bytes of meta data>\n"
3252msgstr "" 3242msgstr ""
3253 3243
3254#: src/fs/gnunet-directory.c:103 3244#: src/fs/gnunet-directory.c:105
3255#, fuzzy, c-format 3245#, fuzzy, c-format
3256msgid "Directory `%s' meta data:\n" 3246msgid "Directory `%s' meta data:\n"
3257msgstr "==> Verzeichnis `%s':\n" 3247msgstr "==> Verzeichnis `%s':\n"
3258 3248
3259#: src/fs/gnunet-directory.c:106 3249#: src/fs/gnunet-directory.c:108
3260#, fuzzy, c-format 3250#, fuzzy, c-format
3261msgid "Directory `%s' contents:\n" 3251msgid "Directory `%s' contents:\n"
3262msgstr "==> Verzeichnis `%s':\n" 3252msgstr "==> Verzeichnis `%s':\n"
3263 3253
3264#: src/fs/gnunet-directory.c:141 3254#: src/fs/gnunet-directory.c:143
3265#, fuzzy 3255#, fuzzy
3266msgid "You must specify a filename to inspect.\n" 3256msgid "You must specify a filename to inspect.\n"
3267msgstr "Sie müssen eine Liste von Dateien zum Einfügen angeben.\n" 3257msgstr "Sie müssen eine Liste von Dateien zum Einfügen angeben.\n"
3268 3258
3269#: src/fs/gnunet-directory.c:154 3259#: src/fs/gnunet-directory.c:156
3270#, fuzzy, c-format 3260#, fuzzy, c-format
3271msgid "Failed to read directory `%s'\n" 3261msgid "Failed to read directory `%s'\n"
3272msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 3262msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
3273 3263
3274#: src/fs/gnunet-directory.c:163 3264#: src/fs/gnunet-directory.c:165
3275#, fuzzy, c-format 3265#, fuzzy, c-format
3276msgid "`%s' is not a GNUnet directory\n" 3266msgid "`%s' is not a GNUnet directory\n"
3277msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 3267msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
3278 3268
3279#: src/fs/gnunet-directory.c:192 3269#: src/fs/gnunet-directory.c:194
3280#, fuzzy 3270#, fuzzy
3281msgid "Display contents of a GNUnet directory" 3271msgid "Display contents of a GNUnet directory"
3282msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 3272msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
3283 3273
3284#: src/fs/gnunet-download.c:137 3274#: src/fs/gnunet-download.c:139
3285#, fuzzy, c-format 3275#, fuzzy, c-format
3286msgid "Starting download `%s'.\n" 3276msgid "Starting download `%s'.\n"
3287msgstr "Collection `%s' begonnen.\n" 3277msgstr "Collection `%s' begonnen.\n"
3288 3278
3289#: src/fs/gnunet-download.c:147 3279#: src/fs/gnunet-download.c:149
3290#, fuzzy 3280#, fuzzy
3291msgid "<unknown time>" 3281msgid "<unknown time>"
3292msgstr "Unbekannter Fehler" 3282msgstr "Unbekannter Fehler"
3293 3283
3294#: src/fs/gnunet-download.c:156 3284#: src/fs/gnunet-download.c:158
3295#, c-format 3285#, c-format
3296msgid "" 3286msgid ""
3297"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to " 3287"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to "
3298"download\n" 3288"download\n"
3299msgstr "" 3289msgstr ""
3300 3290
3301#: src/fs/gnunet-download.c:182 3291#: src/fs/gnunet-download.c:184
3302#, fuzzy, c-format 3292#, fuzzy, c-format
3303msgid "Error downloading: %s.\n" 3293msgid "Error downloading: %s.\n"
3304msgstr "Fehler beim Download: %s\n" 3294msgstr "Fehler beim Download: %s\n"
3305 3295
3306#: src/fs/gnunet-download.c:199 3296#: src/fs/gnunet-download.c:201
3307#, fuzzy, c-format 3297#, fuzzy, c-format
3308msgid "Downloading `%s' done (%s/s).\n" 3298msgid "Downloading `%s' done (%s/s).\n"
3309msgstr "Dateien aus dem GNUnet herunterladen." 3299msgstr "Dateien aus dem GNUnet herunterladen."
3310 3300
3311#: src/fs/gnunet-download.c:214 src/fs/gnunet-publish.c:293 3301#: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
3312#: src/fs/gnunet-search.c:210 src/fs/gnunet-unindex.c:105 3302#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
3313#, c-format 3303#, c-format
3314msgid "Unexpected status: %d\n" 3304msgid "Unexpected status: %d\n"
3315msgstr "" 3305msgstr ""
3316 3306
3317#: src/fs/gnunet-download.c:244 3307#: src/fs/gnunet-download.c:246
3318#, fuzzy 3308#, fuzzy
3319msgid "You need to specify a URI argument.\n" 3309msgid "You need to specify a URI argument.\n"
3320msgstr "Sie müssen einen Empfänger angeben!\n" 3310msgstr "Sie müssen einen Empfänger angeben!\n"
3321 3311
3322#: src/fs/gnunet-download.c:251 src/fs/gnunet-publish.c:724 3312#: src/fs/gnunet-download.c:253 src/fs/gnunet-publish.c:727
3323#, fuzzy, c-format 3313#, fuzzy, c-format
3324msgid "Failed to parse URI: %s\n" 3314msgid "Failed to parse URI: %s\n"
3325msgstr "Datei `%s' hat URI: %s\n" 3315msgstr "Datei `%s' hat URI: %s\n"
3326 3316
3327#: src/fs/gnunet-download.c:262 3317#: src/fs/gnunet-download.c:264
3328msgid "Only CHK or LOC URIs supported.\n" 3318msgid "Only CHK or LOC URIs supported.\n"
3329msgstr "" 3319msgstr ""
3330 3320
3331#: src/fs/gnunet-download.c:271 3321#: src/fs/gnunet-download.c:273
3332msgid "Target filename must be specified.\n" 3322msgid "Target filename must be specified.\n"
3333msgstr "" 3323msgstr ""
3334 3324
3335#: src/fs/gnunet-download.c:289 src/fs/gnunet-publish.c:868 3325#: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
3336#: src/fs/gnunet-search.c:268 src/fs/gnunet-unindex.c:137 3326#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
3337#, fuzzy, c-format 3327#, fuzzy, c-format
3338msgid "Could not initialize `%s' subsystem.\n" 3328msgid "Could not initialize `%s' subsystem.\n"
3339msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" 3329msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
3340 3330
3341#: src/fs/gnunet-download.c:337 src/fs/gnunet-search.c:311 3331#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
3342msgid "set the desired LEVEL of receiver-anonymity" 3332msgid "set the desired LEVEL of receiver-anonymity"
3343msgstr "Den Grad LEVEL der gewünschten Empfänger-Anonymität setzen" 3333msgstr "Den Grad LEVEL der gewünschten Empfänger-Anonymität setzen"
3344 3334
3345#: src/fs/gnunet-download.c:342 3335#: src/fs/gnunet-download.c:344
3346msgid "delete incomplete downloads (when aborted with CTRL-C)" 3336msgid "delete incomplete downloads (when aborted with CTRL-C)"
3347msgstr "" 3337msgstr ""
3348 3338
3349#: src/fs/gnunet-download.c:347 src/fs/gnunet-search.c:317 3339#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
3350msgid "only search the local peer (no P2P network search)" 3340msgid "only search the local peer (no P2P network search)"
3351msgstr "" 3341msgstr ""
3352 3342
3353#: src/fs/gnunet-download.c:352 3343#: src/fs/gnunet-download.c:354
3354msgid "write the file to FILENAME" 3344msgid "write the file to FILENAME"
3355msgstr "Die Datei in DATEINAME schreiben" 3345msgstr "Die Datei in DATEINAME schreiben"
3356 3346
3357#: src/fs/gnunet-download.c:357 3347#: src/fs/gnunet-download.c:359
3358msgid "set the maximum number of parallel downloads that is allowed" 3348msgid "set the maximum number of parallel downloads that is allowed"
3359msgstr "" 3349msgstr ""
3360 3350
3361#: src/fs/gnunet-download.c:362 3351#: src/fs/gnunet-download.c:364
3362msgid "set the maximum number of parallel requests for blocks that is allowed" 3352msgid "set the maximum number of parallel requests for blocks that is allowed"
3363msgstr "" 3353msgstr ""
3364 3354
3365#: src/fs/gnunet-download.c:366 3355#: src/fs/gnunet-download.c:368
3366msgid "download a GNUnet directory recursively" 3356msgid "download a GNUnet directory recursively"
3367msgstr "Das GNUnet-Verzeichnis rekursiv herunterladen" 3357msgstr "Das GNUnet-Verzeichnis rekursiv herunterladen"
3368 3358
3369#: src/fs/gnunet-download.c:384 3359#: src/fs/gnunet-download.c:386
3370msgid "" 3360msgid ""
3371"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/" 3361"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
3372"chk/...)" 3362"chk/...)"
3373msgstr "" 3363msgstr ""
3374 3364
3375#: src/fs/gnunet-fs.c:117 3365#: src/fs/gnunet-fs.c:119
3376msgid "print a list of all indexed files" 3366msgid "print a list of all indexed files"
3377msgstr "" 3367msgstr ""
3378 3368
3379#: src/fs/gnunet-fs.c:128 3369#: src/fs/gnunet-fs.c:130
3380#, fuzzy 3370#, fuzzy
3381msgid "Special file-sharing operations" 3371msgid "Special file-sharing operations"
3382msgstr "Alle Optionen anzeigen" 3372msgstr "Alle Optionen anzeigen"
3383 3373
3384#: src/fs/gnunet-fs-profiler.c:209 3374#: src/fs/gnunet-fs-profiler.c:211
3385msgid "run the experiment with COUNT peers" 3375msgid "run the experiment with COUNT peers"
3386msgstr "" 3376msgstr ""
3387 3377
3388#: src/fs/gnunet-fs-profiler.c:215 3378#: src/fs/gnunet-fs-profiler.c:217
3389msgid "specifies name of a file with the HOSTS the testbed should use" 3379msgid "specifies name of a file with the HOSTS the testbed should use"
3390msgstr "" 3380msgstr ""
3391 3381
3392#: src/fs/gnunet-fs-profiler.c:221 3382#: src/fs/gnunet-fs-profiler.c:223
3393msgid "automatically terminate experiment after DELAY" 3383msgid "automatically terminate experiment after DELAY"
3394msgstr "" 3384msgstr ""
3395 3385
3396#: src/fs/gnunet-fs-profiler.c:231 3386#: src/fs/gnunet-fs-profiler.c:233
3397msgid "run a testbed to measure file-sharing performance" 3387msgid "run a testbed to measure file-sharing performance"
3398msgstr "" 3388msgstr ""
3399 3389
3400#: src/fs/gnunet-publish.c:217 src/fs/gnunet-publish.c:229 3390#: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
3401#, c-format 3391#, c-format
3402msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" 3392msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
3403msgstr "" 3393msgstr ""
3404 3394
3405#: src/fs/gnunet-publish.c:237 3395#: src/fs/gnunet-publish.c:239
3406#, fuzzy, c-format 3396#, fuzzy, c-format
3407msgid "Error publishing: %s.\n" 3397msgid "Error publishing: %s.\n"
3408msgstr "Fehler beim Download: %s\n" 3398msgstr "Fehler beim Download: %s\n"
3409 3399
3410#: src/fs/gnunet-publish.c:244 3400#: src/fs/gnunet-publish.c:246
3411#, c-format 3401#, c-format
3412msgid "Publishing `%s' done.\n" 3402msgid "Publishing `%s' done.\n"
3413msgstr "" 3403msgstr ""
3414 3404
3415#: src/fs/gnunet-publish.c:249 3405#: src/fs/gnunet-publish.c:251
3416#, fuzzy, c-format 3406#, fuzzy, c-format
3417msgid "URI is `%s'.\n" 3407msgid "URI is `%s'.\n"
3418msgstr "Ich bin Peer `%s'.\n" 3408msgstr "Ich bin Peer `%s'.\n"
3419 3409
3420#: src/fs/gnunet-publish.c:257 3410#: src/fs/gnunet-publish.c:259
3421#, fuzzy, c-format 3411#, fuzzy, c-format
3422msgid "Namespace URI is `%s'.\n" 3412msgid "Namespace URI is `%s'.\n"
3423msgstr "Ich bin Peer `%s'.\n" 3413msgstr "Ich bin Peer `%s'.\n"
3424 3414
3425#: src/fs/gnunet-publish.c:273 3415#: src/fs/gnunet-publish.c:275
3426#, fuzzy 3416#, fuzzy
3427msgid "Starting cleanup after abort\n" 3417msgid "Starting cleanup after abort\n"
3428msgstr "`%s' Startvorgang abgeschlossen.\n" 3418msgstr "`%s' Startvorgang abgeschlossen.\n"
3429 3419
3430#: src/fs/gnunet-publish.c:280 3420#: src/fs/gnunet-publish.c:282
3431#, fuzzy 3421#, fuzzy
3432msgid "Cleanup after abort completed.\n" 3422msgid "Cleanup after abort completed.\n"
3433msgstr "`%s' Startvorgang abgeschlossen.\n" 3423msgstr "`%s' Startvorgang abgeschlossen.\n"
3434 3424
3435#: src/fs/gnunet-publish.c:286 3425#: src/fs/gnunet-publish.c:288
3436#, fuzzy 3426#, fuzzy
3437msgid "Cleanup after abort failed.\n" 3427msgid "Cleanup after abort failed.\n"
3438msgstr "`%s' Startvorgang abgeschlossen.\n" 3428msgstr "`%s' Startvorgang abgeschlossen.\n"
3439 3429
3440#: src/fs/gnunet-publish.c:428 3430#: src/fs/gnunet-publish.c:430
3441#, fuzzy, c-format 3431#, fuzzy, c-format
3442msgid "Meta data for file `%s' (%s)\n" 3432msgid "Meta data for file `%s' (%s)\n"
3443msgstr "Daten des Moduls `%s' werden aktualisiert\n" 3433msgstr "Daten des Moduls `%s' werden aktualisiert\n"
3444 3434
3445#: src/fs/gnunet-publish.c:433 3435#: src/fs/gnunet-publish.c:435
3446#, fuzzy, c-format 3436#, fuzzy, c-format
3447msgid "Keywords for file `%s' (%s)\n" 3437msgid "Keywords for file `%s' (%s)\n"
3448msgstr "Schlüsselwörter für Datei `%s':\n" 3438msgstr "Schlüsselwörter für Datei `%s':\n"
3449 3439
3450#: src/fs/gnunet-publish.c:587 3440#: src/fs/gnunet-publish.c:590
3451#, fuzzy 3441#, fuzzy
3452msgid "Could not publish\n" 3442msgid "Could not publish\n"
3453msgstr "`%s': Kann nicht senden.\n" 3443msgstr "`%s': Kann nicht senden.\n"
3454 3444
3455#: src/fs/gnunet-publish.c:612 3445#: src/fs/gnunet-publish.c:615
3456#, fuzzy 3446#, fuzzy
3457msgid "Could not start publishing.\n" 3447msgid "Could not start publishing.\n"
3458msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" 3448msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
3459 3449
3460#: src/fs/gnunet-publish.c:646 3450#: src/fs/gnunet-publish.c:649
3461#, fuzzy, c-format 3451#, fuzzy, c-format
3462msgid "Scanning directory `%s'.\n" 3452msgid "Scanning directory `%s'.\n"
3463msgstr "==> Verzeichnis `%s':\n" 3453msgstr "==> Verzeichnis `%s':\n"
3464 3454
3465#: src/fs/gnunet-publish.c:650 3455#: src/fs/gnunet-publish.c:653
3466#, fuzzy, c-format 3456#, fuzzy, c-format
3467msgid "Scanning file `%s'.\n" 3457msgid "Scanning file `%s'.\n"
3468msgstr "Binde Konfigurationsdatei `%s' ein\n" 3458msgstr "Binde Konfigurationsdatei `%s' ein\n"
3469 3459
3470#: src/fs/gnunet-publish.c:656 3460#: src/fs/gnunet-publish.c:659
3471#, c-format 3461#, c-format
3472msgid "There was trouble processing file `%s', skipping it.\n" 3462msgid "There was trouble processing file `%s', skipping it.\n"
3473msgstr "" 3463msgstr ""
3474 3464
3475#: src/fs/gnunet-publish.c:663 3465#: src/fs/gnunet-publish.c:666
3476#, fuzzy 3466#, fuzzy
3477msgid "Preprocessing complete.\n" 3467msgid "Preprocessing complete.\n"
3478msgstr "GNUnet wurde erfolgreich heruntergefahren.\n" 3468msgstr "GNUnet wurde erfolgreich heruntergefahren.\n"
3479 3469
3480#: src/fs/gnunet-publish.c:668 3470#: src/fs/gnunet-publish.c:671
3481#, c-format 3471#, c-format
3482msgid "Extracting meta data from file `%s' complete.\n" 3472msgid "Extracting meta data from file `%s' complete.\n"
3483msgstr "" 3473msgstr ""
3484 3474
3485#: src/fs/gnunet-publish.c:675 3475#: src/fs/gnunet-publish.c:678
3486msgid "Meta data extraction has finished.\n" 3476msgid "Meta data extraction has finished.\n"
3487msgstr "" 3477msgstr ""
3488 3478
3489#: src/fs/gnunet-publish.c:684 3479#: src/fs/gnunet-publish.c:687
3490#, fuzzy 3480#, fuzzy
3491msgid "Internal error scanning directory.\n" 3481msgid "Internal error scanning directory.\n"
3492msgstr "=\tFehler beim Lesen des Verzeichnisses.\n" 3482msgstr "=\tFehler beim Lesen des Verzeichnisses.\n"
3493 3483
3494#: src/fs/gnunet-publish.c:712 3484#: src/fs/gnunet-publish.c:715
3495#, c-format 3485#, c-format
3496msgid "Selected pseudonym `%s' unknown\n" 3486msgid "Selected pseudonym `%s' unknown\n"
3497msgstr "" 3487msgstr ""
3498 3488
3499#: src/fs/gnunet-publish.c:745 3489#: src/fs/gnunet-publish.c:749
3500#, fuzzy, c-format 3490#, fuzzy, c-format
3501msgid "Failed to access `%s': %s\n" 3491msgid "Failed to access `%s': %s\n"
3502msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 3492msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
3503 3493
3504#: src/fs/gnunet-publish.c:759 3494#: src/fs/gnunet-publish.c:763
3505msgid "" 3495msgid ""
3506"Failed to start meta directory scanner. Is gnunet-helper-publish-fs " 3496"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
3507"installed?\n" 3497"installed?\n"
3508msgstr "" 3498msgstr ""
3509 3499
3510#: src/fs/gnunet-publish.c:815 3500#: src/fs/gnunet-publish.c:819
3511#, c-format 3501#, c-format
3512msgid "Cannot extract metadata from a URI!\n" 3502msgid "Cannot extract metadata from a URI!\n"
3513msgstr "" 3503msgstr ""
3514 3504
3515#: src/fs/gnunet-publish.c:822 3505#: src/fs/gnunet-publish.c:826
3516#, c-format 3506#, c-format
3517msgid "You must specify one and only one filename for insertion.\n" 3507msgid "You must specify one and only one filename for insertion.\n"
3518msgstr "Sie dürfen nur eine einzige Datei zum Einfügen angeben.\n" 3508msgstr "Sie dürfen nur eine einzige Datei zum Einfügen angeben.\n"
3519 3509
3520#: src/fs/gnunet-publish.c:828 3510#: src/fs/gnunet-publish.c:832
3521#, fuzzy, c-format 3511#, fuzzy, c-format
3522msgid "You must NOT specify an URI and a filename.\n" 3512msgid "You must NOT specify an URI and a filename.\n"
3523msgstr "Sie müssen einen Empfänger angeben!\n" 3513msgstr "Sie müssen einen Empfänger angeben!\n"
3524 3514
3525#: src/fs/gnunet-publish.c:836 src/vpn/gnunet-vpn.c:208 3515#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:210
3526#, fuzzy, c-format 3516#, fuzzy, c-format
3527msgid "Option `%s' is required when using option `%s'.\n" 3517msgid "Option `%s' is required when using option `%s'.\n"
3528msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n" 3518msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
3529 3519
3530#: src/fs/gnunet-publish.c:847 src/fs/gnunet-publish.c:855 3520#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
3531#: src/transport/gnunet-transport.c:1280 src/transport/gnunet-transport.c:1307 3521#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
3532#, c-format 3522#, c-format
3533msgid "Option `%s' makes no sense without option `%s'.\n" 3523msgid "Option `%s' makes no sense without option `%s'.\n"
3534msgstr "Die Option »%s« ergibt keinen Sinn ohne die Option »%s«.\n" 3524msgstr "Die Option »%s« ergibt keinen Sinn ohne die Option »%s«.\n"
3535 3525
3536#: src/fs/gnunet-publish.c:911 3526#: src/fs/gnunet-publish.c:916
3537msgid "" 3527msgid ""
3538"print list of extracted keywords that would be used, but do not perform " 3528"print list of extracted keywords that would be used, but do not perform "
3539"upload" 3529"upload"
@@ -3541,7 +3531,7 @@ msgstr ""
3541"Liste der extrahierten Schlüsselworte, die verwendet werden würden, " 3531"Liste der extrahierten Schlüsselworte, die verwendet werden würden, "
3542"ausgeben, aber keinen Upload durchführen" 3532"ausgeben, aber keinen Upload durchführen"
3543 3533
3544#: src/fs/gnunet-publish.c:917 3534#: src/fs/gnunet-publish.c:922
3545msgid "" 3535msgid ""
3546"add an additional keyword for the top-level file or directory (this option " 3536"add an additional keyword for the top-level file or directory (this option "
3547"can be specified multiple times)" 3537"can be specified multiple times)"
@@ -3549,13 +3539,13 @@ msgstr ""
3549"Ein zusätzliches Schlüsselwort für die Datei oder das Verzeichnis auf der " 3539"Ein zusätzliches Schlüsselwort für die Datei oder das Verzeichnis auf der "
3550"obersten Ebene hinzufügen (diese Option kann mehrmals angegeben werden)" 3540"obersten Ebene hinzufügen (diese Option kann mehrmals angegeben werden)"
3551 3541
3552#: src/fs/gnunet-publish.c:923 3542#: src/fs/gnunet-publish.c:928
3553msgid "set the meta-data for the given TYPE to the given VALUE" 3543msgid "set the meta-data for the given TYPE to the given VALUE"
3554msgstr "" 3544msgstr ""
3555"Die Meta-Daten des angegebenen Typs TYPE auf den angegebenen Wert VALUE " 3545"Die Meta-Daten des angegebenen Typs TYPE auf den angegebenen Wert VALUE "
3556"setzen" 3546"setzen"
3557 3547
3558#: src/fs/gnunet-publish.c:928 3548#: src/fs/gnunet-publish.c:932
3559msgid "" 3549msgid ""
3560"do not index, perform full insertion (stores entire file in encrypted form " 3550"do not index, perform full insertion (stores entire file in encrypted form "
3561"in GNUnet database)" 3551"in GNUnet database)"
@@ -3563,7 +3553,7 @@ msgstr ""
3563"Nicht indizieren, sondern komplett einfügen (speichert die gesamte Datei in " 3553"Nicht indizieren, sondern komplett einfügen (speichert die gesamte Datei in "
3564"verschlüsselter Form in der GNUnet-Datenbank)" 3554"verschlüsselter Form in der GNUnet-Datenbank)"
3565 3555
3566#: src/fs/gnunet-publish.c:935 3556#: src/fs/gnunet-publish.c:938
3567msgid "" 3557msgid ""
3568"specify ID of an updated version to be published in the future (for " 3558"specify ID of an updated version to be published in the future (for "
3569"namespace insertions only)" 3559"namespace insertions only)"
@@ -3571,19 +3561,19 @@ msgstr ""
3571"ID einer aktualisierten Version angeben, die in der Zukunft veröffentlicht " 3561"ID einer aktualisierten Version angeben, die in der Zukunft veröffentlicht "
3572"werden soll. (nur für das Einfügen in Namensräume)" 3562"werden soll. (nur für das Einfügen in Namensräume)"
3573 3563
3574#: src/fs/gnunet-publish.c:948 3564#: src/fs/gnunet-publish.c:949
3575msgid "publish the files under the pseudonym NAME (place file into namespace)" 3565msgid "publish the files under the pseudonym NAME (place file into namespace)"
3576msgstr "" 3566msgstr ""
3577"Die Datei unter dem Pseudonym NAME veröffentlichen (platziert die Datei in " 3567"Die Datei unter dem Pseudonym NAME veröffentlichen (platziert die Datei in "
3578"einem Namensraum)" 3568"einem Namensraum)"
3579 3569
3580#: src/fs/gnunet-publish.c:958 3570#: src/fs/gnunet-publish.c:959
3581msgid "" 3571msgid ""
3582"only simulate the process but do not do any actual publishing (useful to " 3572"only simulate the process but do not do any actual publishing (useful to "
3583"compute URIs)" 3573"compute URIs)"
3584msgstr "" 3574msgstr ""
3585 3575
3586#: src/fs/gnunet-publish.c:964 3576#: src/fs/gnunet-publish.c:965
3587msgid "" 3577msgid ""
3588"set the ID of this version of the publication (for namespace insertions only)" 3578"set the ID of this version of the publication (for namespace insertions only)"
3589msgstr "" 3579msgstr ""
@@ -3596,30 +3586,30 @@ msgid ""
3596"to the file with the respective URI)" 3586"to the file with the respective URI)"
3597msgstr "" 3587msgstr ""
3598 3588
3599#: src/fs/gnunet-publish.c:987 3589#: src/fs/gnunet-publish.c:989
3600msgid "Publish a file or directory on GNUnet" 3590msgid "Publish a file or directory on GNUnet"
3601msgstr "" 3591msgstr ""
3602 3592
3603#: src/fs/gnunet-search.c:125 3593#: src/fs/gnunet-search.c:127
3604#, c-format 3594#, c-format
3605msgid "Failed to write directory with search results to `%s'\n" 3595msgid "Failed to write directory with search results to `%s'\n"
3606msgstr "" 3596msgstr ""
3607 3597
3608#: src/fs/gnunet-search.c:202 3598#: src/fs/gnunet-search.c:207
3609#, fuzzy, c-format 3599#, fuzzy, c-format
3610msgid "Error searching: %s.\n" 3600msgid "Error searching: %s.\n"
3611msgstr "Fehler beim Verlassen der DHT.\n" 3601msgstr "Fehler beim Verlassen der DHT.\n"
3612 3602
3613#: src/fs/gnunet-search.c:258 3603#: src/fs/gnunet-search.c:263
3614msgid "Could not create keyword URI from arguments.\n" 3604msgid "Could not create keyword URI from arguments.\n"
3615msgstr "" 3605msgstr ""
3616 3606
3617#: src/fs/gnunet-search.c:282 3607#: src/fs/gnunet-search.c:287
3618#, fuzzy 3608#, fuzzy
3619msgid "Could not start searching.\n" 3609msgid "Could not start searching.\n"
3620msgstr "Fehler beim Starten der Collection.\n" 3610msgstr "Fehler beim Starten der Collection.\n"
3621 3611
3622#: src/fs/gnunet-search.c:323 3612#: src/fs/gnunet-search.c:324
3623msgid "write search results to file starting with PREFIX" 3613msgid "write search results to file starting with PREFIX"
3624msgstr "" 3614msgstr ""
3625 3615
@@ -3627,7 +3617,7 @@ msgstr ""
3627msgid "automatically terminate search after DELAY" 3617msgid "automatically terminate search after DELAY"
3628msgstr "" 3618msgstr ""
3629 3619
3630#: src/fs/gnunet-search.c:338 3620#: src/fs/gnunet-search.c:335
3631msgid "automatically terminate search after VALUE results are found" 3621msgid "automatically terminate search after VALUE results are found"
3632msgstr "" 3622msgstr ""
3633 3623
@@ -3635,1935 +3625,1978 @@ msgstr ""
3635msgid "Search GNUnet for files that were published on GNUnet" 3625msgid "Search GNUnet for files that were published on GNUnet"
3636msgstr "" 3626msgstr ""
3637 3627
3638#: src/fs/gnunet-service-fs.c:375 src/fs/gnunet-service-fs.c:880 3628#: src/fs/gnunet-service-fs.c:377 src/fs/gnunet-service-fs.c:882
3639msgid "# client searches active" 3629msgid "# client searches active"
3640msgstr "" 3630msgstr ""
3641 3631
3642#: src/fs/gnunet-service-fs.c:434 3632#: src/fs/gnunet-service-fs.c:436
3643#, fuzzy 3633#, fuzzy
3644msgid "# replies received for local clients" 3634msgid "# replies received for local clients"
3645msgstr "Empfangene Client-Nachricht ist ungültig.\n" 3635msgstr "Empfangene Client-Nachricht ist ungültig.\n"
3646 3636
3647#: src/fs/gnunet-service-fs.c:603 3637#: src/fs/gnunet-service-fs.c:605
3648msgid "# running average P2P latency (ms)" 3638msgid "# running average P2P latency (ms)"
3649msgstr "" 3639msgstr ""
3650 3640
3651#: src/fs/gnunet-service-fs.c:655 src/fs/gnunet-service-fs_cp.c:562 3641#: src/fs/gnunet-service-fs.c:657 src/fs/gnunet-service-fs_cp.c:564
3652msgid "# Loopback routes suppressed" 3642msgid "# Loopback routes suppressed"
3653msgstr "" 3643msgstr ""
3654 3644
3655#: src/fs/gnunet-service-fs.c:834 3645#: src/fs/gnunet-service-fs.c:836
3656#, fuzzy 3646#, fuzzy
3657msgid "# client searches received" 3647msgid "# client searches received"
3658msgstr "# Klartext PONG Nachrichten empfangen" 3648msgstr "# Klartext PONG Nachrichten empfangen"
3659 3649
3660#: src/fs/gnunet-service-fs.c:873 3650#: src/fs/gnunet-service-fs.c:875
3661msgid "# client searches updated (merged content seen list)" 3651msgid "# client searches updated (merged content seen list)"
3662msgstr "" 3652msgstr ""
3663 3653
3664#: src/fs/gnunet-service-fs.c:1044 3654#: src/fs/gnunet-service-fs.c:1040
3665#, c-format 3655#, c-format
3666msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n" 3656msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n"
3667msgstr "" 3657msgstr ""
3668 3658
3669#: src/fs/gnunet-service-fs.c:1284 3659#: src/fs/gnunet-service-fs.c:1280
3670#, fuzzy 3660#, fuzzy
3671msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n" 3661msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n"
3672msgstr "GNUnet Konfiguration" 3662msgstr "GNUnet Konfiguration"
3673 3663
3674#: src/fs/gnunet-service-fs.c:1309 src/hostlist/gnunet-daemon-hostlist.c:353 3664#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
3675#: src/topology/gnunet-daemon-topology.c:1200 3665#: src/topology/gnunet-daemon-topology.c:1202
3676#, fuzzy, c-format 3666#, fuzzy, c-format
3677msgid "Failed to connect to `%s' service.\n" 3667msgid "Failed to connect to `%s' service.\n"
3678msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" 3668msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
3679 3669
3680#: src/fs/gnunet-service-fs_cadet_client.c:368 3670#: src/fs/gnunet-service-fs_cadet_client.c:370
3681#, fuzzy 3671#, fuzzy
3682msgid "# replies received via cadet" 3672msgid "# replies received via cadet"
3683msgstr "# Bytes empfangen über TCP" 3673msgstr "# Bytes empfangen über TCP"
3684 3674
3685#: src/fs/gnunet-service-fs_cadet_client.c:382 3675#: src/fs/gnunet-service-fs_cadet_client.c:384
3686#, fuzzy 3676#, fuzzy
3687msgid "# replies received via cadet dropped" 3677msgid "# replies received via cadet dropped"
3688msgstr "# Bytes empfangen über TCP" 3678msgstr "# Bytes empfangen über TCP"
3689 3679
3690#: src/fs/gnunet-service-fs_cadet_server.c:263 3680#: src/fs/gnunet-service-fs_cadet_server.c:265
3691#, fuzzy 3681#, fuzzy
3692msgid "# queries received via CADET not answered" 3682msgid "# queries received via CADET not answered"
3693msgstr "# Bytes empfangen über TCP" 3683msgstr "# Bytes empfangen über TCP"
3694 3684
3695#: src/fs/gnunet-service-fs_cadet_server.c:318 3685#: src/fs/gnunet-service-fs_cadet_server.c:320
3696msgid "# Blocks transferred via cadet" 3686msgid "# Blocks transferred via cadet"
3697msgstr "" 3687msgstr ""
3698 3688
3699#: src/fs/gnunet-service-fs_cadet_server.c:344 3689#: src/fs/gnunet-service-fs_cadet_server.c:346
3700#, fuzzy 3690#, fuzzy
3701msgid "# queries received via cadet" 3691msgid "# queries received via cadet"
3702msgstr "# Bytes empfangen über TCP" 3692msgstr "# Bytes empfangen über TCP"
3703 3693
3704#: src/fs/gnunet-service-fs_cadet_server.c:386 3694#: src/fs/gnunet-service-fs_cadet_server.c:388
3705#, fuzzy 3695#, fuzzy
3706msgid "# cadet client connections rejected" 3696msgid "# cadet client connections rejected"
3707msgstr "# Sitzungsschlüssel abgelehnt" 3697msgstr "# Sitzungsschlüssel abgelehnt"
3708 3698
3709#: src/fs/gnunet-service-fs_cadet_server.c:393 3699#: src/fs/gnunet-service-fs_cadet_server.c:395
3710#: src/fs/gnunet-service-fs_cadet_server.c:433 3700#: src/fs/gnunet-service-fs_cadet_server.c:435
3711#, fuzzy 3701#, fuzzy
3712msgid "# cadet connections active" 3702msgid "# cadet connections active"
3713msgstr " Verbindung fehlgeschlagen\n" 3703msgstr " Verbindung fehlgeschlagen\n"
3714 3704
3715#: src/fs/gnunet-service-fs_cp.c:684 3705#: src/fs/gnunet-service-fs_cp.c:685
3716#, fuzzy 3706#, fuzzy
3717msgid "# migration stop messages received" 3707msgid "# migration stop messages received"
3718msgstr "# verschlüsselter PING Nachrichten empfangen" 3708msgstr "# verschlüsselter PING Nachrichten empfangen"
3719 3709
3720#: src/fs/gnunet-service-fs_cp.c:688 3710#: src/fs/gnunet-service-fs_cp.c:689
3721#, c-format 3711#, c-format
3722msgid "Migration of content to peer `%s' blocked for %s\n" 3712msgid "Migration of content to peer `%s' blocked for %s\n"
3723msgstr "" 3713msgstr ""
3724 3714
3725#: src/fs/gnunet-service-fs_cp.c:721 src/fs/gnunet-service-fs_cp.c:1343 3715#: src/fs/gnunet-service-fs_cp.c:722 src/fs/gnunet-service-fs_cp.c:1344
3726msgid "# P2P searches active" 3716msgid "# P2P searches active"
3727msgstr "" 3717msgstr ""
3728 3718
3729#: src/fs/gnunet-service-fs_cp.c:816 3719#: src/fs/gnunet-service-fs_cp.c:817
3730msgid "# artificial delays introduced (ms)" 3720msgid "# artificial delays introduced (ms)"
3731msgstr "" 3721msgstr ""
3732 3722
3733#: src/fs/gnunet-service-fs_cp.c:873 3723#: src/fs/gnunet-service-fs_cp.c:874
3734msgid "# replies dropped due to type mismatch" 3724msgid "# replies dropped due to type mismatch"
3735msgstr "" 3725msgstr ""
3736 3726
3737#: src/fs/gnunet-service-fs_cp.c:881 3727#: src/fs/gnunet-service-fs_cp.c:882
3738#, fuzzy 3728#, fuzzy
3739msgid "# replies received for other peers" 3729msgid "# replies received for other peers"
3740msgstr "# Bytes des Typs %d empfangen" 3730msgstr "# Bytes des Typs %d empfangen"
3741 3731
3742#: src/fs/gnunet-service-fs_cp.c:895 3732#: src/fs/gnunet-service-fs_cp.c:896
3743msgid "# replies dropped due to insufficient cover traffic" 3733msgid "# replies dropped due to insufficient cover traffic"
3744msgstr "" 3734msgstr ""
3745 3735
3746#: src/fs/gnunet-service-fs_cp.c:942 3736#: src/fs/gnunet-service-fs_cp.c:943
3747msgid "# P2P searches destroyed due to ultimate reply" 3737msgid "# P2P searches destroyed due to ultimate reply"
3748msgstr "" 3738msgstr ""
3749 3739
3750#: src/fs/gnunet-service-fs_cp.c:1013 3740#: src/fs/gnunet-service-fs_cp.c:1014
3751msgid "# requests done for free (low load)" 3741msgid "# requests done for free (low load)"
3752msgstr "" 3742msgstr ""
3753 3743
3754#: src/fs/gnunet-service-fs_cp.c:1038 3744#: src/fs/gnunet-service-fs_cp.c:1039
3755#, fuzzy 3745#, fuzzy
3756msgid "# request dropped, priority insufficient" 3746msgid "# request dropped, priority insufficient"
3757msgstr "# gap Anfragen verworfen: Kollision in RT" 3747msgstr "# gap Anfragen verworfen: Kollision in RT"
3758 3748
3759#: src/fs/gnunet-service-fs_cp.c:1048 3749#: src/fs/gnunet-service-fs_cp.c:1049
3760msgid "# requests done for a price (normal load)" 3750msgid "# requests done for a price (normal load)"
3761msgstr "" 3751msgstr ""
3762 3752
3763#: src/fs/gnunet-service-fs_cp.c:1146 3753#: src/fs/gnunet-service-fs_cp.c:1147
3764msgid "# requests dropped due to higher-TTL request" 3754msgid "# requests dropped due to higher-TTL request"
3765msgstr "" 3755msgstr ""
3766 3756
3767#: src/fs/gnunet-service-fs_cp.c:1203 3757#: src/fs/gnunet-service-fs_cp.c:1204
3768msgid "# GET requests received (from other peers)" 3758msgid "# GET requests received (from other peers)"
3769msgstr "" 3759msgstr ""
3770 3760
3771#: src/fs/gnunet-service-fs_cp.c:1226 3761#: src/fs/gnunet-service-fs_cp.c:1227
3772#, fuzzy 3762#, fuzzy
3773msgid "# requests dropped due to missing reverse route" 3763msgid "# requests dropped due to missing reverse route"
3774msgstr "# gap Anfragen verworfen: Kollision in RT" 3764msgstr "# gap Anfragen verworfen: Kollision in RT"
3775 3765
3776#: src/fs/gnunet-service-fs_cp.c:1239 3766#: src/fs/gnunet-service-fs_cp.c:1240
3777#, fuzzy 3767#, fuzzy
3778msgid "# requests dropped due to full reply queue" 3768msgid "# requests dropped due to full reply queue"
3779msgstr "# gap Anfragen verworfen: Kollision in RT" 3769msgstr "# gap Anfragen verworfen: Kollision in RT"
3780 3770
3781#: src/fs/gnunet-service-fs_cp.c:1295 3771#: src/fs/gnunet-service-fs_cp.c:1296
3782msgid "# requests dropped due TTL underflow" 3772msgid "# requests dropped due TTL underflow"
3783msgstr "" 3773msgstr ""
3784 3774
3785#: src/fs/gnunet-service-fs_cp.c:1339 3775#: src/fs/gnunet-service-fs_cp.c:1340
3786#, fuzzy 3776#, fuzzy
3787msgid "# P2P query messages received and processed" 3777msgid "# P2P query messages received and processed"
3788msgstr "# verschlüsselter PING Nachrichten empfangen" 3778msgstr "# verschlüsselter PING Nachrichten empfangen"
3789 3779
3790#: src/fs/gnunet-service-fs_cp.c:1706 3780#: src/fs/gnunet-service-fs_cp.c:1707
3791#, fuzzy 3781#, fuzzy
3792msgid "# migration stop messages sent" 3782msgid "# migration stop messages sent"
3793msgstr "# verschlüsselter PING Nachrichten empfangen" 3783msgstr "# verschlüsselter PING Nachrichten empfangen"
3794 3784
3795#: src/fs/gnunet-service-fs_indexing.c:132 3785#: src/fs/gnunet-service-fs_indexing.c:134
3796#: src/fs/gnunet-service-fs_indexing.c:193 3786#: src/fs/gnunet-service-fs_indexing.c:195
3797#, fuzzy, c-format 3787#, fuzzy, c-format
3798msgid "Could not open `%s'.\n" 3788msgid "Could not open `%s'.\n"
3799msgstr "`%s' konnte nicht aufgelöst werden: %s\n" 3789msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
3800 3790
3801#: src/fs/gnunet-service-fs_indexing.c:149 3791#: src/fs/gnunet-service-fs_indexing.c:151
3802#, fuzzy, c-format 3792#, fuzzy, c-format
3803msgid "Error writing `%s'.\n" 3793msgid "Error writing `%s'.\n"
3804msgstr "Fehler beim Anlegen des Benutzers" 3794msgstr "Fehler beim Anlegen des Benutzers"
3805 3795
3806#: src/fs/gnunet-service-fs_indexing.c:251 3796#: src/fs/gnunet-service-fs_indexing.c:253
3807#, fuzzy, c-format 3797#, fuzzy, c-format
3808msgid "Failed to delete bogus block: %s\n" 3798msgid "Failed to delete bogus block: %s\n"
3809msgstr "Datei wurde als `%s' gespeichert.\n" 3799msgstr "Datei wurde als `%s' gespeichert.\n"
3810 3800
3811#: src/fs/gnunet-service-fs_indexing.c:329 3801#: src/fs/gnunet-service-fs_indexing.c:331
3812msgid "# index blocks removed: original file inaccessible" 3802msgid "# index blocks removed: original file inaccessible"
3813msgstr "" 3803msgstr ""
3814 3804
3815#: src/fs/gnunet-service-fs_indexing.c:355 3805#: src/fs/gnunet-service-fs_indexing.c:357
3816#, fuzzy, c-format 3806#, fuzzy, c-format
3817msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n" 3807msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n"
3818msgstr "Datei `%s' konnte nicht dekodiert werden bei %s:%d.\n" 3808msgstr "Datei `%s' konnte nicht dekodiert werden bei %s:%d.\n"
3819 3809
3820#: src/fs/gnunet-service-fs_indexing.c:359 3810#: src/fs/gnunet-service-fs_indexing.c:361
3821#, fuzzy 3811#, fuzzy
3822msgid "not indexed" 3812msgid "not indexed"
3823msgstr "Deindizierung schlug fehl." 3813msgstr "Deindizierung schlug fehl."
3824 3814
3825#: src/fs/gnunet-service-fs_indexing.c:392 3815#: src/fs/gnunet-service-fs_indexing.c:394
3826#, fuzzy, c-format 3816#, fuzzy, c-format
3827msgid "Indexed file `%s' changed at offset %llu\n" 3817msgid "Indexed file `%s' changed at offset %llu\n"
3828msgstr "FSUI Statusdatei `%s' hatte einen Syntaxfehler bei Offset %u.\n" 3818msgstr "FSUI Statusdatei `%s' hatte einen Syntaxfehler bei Offset %u.\n"
3829 3819
3830#: src/fs/gnunet-service-fs_indexing.c:516 3820#: src/fs/gnunet-service-fs_indexing.c:518
3831#, c-format 3821#, c-format
3832msgid "" 3822msgid ""
3833"Index request received for file `%s' is already indexed as `%s'. Permitting " 3823"Index request received for file `%s' is already indexed as `%s'. Permitting "
3834"anyway.\n" 3824"anyway.\n"
3835msgstr "" 3825msgstr ""
3836 3826
3837#: src/fs/gnunet-service-fs_pe.c:263 3827#: src/fs/gnunet-service-fs_pe.c:265
3838msgid "# average retransmission delay (ms)" 3828msgid "# average retransmission delay (ms)"
3839msgstr "" 3829msgstr ""
3840 3830
3841#: src/fs/gnunet-service-fs_pe.c:425 3831#: src/fs/gnunet-service-fs_pe.c:427
3842msgid "# delay heap timeout (ms)" 3832msgid "# delay heap timeout (ms)"
3843msgstr "" 3833msgstr ""
3844 3834
3845#: src/fs/gnunet-service-fs_pe.c:436 3835#: src/fs/gnunet-service-fs_pe.c:438
3846msgid "# query plans executed" 3836msgid "# query plans executed"
3847msgstr "" 3837msgstr ""
3848 3838
3849#: src/fs/gnunet-service-fs_pe.c:464 3839#: src/fs/gnunet-service-fs_pe.c:466
3850msgid "# query messages sent to other peers" 3840msgid "# query messages sent to other peers"
3851msgstr "" 3841msgstr ""
3852 3842
3853#: src/fs/gnunet-service-fs_pe.c:534 3843#: src/fs/gnunet-service-fs_pe.c:536
3854#, fuzzy 3844#, fuzzy
3855msgid "# requests merged" 3845msgid "# requests merged"
3856msgstr "# dht Anfragen weitergeleitet" 3846msgstr "# dht Anfragen weitergeleitet"
3857 3847
3858#: src/fs/gnunet-service-fs_pe.c:544 3848#: src/fs/gnunet-service-fs_pe.c:546
3859#, fuzzy 3849#, fuzzy
3860msgid "# requests refreshed" 3850msgid "# requests refreshed"
3861msgstr "# dht Anfragen weitergeleitet" 3851msgstr "# dht Anfragen weitergeleitet"
3862 3852
3863#: src/fs/gnunet-service-fs_pe.c:604 src/fs/gnunet-service-fs_pe.c:707 3853#: src/fs/gnunet-service-fs_pe.c:606 src/fs/gnunet-service-fs_pe.c:709
3864#: src/fs/gnunet-service-fs_pe.c:786 3854#: src/fs/gnunet-service-fs_pe.c:788
3865msgid "# query plan entries" 3855msgid "# query plan entries"
3866msgstr "" 3856msgstr ""
3867 3857
3868#: src/fs/gnunet-service-fs_pr.c:328 3858#: src/fs/gnunet-service-fs_pr.c:330
3869#, fuzzy 3859#, fuzzy
3870msgid "# Pending requests created" 3860msgid "# Pending requests created"
3871msgstr "# dht Anfragen weitergeleitet" 3861msgstr "# dht Anfragen weitergeleitet"
3872 3862
3873#: src/fs/gnunet-service-fs_pr.c:428 src/fs/gnunet-service-fs_pr.c:675 3863#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
3874#, fuzzy 3864#, fuzzy
3875msgid "# Pending requests active" 3865msgid "# Pending requests active"
3876msgstr "# Client Trace-Anfragen empfangen" 3866msgstr "# Client Trace-Anfragen empfangen"
3877 3867
3878#: src/fs/gnunet-service-fs_pr.c:856 3868#: src/fs/gnunet-service-fs_pr.c:858
3879#, fuzzy 3869#, fuzzy
3880msgid "# replies received and matched" 3870msgid "# replies received and matched"
3881msgstr "# Bytes empfangen über TCP" 3871msgstr "# Bytes empfangen über TCP"
3882 3872
3883#: src/fs/gnunet-service-fs_pr.c:892 3873#: src/fs/gnunet-service-fs_pr.c:894
3884msgid "# duplicate replies discarded (bloomfilter)" 3874msgid "# duplicate replies discarded (bloomfilter)"
3885msgstr "" 3875msgstr ""
3886 3876
3887#: src/fs/gnunet-service-fs_pr.c:901 3877#: src/fs/gnunet-service-fs_pr.c:903
3888#, fuzzy 3878#, fuzzy
3889msgid "# irrelevant replies discarded" 3879msgid "# irrelevant replies discarded"
3890msgstr "# verworfener Nachrichten" 3880msgstr "# verworfener Nachrichten"
3891 3881
3892#: src/fs/gnunet-service-fs_pr.c:916 3882#: src/fs/gnunet-service-fs_pr.c:918
3893#, c-format 3883#, c-format
3894msgid "Unsupported block type %u\n" 3884msgid "Unsupported block type %u\n"
3895msgstr "" 3885msgstr ""
3896 3886
3897#: src/fs/gnunet-service-fs_pr.c:933 3887#: src/fs/gnunet-service-fs_pr.c:935
3898msgid "# results found locally" 3888msgid "# results found locally"
3899msgstr "" 3889msgstr ""
3900 3890
3901#: src/fs/gnunet-service-fs_pr.c:1063 3891#: src/fs/gnunet-service-fs_pr.c:1065
3902msgid "# Datastore `PUT' failures" 3892msgid "# Datastore `PUT' failures"
3903msgstr "" 3893msgstr ""
3904 3894
3905#: src/fs/gnunet-service-fs_pr.c:1091 3895#: src/fs/gnunet-service-fs_pr.c:1093
3906#, fuzzy 3896#, fuzzy
3907msgid "# storage requests dropped due to high load" 3897msgid "# storage requests dropped due to high load"
3908msgstr "# Knotenankündigungen empfangen" 3898msgstr "# Knotenankündigungen empfangen"
3909 3899
3910#: src/fs/gnunet-service-fs_pr.c:1129 3900#: src/fs/gnunet-service-fs_pr.c:1131
3911#, fuzzy 3901#, fuzzy
3912msgid "# Replies received from DHT" 3902msgid "# Replies received from DHT"
3913msgstr "# Bytes empfangen über HTTP" 3903msgstr "# Bytes empfangen über HTTP"
3914 3904
3915#: src/fs/gnunet-service-fs_pr.c:1260 3905#: src/fs/gnunet-service-fs_pr.c:1262
3916#, fuzzy 3906#, fuzzy
3917msgid "# Replies received from CADET" 3907msgid "# Replies received from CADET"
3918msgstr "# Bytes empfangen über HTTP" 3908msgstr "# Bytes empfangen über HTTP"
3919 3909
3920#: src/fs/gnunet-service-fs_pr.c:1312 3910#: src/fs/gnunet-service-fs_pr.c:1314
3921#, c-format 3911#, c-format
3922msgid "Datastore lookup already took %s!\n" 3912msgid "Datastore lookup already took %s!\n"
3923msgstr "" 3913msgstr ""
3924 3914
3925#: src/fs/gnunet-service-fs_pr.c:1333 3915#: src/fs/gnunet-service-fs_pr.c:1335
3926#, c-format 3916#, c-format
3927msgid "On-demand lookup already took %s!\n" 3917msgid "On-demand lookup already took %s!\n"
3928msgstr "" 3918msgstr ""
3929 3919
3930#: src/fs/gnunet-service-fs_pr.c:1393 3920#: src/fs/gnunet-service-fs_pr.c:1395
3931msgid "# requested DBLOCK or IBLOCK not found" 3921msgid "# requested DBLOCK or IBLOCK not found"
3932msgstr "" 3922msgstr ""
3933 3923
3934#: src/fs/gnunet-service-fs_pr.c:1452 3924#: src/fs/gnunet-service-fs_pr.c:1454
3935msgid "# Datastore lookups concluded (error queueing)" 3925msgid "# Datastore lookups concluded (error queueing)"
3936msgstr "" 3926msgstr ""
3937 3927
3938#: src/fs/gnunet-service-fs_pr.c:1507 3928#: src/fs/gnunet-service-fs_pr.c:1509
3939msgid "# Datastore lookups concluded (no results)" 3929msgid "# Datastore lookups concluded (no results)"
3940msgstr "" 3930msgstr ""
3941 3931
3942#: src/fs/gnunet-service-fs_pr.c:1522 3932#: src/fs/gnunet-service-fs_pr.c:1524
3943msgid "# Datastore lookups concluded (seen all)" 3933msgid "# Datastore lookups concluded (seen all)"
3944msgstr "" 3934msgstr ""
3945 3935
3946#: src/fs/gnunet-service-fs_pr.c:1546 3936#: src/fs/gnunet-service-fs_pr.c:1548
3947msgid "# Datastore lookups aborted (more than MAX_RESULTS)" 3937msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
3948msgstr "" 3938msgstr ""
3949 3939
3950#: src/fs/gnunet-service-fs_pr.c:1560 3940#: src/fs/gnunet-service-fs_pr.c:1562
3951msgid "# on-demand blocks matched requests" 3941msgid "# on-demand blocks matched requests"
3952msgstr "" 3942msgstr ""
3953 3943
3954#: src/fs/gnunet-service-fs_pr.c:1581 3944#: src/fs/gnunet-service-fs_pr.c:1583
3955msgid "# on-demand lookups performed successfully" 3945msgid "# on-demand lookups performed successfully"
3956msgstr "" 3946msgstr ""
3957 3947
3958#: src/fs/gnunet-service-fs_pr.c:1586 3948#: src/fs/gnunet-service-fs_pr.c:1588
3959msgid "# on-demand lookups failed" 3949msgid "# on-demand lookups failed"
3960msgstr "" 3950msgstr ""
3961 3951
3962#: src/fs/gnunet-service-fs_pr.c:1624 3952#: src/fs/gnunet-service-fs_pr.c:1626
3963msgid "# Datastore lookups concluded (found last result)" 3953msgid "# Datastore lookups concluded (found last result)"
3964msgstr "" 3954msgstr ""
3965 3955
3966#: src/fs/gnunet-service-fs_pr.c:1637 3956#: src/fs/gnunet-service-fs_pr.c:1639
3967msgid "# Datastore lookups concluded (load too high)" 3957msgid "# Datastore lookups concluded (load too high)"
3968msgstr "" 3958msgstr ""
3969 3959
3970#: src/fs/gnunet-service-fs_pr.c:1691 3960#: src/fs/gnunet-service-fs_pr.c:1693
3971msgid "# Datastore lookups initiated" 3961msgid "# Datastore lookups initiated"
3972msgstr "" 3962msgstr ""
3973 3963
3974#: src/fs/gnunet-service-fs_pr.c:1747 3964#: src/fs/gnunet-service-fs_pr.c:1749
3975#, fuzzy 3965#, fuzzy
3976msgid "# GAP PUT messages received" 3966msgid "# GAP PUT messages received"
3977msgstr "# verschlüsselter PONG Nachrichten empfangen" 3967msgstr "# verschlüsselter PONG Nachrichten empfangen"
3978 3968
3979#: src/fs/gnunet-service-fs_push.c:644 3969#: src/fs/gnunet-service-fs_push.c:646
3980msgid "time required, content pushing disabled" 3970msgid "time required, content pushing disabled"
3981msgstr "" 3971msgstr ""
3982 3972
3983#: src/fs/gnunet-unindex.c:87 3973#: src/fs/gnunet-unindex.c:89
3984#, c-format 3974#, c-format
3985msgid "Unindexing at %llu/%llu (%s remaining)\n" 3975msgid "Unindexing at %llu/%llu (%s remaining)\n"
3986msgstr "" 3976msgstr ""
3987 3977
3988#: src/fs/gnunet-unindex.c:93 3978#: src/fs/gnunet-unindex.c:95
3989#, fuzzy, c-format 3979#, fuzzy, c-format
3990msgid "Error unindexing: %s.\n" 3980msgid "Error unindexing: %s.\n"
3991msgstr "" 3981msgstr ""
3992"\n" 3982"\n"
3993"Fehler beim Deindizieren der Datei: %s\n" 3983"Fehler beim Deindizieren der Datei: %s\n"
3994 3984
3995#: src/fs/gnunet-unindex.c:98 3985#: src/fs/gnunet-unindex.c:100
3996#, fuzzy 3986#, fuzzy
3997msgid "Unindexing done.\n" 3987msgid "Unindexing done.\n"
3998msgstr "Dateien deindizieren." 3988msgstr "Dateien deindizieren."
3999 3989
4000#: src/fs/gnunet-unindex.c:127 3990#: src/fs/gnunet-unindex.c:129
4001#, fuzzy, c-format 3991#, fuzzy, c-format
4002msgid "You must specify one and only one filename for unindexing.\n" 3992msgid "You must specify one and only one filename for unindexing.\n"
4003msgstr "Sie dürfen nur eine Datei zum Deindizieren angeben.\n" 3993msgstr "Sie dürfen nur eine Datei zum Deindizieren angeben.\n"
4004 3994
4005#: src/fs/gnunet-unindex.c:144 3995#: src/fs/gnunet-unindex.c:146
4006#, fuzzy 3996#, fuzzy
4007msgid "Could not start unindex operation.\n" 3997msgid "Could not start unindex operation.\n"
4008msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n" 3998msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n"
4009 3999
4010#: src/fs/gnunet-unindex.c:176 4000#: src/fs/gnunet-unindex.c:178
4011msgid "Unindex a file that was previously indexed with gnunet-publish." 4001msgid "Unindex a file that was previously indexed with gnunet-publish."
4012msgstr "" 4002msgstr ""
4013 4003
4014#: src/gns/gns_tld_api.c:274 4004#: src/gns/gns_tld_api.c:348
4015msgid "Expected a base32-encoded public zone key\n" 4005msgid "Expected a base32-encoded public zone key\n"
4016msgstr "" 4006msgstr ""
4017 4007
4018#: src/gns/gnunet-bcd.c:125 4008#: src/gns/gnunet-bcd.c:127
4019#, fuzzy, c-format 4009#, fuzzy, c-format
4020msgid "Refusing `%s' request to HTTP server\n" 4010msgid "Refusing `%s' request to HTTP server\n"
4021msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n" 4011msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
4022 4012
4023#: src/gns/gnunet-bcd.c:355 4013#: src/gns/gnunet-bcd.c:357
4024#, fuzzy, c-format 4014#, fuzzy, c-format
4025msgid "Invalid port number %u. Exiting.\n" 4015msgid "Invalid port number %u. Exiting.\n"
4026msgstr "Ungültige Parameter. Abbruch.\n" 4016msgstr "Ungültige Parameter. Abbruch.\n"
4027 4017
4028#: src/gns/gnunet-bcd.c:360 4018#: src/gns/gnunet-bcd.c:362
4029#, fuzzy, c-format 4019#, fuzzy, c-format
4030msgid "Businesscard HTTP server starts on %u\n" 4020msgid "Businesscard HTTP server starts on %u\n"
4031msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" 4021msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
4032 4022
4033#: src/gns/gnunet-bcd.c:374 4023#: src/gns/gnunet-bcd.c:376
4034#, fuzzy, c-format 4024#, fuzzy, c-format
4035msgid "Could not start businesscard HTTP server on port %u\n" 4025msgid "Could not start businesscard HTTP server on port %u\n"
4036msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" 4026msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
4037 4027
4038#: src/gns/gnunet-bcd.c:521 4028#: src/gns/gnunet-bcd.c:523
4039msgid "Run HTTP serve on port PORT (default is 8888)" 4029msgid "Run HTTP serve on port PORT (default is 8888)"
4040msgstr "" 4030msgstr ""
4041 4031
4042#: src/gns/gnunet-bcd.c:534 4032#: src/gns/gnunet-bcd.c:536
4043msgid "GNUnet HTTP server to create business cards" 4033msgid "GNUnet HTTP server to create business cards"
4044msgstr "" 4034msgstr ""
4045 4035
4046#: src/gns/gnunet-dns2gns.c:201 4036#: src/gns/gnunet-dns2gns.c:203
4047msgid "Failed to pack DNS response into UDP packet!\n" 4037msgid "Failed to pack DNS response into UDP packet!\n"
4048msgstr "" 4038msgstr ""
4049 4039
4050#: src/gns/gnunet-dns2gns.c:403 4040#: src/gns/gnunet-dns2gns.c:405
4051#, c-format 4041#, c-format
4052msgid "Cannot parse DNS request from %s\n" 4042msgid "Cannot parse DNS request from %s\n"
4053msgstr "" 4043msgstr ""
4054 4044
4055#: src/gns/gnunet-dns2gns.c:419 4045#: src/gns/gnunet-dns2gns.c:421
4056#, fuzzy, c-format 4046#, fuzzy, c-format
4057msgid "Received malformed DNS request from %s\n" 4047msgid "Received malformed DNS request from %s\n"
4058msgstr "Beschädigte Antwort auf `%s' von Knoten `%s' empfangen.\n" 4048msgstr "Beschädigte Antwort auf `%s' von Knoten `%s' empfangen.\n"
4059 4049
4060#: src/gns/gnunet-dns2gns.c:427 4050#: src/gns/gnunet-dns2gns.c:429
4061#, fuzzy, c-format 4051#, fuzzy, c-format
4062msgid "Received unsupported DNS request from %s\n" 4052msgid "Received unsupported DNS request from %s\n"
4063msgstr "Unbekannte Anfrageart %d empfangen bei %s:%d\n" 4053msgstr "Unbekannte Anfrageart %d empfangen bei %s:%d\n"
4064 4054
4065#: src/gns/gnunet-dns2gns.c:586 4055#: src/gns/gnunet-dns2gns.c:588
4066#, fuzzy 4056#, fuzzy
4067msgid "No DNS server specified!\n" 4057msgid "No DNS server specified!\n"
4068msgstr "Keine Schlüsselwörter angegeben!\n" 4058msgstr "Keine Schlüsselwörter angegeben!\n"
4069 4059
4070#: src/gns/gnunet-dns2gns.c:686 4060#: src/gns/gnunet-dns2gns.c:688
4071msgid "IP of recursive DNS resolver to use (required)" 4061msgid "IP of recursive DNS resolver to use (required)"
4072msgstr "" 4062msgstr ""
4073 4063
4074#: src/gns/gnunet-dns2gns.c:691 4064#: src/gns/gnunet-dns2gns.c:693
4075msgid "UDP port to listen on for inbound DNS requests; default: 2853" 4065msgid "UDP port to listen on for inbound DNS requests; default: 2853"
4076msgstr "" 4066msgstr ""
4077 4067
4078#: src/gns/gnunet-dns2gns.c:708 4068#: src/gns/gnunet-dns2gns.c:710
4079msgid "GNUnet DNS-to-GNS proxy (a DNS server)" 4069msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
4080msgstr "" 4070msgstr ""
4081 4071
4082#: src/gns/gnunet-gns-benchmark.c:580 4072#: src/gns/gnunet-gns-benchmark.c:582
4083msgid "how long to wait between queries" 4073msgid "how long to wait between queries"
4084msgstr "" 4074msgstr ""
4085 4075
4086#: src/gns/gnunet-gns-benchmark.c:585 4076#: src/gns/gnunet-gns-benchmark.c:587
4087msgid "how long to wait for an answer" 4077msgid "how long to wait for an answer"
4088msgstr "" 4078msgstr ""
4089 4079
4090#: src/gns/gnunet-gns-benchmark.c:589 4080#: src/gns/gnunet-gns-benchmark.c:591
4091msgid "look for GNS2DNS records instead of ANY" 4081msgid "look for GNS2DNS records instead of ANY"
4092msgstr "" 4082msgstr ""
4093 4083
4094#: src/gns/gnunet-gns.c:197 4084#: src/gns/gnunet-gns.c:199
4095#, c-format 4085#, c-format
4096msgid "Invalid typename specified, assuming `ANY'\n" 4086msgid "Invalid typename specified, assuming `ANY'\n"
4097msgstr "" 4087msgstr ""
4098 4088
4099#: src/gns/gnunet-gns.c:231 4089#: src/gns/gnunet-gns.c:233
4100msgid "Lookup a record for the given name" 4090msgid "Lookup a record for the given name"
4101msgstr "" 4091msgstr ""
4102 4092
4103#: src/gns/gnunet-gns.c:236 4093#: src/gns/gnunet-gns.c:238
4104#, fuzzy 4094#, fuzzy
4105msgid "Specify the type of the record to lookup" 4095msgid "Specify the type of the record to lookup"
4106msgstr "Die Priorität des Inhalts angeben" 4096msgstr "Die Priorität des Inhalts angeben"
4107 4097
4108#: src/gns/gnunet-gns.c:240 4098#: src/gns/gnunet-gns.c:242
4109msgid "No unneeded output" 4099msgid "No unneeded output"
4110msgstr "" 4100msgstr ""
4111 4101
4112#: src/gns/gnunet-gns.c:256 4102#: src/gns/gnunet-gns.c:258
4113#, fuzzy 4103#, fuzzy
4114msgid "GNUnet GNS resolver tool" 4104msgid "GNUnet GNS resolver tool"
4115msgstr "GNUnet Netzwerk Topologie tracen." 4105msgstr "GNUnet Netzwerk Topologie tracen."
4116 4106
4117#: src/gns/gnunet-gns-helper-service-w32.c:600 4107#: src/gns/gnunet-gns-helper-service-w32.c:602
4118msgid "Not ready to process requests, lacking ego data\n" 4108msgid "Not ready to process requests, lacking ego data\n"
4119msgstr "" 4109msgstr ""
4120 4110
4121#: src/gns/gnunet-gns-helper-service-w32.c:699 4111#: src/gns/gnunet-gns-helper-service-w32.c:701
4122msgid "" 4112msgid ""
4123"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-" 4113"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-"
4124"gns-import.sh?\n" 4114"gns-import.sh?\n"
4125msgstr "" 4115msgstr ""
4126 4116
4127#: src/gns/gnunet-gns-helper-service-w32.c:737 4117#: src/gns/gnunet-gns-helper-service-w32.c:739
4128#, fuzzy, c-format 4118#, fuzzy, c-format
4129msgid "Failed to connect to identity service\n" 4119msgid "Failed to connect to identity service\n"
4130msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 4120msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
4131 4121
4132#: src/gns/gnunet-gns-import.c:450 4122#: src/gns/gnunet-gns-import.c:452
4133msgid "This program will import some GNS authorities into your GNS namestore." 4123msgid "This program will import some GNS authorities into your GNS namestore."
4134msgstr "" 4124msgstr ""
4135 4125
4136#: src/gns/gnunet-gns-proxy.c:110 4126#: src/gns/gnunet-gns-proxy.c:118
4137#: src/hostlist/gnunet-daemon-hostlist_client.c:533 4127#: src/hostlist/gnunet-daemon-hostlist_client.c:535
4138#: src/hostlist/gnunet-daemon-hostlist_client.c:751 4128#: src/hostlist/gnunet-daemon-hostlist_client.c:753
4139#: src/hostlist/gnunet-daemon-hostlist_client.c:757 4129#: src/hostlist/gnunet-daemon-hostlist_client.c:759
4140#: src/hostlist/gnunet-daemon-hostlist_client.c:809 4130#: src/hostlist/gnunet-daemon-hostlist_client.c:811
4141#: src/hostlist/gnunet-daemon-hostlist_client.c:818 4131#: src/hostlist/gnunet-daemon-hostlist_client.c:820
4142#: src/hostlist/gnunet-daemon-hostlist_client.c:929 4132#: src/hostlist/gnunet-daemon-hostlist_client.c:931
4143#: src/hostlist/gnunet-daemon-hostlist_client.c:1024 4133#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
4144#: src/hostlist/gnunet-daemon-hostlist_client.c:1029 4134#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
4145#: src/transport/plugin_transport_http_client.c:596 4135#: src/transport/plugin_transport_http_client.c:598
4146#: src/transport/plugin_transport_http_client.c:614 4136#: src/transport/plugin_transport_http_client.c:616
4147#, c-format 4137#, c-format
4148msgid "%s failed at %s:%d: `%s'\n" 4138msgid "%s failed at %s:%d: `%s'\n"
4149msgstr "»%s« schlug fehl bei %s:%d mit dem Fehler: »%s«.\n" 4139msgstr "»%s« schlug fehl bei %s:%d mit dem Fehler: »%s«.\n"
4150 4140
4151#: src/gns/gnunet-gns-proxy.c:960 4141#: src/gns/gnunet-gns-proxy.c:980
4152#, fuzzy, c-format 4142#, fuzzy, c-format
4153msgid "Unsupported CURL TLS backend %d\n" 4143msgid "Unsupported CURL TLS backend %d\n"
4154msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" 4144msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
4155 4145
4156#: src/gns/gnunet-gns-proxy.c:985 4146#: src/gns/gnunet-gns-proxy.c:1005
4157#, fuzzy, c-format 4147#, fuzzy, c-format
4158msgid "Failed to fetch CN from cert: %s\n" 4148msgid "Failed to fetch CN from cert: %s\n"
4159msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4149msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4160 4150
4161#: src/gns/gnunet-gns-proxy.c:1008 4151#: src/gns/gnunet-gns-proxy.c:1026
4162#, fuzzy, c-format 4152#, fuzzy, c-format
4163msgid "Failed to initialize DANE: %s\n" 4153msgid "Failed to initialize DANE: %s\n"
4164msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n" 4154msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
4165 4155
4166#: src/gns/gnunet-gns-proxy.c:1021 4156#: src/gns/gnunet-gns-proxy.c:1041
4167#, fuzzy, c-format 4157#, fuzzy, c-format
4168msgid "Failed to parse DANE record: %s\n" 4158msgid "Failed to parse DANE record: %s\n"
4169msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 4159msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
4170 4160
4171#: src/gns/gnunet-gns-proxy.c:1036 4161#: src/gns/gnunet-gns-proxy.c:1056
4172#, fuzzy, c-format 4162#, fuzzy, c-format
4173msgid "Failed to verify TLS connection using DANE: %s\n" 4163msgid "Failed to verify TLS connection using DANE: %s\n"
4174msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 4164msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
4175 4165
4176#: src/gns/gnunet-gns-proxy.c:1046 4166#: src/gns/gnunet-gns-proxy.c:1066
4177#, c-format 4167#, c-format
4178msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" 4168msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
4179msgstr "" 4169msgstr ""
4180 4170
4181#: src/gns/gnunet-gns-proxy.c:1070 4171#: src/gns/gnunet-gns-proxy.c:1090
4182#, c-format 4172#, c-format
4183msgid "TLS certificate subject name (%s) does not match `%s': %d\n" 4173msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
4184msgstr "" 4174msgstr ""
4185 4175
4186#: src/gns/gnunet-gns-proxy.c:1200 4176#: src/gns/gnunet-gns-proxy.c:1221
4187#, c-format 4177#, c-format
4188msgid "Cookie domain `%s' supplied by server is invalid\n" 4178msgid "Cookie domain `%s' supplied by server is invalid\n"
4189msgstr "" 4179msgstr ""
4190 4180
4191#: src/gns/gnunet-gns-proxy.c:2062 4181#: src/gns/gnunet-gns-proxy.c:2121
4192#, fuzzy, c-format 4182#, fuzzy, c-format
4193msgid "Unsupported HTTP method `%s'\n" 4183msgid "Unsupported HTTP method `%s'\n"
4194msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" 4184msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
4195 4185
4196#: src/gns/gnunet-gns-proxy.c:2583 4186#: src/gns/gnunet-gns-proxy.c:2642
4197#, fuzzy, c-format 4187#, fuzzy, c-format
4198msgid "Unable to import private key from file `%s'\n" 4188msgid "Unable to import private key from file `%s'\n"
4199msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 4189msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
4200 4190
4201#: src/gns/gnunet-gns-proxy.c:2615 4191#: src/gns/gnunet-gns-proxy.c:2674
4202#, fuzzy, c-format 4192#, fuzzy, c-format
4203msgid "Unable to import certificate from `%s'\n" 4193msgid "Unable to import certificate from `%s'\n"
4204msgstr "SQLite Datenbank konnte nicht initialisiert werden: %s.\n" 4194msgstr "SQLite Datenbank konnte nicht initialisiert werden: %s.\n"
4205 4195
4206#: src/gns/gnunet-gns-proxy.c:2814 4196#: src/gns/gnunet-gns-proxy.c:2875
4207#, fuzzy, c-format 4197#, fuzzy, c-format
4208msgid "Failed to start HTTPS server for `%s'\n" 4198msgid "Failed to start HTTPS server for `%s'\n"
4209msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" 4199msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
4210 4200
4211#: src/gns/gnunet-gns-proxy.c:2839 src/rest/gnunet-rest-server.c:656 4201#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
4212#, fuzzy 4202#, fuzzy
4213msgid "Failed to pass client to MHD\n" 4203msgid "Failed to pass client to MHD\n"
4214msgstr "Fehler beim Starten der Collection.\n" 4204msgstr "Fehler beim Starten der Collection.\n"
4215 4205
4216#: src/gns/gnunet-gns-proxy.c:3169 4206#: src/gns/gnunet-gns-proxy.c:3233
4217#, c-format 4207#, c-format
4218msgid "Unsupported socks version %d\n" 4208msgid "Unsupported socks version %d\n"
4219msgstr "" 4209msgstr ""
4220 4210
4221#: src/gns/gnunet-gns-proxy.c:3198 4211#: src/gns/gnunet-gns-proxy.c:3262
4222#, fuzzy, c-format 4212#, fuzzy, c-format
4223msgid "Unsupported socks command %d\n" 4213msgid "Unsupported socks command %d\n"
4224msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" 4214msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
4225 4215
4226#: src/gns/gnunet-gns-proxy.c:3280 4216#: src/gns/gnunet-gns-proxy.c:3345
4227#, c-format 4217#, c-format
4228msgid "Unsupported socks address type %d\n" 4218msgid "Unsupported socks address type %d\n"
4229msgstr "" 4219msgstr ""
4230 4220
4231#: src/gns/gnunet-gns-proxy.c:3570 4221#: src/gns/gnunet-gns-proxy.c:3635
4232#, fuzzy, c-format 4222#, fuzzy, c-format
4233msgid "Failed to load X.509 key and certificate from `%s'\n" 4223msgid "Failed to load X.509 key and certificate from `%s'\n"
4234msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4224msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4235 4225
4236#: src/gns/gnunet-gns-proxy.c:3698 4226#: src/gns/gnunet-gns-proxy.c:3763
4237msgid "listen on specified port (default: 7777)" 4227msgid "listen on specified port (default: 7777)"
4238msgstr "" 4228msgstr ""
4239 4229
4240#: src/gns/gnunet-gns-proxy.c:3703 4230#: src/gns/gnunet-gns-proxy.c:3768
4241msgid "pem file to use as CA" 4231msgid "pem file to use as CA"
4242msgstr "" 4232msgstr ""
4243 4233
4244#: src/gns/gnunet-gns-proxy.c:3707 4234#: src/gns/gnunet-gns-proxy.c:3772
4245msgid "disable use of IPv6" 4235msgid "disable use of IPv6"
4246msgstr "" 4236msgstr ""
4247 4237
4248#: src/gns/gnunet-gns-proxy.c:3733 4238#: src/gns/gnunet-gns-proxy.c:3798
4249msgid "GNUnet GNS proxy" 4239msgid "GNUnet GNS proxy"
4250msgstr "" 4240msgstr ""
4251 4241
4252#: src/gns/gnunet-service-gns.c:511 4242#: src/gns/gnunet-service-gns.c:506
4253#, fuzzy 4243#, fuzzy
4254msgid "Properly base32-encoded public key required" 4244msgid "Properly base32-encoded public key required"
4255msgstr "# Bytes empfangen über TCP" 4245msgstr "# Bytes empfangen über TCP"
4256 4246
4257#: src/gns/gnunet-service-gns.c:547 4247#: src/gns/gnunet-service-gns.c:542
4258#, fuzzy 4248#, fuzzy
4259msgid "Failed to connect to the namecache!\n" 4249msgid "Failed to connect to the namecache!\n"
4260msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 4250msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
4261 4251
4262#: src/gns/gnunet-service-gns.c:566 4252#: src/gns/gnunet-service-gns.c:561
4263#: src/zonemaster/gnunet-service-zonemaster.c:873 4253#: src/zonemaster/gnunet-service-zonemaster.c:875
4264#: src/zonemaster/gnunet-service-zonemaster-monitor.c:438 4254#: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
4265#, fuzzy 4255#, fuzzy
4266msgid "Could not connect to DHT!\n" 4256msgid "Could not connect to DHT!\n"
4267msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n" 4257msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
4268 4258
4269#: src/gns/gnunet-service-gns_interceptor.c:257 4259#: src/gns/gnunet-service-gns_interceptor.c:259
4270#, fuzzy 4260#, fuzzy
4271msgid "Error converting GNS response to DNS response!\n" 4261msgid "Error converting GNS response to DNS response!\n"
4272msgstr "Fehler beim Konvertieren von Parametern in URI!\n" 4262msgstr "Fehler beim Konvertieren von Parametern in URI!\n"
4273 4263
4274#: src/gns/gnunet-service-gns_interceptor.c:364 4264#: src/gns/gnunet-service-gns_interceptor.c:366
4275#, fuzzy 4265#, fuzzy
4276msgid "Failed to connect to the DNS service!\n" 4266msgid "Failed to connect to the DNS service!\n"
4277msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 4267msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
4278 4268
4279#: src/gns/gnunet-service-gns_resolver.c:717 4269#: src/gns/gnunet-service-gns_resolver.c:700
4280#, c-format 4270#, c-format
4281msgid "Protocol `%s' unknown, skipping labels.\n" 4271msgid "Protocol `%s' unknown, skipping labels.\n"
4282msgstr "" 4272msgstr ""
4283 4273
4284#: src/gns/gnunet-service-gns_resolver.c:728 4274#: src/gns/gnunet-service-gns_resolver.c:711
4285#, c-format 4275#, c-format
4286msgid "Service `%s' unknown for protocol `%s', skipping labels.\n" 4276msgid "Service `%s' unknown for protocol `%s', skipping labels.\n"
4287msgstr "" 4277msgstr ""
4288 4278
4289#: src/gns/gnunet-service-gns_resolver.c:931 4279#: src/gns/gnunet-service-gns_resolver.c:914
4290#, fuzzy 4280#, fuzzy
4291msgid "Failed to parse DNS response\n" 4281msgid "Failed to parse DNS response\n"
4292msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" 4282msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
4293 4283
4294#: src/gns/gnunet-service-gns_resolver.c:1112 4284#: src/gns/gnunet-service-gns_resolver.c:1095
4295#, c-format 4285#, c-format
4296msgid "Skipping record of unsupported type %d\n" 4286msgid "Skipping record of unsupported type %d\n"
4297msgstr "" 4287msgstr ""
4298 4288
4299#: src/gns/gnunet-service-gns_resolver.c:1382 4289#: src/gns/gnunet-service-gns_resolver.c:1365
4300#, c-format 4290#, c-format
4301msgid "VPN returned empty result for `%s'\n" 4291msgid "VPN returned empty result for `%s'\n"
4302msgstr "" 4292msgstr ""
4303 4293
4304#: src/gns/gnunet-service-gns_resolver.c:1823 4294#: src/gns/gnunet-service-gns_resolver.c:1806
4305#, c-format 4295#, c-format
4306msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" 4296msgid "GNS lookup resulted in DNS name that is too long (`%s')\n"
4307msgstr "" 4297msgstr ""
4308 4298
4309#: src/gns/gnunet-service-gns_resolver.c:1866 4299#: src/gns/gnunet-service-gns_resolver.c:1849
4310#, fuzzy, c-format 4300#, fuzzy, c-format
4311msgid "GNS lookup failed (zero records found for `%s')\n" 4301msgid "GNS lookup failed (zero records found for `%s')\n"
4312msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n" 4302msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n"
4313 4303
4314#: src/gns/gnunet-service-gns_resolver.c:2281 4304#: src/gns/gnunet-service-gns_resolver.c:2264
4315msgid "GNS lookup recursion failed (no delegation record found)\n" 4305msgid "GNS lookup recursion failed (no delegation record found)\n"
4316msgstr "" 4306msgstr ""
4317 4307
4318#: src/gns/gnunet-service-gns_resolver.c:2304 4308#: src/gns/gnunet-service-gns_resolver.c:2287
4319#, fuzzy, c-format 4309#, fuzzy, c-format
4320msgid "Failed to cache GNS resolution: %s\n" 4310msgid "Failed to cache GNS resolution: %s\n"
4321msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 4311msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
4322 4312
4323#: src/gns/gnunet-service-gns_resolver.c:2467 4313#: src/gns/gnunet-service-gns_resolver.c:2450
4324#, c-format 4314#, c-format
4325msgid "GNS namecache returned empty result for `%s'\n" 4315msgid "GNS namecache returned empty result for `%s'\n"
4326msgstr "" 4316msgstr ""
4327 4317
4328#: src/gns/gnunet-service-gns_resolver.c:2602 4318#: src/gns/gnunet-service-gns_resolver.c:2585
4329#, c-format 4319#, c-format
4330msgid "Zone %s was revoked, resolution fails\n" 4320msgid "Zone %s was revoked, resolution fails\n"
4331msgstr "" 4321msgstr ""
4332 4322
4333#: src/gns/plugin_gnsrecord_gns.c:179 4323#: src/gns/plugin_gnsrecord_gns.c:181
4334#, c-format 4324#, c-format
4335msgid "Unable to parse PKEY record `%s'\n" 4325msgid "Unable to parse PKEY record `%s'\n"
4336msgstr "" 4326msgstr ""
4337 4327
4338#: src/gns/plugin_gnsrecord_gns.c:210 4328#: src/gns/plugin_gnsrecord_gns.c:212
4339#, fuzzy, c-format 4329#, fuzzy, c-format
4340msgid "Unable to parse GNS2DNS record `%s'\n" 4330msgid "Unable to parse GNS2DNS record `%s'\n"
4341msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 4331msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
4342 4332
4343#: src/gns/plugin_gnsrecord_gns.c:231 4333#: src/gns/plugin_gnsrecord_gns.c:233
4344#, c-format 4334#, c-format
4345msgid "Failed to serialize GNS2DNS record with value `%s'\n" 4335msgid "Failed to serialize GNS2DNS record with value `%s'\n"
4346msgstr "" 4336msgstr ""
4347 4337
4348#: src/gns/plugin_gnsrecord_gns.c:256 4338#: src/gns/plugin_gnsrecord_gns.c:258
4349#, fuzzy, c-format 4339#, fuzzy, c-format
4350msgid "Unable to parse VPN record string `%s'\n" 4340msgid "Unable to parse VPN record string `%s'\n"
4351msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 4341msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
4352 4342
4353#: src/gns/plugin_gnsrecord_gns.c:292 4343#: src/gns/plugin_gnsrecord_gns.c:294
4354#, fuzzy, c-format 4344#, fuzzy, c-format
4355msgid "Unable to parse BOX record string `%s'\n" 4345msgid "Unable to parse BOX record string `%s'\n"
4356msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 4346msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
4357 4347
4358#: src/gnsrecord/plugin_gnsrecord_dns.c:357 4348#: src/gnsrecord/plugin_gnsrecord_dns.c:359
4359#, c-format 4349#, c-format
4360msgid "Unable to parse IPv4 address `%s'\n" 4350msgid "Unable to parse IPv4 address `%s'\n"
4361msgstr "" 4351msgstr ""
4362 4352
4363#: src/gnsrecord/plugin_gnsrecord_dns.c:378 4353#: src/gnsrecord/plugin_gnsrecord_dns.c:380
4364#, fuzzy, c-format 4354#, fuzzy, c-format
4365msgid "Failed to serialize NS record with value `%s'\n" 4355msgid "Failed to serialize NS record with value `%s'\n"
4366msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4356msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4367 4357
4368#: src/gnsrecord/plugin_gnsrecord_dns.c:400 4358#: src/gnsrecord/plugin_gnsrecord_dns.c:402
4369#, c-format 4359#, c-format
4370msgid "Failed to serialize CNAME record with value `%s'\n" 4360msgid "Failed to serialize CNAME record with value `%s'\n"
4371msgstr "" 4361msgstr ""
4372 4362
4373#: src/gnsrecord/plugin_gnsrecord_dns.c:485 4363#: src/gnsrecord/plugin_gnsrecord_dns.c:487
4374#, c-format 4364#, c-format
4375msgid "Failed to serialize CERT record with %u bytes\n" 4365msgid "Failed to serialize CERT record with %u bytes\n"
4376msgstr "" 4366msgstr ""
4377 4367
4378#: src/gnsrecord/plugin_gnsrecord_dns.c:521 4368#: src/gnsrecord/plugin_gnsrecord_dns.c:523
4379#, fuzzy, c-format 4369#, fuzzy, c-format
4380msgid "Unable to parse SOA record `%s'\n" 4370msgid "Unable to parse SOA record `%s'\n"
4381msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 4371msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
4382 4372
4383#: src/gnsrecord/plugin_gnsrecord_dns.c:540 4373#: src/gnsrecord/plugin_gnsrecord_dns.c:542
4384#, c-format 4374#, c-format
4385msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n" 4375msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
4386msgstr "" 4376msgstr ""
4387 4377
4388#: src/gnsrecord/plugin_gnsrecord_dns.c:563 4378#: src/gnsrecord/plugin_gnsrecord_dns.c:565
4389#, fuzzy, c-format 4379#, fuzzy, c-format
4390msgid "Failed to serialize PTR record with value `%s'\n" 4380msgid "Failed to serialize PTR record with value `%s'\n"
4391msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4381msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4392 4382
4393#: src/gnsrecord/plugin_gnsrecord_dns.c:586 4383#: src/gnsrecord/plugin_gnsrecord_dns.c:588
4394#, fuzzy, c-format 4384#, fuzzy, c-format
4395msgid "Unable to parse MX record `%s'\n" 4385msgid "Unable to parse MX record `%s'\n"
4396msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 4386msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
4397 4387
4398#: src/gnsrecord/plugin_gnsrecord_dns.c:601 4388#: src/gnsrecord/plugin_gnsrecord_dns.c:603
4399#, fuzzy, c-format 4389#, fuzzy, c-format
4400msgid "Failed to serialize MX record with hostname `%s'\n" 4390msgid "Failed to serialize MX record with hostname `%s'\n"
4401msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4391msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4402 4392
4403#: src/gnsrecord/plugin_gnsrecord_dns.c:628 4393#: src/gnsrecord/plugin_gnsrecord_dns.c:630
4404#, fuzzy, c-format 4394#, fuzzy, c-format
4405msgid "Unable to parse SRV record `%s'\n" 4395msgid "Unable to parse SRV record `%s'\n"
4406msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 4396msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
4407 4397
4408#: src/gnsrecord/plugin_gnsrecord_dns.c:644 4398#: src/gnsrecord/plugin_gnsrecord_dns.c:646
4409#, fuzzy, c-format 4399#, fuzzy, c-format
4410msgid "Failed to serialize SRV record with target `%s'\n" 4400msgid "Failed to serialize SRV record with target `%s'\n"
4411msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4401msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4412 4402
4413#: src/gnsrecord/plugin_gnsrecord_dns.c:661 4403#: src/gnsrecord/plugin_gnsrecord_dns.c:663
4414#, c-format 4404#, c-format
4415msgid "Unable to parse IPv6 address `%s'\n" 4405msgid "Unable to parse IPv6 address `%s'\n"
4416msgstr "" 4406msgstr ""
4417 4407
4418#: src/gnsrecord/plugin_gnsrecord_dns.c:685 4408#: src/gnsrecord/plugin_gnsrecord_dns.c:687
4419#: src/gnsrecord/plugin_gnsrecord_dns.c:701 4409#: src/gnsrecord/plugin_gnsrecord_dns.c:703
4420#, fuzzy, c-format 4410#, fuzzy, c-format
4421msgid "Unable to parse TLSA record string `%s'\n" 4411msgid "Unable to parse TLSA record string `%s'\n"
4422msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 4412msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
4423 4413
4424#: src/hello/gnunet-hello.c:124 4414#: src/hello/gnunet-hello.c:126
4425msgid "Call with name of HELLO file to modify.\n" 4415msgid "Call with name of HELLO file to modify.\n"
4426msgstr "" 4416msgstr ""
4427 4417
4428#: src/hello/gnunet-hello.c:130 4418#: src/hello/gnunet-hello.c:132
4429#, fuzzy, c-format 4419#, fuzzy, c-format
4430msgid "Error accessing file `%s': %s\n" 4420msgid "Error accessing file `%s': %s\n"
4431msgstr "" 4421msgstr ""
4432"\n" 4422"\n"
4433"Fehler beim Deindizieren der Datei: %s\n" 4423"Fehler beim Deindizieren der Datei: %s\n"
4434 4424
4435#: src/hello/gnunet-hello.c:138 4425#: src/hello/gnunet-hello.c:140
4436#, c-format 4426#, c-format
4437msgid "File `%s' is too big to be a HELLO\n" 4427msgid "File `%s' is too big to be a HELLO\n"
4438msgstr "" 4428msgstr ""
4439 4429
4440#: src/hello/gnunet-hello.c:145 4430#: src/hello/gnunet-hello.c:147
4441#, c-format 4431#, c-format
4442msgid "File `%s' is too small to be a HELLO\n" 4432msgid "File `%s' is too small to be a HELLO\n"
4443msgstr "" 4433msgstr ""
4444 4434
4445#: src/hello/gnunet-hello.c:155 src/hello/gnunet-hello.c:196 4435#: src/hello/gnunet-hello.c:157 src/hello/gnunet-hello.c:198
4446#, fuzzy, c-format 4436#, fuzzy, c-format
4447msgid "Error opening file `%s': %s\n" 4437msgid "Error opening file `%s': %s\n"
4448msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n" 4438msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n"
4449 4439
4450#: src/hello/gnunet-hello.c:172 4440#: src/hello/gnunet-hello.c:174
4451#, fuzzy, c-format 4441#, fuzzy, c-format
4452msgid "Did not find well-formed HELLO in file `%s'\n" 4442msgid "Did not find well-formed HELLO in file `%s'\n"
4453msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4443msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4454 4444
4455#: src/hello/gnunet-hello.c:208 4445#: src/hello/gnunet-hello.c:210
4456#, fuzzy, c-format 4446#, fuzzy, c-format
4457msgid "Error writing HELLO to file `%s': %s\n" 4447msgid "Error writing HELLO to file `%s': %s\n"
4458msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n" 4448msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n"
4459 4449
4460#: src/hello/gnunet-hello.c:217 4450#: src/hello/gnunet-hello.c:219
4461#, c-format 4451#, c-format
4462msgid "Modified %u addresses, wrote %u bytes\n" 4452msgid "Modified %u addresses, wrote %u bytes\n"
4463msgstr "" 4453msgstr ""
4464 4454
4465#: src/hello/hello.c:1108 4455#: src/hello/hello.c:1110
4466msgid "Failed to parse HELLO message: missing expiration time\n" 4456msgid "Failed to parse HELLO message: missing expiration time\n"
4467msgstr "" 4457msgstr ""
4468 4458
4469#: src/hello/hello.c:1117 4459#: src/hello/hello.c:1119
4470msgid "Failed to parse HELLO message: invalid expiration time\n" 4460msgid "Failed to parse HELLO message: invalid expiration time\n"
4471msgstr "" 4461msgstr ""
4472 4462
4473#: src/hello/hello.c:1127 4463#: src/hello/hello.c:1129
4474#, fuzzy 4464#, fuzzy
4475msgid "Failed to parse HELLO message: malformed\n" 4465msgid "Failed to parse HELLO message: malformed\n"
4476msgstr "Fehler beim Senden der `%s' Nachricht an gnunetd\n" 4466msgstr "Fehler beim Senden der `%s' Nachricht an gnunetd\n"
4477 4467
4478#: src/hello/hello.c:1138 4468#: src/hello/hello.c:1140
4479msgid "Failed to parse HELLO message: missing transport plugin\n" 4469msgid "Failed to parse HELLO message: missing transport plugin\n"
4480msgstr "" 4470msgstr ""
4481 4471
4482#: src/hello/hello.c:1156 4472#: src/hello/hello.c:1158
4483#, fuzzy, c-format 4473#, fuzzy, c-format
4484msgid "Plugin `%s' not found, skipping address\n" 4474msgid "Plugin `%s' not found, skipping address\n"
4485msgstr "Kommando `%s' wurde nicht gefunden!\n" 4475msgstr "Kommando `%s' wurde nicht gefunden!\n"
4486 4476
4487#: src/hello/hello.c:1164 4477#: src/hello/hello.c:1166
4488#, c-format 4478#, c-format
4489msgid "Plugin `%s' does not support URIs yet\n" 4479msgid "Plugin `%s' does not support URIs yet\n"
4490msgstr "" 4480msgstr ""
4491 4481
4492#: src/hello/hello.c:1179 4482#: src/hello/hello.c:1181
4493#, fuzzy, c-format 4483#, fuzzy, c-format
4494msgid "Failed to parse `%s' as an address for plugin `%s'\n" 4484msgid "Failed to parse `%s' as an address for plugin `%s'\n"
4495msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 4485msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
4496 4486
4497#: src/hostlist/gnunet-daemon-hostlist.c:314 4487#: src/hostlist/gnunet-daemon-hostlist.c:316
4498msgid "" 4488msgid ""
4499"None of the functions for the hostlist daemon were enabled. I have no " 4489"None of the functions for the hostlist daemon were enabled. I have no "
4500"reason to run!\n" 4490"reason to run!\n"
4501msgstr "" 4491msgstr ""
4502 4492
4503#: src/hostlist/gnunet-daemon-hostlist.c:374 4493#: src/hostlist/gnunet-daemon-hostlist.c:376
4504msgid "advertise our hostlist to other peers" 4494msgid "advertise our hostlist to other peers"
4505msgstr "" 4495msgstr ""
4506 4496
4507#: src/hostlist/gnunet-daemon-hostlist.c:379 4497#: src/hostlist/gnunet-daemon-hostlist.c:381
4508msgid "" 4498msgid ""
4509"bootstrap using hostlists (it is highly recommended that you always use this " 4499"bootstrap using hostlists (it is highly recommended that you always use this "
4510"option)" 4500"option)"
4511msgstr "" 4501msgstr ""
4512 4502
4513#: src/hostlist/gnunet-daemon-hostlist.c:383 4503#: src/hostlist/gnunet-daemon-hostlist.c:385
4514msgid "enable learning about hostlist servers from other peers" 4504msgid "enable learning about hostlist servers from other peers"
4515msgstr "" 4505msgstr ""
4516 4506
4517#: src/hostlist/gnunet-daemon-hostlist.c:388 4507#: src/hostlist/gnunet-daemon-hostlist.c:390
4518msgid "provide a hostlist server" 4508msgid "provide a hostlist server"
4519msgstr "" 4509msgstr ""
4520 4510
4521#: src/hostlist/gnunet-daemon-hostlist.c:404 4511#: src/hostlist/gnunet-daemon-hostlist.c:406
4522msgid "GNUnet hostlist server and client" 4512msgid "GNUnet hostlist server and client"
4523msgstr "" 4513msgstr ""
4524 4514
4525#: src/hostlist/gnunet-daemon-hostlist_client.c:347 4515#: src/hostlist/gnunet-daemon-hostlist_client.c:349
4526msgid "# bytes downloaded from hostlist servers" 4516msgid "# bytes downloaded from hostlist servers"
4527msgstr "" 4517msgstr ""
4528 4518
4529#: src/hostlist/gnunet-daemon-hostlist_client.c:368 4519#: src/hostlist/gnunet-daemon-hostlist_client.c:370
4530#: src/hostlist/gnunet-daemon-hostlist_client.c:401 4520#: src/hostlist/gnunet-daemon-hostlist_client.c:403
4531#, fuzzy 4521#, fuzzy
4532msgid "# invalid HELLOs downloaded from hostlist servers" 4522msgid "# invalid HELLOs downloaded from hostlist servers"
4533msgstr "# Hellos per HTTP heruntergeladen" 4523msgstr "# Hellos per HTTP heruntergeladen"
4534 4524
4535#: src/hostlist/gnunet-daemon-hostlist_client.c:371 4525#: src/hostlist/gnunet-daemon-hostlist_client.c:373
4536#: src/hostlist/gnunet-daemon-hostlist_client.c:404 4526#: src/hostlist/gnunet-daemon-hostlist_client.c:406
4537#, fuzzy, c-format 4527#, fuzzy, c-format
4538msgid "Invalid `%s' message received from hostlist at `%s'\n" 4528msgid "Invalid `%s' message received from hostlist at `%s'\n"
4539msgstr "Ungültige `%s' Nachricht von Knoten `%s' empfangen.\n" 4529msgstr "Ungültige `%s' Nachricht von Knoten `%s' empfangen.\n"
4540 4530
4541#: src/hostlist/gnunet-daemon-hostlist_client.c:389 4531#: src/hostlist/gnunet-daemon-hostlist_client.c:391
4542#, fuzzy 4532#, fuzzy
4543msgid "# valid HELLOs downloaded from hostlist servers" 4533msgid "# valid HELLOs downloaded from hostlist servers"
4544msgstr "# Hellos per HTTP heruntergeladen" 4534msgstr "# Hellos per HTTP heruntergeladen"
4545 4535
4546#: src/hostlist/gnunet-daemon-hostlist_client.c:659 4536#: src/hostlist/gnunet-daemon-hostlist_client.c:661
4547#: src/hostlist/gnunet-daemon-hostlist_client.c:1405 4537#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
4548msgid "# advertised hostlist URIs" 4538msgid "# advertised hostlist URIs"
4549msgstr "" 4539msgstr ""
4550 4540
4551#: src/hostlist/gnunet-daemon-hostlist_client.c:689 4541#: src/hostlist/gnunet-daemon-hostlist_client.c:691
4552#, c-format 4542#, c-format
4553msgid "# advertised URI `%s' downloaded" 4543msgid "# advertised URI `%s' downloaded"
4554msgstr "" 4544msgstr ""
4555 4545
4556#: src/hostlist/gnunet-daemon-hostlist_client.c:732 4546#: src/hostlist/gnunet-daemon-hostlist_client.c:734
4557#, c-format 4547#, c-format
4558msgid "" 4548msgid ""
4559"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI " 4549"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
4560"gets dismissed.\n" 4550"gets dismissed.\n"
4561msgstr "" 4551msgstr ""
4562 4552
4563#: src/hostlist/gnunet-daemon-hostlist_client.c:860 4553#: src/hostlist/gnunet-daemon-hostlist_client.c:862
4564#, fuzzy, c-format 4554#, fuzzy, c-format
4565msgid "Timeout trying to download hostlist from `%s'\n" 4555msgid "Timeout trying to download hostlist from `%s'\n"
4566msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4556msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4567 4557
4568#: src/hostlist/gnunet-daemon-hostlist_client.c:874 4558#: src/hostlist/gnunet-daemon-hostlist_client.c:876
4569#, c-format 4559#, c-format
4570msgid "Download limit of %u bytes exceeded, stopping download\n" 4560msgid "Download limit of %u bytes exceeded, stopping download\n"
4571msgstr "" 4561msgstr ""
4572 4562
4573#: src/hostlist/gnunet-daemon-hostlist_client.c:894 4563#: src/hostlist/gnunet-daemon-hostlist_client.c:896
4574#, fuzzy, c-format 4564#, fuzzy, c-format
4575msgid "Download of hostlist from `%s' failed: `%s'\n" 4565msgid "Download of hostlist from `%s' failed: `%s'\n"
4576msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4566msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4577 4567
4578#: src/hostlist/gnunet-daemon-hostlist_client.c:900 4568#: src/hostlist/gnunet-daemon-hostlist_client.c:902
4579#, c-format 4569#, c-format
4580msgid "Download of hostlist `%s' completed.\n" 4570msgid "Download of hostlist `%s' completed.\n"
4581msgstr "" 4571msgstr ""
4582 4572
4583#: src/hostlist/gnunet-daemon-hostlist_client.c:908 4573#: src/hostlist/gnunet-daemon-hostlist_client.c:910
4584#, c-format 4574#, c-format
4585msgid "Adding successfully tested hostlist `%s' datastore.\n" 4575msgid "Adding successfully tested hostlist `%s' datastore.\n"
4586msgstr "" 4576msgstr ""
4587 4577
4588#: src/hostlist/gnunet-daemon-hostlist_client.c:961 4578#: src/hostlist/gnunet-daemon-hostlist_client.c:963
4589#, c-format 4579#, c-format
4590msgid "Bootstrapping using hostlist at `%s'.\n" 4580msgid "Bootstrapping using hostlist at `%s'.\n"
4591msgstr "" 4581msgstr ""
4592 4582
4593#: src/hostlist/gnunet-daemon-hostlist_client.c:969 4583#: src/hostlist/gnunet-daemon-hostlist_client.c:971
4594msgid "# hostlist downloads initiated" 4584msgid "# hostlist downloads initiated"
4595msgstr "" 4585msgstr ""
4596 4586
4597#: src/hostlist/gnunet-daemon-hostlist_client.c:1096 4587#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
4598#: src/hostlist/gnunet-daemon-hostlist_client.c:1663 4588#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
4599msgid "# milliseconds between hostlist downloads" 4589msgid "# milliseconds between hostlist downloads"
4600msgstr "" 4590msgstr ""
4601 4591
4602#: src/hostlist/gnunet-daemon-hostlist_client.c:1105 4592#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
4603#, c-format 4593#, c-format
4604msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n" 4594msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n"
4605msgstr "" 4595msgstr ""
4606 4596
4607#: src/hostlist/gnunet-daemon-hostlist_client.c:1164 4597#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
4608#: src/hostlist/gnunet-daemon-hostlist_client.c:1185 4598#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
4609#, fuzzy 4599#, fuzzy
4610msgid "# active connections" 4600msgid "# active connections"
4611msgstr "GNUnet Konfiguration" 4601msgstr "GNUnet Konfiguration"
4612 4602
4613#: src/hostlist/gnunet-daemon-hostlist_client.c:1351 4603#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
4614#, fuzzy, c-format 4604#, fuzzy, c-format
4615msgid "Loading saved hostlist entries from file `%s' \n" 4605msgid "Loading saved hostlist entries from file `%s' \n"
4616msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4606msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4617 4607
4618#: src/hostlist/gnunet-daemon-hostlist_client.c:1356 4608#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
4619#, fuzzy, c-format 4609#, fuzzy, c-format
4620msgid "Hostlist file `%s' does not exist\n" 4610msgid "Hostlist file `%s' does not exist\n"
4621msgstr "Fehler beim Löschen des Pseudonyms `%s' (existiert nicht?).\n" 4611msgstr "Fehler beim Löschen des Pseudonyms `%s' (existiert nicht?).\n"
4622 4612
4623#: src/hostlist/gnunet-daemon-hostlist_client.c:1365 4613#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
4624#, fuzzy, c-format 4614#, fuzzy, c-format
4625msgid "Could not open file `%s' for reading to load hostlists: %s\n" 4615msgid "Could not open file `%s' for reading to load hostlists: %s\n"
4626msgstr "" 4616msgstr ""
4627"`%s' konnte nicht aufgelöst werden, um unsere IP-Adresse zu ermitteln: %s\n" 4617"`%s' konnte nicht aufgelöst werden, um unsere IP-Adresse zu ermitteln: %s\n"
4628 4618
4629#: src/hostlist/gnunet-daemon-hostlist_client.c:1399 4619#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
4630#, c-format 4620#, c-format
4631msgid "%u hostlist URIs loaded from file\n" 4621msgid "%u hostlist URIs loaded from file\n"
4632msgstr "" 4622msgstr ""
4633 4623
4634#: src/hostlist/gnunet-daemon-hostlist_client.c:1402 4624#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
4635msgid "# hostlist URIs read from file" 4625msgid "# hostlist URIs read from file"
4636msgstr "" 4626msgstr ""
4637 4627
4638#: src/hostlist/gnunet-daemon-hostlist_client.c:1448 4628#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
4639#, fuzzy, c-format 4629#, fuzzy, c-format
4640msgid "Could not open file `%s' for writing to save hostlists: %s\n" 4630msgid "Could not open file `%s' for writing to save hostlists: %s\n"
4641msgstr "" 4631msgstr ""
4642"Datei `%s' konnte nicht zu `%s' umbenannt werden: Datei existiert bereits\n" 4632"Datei `%s' konnte nicht zu `%s' umbenannt werden: Datei existiert bereits\n"
4643 4633
4644#: src/hostlist/gnunet-daemon-hostlist_client.c:1455 4634#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
4645#, fuzzy, c-format 4635#, fuzzy, c-format
4646msgid "Writing %u hostlist URIs to `%s'\n" 4636msgid "Writing %u hostlist URIs to `%s'\n"
4647msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4637msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4648 4638
4649#: src/hostlist/gnunet-daemon-hostlist_client.c:1479 4639#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
4650#: src/hostlist/gnunet-daemon-hostlist_client.c:1496 4640#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
4651#, c-format 4641#, c-format
4652msgid "Error writing hostlist URIs to file `%s'\n" 4642msgid "Error writing hostlist URIs to file `%s'\n"
4653msgstr "" 4643msgstr ""
4654 4644
4655#: src/hostlist/gnunet-daemon-hostlist_client.c:1491 4645#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
4656msgid "# hostlist URIs written to file" 4646msgid "# hostlist URIs written to file"
4657msgstr "" 4647msgstr ""
4658 4648
4659#: src/hostlist/gnunet-daemon-hostlist_client.c:1593 4649#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
4660#: src/transport/plugin_transport_http_client.c:2272 4650#: src/transport/plugin_transport_http_client.c:2274
4661#, c-format 4651#, c-format
4662msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n" 4652msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
4663msgstr "" 4653msgstr ""
4664 4654
4665#: src/hostlist/gnunet-daemon-hostlist_client.c:1622 4655#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
4666msgid "Learning is enabled on this peer\n" 4656msgid "Learning is enabled on this peer\n"
4667msgstr "" 4657msgstr ""
4668 4658
4669#: src/hostlist/gnunet-daemon-hostlist_client.c:1636 4659#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
4670msgid "Learning is not enabled on this peer\n" 4660msgid "Learning is not enabled on this peer\n"
4671msgstr "" 4661msgstr ""
4672 4662
4673#: src/hostlist/gnunet-daemon-hostlist_client.c:1649 4663#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
4674#, c-format 4664#, c-format
4675msgid "" 4665msgid ""
4676"Since learning is not enabled on this peer, hostlist file `%s' was removed\n" 4666"Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
4677msgstr "" 4667msgstr ""
4678 4668
4679#: src/hostlist/gnunet-daemon-hostlist_server.c:174 4669#: src/hostlist/gnunet-daemon-hostlist_server.c:176
4680#, fuzzy 4670#, fuzzy
4681msgid "bytes in hostlist" 4671msgid "bytes in hostlist"
4682msgstr "# bytes in der Datenbank" 4672msgstr "# bytes in der Datenbank"
4683 4673
4684#: src/hostlist/gnunet-daemon-hostlist_server.c:199 4674#: src/hostlist/gnunet-daemon-hostlist_server.c:201
4685msgid "expired addresses encountered" 4675msgid "expired addresses encountered"
4686msgstr "" 4676msgstr ""
4687 4677
4688#: src/hostlist/gnunet-daemon-hostlist_server.c:235 4678#: src/hostlist/gnunet-daemon-hostlist_server.c:237
4689#: src/hostlist/gnunet-daemon-hostlist_server.c:529 4679#: src/hostlist/gnunet-daemon-hostlist_server.c:531
4690#: src/peerinfo-tool/gnunet-peerinfo.c:383 4680#: src/peerinfo-tool/gnunet-peerinfo.c:385
4691#: src/peerinfo-tool/gnunet-peerinfo.c:532 4681#: src/peerinfo-tool/gnunet-peerinfo.c:534
4692#: src/topology/gnunet-daemon-topology.c:860 4682#: src/topology/gnunet-daemon-topology.c:862
4693#, fuzzy, c-format 4683#, fuzzy, c-format
4694msgid "Error in communication with PEERINFO service: %s\n" 4684msgid "Error in communication with PEERINFO service: %s\n"
4695msgstr "Informationen über andere GNUnet Knoten ausgeben." 4685msgstr "Informationen über andere GNUnet Knoten ausgeben."
4696 4686
4697#: src/hostlist/gnunet-daemon-hostlist_server.c:259 4687#: src/hostlist/gnunet-daemon-hostlist_server.c:261
4698msgid "HELLOs without addresses encountered (ignored)" 4688msgid "HELLOs without addresses encountered (ignored)"
4699msgstr "" 4689msgstr ""
4700 4690
4701#: src/hostlist/gnunet-daemon-hostlist_server.c:276 4691#: src/hostlist/gnunet-daemon-hostlist_server.c:278
4702msgid "bytes not included in hostlist (size limit)" 4692msgid "bytes not included in hostlist (size limit)"
4703msgstr "" 4693msgstr ""
4704 4694
4705#: src/hostlist/gnunet-daemon-hostlist_server.c:380 4695#: src/hostlist/gnunet-daemon-hostlist_server.c:382
4706#, fuzzy, c-format 4696#, fuzzy, c-format
4707msgid "Refusing `%s' request to hostlist server\n" 4697msgid "Refusing `%s' request to hostlist server\n"
4708msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n" 4698msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
4709 4699
4710#: src/hostlist/gnunet-daemon-hostlist_server.c:383 4700#: src/hostlist/gnunet-daemon-hostlist_server.c:385
4711msgid "hostlist requests refused (not HTTP GET)" 4701msgid "hostlist requests refused (not HTTP GET)"
4712msgstr "" 4702msgstr ""
4713 4703
4714#: src/hostlist/gnunet-daemon-hostlist_server.c:395 4704#: src/hostlist/gnunet-daemon-hostlist_server.c:397
4715#, c-format 4705#, c-format
4716msgid "Refusing `%s' request with %llu bytes of upload data\n" 4706msgid "Refusing `%s' request with %llu bytes of upload data\n"
4717msgstr "" 4707msgstr ""
4718 4708
4719#: src/hostlist/gnunet-daemon-hostlist_server.c:399 4709#: src/hostlist/gnunet-daemon-hostlist_server.c:401
4720msgid "hostlist requests refused (upload data)" 4710msgid "hostlist requests refused (upload data)"
4721msgstr "" 4711msgstr ""
4722 4712
4723#: src/hostlist/gnunet-daemon-hostlist_server.c:406 4713#: src/hostlist/gnunet-daemon-hostlist_server.c:408
4724msgid "Could not handle hostlist request since I do not have a response yet\n" 4714msgid "Could not handle hostlist request since I do not have a response yet\n"
4725msgstr "" 4715msgstr ""
4726 4716
4727#: src/hostlist/gnunet-daemon-hostlist_server.c:409 4717#: src/hostlist/gnunet-daemon-hostlist_server.c:411
4728msgid "hostlist requests refused (not ready)" 4718msgid "hostlist requests refused (not ready)"
4729msgstr "" 4719msgstr ""
4730 4720
4731#: src/hostlist/gnunet-daemon-hostlist_server.c:414 4721#: src/hostlist/gnunet-daemon-hostlist_server.c:416
4732msgid "Received request for our hostlist\n" 4722msgid "Received request for our hostlist\n"
4733msgstr "" 4723msgstr ""
4734 4724
4735#: src/hostlist/gnunet-daemon-hostlist_server.c:416 4725#: src/hostlist/gnunet-daemon-hostlist_server.c:418
4736#, fuzzy 4726#, fuzzy
4737msgid "hostlist requests processed" 4727msgid "hostlist requests processed"
4738msgstr "# dht Anfragen weitergeleitet" 4728msgstr "# dht Anfragen weitergeleitet"
4739 4729
4740#: src/hostlist/gnunet-daemon-hostlist_server.c:464 4730#: src/hostlist/gnunet-daemon-hostlist_server.c:466
4741#, fuzzy 4731#, fuzzy
4742msgid "# hostlist advertisements send" 4732msgid "# hostlist advertisements send"
4743msgstr "# Bekanntmachungen von anderen übertragen" 4733msgstr "# Bekanntmachungen von anderen übertragen"
4744 4734
4745#: src/hostlist/gnunet-daemon-hostlist_server.c:677 4735#: src/hostlist/gnunet-daemon-hostlist_server.c:679
4746#: src/transport/gnunet-service-transport.c:2813 4736#: src/transport/gnunet-service-transport.c:2814
4747#, fuzzy 4737#, fuzzy
4748msgid "Could not access PEERINFO service. Exiting.\n" 4738msgid "Could not access PEERINFO service. Exiting.\n"
4749msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n" 4739msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n"
4750 4740
4751#: src/hostlist/gnunet-daemon-hostlist_server.c:689 4741#: src/hostlist/gnunet-daemon-hostlist_server.c:691
4752#, fuzzy, c-format 4742#, fuzzy, c-format
4753msgid "Invalid port number %llu. Exiting.\n" 4743msgid "Invalid port number %llu. Exiting.\n"
4754msgstr "Ungültige Parameter. Abbruch.\n" 4744msgstr "Ungültige Parameter. Abbruch.\n"
4755 4745
4756#: src/hostlist/gnunet-daemon-hostlist_server.c:701 4746#: src/hostlist/gnunet-daemon-hostlist_server.c:703
4757#, c-format 4747#, c-format
4758msgid "Hostlist service starts on %s:%llu\n" 4748msgid "Hostlist service starts on %s:%llu\n"
4759msgstr "" 4749msgstr ""
4760 4750
4761#: src/hostlist/gnunet-daemon-hostlist_server.c:716 4751#: src/hostlist/gnunet-daemon-hostlist_server.c:718
4762#, fuzzy, c-format 4752#, fuzzy, c-format
4763msgid "Address to obtain hostlist: `%s'\n" 4753msgid "Address to obtain hostlist: `%s'\n"
4764msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 4754msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
4765 4755
4766#: src/hostlist/gnunet-daemon-hostlist_server.c:729 4756#: src/hostlist/gnunet-daemon-hostlist_server.c:731
4767msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4757msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4768msgstr "" 4758msgstr ""
4769 4759
4770#: src/hostlist/gnunet-daemon-hostlist_server.c:746 4760#: src/hostlist/gnunet-daemon-hostlist_server.c:748
4771msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n" 4761msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
4772msgstr "" 4762msgstr ""
4773 4763
4774#: src/hostlist/gnunet-daemon-hostlist_server.c:767 4764#: src/hostlist/gnunet-daemon-hostlist_server.c:769
4775#, fuzzy, c-format 4765#, fuzzy, c-format
4776msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4766msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4777msgstr "»%s« ist keine gültige IP-Adresse.\n" 4767msgstr "»%s« ist keine gültige IP-Adresse.\n"
4778 4768
4779#: src/hostlist/gnunet-daemon-hostlist_server.c:787 4769#: src/hostlist/gnunet-daemon-hostlist_server.c:789
4780#, fuzzy, c-format 4770#, fuzzy, c-format
4781msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n" 4771msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
4782msgstr "»%s« ist keine gültige IP-Adresse.\n" 4772msgstr "»%s« ist keine gültige IP-Adresse.\n"
4783 4773
4784#: src/hostlist/gnunet-daemon-hostlist_server.c:827 4774#: src/hostlist/gnunet-daemon-hostlist_server.c:829
4785#, fuzzy, c-format 4775#, fuzzy, c-format
4786msgid "Could not start hostlist HTTP server on port %u\n" 4776msgid "Could not start hostlist HTTP server on port %u\n"
4787msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" 4777msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
4788 4778
4789#: src/identity/gnunet-identity.c:177 4779#: src/identity/gnunet-identity.c:179
4790#, fuzzy, c-format 4780#, fuzzy, c-format
4791msgid "Failed to create ego: %s\n" 4781msgid "Failed to create ego: %s\n"
4792msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 4782msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
4793 4783
4794#: src/identity/gnunet-identity.c:199 4784#: src/identity/gnunet-identity.c:201
4795#, fuzzy, c-format 4785#, fuzzy, c-format
4796msgid "Failed to set default ego: %s\n" 4786msgid "Failed to set default ego: %s\n"
4797msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n" 4787msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
4798 4788
4799#: src/identity/gnunet-identity.c:354 4789#: src/identity/gnunet-identity.c:356
4800msgid "create ego NAME" 4790msgid "create ego NAME"
4801msgstr "" 4791msgstr ""
4802 4792
4803#: src/identity/gnunet-identity.c:360 4793#: src/identity/gnunet-identity.c:362
4804msgid "delete ego NAME " 4794msgid "delete ego NAME "
4805msgstr "" 4795msgstr ""
4806 4796
4807#: src/identity/gnunet-identity.c:365 4797#: src/identity/gnunet-identity.c:367
4808msgid "display all egos" 4798msgid "display all egos"
4809msgstr "" 4799msgstr ""
4810 4800
4811#: src/identity/gnunet-identity.c:371 4801#: src/identity/gnunet-identity.c:373
4812msgid "" 4802msgid ""
4813"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)" 4803"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
4814msgstr "" 4804msgstr ""
4815 4805
4816#: src/identity/gnunet-identity.c:376 4806#: src/identity/gnunet-identity.c:378
4817msgid "run in monitor mode egos" 4807msgid "run in monitor mode egos"
4818msgstr "" 4808msgstr ""
4819 4809
4820#: src/identity/gnunet-identity.c:382 4810#: src/identity/gnunet-identity.c:384
4821msgid "" 4811msgid ""
4822"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)" 4812"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
4823msgstr "" 4813msgstr ""
4824 4814
4825#: src/identity/gnunet-identity.c:396 4815#: src/identity/gnunet-identity.c:398
4826msgid "Maintain egos" 4816msgid "Maintain egos"
4827msgstr "" 4817msgstr ""
4828 4818
4829#: src/identity/gnunet-service-identity.c:389 4819#: src/identity/gnunet-service-identity.c:391
4830msgid "no default known" 4820msgid "no default known"
4831msgstr "" 4821msgstr ""
4832 4822
4833#: src/identity/gnunet-service-identity.c:414 4823#: src/identity/gnunet-service-identity.c:416
4834msgid "default configured, but ego unknown (internal error)" 4824msgid "default configured, but ego unknown (internal error)"
4835msgstr "" 4825msgstr ""
4836 4826
4837#: src/identity/gnunet-service-identity.c:505 4827#: src/identity/gnunet-service-identity.c:507
4838#: src/identity/gnunet-service-identity.c:788 4828#: src/identity/gnunet-service-identity.c:790
4839#: src/identity/gnunet-service-identity.c:916 4829#: src/identity/gnunet-service-identity.c:918
4840#, fuzzy, c-format 4830#, fuzzy, c-format
4841msgid "Failed to write subsystem default identifier map to `%s'.\n" 4831msgid "Failed to write subsystem default identifier map to `%s'.\n"
4842msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 4832msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
4843 4833
4844#: src/identity/gnunet-service-identity.c:513 4834#: src/identity/gnunet-service-identity.c:515
4845msgid "Unknown ego specified for service (internal error)" 4835msgid "Unknown ego specified for service (internal error)"
4846msgstr "" 4836msgstr ""
4847 4837
4848#: src/identity/gnunet-service-identity.c:608 4838#: src/identity/gnunet-service-identity.c:610
4849msgid "identifier already in use for another ego" 4839msgid "identifier already in use for another ego"
4850msgstr "" 4840msgstr ""
4851 4841
4852#: src/identity/gnunet-service-identity.c:763 4842#: src/identity/gnunet-service-identity.c:765
4853msgid "target name already exists" 4843msgid "target name already exists"
4854msgstr "" 4844msgstr ""
4855 4845
4856#: src/identity/gnunet-service-identity.c:806 4846#: src/identity/gnunet-service-identity.c:808
4857#: src/identity/gnunet-service-identity.c:934 4847#: src/identity/gnunet-service-identity.c:936
4858msgid "no matching ego found" 4848msgid "no matching ego found"
4859msgstr "" 4849msgstr ""
4860 4850
4861#: src/identity/gnunet-service-identity.c:969 4851#: src/identity/gnunet-service-identity.c:971
4862#, fuzzy, c-format 4852#, fuzzy, c-format
4863msgid "Failed to parse ego information in `%s'\n" 4853msgid "Failed to parse ego information in `%s'\n"
4864msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n" 4854msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
4865 4855
4866#: src/identity/gnunet-service-identity.c:1027 4856#: src/identity/gnunet-service-identity.c:1029
4867#, fuzzy, c-format 4857#, fuzzy, c-format
4868msgid "Failed to parse subsystem identity configuration file `%s'\n" 4858msgid "Failed to parse subsystem identity configuration file `%s'\n"
4869msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 4859msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
4870 4860
4871#: src/identity/gnunet-service-identity.c:1037 4861#: src/identity/gnunet-service-identity.c:1039
4872#, fuzzy, c-format 4862#, fuzzy, c-format
4873msgid "Failed to create directory `%s' for storing egos\n" 4863msgid "Failed to create directory `%s' for storing egos\n"
4874msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 4864msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
4875 4865
4876#: src/json/json.c:121 4866#: src/json/json.c:123
4877#, fuzzy, c-format 4867#, fuzzy, c-format
4878msgid "Failed to parse JSON in option `%s': %s (%s)\n" 4868msgid "Failed to parse JSON in option `%s': %s (%s)\n"
4879msgstr "Datei wurde als `%s' gespeichert.\n" 4869msgstr "Datei wurde als `%s' gespeichert.\n"
4880 4870
4881#: src/multicast/gnunet-multicast.c:46 src/multicast/gnunet-multicast.c:70 4871#: src/my/my.c:196 src/my/my.c:215
4882msgid "This command doesn't do anything yet."
4883msgstr ""
4884
4885#: src/my/my.c:194 src/my/my.c:213
4886#, fuzzy, c-format 4872#, fuzzy, c-format
4887msgid "%s failed at %s:%d with error: %s\n" 4873msgid "%s failed at %s:%d with error: %s\n"
4888msgstr "»%s« schlug bei %s:%d mit dem Fehler %s fehl\n" 4874msgstr "»%s« schlug bei %s:%d mit dem Fehler %s fehl\n"
4889 4875
4890#: src/mysql/mysql.c:178 4876#: src/mysql/mysql.c:180
4891#, c-format 4877#, c-format
4892msgid "Trying to use file `%s' for MySQL configuration.\n" 4878msgid "Trying to use file `%s' for MySQL configuration.\n"
4893msgstr "Versuchen, Datei »%s« für MySQL-Konfiguration zu verwenden.\n" 4879msgstr "Versuchen, Datei »%s« für MySQL-Konfiguration zu verwenden.\n"
4894 4880
4895#: src/mysql/mysql.c:185 4881#: src/mysql/mysql.c:187
4896#, fuzzy, c-format 4882#, fuzzy, c-format
4897msgid "Could not access file `%s': %s\n" 4883msgid "Could not access file `%s': %s\n"
4898msgstr "`%s' konnte nicht aufgelöst werden: %s\n" 4884msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
4899 4885
4900#: src/namecache/gnunet-namecache.c:105 4886#: src/namecache/gnunet-namecache.c:107
4901#, fuzzy, c-format 4887#, fuzzy, c-format
4902msgid "No records found for `%s'" 4888msgid "No records found for `%s'"
4903msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n" 4889msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n"
4904 4890
4905#: src/namecache/gnunet-namecache.c:120 src/namestore/gnunet-namestore.c:424 4891#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
4906#, c-format 4892#, c-format
4907msgid "\tCorrupt or unsupported record of type %u\n" 4893msgid "\tCorrupt or unsupported record of type %u\n"
4908msgstr "" 4894msgstr ""
4909 4895
4910#: src/namecache/gnunet-namecache.c:181 4896#: src/namecache/gnunet-namecache.c:183
4911#, fuzzy, c-format 4897#, fuzzy, c-format
4912msgid "You must specify which zone should be accessed\n" 4898msgid "You must specify which zone should be accessed\n"
4913msgstr "Gibt an, welcher TRANSPORT getestet werden soll" 4899msgstr "Gibt an, welcher TRANSPORT getestet werden soll"
4914 4900
4915#: src/namecache/gnunet-namecache.c:191 4901#: src/namecache/gnunet-namecache.c:193
4916#, fuzzy, c-format 4902#, fuzzy, c-format
4917msgid "Invalid public key for zone `%s'\n" 4903msgid "Invalid public key for zone `%s'\n"
4918msgstr "Ungültiger Parameter: `%s'\n" 4904msgstr "Ungültiger Parameter: `%s'\n"
4919 4905
4920#: src/namecache/gnunet-namecache.c:199 4906#: src/namecache/gnunet-namecache.c:201
4921#, fuzzy, c-format 4907#, fuzzy, c-format
4922msgid "You must specify a name\n" 4908msgid "You must specify a name\n"
4923msgstr "Sie müssen einen Empfänger angeben!\n" 4909msgstr "Sie müssen einen Empfänger angeben!\n"
4924 4910
4925#: src/namecache/gnunet-namecache.c:230 src/namestore/gnunet-namestore.c:1290 4911#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
4926msgid "name of the record to add/delete/display" 4912msgid "name of the record to add/delete/display"
4927msgstr "" 4913msgstr ""
4928 4914
4929#: src/namecache/gnunet-namecache.c:236 4915#: src/namecache/gnunet-namecache.c:238
4930#, fuzzy 4916#, fuzzy
4931msgid "spezifies the public key of the zone to look in" 4917msgid "spezifies the public key of the zone to look in"
4932msgstr "Die Priorität des Inhalts angeben" 4918msgstr "Die Priorität des Inhalts angeben"
4933 4919
4934#: src/namecache/gnunet-namecache.c:248 src/namestore/gnunet-namestore.c:1342 4920#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
4935#, fuzzy 4921#, fuzzy
4936msgid "GNUnet zone manipulation tool" 4922msgid "GNUnet zone manipulation tool"
4937msgstr "GNUnet Konfiguration" 4923msgstr "GNUnet Konfiguration"
4938 4924
4939#: src/namecache/namecache_api.c:294 4925#: src/namecache/namecache_api.c:296
4940msgid "Namecache failed to cache block" 4926msgid "Namecache failed to cache block"
4941msgstr "" 4927msgstr ""
4942 4928
4943#: src/namecache/namecache_api.c:381 4929#: src/namecache/namecache_api.c:383
4944#, fuzzy 4930#, fuzzy
4945msgid "Error communicating with namecache service" 4931msgid "Error communicating with namecache service"
4946msgstr "Informationen über andere GNUnet Knoten ausgeben." 4932msgstr "Informationen über andere GNUnet Knoten ausgeben."
4947 4933
4948#: src/namecache/plugin_namecache_flat.c:119 4934#: src/namecache/plugin_namecache_flat.c:121
4949#: src/namecache/plugin_namecache_flat.c:253 4935#: src/namecache/plugin_namecache_flat.c:255
4950#: src/namestore/plugin_namestore_heap.c:146 4936#: src/namestore/plugin_namestore_heap.c:148
4951#: src/namestore/plugin_namestore_heap.c:393 4937#: src/namestore/plugin_namestore_heap.c:395
4952#: src/peerstore/plugin_peerstore_flat.c:377 4938#: src/peerstore/plugin_peerstore_flat.c:379
4953#: src/peerstore/plugin_peerstore_flat.c:536 4939#: src/peerstore/plugin_peerstore_flat.c:538
4954#, fuzzy, c-format 4940#, fuzzy, c-format
4955msgid "Unable to initialize file: %s.\n" 4941msgid "Unable to initialize file: %s.\n"
4956msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n" 4942msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
4957 4943
4958#: src/namecache/plugin_namecache_flat.c:130 4944#: src/namecache/plugin_namecache_flat.c:132
4959#: src/namestore/plugin_namestore_heap.c:157 4945#: src/namestore/plugin_namestore_heap.c:159
4960#: src/peerstore/plugin_peerstore_flat.c:392 4946#: src/peerstore/plugin_peerstore_flat.c:394
4961#, fuzzy, c-format 4947#, fuzzy, c-format
4962msgid "Unable to get filesize: %s.\n" 4948msgid "Unable to get filesize: %s.\n"
4963msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" 4949msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
4964 4950
4965#: src/namecache/plugin_namecache_flat.c:149 4951#: src/namecache/plugin_namecache_flat.c:151
4966#: src/namestore/plugin_namestore_heap.c:170 4952#: src/namestore/plugin_namestore_heap.c:172
4967#: src/peerstore/plugin_peerstore_flat.c:404 4953#: src/peerstore/plugin_peerstore_flat.c:406
4968#, fuzzy, c-format 4954#, fuzzy, c-format
4969msgid "Unable to read file: %s.\n" 4955msgid "Unable to read file: %s.\n"
4970msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" 4956msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
4971 4957
4972#: src/namecache/plugin_namecache_flat.c:408 4958#: src/namecache/plugin_namecache_flat.c:410
4973#, fuzzy 4959#, fuzzy
4974msgid "flat plugin running\n" 4960msgid "flat plugin running\n"
4975msgstr "Sqlite-Datenbank läuft\n" 4961msgstr "Sqlite-Datenbank läuft\n"
4976 4962
4977#: src/namestore/gnunet-namestore.c:311 4963#: src/namecache/plugin_namecache_sqlite.c:183
4964#: src/namecache/plugin_namecache_sqlite.c:197
4965#: src/namestore/plugin_namestore_sqlite.c:219
4966#: src/namestore/plugin_namestore_sqlite.c:230
4967#, fuzzy, c-format
4968msgid "Failed to setup database at `%s'\n"
4969msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
4970
4971#: src/namestore/gnunet-namestore.c:341
4978#, c-format 4972#, c-format
4979msgid "Adding record failed: %s\n" 4973msgid "Adding record failed: %s\n"
4980msgstr "" 4974msgstr ""
4981 4975
4982#: src/namestore/gnunet-namestore.c:341 4976#: src/namestore/gnunet-namestore.c:371
4983#, c-format 4977#, c-format
4984msgid "Deleting record failed, record does not exist%s%s\n" 4978msgid "Deleting record failed, record does not exist%s%s\n"
4985msgstr "" 4979msgstr ""
4986 4980
4987#: src/namestore/gnunet-namestore.c:348 4981#: src/namestore/gnunet-namestore.c:378
4988#, c-format 4982#, c-format
4989msgid "Deleting record failed%s%s\n" 4983msgid "Deleting record failed%s%s\n"
4990msgstr "" 4984msgstr ""
4991 4985
4992#: src/namestore/gnunet-namestore.c:628 src/namestore/gnunet-namestore.c:636 4986#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
4993#, c-format 4987#, c-format
4994msgid "A %s record exists already under `%s', no other records can be added.\n" 4988msgid "A %s record exists already under `%s', no other records can be added.\n"
4995msgstr "" 4989msgstr ""
4996 4990
4997#: src/namestore/gnunet-namestore.c:650 src/namestore/gnunet-namestore.c:662 4991#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
4998#, c-format 4992#, c-format
4999msgid "Records already exist under `%s', cannot add `%s' record.\n" 4993msgid "Records already exist under `%s', cannot add `%s' record.\n"
5000msgstr "" 4994msgstr ""
5001 4995
5002#: src/namestore/gnunet-namestore.c:675 4996#: src/namestore/gnunet-namestore.c:707
5003#, c-format 4997#, c-format
5004msgid "" 4998msgid ""
5005"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n" 4999"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
5006msgstr "" 5000msgstr ""
5007 5001
5008#: src/namestore/gnunet-namestore.c:809 5002#: src/namestore/gnunet-namestore.c:837
5009#, c-format 5003#, c-format
5010msgid "There are no records under label `%s' that could be deleted.\n" 5004msgid "There are no records under label `%s' that could be deleted.\n"
5011msgstr "" 5005msgstr ""
5012 5006
5013#: src/namestore/gnunet-namestore.c:850 5007#: src/namestore/gnunet-namestore.c:878
5014#, c-format 5008#, c-format
5015msgid "" 5009msgid ""
5016"There are no records under label `%s' that match the request for deletion.\n" 5010"There are no records under label `%s' that match the request for deletion.\n"
5017msgstr "" 5011msgstr ""
5018 5012
5019#: src/namestore/gnunet-namestore.c:902 5013#: src/namestore/gnunet-namestore.c:965
5014#, fuzzy, c-format
5015msgid "Failed to replace records: %s\n"
5016msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
5017
5018#: src/namestore/gnunet-namestore.c:1009
5020#, c-format 5019#, c-format
5021msgid "No options given\n" 5020msgid "No options given\n"
5022msgstr "" 5021msgstr ""
5023 5022
5024#: src/namestore/gnunet-namestore.c:921 src/namestore/gnunet-namestore.c:930 5023#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
5025#: src/namestore/gnunet-namestore.c:949 src/namestore/gnunet-namestore.c:972 5024#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
5026#: src/namestore/gnunet-namestore.c:1026 5025#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
5027#, fuzzy, c-format 5026#, fuzzy, c-format
5028msgid "Missing option `%s' for operation `%s'\n" 5027msgid "Missing option `%s' for operation `%s'\n"
5029msgstr "Unbekannte Operation `%s'\n" 5028msgstr "Unbekannte Operation `%s'\n"
5030 5029
5031#: src/namestore/gnunet-namestore.c:922 src/namestore/gnunet-namestore.c:931 5030#: src/namestore/gnunet-namestore.c:1033
5032#: src/namestore/gnunet-namestore.c:950 src/namestore/gnunet-namestore.c:974 5031msgid "replace"
5032msgstr ""
5033
5034#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
5035#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
5033msgid "add" 5036msgid "add"
5034msgstr "" 5037msgstr ""
5035 5038
5036#: src/namestore/gnunet-namestore.c:940 5039#: src/namestore/gnunet-namestore.c:1084
5037#, fuzzy, c-format 5040#, fuzzy, c-format
5038msgid "Unsupported type `%s'\n" 5041msgid "Unsupported type `%s'\n"
5039msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" 5042msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
5040 5043
5041#: src/namestore/gnunet-namestore.c:962 5044#: src/namestore/gnunet-namestore.c:1106
5042#, fuzzy, c-format 5045#, fuzzy, c-format
5043msgid "Value `%s' invalid for record type `%s'\n" 5046msgid "Value `%s' invalid for record type `%s'\n"
5044msgstr "%s: Symbolwert `%s' ist ungültig für %s\n" 5047msgstr "%s: Symbolwert `%s' ist ungültig für %s\n"
5045 5048
5046#: src/namestore/gnunet-namestore.c:1007 5049#: src/namestore/gnunet-namestore.c:1129
5047#, fuzzy, c-format 5050#, fuzzy, c-format
5048msgid "Invalid time format `%s'\n" 5051msgid "Invalid time format `%s'\n"
5049msgstr "Ungültiger Parameter: `%s'\n" 5052msgstr "Ungültiger Parameter: `%s'\n"
5050 5053
5051#: src/namestore/gnunet-namestore.c:1027 5054#: src/namestore/gnunet-namestore.c:1149
5052msgid "del" 5055msgid "del"
5053msgstr "" 5056msgstr ""
5054 5057
5055#: src/namestore/gnunet-namestore.c:1070 5058#: src/namestore/gnunet-namestore.c:1192
5056#, c-format 5059#, c-format
5057msgid "Invalid public key for reverse lookup `%s'\n" 5060msgid "Invalid public key for reverse lookup `%s'\n"
5058msgstr "" 5061msgstr ""
5059 5062
5060#: src/namestore/gnunet-namestore.c:1099 5063#: src/namestore/gnunet-namestore.c:1221
5061#: src/peerinfo-tool/gnunet-peerinfo.c:773 5064#: src/peerinfo-tool/gnunet-peerinfo.c:775
5062#, fuzzy, c-format 5065#, fuzzy, c-format
5063msgid "Invalid URI `%s'\n" 5066msgid "Invalid URI `%s'\n"
5064msgstr "Ungültiger Parameter: `%s'\n" 5067msgstr "Ungültiger Parameter: `%s'\n"
5065 5068
5066#: src/namestore/gnunet-namestore.c:1134 5069#: src/namestore/gnunet-namestore.c:1249
5067#, fuzzy, c-format 5070#, fuzzy, c-format
5068msgid "Invalid nick `%s'\n" 5071msgid "Invalid nick `%s'\n"
5069msgstr "Ungültiger Parameter: `%s'\n" 5072msgstr "Ungültiger Parameter: `%s'\n"
5070 5073
5071#: src/namestore/gnunet-namestore.c:1174 5074#: src/namestore/gnunet-namestore.c:1289
5072#, c-format 5075#, c-format
5073msgid "No default ego configured in identity service\n" 5076msgid "No default ego configured in identity service\n"
5074msgstr "" 5077msgstr ""
5075 5078
5076#: src/namestore/gnunet-namestore.c:1238 5079#: src/namestore/gnunet-namestore.c:1341
5080#, c-format
5081msgid "Superfluous command line arguments (starting with `%s') ignored\n"
5082msgstr ""
5083
5084#: src/namestore/gnunet-namestore.c:1357
5077#, fuzzy, c-format 5085#, fuzzy, c-format
5078msgid "Cannot connect to identity service\n" 5086msgid "Cannot connect to identity service\n"
5079msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n" 5087msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
5080 5088
5081#: src/namestore/gnunet-namestore.c:1263 5089#: src/namestore/gnunet-namestore.c:1407
5090msgid "Empty record line argument is not allowed.\n"
5091msgstr ""
5092
5093#: src/namestore/gnunet-namestore.c:1423
5094#, c-format
5095msgid "Invalid expiration time `%s' (must be without unit)\n"
5096msgstr ""
5097
5098#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
5099#: src/namestore/gnunet-namestore.c:1470
5100#, fuzzy, c-format
5101msgid "Missing entries in record line `%s'.\n"
5102msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
5103
5104#: src/namestore/gnunet-namestore.c:1444
5105#, fuzzy, c-format
5106msgid "Unknown record type `%s'\n"
5107msgstr "Unbekannter Befehl »%s«\n"
5108
5109#: src/namestore/gnunet-namestore.c:1484
5110#, fuzzy, c-format
5111msgid "Invalid record data for type %s: `%s'.\n"
5112msgstr "Ungültiges Format für IP: »%s«\n"
5113
5114#: src/namestore/gnunet-namestore.c:1548
5082msgid "add record" 5115msgid "add record"
5083msgstr "" 5116msgstr ""
5084 5117
5085#: src/namestore/gnunet-namestore.c:1267 5118#: src/namestore/gnunet-namestore.c:1552
5086msgid "delete record" 5119msgid "delete record"
5087msgstr "" 5120msgstr ""
5088 5121
5089#: src/namestore/gnunet-namestore.c:1271 5122#: src/namestore/gnunet-namestore.c:1556
5090msgid "display records" 5123msgid "display records"
5091msgstr "" 5124msgstr ""
5092 5125
5093#: src/namestore/gnunet-namestore.c:1276 5126#: src/namestore/gnunet-namestore.c:1561
5094msgid "" 5127msgid ""
5095"expiration time for record to use (for adding only), \"never\" is possible" 5128"expiration time for record to use (for adding only), \"never\" is possible"
5096msgstr "" 5129msgstr ""
5097 5130
5098#: src/namestore/gnunet-namestore.c:1281 5131#: src/namestore/gnunet-namestore.c:1566
5099msgid "set the desired nick name for the zone" 5132msgid "set the desired nick name for the zone"
5100msgstr "" 5133msgstr ""
5101 5134
5102#: src/namestore/gnunet-namestore.c:1285 5135#: src/namestore/gnunet-namestore.c:1570
5103msgid "monitor changes in the namestore" 5136msgid "monitor changes in the namestore"
5104msgstr "" 5137msgstr ""
5105 5138
5106#: src/namestore/gnunet-namestore.c:1295 5139#: src/namestore/gnunet-namestore.c:1580
5107msgid "determine our name for the given PKEY" 5140msgid "determine our name for the given PKEY"
5108msgstr "" 5141msgstr ""
5109 5142
5110#: src/namestore/gnunet-namestore.c:1300 5143#: src/namestore/gnunet-namestore.c:1585
5144msgid ""
5145"set record set to values given by (possibly multiple) RECORDLINES; can be "
5146"specified multiple times"
5147msgstr ""
5148
5149#: src/namestore/gnunet-namestore.c:1590
5111msgid "type of the record to add/delete/display" 5150msgid "type of the record to add/delete/display"
5112msgstr "" 5151msgstr ""
5113 5152
5114#: src/namestore/gnunet-namestore.c:1305 5153#: src/namestore/gnunet-namestore.c:1595
5115msgid "URI to import into our zone" 5154msgid "URI to import into our zone"
5116msgstr "" 5155msgstr ""
5117 5156
5118#: src/namestore/gnunet-namestore.c:1310 5157#: src/namestore/gnunet-namestore.c:1600
5119msgid "value of the record to add/delete" 5158msgid "value of the record to add/delete"
5120msgstr "" 5159msgstr ""
5121 5160
5122#: src/namestore/gnunet-namestore.c:1314 5161#: src/namestore/gnunet-namestore.c:1604
5123msgid "create or list public record" 5162msgid "create or list public record"
5124msgstr "" 5163msgstr ""
5125 5164
5126#: src/namestore/gnunet-namestore.c:1318 5165#: src/namestore/gnunet-namestore.c:1608
5127msgid "" 5166msgid ""
5128"create shadow record (only valid if all other records of the same type have " 5167"create shadow record (only valid if all other records of the same type have "
5129"expired" 5168"expired"
5130msgstr "" 5169msgstr ""
5131 5170
5132#: src/namestore/gnunet-namestore.c:1323 5171#: src/namestore/gnunet-namestore.c:1613
5133msgid "name of the ego controlling the zone" 5172msgid "name of the ego controlling the zone"
5134msgstr "" 5173msgstr ""
5135 5174
5136#: src/namestore/gnunet-namestore-fcfsd.c:547 5175#: src/namestore/gnunet-namestore-fcfsd.c:549
5137#, fuzzy, c-format 5176#, fuzzy, c-format
5138msgid "Unsupported form value `%s'\n" 5177msgid "Unsupported form value `%s'\n"
5139msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n" 5178msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
5140 5179
5141#: src/namestore/gnunet-namestore-fcfsd.c:574 5180#: src/namestore/gnunet-namestore-fcfsd.c:576
5142#, fuzzy, c-format 5181#, fuzzy, c-format
5143msgid "Failed to create record for domain `%s': %s\n" 5182msgid "Failed to create record for domain `%s': %s\n"
5144msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 5183msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
5145 5184
5146#: src/namestore/gnunet-namestore-fcfsd.c:595 5185#: src/namestore/gnunet-namestore-fcfsd.c:597
5147msgid "Error when mapping zone to name\n" 5186msgid "Error when mapping zone to name\n"
5148msgstr "" 5187msgstr ""
5149 5188
5150#: src/namestore/gnunet-namestore-fcfsd.c:627 5189#: src/namestore/gnunet-namestore-fcfsd.c:629
5151#, c-format 5190#, c-format
5152msgid "Found existing name `%s' for the given key\n" 5191msgid "Found existing name `%s' for the given key\n"
5153msgstr "" 5192msgstr ""
5154 5193
5155#: src/namestore/gnunet-namestore-fcfsd.c:687 5194#: src/namestore/gnunet-namestore-fcfsd.c:689
5156#, c-format 5195#, c-format
5157msgid "Found %u existing records for domain `%s'\n" 5196msgid "Found %u existing records for domain `%s'\n"
5158msgstr "" 5197msgstr ""
5159 5198
5160#: src/namestore/gnunet-namestore-fcfsd.c:775 5199#: src/namestore/gnunet-namestore-fcfsd.c:777
5161#, fuzzy, c-format 5200#, fuzzy, c-format
5162msgid "Failed to create page for `%s'\n" 5201msgid "Failed to create page for `%s'\n"
5163msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 5202msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
5164 5203
5165#: src/namestore/gnunet-namestore-fcfsd.c:794 5204#: src/namestore/gnunet-namestore-fcfsd.c:796
5166#, fuzzy, c-format 5205#, fuzzy, c-format
5167msgid "Failed to setup post processor for `%s'\n" 5206msgid "Failed to setup post processor for `%s'\n"
5168msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 5207msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
5169 5208
5170#: src/namestore/gnunet-namestore-fcfsd.c:830 5209#: src/namestore/gnunet-namestore-fcfsd.c:832
5171msgid "Domain name must not contain `.'\n" 5210msgid "Domain name must not contain `.'\n"
5172msgstr "" 5211msgstr ""
5173 5212
5174#: src/namestore/gnunet-namestore-fcfsd.c:839 5213#: src/namestore/gnunet-namestore-fcfsd.c:841
5175msgid "Domain name must not contain `+'\n" 5214msgid "Domain name must not contain `+'\n"
5176msgstr "" 5215msgstr ""
5177 5216
5178#: src/namestore/gnunet-namestore-fcfsd.c:1069 5217#: src/namestore/gnunet-namestore-fcfsd.c:1071
5179msgid "No ego configured for `fcfsd` subsystem\n" 5218msgid "No ego configured for `fcfsd` subsystem\n"
5180msgstr "" 5219msgstr ""
5181 5220
5182#: src/namestore/gnunet-namestore-fcfsd.c:1097 5221#: src/namestore/gnunet-namestore-fcfsd.c:1099
5183#, fuzzy 5222#, fuzzy
5184msgid "Failed to start HTTP server\n" 5223msgid "Failed to start HTTP server\n"
5185msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n" 5224msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
5186 5225
5187#: src/namestore/gnunet-namestore-fcfsd.c:1145 5226#: src/namestore/gnunet-namestore-fcfsd.c:1147
5188#, fuzzy 5227#, fuzzy
5189msgid "Failed to connect to identity\n" 5228msgid "Failed to connect to identity\n"
5190msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 5229msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
5191 5230
5192#: src/namestore/gnunet-namestore-fcfsd.c:1171 5231#: src/namestore/gnunet-namestore-fcfsd.c:1173
5193msgid "name of the zone that is to be managed by FCFSD" 5232msgid "name of the zone that is to be managed by FCFSD"
5194msgstr "" 5233msgstr ""
5195 5234
5196#: src/namestore/gnunet-namestore-fcfsd.c:1190 5235#: src/namestore/gnunet-namestore-fcfsd.c:1192
5197msgid "GNU Name System First Come First Serve name registration service" 5236msgid "GNU Name System First Come First Serve name registration service"
5198msgstr "" 5237msgstr ""
5199 5238
5200#: src/namestore/gnunet-service-namestore.c:749 5239#: src/namestore/gnunet-service-namestore.c:900
5201#, c-format 5240#, c-format
5202msgid "Failed to replicate block in namecache: %s\n" 5241msgid "Failed to replicate block in namecache: %s\n"
5203msgstr "" 5242msgstr ""
5204 5243
5205#: src/namestore/gnunet-zoneimport.c:2036 5244#: src/namestore/gnunet-zoneimport.c:2038
5206msgid "size to use for the main hash map" 5245msgid "size to use for the main hash map"
5207msgstr "" 5246msgstr ""
5208 5247
5209#: src/namestore/gnunet-zoneimport.c:2041 5248#: src/namestore/gnunet-zoneimport.c:2043
5210msgid "minimum expiration time we assume for imported records" 5249msgid "minimum expiration time we assume for imported records"
5211msgstr "" 5250msgstr ""
5212 5251
5213#: src/namestore/namestore_api.c:389 5252#: src/namestore/namestore_api.c:391
5214msgid "Namestore failed to store record\n" 5253msgid "Namestore failed to store record\n"
5215msgstr "" 5254msgstr ""
5216 5255
5217#: src/namestore/plugin_namestore_heap.c:776 5256#: src/namestore/plugin_namestore_heap.c:778
5218#, fuzzy 5257#, fuzzy
5219msgid "heap file database running\n" 5258msgid "heap file database running\n"
5220msgstr "Sqlite-Datenbank läuft\n" 5259msgstr "Sqlite-Datenbank läuft\n"
5221 5260
5222#: src/namestore/plugin_namestore_sqlite.c:216 5261#: src/nat-auto/gnunet-nat-auto.c:193
5223#: src/namestore/plugin_namestore_sqlite.c:227
5224#, fuzzy, c-format
5225msgid "Failed to setup database at `%s'\n"
5226msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
5227
5228#: src/nat-auto/gnunet-nat-auto.c:191
5229#, fuzzy 5262#, fuzzy
5230msgid "Suggested configuration changes:\n" 5263msgid "Suggested configuration changes:\n"
5231msgstr "" 5264msgstr ""
5232"Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben" 5265"Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben"
5233 5266
5234#: src/nat-auto/gnunet-nat-auto.c:217 5267#: src/nat-auto/gnunet-nat-auto.c:219
5235#, fuzzy, c-format 5268#, fuzzy, c-format
5236msgid "Failed to write configuration to `%s'\n" 5269msgid "Failed to write configuration to `%s'\n"
5237msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 5270msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
5238 5271
5239#: src/nat-auto/gnunet-nat-auto.c:224 5272#: src/nat-auto/gnunet-nat-auto.c:226
5240#, fuzzy, c-format 5273#, fuzzy, c-format
5241msgid "Wrote updated configuration to `%s'\n" 5274msgid "Wrote updated configuration to `%s'\n"
5242msgstr "Konfigurationsdatei `%s' konnte nicht geparst werden.\n" 5275msgstr "Konfigurationsdatei `%s' konnte nicht geparst werden.\n"
5243 5276
5244#: src/nat-auto/gnunet-nat-auto.c:343 5277#: src/nat-auto/gnunet-nat-auto.c:345
5245#, fuzzy 5278#, fuzzy
5246msgid "run autoconfiguration" 5279msgid "run autoconfiguration"
5247msgstr "# Freunde in Konfiguration" 5280msgstr "# Freunde in Konfiguration"
5248 5281
5249#: src/nat-auto/gnunet-nat-auto.c:349 5282#: src/nat-auto/gnunet-nat-auto.c:351
5250msgid "section name providing the configuration for the adapter" 5283msgid "section name providing the configuration for the adapter"
5251msgstr "" 5284msgstr ""
5252 5285
5253#: src/nat-auto/gnunet-nat-auto.c:354 src/nat/gnunet-nat.c:451 5286#: src/nat-auto/gnunet-nat-auto.c:356 src/nat/gnunet-nat.c:459
5254msgid "use TCP" 5287msgid "use TCP"
5255msgstr "" 5288msgstr ""
5256 5289
5257#: src/nat-auto/gnunet-nat-auto.c:359 src/nat/gnunet-nat.c:456 5290#: src/nat-auto/gnunet-nat-auto.c:361 src/nat/gnunet-nat.c:464
5258msgid "use UDP" 5291msgid "use UDP"
5259msgstr "" 5292msgstr ""
5260 5293
5261#: src/nat-auto/gnunet-nat-auto.c:364 5294#: src/nat-auto/gnunet-nat-auto.c:366
5262msgid "write configuration file (for autoconfiguration)" 5295msgid "write configuration file (for autoconfiguration)"
5263msgstr "" 5296msgstr ""
5264 5297
5265#: src/nat-auto/gnunet-nat-auto.c:376 5298#: src/nat-auto/gnunet-nat-auto.c:378
5266msgid "GNUnet NAT traversal autoconfiguration" 5299msgid "GNUnet NAT traversal autoconfiguration"
5267msgstr "" 5300msgstr ""
5268 5301
5269#: src/nat-auto/gnunet-nat-auto_legacy.c:401 5302#: src/nat-auto/gnunet-nat-auto_legacy.c:403
5270#: src/nat-auto/gnunet-service-nat-auto_legacy.c:679 5303#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
5271#: src/nat-auto/nat_auto_api_test.c:403 5304#: src/nat-auto/nat_auto_api_test.c:409
5272#, fuzzy 5305#, fuzzy
5273msgid "Failed to connect to `gnunet-nat-server'\n" 5306msgid "Failed to connect to `gnunet-nat-server'\n"
5274msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 5307msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
5275 5308
5276#: src/nat-auto/gnunet-nat-auto_legacy.c:516 5309#: src/nat-auto/gnunet-nat-auto_legacy.c:518
5277#, c-format 5310#, c-format
5278msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n" 5311msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
5279msgstr "" 5312msgstr ""
5280 5313
5281#: src/nat-auto/gnunet-nat-auto_legacy.c:566 5314#: src/nat-auto/gnunet-nat-auto_legacy.c:568
5282#: src/nat-auto/nat_auto_api_test.c:569 5315#: src/nat-auto/nat_auto_api_test.c:575
5283#, fuzzy 5316#, fuzzy
5284msgid "NAT test failed to start NAT library\n" 5317msgid "NAT test failed to start NAT library\n"
5285msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n" 5318msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
5286 5319
5287#: src/nat-auto/gnunet-service-nat-auto.c:340 5320#: src/nat-auto/gnunet-service-nat-auto.c:342
5288#, fuzzy 5321#, fuzzy
5289msgid "UPnP client `upnpc` command not found, disabling UPnP\n" 5322msgid "UPnP client `upnpc` command not found, disabling UPnP\n"
5290msgstr "Kommando `%s' wurde nicht gefunden!\n" 5323msgstr "Kommando `%s' wurde nicht gefunden!\n"
5291 5324
5292#: src/nat-auto/gnunet-service-nat-auto_legacy.c:383 5325#: src/nat-auto/gnunet-service-nat-auto_legacy.c:385
5293msgid "NAT traversal with ICMP Server succeeded.\n" 5326msgid "NAT traversal with ICMP Server succeeded.\n"
5294msgstr "" 5327msgstr ""
5295 5328
5296#: src/nat-auto/gnunet-service-nat-auto_legacy.c:384 5329#: src/nat-auto/gnunet-service-nat-auto_legacy.c:386
5297msgid "NAT traversal with ICMP Server failed.\n" 5330msgid "NAT traversal with ICMP Server failed.\n"
5298msgstr "" 5331msgstr ""
5299 5332
5300#: src/nat-auto/gnunet-service-nat-auto_legacy.c:403 5333#: src/nat-auto/gnunet-service-nat-auto_legacy.c:405
5301msgid "Testing connection reversal with ICMP server.\n" 5334msgid "Testing connection reversal with ICMP server.\n"
5302msgstr "" 5335msgstr ""
5303 5336
5304#: src/nat-auto/gnunet-service-nat-auto_legacy.c:435 5337#: src/nat-auto/gnunet-service-nat-auto_legacy.c:437
5305#, fuzzy, c-format 5338#, fuzzy, c-format
5306msgid "Detected external IP `%s'\n" 5339msgid "Detected external IP `%s'\n"
5307msgstr "Ungültiger RPC `%s' empfangen.\n" 5340msgstr "Ungültiger RPC `%s' empfangen.\n"
5308 5341
5309#: src/nat-auto/gnunet-service-nat-auto_legacy.c:570 5342#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
5310msgid "This system has a global IPv6 address, setting IPv6 to supported.\n" 5343msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
5311msgstr "" 5344msgstr ""
5312 5345
5313#: src/nat-auto/gnunet-service-nat-auto_legacy.c:588 5346#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
5314#, c-format 5347#, c-format
5315msgid "Detected internal network address `%s'.\n" 5348msgid "Detected internal network address `%s'.\n"
5316msgstr "" 5349msgstr ""
5317 5350
5318#: src/nat-auto/gnunet-service-nat-auto_legacy.c:722 5351#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
5319msgid "upnpc found, enabling its use\n" 5352msgid "upnpc found, enabling its use\n"
5320msgstr "" 5353msgstr ""
5321 5354
5322#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723 5355#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
5323#, fuzzy 5356#, fuzzy
5324msgid "upnpc not found\n" 5357msgid "upnpc not found\n"
5325msgstr "Kommando `%s' wurde nicht gefunden!\n" 5358msgstr "Kommando `%s' wurde nicht gefunden!\n"
5326 5359
5327#: src/nat-auto/gnunet-service-nat-auto_legacy.c:760 5360#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
5328msgid "test_icmp_server not possible, as we have no public IPv4 address\n" 5361msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
5329msgstr "" 5362msgstr ""
5330 5363
5331#: src/nat-auto/gnunet-service-nat-auto_legacy.c:772 5364#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
5332#: src/nat-auto/gnunet-service-nat-auto_legacy.c:832 5365#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
5333msgid "test_icmp_server not possible, as we are not behind NAT\n" 5366msgid "test_icmp_server not possible, as we are not behind NAT\n"
5334msgstr "" 5367msgstr ""
5335 5368
5336#: src/nat-auto/gnunet-service-nat-auto_legacy.c:784 5369#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
5337#: src/nat-auto/gnunet-service-nat-auto_legacy.c:844 5370#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
5338msgid "No working gnunet-helper-nat-server found\n" 5371msgid "No working gnunet-helper-nat-server found\n"
5339msgstr "" 5372msgstr ""
5340 5373
5341#: src/nat-auto/gnunet-service-nat-auto_legacy.c:821 5374#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
5342msgid "test_icmp_client not possible, as we have no internal IPv4 address\n" 5375msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
5343msgstr "" 5376msgstr ""
5344 5377
5345#: src/nat-auto/nat_auto_api.c:74 5378#: src/nat-auto/nat_auto_api.c:76
5346msgid "Operation Successful" 5379msgid "Operation Successful"
5347msgstr "" 5380msgstr ""
5348 5381
5349#: src/nat-auto/nat_auto_api.c:76 5382#: src/nat-auto/nat_auto_api.c:78
5350msgid "IPC failure" 5383msgid "IPC failure"
5351msgstr "" 5384msgstr ""
5352 5385
5353#: src/nat-auto/nat_auto_api.c:78 5386#: src/nat-auto/nat_auto_api.c:80
5354msgid "Failure in network subsystem, check permissions." 5387msgid "Failure in network subsystem, check permissions."
5355msgstr "" 5388msgstr ""
5356 5389
5357#: src/nat-auto/nat_auto_api.c:80 5390#: src/nat-auto/nat_auto_api.c:82
5358msgid "Encountered timeout while performing operation" 5391msgid "Encountered timeout while performing operation"
5359msgstr "" 5392msgstr ""
5360 5393
5361#: src/nat-auto/nat_auto_api.c:82 5394#: src/nat-auto/nat_auto_api.c:84
5362msgid "detected that we are offline" 5395msgid "detected that we are offline"
5363msgstr "" 5396msgstr ""
5364 5397
5365#: src/nat-auto/nat_auto_api.c:84 5398#: src/nat-auto/nat_auto_api.c:86
5366#, fuzzy 5399#, fuzzy
5367msgid "`upnpc` command not found" 5400msgid "`upnpc` command not found"
5368msgstr "Kommando `%s' wurde nicht gefunden!\n" 5401msgstr "Kommando `%s' wurde nicht gefunden!\n"
5369 5402
5370#: src/nat-auto/nat_auto_api.c:86 5403#: src/nat-auto/nat_auto_api.c:88
5371#, fuzzy 5404#, fuzzy
5372msgid "Failed to run `upnpc` command" 5405msgid "Failed to run `upnpc` command"
5373msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 5406msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
5374 5407
5375#: src/nat-auto/nat_auto_api.c:88 5408#: src/nat-auto/nat_auto_api.c:90
5376msgid "`upnpc' command took too long, process killed" 5409msgid "`upnpc' command took too long, process killed"
5377msgstr "" 5410msgstr ""
5378 5411
5379#: src/nat-auto/nat_auto_api.c:90 5412#: src/nat-auto/nat_auto_api.c:92
5380msgid "`upnpc' command failed to establish port mapping" 5413msgid "`upnpc' command failed to establish port mapping"
5381msgstr "" 5414msgstr ""
5382 5415
5383#: src/nat-auto/nat_auto_api.c:92 5416#: src/nat-auto/nat_auto_api.c:94
5384msgid "`external-ip' command not found" 5417msgid "`external-ip' command not found"
5385msgstr "" 5418msgstr ""
5386 5419
5387#: src/nat-auto/nat_auto_api.c:94 5420#: src/nat-auto/nat_auto_api.c:96
5388#, fuzzy 5421#, fuzzy
5389msgid "Failed to run `external-ip` command" 5422msgid "Failed to run `external-ip` command"
5390msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 5423msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
5391 5424
5392#: src/nat-auto/nat_auto_api.c:96 5425#: src/nat-auto/nat_auto_api.c:98
5393#, fuzzy 5426#, fuzzy
5394msgid "`external-ip' command output invalid" 5427msgid "`external-ip' command output invalid"
5395msgstr "Kommando `%s' wurde nicht gefunden!\n" 5428msgstr "Kommando `%s' wurde nicht gefunden!\n"
5396 5429
5397#: src/nat-auto/nat_auto_api.c:98 5430#: src/nat-auto/nat_auto_api.c:100
5398msgid "no valid address was returned by `external-ip'" 5431msgid "no valid address was returned by `external-ip'"
5399msgstr "" 5432msgstr ""
5400 5433
5401#: src/nat-auto/nat_auto_api.c:100 5434#: src/nat-auto/nat_auto_api.c:102
5402#, fuzzy 5435#, fuzzy
5403msgid "Could not determine interface with internal/local network address" 5436msgid "Could not determine interface with internal/local network address"
5404msgstr "Öffentliche IP-Adresse konnte nicht ermittelt werden.\n" 5437msgstr "Öffentliche IP-Adresse konnte nicht ermittelt werden.\n"
5405 5438
5406#: src/nat-auto/nat_auto_api.c:102 5439#: src/nat-auto/nat_auto_api.c:104
5407msgid "No functioning gnunet-helper-nat-server installation found" 5440msgid "No functioning gnunet-helper-nat-server installation found"
5408msgstr "" 5441msgstr ""
5409 5442
5410#: src/nat-auto/nat_auto_api.c:104 5443#: src/nat-auto/nat_auto_api.c:106
5411msgid "NAT test could not be initialized" 5444msgid "NAT test could not be initialized"
5412msgstr "" 5445msgstr ""
5413 5446
5414#: src/nat-auto/nat_auto_api.c:106 5447#: src/nat-auto/nat_auto_api.c:108
5415msgid "NAT test timeout reached" 5448msgid "NAT test timeout reached"
5416msgstr "" 5449msgstr ""
5417 5450
5418#: src/nat-auto/nat_auto_api.c:108 5451#: src/nat-auto/nat_auto_api.c:110
5419msgid "could not register NAT" 5452msgid "could not register NAT"
5420msgstr "" 5453msgstr ""
5421 5454
5422#: src/nat-auto/nat_auto_api.c:110 5455#: src/nat-auto/nat_auto_api.c:112
5423msgid "No working gnunet-helper-nat-client installation found" 5456msgid "No working gnunet-helper-nat-client installation found"
5424msgstr "" 5457msgstr ""
5425 5458
5426#: src/nat-auto/nat_auto_api_test.c:475 5459#: src/nat-auto/nat_auto_api_test.c:481
5427#, fuzzy, c-format 5460#, fuzzy, c-format
5428msgid "Failed to find valid PORT in section `%s'\n" 5461msgid "Failed to find valid PORT in section `%s'\n"
5429msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 5462msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
5430 5463
5431#: src/nat-auto/nat_auto_api_test.c:520 5464#: src/nat-auto/nat_auto_api_test.c:526
5432#, fuzzy, c-format 5465#, fuzzy, c-format
5433msgid "Failed to create socket bound to `%s' for NAT test: %s\n" 5466msgid "Failed to create socket bound to `%s' for NAT test: %s\n"
5434msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" 5467msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
5435 5468
5436#: src/nat/gnunet-nat.c:429 5469#: src/nat/gnunet-nat.c:437
5437msgid "which IP and port are we locally using to bind/listen to" 5470msgid "which IP and port are we locally using to bind/listen to"
5438msgstr "" 5471msgstr ""
5439 5472
5440#: src/nat/gnunet-nat.c:435 5473#: src/nat/gnunet-nat.c:443
5441msgid "which remote IP and port should be asked for connection reversal" 5474msgid "which remote IP and port should be asked for connection reversal"
5442msgstr "" 5475msgstr ""
5443 5476
5444#: src/nat/gnunet-nat.c:441 5477#: src/nat/gnunet-nat.c:449
5445msgid "" 5478msgid ""
5446"name of configuration section to find additional options, such as manual " 5479"name of configuration section to find additional options, such as manual "
5447"host punching data" 5480"host punching data"
5448msgstr "" 5481msgstr ""
5449 5482
5450#: src/nat/gnunet-nat.c:446 5483#: src/nat/gnunet-nat.c:454
5451msgid "enable STUN processing" 5484msgid "enable STUN processing"
5452msgstr "" 5485msgstr ""
5453 5486
5454#: src/nat/gnunet-nat.c:461 5487#: src/nat/gnunet-nat.c:469
5455msgid "watch for connection reversal requests" 5488msgid "watch for connection reversal requests"
5456msgstr "" 5489msgstr ""
5457 5490
5458#: src/nat/gnunet-nat.c:473 5491#: src/nat/gnunet-nat.c:481
5459msgid "GNUnet NAT traversal autoconfigure daemon" 5492msgid "GNUnet NAT traversal autoconfigure daemon"
5460msgstr "" 5493msgstr ""
5461 5494
5462#: src/nat/gnunet-service-nat.c:1337 5495#: src/nat/gnunet-service-nat.c:1339
5463#, c-format 5496#, c-format
5464msgid "Malformed punched hole specification `%s' (lacks port)\n" 5497msgid "Malformed punched hole specification `%s' (lacks port)\n"
5465msgstr "" 5498msgstr ""
5466 5499
5467#: src/nat/gnunet-service-nat.c:1347 5500#: src/nat/gnunet-service-nat.c:1349
5468#, c-format 5501#, c-format
5469msgid "Invalid port number in punched hole specification `%s' (lacks port)\n" 5502msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
5470msgstr "" 5503msgstr ""
5471 5504
5472#: src/nat/gnunet-service-nat.c:1363 5505#: src/nat/gnunet-service-nat.c:1365
5473#, c-format 5506#, c-format
5474msgid "Malformed punched hole specification `%s' (lacks `]')\n" 5507msgid "Malformed punched hole specification `%s' (lacks `]')\n"
5475msgstr "" 5508msgstr ""
5476 5509
5477#: src/nat/gnunet-service-nat.c:1374 5510#: src/nat/gnunet-service-nat.c:1376
5478#, c-format 5511#, c-format
5479msgid "Malformed punched hole specification `%s' (IPv6 address invalid)" 5512msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
5480msgstr "" 5513msgstr ""
5481 5514
5482#: src/nat/gnunet-service-nat.c:1839 5515#: src/nat/gnunet-service-nat.c:1841
5483#, fuzzy 5516#, fuzzy
5484msgid "Connection reversal request failed\n" 5517msgid "Connection reversal request failed\n"
5485msgstr " Verbindung fehlgeschlagen\n" 5518msgstr " Verbindung fehlgeschlagen\n"
5486 5519
5487#: src/nat/gnunet-service-nat.c:1912 5520#: src/nat/gnunet-service-nat.c:1914
5488msgid "" 5521msgid ""
5489"UPnP enabled in configuration, but UPnP client `upnpc` command not found, " 5522"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
5490"disabling UPnP\n" 5523"disabling UPnP\n"
5491msgstr "" 5524msgstr ""
5492 5525
5493#: src/nat/gnunet-service-nat_helper.c:184 5526#: src/nat/gnunet-service-nat_helper.c:186
5494#, c-format 5527#, c-format
5495msgid "gnunet-helper-nat-server generated malformed address `%s'\n" 5528msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
5496msgstr "" 5529msgstr ""
5497 5530
5498#: src/nat/gnunet-service-nat_helper.c:271 5531#: src/nat/gnunet-service-nat_helper.c:273
5499#, fuzzy, c-format 5532#, fuzzy, c-format
5500msgid "Failed to start %s\n" 5533msgid "Failed to start %s\n"
5501msgstr "Fehler beim Starten der Collection.\n" 5534msgstr "Fehler beim Starten der Collection.\n"
5502 5535
5503#: src/nat/gnunet-service-nat_mini.c:194 5536#: src/nat/gnunet-service-nat_mini.c:196
5504#, fuzzy 5537#, fuzzy
5505msgid "`external-ip' command not found\n" 5538msgid "`external-ip' command not found\n"
5506msgstr "Kommando `%s' wurde nicht gefunden!\n" 5539msgstr "Kommando `%s' wurde nicht gefunden!\n"
5507 5540
5508#: src/nat/gnunet-service-nat_mini.c:654 5541#: src/nat/gnunet-service-nat_mini.c:656
5509#, fuzzy 5542#, fuzzy
5510msgid "`upnpc' command not found\n" 5543msgid "`upnpc' command not found\n"
5511msgstr "Kommando `%s' wurde nicht gefunden!\n" 5544msgstr "Kommando `%s' wurde nicht gefunden!\n"
5512 5545
5513#: src/nse/gnunet-nse.c:120 5546#: src/nse/gnunet-nse.c:122
5514msgid "Show network size estimates from NSE service." 5547msgid "Show network size estimates from NSE service."
5515msgstr "" 5548msgstr ""
5516 5549
5517#: src/nse/gnunet-nse-profiler.c:847 5550#: src/nse/gnunet-nse-profiler.c:849
5518msgid "limit to the number of connections to NSE services, 0 for none" 5551msgid "limit to the number of connections to NSE services, 0 for none"
5519msgstr "" 5552msgstr ""
5520 5553
5521#: src/nse/gnunet-nse-profiler.c:852 5554#: src/nse/gnunet-nse-profiler.c:854
5522msgid "name of the file for writing connection information and statistics" 5555msgid "name of the file for writing connection information and statistics"
5523msgstr "" 5556msgstr ""
5524 5557
5525#: src/nse/gnunet-nse-profiler.c:864 5558#: src/nse/gnunet-nse-profiler.c:866
5526msgid "name of the file for writing the main results" 5559msgid "name of the file for writing the main results"
5527msgstr "" 5560msgstr ""
5528 5561
5529#: src/nse/gnunet-nse-profiler.c:871 5562#: src/nse/gnunet-nse-profiler.c:873
5530msgid "Number of peers to run in each round, separated by commas" 5563msgid "Number of peers to run in each round, separated by commas"
5531msgstr "" 5564msgstr ""
5532 5565
5533#: src/nse/gnunet-nse-profiler.c:882 5566#: src/nse/gnunet-nse-profiler.c:884
5534msgid "delay between rounds" 5567msgid "delay between rounds"
5535msgstr "" 5568msgstr ""
5536 5569
5537#: src/nse/gnunet-nse-profiler.c:891 5570#: src/nse/gnunet-nse-profiler.c:893
5538msgid "Measure quality and performance of the NSE service." 5571msgid "Measure quality and performance of the NSE service."
5539msgstr "" 5572msgstr ""
5540 5573
5541#: src/nse/gnunet-service-nse.c:1532 5574#: src/nse/gnunet-service-nse.c:1534
5542#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:274 5575#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
5543msgid "Value is too large.\n" 5576msgid "Value is too large.\n"
5544msgstr "" 5577msgstr ""
5545 5578
5546#: src/peerinfo/gnunet-service-peerinfo.c:176 5579#: src/peerinfo/gnunet-service-peerinfo.c:178
5547#, fuzzy, c-format 5580#, fuzzy, c-format
5548msgid "Removing expired address of transport `%s'\n" 5581msgid "Removing expired address of transport `%s'\n"
5549msgstr "Verfügbare(r) Transport(e): %s\n" 5582msgstr "Verfügbare(r) Transport(e): %s\n"
5550 5583
5551#: src/peerinfo/gnunet-service-peerinfo.c:311 5584#: src/peerinfo/gnunet-service-peerinfo.c:313
5552#, fuzzy, c-format 5585#, fuzzy, c-format
5553msgid "Failed to parse HELLO in file `%s': %s\n" 5586msgid "Failed to parse HELLO in file `%s': %s\n"
5554msgstr "Datei wurde als `%s' gespeichert.\n" 5587msgstr "Datei wurde als `%s' gespeichert.\n"
5555 5588
5556#: src/peerinfo/gnunet-service-peerinfo.c:332 5589#: src/peerinfo/gnunet-service-peerinfo.c:334
5557#: src/peerinfo/gnunet-service-peerinfo.c:363 5590#: src/peerinfo/gnunet-service-peerinfo.c:365
5558#, fuzzy, c-format 5591#, fuzzy, c-format
5559msgid "Failed to parse HELLO in file `%s'\n" 5592msgid "Failed to parse HELLO in file `%s'\n"
5560msgstr "Datei wurde als `%s' gespeichert.\n" 5593msgstr "Datei wurde als `%s' gespeichert.\n"
5561 5594
5562#: src/peerinfo/gnunet-service-peerinfo.c:447 5595#: src/peerinfo/gnunet-service-peerinfo.c:449
5563msgid "# peers known" 5596msgid "# peers known"
5564msgstr "" 5597msgstr ""
5565 5598
5566#: src/peerinfo/gnunet-service-peerinfo.c:490 5599#: src/peerinfo/gnunet-service-peerinfo.c:492
5567#, c-format 5600#, c-format
5568msgid "" 5601msgid ""
5569"File `%s' in directory `%s' does not match naming convention. Removed.\n" 5602"File `%s' in directory `%s' does not match naming convention. Removed.\n"
@@ -5571,1122 +5604,884 @@ msgstr ""
5571"Die Datei »%s« im Verzeichnis »%s« entspricht nicht der Namenskonvention. " 5604"Die Datei »%s« im Verzeichnis »%s« entspricht nicht der Namenskonvention. "
5572"Die Datei wurde entfernt.\n" 5605"Die Datei wurde entfernt.\n"
5573 5606
5574#: src/peerinfo/gnunet-service-peerinfo.c:657 5607#: src/peerinfo/gnunet-service-peerinfo.c:659
5575#, fuzzy, c-format 5608#, fuzzy, c-format
5576msgid "Scanning directory `%s'\n" 5609msgid "Scanning directory `%s'\n"
5577msgstr "==> Verzeichnis `%s':\n" 5610msgstr "==> Verzeichnis `%s':\n"
5578 5611
5579#: src/peerinfo/gnunet-service-peerinfo.c:665 5612#: src/peerinfo/gnunet-service-peerinfo.c:667
5580#, fuzzy, c-format 5613#, fuzzy, c-format
5581msgid "Still no peers found in `%s'!\n" 5614msgid "Still no peers found in `%s'!\n"
5582msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n" 5615msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n"
5583 5616
5584#: src/peerinfo/gnunet-service-peerinfo.c:1098 5617#: src/peerinfo/gnunet-service-peerinfo.c:1100
5585#, fuzzy, c-format 5618#, fuzzy, c-format
5586msgid "Cleaning up directory `%s'\n" 5619msgid "Cleaning up directory `%s'\n"
5587msgstr "==> Verzeichnis `%s':\n" 5620msgstr "==> Verzeichnis `%s':\n"
5588 5621
5589#: src/peerinfo/gnunet-service-peerinfo.c:1436 5622#: src/peerinfo/gnunet-service-peerinfo.c:1438
5590#, c-format 5623#, c-format
5591msgid "Importing HELLOs from `%s'\n" 5624msgid "Importing HELLOs from `%s'\n"
5592msgstr "" 5625msgstr ""
5593 5626
5594#: src/peerinfo/gnunet-service-peerinfo.c:1449 5627#: src/peerinfo/gnunet-service-peerinfo.c:1451
5595msgid "Skipping import of included HELLOs\n" 5628msgid "Skipping import of included HELLOs\n"
5596msgstr "" 5629msgstr ""
5597 5630
5598#: src/peerinfo/peerinfo_api.c:218 5631#: src/peerinfo/peerinfo_api.c:220
5599#, fuzzy 5632#, fuzzy
5600msgid "Failed to receive response from `PEERINFO' service." 5633msgid "Failed to receive response from `PEERINFO' service."
5601msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n" 5634msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n"
5602 5635
5603#: src/peerinfo-tool/gnunet-peerinfo.c:237 5636#: src/peerinfo-tool/gnunet-peerinfo.c:239
5604#, fuzzy, c-format 5637#, fuzzy, c-format
5605msgid "%sPeer `%s'\n" 5638msgid "%sPeer `%s'\n"
5606msgstr "Ich bin Peer `%s'.\n" 5639msgstr "Ich bin Peer `%s'.\n"
5607 5640
5608#: src/peerinfo-tool/gnunet-peerinfo.c:244 5641#: src/peerinfo-tool/gnunet-peerinfo.c:246
5609#, c-format 5642#, c-format
5610msgid "\tExpires: %s \t %s\n" 5643msgid "\tExpires: %s \t %s\n"
5611msgstr "" 5644msgstr ""
5612 5645
5613#: src/peerinfo-tool/gnunet-peerinfo.c:297 5646#: src/peerinfo-tool/gnunet-peerinfo.c:299
5614#: src/rest-plugins/plugin_rest_peerinfo.c:499 5647#: src/rest-plugins/plugin_rest_peerinfo.c:501
5615#, fuzzy, c-format 5648#, fuzzy, c-format
5616msgid "Failure: Cannot convert address to string for peer `%s'\n" 5649msgid "Failure: Cannot convert address to string for peer `%s'\n"
5617msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n" 5650msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
5618 5651
5619#: src/peerinfo-tool/gnunet-peerinfo.c:464 5652#: src/peerinfo-tool/gnunet-peerinfo.c:466
5620#, fuzzy, c-format 5653#, fuzzy, c-format
5621msgid "Failure: Received invalid %s\n" 5654msgid "Failure: Received invalid %s\n"
5622msgstr "Ungültiger RPC `%s' empfangen.\n" 5655msgstr "Ungültiger RPC `%s' empfangen.\n"
5623 5656
5624#: src/peerinfo-tool/gnunet-peerinfo.c:478 5657#: src/peerinfo-tool/gnunet-peerinfo.c:480
5625#, c-format 5658#, c-format
5626msgid "Failed to write HELLO with %u bytes to file `%s'\n" 5659msgid "Failed to write HELLO with %u bytes to file `%s'\n"
5627msgstr "" 5660msgstr ""
5628 5661
5629#: src/peerinfo-tool/gnunet-peerinfo.c:497 5662#: src/peerinfo-tool/gnunet-peerinfo.c:499
5630#, c-format 5663#, c-format
5631msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n" 5664msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
5632msgstr "" 5665msgstr ""
5633 5666
5634#: src/peerinfo-tool/gnunet-peerinfo.c:797 5667#: src/peerinfo-tool/gnunet-peerinfo.c:799
5635#, c-format 5668#, c-format
5636msgid "I am peer `%s'.\n" 5669msgid "I am peer `%s'.\n"
5637msgstr "Ich bin Knoten »%s«.\n" 5670msgstr "Ich bin Knoten »%s«.\n"
5638 5671
5639#: src/peerinfo-tool/gnunet-peerinfo.c:841 5672#: src/peerinfo-tool/gnunet-peerinfo.c:843
5640msgid "don't resolve host names" 5673msgid "don't resolve host names"
5641msgstr "" 5674msgstr ""
5642 5675
5643#: src/peerinfo-tool/gnunet-peerinfo.c:846 5676#: src/peerinfo-tool/gnunet-peerinfo.c:848
5644msgid "output only the identity strings" 5677msgid "output only the identity strings"
5645msgstr "" 5678msgstr ""
5646 5679
5647#: src/peerinfo-tool/gnunet-peerinfo.c:850 5680#: src/peerinfo-tool/gnunet-peerinfo.c:852
5648msgid "include friend-only information" 5681msgid "include friend-only information"
5649msgstr "" 5682msgstr ""
5650 5683
5651#: src/peerinfo-tool/gnunet-peerinfo.c:855 5684#: src/peerinfo-tool/gnunet-peerinfo.c:857
5652msgid "output our own identity only" 5685msgid "output our own identity only"
5653msgstr "" 5686msgstr ""
5654 5687
5655#: src/peerinfo-tool/gnunet-peerinfo.c:860 5688#: src/peerinfo-tool/gnunet-peerinfo.c:862
5656msgid "list all known peers" 5689msgid "list all known peers"
5657msgstr "" 5690msgstr ""
5658 5691
5659#: src/peerinfo-tool/gnunet-peerinfo.c:866 5692#: src/peerinfo-tool/gnunet-peerinfo.c:868
5660msgid "dump hello to file" 5693msgid "dump hello to file"
5661msgstr "" 5694msgstr ""
5662 5695
5663#: src/peerinfo-tool/gnunet-peerinfo.c:871 5696#: src/peerinfo-tool/gnunet-peerinfo.c:873
5664msgid "also output HELLO uri(s)" 5697msgid "also output HELLO uri(s)"
5665msgstr "" 5698msgstr ""
5666 5699
5667#: src/peerinfo-tool/gnunet-peerinfo.c:877 5700#: src/peerinfo-tool/gnunet-peerinfo.c:879
5668msgid "add given HELLO uri to the database" 5701msgid "add given HELLO uri to the database"
5669msgstr "" 5702msgstr ""
5670 5703
5671#: src/peerinfo-tool/gnunet-peerinfo.c:895 5704#: src/peerinfo-tool/gnunet-peerinfo.c:897
5672#, fuzzy 5705#, fuzzy
5673msgid "Print information about peers." 5706msgid "Print information about peers."
5674msgstr "Informationen über andere GNUnet Knoten ausgeben." 5707msgstr "Informationen über andere GNUnet Knoten ausgeben."
5675 5708
5676#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:103 5709#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
5677#: src/transport/gnunet-service-transport_plugins.c:166 5710#: src/transport/gnunet-service-transport_plugins.c:168
5678#, fuzzy, c-format 5711#, fuzzy, c-format
5679msgid "Starting transport plugins `%s'\n" 5712msgid "Starting transport plugins `%s'\n"
5680msgstr "Teste Transport(e) %s\n" 5713msgstr "Teste Transport(e) %s\n"
5681 5714
5682#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:107 5715#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
5683#: src/transport/gnunet-service-transport_plugins.c:171 5716#: src/transport/gnunet-service-transport_plugins.c:173
5684#, fuzzy, c-format 5717#, fuzzy, c-format
5685msgid "Loading `%s' transport plugin\n" 5718msgid "Loading `%s' transport plugin\n"
5686msgstr "Teste Transport(e) %s\n" 5719msgstr "Teste Transport(e) %s\n"
5687 5720
5688#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:127 5721#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
5689#: src/transport/gnunet-service-transport_plugins.c:206 5722#: src/transport/gnunet-service-transport_plugins.c:208
5690#, fuzzy, c-format 5723#, fuzzy, c-format
5691msgid "Failed to load transport plugin for `%s'\n" 5724msgid "Failed to load transport plugin for `%s'\n"
5692msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" 5725msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
5693 5726
5694#: src/peerstore/gnunet-peerstore.c:89 5727#: src/peerstore/gnunet-peerstore.c:91
5695msgid "peerstore" 5728msgid "peerstore"
5696msgstr "" 5729msgstr ""
5697 5730
5698#: src/peerstore/gnunet-service-peerstore.c:596 5731#: src/peerstore/gnunet-service-peerstore.c:598
5699#, fuzzy, c-format 5732#, fuzzy, c-format
5700msgid "Could not load database backend `%s'\n" 5733msgid "Could not load database backend `%s'\n"
5701msgstr "`%s' konnte nicht aufgelöst werden: %s\n" 5734msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
5702 5735
5703#: src/peerstore/peerstore_api.c:348 5736#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
5704msgid "timeout"
5705msgstr ""
5706
5707#: src/peerstore/peerstore_api.c:564 src/peerstore/peerstore_api.c:613
5708msgid "Unexpected iteration response, this should not happen.\n" 5737msgid "Unexpected iteration response, this should not happen.\n"
5709msgstr "" 5738msgstr ""
5710 5739
5711#: src/peerstore/peerstore_api.c:627 5740#: src/peerstore/peerstore_api.c:595
5712#, fuzzy 5741#, fuzzy
5713msgid "Received a malformed response from service." 5742msgid "Received a malformed response from service."
5714msgstr "Beschädigte Antwort auf `%s' von Knoten `%s' empfangen.\n" 5743msgstr "Beschädigte Antwort auf `%s' von Knoten `%s' empfangen.\n"
5715 5744
5716#: src/peerstore/peerstore_api.c:776 5745#: src/peerstore/peerstore_api.c:731
5717msgid "Received a watch result for a non existing watch.\n" 5746msgid "Received a watch result for a non existing watch.\n"
5718msgstr "" 5747msgstr ""
5719 5748
5720#: src/peerstore/plugin_peerstore_sqlite.c:451 5749#: src/peerstore/plugin_peerstore_sqlite.c:453
5721#: src/psycstore/plugin_psycstore_sqlite.c:280
5722#, c-format 5750#, c-format
5723msgid "" 5751msgid ""
5724"Error executing SQL query: %s\n" 5752"Error executing SQL query: %s\n"
5725" %s\n" 5753" %s\n"
5726msgstr "" 5754msgstr ""
5727 5755
5728#: src/peerstore/plugin_peerstore_sqlite.c:486 5756#: src/peerstore/plugin_peerstore_sqlite.c:488
5729#: src/psycstore/plugin_psycstore_mysql.c:248
5730#: src/psycstore/plugin_psycstore_sqlite.c:257
5731#, c-format 5757#, c-format
5732msgid "" 5758msgid ""
5733"Error preparing SQL query: %s\n" 5759"Error preparing SQL query: %s\n"
5734" %s\n" 5760" %s\n"
5735msgstr "" 5761msgstr ""
5736 5762
5737#: src/peerstore/plugin_peerstore_sqlite.c:568 5763#: src/peerstore/plugin_peerstore_sqlite.c:570
5738#, fuzzy, c-format 5764#, fuzzy, c-format
5739msgid "Unable to create indices: %s.\n" 5765msgid "Unable to create indices: %s.\n"
5740msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" 5766msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5741 5767
5742#: src/pq/pq_prepare.c:82 5768#: src/pq/pq_prepare.c:84
5743#, fuzzy, c-format 5769#, fuzzy, c-format
5744msgid "PQprepare (`%s' as `%s') failed with error: %s\n" 5770msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
5745msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n" 5771msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n"
5746 5772
5747#: src/psycstore/gnunet-service-psycstore.c:247 5773#: src/pt/gnunet-daemon-pt.c:423
5748#, fuzzy
5749msgid "Failed to store membership information!\n"
5750msgstr "Fehler beim Speichern der Konfiguration!"
5751
5752#: src/psycstore/gnunet-service-psycstore.c:269
5753#, fuzzy
5754msgid "Failed to test membership!\n"
5755msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5756
5757#: src/psycstore/gnunet-service-psycstore.c:298
5758#, fuzzy
5759msgid "Dropping invalid fragment\n"
5760msgstr "Ungültiges Argument »%s«\n"
5761
5762#: src/psycstore/gnunet-service-psycstore.c:309
5763#, fuzzy
5764msgid "Failed to store fragment\n"
5765msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5766
5767#: src/psycstore/gnunet-service-psycstore.c:366
5768#, fuzzy
5769msgid "Failed to get fragment!\n"
5770msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
5771
5772#: src/psycstore/gnunet-service-psycstore.c:432
5773#, fuzzy
5774msgid "Failed to get message!\n"
5775msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5776
5777#: src/psycstore/gnunet-service-psycstore.c:462
5778#, fuzzy
5779msgid "Failed to get message fragment!\n"
5780msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5781
5782#: src/psycstore/gnunet-service-psycstore.c:492
5783#, fuzzy
5784msgid "Failed to get master counters!\n"
5785msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
5786
5787#: src/psycstore/gnunet-service-psycstore.c:673
5788#, fuzzy, c-format
5789msgid "Failed to begin modifying state: %d\n"
5790msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
5791
5792#: src/psycstore/gnunet-service-psycstore.c:683
5793#, fuzzy, c-format
5794msgid "Failed to modify state: %d\n"
5795msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
5796
5797#: src/psycstore/gnunet-service-psycstore.c:691
5798#, fuzzy
5799msgid "Failed to end modifying state!\n"
5800msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5801
5802#: src/psycstore/gnunet-service-psycstore.c:728
5803msgid "Tried to set invalid state variable name!\n"
5804msgstr ""
5805
5806#: src/psycstore/gnunet-service-psycstore.c:742
5807#, fuzzy
5808msgid "Failed to begin synchronizing state!\n"
5809msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
5810
5811#: src/psycstore/gnunet-service-psycstore.c:759
5812#, fuzzy
5813msgid "Failed to end synchronizing state!\n"
5814msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5815
5816#: src/psycstore/gnunet-service-psycstore.c:777
5817#: src/psycstore/gnunet-service-psycstore.c:793
5818#, fuzzy
5819msgid "Failed to reset state!\n"
5820msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5821
5822#: src/psycstore/gnunet-service-psycstore.c:822
5823#: src/psycstore/gnunet-service-psycstore.c:879
5824msgid "Tried to get invalid state variable name!\n"
5825msgstr ""
5826
5827#: src/psycstore/gnunet-service-psycstore.c:849
5828#: src/psycstore/gnunet-service-psycstore.c:894
5829#, fuzzy
5830msgid "Failed to get state variable!\n"
5831msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
5832
5833#: src/psycstore/plugin_psycstore_mysql.c:279
5834#, fuzzy
5835msgid "Unable to initialize Mysql.\n"
5836msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
5837
5838#: src/psycstore/plugin_psycstore_mysql.c:289
5839#, fuzzy, c-format
5840msgid "Failed to run SQL statement `%s'\n"
5841msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
5842
5843#: src/psycstore/plugin_psycstore_sqlite.c:59
5844#, fuzzy, c-format
5845msgid "`%s' failed at %s:%d with error: %s (%d)\n"
5846msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
5847
5848#: src/psycstore/plugin_psycstore_sqlite.c:1922
5849#, fuzzy
5850msgid "SQLite database running\n"
5851msgstr "SQL Datenbank beschädigt, Ergebnis wird ignoriert.\n"
5852
5853#: src/pt/gnunet-daemon-pt.c:421
5854msgid "Failed to pack DNS request. Dropping.\n" 5774msgid "Failed to pack DNS request. Dropping.\n"
5855msgstr "" 5775msgstr ""
5856 5776
5857#: src/pt/gnunet-daemon-pt.c:427 5777#: src/pt/gnunet-daemon-pt.c:429
5858msgid "# DNS requests mapped to VPN" 5778msgid "# DNS requests mapped to VPN"
5859msgstr "" 5779msgstr ""
5860 5780
5861#: src/pt/gnunet-daemon-pt.c:481 5781#: src/pt/gnunet-daemon-pt.c:483
5862msgid "# DNS records modified" 5782msgid "# DNS records modified"
5863msgstr "" 5783msgstr ""
5864 5784
5865#: src/pt/gnunet-daemon-pt.c:665 5785#: src/pt/gnunet-daemon-pt.c:667
5866#, fuzzy 5786#, fuzzy
5867msgid "# DNS replies intercepted" 5787msgid "# DNS replies intercepted"
5868msgstr "# Bytes empfangen über TCP" 5788msgstr "# Bytes empfangen über TCP"
5869 5789
5870#: src/pt/gnunet-daemon-pt.c:672 5790#: src/pt/gnunet-daemon-pt.c:674
5871#, fuzzy 5791#, fuzzy
5872msgid "Failed to parse DNS request. Dropping.\n" 5792msgid "Failed to parse DNS request. Dropping.\n"
5873msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n" 5793msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
5874 5794
5875#: src/pt/gnunet-daemon-pt.c:710 5795#: src/pt/gnunet-daemon-pt.c:712
5876#, fuzzy 5796#, fuzzy
5877msgid "# DNS requests dropped (timeout)" 5797msgid "# DNS requests dropped (timeout)"
5878msgstr "# gap Anfragen verworfen: Kollision in RT" 5798msgstr "# gap Anfragen verworfen: Kollision in RT"
5879 5799
5880#: src/pt/gnunet-daemon-pt.c:766 5800#: src/pt/gnunet-daemon-pt.c:768
5881#, fuzzy 5801#, fuzzy
5882msgid "# DNS requests intercepted" 5802msgid "# DNS requests intercepted"
5883msgstr "# dht Anfragen weitergeleitet" 5803msgstr "# dht Anfragen weitergeleitet"
5884 5804
5885#: src/pt/gnunet-daemon-pt.c:771 5805#: src/pt/gnunet-daemon-pt.c:773
5886#, fuzzy 5806#, fuzzy
5887msgid "# DNS requests dropped (DNS cadet channel down)" 5807msgid "# DNS requests dropped (DNS cadet channel down)"
5888msgstr "# gap Anfragen verworfen: Kollision in RT" 5808msgstr "# gap Anfragen verworfen: Kollision in RT"
5889 5809
5890#: src/pt/gnunet-daemon-pt.c:779 5810#: src/pt/gnunet-daemon-pt.c:781
5891#, fuzzy 5811#, fuzzy
5892msgid "# DNS requests dropped (malformed)" 5812msgid "# DNS requests dropped (malformed)"
5893msgstr "# gap Anfragen verworfen: Kollision in RT" 5813msgstr "# gap Anfragen verworfen: Kollision in RT"
5894 5814
5895#: src/pt/gnunet-daemon-pt.c:874 5815#: src/pt/gnunet-daemon-pt.c:876
5896#, fuzzy 5816#, fuzzy
5897msgid "# DNS replies received" 5817msgid "# DNS replies received"
5898msgstr "# Bytes empfangen über TCP" 5818msgstr "# Bytes empfangen über TCP"
5899 5819
5900#: src/pt/gnunet-daemon-pt.c:891 5820#: src/pt/gnunet-daemon-pt.c:893
5901msgid "# DNS replies dropped (too late?)" 5821msgid "# DNS replies dropped (too late?)"
5902msgstr "" 5822msgstr ""
5903 5823
5904#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226 5824#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
5905#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251 5825#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
5906#: src/pt/gnunet-daemon-pt.c:1260 5826#: src/pt/gnunet-daemon-pt.c:1262
5907#, c-format 5827#, c-format
5908msgid "Failed to connect to %s service. Exiting.\n" 5828msgid "Failed to connect to %s service. Exiting.\n"
5909msgstr "" 5829msgstr ""
5910"Es konnte keine Verbindung mit dem %s-Dienst hergestellt werden. Abbruch\n" 5830"Es konnte keine Verbindung mit dem %s-Dienst hergestellt werden. Abbruch\n"
5911 5831
5912#: src/pt/gnunet-daemon-pt.c:1305 5832#: src/pt/gnunet-daemon-pt.c:1307
5913msgid "Daemon to run to perform IP protocol translation to GNUnet" 5833msgid "Daemon to run to perform IP protocol translation to GNUnet"
5914msgstr "" 5834msgstr ""
5915 5835
5916#: src/reclaim/gnunet-reclaim.c:465 5836#: src/reclaim/gnunet-reclaim.c:467
5917#, fuzzy, c-format 5837#, fuzzy, c-format
5918msgid "Ego is required\n" 5838msgid "Ego is required\n"
5919msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n" 5839msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
5920 5840
5921#: src/reclaim/gnunet-reclaim.c:473 5841#: src/reclaim/gnunet-reclaim.c:475
5922#, c-format 5842#, c-format
5923msgid "Attribute value missing!\n" 5843msgid "Attribute value missing!\n"
5924msgstr "" 5844msgstr ""
5925 5845
5926#: src/reclaim/gnunet-reclaim.c:481 5846#: src/reclaim/gnunet-reclaim.c:483
5927#, fuzzy, c-format 5847#, fuzzy, c-format
5928msgid "Requesting party key is required!\n" 5848msgid "Requesting party key is required!\n"
5929msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n" 5849msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
5930 5850
5931#: src/reclaim/gnunet-reclaim.c:504 5851#: src/reclaim/gnunet-reclaim.c:506
5932msgid "Add attribute" 5852msgid "Add attribute"
5933msgstr "" 5853msgstr ""
5934 5854
5935#: src/reclaim/gnunet-reclaim.c:510 5855#: src/reclaim/gnunet-reclaim.c:512
5936msgid "Attribute value" 5856msgid "Attribute value"
5937msgstr "" 5857msgstr ""
5938 5858
5939#: src/reclaim/gnunet-reclaim.c:515 5859#: src/reclaim/gnunet-reclaim.c:517
5940msgid "Ego" 5860msgid "Ego"
5941msgstr "" 5861msgstr ""
5942 5862
5943#: src/reclaim/gnunet-reclaim.c:520 5863#: src/reclaim/gnunet-reclaim.c:522
5944msgid "Audience (relying party)" 5864msgid "Audience (relying party)"
5945msgstr "" 5865msgstr ""
5946 5866
5947#: src/reclaim/gnunet-reclaim.c:524 5867#: src/reclaim/gnunet-reclaim.c:526
5948msgid "List attributes for Ego" 5868msgid "List attributes for Ego"
5949msgstr "" 5869msgstr ""
5950 5870
5951#: src/reclaim/gnunet-reclaim.c:529 5871#: src/reclaim/gnunet-reclaim.c:531
5952msgid "Issue a ticket" 5872msgid "Issue a ticket"
5953msgstr "" 5873msgstr ""
5954 5874
5955#: src/reclaim/gnunet-reclaim.c:534 5875#: src/reclaim/gnunet-reclaim.c:536
5956msgid "Consume a ticket" 5876msgid "Consume a ticket"
5957msgstr "" 5877msgstr ""
5958 5878
5959#: src/reclaim/gnunet-reclaim.c:539 5879#: src/reclaim/gnunet-reclaim.c:541
5960msgid "Revoke a ticket" 5880msgid "Revoke a ticket"
5961msgstr "" 5881msgstr ""
5962 5882
5963#: src/reclaim/gnunet-reclaim.c:544 5883#: src/reclaim/gnunet-reclaim.c:546
5964msgid "Type of attribute" 5884msgid "Type of attribute"
5965msgstr "" 5885msgstr ""
5966 5886
5967#: src/reclaim/gnunet-reclaim.c:549 5887#: src/reclaim/gnunet-reclaim.c:551
5968msgid "Expiration interval of the attribute" 5888msgid "Expiration interval of the attribute"
5969msgstr "" 5889msgstr ""
5970 5890
5971#: src/reclaim/reclaim_api.c:434 5891#: src/reclaim/reclaim_api.c:436
5972#, fuzzy 5892#, fuzzy
5973msgid "failed to store record\n" 5893msgid "failed to store record\n"
5974msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" 5894msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
5975 5895
5976#: src/regex/gnunet-daemon-regexprofiler.c:265 5896#: src/regex/gnunet-daemon-regexprofiler.c:267
5977#, c-format 5897#, c-format
5978msgid "%s service is lacking key configuration settings (%s). Exiting.\n" 5898msgid "%s service is lacking key configuration settings (%s). Exiting.\n"
5979msgstr "" 5899msgstr ""
5980 5900
5981#: src/regex/gnunet-daemon-regexprofiler.c:378 5901#: src/regex/gnunet-daemon-regexprofiler.c:380
5982msgid "Daemon to announce regular expressions for the peer using cadet." 5902msgid "Daemon to announce regular expressions for the peer using cadet."
5983msgstr "" 5903msgstr ""
5984 5904
5985#: src/regex/gnunet-regex-profiler.c:1384 5905#: src/regex/gnunet-regex-profiler.c:1386
5986msgid "No configuration file given. Exiting\n" 5906msgid "No configuration file given. Exiting\n"
5987msgstr "Keine Konfigurationsdatei angegeben. Abbruch\n" 5907msgstr "Keine Konfigurationsdatei angegeben. Abbruch\n"
5988 5908
5989#: src/regex/gnunet-regex-profiler.c:1425 5909#: src/regex/gnunet-regex-profiler.c:1427
5990#: src/regex/gnunet-regex-simulation-profiler.c:628 5910#: src/regex/gnunet-regex-simulation-profiler.c:630
5991#, c-format 5911#, c-format
5992msgid "No policy directory specified on command line. Exiting.\n" 5912msgid "No policy directory specified on command line. Exiting.\n"
5993msgstr "" 5913msgstr ""
5994 5914
5995#: src/regex/gnunet-regex-profiler.c:1431 5915#: src/regex/gnunet-regex-profiler.c:1433
5996#: src/regex/gnunet-regex-simulation-profiler.c:636 5916#: src/regex/gnunet-regex-simulation-profiler.c:638
5997#, c-format 5917#, c-format
5998msgid "Specified policies directory does not exist. Exiting.\n" 5918msgid "Specified policies directory does not exist. Exiting.\n"
5999msgstr "" 5919msgstr ""
6000 5920
6001#: src/regex/gnunet-regex-profiler.c:1438 5921#: src/regex/gnunet-regex-profiler.c:1440
6002#, c-format 5922#, c-format
6003msgid "No files found in `%s'\n" 5923msgid "No files found in `%s'\n"
6004msgstr "Keine Dateien in »%s« gefunden\n" 5924msgstr "Keine Dateien in »%s« gefunden\n"
6005 5925
6006#: src/regex/gnunet-regex-profiler.c:1447 5926#: src/regex/gnunet-regex-profiler.c:1449
6007msgid "No search strings file given. Exiting.\n" 5927msgid "No search strings file given. Exiting.\n"
6008msgstr "" 5928msgstr ""
6009 5929
6010#: src/regex/gnunet-regex-profiler.c:1467 5930#: src/regex/gnunet-regex-profiler.c:1469
6011msgid "Error loading search strings. Exiting.\n" 5931msgid "Error loading search strings. Exiting.\n"
6012msgstr "" 5932msgstr ""
6013 5933
6014#: src/regex/gnunet-regex-profiler.c:1555 5934#: src/regex/gnunet-regex-profiler.c:1557
6015msgid "name of the file for writing statistics" 5935msgid "name of the file for writing statistics"
6016msgstr "" 5936msgstr ""
6017 5937
6018#: src/regex/gnunet-regex-profiler.c:1561 5938#: src/regex/gnunet-regex-profiler.c:1563
6019msgid "wait TIMEOUT before ending the experiment" 5939msgid "wait TIMEOUT before ending the experiment"
6020msgstr "" 5940msgstr ""
6021 5941
6022#: src/regex/gnunet-regex-profiler.c:1567 5942#: src/regex/gnunet-regex-profiler.c:1569
6023msgid "directory with policy files" 5943msgid "directory with policy files"
6024msgstr "" 5944msgstr ""
6025 5945
6026#: src/regex/gnunet-regex-profiler.c:1574 5946#: src/regex/gnunet-regex-profiler.c:1576
6027msgid "name of file with input strings" 5947msgid "name of file with input strings"
6028msgstr "" 5948msgstr ""
6029 5949
6030#: src/regex/gnunet-regex-profiler.c:1580 5950#: src/regex/gnunet-regex-profiler.c:1582
6031msgid "name of file with hosts' names" 5951msgid "name of file with hosts' names"
6032msgstr "" 5952msgstr ""
6033 5953
6034#: src/regex/gnunet-regex-profiler.c:1593 5954#: src/regex/gnunet-regex-profiler.c:1595
6035msgid "Profiler for regex" 5955msgid "Profiler for regex"
6036msgstr "" 5956msgstr ""
6037 5957
6038#: src/regex/gnunet-regex-simulation-profiler.c:697 5958#: src/regex/gnunet-regex-simulation-profiler.c:699
6039msgid "name of the table to write DFAs" 5959msgid "name of the table to write DFAs"
6040msgstr "" 5960msgstr ""
6041 5961
6042#: src/regex/gnunet-regex-simulation-profiler.c:703 5962#: src/regex/gnunet-regex-simulation-profiler.c:705
6043msgid "maximum path compression length" 5963msgid "maximum path compression length"
6044msgstr "" 5964msgstr ""
6045 5965
6046#: src/regex/gnunet-regex-simulation-profiler.c:717 5966#: src/regex/gnunet-regex-simulation-profiler.c:719
6047msgid "Profiler for regex library" 5967msgid "Profiler for regex library"
6048msgstr "" 5968msgstr ""
6049 5969
6050#: src/regex/regex_api_announce.c:150 5970#: src/regex/regex_api_announce.c:152
6051#, c-format 5971#, c-format
6052msgid "Regex `%s' is too long!\n" 5972msgid "Regex `%s' is too long!\n"
6053msgstr "" 5973msgstr ""
6054 5974
6055#: src/regex/regex_api_search.c:210 5975#: src/regex/regex_api_search.c:212
6056#, fuzzy, c-format 5976#, fuzzy, c-format
6057msgid "Search string `%s' is too long!\n" 5977msgid "Search string `%s' is too long!\n"
6058msgstr "Dienst »%s« läuft nicht\n" 5978msgstr "Dienst »%s« läuft nicht\n"
6059 5979
6060#: src/rest/gnunet-rest-server.c:925 5980#: src/rest/gnunet-rest-server.c:927
6061msgid "listen on specified port (default: 7776)" 5981msgid "listen on specified port (default: 7776)"
6062msgstr "" 5982msgstr ""
6063 5983
6064#: src/rest/gnunet-rest-server.c:942 5984#: src/rest/gnunet-rest-server.c:944
6065#, fuzzy 5985#, fuzzy
6066msgid "GNUnet REST server" 5986msgid "GNUnet REST server"
6067msgstr "GNUnet Netzwerk Topologie tracen." 5987msgstr "GNUnet Netzwerk Topologie tracen."
6068 5988
6069#: src/rest-plugins/plugin_rest_copying.c:207 5989#: src/rest-plugins/plugin_rest_copying.c:209
6070#, fuzzy 5990#, fuzzy
6071msgid "COPYING REST API initialized\n" 5991msgid "COPYING REST API initialized\n"
6072msgstr " Verbindung fehlgeschlagen\n" 5992msgstr " Verbindung fehlgeschlagen\n"
6073 5993
6074#: src/rest-plugins/plugin_rest_credential.c:1126 5994#: src/rest-plugins/plugin_rest_credential.c:1128
6075#, fuzzy 5995#, fuzzy
6076msgid "GNS REST API initialized\n" 5996msgid "GNS REST API initialized\n"
6077msgstr " Verbindung fehlgeschlagen\n" 5997msgstr " Verbindung fehlgeschlagen\n"
6078 5998
6079#: src/rest-plugins/plugin_rest_gns.c:450 5999#: src/rest-plugins/plugin_rest_gns.c:452
6080#, fuzzy 6000#, fuzzy
6081msgid "Gns REST API initialized\n" 6001msgid "Gns REST API initialized\n"
6082msgstr " Verbindung fehlgeschlagen\n" 6002msgstr " Verbindung fehlgeschlagen\n"
6083 6003
6084#: src/rest-plugins/plugin_rest_identity.c:1295 6004#: src/rest-plugins/plugin_rest_identity.c:1297
6085msgid "Identity REST API initialized\n" 6005msgid "Identity REST API initialized\n"
6086msgstr "" 6006msgstr ""
6087 6007
6088#: src/rest-plugins/plugin_rest_namestore.c:1077 6008#: src/rest-plugins/plugin_rest_namestore.c:1079
6089#, fuzzy 6009#, fuzzy
6090msgid "Namestore REST API initialized\n" 6010msgid "Namestore REST API initialized\n"
6091msgstr " Verbindung fehlgeschlagen\n" 6011msgstr " Verbindung fehlgeschlagen\n"
6092 6012
6093#: src/rest-plugins/plugin_rest_openid_connect.c:2135 6013#: src/rest-plugins/plugin_rest_openid_connect.c:2245
6094#: src/rest-plugins/plugin_rest_reclaim.c:1079 6014#: src/rest-plugins/plugin_rest_reclaim.c:1079
6095#, fuzzy 6015#, fuzzy
6096msgid "Identity Provider REST API initialized\n" 6016msgid "Identity Provider REST API initialized\n"
6097msgstr " Verbindung fehlgeschlagen\n" 6017msgstr " Verbindung fehlgeschlagen\n"
6098 6018
6099#: src/rest-plugins/plugin_rest_peerinfo.c:794 6019#: src/rest-plugins/plugin_rest_peerinfo.c:796
6100#, fuzzy 6020#, fuzzy
6101msgid "Peerinfo REST API initialized\n" 6021msgid "Peerinfo REST API initialized\n"
6102msgstr " Verbindung fehlgeschlagen\n" 6022msgstr " Verbindung fehlgeschlagen\n"
6103 6023
6104#: src/revocation/gnunet-revocation.c:127 6024#: src/revocation/gnunet-revocation.c:129
6105#, c-format 6025#, c-format
6106msgid "Key `%s' is valid\n" 6026msgid "Key `%s' is valid\n"
6107msgstr "Schlüssel »%s« ist gültig\n" 6027msgstr "Schlüssel »%s« ist gültig\n"
6108 6028
6109#: src/revocation/gnunet-revocation.c:132 6029#: src/revocation/gnunet-revocation.c:134
6110#, c-format 6030#, c-format
6111msgid "Key `%s' has been revoked\n" 6031msgid "Key `%s' has been revoked\n"
6112msgstr "Schlüssel »%s« wurde widerrufen\n" 6032msgstr "Schlüssel »%s« wurde widerrufen\n"
6113 6033
6114#: src/revocation/gnunet-revocation.c:138 6034#: src/revocation/gnunet-revocation.c:140
6115msgid "Internal error\n" 6035msgid "Internal error\n"
6116msgstr "Interner Fehler\n" 6036msgstr "Interner Fehler\n"
6117 6037
6118#: src/revocation/gnunet-revocation.c:164 6038#: src/revocation/gnunet-revocation.c:166
6119#, c-format 6039#, c-format
6120msgid "Key for ego `%s' is still valid, revocation failed (!)\n" 6040msgid "Key for ego `%s' is still valid, revocation failed (!)\n"
6121msgstr "" 6041msgstr ""
6122 6042
6123#: src/revocation/gnunet-revocation.c:169 6043#: src/revocation/gnunet-revocation.c:171
6124msgid "Revocation failed (!)\n" 6044msgid "Revocation failed (!)\n"
6125msgstr "Widerruf fehlgeschlagen (!)\n" 6045msgstr "Widerruf fehlgeschlagen (!)\n"
6126 6046
6127#: src/revocation/gnunet-revocation.c:174 6047#: src/revocation/gnunet-revocation.c:176
6128#, c-format 6048#, c-format
6129msgid "Key for ego `%s' has been successfully revoked\n" 6049msgid "Key for ego `%s' has been successfully revoked\n"
6130msgstr "" 6050msgstr ""
6131 6051
6132#: src/revocation/gnunet-revocation.c:179 6052#: src/revocation/gnunet-revocation.c:181
6133msgid "Revocation successful.\n" 6053msgid "Revocation successful.\n"
6134msgstr "" 6054msgstr ""
6135 6055
6136#: src/revocation/gnunet-revocation.c:184 6056#: src/revocation/gnunet-revocation.c:186
6137msgid "Internal error, key revocation might have failed\n" 6057msgid "Internal error, key revocation might have failed\n"
6138msgstr "" 6058msgstr ""
6139 6059
6140#: src/revocation/gnunet-revocation.c:321 6060#: src/revocation/gnunet-revocation.c:323
6141#, c-format 6061#, c-format
6142msgid "Revocation certificate for `%s' stored in `%s'\n" 6062msgid "Revocation certificate for `%s' stored in `%s'\n"
6143msgstr "" 6063msgstr ""
6144 6064
6145#: src/revocation/gnunet-revocation.c:350 6065#: src/revocation/gnunet-revocation.c:352
6146#, fuzzy, c-format 6066#, fuzzy, c-format
6147msgid "Ego `%s' not found.\n" 6067msgid "Ego `%s' not found.\n"
6148msgstr "Kommando `%s' wurde nicht gefunden!\n" 6068msgstr "Kommando `%s' wurde nicht gefunden!\n"
6149 6069
6150#: src/revocation/gnunet-revocation.c:371 6070#: src/revocation/gnunet-revocation.c:373
6151#, c-format 6071#, c-format
6152msgid "Error: revocation certificate in `%s' is not for `%s'\n" 6072msgid "Error: revocation certificate in `%s' is not for `%s'\n"
6153msgstr "" 6073msgstr ""
6154 6074
6155#: src/revocation/gnunet-revocation.c:391 6075#: src/revocation/gnunet-revocation.c:393
6156msgid "Revocation certificate ready\n" 6076msgid "Revocation certificate ready\n"
6157msgstr "" 6077msgstr ""
6158 6078
6159#: src/revocation/gnunet-revocation.c:401 6079#: src/revocation/gnunet-revocation.c:403
6160msgid "Revocation certificate not ready, calculating proof of work\n" 6080msgid "Revocation certificate not ready, calculating proof of work\n"
6161msgstr "" 6081msgstr ""
6162 6082
6163#: src/revocation/gnunet-revocation.c:435 src/social/gnunet-social.c:1178 6083#: src/revocation/gnunet-revocation.c:437
6164#, c-format 6084#, c-format
6165msgid "Public key `%s' malformed\n" 6085msgid "Public key `%s' malformed\n"
6166msgstr "" 6086msgstr ""
6167 6087
6168#: src/revocation/gnunet-revocation.c:448 6088#: src/revocation/gnunet-revocation.c:450
6169msgid "" 6089msgid ""
6170"Testing and revoking at the same time is not allowed, only executing test.\n" 6090"Testing and revoking at the same time is not allowed, only executing test.\n"
6171msgstr "" 6091msgstr ""
6172 6092
6173#: src/revocation/gnunet-revocation.c:468 6093#: src/revocation/gnunet-revocation.c:470
6174msgid "No filename to store revocation certificate given.\n" 6094msgid "No filename to store revocation certificate given.\n"
6175msgstr "" 6095msgstr ""
6176 6096
6177#: src/revocation/gnunet-revocation.c:489 6097#: src/revocation/gnunet-revocation.c:491
6178#, fuzzy, c-format 6098#, fuzzy, c-format
6179msgid "Failed to read revocation certificate from `%s'\n" 6099msgid "Failed to read revocation certificate from `%s'\n"
6180msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 6100msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
6181 6101
6182#: src/revocation/gnunet-revocation.c:514 6102#: src/revocation/gnunet-revocation.c:516
6183#, fuzzy 6103#, fuzzy
6184msgid "No action specified. Nothing to do.\n" 6104msgid "No action specified. Nothing to do.\n"
6185msgstr "Keine Kommandos angegeben.\n" 6105msgstr "Keine Kommandos angegeben.\n"
6186 6106
6187#: src/revocation/gnunet-revocation.c:533 6107#: src/revocation/gnunet-revocation.c:535
6188msgid "use NAME for the name of the revocation file" 6108msgid "use NAME for the name of the revocation file"
6189msgstr "" 6109msgstr ""
6190 6110
6191#: src/revocation/gnunet-revocation.c:539 6111#: src/revocation/gnunet-revocation.c:541
6192msgid "" 6112msgid ""
6193"revoke the private key associated for the the private key associated with " 6113"revoke the private key associated for the the private key associated with "
6194"the ego NAME " 6114"the ego NAME "
6195msgstr "" 6115msgstr ""
6196 6116
6197#: src/revocation/gnunet-revocation.c:544 6117#: src/revocation/gnunet-revocation.c:546
6198msgid "actually perform revocation, otherwise we just do the precomputation" 6118msgid "actually perform revocation, otherwise we just do the precomputation"
6199msgstr "" 6119msgstr ""
6200 6120
6201#: src/revocation/gnunet-revocation.c:550 6121#: src/revocation/gnunet-revocation.c:552
6202msgid "test if the public key KEY has been revoked" 6122msgid "test if the public key KEY has been revoked"
6203msgstr "" 6123msgstr ""
6204 6124
6205#: src/revocation/gnunet-service-revocation.c:457 6125#: src/revocation/gnunet-service-revocation.c:459
6206msgid "# unsupported revocations received via set union" 6126msgid "# unsupported revocations received via set union"
6207msgstr "" 6127msgstr ""
6208 6128
6209#: src/revocation/gnunet-service-revocation.c:466 6129#: src/revocation/gnunet-service-revocation.c:468
6210#, fuzzy 6130#, fuzzy
6211msgid "# revocation messages received via set union" 6131msgid "# revocation messages received via set union"
6212msgstr "# verschlüsselter PING Nachrichten empfangen" 6132msgstr "# verschlüsselter PING Nachrichten empfangen"
6213 6133
6214#: src/revocation/gnunet-service-revocation.c:471 6134#: src/revocation/gnunet-service-revocation.c:473
6215#, c-format 6135#, c-format
6216msgid "Error computing revocation set union with %s\n" 6136msgid "Error computing revocation set union with %s\n"
6217msgstr "" 6137msgstr ""
6218 6138
6219#: src/revocation/gnunet-service-revocation.c:475 6139#: src/revocation/gnunet-service-revocation.c:477
6220#, fuzzy 6140#, fuzzy
6221msgid "# revocation set unions failed" 6141msgid "# revocation set unions failed"
6222msgstr " Verbindung fehlgeschlagen\n" 6142msgstr " Verbindung fehlgeschlagen\n"
6223 6143
6224#: src/revocation/gnunet-service-revocation.c:484 6144#: src/revocation/gnunet-service-revocation.c:486
6225#, fuzzy 6145#, fuzzy
6226msgid "# revocation set unions completed" 6146msgid "# revocation set unions completed"
6227msgstr "# Klartext PONG Nachrichten empfangen" 6147msgstr "# Klartext PONG Nachrichten empfangen"
6228 6148
6229#: src/revocation/gnunet-service-revocation.c:523 6149#: src/revocation/gnunet-service-revocation.c:525
6230msgid "SET service crashed, terminating revocation service\n" 6150msgid "SET service crashed, terminating revocation service\n"
6231msgstr "" 6151msgstr ""
6232 6152
6233#: src/revocation/gnunet-service-revocation.c:865 6153#: src/revocation/gnunet-service-revocation.c:867
6234#, fuzzy 6154#, fuzzy
6235msgid "Could not open revocation database file!" 6155msgid "Could not open revocation database file!"
6236msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n" 6156msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n"
6237 6157
6238#: src/rps/gnunet-rps.c:258 6158#: src/rps/gnunet-rps.c:260
6239msgid "Seed a PeerID" 6159msgid "Seed a PeerID"
6240msgstr "" 6160msgstr ""
6241 6161
6242#: src/rps/gnunet-rps.c:262 6162#: src/rps/gnunet-rps.c:264
6243msgid "Get updates of view (0 for infinite updates)" 6163msgid "Get updates of view (0 for infinite updates)"
6244msgstr "" 6164msgstr ""
6245 6165
6246#: src/rps/gnunet-rps.c:266 6166#: src/rps/gnunet-rps.c:268
6247msgid "Get peers from biased stream" 6167msgid "Get peers from biased stream"
6248msgstr "" 6168msgstr ""
6249 6169
6250#: src/rps/gnunet-rps-profiler.c:2770 6170#: src/rps/gnunet-rps-profiler.c:2959
6251msgid "duration of the profiling" 6171msgid "duration of the profiling"
6252msgstr "" 6172msgstr ""
6253 6173
6254#: src/rps/gnunet-rps-profiler.c:2776 6174#: src/rps/gnunet-rps-profiler.c:2965
6255msgid "timeout for the profiling" 6175msgid "timeout for the profiling"
6256msgstr "" 6176msgstr ""
6257 6177
6258#: src/rps/gnunet-rps-profiler.c:2782 6178#: src/rps/gnunet-rps-profiler.c:2971
6259#, fuzzy 6179#, fuzzy
6260msgid "number of PeerIDs to request" 6180msgid "number of PeerIDs to request"
6261msgstr "Anzahl an Durchläufen" 6181msgstr "Anzahl an Durchläufen"
6262 6182
6263#: src/rps/gnunet-rps-profiler.c:2797 6183#: src/rps/gnunet-rps-profiler.c:2986
6264msgid "Measure quality and performance of the RPS service." 6184msgid "Measure quality and performance of the RPS service."
6265msgstr "" 6185msgstr ""
6266 6186
6267#: src/scalarproduct/gnunet-scalarproduct.c:218 6187#: src/scalarproduct/gnunet-scalarproduct.c:220
6268#, fuzzy 6188#, fuzzy
6269msgid "You must specify at least one message ID to check!\n" 6189msgid "You must specify at least one message ID to check!\n"
6270msgstr "Sie müssen eine Liste von Dateien zum Einfügen angeben.\n" 6190msgstr "Sie müssen eine Liste von Dateien zum Einfügen angeben.\n"
6271 6191
6272#: src/scalarproduct/gnunet-scalarproduct.c:225 6192#: src/scalarproduct/gnunet-scalarproduct.c:227
6273msgid "This program needs a session identifier for comparing vectors.\n" 6193msgid "This program needs a session identifier for comparing vectors.\n"
6274msgstr "" 6194msgstr ""
6275 6195
6276#: src/scalarproduct/gnunet-scalarproduct.c:238 6196#: src/scalarproduct/gnunet-scalarproduct.c:240
6277#, c-format 6197#, c-format
6278msgid "" 6198msgid ""
6279"Tried to set initiator mode, as peer ID was given. However, `%s' is not a " 6199"Tried to set initiator mode, as peer ID was given. However, `%s' is not a "
6280"valid peer identifier.\n" 6200"valid peer identifier.\n"
6281msgstr "" 6201msgstr ""
6282 6202
6283#: src/scalarproduct/gnunet-scalarproduct.c:256 6203#: src/scalarproduct/gnunet-scalarproduct.c:258
6284msgid "Need elements to compute the scalarproduct, got none.\n" 6204msgid "Need elements to compute the scalarproduct, got none.\n"
6285msgstr "" 6205msgstr ""
6286 6206
6287#: src/scalarproduct/gnunet-scalarproduct.c:278 6207#: src/scalarproduct/gnunet-scalarproduct.c:280
6288#, c-format 6208#, c-format
6289msgid "Malformed input, could not parse `%s'\n" 6209msgid "Malformed input, could not parse `%s'\n"
6290msgstr "" 6210msgstr ""
6291 6211
6292#: src/scalarproduct/gnunet-scalarproduct.c:296 6212#: src/scalarproduct/gnunet-scalarproduct.c:298
6293#, fuzzy, c-format 6213#, fuzzy, c-format
6294msgid "Could not convert `%s' to int64_t.\n" 6214msgid "Could not convert `%s' to int64_t.\n"
6295msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n" 6215msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
6296 6216
6297#: src/scalarproduct/gnunet-scalarproduct.c:323 6217#: src/scalarproduct/gnunet-scalarproduct.c:325
6298#, c-format 6218#, c-format
6299msgid "Failed to initiate computation, were all keys unique?\n" 6219msgid "Failed to initiate computation, were all keys unique?\n"
6300msgstr "" 6220msgstr ""
6301 6221
6302#: src/scalarproduct/gnunet-scalarproduct.c:349 6222#: src/scalarproduct/gnunet-scalarproduct.c:351
6303#: src/scalarproduct/gnunet-scalarproduct.c:355 6223#: src/scalarproduct/gnunet-scalarproduct.c:357
6304msgid "" 6224msgid ""
6305"A comma separated list of elements to compare as vector with our remote peer." 6225"A comma separated list of elements to compare as vector with our remote peer."
6306msgstr "" 6226msgstr ""
6307 6227
6308#: src/scalarproduct/gnunet-scalarproduct.c:361 6228#: src/scalarproduct/gnunet-scalarproduct.c:363
6309msgid "" 6229msgid ""
6310"[Optional] peer to calculate our scalarproduct with. If this parameter is " 6230"[Optional] peer to calculate our scalarproduct with. If this parameter is "
6311"not given, the service will wait for a remote peer to compute the request." 6231"not given, the service will wait for a remote peer to compute the request."
6312msgstr "" 6232msgstr ""
6313 6233
6314#: src/scalarproduct/gnunet-scalarproduct.c:367 6234#: src/scalarproduct/gnunet-scalarproduct.c:369
6315msgid "Transaction ID shared with peer." 6235msgid "Transaction ID shared with peer."
6316msgstr "" 6236msgstr ""
6317 6237
6318#: src/scalarproduct/gnunet-scalarproduct.c:377 6238#: src/scalarproduct/gnunet-scalarproduct.c:379
6319msgid "Calculate the Vectorproduct with a GNUnet peer." 6239msgid "Calculate the Vectorproduct with a GNUnet peer."
6320msgstr "" 6240msgstr ""
6321 6241
6322#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1399 6242#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
6323#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1343 6243#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
6324#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1170 6244#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
6325#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1061 6245#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
6326#, fuzzy 6246#, fuzzy
6327msgid "Connect to CADET failed\n" 6247msgid "Connect to CADET failed\n"
6328msgstr " Verbindung fehlgeschlagen\n" 6248msgstr " Verbindung fehlgeschlagen\n"
6329 6249
6330#: src/scalarproduct/scalarproduct_api.c:183 6250#: src/scalarproduct/scalarproduct_api.c:185
6331msgid "Keys given to SCALARPRODUCT not unique!\n" 6251msgid "Keys given to SCALARPRODUCT not unique!\n"
6332msgstr "" 6252msgstr ""
6333 6253
6334#: src/secretsharing/gnunet-secretsharing-profiler.c:614 6254#: src/secretsharing/gnunet-secretsharing-profiler.c:616
6335msgid "dkg start delay" 6255msgid "dkg start delay"
6336msgstr "" 6256msgstr ""
6337 6257
6338#: src/secretsharing/gnunet-secretsharing-profiler.c:620 6258#: src/secretsharing/gnunet-secretsharing-profiler.c:622
6339msgid "dkg timeout" 6259msgid "dkg timeout"
6340msgstr "" 6260msgstr ""
6341 6261
6342#: src/secretsharing/gnunet-secretsharing-profiler.c:626 6262#: src/secretsharing/gnunet-secretsharing-profiler.c:628
6343msgid "threshold" 6263msgid "threshold"
6344msgstr "" 6264msgstr ""
6345 6265
6346#: src/secretsharing/gnunet-secretsharing-profiler.c:631 6266#: src/secretsharing/gnunet-secretsharing-profiler.c:633
6347msgid "also profile decryption" 6267msgid "also profile decryption"
6348msgstr "" 6268msgstr ""
6349 6269
6350#: src/set/gnunet-service-set.c:2004 6270#: src/set/gnunet-service-set.c:2005
6351#, fuzzy 6271#, fuzzy
6352msgid "Could not connect to CADET service\n" 6272msgid "Could not connect to CADET service\n"
6353msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n" 6273msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n"
6354 6274
6355#: src/set/gnunet-set-ibf-profiler.c:250 6275#: src/set/gnunet-set-ibf-profiler.c:252
6356#, fuzzy 6276#, fuzzy
6357msgid "number of element in set A-B" 6277msgid "number of element in set A-B"
6358msgstr "Anzahl an Durchläufen" 6278msgstr "Anzahl an Durchläufen"
6359 6279
6360#: src/set/gnunet-set-ibf-profiler.c:256 6280#: src/set/gnunet-set-ibf-profiler.c:258
6361#, fuzzy 6281#, fuzzy
6362msgid "number of element in set B-A" 6282msgid "number of element in set B-A"
6363msgstr "Anzahl an Durchläufen" 6283msgstr "Anzahl an Durchläufen"
6364 6284
6365#: src/set/gnunet-set-ibf-profiler.c:262 6285#: src/set/gnunet-set-ibf-profiler.c:264
6366msgid "number of common elements in A and B" 6286msgid "number of common elements in A and B"
6367msgstr "" 6287msgstr ""
6368 6288
6369#: src/set/gnunet-set-ibf-profiler.c:268 6289#: src/set/gnunet-set-ibf-profiler.c:270
6370msgid "hash num" 6290msgid "hash num"
6371msgstr "" 6291msgstr ""
6372 6292
6373#: src/set/gnunet-set-ibf-profiler.c:274 6293#: src/set/gnunet-set-ibf-profiler.c:276
6374msgid "ibf size" 6294msgid "ibf size"
6375msgstr "" 6295msgstr ""
6376 6296
6377#: src/set/gnunet-set-profiler.c:442 6297#: src/set/gnunet-set-profiler.c:444
6378msgid "use byzantine mode" 6298msgid "use byzantine mode"
6379msgstr "" 6299msgstr ""
6380 6300
6381#: src/set/gnunet-set-profiler.c:448 6301#: src/set/gnunet-set-profiler.c:450
6382msgid "force sending full set" 6302msgid "force sending full set"
6383msgstr "" 6303msgstr ""
6384 6304
6385#: src/set/gnunet-set-profiler.c:454 6305#: src/set/gnunet-set-profiler.c:456
6386msgid "number delta operation" 6306msgid "number delta operation"
6387msgstr "" 6307msgstr ""
6388 6308
6389#: src/set/gnunet-set-profiler.c:466 6309#: src/set/gnunet-set-profiler.c:468
6390msgid "operation to execute" 6310msgid "operation to execute"
6391msgstr "" 6311msgstr ""
6392 6312
6393#: src/set/gnunet-set-profiler.c:472 6313#: src/set/gnunet-set-profiler.c:474
6394msgid "element size" 6314msgid "element size"
6395msgstr "" 6315msgstr ""
6396 6316
6397#: src/social/gnunet-social.c:1164 6317#: src/sq/sq.c:54
6398#, fuzzy
6399msgid "--place missing or invalid.\n"
6400msgstr "Ungültige Antwort auf `%s'.\n"
6401
6402#: src/social/gnunet-social.c:1215
6403msgid "assign --name in state to --data"
6404msgstr ""
6405
6406#: src/social/gnunet-social.c:1220
6407msgid "say good-bye and leave somebody else's place"
6408msgstr ""
6409
6410#: src/social/gnunet-social.c:1225
6411msgid "create a place"
6412msgstr ""
6413
6414#: src/social/gnunet-social.c:1230
6415msgid "destroy a place we were hosting"
6416msgstr ""
6417
6418#: src/social/gnunet-social.c:1235
6419msgid "enter somebody else's place"
6420msgstr ""
6421
6422#: src/social/gnunet-social.c:1241
6423msgid "find state matching name prefix"
6424msgstr ""
6425
6426#: src/social/gnunet-social.c:1246
6427msgid "replay history of messages up to the given --limit"
6428msgstr ""
6429
6430#: src/social/gnunet-social.c:1251
6431msgid "reconnect to a previously created place"
6432msgstr ""
6433
6434#: src/social/gnunet-social.c:1256
6435msgid "publish something to a place we are hosting"
6436msgstr ""
6437
6438#: src/social/gnunet-social.c:1261
6439msgid "reconnect to a previously entered place"
6440msgstr ""
6441
6442#: src/social/gnunet-social.c:1266
6443msgid "search for state matching exact name"
6444msgstr ""
6445
6446#: src/social/gnunet-social.c:1271
6447msgid "submit something to somebody's place"
6448msgstr ""
6449
6450#: src/social/gnunet-social.c:1276
6451msgid "list of egos and subscribed places"
6452msgstr ""
6453
6454#: src/social/gnunet-social.c:1281
6455msgid "extract and replay history between message IDs --start and --until"
6456msgstr ""
6457
6458#: src/social/gnunet-social.c:1290
6459msgid "application ID to use when connecting"
6460msgstr ""
6461
6462#: src/social/gnunet-social.c:1296
6463msgid "message body or state value"
6464msgstr ""
6465
6466#: src/social/gnunet-social.c:1302
6467#, fuzzy
6468msgid "name or public key of ego"
6469msgstr "Ungültiger Parameter: `%s'\n"
6470
6471#: src/social/gnunet-social.c:1307
6472msgid "wait for incoming messages"
6473msgstr ""
6474
6475#: src/social/gnunet-social.c:1313
6476msgid "GNS name"
6477msgstr ""
6478
6479#: src/social/gnunet-social.c:1319
6480msgid "peer ID for --guest-enter"
6481msgstr ""
6482
6483#: src/social/gnunet-social.c:1325
6484msgid "name (key) to query from state"
6485msgstr ""
6486
6487#: src/social/gnunet-social.c:1331
6488msgid "method name"
6489msgstr ""
6490
6491#: src/social/gnunet-social.c:1337
6492#, fuzzy
6493msgid "number of messages to replay from history"
6494msgstr "Anzahl an Durchläufen"
6495
6496#: src/social/gnunet-social.c:1343
6497msgid "key address of place"
6498msgstr ""
6499
6500#: src/social/gnunet-social.c:1349
6501msgid "start message ID for history replay"
6502msgstr ""
6503
6504#: src/social/gnunet-social.c:1354
6505msgid "respond to entry requests by admitting all guests"
6506msgstr ""
6507
6508#: src/social/gnunet-social.c:1360
6509msgid "end message ID for history replay"
6510msgstr ""
6511
6512#: src/social/gnunet-social.c:1365
6513msgid "respond to entry requests by refusing all guests"
6514msgstr ""
6515
6516#: src/social/gnunet-social.c:1375
6517msgid ""
6518"gnunet-social - Interact with the social service: enter/leave, send/receive "
6519"messages, access history and state.\n"
6520msgstr ""
6521
6522#: src/sq/sq.c:52
6523#, c-format 6318#, c-format
6524msgid "Failure to bind %u-th SQL parameter\n" 6319msgid "Failure to bind %u-th SQL parameter\n"
6525msgstr "" 6320msgstr ""
6526 6321
6527#: src/sq/sq.c:59 6322#: src/sq/sq.c:61
6528msgid "Failure in sqlite3_reset (!)\n" 6323msgid "Failure in sqlite3_reset (!)\n"
6529msgstr "" 6324msgstr ""
6530 6325
6531#: src/sq/sq.c:137 6326#: src/sq/sq.c:139
6532#, fuzzy, c-format 6327#, fuzzy, c-format
6533msgid "Failed to reset sqlite statement with error: %s\n" 6328msgid "Failed to reset sqlite statement with error: %s\n"
6534msgstr "" 6329msgstr ""
6535"`%s' konnte die Methode '%s%s' nicht auflösen. Ort: %s:%d. Fehler: %s\n" 6330"`%s' konnte die Methode '%s%s' nicht auflösen. Ort: %s:%d. Fehler: %s\n"
6536 6331
6537#: src/statistics/gnunet-service-statistics.c:336 6332#: src/statistics/gnunet-service-statistics.c:338
6538#, fuzzy, c-format 6333#, fuzzy, c-format
6539msgid "Wrote %llu bytes of statistics to `%s'\n" 6334msgid "Wrote %llu bytes of statistics to `%s'\n"
6540msgstr "Dateien aus dem GNUnet herunterladen." 6335msgstr "Dateien aus dem GNUnet herunterladen."
6541 6336
6542#: src/statistics/gnunet-service-statistics.c:1084 6337#: src/statistics/gnunet-service-statistics.c:1086
6543#, fuzzy, c-format 6338#, fuzzy, c-format
6544msgid "Loading %llu bytes of statistics from `%s'\n" 6339msgid "Loading %llu bytes of statistics from `%s'\n"
6545msgstr "Dateien aus dem GNUnet herunterladen." 6340msgstr "Dateien aus dem GNUnet herunterladen."
6546 6341
6547#: src/statistics/gnunet-statistics.c:407 6342#: src/statistics/gnunet-statistics.c:409
6548#: src/statistics/gnunet-statistics.c:448 6343#: src/statistics/gnunet-statistics.c:450
6549#, fuzzy 6344#, fuzzy
6550msgid "Failed to obtain statistics.\n" 6345msgid "Failed to obtain statistics.\n"
6551msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n" 6346msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
6552 6347
6553#: src/statistics/gnunet-statistics.c:410 6348#: src/statistics/gnunet-statistics.c:412
6554#: src/statistics/gnunet-statistics.c:451 6349#: src/statistics/gnunet-statistics.c:453
6555#, fuzzy, c-format 6350#, fuzzy, c-format
6556msgid "Failed to obtain statistics from host `%s:%llu'\n" 6351msgid "Failed to obtain statistics from host `%s:%llu'\n"
6557msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 6352msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
6558 6353
6559#: src/statistics/gnunet-statistics.c:526 6354#: src/statistics/gnunet-statistics.c:528
6560msgid "Missing argument: subsystem \n" 6355msgid "Missing argument: subsystem \n"
6561msgstr "" 6356msgstr ""
6562 6357
6563#: src/statistics/gnunet-statistics.c:534 6358#: src/statistics/gnunet-statistics.c:536
6564msgid "Missing argument: name\n" 6359msgid "Missing argument: name\n"
6565msgstr "" 6360msgstr ""
6566 6361
6567#: src/statistics/gnunet-statistics.c:577 6362#: src/statistics/gnunet-statistics.c:579
6568#, c-format 6363#, c-format
6569msgid "No subsystem or name given\n" 6364msgid "No subsystem or name given\n"
6570msgstr "" 6365msgstr ""
6571 6366
6572#: src/statistics/gnunet-statistics.c:592 6367#: src/statistics/gnunet-statistics.c:594
6573#, fuzzy, c-format 6368#, fuzzy, c-format
6574msgid "Failed to initialize watch routine\n" 6369msgid "Failed to initialize watch routine\n"
6575msgstr "`%s' Dienst konnte nicht initialisiert werden.\n" 6370msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
6576 6371
6577#: src/statistics/gnunet-statistics.c:727 6372#: src/statistics/gnunet-statistics.c:729
6578#, c-format 6373#, c-format
6579msgid "Invalid argument `%s'\n" 6374msgid "Invalid argument `%s'\n"
6580msgstr "Ungültiges Argument »%s«\n" 6375msgstr "Ungültiges Argument »%s«\n"
6581 6376
6582#: src/statistics/gnunet-statistics.c:745 6377#: src/statistics/gnunet-statistics.c:747
6583#, c-format 6378#, c-format
6584msgid "A port is required to connect to host `%s'\n" 6379msgid "A port is required to connect to host `%s'\n"
6585msgstr "" 6380msgstr ""
6586 6381
6587#: src/statistics/gnunet-statistics.c:753 6382#: src/statistics/gnunet-statistics.c:755
6588#, c-format 6383#, c-format
6589msgid "A port has to be between 1 and 65535 to connect to host `%s'\n" 6384msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
6590msgstr "" 6385msgstr ""
6591 6386
6592#: src/statistics/gnunet-statistics.c:784 6387#: src/statistics/gnunet-statistics.c:786
6593#, c-format 6388#, c-format
6594msgid "Not able to watch testbed nodes (yet - feel free to implement)\n" 6389msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
6595msgstr "" 6390msgstr ""
6596 6391
6597#: src/statistics/gnunet-statistics.c:817 6392#: src/statistics/gnunet-statistics.c:819
6598msgid "limit output to statistics for the given NAME" 6393msgid "limit output to statistics for the given NAME"
6599msgstr "" 6394msgstr ""
6600 6395
6601#: src/statistics/gnunet-statistics.c:822 6396#: src/statistics/gnunet-statistics.c:824
6602msgid "make the value being set persistent" 6397msgid "make the value being set persistent"
6603msgstr "" 6398msgstr ""
6604 6399
6605#: src/statistics/gnunet-statistics.c:828 6400#: src/statistics/gnunet-statistics.c:830
6606msgid "limit output to the given SUBSYSTEM" 6401msgid "limit output to the given SUBSYSTEM"
6607msgstr "" 6402msgstr ""
6608 6403
6609#: src/statistics/gnunet-statistics.c:834 6404#: src/statistics/gnunet-statistics.c:836
6610msgid "use as csv separator" 6405msgid "use as csv separator"
6611msgstr "" 6406msgstr ""
6612 6407
6613#: src/statistics/gnunet-statistics.c:840 6408#: src/statistics/gnunet-statistics.c:842
6614msgid "path to the folder containing the testbed data" 6409msgid "path to the folder containing the testbed data"
6615msgstr "" 6410msgstr ""
6616 6411
6617#: src/statistics/gnunet-statistics.c:845 6412#: src/statistics/gnunet-statistics.c:847
6618msgid "just print the statistics value" 6413msgid "just print the statistics value"
6619msgstr "" 6414msgstr ""
6620 6415
6621#: src/statistics/gnunet-statistics.c:850 6416#: src/statistics/gnunet-statistics.c:852
6622msgid "watch value continuously" 6417msgid "watch value continuously"
6623msgstr "" 6418msgstr ""
6624 6419
6625#: src/statistics/gnunet-statistics.c:856 6420#: src/statistics/gnunet-statistics.c:858
6626msgid "connect to remote host" 6421msgid "connect to remote host"
6627msgstr "" 6422msgstr ""
6628 6423
6629#: src/statistics/gnunet-statistics.c:862 6424#: src/statistics/gnunet-statistics.c:864
6630msgid "port for remote host" 6425msgid "port for remote host"
6631msgstr "" 6426msgstr ""
6632 6427
6633#: src/statistics/gnunet-statistics.c:879 6428#: src/statistics/gnunet-statistics.c:881
6634msgid "Print statistics about GNUnet operations." 6429msgid "Print statistics about GNUnet operations."
6635msgstr "Statistiken der GNUnet-Aktivitäten ausgeben." 6430msgstr "Statistiken der GNUnet-Aktivitäten ausgeben."
6636 6431
6637#: src/statistics/statistics_api.c:751 6432#: src/statistics/statistics_api.c:753
6638msgid "Could not save some persistent statistics\n" 6433msgid "Could not save some persistent statistics\n"
6639msgstr "" 6434msgstr ""
6640 6435
6641#: src/testbed/generate-underlay-topology.c:223 6436#: src/testbed/generate-underlay-topology.c:225
6642#, fuzzy 6437#, fuzzy
6643msgid "Need at least 2 arguments\n" 6438msgid "Need at least 2 arguments\n"
6644msgstr "Sie müssen einen Empfänger angeben!\n" 6439msgstr "Sie müssen einen Empfänger angeben!\n"
6645 6440
6646#: src/testbed/generate-underlay-topology.c:228 6441#: src/testbed/generate-underlay-topology.c:230
6647msgid "Database filename missing\n" 6442msgid "Database filename missing\n"
6648msgstr "" 6443msgstr ""
6649 6444
6650#: src/testbed/generate-underlay-topology.c:235 6445#: src/testbed/generate-underlay-topology.c:237
6651msgid "Topology string missing\n" 6446msgid "Topology string missing\n"
6652msgstr "" 6447msgstr ""
6653 6448
6654#: src/testbed/generate-underlay-topology.c:240 6449#: src/testbed/generate-underlay-topology.c:242
6655#, fuzzy, c-format 6450#, fuzzy, c-format
6656msgid "Invalid topology: %s\n" 6451msgid "Invalid topology: %s\n"
6657msgstr "Ungültige Antwort auf `%s'.\n" 6452msgstr "Ungültige Antwort auf `%s'.\n"
6658 6453
6659#: src/testbed/generate-underlay-topology.c:253 6454#: src/testbed/generate-underlay-topology.c:255
6660#, c-format 6455#, c-format
6661msgid "An argument is missing for given topology `%s'\n" 6456msgid "An argument is missing for given topology `%s'\n"
6662msgstr "" 6457msgstr ""
6663 6458
6664#: src/testbed/generate-underlay-topology.c:259 6459#: src/testbed/generate-underlay-topology.c:261
6665#, fuzzy, c-format 6460#, fuzzy, c-format
6666msgid "Invalid argument `%s' given as topology argument\n" 6461msgid "Invalid argument `%s' given as topology argument\n"
6667msgstr "Ungültiger Parameter für `%s' bei %s:%d.\n" 6462msgstr "Ungültiger Parameter für `%s' bei %s:%d.\n"
6668 6463
6669#: src/testbed/generate-underlay-topology.c:267 6464#: src/testbed/generate-underlay-topology.c:269
6670#, c-format 6465#, c-format
6671msgid "Filename argument missing for topology `%s'\n" 6466msgid "Filename argument missing for topology `%s'\n"
6672msgstr "" 6467msgstr ""
6673 6468
6674#: src/testbed/generate-underlay-topology.c:281 6469#: src/testbed/generate-underlay-topology.c:283
6675#, c-format 6470#, c-format
6676msgid "Second argument for topology `%s' is missing\n" 6471msgid "Second argument for topology `%s' is missing\n"
6677msgstr "" 6472msgstr ""
6678 6473
6679#: src/testbed/generate-underlay-topology.c:287 6474#: src/testbed/generate-underlay-topology.c:289
6680#, fuzzy, c-format 6475#, fuzzy, c-format
6681msgid "Invalid argument `%s'; expecting unsigned int\n" 6476msgid "Invalid argument `%s'; expecting unsigned int\n"
6682msgstr "Ungültiger Parameter für `%s' bei %s:%d.\n" 6477msgstr "Ungültiger Parameter für `%s' bei %s:%d.\n"
6683 6478
6684#: src/testbed/generate-underlay-topology.c:340 6479#: src/testbed/generate-underlay-topology.c:342
6685#: src/testbed/gnunet-testbed-profiler.c:281 6480#: src/testbed/gnunet-testbed-profiler.c:283
6686msgid "create COUNT number of peers" 6481msgid "create COUNT number of peers"
6687msgstr "" 6482msgstr ""
6688 6483
6689#: src/testbed/generate-underlay-topology.c:350 6484#: src/testbed/generate-underlay-topology.c:352
6690msgid "" 6485msgid ""
6691"Generates SQLite3 database representing a given underlay topology.\n" 6486"Generates SQLite3 database representing a given underlay topology.\n"
6692"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n" 6487"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n"
@@ -6710,83 +6505,83 @@ msgid ""
6710"content/topology-file-format\n" 6505"content/topology-file-format\n"
6711msgstr "" 6506msgstr ""
6712 6507
6713#: src/testbed/gnunet-daemon-latency-logger.c:313 6508#: src/testbed/gnunet-daemon-latency-logger.c:315
6714msgid "Daemon to log latency values of connections to neighbours" 6509msgid "Daemon to log latency values of connections to neighbours"
6715msgstr "" 6510msgstr ""
6716 6511
6717#: src/testbed/gnunet-daemon-testbed-blacklist.c:247 6512#: src/testbed/gnunet-daemon-testbed-blacklist.c:249
6718msgid "" 6513msgid ""
6719"Daemon to restrict incoming transport layer connections during testbed " 6514"Daemon to restrict incoming transport layer connections during testbed "
6720"deployments" 6515"deployments"
6721msgstr "" 6516msgstr ""
6722 6517
6723#: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 6518#: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
6724#: src/testing/testing.c:286 src/util/gnunet-ecc.c:310 6519#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
6725#, c-format 6520#, c-format
6726msgid "Incorrect hostkey file format: %s\n" 6521msgid "Incorrect hostkey file format: %s\n"
6727msgstr "" 6522msgstr ""
6728 6523
6729#: src/testbed/gnunet-daemon-testbed-underlay.c:469 6524#: src/testbed/gnunet-daemon-testbed-underlay.c:471
6730msgid "Daemon to restrict underlay network in testbed deployments" 6525msgid "Daemon to restrict underlay network in testbed deployments"
6731msgstr "" 6526msgstr ""
6732 6527
6733#: src/testbed/gnunet-service-testbed_cpustatus.c:726 6528#: src/testbed/gnunet-service-testbed_cpustatus.c:728
6734#, c-format 6529#, c-format
6735msgid "" 6530msgid ""
6736"Cannot open %s for writing load statistics. Not logging load statistics\n" 6531"Cannot open %s for writing load statistics. Not logging load statistics\n"
6737msgstr "" 6532msgstr ""
6738 6533
6739#: src/testbed/gnunet-service-testbed_peers.c:1157 6534#: src/testbed/gnunet-service-testbed_peers.c:1159
6740#, c-format 6535#, c-format
6741msgid "%s is stopped" 6536msgid "%s is stopped"
6742msgstr "%s wurde gestoppt" 6537msgstr "%s wurde gestoppt"
6743 6538
6744#: src/testbed/gnunet-service-testbed_peers.c:1159 6539#: src/testbed/gnunet-service-testbed_peers.c:1161
6745#, c-format 6540#, c-format
6746msgid "%s is starting" 6541msgid "%s is starting"
6747msgstr "%s startet" 6542msgstr "%s startet"
6748 6543
6749#: src/testbed/gnunet-service-testbed_peers.c:1161 6544#: src/testbed/gnunet-service-testbed_peers.c:1163
6750#, c-format 6545#, c-format
6751msgid "%s is stopping" 6546msgid "%s is stopping"
6752msgstr "%s wird gestoppt" 6547msgstr "%s wird gestoppt"
6753 6548
6754#: src/testbed/gnunet-service-testbed_peers.c:1163 6549#: src/testbed/gnunet-service-testbed_peers.c:1165
6755#, c-format 6550#, c-format
6756msgid "%s is starting already" 6551msgid "%s is starting already"
6757msgstr "%s ist bereits gestartet" 6552msgstr "%s ist bereits gestartet"
6758 6553
6759#: src/testbed/gnunet-service-testbed_peers.c:1165 6554#: src/testbed/gnunet-service-testbed_peers.c:1167
6760#, c-format 6555#, c-format
6761msgid "%s is stopping already" 6556msgid "%s is stopping already"
6762msgstr "%s wird bereits gestoppt" 6557msgstr "%s wird bereits gestoppt"
6763 6558
6764#: src/testbed/gnunet-service-testbed_peers.c:1167 6559#: src/testbed/gnunet-service-testbed_peers.c:1169
6765#, c-format 6560#, c-format
6766msgid "%s is started already" 6561msgid "%s is started already"
6767msgstr "%s ist bereits gestartet" 6562msgstr "%s ist bereits gestartet"
6768 6563
6769#: src/testbed/gnunet-service-testbed_peers.c:1169 6564#: src/testbed/gnunet-service-testbed_peers.c:1171
6770#, c-format 6565#, c-format
6771msgid "%s is stopped already" 6566msgid "%s is stopped already"
6772msgstr "%s ist bereits gestoppt" 6567msgstr "%s ist bereits gestoppt"
6773 6568
6774#: src/testbed/gnunet-service-testbed_peers.c:1171 6569#: src/testbed/gnunet-service-testbed_peers.c:1173
6775#, c-format 6570#, c-format
6776msgid "%s service is not known to ARM" 6571msgid "%s service is not known to ARM"
6777msgstr "" 6572msgstr ""
6778 6573
6779#: src/testbed/gnunet-service-testbed_peers.c:1173 6574#: src/testbed/gnunet-service-testbed_peers.c:1175
6780#, c-format 6575#, c-format
6781msgid "%s service failed to start" 6576msgid "%s service failed to start"
6782msgstr "%s-Dienst konnte nicht gestartet werden" 6577msgstr "%s-Dienst konnte nicht gestartet werden"
6783 6578
6784#: src/testbed/gnunet-service-testbed_peers.c:1175 6579#: src/testbed/gnunet-service-testbed_peers.c:1177
6785#, c-format 6580#, c-format
6786msgid "%s service can't be started because ARM is shutting down" 6581msgid "%s service can't be started because ARM is shutting down"
6787msgstr "" 6582msgstr ""
6788 6583
6789#: src/testbed/gnunet-service-testbed_peers.c:1177 6584#: src/testbed/gnunet-service-testbed_peers.c:1179
6790#, c-format 6585#, c-format
6791msgid "%.s Unknown result code." 6586msgid "%.s Unknown result code."
6792msgstr "" 6587msgstr ""
@@ -6803,176 +6598,176 @@ msgstr ""
6803msgid "Spawning process `%s'\n" 6598msgid "Spawning process `%s'\n"
6804msgstr "Ungültige Antwort auf `%s'.\n" 6599msgstr "Ungültige Antwort auf `%s'.\n"
6805 6600
6806#: src/testbed/gnunet-testbed-profiler.c:287 6601#: src/testbed/gnunet-testbed-profiler.c:289
6807msgid "tolerate COUNT number of continious timeout failures" 6602msgid "tolerate COUNT number of continious timeout failures"
6808msgstr "" 6603msgstr ""
6809 6604
6810#: src/testbed/gnunet-testbed-profiler.c:292 6605#: src/testbed/gnunet-testbed-profiler.c:294
6811msgid "" 6606msgid ""
6812"run profiler in non-interactive mode where upon testbed setup the profiler " 6607"run profiler in non-interactive mode where upon testbed setup the profiler "
6813"does not wait for a keystroke but continues to run until a termination " 6608"does not wait for a keystroke but continues to run until a termination "
6814"signal is received" 6609"signal is received"
6815msgstr "" 6610msgstr ""
6816 6611
6817#: src/testbed/testbed_api.c:408 6612#: src/testbed/testbed_api.c:410
6818#, fuzzy, c-format 6613#, fuzzy, c-format
6819msgid "Adding host %u failed with error: %s\n" 6614msgid "Adding host %u failed with error: %s\n"
6820msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n" 6615msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n"
6821 6616
6822#: src/testbed/testbed_api_hosts.c:411 6617#: src/testbed/testbed_api_hosts.c:413
6823#, fuzzy, c-format 6618#, fuzzy, c-format
6824msgid "Hosts file %s not found\n" 6619msgid "Hosts file %s not found\n"
6825msgstr "`%s' fehlgeschlagen: Tabelle nicht gefunden!\n" 6620msgstr "`%s' fehlgeschlagen: Tabelle nicht gefunden!\n"
6826 6621
6827#: src/testbed/testbed_api_hosts.c:419 6622#: src/testbed/testbed_api_hosts.c:421
6828#, c-format 6623#, c-format
6829msgid "Hosts file %s has no data\n" 6624msgid "Hosts file %s has no data\n"
6830msgstr "" 6625msgstr ""
6831 6626
6832#: src/testbed/testbed_api_hosts.c:426 6627#: src/testbed/testbed_api_hosts.c:428
6833#, c-format 6628#, c-format
6834msgid "Hosts file %s cannot be read\n" 6629msgid "Hosts file %s cannot be read\n"
6835msgstr "" 6630msgstr ""
6836 6631
6837#: src/testbed/testbed_api_hosts.c:567 6632#: src/testbed/testbed_api_hosts.c:569
6838#, c-format 6633#, c-format
6839msgid "The function %s is only available when compiled with (--with-ll)\n" 6634msgid "The function %s is only available when compiled with (--with-ll)\n"
6840msgstr "" 6635msgstr ""
6841 6636
6842#: src/testbed/testbed_api_testbed.c:816 6637#: src/testbed/testbed_api_testbed.c:818
6843msgid "Linking controllers failed. Exiting" 6638msgid "Linking controllers failed. Exiting"
6844msgstr "" 6639msgstr ""
6845 6640
6846#: src/testbed/testbed_api_testbed.c:984 6641#: src/testbed/testbed_api_testbed.c:986
6847#, c-format 6642#, c-format
6848msgid "Host registration failed for a host. Error: %s\n" 6643msgid "Host registration failed for a host. Error: %s\n"
6849msgstr "" 6644msgstr ""
6850 6645
6851#: src/testbed/testbed_api_testbed.c:1050 6646#: src/testbed/testbed_api_testbed.c:1052
6852msgid "Controller crash detected. Shutting down.\n" 6647msgid "Controller crash detected. Shutting down.\n"
6853msgstr "" 6648msgstr ""
6854 6649
6855#: src/testbed/testbed_api_testbed.c:1139 6650#: src/testbed/testbed_api_testbed.c:1141
6856#, c-format 6651#, c-format
6857msgid "Host %s cannot start testbed\n" 6652msgid "Host %s cannot start testbed\n"
6858msgstr "" 6653msgstr ""
6859 6654
6860#: src/testbed/testbed_api_testbed.c:1143 6655#: src/testbed/testbed_api_testbed.c:1145
6861msgid "Testbed cannot be started on localhost\n" 6656msgid "Testbed cannot be started on localhost\n"
6862msgstr "" 6657msgstr ""
6863 6658
6864#: src/testbed/testbed_api_testbed.c:1181 6659#: src/testbed/testbed_api_testbed.c:1183
6865#, fuzzy 6660#, fuzzy
6866msgid "Cannot start the master controller" 6661msgid "Cannot start the master controller"
6867msgstr "GNUnet testbed Controller starten." 6662msgstr "GNUnet testbed Controller starten."
6868 6663
6869#: src/testbed/testbed_api_testbed.c:1199 6664#: src/testbed/testbed_api_testbed.c:1201
6870msgid "Shutting down testbed due to timeout while setup.\n" 6665msgid "Shutting down testbed due to timeout while setup.\n"
6871msgstr "" 6666msgstr ""
6872 6667
6873#: src/testbed/testbed_api_testbed.c:1259 6668#: src/testbed/testbed_api_testbed.c:1261
6874msgid "No hosts loaded from LoadLeveler. Need at least one host\n" 6669msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
6875msgstr "" 6670msgstr ""
6876 6671
6877#: src/testbed/testbed_api_testbed.c:1271 6672#: src/testbed/testbed_api_testbed.c:1273
6878msgid "No hosts loaded. Need at least one host\n" 6673msgid "No hosts loaded. Need at least one host\n"
6879msgstr "" 6674msgstr ""
6880 6675
6881#: src/testbed/testbed_api_testbed.c:1295 6676#: src/testbed/testbed_api_testbed.c:1297
6882msgid "Specified topology must be supported by testbed" 6677msgid "Specified topology must be supported by testbed"
6883msgstr "" 6678msgstr ""
6884 6679
6885#: src/testbed/testbed_api_testbed.c:1345 6680#: src/testbed/testbed_api_testbed.c:1347
6886#, c-format 6681#, c-format
6887msgid "" 6682msgid ""
6888"Maximum number of edges a peer can have in a scale free topology cannot be " 6683"Maximum number of edges a peer can have in a scale free topology cannot be "
6889"more than %u. Given `%s = %llu'" 6684"more than %u. Given `%s = %llu'"
6890msgstr "" 6685msgstr ""
6891 6686
6892#: src/testbed/testbed_api_testbed.c:1361 6687#: src/testbed/testbed_api_testbed.c:1363
6893#, c-format 6688#, c-format
6894msgid "" 6689msgid ""
6895"The number of edges that can established when adding a new node to scale " 6690"The number of edges that can established when adding a new node to scale "
6896"free topology cannot be more than %u. Given `%s = %llu'" 6691"free topology cannot be more than %u. Given `%s = %llu'"
6897msgstr "" 6692msgstr ""
6898 6693
6899#: src/testbed/testbed_api_topology.c:1026 6694#: src/testbed/testbed_api_topology.c:1028
6900#, c-format 6695#, c-format
6901msgid "Topology file %s not found\n" 6696msgid "Topology file %s not found\n"
6902msgstr "" 6697msgstr ""
6903 6698
6904#: src/testbed/testbed_api_topology.c:1034 6699#: src/testbed/testbed_api_topology.c:1036
6905#, c-format 6700#, c-format
6906msgid "Topology file %s has no data\n" 6701msgid "Topology file %s has no data\n"
6907msgstr "" 6702msgstr ""
6908 6703
6909#: src/testbed/testbed_api_topology.c:1042 6704#: src/testbed/testbed_api_topology.c:1044
6910#, c-format 6705#, c-format
6911msgid "Topology file %s cannot be read\n" 6706msgid "Topology file %s cannot be read\n"
6912msgstr "" 6707msgstr ""
6913 6708
6914#: src/testbed/testbed_api_topology.c:1064 6709#: src/testbed/testbed_api_topology.c:1066
6915#, fuzzy, c-format 6710#, fuzzy, c-format
6916msgid "Failed to read peer index from toology file: %s" 6711msgid "Failed to read peer index from toology file: %s"
6917msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 6712msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
6918 6713
6919#: src/testbed/testbed_api_topology.c:1073 6714#: src/testbed/testbed_api_topology.c:1075
6920#: src/testbed/testbed_api_topology.c:1097 6715#: src/testbed/testbed_api_topology.c:1099
6921#, c-format 6716#, c-format
6922msgid "Value in given topology file: %s out of range\n" 6717msgid "Value in given topology file: %s out of range\n"
6923msgstr "" 6718msgstr ""
6924 6719
6925#: src/testbed/testbed_api_topology.c:1079 6720#: src/testbed/testbed_api_topology.c:1081
6926#: src/testbed/testbed_api_topology.c:1103 6721#: src/testbed/testbed_api_topology.c:1105
6927#, fuzzy, c-format 6722#, fuzzy, c-format
6928msgid "Failed to read peer index from topology file: %s" 6723msgid "Failed to read peer index from topology file: %s"
6929msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 6724msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
6930 6725
6931#: src/testbed/testbed_api_topology.c:1085 6726#: src/testbed/testbed_api_topology.c:1087
6932#: src/testbed/testbed_api_topology.c:1109 6727#: src/testbed/testbed_api_topology.c:1111
6933msgid "Topology file needs more peers than given ones\n" 6728msgid "Topology file needs more peers than given ones\n"
6934msgstr "" 6729msgstr ""
6935 6730
6936#: src/testbed/testbed_api_topology.c:1143 6731#: src/testbed/testbed_api_topology.c:1145
6937#, c-format 6732#, c-format
6938msgid "Ignoring to connect peer %u to peer %u\n" 6733msgid "Ignoring to connect peer %u to peer %u\n"
6939msgstr "" 6734msgstr ""
6940 6735
6941#: src/testing/gnunet-testing.c:171 6736#: src/testing/gnunet-testing.c:173
6942#, c-format 6737#, c-format
6943msgid "Could not extract hostkey %u (offset too large?)\n" 6738msgid "Could not extract hostkey %u (offset too large?)\n"
6944msgstr "" 6739msgstr ""
6945 6740
6946#: src/testing/gnunet-testing.c:251 6741#: src/testing/gnunet-testing.c:253
6947#, c-format 6742#, c-format
6948msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n" 6743msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n"
6949msgstr "" 6744msgstr ""
6950 6745
6951#: src/testing/gnunet-testing.c:352 6746#: src/testing/gnunet-testing.c:354
6952#, fuzzy 6747#, fuzzy
6953msgid "create unique configuration files" 6748msgid "create unique configuration files"
6954msgstr "" 6749msgstr ""
6955"Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben" 6750"Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben"
6956 6751
6957#: src/testing/gnunet-testing.c:357 6752#: src/testing/gnunet-testing.c:359
6958msgid "extract hostkey file from pre-computed hostkey list" 6753msgid "extract hostkey file from pre-computed hostkey list"
6959msgstr "" 6754msgstr ""
6960 6755
6961#: src/testing/gnunet-testing.c:363 6756#: src/testing/gnunet-testing.c:365
6962msgid "" 6757msgid ""
6963"number of unique configuration files to create, or number of the hostkey to " 6758"number of unique configuration files to create, or number of the hostkey to "
6964"extract" 6759"extract"
6965msgstr "" 6760msgstr ""
6966 6761
6967#: src/testing/gnunet-testing.c:370 6762#: src/testing/gnunet-testing.c:372
6968msgid "configuration template" 6763msgid "configuration template"
6969msgstr "Konfigurationsvorlage" 6764msgstr "Konfigurationsvorlage"
6970 6765
6971#: src/testing/gnunet-testing.c:376 6766#: src/testing/gnunet-testing.c:378
6972msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)" 6767msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)"
6973msgstr "" 6768msgstr ""
6974 6769
6975#: src/testing/gnunet-testing.c:389 6770#: src/testing/gnunet-testing.c:391
6976msgid "Command line tool to access the testing library" 6771msgid "Command line tool to access the testing library"
6977msgstr "" 6772msgstr ""
6978 6773
@@ -6980,1398 +6775,1422 @@ msgstr ""
6980msgid "list COUNT number of keys" 6775msgid "list COUNT number of keys"
6981msgstr "" 6776msgstr ""
6982 6777
6983#: src/testing/testing.c:270 6778#: src/testing/testing.c:272
6984#, c-format 6779#, c-format
6985msgid "Hostkeys file not found: %s\n" 6780msgid "Hostkeys file not found: %s\n"
6986msgstr "" 6781msgstr ""
6987 6782
6988#: src/testing/testing.c:713 6783#: src/testing/testing.c:715
6989#, c-format 6784#, c-format
6990msgid "Key number %u does not exist\n" 6785msgid "Key number %u does not exist\n"
6991msgstr "" 6786msgstr ""
6992 6787
6993#: src/testing/testing.c:1157 6788#: src/testing/testing.c:1159
6994#, c-format 6789#, c-format
6995msgid "" 6790msgid ""
6996"You attempted to create a testbed with more than %u hosts. Please " 6791"You attempted to create a testbed with more than %u hosts. Please "
6997"precompute more hostkeys first.\n" 6792"precompute more hostkeys first.\n"
6998msgstr "" 6793msgstr ""
6999 6794
7000#: src/testing/testing.c:1166 6795#: src/testing/testing.c:1168
7001#, fuzzy, c-format 6796#, fuzzy, c-format
7002msgid "Failed to initialize hostkey for peer %u\n" 6797msgid "Failed to initialize hostkey for peer %u\n"
7003msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n" 6798msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
7004 6799
7005#: src/testing/testing.c:1176 6800#: src/testing/testing.c:1178
7006msgid "PRIVATE_KEY option in PEER section missing in configuration\n" 6801msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
7007msgstr "" 6802msgstr ""
7008 6803
7009#: src/testing/testing.c:1189 6804#: src/testing/testing.c:1191
7010msgid "Failed to create configuration for peer (not enough free ports?)\n" 6805msgid "Failed to create configuration for peer (not enough free ports?)\n"
7011msgstr "" 6806msgstr ""
7012 6807
7013#: src/testing/testing.c:1203 6808#: src/testing/testing.c:1205
7014#, fuzzy, c-format 6809#, fuzzy, c-format
7015msgid "Cannot open hostkey file `%s': %s\n" 6810msgid "Cannot open hostkey file `%s': %s\n"
7016msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n" 6811msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n"
7017 6812
7018#: src/testing/testing.c:1215 6813#: src/testing/testing.c:1217
7019#, fuzzy, c-format 6814#, fuzzy, c-format
7020msgid "Failed to write hostkey file for peer %u: %s\n" 6815msgid "Failed to write hostkey file for peer %u: %s\n"
7021msgstr "Datei wurde als `%s' gespeichert.\n" 6816msgstr "Datei wurde als `%s' gespeichert.\n"
7022 6817
7023#: src/testing/testing.c:1240 6818#: src/testing/testing.c:1242
7024#, fuzzy, c-format 6819#, fuzzy, c-format
7025msgid "Failed to write configuration file `%s' for peer %u: %s\n" 6820msgid "Failed to write configuration file `%s' for peer %u: %s\n"
7026msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" 6821msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
7027 6822
7028#: src/testing/testing.c:1342 6823#: src/testing/testing.c:1344
7029#, c-format 6824#, c-format
7030msgid "Failed to start `%s': %s\n" 6825msgid "Failed to start `%s': %s\n"
7031msgstr "»%s« konnte nicht gestartet werden: %s\n" 6826msgstr "»%s« konnte nicht gestartet werden: %s\n"
7032 6827
7033#: src/testing/testing.c:1645 6828#: src/testing/testing.c:1647
7034#, c-format 6829#, c-format
7035msgid "Failed to load configuration from %s\n" 6830msgid "Failed to load configuration from %s\n"
7036msgstr "Konfiguration konnte nicht aus %s geladen werden\n" 6831msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
7037 6832
7038#: src/topology/friends.c:124 6833#: src/topology/friends.c:126
7039#, fuzzy, c-format 6834#, fuzzy, c-format
7040msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n" 6835msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n"
7041msgstr "Syntaxfehler in Topologieangabe, überspringe Bytes `%s'.\n" 6836msgstr "Syntaxfehler in Topologieangabe, überspringe Bytes `%s'.\n"
7042 6837
7043#: src/topology/friends.c:178 6838#: src/topology/friends.c:180
7044#, c-format 6839#, c-format
7045msgid "Directory for file `%s' does not seem to be writable.\n" 6840msgid "Directory for file `%s' does not seem to be writable.\n"
7046msgstr "" 6841msgstr ""
7047 6842
7048#: src/topology/gnunet-daemon-topology.c:228 6843#: src/topology/gnunet-daemon-topology.c:230
7049msgid "# peers blacklisted" 6844msgid "# peers blacklisted"
7050msgstr "" 6845msgstr ""
7051 6846
7052#: src/topology/gnunet-daemon-topology.c:342 6847#: src/topology/gnunet-daemon-topology.c:344
7053#, fuzzy 6848#, fuzzy
7054msgid "# connect requests issued to ATS" 6849msgid "# connect requests issued to ATS"
7055msgstr "# geschlossener Verbindungen (HANGUP gesendet)" 6850msgstr "# geschlossener Verbindungen (HANGUP gesendet)"
7056 6851
7057#: src/topology/gnunet-daemon-topology.c:536 6852#: src/topology/gnunet-daemon-topology.c:538
7058#, fuzzy 6853#, fuzzy
7059msgid "# HELLO messages gossipped" 6854msgid "# HELLO messages gossipped"
7060msgstr "# ausgehender Nachrichten verworfen" 6855msgstr "# ausgehender Nachrichten verworfen"
7061 6856
7062#: src/topology/gnunet-daemon-topology.c:638 6857#: src/topology/gnunet-daemon-topology.c:640
7063#: src/topology/gnunet-daemon-topology.c:724 6858#: src/topology/gnunet-daemon-topology.c:726
7064msgid "# friends connected" 6859msgid "# friends connected"
7065msgstr "# verbundener Freunde" 6860msgstr "# verbundener Freunde"
7066 6861
7067#: src/topology/gnunet-daemon-topology.c:921 6862#: src/topology/gnunet-daemon-topology.c:923
7068msgid "Failed to connect to core service, can not manage topology!\n" 6863msgid "Failed to connect to core service, can not manage topology!\n"
7069msgstr "" 6864msgstr ""
7070 6865
7071#: src/topology/gnunet-daemon-topology.c:954 6866#: src/topology/gnunet-daemon-topology.c:956
7072#, c-format 6867#, c-format
7073msgid "Found myself `%s' in friend list (useless, ignored)\n" 6868msgid "Found myself `%s' in friend list (useless, ignored)\n"
7074msgstr "" 6869msgstr ""
7075 6870
7076#: src/topology/gnunet-daemon-topology.c:961 6871#: src/topology/gnunet-daemon-topology.c:963
7077#, fuzzy, c-format 6872#, fuzzy, c-format
7078msgid "Found friend `%s' in configuration\n" 6873msgid "Found friend `%s' in configuration\n"
7079msgstr " gconfig\tGTK Konfiguration\n" 6874msgstr " gconfig\tGTK Konfiguration\n"
7080 6875
7081#: src/topology/gnunet-daemon-topology.c:983 6876#: src/topology/gnunet-daemon-topology.c:985
7082msgid "Encountered errors parsing friends list!\n" 6877msgid "Encountered errors parsing friends list!\n"
7083msgstr "" 6878msgstr ""
7084 6879
7085#: src/topology/gnunet-daemon-topology.c:986 6880#: src/topology/gnunet-daemon-topology.c:988
7086msgid "# friends in configuration" 6881msgid "# friends in configuration"
7087msgstr "# Freunde in Konfiguration" 6882msgstr "# Freunde in Konfiguration"
7088 6883
7089#: src/topology/gnunet-daemon-topology.c:993 6884#: src/topology/gnunet-daemon-topology.c:995
7090msgid "" 6885msgid ""
7091"Fewer friends specified than required by minimum friend count. Will only " 6886"Fewer friends specified than required by minimum friend count. Will only "
7092"connect to friends.\n" 6887"connect to friends.\n"
7093msgstr "" 6888msgstr ""
7094 6889
7095#: src/topology/gnunet-daemon-topology.c:999 6890#: src/topology/gnunet-daemon-topology.c:1001
7096msgid "" 6891msgid ""
7097"More friendly connections required than target total number of connections.\n" 6892"More friendly connections required than target total number of connections.\n"
7098msgstr "" 6893msgstr ""
7099 6894
7100#: src/topology/gnunet-daemon-topology.c:1052 6895#: src/topology/gnunet-daemon-topology.c:1054
7101#: src/transport/plugin_transport_wlan.c:1515 6896#: src/transport/plugin_transport_wlan.c:1517
7102msgid "# HELLO messages received" 6897msgid "# HELLO messages received"
7103msgstr "# HELLO-Meldungen empfangen" 6898msgstr "# HELLO-Meldungen empfangen"
7104 6899
7105#: src/topology/gnunet-daemon-topology.c:1230 6900#: src/topology/gnunet-daemon-topology.c:1233
7106msgid "GNUnet topology control" 6901msgid "GNUnet topology control"
7107msgstr "" 6902msgstr ""
7108 6903
7109#: src/transport/gnunet-service-transport_ats.c:139 6904#: src/transport/gnunet-communicator-tcp.c:2329
6905#: src/transport/gnunet-communicator-udp.c:2883
6906#: src/transport/gnunet-service-tng.c:4679
6907#: src/transport/gnunet-service-transport.c:2782
6908msgid "Transport service is lacking key configuration settings. Exiting.\n"
6909msgstr ""
6910
6911#: src/transport/gnunet-communicator-tcp.c:2393
6912msgid "GNUnet TCP communicator"
6913msgstr ""
6914
6915#: src/transport/gnunet-communicator-udp.c:2954
6916msgid "GNUnet UDP communicator"
6917msgstr ""
6918
6919#: src/transport/gnunet-communicator-unix.c:802
6920#, fuzzy
6921msgid ""
6922"Maximum number of UNIX connections exceeded, dropping incoming message\n"
6923msgstr "Maximale Anzahl der Verbindungen ist %u\n"
6924
6925#: src/transport/gnunet-communicator-unix.c:1073
6926#: src/transport/plugin_transport_unix.c:1403
6927#, c-format
6928msgid "Cannot create path to `%s'\n"
6929msgstr "Pfad zu »%s« kann nicht erstellt werden\n"
6930
6931#: src/transport/gnunet-communicator-unix.c:1162
6932msgid "GNUnet UNIX domain socket communicator"
6933msgstr ""
6934
6935#: src/transport/gnunet-service-transport_ats.c:141
7110msgid "# Addresses given to ATS" 6936msgid "# Addresses given to ATS"
7111msgstr "" 6937msgstr ""
7112 6938
7113#: src/transport/gnunet-service-transport.c:446 6939#: src/transport/gnunet-service-transport.c:448
7114msgid "# messages dropped due to slow client" 6940msgid "# messages dropped due to slow client"
7115msgstr "" 6941msgstr ""
7116 6942
7117#: src/transport/gnunet-service-transport.c:816 6943#: src/transport/gnunet-service-transport.c:817
7118msgid "# bytes payload dropped (other peer was not connected)" 6944msgid "# bytes payload dropped (other peer was not connected)"
7119msgstr "" 6945msgstr ""
7120 6946
7121#: src/transport/gnunet-service-transport.c:1549 6947#: src/transport/gnunet-service-transport.c:1550
7122msgid "# bytes payload discarded due to not connected peer" 6948msgid "# bytes payload discarded due to not connected peer"
7123msgstr "" 6949msgstr ""
7124 6950
7125#: src/transport/gnunet-service-transport.c:1709 6951#: src/transport/gnunet-service-transport.c:1710
7126msgid "# bytes total received" 6952msgid "# bytes total received"
7127msgstr "# Bytes insgesamt empfangen" 6953msgstr "# Bytes insgesamt empfangen"
7128 6954
7129#: src/transport/gnunet-service-transport.c:1806 6955#: src/transport/gnunet-service-transport.c:1807
7130msgid "# bytes payload received" 6956msgid "# bytes payload received"
7131msgstr "# Bytes Nutzdaten empfangen" 6957msgstr "# Bytes Nutzdaten empfangen"
7132 6958
7133#: src/transport/gnunet-service-transport.c:2123 6959#: src/transport/gnunet-service-transport.c:2124
7134#: src/transport/gnunet-service-transport.c:2595 6960#: src/transport/gnunet-service-transport.c:2596
7135msgid "# disconnects due to blacklist" 6961msgid "# disconnects due to blacklist"
7136msgstr "" 6962msgstr ""
7137 6963
7138#: src/transport/gnunet-service-transport.c:2599 6964#: src/transport/gnunet-service-transport.c:2600
7139#, fuzzy, c-format 6965#, fuzzy, c-format
7140msgid "Disallowing connection to peer `%s' on transport %s\n" 6966msgid "Disallowing connection to peer `%s' on transport %s\n"
7141msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" 6967msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
7142 6968
7143#: src/transport/gnunet-service-transport.c:2707 6969#: src/transport/gnunet-service-transport.c:2708
7144#, c-format 6970#, c-format
7145msgid "Adding blacklisting entry for peer `%s'\n" 6971msgid "Adding blacklisting entry for peer `%s'\n"
7146msgstr "" 6972msgstr ""
7147 6973
7148#: src/transport/gnunet-service-transport.c:2716 6974#: src/transport/gnunet-service-transport.c:2717
7149#, c-format 6975#, c-format
7150msgid "Adding blacklisting entry for peer `%s':`%s'\n" 6976msgid "Adding blacklisting entry for peer `%s':`%s'\n"
7151msgstr "" 6977msgstr ""
7152 6978
7153#: src/transport/gnunet-service-transport.c:2781 6979#: src/transport/gnunet-service-transport_hello.c:195
7154msgid "Transport service is lacking key configuration settings. Exiting.\n"
7155msgstr ""
7156
7157#: src/transport/gnunet-service-transport_hello.c:193
7158msgid "# refreshed my HELLO" 6980msgid "# refreshed my HELLO"
7159msgstr "" 6981msgstr ""
7160 6982
7161#: src/transport/gnunet-service-transport_neighbours.c:804 6983#: src/transport/gnunet-service-transport_neighbours.c:805
7162#, fuzzy 6984#, fuzzy
7163msgid "# session creation failed" 6985msgid "# session creation failed"
7164msgstr " Verbindung fehlgeschlagen\n" 6986msgstr " Verbindung fehlgeschlagen\n"
7165 6987
7166#: src/transport/gnunet-service-transport_neighbours.c:1051 6988#: src/transport/gnunet-service-transport_neighbours.c:1052
7167msgid "# DISCONNECT messages sent" 6989msgid "# DISCONNECT messages sent"
7168msgstr "# DISCONNECT-Meldungen empfangen" 6990msgstr "# DISCONNECT-Meldungen empfangen"
7169 6991
7170#: src/transport/gnunet-service-transport_neighbours.c:1174 6992#: src/transport/gnunet-service-transport_neighbours.c:1175
7171msgid "# disconnects due to quota of 0" 6993msgid "# disconnects due to quota of 0"
7172msgstr "" 6994msgstr ""
7173 6995
7174#: src/transport/gnunet-service-transport_neighbours.c:1322 6996#: src/transport/gnunet-service-transport_neighbours.c:1323
7175#: src/transport/gnunet-service-transport_neighbours.c:1783 6997#: src/transport/gnunet-service-transport_neighbours.c:1784
7176#, fuzzy 6998#, fuzzy
7177msgid "# bytes in message queue for other peers" 6999msgid "# bytes in message queue for other peers"
7178msgstr "# Bytes ausgehender Nachrichten verworfen" 7000msgstr "# Bytes ausgehender Nachrichten verworfen"
7179 7001
7180#: src/transport/gnunet-service-transport_neighbours.c:1327 7002#: src/transport/gnunet-service-transport_neighbours.c:1328
7181#, fuzzy 7003#, fuzzy
7182msgid "# messages transmitted to other peers" 7004msgid "# messages transmitted to other peers"
7183msgstr "# Bytes des Typs %d übertragen" 7005msgstr "# Bytes des Typs %d übertragen"
7184 7006
7185#: src/transport/gnunet-service-transport_neighbours.c:1333 7007#: src/transport/gnunet-service-transport_neighbours.c:1334
7186msgid "# transmission failures for messages to other peers" 7008msgid "# transmission failures for messages to other peers"
7187msgstr "" 7009msgstr ""
7188 7010
7189#: src/transport/gnunet-service-transport_neighbours.c:1393 7011#: src/transport/gnunet-service-transport_neighbours.c:1394
7190msgid "# messages timed out while in transport queue" 7012msgid "# messages timed out while in transport queue"
7191msgstr "" 7013msgstr ""
7192 7014
7193#: src/transport/gnunet-service-transport_neighbours.c:1477 7015#: src/transport/gnunet-service-transport_neighbours.c:1478
7194msgid "# KEEPALIVES sent" 7016msgid "# KEEPALIVES sent"
7195msgstr "" 7017msgstr ""
7196 7018
7197#: src/transport/gnunet-service-transport_neighbours.c:1513 7019#: src/transport/gnunet-service-transport_neighbours.c:1514
7198msgid "# KEEPALIVE messages discarded (peer unknown)" 7020msgid "# KEEPALIVE messages discarded (peer unknown)"
7199msgstr "" 7021msgstr ""
7200 7022
7201#: src/transport/gnunet-service-transport_neighbours.c:1521 7023#: src/transport/gnunet-service-transport_neighbours.c:1522
7202msgid "# KEEPALIVE messages discarded (no session)" 7024msgid "# KEEPALIVE messages discarded (no session)"
7203msgstr "" 7025msgstr ""
7204 7026
7205#: src/transport/gnunet-service-transport_neighbours.c:1531 7027#: src/transport/gnunet-service-transport_neighbours.c:1532
7206msgid "# KEEPALIVES received in good order" 7028msgid "# KEEPALIVES received in good order"
7207msgstr "" 7029msgstr ""
7208 7030
7209#: src/transport/gnunet-service-transport_neighbours.c:1576 7031#: src/transport/gnunet-service-transport_neighbours.c:1577
7210msgid "# KEEPALIVE_RESPONSEs discarded (not connected)" 7032msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
7211msgstr "" 7033msgstr ""
7212 7034
7213#: src/transport/gnunet-service-transport_neighbours.c:1585 7035#: src/transport/gnunet-service-transport_neighbours.c:1586
7214msgid "# KEEPALIVE_RESPONSEs discarded (not expected)" 7036msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
7215msgstr "" 7037msgstr ""
7216 7038
7217#: src/transport/gnunet-service-transport_neighbours.c:1593 7039#: src/transport/gnunet-service-transport_neighbours.c:1594
7218msgid "# KEEPALIVE_RESPONSEs discarded (address changed)" 7040msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
7219msgstr "" 7041msgstr ""
7220 7042
7221#: src/transport/gnunet-service-transport_neighbours.c:1602 7043#: src/transport/gnunet-service-transport_neighbours.c:1603
7222msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)" 7044msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
7223msgstr "" 7045msgstr ""
7224 7046
7225#: src/transport/gnunet-service-transport_neighbours.c:1607 7047#: src/transport/gnunet-service-transport_neighbours.c:1608
7226msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)" 7048msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
7227msgstr "" 7049msgstr ""
7228 7050
7229#: src/transport/gnunet-service-transport_neighbours.c:1613 7051#: src/transport/gnunet-service-transport_neighbours.c:1614
7230msgid "# KEEPALIVE_RESPONSEs received (OK)" 7052msgid "# KEEPALIVE_RESPONSEs received (OK)"
7231msgstr "" 7053msgstr ""
7232 7054
7233#: src/transport/gnunet-service-transport_neighbours.c:1680 7055#: src/transport/gnunet-service-transport_neighbours.c:1681
7234msgid "# messages discarded due to lack of neighbour record" 7056msgid "# messages discarded due to lack of neighbour record"
7235msgstr "" 7057msgstr ""
7236 7058
7237#: src/transport/gnunet-service-transport_neighbours.c:1714 7059#: src/transport/gnunet-service-transport_neighbours.c:1715
7238#, fuzzy 7060#, fuzzy
7239msgid "# bandwidth quota violations by other peers" 7061msgid "# bandwidth quota violations by other peers"
7240msgstr "Verfolgt die Bandbreitennutzung von gnunetd" 7062msgstr "Verfolgt die Bandbreitennutzung von gnunetd"
7241 7063
7242#: src/transport/gnunet-service-transport_neighbours.c:1729 7064#: src/transport/gnunet-service-transport_neighbours.c:1730
7243msgid "# ms throttling suggested" 7065msgid "# ms throttling suggested"
7244msgstr "" 7066msgstr ""
7245 7067
7246#: src/transport/gnunet-service-transport_neighbours.c:1852 7068#: src/transport/gnunet-service-transport_neighbours.c:1853
7247#, fuzzy, c-format 7069#, fuzzy, c-format
7248msgid "Failed to send SYN message to peer `%s'\n" 7070msgid "Failed to send SYN message to peer `%s'\n"
7249msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n" 7071msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
7250 7072
7251#: src/transport/gnunet-service-transport_neighbours.c:1872 7073#: src/transport/gnunet-service-transport_neighbours.c:1873
7252msgid "# Failed attempts to switch addresses (failed to send SYN CONT)" 7074msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
7253msgstr "" 7075msgstr ""
7254 7076
7255#: src/transport/gnunet-service-transport_neighbours.c:1911 7077#: src/transport/gnunet-service-transport_neighbours.c:1912
7256#, fuzzy 7078#, fuzzy
7257msgid "# SYN messages sent" 7079msgid "# SYN messages sent"
7258msgstr "# DISCONNECT-Meldungen empfangen" 7080msgstr "# DISCONNECT-Meldungen empfangen"
7259 7081
7260#: src/transport/gnunet-service-transport_neighbours.c:1928 7082#: src/transport/gnunet-service-transport_neighbours.c:1929
7261#, fuzzy, c-format 7083#, fuzzy, c-format
7262msgid "Failed to transmit SYN message to %s\n" 7084msgid "Failed to transmit SYN message to %s\n"
7263msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 7085msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
7264 7086
7265#: src/transport/gnunet-service-transport_neighbours.c:1958 7087#: src/transport/gnunet-service-transport_neighbours.c:1959
7266msgid "# Failed attempts to switch addresses (failed to send SYN)" 7088msgid "# Failed attempts to switch addresses (failed to send SYN)"
7267msgstr "" 7089msgstr ""
7268 7090
7269#: src/transport/gnunet-service-transport_neighbours.c:2026 7091#: src/transport/gnunet-service-transport_neighbours.c:2027
7270#, fuzzy, c-format 7092#, fuzzy, c-format
7271msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n" 7093msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
7272msgstr "Fehler beim Senden der `%s' Nachricht an gnunetd\n" 7094msgstr "Fehler beim Senden der `%s' Nachricht an gnunetd\n"
7273 7095
7274#: src/transport/gnunet-service-transport_neighbours.c:2080 7096#: src/transport/gnunet-service-transport_neighbours.c:2081
7275#, fuzzy 7097#, fuzzy
7276msgid "# SYN_ACK messages sent" 7098msgid "# SYN_ACK messages sent"
7277msgstr "# verschlüsselter PONG Nachrichten gesendet" 7099msgstr "# verschlüsselter PONG Nachrichten gesendet"
7278 7100
7279#: src/transport/gnunet-service-transport_neighbours.c:2097 7101#: src/transport/gnunet-service-transport_neighbours.c:2098
7280#, fuzzy, c-format 7102#, fuzzy, c-format
7281msgid "Failed to transmit SYN_ACK message to %s\n" 7103msgid "Failed to transmit SYN_ACK message to %s\n"
7282msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n" 7104msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
7283 7105
7284#: src/transport/gnunet-service-transport_neighbours.c:2260 7106#: src/transport/gnunet-service-transport_neighbours.c:2261
7285#, fuzzy 7107#, fuzzy
7286msgid "# SYN messages received" 7108msgid "# SYN messages received"
7287msgstr "# PING Nachrichten erstellt" 7109msgstr "# PING Nachrichten erstellt"
7288 7110
7289#: src/transport/gnunet-service-transport_neighbours.c:2265 7111#: src/transport/gnunet-service-transport_neighbours.c:2266
7290#, c-format 7112#, c-format
7291msgid "SYN request from peer `%s' ignored due impending shutdown\n" 7113msgid "SYN request from peer `%s' ignored due impending shutdown\n"
7292msgstr "" 7114msgstr ""
7293 7115
7294#: src/transport/gnunet-service-transport_neighbours.c:2652 7116#: src/transport/gnunet-service-transport_neighbours.c:2653
7295msgid "# Attempts to switch addresses" 7117msgid "# Attempts to switch addresses"
7296msgstr "" 7118msgstr ""
7297 7119
7298#: src/transport/gnunet-service-transport_neighbours.c:3137 7120#: src/transport/gnunet-service-transport_neighbours.c:3138
7299#, fuzzy 7121#, fuzzy
7300msgid "# SYN_ACK messages received" 7122msgid "# SYN_ACK messages received"
7301msgstr "# SESSION_ACK-Meldungen empfangen" 7123msgstr "# SESSION_ACK-Meldungen empfangen"
7302 7124
7303#: src/transport/gnunet-service-transport_neighbours.c:3145 7125#: src/transport/gnunet-service-transport_neighbours.c:3146
7304#, fuzzy 7126#, fuzzy
7305msgid "# unexpected SYN_ACK messages (no peer)" 7127msgid "# unexpected SYN_ACK messages (no peer)"
7306msgstr "# verschlüsselter PONG Nachrichten gesendet" 7128msgstr "# verschlüsselter PONG Nachrichten gesendet"
7307 7129
7308#: src/transport/gnunet-service-transport_neighbours.c:3163 7130#: src/transport/gnunet-service-transport_neighbours.c:3164
7309#: src/transport/gnunet-service-transport_neighbours.c:3187 7131#: src/transport/gnunet-service-transport_neighbours.c:3188
7310#, fuzzy 7132#, fuzzy
7311msgid "# unexpected SYN_ACK messages (not ready)" 7133msgid "# unexpected SYN_ACK messages (not ready)"
7312msgstr "# verschlüsselter PONG Nachrichten gesendet" 7134msgstr "# verschlüsselter PONG Nachrichten gesendet"
7313 7135
7314#: src/transport/gnunet-service-transport_neighbours.c:3199 7136#: src/transport/gnunet-service-transport_neighbours.c:3200
7315#, fuzzy 7137#, fuzzy
7316msgid "# unexpected SYN_ACK messages (waiting on ATS)" 7138msgid "# unexpected SYN_ACK messages (waiting on ATS)"
7317msgstr "# verschlüsselter PONG Nachrichten gesendet" 7139msgstr "# verschlüsselter PONG Nachrichten gesendet"
7318 7140
7319#: src/transport/gnunet-service-transport_neighbours.c:3224 7141#: src/transport/gnunet-service-transport_neighbours.c:3225
7320msgid "# Successful attempts to switch addresses" 7142msgid "# Successful attempts to switch addresses"
7321msgstr "" 7143msgstr ""
7322 7144
7323#: src/transport/gnunet-service-transport_neighbours.c:3237 7145#: src/transport/gnunet-service-transport_neighbours.c:3238
7324#, fuzzy 7146#, fuzzy
7325msgid "# unexpected SYN_ACK messages (disconnecting)" 7147msgid "# unexpected SYN_ACK messages (disconnecting)"
7326msgstr "# verschlüsselter PONG Nachrichten gesendet" 7148msgstr "# verschlüsselter PONG Nachrichten gesendet"
7327 7149
7328#: src/transport/gnunet-service-transport_neighbours.c:3410 7150#: src/transport/gnunet-service-transport_neighbours.c:3411
7329#, fuzzy 7151#, fuzzy
7330msgid "# ACK messages received" 7152msgid "# ACK messages received"
7331msgstr "# CONNECT_ACK-Meldungen empfangen" 7153msgstr "# CONNECT_ACK-Meldungen empfangen"
7332 7154
7333#: src/transport/gnunet-service-transport_neighbours.c:3446 7155#: src/transport/gnunet-service-transport_neighbours.c:3447
7334#, fuzzy 7156#, fuzzy
7335msgid "# unexpected ACK messages" 7157msgid "# unexpected ACK messages"
7336msgstr "# verschlüsselter PONG Nachrichten gesendet" 7158msgstr "# verschlüsselter PONG Nachrichten gesendet"
7337 7159
7338#: src/transport/gnunet-service-transport_neighbours.c:3534 7160#: src/transport/gnunet-service-transport_neighbours.c:3535
7339#, fuzzy 7161#, fuzzy
7340msgid "# quota messages ignored (malformed)" 7162msgid "# quota messages ignored (malformed)"
7341msgstr "# gap Anfragen verworfen: Kollision in RT" 7163msgstr "# gap Anfragen verworfen: Kollision in RT"
7342 7164
7343#: src/transport/gnunet-service-transport_neighbours.c:3541 7165#: src/transport/gnunet-service-transport_neighbours.c:3542
7344#, fuzzy 7166#, fuzzy
7345msgid "# QUOTA messages received" 7167msgid "# QUOTA messages received"
7346msgstr "# verschlüsselter PONG Nachrichten empfangen" 7168msgstr "# verschlüsselter PONG Nachrichten empfangen"
7347 7169
7348#: src/transport/gnunet-service-transport_neighbours.c:3581 7170#: src/transport/gnunet-service-transport_neighbours.c:3582
7349msgid "# disconnect messages ignored (malformed)" 7171msgid "# disconnect messages ignored (malformed)"
7350msgstr "" 7172msgstr ""
7351 7173
7352#: src/transport/gnunet-service-transport_neighbours.c:3588 7174#: src/transport/gnunet-service-transport_neighbours.c:3589
7353#, fuzzy 7175#, fuzzy
7354msgid "# DISCONNECT messages received" 7176msgid "# DISCONNECT messages received"
7355msgstr "# verschlüsselter PONG Nachrichten empfangen" 7177msgstr "# verschlüsselter PONG Nachrichten empfangen"
7356 7178
7357#: src/transport/gnunet-service-transport_neighbours.c:3599 7179#: src/transport/gnunet-service-transport_neighbours.c:3600
7358msgid "# disconnect messages ignored (timestamp)" 7180msgid "# disconnect messages ignored (timestamp)"
7359msgstr "" 7181msgstr ""
7360 7182
7361#: src/transport/gnunet-service-transport_neighbours.c:3734 7183#: src/transport/gnunet-service-transport_neighbours.c:3735
7362msgid "# disconnected from peer upon explicit request" 7184msgid "# disconnected from peer upon explicit request"
7363msgstr "" 7185msgstr ""
7364 7186
7365#: src/transport/gnunet-service-transport_plugins.c:156 7187#: src/transport/gnunet-service-transport_plugins.c:158
7366msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n" 7188msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n"
7367msgstr "" 7189msgstr ""
7368 7190
7369#: src/transport/gnunet-service-transport_plugins.c:221 7191#: src/transport/gnunet-service-transport_plugins.c:223
7370#: src/transport/gnunet-service-transport_plugins.c:229 7192#: src/transport/gnunet-service-transport_plugins.c:231
7371#: src/transport/gnunet-service-transport_plugins.c:237 7193#: src/transport/gnunet-service-transport_plugins.c:239
7372#: src/transport/gnunet-service-transport_plugins.c:245 7194#: src/transport/gnunet-service-transport_plugins.c:247
7373#: src/transport/gnunet-service-transport_plugins.c:253 7195#: src/transport/gnunet-service-transport_plugins.c:255
7374#: src/transport/gnunet-service-transport_plugins.c:261 7196#: src/transport/gnunet-service-transport_plugins.c:263
7375#: src/transport/gnunet-service-transport_plugins.c:269 7197#: src/transport/gnunet-service-transport_plugins.c:271
7376#: src/transport/gnunet-service-transport_plugins.c:277 7198#: src/transport/gnunet-service-transport_plugins.c:279
7377#: src/transport/gnunet-service-transport_plugins.c:285 7199#: src/transport/gnunet-service-transport_plugins.c:287
7378#: src/transport/gnunet-service-transport_plugins.c:293 7200#: src/transport/gnunet-service-transport_plugins.c:295
7379#: src/transport/gnunet-service-transport_plugins.c:301 7201#: src/transport/gnunet-service-transport_plugins.c:303
7380#, fuzzy, c-format 7202#, fuzzy, c-format
7381msgid "Missing function `%s' in transport plugin for `%s'\n" 7203msgid "Missing function `%s' in transport plugin for `%s'\n"
7382msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" 7204msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
7383 7205
7384#: src/transport/gnunet-service-transport_plugins.c:308 7206#: src/transport/gnunet-service-transport_plugins.c:310
7385#, fuzzy, c-format 7207#, fuzzy, c-format
7386msgid "Did not load plugin `%s' due to missing functions\n" 7208msgid "Did not load plugin `%s' due to missing functions\n"
7387msgstr "Fehler beim Laden des Plugins `%s' bei %s:%d. Plugin wird entladen.\n" 7209msgstr "Fehler beim Laden des Plugins `%s' bei %s:%d. Plugin wird entladen.\n"
7388 7210
7389#: src/transport/gnunet-service-transport_validation.c:386 7211#: src/transport/gnunet-service-transport_validation.c:388
7390msgid "# Addresses in validation map" 7212msgid "# Addresses in validation map"
7391msgstr "" 7213msgstr ""
7392 7214
7393#: src/transport/gnunet-service-transport_validation.c:489 7215#: src/transport/gnunet-service-transport_validation.c:491
7394#: src/transport/gnunet-service-transport_validation.c:675 7216#: src/transport/gnunet-service-transport_validation.c:677
7395#: src/transport/gnunet-service-transport_validation.c:995 7217#: src/transport/gnunet-service-transport_validation.c:997
7396#: src/transport/gnunet-service-transport_validation.c:1607 7218#: src/transport/gnunet-service-transport_validation.c:1609
7397#, fuzzy 7219#, fuzzy
7398msgid "# validations running" 7220msgid "# validations running"
7399msgstr "Sqlite-Datenbank läuft\n" 7221msgstr "Sqlite-Datenbank läuft\n"
7400 7222
7401#: src/transport/gnunet-service-transport_validation.c:530 7223#: src/transport/gnunet-service-transport_validation.c:532
7402#, fuzzy 7224#, fuzzy
7403msgid "# address records discarded (timeout)" 7225msgid "# address records discarded (timeout)"
7404msgstr "# verworfener Adressdatensätze" 7226msgstr "# verworfener Adressdatensätze"
7405 7227
7406#: src/transport/gnunet-service-transport_validation.c:578 7228#: src/transport/gnunet-service-transport_validation.c:580
7407#, fuzzy 7229#, fuzzy
7408msgid "# address records discarded (blacklist)" 7230msgid "# address records discarded (blacklist)"
7409msgstr "# verworfener Adressdatensätze" 7231msgstr "# verworfener Adressdatensätze"
7410 7232
7411#: src/transport/gnunet-service-transport_validation.c:666 7233#: src/transport/gnunet-service-transport_validation.c:668
7412msgid "# PINGs for address validation sent" 7234msgid "# PINGs for address validation sent"
7413msgstr "" 7235msgstr ""
7414 7236
7415#: src/transport/gnunet-service-transport_validation.c:746 7237#: src/transport/gnunet-service-transport_validation.c:748
7416msgid "# validations delayed by global throttle" 7238msgid "# validations delayed by global throttle"
7417msgstr "" 7239msgstr ""
7418 7240
7419#: src/transport/gnunet-service-transport_validation.c:783 7241#: src/transport/gnunet-service-transport_validation.c:785
7420msgid "# address revalidations started" 7242msgid "# address revalidations started"
7421msgstr "" 7243msgstr ""
7422 7244
7423#: src/transport/gnunet-service-transport_validation.c:1121 7245#: src/transport/gnunet-service-transport_validation.c:1123
7424#, fuzzy 7246#, fuzzy
7425msgid "# PING message for different peer received" 7247msgid "# PING message for different peer received"
7426msgstr "# PING Nachrichten erstellt" 7248msgstr "# PING Nachrichten erstellt"
7427 7249
7428#: src/transport/gnunet-service-transport_validation.c:1172 7250#: src/transport/gnunet-service-transport_validation.c:1174
7429#, c-format 7251#, c-format
7430msgid "Plugin `%s' not available, cannot confirm having this address\n" 7252msgid "Plugin `%s' not available, cannot confirm having this address\n"
7431msgstr "" 7253msgstr ""
7432 7254
7433#: src/transport/gnunet-service-transport_validation.c:1185 7255#: src/transport/gnunet-service-transport_validation.c:1187
7434msgid "# failed address checks during validation" 7256msgid "# failed address checks during validation"
7435msgstr "" 7257msgstr ""
7436 7258
7437#: src/transport/gnunet-service-transport_validation.c:1188 7259#: src/transport/gnunet-service-transport_validation.c:1190
7438#, c-format 7260#, c-format
7439msgid "Address `%s' is not one of my addresses, not confirming PING\n" 7261msgid "Address `%s' is not one of my addresses, not confirming PING\n"
7440msgstr "" 7262msgstr ""
7441 7263
7442#: src/transport/gnunet-service-transport_validation.c:1196 7264#: src/transport/gnunet-service-transport_validation.c:1198
7443msgid "# successful address checks during validation" 7265msgid "# successful address checks during validation"
7444msgstr "" 7266msgstr ""
7445 7267
7446#: src/transport/gnunet-service-transport_validation.c:1209 7268#: src/transport/gnunet-service-transport_validation.c:1211
7447#, c-format 7269#, c-format
7448msgid "" 7270msgid ""
7449"Not confirming PING from peer `%s' with address `%s' since I cannot confirm " 7271"Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
7450"having this address.\n" 7272"having this address.\n"
7451msgstr "" 7273msgstr ""
7452 7274
7453#: src/transport/gnunet-service-transport_validation.c:1264 7275#: src/transport/gnunet-service-transport_validation.c:1266
7454#, c-format 7276#, c-format
7455msgid "Failed to create PONG signature for peer `%s'\n" 7277msgid "Failed to create PONG signature for peer `%s'\n"
7456msgstr "PONG-Signatur für Knoten »%s« konnte nicht erstellt werden\n" 7278msgstr "PONG-Signatur für Knoten »%s« konnte nicht erstellt werden\n"
7457 7279
7458#: src/transport/gnunet-service-transport_validation.c:1315 7280#: src/transport/gnunet-service-transport_validation.c:1317
7459msgid "# PONGs unicast via reliable transport" 7281msgid "# PONGs unicast via reliable transport"
7460msgstr "" 7282msgstr ""
7461 7283
7462#: src/transport/gnunet-service-transport_validation.c:1324 7284#: src/transport/gnunet-service-transport_validation.c:1326
7463msgid "# PONGs multicast to all available addresses" 7285msgid "# PONGs multicast to all available addresses"
7464msgstr "" 7286msgstr ""
7465 7287
7466#: src/transport/gnunet-service-transport_validation.c:1497 7288#: src/transport/gnunet-service-transport_validation.c:1499
7467msgid "# PONGs dropped, no matching pending validation" 7289msgid "# PONGs dropped, no matching pending validation"
7468msgstr "" 7290msgstr ""
7469 7291
7470#: src/transport/gnunet-service-transport_validation.c:1515 7292#: src/transport/gnunet-service-transport_validation.c:1517
7471msgid "# PONGs dropped, signature expired" 7293msgid "# PONGs dropped, signature expired"
7472msgstr "" 7294msgstr ""
7473 7295
7474#: src/transport/gnunet-service-transport_validation.c:1570 7296#: src/transport/gnunet-service-transport_validation.c:1572
7475msgid "# validations succeeded" 7297msgid "# validations succeeded"
7476msgstr "" 7298msgstr ""
7477 7299
7478#: src/transport/gnunet-service-transport_validation.c:1625 7300#: src/transport/gnunet-service-transport_validation.c:1627
7479msgid "# HELLOs given to peerinfo" 7301msgid "# HELLOs given to peerinfo"
7480msgstr "" 7302msgstr ""
7481 7303
7482#: src/transport/gnunet-transport.c:411 7304#: src/transport/gnunet-transport.c:413
7483#, c-format 7305#, c-format
7484msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" 7306msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
7485msgstr "" 7307msgstr ""
7486 7308
7487#: src/transport/gnunet-transport.c:421 7309#: src/transport/gnunet-transport.c:423
7488#, c-format 7310#, c-format
7489msgid "Received %llu bytes/s (%llu bytes in %s)\n" 7311msgid "Received %llu bytes/s (%llu bytes in %s)\n"
7490msgstr "" 7312msgstr ""
7491 7313
7492#: src/transport/gnunet-transport.c:465 7314#: src/transport/gnunet-transport.c:467
7493#, fuzzy, c-format 7315#, fuzzy, c-format
7494msgid "Failed to connect to `%s'\n" 7316msgid "Failed to connect to `%s'\n"
7495msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 7317msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
7496 7318
7497#: src/transport/gnunet-transport.c:478 7319#: src/transport/gnunet-transport.c:480
7498#, fuzzy, c-format 7320#, fuzzy, c-format
7499msgid "Failed to resolve address for peer `%s'\n" 7321msgid "Failed to resolve address for peer `%s'\n"
7500msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n" 7322msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
7501 7323
7502#: src/transport/gnunet-transport.c:492 7324#: src/transport/gnunet-transport.c:494
7503#, fuzzy 7325#, fuzzy
7504msgid "Failed to list connections, timeout occurred\n" 7326msgid "Failed to list connections, timeout occurred\n"
7505msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 7327msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
7506 7328
7507#: src/transport/gnunet-transport.c:525 7329#: src/transport/gnunet-transport.c:527
7508#, c-format 7330#, c-format
7509msgid "Transmitting %u bytes\n" 7331msgid "Transmitting %u bytes\n"
7510msgstr "" 7332msgstr ""
7511 7333
7512#: src/transport/gnunet-transport.c:559 7334#: src/transport/gnunet-transport.c:561
7513#, c-format 7335#, c-format
7514msgid "" 7336msgid ""
7515"Successfully connected to `%s', starting to send benchmark data in %u Kb " 7337"Successfully connected to `%s', starting to send benchmark data in %u Kb "
7516"blocks\n" 7338"blocks\n"
7517msgstr "" 7339msgstr ""
7518 7340
7519#: src/transport/gnunet-transport.c:590 7341#: src/transport/gnunet-transport.c:592
7520#, c-format 7342#, c-format
7521msgid "Disconnected from peer `%s' while benchmarking\n" 7343msgid "Disconnected from peer `%s' while benchmarking\n"
7522msgstr "" 7344msgstr ""
7523 7345
7524#: src/transport/gnunet-transport.c:614 src/transport/gnunet-transport.c:643 7346#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
7525#, c-format 7347#, c-format
7526msgid "%24s: %-17s %4s (%u connections in total)\n" 7348msgid "%24s: %-17s %4s (%u connections in total)\n"
7527msgstr "%24s: %-17s %4s (%u Verbindungen insgesamt)\n" 7349msgstr "%24s: %-17s %4s (%u Verbindungen insgesamt)\n"
7528 7350
7529#: src/transport/gnunet-transport.c:616 7351#: src/transport/gnunet-transport.c:618
7530msgid "Connected to" 7352msgid "Connected to"
7531msgstr "Verbunden mit" 7353msgstr "Verbunden mit"
7532 7354
7533#: src/transport/gnunet-transport.c:645 7355#: src/transport/gnunet-transport.c:647
7534msgid "Disconnected from" 7356msgid "Disconnected from"
7535msgstr "" 7357msgstr ""
7536 7358
7537#: src/transport/gnunet-transport.c:680 7359#: src/transport/gnunet-transport.c:682
7538#, fuzzy, c-format 7360#, fuzzy, c-format
7539msgid "Received %u bytes\n" 7361msgid "Received %u bytes\n"
7540msgstr "Dateien aus dem GNUnet herunterladen." 7362msgstr "Dateien aus dem GNUnet herunterladen."
7541 7363
7542#: src/transport/gnunet-transport.c:717 7364#: src/transport/gnunet-transport.c:719
7543#, c-format 7365#, c-format
7544msgid "Peer `%s': %s %s in state `%s' until %s\n" 7366msgid "Peer `%s': %s %s in state `%s' until %s\n"
7545msgstr "" 7367msgstr ""
7546 7368
7547#: src/transport/gnunet-transport.c:729 7369#: src/transport/gnunet-transport.c:731
7548#, c-format 7370#, c-format
7549msgid "Peer `%s': %s %s\n" 7371msgid "Peer `%s': %s %s\n"
7550msgstr "Knoten »%s«: %s %s\n" 7372msgstr "Knoten »%s«: %s %s\n"
7551 7373
7552#: src/transport/gnunet-transport.c:1142 7374#: src/transport/gnunet-transport.c:1144
7553#, fuzzy 7375#, fuzzy
7554msgid "Monitor disconnected from transport service. Reconnecting.\n" 7376msgid "Monitor disconnected from transport service. Reconnecting.\n"
7555msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n" 7377msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n"
7556 7378
7557#: src/transport/gnunet-transport.c:1249 7379#: src/transport/gnunet-transport.c:1251
7558#, c-format 7380#, c-format
7559msgid "" 7381msgid ""
7560"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, " 7382"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
7561"%s, %s %s\n" 7383"%s, %s %s\n"
7562msgstr "" 7384msgstr ""
7563 7385
7564#: src/transport/gnunet-transport.c:1262 7386#: src/transport/gnunet-transport.c:1264
7565#, c-format 7387#, c-format
7566msgid "" 7388msgid ""
7567"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n" 7389"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
7568msgstr "" 7390msgstr ""
7569 7391
7570#: src/transport/gnunet-transport.c:1292 7392#: src/transport/gnunet-transport.c:1294
7571#, fuzzy 7393#, fuzzy
7572msgid "Failed to connect to transport service for disconnection\n" 7394msgid "Failed to connect to transport service for disconnection\n"
7573msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n" 7395msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n"
7574 7396
7575#: src/transport/gnunet-transport.c:1298 7397#: src/transport/gnunet-transport.c:1300
7576msgid "Blacklisting request in place, stop with CTRL-C\n" 7398msgid "Blacklisting request in place, stop with CTRL-C\n"
7577msgstr "" 7399msgstr ""
7578 7400
7579#: src/transport/gnunet-transport.c:1323 src/transport/gnunet-transport.c:1353 7401#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
7580#: src/transport/gnunet-transport.c:1406 7402#: src/transport/gnunet-transport.c:1408
7581msgid "Failed to connect to transport service\n" 7403msgid "Failed to connect to transport service\n"
7582msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n" 7404msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n"
7583 7405
7584#: src/transport/gnunet-transport.c:1360 7406#: src/transport/gnunet-transport.c:1362
7585msgid "Starting to receive benchmark data\n" 7407msgid "Starting to receive benchmark data\n"
7586msgstr "" 7408msgstr ""
7587 7409
7588#: src/transport/gnunet-transport.c:1431 7410#: src/transport/gnunet-transport.c:1433
7589#, fuzzy 7411#, fuzzy
7590msgid "print information for all peers (instead of only connected peers)" 7412msgid "print information for all peers (instead of only connected peers)"
7591msgstr "Informationen über verbundene Knoten ausgeben." 7413msgstr "Informationen über verbundene Knoten ausgeben."
7592 7414
7593#: src/transport/gnunet-transport.c:1435 7415#: src/transport/gnunet-transport.c:1437
7594msgid "measure how fast we are receiving data from all peers (until CTRL-C)" 7416msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
7595msgstr "" 7417msgstr ""
7596 7418
7597#: src/transport/gnunet-transport.c:1439 7419#: src/transport/gnunet-transport.c:1441
7598msgid "disconnect from a peer" 7420msgid "disconnect from a peer"
7599msgstr "Verbindung zu einem Knoten trennen" 7421msgstr "Verbindung zu einem Knoten trennen"
7600 7422
7601#: src/transport/gnunet-transport.c:1443 7423#: src/transport/gnunet-transport.c:1445
7602msgid "provide information about all current connections (once)" 7424msgid "provide information about all current connections (once)"
7603msgstr "" 7425msgstr ""
7604 7426
7605#: src/transport/gnunet-transport.c:1451 7427#: src/transport/gnunet-transport.c:1453
7606msgid "" 7428msgid ""
7607"provide information about all connects and disconnect events (continuously)" 7429"provide information about all connects and disconnect events (continuously)"
7608msgstr "" 7430msgstr ""
7609 7431
7610#: src/transport/gnunet-transport.c:1455 7432#: src/transport/gnunet-transport.c:1457
7611msgid "do not resolve hostnames" 7433msgid "do not resolve hostnames"
7612msgstr "Keine Rechnernamen auflösen" 7434msgstr "Keine Rechnernamen auflösen"
7613 7435
7614#: src/transport/gnunet-transport.c:1460 7436#: src/transport/gnunet-transport.c:1462
7615#: src/transport/gnunet-transport-profiler.c:639 7437#: src/transport/gnunet-transport-profiler.c:641
7616msgid "peer identity" 7438msgid "peer identity"
7617msgstr "" 7439msgstr ""
7618 7440
7619#: src/transport/gnunet-transport.c:1464 7441#: src/transport/gnunet-transport.c:1466
7620msgid "monitor plugin sessions" 7442msgid "monitor plugin sessions"
7621msgstr "" 7443msgstr ""
7622 7444
7623#: src/transport/gnunet-transport.c:1469 7445#: src/transport/gnunet-transport.c:1471
7624msgid "send data for benchmarking to the other peer (until CTRL-C)" 7446msgid "send data for benchmarking to the other peer (until CTRL-C)"
7625msgstr "" 7447msgstr ""
7626 7448
7627#: src/transport/gnunet-transport.c:1480 7449#: src/transport/gnunet-transport.c:1482
7628#: src/transport/gnunet-transport-profiler.c:650 7450#: src/transport/gnunet-transport-profiler.c:652
7629msgid "Direct access to transport service." 7451msgid "Direct access to transport service."
7630msgstr "Direkter Zugriff auf den Transportdienst" 7452msgstr "Direkter Zugriff auf den Transportdienst"
7631 7453
7632#: src/transport/gnunet-transport-profiler.c:217 7454#: src/transport/gnunet-transport-profiler.c:219
7633#, c-format 7455#, c-format
7634msgid "%llu B in %llu ms == %.2f KB/s!\n" 7456msgid "%llu B in %llu ms == %.2f KB/s!\n"
7635msgstr "" 7457msgstr ""
7636 7458
7637#: src/transport/gnunet-transport-profiler.c:615 7459#: src/transport/gnunet-transport-profiler.c:617
7638msgid "send data to peer" 7460msgid "send data to peer"
7639msgstr "" 7461msgstr ""
7640 7462
7641#: src/transport/gnunet-transport-profiler.c:619 7463#: src/transport/gnunet-transport-profiler.c:621
7642#, fuzzy 7464#, fuzzy
7643msgid "receive data from peer" 7465msgid "receive data from peer"
7644msgstr "# Bytes des Typs %d empfangen" 7466msgstr "# Bytes des Typs %d empfangen"
7645 7467
7646#: src/transport/gnunet-transport-profiler.c:624 7468#: src/transport/gnunet-transport-profiler.c:626
7647msgid "iterations" 7469msgid "iterations"
7648msgstr "" 7470msgstr ""
7649 7471
7650#: src/transport/gnunet-transport-profiler.c:629 7472#: src/transport/gnunet-transport-profiler.c:631
7651#, fuzzy 7473#, fuzzy
7652msgid "number of messages to send" 7474msgid "number of messages to send"
7653msgstr "Anzahl an Durchläufen" 7475msgstr "Anzahl an Durchläufen"
7654 7476
7655#: src/transport/gnunet-transport-profiler.c:634 7477#: src/transport/gnunet-transport-profiler.c:636
7656msgid "message size to use" 7478msgid "message size to use"
7657msgstr "" 7479msgstr ""
7658 7480
7659#: src/transport/plugin_transport_http_client.c:1472 7481#: src/transport/plugin_transport_http_client.c:1474
7660#: src/transport/plugin_transport_http_server.c:2310 7482#: src/transport/plugin_transport_http_server.c:2312
7661#: src/transport/plugin_transport_http_server.c:3524 7483#: src/transport/plugin_transport_http_server.c:3530
7662#: src/transport/plugin_transport_tcp.c:3889 7484#: src/transport/plugin_transport_tcp.c:3895
7663#: src/transport/plugin_transport_tcp.c:3896 7485#: src/transport/plugin_transport_tcp.c:3902
7664#: src/transport/plugin_transport_xt.c:3897 7486#: src/transport/plugin_transport_xt.c:3899
7665#: src/transport/plugin_transport_xt.c:3904 7487#: src/transport/plugin_transport_xt.c:3906
7666msgid "TCP_STEALTH not supported on this platform.\n" 7488msgid "TCP_STEALTH not supported on this platform.\n"
7667msgstr "" 7489msgstr ""
7668 7490
7669#: src/transport/plugin_transport_http_client.c:2113 7491#: src/transport/plugin_transport_http_client.c:2115
7670#, c-format 7492#, c-format
7671msgid "Could not initialize curl multi handle, failed to start %s plugin!\n" 7493msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
7672msgstr "" 7494msgstr ""
7673 7495
7674#: src/transport/plugin_transport_http_client.c:2162 7496#: src/transport/plugin_transport_http_client.c:2164
7675#: src/transport/plugin_transport_http_server.c:3239 7497#: src/transport/plugin_transport_http_server.c:3245
7676#, fuzzy, c-format 7498#, fuzzy, c-format
7677msgid "Shutting down plugin `%s'\n" 7499msgid "Shutting down plugin `%s'\n"
7678msgstr "Collection `%s' begonnen.\n" 7500msgstr "Collection `%s' begonnen.\n"
7679 7501
7680#: src/transport/plugin_transport_http_client.c:2179 7502#: src/transport/plugin_transport_http_client.c:2181
7681#: src/transport/plugin_transport_http_server.c:3309 7503#: src/transport/plugin_transport_http_server.c:3315
7682#, fuzzy, c-format 7504#, fuzzy, c-format
7683msgid "Shutdown for plugin `%s' complete\n" 7505msgid "Shutdown for plugin `%s' complete\n"
7684msgstr "GNUnet wurde erfolgreich heruntergefahren.\n" 7506msgstr "GNUnet wurde erfolgreich heruntergefahren.\n"
7685 7507
7686#: src/transport/plugin_transport_http_client.c:2213 7508#: src/transport/plugin_transport_http_client.c:2215
7687#, fuzzy, c-format 7509#, fuzzy, c-format
7688msgid "Maximum number of requests is %u\n" 7510msgid "Maximum number of requests is %u\n"
7689msgstr "Maximale Anzahl der Verbindungen ist %u\n" 7511msgstr "Maximale Anzahl der Verbindungen ist %u\n"
7690 7512
7691#: src/transport/plugin_transport_http_server.c:1754 7513#: src/transport/plugin_transport_http_server.c:1756
7692#, c-format 7514#, c-format
7693msgid "" 7515msgid ""
7694"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data " 7516"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data "
7695"size %u\n" 7517"size %u\n"
7696msgstr "" 7518msgstr ""
7697 7519
7698#: src/transport/plugin_transport_http_server.c:2026 7520#: src/transport/plugin_transport_http_server.c:2028
7699#, c-format 7521#, c-format
7700msgid "Accepting connection (%u of %u) from `%s'\n" 7522msgid "Accepting connection (%u of %u) from `%s'\n"
7701msgstr "" 7523msgstr ""
7702 7524
7703#: src/transport/plugin_transport_http_server.c:2034 7525#: src/transport/plugin_transport_http_server.c:2036
7704#, c-format 7526#, c-format
7705msgid "" 7527msgid ""
7706"Server reached maximum number connections (%u), rejecting new connection\n" 7528"Server reached maximum number connections (%u), rejecting new connection\n"
7707msgstr "" 7529msgstr ""
7708 7530
7709#: src/transport/plugin_transport_http_server.c:2184 7531#: src/transport/plugin_transport_http_server.c:2186
7710msgid "" 7532msgid ""
7711"Could not create a new TLS certificate, program `gnunet-transport-" 7533"Could not create a new TLS certificate, program `gnunet-transport-"
7712"certificate-creation' could not be started!\n" 7534"certificate-creation' could not be started!\n"
7713msgstr "" 7535msgstr ""
7714 7536
7715#: src/transport/plugin_transport_http_server.c:2207 7537#: src/transport/plugin_transport_http_server.c:2209
7716#, c-format 7538#, c-format
7717msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n" 7539msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n"
7718msgstr "" 7540msgstr ""
7719 7541
7720#: src/transport/plugin_transport_http_server.c:2336 7542#: src/transport/plugin_transport_http_server.c:2338
7721msgid "Could not load or create server certificate! Loading plugin failed!\n" 7543msgid "Could not load or create server certificate! Loading plugin failed!\n"
7722msgstr "" 7544msgstr ""
7723 7545
7724#: src/transport/plugin_transport_http_server.c:2648 7546#: src/transport/plugin_transport_http_server.c:2654
7725msgid "Require valid port number for service in configuration!\n" 7547msgid "Require valid port number for service in configuration!\n"
7726msgstr "" 7548msgstr ""
7727 7549
7728#: src/transport/plugin_transport_http_server.c:2813 7550#: src/transport/plugin_transport_http_server.c:2819
7729#, c-format 7551#, c-format
7730msgid "Found %u addresses to report to NAT service\n" 7552msgid "Found %u addresses to report to NAT service\n"
7731msgstr "" 7553msgstr ""
7732 7554
7733#: src/transport/plugin_transport_http_server.c:2899 7555#: src/transport/plugin_transport_http_server.c:2905
7734#: src/transport/plugin_transport_udp.c:3621 7556#: src/transport/plugin_transport_udp.c:3627
7735#: src/transport/plugin_transport_xu.c:2047 7557#: src/transport/plugin_transport_xu.c:2049
7736msgid "Disabling IPv6 since it is not supported on this system!\n" 7558msgid "Disabling IPv6 since it is not supported on this system!\n"
7737msgstr "" 7559msgstr ""
7738 7560
7739#: src/transport/plugin_transport_http_server.c:3005 7561#: src/transport/plugin_transport_http_server.c:3011
7740#, c-format 7562#, c-format
7741msgid "IPv4 support is %s\n" 7563msgid "IPv4 support is %s\n"
7742msgstr "" 7564msgstr ""
7743 7565
7744#: src/transport/plugin_transport_http_server.c:3020 7566#: src/transport/plugin_transport_http_server.c:3026
7745#, c-format 7567#, c-format
7746msgid "IPv6 support is %s\n" 7568msgid "IPv6 support is %s\n"
7747msgstr "" 7569msgstr ""
7748 7570
7749#: src/transport/plugin_transport_http_server.c:3026 7571#: src/transport/plugin_transport_http_server.c:3032
7750msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n" 7572msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n"
7751msgstr "" 7573msgstr ""
7752"Weder IPv4 noch IPv6 sind aktiviert! Bearbeiten Sie die Konfiguration\n" 7574"Weder IPv4 noch IPv6 sind aktiviert! Bearbeiten Sie die Konfiguration\n"
7753 7575
7754#: src/transport/plugin_transport_http_server.c:3037 7576#: src/transport/plugin_transport_http_server.c:3043
7755msgid "Port is required! Fix in configuration\n" 7577msgid "Port is required! Fix in configuration\n"
7756msgstr "Port ist erforderlich! Bearbeiten Sie die Konfiguration\n" 7578msgstr "Port ist erforderlich! Bearbeiten Sie die Konfiguration\n"
7757 7579
7758#: src/transport/plugin_transport_http_server.c:3043 7580#: src/transport/plugin_transport_http_server.c:3049
7759#, c-format 7581#, c-format
7760msgid "Using port %u\n" 7582msgid "Using port %u\n"
7761msgstr "Port %u wird verwendet\n" 7583msgstr "Port %u wird verwendet\n"
7762 7584
7763#: src/transport/plugin_transport_http_server.c:3062 7585#: src/transport/plugin_transport_http_server.c:3068
7764#, c-format 7586#, c-format
7765msgid "Specific IPv4 address `%s' in configuration file is invalid!\n" 7587msgid "Specific IPv4 address `%s' in configuration file is invalid!\n"
7766msgstr "" 7588msgstr ""
7767 7589
7768#: src/transport/plugin_transport_http_server.c:3097 7590#: src/transport/plugin_transport_http_server.c:3103
7769#, c-format 7591#, c-format
7770msgid "Specific IPv6 address `%s' in configuration file is invalid!\n" 7592msgid "Specific IPv6 address `%s' in configuration file is invalid!\n"
7771msgstr "" 7593msgstr ""
7772 7594
7773#: src/transport/plugin_transport_http_server.c:3172 7595#: src/transport/plugin_transport_http_server.c:3178
7774#, c-format 7596#, c-format
7775msgid "Using external hostname `%s'\n" 7597msgid "Using external hostname `%s'\n"
7776msgstr "" 7598msgstr ""
7777 7599
7778#: src/transport/plugin_transport_http_server.c:3193 7600#: src/transport/plugin_transport_http_server.c:3199
7779#, fuzzy, c-format 7601#, fuzzy, c-format
7780msgid "Notifying transport only about hostname `%s'\n" 7602msgid "Notifying transport only about hostname `%s'\n"
7781msgstr "Teste Transport(e) %s\n" 7603msgstr "Teste Transport(e) %s\n"
7782 7604
7783#: src/transport/plugin_transport_http_server.c:3210 7605#: src/transport/plugin_transport_http_server.c:3216
7784#, c-format 7606#, c-format
7785msgid "Maximum number of connections is %u\n" 7607msgid "Maximum number of connections is %u\n"
7786msgstr "Maximale Anzahl der Verbindungen ist %u\n" 7608msgstr "Maximale Anzahl der Verbindungen ist %u\n"
7787 7609
7788#: src/transport/plugin_transport_http_server.c:3536 7610#: src/transport/plugin_transport_http_server.c:3542
7789msgid "Unable to compile URL regex\n" 7611msgid "Unable to compile URL regex\n"
7790msgstr "" 7612msgstr ""
7791 7613
7792#: src/transport/plugin_transport_smtp.c:221 7614#: src/transport/plugin_transport_smtp.c:223
7793#, fuzzy, c-format 7615#, fuzzy, c-format
7794msgid "Received malformed message via %s. Ignored.\n" 7616msgid "Received malformed message via %s. Ignored.\n"
7795msgstr "" 7617msgstr ""
7796"Es wurde eine ungültige Nachricht per SMTP empfangen (ungültige Größe).\n" 7618"Es wurde eine ungültige Nachricht per SMTP empfangen (ungültige Größe).\n"
7797 7619
7798#: src/transport/plugin_transport_smtp.c:308 7620#: src/transport/plugin_transport_smtp.c:310
7799#, fuzzy 7621#, fuzzy
7800msgid "SMTP filter string to invalid, lacks ': '\n" 7622msgid "SMTP filter string to invalid, lacks ': '\n"
7801msgstr "SMTP Filterstring zu lang, wurde auf `%s' abgeschnitten\n" 7623msgstr "SMTP Filterstring zu lang, wurde auf `%s' abgeschnitten\n"
7802 7624
7803#: src/transport/plugin_transport_smtp.c:317 7625#: src/transport/plugin_transport_smtp.c:319
7804#, c-format 7626#, c-format
7805msgid "SMTP filter string to long, capped to `%s'\n" 7627msgid "SMTP filter string to long, capped to `%s'\n"
7806msgstr "SMTP-Filterzeichenkette zu lang, wurde auf »%s« abgeschnitten\n" 7628msgstr "SMTP-Filterzeichenkette zu lang, wurde auf »%s« abgeschnitten\n"
7807 7629
7808#: src/transport/plugin_transport_smtp.c:412 7630#: src/transport/plugin_transport_smtp.c:414
7809#: src/transport/plugin_transport_smtp.c:422 7631#: src/transport/plugin_transport_smtp.c:424
7810#: src/transport/plugin_transport_smtp.c:435 7632#: src/transport/plugin_transport_smtp.c:437
7811#: src/transport/plugin_transport_smtp.c:454 7633#: src/transport/plugin_transport_smtp.c:456
7812#: src/transport/plugin_transport_smtp.c:477 7634#: src/transport/plugin_transport_smtp.c:479
7813#: src/transport/plugin_transport_smtp.c:485 7635#: src/transport/plugin_transport_smtp.c:487
7814#: src/transport/plugin_transport_smtp.c:498 7636#: src/transport/plugin_transport_smtp.c:500
7815#: src/transport/plugin_transport_smtp.c:509 7637#: src/transport/plugin_transport_smtp.c:511
7816#, c-format 7638#, c-format
7817msgid "SMTP: `%s' failed: %s.\n" 7639msgid "SMTP: `%s' failed: %s.\n"
7818msgstr "SMTP: »%s« fehlgeschlagen: %s.\n" 7640msgstr "SMTP: »%s« fehlgeschlagen: %s.\n"
7819 7641
7820#: src/transport/plugin_transport_smtp.c:650 7642#: src/transport/plugin_transport_smtp.c:652
7821msgid "No email-address specified, can not start SMTP transport.\n" 7643msgid "No email-address specified, can not start SMTP transport.\n"
7822msgstr "" 7644msgstr ""
7823"Keine E-Mail-Adresse angegeben, SMTP-Übertragung kann nicht gestartet " 7645"Keine E-Mail-Adresse angegeben, SMTP-Übertragung kann nicht gestartet "
7824"werden.\n" 7646"werden.\n"
7825 7647
7826#: src/transport/plugin_transport_smtp.c:662 7648#: src/transport/plugin_transport_smtp.c:664
7827msgid "# bytes received via SMTP" 7649msgid "# bytes received via SMTP"
7828msgstr "# Bytes empfangen über SMTP" 7650msgstr "# Bytes empfangen über SMTP"
7829 7651
7830#: src/transport/plugin_transport_smtp.c:663 7652#: src/transport/plugin_transport_smtp.c:665
7831msgid "# bytes sent via SMTP" 7653msgid "# bytes sent via SMTP"
7832msgstr "# Bytes gesendet über SMTP" 7654msgstr "# Bytes gesendet über SMTP"
7833 7655
7834#: src/transport/plugin_transport_smtp.c:665 7656#: src/transport/plugin_transport_smtp.c:667
7835msgid "# bytes dropped by SMTP (outgoing)" 7657msgid "# bytes dropped by SMTP (outgoing)"
7836msgstr "# Bytes verworfen von SMTP (ausgehend)" 7658msgstr "# Bytes verworfen von SMTP (ausgehend)"
7837 7659
7838#: src/transport/plugin_transport_tcp.c:1545 7660#: src/transport/plugin_transport_tcp.c:1551
7839#: src/transport/plugin_transport_tcp.c:2871 7661#: src/transport/plugin_transport_tcp.c:2877
7840#: src/transport/plugin_transport_xt.c:1551 7662#: src/transport/plugin_transport_xt.c:1553
7841#: src/transport/plugin_transport_xt.c:2877 7663#: src/transport/plugin_transport_xt.c:2879
7842#, c-format 7664#, c-format
7843msgid "Unexpected address length: %u bytes\n" 7665msgid "Unexpected address length: %u bytes\n"
7844msgstr "" 7666msgstr ""
7845 7667
7846#: src/transport/plugin_transport_tcp.c:1728 7668#: src/transport/plugin_transport_tcp.c:1734
7847#: src/transport/plugin_transport_tcp.c:1952 7669#: src/transport/plugin_transport_tcp.c:1958
7848#: src/transport/plugin_transport_tcp.c:3135 7670#: src/transport/plugin_transport_tcp.c:3141
7849#: src/transport/plugin_transport_tcp.c:4012 7671#: src/transport/plugin_transport_tcp.c:4018
7850#: src/transport/plugin_transport_xt.c:1734 7672#: src/transport/plugin_transport_xt.c:1736
7851#: src/transport/plugin_transport_xt.c:1958 7673#: src/transport/plugin_transport_xt.c:1960
7852#: src/transport/plugin_transport_xt.c:3141 7674#: src/transport/plugin_transport_xt.c:3143
7853msgid "# TCP sessions active" 7675msgid "# TCP sessions active"
7854msgstr "# aktive TCP-Sitzungen" 7676msgstr "# aktive TCP-Sitzungen"
7855 7677
7856#: src/transport/plugin_transport_tcp.c:1770 7678#: src/transport/plugin_transport_tcp.c:1776
7857#: src/transport/plugin_transport_tcp.c:1934 7679#: src/transport/plugin_transport_tcp.c:1940
7858#: src/transport/plugin_transport_tcp.c:2058 7680#: src/transport/plugin_transport_tcp.c:2064
7859#: src/transport/plugin_transport_tcp.c:2131 7681#: src/transport/plugin_transport_tcp.c:2137
7860#: src/transport/plugin_transport_tcp.c:2231 7682#: src/transport/plugin_transport_tcp.c:2237
7861#: src/transport/plugin_transport_tcp.c:2256 7683#: src/transport/plugin_transport_tcp.c:2262
7862#: src/transport/plugin_transport_xt.c:1776 7684#: src/transport/plugin_transport_xt.c:1778
7863#: src/transport/plugin_transport_xt.c:1940 7685#: src/transport/plugin_transport_xt.c:1942
7864#: src/transport/plugin_transport_xt.c:2064 7686#: src/transport/plugin_transport_xt.c:2066
7865#: src/transport/plugin_transport_xt.c:2137 7687#: src/transport/plugin_transport_xt.c:2139
7866#: src/transport/plugin_transport_xt.c:2237 7688#: src/transport/plugin_transport_xt.c:2239
7867#: src/transport/plugin_transport_xt.c:2262 7689#: src/transport/plugin_transport_xt.c:2264
7868msgid "# bytes currently in TCP buffers" 7690msgid "# bytes currently in TCP buffers"
7869msgstr "# Bytes derzeit in TCP-Puffern" 7691msgstr "# Bytes derzeit in TCP-Puffern"
7870 7692
7871#: src/transport/plugin_transport_tcp.c:1773 7693#: src/transport/plugin_transport_tcp.c:1779
7872#: src/transport/plugin_transport_xt.c:1779 7694#: src/transport/plugin_transport_xt.c:1781
7873msgid "# bytes discarded by TCP (disconnect)" 7695msgid "# bytes discarded by TCP (disconnect)"
7874msgstr "# Bytes verworfen von TCP (unterbrochen)" 7696msgstr "# Bytes verworfen von TCP (unterbrochen)"
7875 7697
7876#: src/transport/plugin_transport_tcp.c:2061 7698#: src/transport/plugin_transport_tcp.c:2067
7877#: src/transport/plugin_transport_xt.c:2067 7699#: src/transport/plugin_transport_xt.c:2069
7878msgid "# bytes discarded by TCP (timeout)" 7700msgid "# bytes discarded by TCP (timeout)"
7879msgstr "# Bytes verworfen von TCP (Zeitüberschreitung)" 7701msgstr "# Bytes verworfen von TCP (Zeitüberschreitung)"
7880 7702
7881#: src/transport/plugin_transport_tcp.c:2135 7703#: src/transport/plugin_transport_tcp.c:2141
7882#: src/transport/plugin_transport_xt.c:2141 7704#: src/transport/plugin_transport_xt.c:2143
7883msgid "# bytes transmitted via TCP" 7705msgid "# bytes transmitted via TCP"
7884msgstr "# Bytes über TCP übertragen" 7706msgstr "# Bytes über TCP übertragen"
7885 7707
7886#: src/transport/plugin_transport_tcp.c:2533 7708#: src/transport/plugin_transport_tcp.c:2539
7887#: src/transport/plugin_transport_xt.c:2539 7709#: src/transport/plugin_transport_xt.c:2541
7888msgid "# requests to create session with invalid address" 7710msgid "# requests to create session with invalid address"
7889msgstr "" 7711msgstr ""
7890 7712
7891#: src/transport/plugin_transport_tcp.c:2709 7713#: src/transport/plugin_transport_tcp.c:2715
7892#: src/transport/plugin_transport_xt.c:2715 7714#: src/transport/plugin_transport_xt.c:2717
7893msgid "# transport-service disconnect requests for TCP" 7715msgid "# transport-service disconnect requests for TCP"
7894msgstr "" 7716msgstr ""
7895 7717
7896#: src/transport/plugin_transport_tcp.c:3201 7718#: src/transport/plugin_transport_tcp.c:3207
7897#: src/transport/plugin_transport_xt.c:3207 7719#: src/transport/plugin_transport_xt.c:3209
7898#, fuzzy 7720#, fuzzy
7899msgid "# TCP WELCOME messages received" 7721msgid "# TCP WELCOME messages received"
7900msgstr "# verschlüsselter PONG Nachrichten empfangen" 7722msgstr "# verschlüsselter PONG Nachrichten empfangen"
7901 7723
7902#: src/transport/plugin_transport_tcp.c:3407 7724#: src/transport/plugin_transport_tcp.c:3413
7903#: src/transport/plugin_transport_xt.c:3413 7725#: src/transport/plugin_transport_xt.c:3415
7904msgid "# bytes received via TCP" 7726msgid "# bytes received via TCP"
7905msgstr "# Bytes empfangen über TCP" 7727msgstr "# Bytes empfangen über TCP"
7906 7728
7907#: src/transport/plugin_transport_tcp.c:3458 7729#: src/transport/plugin_transport_tcp.c:3464
7908#: src/transport/plugin_transport_tcp.c:3516 7730#: src/transport/plugin_transport_tcp.c:3522
7909#: src/transport/plugin_transport_xt.c:3464 7731#: src/transport/plugin_transport_xt.c:3466
7910#: src/transport/plugin_transport_xt.c:3522 7732#: src/transport/plugin_transport_xt.c:3524
7911#, fuzzy 7733#, fuzzy
7912msgid "# TCP server connections active" 7734msgid "# TCP server connections active"
7913msgstr " Verbindung fehlgeschlagen\n" 7735msgstr " Verbindung fehlgeschlagen\n"
7914 7736
7915#: src/transport/plugin_transport_tcp.c:3462 7737#: src/transport/plugin_transport_tcp.c:3468
7916#: src/transport/plugin_transport_xt.c:3468 7738#: src/transport/plugin_transport_xt.c:3470
7917#, fuzzy 7739#, fuzzy
7918msgid "# TCP server connect events" 7740msgid "# TCP server connect events"
7919msgstr "# verbundener Knoten" 7741msgstr "# verbundener Knoten"
7920 7742
7921#: src/transport/plugin_transport_tcp.c:3468 7743#: src/transport/plugin_transport_tcp.c:3474
7922#: src/transport/plugin_transport_xt.c:3474 7744#: src/transport/plugin_transport_xt.c:3476
7923msgid "TCP connection limit reached, suspending server\n" 7745msgid "TCP connection limit reached, suspending server\n"
7924msgstr "" 7746msgstr ""
7925 7747
7926#: src/transport/plugin_transport_tcp.c:3470 7748#: src/transport/plugin_transport_tcp.c:3476
7927#: src/transport/plugin_transport_xt.c:3476 7749#: src/transport/plugin_transport_xt.c:3478
7928msgid "# TCP service suspended" 7750msgid "# TCP service suspended"
7929msgstr "" 7751msgstr ""
7930 7752
7931#: src/transport/plugin_transport_tcp.c:3510 7753#: src/transport/plugin_transport_tcp.c:3516
7932#: src/transport/plugin_transport_xt.c:3516 7754#: src/transport/plugin_transport_xt.c:3518
7933msgid "# TCP service resumed" 7755msgid "# TCP service resumed"
7934msgstr "" 7756msgstr ""
7935 7757
7936#: src/transport/plugin_transport_tcp.c:3520 7758#: src/transport/plugin_transport_tcp.c:3526
7937#: src/transport/plugin_transport_xt.c:3526 7759#: src/transport/plugin_transport_xt.c:3528
7938msgid "# network-level TCP disconnect events" 7760msgid "# network-level TCP disconnect events"
7939msgstr "" 7761msgstr ""
7940 7762
7941#: src/transport/plugin_transport_tcp.c:3839 7763#: src/transport/plugin_transport_tcp.c:3845
7942#: src/transport/plugin_transport_xt.c:3847 7764#: src/transport/plugin_transport_xt.c:3849
7943msgid "Failed to start service.\n" 7765msgid "Failed to start service.\n"
7944msgstr "Fehler beim Starten des Dienstes.\n" 7766msgstr "Fehler beim Starten des Dienstes.\n"
7945 7767
7946#: src/transport/plugin_transport_tcp.c:4000 7768#: src/transport/plugin_transport_tcp.c:4006
7947#, c-format 7769#, c-format
7948msgid "TCP transport listening on port %llu\n" 7770msgid "TCP transport listening on port %llu\n"
7949msgstr "TCP-Transportdienst wartet auf Port %llu\n" 7771msgstr "TCP-Transportdienst wartet auf Port %llu\n"
7950 7772
7951#: src/transport/plugin_transport_tcp.c:4004 7773#: src/transport/plugin_transport_tcp.c:4010
7952msgid "TCP transport not listening on any port (client only)\n" 7774msgid "TCP transport not listening on any port (client only)\n"
7953msgstr "" 7775msgstr ""
7954 7776
7955#: src/transport/plugin_transport_tcp.c:4008 7777#: src/transport/plugin_transport_tcp.c:4014
7956#, c-format 7778#, c-format
7957msgid "TCP transport advertises itself as being on port %llu\n" 7779msgid "TCP transport advertises itself as being on port %llu\n"
7958msgstr "" 7780msgstr ""
7959 7781
7960#: src/transport/plugin_transport_udp_broadcasting.c:166 7782#: src/transport/plugin_transport_udp_broadcasting.c:168
7961#, fuzzy 7783#, fuzzy
7962msgid "# Multicast HELLO beacons received via UDP" 7784msgid "# Multicast HELLO beacons received via UDP"
7963msgstr "# Bytes empfangen über TCP" 7785msgstr "# Bytes empfangen über TCP"
7964 7786
7965#: src/transport/plugin_transport_udp_broadcasting.c:546 7787#: src/transport/plugin_transport_udp_broadcasting.c:548
7966msgid "" 7788msgid ""
7967"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" 7789"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
7968msgstr "" 7790msgstr ""
7969 7791
7970#: src/transport/plugin_transport_udp_broadcasting.c:563 7792#: src/transport/plugin_transport_udp_broadcasting.c:565
7971#, fuzzy, c-format 7793#, fuzzy, c-format
7972msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" 7794msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
7973msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n" 7795msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
7974 7796
7975#: src/transport/plugin_transport_udp.c:3365 7797#: src/transport/plugin_transport_udp.c:3371
7976#, c-format 7798#, c-format
7977msgid "" 7799msgid ""
7978"UDP could not transmit message to `%s': Network seems down, please check " 7800"UDP could not transmit message to `%s': Network seems down, please check "
7979"your network configuration\n" 7801"your network configuration\n"
7980msgstr "" 7802msgstr ""
7981 7803
7982#: src/transport/plugin_transport_udp.c:3379 7804#: src/transport/plugin_transport_udp.c:3385
7983msgid "" 7805msgid ""
7984"UDP could not transmit IPv6 message! Please check your network configuration " 7806"UDP could not transmit IPv6 message! Please check your network configuration "
7985"and disable IPv6 if your connection does not have a global IPv6 address\n" 7807"and disable IPv6 if your connection does not have a global IPv6 address\n"
7986msgstr "" 7808msgstr ""
7987 7809
7988#: src/transport/plugin_transport_udp.c:3697 7810#: src/transport/plugin_transport_udp.c:3703
7989#: src/transport/plugin_transport_udp.c:3796 7811#: src/transport/plugin_transport_udp.c:3802
7990#, fuzzy, c-format 7812#, fuzzy, c-format
7991msgid "Failed to bind UDP socket to %s: %s\n" 7813msgid "Failed to bind UDP socket to %s: %s\n"
7992msgstr "UDP-Sockets können nicht geöffnet werden\n" 7814msgstr "UDP-Sockets können nicht geöffnet werden\n"
7993 7815
7994#: src/transport/plugin_transport_udp.c:3715 7816#: src/transport/plugin_transport_udp.c:3721
7995#: src/transport/plugin_transport_xu.c:2141 7817#: src/transport/plugin_transport_xu.c:2143
7996msgid "Disabling IPv4 since it is not supported on this system!\n" 7818msgid "Disabling IPv4 since it is not supported on this system!\n"
7997msgstr "" 7819msgstr ""
7998 7820
7999#: src/transport/plugin_transport_udp.c:3806 7821#: src/transport/plugin_transport_udp.c:3812
8000msgid "Failed to open UDP sockets\n" 7822msgid "Failed to open UDP sockets\n"
8001msgstr "UDP-Sockets können nicht geöffnet werden\n" 7823msgstr "UDP-Sockets können nicht geöffnet werden\n"
8002 7824
8003#: src/transport/plugin_transport_udp.c:3877 7825#: src/transport/plugin_transport_udp.c:3883
8004#: src/transport/plugin_transport_udp.c:3891 7826#: src/transport/plugin_transport_udp.c:3897
8005#: src/transport/plugin_transport_xu.c:2299 7827#: src/transport/plugin_transport_xu.c:2301
8006#: src/transport/plugin_transport_xu.c:2313 7828#: src/transport/plugin_transport_xu.c:2315
8007msgid "must be in [0,65535]" 7829msgid "must be in [0,65535]"
8008msgstr "" 7830msgstr ""
8009 7831
8010#: src/transport/plugin_transport_udp.c:3923 7832#: src/transport/plugin_transport_udp.c:3929
8011#: src/transport/plugin_transport_xu.c:2345 7833#: src/transport/plugin_transport_xu.c:2347
8012#, fuzzy 7834#, fuzzy
8013msgid "must be valid IPv4 address" 7835msgid "must be valid IPv4 address"
8014msgstr "»%s« ist keine gültige IP-Adresse.\n" 7836msgstr "»%s« ist keine gültige IP-Adresse.\n"
8015 7837
8016#: src/transport/plugin_transport_udp.c:3950 7838#: src/transport/plugin_transport_udp.c:3956
8017#: src/transport/plugin_transport_xu.c:2372 7839#: src/transport/plugin_transport_xu.c:2374
8018#, fuzzy 7840#, fuzzy
8019msgid "must be valid IPv6 address" 7841msgid "must be valid IPv6 address"
8020msgstr "»%s« ist keine gültige IP-Adresse.\n" 7842msgstr "»%s« ist keine gültige IP-Adresse.\n"
8021 7843
8022#: src/transport/plugin_transport_udp.c:4014 7844#: src/transport/plugin_transport_udp.c:4020
8023#, fuzzy 7845#, fuzzy
8024msgid "Failed to create UDP network sockets\n" 7846msgid "Failed to create UDP network sockets\n"
8025msgstr "UDP-Sockets können nicht geöffnet werden\n" 7847msgstr "UDP-Sockets können nicht geöffnet werden\n"
8026 7848
8027#: src/transport/plugin_transport_unix.c:1401 7849#: src/transport/plugin_transport_unix.c:1416
8028#, c-format
8029msgid "Cannot create path to `%s'\n"
8030msgstr "Pfad zu »%s« kann nicht erstellt werden\n"
8031
8032#: src/transport/plugin_transport_unix.c:1414
8033#, fuzzy, c-format 7850#, fuzzy, c-format
8034msgid "Cannot bind to `%s'\n" 7851msgid "Cannot bind to `%s'\n"
8035msgstr "Pfad zu »%s« kann nicht erstellt werden\n" 7852msgstr "Pfad zu »%s« kann nicht erstellt werden\n"
8036 7853
8037#: src/transport/plugin_transport_unix.c:1814 7854#: src/transport/plugin_transport_unix.c:1816
8038#, fuzzy 7855#, fuzzy
8039msgid "Failed to open UNIX listen socket\n" 7856msgid "Failed to open UNIX listen socket\n"
8040msgstr "Datei wurde als `%s' gespeichert.\n" 7857msgstr "Datei wurde als `%s' gespeichert.\n"
8041 7858
8042#: src/transport/plugin_transport_wlan.c:766 7859#: src/transport/plugin_transport_wlan.c:768
8043msgid "# ACKs sent" 7860msgid "# ACKs sent"
8044msgstr "" 7861msgstr ""
8045 7862
8046#: src/transport/plugin_transport_wlan.c:786 7863#: src/transport/plugin_transport_wlan.c:788
8047#, fuzzy 7864#, fuzzy
8048msgid "# Messages defragmented" 7865msgid "# Messages defragmented"
8049msgstr "# defragmentierter Nachrichten" 7866msgstr "# defragmentierter Nachrichten"
8050 7867
8051#: src/transport/plugin_transport_wlan.c:827 7868#: src/transport/plugin_transport_wlan.c:829
8052#: src/transport/plugin_transport_wlan.c:912 7869#: src/transport/plugin_transport_wlan.c:914
8053#, fuzzy 7870#, fuzzy
8054msgid "# Sessions allocated" 7871msgid "# Sessions allocated"
8055msgstr "# Sitzungsschlüssel akzeptiert" 7872msgstr "# Sitzungsschlüssel akzeptiert"
8056 7873
8057#: src/transport/plugin_transport_wlan.c:1033 7874#: src/transport/plugin_transport_wlan.c:1035
8058#, fuzzy 7875#, fuzzy
8059msgid "# message fragments sent" 7876msgid "# message fragments sent"
8060msgstr "# fragmentierter Nachrichten" 7877msgstr "# fragmentierter Nachrichten"
8061 7878
8062#: src/transport/plugin_transport_wlan.c:1062 7879#: src/transport/plugin_transport_wlan.c:1064
8063#, fuzzy 7880#, fuzzy
8064msgid "# messages pending (with fragmentation)" 7881msgid "# messages pending (with fragmentation)"
8065msgstr "# defragmentierter Nachrichten" 7882msgstr "# defragmentierter Nachrichten"
8066 7883
8067#: src/transport/plugin_transport_wlan.c:1191 7884#: src/transport/plugin_transport_wlan.c:1193
8068#: src/transport/plugin_transport_wlan.c:1282 7885#: src/transport/plugin_transport_wlan.c:1284
8069#: src/transport/plugin_transport_wlan.c:2303 7886#: src/transport/plugin_transport_wlan.c:2305
8070#, fuzzy 7887#, fuzzy
8071msgid "# MAC endpoints allocated" 7888msgid "# MAC endpoints allocated"
8072msgstr "# Sitzungsschlüssel akzeptiert" 7889msgstr "# Sitzungsschlüssel akzeptiert"
8073 7890
8074#: src/transport/plugin_transport_wlan.c:1565 7891#: src/transport/plugin_transport_wlan.c:1567
8075#, fuzzy 7892#, fuzzy
8076msgid "# ACKs received" 7893msgid "# ACKs received"
8077msgstr "# Bytes empfangen über TCP" 7894msgstr "# Bytes empfangen über TCP"
8078 7895
8079#: src/transport/plugin_transport_wlan.c:1634 7896#: src/transport/plugin_transport_wlan.c:1636
8080msgid "# DATA messages discarded due to CRC32 error" 7897msgid "# DATA messages discarded due to CRC32 error"
8081msgstr "" 7898msgstr ""
8082 7899
8083#: src/transport/plugin_transport_wlan.c:1738 7900#: src/transport/plugin_transport_wlan.c:1740
8084#, fuzzy 7901#, fuzzy
8085msgid "# HELLO beacons sent" 7902msgid "# HELLO beacons sent"
8086msgstr "# Bytes gesendet über TCP" 7903msgstr "# Bytes gesendet über TCP"
8087 7904
8088#: src/transport/plugin_transport_wlan.c:1854 7905#: src/transport/plugin_transport_wlan.c:1856
8089#, fuzzy 7906#, fuzzy
8090msgid "# DATA messages received" 7907msgid "# DATA messages received"
8091msgstr "# verschlüsselter PONG Nachrichten empfangen" 7908msgstr "# verschlüsselter PONG Nachrichten empfangen"
8092 7909
8093#: src/transport/plugin_transport_wlan.c:1888 7910#: src/transport/plugin_transport_wlan.c:1890
8094#, fuzzy 7911#, fuzzy
8095msgid "# DATA messages processed" 7912msgid "# DATA messages processed"
8096msgstr "# PING Nachrichten erstellt" 7913msgstr "# PING Nachrichten erstellt"
8097 7914
8098#: src/transport/plugin_transport_wlan.c:2278 7915#: src/transport/plugin_transport_wlan.c:2280
8099#, c-format 7916#, c-format
8100msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n" 7917msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n"
8101msgstr "" 7918msgstr ""
8102 7919
8103#: src/transport/plugin_transport_wlan.c:2300 7920#: src/transport/plugin_transport_wlan.c:2302
8104#, fuzzy 7921#, fuzzy
8105msgid "# sessions allocated" 7922msgid "# sessions allocated"
8106msgstr "# Sitzungsschlüssel akzeptiert" 7923msgstr "# Sitzungsschlüssel akzeptiert"
8107 7924
8108#: src/transport/plugin_transport_xt.c:4008 7925#: src/transport/plugin_transport_xt.c:4010
8109#, fuzzy, c-format 7926#, fuzzy, c-format
8110msgid "XT transport listening on port %llu\n" 7927msgid "XT transport listening on port %llu\n"
8111msgstr "TCP-Transportdienst wartet auf Port %llu\n" 7928msgstr "TCP-Transportdienst wartet auf Port %llu\n"
8112 7929
8113#: src/transport/plugin_transport_xt.c:4012 7930#: src/transport/plugin_transport_xt.c:4014
8114#, fuzzy 7931#, fuzzy
8115msgid "XT transport not listening on any port (client only)\n" 7932msgid "XT transport not listening on any port (client only)\n"
8116msgstr "TCP-Transportdienst wartet auf Port %llu\n" 7933msgstr "TCP-Transportdienst wartet auf Port %llu\n"
8117 7934
8118#: src/transport/plugin_transport_xt.c:4016 7935#: src/transport/plugin_transport_xt.c:4018
8119#, fuzzy, c-format 7936#, fuzzy, c-format
8120msgid "XT transport advertises itself as being on port %llu\n" 7937msgid "XT transport advertises itself as being on port %llu\n"
8121msgstr "TCP-Transportdienst wartet auf Port %llu\n" 7938msgstr "TCP-Transportdienst wartet auf Port %llu\n"
8122 7939
8123#: src/transport/plugin_transport_xt.c:4020 7940#: src/transport/plugin_transport_xt.c:4022
8124#, fuzzy 7941#, fuzzy
8125msgid "# XT sessions active" 7942msgid "# XT sessions active"
8126msgstr "# aktive TCP-Sitzungen" 7943msgstr "# aktive TCP-Sitzungen"
8127 7944
8128#: src/transport/plugin_transport_xu.c:1235 7945#: src/transport/plugin_transport_xu.c:1237
8129#, c-format 7946#, c-format
8130msgid "" 7947msgid ""
8131"XU could not transmit message to `%s': Network seems down, please check your " 7948"XU could not transmit message to `%s': Network seems down, please check your "
8132"network configuration\n" 7949"network configuration\n"
8133msgstr "" 7950msgstr ""
8134 7951
8135#: src/transport/plugin_transport_xu.c:1249 7952#: src/transport/plugin_transport_xu.c:1251
8136msgid "" 7953msgid ""
8137"XU could not transmit IPv6 message! Please check your network configuration " 7954"XU could not transmit IPv6 message! Please check your network configuration "
8138"and disable IPv6 if your connection does not have a global IPv6 address\n" 7955"and disable IPv6 if your connection does not have a global IPv6 address\n"
8139msgstr "" 7956msgstr ""
8140 7957
8141#: src/transport/plugin_transport_xu.c:2123 7958#: src/transport/plugin_transport_xu.c:2125
8142#: src/transport/plugin_transport_xu.c:2222 7959#: src/transport/plugin_transport_xu.c:2224
8143#, fuzzy, c-format 7960#, fuzzy, c-format
8144msgid "Failed to bind XU socket to %s: %s\n" 7961msgid "Failed to bind XU socket to %s: %s\n"
8145msgstr "UDP-Sockets können nicht geöffnet werden\n" 7962msgstr "UDP-Sockets können nicht geöffnet werden\n"
8146 7963
8147#: src/transport/plugin_transport_xu.c:2232 7964#: src/transport/plugin_transport_xu.c:2234
8148#, fuzzy 7965#, fuzzy
8149msgid "Failed to open XU sockets\n" 7966msgid "Failed to open XU sockets\n"
8150msgstr "UDP-Sockets können nicht geöffnet werden\n" 7967msgstr "UDP-Sockets können nicht geöffnet werden\n"
8151 7968
8152#: src/transport/plugin_transport_xu.c:2396 7969#: src/transport/plugin_transport_xu.c:2398
8153#, fuzzy 7970#, fuzzy
8154msgid "Failed to create XU network sockets\n" 7971msgid "Failed to create XU network sockets\n"
8155msgstr "UDP-Sockets können nicht geöffnet werden\n" 7972msgstr "UDP-Sockets können nicht geöffnet werden\n"
8156 7973
8157#: src/transport/tcp_connection_legacy.c:450 7974#: src/transport/tcp_connection_legacy.c:452
8158#, c-format 7975#, c-format
8159msgid "Access denied to `%s'\n" 7976msgid "Access denied to `%s'\n"
8160msgstr "Zugriff verweigert auf »%s«\n" 7977msgstr "Zugriff verweigert auf »%s«\n"
8161 7978
8162#: src/transport/tcp_connection_legacy.c:467 7979#: src/transport/tcp_connection_legacy.c:469
8163#, c-format 7980#, c-format
8164msgid "Accepting connection from `%s': %p\n" 7981msgid "Accepting connection from `%s': %p\n"
8165msgstr "" 7982msgstr ""
8166 7983
8167#: src/transport/tcp_server_legacy.c:472 src/util/service.c:1109 7984#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1666
8168#, fuzzy, c-format 7985#, fuzzy, c-format
8169msgid "`%s' failed for port %d (%s).\n" 7986msgid "`%s' failed for port %d (%s).\n"
8170msgstr "`%s' fehlgeschlagen für Laufwerk %s: %u\n" 7987msgstr "`%s' fehlgeschlagen für Laufwerk %s: %u\n"
8171 7988
8172#: src/transport/tcp_server_legacy.c:482 src/util/service.c:1119 7989#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1676
8173#, fuzzy, c-format 7990#, fuzzy, c-format
8174msgid "`%s' failed for port %d (%s): address already in use\n" 7991msgid "`%s' failed for port %d (%s): address already in use\n"
8175msgstr "`%s' schlug fehl für Port %d: %s. Läuft gnunetd bereits?\n" 7992msgstr "`%s' schlug fehl für Port %d: %s. Läuft gnunetd bereits?\n"
8176 7993
8177#: src/transport/tcp_server_legacy.c:488 src/util/service.c:1125 7994#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1682
8178#, fuzzy, c-format 7995#, fuzzy, c-format
8179msgid "`%s' failed for `%s': address already in use\n" 7996msgid "`%s' failed for `%s': address already in use\n"
8180msgstr "%s schlug fehl, Nachrichten Typ %d ist bereits in Verwendung.\n" 7997msgstr "%s schlug fehl, Nachrichten Typ %d ist bereits in Verwendung.\n"
8181 7998
8182#: src/transport/tcp_server_legacy.c:888 7999#: src/transport/tcp_server_legacy.c:890
8183#, c-format 8000#, c-format
8184msgid "" 8001msgid ""
8185"Processing code for message of type %u did not call " 8002"Processing code for message of type %u did not call "
8186"`GNUNET_SERVER_receive_done' after %s\n" 8003"`GNUNET_SERVER_receive_done' after %s\n"
8187msgstr "" 8004msgstr ""
8188 8005
8189#: src/transport/tcp_service_legacy.c:337 src/util/service.c:2378 8006#: src/transport/tcp_service_legacy.c:339 src/util/service.c:870
8190#, c-format 8007#, c-format
8191msgid "Unknown address family %d\n" 8008msgid "Unknown address family %d\n"
8192msgstr "" 8009msgstr ""
8193 8010
8194#: src/transport/tcp_service_legacy.c:344 8011#: src/transport/tcp_service_legacy.c:346
8195#, c-format 8012#, c-format
8196msgid "Access from `%s' denied to service `%s'\n" 8013msgid "Access from `%s' denied to service `%s'\n"
8197msgstr "" 8014msgstr ""
8198 8015
8199#: src/transport/tcp_service_legacy.c:400 src/util/service.c:437 8016#: src/transport/tcp_service_legacy.c:402 src/util/service.c:994
8200#, c-format 8017#, c-format
8201msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n" 8018msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
8202msgstr "" 8019msgstr ""
8203 8020
8204#: src/transport/tcp_service_legacy.c:438 src/util/service.c:480 8021#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1037
8205#, c-format 8022#, c-format
8206msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n" 8023msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
8207msgstr "" 8024msgstr ""
8208 8025
8209#: src/transport/tcp_service_legacy.c:902 src/util/service.c:1040 8026#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1597
8210msgid "Could not access a pre-bound socket, will try to bind myself\n" 8027msgid "Could not access a pre-bound socket, will try to bind myself\n"
8211msgstr "" 8028msgstr ""
8212 8029
8213#: src/transport/tcp_service_legacy.c:951 8030#: src/transport/tcp_service_legacy.c:953
8214#: src/transport/tcp_service_legacy.c:969 src/util/service.c:1192 8031#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1750
8215#, c-format 8032#, c-format
8216msgid "Specified value for `%s' of service `%s' is invalid\n" 8033msgid "Specified value for `%s' of service `%s' is invalid\n"
8217msgstr "" 8034msgstr ""
8218 8035
8219#: src/transport/tcp_service_legacy.c:994 src/util/service.c:1224 8036#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1783
8220#, c-format 8037#, c-format
8221msgid "Could not access pre-bound socket %u, will try to bind myself\n" 8038msgid "Could not access pre-bound socket %u, will try to bind myself\n"
8222msgstr "" 8039msgstr ""
8223 8040
8224#: src/transport/tcp_service_legacy.c:1159 8041#: src/transport/tcp_service_legacy.c:1161
8225#, fuzzy, c-format 8042#, fuzzy, c-format
8226msgid "Failed to start `%s' at `%s'\n" 8043msgid "Failed to start `%s' at `%s'\n"
8227msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 8044msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
8228 8045
8229#: src/transport/tcp_service_legacy.c:1200 8046#: src/transport/tcp_service_legacy.c:1202
8230#, c-format 8047#, c-format
8231msgid "Service `%s' runs at %s\n" 8048msgid "Service `%s' runs at %s\n"
8232msgstr "Dienst »%s« läuft auf %s\n" 8049msgstr "Dienst »%s« läuft auf %s\n"
8233 8050
8234#: src/transport/tcp_service_legacy.c:1249 src/util/service.c:1498 8051#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2057
8235msgid "Service process failed to initialize\n" 8052msgid "Service process failed to initialize\n"
8236msgstr "" 8053msgstr ""
8237 8054
8238#: src/transport/tcp_service_legacy.c:1253 src/util/service.c:1502 8055#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2061
8239msgid "Service process could not initialize server function\n" 8056msgid "Service process could not initialize server function\n"
8240msgstr "" 8057msgstr ""
8241 8058
8242#: src/transport/tcp_service_legacy.c:1257 src/util/service.c:1506 8059#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2065
8243msgid "Service process failed to report status\n" 8060msgid "Service process failed to report status\n"
8244msgstr "" 8061msgstr ""
8245 8062
8246#: src/transport/tcp_service_legacy.c:1311 src/util/disk.c:1521 8063#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
8247#: src/util/service.c:1376 8064#: src/util/service.c:1935
8248#, fuzzy, c-format 8065#, fuzzy, c-format
8249msgid "Cannot obtain information about user `%s': %s\n" 8066msgid "Cannot obtain information about user `%s': %s\n"
8250msgstr "Fehler beim Speichern der Konfigurationsdatei: `%s': %s.\n" 8067msgstr "Fehler beim Speichern der Konfigurationsdatei: `%s': %s.\n"
8251 8068
8252#: src/transport/tcp_service_legacy.c:1312 src/util/service.c:1378 8069#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1937
8253msgid "No such user" 8070msgid "No such user"
8254msgstr "" 8071msgstr ""
8255 8072
8256#: src/transport/tcp_service_legacy.c:1325 src/util/service.c:1397 8073#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1956
8257#, c-format 8074#, c-format
8258msgid "Cannot change user/group to `%s': %s\n" 8075msgid "Cannot change user/group to `%s': %s\n"
8259msgstr "Benutzer/Gruppe kann nicht zu »%s« geändert werden: %s\n" 8076msgstr "Benutzer/Gruppe kann nicht zu »%s« geändert werden: %s\n"
8260 8077
8261#: src/transport/tcp_service_legacy.c:1396 src/util/service.c:1757 8078#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2318
8262msgid "do daemonize (detach from terminal)" 8079msgid "do daemonize (detach from terminal)"
8263msgstr "" 8080msgstr ""
8264 8081
8265#: src/transport/tcp_service_legacy.c:1446 src/util/program.c:277 8082#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:2382
8266#: src/util/service.c:1820 8083#: src/util/service.c:2397
8267#, fuzzy, c-format 8084#, fuzzy, c-format
8268msgid "Malformed configuration file `%s', exit ...\n" 8085msgid "Malformed configuration file `%s', exit ...\n"
8269msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n" 8086msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
8270 8087
8271#: src/transport/tcp_service_legacy.c:1456 src/util/program.c:297 8088#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2409
8272#: src/util/service.c:1831
8273#, fuzzy 8089#, fuzzy
8274msgid "Malformed configuration, exit ...\n" 8090msgid "Malformed configuration, exit ...\n"
8275msgstr "GNUnet Konfiguration" 8091msgstr "GNUnet Konfiguration"
8276 8092
8277#: src/transport/tcp_service_legacy.c:1461 src/util/program.c:290 8093#: src/transport/tcp_service_legacy.c:1463
8278#: src/util/service.c:1837
8279#, fuzzy, c-format 8094#, fuzzy, c-format
8280msgid "Could not access configuration file `%s'\n" 8095msgid "Could not access configuration file `%s'\n"
8281msgstr "Konfigurationsdatei `%s' konnte nicht geparst werden.\n" 8096msgstr "Konfigurationsdatei `%s' konnte nicht geparst werden.\n"
8282 8097
8283#: src/util/bio.c:179 src/util/bio.c:187 8098#: src/transport/transport_api2_communication.c:764
8099msgid "Dropped backchanel message: handler not provided by communicator\n"
8100msgstr ""
8101
8102#: src/util/bio.c:181 src/util/bio.c:189
8284#, fuzzy, c-format 8103#, fuzzy, c-format
8285msgid "Error reading `%s': %s" 8104msgid "Error reading `%s': %s"
8286msgstr "Fehler beim Anlegen des Benutzers" 8105msgstr "Fehler beim Anlegen des Benutzers"
8287 8106
8288#: src/util/bio.c:189 8107#: src/util/bio.c:191
8289msgid "End of file" 8108msgid "End of file"
8290msgstr "Dateiende" 8109msgstr "Dateiende"
8291 8110
8292#: src/util/bio.c:246 8111#: src/util/bio.c:248
8293#, c-format 8112#, c-format
8294msgid "Error reading length of string `%s'" 8113msgid "Error reading length of string `%s'"
8295msgstr "" 8114msgstr ""
8296 8115
8297#: src/util/bio.c:256 8116#: src/util/bio.c:258
8298#, c-format 8117#, c-format
8299msgid "String `%s' longer than allowed (%u > %u)" 8118msgid "String `%s' longer than allowed (%u > %u)"
8300msgstr "" 8119msgstr ""
8301 8120
8302#: src/util/bio.c:304 8121#: src/util/bio.c:306
8303#, c-format 8122#, c-format
8304msgid "Serialized metadata `%s' larger than allowed (%u>%u)" 8123msgid "Serialized metadata `%s' larger than allowed (%u>%u)"
8305msgstr "" 8124msgstr ""
8306 8125
8307#: src/util/bio.c:326 8126#: src/util/bio.c:328
8308#, c-format 8127#, c-format
8309msgid "Metadata `%s' failed to deserialize" 8128msgid "Metadata `%s' failed to deserialize"
8310msgstr "" 8129msgstr ""
8311 8130
8312#: src/util/client.c:732 8131#: src/util/client.c:734
8313msgid "not a valid filename" 8132msgid "not a valid filename"
8314msgstr "" 8133msgstr ""
8315 8134
8316#: src/util/client.c:923 8135#: src/util/client.c:925
8317#, c-format 8136#, c-format
8318msgid "Need a non-empty hostname for service `%s'.\n" 8137msgid "Need a non-empty hostname for service `%s'.\n"
8319msgstr "" 8138msgstr ""
8320 8139
8321#: src/util/common_logging.c:257 src/util/common_logging.c:1159 8140#: src/util/common_logging.c:259 src/util/common_logging.c:1162
8322msgid "DEBUG" 8141msgid "DEBUG"
8323msgstr "DEBUG" 8142msgstr "DEBUG"
8324 8143
8325#: src/util/common_logging.c:259 src/util/common_logging.c:1157 8144#: src/util/common_logging.c:261 src/util/common_logging.c:1160
8326msgid "INFO" 8145msgid "INFO"
8327msgstr "INFO" 8146msgstr "INFO"
8328 8147
8329#: src/util/common_logging.c:261 src/util/common_logging.c:1155 8148#: src/util/common_logging.c:263 src/util/common_logging.c:1158
8330msgid "MESSAGE" 8149msgid "MESSAGE"
8331msgstr "" 8150msgstr ""
8332 8151
8333#: src/util/common_logging.c:263 src/util/common_logging.c:1153 8152#: src/util/common_logging.c:265 src/util/common_logging.c:1156
8334msgid "WARNING" 8153msgid "WARNING"
8335msgstr "WARNUNG" 8154msgstr "WARNUNG"
8336 8155
8337#: src/util/common_logging.c:265 src/util/common_logging.c:1151 8156#: src/util/common_logging.c:267 src/util/common_logging.c:1154
8338msgid "ERROR" 8157msgid "ERROR"
8339msgstr "FEHLER" 8158msgstr "FEHLER"
8340 8159
8341#: src/util/common_logging.c:267 src/util/common_logging.c:1161 8160#: src/util/common_logging.c:269 src/util/common_logging.c:1164
8342msgid "NONE" 8161msgid "NONE"
8343msgstr "" 8162msgstr ""
8344 8163
8345#: src/util/common_logging.c:631 src/util/common_logging.c:661 8164#: src/util/common_logging.c:633 src/util/common_logging.c:663
8346#, c-format 8165#, c-format
8347msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n" 8166msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
8348msgstr "" 8167msgstr ""
8349 8168
8350#: src/util/common_logging.c:895 8169#: src/util/common_logging.c:898
8351#, c-format 8170#, c-format
8352msgid "Message `%.*s' repeated %u times in the last %s\n" 8171msgid "Message `%.*s' repeated %u times in the last %s\n"
8353msgstr "" 8172msgstr ""
8354 8173
8355#: src/util/common_logging.c:1162 8174#: src/util/common_logging.c:1165
8356msgid "INVALID" 8175msgid "INVALID"
8357msgstr "" 8176msgstr ""
8358 8177
8359#: src/util/common_logging.c:1455 8178#: src/util/common_logging.c:1458
8360msgid "unknown address" 8179msgid "unknown address"
8361msgstr "Unbekannte Adresse" 8180msgstr "Unbekannte Adresse"
8362 8181
8363#: src/util/common_logging.c:1497 8182#: src/util/common_logging.c:1500
8364msgid "invalid address" 8183msgid "invalid address"
8365msgstr "Ungültige Adresse" 8184msgstr "Ungültige Adresse"
8366 8185
8367#: src/util/common_logging.c:1515 8186#: src/util/common_logging.c:1518
8368#, fuzzy, c-format 8187#, fuzzy, c-format
8369msgid "Configuration fails to specify option `%s' in section `%s'!\n" 8188msgid "Configuration fails to specify option `%s' in section `%s'!\n"
8370msgstr "" 8189msgstr ""
8371"Die Konfigurationsdatei muss in der Sektion `%s' unter `%s' ein Verzeichnis " 8190"Die Konfigurationsdatei muss in der Sektion `%s' unter `%s' ein Verzeichnis "
8372"angeben, in dem FS Daten gespeichert werden.\n" 8191"angeben, in dem FS Daten gespeichert werden.\n"
8373 8192
8374#: src/util/common_logging.c:1536 8193#: src/util/common_logging.c:1539
8375#, fuzzy, c-format 8194#, fuzzy, c-format
8376msgid "" 8195msgid ""
8377"Configuration specifies invalid value for option `%s' in section `%s': %s\n" 8196"Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8379,148 +8198,148 @@ msgstr ""
8379"Die Konfigurationsdatei muss in der Sektion `%s' unter `%s' ein Verzeichnis " 8198"Die Konfigurationsdatei muss in der Sektion `%s' unter `%s' ein Verzeichnis "
8380"angeben, in dem FS Daten gespeichert werden.\n" 8199"angeben, in dem FS Daten gespeichert werden.\n"
8381 8200
8382#: src/util/configuration.c:294 8201#: src/util/configuration.c:331
8383#, fuzzy, c-format 8202#, fuzzy, c-format
8384msgid "Syntax error while deserializing in line %u\n" 8203msgid "Syntax error while deserializing in line %u\n"
8385msgstr "Syntaxfehler in Konfigurationsdatei `%s' in Zeile %d.\n" 8204msgstr "Syntaxfehler in Konfigurationsdatei `%s' in Zeile %d.\n"
8386 8205
8387#: src/util/configuration.c:361 8206#: src/util/configuration.c:398
8388#, fuzzy, c-format 8207#, fuzzy, c-format
8389msgid "Error while reading file `%s'\n" 8208msgid "Error while reading file `%s'\n"
8390msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n" 8209msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n"
8391 8210
8392#: src/util/configuration.c:970 8211#: src/util/configuration.c:1016
8393msgid "Not a valid relative time specification" 8212msgid "Not a valid relative time specification"
8394msgstr "" 8213msgstr ""
8395 8214
8396#: src/util/configuration.c:1059 8215#: src/util/configuration.c:1105
8397#, c-format 8216#, c-format
8398msgid "" 8217msgid ""
8399"Configuration value '%s' for '%s' in section '%s' is not in set of legal " 8218"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
8400"choices\n" 8219"choices\n"
8401msgstr "" 8220msgstr ""
8402 8221
8403#: src/util/configuration.c:1178 8222#: src/util/configuration.c:1224
8404#, c-format 8223#, c-format
8405msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n" 8224msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n"
8406msgstr "" 8225msgstr ""
8407 8226
8408#: src/util/configuration.c:1211 8227#: src/util/configuration.c:1257
8409#, c-format 8228#, c-format
8410msgid "Missing closing `%s' in option `%s'\n" 8229msgid "Missing closing `%s' in option `%s'\n"
8411msgstr "" 8230msgstr ""
8412 8231
8413#: src/util/configuration.c:1279 8232#: src/util/configuration.c:1325
8414#, c-format 8233#, c-format
8415msgid "" 8234msgid ""
8416"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined " 8235"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined "
8417"as an environmental variable\n" 8236"as an environmental variable\n"
8418msgstr "" 8237msgstr ""
8419 8238
8420#: src/util/container_bloomfilter.c:530 8239#: src/util/container_bloomfilter.c:532
8421#, c-format 8240#, c-format
8422msgid "" 8241msgid ""
8423"Size of file on disk is incorrect for this Bloom filter (want %llu, have " 8242"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
8424"%llu)\n" 8243"%llu)\n"
8425msgstr "" 8244msgstr ""
8426 8245
8427#: src/util/crypto_ecc.c:860 8246#: src/util/crypto_ecc.c:862
8428#, fuzzy, c-format 8247#, fuzzy, c-format
8429msgid "ECC signing failed at %s:%d: %s\n" 8248msgid "ECC signing failed at %s:%d: %s\n"
8430msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" 8249msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
8431 8250
8432#: src/util/crypto_ecc.c:915 8251#: src/util/crypto_ecc.c:917
8433#, fuzzy, c-format 8252#, fuzzy, c-format
8434msgid "EdDSA signing failed at %s:%d: %s\n" 8253msgid "EdDSA signing failed at %s:%d: %s\n"
8435msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" 8254msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
8436 8255
8437#: src/util/crypto_ecc.c:994 8256#: src/util/crypto_ecc.c:996
8438#, fuzzy, c-format 8257#, fuzzy, c-format
8439msgid "ECDSA signature verification failed at %s:%d: %s\n" 8258msgid "ECDSA signature verification failed at %s:%d: %s\n"
8440msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" 8259msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n"
8441 8260
8442#: src/util/crypto_ecc.c:1055 8261#: src/util/crypto_ecc.c:1057
8443#, fuzzy, c-format 8262#, fuzzy, c-format
8444msgid "EdDSA signature verification failed at %s:%d: %s\n" 8263msgid "EdDSA signature verification failed at %s:%d: %s\n"
8445msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" 8264msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n"
8446 8265
8447#: src/util/crypto_ecc_setup.c:121 src/util/crypto_ecc_setup.c:160 8266#: src/util/crypto_ecc_setup.c:123 src/util/crypto_ecc_setup.c:162
8448#: src/util/crypto_ecc_setup.c:303 src/util/crypto_ecc_setup.c:350 8267#: src/util/crypto_ecc_setup.c:305 src/util/crypto_ecc_setup.c:352
8449#, fuzzy, c-format 8268#, fuzzy, c-format
8450msgid "Could not acquire lock on file `%s': %s...\n" 8269msgid "Could not acquire lock on file `%s': %s...\n"
8451msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n" 8270msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n"
8452 8271
8453#: src/util/crypto_ecc_setup.c:127 src/util/crypto_ecc_setup.c:309 8272#: src/util/crypto_ecc_setup.c:129 src/util/crypto_ecc_setup.c:311
8454#, fuzzy 8273#, fuzzy
8455msgid "Creating a new private key. This may take a while.\n" 8274msgid "Creating a new private key. This may take a while.\n"
8456msgstr "Ein neuer Hostkey wird erzeugt (dies kann eine Weile dauern).\n" 8275msgstr "Ein neuer Hostkey wird erzeugt (dies kann eine Weile dauern).\n"
8457 8276
8458#: src/util/crypto_ecc_setup.c:164 src/util/crypto_ecc_setup.c:354 8277#: src/util/crypto_ecc_setup.c:166 src/util/crypto_ecc_setup.c:356
8459msgid "This may be ok if someone is currently generating a private key.\n" 8278msgid "This may be ok if someone is currently generating a private key.\n"
8460msgstr "" 8279msgstr ""
8461 8280
8462#: src/util/crypto_ecc_setup.c:194 src/util/crypto_ecc_setup.c:396 8281#: src/util/crypto_ecc_setup.c:196 src/util/crypto_ecc_setup.c:398
8463#, c-format 8282#, c-format
8464msgid "" 8283msgid ""
8465"When trying to read key file `%s' I found %u bytes but I need at least %u.\n" 8284"When trying to read key file `%s' I found %u bytes but I need at least %u.\n"
8466msgstr "" 8285msgstr ""
8467 8286
8468#: src/util/crypto_ecc_setup.c:199 src/util/crypto_ecc_setup.c:400 8287#: src/util/crypto_ecc_setup.c:201 src/util/crypto_ecc_setup.c:402
8469msgid "This may be ok if someone is currently generating a key.\n" 8288msgid "This may be ok if someone is currently generating a key.\n"
8470msgstr "" 8289msgstr ""
8471 8290
8472#: src/util/crypto_ecc_setup.c:466 8291#: src/util/crypto_ecc_setup.c:468
8473#, fuzzy 8292#, fuzzy
8474msgid "Could not load peer's private key\n" 8293msgid "Could not load peer's private key\n"
8475msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" 8294msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
8476 8295
8477#: src/util/crypto_random.c:304 8296#: src/util/crypto_random.c:306
8478#, c-format 8297#, c-format
8479msgid "libgcrypt has not the expected version (version %s is required).\n" 8298msgid "libgcrypt has not the expected version (version %s is required).\n"
8480msgstr "" 8299msgstr ""
8481"libgcrypt hat nicht die erwartete Version (Version %s wird vorausgesetzt).\n" 8300"libgcrypt hat nicht die erwartete Version (Version %s wird vorausgesetzt).\n"
8482 8301
8483#: src/util/crypto_rsa.c:848 8302#: src/util/crypto_rsa.c:850
8484#, fuzzy, c-format 8303#, fuzzy, c-format
8485msgid "RSA signing failed at %s:%d: %s\n" 8304msgid "RSA signing failed at %s:%d: %s\n"
8486msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" 8305msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
8487 8306
8488#: src/util/crypto_rsa.c:1187 8307#: src/util/crypto_rsa.c:1189
8489#, fuzzy, c-format 8308#, fuzzy, c-format
8490msgid "RSA signature verification failed at %s:%d: %s\n" 8309msgid "RSA signature verification failed at %s:%d: %s\n"
8491msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" 8310msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n"
8492 8311
8493#: src/util/disk.c:1251 8312#: src/util/disk.c:1255
8494#, fuzzy, c-format 8313#, fuzzy, c-format
8495msgid "Expected `%s' to be a directory!\n" 8314msgid "Expected `%s' to be a directory!\n"
8496msgstr "`%s' erwartet, dass `%s' ein Verzeichnis ist!\n" 8315msgstr "`%s' erwartet, dass `%s' ein Verzeichnis ist!\n"
8497 8316
8498#: src/util/dnsparser.c:250 8317#: src/util/dnsparser.c:264
8499#, c-format 8318#, c-format
8500msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n" 8319msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
8501msgstr "" 8320msgstr ""
8502 8321
8503#: src/util/dnsparser.c:940 8322#: src/util/dnsparser.c:954
8504#, c-format 8323#, c-format
8505msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n" 8324msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
8506msgstr "" 8325msgstr ""
8507 8326
8508#: src/util/dnsstub.c:229 8327#: src/util/dnsstub.c:231
8509#, fuzzy, c-format 8328#, fuzzy, c-format
8510msgid "Could not bind to any port: %s\n" 8329msgid "Could not bind to any port: %s\n"
8511msgstr "IP des Hosts `%s' konnte nicht ermittelt werden: %s\n" 8330msgstr "IP des Hosts `%s' konnte nicht ermittelt werden: %s\n"
8512 8331
8513#: src/util/dnsstub.c:360 8332#: src/util/dnsstub.c:362
8514#, c-format 8333#, c-format
8515msgid "Received DNS response that is too small (%u bytes)" 8334msgid "Received DNS response that is too small (%u bytes)"
8516msgstr "" 8335msgstr ""
8517 8336
8518#: src/util/dnsstub.c:507 8337#: src/util/dnsstub.c:509
8519#, fuzzy, c-format 8338#, fuzzy, c-format
8520msgid "Failed to send DNS request to %s: %s\n" 8339msgid "Failed to send DNS request to %s: %s\n"
8521msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n" 8340msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n"
8522 8341
8523#: src/util/dnsstub.c:513 8342#: src/util/dnsstub.c:515
8524#, c-format 8343#, c-format
8525msgid "Sent DNS request to %s\n" 8344msgid "Sent DNS request to %s\n"
8526msgstr "" 8345msgstr ""
@@ -8590,11 +8409,11 @@ msgstr "Verwenden Sie --help, um eine Liste der Optionen zu erhalten.\n"
8590msgid "Missing mandatory option `%s'.\n" 8409msgid "Missing mandatory option `%s'.\n"
8591msgstr "Unbekannte Operation `%s'\n" 8410msgstr "Unbekannte Operation `%s'\n"
8592 8411
8593#: src/util/getopt_helpers.c:68 8412#: src/util/getopt_helpers.c:70
8594msgid "print the version number" 8413msgid "print the version number"
8595msgstr "" 8414msgstr ""
8596 8415
8597#: src/util/getopt_helpers.c:113 8416#: src/util/getopt_helpers.c:116
8598#, c-format 8417#, c-format
8599msgid "" 8418msgid ""
8600"Arguments mandatory for long options are also mandatory for short options.\n" 8419"Arguments mandatory for long options are also mandatory for short options.\n"
@@ -8602,124 +8421,124 @@ msgstr ""
8602"Argumente, die für lange Optionen zwingend sind, sind auch für kurze " 8421"Argumente, die für lange Optionen zwingend sind, sind auch für kurze "
8603"Optionen zwingend.\n" 8422"Optionen zwingend.\n"
8604 8423
8605#: src/util/getopt_helpers.c:201 8424#: src/util/getopt_helpers.c:204
8606msgid "print this help" 8425msgid "print this help"
8607msgstr "" 8426msgstr ""
8608 8427
8609#: src/util/getopt_helpers.c:279 8428#: src/util/getopt_helpers.c:282
8610msgid "be verbose" 8429msgid "be verbose"
8611msgstr "" 8430msgstr ""
8612 8431
8613#: src/util/getopt_helpers.c:420 8432#: src/util/getopt_helpers.c:423
8614msgid "configure logging to use LOGLEVEL" 8433msgid "configure logging to use LOGLEVEL"
8615msgstr "" 8434msgstr ""
8616 8435
8617#: src/util/getopt_helpers.c:500 8436#: src/util/getopt_helpers.c:503
8618msgid "configure logging to write logs to FILENAME" 8437msgid "configure logging to write logs to FILENAME"
8619msgstr "" 8438msgstr ""
8620 8439
8621#: src/util/getopt_helpers.c:522 8440#: src/util/getopt_helpers.c:525
8622#, fuzzy 8441#, fuzzy
8623msgid "use configuration file FILENAME" 8442msgid "use configuration file FILENAME"
8624msgstr "" 8443msgstr ""
8625"Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben" 8444"Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben"
8626 8445
8627#: src/util/getopt_helpers.c:559 src/util/getopt_helpers.c:763 8446#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
8628#: src/util/getopt_helpers.c:830 8447#: src/util/getopt_helpers.c:839
8629#, c-format 8448#, c-format
8630msgid "You must pass a number to the `%s' option.\n" 8449msgid "You must pass a number to the `%s' option.\n"
8631msgstr "Sie müssen für die Option »%s« zusätzlich eine Zahl angeben.\n" 8450msgstr "Sie müssen für die Option »%s« zusätzlich eine Zahl angeben.\n"
8632 8451
8633#: src/util/getopt_helpers.c:624 8452#: src/util/getopt_helpers.c:629
8634#, c-format 8453#, c-format
8635msgid "You must pass relative time to the `%s' option.\n" 8454msgid "You must pass relative time to the `%s' option.\n"
8636msgstr "Sie müssen eine relative Zeit zu der Option »%s« übergeben.\n" 8455msgstr "Sie müssen eine relative Zeit zu der Option »%s« übergeben.\n"
8637 8456
8638#: src/util/getopt_helpers.c:690 8457#: src/util/getopt_helpers.c:695
8639#, fuzzy, c-format 8458#, fuzzy, c-format
8640msgid "You must pass absolute time to the `%s' option.\n" 8459msgid "You must pass absolute time to the `%s' option.\n"
8641msgstr "Sie müssen eine relative Zeit zu der Option »%s« übergeben.\n" 8460msgstr "Sie müssen eine relative Zeit zu der Option »%s« übergeben.\n"
8642 8461
8643#: src/util/getopt_helpers.c:754 8462#: src/util/getopt_helpers.c:760
8644#, c-format 8463#, c-format
8645msgid "Your input for the '%s' option has to be a non negative number \n" 8464msgid "Your input for the '%s' option has to be a non negative number \n"
8646msgstr "" 8465msgstr ""
8647 8466
8648#: src/util/getopt_helpers.c:837 8467#: src/util/getopt_helpers.c:846
8649#, fuzzy, c-format 8468#, fuzzy, c-format
8650msgid "You must pass a number below %u to the `%s' option.\n" 8469msgid "You must pass a number below %u to the `%s' option.\n"
8651msgstr "Sie müssen für die Option »%s« zusätzlich eine Zahl angeben.\n" 8470msgstr "Sie müssen für die Option »%s« zusätzlich eine Zahl angeben.\n"
8652 8471
8653#: src/util/getopt_helpers.c:923 8472#: src/util/getopt_helpers.c:932
8654#, c-format 8473#, c-format
8655msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n" 8474msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
8656msgstr "" 8475msgstr ""
8657 8476
8658#: src/util/gnunet-config.c:157 8477#: src/util/gnunet-config.c:160
8659#, fuzzy, c-format 8478#, fuzzy, c-format
8660msgid "failed to load configuration defaults" 8479msgid "failed to load configuration defaults"
8661msgstr "Konfiguration konnte nicht aus %s geladen werden\n" 8480msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
8662 8481
8663#: src/util/gnunet-config.c:170
8664#, c-format
8665msgid "--section argument is required\n"
8666msgstr ""
8667
8668#: src/util/gnunet-config.c:173 8482#: src/util/gnunet-config.c:173
8483#, fuzzy, c-format
8484msgid "%s or %s argument is required\n"
8485msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
8486
8487#: src/util/gnunet-config.c:181
8669#, c-format 8488#, c-format
8670msgid "The following sections are available:\n" 8489msgid "The following sections are available:\n"
8671msgstr "" 8490msgstr ""
8672 8491
8673#: src/util/gnunet-config.c:224 8492#: src/util/gnunet-config.c:232
8674#, c-format 8493#, c-format
8675msgid "--option argument required to set value\n" 8494msgid "--option argument required to set value\n"
8676msgstr "" 8495msgstr ""
8677 8496
8678#: src/util/gnunet-config.c:263 8497#: src/util/gnunet-config.c:286
8679msgid "obtain option of value as a filename (with $-expansion)" 8498msgid "obtain option of value as a filename (with $-expansion)"
8680msgstr "" 8499msgstr ""
8681 8500
8682#: src/util/gnunet-config.c:268 8501#: src/util/gnunet-config.c:291
8683msgid "name of the section to access" 8502msgid "name of the section to access"
8684msgstr "" 8503msgstr ""
8685 8504
8686#: src/util/gnunet-config.c:273 8505#: src/util/gnunet-config.c:296
8687msgid "name of the option to access" 8506msgid "name of the option to access"
8688msgstr "" 8507msgstr ""
8689 8508
8690#: src/util/gnunet-config.c:278 8509#: src/util/gnunet-config.c:301
8691msgid "value to set" 8510msgid "value to set"
8692msgstr "" 8511msgstr ""
8693 8512
8694#: src/util/gnunet-config.c:282 8513#: src/util/gnunet-config.c:305
8695#, fuzzy 8514#, fuzzy
8696msgid "print available configuration sections" 8515msgid "print available configuration sections"
8697msgstr "GNUnet Konfiguration" 8516msgstr "GNUnet Konfiguration"
8698 8517
8699#: src/util/gnunet-config.c:286 8518#: src/util/gnunet-config.c:309
8700msgid "write configuration file that only contains delta to defaults" 8519msgid "write configuration file that only contains delta to defaults"
8701msgstr "" 8520msgstr ""
8702 8521
8703#: src/util/gnunet-config.c:299 8522#: src/util/gnunet-config.c:322
8704msgid "Manipulate GNUnet configuration files" 8523msgid "Manipulate GNUnet configuration files"
8705msgstr "GNUnet-Konfigurationsdateien bearbeiten" 8524msgstr "GNUnet-Konfigurationsdateien bearbeiten"
8706 8525
8707#: src/util/gnunet-ecc.c:92 8526#: src/util/gnunet-ecc.c:94
8708#, c-format 8527#, c-format
8709msgid "Failed to open `%s': %s\n" 8528msgid "Failed to open `%s': %s\n"
8710msgstr "»%s« kann nicht geöffnet werden: %s\n" 8529msgstr "»%s« kann nicht geöffnet werden: %s\n"
8711 8530
8712#: src/util/gnunet-ecc.c:128 8531#: src/util/gnunet-ecc.c:130
8713#, c-format 8532#, c-format
8714msgid "Generating %u keys like %s, please wait" 8533msgid "Generating %u keys like %s, please wait"
8715msgstr "" 8534msgstr ""
8716 8535
8717#: src/util/gnunet-ecc.c:141 8536#: src/util/gnunet-ecc.c:143
8718#, c-format 8537#, c-format
8719msgid "Generating %u keys, please wait" 8538msgid "Generating %u keys, please wait"
8720msgstr "" 8539msgstr ""
8721 8540
8722#: src/util/gnunet-ecc.c:182 8541#: src/util/gnunet-ecc.c:184
8723#, c-format 8542#, c-format
8724msgid "" 8543msgid ""
8725"\n" 8544"\n"
@@ -8728,7 +8547,7 @@ msgstr ""
8728"\n" 8547"\n"
8729"Schreiben in »%s« nicht möglich: %s\n" 8548"Schreiben in »%s« nicht möglich: %s\n"
8730 8549
8731#: src/util/gnunet-ecc.c:192 8550#: src/util/gnunet-ecc.c:194
8732#, c-format 8551#, c-format
8733msgid "" 8552msgid ""
8734"\n" 8553"\n"
@@ -8737,94 +8556,94 @@ msgstr ""
8737"\n" 8556"\n"
8738"Abgeschlossen!\n" 8557"Abgeschlossen!\n"
8739 8558
8740#: src/util/gnunet-ecc.c:195 8559#: src/util/gnunet-ecc.c:197
8741#, c-format 8560#, c-format
8742msgid "" 8561msgid ""
8743"\n" 8562"\n"
8744"Error, %u keys not generated\n" 8563"Error, %u keys not generated\n"
8745msgstr "" 8564msgstr ""
8746 8565
8747#: src/util/gnunet-ecc.c:288 8566#: src/util/gnunet-ecc.c:290
8748#, fuzzy, c-format 8567#, fuzzy, c-format
8749msgid "Hostkeys file `%s' not found\n" 8568msgid "Hostkeys file `%s' not found\n"
8750msgstr "Kommando `%s' wurde nicht gefunden!\n" 8569msgstr "Kommando `%s' wurde nicht gefunden!\n"
8751 8570
8752#: src/util/gnunet-ecc.c:303 8571#: src/util/gnunet-ecc.c:305
8753#, c-format 8572#, c-format
8754msgid "Hostkeys file `%s' is empty\n" 8573msgid "Hostkeys file `%s' is empty\n"
8755msgstr "" 8574msgstr ""
8756 8575
8757#: src/util/gnunet-ecc.c:332 8576#: src/util/gnunet-ecc.c:334
8758#, fuzzy, c-format 8577#, fuzzy, c-format
8759msgid "Could not read hostkey file: %s\n" 8578msgid "Could not read hostkey file: %s\n"
8760msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n" 8579msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n"
8761 8580
8762#: src/util/gnunet-ecc.c:389 8581#: src/util/gnunet-ecc.c:391
8763msgid "No hostkey file specified on command line\n" 8582msgid "No hostkey file specified on command line\n"
8764msgstr "" 8583msgstr ""
8765 8584
8766#: src/util/gnunet-ecc.c:454 8585#: src/util/gnunet-ecc.c:456
8767msgid "list keys included in a file (for testing)" 8586msgid "list keys included in a file (for testing)"
8768msgstr "" 8587msgstr ""
8769 8588
8770#: src/util/gnunet-ecc.c:459 8589#: src/util/gnunet-ecc.c:461
8771msgid "number of keys to list included in a file (for testing)" 8590msgid "number of keys to list included in a file (for testing)"
8772msgstr "" 8591msgstr ""
8773 8592
8774#: src/util/gnunet-ecc.c:464 8593#: src/util/gnunet-ecc.c:466
8775msgid "create COUNT public-private key pairs (for testing)" 8594msgid "create COUNT public-private key pairs (for testing)"
8776msgstr "" 8595msgstr ""
8777 8596
8778#: src/util/gnunet-ecc.c:468 8597#: src/util/gnunet-ecc.c:470
8779msgid "print the public key in ASCII format" 8598msgid "print the public key in ASCII format"
8780msgstr "" 8599msgstr ""
8781 8600
8782#: src/util/gnunet-ecc.c:472 8601#: src/util/gnunet-ecc.c:474
8783msgid "print the private key in ASCII format" 8602msgid "print the private key in ASCII format"
8784msgstr "" 8603msgstr ""
8785 8604
8786#: src/util/gnunet-ecc.c:476 8605#: src/util/gnunet-ecc.c:478
8787msgid "print the public key in HEX format" 8606msgid "print the public key in HEX format"
8788msgstr "" 8607msgstr ""
8789 8608
8790#: src/util/gnunet-ecc.c:480 8609#: src/util/gnunet-ecc.c:482
8791msgid "print examples of ECC operations (used for compatibility testing)" 8610msgid "print examples of ECC operations (used for compatibility testing)"
8792msgstr "" 8611msgstr ""
8793 8612
8794#: src/util/gnunet-ecc.c:496 8613#: src/util/gnunet-ecc.c:498
8795msgid "Manipulate GNUnet private ECC key files" 8614msgid "Manipulate GNUnet private ECC key files"
8796msgstr "" 8615msgstr ""
8797 8616
8798#: src/util/gnunet-resolver.c:166 8617#: src/util/gnunet-resolver.c:168
8799msgid "perform a reverse lookup" 8618msgid "perform a reverse lookup"
8800msgstr "" 8619msgstr ""
8801 8620
8802#: src/util/gnunet-resolver.c:177 8621#: src/util/gnunet-resolver.c:179
8803msgid "Use build-in GNUnet stub resolver" 8622msgid "Use build-in GNUnet stub resolver"
8804msgstr "" 8623msgstr ""
8805 8624
8806#: src/util/gnunet-scrypt.c:240 8625#: src/util/gnunet-scrypt.c:242
8807#, fuzzy, c-format 8626#, fuzzy, c-format
8808msgid "Loading hostkey from `%s' failed.\n" 8627msgid "Loading hostkey from `%s' failed.\n"
8809msgstr "Das Parsen des Hello von `%s' schlug fehl.\n" 8628msgstr "Das Parsen des Hello von `%s' schlug fehl.\n"
8810 8629
8811#: src/util/gnunet-scrypt.c:315 8630#: src/util/gnunet-scrypt.c:317
8812msgid "number of bits to require for the proof of work" 8631msgid "number of bits to require for the proof of work"
8813msgstr "" 8632msgstr ""
8814 8633
8815#: src/util/gnunet-scrypt.c:320 8634#: src/util/gnunet-scrypt.c:322
8816msgid "file with private key, otherwise default is used" 8635msgid "file with private key, otherwise default is used"
8817msgstr "" 8636msgstr ""
8818 8637
8819#: src/util/gnunet-scrypt.c:325 8638#: src/util/gnunet-scrypt.c:327
8820msgid "file with proof of work, otherwise default is used" 8639msgid "file with proof of work, otherwise default is used"
8821msgstr "" 8640msgstr ""
8822 8641
8823#: src/util/gnunet-scrypt.c:330 8642#: src/util/gnunet-scrypt.c:332
8824msgid "time to wait between calculations" 8643msgid "time to wait between calculations"
8825msgstr "" 8644msgstr ""
8826 8645
8827#: src/util/gnunet-scrypt.c:343 8646#: src/util/gnunet-scrypt.c:345
8828msgid "Manipulate GNUnet proof of work files" 8647msgid "Manipulate GNUnet proof of work files"
8829msgstr "" 8648msgstr ""
8830 8649
@@ -8832,116 +8651,131 @@ msgstr ""
8832msgid "No DNS server available. DNS resolution will not be possible.\n" 8651msgid "No DNS server available. DNS resolution will not be possible.\n"
8833msgstr "" 8652msgstr ""
8834 8653
8835#: src/util/gnunet-uri.c:83 8654#: src/util/gnunet-uri.c:85
8836#, c-format 8655#, c-format
8837msgid "No URI specified on command line\n" 8656msgid "No URI specified on command line\n"
8838msgstr "" 8657msgstr ""
8839 8658
8840#: src/util/gnunet-uri.c:89 8659#: src/util/gnunet-uri.c:91
8841#, c-format 8660#, c-format
8842msgid "Invalid URI: does not start with `%s'\n" 8661msgid "Invalid URI: does not start with `%s'\n"
8843msgstr "URL beginnt nicht mit »%s«\n" 8662msgstr "URL beginnt nicht mit »%s«\n"
8844 8663
8845#: src/util/gnunet-uri.c:96 8664#: src/util/gnunet-uri.c:98
8846#, c-format 8665#, c-format
8847msgid "Invalid URI: fails to specify subsystem\n" 8666msgid "Invalid URI: fails to specify subsystem\n"
8848msgstr "" 8667msgstr ""
8849 8668
8850#: src/util/gnunet-uri.c:106 8669#: src/util/gnunet-uri.c:108
8851#, c-format 8670#, c-format
8852msgid "No handler known for subsystem `%s'\n" 8671msgid "No handler known for subsystem `%s'\n"
8853msgstr "" 8672msgstr ""
8854 8673
8855#: src/util/gnunet-uri.c:168 8674#: src/util/gnunet-uri.c:170
8856msgid "Perform default-actions for GNUnet URIs" 8675msgid "Perform default-actions for GNUnet URIs"
8857msgstr "" 8676msgstr ""
8858 8677
8859#: src/util/helper.c:333 8678#: src/util/helper.c:335
8860#, c-format 8679#, c-format
8861msgid "Error reading from `%s': %s\n" 8680msgid "Error reading from `%s': %s\n"
8862msgstr "Fehler beim Lesen von »%s«: %s\n" 8681msgstr "Fehler beim Lesen von »%s«: %s\n"
8863 8682
8864#: src/util/helper.c:384 8683#: src/util/helper.c:386
8865#, fuzzy, c-format 8684#, fuzzy, c-format
8866msgid "Failed to parse inbound message from helper `%s'\n" 8685msgid "Failed to parse inbound message from helper `%s'\n"
8867msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n" 8686msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
8868 8687
8869#: src/util/helper.c:604 8688#: src/util/helper.c:606
8870#, fuzzy, c-format 8689#, fuzzy, c-format
8871msgid "Error writing to `%s': %s\n" 8690msgid "Error writing to `%s': %s\n"
8872msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n" 8691msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
8873 8692
8874#: src/util/network.c:134 8693#: src/util/network.c:136
8875#, c-format 8694#, c-format
8876msgid "Unable to shorten unix path `%s' while keeping name unique\n" 8695msgid "Unable to shorten unix path `%s' while keeping name unique\n"
8877msgstr "" 8696msgstr ""
8878 8697
8879#: src/util/network.c:1793 src/util/network.c:1977 8698#: src/util/network.c:1794 src/util/network.c:1978
8880#, c-format 8699#, c-format
8881msgid "" 8700msgid ""
8882"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n" 8701"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
8883msgstr "" 8702msgstr ""
8884 8703
8885#: src/util/os_installation.c:507 8704#: src/util/os_installation.c:509
8886#, c-format 8705#, c-format
8887msgid "" 8706msgid ""
8888"Could not determine installation path for %s. Set `%s' environment " 8707"Could not determine installation path for %s. Set `%s' environment "
8889"variable.\n" 8708"variable.\n"
8890msgstr "" 8709msgstr ""
8891 8710
8892#: src/util/os_installation.c:879 8711#: src/util/os_installation.c:881
8893#, fuzzy, c-format 8712#, fuzzy, c-format
8894msgid "Could not find binary `%s' in PATH!\n" 8713msgid "Could not find binary `%s' in PATH!\n"
8895msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n" 8714msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n"
8896 8715
8897#: src/util/os_installation.c:920 8716#: src/util/os_installation.c:922
8898#, c-format 8717#, c-format
8899msgid "Binary `%s' exists, but is not SUID\n" 8718msgid "Binary `%s' exists, but is not SUID\n"
8900msgstr "" 8719msgstr ""
8901 8720
8902#: src/util/os_installation.c:951 8721#: src/util/os_installation.c:953
8903#, c-format 8722#, c-format
8904msgid "CreateProcess failed for binary %s (%d).\n" 8723msgid "CreateProcess failed for binary %s (%d).\n"
8905msgstr "" 8724msgstr ""
8906 8725
8907#: src/util/os_installation.c:961 8726#: src/util/os_installation.c:963
8908#, c-format 8727#, c-format
8909msgid "GetExitCodeProcess failed for binary %s (%d).\n" 8728msgid "GetExitCodeProcess failed for binary %s (%d).\n"
8910msgstr "" 8729msgstr ""
8911 8730
8912#: src/util/plugin.c:84 8731#: src/util/plugin.c:86
8913#, c-format 8732#, c-format
8914msgid "Initialization of plugin mechanism failed: %s!\n" 8733msgid "Initialization of plugin mechanism failed: %s!\n"
8915msgstr "Initialisierung des Plugin-Mechanismus fehlgeschlagen: %s!\n" 8734msgstr "Initialisierung des Plugin-Mechanismus fehlgeschlagen: %s!\n"
8916 8735
8917#: src/util/plugin.c:149 8736#: src/util/plugin.c:151
8918#, fuzzy, c-format 8737#, fuzzy, c-format
8919msgid "`%s' failed to resolve method '%s' with error: %s\n" 8738msgid "`%s' failed to resolve method '%s' with error: %s\n"
8920msgstr "" 8739msgstr ""
8921"`%s' konnte die Methode '%s%s' nicht auflösen. Ort: %s:%d. Fehler: %s\n" 8740"`%s' konnte die Methode '%s%s' nicht auflösen. Ort: %s:%d. Fehler: %s\n"
8922 8741
8923#: src/util/plugin.c:224 8742#: src/util/plugin.c:226
8924#, fuzzy, c-format 8743#, fuzzy, c-format
8925msgid "`%s' failed for library `%s' with error: %s\n" 8744msgid "`%s' failed for library `%s' with error: %s\n"
8926msgstr "`%s' fehlgeschlagen für die Bibliothek `%s'. Ort: %s:%d. Fehler: %s\n" 8745msgstr "`%s' fehlgeschlagen für die Bibliothek `%s'. Ort: %s:%d. Fehler: %s\n"
8927 8746
8928#: src/util/plugin.c:383 8747#: src/util/plugin.c:385
8929#, fuzzy 8748#, fuzzy
8930msgid "Could not determine plugin installation path.\n" 8749msgid "Could not determine plugin installation path.\n"
8931msgstr "Öffentliche IP-Adresse konnte nicht ermittelt werden.\n" 8750msgstr "Öffentliche IP-Adresse konnte nicht ermittelt werden.\n"
8932 8751
8933#: src/util/regex.c:132 8752#: src/util/program.c:283
8753#, fuzzy, c-format
8754msgid "Unreadable or malformed configuration file `%s', exit ...\n"
8755msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
8756
8757#: src/util/program.c:301
8758#, fuzzy, c-format
8759msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
8760msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
8761
8762#: src/util/program.c:318
8763#, fuzzy
8764msgid "Unreadable or malformed configuration, exit ...\n"
8765msgstr "GNUnet Konfiguration"
8766
8767#: src/util/regex.c:134
8934#, c-format 8768#, c-format
8935msgid "Bad mask: %d\n" 8769msgid "Bad mask: %d\n"
8936msgstr "" 8770msgstr ""
8937 8771
8938#: src/util/resolver_api.c:216 8772#: src/util/resolver_api.c:218
8939#, c-format 8773#, c-format
8940msgid "" 8774msgid ""
8941"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n" 8775"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n"
8942msgstr "" 8776msgstr ""
8943 8777
8944#: src/util/resolver_api.c:237 8778#: src/util/resolver_api.c:239
8945#, fuzzy, c-format 8779#, fuzzy, c-format
8946msgid "" 8780msgid ""
8947"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS " 8781"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS "
@@ -8950,370 +8784,482 @@ msgstr ""
8950"Sie müssen für `%s' in der Sektion `%s' der Konfigurationsdatei eine " 8784"Sie müssen für `%s' in der Sektion `%s' der Konfigurationsdatei eine "
8951"positive Zahl angeben.\n" 8785"positive Zahl angeben.\n"
8952 8786
8953#: src/util/resolver_api.c:873 8787#: src/util/resolver_api.c:875
8954#, fuzzy, c-format 8788#, fuzzy, c-format
8955msgid "Timeout trying to resolve hostname `%s'.\n" 8789msgid "Timeout trying to resolve hostname `%s'.\n"
8956msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n" 8790msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
8957 8791
8958#: src/util/resolver_api.c:886 8792#: src/util/resolver_api.c:888
8959#, c-format 8793#, c-format
8960msgid "Timeout trying to resolve IP address `%s'.\n" 8794msgid "Timeout trying to resolve IP address `%s'.\n"
8961msgstr "" 8795msgstr ""
8962 8796
8963#: src/util/resolver_api.c:1071 8797#: src/util/resolver_api.c:1073
8964#, fuzzy 8798#, fuzzy
8965msgid "Resolver not configured correctly.\n" 8799msgid "Resolver not configured correctly.\n"
8966msgstr "Standarddienst »%s« ist nicht korrekt eingerichtet!\n" 8800msgstr "Standarddienst »%s« ist nicht korrekt eingerichtet!\n"
8967 8801
8968#: src/util/resolver_api.c:1158 src/util/resolver_api.c:1181 8802#: src/util/resolver_api.c:1160 src/util/resolver_api.c:1183
8969#: src/util/resolver_api.c:1195 8803#: src/util/resolver_api.c:1197
8970#, fuzzy, c-format 8804#, fuzzy, c-format
8971msgid "Could not resolve our FQDN: %s\n" 8805msgid "Could not resolve our FQDN: %s\n"
8972msgstr "`%s' konnte nicht aufgelöst werden: %s\n" 8806msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
8973 8807
8974#: src/util/service.c:1303 8808#: src/util/service.c:674
8975msgid ""
8976"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8977msgstr ""
8978
8979#: src/util/service.c:2123
8980#, c-format 8809#, c-format
8981msgid "" 8810msgid ""
8982"Processing code for message of type %u did not call " 8811"Processing code for message of type %u did not call "
8983"`GNUNET_SERVICE_client_continue' after %s\n" 8812"`GNUNET_SERVICE_client_continue' after %s\n"
8984msgstr "" 8813msgstr ""
8985 8814
8986#: src/util/signal.c:87 8815#: src/util/service.c:1862
8816msgid ""
8817"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8818msgstr ""
8819
8820#: src/util/signal.c:89
8987#, fuzzy, c-format 8821#, fuzzy, c-format
8988msgid "signal (%d, %p) returned %d.\n" 8822msgid "signal (%d, %p) returned %d.\n"
8989msgstr "Aufruf von `%s' gibt %d zurück.\n" 8823msgstr "Aufruf von `%s' gibt %d zurück.\n"
8990 8824
8991#: src/util/socks.c:595 8825#: src/util/socks.c:597
8992#, c-format 8826#, c-format
8993msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n" 8827msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
8994msgstr "" 8828msgstr ""
8995 8829
8996#: src/util/socks.c:614 8830#: src/util/socks.c:616
8997#, c-format 8831#, c-format
8998msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n" 8832msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
8999msgstr "" 8833msgstr ""
9000 8834
9001#: src/util/strings.c:174 8835#: src/util/strings.c:176
9002msgid "b" 8836msgid "b"
9003msgstr "b" 8837msgstr "b"
9004 8838
9005#: src/util/strings.c:471 8839#: src/util/strings.c:475
9006#, c-format 8840#, c-format
9007msgid "Character sets requested were `%s'->`%s'\n" 8841msgid "Character sets requested were `%s'->`%s'\n"
9008msgstr "" 8842msgstr ""
9009 8843
9010#: src/util/strings.c:598 8844#: src/util/strings.c:602
9011msgid "Failed to expand `$HOME': environment variable `HOME' not set" 8845msgid "Failed to expand `$HOME': environment variable `HOME' not set"
9012msgstr "" 8846msgstr ""
9013 8847
9014#: src/util/strings.c:702 8848#: src/util/strings.c:706
9015msgid "µs" 8849msgid "µs"
9016msgstr "µs" 8850msgstr "µs"
9017 8851
9018#: src/util/strings.c:706 8852#: src/util/strings.c:710
9019msgid "forever" 8853msgid "forever"
9020msgstr "" 8854msgstr ""
9021 8855
9022#: src/util/strings.c:708 8856#: src/util/strings.c:712
9023msgid "0 ms" 8857msgid "0 ms"
9024msgstr "0 ms" 8858msgstr "0 ms"
9025 8859
9026#: src/util/strings.c:714 8860#: src/util/strings.c:718
9027msgid "ms" 8861msgid "ms"
9028msgstr "ms" 8862msgstr "ms"
9029 8863
9030#: src/util/strings.c:720 8864#: src/util/strings.c:724
9031msgid "s" 8865msgid "s"
9032msgstr "s" 8866msgstr "s"
9033 8867
9034#: src/util/strings.c:726 8868#: src/util/strings.c:730
9035msgid "m" 8869msgid "m"
9036msgstr "m" 8870msgstr "m"
9037 8871
9038#: src/util/strings.c:732 8872#: src/util/strings.c:736
9039msgid "h" 8873msgid "h"
9040msgstr "h" 8874msgstr "h"
9041 8875
9042#: src/util/strings.c:739 8876#: src/util/strings.c:743
9043msgid "day" 8877msgid "day"
9044msgstr "Tag" 8878msgstr "Tag"
9045 8879
9046#: src/util/strings.c:741 8880#: src/util/strings.c:745
9047msgid "days" 8881msgid "days"
9048msgstr "Tage" 8882msgstr "Tage"
9049 8883
9050#: src/util/strings.c:770 8884#: src/util/strings.c:774
9051msgid "end of time" 8885msgid "end of time"
9052msgstr "" 8886msgstr ""
9053 8887
9054#: src/util/strings.c:1272 8888#: src/util/strings.c:1277
9055msgid "IPv6 address did not start with `['\n" 8889msgid "IPv6 address did not start with `['\n"
9056msgstr "IPv6-Adresse beginnt nicht mit »[«\n" 8890msgstr "IPv6-Adresse beginnt nicht mit »[«\n"
9057 8891
9058#: src/util/strings.c:1280 8892#: src/util/strings.c:1285
9059msgid "IPv6 address did contain ':' to separate port number\n" 8893msgid "IPv6 address did contain ':' to separate port number\n"
9060msgstr "IPv6-Adresse enthält kein »:« zur Abtrennung der Portnummer\n" 8894msgstr "IPv6-Adresse enthält kein »:« zur Abtrennung der Portnummer\n"
9061 8895
9062#: src/util/strings.c:1286 8896#: src/util/strings.c:1291
9063msgid "IPv6 address did contain ']' before ':' to separate port number\n" 8897msgid "IPv6 address did contain ']' before ':' to separate port number\n"
9064msgstr "IPv6-Adresse enthält kein »]« vor »:« zur Abtrennung der Portnummer\n" 8898msgstr "IPv6-Adresse enthält kein »]« vor »:« zur Abtrennung der Portnummer\n"
9065 8899
9066#: src/util/strings.c:1293 8900#: src/util/strings.c:1301
9067msgid "IPv6 address did contain a valid port number after the last ':'\n" 8901msgid "IPv6 address did contain a valid port number after the last ':'\n"
9068msgstr "IPv6-Adresse enthält keine gültige Portnummer nach dem letzten »:«\n" 8902msgstr "IPv6-Adresse enthält keine gültige Portnummer nach dem letzten »:«\n"
9069 8903
9070#: src/util/strings.c:1302 8904#: src/util/strings.c:1310
9071#, fuzzy, c-format 8905#, fuzzy, c-format
9072msgid "Invalid IPv6 address `%s': %s\n" 8906msgid "Invalid IPv6 address `%s': %s\n"
9073msgstr "Ungültige Antwort auf `%s' von `%s'\n" 8907msgstr "Ungültige Antwort auf `%s' von `%s'\n"
9074 8908
9075#: src/util/strings.c:1574 src/util/strings.c:1590 8909#: src/util/strings.c:1586 src/util/strings.c:1602
9076msgid "Port not in range\n" 8910msgid "Port not in range\n"
9077msgstr "Port außerhalb des Bereichs\n" 8911msgstr "Port außerhalb des Bereichs\n"
9078 8912
9079#: src/util/strings.c:1599 8913#: src/util/strings.c:1611
9080#, c-format 8914#, c-format
9081msgid "Malformed port policy `%s'\n" 8915msgid "Malformed port policy `%s'\n"
9082msgstr "" 8916msgstr ""
9083 8917
9084#: src/util/strings.c:1682 src/util/strings.c:1713 src/util/strings.c:1761 8918#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
9085#: src/util/strings.c:1782 8919#: src/util/strings.c:1798
9086#, c-format 8920#, c-format
9087msgid "Invalid format for IP: `%s'\n" 8921msgid "Invalid format for IP: `%s'\n"
9088msgstr "Ungültiges Format für IP: »%s«\n" 8922msgstr "Ungültiges Format für IP: »%s«\n"
9089 8923
9090#: src/util/strings.c:1739 8924#: src/util/strings.c:1754
9091#, c-format 8925#, c-format
9092msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)." 8926msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
9093msgstr "Ungültige Netzwerk-Notation ('/%d ist nicht gültig in IPv4 CIDR)." 8927msgstr "Ungültige Netzwerk-Notation ('/%d ist nicht gültig in IPv4 CIDR)."
9094 8928
9095#: src/util/strings.c:1791 8929#: src/util/strings.c:1807
9096#, fuzzy, c-format 8930#, fuzzy, c-format
9097msgid "Invalid format: `%s'\n" 8931msgid "Invalid format: `%s'\n"
9098msgstr "Ungültiges Format für IP: `%s'\n" 8932msgstr "Ungültiges Format für IP: `%s'\n"
9099 8933
9100#: src/util/strings.c:1843 8934#: src/util/strings.c:1860
9101#, c-format 8935#, c-format
9102msgid "Invalid network notation (does not end with ';': `%s')\n" 8936msgid "Invalid network notation (does not end with ';': `%s')\n"
9103msgstr "Ungültige Netzwerk-Notation (endet nicht mit »;«: »%s«)\n" 8937msgstr "Ungültige Netzwerk-Notation (endet nicht mit »;«: »%s«)\n"
9104 8938
9105#: src/util/strings.c:1893 8939#: src/util/strings.c:1914
9106#, fuzzy, c-format 8940#, fuzzy, c-format
9107msgid "Wrong format `%s' for netmask\n" 8941msgid "Wrong format `%s' for netmask\n"
9108msgstr "Falsches Format `%s' für Netzmaske: %s\n" 8942msgstr "Falsches Format `%s' für Netzmaske: %s\n"
9109 8943
9110#: src/util/strings.c:1924 8944#: src/util/strings.c:1945
9111#, fuzzy, c-format 8945#, fuzzy, c-format
9112msgid "Wrong format `%s' for network\n" 8946msgid "Wrong format `%s' for network\n"
9113msgstr "Falsches Format `%s' für Netzwerk: %s\n" 8947msgstr "Falsches Format `%s' für Netzwerk: %s\n"
9114 8948
9115#: src/vpn/gnunet-service-vpn.c:538 src/vpn/gnunet-service-vpn.c:1805 8949#: src/util/time.c:828 src/util/time.c:860
8950#, c-format
8951msgid "Failed to map `%s', cannot assure monotonic time!\n"
8952msgstr ""
8953
8954#: src/util/time.c:866
8955#, c-format
8956msgid ""
8957"Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
8958msgstr ""
8959
8960#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
9116msgid "# Active channels" 8961msgid "# Active channels"
9117msgstr "# aktive Kanäle" 8962msgstr "# aktive Kanäle"
9118 8963
9119#: src/vpn/gnunet-service-vpn.c:597 8964#: src/vpn/gnunet-service-vpn.c:599
9120#, fuzzy 8965#, fuzzy
9121msgid "# Messages dropped in cadet queue (overflow)" 8966msgid "# Messages dropped in cadet queue (overflow)"
9122msgstr "# Bytes verworfen von TCP (ausgehend)" 8967msgstr "# Bytes verworfen von TCP (ausgehend)"
9123 8968
9124#: src/vpn/gnunet-service-vpn.c:751 8969#: src/vpn/gnunet-service-vpn.c:753
9125#, fuzzy 8970#, fuzzy
9126msgid "# ICMP packets received from cadet" 8971msgid "# ICMP packets received from cadet"
9127msgstr "# Bytes empfangen über TCP" 8972msgstr "# Bytes empfangen über TCP"
9128 8973
9129#: src/vpn/gnunet-service-vpn.c:1094 8974#: src/vpn/gnunet-service-vpn.c:1096
9130#, fuzzy 8975#, fuzzy
9131msgid "# UDP packets received from cadet" 8976msgid "# UDP packets received from cadet"
9132msgstr "# Bytes empfangen über TCP" 8977msgstr "# Bytes empfangen über TCP"
9133 8978
9134#: src/vpn/gnunet-service-vpn.c:1253 8979#: src/vpn/gnunet-service-vpn.c:1255
9135#, fuzzy 8980#, fuzzy
9136msgid "# TCP packets received from cadet" 8981msgid "# TCP packets received from cadet"
9137msgstr "# Bytes empfangen über TCP" 8982msgstr "# Bytes empfangen über TCP"
9138 8983
9139#: src/vpn/gnunet-service-vpn.c:1465 8984#: src/vpn/gnunet-service-vpn.c:1467
9140#, fuzzy 8985#, fuzzy
9141msgid "# Cadet channels created" 8986msgid "# Cadet channels created"
9142msgstr "# PING Nachrichten erstellt" 8987msgstr "# PING Nachrichten erstellt"
9143 8988
9144#: src/vpn/gnunet-service-vpn.c:1685 8989#: src/vpn/gnunet-service-vpn.c:1687
9145#, c-format 8990#, c-format
9146msgid "Protocol %u not supported, dropping\n" 8991msgid "Protocol %u not supported, dropping\n"
9147msgstr "" 8992msgstr ""
9148 8993
9149#: src/vpn/gnunet-service-vpn.c:1824 8994#: src/vpn/gnunet-service-vpn.c:1826
9150#, fuzzy 8995#, fuzzy
9151msgid "# Packets dropped (channel not yet online)" 8996msgid "# Packets dropped (channel not yet online)"
9152msgstr "# Bytes verworfen von TCP (ausgehend)" 8997msgstr "# Bytes verworfen von TCP (ausgehend)"
9153 8998
9154#: src/vpn/gnunet-service-vpn.c:2004 8999#: src/vpn/gnunet-service-vpn.c:2006
9155msgid "# ICMPv4 packets dropped (not allowed)" 9000msgid "# ICMPv4 packets dropped (not allowed)"
9156msgstr "" 9001msgstr ""
9157 9002
9158#: src/vpn/gnunet-service-vpn.c:2025 9003#: src/vpn/gnunet-service-vpn.c:2027
9159msgid "# ICMPv6 packets dropped (not allowed)" 9004msgid "# ICMPv6 packets dropped (not allowed)"
9160msgstr "" 9005msgstr ""
9161 9006
9162#: src/vpn/gnunet-service-vpn.c:2233 9007#: src/vpn/gnunet-service-vpn.c:2235
9163#, fuzzy 9008#, fuzzy
9164msgid "# Packets received from TUN interface" 9009msgid "# Packets received from TUN interface"
9165msgstr "" 9010msgstr ""
9166"Die Formatüberprüfung des Pakets, das von %s:%d (UDP6) empfangen wurde, " 9011"Die Formatüberprüfung des Pakets, das von %s:%d (UDP6) empfangen wurde, "
9167"schlug fehl." 9012"schlug fehl."
9168 9013
9169#: src/vpn/gnunet-service-vpn.c:2266 src/vpn/gnunet-service-vpn.c:2302 9014#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
9170#, c-format 9015#, c-format
9171msgid "Packet received for unmapped destination `%s' (dropping it)\n" 9016msgid "Packet received for unmapped destination `%s' (dropping it)\n"
9172msgstr "" 9017msgstr ""
9173 9018
9174#: src/vpn/gnunet-service-vpn.c:2312 9019#: src/vpn/gnunet-service-vpn.c:2314
9175msgid "Received IPv4 packet with options (dropping it)\n" 9020msgid "Received IPv4 packet with options (dropping it)\n"
9176msgstr "" 9021msgstr ""
9177 9022
9178#: src/vpn/gnunet-service-vpn.c:2326 9023#: src/vpn/gnunet-service-vpn.c:2328
9179#, c-format 9024#, c-format
9180msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" 9025msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
9181msgstr "" 9026msgstr ""
9182 9027
9183#: src/vpn/gnunet-service-vpn.c:2365 9028#: src/vpn/gnunet-service-vpn.c:2367
9184msgid "Failed to find unallocated IPv4 address in VPN's range\n" 9029msgid "Failed to find unallocated IPv4 address in VPN's range\n"
9185msgstr "" 9030msgstr ""
9186 9031
9187#: src/vpn/gnunet-service-vpn.c:2420 9032#: src/vpn/gnunet-service-vpn.c:2422
9188#, fuzzy 9033#, fuzzy
9189msgid "Failed to find unallocated IPv6 address in VPN's range\n" 9034msgid "Failed to find unallocated IPv6 address in VPN's range\n"
9190msgstr "Die öffentliche IPv6-Adresse konnte nicht ermittelt werden!\n" 9035msgstr "Die öffentliche IPv6-Adresse konnte nicht ermittelt werden!\n"
9191 9036
9192#: src/vpn/gnunet-service-vpn.c:2462 src/vpn/gnunet-service-vpn.c:2684 9037#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
9193msgid "# Active destinations" 9038msgid "# Active destinations"
9194msgstr "" 9039msgstr ""
9195 9040
9196#: src/vpn/gnunet-service-vpn.c:2733 9041#: src/vpn/gnunet-service-vpn.c:2735
9197msgid "Failed to allocate IP address for new destination\n" 9042msgid "Failed to allocate IP address for new destination\n"
9198msgstr "" 9043msgstr ""
9199 9044
9200#: src/vpn/gnunet-service-vpn.c:2996 9045#: src/vpn/gnunet-service-vpn.c:2998
9201msgid "Must specify valid IPv6 address" 9046msgid "Must specify valid IPv6 address"
9202msgstr "" 9047msgstr ""
9203 9048
9204#: src/vpn/gnunet-service-vpn.c:3020 9049#: src/vpn/gnunet-service-vpn.c:3022
9205msgid "Must specify valid IPv6 mask" 9050msgid "Must specify valid IPv6 mask"
9206msgstr "" 9051msgstr ""
9207 9052
9208#: src/vpn/gnunet-service-vpn.c:3028 9053#: src/vpn/gnunet-service-vpn.c:3030
9209msgid "IPv6 support disabled as this system does not support IPv6\n" 9054msgid "IPv6 support disabled as this system does not support IPv6\n"
9210msgstr "" 9055msgstr ""
9211 9056
9212#: src/vpn/gnunet-service-vpn.c:3041 9057#: src/vpn/gnunet-service-vpn.c:3043
9213msgid "Must specify valid IPv4 address" 9058msgid "Must specify valid IPv4 address"
9214msgstr "" 9059msgstr ""
9215 9060
9216#: src/vpn/gnunet-service-vpn.c:3054 9061#: src/vpn/gnunet-service-vpn.c:3056
9217msgid "Must specify valid IPv4 mask" 9062msgid "Must specify valid IPv4 mask"
9218msgstr "" 9063msgstr ""
9219 9064
9220#: src/vpn/gnunet-service-vpn.c:3064 9065#: src/vpn/gnunet-service-vpn.c:3066
9221msgid "IPv4 support disabled as this system does not support IPv4\n" 9066msgid "IPv4 support disabled as this system does not support IPv4\n"
9222msgstr "" 9067msgstr ""
9223 9068
9224#: src/vpn/gnunet-vpn.c:145 9069#: src/vpn/gnunet-vpn.c:147
9225msgid "Error creating tunnel\n" 9070msgid "Error creating tunnel\n"
9226msgstr "Fehler beim Anlegen des Tunnels\n" 9071msgstr "Fehler beim Anlegen des Tunnels\n"
9227 9072
9228#: src/vpn/gnunet-vpn.c:189 src/vpn/gnunet-vpn.c:220 9073#: src/vpn/gnunet-vpn.c:191 src/vpn/gnunet-vpn.c:222
9229#, c-format 9074#, c-format
9230msgid "Option `%s' makes no sense with option `%s'.\n" 9075msgid "Option `%s' makes no sense with option `%s'.\n"
9231msgstr "Option »%s« ergibt keinen Sinn mit der Option »%s«.\n" 9076msgstr "Option »%s« ergibt keinen Sinn mit der Option »%s«.\n"
9232 9077
9233#: src/vpn/gnunet-vpn.c:202 9078#: src/vpn/gnunet-vpn.c:204
9234#, c-format 9079#, c-format
9235msgid "Option `%s' or `%s' is required.\n" 9080msgid "Option `%s' or `%s' is required.\n"
9236msgstr "" 9081msgstr ""
9237 9082
9238#: src/vpn/gnunet-vpn.c:214 9083#: src/vpn/gnunet-vpn.c:216
9239#, c-format 9084#, c-format
9240msgid "Option `%s' or `%s' is required when using option `%s'.\n" 9085msgid "Option `%s' or `%s' is required when using option `%s'.\n"
9241msgstr "Option »%s« oder »%s« ergibt keinen Sinn mit der Option »%s«.\n" 9086msgstr "Option »%s« oder »%s« ergibt keinen Sinn mit der Option »%s«.\n"
9242 9087
9243#: src/vpn/gnunet-vpn.c:234 9088#: src/vpn/gnunet-vpn.c:236
9244#, c-format 9089#, c-format
9245msgid "`%s' is not a valid peer identifier.\n" 9090msgid "`%s' is not a valid peer identifier.\n"
9246msgstr "»%s« ist kein gültiger Knoten-Bezeichner.\n" 9091msgstr "»%s« ist kein gültiger Knoten-Bezeichner.\n"
9247 9092
9248#: src/vpn/gnunet-vpn.c:254 9093#: src/vpn/gnunet-vpn.c:256
9249#, c-format 9094#, c-format
9250msgid "`%s' is not a valid IP address.\n" 9095msgid "`%s' is not a valid IP address.\n"
9251msgstr "»%s« ist keine gültige IP-Adresse.\n" 9096msgstr "»%s« ist keine gültige IP-Adresse.\n"
9252 9097
9253#: src/vpn/gnunet-vpn.c:290 9098#: src/vpn/gnunet-vpn.c:292
9254msgid "request that result should be an IPv4 address" 9099msgid "request that result should be an IPv4 address"
9255msgstr "" 9100msgstr ""
9256 9101
9257#: src/vpn/gnunet-vpn.c:295 9102#: src/vpn/gnunet-vpn.c:297
9258msgid "request that result should be an IPv6 address" 9103msgid "request that result should be an IPv6 address"
9259msgstr "" 9104msgstr ""
9260 9105
9261#: src/vpn/gnunet-vpn.c:301 9106#: src/vpn/gnunet-vpn.c:303
9262msgid "how long should the mapping be valid for new tunnels?" 9107msgid "how long should the mapping be valid for new tunnels?"
9263msgstr "" 9108msgstr ""
9264 9109
9265#: src/vpn/gnunet-vpn.c:307 9110#: src/vpn/gnunet-vpn.c:309
9266msgid "destination IP for the tunnel" 9111msgid "destination IP for the tunnel"
9267msgstr "Ziel-IP des Tunnels" 9112msgstr "Ziel-IP des Tunnels"
9268 9113
9269#: src/vpn/gnunet-vpn.c:313 9114#: src/vpn/gnunet-vpn.c:315
9270msgid "peer offering the service we would like to access" 9115msgid "peer offering the service we would like to access"
9271msgstr "" 9116msgstr ""
9272 9117
9273#: src/vpn/gnunet-vpn.c:319 9118#: src/vpn/gnunet-vpn.c:321
9274msgid "name of the service we would like to access" 9119msgid "name of the service we would like to access"
9275msgstr "Name des Dienstes, auf den zugegriffen werden soll" 9120msgstr "Name des Dienstes, auf den zugegriffen werden soll"
9276 9121
9277#: src/vpn/gnunet-vpn.c:324 9122#: src/vpn/gnunet-vpn.c:326
9278msgid "service is offered via TCP" 9123msgid "service is offered via TCP"
9279msgstr "Dienst wird über TCP angeboten" 9124msgstr "Dienst wird über TCP angeboten"
9280 9125
9281#: src/vpn/gnunet-vpn.c:329 9126#: src/vpn/gnunet-vpn.c:331
9282msgid "service is offered via UDP" 9127msgid "service is offered via UDP"
9283msgstr "Dienst wird über UDP angeboten" 9128msgstr "Dienst wird über UDP angeboten"
9284 9129
9285#: src/vpn/gnunet-vpn.c:342 9130#: src/vpn/gnunet-vpn.c:344
9286msgid "Setup tunnels via VPN." 9131msgid "Setup tunnels via VPN."
9287msgstr "Tunnel über VPN einrichten." 9132msgstr "Tunnel über VPN einrichten."
9288 9133
9289#: src/zonemaster/gnunet-service-zonemaster.c:836 9134#: src/zonemaster/gnunet-service-zonemaster.c:838
9290#: src/zonemaster/gnunet-service-zonemaster-monitor.c:414 9135#: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
9291#, fuzzy 9136#, fuzzy
9292msgid "Failed to connect to the namestore!\n" 9137msgid "Failed to connect to the namestore!\n"
9293msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" 9138msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
9294 9139
9295#: src/include/gnunet_common.h:770 src/include/gnunet_common.h:777 9140#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
9296#: src/include/gnunet_common.h:787 9141#: src/include/gnunet_common.h:789
9297#, fuzzy, c-format 9142#, fuzzy, c-format
9298msgid "Assertion failed at %s:%d. Aborting.\n" 9143msgid "Assertion failed at %s:%d. Aborting.\n"
9299msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" 9144msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
9300 9145
9301#: src/include/gnunet_common.h:795 9146#: src/include/gnunet_common.h:797
9302#, fuzzy, c-format 9147#, fuzzy, c-format
9303msgid "Assertion failed at %s:%d.\n" 9148msgid "Assertion failed at %s:%d.\n"
9304msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" 9149msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
9305 9150
9306#: src/include/gnunet_common.h:807 9151#: src/include/gnunet_common.h:809
9307#, fuzzy, c-format 9152#, fuzzy, c-format
9308msgid "External protocol violation detected at %s:%d.\n" 9153msgid "External protocol violation detected at %s:%d.\n"
9309msgstr "Protokollverletzung auf Socket. Kommando erwartet.\n" 9154msgstr "Protokollverletzung auf Socket. Kommando erwartet.\n"
9310 9155
9311#: src/include/gnunet_common.h:834 src/include/gnunet_common.h:843 9156#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
9312#, fuzzy, c-format 9157#, fuzzy, c-format
9313msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" 9158msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
9314msgstr "`%s' schlug bei Datei `%s' fehl. Ort: %s:%d. Fehler: %s\n" 9159msgstr "`%s' schlug bei Datei `%s' fehl. Ort: %s:%d. Fehler: %s\n"
9315 9160
9316#, fuzzy 9161#, fuzzy
9162#~ msgid "Invalid tunnel owner `%s'\n"
9163#~ msgstr "Ungültiger Parameter: `%s'\n"
9164
9165#, fuzzy
9166#~ msgid "Provide information about a particular tunnel"
9167#~ msgstr "Informationen über andere GNUnet Knoten ausgeben."
9168
9169#, fuzzy
9170#~ msgid "Failed to store membership information!\n"
9171#~ msgstr "Fehler beim Speichern der Konfiguration!"
9172
9173#, fuzzy
9174#~ msgid "Failed to test membership!\n"
9175#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
9176
9177#, fuzzy
9178#~ msgid "Dropping invalid fragment\n"
9179#~ msgstr "Ungültiges Argument »%s«\n"
9180
9181#, fuzzy
9182#~ msgid "Failed to store fragment\n"
9183#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
9184
9185#, fuzzy
9186#~ msgid "Failed to get fragment!\n"
9187#~ msgstr ""
9188#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
9189
9190#, fuzzy
9191#~ msgid "Failed to get message!\n"
9192#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
9193
9194#, fuzzy
9195#~ msgid "Failed to get message fragment!\n"
9196#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
9197
9198#, fuzzy
9199#~ msgid "Failed to get master counters!\n"
9200#~ msgstr ""
9201#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
9202
9203#, fuzzy
9204#~ msgid "Failed to begin modifying state: %d\n"
9205#~ msgstr ""
9206#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
9207
9208#, fuzzy
9209#~ msgid "Failed to modify state: %d\n"
9210#~ msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
9211
9212#, fuzzy
9213#~ msgid "Failed to end modifying state!\n"
9214#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
9215
9216#, fuzzy
9217#~ msgid "Failed to begin synchronizing state!\n"
9218#~ msgstr ""
9219#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
9220
9221#, fuzzy
9222#~ msgid "Failed to end synchronizing state!\n"
9223#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
9224
9225#, fuzzy
9226#~ msgid "Failed to reset state!\n"
9227#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
9228
9229#, fuzzy
9230#~ msgid "Failed to get state variable!\n"
9231#~ msgstr ""
9232#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
9233
9234#, fuzzy
9235#~ msgid "Unable to initialize Mysql.\n"
9236#~ msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
9237
9238#, fuzzy
9239#~ msgid "Failed to run SQL statement `%s'\n"
9240#~ msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
9241
9242#, fuzzy
9243#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
9244#~ msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
9245
9246#, fuzzy
9247#~ msgid "SQLite database running\n"
9248#~ msgstr "SQL Datenbank beschädigt, Ergebnis wird ignoriert.\n"
9249
9250#, fuzzy
9251#~ msgid "--place missing or invalid.\n"
9252#~ msgstr "Ungültige Antwort auf `%s'.\n"
9253
9254#, fuzzy
9255#~ msgid "name or public key of ego"
9256#~ msgstr "Ungültiger Parameter: `%s'\n"
9257
9258#, fuzzy
9259#~ msgid "number of messages to replay from history"
9260#~ msgstr "Anzahl an Durchläufen"
9261
9262#, fuzzy
9317#~ msgid "Could not resolve `%s' (%s): %s\n" 9263#~ msgid "Could not resolve `%s' (%s): %s\n"
9318#~ msgstr "`%s' konnte nicht aufgelöst werden: %s\n" 9264#~ msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
9319 9265
diff --git a/po/es.po b/po/es.po
index 3733454dd..f0d515263 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
8msgstr "" 8msgstr ""
9"Project-Id-Version: gnunet 0.9.5a\n" 9"Project-Id-Version: gnunet 0.9.5a\n"
10"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" 10"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
11"POT-Creation-Date: 2018-10-20 11:13+0200\n" 11"POT-Creation-Date: 2019-02-13 00:37+0100\n"
12"PO-Revision-Date: 2013-02-23 17:50+0100\n" 12"PO-Revision-Date: 2013-02-23 17:50+0100\n"
13"Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n" 13"Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n"
14"Language-Team: Spanish <es@li.org>\n" 14"Language-Team: Spanish <es@li.org>\n"
@@ -18,62 +18,62 @@ msgstr ""
18"Content-Transfer-Encoding: 8bit\n" 18"Content-Transfer-Encoding: 8bit\n"
19"Plural-Forms: nplurals=2; plural=(n != 1);\n" 19"Plural-Forms: nplurals=2; plural=(n != 1);\n"
20 20
21#: src/arm/gnunet-arm.c:154 21#: src/arm/gnunet-arm.c:156
22#, c-format 22#, c-format
23msgid "Failed to remove configuration file %s\n" 23msgid "Failed to remove configuration file %s\n"
24msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" 24msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
25 25
26#: src/arm/gnunet-arm.c:160 26#: src/arm/gnunet-arm.c:162
27#, c-format 27#, c-format
28msgid "Failed to remove servicehome directory %s\n" 28msgid "Failed to remove servicehome directory %s\n"
29msgstr "Se produjo un fallo al eliminar el directorio «servicehome» %s.\n" 29msgstr "Se produjo un fallo al eliminar el directorio «servicehome» %s.\n"
30 30
31#: src/arm/gnunet-arm.c:220 src/testbed/gnunet-service-testbed_peers.c:1137 31#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
32#, fuzzy 32#, fuzzy
33msgid "Message was sent successfully" 33msgid "Message was sent successfully"
34msgstr "El almacén de nombres añadió el registro satisfactoriamente" 34msgstr "El almacén de nombres añadió el registro satisfactoriamente"
35 35
36#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139 36#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
37#, fuzzy 37#, fuzzy
38msgid "We disconnected from ARM before we could send a request" 38msgid "We disconnected from ARM before we could send a request"
39msgstr "# desconexiones del par debido a una petición explícita" 39msgstr "# desconexiones del par debido a una petición explícita"
40 40
41#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141 41#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
42#, fuzzy 42#, fuzzy
43msgid "Unknown request status" 43msgid "Unknown request status"
44msgstr "Usuario desconocido «%s»\n" 44msgstr "Usuario desconocido «%s»\n"
45 45
46#: src/arm/gnunet-arm.c:240 46#: src/arm/gnunet-arm.c:242
47#, fuzzy 47#, fuzzy
48msgid "is stopped" 48msgid "is stopped"
49msgstr "# elementos almacenados" 49msgstr "# elementos almacenados"
50 50
51#: src/arm/gnunet-arm.c:242 51#: src/arm/gnunet-arm.c:244
52#, fuzzy 52#, fuzzy
53msgid "is starting" 53msgid "is starting"
54msgstr "'%s' comenzando\n" 54msgstr "'%s' comenzando\n"
55 55
56#: src/arm/gnunet-arm.c:244 56#: src/arm/gnunet-arm.c:246
57#, fuzzy 57#, fuzzy
58msgid "is stopping" 58msgid "is stopping"
59msgstr "# elementos almacenados" 59msgstr "# elementos almacenados"
60 60
61#: src/arm/gnunet-arm.c:246 61#: src/arm/gnunet-arm.c:248
62#, fuzzy 62#, fuzzy
63msgid "is starting already" 63msgid "is starting already"
64msgstr "'%s' comenzando\n" 64msgstr "'%s' comenzando\n"
65 65
66#: src/arm/gnunet-arm.c:248 66#: src/arm/gnunet-arm.c:250
67#, fuzzy 67#, fuzzy
68msgid "is stopping already" 68msgid "is stopping already"
69msgstr "'%s' comenzando\n" 69msgstr "'%s' comenzando\n"
70 70
71#: src/arm/gnunet-arm.c:250 71#: src/arm/gnunet-arm.c:252
72#, fuzzy 72#, fuzzy
73msgid "is started already" 73msgid "is started already"
74msgstr "'%s' comenzando\n" 74msgstr "'%s' comenzando\n"
75 75
76#: src/arm/gnunet-arm.c:252 76#: src/arm/gnunet-arm.c:254
77#, fuzzy 77#, fuzzy
78msgid "is stopped already" 78msgid "is stopped already"
79msgstr "'%s' comenzando\n" 79msgstr "'%s' comenzando\n"
@@ -81,161 +81,161 @@ msgstr "'%s' comenzando\n"
81# Miguel: ¿Debería cambiar las siglas de ARM? 81# Miguel: ¿Debería cambiar las siglas de ARM?
82# De momento las he mantenido con una traducción en 82# De momento las he mantenido con una traducción en
83# otro mensaje. 83# otro mensaje.
84#: src/arm/gnunet-arm.c:254 84#: src/arm/gnunet-arm.c:256
85#, fuzzy 85#, fuzzy
86msgid "service is not known to ARM" 86msgid "service is not known to ARM"
87msgstr "El servicio «%s» es desconocido para el ARM.\n" 87msgstr "El servicio «%s» es desconocido para el ARM.\n"
88 88
89#: src/arm/gnunet-arm.c:256 89#: src/arm/gnunet-arm.c:258
90#, fuzzy 90#, fuzzy
91msgid "service failed to start" 91msgid "service failed to start"
92msgstr "El proceso del servicio no devolvió un estado\n" 92msgstr "El proceso del servicio no devolvió un estado\n"
93 93
94# Miguel: ¿Es mejor «ya que» que «porque» o «debido al apagado»? 94# Miguel: ¿Es mejor «ya que» que «porque» o «debido al apagado»?
95#: src/arm/gnunet-arm.c:258 95#: src/arm/gnunet-arm.c:260
96#, fuzzy 96#, fuzzy
97msgid "service cannot be manipulated because ARM is shutting down" 97msgid "service cannot be manipulated because ARM is shutting down"
98msgstr "Petición ignorada porque el ARM se está apagando.\n" 98msgstr "Petición ignorada porque el ARM se está apagando.\n"
99 99
100#: src/arm/gnunet-arm.c:260 100#: src/arm/gnunet-arm.c:262
101#, fuzzy 101#, fuzzy
102msgid "Unknown result code." 102msgid "Unknown result code."
103msgstr "Código de respuesta del ARM desconocido.\n" 103msgstr "Código de respuesta del ARM desconocido.\n"
104 104
105#: src/arm/gnunet-arm.c:292 105#: src/arm/gnunet-arm.c:295
106msgid "Fatal error initializing ARM API.\n" 106msgid "Fatal error initializing ARM API.\n"
107msgstr "Error fatal al inicializar la API del ARM.\n" 107msgstr "Error fatal al inicializar la API del ARM.\n"
108 108
109#: src/arm/gnunet-arm.c:320 src/arm/gnunet-arm.c:329 109#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
110#, fuzzy, c-format 110#, fuzzy, c-format
111msgid "Failed to start the ARM service: %s\n" 111msgid "Failed to start the ARM service: %s\n"
112msgstr "Se produjo un fallo al iniciar el servicio «%s»\n" 112msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
113 113
114#: src/arm/gnunet-arm.c:363 114#: src/arm/gnunet-arm.c:368
115#, fuzzy, c-format 115#, fuzzy, c-format
116msgid "Failed to send a stop request to the ARM service: %s\n" 116msgid "Failed to send a stop request to the ARM service: %s\n"
117msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n" 117msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n"
118 118
119#: src/arm/gnunet-arm.c:374 119#: src/arm/gnunet-arm.c:379
120#, fuzzy, c-format 120#, fuzzy, c-format
121msgid "Failed to stop the ARM service: %s\n" 121msgid "Failed to stop the ARM service: %s\n"
122msgstr "Fichero almacenado en '%s'.\n" 122msgstr "Fichero almacenado en '%s'.\n"
123 123
124#: src/arm/gnunet-arm.c:413 124#: src/arm/gnunet-arm.c:419
125#, fuzzy, c-format 125#, fuzzy, c-format
126msgid "Failed to send a request to start the `%s' service: %s\n" 126msgid "Failed to send a request to start the `%s' service: %s\n"
127msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n" 127msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n"
128 128
129#: src/arm/gnunet-arm.c:423 129#: src/arm/gnunet-arm.c:429
130#, fuzzy, c-format 130#, fuzzy, c-format
131msgid "Failed to start the `%s' service: %s\n" 131msgid "Failed to start the `%s' service: %s\n"
132msgstr "Se produjo un fallo al iniciar el servicio «%s»\n" 132msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
133 133
134#: src/arm/gnunet-arm.c:460 134#: src/arm/gnunet-arm.c:467
135#, fuzzy, c-format 135#, fuzzy, c-format
136msgid "Failed to send a request to kill the `%s' service: %%s\n" 136msgid "Failed to send a request to kill the `%s' service: %%s\n"
137msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n" 137msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n"
138 138
139#: src/arm/gnunet-arm.c:471 139#: src/arm/gnunet-arm.c:478
140#, fuzzy, c-format 140#, fuzzy, c-format
141msgid "Failed to kill the `%s' service: %s\n" 141msgid "Failed to kill the `%s' service: %s\n"
142msgstr "Se produjo un fallo al escribir «%s»: %s\n" 142msgstr "Se produjo un fallo al escribir «%s»: %s\n"
143 143
144#: src/arm/gnunet-arm.c:511 144#: src/arm/gnunet-arm.c:519
145#, fuzzy, c-format 145#, fuzzy, c-format
146msgid "Failed to request a list of services: %s\n" 146msgid "Failed to request a list of services: %s\n"
147msgstr "Se produjo un fallo al iniciar el servicio «%s»\n" 147msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
148 148
149#: src/arm/gnunet-arm.c:520 149#: src/arm/gnunet-arm.c:528
150msgid "Error communicating with ARM. ARM not running?\n" 150msgid "Error communicating with ARM. ARM not running?\n"
151msgstr "Error al comunicar con el ARM. ¿Está el ARM ejecutándose?\n" 151msgstr "Error al comunicar con el ARM. ¿Está el ARM ejecutándose?\n"
152 152
153#: src/arm/gnunet-arm.c:526 153#: src/arm/gnunet-arm.c:534
154msgid "Running services:\n" 154msgid "Running services:\n"
155msgstr "Servicios en ejecución:\n" 155msgstr "Servicios en ejecución:\n"
156 156
157#: src/arm/gnunet-arm.c:614 157#: src/arm/gnunet-arm.c:623
158#, c-format 158#, c-format
159msgid "Now only monitoring, press CTRL-C to stop.\n" 159msgid "Now only monitoring, press CTRL-C to stop.\n"
160msgstr "Ahora solo monitorizando, pulsa CTRL-C para parar.\n" 160msgstr "Ahora solo monitorizando, pulsa CTRL-C para parar.\n"
161 161
162#: src/arm/gnunet-arm.c:646 162#: src/arm/gnunet-arm.c:656
163#, c-format 163#, c-format
164msgid "Stopped %s.\n" 164msgid "Stopped %s.\n"
165msgstr "%s detenido.\n" 165msgstr "%s detenido.\n"
166 166
167#: src/arm/gnunet-arm.c:649 167#: src/arm/gnunet-arm.c:659
168#, fuzzy, c-format 168#, fuzzy, c-format
169msgid "Starting %s...\n" 169msgid "Starting %s...\n"
170msgstr "Iniciando descarga «%s».\n" 170msgstr "Iniciando descarga «%s».\n"
171 171
172#: src/arm/gnunet-arm.c:652 172#: src/arm/gnunet-arm.c:662
173#, c-format 173#, c-format
174msgid "Stopping %s...\n" 174msgid "Stopping %s...\n"
175msgstr "Deteniendo %s...\n" 175msgstr "Deteniendo %s...\n"
176 176
177#: src/arm/gnunet-arm.c:666 177#: src/arm/gnunet-arm.c:676
178#, fuzzy, c-format 178#, fuzzy, c-format
179msgid "Unknown status %u for service %s.\n" 179msgid "Unknown status %u for service %s.\n"
180msgstr "Solicitando incio del servicio «%s».\n" 180msgstr "Solicitando incio del servicio «%s».\n"
181 181
182#: src/arm/gnunet-arm.c:767 182#: src/arm/gnunet-arm.c:766
183msgid "stop all GNUnet services" 183msgid "stop all GNUnet services"
184msgstr "detiene todos los servicios de GNUnet" 184msgstr "detiene todos los servicios de GNUnet"
185 185
186#: src/arm/gnunet-arm.c:773 186#: src/arm/gnunet-arm.c:771
187msgid "start a particular service" 187msgid "start a particular service"
188msgstr "inicia un servicio particular" 188msgstr "inicia un servicio particular"
189 189
190#: src/arm/gnunet-arm.c:779 190#: src/arm/gnunet-arm.c:776
191msgid "stop a particular service" 191msgid "stop a particular service"
192msgstr "detiene un servicio particular" 192msgstr "detiene un servicio particular"
193 193
194#: src/arm/gnunet-arm.c:784 194#: src/arm/gnunet-arm.c:780
195msgid "start all GNUnet default services" 195msgid "start all GNUnet default services"
196msgstr "inicia todos los servicios predeterminados de GNUnet" 196msgstr "inicia todos los servicios predeterminados de GNUnet"
197 197
198#: src/arm/gnunet-arm.c:789 198#: src/arm/gnunet-arm.c:784
199msgid "stop and start all GNUnet default services" 199msgid "stop and start all GNUnet default services"
200msgstr "detiene e inicia todos los servicios predeterminados de GNUnet" 200msgstr "detiene e inicia todos los servicios predeterminados de GNUnet"
201 201
202#: src/arm/gnunet-arm.c:793 202#: src/arm/gnunet-arm.c:788
203msgid "delete config file and directory on exit" 203msgid "delete config file and directory on exit"
204msgstr "borrar el directorio y el fichero de configuración al salir" 204msgstr "borrar el directorio y el fichero de configuración al salir"
205 205
206#: src/arm/gnunet-arm.c:798 206#: src/arm/gnunet-arm.c:792
207msgid "monitor ARM activities" 207msgid "monitor ARM activities"
208msgstr "monitoriza actividades de ARM" 208msgstr "monitoriza actividades de ARM"
209 209
210#: src/arm/gnunet-arm.c:803 210#: src/arm/gnunet-arm.c:796
211msgid "don't print status messages" 211msgid "don't print status messages"
212msgstr "no imprime mensajes de estado" 212msgstr "no imprime mensajes de estado"
213 213
214#: src/arm/gnunet-arm.c:809 214#: src/arm/gnunet-arm.c:801
215msgid "exit with error status if operation does not finish after DELAY" 215msgid "exit with error status if operation does not finish after DELAY"
216msgstr "sale con estado de error si la operación no termina despues del DELAY" 216msgstr "sale con estado de error si la operación no termina despues del DELAY"
217 217
218#: src/arm/gnunet-arm.c:814 218#: src/arm/gnunet-arm.c:805
219msgid "list currently running services" 219msgid "list currently running services"
220msgstr "lista de servicios actualmente en ejecución" 220msgstr "lista de servicios actualmente en ejecución"
221 221
222#: src/arm/gnunet-arm.c:819 222#: src/arm/gnunet-arm.c:809
223msgid "don't let gnunet-service-arm inherit standard output" 223msgid "don't let gnunet-service-arm inherit standard output"
224msgstr "no permite heredar la salida estándar a «gnunet-service-arm»" 224msgstr "no permite heredar la salida estándar a «gnunet-service-arm»"
225 225
226#: src/arm/gnunet-arm.c:824 226#: src/arm/gnunet-arm.c:813
227msgid "don't let gnunet-service-arm inherit standard error" 227msgid "don't let gnunet-service-arm inherit standard error"
228msgstr "no permite heredar la salida de error estándar a «gnunet-service-arm»" 228msgstr "no permite heredar la salida de error estándar a «gnunet-service-arm»"
229 229
230# Miguel: ARM se mantiene en todo el texto, aquí está la traducción. 230# Miguel: ARM se mantiene en todo el texto, aquí está la traducción.
231#: src/arm/gnunet-arm.c:837 231#: src/arm/gnunet-arm.c:828
232msgid "Control services and the Automated Restart Manager (ARM)" 232msgid "Control services and the Automated Restart Manager (ARM)"
233msgstr "" 233msgstr ""
234"Servicios de control y el Gestor de Reinicio Automático (ARM en inglés)" 234"Servicios de control y el Gestor de Reinicio Automático (ARM en inglés)"
235 235
236#: src/arm/gnunet-service-arm.c:386 src/transport/plugin_transport_tcp.c:1118 236#: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
237#: src/transport/plugin_transport_xt.c:1118 237#: src/transport/plugin_transport_xt.c:1120
238#: src/transport/tcp_service_legacy.c:555 src/util/service.c:610 238#: src/transport/tcp_service_legacy.c:557 src/util/service.c:1167
239#, c-format 239#, c-format
240msgid "" 240msgid ""
241"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n" 241"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -243,42 +243,42 @@ msgstr ""
243"Deshabilitando el soporte para IPv6 para el servicio «%s», se produjo un " 243"Deshabilitando el soporte para IPv6 para el servicio «%s», se produjo un "
244"fallo al crear un «socket» IPv6: %s\n" 244"fallo al crear un «socket» IPv6: %s\n"
245 245
246#: src/arm/gnunet-service-arm.c:410 src/arm/gnunet-service-arm.c:416 246#: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
247#: src/transport/plugin_transport_tcp.c:1137 247#: src/transport/plugin_transport_tcp.c:1139
248#: src/transport/plugin_transport_tcp.c:1143 248#: src/transport/plugin_transport_tcp.c:1145
249#: src/transport/plugin_transport_tcp.c:3823 249#: src/transport/plugin_transport_tcp.c:3829
250#: src/transport/plugin_transport_xt.c:1137 250#: src/transport/plugin_transport_xt.c:1139
251#: src/transport/plugin_transport_xt.c:1143 251#: src/transport/plugin_transport_xt.c:1145
252#: src/transport/plugin_transport_xt.c:3831 252#: src/transport/plugin_transport_xt.c:3833
253#: src/transport/tcp_service_legacy.c:574 253#: src/transport/tcp_service_legacy.c:576
254#: src/transport/tcp_service_legacy.c:580 src/util/service.c:635 254#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1192
255#: src/util/service.c:641 255#: src/util/service.c:1198
256#, c-format 256#, c-format
257msgid "Require valid port number for service `%s' in configuration!\n" 257msgid "Require valid port number for service `%s' in configuration!\n"
258msgstr "" 258msgstr ""
259"¡Se requiere un número de puerto válido para el servicio «%s» en la " 259"¡Se requiere un número de puerto válido para el servicio «%s» en la "
260"configuración!\n" 260"configuración!\n"
261 261
262#: src/arm/gnunet-service-arm.c:455 src/transport/plugin_transport_tcp.c:1174 262#: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
263#: src/transport/plugin_transport_xt.c:1174 263#: src/transport/plugin_transport_xt.c:1176
264#: src/transport/tcp_service_legacy.c:611 src/util/client.c:504 264#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
265#: src/util/service.c:680 265#: src/util/service.c:1237
266#, c-format 266#, c-format
267msgid "UNIXPATH `%s' too long, maximum length is %llu\n" 267msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
268msgstr "" 268msgstr ""
269"La ruta tipo UNIX «%s» es demasiado larga, la longitud máxima es %llu\n" 269"La ruta tipo UNIX «%s» es demasiado larga, la longitud máxima es %llu\n"
270 270
271#: src/arm/gnunet-service-arm.c:460 src/transport/plugin_transport_tcp.c:1178 271#: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
272#: src/transport/plugin_transport_xt.c:1178 272#: src/transport/plugin_transport_xt.c:1180
273#: src/transport/tcp_service_legacy.c:615 src/util/client.c:509 273#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
274#: src/util/service.c:685 274#: src/util/service.c:1242
275#, c-format 275#, c-format
276msgid "Using `%s' instead\n" 276msgid "Using `%s' instead\n"
277msgstr "Usando «%s» en su defecto\n" 277msgstr "Usando «%s» en su defecto\n"
278 278
279#: src/arm/gnunet-service-arm.c:493 src/transport/plugin_transport_tcp.c:1209 279#: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
280#: src/transport/plugin_transport_xt.c:1209 280#: src/transport/plugin_transport_xt.c:1211
281#: src/transport/tcp_service_legacy.c:646 src/util/service.c:721 281#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1278
282#, c-format 282#, c-format
283msgid "" 283msgid ""
284"Disabling UNIX domain socket support for service `%s', failed to create UNIX " 284"Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -287,50 +287,50 @@ msgstr ""
287"Deshabilitando el soporte de dominio de «sockets» UNIX para el servicio " 287"Deshabilitando el soporte de dominio de «sockets» UNIX para el servicio "
288"«%s», no se pudo crear un «socket» UNIX: %s\n" 288"«%s», no se pudo crear un «socket» UNIX: %s\n"
289 289
290#: src/arm/gnunet-service-arm.c:515 src/transport/plugin_transport_tcp.c:1226 290#: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
291#: src/transport/plugin_transport_xt.c:1226 291#: src/transport/plugin_transport_xt.c:1228
292#: src/transport/tcp_service_legacy.c:663 src/util/service.c:739 292#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1296
293#, c-format 293#, c-format
294msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n" 294msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
295msgstr "" 295msgstr ""
296"No hay ni puerto (PORT) ni ruta unix (UNIXPATH) para el servicio «%s», pero " 296"No hay ni puerto (PORT) ni ruta unix (UNIXPATH) para el servicio «%s», pero "
297"uno es necesario\n" 297"uno es necesario\n"
298 298
299#: src/arm/gnunet-service-arm.c:554 299#: src/arm/gnunet-service-arm.c:556
300#: src/transport/plugin_transport_http_server.c:2682 300#: src/transport/plugin_transport_http_server.c:2688
301#: src/transport/plugin_transport_tcp.c:1257 301#: src/transport/plugin_transport_tcp.c:1259
302#: src/transport/plugin_transport_xt.c:1257 302#: src/transport/plugin_transport_xt.c:1259
303#: src/transport/tcp_service_legacy.c:694 src/util/service.c:780 303#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1337
304#, c-format 304#, c-format
305msgid "Failed to resolve `%s': %s\n" 305msgid "Failed to resolve `%s': %s\n"
306msgstr "Se produjo un fallo al resolver «%s»: %s\n" 306msgstr "Se produjo un fallo al resolver «%s»: %s\n"
307 307
308#: src/arm/gnunet-service-arm.c:573 308#: src/arm/gnunet-service-arm.c:575
309#: src/transport/plugin_transport_http_server.c:2700 309#: src/transport/plugin_transport_http_server.c:2706
310#: src/transport/plugin_transport_tcp.c:1276 310#: src/transport/plugin_transport_tcp.c:1278
311#: src/transport/plugin_transport_xt.c:1276 311#: src/transport/plugin_transport_xt.c:1278
312#: src/transport/tcp_service_legacy.c:713 src/util/service.c:800 312#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1357
313#, c-format 313#, c-format
314msgid "Failed to find %saddress for `%s'.\n" 314msgid "Failed to find %saddress for `%s'.\n"
315msgstr "No se encontró la dirección %s para «%s».\n" 315msgstr "No se encontró la dirección %s para «%s».\n"
316 316
317#: src/arm/gnunet-service-arm.c:984 317#: src/arm/gnunet-service-arm.c:986
318#, c-format 318#, c-format
319msgid "Failed to start service `%s'\n" 319msgid "Failed to start service `%s'\n"
320msgstr "Se produjo un fallo al iniciar el servicio «%s»\n" 320msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
321 321
322#: src/arm/gnunet-service-arm.c:995 322#: src/arm/gnunet-service-arm.c:997
323#, c-format 323#, c-format
324msgid "Starting service `%s'\n" 324msgid "Starting service `%s'\n"
325msgstr "Iniciando el servicio «%s»\n" 325msgstr "Iniciando el servicio «%s»\n"
326 326
327# Miguel: ¿Alguna idea para "socket"? 327# Miguel: ¿Alguna idea para "socket"?
328#: src/arm/gnunet-service-arm.c:1107 328#: src/arm/gnunet-service-arm.c:1109
329#, c-format 329#, c-format
330msgid "Unable to create socket for service `%s': %s\n" 330msgid "Unable to create socket for service `%s': %s\n"
331msgstr "Imposible crear un «socket» para el servicio «%s»: %s\n" 331msgstr "Imposible crear un «socket» para el servicio «%s»: %s\n"
332 332
333#: src/arm/gnunet-service-arm.c:1142 333#: src/arm/gnunet-service-arm.c:1144
334#, c-format 334#, c-format
335msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n" 335msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n"
336msgstr "" 336msgstr ""
@@ -341,53 +341,53 @@ msgstr ""
341# no es exactamente lo mismo que el texto en inglés, pero 341# no es exactamente lo mismo que el texto en inglés, pero
342# es fiel a la realidad puesto que el ARM reinicia 342# es fiel a la realidad puesto que el ARM reinicia
343# las conexiones cuando se caen. 343# las conexiones cuando se caen.
344#: src/arm/gnunet-service-arm.c:1185 344#: src/arm/gnunet-service-arm.c:1187
345#, c-format 345#, c-format
346msgid "ARM now monitors connections to service `%s' at `%s'\n" 346msgid "ARM now monitors connections to service `%s' at `%s'\n"
347msgstr "El ARM ahora gestiona las conexiones del servicio «%s» en «%s»\n" 347msgstr "El ARM ahora gestiona las conexiones del servicio «%s» en «%s»\n"
348 348
349#: src/arm/gnunet-service-arm.c:1364 349#: src/arm/gnunet-service-arm.c:1346
350#, c-format 350#, c-format
351msgid "Preparing to stop `%s'\n" 351msgid "Preparing to stop `%s'\n"
352msgstr "Preparando para parar «%s»\n" 352msgstr "Preparando para parar «%s»\n"
353 353
354#: src/arm/gnunet-service-arm.c:1669 354#: src/arm/gnunet-service-arm.c:1651
355#, c-format 355#, c-format
356msgid "Restarting service `%s'.\n" 356msgid "Restarting service `%s'.\n"
357msgstr "Reiniciando el servicio «%s»\n" 357msgstr "Reiniciando el servicio «%s»\n"
358 358
359#: src/arm/gnunet-service-arm.c:1830 359#: src/arm/gnunet-service-arm.c:1812
360msgid "exit" 360msgid "exit"
361msgstr "salida" 361msgstr "salida"
362 362
363#: src/arm/gnunet-service-arm.c:1835 363#: src/arm/gnunet-service-arm.c:1817
364msgid "signal" 364msgid "signal"
365msgstr "señal" 365msgstr "señal"
366 366
367#: src/arm/gnunet-service-arm.c:1840 367#: src/arm/gnunet-service-arm.c:1822
368msgid "unknown" 368msgid "unknown"
369msgstr "desconocido" 369msgstr "desconocido"
370 370
371#: src/arm/gnunet-service-arm.c:1846 371#: src/arm/gnunet-service-arm.c:1828
372#, c-format 372#, c-format
373msgid "Service `%s' took %s to terminate\n" 373msgid "Service `%s' took %s to terminate\n"
374msgstr "El servicio «%s» tardó %s en finalizar\n" 374msgstr "El servicio «%s» tardó %s en finalizar\n"
375 375
376#: src/arm/gnunet-service-arm.c:1872 376#: src/arm/gnunet-service-arm.c:1854
377#, fuzzy, c-format 377#, fuzzy, c-format
378msgid "Service `%s' terminated normally, will restart at any time\n" 378msgid "Service `%s' terminated normally, will restart at any time\n"
379msgstr "El servicio «%s» finalizó con estado %s/%d, se reiniciará en %llu ms\n" 379msgstr "El servicio «%s» finalizó con estado %s/%d, se reiniciará en %llu ms\n"
380 380
381#: src/arm/gnunet-service-arm.c:1888 381#: src/arm/gnunet-service-arm.c:1870
382#, fuzzy, c-format 382#, fuzzy, c-format
383msgid "Service `%s' terminated with status %s/%d, will restart in %s\n" 383msgid "Service `%s' terminated with status %s/%d, will restart in %s\n"
384msgstr "El servicio «%s» finalizó con estado %s/%d, se reiniciará en %llu ms\n" 384msgstr "El servicio «%s» finalizó con estado %s/%d, se reiniciará en %llu ms\n"
385 385
386#: src/arm/mockup-service.c:40 386#: src/arm/mockup-service.c:42
387msgid "Initiating shutdown as requested by client.\n" 387msgid "Initiating shutdown as requested by client.\n"
388msgstr "Iniciando apagado bajo petición del cliente.\n" 388msgstr "Iniciando apagado bajo petición del cliente.\n"
389 389
390#: src/ats/gnunet-ats-solver-eval.c:2779 src/ats/gnunet-ats-solver-eval.c:2820 390#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
391#, c-format 391#, c-format
392msgid "" 392msgid ""
393"Could not load quota for network `%s': `%s', assigning default bandwidth " 393"Could not load quota for network `%s': `%s', assigning default bandwidth "
@@ -396,7 +396,7 @@ msgstr ""
396"No se pudieron cargar las cuotas para la red «%s»: «%s», asignando el ancho " 396"No se pudieron cargar las cuotas para la red «%s»: «%s», asignando el ancho "
397"de banda predeterminado %llu\n" 397"de banda predeterminado %llu\n"
398 398
399#: src/ats/gnunet-ats-solver-eval.c:2797 399#: src/ats/gnunet-ats-solver-eval.c:2799
400#, c-format 400#, c-format
401msgid "" 401msgid ""
402"No outbound quota configured for network `%s', assigning default bandwidth " 402"No outbound quota configured for network `%s', assigning default bandwidth "
@@ -405,7 +405,7 @@ msgstr ""
405"No hay configurada una cuota de salida para la red «%s», asignando el ancho " 405"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
406"de banda predeterminado %llu\n" 406"de banda predeterminado %llu\n"
407 407
408#: src/ats/gnunet-ats-solver-eval.c:2838 408#: src/ats/gnunet-ats-solver-eval.c:2840
409#, c-format 409#, c-format
410msgid "" 410msgid ""
411"No outbound quota configure for network `%s', assigning default bandwidth " 411"No outbound quota configure for network `%s', assigning default bandwidth "
@@ -414,30 +414,36 @@ msgstr ""
414"No hay configurada una cuota de salida para la red «%s», asignando el ancho " 414"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
415"de banda predeterminado %llu\n" 415"de banda predeterminado %llu\n"
416 416
417#: src/ats/gnunet-ats-solver-eval.c:3292 src/ats-tests/gnunet-solver-eval.c:937 417#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
418#, fuzzy 418#, fuzzy
419msgid "solver to use" 419msgid "solver to use"
420msgstr "valor a establecer" 420msgstr "valor a establecer"
421 421
422#: src/ats/gnunet-ats-solver-eval.c:3297 src/ats-tests/gnunet-solver-eval.c:943 422#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
423#: src/ats-tests/gnunet-solver-eval.c:948 423#: src/ats-tests/gnunet-solver-eval.c:950
424msgid "experiment to use" 424msgid "experiment to use"
425msgstr "experimento para usar" 425msgstr "experimento para usar"
426 426
427#: src/ats/gnunet-ats-solver-eval.c:3304 427#: src/ats/gnunet-ats-solver-eval.c:3306
428#, fuzzy 428#, fuzzy
429msgid "print logging" 429msgid "print logging"
430msgstr "Iniciando descarga «%s».\n" 430msgstr "Iniciando descarga «%s».\n"
431 431
432#: src/ats/gnunet-ats-solver-eval.c:3309 432#: src/ats/gnunet-ats-solver-eval.c:3311
433msgid "save logging to disk" 433msgid "save logging to disk"
434msgstr "guarda protocolo al fichero en disco" 434msgstr "guarda protocolo al fichero en disco"
435 435
436#: src/ats/gnunet-ats-solver-eval.c:3314 436#: src/ats/gnunet-ats-solver-eval.c:3316
437msgid "disable normalization" 437msgid "disable normalization"
438msgstr "deshabilita normalización" 438msgstr "deshabilita normalización"
439 439
440#: src/ats/gnunet-service-ats_plugins.c:302 440#: src/ats/gnunet-service-ats-new.c:756
441#: src/ats/gnunet-service-ats_plugins.c:451
442#, fuzzy, c-format
443msgid "Failed to initialize solver `%s'!\n"
444msgstr "¡No se puede inicializar el resolvedor!\n"
445
446#: src/ats/gnunet-service-ats_plugins.c:304
441#, fuzzy, c-format 447#, fuzzy, c-format
442msgid "" 448msgid ""
443"Could not load %s quota for network `%s': `%s', assigning default bandwidth " 449"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
@@ -447,12 +453,12 @@ msgstr ""
447"de banda predeterminado %llu\n" 453"de banda predeterminado %llu\n"
448 454
449# Miguel: "Inbound" lo he traducido como entrada en todo el texto. 455# Miguel: "Inbound" lo he traducido como entrada en todo el texto.
450#: src/ats/gnunet-service-ats_plugins.c:312 456#: src/ats/gnunet-service-ats_plugins.c:314
451#, fuzzy, c-format 457#, fuzzy, c-format
452msgid "%s quota configured for network `%s' is %llu\n" 458msgid "%s quota configured for network `%s' is %llu\n"
453msgstr "La cuota de entrada configurada para la red «%s» es %llu\n" 459msgstr "La cuota de entrada configurada para la red «%s» es %llu\n"
454 460
455#: src/ats/gnunet-service-ats_plugins.c:357 461#: src/ats/gnunet-service-ats_plugins.c:359
456#, fuzzy, c-format 462#, fuzzy, c-format
457msgid "" 463msgid ""
458"No %s-quota configured for network `%s', assigning default bandwidth %llu\n" 464"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
@@ -460,42 +466,46 @@ msgstr ""
460"No hay configurada una cuota de salida para la red «%s», asignando el ancho " 466"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
461"de banda predeterminado %llu\n" 467"de banda predeterminado %llu\n"
462 468
463#: src/ats/gnunet-service-ats_plugins.c:449 469#: src/ats/plugin_ats2_common.c:90
464#, fuzzy, c-format 470#, fuzzy, c-format
465msgid "Failed to initialize solver `%s'!\n" 471msgid ""
466msgstr "¡No se puede inicializar el resolvedor!\n" 472"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
473"%llu\n"
474msgstr ""
475"No se pudieron cargar las cuotas para la red «%s»: «%s», asignando el ancho "
476"de banda predeterminado %llu\n"
467 477
468#: src/ats/plugin_ats_mlp.c:1272 478#: src/ats/plugin_ats_mlp.c:1274
469msgid "Problem size too large, cannot allocate memory!\n" 479msgid "Problem size too large, cannot allocate memory!\n"
470msgstr "" 480msgstr ""
471 481
472#: src/ats/plugin_ats_mlp.c:1868 482#: src/ats/plugin_ats_mlp.c:1870
473#, fuzzy, c-format 483#, fuzzy, c-format
474msgid "Adding address for peer `%s' multiple times\n" 484msgid "Adding address for peer `%s' multiple times\n"
475msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" 485msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n"
476 486
477#: src/ats/plugin_ats_mlp.c:1912 487#: src/ats/plugin_ats_mlp.c:1914
478#, fuzzy, c-format 488#, fuzzy, c-format
479msgid "Updating address property for peer `%s' %p not added before\n" 489msgid "Updating address property for peer `%s' %p not added before\n"
480msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" 490msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n"
481 491
482#: src/ats/plugin_ats_mlp.c:2474 492#: src/ats/plugin_ats_mlp.c:2476
483msgid "" 493msgid ""
484"MLP solver is not optimizing for anything, changing to feasibility check\n" 494"MLP solver is not optimizing for anything, changing to feasibility check\n"
485msgstr "" 495msgstr ""
486 496
487#: src/ats/plugin_ats_mlp.c:2514 src/ats/plugin_ats_mlp.c:2531 497#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
488#: src/ats/plugin_ats_mlp.c:2563 src/ats/plugin_ats_mlp.c:2581 498#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
489#: src/ats/plugin_ats_mlp.c:2600 src/ats/plugin_ats_proportional.c:1139 499#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
490#: src/ats/plugin_ats_ril.c:2610 src/ats/plugin_ats_ril.c:2627 500#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
491#: src/ats/plugin_ats_ril.c:2644 src/ats/plugin_ats_ril.c:2661 501#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
492#: src/ats/plugin_ats_ril.c:2678 src/ats/plugin_ats_ril.c:2695 502#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
493#: src/ats/plugin_ats_ril.c:2712 src/ats/plugin_ats_ril.c:2729 503#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
494#, fuzzy, c-format 504#, fuzzy, c-format
495msgid "Invalid %s configuration %f \n" 505msgid "Invalid %s configuration %f \n"
496msgstr "Se produjo un fallo al cargar la configuración de %s\n" 506msgstr "Se produjo un fallo al cargar la configuración de %s\n"
497 507
498#: src/ats/plugin_ats_mlp.c:2669 508#: src/ats/plugin_ats_mlp.c:2671
499#, fuzzy, c-format 509#, fuzzy, c-format
500msgid "" 510msgid ""
501"Adjusting inconsistent outbound quota configuration for network `%s', is " 511"Adjusting inconsistent outbound quota configuration for network `%s', is "
@@ -504,7 +514,7 @@ msgstr ""
504"No hay configurada una cuota de salida para la red «%s», asignando el ancho " 514"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
505"de banda predeterminado %llu\n" 515"de banda predeterminado %llu\n"
506 516
507#: src/ats/plugin_ats_mlp.c:2678 517#: src/ats/plugin_ats_mlp.c:2680
508#, fuzzy, c-format 518#, fuzzy, c-format
509msgid "" 519msgid ""
510"Adjusting inconsistent inbound quota configuration for network `%s', is %llu " 520"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
@@ -514,44 +524,44 @@ msgstr ""
514"ancho de banda predeterminado (%llu)\n" 524"ancho de banda predeterminado (%llu)\n"
515 525
516# Miguel: "Outbound" lo he traducido como salida en todo el texto. 526# Miguel: "Outbound" lo he traducido como salida en todo el texto.
517#: src/ats/plugin_ats_mlp.c:2688 527#: src/ats/plugin_ats_mlp.c:2690
518#, fuzzy, c-format 528#, fuzzy, c-format
519msgid "" 529msgid ""
520"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" 530"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
521msgstr "La cuota de salida configurada para la red «%s» es %llu\n" 531msgstr "La cuota de salida configurada para la red «%s» es %llu\n"
522 532
523# Miguel: "Outbound" lo he traducido como salida en todo el texto. 533# Miguel: "Outbound" lo he traducido como salida en todo el texto.
524#: src/ats/plugin_ats_mlp.c:2697 534#: src/ats/plugin_ats_mlp.c:2699
525#, fuzzy, c-format 535#, fuzzy, c-format
526msgid "" 536msgid ""
527"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" 537"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
528msgstr "La cuota de salida configurada para la red «%s» es %llu\n" 538msgstr "La cuota de salida configurada para la red «%s» es %llu\n"
529 539
530#: src/ats/plugin_ats_proportional.c:1162 540#: src/ats/plugin_ats_proportional.c:1164
531#, fuzzy, c-format 541#, fuzzy, c-format
532msgid "Invalid %s configuration %f\n" 542msgid "Invalid %s configuration %f\n"
533msgstr "Se produjo un fallo al cargar la configuración de %s\n" 543msgstr "Se produjo un fallo al cargar la configuración de %s\n"
534 544
535#: src/ats-tests/ats-testing.c:420 545#: src/ats-tests/ats-testing.c:422
536#, c-format 546#, c-format
537msgid "Connected master [%u] with slave [%u]\n" 547msgid "Connected master [%u] with slave [%u]\n"
538msgstr "" 548msgstr ""
539 549
540#: src/ats-tests/ats-testing.c:427 550#: src/ats-tests/ats-testing.c:429
541#, fuzzy, c-format 551#, fuzzy, c-format
542msgid "Failed to connect master peer [%u] with slave [%u]\n" 552msgid "Failed to connect master peer [%u] with slave [%u]\n"
543msgstr "Fallo al conectar a gnunetd.\n" 553msgstr "Fallo al conectar a gnunetd.\n"
544 554
545#: src/ats-tests/ats-testing-log.c:835 555#: src/ats-tests/ats-testing-log.c:837
546msgid "Stop logging\n" 556msgid "Stop logging\n"
547msgstr "" 557msgstr ""
548 558
549#: src/ats-tests/ats-testing-log.c:890 559#: src/ats-tests/ats-testing-log.c:892
550#, fuzzy, c-format 560#, fuzzy, c-format
551msgid "Start logging `%s'\n" 561msgid "Start logging `%s'\n"
552msgstr "Iniciando descarga «%s».\n" 562msgstr "Iniciando descarga «%s».\n"
553 563
554#: src/ats-tests/gnunet-ats-sim.c:88 564#: src/ats-tests/gnunet-ats-sim.c:90
555#, c-format 565#, c-format
556msgid "" 566msgid ""
557"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. " 567"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. "
@@ -562,19 +572,19 @@ msgstr ""
562# Son difíciles de no calcar, puesto que no conozco como expresar 572# Son difíciles de no calcar, puesto que no conozco como expresar
563# el concepto de obtener una dirección a partir de un nombre 573# el concepto de obtener una dirección a partir de un nombre
564# en castellano sin la palabra resolver. :-) 574# en castellano sin la palabra resolver. :-)
565#: src/ats-tool/gnunet-ats.c:305 575#: src/ats-tool/gnunet-ats.c:307
566#, c-format 576#, c-format
567msgid "%u address resolutions had a timeout\n" 577msgid "%u address resolutions had a timeout\n"
568msgstr "%u resoluciones de dirección pasaron de plazo\n" 578msgstr "%u resoluciones de dirección pasaron de plazo\n"
569 579
570#: src/ats-tool/gnunet-ats.c:309 580#: src/ats-tool/gnunet-ats.c:311
571#, fuzzy, c-format 581#, fuzzy, c-format
572msgid "ATS returned stat_results for %u addresses\n" 582msgid "ATS returned stat_results for %u addresses\n"
573msgstr "El ATS devolvió resultados para %u direcciones\n" 583msgstr "El ATS devolvió resultados para %u direcciones\n"
574 584
575# Miguel: "Plugin" está traducido como módulo en todo el texto 585# Miguel: "Plugin" está traducido como módulo en todo el texto
576# puesto que no hay módulos fijos en contraposición a cargables. 586# puesto que no hay módulos fijos en contraposición a cargables.
577#: src/ats-tool/gnunet-ats.c:393 587#: src/ats-tool/gnunet-ats.c:395
578#, c-format 588#, c-format
579msgid "" 589msgid ""
580"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/" 590"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/"
@@ -583,532 +593,518 @@ msgstr ""
583"Par «%s» módulo «%s», dirección «%s», «%s» subida: %u Bytes/s, bajada %u " 593"Par «%s» módulo «%s», dirección «%s», «%s» subida: %u Bytes/s, bajada %u "
584"Bytes/s, %s\n" 594"Bytes/s, %s\n"
585 595
586#: src/ats-tool/gnunet-ats.c:400 596#: src/ats-tool/gnunet-ats.c:402
587msgid "active " 597msgid "active "
588msgstr "activo " 598msgstr "activo "
589 599
590#: src/ats-tool/gnunet-ats.c:400 600#: src/ats-tool/gnunet-ats.c:402
591msgid "inactive " 601msgid "inactive "
592msgstr "inactivo " 602msgstr "inactivo "
593 603
594#: src/ats-tool/gnunet-ats.c:510 604#: src/ats-tool/gnunet-ats.c:512
595#, fuzzy, c-format 605#, fuzzy, c-format
596msgid "Removed address of peer `%s' with plugin `%s'\n" 606msgid "Removed address of peer `%s' with plugin `%s'\n"
597msgstr "Eliminando dirección de transporte «%s»\n" 607msgstr "Eliminando dirección de transporte «%s»\n"
598 608
599#: src/ats-tool/gnunet-ats.c:703 609#: src/ats-tool/gnunet-ats.c:705
600#, c-format 610#, c-format
601msgid "Quota for network `%11s' (in/out): %10s / %10s\n" 611msgid "Quota for network `%11s' (in/out): %10s / %10s\n"
602msgstr "Cuota para la red «%11s» (entrada/salida): %10s / %10s\n" 612msgstr "Cuota para la red «%11s» (entrada/salida): %10s / %10s\n"
603 613
604#: src/ats-tool/gnunet-ats.c:746 src/ats-tool/gnunet-ats.c:759 614#: src/ats-tool/gnunet-ats.c:748 src/ats-tool/gnunet-ats.c:761
605#, c-format 615#, c-format
606msgid "Failed to parse peer identity `%s'\n" 616msgid "Failed to parse peer identity `%s'\n"
607msgstr "Se produjo un fallo al procesar la identidad del par «%s»\n" 617msgstr "Se produjo un fallo al procesar la identidad del par «%s»\n"
608 618
609#: src/ats-tool/gnunet-ats.c:771 619#: src/ats-tool/gnunet-ats.c:773
610#, fuzzy, c-format 620#, fuzzy, c-format
611msgid "Please select one operation: %s or %s or %s or %s or %s\n" 621msgid "Please select one operation: %s or %s or %s or %s or %s\n"
612msgstr "Por favor, seleccione una operación: %s o %s o %s o %s o %s\n" 622msgstr "Por favor, seleccione una operación: %s o %s o %s o %s o %s\n"
613 623
614#: src/ats-tool/gnunet-ats.c:793 src/ats-tool/gnunet-ats.c:818 624#: src/ats-tool/gnunet-ats.c:795 src/ats-tool/gnunet-ats.c:820
615#: src/ats-tool/gnunet-ats.c:849 src/ats-tool/gnunet-ats.c:894 625#: src/ats-tool/gnunet-ats.c:851 src/ats-tool/gnunet-ats.c:896
616msgid "Cannot connect to ATS service, exiting...\n" 626msgid "Cannot connect to ATS service, exiting...\n"
617msgstr "No se puede conectar al servicio ATS, saliendo...\n" 627msgstr "No se puede conectar al servicio ATS, saliendo...\n"
618 628
619#: src/ats-tool/gnunet-ats.c:804 src/ats-tool/gnunet-ats.c:830 629#: src/ats-tool/gnunet-ats.c:806 src/ats-tool/gnunet-ats.c:832
620msgid "Cannot issue request to ATS service, exiting...\n" 630msgid "Cannot issue request to ATS service, exiting...\n"
621msgstr "No se puede iniciar una petición al servicio ATS, saliendo...\n" 631msgstr "No se puede iniciar una petición al servicio ATS, saliendo...\n"
622 632
623#: src/ats-tool/gnunet-ats.c:860 633#: src/ats-tool/gnunet-ats.c:862
624#, fuzzy 634#, fuzzy
625msgid "No preference type given!\n" 635msgid "No preference type given!\n"
626msgstr "establece las preferencias para el par dado" 636msgstr "establece las preferencias para el par dado"
627 637
628#: src/ats-tool/gnunet-ats.c:867 638#: src/ats-tool/gnunet-ats.c:869
629#, fuzzy 639#, fuzzy
630msgid "No peer given!\n" 640msgid "No peer given!\n"
631msgstr "No se han proporcionado opciones\n" 641msgstr "No se han proporcionado opciones\n"
632 642
633#: src/ats-tool/gnunet-ats.c:885 643#: src/ats-tool/gnunet-ats.c:887
634#, fuzzy 644#, fuzzy
635msgid "Valid type required\n" 645msgid "Valid type required\n"
636msgstr "Tipo requerido\n" 646msgstr "Tipo requerido\n"
637 647
638#: src/ats-tool/gnunet-ats.c:948 648#: src/ats-tool/gnunet-ats.c:950
639msgid "get list of active addresses currently used" 649msgid "get list of active addresses currently used"
640msgstr "obtiene una lista de direcciones activas usadas actualmente" 650msgstr "obtiene una lista de direcciones activas usadas actualmente"
641 651
642#: src/ats-tool/gnunet-ats.c:952 652#: src/ats-tool/gnunet-ats.c:954
643msgid "get list of all active addresses" 653msgid "get list of all active addresses"
644msgstr "obtiene una lista de todas las direcciones activas" 654msgstr "obtiene una lista de todas las direcciones activas"
645 655
646#: src/ats-tool/gnunet-ats.c:958 656#: src/ats-tool/gnunet-ats.c:960
647#, fuzzy 657#, fuzzy
648msgid "connect to PEER" 658msgid "connect to PEER"
649msgstr "conectar a un par" 659msgstr "conectar a un par"
650 660
651#: src/ats-tool/gnunet-ats.c:962 661#: src/ats-tool/gnunet-ats.c:964
652msgid "do not resolve IP addresses to hostnames" 662msgid "do not resolve IP addresses to hostnames"
653msgstr "no resuelve direcciones IP a nombres de máquina" 663msgstr "no resuelve direcciones IP a nombres de máquina"
654 664
655# Miguel: Aquí he dejado monitorización porque esto es 665# Miguel: Aquí he dejado monitorización porque esto es
656# del servicio de traducción de direcciones. 666# del servicio de traducción de direcciones.
657#: src/ats-tool/gnunet-ats.c:967 667#: src/ats-tool/gnunet-ats.c:969
658msgid "monitor mode" 668msgid "monitor mode"
659msgstr "modo de monitorización" 669msgstr "modo de monitorización"
660 670
661#: src/ats-tool/gnunet-ats.c:972 671#: src/ats-tool/gnunet-ats.c:974
662msgid "set preference for the given peer" 672msgid "set preference for the given peer"
663msgstr "establece las preferencias para el par dado" 673msgstr "establece las preferencias para el par dado"
664 674
665#: src/ats-tool/gnunet-ats.c:977 675#: src/ats-tool/gnunet-ats.c:979
666msgid "print all configured quotas" 676msgid "print all configured quotas"
667msgstr "imprime todas las cuotas configuradas" 677msgstr "imprime todas las cuotas configuradas"
668 678
669# Miguel: He preferido extender id a identificación por claridad. 679# Miguel: He preferido extender id a identificación por claridad.
670#: src/ats-tool/gnunet-ats.c:982 680#: src/ats-tool/gnunet-ats.c:984
671msgid "peer id" 681msgid "peer id"
672msgstr "identificación del par" 682msgstr "identificación del par"
673 683
674# Miguel: No me he encontrado esta opción todavía, 684# Miguel: No me he encontrado esta opción todavía,
675# pero creo que son palabras clave. 685# pero creo que son palabras clave.
676#: src/ats-tool/gnunet-ats.c:988 686#: src/ats-tool/gnunet-ats.c:990
677msgid "preference type to set: latency | bandwidth" 687msgid "preference type to set: latency | bandwidth"
678msgstr "" 688msgstr ""
679"tipo de preferencia a modificar: latency (latencia) | bandwidth (ancho de " 689"tipo de preferencia a modificar: latency (latencia) | bandwidth (ancho de "
680"banda)" 690"banda)"
681 691
682#: src/ats-tool/gnunet-ats.c:994 692#: src/ats-tool/gnunet-ats.c:996
683msgid "preference value" 693msgid "preference value"
684msgstr "valor de preferencia" 694msgstr "valor de preferencia"
685 695
686# Miguel: ¿Algo menos forzado que "salida prolija"? 696# Miguel: ¿Algo menos forzado que "salida prolija"?
687#: src/ats-tool/gnunet-ats.c:999 697#: src/ats-tool/gnunet-ats.c:1001
688msgid "verbose output (include ATS address properties)" 698msgid "verbose output (include ATS address properties)"
689msgstr "salida prolija (incluye las propiedades de direcciones del ATS)" 699msgstr "salida prolija (incluye las propiedades de direcciones del ATS)"
690 700
691#: src/ats-tool/gnunet-ats.c:1009 701#: src/ats-tool/gnunet-ats.c:1011
692msgid "Print information about ATS state" 702msgid "Print information about ATS state"
693msgstr "Imprime información acerca del estado del ATS" 703msgstr "Imprime información acerca del estado del ATS"
694 704
695#: src/auction/gnunet-auction-create.c:161 705#: src/auction/gnunet-auction-create.c:163
696msgid "description of the item to be sold" 706msgid "description of the item to be sold"
697msgstr "descripción del elemento que está por vender" 707msgstr "descripción del elemento que está por vender"
698 708
699#: src/auction/gnunet-auction-create.c:167 709#: src/auction/gnunet-auction-create.c:169
700msgid "mapping of possible prices" 710msgid "mapping of possible prices"
701msgstr "figurando posibles precios" 711msgstr "figurando posibles precios"
702 712
703#: src/auction/gnunet-auction-create.c:173 713#: src/auction/gnunet-auction-create.c:175
704msgid "max duration per round" 714msgid "max duration per round"
705msgstr "maxima duración del turno" 715msgstr "maxima duración del turno"
706 716
707#: src/auction/gnunet-auction-create.c:179 717#: src/auction/gnunet-auction-create.c:181
708msgid "duration until auction starts" 718msgid "duration until auction starts"
709msgstr "duración hasta que la caución empieza" 719msgstr "duración hasta que la caución empieza"
710 720
711#: src/auction/gnunet-auction-create.c:184 721#: src/auction/gnunet-auction-create.c:186
712msgid "" 722msgid ""
713"number of items to sell\n" 723"number of items to sell\n"
714"0 for first price auction\n" 724"0 for first price auction\n"
715">0 for vickrey/M+1st price auction" 725">0 for vickrey/M+1st price auction"
716msgstr "" 726msgstr ""
717 727
718#: src/auction/gnunet-auction-create.c:191 728#: src/auction/gnunet-auction-create.c:193
719#, fuzzy 729#, fuzzy
720msgid "public auction outcome" 730msgid "public auction outcome"
721msgstr "_Opciones" 731msgstr "_Opciones"
722 732
723#: src/auction/gnunet-auction-create.c:196 733#: src/auction/gnunet-auction-create.c:198
724msgid "keep running in foreground until auction completes" 734msgid "keep running in foreground until auction completes"
725msgstr "" 735msgstr ""
726 736
727#: src/auction/gnunet-auction-create.c:207 737#: src/auction/gnunet-auction-create.c:209
728msgid "create a new auction and start listening for bidders" 738msgid "create a new auction and start listening for bidders"
729msgstr "" 739msgstr ""
730 740
731#: src/auction/gnunet-auction-info.c:74 src/auction/gnunet-auction-join.c:74 741#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
732#: src/conversation/gnunet-conversation-test.c:252 742#: src/conversation/gnunet-conversation-test.c:254
733#: src/revocation/gnunet-revocation.c:560 src/template/gnunet-template.c:74 743#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
734msgid "help text" 744msgid "help text"
735msgstr "texto de ayuda" 745msgstr "texto de ayuda"
736 746
737#: src/cadet/gnunet-cadet.c:705 747#: src/cadet/gnunet-cadet.c:631
738#, fuzzy, c-format 748#, fuzzy, c-format
739msgid "Invalid peer ID `%s'\n" 749msgid "Invalid peer ID `%s'\n"
740msgstr "URI no válida: «%s»\n" 750msgstr "URI no válida: «%s»\n"
741 751
742#: src/cadet/gnunet-cadet.c:744 752#: src/cadet/gnunet-cadet.c:718
743#, fuzzy, c-format
744msgid "Invalid tunnel owner `%s'\n"
745msgstr "Formato de tiempo no válido «%s»\n"
746
747#: src/cadet/gnunet-cadet.c:817
748msgid "Extra arguments are not applicable in combination with this option.\n" 753msgid "Extra arguments are not applicable in combination with this option.\n"
749msgstr "" 754msgstr ""
750 755
751#: src/cadet/gnunet-cadet.c:908 756#: src/cadet/gnunet-cadet.c:795
752#, fuzzy, c-format 757#, fuzzy, c-format
753msgid "Invalid target `%s'\n" 758msgid "Invalid target `%s'\n"
754msgstr "Parámetro no válido «%s»\n" 759msgstr "Parámetro no válido «%s»\n"
755 760
756#: src/cadet/gnunet-cadet.c:945 761#: src/cadet/gnunet-cadet.c:832
757#, fuzzy 762#, fuzzy
758msgid "No action requested\n" 763msgid "No action requested\n"
759msgstr "Colección detenida.\n" 764msgstr "Colección detenida.\n"
760 765
761#: src/cadet/gnunet-cadet.c:970 766#: src/cadet/gnunet-cadet.c:857
762#, fuzzy 767#, fuzzy
763msgid "Provide information about a particular connection" 768msgid "Provide information about a particular connection"
764msgstr "proveer información acerca de un túnel en particular" 769msgstr "proveer información acerca de un túnel en particular"
765 770
766#: src/cadet/gnunet-cadet.c:975 771#: src/cadet/gnunet-cadet.c:861
767msgid "Activate echo mode" 772msgid "Activate echo mode"
768msgstr "" 773msgstr ""
769 774
770#: src/cadet/gnunet-cadet.c:980 775#: src/cadet/gnunet-cadet.c:866
771msgid "Dump debug information to STDERR"
772msgstr ""
773
774#: src/cadet/gnunet-cadet.c:986
775msgid "Listen for connections using a shared secret among sender and recipient" 776msgid "Listen for connections using a shared secret among sender and recipient"
776msgstr "" 777msgstr ""
777 778
778#: src/cadet/gnunet-cadet.c:993 779#: src/cadet/gnunet-cadet.c:871
779#, fuzzy 780#, fuzzy
780msgid "Provide information about a patricular peer" 781msgid "Provide information about a patricular peer"
781msgstr "proveer información acerca de un túnel en particular" 782msgstr "proveer información acerca de un túnel en particular"
782 783
783#: src/cadet/gnunet-cadet.c:999 784#: src/cadet/gnunet-cadet.c:875
784#, fuzzy 785#, fuzzy
785msgid "Provide information about all peers" 786msgid "Provide information about all peers"
786msgstr "proveer información acerca de un túnel en particular" 787msgstr "proveer información acerca de un túnel en particular"
787 788
788#: src/cadet/gnunet-cadet.c:1005 789#: src/cadet/gnunet-cadet.c:879
789#, fuzzy
790msgid "Provide information about a particular tunnel"
791msgstr "proveer información acerca de un túnel en particular"
792
793#: src/cadet/gnunet-cadet.c:1011
794#, fuzzy 790#, fuzzy
795msgid "Provide information about all tunnels" 791msgid "Provide information about all tunnels"
796msgstr "proveer información acerca de un túnel en particular" 792msgstr "proveer información acerca de un túnel en particular"
797 793
798#: src/consensus/gnunet-consensus-profiler.c:521 794#: src/consensus/gnunet-consensus-profiler.c:523
799#: src/secretsharing/gnunet-secretsharing-profiler.c:608 795#: src/secretsharing/gnunet-secretsharing-profiler.c:610
800msgid "number of peers in consensus" 796msgid "number of peers in consensus"
801msgstr "número de pares en consenso" 797msgstr "número de pares en consenso"
802 798
803#: src/consensus/gnunet-consensus-profiler.c:527 799#: src/consensus/gnunet-consensus-profiler.c:529
804#, fuzzy 800#, fuzzy
805msgid "" 801msgid ""
806"how many peers (random selection without replacement) receive one value?" 802"how many peers (random selection without replacement) receive one value?"
807msgstr "¿cuántos pares reciben un valor?" 803msgstr "¿cuántos pares reciben un valor?"
808 804
809#: src/consensus/gnunet-consensus-profiler.c:533 805#: src/consensus/gnunet-consensus-profiler.c:535
810#: src/set/gnunet-set-profiler.c:431 src/set/gnunet-set-profiler.c:437 806#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
811#: src/set/gnunet-set-profiler.c:460 807#: src/set/gnunet-set-profiler.c:462
812msgid "number of values" 808msgid "number of values"
813msgstr "número de valores" 809msgstr "número de valores"
814 810
815# Miguel: "timeout" lo he traducido como plazo, pero no se 811# Miguel: "timeout" lo he traducido como plazo, pero no se
816# si hay alguna palabra que lo describa mejor. 812# si hay alguna palabra que lo describa mejor.
817#: src/consensus/gnunet-consensus-profiler.c:539 813#: src/consensus/gnunet-consensus-profiler.c:541
818msgid "consensus timeout" 814msgid "consensus timeout"
819msgstr "plazo de consenso" 815msgstr "plazo de consenso"
820 816
821#: src/consensus/gnunet-consensus-profiler.c:546 817#: src/consensus/gnunet-consensus-profiler.c:548
822msgid "delay until consensus starts" 818msgid "delay until consensus starts"
823msgstr "" 819msgstr ""
824 820
825#: src/consensus/gnunet-consensus-profiler.c:552 821#: src/consensus/gnunet-consensus-profiler.c:554
826#: src/set/gnunet-set-profiler.c:478 822#: src/set/gnunet-set-profiler.c:480
827#, fuzzy 823#, fuzzy
828msgid "write statistics to file" 824msgid "write statistics to file"
829msgstr "imprime el valor de las estadísticas" 825msgstr "imprime el valor de las estadísticas"
830 826
831#: src/consensus/gnunet-consensus-profiler.c:557 827#: src/consensus/gnunet-consensus-profiler.c:559
832msgid "distribute elements to a static subset of good peers" 828msgid "distribute elements to a static subset of good peers"
833msgstr "" 829msgstr ""
834 830
835#: src/consensus/gnunet-consensus-profiler.c:562 831#: src/consensus/gnunet-consensus-profiler.c:564
836msgid "be more verbose (print received values)" 832msgid "be more verbose (print received values)"
837msgstr "" 833msgstr ""
838 834
839#: src/conversation/conversation_api.c:513 835#: src/conversation/conversation_api.c:515
840#: src/conversation/conversation_api_call.c:492 836#: src/conversation/conversation_api_call.c:494
841#, fuzzy 837#, fuzzy
842msgid "Connection to conversation service lost, trying to reconnect\n" 838msgid "Connection to conversation service lost, trying to reconnect\n"
843msgstr "" 839msgstr ""
844"El cliente se desconectó del servicio principal, tratando de reconectar.\n" 840"El cliente se desconectó del servicio principal, tratando de reconectar.\n"
845 841
846#: src/conversation/gnunet-conversation.c:275 842#: src/conversation/gnunet-conversation.c:277
847#, c-format 843#, c-format
848msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" 844msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
849msgstr "" 845msgstr ""
850 846
851#: src/conversation/gnunet-conversation.c:300 847#: src/conversation/gnunet-conversation.c:302
852#, c-format 848#, c-format
853msgid "Call from `%s' terminated\n" 849msgid "Call from `%s' terminated\n"
854msgstr "" 850msgstr ""
855 851
856#: src/conversation/gnunet-conversation.c:335 852#: src/conversation/gnunet-conversation.c:337
857#, c-format 853#, c-format
858msgid "Call from `%s' suspended by other user\n" 854msgid "Call from `%s' suspended by other user\n"
859msgstr "" 855msgstr ""
860 856
861#: src/conversation/gnunet-conversation.c:340 857#: src/conversation/gnunet-conversation.c:342
862#, c-format 858#, c-format
863msgid "Call from `%s' resumed by other user\n" 859msgid "Call from `%s' resumed by other user\n"
864msgstr "" 860msgstr ""
865 861
866#: src/conversation/gnunet-conversation.c:358 862#: src/conversation/gnunet-conversation.c:360
867#, c-format 863#, c-format
868msgid "Ego `%s' no longer available, phone is now down.\n" 864msgid "Ego `%s' no longer available, phone is now down.\n"
869msgstr "" 865msgstr ""
870 866
871#: src/conversation/gnunet-conversation.c:373 867#: src/conversation/gnunet-conversation.c:375
872#, fuzzy 868#, fuzzy
873msgid "Failed to setup phone (internal error)\n" 869msgid "Failed to setup phone (internal error)\n"
874msgstr "¡Se produjo un fallo al configurar el túnel mesh!\n" 870msgstr "¡Se produjo un fallo al configurar el túnel mesh!\n"
875 871
876#: src/conversation/gnunet-conversation.c:385 872#: src/conversation/gnunet-conversation.c:387
877#, c-format 873#, c-format
878msgid "Phone active at `%s'. Type `/help' for a list of available commands\n" 874msgid "Phone active at `%s'. Type `/help' for a list of available commands\n"
879msgstr "" 875msgstr ""
880 876
881#: src/conversation/gnunet-conversation.c:409 877#: src/conversation/gnunet-conversation.c:411
882#, c-format 878#, c-format
883msgid "Resolved address of `%s'. Now ringing other party.\n" 879msgid "Resolved address of `%s'. Now ringing other party.\n"
884msgstr "" 880msgstr ""
885 881
886#: src/conversation/gnunet-conversation.c:416 882#: src/conversation/gnunet-conversation.c:418
887#, fuzzy, c-format 883#, fuzzy, c-format
888msgid "Connection established to `%s'\n" 884msgid "Connection established to `%s'\n"
889msgstr "'%s' falló en %s: %d con error: '%s'.\n" 885msgstr "'%s' falló en %s: %d con error: '%s'.\n"
890 886
891#: src/conversation/gnunet-conversation.c:423 887#: src/conversation/gnunet-conversation.c:425
892#, fuzzy, c-format 888#, fuzzy, c-format
893msgid "Failed to resolve `%s'\n" 889msgid "Failed to resolve `%s'\n"
894msgstr "Se produjo un fallo al resolver «%s»: %s\n" 890msgstr "Se produjo un fallo al resolver «%s»: %s\n"
895 891
896#: src/conversation/gnunet-conversation.c:431 892#: src/conversation/gnunet-conversation.c:433
897#, c-format 893#, c-format
898msgid "Call to `%s' terminated\n" 894msgid "Call to `%s' terminated\n"
899msgstr "" 895msgstr ""
900 896
901#: src/conversation/gnunet-conversation.c:440 897#: src/conversation/gnunet-conversation.c:442
902#, c-format 898#, c-format
903msgid "Connection to `%s' suspended (by other user)\n" 899msgid "Connection to `%s' suspended (by other user)\n"
904msgstr "" 900msgstr ""
905 901
906#: src/conversation/gnunet-conversation.c:446 902#: src/conversation/gnunet-conversation.c:448
907#, c-format 903#, c-format
908msgid "Connection to `%s' resumed (by other user)\n" 904msgid "Connection to `%s' resumed (by other user)\n"
909msgstr "" 905msgstr ""
910 906
911#: src/conversation/gnunet-conversation.c:451 907#: src/conversation/gnunet-conversation.c:453
912msgid "Error with the call, restarting it\n" 908msgid "Error with the call, restarting it\n"
913msgstr "" 909msgstr ""
914 910
915#: src/conversation/gnunet-conversation.c:522 911#: src/conversation/gnunet-conversation.c:524
916#, c-format 912#, c-format
917msgid "Unknown command `%s'\n" 913msgid "Unknown command `%s'\n"
918msgstr "Comando desconocido «%s»\n" 914msgstr "Comando desconocido «%s»\n"
919 915
920#: src/conversation/gnunet-conversation.c:538 916#: src/conversation/gnunet-conversation.c:540
921#: src/conversation/gnunet-conversation.c:552 917#: src/conversation/gnunet-conversation.c:554
922#, c-format 918#, c-format
923msgid "Ego `%s' not available\n" 919msgid "Ego `%s' not available\n"
924msgstr "" 920msgstr ""
925 921
926#: src/conversation/gnunet-conversation.c:545 922#: src/conversation/gnunet-conversation.c:547
927#: src/conversation/gnunet-conversation.c:601 923#: src/conversation/gnunet-conversation.c:603
928msgid "You are calling someone else already, hang up first!\n" 924msgid "You are calling someone else already, hang up first!\n"
929msgstr "" 925msgstr ""
930 926
931#: src/conversation/gnunet-conversation.c:560 927#: src/conversation/gnunet-conversation.c:562
932#: src/conversation/gnunet-conversation.c:614 928#: src/conversation/gnunet-conversation.c:616
933#, c-format 929#, c-format
934msgid "You are answering call from `%s', hang up or suspend that call first!\n" 930msgid "You are answering call from `%s', hang up or suspend that call first!\n"
935msgstr "" 931msgstr ""
936 932
937#: src/conversation/gnunet-conversation.c:570 933#: src/conversation/gnunet-conversation.c:572
938msgid "Call recipient missing.\n" 934msgid "Call recipient missing.\n"
939msgstr "" 935msgstr ""
940 936
941#: src/conversation/gnunet-conversation.c:625 937#: src/conversation/gnunet-conversation.c:627
942msgid "There is no incoming call to accept here!\n" 938msgid "There is no incoming call to accept here!\n"
943msgstr "" 939msgstr ""
944 940
945#: src/conversation/gnunet-conversation.c:642 941#: src/conversation/gnunet-conversation.c:644
946#, c-format 942#, c-format
947msgid "There is no incoming call `%s' to accept right now!\n" 943msgid "There is no incoming call `%s' to accept right now!\n"
948msgstr "" 944msgstr ""
949 945
950#: src/conversation/gnunet-conversation.c:673 946#: src/conversation/gnunet-conversation.c:675
951msgid "We currently do not have an address.\n" 947msgid "We currently do not have an address.\n"
952msgstr "" 948msgstr ""
953 949
954#: src/conversation/gnunet-conversation.c:697 950#: src/conversation/gnunet-conversation.c:699
955#, c-format 951#, c-format
956msgid "We are currently trying to locate the private key for the ego `%s'.\n" 952msgid "We are currently trying to locate the private key for the ego `%s'.\n"
957msgstr "" 953msgstr ""
958 954
959#: src/conversation/gnunet-conversation.c:702 955#: src/conversation/gnunet-conversation.c:704
960#, c-format 956#, c-format
961msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n" 957msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n"
962msgstr "" 958msgstr ""
963 959
964#: src/conversation/gnunet-conversation.c:708 960#: src/conversation/gnunet-conversation.c:710
965#: src/conversation/gnunet-conversation.c:732 961#: src/conversation/gnunet-conversation.c:734
966#, c-format 962#, c-format
967msgid "You are having a conversation with `%s'.\n" 963msgid "You are having a conversation with `%s'.\n"
968msgstr "" 964msgstr ""
969 965
970#: src/conversation/gnunet-conversation.c:713 966#: src/conversation/gnunet-conversation.c:715
971msgid "" 967msgid ""
972"We had an internal error setting up our phone line. You can still make " 968"We had an internal error setting up our phone line. You can still make "
973"calls.\n" 969"calls.\n"
974msgstr "" 970msgstr ""
975 971
976#: src/conversation/gnunet-conversation.c:722 972#: src/conversation/gnunet-conversation.c:724
977#, fuzzy, c-format 973#, fuzzy, c-format
978msgid "We are trying to find the network address to call `%s'.\n" 974msgid "We are trying to find the network address to call `%s'.\n"
979msgstr "Detectada dirección de la red interna «%s».\n" 975msgstr "Detectada dirección de la red interna «%s».\n"
980 976
981#: src/conversation/gnunet-conversation.c:727 977#: src/conversation/gnunet-conversation.c:729
982#, c-format 978#, c-format
983msgid "We are calling `%s', their phone should be ringing.\n" 979msgid "We are calling `%s', their phone should be ringing.\n"
984msgstr "" 980msgstr ""
985 981
986#: src/conversation/gnunet-conversation.c:746 982#: src/conversation/gnunet-conversation.c:748
987msgid "Calls waiting:\n" 983msgid "Calls waiting:\n"
988msgstr "" 984msgstr ""
989 985
990#: src/conversation/gnunet-conversation.c:752 986#: src/conversation/gnunet-conversation.c:754
991#, fuzzy, c-format 987#, fuzzy, c-format
992msgid "#%u: `%s'\n" 988msgid "#%u: `%s'\n"
993msgstr "Par «%s»\n" 989msgstr "Par «%s»\n"
994 990
995#: src/conversation/gnunet-conversation.c:781 991#: src/conversation/gnunet-conversation.c:783
996#: src/conversation/gnunet-conversation.c:796 992#: src/conversation/gnunet-conversation.c:798
997msgid "There is no call that could be suspended right now.\n" 993msgid "There is no call that could be suspended right now.\n"
998msgstr "" 994msgstr ""
999 995
1000#: src/conversation/gnunet-conversation.c:829 996#: src/conversation/gnunet-conversation.c:831
1001#: src/conversation/gnunet-conversation.c:845 997#: src/conversation/gnunet-conversation.c:847
1002msgid "There is no call that could be resumed right now.\n" 998msgid "There is no call that could be resumed right now.\n"
1003msgstr "" 999msgstr ""
1004 1000
1005#: src/conversation/gnunet-conversation.c:852 1001#: src/conversation/gnunet-conversation.c:854
1006#, c-format 1002#, c-format
1007msgid "Already talking with `%s', cannot resume a call right now.\n" 1003msgid "Already talking with `%s', cannot resume a call right now.\n"
1008msgstr "" 1004msgstr ""
1009 1005
1010#: src/conversation/gnunet-conversation.c:861 1006#: src/conversation/gnunet-conversation.c:863
1011msgid "There is no incoming call to resume here!\n" 1007msgid "There is no incoming call to resume here!\n"
1012msgstr "" 1008msgstr ""
1013 1009
1014#: src/conversation/gnunet-conversation.c:878 1010#: src/conversation/gnunet-conversation.c:880
1015#, c-format 1011#, c-format
1016msgid "There is no incoming call `%s' to resume right now!\n" 1012msgid "There is no incoming call `%s' to resume right now!\n"
1017msgstr "" 1013msgstr ""
1018 1014
1019#: src/conversation/gnunet-conversation.c:913 1015#: src/conversation/gnunet-conversation.c:915
1020msgid "There is no call that could be cancelled right now.\n" 1016msgid "There is no call that could be cancelled right now.\n"
1021msgstr "" 1017msgstr ""
1022 1018
1023#: src/conversation/gnunet-conversation.c:921 1019#: src/conversation/gnunet-conversation.c:923
1024msgid "There is no incoming call to refuse here!\n" 1020msgid "There is no incoming call to refuse here!\n"
1025msgstr "" 1021msgstr ""
1026 1022
1027#: src/conversation/gnunet-conversation.c:938 1023#: src/conversation/gnunet-conversation.c:940
1028#, c-format 1024#, c-format
1029msgid "There is no incoming call `%s' to refuse right now!\n" 1025msgid "There is no incoming call `%s' to refuse right now!\n"
1030msgstr "" 1026msgstr ""
1031 1027
1032#: src/conversation/gnunet-conversation.c:964 1028#: src/conversation/gnunet-conversation.c:966
1033msgid "Use `/address' to find out which address this phone should have in GNS" 1029msgid "Use `/address' to find out which address this phone should have in GNS"
1034msgstr "" 1030msgstr ""
1035 1031
1036#: src/conversation/gnunet-conversation.c:966 1032#: src/conversation/gnunet-conversation.c:968
1037msgid "Use `/call USER.gnu' to call USER" 1033msgid "Use `/call USER.gnu' to call USER"
1038msgstr "" 1034msgstr ""
1039 1035
1040#: src/conversation/gnunet-conversation.c:968 1036#: src/conversation/gnunet-conversation.c:970
1041msgid "Use `/accept #NUM' to accept incoming call #NUM" 1037msgid "Use `/accept #NUM' to accept incoming call #NUM"
1042msgstr "" 1038msgstr ""
1043 1039
1044#: src/conversation/gnunet-conversation.c:970 1040#: src/conversation/gnunet-conversation.c:972
1045msgid "Use `/suspend' to suspend the active call" 1041msgid "Use `/suspend' to suspend the active call"
1046msgstr "" 1042msgstr ""
1047 1043
1048#: src/conversation/gnunet-conversation.c:972 1044#: src/conversation/gnunet-conversation.c:974
1049msgid "" 1045msgid ""
1050"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming " 1046"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming "
1051"calls, no argument is needed to resume the current outgoing call." 1047"calls, no argument is needed to resume the current outgoing call."
1052msgstr "" 1048msgstr ""
1053 1049
1054#: src/conversation/gnunet-conversation.c:974 1050#: src/conversation/gnunet-conversation.c:976
1055msgid "Use `/cancel' to reject or terminate a call" 1051msgid "Use `/cancel' to reject or terminate a call"
1056msgstr "" 1052msgstr ""
1057 1053
1058#: src/conversation/gnunet-conversation.c:976 1054#: src/conversation/gnunet-conversation.c:978
1059#, fuzzy 1055#, fuzzy
1060msgid "Use `/status' to print status information" 1056msgid "Use `/status' to print status information"
1061msgstr "ser prolijo (imprime información de progreso)" 1057msgstr "ser prolijo (imprime información de progreso)"
1062 1058
1063#: src/conversation/gnunet-conversation.c:978 1059#: src/conversation/gnunet-conversation.c:980
1064#, fuzzy 1060#, fuzzy
1065msgid "Use `/quit' to terminate gnunet-conversation" 1061msgid "Use `/quit' to terminate gnunet-conversation"
1066msgstr "Use «/quit» para finalizar «gnunet-chat»" 1062msgstr "Use «/quit» para finalizar «gnunet-chat»"
1067 1063
1068#: src/conversation/gnunet-conversation.c:980 1064#: src/conversation/gnunet-conversation.c:982
1069msgid "Use `/help command' to get help for a specific command" 1065msgid "Use `/help command' to get help for a specific command"
1070msgstr "Use «/help comando» para obtener ayuda sobre un comando específico" 1066msgstr "Use «/help comando» para obtener ayuda sobre un comando específico"
1071 1067
1072#: src/conversation/gnunet-conversation.c:1196 1068#: src/conversation/gnunet-conversation.c:1198
1073#, fuzzy, c-format 1069#, fuzzy, c-format
1074msgid "Name of our ego changed to `%s'\n" 1070msgid "Name of our ego changed to `%s'\n"
1075msgstr "Se produjo un fallo al crear la página para «%s»\n" 1071msgstr "Se produjo un fallo al crear la página para «%s»\n"
1076 1072
1077#: src/conversation/gnunet-conversation.c:1209 1073#: src/conversation/gnunet-conversation.c:1211
1078#, fuzzy, c-format 1074#, fuzzy, c-format
1079msgid "Our ego `%s' was deleted!\n" 1075msgid "Our ego `%s' was deleted!\n"
1080msgstr "El pseudónimo '%s' fue borrado.\n" 1076msgstr "El pseudónimo '%s' fue borrado.\n"
1081 1077
1082#: src/conversation/gnunet-conversation.c:1247 1078#: src/conversation/gnunet-conversation.c:1249
1083#, fuzzy 1079#, fuzzy
1084msgid "You must specify the NAME of an ego to use\n" 1080msgid "You must specify the NAME of an ego to use\n"
1085msgstr "Debes especificar un fichero a inspeccionar.\n" 1081msgstr "Debes especificar un fichero a inspeccionar.\n"
1086 1082
1087#: src/conversation/gnunet-conversation.c:1271 1083#: src/conversation/gnunet-conversation.c:1273
1088#, fuzzy 1084#, fuzzy
1089msgid "Failed to start gnunet-helper-w32-console\n" 1085msgid "Failed to start gnunet-helper-w32-console\n"
1090msgstr "Se produjo un fallo al iniciar el proceso «gnunet-peerinfo».\n" 1086msgstr "Se produjo un fallo al iniciar el proceso «gnunet-peerinfo».\n"
1091 1087
1092#: src/conversation/gnunet-conversation.c:1300 1088#: src/conversation/gnunet-conversation.c:1302
1093msgid "sets the NAME of the ego to use for the caller ID" 1089msgid "sets the NAME of the ego to use for the caller ID"
1094msgstr "" 1090msgstr ""
1095 1091
1096#: src/conversation/gnunet-conversation.c:1305 1092#: src/conversation/gnunet-conversation.c:1307
1097msgid "sets the LINE to use for the phone" 1093msgid "sets the LINE to use for the phone"
1098msgstr "" 1094msgstr ""
1099 1095
1100#: src/conversation/gnunet-conversation.c:1334 1096#: src/conversation/gnunet-conversation.c:1336
1101msgid "Enables having a conversation with other GNUnet users." 1097msgid "Enables having a conversation with other GNUnet users."
1102msgstr "" 1098msgstr ""
1103 1099
1104#: src/conversation/gnunet-conversation-test.c:118 1100#: src/conversation/gnunet-conversation-test.c:120
1105#, c-format 1101#, c-format
1106msgid "" 1102msgid ""
1107"\n" 1103"\n"
1108"End of transmission. Have a GNU day.\n" 1104"End of transmission. Have a GNU day.\n"
1109msgstr "" 1105msgstr ""
1110 1106
1111#: src/conversation/gnunet-conversation-test.c:143 1107#: src/conversation/gnunet-conversation-test.c:145
1112#, c-format 1108#, c-format
1113msgid "" 1109msgid ""
1114"\n" 1110"\n"
@@ -1116,790 +1112,789 @@ msgid ""
1116"settings are working..." 1112"settings are working..."
1117msgstr "" 1113msgstr ""
1118 1114
1119#: src/conversation/gnunet-conversation-test.c:214 1115#: src/conversation/gnunet-conversation-test.c:216
1120#, c-format 1116#, c-format
1121msgid "" 1117msgid ""
1122"We will now be recording you for %s. After that time, the recording will be " 1118"We will now be recording you for %s. After that time, the recording will be "
1123"played back to you..." 1119"played back to you..."
1124msgstr "" 1120msgstr ""
1125 1121
1126#: src/conversation/gnunet_gst.c:620 1122#: src/conversation/gnunet_gst.c:622
1127#: src/conversation/gnunet-helper-audio-playback-gst.c:359 1123#: src/conversation/gnunet-helper-audio-playback-gst.c:361
1128#, c-format 1124#, c-format
1129msgid "Read error from STDIN: %d %s\n" 1125msgid "Read error from STDIN: %d %s\n"
1130msgstr "" 1126msgstr ""
1131 1127
1132#: src/conversation/gnunet-helper-audio-playback.c:323 1128#: src/conversation/gnunet-helper-audio-playback.c:325
1133#, fuzzy, c-format 1129#, fuzzy, c-format
1134msgid "pa_stream_write() failed: %s\n" 1130msgid "pa_stream_write() failed: %s\n"
1135msgstr "stadísticas (%s) falló: %s\n" 1131msgstr "stadísticas (%s) falló: %s\n"
1136 1132
1137#: src/conversation/gnunet-helper-audio-playback.c:625 1133#: src/conversation/gnunet-helper-audio-playback.c:627
1138msgid "gnunet-helper-audio-playback - Got signal, exiting\n" 1134msgid "gnunet-helper-audio-playback - Got signal, exiting\n"
1139msgstr "" 1135msgstr ""
1140 1136
1141#: src/conversation/gnunet-helper-audio-playback.c:651 1137#: src/conversation/gnunet-helper-audio-playback.c:653
1142#: src/conversation/gnunet-helper-audio-record.c:561 1138#: src/conversation/gnunet-helper-audio-record.c:563
1143#, fuzzy 1139#, fuzzy
1144msgid "Connection established.\n" 1140msgid "Connection established.\n"
1145msgstr "Colección detenida.\n" 1141msgstr "Colección detenida.\n"
1146 1142
1147#: src/conversation/gnunet-helper-audio-playback.c:656 1143#: src/conversation/gnunet-helper-audio-playback.c:658
1148#: src/conversation/gnunet-helper-audio-record.c:566 1144#: src/conversation/gnunet-helper-audio-record.c:568
1149#, fuzzy, c-format 1145#, fuzzy, c-format
1150msgid "pa_stream_new() failed: %s\n" 1146msgid "pa_stream_new() failed: %s\n"
1151msgstr "stadísticas (%s) falló: %s\n" 1147msgstr "stadísticas (%s) falló: %s\n"
1152 1148
1153#: src/conversation/gnunet-helper-audio-playback.c:670 1149#: src/conversation/gnunet-helper-audio-playback.c:672
1154#, c-format 1150#, c-format
1155msgid "pa_stream_connect_playback() failed: %s\n" 1151msgid "pa_stream_connect_playback() failed: %s\n"
1156msgstr "" 1152msgstr ""
1157 1153
1158#: src/conversation/gnunet-helper-audio-playback.c:683 1154#: src/conversation/gnunet-helper-audio-playback.c:685
1159#: src/conversation/gnunet-helper-audio-record.c:592 1155#: src/conversation/gnunet-helper-audio-record.c:594
1160#, fuzzy, c-format 1156#, fuzzy, c-format
1161msgid "Connection failure: %s\n" 1157msgid "Connection failure: %s\n"
1162msgstr "'%s' falló en %s: %d con error: '%s'.\n" 1158msgstr "'%s' falló en %s: %d con error: '%s'.\n"
1163 1159
1164#: src/conversation/gnunet-helper-audio-playback.c:704 1160#: src/conversation/gnunet-helper-audio-playback.c:706
1165#: src/conversation/gnunet-helper-audio-record.c:615 1161#: src/conversation/gnunet-helper-audio-record.c:617
1166#, fuzzy 1162#, fuzzy
1167msgid "Wrong Spec\n" 1163msgid "Wrong Spec\n"
1168msgstr "Servicio principal (CORE) erróneo\n" 1164msgstr "Servicio principal (CORE) erróneo\n"
1169 1165
1170#: src/conversation/gnunet-helper-audio-playback.c:710 1166#: src/conversation/gnunet-helper-audio-playback.c:712
1171#: src/conversation/gnunet-helper-audio-record.c:621 1167#: src/conversation/gnunet-helper-audio-record.c:623
1172#, fuzzy 1168#, fuzzy
1173msgid "pa_mainloop_new() failed.\n" 1169msgid "pa_mainloop_new() failed.\n"
1174msgstr "La operación ha fallado.\n" 1170msgstr "La operación ha fallado.\n"
1175 1171
1176#: src/conversation/gnunet-helper-audio-playback.c:724 1172#: src/conversation/gnunet-helper-audio-playback.c:726
1177#: src/conversation/gnunet-helper-audio-record.c:636 1173#: src/conversation/gnunet-helper-audio-record.c:638
1178#, fuzzy 1174#, fuzzy
1179msgid "pa_context_new() failed.\n" 1175msgid "pa_context_new() failed.\n"
1180msgstr "La operación ha fallado.\n" 1176msgstr "La operación ha fallado.\n"
1181 1177
1182#: src/conversation/gnunet-helper-audio-playback.c:731 1178#: src/conversation/gnunet-helper-audio-playback.c:733
1183#: src/conversation/gnunet-helper-audio-record.c:642 1179#: src/conversation/gnunet-helper-audio-record.c:644
1184#, fuzzy, c-format 1180#, fuzzy, c-format
1185msgid "pa_context_connect() failed: %s\n" 1181msgid "pa_context_connect() failed: %s\n"
1186msgstr "# reconexiones rápidas fallidas" 1182msgstr "# reconexiones rápidas fallidas"
1187 1183
1188#: src/conversation/gnunet-helper-audio-playback.c:737 1184#: src/conversation/gnunet-helper-audio-playback.c:739
1189#: src/conversation/gnunet-helper-audio-record.c:648 1185#: src/conversation/gnunet-helper-audio-record.c:650
1190#, fuzzy 1186#, fuzzy
1191msgid "pa_mainloop_run() failed.\n" 1187msgid "pa_mainloop_run() failed.\n"
1192msgstr "La operación ha fallado.\n" 1188msgstr "La operación ha fallado.\n"
1193 1189
1194#: src/conversation/gnunet-helper-audio-playback.c:816 1190#: src/conversation/gnunet-helper-audio-playback.c:818
1195#, c-format 1191#, c-format
1196msgid "Read error from STDIN: %s\n" 1192msgid "Read error from STDIN: %s\n"
1197msgstr "" 1193msgstr ""
1198 1194
1199#: src/conversation/gnunet-helper-audio-record.c:351 1195#: src/conversation/gnunet-helper-audio-record.c:353
1200#, fuzzy, c-format 1196#, fuzzy, c-format
1201msgid "opus_encode_float() failed: %s. Aborting\n" 1197msgid "opus_encode_float() failed: %s. Aborting\n"
1202msgstr "# reconexiones rápidas fallidas" 1198msgstr "# reconexiones rápidas fallidas"
1203 1199
1204#: src/conversation/gnunet-helper-audio-record.c:430 1200#: src/conversation/gnunet-helper-audio-record.c:432
1205#, fuzzy, c-format 1201#, fuzzy, c-format
1206msgid "pa_stream_peek() failed: %s\n" 1202msgid "pa_stream_peek() failed: %s\n"
1207msgstr "stadísticas (%s) falló: %s\n" 1203msgstr "stadísticas (%s) falló: %s\n"
1208 1204
1209#: src/conversation/gnunet-helper-audio-record.c:472 1205#: src/conversation/gnunet-helper-audio-record.c:474
1210msgid "Got signal, exiting.\n" 1206msgid "Got signal, exiting.\n"
1211msgstr "" 1207msgstr ""
1212 1208
1213#: src/conversation/gnunet-helper-audio-record.c:498 1209#: src/conversation/gnunet-helper-audio-record.c:500
1214#, fuzzy 1210#, fuzzy
1215msgid "Stream successfully created.\n" 1211msgid "Stream successfully created.\n"
1216msgstr "Conectado satisfactoriamente a «%s»\n" 1212msgstr "Conectado satisfactoriamente a «%s»\n"
1217 1213
1218#: src/conversation/gnunet-helper-audio-record.c:503 1214#: src/conversation/gnunet-helper-audio-record.c:505
1219#, fuzzy, c-format 1215#, fuzzy, c-format
1220msgid "pa_stream_get_buffer_attr() failed: %s\n" 1216msgid "pa_stream_get_buffer_attr() failed: %s\n"
1221msgstr "stadísticas (%s) falló: %s\n" 1217msgstr "stadísticas (%s) falló: %s\n"
1222 1218
1223#: src/conversation/gnunet-helper-audio-record.c:511 1219#: src/conversation/gnunet-helper-audio-record.c:513
1224#, c-format 1220#, c-format
1225msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" 1221msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
1226msgstr "" 1222msgstr ""
1227 1223
1228#: src/conversation/gnunet-helper-audio-record.c:515 1224#: src/conversation/gnunet-helper-audio-record.c:517
1229#, c-format 1225#, c-format
1230msgid "Using sample spec '%s', channel map '%s'.\n" 1226msgid "Using sample spec '%s', channel map '%s'.\n"
1231msgstr "" 1227msgstr ""
1232 1228
1233#: src/conversation/gnunet-helper-audio-record.c:522 1229#: src/conversation/gnunet-helper-audio-record.c:524
1234#, fuzzy, c-format 1230#, fuzzy, c-format
1235msgid "Connected to device %s (%u, %ssuspended).\n" 1231msgid "Connected to device %s (%u, %ssuspended).\n"
1236msgstr "Conectado a %s.\n" 1232msgstr "Conectado a %s.\n"
1237 1233
1238#: src/conversation/gnunet-helper-audio-record.c:531 1234#: src/conversation/gnunet-helper-audio-record.c:533
1239#, c-format 1235#, c-format
1240msgid "Stream error: %s\n" 1236msgid "Stream error: %s\n"
1241msgstr "" 1237msgstr ""
1242 1238
1243#: src/conversation/gnunet-helper-audio-record.c:579 1239#: src/conversation/gnunet-helper-audio-record.c:581
1244#, fuzzy, c-format 1240#, fuzzy, c-format
1245msgid "pa_stream_connect_record() failed: %s\n" 1241msgid "pa_stream_connect_record() failed: %s\n"
1246msgstr "No se pudo borrar el registro: %s\n" 1242msgstr "No se pudo borrar el registro: %s\n"
1247 1243
1248#: src/conversation/gnunet-helper-audio-record.c:693 1244#: src/conversation/gnunet-helper-audio-record.c:695
1249#, fuzzy 1245#, fuzzy
1250msgid "ogg_stream_init() failed.\n" 1246msgid "ogg_stream_init() failed.\n"
1251msgstr "stadísticas (%s) falló: %s\n" 1247msgstr "stadísticas (%s) falló: %s\n"
1252 1248
1253#: src/conversation/gnunet-helper-audio-record.c:738 1249#: src/conversation/gnunet-helper-audio-record.c:740
1254#, fuzzy, c-format 1250#, fuzzy, c-format
1255msgid "Failed to allocate %u bytes for second packet\n" 1251msgid "Failed to allocate %u bytes for second packet\n"
1256msgstr "" 1252msgstr ""
1257"Se produjo un fallo al alojar las direcciones IP para el nuevo destino\n" 1253"Se produjo un fallo al alojar las direcciones IP para el nuevo destino\n"
1258 1254
1259#: src/conversation/gnunet-service-conversation.c:1303 1255#: src/conversation/gnunet-service-conversation.c:1305
1260#, fuzzy, c-format 1256#, fuzzy, c-format
1261msgid "Could not open line, port %s already in use!\n" 1257msgid "Could not open line, port %s already in use!\n"
1262msgstr "¡No se pudo conectar al servicio %s!\n" 1258msgstr "¡No se pudo conectar al servicio %s!\n"
1263 1259
1264#: src/conversation/microphone.c:119 1260#: src/conversation/microphone.c:121
1265#, fuzzy 1261#, fuzzy
1266msgid "Could not start record audio helper\n" 1262msgid "Could not start record audio helper\n"
1267msgstr "No se pudo empezar la operación de desindexado.\n" 1263msgstr "No se pudo empezar la operación de desindexado.\n"
1268 1264
1269#: src/conversation/plugin_gnsrecord_conversation.c:70 1265#: src/conversation/plugin_gnsrecord_conversation.c:72
1270#, fuzzy, c-format 1266#, fuzzy, c-format
1271msgid "PHONE version %u not supported\n" 1267msgid "PHONE version %u not supported\n"
1272msgstr "Protocolo %u no soportado, omitiendo\n" 1268msgstr "Protocolo %u no soportado, omitiendo\n"
1273 1269
1274#: src/conversation/plugin_gnsrecord_conversation.c:133 1270#: src/conversation/plugin_gnsrecord_conversation.c:135
1275#: src/conversation/plugin_gnsrecord_conversation.c:147 1271#: src/conversation/plugin_gnsrecord_conversation.c:149
1276#, fuzzy, c-format 1272#, fuzzy, c-format
1277msgid "Unable to parse PHONE record `%s'\n" 1273msgid "Unable to parse PHONE record `%s'\n"
1278msgstr "No se pudo procesar el registro PKEY «%s»\n" 1274msgstr "No se pudo procesar el registro PKEY «%s»\n"
1279 1275
1280#: src/conversation/speaker.c:73 1276#: src/conversation/speaker.c:75
1281#, fuzzy 1277#, fuzzy
1282msgid "Could not start playback audio helper.\n" 1278msgid "Could not start playback audio helper.\n"
1283msgstr "No se pudo empezar a publicar.\n" 1279msgstr "No se pudo empezar a publicar.\n"
1284 1280
1285#: src/core/gnunet-core.c:88 1281#: src/core/gnunet-core.c:90
1286#, fuzzy 1282#, fuzzy
1287msgid "fresh connection" 1283msgid "fresh connection"
1288msgstr "# amigos conectados" 1284msgstr "# amigos conectados"
1289 1285
1290#: src/core/gnunet-core.c:91 1286#: src/core/gnunet-core.c:93
1291msgid "key sent" 1287msgid "key sent"
1292msgstr "" 1288msgstr ""
1293 1289
1294#: src/core/gnunet-core.c:94 1290#: src/core/gnunet-core.c:96
1295#, fuzzy 1291#, fuzzy
1296msgid "key received" 1292msgid "key received"
1297msgstr "# claves de sesión recibidas" 1293msgstr "# claves de sesión recibidas"
1298 1294
1299#: src/core/gnunet-core.c:97 1295#: src/core/gnunet-core.c:99
1300#, fuzzy 1296#, fuzzy
1301msgid "connection established" 1297msgid "connection established"
1302msgstr "Colección detenida.\n" 1298msgstr "Colección detenida.\n"
1303 1299
1304#: src/core/gnunet-core.c:100 1300#: src/core/gnunet-core.c:102
1305msgid "rekeying" 1301msgid "rekeying"
1306msgstr "" 1302msgstr ""
1307 1303
1308#: src/core/gnunet-core.c:103 1304#: src/core/gnunet-core.c:105
1309#, fuzzy 1305#, fuzzy
1310msgid "disconnected" 1306msgid "disconnected"
1311msgstr "Desconectado de" 1307msgstr "Desconectado de"
1312 1308
1313#: src/core/gnunet-core.c:110 1309#: src/core/gnunet-core.c:112
1314#, fuzzy 1310#, fuzzy
1315msgid "Connection to CORE service lost (reconnecting)" 1311msgid "Connection to CORE service lost (reconnecting)"
1316msgstr "" 1312msgstr ""
1317"El cliente se desconectó del servicio principal, tratando de reconectar.\n" 1313"El cliente se desconectó del servicio principal, tratando de reconectar.\n"
1318 1314
1319#: src/core/gnunet-core.c:113 1315#: src/core/gnunet-core.c:115
1320#, fuzzy 1316#, fuzzy
1321msgid "unknown state" 1317msgid "unknown state"
1322msgstr "<tiempo desconocido>" 1318msgstr "<tiempo desconocido>"
1323 1319
1324#: src/core/gnunet-core.c:118 1320#: src/core/gnunet-core.c:120
1325#, fuzzy, c-format 1321#, fuzzy, c-format
1326msgid "%24s: %-30s %4s (timeout in %6s)\n" 1322msgid "%24s: %-30s %4s (timeout in %6s)\n"
1327msgstr "%24s: %-17s %4s (%u conexiones en total)\n" 1323msgstr "%24s: %-17s %4s (%u conexiones en total)\n"
1328 1324
1329#: src/core/gnunet-core.c:142 src/peerinfo-tool/gnunet-peerinfo.c:726 1325#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
1330#, c-format 1326#, c-format
1331msgid "Invalid command line argument `%s'\n" 1327msgid "Invalid command line argument `%s'\n"
1332msgstr "Parámetro no válido «%s» en la línea de comandos\n" 1328msgstr "Parámetro no válido «%s» en la línea de comandos\n"
1333 1329
1334#: src/core/gnunet-core.c:153 1330#: src/core/gnunet-core.c:155
1335#, fuzzy 1331#, fuzzy
1336msgid "Failed to connect to CORE service!\n" 1332msgid "Failed to connect to CORE service!\n"
1337msgstr "¡Se produjo un fallo al conectar con el servicio DHT!\n" 1333msgstr "¡Se produjo un fallo al conectar con el servicio DHT!\n"
1338 1334
1339# Miguel: ¿Quizá continuamente fuese mejor? 1335# Miguel: ¿Quizá continuamente fuese mejor?
1340#: src/core/gnunet-core.c:175 src/transport/gnunet-transport.c:1447 1336#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
1341msgid "provide information about all current connections (continuously)" 1337msgid "provide information about all current connections (continuously)"
1342msgstr "" 1338msgstr ""
1343"provee información sobre todas las conexiones actuales (de forma continua)" 1339"provee información sobre todas las conexiones actuales (de forma continua)"
1344 1340
1345#: src/core/gnunet-core.c:184 1341#: src/core/gnunet-core.c:186
1346msgid "Print information about connected peers." 1342msgid "Print information about connected peers."
1347msgstr "Imprime información sobre los pares conectados." 1343msgstr "Imprime información sobre los pares conectados."
1348 1344
1349#: src/core/gnunet-service-core.c:345 1345#: src/core/gnunet-service-core.c:347
1350msgid "# send requests dropped (disconnected)" 1346msgid "# send requests dropped (disconnected)"
1351msgstr "# peticiones de envío descartadas (desconectado)" 1347msgstr "# peticiones de envío descartadas (desconectado)"
1352 1348
1353#: src/core/gnunet-service-core.c:369 1349#: src/core/gnunet-service-core.c:371
1354msgid "# dequeuing CAR (duplicate request)" 1350msgid "# dequeuing CAR (duplicate request)"
1355msgstr "" 1351msgstr ""
1356 1352
1357#: src/core/gnunet-service-core.c:441 1353#: src/core/gnunet-service-core.c:443
1358#, c-format 1354#, c-format
1359msgid "# bytes of messages of type %u received" 1355msgid "# bytes of messages of type %u received"
1360msgstr "# bytes de mensajes del tipo %u recibidos" 1356msgstr "# bytes de mensajes del tipo %u recibidos"
1361 1357
1362#: src/core/gnunet-service-core.c:539 1358#: src/core/gnunet-service-core.c:541
1363msgid "# messages discarded (session disconnected)" 1359msgid "# messages discarded (session disconnected)"
1364msgstr "# mensajes descartados (sesión desconectada)" 1360msgstr "# mensajes descartados (sesión desconectada)"
1365 1361
1366#: src/core/gnunet-service-core.c:877 1362#: src/core/gnunet-service-core.c:879
1367#, fuzzy, c-format 1363#, fuzzy, c-format
1368msgid "# messages of type %u discarded (client busy)" 1364msgid "# messages of type %u discarded (client busy)"
1369msgstr "# bytes de mensajes del tipo %u recibidos" 1365msgstr "# bytes de mensajes del tipo %u recibidos"
1370 1366
1371#: src/core/gnunet-service-core.c:986 1367#: src/core/gnunet-service-core.c:988
1372msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" 1368msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n"
1373msgstr "" 1369msgstr ""
1374"Al servicio principal le falta la configuración de la clave de máquina " 1370"Al servicio principal le falta la configuración de la clave de máquina "
1375"(HOSTKEY). Saliendo.\n" 1371"(HOSTKEY). Saliendo.\n"
1376 1372
1377#: src/core/gnunet-service-core.c:1007 1373#: src/core/gnunet-service-core.c:1009
1378#, fuzzy, c-format 1374#, fuzzy, c-format
1379msgid "Core service of `%s' ready.\n" 1375msgid "Core service of `%s' ready.\n"
1380msgstr "El servicio principal de «%4s» está listo.\n" 1376msgstr "El servicio principal de «%4s» está listo.\n"
1381 1377
1382#: src/core/gnunet-service-core_kx.c:615 1378#: src/core/gnunet-service-core_kx.c:617
1383msgid "# bytes encrypted" 1379msgid "# bytes encrypted"
1384msgstr "# bytes cifrados" 1380msgstr "# bytes cifrados"
1385 1381
1386#: src/core/gnunet-service-core_kx.c:675 1382#: src/core/gnunet-service-core_kx.c:677
1387msgid "# bytes decrypted" 1383msgid "# bytes decrypted"
1388msgstr "# bytes descifrados" 1384msgstr "# bytes descifrados"
1389 1385
1390#: src/core/gnunet-service-core_kx.c:777 1386#: src/core/gnunet-service-core_kx.c:779
1391#, fuzzy 1387#, fuzzy
1392msgid "# PAYLOAD dropped (out of order)" 1388msgid "# PAYLOAD dropped (out of order)"
1393msgstr "# bytes omitidos (fuera de secuencia)" 1389msgstr "# bytes omitidos (fuera de secuencia)"
1394 1390
1395#: src/core/gnunet-service-core_kx.c:827 1391#: src/core/gnunet-service-core_kx.c:829
1396msgid "# key exchanges initiated" 1392msgid "# key exchanges initiated"
1397msgstr "# intercambio de claves iniciados" 1393msgstr "# intercambio de claves iniciados"
1398 1394
1399#: src/core/gnunet-service-core_kx.c:889 1395#: src/core/gnunet-service-core_kx.c:891
1400msgid "# key exchanges stopped" 1396msgid "# key exchanges stopped"
1401msgstr "# intercambio de claves parados" 1397msgstr "# intercambio de claves parados"
1402 1398
1403#: src/core/gnunet-service-core_kx.c:923 1399#: src/core/gnunet-service-core_kx.c:925
1404#, fuzzy 1400#, fuzzy
1405msgid "# PING messages transmitted" 1401msgid "# PING messages transmitted"
1406msgstr "# mensajes PONG creados" 1402msgstr "# mensajes PONG creados"
1407 1403
1408#: src/core/gnunet-service-core_kx.c:990 1404#: src/core/gnunet-service-core_kx.c:992
1409msgid "# old ephemeral keys ignored" 1405msgid "# old ephemeral keys ignored"
1410msgstr "" 1406msgstr ""
1411 1407
1412#: src/core/gnunet-service-core_kx.c:1003 1408#: src/core/gnunet-service-core_kx.c:1005
1413#, fuzzy 1409#, fuzzy
1414msgid "# duplicate ephemeral keys ignored" 1410msgid "# duplicate ephemeral keys ignored"
1415msgstr "# mapas de tipos recibidos" 1411msgstr "# mapas de tipos recibidos"
1416 1412
1417#: src/core/gnunet-service-core_kx.c:1038 1413#: src/core/gnunet-service-core_kx.c:1040
1418#, fuzzy 1414#, fuzzy
1419msgid "# EPHEMERAL_KEYs rejected (bad signature)" 1415msgid "# EPHEMERAL_KEYs rejected (bad signature)"
1420msgstr "# mensajes «SET_KEY» descifrados" 1416msgstr "# mensajes «SET_KEY» descifrados"
1421 1417
1422#: src/core/gnunet-service-core_kx.c:1052 1418#: src/core/gnunet-service-core_kx.c:1054
1423#, c-format 1419#, c-format
1424msgid "" 1420msgid ""
1425"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match " 1421"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
1426"our system time (%llu not in [%llu,%llu]).\n" 1422"our system time (%llu not in [%llu,%llu]).\n"
1427msgstr "" 1423msgstr ""
1428 1424
1429#: src/core/gnunet-service-core_kx.c:1058 1425#: src/core/gnunet-service-core_kx.c:1060
1430#, fuzzy 1426#, fuzzy
1431msgid "# EPHEMERAL_KEY messages rejected due to time" 1427msgid "# EPHEMERAL_KEY messages rejected due to time"
1432msgstr "# mensajes «SET_KEY» descifrados" 1428msgstr "# mensajes «SET_KEY» descifrados"
1433 1429
1434#: src/core/gnunet-service-core_kx.c:1078 1430#: src/core/gnunet-service-core_kx.c:1080
1435#, fuzzy 1431#, fuzzy
1436msgid "# valid ephemeral keys received" 1432msgid "# valid ephemeral keys received"
1437msgstr "# mapas de tipos recibidos" 1433msgstr "# mapas de tipos recibidos"
1438 1434
1439#: src/core/gnunet-service-core_kx.c:1178 1435#: src/core/gnunet-service-core_kx.c:1180
1440#: src/transport/gnunet-service-transport_validation.c:1126 1436#: src/transport/gnunet-service-transport_validation.c:1128
1441msgid "# PING messages received" 1437msgid "# PING messages received"
1442msgstr "# mensajes PING recibidos" 1438msgstr "# mensajes PING recibidos"
1443 1439
1444#: src/core/gnunet-service-core_kx.c:1187 1440#: src/core/gnunet-service-core_kx.c:1189
1445#, fuzzy 1441#, fuzzy
1446msgid "# PING messages dropped (out of order)" 1442msgid "# PING messages dropped (out of order)"
1447msgstr "# Mensajes P2P omitidos debido a saturación de la cola" 1443msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
1448 1444
1449#: src/core/gnunet-service-core_kx.c:1246 1445#: src/core/gnunet-service-core_kx.c:1248
1450msgid "# PONG messages created" 1446msgid "# PONG messages created"
1451msgstr "# mensajes PONG creados" 1447msgstr "# mensajes PONG creados"
1452 1448
1453#: src/core/gnunet-service-core_kx.c:1272 1449#: src/core/gnunet-service-core_kx.c:1274
1454msgid "# sessions terminated by timeout" 1450msgid "# sessions terminated by timeout"
1455msgstr "# sesiones terminadas por plazo de expiración" 1451msgstr "# sesiones terminadas por plazo de expiración"
1456 1452
1457#: src/core/gnunet-service-core_kx.c:1285 1453#: src/core/gnunet-service-core_kx.c:1287
1458msgid "# keepalive messages sent" 1454msgid "# keepalive messages sent"
1459msgstr "# mensajes «keepalive» enviados" 1455msgstr "# mensajes «keepalive» enviados"
1460 1456
1461#: src/core/gnunet-service-core_kx.c:1349 1457#: src/core/gnunet-service-core_kx.c:1351
1462#: src/transport/gnunet-service-transport_validation.c:1459 1458#: src/transport/gnunet-service-transport_validation.c:1461
1463msgid "# PONG messages received" 1459msgid "# PONG messages received"
1464msgstr "# mensajes PONG recibidos" 1460msgstr "# mensajes PONG recibidos"
1465 1461
1466#: src/core/gnunet-service-core_kx.c:1356 1462#: src/core/gnunet-service-core_kx.c:1358
1467#, fuzzy 1463#, fuzzy
1468msgid "# PONG messages dropped (connection down)" 1464msgid "# PONG messages dropped (connection down)"
1469msgstr "# mensajes PONG recibidos" 1465msgstr "# mensajes PONG recibidos"
1470 1466
1471#: src/core/gnunet-service-core_kx.c:1361 1467#: src/core/gnunet-service-core_kx.c:1363
1472#, fuzzy 1468#, fuzzy
1473msgid "# PONG messages dropped (out of order)" 1469msgid "# PONG messages dropped (out of order)"
1474msgstr "# Mensajes P2P omitidos debido a saturación de la cola" 1470msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
1475 1471
1476#: src/core/gnunet-service-core_kx.c:1396 1472#: src/core/gnunet-service-core_kx.c:1398
1477msgid "# PONG messages decrypted" 1473msgid "# PONG messages decrypted"
1478msgstr "# mensajes PONG descifrados" 1474msgstr "# mensajes PONG descifrados"
1479 1475
1480#: src/core/gnunet-service-core_kx.c:1434 1476#: src/core/gnunet-service-core_kx.c:1436
1481msgid "# session keys confirmed via PONG" 1477msgid "# session keys confirmed via PONG"
1482msgstr "# claves de sesión confirmadas vía PONG" 1478msgstr "# claves de sesión confirmadas vía PONG"
1483 1479
1484#: src/core/gnunet-service-core_kx.c:1445 1480#: src/core/gnunet-service-core_kx.c:1447
1485#, fuzzy 1481#, fuzzy
1486msgid "# timeouts prevented via PONG" 1482msgid "# timeouts prevented via PONG"
1487msgstr "# bytes recibidos vía TCP" 1483msgstr "# bytes recibidos vía TCP"
1488 1484
1489#: src/core/gnunet-service-core_kx.c:1452 1485#: src/core/gnunet-service-core_kx.c:1454
1490msgid "# rekey operations confirmed via PONG" 1486msgid "# rekey operations confirmed via PONG"
1491msgstr "# operaciones de cambio de clave confirmadas vía PONG" 1487msgstr "# operaciones de cambio de clave confirmadas vía PONG"
1492 1488
1493#: src/core/gnunet-service-core_kx.c:1640 1489#: src/core/gnunet-service-core_kx.c:1642
1494#, fuzzy 1490#, fuzzy
1495msgid "# DATA message dropped (out of order)" 1491msgid "# DATA message dropped (out of order)"
1496msgstr "# bytes omitidos (fuera de secuencia)" 1492msgstr "# bytes omitidos (fuera de secuencia)"
1497 1493
1498#: src/core/gnunet-service-core_kx.c:1648 1494#: src/core/gnunet-service-core_kx.c:1650
1499#, c-format 1495#, c-format
1500msgid "" 1496msgid ""
1501"Session to peer `%s' went down due to key expiration (should not happen)\n" 1497"Session to peer `%s' went down due to key expiration (should not happen)\n"
1502msgstr "" 1498msgstr ""
1503 1499
1504#: src/core/gnunet-service-core_kx.c:1651 1500#: src/core/gnunet-service-core_kx.c:1653
1505#, fuzzy 1501#, fuzzy
1506msgid "# sessions terminated by key expiration" 1502msgid "# sessions terminated by key expiration"
1507msgstr "# sesiones terminadas por plazo de expiración" 1503msgstr "# sesiones terminadas por plazo de expiración"
1508 1504
1509#: src/core/gnunet-service-core_kx.c:1740 1505#: src/core/gnunet-service-core_kx.c:1742
1510#: src/core/gnunet-service-core_kx.c:1766 1506#: src/core/gnunet-service-core_kx.c:1768
1511msgid "# bytes dropped (duplicates)" 1507msgid "# bytes dropped (duplicates)"
1512msgstr "# bytes omitidos (duplicados)" 1508msgstr "# bytes omitidos (duplicados)"
1513 1509
1514#: src/core/gnunet-service-core_kx.c:1753 1510#: src/core/gnunet-service-core_kx.c:1755
1515msgid "# bytes dropped (out of sequence)" 1511msgid "# bytes dropped (out of sequence)"
1516msgstr "# bytes omitidos (fuera de secuencia)" 1512msgstr "# bytes omitidos (fuera de secuencia)"
1517 1513
1518#: src/core/gnunet-service-core_kx.c:1795 1514#: src/core/gnunet-service-core_kx.c:1797
1519msgid "# bytes dropped (ancient message)" 1515msgid "# bytes dropped (ancient message)"
1520msgstr "# bytes omitidos (mensaje antiguo)" 1516msgstr "# bytes omitidos (mensaje antiguo)"
1521 1517
1522#: src/core/gnunet-service-core_kx.c:1803 1518#: src/core/gnunet-service-core_kx.c:1805
1523msgid "# bytes of payload decrypted" 1519msgid "# bytes of payload decrypted"
1524msgstr "# bytes de «payload» descifrados" 1520msgstr "# bytes de «payload» descifrados"
1525 1521
1526#: src/core/gnunet-service-core_sessions.c:258 1522#: src/core/gnunet-service-core_sessions.c:260
1527#: src/core/gnunet-service-core_sessions.c:348 1523#: src/core/gnunet-service-core_sessions.c:350
1528#: src/dht/gnunet-service-dht_neighbours.c:739 1524#: src/dht/gnunet-service-dht_neighbours.c:741
1529#: src/dht/gnunet-service-dht_neighbours.c:802 1525#: src/dht/gnunet-service-dht_neighbours.c:804
1530#: src/fs/gnunet-service-fs_cp.c:613 src/fs/gnunet-service-fs_cp.c:1520 1526#: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
1531#: src/topology/gnunet-daemon-topology.c:615 1527#: src/topology/gnunet-daemon-topology.c:617
1532#: src/topology/gnunet-daemon-topology.c:717 1528#: src/topology/gnunet-daemon-topology.c:719
1533#: src/transport/gnunet-service-transport_neighbours.c:719 1529#: src/transport/gnunet-service-transport_neighbours.c:720
1534#: src/transport/gnunet-service-transport_neighbours.c:727 1530#: src/transport/gnunet-service-transport_neighbours.c:728
1535msgid "# peers connected" 1531msgid "# peers connected"
1536msgstr "# pares conectados" 1532msgstr "# pares conectados"
1537 1533
1538#: src/core/gnunet-service-core_sessions.c:294 1534#: src/core/gnunet-service-core_sessions.c:296
1539msgid "# type map refreshes sent" 1535msgid "# type map refreshes sent"
1540msgstr "# envíos de refrescos del mapa de tipos" 1536msgstr "# envíos de refrescos del mapa de tipos"
1541 1537
1542#: src/core/gnunet-service-core_sessions.c:414 1538#: src/core/gnunet-service-core_sessions.c:416
1543#, fuzzy 1539#, fuzzy
1544msgid "# outdated typemap confirmations received" 1540msgid "# outdated typemap confirmations received"
1545msgstr "Se produjo un fallo al encolar una confirmación de recepción\n" 1541msgstr "Se produjo un fallo al encolar una confirmación de recepción\n"
1546 1542
1547#: src/core/gnunet-service-core_sessions.c:431 1543#: src/core/gnunet-service-core_sessions.c:433
1548#, fuzzy 1544#, fuzzy
1549msgid "# valid typemap confirmations received" 1545msgid "# valid typemap confirmations received"
1550msgstr "Se produjo un fallo al encolar una confirmación de recepción\n" 1546msgstr "Se produjo un fallo al encolar una confirmación de recepción\n"
1551 1547
1552#: src/core/gnunet-service-core_typemap.c:167 1548#: src/core/gnunet-service-core_typemap.c:169
1553#: src/core/gnunet-service-core_typemap.c:179 1549#: src/core/gnunet-service-core_typemap.c:181
1554msgid "# type maps received" 1550msgid "# type maps received"
1555msgstr "# mapas de tipos recibidos" 1551msgstr "# mapas de tipos recibidos"
1556 1552
1557#: src/core/gnunet-service-core_typemap.c:210 1553#: src/core/gnunet-service-core_typemap.c:212
1558msgid "# updates to my type map" 1554msgid "# updates to my type map"
1559msgstr "# actualizaciones de mi mapa de tipos" 1555msgstr "# actualizaciones de mi mapa de tipos"
1560 1556
1561#: src/credential/credential_misc.c:86 1557#: src/credential/credential_misc.c:88
1562#, fuzzy, c-format 1558#, fuzzy, c-format
1563msgid "Unable to parse CRED record string `%s'\n" 1559msgid "Unable to parse CRED record string `%s'\n"
1564msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" 1560msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
1565 1561
1566#: src/credential/gnunet-credential.c:262 src/namestore/gnunet-namestore.c:887 1562#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
1567#, fuzzy, c-format 1563#, fuzzy, c-format
1568msgid "Ego `%s' not known to identity service\n" 1564msgid "Ego `%s' not known to identity service\n"
1569msgstr "'%s': servicio desconocido: %s\n" 1565msgstr "'%s': servicio desconocido: %s\n"
1570 1566
1571#: src/credential/gnunet-credential.c:278 1567#: src/credential/gnunet-credential.c:280
1572#: src/credential/gnunet-credential.c:432 1568#: src/credential/gnunet-credential.c:434
1573#, fuzzy, c-format 1569#, fuzzy, c-format
1574msgid "Issuer public key `%s' is not well-formed\n" 1570msgid "Issuer public key `%s' is not well-formed\n"
1575msgstr "El bloque del tipo %u está mal formado\n" 1571msgstr "El bloque del tipo %u está mal formado\n"
1576 1572
1577#: src/credential/gnunet-credential.c:359 1573#: src/credential/gnunet-credential.c:361
1578#: src/credential/gnunet-credential.c:421 1574#: src/credential/gnunet-credential.c:423
1579#, fuzzy, c-format 1575#, fuzzy, c-format
1580msgid "Issuer public key not well-formed\n" 1576msgid "Issuer public key not well-formed\n"
1581msgstr "El bloque del tipo %u está mal formado\n" 1577msgstr "El bloque del tipo %u está mal formado\n"
1582 1578
1583#: src/credential/gnunet-credential.c:370 1579#: src/credential/gnunet-credential.c:372
1584#: src/credential/gnunet-credential.c:442 1580#: src/credential/gnunet-credential.c:444
1585#, fuzzy, c-format 1581#, fuzzy, c-format
1586msgid "Failed to connect to CREDENTIAL\n" 1582msgid "Failed to connect to CREDENTIAL\n"
1587msgstr "Se produjo un fallo al conectar con GNS\n" 1583msgstr "Se produjo un fallo al conectar con GNS\n"
1588 1584
1589#: src/credential/gnunet-credential.c:377 1585#: src/credential/gnunet-credential.c:379
1590#, c-format 1586#, c-format
1591msgid "You must provide issuer the attribute\n" 1587msgid "You must provide issuer the attribute\n"
1592msgstr "" 1588msgstr ""
1593 1589
1594#: src/credential/gnunet-credential.c:385 1590#: src/credential/gnunet-credential.c:387
1595#, fuzzy, c-format 1591#, fuzzy, c-format
1596msgid "ego required\n" 1592msgid "ego required\n"
1597msgstr "Tipo requerido\n" 1593msgstr "Tipo requerido\n"
1598 1594
1599#: src/credential/gnunet-credential.c:401 1595#: src/credential/gnunet-credential.c:403
1600#, c-format 1596#, c-format
1601msgid "Subject public key needed\n" 1597msgid "Subject public key needed\n"
1602msgstr "" 1598msgstr ""
1603 1599
1604#: src/credential/gnunet-credential.c:412 1600#: src/credential/gnunet-credential.c:414
1605#, fuzzy, c-format 1601#, fuzzy, c-format
1606msgid "Subject public key `%s' is not well-formed\n" 1602msgid "Subject public key `%s' is not well-formed\n"
1607msgstr "El bloque del tipo %u está mal formado\n" 1603msgstr "El bloque del tipo %u está mal formado\n"
1608 1604
1609#: src/credential/gnunet-credential.c:449 1605#: src/credential/gnunet-credential.c:451
1610#, c-format 1606#, c-format
1611msgid "You must provide issuer and subject attributes\n" 1607msgid "You must provide issuer and subject attributes\n"
1612msgstr "" 1608msgstr ""
1613 1609
1614#: src/credential/gnunet-credential.c:502 1610#: src/credential/gnunet-credential.c:504
1615#, fuzzy, c-format 1611#, fuzzy, c-format
1616msgid "Issuer ego required\n" 1612msgid "Issuer ego required\n"
1617msgstr "Tipo requerido\n" 1613msgstr "Tipo requerido\n"
1618 1614
1619#: src/credential/gnunet-credential.c:514 1615#: src/credential/gnunet-credential.c:516
1620#, c-format 1616#, c-format
1621msgid "Please specify name to lookup, subject key and issuer key!\n" 1617msgid "Please specify name to lookup, subject key and issuer key!\n"
1622msgstr "" 1618msgstr ""
1623 1619
1624#: src/credential/gnunet-credential.c:534 1620#: src/credential/gnunet-credential.c:536
1625msgid "create credential" 1621msgid "create credential"
1626msgstr "" 1622msgstr ""
1627 1623
1628#: src/credential/gnunet-credential.c:538 1624#: src/credential/gnunet-credential.c:540
1629msgid "verify credential against attribute" 1625msgid "verify credential against attribute"
1630msgstr "" 1626msgstr ""
1631 1627
1632#: src/credential/gnunet-credential.c:543 1628#: src/credential/gnunet-credential.c:545
1633#, fuzzy 1629#, fuzzy
1634msgid "The public key of the subject to lookup the credential for" 1630msgid "The public key of the subject to lookup the credential for"
1635msgstr "Especificar el tipo del registro a buscar" 1631msgstr "Especificar el tipo del registro a buscar"
1636 1632
1637#: src/credential/gnunet-credential.c:548 1633#: src/credential/gnunet-credential.c:550
1638msgid "The name of the credential presented by the subject" 1634msgid "The name of the credential presented by the subject"
1639msgstr "" 1635msgstr ""
1640 1636
1641#: src/credential/gnunet-credential.c:553 1637#: src/credential/gnunet-credential.c:555
1642#, fuzzy 1638#, fuzzy
1643msgid "The public key of the authority to verify the credential against" 1639msgid "The public key of the authority to verify the credential against"
1644msgstr "Especificar el tipo del registro a buscar" 1640msgstr "Especificar el tipo del registro a buscar"
1645 1641
1646#: src/credential/gnunet-credential.c:558 1642#: src/credential/gnunet-credential.c:560
1647#, fuzzy 1643#, fuzzy
1648msgid "The ego to use" 1644msgid "The ego to use"
1649msgstr "tamaño del mensaje" 1645msgstr "tamaño del mensaje"
1650 1646
1651#: src/credential/gnunet-credential.c:563 1647#: src/credential/gnunet-credential.c:565
1652msgid "The issuer attribute to verify against or to issue" 1648msgid "The issuer attribute to verify against or to issue"
1653msgstr "" 1649msgstr ""
1654 1650
1655#: src/credential/gnunet-credential.c:568 1651#: src/credential/gnunet-credential.c:570
1656msgid "The time to live for the credential" 1652msgid "The time to live for the credential"
1657msgstr "" 1653msgstr ""
1658 1654
1659#: src/credential/gnunet-credential.c:572 1655#: src/credential/gnunet-credential.c:574
1660msgid "collect credentials" 1656msgid "collect credentials"
1661msgstr "" 1657msgstr ""
1662 1658
1663#: src/credential/gnunet-credential.c:586 1659#: src/credential/gnunet-credential.c:588
1664#, fuzzy 1660#, fuzzy
1665msgid "GNUnet credential resolver tool" 1661msgid "GNUnet credential resolver tool"
1666msgstr "Herramienta de acceso GNUnet GNS" 1662msgstr "Herramienta de acceso GNUnet GNS"
1667 1663
1668#: src/credential/gnunet-service-credential.c:1136 src/gns/gnunet-gns.c:183 1664#: src/credential/gnunet-service-credential.c:1138 src/gns/gnunet-gns.c:185
1669#: src/gns/gnunet-gns-helper-service-w32.c:725 1665#: src/gns/gnunet-gns-helper-service-w32.c:727
1670#, c-format 1666#, c-format
1671msgid "Failed to connect to GNS\n" 1667msgid "Failed to connect to GNS\n"
1672msgstr "Se produjo un fallo al conectar con GNS\n" 1668msgstr "Se produjo un fallo al conectar con GNS\n"
1673 1669
1674#: src/credential/gnunet-service-credential.c:1142 1670#: src/credential/gnunet-service-credential.c:1144
1675#: src/namestore/gnunet-namestore.c:913 1671#: src/namestore/gnunet-namestore.c:1019
1676#: src/namestore/gnunet-namestore-fcfsd.c:1136 1672#: src/namestore/gnunet-namestore-fcfsd.c:1138
1677#, c-format 1673#, c-format
1678msgid "Failed to connect to namestore\n" 1674msgid "Failed to connect to namestore\n"
1679msgstr "Se produjo un fallo al conectar con el almacén de nombres\n" 1675msgstr "Se produjo un fallo al conectar con el almacén de nombres\n"
1680 1676
1681#: src/credential/plugin_gnsrecord_credential.c:184 1677#: src/credential/plugin_gnsrecord_credential.c:186
1682#, fuzzy, c-format 1678#, fuzzy, c-format
1683msgid "Unable to parse ATTR record string `%s'\n" 1679msgid "Unable to parse ATTR record string `%s'\n"
1684msgstr "No se pudo procesar la cadena de registro TLSA «%s»\n" 1680msgstr "No se pudo procesar la cadena de registro TLSA «%s»\n"
1685 1681
1686#: src/datacache/datacache.c:117 src/datacache/datacache.c:309 1682#: src/datacache/datacache.c:119 src/datacache/datacache.c:311
1687#: src/datastore/gnunet-service-datastore.c:755 1683#: src/datastore/gnunet-service-datastore.c:757
1688msgid "# bytes stored" 1684msgid "# bytes stored"
1689msgstr "# bytes almacenados" 1685msgstr "# bytes almacenados"
1690 1686
1691#: src/datacache/datacache.c:121 src/datacache/datacache.c:313 1687#: src/datacache/datacache.c:123 src/datacache/datacache.c:315
1692msgid "# items stored" 1688msgid "# items stored"
1693msgstr "# elementos almacenados" 1689msgstr "# elementos almacenados"
1694 1690
1695#: src/datacache/datacache.c:204 1691#: src/datacache/datacache.c:206
1696#, c-format 1692#, c-format
1697msgid "Loading `%s' datacache plugin\n" 1693msgid "Loading `%s' datacache plugin\n"
1698msgstr "Cargando el módulo de la cache de datos «%s»\n" 1694msgstr "Cargando el módulo de la cache de datos «%s»\n"
1699 1695
1700#: src/datacache/datacache.c:215 1696#: src/datacache/datacache.c:217
1701#, c-format 1697#, c-format
1702msgid "Failed to load datacache plugin for `%s'\n" 1698msgid "Failed to load datacache plugin for `%s'\n"
1703msgstr "" 1699msgstr ""
1704"Se produjo un fallo al cargar el módulo de la cache de datos para «%s»\n" 1700"Se produjo un fallo al cargar el módulo de la cache de datos para «%s»\n"
1705 1701
1706#: src/datacache/datacache.c:343 1702#: src/datacache/datacache.c:345
1707msgid "# requests received" 1703msgid "# requests received"
1708msgstr "# peticiones recibidas" 1704msgstr "# peticiones recibidas"
1709 1705
1710#: src/datacache/datacache.c:353 1706#: src/datacache/datacache.c:355
1711msgid "# requests filtered by bloom filter" 1707msgid "# requests filtered by bloom filter"
1712msgstr "# peticiones filtradas por el «bloomfilter»" 1708msgstr "# peticiones filtradas por el «bloomfilter»"
1713 1709
1714#: src/datacache/datacache.c:383 1710#: src/datacache/datacache.c:385
1715#, fuzzy 1711#, fuzzy
1716msgid "# requests for random value received" 1712msgid "# requests for random value received"
1717msgstr "# peticiones recibidas" 1713msgstr "# peticiones recibidas"
1718 1714
1719#: src/datacache/datacache.c:415 1715#: src/datacache/datacache.c:417
1720#, fuzzy 1716#, fuzzy
1721msgid "# proximity search requests received" 1717msgid "# proximity search requests received"
1722msgstr "# búsquedas de clientes recibidas" 1718msgstr "# búsquedas de clientes recibidas"
1723 1719
1724#: src/datacache/plugin_datacache_heap.c:551 1720#: src/datacache/plugin_datacache_heap.c:553
1725msgid "Heap datacache running\n" 1721msgid "Heap datacache running\n"
1726msgstr "Caché de datos de montículo (heap) ejecutándose\n" 1722msgstr "Caché de datos de montículo (heap) ejecutándose\n"
1727 1723
1728#: src/datacache/plugin_datacache_sqlite.c:116 1724#: src/datacache/plugin_datacache_sqlite.c:118
1729#: src/datacache/plugin_datacache_sqlite.c:125 1725#: src/datacache/plugin_datacache_sqlite.c:127
1730#: src/datastore/plugin_datastore_mysql.c:890 1726#: src/datastore/plugin_datastore_mysql.c:892
1731#: src/datastore/plugin_datastore_sqlite.c:56 1727#: src/datastore/plugin_datastore_sqlite.c:58
1732#: src/datastore/plugin_datastore_sqlite.c:64 src/my/my.c:79 src/my/my.c:91 1728#: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
1733#: src/mysql/mysql.c:40 src/mysql/mysql.c:47 1729#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
1734#: src/namecache/plugin_namecache_sqlite.c:50 1730#: src/namecache/plugin_namecache_sqlite.c:52
1735#: src/namestore/plugin_namestore_sqlite.c:51 1731#: src/namestore/plugin_namestore_sqlite.c:53
1736#: src/peerstore/plugin_peerstore_sqlite.c:50 1732#: src/peerstore/plugin_peerstore_sqlite.c:52
1737#: src/psycstore/plugin_psycstore_mysql.c:60 1733#: src/reclaim/plugin_reclaim_sqlite.c:52
1738#: src/reclaim/plugin_reclaim_sqlite.c:50 1734#: src/testbed/generate-underlay-topology.c:47
1739#: src/testbed/generate-underlay-topology.c:45 1735#: src/testbed/gnunet-daemon-latency-logger.c:52
1740#: src/testbed/gnunet-daemon-latency-logger.c:50 1736#: src/testbed/gnunet-daemon-testbed-underlay.c:56
1741#: src/testbed/gnunet-daemon-testbed-underlay.c:54 1737#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
1742#: src/testbed/testbed_api_hosts.c:67 src/util/crypto_ecc.c:51 1738#: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
1743#: src/util/crypto_ecc_setup.c:39 src/util/crypto_mpi.c:37 1739#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
1744#: src/include/gnunet_common.h:816 src/include/gnunet_common.h:825 1740#: src/scalarproduct/scalarproduct.h:35
1745#: src/scalarproduct/scalarproduct.h:33
1746#, c-format 1741#, c-format
1747msgid "`%s' failed at %s:%d with error: %s\n" 1742msgid "`%s' failed at %s:%d with error: %s\n"
1748msgstr "«%s» falló en %s: %d con el error: %s\n" 1743msgstr "«%s» falló en %s: %d con el error: %s\n"
1749 1744
1750#: src/datacache/plugin_datacache_sqlite.c:861 1745#: src/datacache/plugin_datacache_sqlite.c:863
1751#: src/datastore/plugin_datastore_sqlite.c:506 1746#: src/datastore/plugin_datastore_sqlite.c:508
1752#: src/namecache/plugin_namecache_sqlite.c:327 1747#: src/namecache/plugin_namecache_sqlite.c:229
1753#: src/namestore/plugin_namestore_sqlite.c:262 1748#: src/namestore/plugin_namestore_sqlite.c:265
1754#: src/reclaim/plugin_reclaim_sqlite.c:334 1749#: src/reclaim/plugin_reclaim_sqlite.c:336
1755msgid "Tried to close sqlite without finalizing all prepared statements.\n" 1750msgid "Tried to close sqlite without finalizing all prepared statements.\n"
1756msgstr "" 1751msgstr ""
1757"Se intentó cerrar sqlite sin finalizar todas las sentencias preparadas.\n" 1752"Se intentó cerrar sqlite sin finalizar todas las sentencias preparadas.\n"
1758 1753
1759#: src/datastore/datastore_api.c:346 1754#: src/datastore/datastore_api.c:348
1760#, fuzzy 1755#, fuzzy
1761msgid "DATASTORE disconnected" 1756msgid "DATASTORE disconnected"
1762msgstr "Desconectado de" 1757msgstr "Desconectado de"
1763 1758
1764#: src/datastore/datastore_api.c:466 1759#: src/datastore/datastore_api.c:468
1765#, fuzzy 1760#, fuzzy
1766msgid "Disconnected from DATASTORE" 1761msgid "Disconnected from DATASTORE"
1767msgstr "# reconexiones al almacén de datos (DATASTORE)" 1762msgstr "# reconexiones al almacén de datos (DATASTORE)"
1768 1763
1769#: src/datastore/datastore_api.c:567 1764#: src/datastore/datastore_api.c:569
1770msgid "# queue overflows" 1765msgid "# queue overflows"
1771msgstr "# desbordamientos de la cola" 1766msgstr "# desbordamientos de la cola"
1772 1767
1773#: src/datastore/datastore_api.c:597 1768#: src/datastore/datastore_api.c:599
1774msgid "# queue entries created" 1769msgid "# queue entries created"
1775msgstr "# entradas creadas en la cola" 1770msgstr "# entradas creadas en la cola"
1776 1771
1777#: src/datastore/datastore_api.c:758 1772#: src/datastore/datastore_api.c:760
1778msgid "# status messages received" 1773msgid "# status messages received"
1779msgstr "# mensajes de estado recibidos" 1774msgstr "# mensajes de estado recibidos"
1780 1775
1781#: src/datastore/datastore_api.c:812 1776#: src/datastore/datastore_api.c:814
1782msgid "# Results received" 1777msgid "# Results received"
1783msgstr "# Resultados recibidos" 1778msgstr "# Resultados recibidos"
1784 1779
1785#: src/datastore/datastore_api.c:918 1780#: src/datastore/datastore_api.c:920
1786msgid "# datastore connections (re)created" 1781msgid "# datastore connections (re)created"
1787msgstr "# conexiones a almacenes de datos (re)creadas" 1782msgstr "# conexiones a almacenes de datos (re)creadas"
1788 1783
1789#: src/datastore/datastore_api.c:1032 1784#: src/datastore/datastore_api.c:1034
1790msgid "# PUT requests executed" 1785msgid "# PUT requests executed"
1791msgstr "# peticiones «PUT» ejecutadas" 1786msgstr "# peticiones «PUT» ejecutadas"
1792 1787
1793#: src/datastore/datastore_api.c:1093 1788#: src/datastore/datastore_api.c:1095
1794msgid "# RESERVE requests executed" 1789msgid "# RESERVE requests executed"
1795msgstr "# peticiones «RESERVE» ejecutadas" 1790msgstr "# peticiones «RESERVE» ejecutadas"
1796 1791
1797#: src/datastore/datastore_api.c:1158 1792#: src/datastore/datastore_api.c:1160
1798msgid "# RELEASE RESERVE requests executed" 1793msgid "# RELEASE RESERVE requests executed"
1799msgstr "# Peticiones «RELEASE RESERVE» ejecutadas" 1794msgstr "# Peticiones «RELEASE RESERVE» ejecutadas"
1800 1795
1801#: src/datastore/datastore_api.c:1236 1796#: src/datastore/datastore_api.c:1238
1802msgid "# REMOVE requests executed" 1797msgid "# REMOVE requests executed"
1803msgstr "# peticiones «REMOVE» ejecutadas" 1798msgstr "# peticiones «REMOVE» ejecutadas"
1804 1799
1805#: src/datastore/datastore_api.c:1296 1800#: src/datastore/datastore_api.c:1298
1806msgid "# GET REPLICATION requests executed" 1801msgid "# GET REPLICATION requests executed"
1807msgstr "# peticiones «GET REPLICATION» ejecutadas" 1802msgstr "# peticiones «GET REPLICATION» ejecutadas"
1808 1803
1809#: src/datastore/datastore_api.c:1358 1804#: src/datastore/datastore_api.c:1360
1810msgid "# GET ZERO ANONYMITY requests executed" 1805msgid "# GET ZERO ANONYMITY requests executed"
1811msgstr "# peticiones «GET ZERO ANONYMITY» ejecutadas" 1806msgstr "# peticiones «GET ZERO ANONYMITY» ejecutadas"
1812 1807
1813#: src/datastore/datastore_api.c:1439 1808#: src/datastore/datastore_api.c:1441
1814msgid "# GET requests executed" 1809msgid "# GET requests executed"
1815msgstr "# peticiones «GET» ejecutadas" 1810msgstr "# peticiones «GET» ejecutadas"
1816 1811
1817#: src/datastore/gnunet-datastore.c:187 1812#: src/datastore/gnunet-datastore.c:189
1818#, c-format 1813#, c-format
1819msgid "Dumped %<PRIu64> records\n" 1814msgid "Dumped %<PRIu64> records\n"
1820msgstr "" 1815msgstr ""
1821 1816
1822#: src/datastore/gnunet-datastore.c:215 src/datastore/gnunet-datastore.c:227 1817#: src/datastore/gnunet-datastore.c:217 src/datastore/gnunet-datastore.c:229
1823#, c-format 1818#, c-format
1824msgid "Short write to file: %zd bytes expecting %zd\n" 1819msgid "Short write to file: %zd bytes expecting %zd\n"
1825msgstr "" 1820msgstr ""
1826 1821
1827#: src/datastore/gnunet-datastore.c:259 1822#: src/datastore/gnunet-datastore.c:261
1828#, fuzzy 1823#, fuzzy
1829msgid "Error queueing datastore GET operation\n" 1824msgid "Error queueing datastore GET operation\n"
1830msgstr "Error leyendo «%s»: %s" 1825msgstr "Error leyendo «%s»: %s"
1831 1826
1832#: src/datastore/gnunet-datastore.c:285 src/datastore/gnunet-datastore.c:410 1827#: src/datastore/gnunet-datastore.c:287 src/datastore/gnunet-datastore.c:412
1833#, fuzzy, c-format 1828#, fuzzy, c-format
1834msgid "Unable to open dump file: %s\n" 1829msgid "Unable to open dump file: %s\n"
1835msgstr "Se produjo un fallo al crear los índices\n" 1830msgstr "Se produjo un fallo al crear los índices\n"
1836 1831
1837#: src/datastore/gnunet-datastore.c:324 1832#: src/datastore/gnunet-datastore.c:326
1838#, fuzzy, c-format 1833#, fuzzy, c-format
1839msgid "Failed to store item: %s, aborting\n" 1834msgid "Failed to store item: %s, aborting\n"
1840msgstr "Se produjo un fallo al abrir «%s» para escritura" 1835msgstr "Se produjo un fallo al abrir «%s» para escritura"
1841 1836
1842#: src/datastore/gnunet-datastore.c:338 1837#: src/datastore/gnunet-datastore.c:340
1843#, fuzzy, c-format 1838#, fuzzy, c-format
1844msgid "Inserted %<PRIu64> records\n" 1839msgid "Inserted %<PRIu64> records\n"
1845msgstr "establece registros de clase A" 1840msgstr "establece registros de clase A"
1846 1841
1847#: src/datastore/gnunet-datastore.c:347 src/datastore/gnunet-datastore.c:361 1842#: src/datastore/gnunet-datastore.c:349 src/datastore/gnunet-datastore.c:363
1848#, c-format 1843#, c-format
1849msgid "Short read from file: %zd bytes expecting %zd\n" 1844msgid "Short read from file: %zd bytes expecting %zd\n"
1850msgstr "" 1845msgstr ""
1851 1846
1852#: src/datastore/gnunet-datastore.c:387 1847#: src/datastore/gnunet-datastore.c:389
1853#, fuzzy 1848#, fuzzy
1854msgid "Error queueing datastore PUT operation\n" 1849msgid "Error queueing datastore PUT operation\n"
1855msgstr "Error leyendo «%s»: %s" 1850msgstr "Error leyendo «%s»: %s"
1856 1851
1857#: src/datastore/gnunet-datastore.c:430 1852#: src/datastore/gnunet-datastore.c:432
1858msgid "Input file is not of a supported format\n" 1853msgid "Input file is not of a supported format\n"
1859msgstr "" 1854msgstr ""
1860 1855
1861#: src/datastore/gnunet-datastore.c:456 1856#: src/datastore/gnunet-datastore.c:458
1862#, fuzzy 1857#, fuzzy
1863msgid "Failed connecting to the datastore.\n" 1858msgid "Failed connecting to the datastore.\n"
1864msgstr "Se produjo un fallo al conectar con el almacén de datos." 1859msgstr "Se produjo un fallo al conectar con el almacén de datos."
1865 1860
1866#: src/datastore/gnunet-datastore.c:468 1861#: src/datastore/gnunet-datastore.c:470
1867#, fuzzy, c-format 1862#, fuzzy, c-format
1868msgid "Please choose at least one operation: %s, %s\n" 1863msgid "Please choose at least one operation: %s, %s\n"
1869msgstr "Por favor, seleccione una operación: %s o %s o %s o %s o %s\n" 1864msgstr "Por favor, seleccione una operación: %s o %s o %s o %s o %s\n"
1870 1865
1871#: src/datastore/gnunet-datastore.c:491 1866#: src/datastore/gnunet-datastore.c:493
1872#, fuzzy 1867#, fuzzy
1873msgid "Dump all records from the datastore" 1868msgid "Dump all records from the datastore"
1874msgstr "Buscar el registro para el nombre dado" 1869msgstr "Buscar el registro para el nombre dado"
1875 1870
1876#: src/datastore/gnunet-datastore.c:495 1871#: src/datastore/gnunet-datastore.c:497
1877#, fuzzy 1872#, fuzzy
1878msgid "Insert records into the datastore" 1873msgid "Insert records into the datastore"
1879msgstr "# bytes mandados al almacén de datos" 1874msgstr "# bytes mandados al almacén de datos"
1880 1875
1881#: src/datastore/gnunet-datastore.c:500 1876#: src/datastore/gnunet-datastore.c:502
1882msgid "File to dump or insert" 1877msgid "File to dump or insert"
1883msgstr "" 1878msgstr ""
1884 1879
1885#: src/datastore/gnunet-datastore.c:509 1880#: src/datastore/gnunet-datastore.c:511
1886#, fuzzy 1881#, fuzzy
1887msgid "Manipulate GNUnet datastore" 1882msgid "Manipulate GNUnet datastore"
1888msgstr "Manipular ficheros de configuración de GNUnet" 1883msgstr "Manipular ficheros de configuración de GNUnet"
1889 1884
1890#: src/datastore/gnunet-service-datastore.c:336 1885#: src/datastore/gnunet-service-datastore.c:338
1891msgid "# bytes expired" 1886msgid "# bytes expired"
1892msgstr "# bytes expirados" 1887msgstr "# bytes expirados"
1893 1888
1894#: src/datastore/gnunet-service-datastore.c:418 1889#: src/datastore/gnunet-service-datastore.c:420
1895msgid "# bytes purged (low-priority)" 1890msgid "# bytes purged (low-priority)"
1896msgstr "# bytes purgados (baja prioridad)" 1891msgstr "# bytes purgados (baja prioridad)"
1897 1892
1898#: src/datastore/gnunet-service-datastore.c:560 1893#: src/datastore/gnunet-service-datastore.c:562
1899msgid "# results found" 1894msgid "# results found"
1900msgstr "# resultados encontrados" 1895msgstr "# resultados encontrados"
1901 1896
1902#: src/datastore/gnunet-service-datastore.c:601 1897#: src/datastore/gnunet-service-datastore.c:603
1903#, fuzzy, c-format 1898#, fuzzy, c-format
1904msgid "" 1899msgid ""
1905"Insufficient space (%llu bytes are available) to satisfy RESERVE request for " 1900"Insufficient space (%llu bytes are available) to satisfy RESERVE request for "
@@ -1908,7 +1903,7 @@ msgstr ""
1908"Espacio insuficiente (%llu bytes están disponibles) para satisfacer la " 1903"Espacio insuficiente (%llu bytes están disponibles) para satisfacer la "
1909"petición «%s» de %llu bytes\n" 1904"petición «%s» de %llu bytes\n"
1910 1905
1911#: src/datastore/gnunet-service-datastore.c:612 1906#: src/datastore/gnunet-service-datastore.c:614
1912#, c-format 1907#, c-format
1913msgid "" 1908msgid ""
1914"The requested amount (%llu bytes) is larger than the cache size (%llu " 1909"The requested amount (%llu bytes) is larger than the cache size (%llu "
@@ -1917,7 +1912,7 @@ msgstr ""
1917"La cantidad solicitada (%llu bytes) es mayor que el tamaño de la caché (%llu " 1912"La cantidad solicitada (%llu bytes) es mayor que el tamaño de la caché (%llu "
1918"bytes)\n" 1913"bytes)\n"
1919 1914
1920#: src/datastore/gnunet-service-datastore.c:618 1915#: src/datastore/gnunet-service-datastore.c:620
1921msgid "" 1916msgid ""
1922"Insufficient space to satisfy request and requested amount is larger than " 1917"Insufficient space to satisfy request and requested amount is larger than "
1923"cache size" 1918"cache size"
@@ -1925,62 +1920,62 @@ msgstr ""
1925"Espacio insuficiente para satisfacer la petición y la cantidad pedida es " 1920"Espacio insuficiente para satisfacer la petición y la cantidad pedida es "
1926"mayor que el tamaño de la caché" 1921"mayor que el tamaño de la caché"
1927 1922
1928#: src/datastore/gnunet-service-datastore.c:625 1923#: src/datastore/gnunet-service-datastore.c:627
1929msgid "Insufficient space to satisfy request" 1924msgid "Insufficient space to satisfy request"
1930msgstr "Espacio insuficiente para satisfacer la petición" 1925msgstr "Espacio insuficiente para satisfacer la petición"
1931 1926
1932#: src/datastore/gnunet-service-datastore.c:632 1927#: src/datastore/gnunet-service-datastore.c:634
1933#: src/datastore/gnunet-service-datastore.c:687 1928#: src/datastore/gnunet-service-datastore.c:689
1934#: src/datastore/gnunet-service-datastore.c:835 1929#: src/datastore/gnunet-service-datastore.c:837
1935#: src/datastore/gnunet-service-datastore.c:1467 1930#: src/datastore/gnunet-service-datastore.c:1469
1936msgid "# reserved" 1931msgid "# reserved"
1937msgstr "# reservado" 1932msgstr "# reservado"
1938 1933
1939#: src/datastore/gnunet-service-datastore.c:705 1934#: src/datastore/gnunet-service-datastore.c:707
1940msgid "Could not find matching reservation" 1935msgid "Could not find matching reservation"
1941msgstr "No se pudo encontrar una reserva coincidente" 1936msgstr "No se pudo encontrar una reserva coincidente"
1942 1937
1943#: src/datastore/gnunet-service-datastore.c:771 1938#: src/datastore/gnunet-service-datastore.c:773
1944#, c-format 1939#, c-format
1945msgid "Need %llu bytes more space (%llu allowed, using %llu)\n" 1940msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
1946msgstr "" 1941msgstr ""
1947"Se necesitan %llu bytes más de espacio (%llu permitidos, usando %llu)\n" 1942"Se necesitan %llu bytes más de espacio (%llu permitidos, usando %llu)\n"
1948 1943
1949#: src/datastore/gnunet-service-datastore.c:874 1944#: src/datastore/gnunet-service-datastore.c:876
1950msgid "# GET requests received" 1945msgid "# GET requests received"
1951msgstr "# peticiones «GET» recibidas" 1946msgstr "# peticiones «GET» recibidas"
1952 1947
1953#: src/datastore/gnunet-service-datastore.c:905 1948#: src/datastore/gnunet-service-datastore.c:907
1954#, fuzzy 1949#, fuzzy
1955msgid "# GET KEY requests received" 1950msgid "# GET KEY requests received"
1956msgstr "# peticiones «GET» recibidas" 1951msgstr "# peticiones «GET» recibidas"
1957 1952
1958#: src/datastore/gnunet-service-datastore.c:918 1953#: src/datastore/gnunet-service-datastore.c:920
1959msgid "# requests filtered by bloomfilter" 1954msgid "# requests filtered by bloomfilter"
1960msgstr "# peticiones filtradas por el «bloomfilter»" 1955msgstr "# peticiones filtradas por el «bloomfilter»"
1961 1956
1962#: src/datastore/gnunet-service-datastore.c:954 1957#: src/datastore/gnunet-service-datastore.c:956
1963msgid "# GET REPLICATION requests received" 1958msgid "# GET REPLICATION requests received"
1964msgstr "# peticiones «GET REPLICATION» recibidas" 1959msgstr "# peticiones «GET REPLICATION» recibidas"
1965 1960
1966#: src/datastore/gnunet-service-datastore.c:987 1961#: src/datastore/gnunet-service-datastore.c:989
1967msgid "# GET ZERO ANONYMITY requests received" 1962msgid "# GET ZERO ANONYMITY requests received"
1968msgstr "# peticiones «GET ZERO ANONYMITY» recibidas" 1963msgstr "# peticiones «GET ZERO ANONYMITY» recibidas"
1969 1964
1970#: src/datastore/gnunet-service-datastore.c:1034 1965#: src/datastore/gnunet-service-datastore.c:1036
1971msgid "Content not found" 1966msgid "Content not found"
1972msgstr "Contenido no encontrado" 1967msgstr "Contenido no encontrado"
1973 1968
1974#: src/datastore/gnunet-service-datastore.c:1041 1969#: src/datastore/gnunet-service-datastore.c:1043
1975msgid "# bytes removed (explicit request)" 1970msgid "# bytes removed (explicit request)"
1976msgstr "# bytes eliminados (petición explícita)" 1971msgstr "# bytes eliminados (petición explícita)"
1977 1972
1978#: src/datastore/gnunet-service-datastore.c:1086 1973#: src/datastore/gnunet-service-datastore.c:1088
1979msgid "# REMOVE requests received" 1974msgid "# REMOVE requests received"
1980msgstr "# peticiones «REMOVE» recibidas" 1975msgstr "# peticiones «REMOVE» recibidas"
1981 1976
1982# Miguel: ¿Cómo traducir «payload»? ¿Código cargado? 1977# Miguel: ¿Cómo traducir «payload»? ¿Código cargado?
1983#: src/datastore/gnunet-service-datastore.c:1135 1978#: src/datastore/gnunet-service-datastore.c:1137
1984#, fuzzy, c-format 1979#, fuzzy, c-format
1985msgid "" 1980msgid ""
1986"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n" 1981"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
@@ -1988,136 +1983,133 @@ msgstr ""
1988"El «payload» del almacén de datos es impreciso (%lld < %lld). Intentando " 1983"El «payload» del almacén de datos es impreciso (%lld < %lld). Intentando "
1989"repararlo.\n" 1984"repararlo.\n"
1990 1985
1991#: src/datastore/gnunet-service-datastore.c:1141 1986#: src/datastore/gnunet-service-datastore.c:1143
1992#: src/datastore/gnunet-service-datastore.c:1316 1987#: src/datastore/gnunet-service-datastore.c:1318
1993#, c-format 1988#, c-format
1994msgid "New payload: %lld\n" 1989msgid "New payload: %lld\n"
1995msgstr "" 1990msgstr ""
1996 1991
1997#: src/datastore/gnunet-service-datastore.c:1195 1992#: src/datastore/gnunet-service-datastore.c:1197
1998#, c-format 1993#, c-format
1999msgid "Loading `%s' datastore plugin\n" 1994msgid "Loading `%s' datastore plugin\n"
2000msgstr "Cargando el módulo del almacén de datos «%s»\n" 1995msgstr "Cargando el módulo del almacén de datos «%s»\n"
2001 1996
2002#: src/datastore/gnunet-service-datastore.c:1207 1997#: src/datastore/gnunet-service-datastore.c:1209
2003#, c-format 1998#, c-format
2004msgid "Failed to load datastore plugin for `%s'\n" 1999msgid "Failed to load datastore plugin for `%s'\n"
2005msgstr "" 2000msgstr ""
2006"Se produjo un fallo al inicializar el módulo del almacén de datos para «%s»\n" 2001"Se produjo un fallo al inicializar el módulo del almacén de datos para «%s»\n"
2007 2002
2008#: src/datastore/gnunet-service-datastore.c:1267 2003#: src/datastore/gnunet-service-datastore.c:1269
2009msgid "Bloomfilter construction complete.\n" 2004msgid "Bloomfilter construction complete.\n"
2010msgstr "Construcción de «bloomfilter» completa.\n" 2005msgstr "Construcción de «bloomfilter» completa.\n"
2011 2006
2012#: src/datastore/gnunet-service-datastore.c:1323 2007#: src/datastore/gnunet-service-datastore.c:1325
2013msgid "Rebuilding bloomfilter. Please be patient.\n" 2008msgid "Rebuilding bloomfilter. Please be patient.\n"
2014msgstr "Reconstruyendo «bloomfilter». Por favor, tenga paciencia.\n" 2009msgstr "Reconstruyendo «bloomfilter». Por favor, tenga paciencia.\n"
2015 2010
2016#: src/datastore/gnunet-service-datastore.c:1334 2011#: src/datastore/gnunet-service-datastore.c:1336
2017msgid "Plugin does not support get_keys function. Please fix!\n" 2012msgid "Plugin does not support get_keys function. Please fix!\n"
2018msgstr "El módulo no soporta la función «get_keys». Por favor, corríjalo.\n" 2013msgstr "El módulo no soporta la función «get_keys». Por favor, corríjalo.\n"
2019 2014
2020#: src/datastore/gnunet-service-datastore.c:1504 2015#: src/datastore/gnunet-service-datastore.c:1506
2021#, c-format 2016#, c-format
2022msgid "# bytes used in file-sharing datastore `%s'" 2017msgid "# bytes used in file-sharing datastore `%s'"
2023msgstr "# bytes usados en el almacén de ficheros compartidos «%s»" 2018msgstr "# bytes usados en el almacén de ficheros compartidos «%s»"
2024 2019
2025#: src/datastore/gnunet-service-datastore.c:1520 2020#: src/datastore/gnunet-service-datastore.c:1522
2026msgid "# quota" 2021msgid "# quota"
2027msgstr "# cuota" 2022msgstr "# cuota"
2028 2023
2029#: src/datastore/gnunet-service-datastore.c:1525 2024#: src/datastore/gnunet-service-datastore.c:1527
2030msgid "# cache size" 2025msgid "# cache size"
2031msgstr "# tamaño de la caché" 2026msgstr "# tamaño de la caché"
2032 2027
2033#: src/datastore/gnunet-service-datastore.c:1541 2028#: src/datastore/gnunet-service-datastore.c:1543
2034#, c-format 2029#, c-format
2035msgid "Could not use specified filename `%s' for bloomfilter.\n" 2030msgid "Could not use specified filename `%s' for bloomfilter.\n"
2036msgstr "" 2031msgstr ""
2037"No se pudo usar el nombre de fichero especificado «%s» para «bloomfilter».\n" 2032"No se pudo usar el nombre de fichero especificado «%s» para «bloomfilter».\n"
2038 2033
2039#: src/datastore/gnunet-service-datastore.c:1559 2034#: src/datastore/gnunet-service-datastore.c:1561
2040#: src/datastore/gnunet-service-datastore.c:1575 2035#: src/datastore/gnunet-service-datastore.c:1577
2041#, c-format 2036#, c-format
2042msgid "Failed to remove bogus bloomfilter file `%s'\n" 2037msgid "Failed to remove bogus bloomfilter file `%s'\n"
2043msgstr "" 2038msgstr ""
2044"Se produjo un fallo al borrar el fichero de configuración defectuoso de " 2039"Se produjo un fallo al borrar el fichero de configuración defectuoso de "
2045"«bloomfilter» «%s»:\n" 2040"«bloomfilter» «%s»:\n"
2046 2041
2047#: src/datastore/gnunet-service-datastore.c:1607 2042#: src/datastore/gnunet-service-datastore.c:1609
2048msgid "Failed to initialize bloomfilter.\n" 2043msgid "Failed to initialize bloomfilter.\n"
2049msgstr "Se produjo un fallo al inicializar «bloomfilter».\n" 2044msgstr "Se produjo un fallo al inicializar «bloomfilter».\n"
2050 2045
2051#: src/datastore/plugin_datastore_heap.c:891 2046#: src/datastore/plugin_datastore_heap.c:893
2052msgid "Heap database running\n" 2047msgid "Heap database running\n"
2053msgstr "Base de datos de montículo ejecutándose\n" 2048msgstr "Base de datos de montículo ejecutándose\n"
2054 2049
2055#: src/datastore/plugin_datastore_mysql.c:369 2050#: src/datastore/plugin_datastore_mysql.c:371
2056#: src/datastore/plugin_datastore_mysql.c:421 2051#: src/datastore/plugin_datastore_mysql.c:423
2057#: src/datastore/plugin_datastore_mysql.c:1073 2052#: src/datastore/plugin_datastore_mysql.c:1075
2058msgid "MySQL statement run failure" 2053msgid "MySQL statement run failure"
2059msgstr "" 2054msgstr ""
2060 2055
2061#: src/datastore/plugin_datastore_mysql.c:408 2056#: src/datastore/plugin_datastore_mysql.c:410
2062#: src/datastore/plugin_datastore_sqlite.c:676 2057#: src/datastore/plugin_datastore_sqlite.c:678
2063#, fuzzy 2058#, fuzzy
2064msgid "Data too large" 2059msgid "Data too large"
2065msgstr "número de valores" 2060msgstr "número de valores"
2066 2061
2067#: src/datastore/plugin_datastore_mysql.c:846 2062#: src/datastore/plugin_datastore_mysql.c:848
2068#, c-format 2063#, c-format
2069msgid "`%s' for `%s' failed at %s:%d with error: %s\n" 2064msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
2070msgstr "«%s» para «%s» falló en %s: %d con error: %s\n" 2065msgstr "«%s» para «%s» falló en %s: %d con error: %s\n"
2071 2066
2072#: src/datastore/plugin_datastore_mysql.c:1178 2067#: src/datastore/plugin_datastore_mysql.c:1180
2073#: src/psycstore/plugin_psycstore_mysql.c:1934
2074msgid "Mysql database running\n" 2068msgid "Mysql database running\n"
2075msgstr "Base de datos Mysql ejecutándose\n" 2069msgstr "Base de datos Mysql ejecutándose\n"
2076 2070
2077#: src/datastore/plugin_datastore_postgres.c:274 2071#: src/datastore/plugin_datastore_postgres.c:276
2078#: src/datastore/plugin_datastore_postgres.c:891 2072#: src/datastore/plugin_datastore_postgres.c:893
2079msgid "Postgress exec failure" 2073msgid "Postgress exec failure"
2080msgstr "" 2074msgstr ""
2081 2075
2082#: src/datastore/plugin_datastore_postgres.c:852 2076#: src/datastore/plugin_datastore_postgres.c:854
2083msgid "Failed to drop table from database.\n" 2077msgid "Failed to drop table from database.\n"
2084msgstr "Se produjo un fallo al borrar una tabla de la base de datos.\n" 2078msgstr "Se produjo un fallo al borrar una tabla de la base de datos.\n"
2085 2079
2086#: src/datastore/plugin_datastore_postgres.c:950 2080#: src/datastore/plugin_datastore_postgres.c:952
2087#: src/psycstore/plugin_psycstore_postgres.c:1504
2088msgid "Postgres database running\n" 2081msgid "Postgres database running\n"
2089msgstr "Base de datos Postgres ejecutándose\n" 2082msgstr "Base de datos Postgres ejecutándose\n"
2090 2083
2091#: src/datastore/plugin_datastore_sqlite.c:64 2084#: src/datastore/plugin_datastore_sqlite.c:66
2092#: src/testbed/generate-underlay-topology.c:48 2085#: src/testbed/generate-underlay-topology.c:50
2093#: src/testbed/gnunet-daemon-latency-logger.c:53 2086#: src/testbed/gnunet-daemon-latency-logger.c:55
2094#: src/testbed/gnunet-daemon-testbed-underlay.c:57 2087#: src/testbed/gnunet-daemon-testbed-underlay.c:59
2095#, c-format 2088#, c-format
2096msgid "`%s' failed at %s:%u with error: %s" 2089msgid "`%s' failed at %s:%u with error: %s"
2097msgstr "«%s» falló en %s:%u con el error: %s" 2090msgstr "«%s» falló en %s:%u con el error: %s"
2098 2091
2099#: src/datastore/plugin_datastore_sqlite.c:269 2092#: src/datastore/plugin_datastore_sqlite.c:271
2100#: src/namecache/plugin_namecache_sqlite.c:207 2093#: src/namecache/plugin_namecache_sqlite.c:173
2101#: src/namestore/plugin_namestore_sqlite.c:203 2094#: src/namestore/plugin_namestore_sqlite.c:206
2102#: src/peerstore/plugin_peerstore_sqlite.c:533 2095#: src/peerstore/plugin_peerstore_sqlite.c:535
2103#: src/psycstore/plugin_psycstore_sqlite.c:323 2096#: src/reclaim/plugin_reclaim_sqlite.c:212
2104#: src/reclaim/plugin_reclaim_sqlite.c:210
2105#, c-format 2097#, c-format
2106msgid "Unable to initialize SQLite: %s.\n" 2098msgid "Unable to initialize SQLite: %s.\n"
2107msgstr "Imposible inicializar SQLite: %s.\n" 2099msgstr "Imposible inicializar SQLite: %s.\n"
2108 2100
2109#: src/datastore/plugin_datastore_sqlite.c:627 2101#: src/datastore/plugin_datastore_sqlite.c:629
2110msgid "sqlite bind failure" 2102msgid "sqlite bind failure"
2111msgstr "" 2103msgstr ""
2112 2104
2113# to should be too, i think 2105# to should be too, i think
2114#: src/datastore/plugin_datastore_sqlite.c:1325 2106#: src/datastore/plugin_datastore_sqlite.c:1327
2115msgid "sqlite version to old to determine size, assuming zero\n" 2107msgid "sqlite version to old to determine size, assuming zero\n"
2116msgstr "" 2108msgstr ""
2117"la versión de sqlite es muy antigua para determinar el tamaño, se asume " 2109"la versión de sqlite es muy antigua para determinar el tamaño, se asume "
2118"cero\n" 2110"cero\n"
2119 2111
2120#: src/datastore/plugin_datastore_sqlite.c:1359 2112#: src/datastore/plugin_datastore_sqlite.c:1361
2121#, c-format 2113#, c-format
2122msgid "" 2114msgid ""
2123"Using sqlite page utilization to estimate payload (%llu pages of size %llu " 2115"Using sqlite page utilization to estimate payload (%llu pages of size %llu "
@@ -2126,18 +2118,18 @@ msgstr ""
2126"Usando la utilización de páginas de sqlite para estimar el «payload» (%llu " 2118"Usando la utilización de páginas de sqlite para estimar el «payload» (%llu "
2127"páginas de %llu bytes de tamaño)\n" 2119"páginas de %llu bytes de tamaño)\n"
2128 2120
2129#: src/datastore/plugin_datastore_sqlite.c:1403 2121#: src/datastore/plugin_datastore_sqlite.c:1405
2130#: src/namecache/plugin_namecache_sqlite.c:638 2122#: src/namecache/plugin_namecache_sqlite.c:557
2131#: src/namestore/plugin_namestore_sqlite.c:753 2123#: src/namestore/plugin_namestore_sqlite.c:750
2132#: src/reclaim/plugin_reclaim_sqlite.c:709 2124#: src/reclaim/plugin_reclaim_sqlite.c:711
2133msgid "Sqlite database running\n" 2125msgid "Sqlite database running\n"
2134msgstr "Base de datos sqlite ejecutándose\n" 2126msgstr "Base de datos sqlite ejecutándose\n"
2135 2127
2136#: src/datastore/plugin_datastore_template.c:251 2128#: src/datastore/plugin_datastore_template.c:253
2137msgid "Template database running\n" 2129msgid "Template database running\n"
2138msgstr "Base de datos de plantilla ejecutándose\n" 2130msgstr "Base de datos de plantilla ejecutándose\n"
2139 2131
2140#: src/dht/gnunet-dht-get.c:156 2132#: src/dht/gnunet-dht-get.c:158
2141#, c-format 2133#, c-format
2142msgid "" 2134msgid ""
2143"Result %d, type %d:\n" 2135"Result %d, type %d:\n"
@@ -2146,637 +2138,638 @@ msgstr ""
2146"Resultado %d, tipo %d:\n" 2138"Resultado %d, tipo %d:\n"
2147"%.*s\n" 2139"%.*s\n"
2148 2140
2149#: src/dht/gnunet-dht-get.c:157 2141#: src/dht/gnunet-dht-get.c:159
2150#, fuzzy, c-format 2142#, fuzzy, c-format
2151msgid "Result %d, type %d:\n" 2143msgid "Result %d, type %d:\n"
2152msgstr "" 2144msgstr ""
2153"Resultado %d, tipo %d:\n" 2145"Resultado %d, tipo %d:\n"
2154"%.*s\n" 2146"%.*s\n"
2155 2147
2156#: src/dht/gnunet-dht-get.c:202 2148#: src/dht/gnunet-dht-get.c:204
2157msgid "Must provide key for DHT GET!\n" 2149msgid "Must provide key for DHT GET!\n"
2158msgstr "¡Se debe proveer una clave para el «GET» DHT!\n" 2150msgstr "¡Se debe proveer una clave para el «GET» DHT!\n"
2159 2151
2160#: src/dht/gnunet-dht-get.c:208 src/dht/gnunet-dht-monitor.c:255 2152#: src/dht/gnunet-dht-get.c:210 src/dht/gnunet-dht-monitor.c:257
2161msgid "Failed to connect to DHT service!\n" 2153msgid "Failed to connect to DHT service!\n"
2162msgstr "¡Se produjo un fallo al conectar con el servicio DHT!\n" 2154msgstr "¡Se produjo un fallo al conectar con el servicio DHT!\n"
2163 2155
2164#: src/dht/gnunet-dht-get.c:217 2156#: src/dht/gnunet-dht-get.c:219
2165msgid "Issueing DHT GET with key" 2157#, fuzzy
2158msgid "Issuing DHT GET with key"
2166msgstr "Enviando un «GET» DHT con clave" 2159msgstr "Enviando un «GET» DHT con clave"
2167 2160
2168#: src/dht/gnunet-dht-get.c:246 src/dht/gnunet-dht-monitor.c:305 2161#: src/dht/gnunet-dht-get.c:248 src/dht/gnunet-dht-monitor.c:307
2169#: src/dht/gnunet-dht-put.c:196 2162#: src/dht/gnunet-dht-put.c:198
2170msgid "the query key" 2163msgid "the query key"
2171msgstr "la clave de búsqueda" 2164msgstr "la clave de búsqueda"
2172 2165
2173#: src/dht/gnunet-dht-get.c:251 2166#: src/dht/gnunet-dht-get.c:253
2174msgid "how many parallel requests (replicas) to create" 2167msgid "how many parallel requests (replicas) to create"
2175msgstr "cuantas peticiones paralelas (réplicas) crear" 2168msgstr "cuantas peticiones paralelas (réplicas) crear"
2176 2169
2177#: src/dht/gnunet-dht-get.c:256 src/dht/gnunet-dht-monitor.c:311 2170#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
2178msgid "the type of data to look for" 2171msgid "the type of data to look for"
2179msgstr "el tipo de datos a buscar" 2172msgstr "el tipo de datos a buscar"
2180 2173
2181#: src/dht/gnunet-dht-get.c:261 2174#: src/dht/gnunet-dht-get.c:263
2182msgid "how long to execute this query before giving up?" 2175msgid "how long to execute this query before giving up?"
2183msgstr "¿cuánto tiempo se debe ejecutar esta consulta antes de abandonar?" 2176msgstr "¿cuánto tiempo se debe ejecutar esta consulta antes de abandonar?"
2184 2177
2185#: src/dht/gnunet-dht-get.c:265 src/dht/gnunet-dht-put.c:200 2178#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
2186msgid "use DHT's demultiplex everywhere option" 2179msgid "use DHT's demultiplex everywhere option"
2187msgstr "opción para usar el demultiplexado de la DHT siempre" 2180msgstr "opción para usar el demultiplexado de la DHT siempre"
2188 2181
2189#: src/dht/gnunet-dht-get.c:278 2182#: src/dht/gnunet-dht-get.c:280
2190msgid "Issue a GET request to the GNUnet DHT, prints results." 2183msgid "Issue a GET request to the GNUnet DHT, prints results."
2191msgstr "" 2184msgstr ""
2192"Iniciando una peticion «GET» a la DHT de GNUnet, imprimiendo resultados." 2185"Iniciando una peticion «GET» a la DHT de GNUnet, imprimiendo resultados."
2193 2186
2194#: src/dht/gnunet-dht-monitor.c:317 2187#: src/dht/gnunet-dht-monitor.c:319
2195msgid "how long should the monitor command run" 2188msgid "how long should the monitor command run"
2196msgstr "cuanto tiempo debe ejecutarse el comando de monitorización" 2189msgstr "cuanto tiempo debe ejecutarse el comando de monitorización"
2197 2190
2198#: src/dht/gnunet-dht-monitor.c:322 src/fs/gnunet-download.c:370 2191#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
2199#: src/nse/gnunet-nse-profiler.c:876 2192#: src/nse/gnunet-nse-profiler.c:878
2200msgid "be verbose (print progress information)" 2193msgid "be verbose (print progress information)"
2201msgstr "ser prolijo (imprime información de progreso)" 2194msgstr "ser prolijo (imprime información de progreso)"
2202 2195
2203#: src/dht/gnunet-dht-monitor.c:335 2196#: src/dht/gnunet-dht-monitor.c:337
2204msgid "Prints all packets that go through the DHT." 2197msgid "Prints all packets that go through the DHT."
2205msgstr "Imprime todos los paquetes que pasan por la DHT." 2198msgstr "Imprime todos los paquetes que pasan por la DHT."
2206 2199
2207#: src/dht/gnunet_dht_profiler.c:914 src/testbed/gnunet-testbed-profiler.c:251 2200#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
2208#, fuzzy, c-format 2201#, fuzzy, c-format
2209msgid "Exiting as the number of peers is %u\n" 2202msgid "Exiting as the number of peers is %u\n"
2210msgstr "El número máximo de conexiones es %u\n" 2203msgstr "El número máximo de conexiones es %u\n"
2211 2204
2212#: src/dht/gnunet_dht_profiler.c:947 src/rps/gnunet-rps-profiler.c:2764 2205#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
2213msgid "number of peers to start" 2206msgid "number of peers to start"
2214msgstr "número de pares para empezar" 2207msgstr "número de pares para empezar"
2215 2208
2216#: src/dht/gnunet_dht_profiler.c:952 2209#: src/dht/gnunet_dht_profiler.c:954
2217msgid "number of PUTs to perform per peer" 2210msgid "number of PUTs to perform per peer"
2218msgstr "" 2211msgstr ""
2219 2212
2220#: src/dht/gnunet_dht_profiler.c:957 src/nse/gnunet-nse-profiler.c:858 2213#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
2221#: src/testbed/gnunet-testbed-profiler.c:302 2214#: src/testbed/gnunet-testbed-profiler.c:304
2222msgid "name of the file with the login information for the testbed" 2215msgid "name of the file with the login information for the testbed"
2223msgstr "" 2216msgstr ""
2224"nombre del fichero con la información de acceso usada para la batería de " 2217"nombre del fichero con la información de acceso usada para la batería de "
2225"pruebas" 2218"pruebas"
2226 2219
2227#: src/dht/gnunet_dht_profiler.c:962 2220#: src/dht/gnunet_dht_profiler.c:964
2228msgid "delay between rounds for collecting statistics (default: 30 sec)" 2221msgid "delay between rounds for collecting statistics (default: 30 sec)"
2229msgstr "" 2222msgstr ""
2230 2223
2231#: src/dht/gnunet_dht_profiler.c:967 2224#: src/dht/gnunet_dht_profiler.c:969
2232msgid "delay to start doing PUTs (default: 1 sec)" 2225msgid "delay to start doing PUTs (default: 1 sec)"
2233msgstr "" 2226msgstr ""
2234 2227
2235#: src/dht/gnunet_dht_profiler.c:972 2228#: src/dht/gnunet_dht_profiler.c:974
2236msgid "delay to start doing GETs (default: 5 min)" 2229msgid "delay to start doing GETs (default: 5 min)"
2237msgstr "" 2230msgstr ""
2238 2231
2239#: src/dht/gnunet_dht_profiler.c:977 2232#: src/dht/gnunet_dht_profiler.c:979
2240msgid "replication degree for DHT PUTs" 2233msgid "replication degree for DHT PUTs"
2241msgstr "" 2234msgstr ""
2242 2235
2243#: src/dht/gnunet_dht_profiler.c:982 2236#: src/dht/gnunet_dht_profiler.c:984
2244msgid "chance that a peer is selected at random for PUTs" 2237msgid "chance that a peer is selected at random for PUTs"
2245msgstr "" 2238msgstr ""
2246 2239
2247#: src/dht/gnunet_dht_profiler.c:987 2240#: src/dht/gnunet_dht_profiler.c:989
2248msgid "timeout for DHT PUT and GET requests (default: 1 min)" 2241msgid "timeout for DHT PUT and GET requests (default: 1 min)"
2249msgstr "" 2242msgstr ""
2250 2243
2251#: src/dht/gnunet_dht_profiler.c:1007 2244#: src/dht/gnunet_dht_profiler.c:1009
2252#, fuzzy 2245#, fuzzy
2253msgid "Measure quality and performance of the DHT service." 2246msgid "Measure quality and performance of the DHT service."
2254msgstr "Medir la calidad y rendimiento del servicio NSE." 2247msgstr "Medir la calidad y rendimiento del servicio NSE."
2255 2248
2256#: src/dht/gnunet-dht-put.c:132 2249#: src/dht/gnunet-dht-put.c:134
2257msgid "Must provide KEY and DATA for DHT put!\n" 2250msgid "Must provide KEY and DATA for DHT put!\n"
2258msgstr "¡Se deben proveer «KEY» y «DATA» para una subida a la DHT!\n" 2251msgstr "¡Se deben proveer «KEY» y «DATA» para una subida a la DHT!\n"
2259 2252
2260#: src/dht/gnunet-dht-put.c:140 2253#: src/dht/gnunet-dht-put.c:142
2261#, fuzzy 2254#, fuzzy
2262msgid "Could not connect to DHT service!\n" 2255msgid "Could not connect to DHT service!\n"
2263msgstr "¡No se pudo conectar al servicio %s!\n" 2256msgstr "¡No se pudo conectar al servicio %s!\n"
2264 2257
2265#: src/dht/gnunet-dht-put.c:151 2258#: src/dht/gnunet-dht-put.c:153
2266#, c-format 2259#, c-format
2267msgid "Issuing put request for `%s' with data `%s'!\n" 2260msgid "Issuing put request for `%s' with data `%s'!\n"
2268msgstr "¡Iniciando petición de subida para «%s» con datos «%s»!\n" 2261msgstr "¡Iniciando petición de subida para «%s» con datos «%s»!\n"
2269 2262
2270#: src/dht/gnunet-dht-put.c:186 2263#: src/dht/gnunet-dht-put.c:188
2271msgid "the data to insert under the key" 2264msgid "the data to insert under the key"
2272msgstr "los datos a insertar bajo la clave" 2265msgstr "los datos a insertar bajo la clave"
2273 2266
2274#: src/dht/gnunet-dht-put.c:191 2267#: src/dht/gnunet-dht-put.c:193
2275msgid "how long to store this entry in the dht (in seconds)" 2268msgid "how long to store this entry in the dht (in seconds)"
2276msgstr "cuanto tiempo almacenar esta entrada en la DHT (en segundos)" 2269msgstr "cuanto tiempo almacenar esta entrada en la DHT (en segundos)"
2277 2270
2278#: src/dht/gnunet-dht-put.c:205 2271#: src/dht/gnunet-dht-put.c:207
2279msgid "how many replicas to create" 2272msgid "how many replicas to create"
2280msgstr "cuantas réplicas crear" 2273msgstr "cuantas réplicas crear"
2281 2274
2282#: src/dht/gnunet-dht-put.c:209 2275#: src/dht/gnunet-dht-put.c:211
2283#, fuzzy 2276#, fuzzy
2284msgid "use DHT's record route option" 2277msgid "use DHT's record route option"
2285msgstr "opción para usar el demultiplexado de la DHT siempre" 2278msgstr "opción para usar el demultiplexado de la DHT siempre"
2286 2279
2287#: src/dht/gnunet-dht-put.c:214 2280#: src/dht/gnunet-dht-put.c:216
2288msgid "the type to insert data as" 2281msgid "the type to insert data as"
2289msgstr "el tipo de datos a insertar" 2282msgstr "el tipo de datos a insertar"
2290 2283
2291#: src/dht/gnunet-dht-put.c:231 2284#: src/dht/gnunet-dht-put.c:233
2292msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY." 2285msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY."
2293msgstr "" 2286msgstr ""
2294"Inicianco una petición «PUT» a la DHT de GNUnet para insertar «DATA» bajo " 2287"Inicianco una petición «PUT» a la DHT de GNUnet para insertar «DATA» bajo "
2295"«KEY»." 2288"«KEY»."
2296 2289
2297#: src/dht/gnunet-service-dht_clients.c:367 2290#: src/dht/gnunet-service-dht_clients.c:369
2298msgid "# GET requests from clients injected" 2291msgid "# GET requests from clients injected"
2299msgstr "# peticiones «GET» inyectadas de clientes" 2292msgstr "# peticiones «GET» inyectadas de clientes"
2300 2293
2301#: src/dht/gnunet-service-dht_clients.c:481 2294#: src/dht/gnunet-service-dht_clients.c:483
2302msgid "# PUT requests received from clients" 2295msgid "# PUT requests received from clients"
2303msgstr "# peticiones «PUT» recibidas de clientes" 2296msgstr "# peticiones «PUT» recibidas de clientes"
2304 2297
2305#: src/dht/gnunet-service-dht_clients.c:614 2298#: src/dht/gnunet-service-dht_clients.c:616
2306msgid "# GET requests received from clients" 2299msgid "# GET requests received from clients"
2307msgstr "# peticiones «GET» recibidas de clientes" 2300msgstr "# peticiones «GET» recibidas de clientes"
2308 2301
2309#: src/dht/gnunet-service-dht_clients.c:840 2302#: src/dht/gnunet-service-dht_clients.c:842
2310msgid "# GET STOP requests received from clients" 2303msgid "# GET STOP requests received from clients"
2311msgstr "# peticiones «GET STOP» recibidas de clientes" 2304msgstr "# peticiones «GET STOP» recibidas de clientes"
2312 2305
2313#: src/dht/gnunet-service-dht_clients.c:1025 2306#: src/dht/gnunet-service-dht_clients.c:1027
2314msgid "# Key match, type mismatches in REPLY to CLIENT" 2307msgid "# Key match, type mismatches in REPLY to CLIENT"
2315msgstr "" 2308msgstr ""
2316"# Coincidencias de clave, diferencias de tipo en la respuesta (REPLY) del " 2309"# Coincidencias de clave, diferencias de tipo en la respuesta (REPLY) del "
2317"cliente (CLIENT)" 2310"cliente (CLIENT)"
2318 2311
2319#: src/dht/gnunet-service-dht_clients.c:1040 2312#: src/dht/gnunet-service-dht_clients.c:1042
2320msgid "# Duplicate REPLIES to CLIENT request dropped" 2313msgid "# Duplicate REPLIES to CLIENT request dropped"
2321msgstr "" 2314msgstr ""
2322"# Peticiones duplicadas de respuestas (REPLIES) a clientes (CLIENT) omitidas" 2315"# Peticiones duplicadas de respuestas (REPLIES) a clientes (CLIENT) omitidas"
2323 2316
2324#: src/dht/gnunet-service-dht_clients.c:1086 2317#: src/dht/gnunet-service-dht_clients.c:1088
2325#, c-format 2318#, c-format
2326msgid "Unsupported block type (%u) in request!\n" 2319msgid "Unsupported block type (%u) in request!\n"
2327msgstr "¡Tipo de bloque no soportado (%u) en la petición!\n" 2320msgstr "¡Tipo de bloque no soportado (%u) en la petición!\n"
2328 2321
2329#: src/dht/gnunet-service-dht_clients.c:1093 2322#: src/dht/gnunet-service-dht_clients.c:1095
2330msgid "# RESULTS queued for clients" 2323msgid "# RESULTS queued for clients"
2331msgstr "# Resultados (RESULTS) encolados para clientes" 2324msgstr "# Resultados (RESULTS) encolados para clientes"
2332 2325
2333#: src/dht/gnunet-service-dht_clients.c:1171 2326#: src/dht/gnunet-service-dht_clients.c:1173
2334msgid "# REPLIES ignored for CLIENTS (no match)" 2327msgid "# REPLIES ignored for CLIENTS (no match)"
2335msgstr "" 2328msgstr ""
2336"# Respuestas (REPLIES) ignoradas para clientes (CLIENTS) (sin coincidencia)" 2329"# Respuestas (REPLIES) ignoradas para clientes (CLIENTS) (sin coincidencia)"
2337 2330
2338#: src/dht/gnunet-service-dht_datacache.c:71 2331#: src/dht/gnunet-service-dht_datacache.c:73
2339#, c-format 2332#, c-format
2340msgid "%s request received, but have no datacache!\n" 2333msgid "%s request received, but have no datacache!\n"
2341msgstr "¡Petición %s recibida, pero no tiene caché de datos!\n" 2334msgstr "¡Petición %s recibida, pero no tiene caché de datos!\n"
2342 2335
2343#: src/dht/gnunet-service-dht_datacache.c:81 2336#: src/dht/gnunet-service-dht_datacache.c:83
2344msgid "# ITEMS stored in datacache" 2337msgid "# ITEMS stored in datacache"
2345msgstr "# Elementos (ITEMS) almacenados en la caché de datos" 2338msgstr "# Elementos (ITEMS) almacenados en la caché de datos"
2346 2339
2347#: src/dht/gnunet-service-dht_datacache.c:205 2340#: src/dht/gnunet-service-dht_datacache.c:207
2348msgid "# Good RESULTS found in datacache" 2341msgid "# Good RESULTS found in datacache"
2349msgstr "# Buenos resultados (RESULTS) encontrados en la caché de datos" 2342msgstr "# Buenos resultados (RESULTS) encontrados en la caché de datos"
2350 2343
2351#: src/dht/gnunet-service-dht_datacache.c:217 2344#: src/dht/gnunet-service-dht_datacache.c:219
2352msgid "# Duplicate RESULTS found in datacache" 2345msgid "# Duplicate RESULTS found in datacache"
2353msgstr "# Resultados (RESULTS) duplicados encontrados en la caché de datos" 2346msgstr "# Resultados (RESULTS) duplicados encontrados en la caché de datos"
2354 2347
2355#: src/dht/gnunet-service-dht_datacache.c:223 2348#: src/dht/gnunet-service-dht_datacache.c:225
2356msgid "# Invalid RESULTS found in datacache" 2349msgid "# Invalid RESULTS found in datacache"
2357msgstr "# Resultados (RESULTS) no válidos encontrados en la caché de datos" 2350msgstr "# Resultados (RESULTS) no válidos encontrados en la caché de datos"
2358 2351
2359#: src/dht/gnunet-service-dht_datacache.c:229 2352#: src/dht/gnunet-service-dht_datacache.c:231
2360msgid "# Irrelevant RESULTS found in datacache" 2353msgid "# Irrelevant RESULTS found in datacache"
2361msgstr "# Resultados (RESULTS) irrelevantes encontrados en la caché de datos" 2354msgstr "# Resultados (RESULTS) irrelevantes encontrados en la caché de datos"
2362 2355
2363#: src/dht/gnunet-service-dht_datacache.c:241 2356#: src/dht/gnunet-service-dht_datacache.c:243
2364msgid "# Unsupported RESULTS found in datacache" 2357msgid "# Unsupported RESULTS found in datacache"
2365msgstr "# Resultados (RESULTS) no soportados encontrados en la caché de datos" 2358msgstr "# Resultados (RESULTS) no soportados encontrados en la caché de datos"
2366 2359
2367#: src/dht/gnunet-service-dht_datacache.c:245 2360#: src/dht/gnunet-service-dht_datacache.c:247
2368#, c-format 2361#, c-format
2369msgid "Unsupported block type (%u) in local response!\n" 2362msgid "Unsupported block type (%u) in local response!\n"
2370msgstr "¡Tipo de bloque no soportado (%u) en respuesta local!\n" 2363msgstr "¡Tipo de bloque no soportado (%u) en respuesta local!\n"
2371 2364
2372#: src/dht/gnunet-service-dht_datacache.c:280 2365#: src/dht/gnunet-service-dht_datacache.c:282
2373msgid "# GET requests given to datacache" 2366msgid "# GET requests given to datacache"
2374msgstr "# Peticiones «GET» realizadas a la caché de datos" 2367msgstr "# Peticiones «GET» realizadas a la caché de datos"
2375 2368
2376#: src/dht/gnunet-service-dht_hello.c:84 2369#: src/dht/gnunet-service-dht_hello.c:86
2377msgid "# HELLOs obtained from peerinfo" 2370msgid "# HELLOs obtained from peerinfo"
2378msgstr "# «HELLO» obtenidos de «peerinfo»" 2371msgstr "# «HELLO» obtenidos de «peerinfo»"
2379 2372
2380#: src/dht/gnunet-service-dht_neighbours.c:677 2373#: src/dht/gnunet-service-dht_neighbours.c:679
2381msgid "# FIND PEER messages initiated" 2374msgid "# FIND PEER messages initiated"
2382msgstr "# mensajes «FIND PEER» iniciados" 2375msgstr "# mensajes «FIND PEER» iniciados"
2383 2376
2384#: src/dht/gnunet-service-dht_neighbours.c:850 2377#: src/dht/gnunet-service-dht_neighbours.c:852
2385#, fuzzy 2378#, fuzzy
2386msgid "# requests TTL-dropped" 2379msgid "# requests TTL-dropped"
2387msgstr "# peticiones unidas" 2380msgstr "# peticiones unidas"
2388 2381
2389#: src/dht/gnunet-service-dht_neighbours.c:1053 2382#: src/dht/gnunet-service-dht_neighbours.c:1055
2390#: src/dht/gnunet-service-dht_neighbours.c:1096 2383#: src/dht/gnunet-service-dht_neighbours.c:1098
2391msgid "# Peers excluded from routing due to Bloomfilter" 2384msgid "# Peers excluded from routing due to Bloomfilter"
2392msgstr "# Pares excluidos del encaminado debido a «Bloomfilter»" 2385msgstr "# Pares excluidos del encaminado debido a «Bloomfilter»"
2393 2386
2394#: src/dht/gnunet-service-dht_neighbours.c:1070 2387#: src/dht/gnunet-service-dht_neighbours.c:1072
2395#: src/dht/gnunet-service-dht_neighbours.c:1112 2388#: src/dht/gnunet-service-dht_neighbours.c:1114
2396msgid "# Peer selection failed" 2389msgid "# Peer selection failed"
2397msgstr "# Selecciones de pares fallidas" 2390msgstr "# Selecciones de pares fallidas"
2398 2391
2399#: src/dht/gnunet-service-dht_neighbours.c:1269 2392#: src/dht/gnunet-service-dht_neighbours.c:1271
2400msgid "# PUT requests routed" 2393msgid "# PUT requests routed"
2401msgstr "# Peticiones «PUT» encaminadas" 2394msgstr "# Peticiones «PUT» encaminadas"
2402 2395
2403#: src/dht/gnunet-service-dht_neighbours.c:1302 2396#: src/dht/gnunet-service-dht_neighbours.c:1304
2404msgid "# PUT messages queued for transmission" 2397msgid "# PUT messages queued for transmission"
2405msgstr "# mensajes «PUT» encolados para transmisión" 2398msgstr "# mensajes «PUT» encolados para transmisión"
2406 2399
2407#: src/dht/gnunet-service-dht_neighbours.c:1313 2400#: src/dht/gnunet-service-dht_neighbours.c:1315
2408#: src/dht/gnunet-service-dht_neighbours.c:1453 2401#: src/dht/gnunet-service-dht_neighbours.c:1455
2409#: src/dht/gnunet-service-dht_neighbours.c:1556 2402#: src/dht/gnunet-service-dht_neighbours.c:1558
2410msgid "# P2P messages dropped due to full queue" 2403msgid "# P2P messages dropped due to full queue"
2411msgstr "# Mensajes P2P omitidos debido a saturación de la cola" 2404msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
2412 2405
2413#: src/dht/gnunet-service-dht_neighbours.c:1398 2406#: src/dht/gnunet-service-dht_neighbours.c:1400
2414msgid "# GET requests routed" 2407msgid "# GET requests routed"
2415msgstr "# Peticiones «GET» encaminadas" 2408msgstr "# Peticiones «GET» encaminadas"
2416 2409
2417#: src/dht/gnunet-service-dht_neighbours.c:1441 2410#: src/dht/gnunet-service-dht_neighbours.c:1443
2418msgid "# GET messages queued for transmission" 2411msgid "# GET messages queued for transmission"
2419msgstr "# Mensajes «GET» encolados para transmisión" 2412msgstr "# Mensajes «GET» encolados para transmisión"
2420 2413
2421#: src/dht/gnunet-service-dht_neighbours.c:1571 2414#: src/dht/gnunet-service-dht_neighbours.c:1573
2422msgid "# RESULT messages queued for transmission" 2415msgid "# RESULT messages queued for transmission"
2423msgstr "# Mensajes «RESULT» encolados para transmisión" 2416msgstr "# Mensajes «RESULT» encolados para transmisión"
2424 2417
2425#: src/dht/gnunet-service-dht_neighbours.c:1674 2418#: src/dht/gnunet-service-dht_neighbours.c:1676
2426#, fuzzy 2419#, fuzzy
2427msgid "# Expired PUTs discarded" 2420msgid "# Expired PUTs discarded"
2428msgstr "# respuestas irrelevantes descartadas" 2421msgstr "# respuestas irrelevantes descartadas"
2429 2422
2430#: src/dht/gnunet-service-dht_neighbours.c:1682 2423#: src/dht/gnunet-service-dht_neighbours.c:1684
2431msgid "# P2P PUT requests received" 2424msgid "# P2P PUT requests received"
2432msgstr "# Peticiones «PUT» P2P recibidas" 2425msgstr "# Peticiones «PUT» P2P recibidas"
2433 2426
2434#: src/dht/gnunet-service-dht_neighbours.c:1686 2427#: src/dht/gnunet-service-dht_neighbours.c:1688
2435#, fuzzy 2428#, fuzzy
2436msgid "# P2P PUT bytes received" 2429msgid "# P2P PUT bytes received"
2437msgstr "# Peticiones «PUT» P2P recibidas" 2430msgstr "# Peticiones «PUT» P2P recibidas"
2438 2431
2439#: src/dht/gnunet-service-dht_neighbours.c:1912 2432#: src/dht/gnunet-service-dht_neighbours.c:1914
2440msgid "# FIND PEER requests ignored due to Bloomfilter" 2433msgid "# FIND PEER requests ignored due to Bloomfilter"
2441msgstr "# Peticiones «FIND PEER» ignoradas debido a «Bloomfilter»" 2434msgstr "# Peticiones «FIND PEER» ignoradas debido a «Bloomfilter»"
2442 2435
2443#: src/dht/gnunet-service-dht_neighbours.c:1920 2436#: src/dht/gnunet-service-dht_neighbours.c:1922
2444msgid "# FIND PEER requests ignored due to lack of HELLO" 2437msgid "# FIND PEER requests ignored due to lack of HELLO"
2445msgstr "# Peticiones «FIND PEER» ignoradas debido a falta de «HELLO»" 2438msgstr "# Peticiones «FIND PEER» ignoradas debido a falta de «HELLO»"
2446 2439
2447#: src/dht/gnunet-service-dht_neighbours.c:2082 2440#: src/dht/gnunet-service-dht_neighbours.c:2084
2448msgid "# P2P GET requests received" 2441msgid "# P2P GET requests received"
2449msgstr "# Peticiones «GET» P2P recibidas" 2442msgstr "# Peticiones «GET» P2P recibidas"
2450 2443
2451#: src/dht/gnunet-service-dht_neighbours.c:2086 2444#: src/dht/gnunet-service-dht_neighbours.c:2088
2452#, fuzzy 2445#, fuzzy
2453msgid "# P2P GET bytes received" 2446msgid "# P2P GET bytes received"
2454msgstr "# Peticiones «GET» P2P recibidas" 2447msgstr "# Peticiones «GET» P2P recibidas"
2455 2448
2456#: src/dht/gnunet-service-dht_neighbours.c:2151 2449#: src/dht/gnunet-service-dht_neighbours.c:2153
2457msgid "# P2P FIND PEER requests processed" 2450msgid "# P2P FIND PEER requests processed"
2458msgstr "# Peticiones «FIND PEER» P2P procesadas" 2451msgstr "# Peticiones «FIND PEER» P2P procesadas"
2459 2452
2460#: src/dht/gnunet-service-dht_neighbours.c:2172 2453#: src/dht/gnunet-service-dht_neighbours.c:2174
2461msgid "# P2P GET requests ONLY routed" 2454msgid "# P2P GET requests ONLY routed"
2462msgstr "# Peticiones «GET» P2P SOLAMENTE encaminadas" 2455msgstr "# Peticiones «GET» P2P SOLAMENTE encaminadas"
2463 2456
2464#: src/dht/gnunet-service-dht_neighbours.c:2349 2457#: src/dht/gnunet-service-dht_neighbours.c:2351
2465#, fuzzy 2458#, fuzzy
2466msgid "# Expired results discarded" 2459msgid "# Expired results discarded"
2467msgstr "# respuestas irrelevantes descartadas" 2460msgstr "# respuestas irrelevantes descartadas"
2468 2461
2469#: src/dht/gnunet-service-dht_neighbours.c:2365 2462#: src/dht/gnunet-service-dht_neighbours.c:2367
2470msgid "# P2P RESULTS received" 2463msgid "# P2P RESULTS received"
2471msgstr "# Resultados (RESULTS) P2P recibidos" 2464msgstr "# Resultados (RESULTS) P2P recibidos"
2472 2465
2473#: src/dht/gnunet-service-dht_neighbours.c:2369 2466#: src/dht/gnunet-service-dht_neighbours.c:2371
2474#, fuzzy 2467#, fuzzy
2475msgid "# P2P RESULT bytes received" 2468msgid "# P2P RESULT bytes received"
2476msgstr "# Resultados (RESULTS) P2P recibidos" 2469msgstr "# Resultados (RESULTS) P2P recibidos"
2477 2470
2478#: src/dht/gnunet-service-dht_nse.c:57 2471#: src/dht/gnunet-service-dht_nse.c:59
2479msgid "# Network size estimates received" 2472msgid "# Network size estimates received"
2480msgstr "# Estimaciones del tamaño de red recibidas" 2473msgstr "# Estimaciones del tamaño de red recibidas"
2481 2474
2482#: src/dht/gnunet-service-dht_routing.c:221 2475#: src/dht/gnunet-service-dht_routing.c:223
2483msgid "# Good REPLIES matched against routing table" 2476msgid "# Good REPLIES matched against routing table"
2484msgstr "" 2477msgstr ""
2485"# Buenas respuestas (REPLIES) encontradas en la tabla de encaminamiento" 2478"# Buenas respuestas (REPLIES) encontradas en la tabla de encaminamiento"
2486 2479
2487#: src/dht/gnunet-service-dht_routing.c:235 2480#: src/dht/gnunet-service-dht_routing.c:237
2488msgid "# Duplicate REPLIES matched against routing table" 2481msgid "# Duplicate REPLIES matched against routing table"
2489msgstr "" 2482msgstr ""
2490"# Respuestas (REPLIES) duplicadas encontradas en la tabla de encaminamiento" 2483"# Respuestas (REPLIES) duplicadas encontradas en la tabla de encaminamiento"
2491 2484
2492#: src/dht/gnunet-service-dht_routing.c:241 2485#: src/dht/gnunet-service-dht_routing.c:243
2493msgid "# Invalid REPLIES matched against routing table" 2486msgid "# Invalid REPLIES matched against routing table"
2494msgstr "" 2487msgstr ""
2495"# Respuestas (REPLIES) no válidas encontradas en la tabla de encaminamiento" 2488"# Respuestas (REPLIES) no válidas encontradas en la tabla de encaminamiento"
2496 2489
2497#: src/dht/gnunet-service-dht_routing.c:247 2490#: src/dht/gnunet-service-dht_routing.c:249
2498msgid "# Irrelevant REPLIES matched against routing table" 2491msgid "# Irrelevant REPLIES matched against routing table"
2499msgstr "" 2492msgstr ""
2500"# Respuestas (REPLIES) irrelevantes encontradas en la tabla de encaminamiento" 2493"# Respuestas (REPLIES) irrelevantes encontradas en la tabla de encaminamiento"
2501 2494
2502#: src/dht/gnunet-service-dht_routing.c:259 2495#: src/dht/gnunet-service-dht_routing.c:261
2503msgid "# Unsupported REPLIES matched against routing table" 2496msgid "# Unsupported REPLIES matched against routing table"
2504msgstr "" 2497msgstr ""
2505"# Respuestas (REPLIES) no soportadas encontradas en la tabla de " 2498"# Respuestas (REPLIES) no soportadas encontradas en la tabla de "
2506"encaminamiento" 2499"encaminamiento"
2507 2500
2508#: src/dht/gnunet-service-dht_routing.c:337 2501#: src/dht/gnunet-service-dht_routing.c:339
2509msgid "# Entries removed from routing table" 2502msgid "# Entries removed from routing table"
2510msgstr "# Entradas eliminadas de la tabla de encaminamiento" 2503msgstr "# Entradas eliminadas de la tabla de encaminamiento"
2511 2504
2512#: src/dht/gnunet-service-dht_routing.c:413 2505#: src/dht/gnunet-service-dht_routing.c:415
2513msgid "# Entries added to routing table" 2506msgid "# Entries added to routing table"
2514msgstr "# Entradas añadidas a la tabla de encaminamiento" 2507msgstr "# Entradas añadidas a la tabla de encaminamiento"
2515 2508
2516#: src/dht/gnunet-service-dht_routing.c:435 2509#: src/dht/gnunet-service-dht_routing.c:437
2517msgid "# DHT requests combined" 2510msgid "# DHT requests combined"
2518msgstr "# Peticiones a la DHT combinadas" 2511msgstr "# Peticiones a la DHT combinadas"
2519 2512
2520#: src/dht/plugin_block_dht.c:187 2513#: src/dht/plugin_block_dht.c:189
2521#, c-format 2514#, c-format
2522msgid "Block not of type %u\n" 2515msgid "Block not of type %u\n"
2523msgstr "El bloque no es del tipo %u\n" 2516msgstr "El bloque no es del tipo %u\n"
2524 2517
2525#: src/dht/plugin_block_dht.c:196 2518#: src/dht/plugin_block_dht.c:198
2526msgid "Size mismatch for block\n" 2519msgid "Size mismatch for block\n"
2527msgstr "Discrepancias de tamaños para el bloque\n" 2520msgstr "Discrepancias de tamaños para el bloque\n"
2528 2521
2529#: src/dht/plugin_block_dht.c:207 2522#: src/dht/plugin_block_dht.c:209
2530#, c-format 2523#, c-format
2531msgid "Block of type %u is malformed\n" 2524msgid "Block of type %u is malformed\n"
2532msgstr "El bloque del tipo %u está mal formado\n" 2525msgstr "El bloque del tipo %u está mal formado\n"
2533 2526
2534#: src/dns/gnunet-dns-monitor.c:351 src/dns/gnunet-dns-monitor.c:356 2527#: src/dns/gnunet-dns-monitor.c:353 src/dns/gnunet-dns-monitor.c:358
2535msgid "only monitor DNS queries" 2528msgid "only monitor DNS queries"
2536msgstr "sólo monitorizar consultas DNS" 2529msgstr "sólo monitorizar consultas DNS"
2537 2530
2538#: src/dns/gnunet-dns-monitor.c:368 2531#: src/dns/gnunet-dns-monitor.c:370
2539msgid "Monitor DNS queries." 2532msgid "Monitor DNS queries."
2540msgstr "Monitorizar consultas DNS." 2533msgstr "Monitorizar consultas DNS."
2541 2534
2542#: src/dns/gnunet-dns-redirector.c:235 2535#: src/dns/gnunet-dns-redirector.c:237
2543msgid "set A records" 2536msgid "set A records"
2544msgstr "establece registros de clase A" 2537msgstr "establece registros de clase A"
2545 2538
2546#: src/dns/gnunet-dns-redirector.c:241 2539#: src/dns/gnunet-dns-redirector.c:243
2547msgid "set AAAA records" 2540msgid "set AAAA records"
2548msgstr "establece registros de clase AAAA" 2541msgstr "establece registros de clase AAAA"
2549 2542
2550#: src/dns/gnunet-dns-redirector.c:254 2543#: src/dns/gnunet-dns-redirector.c:256
2551msgid "Change DNS replies to point elsewhere." 2544msgid "Change DNS replies to point elsewhere."
2552msgstr "Cambiar las respuestas DNS apuntando a cualquier otro lado." 2545msgstr "Cambiar las respuestas DNS apuntando a cualquier otro lado."
2553 2546
2554#: src/dns/gnunet-service-dns.c:460 2547#: src/dns/gnunet-service-dns.c:462
2555msgid "# DNS requests answered via TUN interface" 2548msgid "# DNS requests answered via TUN interface"
2556msgstr "# Peticiones DNS contestadas vía interfaz TUN" 2549msgstr "# Peticiones DNS contestadas vía interfaz TUN"
2557 2550
2558#: src/dns/gnunet-service-dns.c:608 2551#: src/dns/gnunet-service-dns.c:610
2559msgid "# DNS exit failed (failed to open socket)" 2552msgid "# DNS exit failed (failed to open socket)"
2560msgstr "# Salidas DNS fallidas (se produjo un fallo al abrir el «socket»)" 2553msgstr "# Salidas DNS fallidas (se produjo un fallo al abrir el «socket»)"
2561 2554
2562#: src/dns/gnunet-service-dns.c:738 2555#: src/dns/gnunet-service-dns.c:740
2563msgid "# External DNS response discarded (no matching request)" 2556msgid "# External DNS response discarded (no matching request)"
2564msgstr "# Respuestas DNS externas descartadas (ninguna petición coincidente)" 2557msgstr "# Respuestas DNS externas descartadas (ninguna petición coincidente)"
2565 2558
2566#: src/dns/gnunet-service-dns.c:813 2559#: src/dns/gnunet-service-dns.c:815
2567msgid "# Client response discarded (no matching request)" 2560msgid "# Client response discarded (no matching request)"
2568msgstr "# Respuestas de cliente descartadas (ninguna petición coincidente)" 2561msgstr "# Respuestas de cliente descartadas (ninguna petición coincidente)"
2569 2562
2570#: src/dns/gnunet-service-dns.c:928 2563#: src/dns/gnunet-service-dns.c:930
2571msgid "Received malformed IPv4-UDP packet on TUN interface.\n" 2564msgid "Received malformed IPv4-UDP packet on TUN interface.\n"
2572msgstr "Recibido paquete UDP IPv4 mal formado en interfaz TUN.\n" 2565msgstr "Recibido paquete UDP IPv4 mal formado en interfaz TUN.\n"
2573 2566
2574#: src/dns/gnunet-service-dns.c:944 2567#: src/dns/gnunet-service-dns.c:946
2575msgid "Received malformed IPv6-UDP packet on TUN interface.\n" 2568msgid "Received malformed IPv6-UDP packet on TUN interface.\n"
2576msgstr "Recibido paquete UDP IPv6 mal formado en interfaz TUN.\n" 2569msgstr "Recibido paquete UDP IPv6 mal formado en interfaz TUN.\n"
2577 2570
2578#: src/dns/gnunet-service-dns.c:953 2571#: src/dns/gnunet-service-dns.c:955
2579#, c-format 2572#, c-format
2580msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n" 2573msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n"
2581msgstr "Se obtuvo un paquete no-IP con %u bytes y protocolo %u de TUN\n" 2574msgstr "Se obtuvo un paquete no-IP con %u bytes y protocolo %u de TUN\n"
2582 2575
2583#: src/dns/gnunet-service-dns.c:963 2576#: src/dns/gnunet-service-dns.c:965
2584msgid "DNS interceptor got non-DNS packet (dropped)\n" 2577msgid "DNS interceptor got non-DNS packet (dropped)\n"
2585msgstr "" 2578msgstr ""
2586 2579
2587#: src/dns/gnunet-service-dns.c:965 2580#: src/dns/gnunet-service-dns.c:967
2588msgid "# Non-DNS UDP packet received via TUN interface" 2581msgid "# Non-DNS UDP packet received via TUN interface"
2589msgstr "# Paquetes UDP no-DNS recibidos vía interfaz TUN" 2582msgstr "# Paquetes UDP no-DNS recibidos vía interfaz TUN"
2590 2583
2591#: src/dns/gnunet-service-dns.c:1032 2584#: src/dns/gnunet-service-dns.c:1034
2592msgid "# DNS requests received via TUN interface" 2585msgid "# DNS requests received via TUN interface"
2593msgstr "# Peticiones DNS recibidas vía interfaz TUN" 2586msgstr "# Peticiones DNS recibidas vía interfaz TUN"
2594 2587
2595#: src/dns/gnunet-service-dns.c:1080 src/exit/gnunet-daemon-exit.c:3563 2588#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
2596msgid "need a valid IPv4 or IPv6 address\n" 2589msgid "need a valid IPv4 or IPv6 address\n"
2597msgstr "se necesita una dirección IPv4 o IPv6 válida\n" 2590msgstr "se necesita una dirección IPv4 o IPv6 válida\n"
2598 2591
2599#: src/dns/gnunet-service-dns.c:1090 2592#: src/dns/gnunet-service-dns.c:1092
2600#, fuzzy, c-format 2593#, fuzzy, c-format
2601msgid "`%s' must be installed SUID, will not run DNS interceptor\n" 2594msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
2602msgstr "«%s» debe ser instalado con SUID, se niega a arrancar\n" 2595msgstr "«%s» debe ser instalado con SUID, se niega a arrancar\n"
2603 2596
2604#: src/dv/gnunet-dv.c:173 2597#: src/dv/gnunet-dv.c:175
2605#, fuzzy 2598#, fuzzy
2606msgid "Print information about DV state" 2599msgid "Print information about DV state"
2607msgstr "Imprime información acerca del estado del ATS" 2600msgstr "Imprime información acerca del estado del ATS"
2608 2601
2609#: src/exit/gnunet-daemon-exit.c:958 2602#: src/exit/gnunet-daemon-exit.c:960
2610msgid "# TCP packets sent via TUN" 2603msgid "# TCP packets sent via TUN"
2611msgstr "# Paquetes TCP enviados vía TUN" 2604msgstr "# Paquetes TCP enviados vía TUN"
2612 2605
2613#: src/exit/gnunet-daemon-exit.c:1059 2606#: src/exit/gnunet-daemon-exit.c:1061
2614msgid "# ICMP packets sent via TUN" 2607msgid "# ICMP packets sent via TUN"
2615msgstr "# Paquetes ICMP enviados vía TUN" 2608msgstr "# Paquetes ICMP enviados vía TUN"
2616 2609
2617#: src/exit/gnunet-daemon-exit.c:1338 2610#: src/exit/gnunet-daemon-exit.c:1340
2618msgid "# UDP packets sent via TUN" 2611msgid "# UDP packets sent via TUN"
2619msgstr "# Paquetes UDP enviados vía TUN" 2612msgstr "# Paquetes UDP enviados vía TUN"
2620 2613
2621#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570 2614#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
2622#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699 2615#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
2623#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951 2616#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
2624#: src/exit/gnunet-daemon-exit.c:2205 2617#: src/exit/gnunet-daemon-exit.c:2207
2625#, fuzzy 2618#, fuzzy
2626msgid "# Bytes received from CADET" 2619msgid "# Bytes received from CADET"
2627msgstr "# Bytes recibidos de TUN" 2620msgstr "# Bytes recibidos de TUN"
2628 2621
2629#: src/exit/gnunet-daemon-exit.c:1465 2622#: src/exit/gnunet-daemon-exit.c:1467
2630#, fuzzy 2623#, fuzzy
2631msgid "# UDP IP-exit requests received via cadet" 2624msgid "# UDP IP-exit requests received via cadet"
2632msgstr "# Peticiones de salida IP por UDP recibidas vía mesh" 2625msgstr "# Peticiones de salida IP por UDP recibidas vía mesh"
2633 2626
2634#: src/exit/gnunet-daemon-exit.c:1573 2627#: src/exit/gnunet-daemon-exit.c:1575
2635#, fuzzy 2628#, fuzzy
2636msgid "# UDP service requests received via cadet" 2629msgid "# UDP service requests received via cadet"
2637msgstr "# Peticiones de servicio UDP recibidas vía mesh" 2630msgstr "# Peticiones de servicio UDP recibidas vía mesh"
2638 2631
2639#: src/exit/gnunet-daemon-exit.c:1613 2632#: src/exit/gnunet-daemon-exit.c:1615
2640#, fuzzy 2633#, fuzzy
2641msgid "# TCP service creation requests received via cadet" 2634msgid "# TCP service creation requests received via cadet"
2642msgstr "# Peticiones de creaciones de servicio TCP recibidas vía mesh" 2635msgstr "# Peticiones de creaciones de servicio TCP recibidas vía mesh"
2643 2636
2644#: src/exit/gnunet-daemon-exit.c:1702 2637#: src/exit/gnunet-daemon-exit.c:1704
2645#, fuzzy 2638#, fuzzy
2646msgid "# TCP IP-exit creation requests received via cadet" 2639msgid "# TCP IP-exit creation requests received via cadet"
2647msgstr "# Peticiones de creación de salida IP por TCP recibidas vía mesh" 2640msgstr "# Peticiones de creación de salida IP por TCP recibidas vía mesh"
2648 2641
2649#: src/exit/gnunet-daemon-exit.c:1786 2642#: src/exit/gnunet-daemon-exit.c:1788
2650msgid "# TCP DATA requests dropped (no session)" 2643msgid "# TCP DATA requests dropped (no session)"
2651msgstr "# Peticiones de datos (DATA) TCP omitidas (no hay sesión)" 2644msgstr "# Peticiones de datos (DATA) TCP omitidas (no hay sesión)"
2652 2645
2653#: src/exit/gnunet-daemon-exit.c:1823 2646#: src/exit/gnunet-daemon-exit.c:1825
2654#, fuzzy 2647#, fuzzy
2655msgid "# TCP data requests received via cadet" 2648msgid "# TCP data requests received via cadet"
2656msgstr "# Peticiones de datos TCP recibidas vía mesh" 2649msgstr "# Peticiones de datos TCP recibidas vía mesh"
2657 2650
2658#: src/exit/gnunet-daemon-exit.c:1954 2651#: src/exit/gnunet-daemon-exit.c:1956
2659#, fuzzy 2652#, fuzzy
2660msgid "# ICMP IP-exit requests received via cadet" 2653msgid "# ICMP IP-exit requests received via cadet"
2661msgstr "# Peticiones de salida IP por ICMP recibidas vía mesh" 2654msgstr "# Peticiones de salida IP por ICMP recibidas vía mesh"
2662 2655
2663#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277 2656#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
2664#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:826 2657#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
2665#: src/vpn/gnunet-service-vpn.c:989 src/vpn/gnunet-service-vpn.c:2103 2658#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
2666msgid "# ICMPv4 packets dropped (type not allowed)" 2659msgid "# ICMPv4 packets dropped (type not allowed)"
2667msgstr "# Paquetes ICMPv4 omitidos (tipo no permitido)" 2660msgstr "# Paquetes ICMPv4 omitidos (tipo no permitido)"
2668 2661
2669#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336 2662#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
2670#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885 2663#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
2671#: src/vpn/gnunet-service-vpn.c:1022 src/vpn/gnunet-service-vpn.c:2156 2664#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
2672msgid "# ICMPv6 packets dropped (type not allowed)" 2665msgid "# ICMPv6 packets dropped (type not allowed)"
2673msgstr "# Paquetes ICMPv6 omitidos (tipo no permitido)" 2666msgstr "# Paquetes ICMPv6 omitidos (tipo no permitido)"
2674 2667
2675#: src/exit/gnunet-daemon-exit.c:2208 2668#: src/exit/gnunet-daemon-exit.c:2210
2676#, fuzzy 2669#, fuzzy
2677msgid "# ICMP service requests received via cadet" 2670msgid "# ICMP service requests received via cadet"
2678msgstr "# Peticiones de servicio ICMP recibidas vía mesh" 2671msgstr "# Peticiones de servicio ICMP recibidas vía mesh"
2679 2672
2680#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:983 2673#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
2681#: src/vpn/gnunet-service-vpn.c:2094 2674#: src/vpn/gnunet-service-vpn.c:2096
2682msgid "# ICMPv4 packets dropped (impossible PT to v6)" 2675msgid "# ICMPv4 packets dropped (impossible PT to v6)"
2683msgstr "# Paquetes ICMPv4 omitidos (imposible atravesar v6)" 2676msgstr "# Paquetes ICMPv4 omitidos (imposible atravesar v6)"
2684 2677
2685#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:873 2678#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
2686#: src/vpn/gnunet-service-vpn.c:2128 src/vpn/gnunet-service-vpn.c:2139 2679#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
2687msgid "# ICMPv6 packets dropped (impossible PT to v4)" 2680msgid "# ICMPv6 packets dropped (impossible PT to v4)"
2688msgstr "# Paquetes ICMPv6 omitidos (imposible atravesar v4)" 2681msgstr "# Paquetes ICMPv6 omitidos (imposible atravesar v4)"
2689 2682
2690#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066 2683#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
2691#, fuzzy 2684#, fuzzy
2692msgid "# Inbound CADET channels created" 2685msgid "# Inbound CADET channels created"
2693msgstr "# Túneles interiores MESH creados" 2686msgstr "# Túneles interiores MESH creados"
2694 2687
2695#: src/exit/gnunet-daemon-exit.c:2520 2688#: src/exit/gnunet-daemon-exit.c:2522
2696#, c-format 2689#, c-format
2697msgid "Got duplicate service records for `%s:%u'\n" 2690msgid "Got duplicate service records for `%s:%u'\n"
2698msgstr "Hay registros de servicios duplicados para «%s:%u»\n" 2691msgstr "Hay registros de servicios duplicados para «%s:%u»\n"
2699 2692
2700#: src/exit/gnunet-daemon-exit.c:2539 2693#: src/exit/gnunet-daemon-exit.c:2541
2701#, fuzzy 2694#, fuzzy
2702msgid "# Messages transmitted via cadet channels" 2695msgid "# Messages transmitted via cadet channels"
2703msgstr "# Bytes transmitidos vía túneles MESH" 2696msgstr "# Bytes transmitidos vía túneles MESH"
2704 2697
2705#: src/exit/gnunet-daemon-exit.c:2717 2698#: src/exit/gnunet-daemon-exit.c:2719
2706msgid "# ICMP packets dropped (not allowed)" 2699msgid "# ICMP packets dropped (not allowed)"
2707msgstr "# Paquetes ICMP omitidos (tipo no permitido)" 2700msgstr "# Paquetes ICMP omitidos (tipo no permitido)"
2708 2701
2709#: src/exit/gnunet-daemon-exit.c:2725 2702#: src/exit/gnunet-daemon-exit.c:2727
2710msgid "ICMP Packet dropped, have no matching connection information\n" 2703msgid "ICMP Packet dropped, have no matching connection information\n"
2711msgstr "Paquete ICMP omitido, no hay información de conexiones coincidente\n" 2704msgstr "Paquete ICMP omitido, no hay información de conexiones coincidente\n"
2712 2705
2713#: src/exit/gnunet-daemon-exit.c:2799 2706#: src/exit/gnunet-daemon-exit.c:2801
2714msgid "UDP Packet dropped, have no matching connection information\n" 2707msgid "UDP Packet dropped, have no matching connection information\n"
2715msgstr "Paquete UDP omitido, no hay información de conexiones coincidente\n" 2708msgstr "Paquete UDP omitido, no hay información de conexiones coincidente\n"
2716 2709
2717#: src/exit/gnunet-daemon-exit.c:2871 2710#: src/exit/gnunet-daemon-exit.c:2873
2718msgid "TCP Packet dropped, have no matching connection information\n" 2711msgid "TCP Packet dropped, have no matching connection information\n"
2719msgstr "Paquete TCP omitido, no hay información de conexiones coincidente\n" 2712msgstr "Paquete TCP omitido, no hay información de conexiones coincidente\n"
2720 2713
2721#: src/exit/gnunet-daemon-exit.c:2919 2714#: src/exit/gnunet-daemon-exit.c:2921
2722msgid "# Packets received from TUN" 2715msgid "# Packets received from TUN"
2723msgstr "# Paquetes recibidos de TUN" 2716msgstr "# Paquetes recibidos de TUN"
2724 2717
2725#: src/exit/gnunet-daemon-exit.c:2933 2718#: src/exit/gnunet-daemon-exit.c:2935
2726msgid "# Bytes received from TUN" 2719msgid "# Bytes received from TUN"
2727msgstr "# Bytes recibidos de TUN" 2720msgstr "# Bytes recibidos de TUN"
2728 2721
2729#: src/exit/gnunet-daemon-exit.c:2959 2722#: src/exit/gnunet-daemon-exit.c:2961
2730msgid "IPv4 packet options received. Ignored.\n" 2723msgid "IPv4 packet options received. Ignored.\n"
2731msgstr "Opciones de paquete IPv4 recibidas. Ignoradas.\n" 2724msgstr "Opciones de paquete IPv4 recibidas. Ignoradas.\n"
2732 2725
2733#: src/exit/gnunet-daemon-exit.c:2986 2726#: src/exit/gnunet-daemon-exit.c:2988
2734#, c-format 2727#, c-format
2735msgid "IPv4 packet with unsupported next header %u received. Ignored.\n" 2728msgid "IPv4 packet with unsupported next header %u received. Ignored.\n"
2736msgstr "" 2729msgstr ""
2737"Recibido paquete IPv4 con cabecera «next» no soportada %u. Ignorado.\n" 2730"Recibido paquete IPv4 con cabecera «next» no soportada %u. Ignorado.\n"
2738 2731
2739#: src/exit/gnunet-daemon-exit.c:3032 2732#: src/exit/gnunet-daemon-exit.c:3034
2740#, c-format 2733#, c-format
2741msgid "IPv6 packet with unsupported next header %d received. Ignored.\n" 2734msgid "IPv6 packet with unsupported next header %d received. Ignored.\n"
2742msgstr "" 2735msgstr ""
2743"Recibido paquete IPv6 con cabecera «next» no soportada %d. Ignorado.\n" 2736"Recibido paquete IPv6 con cabecera «next» no soportada %d. Ignorado.\n"
2744 2737
2745#: src/exit/gnunet-daemon-exit.c:3040 2738#: src/exit/gnunet-daemon-exit.c:3042
2746#, c-format 2739#, c-format
2747msgid "Packet from unknown protocol %u received. Ignored.\n" 2740msgid "Packet from unknown protocol %u received. Ignored.\n"
2748msgstr "Recibido paquete de protocolo desconocido %u. Ignorado.\n" 2741msgstr "Recibido paquete de protocolo desconocido %u. Ignorado.\n"
2749 2742
2750#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253 2743#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
2751#, fuzzy, c-format 2744#, fuzzy, c-format
2752msgid "Option `%s' for domain `%s' is not formatted correctly!\n" 2745msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
2753msgstr "Las opción «%s» o «%s» es necesaria.\n" 2746msgstr "Las opción «%s» o «%s» es necesaria.\n"
2754 2747
2755#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275 2748#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
2756#, c-format 2749#, c-format
2757msgid "`%s' is not a valid port number (for domain `%s')!" 2750msgid "`%s' is not a valid port number (for domain `%s')!"
2758msgstr "" 2751msgstr ""
2759 2752
2760#: src/exit/gnunet-daemon-exit.c:3316 2753#: src/exit/gnunet-daemon-exit.c:3318
2761#, c-format 2754#, c-format
2762msgid "No addresses found for hostname `%s' of service `%s'!\n" 2755msgid "No addresses found for hostname `%s' of service `%s'!\n"
2763msgstr "" 2756msgstr ""
2764"¡No se encontraron direcciones para el nombre de máquina «%s» del servicio " 2757"¡No se encontraron direcciones para el nombre de máquina «%s» del servicio "
2765"«%s»!\n" 2758"«%s»!\n"
2766 2759
2767#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343 2760#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
2768#, c-format 2761#, c-format
2769msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n" 2762msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
2770msgstr "¡Servicio «%s» configurado para IPv4, pero IPv4 está deshabilitado!\n" 2763msgstr "¡Servicio «%s» configurado para IPv4, pero IPv4 está deshabilitado!\n"
2771 2764
2772#: src/exit/gnunet-daemon-exit.c:3355 2765#: src/exit/gnunet-daemon-exit.c:3357
2773#, c-format 2766#, c-format
2774msgid "No IP addresses found for hostname `%s' of service `%s'!\n" 2767msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
2775msgstr "" 2768msgstr ""
2776"¡No se encontraron direcciones IP para el nombre de máquina «%s» del " 2769"¡No se encontraron direcciones IP para el nombre de máquina «%s» del "
2777"servicio «%s»!\n" 2770"servicio «%s»!\n"
2778 2771
2779#: src/exit/gnunet-daemon-exit.c:3499 2772#: src/exit/gnunet-daemon-exit.c:3501
2780msgid "" 2773msgid ""
2781"This system does not support IPv4, will disable IPv4 functions despite them " 2774"This system does not support IPv4, will disable IPv4 functions despite them "
2782"being enabled in the configuration\n" 2775"being enabled in the configuration\n"
@@ -2784,7 +2777,7 @@ msgstr ""
2784"Este sistema no soporta IPv4, se deshabilitarán las funciones IPv4 aunque " 2777"Este sistema no soporta IPv4, se deshabilitarán las funciones IPv4 aunque "
2785"estén habilitadas en la configuración\n" 2778"estén habilitadas en la configuración\n"
2786 2779
2787#: src/exit/gnunet-daemon-exit.c:3507 2780#: src/exit/gnunet-daemon-exit.c:3509
2788msgid "" 2781msgid ""
2789"This system does not support IPv6, will disable IPv6 functions despite them " 2782"This system does not support IPv6, will disable IPv6 functions despite them "
2790"being enabled in the configuration\n" 2783"being enabled in the configuration\n"
@@ -2792,7 +2785,7 @@ msgstr ""
2792"Este sistema no soporta IPv6, se deshabilitarán las funciones IPv6 aunque " 2785"Este sistema no soporta IPv6, se deshabilitarán las funciones IPv6 aunque "
2793"estén habilitadas en la configuración\n" 2786"estén habilitadas en la configuración\n"
2794 2787
2795#: src/exit/gnunet-daemon-exit.c:3514 2788#: src/exit/gnunet-daemon-exit.c:3516
2796msgid "" 2789msgid ""
2797"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use " 2790"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
2798"ENABLE_IPv4=YES\n" 2791"ENABLE_IPv4=YES\n"
@@ -2800,7 +2793,7 @@ msgstr ""
2800"No se puede habilitar salida IPv4 pero se deshabilita IPv4 sobre interfaz " 2793"No se puede habilitar salida IPv4 pero se deshabilita IPv4 sobre interfaz "
2801"TUN, se usará ENABLE_IPv4=YES\n" 2794"TUN, se usará ENABLE_IPv4=YES\n"
2802 2795
2803#: src/exit/gnunet-daemon-exit.c:3520 2796#: src/exit/gnunet-daemon-exit.c:3522
2804msgid "" 2797msgid ""
2805"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use " 2798"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
2806"ENABLE_IPv6=YES\n" 2799"ENABLE_IPv6=YES\n"
@@ -2808,156 +2801,156 @@ msgstr ""
2808"No se pudo habilitar la salida IPv6 pero se deshabilita IPv6 sobre interfaz " 2801"No se pudo habilitar la salida IPv6 pero se deshabilita IPv6 sobre interfaz "
2809"TUN, se usará ENABLE_IPv6=YES\n" 2802"TUN, se usará ENABLE_IPv6=YES\n"
2810 2803
2811#: src/exit/gnunet-daemon-exit.c:3688 2804#: src/exit/gnunet-daemon-exit.c:3690
2812msgid "Must be a number" 2805msgid "Must be a number"
2813msgstr "" 2806msgstr ""
2814 2807
2815#: src/exit/gnunet-daemon-exit.c:3803 2808#: src/exit/gnunet-daemon-exit.c:3805
2816#, fuzzy, c-format 2809#, fuzzy, c-format
2817msgid "`%s' must be installed SUID, EXIT will not work\n" 2810msgid "`%s' must be installed SUID, EXIT will not work\n"
2818msgstr "«%s» debe ser instalado con SUID, se niega a arrancar\n" 2811msgstr "«%s» debe ser instalado con SUID, se niega a arrancar\n"
2819 2812
2820#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202 2813#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
2821msgid "No useful service enabled. Exiting.\n" 2814msgid "No useful service enabled. Exiting.\n"
2822msgstr "Ningún servicio útil habilitado. Saliendo.\n" 2815msgstr "Ningún servicio útil habilitado. Saliendo.\n"
2823 2816
2824#: src/exit/gnunet-daemon-exit.c:3964 2817#: src/exit/gnunet-daemon-exit.c:3966
2825msgid "Daemon to run to provide an IP exit node for the VPN" 2818msgid "Daemon to run to provide an IP exit node for the VPN"
2826msgstr "Demonio a ejecutar para obtener un nodo de salida IP para la VPN" 2819msgstr "Demonio a ejecutar para obtener un nodo de salida IP para la VPN"
2827 2820
2828#: src/fragmentation/defragmentation.c:273 2821#: src/fragmentation/defragmentation.c:275
2829msgid "# acknowledgements sent for fragment" 2822msgid "# acknowledgements sent for fragment"
2830msgstr "# reconocimientos enviados por framentos" 2823msgstr "# reconocimientos enviados por framentos"
2831 2824
2832#: src/fragmentation/defragmentation.c:466 2825#: src/fragmentation/defragmentation.c:468
2833#: src/transport/plugin_transport_wlan.c:1552 2826#: src/transport/plugin_transport_wlan.c:1554
2834msgid "# fragments received" 2827msgid "# fragments received"
2835msgstr "# fragmentos recibidos" 2828msgstr "# fragmentos recibidos"
2836 2829
2837#: src/fragmentation/defragmentation.c:536 2830#: src/fragmentation/defragmentation.c:538
2838msgid "# duplicate fragments received" 2831msgid "# duplicate fragments received"
2839msgstr "# fragmentos duplicados recibidos" 2832msgstr "# fragmentos duplicados recibidos"
2840 2833
2841#: src/fragmentation/defragmentation.c:554 2834#: src/fragmentation/defragmentation.c:556
2842msgid "# messages defragmented" 2835msgid "# messages defragmented"
2843msgstr "# mensajes defragmentados" 2836msgstr "# mensajes defragmentados"
2844 2837
2845#: src/fragmentation/fragmentation.c:238 2838#: src/fragmentation/fragmentation.c:240
2846msgid "# fragments transmitted" 2839msgid "# fragments transmitted"
2847msgstr "# fragmentos transmitidos" 2840msgstr "# fragmentos transmitidos"
2848 2841
2849#: src/fragmentation/fragmentation.c:243 2842#: src/fragmentation/fragmentation.c:245
2850msgid "# fragments retransmitted" 2843msgid "# fragments retransmitted"
2851msgstr "# fragmentos retransmitidos" 2844msgstr "# fragmentos retransmitidos"
2852 2845
2853#: src/fragmentation/fragmentation.c:276 2846#: src/fragmentation/fragmentation.c:278
2854msgid "# fragments wrap arounds" 2847msgid "# fragments wrap arounds"
2855msgstr "# encajes de fragmentos" 2848msgstr "# encajes de fragmentos"
2856 2849
2857#: src/fragmentation/fragmentation.c:323 2850#: src/fragmentation/fragmentation.c:325
2858msgid "# messages fragmented" 2851msgid "# messages fragmented"
2859msgstr "# mensajes fragmentados" 2852msgstr "# mensajes fragmentados"
2860 2853
2861#: src/fragmentation/fragmentation.c:329 2854#: src/fragmentation/fragmentation.c:331
2862msgid "# total size of fragmented messages" 2855msgid "# total size of fragmented messages"
2863msgstr "# tamaño total de los mensajes fragmentados" 2856msgstr "# tamaño total de los mensajes fragmentados"
2864 2857
2865#: src/fragmentation/fragmentation.c:454 2858#: src/fragmentation/fragmentation.c:456
2866msgid "# fragment acknowledgements received" 2859msgid "# fragment acknowledgements received"
2867msgstr "# reconocimientos de fragmentos recibidos" 2860msgstr "# reconocimientos de fragmentos recibidos"
2868 2861
2869#: src/fragmentation/fragmentation.c:461 2862#: src/fragmentation/fragmentation.c:463
2870msgid "# bits removed from fragmentation ACKs" 2863msgid "# bits removed from fragmentation ACKs"
2871msgstr "# bits eliminados de reconocimientos de fragmentos" 2864msgstr "# bits eliminados de reconocimientos de fragmentos"
2872 2865
2873#: src/fragmentation/fragmentation.c:485 2866#: src/fragmentation/fragmentation.c:487
2874msgid "# fragmentation transmissions completed" 2867msgid "# fragmentation transmissions completed"
2875msgstr "# transmisiones de fragmentos completadas" 2868msgstr "# transmisiones de fragmentos completadas"
2876 2869
2877#: src/fs/fs_api.c:497 2870#: src/fs/fs_api.c:499
2878#, c-format 2871#, c-format
2879msgid "Could not open file `%s': %s" 2872msgid "Could not open file `%s': %s"
2880msgstr "No se pudo abrir el fichero «%s»: %s" 2873msgstr "No se pudo abrir el fichero «%s»: %s"
2881 2874
2882#: src/fs/fs_api.c:508 2875#: src/fs/fs_api.c:510
2883#, c-format 2876#, c-format
2884msgid "Could not read file `%s': %s" 2877msgid "Could not read file `%s': %s"
2885msgstr "No se pudo leer el fichero «%s»: %s" 2878msgstr "No se pudo leer el fichero «%s»: %s"
2886 2879
2887# Short read?? 2880# Short read??
2888#: src/fs/fs_api.c:516 2881#: src/fs/fs_api.c:518
2889#, c-format 2882#, c-format
2890msgid "Short read reading from file `%s'!" 2883msgid "Short read reading from file `%s'!"
2891msgstr "¡Lectura corta leyendo del fichero «%s»!" 2884msgstr "¡Lectura corta leyendo del fichero «%s»!"
2892 2885
2893#: src/fs/fs_api.c:1124 2886#: src/fs/fs_api.c:1126
2894#, c-format 2887#, c-format
2895msgid "Failed to resume publishing information `%s': %s\n" 2888msgid "Failed to resume publishing information `%s': %s\n"
2896msgstr "Se produjo un fallo al retomar la operación de publicación «%s»: %s\n" 2889msgstr "Se produjo un fallo al retomar la operación de publicación «%s»: %s\n"
2897 2890
2898#: src/fs/fs_api.c:1644 2891#: src/fs/fs_api.c:1646
2899#, c-format 2892#, c-format
2900msgid "Failure while resuming publishing operation `%s': %s\n" 2893msgid "Failure while resuming publishing operation `%s': %s\n"
2901msgstr "Fallo mientras se reiniciaba la operación de publicación «%s»: %s\n" 2894msgstr "Fallo mientras se reiniciaba la operación de publicación «%s»: %s\n"
2902 2895
2903#: src/fs/fs_api.c:1660 2896#: src/fs/fs_api.c:1662
2904#, c-format 2897#, c-format
2905msgid "Failed to resume publishing operation `%s': %s\n" 2898msgid "Failed to resume publishing operation `%s': %s\n"
2906msgstr "Se produjo un fallo al retomar la operación de publicación «%s»: %s\n" 2899msgstr "Se produjo un fallo al retomar la operación de publicación «%s»: %s\n"
2907 2900
2908#: src/fs/fs_api.c:2320 2901#: src/fs/fs_api.c:2322
2909#, c-format 2902#, c-format
2910msgid "Failure while resuming unindexing operation `%s': %s\n" 2903msgid "Failure while resuming unindexing operation `%s': %s\n"
2911msgstr "" 2904msgstr ""
2912"Se produjo un fallo mientras se retomaba la operación de publicación «%s»: " 2905"Se produjo un fallo mientras se retomaba la operación de publicación «%s»: "
2913"%s\n" 2906"%s\n"
2914 2907
2915#: src/fs/fs_api.c:2330 2908#: src/fs/fs_api.c:2332
2916#, c-format 2909#, c-format
2917msgid "Failed to resume unindexing operation `%s': %s\n" 2910msgid "Failed to resume unindexing operation `%s': %s\n"
2918msgstr "Se produjo un fallo al retomar la operación de desindexado «%s»: %s\n" 2911msgstr "Se produjo un fallo al retomar la operación de desindexado «%s»: %s\n"
2919 2912
2920#: src/fs/fs_api.c:2458 src/fs/fs_api.c:2704 2913#: src/fs/fs_api.c:2460 src/fs/fs_api.c:2706
2921#, c-format 2914#, c-format
2922msgid "Failed to resume sub-download `%s': %s\n" 2915msgid "Failed to resume sub-download `%s': %s\n"
2923msgstr "Se produjo un fallo al retomar la sub-descarga «%s»: %s\n" 2916msgstr "Se produjo un fallo al retomar la sub-descarga «%s»: %s\n"
2924 2917
2925#: src/fs/fs_api.c:2476 2918#: src/fs/fs_api.c:2478
2926#, c-format 2919#, c-format
2927msgid "Failed to resume sub-search `%s': %s\n" 2920msgid "Failed to resume sub-search `%s': %s\n"
2928msgstr "Se produjo un fallo al retomar la sub-búsqueda «%s»: %s\n" 2921msgstr "Se produjo un fallo al retomar la sub-búsqueda «%s»: %s\n"
2929 2922
2930#: src/fs/fs_api.c:2491 src/fs/fs_api.c:2510 src/fs/fs_api.c:3014 2923#: src/fs/fs_api.c:2493 src/fs/fs_api.c:2512 src/fs/fs_api.c:3016
2931#, c-format 2924#, c-format
2932msgid "Failure while resuming search operation `%s': %s\n" 2925msgid "Failure while resuming search operation `%s': %s\n"
2933msgstr "" 2926msgstr ""
2934"Se produjo un fallo mientras se retomaba la operación de búsqueda «%s»: %s\n" 2927"Se produjo un fallo mientras se retomaba la operación de búsqueda «%s»: %s\n"
2935 2928
2936#: src/fs/fs_api.c:2694 2929#: src/fs/fs_api.c:2696
2937#, c-format 2930#, c-format
2938msgid "Failed to resume sub-download `%s': could not open file `%s'\n" 2931msgid "Failed to resume sub-download `%s': could not open file `%s'\n"
2939msgstr "" 2932msgstr ""
2940"Se produjo un fallo al retomar la sub-descarga «%s»: no se pudo abrir el " 2933"Se produjo un fallo al retomar la sub-descarga «%s»: no se pudo abrir el "
2941"fichero «%s»\n" 2934"fichero «%s»\n"
2942 2935
2943#: src/fs/fs_api.c:2957 2936#: src/fs/fs_api.c:2959
2944msgid "Could not resume running search, will resume as paused search\n" 2937msgid "Could not resume running search, will resume as paused search\n"
2945msgstr "" 2938msgstr ""
2946"No se pudo retomar la búsqueda en ejecución, se retomará como una búsqueda " 2939"No se pudo retomar la búsqueda en ejecución, se retomará como una búsqueda "
2947"en pausa\n" 2940"en pausa\n"
2948 2941
2949#: src/fs/fs_api.c:3052 2942#: src/fs/fs_api.c:3054
2950#, c-format 2943#, c-format
2951msgid "Failure while resuming download operation `%s': %s\n" 2944msgid "Failure while resuming download operation `%s': %s\n"
2952msgstr "" 2945msgstr ""
2953"Se produjo un fallo mientras se retomaba de la operación de descarga «%s»: " 2946"Se produjo un fallo mientras se retomaba de la operación de descarga «%s»: "
2954"%s\n" 2947"%s\n"
2955 2948
2956#: src/fs/fs_directory.c:211 2949#: src/fs/fs_directory.c:213
2957msgid "MAGIC mismatch. This is not a GNUnet directory.\n" 2950msgid "MAGIC mismatch. This is not a GNUnet directory.\n"
2958msgstr "No hay coincidencia con «MAGIC». Esto no es un directorio GNUnet.\n" 2951msgstr "No hay coincidencia con «MAGIC». Esto no es un directorio GNUnet.\n"
2959 2952
2960#: src/fs/fs_download.c:308 2953#: src/fs/fs_download.c:310
2961msgid "" 2954msgid ""
2962"Recursive downloads of directories larger than 4 GB are not supported on 32-" 2955"Recursive downloads of directories larger than 4 GB are not supported on 32-"
2963"bit systems\n" 2956"bit systems\n"
@@ -2965,12 +2958,12 @@ msgstr ""
2965"Las descargas recursivas de directorios mayores de 4GB no están soportadas " 2958"Las descargas recursivas de directorios mayores de 4GB no están soportadas "
2966"en sistemas de 32 bits\n" 2959"en sistemas de 32 bits\n"
2967 2960
2968#: src/fs/fs_download.c:333 2961#: src/fs/fs_download.c:335
2969msgid "Directory too large for system address space\n" 2962msgid "Directory too large for system address space\n"
2970msgstr "" 2963msgstr ""
2971"Directorio demasiado grande para el espacio de direccionamiento del sistema\n" 2964"Directorio demasiado grande para el espacio de direccionamiento del sistema\n"
2972 2965
2973#: src/fs/fs_download.c:345 2966#: src/fs/fs_download.c:347
2974#, fuzzy, c-format 2967#, fuzzy, c-format
2975msgid "" 2968msgid ""
2976"Failed to access full directroy contents of `%s' for recursive download\n" 2969"Failed to access full directroy contents of `%s' for recursive download\n"
@@ -2978,19 +2971,19 @@ msgstr ""
2978"Se produjo un fallo al crear el directorio para la descarga recursiva de " 2971"Se produjo un fallo al crear el directorio para la descarga recursiva de "
2979"«%s»\n" 2972"«%s»\n"
2980 2973
2981#: src/fs/fs_download.c:532 src/fs/fs_download.c:544 2974#: src/fs/fs_download.c:534 src/fs/fs_download.c:546
2982#, c-format 2975#, c-format
2983msgid "Failed to open file `%s' for writing" 2976msgid "Failed to open file `%s' for writing"
2984msgstr "Se produjo un fallo al abrir «%s» para escritura" 2977msgstr "Se produjo un fallo al abrir «%s» para escritura"
2985 2978
2986#: src/fs/fs_download.c:954 2979#: src/fs/fs_download.c:956
2987#, c-format 2980#, c-format
2988msgid "Failed to create directory for recursive download of `%s'\n" 2981msgid "Failed to create directory for recursive download of `%s'\n"
2989msgstr "" 2982msgstr ""
2990"Se produjo un fallo al crear el directorio para la descarga recursiva de " 2983"Se produjo un fallo al crear el directorio para la descarga recursiva de "
2991"«%s»\n" 2984"«%s»\n"
2992 2985
2993#: src/fs/fs_download.c:1045 2986#: src/fs/fs_download.c:1047
2994#, c-format 2987#, c-format
2995msgid "" 2988msgid ""
2996"Internal error or bogus download URI (expected %u bytes at depth %u and " 2989"Internal error or bogus download URI (expected %u bytes at depth %u and "
@@ -2999,37 +2992,37 @@ msgstr ""
2999"Error interno o URI de descarga defectuosa (se esperaban %u bytes a " 2992"Error interno o URI de descarga defectuosa (se esperaban %u bytes a "
3000"profundidad %u y desplazamiento %llu/%llu, se obtuvieron %u bytes)" 2993"profundidad %u y desplazamiento %llu/%llu, se obtuvieron %u bytes)"
3001 2994
3002#: src/fs/fs_download.c:1073 2995#: src/fs/fs_download.c:1075
3003msgid "internal error decrypting content" 2996msgid "internal error decrypting content"
3004msgstr "error interno descifrando el contenido" 2997msgstr "error interno descifrando el contenido"
3005 2998
3006#: src/fs/fs_download.c:1097 2999#: src/fs/fs_download.c:1099
3007#, c-format 3000#, c-format
3008msgid "Download failed: could not open file `%s': %s" 3001msgid "Download failed: could not open file `%s': %s"
3009msgstr "Descarga fallida: no se pudo abrir el fichero «%s»: %s" 3002msgstr "Descarga fallida: no se pudo abrir el fichero «%s»: %s"
3010 3003
3011#: src/fs/fs_download.c:1109 3004#: src/fs/fs_download.c:1111
3012#, c-format 3005#, c-format
3013msgid "Failed to seek to offset %llu in file `%s': %s" 3006msgid "Failed to seek to offset %llu in file `%s': %s"
3014msgstr "" 3007msgstr ""
3015"Se produjo un fallo al buscar en el desplazamiento %llu del fichero «%s»: %s" 3008"Se produjo un fallo al buscar en el desplazamiento %llu del fichero «%s»: %s"
3016 3009
3017#: src/fs/fs_download.c:1118 3010#: src/fs/fs_download.c:1120
3018#, c-format 3011#, c-format
3019msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s" 3012msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s"
3020msgstr "" 3013msgstr ""
3021"Se produjo un fallo al escribir el bloque de %u bytes en el desplazamiento " 3014"Se produjo un fallo al escribir el bloque de %u bytes en el desplazamiento "
3022"%llu del fichero «%s»: %s" 3015"%llu del fichero «%s»: %s"
3023 3016
3024#: src/fs/fs_download.c:1218 3017#: src/fs/fs_download.c:1220
3025msgid "internal error decoding tree" 3018msgid "internal error decoding tree"
3026msgstr "error interno decodificando árbol" 3019msgstr "error interno decodificando árbol"
3027 3020
3028#: src/fs/fs_download.c:1883 3021#: src/fs/fs_download.c:1885
3029msgid "Invalid URI" 3022msgid "Invalid URI"
3030msgstr "URI no válida" 3023msgstr "URI no válida"
3031 3024
3032#: src/fs/fs_getopt.c:224 3025#: src/fs/fs_getopt.c:235
3033#, c-format 3026#, c-format
3034msgid "" 3027msgid ""
3035"Unknown metadata type in metadata option `%s'. Using metadata type " 3028"Unknown metadata type in metadata option `%s'. Using metadata type "
@@ -3040,304 +3033,304 @@ msgstr ""
3040 3033
3041# Miguel: "Failed to receive" también aquí está traducido como 3034# Miguel: "Failed to receive" también aquí está traducido como
3042# "no se obtuvo respuesta" por claridad. 3035# "no se obtuvo respuesta" por claridad.
3043#: src/fs/fs_list_indexed.c:150 3036#: src/fs/fs_list_indexed.c:152
3044#, fuzzy, c-format 3037#, fuzzy, c-format
3045msgid "Failed to receive response from `%s' service.\n" 3038msgid "Failed to receive response from `%s' service.\n"
3046msgstr "" 3039msgstr ""
3047"No se obtuvo respuesta del servicio de información de pares (PEERINFO)." 3040"No se obtuvo respuesta del servicio de información de pares (PEERINFO)."
3048 3041
3049#: src/fs/fs_list_indexed.c:194 3042#: src/fs/fs_list_indexed.c:196
3050#, c-format 3043#, c-format
3051msgid "Failed to not connect to `%s' service.\n" 3044msgid "Failed to not connect to `%s' service.\n"
3052msgstr "Se produjo un fallo al conectar con el servicio «%s».\n" 3045msgstr "Se produjo un fallo al conectar con el servicio «%s».\n"
3053 3046
3054#: src/fs/fs_misc.c:126 3047#: src/fs/fs_misc.c:128
3055#, c-format 3048#, c-format
3056msgid "Did not find mime type `%s' in extension list.\n" 3049msgid "Did not find mime type `%s' in extension list.\n"
3057msgstr "No se encontró el tipo MIME «%s» en la lista de extensiones.\n" 3050msgstr "No se encontró el tipo MIME «%s» en la lista de extensiones.\n"
3058 3051
3059#: src/fs/fs_namespace.c:205 3052#: src/fs/fs_namespace.c:207
3060#, c-format 3053#, c-format
3061msgid "Failed to open `%s' for writing: %s\n" 3054msgid "Failed to open `%s' for writing: %s\n"
3062msgstr "Se produjo un fallo al abrir «%s» para escritura: %s\n" 3055msgstr "Se produjo un fallo al abrir «%s» para escritura: %s\n"
3063 3056
3064#: src/fs/fs_namespace.c:230 3057#: src/fs/fs_namespace.c:232
3065#, c-format 3058#, c-format
3066msgid "Failed to write `%s': %s\n" 3059msgid "Failed to write `%s': %s\n"
3067msgstr "Se produjo un fallo al escribir «%s»: %s\n" 3060msgstr "Se produjo un fallo al escribir «%s»: %s\n"
3068 3061
3069#: src/fs/fs_namespace.c:322 3062#: src/fs/fs_namespace.c:324
3070#, fuzzy, c-format 3063#, fuzzy, c-format
3071msgid "Failed to read `%s': %s\n" 3064msgid "Failed to read `%s': %s\n"
3072msgstr "Se produjo un fallo al escribir «%s»: %s\n" 3065msgstr "Se produjo un fallo al escribir «%s»: %s\n"
3073 3066
3074#: src/fs/fs_namespace.c:468 3067#: src/fs/fs_namespace.c:470
3075msgid "Failed to connect to datastore." 3068msgid "Failed to connect to datastore."
3076msgstr "Se produjo un fallo al conectar con el almacén de datos." 3069msgstr "Se produjo un fallo al conectar con el almacén de datos."
3077 3070
3078#: src/fs/fs_publish.c:125 src/fs/fs_publish.c:436 3071#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:438
3079#, c-format 3072#, c-format
3080msgid "Publishing failed: %s" 3073msgid "Publishing failed: %s"
3081msgstr "Publicación fallida: %s" 3074msgstr "Publicación fallida: %s"
3082 3075
3083#: src/fs/fs_publish.c:722 src/fs/fs_publish.c:776 src/fs/fs_publish.c:821 3076#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
3084#: src/fs/fs_publish.c:842 src/fs/fs_publish.c:872 src/fs/fs_publish.c:1138 3077#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
3085#, c-format 3078#, c-format
3086msgid "Can not index file `%s': %s. Will try to insert instead.\n" 3079msgid "Can not index file `%s': %s. Will try to insert instead.\n"
3087msgstr "No se pudo indexar el fichero «%s»: %s. Se intentará insertar.\n" 3080msgstr "No se pudo indexar el fichero «%s»: %s. Se intentará insertar.\n"
3088 3081
3089#: src/fs/fs_publish.c:778 3082#: src/fs/fs_publish.c:780
3090#, fuzzy 3083#, fuzzy
3091msgid "error on index-start request to `fs' service" 3084msgid "error on index-start request to `fs' service"
3092msgstr "" 3085msgstr ""
3093"expiración del plazo en la petición de inicio de indexado (index-start) al " 3086"expiración del plazo en la petición de inicio de indexado (index-start) al "
3094"servicio «fs»" 3087"servicio «fs»"
3095 3088
3096#: src/fs/fs_publish.c:823 3089#: src/fs/fs_publish.c:825
3097msgid "failed to compute hash" 3090msgid "failed to compute hash"
3098msgstr "se produjo un fallo al calcular el hash" 3091msgstr "se produjo un fallo al calcular el hash"
3099 3092
3100#: src/fs/fs_publish.c:843 3093#: src/fs/fs_publish.c:845
3101msgid "filename too long" 3094msgid "filename too long"
3102msgstr "nombre de fichero demasiado largo" 3095msgstr "nombre de fichero demasiado largo"
3103 3096
3104#: src/fs/fs_publish.c:874 3097#: src/fs/fs_publish.c:876
3105msgid "could not connect to `fs' service" 3098msgid "could not connect to `fs' service"
3106msgstr "no se pudo conectar con el servicio «fs»" 3099msgstr "no se pudo conectar con el servicio «fs»"
3107 3100
3108#: src/fs/fs_publish.c:900 3101#: src/fs/fs_publish.c:902
3109#, c-format 3102#, c-format
3110msgid "Failed to get file identifiers for `%s'\n" 3103msgid "Failed to get file identifiers for `%s'\n"
3111msgstr "" 3104msgstr ""
3112"Se produjo un fallo al obtener los identificadores de fichero para «%s»\n" 3105"Se produjo un fallo al obtener los identificadores de fichero para «%s»\n"
3113 3106
3114#: src/fs/fs_publish.c:989 src/fs/fs_publish.c:1025 3107#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
3115msgid "Can not create LOC URI. Will continue with CHK instead.\n" 3108msgid "Can not create LOC URI. Will continue with CHK instead.\n"
3116msgstr "" 3109msgstr ""
3117 3110
3118#: src/fs/fs_publish.c:1092 3111#: src/fs/fs_publish.c:1094
3119#, c-format 3112#, c-format
3120msgid "Recursive upload failed at `%s': %s" 3113msgid "Recursive upload failed at `%s': %s"
3121msgstr "La subida recursiva falló en «%s»: %s" 3114msgstr "La subida recursiva falló en «%s»: %s"
3122 3115
3123#: src/fs/fs_publish.c:1100 3116#: src/fs/fs_publish.c:1102
3124#, c-format 3117#, c-format
3125msgid "Recursive upload failed: %s" 3118msgid "Recursive upload failed: %s"
3126msgstr "Subida recursiva fallida: %s" 3119msgstr "Subida recursiva fallida: %s"
3127 3120
3128#: src/fs/fs_publish.c:1140 3121#: src/fs/fs_publish.c:1142
3129msgid "needs to be an actual file" 3122msgid "needs to be an actual file"
3130msgstr "tiene que ser un fichero de verdad" 3123msgstr "tiene que ser un fichero de verdad"
3131 3124
3132#: src/fs/fs_publish.c:1379 3125#: src/fs/fs_publish.c:1381
3133#, fuzzy, c-format 3126#, fuzzy, c-format
3134msgid "Datastore failure: %s" 3127msgid "Datastore failure: %s"
3135msgstr "# «PUT» en el almacén de datos fallidos" 3128msgstr "# «PUT» en el almacén de datos fallidos"
3136 3129
3137#: src/fs/fs_publish.c:1470 3130#: src/fs/fs_publish.c:1472
3138#, c-format 3131#, c-format
3139msgid "Reserving space for %u entries and %llu bytes for publication\n" 3132msgid "Reserving space for %u entries and %llu bytes for publication\n"
3140msgstr "Reservando espacio para %u entradas y %llu bytes para publicación\n" 3133msgstr "Reservando espacio para %u entradas y %llu bytes para publicación\n"
3141 3134
3142#: src/fs/fs_publish_ksk.c:218 3135#: src/fs/fs_publish_ksk.c:220
3143msgid "Could not connect to datastore." 3136msgid "Could not connect to datastore."
3144msgstr "No se pudo conectar con el almacén de datos." 3137msgstr "No se pudo conectar con el almacén de datos."
3145 3138
3146#: src/fs/fs_publish_ublock.c:239 3139#: src/fs/fs_publish_ublock.c:241
3147msgid "Internal error." 3140msgid "Internal error."
3148msgstr "Error interno." 3141msgstr "Error interno."
3149 3142
3150#: src/fs/fs_search.c:820 src/fs/fs_search.c:890 3143#: src/fs/fs_search.c:822 src/fs/fs_search.c:892
3151#, fuzzy, c-format 3144#, fuzzy, c-format
3152msgid "Failed to parse URI `%s': %s\n" 3145msgid "Failed to parse URI `%s': %s\n"
3153msgstr "Se produjo un fallo al procesar la URI: %s\n" 3146msgstr "Se produjo un fallo al procesar la URI: %s\n"
3154 3147
3155#: src/fs/fs_search.c:977 3148#: src/fs/fs_search.c:979
3156#, c-format 3149#, c-format
3157msgid "Got result with unknown block type `%d', ignoring" 3150msgid "Got result with unknown block type `%d', ignoring"
3158msgstr "" 3151msgstr ""
3159"Se obtuvo un resultado con un tipo desconocido de bloque «%d», ignorándolo" 3152"Se obtuvo un resultado con un tipo desconocido de bloque «%d», ignorándolo"
3160 3153
3161#: src/fs/fs_unindex.c:61 3154#: src/fs/fs_unindex.c:63
3162msgid "Failed to find given position in file" 3155msgid "Failed to find given position in file"
3163msgstr "Se produjo un fallo al buscar la posición dada en el fichero" 3156msgstr "Se produjo un fallo al buscar la posición dada en el fichero"
3164 3157
3165#: src/fs/fs_unindex.c:66 3158#: src/fs/fs_unindex.c:68
3166msgid "Failed to read file" 3159msgid "Failed to read file"
3167msgstr "No se pudo leer el fichero" 3160msgstr "No se pudo leer el fichero"
3168 3161
3169# Miguel: ¿Conectar y conexión? 3162# Miguel: ¿Conectar y conexión?
3170#: src/fs/fs_unindex.c:273 3163#: src/fs/fs_unindex.c:275
3171#, fuzzy 3164#, fuzzy
3172msgid "Error communicating with `fs' service." 3165msgid "Error communicating with `fs' service."
3173msgstr "Error al comunicar con el servicio ARM.\n" 3166msgstr "Error al comunicar con el servicio ARM.\n"
3174 3167
3175#: src/fs/fs_unindex.c:324 3168#: src/fs/fs_unindex.c:326
3176msgid "Failed to connect to FS service for unindexing." 3169msgid "Failed to connect to FS service for unindexing."
3177msgstr "" 3170msgstr ""
3178"Se produjo un fallo al conectar con el servicio «FS» para el desindexado." 3171"Se produjo un fallo al conectar con el servicio «FS» para el desindexado."
3179 3172
3180#: src/fs/fs_unindex.c:374 src/fs/fs_unindex.c:386 3173#: src/fs/fs_unindex.c:376 src/fs/fs_unindex.c:388
3181msgid "Failed to get KSKs from directory scan." 3174msgid "Failed to get KSKs from directory scan."
3182msgstr "Se produjo un fallo al obtener KSKs de la búsqueda de directorios." 3175msgstr "Se produjo un fallo al obtener KSKs de la búsqueda de directorios."
3183 3176
3184#: src/fs/fs_unindex.c:382 3177#: src/fs/fs_unindex.c:384
3185#, c-format 3178#, c-format
3186msgid "Internal error scanning `%s'.\n" 3179msgid "Internal error scanning `%s'.\n"
3187msgstr "Error interno escaneando «%s».\n" 3180msgstr "Error interno escaneando «%s».\n"
3188 3181
3189#: src/fs/fs_unindex.c:441 3182#: src/fs/fs_unindex.c:443
3190#, fuzzy, c-format 3183#, fuzzy, c-format
3191msgid "Failed to remove UBlock: %s\n" 3184msgid "Failed to remove UBlock: %s\n"
3192msgstr "Se produjo un fallo al eliminar el KBlock: %s\n" 3185msgstr "Se produjo un fallo al eliminar el KBlock: %s\n"
3193 3186
3194#: src/fs/fs_unindex.c:586 src/fs/fs_unindex.c:650 3187#: src/fs/fs_unindex.c:588 src/fs/fs_unindex.c:652
3195msgid "Failed to connect to `datastore' service." 3188msgid "Failed to connect to `datastore' service."
3196msgstr "" 3189msgstr ""
3197"Se produjo un fallo al conectar con el servicio de almacenamiento de datos " 3190"Se produjo un fallo al conectar con el servicio de almacenamiento de datos "
3198"(datastore)." 3191"(datastore)."
3199 3192
3200#: src/fs/fs_unindex.c:663 3193#: src/fs/fs_unindex.c:665
3201msgid "Failed to open file for unindexing." 3194msgid "Failed to open file for unindexing."
3202msgstr "Se produjo un fallo al abrir el fichero para desindexado." 3195msgstr "Se produjo un fallo al abrir el fichero para desindexado."
3203 3196
3204#: src/fs/fs_unindex.c:702 3197#: src/fs/fs_unindex.c:704
3205msgid "Failed to compute hash of file." 3198msgid "Failed to compute hash of file."
3206msgstr "Se produjo un fallo al calcular el hash del fichero." 3199msgstr "Se produjo un fallo al calcular el hash del fichero."
3207 3200
3208# Cadena erronea, corregida en SVN. 3201# Cadena erronea, corregida en SVN.
3209#: src/fs/fs_uri.c:232 3202#: src/fs/fs_uri.c:234
3210#, fuzzy, no-c-format 3203#, fuzzy, no-c-format
3211msgid "Malformed KSK URI (`%' must be followed by HEX number)" 3204msgid "Malformed KSK URI (`%' must be followed by HEX number)"
3212msgstr "'%' debe ser seguido por un número hexadecimal" 3205msgstr "'%' debe ser seguido por un número hexadecimal"
3213 3206
3214#: src/fs/fs_uri.c:291 3207#: src/fs/fs_uri.c:293
3215msgid "Malformed KSK URI (must not begin or end with `+')" 3208msgid "Malformed KSK URI (must not begin or end with `+')"
3216msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)" 3209msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)"
3217 3210
3218#: src/fs/fs_uri.c:309 3211#: src/fs/fs_uri.c:311
3219#, fuzzy 3212#, fuzzy
3220msgid "Malformed KSK URI (`++' not allowed)" 3213msgid "Malformed KSK URI (`++' not allowed)"
3221msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)" 3214msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)"
3222 3215
3223#: src/fs/fs_uri.c:316 3216#: src/fs/fs_uri.c:318
3224#, fuzzy 3217#, fuzzy
3225msgid "Malformed KSK URI (quotes not balanced)" 3218msgid "Malformed KSK URI (quotes not balanced)"
3226msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)" 3219msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)"
3227 3220
3228#: src/fs/fs_uri.c:386 3221#: src/fs/fs_uri.c:388
3229#, fuzzy 3222#, fuzzy
3230msgid "Malformed SKS URI (wrong syntax)" 3223msgid "Malformed SKS URI (wrong syntax)"
3231msgstr "URI SKS mal formada" 3224msgstr "URI SKS mal formada"
3232 3225
3233#: src/fs/fs_uri.c:427 3226#: src/fs/fs_uri.c:429
3234#, fuzzy 3227#, fuzzy
3235msgid "Malformed CHK URI (wrong syntax)" 3228msgid "Malformed CHK URI (wrong syntax)"
3236msgstr "URI CHK mal formada" 3229msgstr "URI CHK mal formada"
3237 3230
3238#: src/fs/fs_uri.c:442 3231#: src/fs/fs_uri.c:444
3239msgid "Malformed CHK URI (failed to decode CHK)" 3232msgid "Malformed CHK URI (failed to decode CHK)"
3240msgstr "" 3233msgstr ""
3241 3234
3242#: src/fs/fs_uri.c:521 3235#: src/fs/fs_uri.c:523
3243#, fuzzy 3236#, fuzzy
3244msgid "LOC URI malformed (wrong syntax)" 3237msgid "LOC URI malformed (wrong syntax)"
3245msgstr "URI SKS mal formada" 3238msgstr "URI SKS mal formada"
3246 3239
3247#: src/fs/fs_uri.c:536 3240#: src/fs/fs_uri.c:538
3248#, fuzzy 3241#, fuzzy
3249msgid "LOC URI malformed (no CHK)" 3242msgid "LOC URI malformed (no CHK)"
3250msgstr "URI SKS mal formada" 3243msgstr "URI SKS mal formada"
3251 3244
3252#: src/fs/fs_uri.c:546 3245#: src/fs/fs_uri.c:548
3253#, fuzzy 3246#, fuzzy
3254msgid "LOC URI malformed (missing LOC)" 3247msgid "LOC URI malformed (missing LOC)"
3255msgstr "URI SKS mal formada" 3248msgstr "URI SKS mal formada"
3256 3249
3257#: src/fs/fs_uri.c:554 3250#: src/fs/fs_uri.c:556
3258#, fuzzy 3251#, fuzzy
3259msgid "LOC URI malformed (wrong syntax for public key)" 3252msgid "LOC URI malformed (wrong syntax for public key)"
3260msgstr "URI SKS mal formada (no se pudo decodificar la clave pública)" 3253msgstr "URI SKS mal formada (no se pudo decodificar la clave pública)"
3261 3254
3262#: src/fs/fs_uri.c:562 3255#: src/fs/fs_uri.c:564
3263#, fuzzy 3256#, fuzzy
3264msgid "LOC URI malformed (could not decode public key)" 3257msgid "LOC URI malformed (could not decode public key)"
3265msgstr "URI SKS mal formada (no se pudo decodificar la clave pública)" 3258msgstr "URI SKS mal formada (no se pudo decodificar la clave pública)"
3266 3259
3267#: src/fs/fs_uri.c:568 3260#: src/fs/fs_uri.c:570
3268#, fuzzy 3261#, fuzzy
3269msgid "LOC URI malformed (could not find signature)" 3262msgid "LOC URI malformed (could not find signature)"
3270msgstr "URI SKS mal formada (no se pudo encontrar la firma)" 3263msgstr "URI SKS mal formada (no se pudo encontrar la firma)"
3271 3264
3272#: src/fs/fs_uri.c:574 3265#: src/fs/fs_uri.c:576
3273#, fuzzy 3266#, fuzzy
3274msgid "LOC URI malformed (wrong syntax for signature)" 3267msgid "LOC URI malformed (wrong syntax for signature)"
3275msgstr "URI SKS mal formada (no se pudo encontrar la firma)" 3268msgstr "URI SKS mal formada (no se pudo encontrar la firma)"
3276 3269
3277#: src/fs/fs_uri.c:583 3270#: src/fs/fs_uri.c:585
3278#, fuzzy 3271#, fuzzy
3279msgid "LOC URI malformed (could not decode signature)" 3272msgid "LOC URI malformed (could not decode signature)"
3280msgstr "URI SKS mal formada (no se pudo decodificar la firma)" 3273msgstr "URI SKS mal formada (no se pudo decodificar la firma)"
3281 3274
3282#: src/fs/fs_uri.c:589 3275#: src/fs/fs_uri.c:591
3283#, fuzzy 3276#, fuzzy
3284msgid "LOC URI malformed (wrong syntax for expiration time)" 3277msgid "LOC URI malformed (wrong syntax for expiration time)"
3285msgstr "URI SKS mal formada (no se encuentra el tiempo de expiración)" 3278msgstr "URI SKS mal formada (no se encuentra el tiempo de expiración)"
3286 3279
3287#: src/fs/fs_uri.c:595 3280#: src/fs/fs_uri.c:597
3288#, fuzzy 3281#, fuzzy
3289msgid "LOC URI malformed (could not parse expiration time)" 3282msgid "LOC URI malformed (could not parse expiration time)"
3290msgstr "URI SKS mal formada (no se encuentra el tiempo de expiración)" 3283msgstr "URI SKS mal formada (no se encuentra el tiempo de expiración)"
3291 3284
3292#: src/fs/fs_uri.c:607 3285#: src/fs/fs_uri.c:609
3293#, fuzzy 3286#, fuzzy
3294msgid "LOC URI malformed (signature failed validation)" 3287msgid "LOC URI malformed (signature failed validation)"
3295msgstr "URI SKS mal formada (se produjo un fallo al validar la firma)" 3288msgstr "URI SKS mal formada (se produjo un fallo al validar la firma)"
3296 3289
3297#: src/fs/fs_uri.c:641 3290#: src/fs/fs_uri.c:643
3298#, fuzzy 3291#, fuzzy
3299msgid "invalid argument" 3292msgid "invalid argument"
3300msgstr "Parámetro no válido «%s»\n" 3293msgstr "Parámetro no válido «%s»\n"
3301 3294
3302#: src/fs/fs_uri.c:653 3295#: src/fs/fs_uri.c:655
3303msgid "Unrecognized URI type" 3296msgid "Unrecognized URI type"
3304msgstr "Tipo de URI no reconocido" 3297msgstr "Tipo de URI no reconocido"
3305 3298
3306#: src/fs/fs_uri.c:1057 src/fs/fs_uri.c:1084 3299#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
3307msgid "No keywords specified!\n" 3300msgid "No keywords specified!\n"
3308msgstr "¡Ninguna palabra clave especificada!\n" 3301msgstr "¡Ninguna palabra clave especificada!\n"
3309 3302
3310#: src/fs/fs_uri.c:1090 3303#: src/fs/fs_uri.c:1092
3311msgid "Number of double-quotes not balanced!\n" 3304msgid "Number of double-quotes not balanced!\n"
3312msgstr "¡Número de comillas dobles no balanceado!\n" 3305msgstr "¡Número de comillas dobles no balanceado!\n"
3313 3306
3314#: src/fs/gnunet-auto-share.c:230 3307#: src/fs/gnunet-auto-share.c:232
3315#, c-format 3308#, c-format
3316msgid "Failed to load state: %s\n" 3309msgid "Failed to load state: %s\n"
3317msgstr "Se produjo un fallo al cargar el estado: %s\n" 3310msgstr "Se produjo un fallo al cargar el estado: %s\n"
3318 3311
3319#: src/fs/gnunet-auto-share.c:283 src/fs/gnunet-auto-share.c:293 3312#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
3320#: src/fs/gnunet-auto-share.c:303 3313#: src/fs/gnunet-auto-share.c:305
3321#, c-format 3314#, c-format
3322msgid "Failed to save state to file %s\n" 3315msgid "Failed to save state to file %s\n"
3323msgstr "Se produjo un fallo al guardar el estado en el fichero %s\n" 3316msgstr "Se produjo un fallo al guardar el estado en el fichero %s\n"
3324 3317
3325#: src/fs/gnunet-auto-share.c:405 3318#: src/fs/gnunet-auto-share.c:407
3326#, c-format 3319#, c-format
3327msgid "Publication of `%s' done\n" 3320msgid "Publication of `%s' done\n"
3328msgstr "Publicación de «%s» finalizada\n" 3321msgstr "Publicación de «%s» finalizada\n"
3329 3322
3330#: src/fs/gnunet-auto-share.c:492 3323#: src/fs/gnunet-auto-share.c:494
3331#, c-format 3324#, c-format
3332msgid "Publishing `%s'\n" 3325msgid "Publishing `%s'\n"
3333msgstr "Publicando «%s»\n" 3326msgstr "Publicando «%s»\n"
3334 3327
3335#: src/fs/gnunet-auto-share.c:502 3328#: src/fs/gnunet-auto-share.c:504
3336#, c-format 3329#, c-format
3337msgid "Failed to run `%s'\n" 3330msgid "Failed to run `%s'\n"
3338msgstr "Se produjo un fallo al ejecutar «%s»\n" 3331msgstr "Se produjo un fallo al ejecutar «%s»\n"
3339 3332
3340#: src/fs/gnunet-auto-share.c:711 3333#: src/fs/gnunet-auto-share.c:713
3341#, c-format 3334#, c-format
3342msgid "" 3335msgid ""
3343"You must specify one and only one directory name for automatic publication.\n" 3336"You must specify one and only one directory name for automatic publication.\n"
@@ -3345,78 +3338,78 @@ msgstr ""
3345"Debes especificar uno y solo un nombre de directorio para publicación " 3338"Debes especificar uno y solo un nombre de directorio para publicación "
3346"automática.\n" 3339"automática.\n"
3347 3340
3348#: src/fs/gnunet-auto-share.c:765 src/fs/gnunet-publish.c:898 3341#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
3349msgid "set the desired LEVEL of sender-anonymity" 3342msgid "set the desired LEVEL of sender-anonymity"
3350msgstr "establece el nivel LEVEL deseado de anonimato del emisor" 3343msgstr "establece el nivel LEVEL deseado de anonimato del emisor"
3351 3344
3352#: src/fs/gnunet-auto-share.c:770 src/fs/gnunet-publish.c:902 3345#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
3353msgid "disable adding the creation time to the metadata of the uploaded file" 3346msgid "disable adding the creation time to the metadata of the uploaded file"
3354msgstr "" 3347msgstr ""
3355"deshabilitar añadir tiempo de creación a los metadatos del fichero subido" 3348"deshabilitar añadir tiempo de creación a los metadatos del fichero subido"
3356 3349
3357#: src/fs/gnunet-auto-share.c:775 src/fs/gnunet-publish.c:907 3350#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
3358msgid "do not use libextractor to add keywords or metadata" 3351msgid "do not use libextractor to add keywords or metadata"
3359msgstr "no usar libextractor para añadir palabras clave o metadatos" 3352msgstr "no usar libextractor para añadir palabras clave o metadatos"
3360 3353
3361#: src/fs/gnunet-auto-share.c:781 src/fs/gnunet-publish.c:942 3354#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
3362msgid "specify the priority of the content" 3355msgid "specify the priority of the content"
3363msgstr "especificar la prioridad del contenido" 3356msgstr "especificar la prioridad del contenido"
3364 3357
3365#: src/fs/gnunet-auto-share.c:787 src/fs/gnunet-publish.c:954 3358#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
3366msgid "set the desired replication LEVEL" 3359msgid "set the desired replication LEVEL"
3367msgstr "establece el nivel LEVEL deseado de replicación" 3360msgstr "establece el nivel LEVEL deseado de replicación"
3368 3361
3369#: src/fs/gnunet-auto-share.c:811 3362#: src/fs/gnunet-auto-share.c:813
3370msgid "Automatically publish files from a directory on GNUnet" 3363msgid "Automatically publish files from a directory on GNUnet"
3371msgstr "Publicar automáticamente ficheros de un directorio en GNUnet" 3364msgstr "Publicar automáticamente ficheros de un directorio en GNUnet"
3372 3365
3373#: src/fs/gnunet-daemon-fsprofiler.c:646 3366#: src/fs/gnunet-daemon-fsprofiler.c:648
3374msgid "Daemon to use file-sharing to measure its performance." 3367msgid "Daemon to use file-sharing to measure its performance."
3375msgstr "Demonio para medir el rendimiento de usar compartición de archivos." 3368msgstr "Demonio para medir el rendimiento de usar compartición de archivos."
3376 3369
3377#: src/fs/gnunet-directory.c:51 3370#: src/fs/gnunet-directory.c:53
3378#, c-format 3371#, c-format
3379msgid "\t<original file embedded in %u bytes of meta data>\n" 3372msgid "\t<original file embedded in %u bytes of meta data>\n"
3380msgstr "\t<fichero original embebido en %u bytes de metadatos>\n" 3373msgstr "\t<fichero original embebido en %u bytes de metadatos>\n"
3381 3374
3382#: src/fs/gnunet-directory.c:103 3375#: src/fs/gnunet-directory.c:105
3383#, c-format 3376#, c-format
3384msgid "Directory `%s' meta data:\n" 3377msgid "Directory `%s' meta data:\n"
3385msgstr "Metadatos del directorio «%s»:\n" 3378msgstr "Metadatos del directorio «%s»:\n"
3386 3379
3387#: src/fs/gnunet-directory.c:106 3380#: src/fs/gnunet-directory.c:108
3388#, c-format 3381#, c-format
3389msgid "Directory `%s' contents:\n" 3382msgid "Directory `%s' contents:\n"
3390msgstr "Contenidos del directorio «%s»:\n" 3383msgstr "Contenidos del directorio «%s»:\n"
3391 3384
3392#: src/fs/gnunet-directory.c:141 3385#: src/fs/gnunet-directory.c:143
3393msgid "You must specify a filename to inspect.\n" 3386msgid "You must specify a filename to inspect.\n"
3394msgstr "Debes especificar un fichero a inspeccionar.\n" 3387msgstr "Debes especificar un fichero a inspeccionar.\n"
3395 3388
3396#: src/fs/gnunet-directory.c:154 3389#: src/fs/gnunet-directory.c:156
3397#, c-format 3390#, c-format
3398msgid "Failed to read directory `%s'\n" 3391msgid "Failed to read directory `%s'\n"
3399msgstr "Se produjo un fallo al leer el directorio «%s»\n" 3392msgstr "Se produjo un fallo al leer el directorio «%s»\n"
3400 3393
3401#: src/fs/gnunet-directory.c:163 3394#: src/fs/gnunet-directory.c:165
3402#, c-format 3395#, c-format
3403msgid "`%s' is not a GNUnet directory\n" 3396msgid "`%s' is not a GNUnet directory\n"
3404msgstr "«%s» no es un directorio GNUnet\n" 3397msgstr "«%s» no es un directorio GNUnet\n"
3405 3398
3406#: src/fs/gnunet-directory.c:192 3399#: src/fs/gnunet-directory.c:194
3407msgid "Display contents of a GNUnet directory" 3400msgid "Display contents of a GNUnet directory"
3408msgstr "Muestra los contenidos de un directorio GNUnet" 3401msgstr "Muestra los contenidos de un directorio GNUnet"
3409 3402
3410#: src/fs/gnunet-download.c:137 3403#: src/fs/gnunet-download.c:139
3411#, c-format 3404#, c-format
3412msgid "Starting download `%s'.\n" 3405msgid "Starting download `%s'.\n"
3413msgstr "Iniciando descarga «%s».\n" 3406msgstr "Iniciando descarga «%s».\n"
3414 3407
3415#: src/fs/gnunet-download.c:147 3408#: src/fs/gnunet-download.c:149
3416msgid "<unknown time>" 3409msgid "<unknown time>"
3417msgstr "<tiempo desconocido>" 3410msgstr "<tiempo desconocido>"
3418 3411
3419#: src/fs/gnunet-download.c:156 3412#: src/fs/gnunet-download.c:158
3420#, c-format 3413#, c-format
3421msgid "" 3414msgid ""
3422"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to " 3415"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to "
@@ -3425,74 +3418,74 @@ msgstr ""
3425"Descargando «%s» en %llu/%llu (%s restantes, %s/s). El bloque tardó %s en " 3418"Descargando «%s» en %llu/%llu (%s restantes, %s/s). El bloque tardó %s en "
3426"descargarse\n" 3419"descargarse\n"
3427 3420
3428#: src/fs/gnunet-download.c:182 3421#: src/fs/gnunet-download.c:184
3429#, c-format 3422#, c-format
3430msgid "Error downloading: %s.\n" 3423msgid "Error downloading: %s.\n"
3431msgstr "Error descargando: %s.\n" 3424msgstr "Error descargando: %s.\n"
3432 3425
3433#: src/fs/gnunet-download.c:199 3426#: src/fs/gnunet-download.c:201
3434#, c-format 3427#, c-format
3435msgid "Downloading `%s' done (%s/s).\n" 3428msgid "Downloading `%s' done (%s/s).\n"
3436msgstr "Finalizada descarga «%s» (%s/s).\n" 3429msgstr "Finalizada descarga «%s» (%s/s).\n"
3437 3430
3438#: src/fs/gnunet-download.c:214 src/fs/gnunet-publish.c:293 3431#: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
3439#: src/fs/gnunet-search.c:210 src/fs/gnunet-unindex.c:105 3432#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
3440#, c-format 3433#, c-format
3441msgid "Unexpected status: %d\n" 3434msgid "Unexpected status: %d\n"
3442msgstr "Estado inesperado: %d\n" 3435msgstr "Estado inesperado: %d\n"
3443 3436
3444#: src/fs/gnunet-download.c:244 3437#: src/fs/gnunet-download.c:246
3445msgid "You need to specify a URI argument.\n" 3438msgid "You need to specify a URI argument.\n"
3446msgstr "Tiene que especificar una URI como parámetro.\n" 3439msgstr "Tiene que especificar una URI como parámetro.\n"
3447 3440
3448#: src/fs/gnunet-download.c:251 src/fs/gnunet-publish.c:724 3441#: src/fs/gnunet-download.c:253 src/fs/gnunet-publish.c:727
3449#, c-format 3442#, c-format
3450msgid "Failed to parse URI: %s\n" 3443msgid "Failed to parse URI: %s\n"
3451msgstr "Se produjo un fallo al procesar la URI: %s\n" 3444msgstr "Se produjo un fallo al procesar la URI: %s\n"
3452 3445
3453#: src/fs/gnunet-download.c:262 3446#: src/fs/gnunet-download.c:264
3454msgid "Only CHK or LOC URIs supported.\n" 3447msgid "Only CHK or LOC URIs supported.\n"
3455msgstr "Sólo URI «CHK» o «LOC» soportadas.\n" 3448msgstr "Sólo URI «CHK» o «LOC» soportadas.\n"
3456 3449
3457#: src/fs/gnunet-download.c:271 3450#: src/fs/gnunet-download.c:273
3458msgid "Target filename must be specified.\n" 3451msgid "Target filename must be specified.\n"
3459msgstr "El nombre de fichero de destino debe ser especificado.\n" 3452msgstr "El nombre de fichero de destino debe ser especificado.\n"
3460 3453
3461#: src/fs/gnunet-download.c:289 src/fs/gnunet-publish.c:868 3454#: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
3462#: src/fs/gnunet-search.c:268 src/fs/gnunet-unindex.c:137 3455#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
3463#, c-format 3456#, c-format
3464msgid "Could not initialize `%s' subsystem.\n" 3457msgid "Could not initialize `%s' subsystem.\n"
3465msgstr "No se pudo inicializar el subsistema «%s».\n" 3458msgstr "No se pudo inicializar el subsistema «%s».\n"
3466 3459
3467#: src/fs/gnunet-download.c:337 src/fs/gnunet-search.c:311 3460#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
3468msgid "set the desired LEVEL of receiver-anonymity" 3461msgid "set the desired LEVEL of receiver-anonymity"
3469msgstr "establece el nivel LEVEL deseado de anonimato del receptor" 3462msgstr "establece el nivel LEVEL deseado de anonimato del receptor"
3470 3463
3471#: src/fs/gnunet-download.c:342 3464#: src/fs/gnunet-download.c:344
3472msgid "delete incomplete downloads (when aborted with CTRL-C)" 3465msgid "delete incomplete downloads (when aborted with CTRL-C)"
3473msgstr "borra descargas incompletas (cuando fueron abortadas con CTRL-C=" 3466msgstr "borra descargas incompletas (cuando fueron abortadas con CTRL-C="
3474 3467
3475#: src/fs/gnunet-download.c:347 src/fs/gnunet-search.c:317 3468#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
3476msgid "only search the local peer (no P2P network search)" 3469msgid "only search the local peer (no P2P network search)"
3477msgstr "únicamente buscar en el par local (no buscar en la red P2P)" 3470msgstr "únicamente buscar en el par local (no buscar en la red P2P)"
3478 3471
3479#: src/fs/gnunet-download.c:352 3472#: src/fs/gnunet-download.c:354
3480msgid "write the file to FILENAME" 3473msgid "write the file to FILENAME"
3481msgstr "escribe los datos al nombre del fichero proporcionado (FILENAME)" 3474msgstr "escribe los datos al nombre del fichero proporcionado (FILENAME)"
3482 3475
3483#: src/fs/gnunet-download.c:357 3476#: src/fs/gnunet-download.c:359
3484msgid "set the maximum number of parallel downloads that is allowed" 3477msgid "set the maximum number of parallel downloads that is allowed"
3485msgstr "establece el número máximo de descargas paralelas permitido" 3478msgstr "establece el número máximo de descargas paralelas permitido"
3486 3479
3487#: src/fs/gnunet-download.c:362 3480#: src/fs/gnunet-download.c:364
3488msgid "set the maximum number of parallel requests for blocks that is allowed" 3481msgid "set the maximum number of parallel requests for blocks that is allowed"
3489msgstr "establece el número máximo de peticiones de bloque paralelas permitido" 3482msgstr "establece el número máximo de peticiones de bloque paralelas permitido"
3490 3483
3491#: src/fs/gnunet-download.c:366 3484#: src/fs/gnunet-download.c:368
3492msgid "download a GNUnet directory recursively" 3485msgid "download a GNUnet directory recursively"
3493msgstr "descarga un directorio de GNUnet recursivamente" 3486msgstr "descarga un directorio de GNUnet recursivamente"
3494 3487
3495#: src/fs/gnunet-download.c:384 3488#: src/fs/gnunet-download.c:386
3496msgid "" 3489msgid ""
3497"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/" 3490"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
3498"chk/...)" 3491"chk/...)"
@@ -3500,135 +3493,135 @@ msgstr ""
3500"Descargar ficheros de GNUnet usando una URI GNUnet CHK o LOC (gnunet://fs/" 3493"Descargar ficheros de GNUnet usando una URI GNUnet CHK o LOC (gnunet://fs/"
3501"chk/...)" 3494"chk/...)"
3502 3495
3503#: src/fs/gnunet-fs.c:117 3496#: src/fs/gnunet-fs.c:119
3504msgid "print a list of all indexed files" 3497msgid "print a list of all indexed files"
3505msgstr "imprimir una lista de todos los ficheros indexados" 3498msgstr "imprimir una lista de todos los ficheros indexados"
3506 3499
3507#: src/fs/gnunet-fs.c:128 3500#: src/fs/gnunet-fs.c:130
3508msgid "Special file-sharing operations" 3501msgid "Special file-sharing operations"
3509msgstr "Operaciones especiales de compartición de ficheros" 3502msgstr "Operaciones especiales de compartición de ficheros"
3510 3503
3511#: src/fs/gnunet-fs-profiler.c:209 3504#: src/fs/gnunet-fs-profiler.c:211
3512msgid "run the experiment with COUNT peers" 3505msgid "run the experiment with COUNT peers"
3513msgstr "ejecuta el experimento con «COUNT» pares" 3506msgstr "ejecuta el experimento con «COUNT» pares"
3514 3507
3515#: src/fs/gnunet-fs-profiler.c:215 3508#: src/fs/gnunet-fs-profiler.c:217
3516msgid "specifies name of a file with the HOSTS the testbed should use" 3509msgid "specifies name of a file with the HOSTS the testbed should use"
3517msgstr "" 3510msgstr ""
3518"especifica el nombre de un fichero con las máquinas (HOSTS) que la batería " 3511"especifica el nombre de un fichero con las máquinas (HOSTS) que la batería "
3519"de pruebas debería usar" 3512"de pruebas debería usar"
3520 3513
3521#: src/fs/gnunet-fs-profiler.c:221 3514#: src/fs/gnunet-fs-profiler.c:223
3522msgid "automatically terminate experiment after DELAY" 3515msgid "automatically terminate experiment after DELAY"
3523msgstr "termina el experimento automáticamente despues de «DELAY»" 3516msgstr "termina el experimento automáticamente despues de «DELAY»"
3524 3517
3525#: src/fs/gnunet-fs-profiler.c:231 3518#: src/fs/gnunet-fs-profiler.c:233
3526msgid "run a testbed to measure file-sharing performance" 3519msgid "run a testbed to measure file-sharing performance"
3527msgstr "" 3520msgstr ""
3528"ejecuta una batería de pruebas para medir el rendimiento de la compartición " 3521"ejecuta una batería de pruebas para medir el rendimiento de la compartición "
3529"de ficheros" 3522"de ficheros"
3530 3523
3531#: src/fs/gnunet-publish.c:217 src/fs/gnunet-publish.c:229 3524#: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
3532#, c-format 3525#, c-format
3533msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" 3526msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
3534msgstr "Publicando «%s» en %llu/%llu (%s restantes)\n" 3527msgstr "Publicando «%s» en %llu/%llu (%s restantes)\n"
3535 3528
3536#: src/fs/gnunet-publish.c:237 3529#: src/fs/gnunet-publish.c:239
3537#, c-format 3530#, c-format
3538msgid "Error publishing: %s.\n" 3531msgid "Error publishing: %s.\n"
3539msgstr "Error publicando: %s.\n" 3532msgstr "Error publicando: %s.\n"
3540 3533
3541#: src/fs/gnunet-publish.c:244 3534#: src/fs/gnunet-publish.c:246
3542#, c-format 3535#, c-format
3543msgid "Publishing `%s' done.\n" 3536msgid "Publishing `%s' done.\n"
3544msgstr "Publicación «%s» finalizada.\n" 3537msgstr "Publicación «%s» finalizada.\n"
3545 3538
3546#: src/fs/gnunet-publish.c:249 3539#: src/fs/gnunet-publish.c:251
3547#, c-format 3540#, c-format
3548msgid "URI is `%s'.\n" 3541msgid "URI is `%s'.\n"
3549msgstr "La URI es «%s».\n" 3542msgstr "La URI es «%s».\n"
3550 3543
3551#: src/fs/gnunet-publish.c:257 3544#: src/fs/gnunet-publish.c:259
3552#, fuzzy, c-format 3545#, fuzzy, c-format
3553msgid "Namespace URI is `%s'.\n" 3546msgid "Namespace URI is `%s'.\n"
3554msgstr "La URI es «%s».\n" 3547msgstr "La URI es «%s».\n"
3555 3548
3556#: src/fs/gnunet-publish.c:273 3549#: src/fs/gnunet-publish.c:275
3557#, fuzzy 3550#, fuzzy
3558msgid "Starting cleanup after abort\n" 3551msgid "Starting cleanup after abort\n"
3559msgstr "Limpieza completada\n" 3552msgstr "Limpieza completada\n"
3560 3553
3561#: src/fs/gnunet-publish.c:280 3554#: src/fs/gnunet-publish.c:282
3562#, fuzzy 3555#, fuzzy
3563msgid "Cleanup after abort completed.\n" 3556msgid "Cleanup after abort completed.\n"
3564msgstr "Limpieza completada\n" 3557msgstr "Limpieza completada\n"
3565 3558
3566#: src/fs/gnunet-publish.c:286 3559#: src/fs/gnunet-publish.c:288
3567#, fuzzy 3560#, fuzzy
3568msgid "Cleanup after abort failed.\n" 3561msgid "Cleanup after abort failed.\n"
3569msgstr "Limpieza completada\n" 3562msgstr "Limpieza completada\n"
3570 3563
3571#: src/fs/gnunet-publish.c:428 3564#: src/fs/gnunet-publish.c:430
3572#, c-format 3565#, c-format
3573msgid "Meta data for file `%s' (%s)\n" 3566msgid "Meta data for file `%s' (%s)\n"
3574msgstr "Metadatos para el fichero «%s» (%s)\n" 3567msgstr "Metadatos para el fichero «%s» (%s)\n"
3575 3568
3576#: src/fs/gnunet-publish.c:433 3569#: src/fs/gnunet-publish.c:435
3577#, c-format 3570#, c-format
3578msgid "Keywords for file `%s' (%s)\n" 3571msgid "Keywords for file `%s' (%s)\n"
3579msgstr "Palabras clave para el fichero «%s» (%s)\n" 3572msgstr "Palabras clave para el fichero «%s» (%s)\n"
3580 3573
3581#: src/fs/gnunet-publish.c:587 3574#: src/fs/gnunet-publish.c:590
3582msgid "Could not publish\n" 3575msgid "Could not publish\n"
3583msgstr "No se pudo publicar\n" 3576msgstr "No se pudo publicar\n"
3584 3577
3585#: src/fs/gnunet-publish.c:612 3578#: src/fs/gnunet-publish.c:615
3586msgid "Could not start publishing.\n" 3579msgid "Could not start publishing.\n"
3587msgstr "No se pudo empezar a publicar.\n" 3580msgstr "No se pudo empezar a publicar.\n"
3588 3581
3589#: src/fs/gnunet-publish.c:646 3582#: src/fs/gnunet-publish.c:649
3590#, c-format 3583#, c-format
3591msgid "Scanning directory `%s'.\n" 3584msgid "Scanning directory `%s'.\n"
3592msgstr "Escaneando directorio «%s».\n" 3585msgstr "Escaneando directorio «%s».\n"
3593 3586
3594#: src/fs/gnunet-publish.c:650 3587#: src/fs/gnunet-publish.c:653
3595#, c-format 3588#, c-format
3596msgid "Scanning file `%s'.\n" 3589msgid "Scanning file `%s'.\n"
3597msgstr "Escaneando fichero «%s».\n" 3590msgstr "Escaneando fichero «%s».\n"
3598 3591
3599#: src/fs/gnunet-publish.c:656 3592#: src/fs/gnunet-publish.c:659
3600#, c-format 3593#, c-format
3601msgid "There was trouble processing file `%s', skipping it.\n" 3594msgid "There was trouble processing file `%s', skipping it.\n"
3602msgstr "Hubo un problema procesando el fichero «%s», omitiéndolo.\n" 3595msgstr "Hubo un problema procesando el fichero «%s», omitiéndolo.\n"
3603 3596
3604#: src/fs/gnunet-publish.c:663 3597#: src/fs/gnunet-publish.c:666
3605msgid "Preprocessing complete.\n" 3598msgid "Preprocessing complete.\n"
3606msgstr "Preprocesado completo.\n" 3599msgstr "Preprocesado completo.\n"
3607 3600
3608#: src/fs/gnunet-publish.c:668 3601#: src/fs/gnunet-publish.c:671
3609#, c-format 3602#, c-format
3610msgid "Extracting meta data from file `%s' complete.\n" 3603msgid "Extracting meta data from file `%s' complete.\n"
3611msgstr "Extracción de metadatos del fichero «%s» completa.\n" 3604msgstr "Extracción de metadatos del fichero «%s» completa.\n"
3612 3605
3613#: src/fs/gnunet-publish.c:675 3606#: src/fs/gnunet-publish.c:678
3614msgid "Meta data extraction has finished.\n" 3607msgid "Meta data extraction has finished.\n"
3615msgstr "La extracción de metadatos ha finalizado.\n" 3608msgstr "La extracción de metadatos ha finalizado.\n"
3616 3609
3617#: src/fs/gnunet-publish.c:684 3610#: src/fs/gnunet-publish.c:687
3618msgid "Internal error scanning directory.\n" 3611msgid "Internal error scanning directory.\n"
3619msgstr "Error interno escaneando directorio.\n" 3612msgstr "Error interno escaneando directorio.\n"
3620 3613
3621#: src/fs/gnunet-publish.c:712 3614#: src/fs/gnunet-publish.c:715
3622#, fuzzy, c-format 3615#, fuzzy, c-format
3623msgid "Selected pseudonym `%s' unknown\n" 3616msgid "Selected pseudonym `%s' unknown\n"
3624msgstr "Espacio de nombres «%s» desconocido.\n" 3617msgstr "Espacio de nombres «%s» desconocido.\n"
3625 3618
3626#: src/fs/gnunet-publish.c:745 3619#: src/fs/gnunet-publish.c:749
3627#, c-format 3620#, c-format
3628msgid "Failed to access `%s': %s\n" 3621msgid "Failed to access `%s': %s\n"
3629msgstr "Se produjo un fallo al acceder «%s»: %s\n" 3622msgstr "Se produjo un fallo al acceder «%s»: %s\n"
3630 3623
3631#: src/fs/gnunet-publish.c:759 3624#: src/fs/gnunet-publish.c:763
3632msgid "" 3625msgid ""
3633"Failed to start meta directory scanner. Is gnunet-helper-publish-fs " 3626"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
3634"installed?\n" 3627"installed?\n"
@@ -3636,33 +3629,33 @@ msgstr ""
3636"Se produjo un fallo al iniciar el meta-escáner de directorios. ¿Está " 3629"Se produjo un fallo al iniciar el meta-escáner de directorios. ¿Está "
3637"«gnunet-helper-publish-fs» instalado?\n" 3630"«gnunet-helper-publish-fs» instalado?\n"
3638 3631
3639#: src/fs/gnunet-publish.c:815 3632#: src/fs/gnunet-publish.c:819
3640#, c-format 3633#, c-format
3641msgid "Cannot extract metadata from a URI!\n" 3634msgid "Cannot extract metadata from a URI!\n"
3642msgstr "¡No se pueden extraer metadatos de una URI!\n" 3635msgstr "¡No se pueden extraer metadatos de una URI!\n"
3643 3636
3644#: src/fs/gnunet-publish.c:822 3637#: src/fs/gnunet-publish.c:826
3645#, c-format 3638#, c-format
3646msgid "You must specify one and only one filename for insertion.\n" 3639msgid "You must specify one and only one filename for insertion.\n"
3647msgstr "Se debe especificar uno y solo un nombre de fichero para insertar.\n" 3640msgstr "Se debe especificar uno y solo un nombre de fichero para insertar.\n"
3648 3641
3649#: src/fs/gnunet-publish.c:828 3642#: src/fs/gnunet-publish.c:832
3650#, c-format 3643#, c-format
3651msgid "You must NOT specify an URI and a filename.\n" 3644msgid "You must NOT specify an URI and a filename.\n"
3652msgstr "No se puede especificar una URI y un nombre de fichero.\n" 3645msgstr "No se puede especificar una URI y un nombre de fichero.\n"
3653 3646
3654#: src/fs/gnunet-publish.c:836 src/vpn/gnunet-vpn.c:208 3647#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:210
3655#, c-format 3648#, c-format
3656msgid "Option `%s' is required when using option `%s'.\n" 3649msgid "Option `%s' is required when using option `%s'.\n"
3657msgstr "La opción «%s» es obligatoria cuando se usa la opción «%s».\n" 3650msgstr "La opción «%s» es obligatoria cuando se usa la opción «%s».\n"
3658 3651
3659#: src/fs/gnunet-publish.c:847 src/fs/gnunet-publish.c:855 3652#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
3660#: src/transport/gnunet-transport.c:1280 src/transport/gnunet-transport.c:1307 3653#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
3661#, c-format 3654#, c-format
3662msgid "Option `%s' makes no sense without option `%s'.\n" 3655msgid "Option `%s' makes no sense without option `%s'.\n"
3663msgstr "La opción «%s» no tiene sentido sin la opción «%s».\n" 3656msgstr "La opción «%s» no tiene sentido sin la opción «%s».\n"
3664 3657
3665#: src/fs/gnunet-publish.c:911 3658#: src/fs/gnunet-publish.c:916
3666msgid "" 3659msgid ""
3667"print list of extracted keywords that would be used, but do not perform " 3660"print list of extracted keywords that would be used, but do not perform "
3668"upload" 3661"upload"
@@ -3670,7 +3663,7 @@ msgstr ""
3670"imprimir una lista de las palabras clave extraídas que podrían ser usadas, " 3663"imprimir una lista de las palabras clave extraídas que podrían ser usadas, "
3671"pero sin realizar la subida" 3664"pero sin realizar la subida"
3672 3665
3673#: src/fs/gnunet-publish.c:917 3666#: src/fs/gnunet-publish.c:922
3674msgid "" 3667msgid ""
3675"add an additional keyword for the top-level file or directory (this option " 3668"add an additional keyword for the top-level file or directory (this option "
3676"can be specified multiple times)" 3669"can be specified multiple times)"
@@ -3678,11 +3671,11 @@ msgstr ""
3678"añadir una palabra clave adicional para el fichero del nivel más alto o el " 3671"añadir una palabra clave adicional para el fichero del nivel más alto o el "
3679"directorio (esta opción puede ser especificada varias veces)" 3672"directorio (esta opción puede ser especificada varias veces)"
3680 3673
3681#: src/fs/gnunet-publish.c:923 3674#: src/fs/gnunet-publish.c:928
3682msgid "set the meta-data for the given TYPE to the given VALUE" 3675msgid "set the meta-data for the given TYPE to the given VALUE"
3683msgstr "establece los metadatos para el tipo TYPE dado al valor VALUE dado" 3676msgstr "establece los metadatos para el tipo TYPE dado al valor VALUE dado"
3684 3677
3685#: src/fs/gnunet-publish.c:928 3678#: src/fs/gnunet-publish.c:932
3686msgid "" 3679msgid ""
3687"do not index, perform full insertion (stores entire file in encrypted form " 3680"do not index, perform full insertion (stores entire file in encrypted form "
3688"in GNUnet database)" 3681"in GNUnet database)"
@@ -3690,7 +3683,7 @@ msgstr ""
3690"no indexar, hacer inserciones totales (almacena el fichero entero de forma " 3683"no indexar, hacer inserciones totales (almacena el fichero entero de forma "
3691"cifrada en la base de datos de GNUnet)" 3684"cifrada en la base de datos de GNUnet)"
3692 3685
3693#: src/fs/gnunet-publish.c:935 3686#: src/fs/gnunet-publish.c:938
3694msgid "" 3687msgid ""
3695"specify ID of an updated version to be published in the future (for " 3688"specify ID of an updated version to be published in the future (for "
3696"namespace insertions only)" 3689"namespace insertions only)"
@@ -3698,13 +3691,13 @@ msgstr ""
3698"especificar la ID de una versión actualizada para ser publicada en el futuro " 3691"especificar la ID de una versión actualizada para ser publicada en el futuro "
3699"(para inserciones en el espacio de nombres únicamente)" 3692"(para inserciones en el espacio de nombres únicamente)"
3700 3693
3701#: src/fs/gnunet-publish.c:948 3694#: src/fs/gnunet-publish.c:949
3702msgid "publish the files under the pseudonym NAME (place file into namespace)" 3695msgid "publish the files under the pseudonym NAME (place file into namespace)"
3703msgstr "" 3696msgstr ""
3704"publicar los ficheros bajo el seudónimo NAME (coloca el fichero en el " 3697"publicar los ficheros bajo el seudónimo NAME (coloca el fichero en el "
3705"espacio)" 3698"espacio)"
3706 3699
3707#: src/fs/gnunet-publish.c:958 3700#: src/fs/gnunet-publish.c:959
3708msgid "" 3701msgid ""
3709"only simulate the process but do not do any actual publishing (useful to " 3702"only simulate the process but do not do any actual publishing (useful to "
3710"compute URIs)" 3703"compute URIs)"
@@ -3712,7 +3705,7 @@ msgstr ""
3712"únicamente simular el proceso pero no publicar nada realmente (útil para " 3705"únicamente simular el proceso pero no publicar nada realmente (útil para "
3713"calcular URI)" 3706"calcular URI)"
3714 3707
3715#: src/fs/gnunet-publish.c:964 3708#: src/fs/gnunet-publish.c:965
3716msgid "" 3709msgid ""
3717"set the ID of this version of the publication (for namespace insertions only)" 3710"set the ID of this version of the publication (for namespace insertions only)"
3718msgstr "" 3711msgstr ""
@@ -3727,31 +3720,31 @@ msgstr ""
3727"URI a ser publicada (puede ser usado en vez de pasar un fichero para añadir " 3720"URI a ser publicada (puede ser usado en vez de pasar un fichero para añadir "
3728"claves con el fichero con la URI respectiva)" 3721"claves con el fichero con la URI respectiva)"
3729 3722
3730#: src/fs/gnunet-publish.c:987 3723#: src/fs/gnunet-publish.c:989
3731msgid "Publish a file or directory on GNUnet" 3724msgid "Publish a file or directory on GNUnet"
3732msgstr "Publicar un fichero o un directorio en GNUnet" 3725msgstr "Publicar un fichero o un directorio en GNUnet"
3733 3726
3734#: src/fs/gnunet-search.c:125 3727#: src/fs/gnunet-search.c:127
3735#, c-format 3728#, c-format
3736msgid "Failed to write directory with search results to `%s'\n" 3729msgid "Failed to write directory with search results to `%s'\n"
3737msgstr "" 3730msgstr ""
3738"Se produjo un fallo al escribir el directorio con los resultados de búsqueda " 3731"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
3739"de «%s»\n" 3732"de «%s»\n"
3740 3733
3741#: src/fs/gnunet-search.c:202 3734#: src/fs/gnunet-search.c:207
3742#, c-format 3735#, c-format
3743msgid "Error searching: %s.\n" 3736msgid "Error searching: %s.\n"
3744msgstr "Error buscando: %s.\n" 3737msgstr "Error buscando: %s.\n"
3745 3738
3746#: src/fs/gnunet-search.c:258 3739#: src/fs/gnunet-search.c:263
3747msgid "Could not create keyword URI from arguments.\n" 3740msgid "Could not create keyword URI from arguments.\n"
3748msgstr "No se pudo crear URI de palabra clave a partir de los parámetros.\n" 3741msgstr "No se pudo crear URI de palabra clave a partir de los parámetros.\n"
3749 3742
3750#: src/fs/gnunet-search.c:282 3743#: src/fs/gnunet-search.c:287
3751msgid "Could not start searching.\n" 3744msgid "Could not start searching.\n"
3752msgstr "No se pudo empezar a buscar.\n" 3745msgstr "No se pudo empezar a buscar.\n"
3753 3746
3754#: src/fs/gnunet-search.c:323 3747#: src/fs/gnunet-search.c:324
3755msgid "write search results to file starting with PREFIX" 3748msgid "write search results to file starting with PREFIX"
3756msgstr "escribir resultados de búsqueda al fichero que empiecen por «PREFIX»" 3749msgstr "escribir resultados de búsqueda al fichero que empiecen por «PREFIX»"
3757 3750
@@ -3759,7 +3752,7 @@ msgstr "escribir resultados de búsqueda al fichero que empiecen por «PREFIX»"
3759msgid "automatically terminate search after DELAY" 3752msgid "automatically terminate search after DELAY"
3760msgstr "terminar búsqueda automáticamente después de «DELAY»" 3753msgstr "terminar búsqueda automáticamente después de «DELAY»"
3761 3754
3762#: src/fs/gnunet-search.c:338 3755#: src/fs/gnunet-search.c:335
3763msgid "automatically terminate search after VALUE results are found" 3756msgid "automatically terminate search after VALUE results are found"
3764msgstr "terminar búsqueda después de «VALUE» resultados encontrados" 3757msgstr "terminar búsqueda después de «VALUE» resultados encontrados"
3765 3758
@@ -3767,197 +3760,197 @@ msgstr "terminar búsqueda después de «VALUE» resultados encontrados"
3767msgid "Search GNUnet for files that were published on GNUnet" 3760msgid "Search GNUnet for files that were published on GNUnet"
3768msgstr "Buscar en GNUnet ficheros que han sido publicados en GNUnet" 3761msgstr "Buscar en GNUnet ficheros que han sido publicados en GNUnet"
3769 3762
3770#: src/fs/gnunet-service-fs.c:375 src/fs/gnunet-service-fs.c:880 3763#: src/fs/gnunet-service-fs.c:377 src/fs/gnunet-service-fs.c:882
3771msgid "# client searches active" 3764msgid "# client searches active"
3772msgstr "# búsquedas de clientes activas" 3765msgstr "# búsquedas de clientes activas"
3773 3766
3774#: src/fs/gnunet-service-fs.c:434 3767#: src/fs/gnunet-service-fs.c:436
3775msgid "# replies received for local clients" 3768msgid "# replies received for local clients"
3776msgstr "# respuestas recibidas de clientes locales" 3769msgstr "# respuestas recibidas de clientes locales"
3777 3770
3778#: src/fs/gnunet-service-fs.c:603 3771#: src/fs/gnunet-service-fs.c:605
3779msgid "# running average P2P latency (ms)" 3772msgid "# running average P2P latency (ms)"
3780msgstr "# latencia media de P2P en ejecución (ms)" 3773msgstr "# latencia media de P2P en ejecución (ms)"
3781 3774
3782#: src/fs/gnunet-service-fs.c:655 src/fs/gnunet-service-fs_cp.c:562 3775#: src/fs/gnunet-service-fs.c:657 src/fs/gnunet-service-fs_cp.c:564
3783msgid "# Loopback routes suppressed" 3776msgid "# Loopback routes suppressed"
3784msgstr "# Rutas en bucle local eliminadas" 3777msgstr "# Rutas en bucle local eliminadas"
3785 3778
3786#: src/fs/gnunet-service-fs.c:834 3779#: src/fs/gnunet-service-fs.c:836
3787msgid "# client searches received" 3780msgid "# client searches received"
3788msgstr "# búsquedas de clientes recibidas" 3781msgstr "# búsquedas de clientes recibidas"
3789 3782
3790#: src/fs/gnunet-service-fs.c:873 3783#: src/fs/gnunet-service-fs.c:875
3791msgid "# client searches updated (merged content seen list)" 3784msgid "# client searches updated (merged content seen list)"
3792msgstr "" 3785msgstr ""
3793"# búsquedas de clientes actualizadas (contenido unido visto en la lista)" 3786"# búsquedas de clientes actualizadas (contenido unido visto en la lista)"
3794 3787
3795#: src/fs/gnunet-service-fs.c:1044 3788#: src/fs/gnunet-service-fs.c:1040
3796#, fuzzy, c-format 3789#, fuzzy, c-format
3797msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n" 3790msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n"
3798msgstr "" 3791msgstr ""
3799"Hash no asociado intentando indexar el fichero «%s» que tiene hash «%s»\n" 3792"Hash no asociado intentando indexar el fichero «%s» que tiene hash «%s»\n"
3800 3793
3801#: src/fs/gnunet-service-fs.c:1284 3794#: src/fs/gnunet-service-fs.c:1280
3802#, fuzzy 3795#, fuzzy
3803msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n" 3796msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n"
3804msgstr "" 3797msgstr ""
3805"Al servicio principal le falta la configuración de la clave de máquina " 3798"Al servicio principal le falta la configuración de la clave de máquina "
3806"(HOSTKEY). Saliendo.\n" 3799"(HOSTKEY). Saliendo.\n"
3807 3800
3808#: src/fs/gnunet-service-fs.c:1309 src/hostlist/gnunet-daemon-hostlist.c:353 3801#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
3809#: src/topology/gnunet-daemon-topology.c:1200 3802#: src/topology/gnunet-daemon-topology.c:1202
3810#, c-format 3803#, c-format
3811msgid "Failed to connect to `%s' service.\n" 3804msgid "Failed to connect to `%s' service.\n"
3812msgstr "Se produjo un fallo al conectar con el servicio «%s».\n" 3805msgstr "Se produjo un fallo al conectar con el servicio «%s».\n"
3813 3806
3814#: src/fs/gnunet-service-fs_cadet_client.c:368 3807#: src/fs/gnunet-service-fs_cadet_client.c:370
3815#, fuzzy 3808#, fuzzy
3816msgid "# replies received via cadet" 3809msgid "# replies received via cadet"
3817msgstr "# respuestas recibidas vía «stream»" 3810msgstr "# respuestas recibidas vía «stream»"
3818 3811
3819#: src/fs/gnunet-service-fs_cadet_client.c:382 3812#: src/fs/gnunet-service-fs_cadet_client.c:384
3820#, fuzzy 3813#, fuzzy
3821msgid "# replies received via cadet dropped" 3814msgid "# replies received via cadet dropped"
3822msgstr "# respuestas recibidas omitidas vía «stream»" 3815msgstr "# respuestas recibidas omitidas vía «stream»"
3823 3816
3824#: src/fs/gnunet-service-fs_cadet_server.c:263 3817#: src/fs/gnunet-service-fs_cadet_server.c:265
3825#, fuzzy 3818#, fuzzy
3826msgid "# queries received via CADET not answered" 3819msgid "# queries received via CADET not answered"
3827msgstr "# consultas recibidas vía «stream»" 3820msgstr "# consultas recibidas vía «stream»"
3828 3821
3829#: src/fs/gnunet-service-fs_cadet_server.c:318 3822#: src/fs/gnunet-service-fs_cadet_server.c:320
3830#, fuzzy 3823#, fuzzy
3831msgid "# Blocks transferred via cadet" 3824msgid "# Blocks transferred via cadet"
3832msgstr "# Bloques transferidos vía «stream»" 3825msgstr "# Bloques transferidos vía «stream»"
3833 3826
3834#: src/fs/gnunet-service-fs_cadet_server.c:344 3827#: src/fs/gnunet-service-fs_cadet_server.c:346
3835#, fuzzy 3828#, fuzzy
3836msgid "# queries received via cadet" 3829msgid "# queries received via cadet"
3837msgstr "# consultas recibidas vía «stream»" 3830msgstr "# consultas recibidas vía «stream»"
3838 3831
3839#: src/fs/gnunet-service-fs_cadet_server.c:386 3832#: src/fs/gnunet-service-fs_cadet_server.c:388
3840#, fuzzy 3833#, fuzzy
3841msgid "# cadet client connections rejected" 3834msgid "# cadet client connections rejected"
3842msgstr "# conexiones de clientes «stream» rechazadas" 3835msgstr "# conexiones de clientes «stream» rechazadas"
3843 3836
3844#: src/fs/gnunet-service-fs_cadet_server.c:393 3837#: src/fs/gnunet-service-fs_cadet_server.c:395
3845#: src/fs/gnunet-service-fs_cadet_server.c:433 3838#: src/fs/gnunet-service-fs_cadet_server.c:435
3846#, fuzzy 3839#, fuzzy
3847msgid "# cadet connections active" 3840msgid "# cadet connections active"
3848msgstr "# conexiones «stream» activas" 3841msgstr "# conexiones «stream» activas"
3849 3842
3850#: src/fs/gnunet-service-fs_cp.c:684 3843#: src/fs/gnunet-service-fs_cp.c:685
3851msgid "# migration stop messages received" 3844msgid "# migration stop messages received"
3852msgstr "# mensajes de detención de migración recibidos" 3845msgstr "# mensajes de detención de migración recibidos"
3853 3846
3854#: src/fs/gnunet-service-fs_cp.c:688 3847#: src/fs/gnunet-service-fs_cp.c:689
3855#, c-format 3848#, c-format
3856msgid "Migration of content to peer `%s' blocked for %s\n" 3849msgid "Migration of content to peer `%s' blocked for %s\n"
3857msgstr "Migración de contenido al par «%s» bloqueada durante %s\n" 3850msgstr "Migración de contenido al par «%s» bloqueada durante %s\n"
3858 3851
3859#: src/fs/gnunet-service-fs_cp.c:721 src/fs/gnunet-service-fs_cp.c:1343 3852#: src/fs/gnunet-service-fs_cp.c:722 src/fs/gnunet-service-fs_cp.c:1344
3860msgid "# P2P searches active" 3853msgid "# P2P searches active"
3861msgstr "# busquedas P2P activas" 3854msgstr "# busquedas P2P activas"
3862 3855
3863#: src/fs/gnunet-service-fs_cp.c:816 3856#: src/fs/gnunet-service-fs_cp.c:817
3864msgid "# artificial delays introduced (ms)" 3857msgid "# artificial delays introduced (ms)"
3865msgstr "# retardos artificiales introducidos (ms)" 3858msgstr "# retardos artificiales introducidos (ms)"
3866 3859
3867#: src/fs/gnunet-service-fs_cp.c:873 3860#: src/fs/gnunet-service-fs_cp.c:874
3868msgid "# replies dropped due to type mismatch" 3861msgid "# replies dropped due to type mismatch"
3869msgstr "# respuestas omitidas debido a incompatibilidad de tipos" 3862msgstr "# respuestas omitidas debido a incompatibilidad de tipos"
3870 3863
3871#: src/fs/gnunet-service-fs_cp.c:881 3864#: src/fs/gnunet-service-fs_cp.c:882
3872msgid "# replies received for other peers" 3865msgid "# replies received for other peers"
3873msgstr "# respuestas recibidas de otros pares" 3866msgstr "# respuestas recibidas de otros pares"
3874 3867
3875#: src/fs/gnunet-service-fs_cp.c:895 3868#: src/fs/gnunet-service-fs_cp.c:896
3876msgid "# replies dropped due to insufficient cover traffic" 3869msgid "# replies dropped due to insufficient cover traffic"
3877msgstr "# respuestas omitidas debido a insuficiente tráfico de cobertura" 3870msgstr "# respuestas omitidas debido a insuficiente tráfico de cobertura"
3878 3871
3879#: src/fs/gnunet-service-fs_cp.c:942 3872#: src/fs/gnunet-service-fs_cp.c:943
3880msgid "# P2P searches destroyed due to ultimate reply" 3873msgid "# P2P searches destroyed due to ultimate reply"
3881msgstr "# búsquedas P2P destruidas debido a respuesta definitiva" 3874msgstr "# búsquedas P2P destruidas debido a respuesta definitiva"
3882 3875
3883#: src/fs/gnunet-service-fs_cp.c:1013 3876#: src/fs/gnunet-service-fs_cp.c:1014
3884msgid "# requests done for free (low load)" 3877msgid "# requests done for free (low load)"
3885msgstr "# peticiones realizadas gratuitamente (baja carga)" 3878msgstr "# peticiones realizadas gratuitamente (baja carga)"
3886 3879
3887#: src/fs/gnunet-service-fs_cp.c:1038 3880#: src/fs/gnunet-service-fs_cp.c:1039
3888msgid "# request dropped, priority insufficient" 3881msgid "# request dropped, priority insufficient"
3889msgstr "# peticiones omitidas, prioridad insuficiente" 3882msgstr "# peticiones omitidas, prioridad insuficiente"
3890 3883
3891#: src/fs/gnunet-service-fs_cp.c:1048 3884#: src/fs/gnunet-service-fs_cp.c:1049
3892msgid "# requests done for a price (normal load)" 3885msgid "# requests done for a price (normal load)"
3893msgstr "# peticiones realizadas por un precio (carga normal)" 3886msgstr "# peticiones realizadas por un precio (carga normal)"
3894 3887
3895#: src/fs/gnunet-service-fs_cp.c:1146 3888#: src/fs/gnunet-service-fs_cp.c:1147
3896msgid "# requests dropped due to higher-TTL request" 3889msgid "# requests dropped due to higher-TTL request"
3897msgstr "# peticiones omitidas debido a una petición de mayor TTL" 3890msgstr "# peticiones omitidas debido a una petición de mayor TTL"
3898 3891
3899#: src/fs/gnunet-service-fs_cp.c:1203 3892#: src/fs/gnunet-service-fs_cp.c:1204
3900msgid "# GET requests received (from other peers)" 3893msgid "# GET requests received (from other peers)"
3901msgstr "# peticiones «GET» recibidas (de otros pares)" 3894msgstr "# peticiones «GET» recibidas (de otros pares)"
3902 3895
3903#: src/fs/gnunet-service-fs_cp.c:1226 3896#: src/fs/gnunet-service-fs_cp.c:1227
3904msgid "# requests dropped due to missing reverse route" 3897msgid "# requests dropped due to missing reverse route"
3905msgstr "# peticiones omitidas debido a falta de ruta inversa" 3898msgstr "# peticiones omitidas debido a falta de ruta inversa"
3906 3899
3907#: src/fs/gnunet-service-fs_cp.c:1239 3900#: src/fs/gnunet-service-fs_cp.c:1240
3908#, fuzzy 3901#, fuzzy
3909msgid "# requests dropped due to full reply queue" 3902msgid "# requests dropped due to full reply queue"
3910msgstr "# Mensajes P2P omitidos debido a saturación de la cola" 3903msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
3911 3904
3912#: src/fs/gnunet-service-fs_cp.c:1295 3905#: src/fs/gnunet-service-fs_cp.c:1296
3913msgid "# requests dropped due TTL underflow" 3906msgid "# requests dropped due TTL underflow"
3914msgstr "# peticiones omitidas debido a expiración del TTL" 3907msgstr "# peticiones omitidas debido a expiración del TTL"
3915 3908
3916#: src/fs/gnunet-service-fs_cp.c:1339 3909#: src/fs/gnunet-service-fs_cp.c:1340
3917msgid "# P2P query messages received and processed" 3910msgid "# P2P query messages received and processed"
3918msgstr "# mensajes de búsqueda P2P recibidos y procesados" 3911msgstr "# mensajes de búsqueda P2P recibidos y procesados"
3919 3912
3920#: src/fs/gnunet-service-fs_cp.c:1706 3913#: src/fs/gnunet-service-fs_cp.c:1707
3921msgid "# migration stop messages sent" 3914msgid "# migration stop messages sent"
3922msgstr "# mensajes de detención de migración enviados" 3915msgstr "# mensajes de detención de migración enviados"
3923 3916
3924#: src/fs/gnunet-service-fs_indexing.c:132 3917#: src/fs/gnunet-service-fs_indexing.c:134
3925#: src/fs/gnunet-service-fs_indexing.c:193 3918#: src/fs/gnunet-service-fs_indexing.c:195
3926#, c-format 3919#, c-format
3927msgid "Could not open `%s'.\n" 3920msgid "Could not open `%s'.\n"
3928msgstr "No se pudo abrir «%s».\n" 3921msgstr "No se pudo abrir «%s».\n"
3929 3922
3930#: src/fs/gnunet-service-fs_indexing.c:149 3923#: src/fs/gnunet-service-fs_indexing.c:151
3931#, c-format 3924#, c-format
3932msgid "Error writing `%s'.\n" 3925msgid "Error writing `%s'.\n"
3933msgstr "Error escribiendo «%s».\n" 3926msgstr "Error escribiendo «%s».\n"
3934 3927
3935#: src/fs/gnunet-service-fs_indexing.c:251 3928#: src/fs/gnunet-service-fs_indexing.c:253
3936#, c-format 3929#, c-format
3937msgid "Failed to delete bogus block: %s\n" 3930msgid "Failed to delete bogus block: %s\n"
3938msgstr "Se produjo un fallo al eliminar el bloque defectuoso: %s\n" 3931msgstr "Se produjo un fallo al eliminar el bloque defectuoso: %s\n"
3939 3932
3940#: src/fs/gnunet-service-fs_indexing.c:329 3933#: src/fs/gnunet-service-fs_indexing.c:331
3941msgid "# index blocks removed: original file inaccessible" 3934msgid "# index blocks removed: original file inaccessible"
3942msgstr "# bloques de índice eliminados: fichero original inaccesible" 3935msgstr "# bloques de índice eliminados: fichero original inaccesible"
3943 3936
3944#: src/fs/gnunet-service-fs_indexing.c:355 3937#: src/fs/gnunet-service-fs_indexing.c:357
3945#, c-format 3938#, c-format
3946msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n" 3939msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n"
3947msgstr "" 3940msgstr ""
3948"No se pudo acceder al fichero indexado «%s» (%s) en el desplazamiento %llu: " 3941"No se pudo acceder al fichero indexado «%s» (%s) en el desplazamiento %llu: "
3949"%s\n" 3942"%s\n"
3950 3943
3951#: src/fs/gnunet-service-fs_indexing.c:359 3944#: src/fs/gnunet-service-fs_indexing.c:361
3952msgid "not indexed" 3945msgid "not indexed"
3953msgstr "no indexado" 3946msgstr "no indexado"
3954 3947
3955#: src/fs/gnunet-service-fs_indexing.c:392 3948#: src/fs/gnunet-service-fs_indexing.c:394
3956#, c-format 3949#, c-format
3957msgid "Indexed file `%s' changed at offset %llu\n" 3950msgid "Indexed file `%s' changed at offset %llu\n"
3958msgstr "El fichero indexado «%s» ha cambiado en el desplazamiento %llu\n" 3951msgstr "El fichero indexado «%s» ha cambiado en el desplazamiento %llu\n"
3959 3952
3960#: src/fs/gnunet-service-fs_indexing.c:516 3953#: src/fs/gnunet-service-fs_indexing.c:518
3961#, c-format 3954#, c-format
3962msgid "" 3955msgid ""
3963"Index request received for file `%s' is already indexed as `%s'. Permitting " 3956"Index request received for file `%s' is already indexed as `%s'. Permitting "
@@ -3966,679 +3959,679 @@ msgstr ""
3966"La petición de indexado recibida para el fichero «%s» ya está indexada como " 3959"La petición de indexado recibida para el fichero «%s» ya está indexada como "
3967"«%s». Se permite de todos modos.\n" 3960"«%s». Se permite de todos modos.\n"
3968 3961
3969#: src/fs/gnunet-service-fs_pe.c:263 3962#: src/fs/gnunet-service-fs_pe.c:265
3970msgid "# average retransmission delay (ms)" 3963msgid "# average retransmission delay (ms)"
3971msgstr "# retardo de retransmisión medio (ms)" 3964msgstr "# retardo de retransmisión medio (ms)"
3972 3965
3973# ??? 3966# ???
3974#: src/fs/gnunet-service-fs_pe.c:425 3967#: src/fs/gnunet-service-fs_pe.c:427
3975#, fuzzy 3968#, fuzzy
3976msgid "# delay heap timeout (ms)" 3969msgid "# delay heap timeout (ms)"
3977msgstr "# plazo del retraso del montículo" 3970msgstr "# plazo del retraso del montículo"
3978 3971
3979#: src/fs/gnunet-service-fs_pe.c:436 3972#: src/fs/gnunet-service-fs_pe.c:438
3980msgid "# query plans executed" 3973msgid "# query plans executed"
3981msgstr "# planes de búsqueda ejecutados" 3974msgstr "# planes de búsqueda ejecutados"
3982 3975
3983#: src/fs/gnunet-service-fs_pe.c:464 3976#: src/fs/gnunet-service-fs_pe.c:466
3984msgid "# query messages sent to other peers" 3977msgid "# query messages sent to other peers"
3985msgstr "# mensajes de búsqueda enviados a otros pares" 3978msgstr "# mensajes de búsqueda enviados a otros pares"
3986 3979
3987#: src/fs/gnunet-service-fs_pe.c:534 3980#: src/fs/gnunet-service-fs_pe.c:536
3988msgid "# requests merged" 3981msgid "# requests merged"
3989msgstr "# peticiones unidas" 3982msgstr "# peticiones unidas"
3990 3983
3991#: src/fs/gnunet-service-fs_pe.c:544 3984#: src/fs/gnunet-service-fs_pe.c:546
3992msgid "# requests refreshed" 3985msgid "# requests refreshed"
3993msgstr "# peticiones refrescadas" 3986msgstr "# peticiones refrescadas"
3994 3987
3995#: src/fs/gnunet-service-fs_pe.c:604 src/fs/gnunet-service-fs_pe.c:707 3988#: src/fs/gnunet-service-fs_pe.c:606 src/fs/gnunet-service-fs_pe.c:709
3996#: src/fs/gnunet-service-fs_pe.c:786 3989#: src/fs/gnunet-service-fs_pe.c:788
3997msgid "# query plan entries" 3990msgid "# query plan entries"
3998msgstr "# entradas de planes de búsqueda" 3991msgstr "# entradas de planes de búsqueda"
3999 3992
4000#: src/fs/gnunet-service-fs_pr.c:328 3993#: src/fs/gnunet-service-fs_pr.c:330
4001msgid "# Pending requests created" 3994msgid "# Pending requests created"
4002msgstr "# Peticiones pendientes creadas" 3995msgstr "# Peticiones pendientes creadas"
4003 3996
4004#: src/fs/gnunet-service-fs_pr.c:428 src/fs/gnunet-service-fs_pr.c:675 3997#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
4005msgid "# Pending requests active" 3998msgid "# Pending requests active"
4006msgstr "# Peticiones pendientes activas" 3999msgstr "# Peticiones pendientes activas"
4007 4000
4008#: src/fs/gnunet-service-fs_pr.c:856 4001#: src/fs/gnunet-service-fs_pr.c:858
4009msgid "# replies received and matched" 4002msgid "# replies received and matched"
4010msgstr "# respuestas recibidas y asociadas" 4003msgstr "# respuestas recibidas y asociadas"
4011 4004
4012#: src/fs/gnunet-service-fs_pr.c:892 4005#: src/fs/gnunet-service-fs_pr.c:894
4013msgid "# duplicate replies discarded (bloomfilter)" 4006msgid "# duplicate replies discarded (bloomfilter)"
4014msgstr "# respuestas duplicadas descartadas (bloomfilter)" 4007msgstr "# respuestas duplicadas descartadas (bloomfilter)"
4015 4008
4016#: src/fs/gnunet-service-fs_pr.c:901 4009#: src/fs/gnunet-service-fs_pr.c:903
4017msgid "# irrelevant replies discarded" 4010msgid "# irrelevant replies discarded"
4018msgstr "# respuestas irrelevantes descartadas" 4011msgstr "# respuestas irrelevantes descartadas"
4019 4012
4020#: src/fs/gnunet-service-fs_pr.c:916 4013#: src/fs/gnunet-service-fs_pr.c:918
4021#, c-format 4014#, c-format
4022msgid "Unsupported block type %u\n" 4015msgid "Unsupported block type %u\n"
4023msgstr "Tipo de bloque %u no soportado\n" 4016msgstr "Tipo de bloque %u no soportado\n"
4024 4017
4025#: src/fs/gnunet-service-fs_pr.c:933 4018#: src/fs/gnunet-service-fs_pr.c:935
4026msgid "# results found locally" 4019msgid "# results found locally"
4027msgstr "# resultados hallados localmente" 4020msgstr "# resultados hallados localmente"
4028 4021
4029#: src/fs/gnunet-service-fs_pr.c:1063 4022#: src/fs/gnunet-service-fs_pr.c:1065
4030msgid "# Datastore `PUT' failures" 4023msgid "# Datastore `PUT' failures"
4031msgstr "# «PUT» en el almacén de datos fallidos" 4024msgstr "# «PUT» en el almacén de datos fallidos"
4032 4025
4033#: src/fs/gnunet-service-fs_pr.c:1091 4026#: src/fs/gnunet-service-fs_pr.c:1093
4034msgid "# storage requests dropped due to high load" 4027msgid "# storage requests dropped due to high load"
4035msgstr "# peticiones de almacenamiento omitidas debido a alta carga" 4028msgstr "# peticiones de almacenamiento omitidas debido a alta carga"
4036 4029
4037#: src/fs/gnunet-service-fs_pr.c:1129 4030#: src/fs/gnunet-service-fs_pr.c:1131
4038msgid "# Replies received from DHT" 4031msgid "# Replies received from DHT"
4039msgstr "# Respuestas recibidas de la DHT" 4032msgstr "# Respuestas recibidas de la DHT"
4040 4033
4041#: src/fs/gnunet-service-fs_pr.c:1260 4034#: src/fs/gnunet-service-fs_pr.c:1262
4042#, fuzzy 4035#, fuzzy
4043msgid "# Replies received from CADET" 4036msgid "# Replies received from CADET"
4044msgstr "# Respuestas recibidas de la DHT" 4037msgstr "# Respuestas recibidas de la DHT"
4045 4038
4046#: src/fs/gnunet-service-fs_pr.c:1312 4039#: src/fs/gnunet-service-fs_pr.c:1314
4047#, c-format 4040#, c-format
4048msgid "Datastore lookup already took %s!\n" 4041msgid "Datastore lookup already took %s!\n"
4049msgstr "¡La búsqueda en el almacén de datos toma %s!\n" 4042msgstr "¡La búsqueda en el almacén de datos toma %s!\n"
4050 4043
4051#: src/fs/gnunet-service-fs_pr.c:1333 4044#: src/fs/gnunet-service-fs_pr.c:1335
4052#, c-format 4045#, c-format
4053msgid "On-demand lookup already took %s!\n" 4046msgid "On-demand lookup already took %s!\n"
4054msgstr "¡La búsqueda en bajo demanda toma %s!\n" 4047msgstr "¡La búsqueda en bajo demanda toma %s!\n"
4055 4048
4056#: src/fs/gnunet-service-fs_pr.c:1393 4049#: src/fs/gnunet-service-fs_pr.c:1395
4057msgid "# requested DBLOCK or IBLOCK not found" 4050msgid "# requested DBLOCK or IBLOCK not found"
4058msgstr "# «DBLOCK» o «IBLOCK» pedido no encontrado" 4051msgstr "# «DBLOCK» o «IBLOCK» pedido no encontrado"
4059 4052
4060#: src/fs/gnunet-service-fs_pr.c:1452 4053#: src/fs/gnunet-service-fs_pr.c:1454
4061msgid "# Datastore lookups concluded (error queueing)" 4054msgid "# Datastore lookups concluded (error queueing)"
4062msgstr "# Búsquedas en el almacén de datos finalizadas (error encolando)" 4055msgstr "# Búsquedas en el almacén de datos finalizadas (error encolando)"
4063 4056
4064#: src/fs/gnunet-service-fs_pr.c:1507 4057#: src/fs/gnunet-service-fs_pr.c:1509
4065msgid "# Datastore lookups concluded (no results)" 4058msgid "# Datastore lookups concluded (no results)"
4066msgstr "# Búsquedas en el almacén de datos finalizadas (sin resultados)" 4059msgstr "# Búsquedas en el almacén de datos finalizadas (sin resultados)"
4067 4060
4068#: src/fs/gnunet-service-fs_pr.c:1522 4061#: src/fs/gnunet-service-fs_pr.c:1524
4069msgid "# Datastore lookups concluded (seen all)" 4062msgid "# Datastore lookups concluded (seen all)"
4070msgstr "# Búsquedas en el almacén de datos finalizadas (vistos todos)" 4063msgstr "# Búsquedas en el almacén de datos finalizadas (vistos todos)"
4071 4064
4072#: src/fs/gnunet-service-fs_pr.c:1546 4065#: src/fs/gnunet-service-fs_pr.c:1548
4073msgid "# Datastore lookups aborted (more than MAX_RESULTS)" 4066msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
4074msgstr "# Búsquedas en el almacén de datos finalizadas (más de «MAX_RESULTS»)" 4067msgstr "# Búsquedas en el almacén de datos finalizadas (más de «MAX_RESULTS»)"
4075 4068
4076#: src/fs/gnunet-service-fs_pr.c:1560 4069#: src/fs/gnunet-service-fs_pr.c:1562
4077msgid "# on-demand blocks matched requests" 4070msgid "# on-demand blocks matched requests"
4078msgstr "# peticiones asociadas de bloques bajo demanda" 4071msgstr "# peticiones asociadas de bloques bajo demanda"
4079 4072
4080#: src/fs/gnunet-service-fs_pr.c:1581 4073#: src/fs/gnunet-service-fs_pr.c:1583
4081msgid "# on-demand lookups performed successfully" 4074msgid "# on-demand lookups performed successfully"
4082msgstr "# búsquedas satisfactorias de bloques bajo demanda" 4075msgstr "# búsquedas satisfactorias de bloques bajo demanda"
4083 4076
4084#: src/fs/gnunet-service-fs_pr.c:1586 4077#: src/fs/gnunet-service-fs_pr.c:1588
4085msgid "# on-demand lookups failed" 4078msgid "# on-demand lookups failed"
4086msgstr "# búsquedas fallidas de bloques bajo demanda" 4079msgstr "# búsquedas fallidas de bloques bajo demanda"
4087 4080
4088#: src/fs/gnunet-service-fs_pr.c:1624 4081#: src/fs/gnunet-service-fs_pr.c:1626
4089msgid "# Datastore lookups concluded (found last result)" 4082msgid "# Datastore lookups concluded (found last result)"
4090msgstr "" 4083msgstr ""
4091"# Búsquedas en el almacén de datos finalizadas (encontrado último resultado)" 4084"# Búsquedas en el almacén de datos finalizadas (encontrado último resultado)"
4092 4085
4093#: src/fs/gnunet-service-fs_pr.c:1637 4086#: src/fs/gnunet-service-fs_pr.c:1639
4094msgid "# Datastore lookups concluded (load too high)" 4087msgid "# Datastore lookups concluded (load too high)"
4095msgstr "# Búsquedas en el almacén de datos finalizadas (carga demasiado alta)" 4088msgstr "# Búsquedas en el almacén de datos finalizadas (carga demasiado alta)"
4096 4089
4097#: src/fs/gnunet-service-fs_pr.c:1691 4090#: src/fs/gnunet-service-fs_pr.c:1693
4098msgid "# Datastore lookups initiated" 4091msgid "# Datastore lookups initiated"
4099msgstr "# Búsquedas en el almacén de datos iniciadas" 4092msgstr "# Búsquedas en el almacén de datos iniciadas"
4100 4093
4101#: src/fs/gnunet-service-fs_pr.c:1747 4094#: src/fs/gnunet-service-fs_pr.c:1749
4102msgid "# GAP PUT messages received" 4095msgid "# GAP PUT messages received"
4103msgstr "# Mensajes «GAP PUT» recibidos" 4096msgstr "# Mensajes «GAP PUT» recibidos"
4104 4097
4105#: src/fs/gnunet-service-fs_push.c:644 4098#: src/fs/gnunet-service-fs_push.c:646
4106msgid "time required, content pushing disabled" 4099msgid "time required, content pushing disabled"
4107msgstr "se requiere tiempo, publicación de contenido deshabilitada" 4100msgstr "se requiere tiempo, publicación de contenido deshabilitada"
4108 4101
4109#: src/fs/gnunet-unindex.c:87 4102#: src/fs/gnunet-unindex.c:89
4110#, c-format 4103#, c-format
4111msgid "Unindexing at %llu/%llu (%s remaining)\n" 4104msgid "Unindexing at %llu/%llu (%s remaining)\n"
4112msgstr "Desindexado en %llu/%llu (quedan %s)\n" 4105msgstr "Desindexado en %llu/%llu (quedan %s)\n"
4113 4106
4114#: src/fs/gnunet-unindex.c:93 4107#: src/fs/gnunet-unindex.c:95
4115#, c-format 4108#, c-format
4116msgid "Error unindexing: %s.\n" 4109msgid "Error unindexing: %s.\n"
4117msgstr "Error desindexando: %s.\n" 4110msgstr "Error desindexando: %s.\n"
4118 4111
4119#: src/fs/gnunet-unindex.c:98 4112#: src/fs/gnunet-unindex.c:100
4120msgid "Unindexing done.\n" 4113msgid "Unindexing done.\n"
4121msgstr "Desindexado finalizado.\n" 4114msgstr "Desindexado finalizado.\n"
4122 4115
4123#: src/fs/gnunet-unindex.c:127 4116#: src/fs/gnunet-unindex.c:129
4124#, c-format 4117#, c-format
4125msgid "You must specify one and only one filename for unindexing.\n" 4118msgid "You must specify one and only one filename for unindexing.\n"
4126msgstr "Se debe especificar uno y solo un fichero para desindexar.\n" 4119msgstr "Se debe especificar uno y solo un fichero para desindexar.\n"
4127 4120
4128#: src/fs/gnunet-unindex.c:144 4121#: src/fs/gnunet-unindex.c:146
4129msgid "Could not start unindex operation.\n" 4122msgid "Could not start unindex operation.\n"
4130msgstr "No se pudo empezar la operación de desindexado.\n" 4123msgstr "No se pudo empezar la operación de desindexado.\n"
4131 4124
4132#: src/fs/gnunet-unindex.c:176 4125#: src/fs/gnunet-unindex.c:178
4133msgid "Unindex a file that was previously indexed with gnunet-publish." 4126msgid "Unindex a file that was previously indexed with gnunet-publish."
4134msgstr "Desindexa un fichero previamente indexado con «gnunet-publish»." 4127msgstr "Desindexa un fichero previamente indexado con «gnunet-publish»."
4135 4128
4136#: src/gns/gns_tld_api.c:274 4129#: src/gns/gns_tld_api.c:348
4137msgid "Expected a base32-encoded public zone key\n" 4130msgid "Expected a base32-encoded public zone key\n"
4138msgstr "" 4131msgstr ""
4139 4132
4140#: src/gns/gnunet-bcd.c:125 4133#: src/gns/gnunet-bcd.c:127
4141#, fuzzy, c-format 4134#, fuzzy, c-format
4142msgid "Refusing `%s' request to HTTP server\n" 4135msgid "Refusing `%s' request to HTTP server\n"
4143msgstr "Rechazando petición «%s» al servidor de listas de máquinas\n" 4136msgstr "Rechazando petición «%s» al servidor de listas de máquinas\n"
4144 4137
4145#: src/gns/gnunet-bcd.c:355 4138#: src/gns/gnunet-bcd.c:357
4146#, fuzzy, c-format 4139#, fuzzy, c-format
4147msgid "Invalid port number %u. Exiting.\n" 4140msgid "Invalid port number %u. Exiting.\n"
4148msgstr "Número de puerto %llu no válido. Saliendo.\n" 4141msgstr "Número de puerto %llu no válido. Saliendo.\n"
4149 4142
4150#: src/gns/gnunet-bcd.c:360 4143#: src/gns/gnunet-bcd.c:362
4151#, fuzzy, c-format 4144#, fuzzy, c-format
4152msgid "Businesscard HTTP server starts on %u\n" 4145msgid "Businesscard HTTP server starts on %u\n"
4153msgstr "Servicio de listas de máquinas arranca en %s:%llu\n" 4146msgstr "Servicio de listas de máquinas arranca en %s:%llu\n"
4154 4147
4155#: src/gns/gnunet-bcd.c:374 4148#: src/gns/gnunet-bcd.c:376
4156#, fuzzy, c-format 4149#, fuzzy, c-format
4157msgid "Could not start businesscard HTTP server on port %u\n" 4150msgid "Could not start businesscard HTTP server on port %u\n"
4158msgstr "" 4151msgstr ""
4159"No se pudo arrancar un servidor de listas de máquinas HTTP en el puerto %u\n" 4152"No se pudo arrancar un servidor de listas de máquinas HTTP en el puerto %u\n"
4160 4153
4161#: src/gns/gnunet-bcd.c:521 4154#: src/gns/gnunet-bcd.c:523
4162msgid "Run HTTP serve on port PORT (default is 8888)" 4155msgid "Run HTTP serve on port PORT (default is 8888)"
4163msgstr "" 4156msgstr ""
4164 4157
4165#: src/gns/gnunet-bcd.c:534 4158#: src/gns/gnunet-bcd.c:536
4166msgid "GNUnet HTTP server to create business cards" 4159msgid "GNUnet HTTP server to create business cards"
4167msgstr "" 4160msgstr ""
4168 4161
4169#: src/gns/gnunet-dns2gns.c:201 4162#: src/gns/gnunet-dns2gns.c:203
4170msgid "Failed to pack DNS response into UDP packet!\n" 4163msgid "Failed to pack DNS response into UDP packet!\n"
4171msgstr "" 4164msgstr ""
4172"¡Se produjo un fallo al empaquetar una respuesta DNS en un paquete UDP!\n" 4165"¡Se produjo un fallo al empaquetar una respuesta DNS en un paquete UDP!\n"
4173 4166
4174#: src/gns/gnunet-dns2gns.c:403 4167#: src/gns/gnunet-dns2gns.c:405
4175#, c-format 4168#, c-format
4176msgid "Cannot parse DNS request from %s\n" 4169msgid "Cannot parse DNS request from %s\n"
4177msgstr "No se puede procesar la petición DNS de %s\n" 4170msgstr "No se puede procesar la petición DNS de %s\n"
4178 4171
4179#: src/gns/gnunet-dns2gns.c:419 4172#: src/gns/gnunet-dns2gns.c:421
4180#, c-format 4173#, c-format
4181msgid "Received malformed DNS request from %s\n" 4174msgid "Received malformed DNS request from %s\n"
4182msgstr "Recibida petición DNS mal formada de %s\n" 4175msgstr "Recibida petición DNS mal formada de %s\n"
4183 4176
4184#: src/gns/gnunet-dns2gns.c:427 4177#: src/gns/gnunet-dns2gns.c:429
4185#, c-format 4178#, c-format
4186msgid "Received unsupported DNS request from %s\n" 4179msgid "Received unsupported DNS request from %s\n"
4187msgstr "Recibida petición DNS no soportada de %s\n" 4180msgstr "Recibida petición DNS no soportada de %s\n"
4188 4181
4189#: src/gns/gnunet-dns2gns.c:586 4182#: src/gns/gnunet-dns2gns.c:588
4190#, fuzzy 4183#, fuzzy
4191msgid "No DNS server specified!\n" 4184msgid "No DNS server specified!\n"
4192msgstr "¡Ninguna palabra clave especificada!\n" 4185msgstr "¡Ninguna palabra clave especificada!\n"
4193 4186
4194#: src/gns/gnunet-dns2gns.c:686 4187#: src/gns/gnunet-dns2gns.c:688
4195msgid "IP of recursive DNS resolver to use (required)" 4188msgid "IP of recursive DNS resolver to use (required)"
4196msgstr "IP del resolvedor recursivo DNS a usar (requerido)" 4189msgstr "IP del resolvedor recursivo DNS a usar (requerido)"
4197 4190
4198#: src/gns/gnunet-dns2gns.c:691 4191#: src/gns/gnunet-dns2gns.c:693
4199#, fuzzy 4192#, fuzzy
4200msgid "UDP port to listen on for inbound DNS requests; default: 2853" 4193msgid "UDP port to listen on for inbound DNS requests; default: 2853"
4201msgstr "" 4194msgstr ""
4202"Puerto UDP en el que escuchar para peticiones DNS entrantes; predeterminado: " 4195"Puerto UDP en el que escuchar para peticiones DNS entrantes; predeterminado: "
4203"53" 4196"53"
4204 4197
4205#: src/gns/gnunet-dns2gns.c:708 4198#: src/gns/gnunet-dns2gns.c:710
4206msgid "GNUnet DNS-to-GNS proxy (a DNS server)" 4199msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
4207msgstr "Pasarela GNUnet DNS-a-GNS (un servidor DNS)" 4200msgstr "Pasarela GNUnet DNS-a-GNS (un servidor DNS)"
4208 4201
4209#: src/gns/gnunet-gns-benchmark.c:580 4202#: src/gns/gnunet-gns-benchmark.c:582
4210msgid "how long to wait between queries" 4203msgid "how long to wait between queries"
4211msgstr "" 4204msgstr ""
4212 4205
4213#: src/gns/gnunet-gns-benchmark.c:585 4206#: src/gns/gnunet-gns-benchmark.c:587
4214#, fuzzy 4207#, fuzzy
4215msgid "how long to wait for an answer" 4208msgid "how long to wait for an answer"
4216msgstr "¿cuánto tiempo se debe ejecutar? 0 = para siempre" 4209msgstr "¿cuánto tiempo se debe ejecutar? 0 = para siempre"
4217 4210
4218#: src/gns/gnunet-gns-benchmark.c:589 4211#: src/gns/gnunet-gns-benchmark.c:591
4219msgid "look for GNS2DNS records instead of ANY" 4212msgid "look for GNS2DNS records instead of ANY"
4220msgstr "" 4213msgstr ""
4221 4214
4222#: src/gns/gnunet-gns.c:197 4215#: src/gns/gnunet-gns.c:199
4223#, c-format 4216#, c-format
4224msgid "Invalid typename specified, assuming `ANY'\n" 4217msgid "Invalid typename specified, assuming `ANY'\n"
4225msgstr "" 4218msgstr ""
4226 4219
4227#: src/gns/gnunet-gns.c:231 4220#: src/gns/gnunet-gns.c:233
4228msgid "Lookup a record for the given name" 4221msgid "Lookup a record for the given name"
4229msgstr "Buscar el registro para el nombre dado" 4222msgstr "Buscar el registro para el nombre dado"
4230 4223
4231#: src/gns/gnunet-gns.c:236 4224#: src/gns/gnunet-gns.c:238
4232msgid "Specify the type of the record to lookup" 4225msgid "Specify the type of the record to lookup"
4233msgstr "Especificar el tipo del registro a buscar" 4226msgstr "Especificar el tipo del registro a buscar"
4234 4227
4235#: src/gns/gnunet-gns.c:240 4228#: src/gns/gnunet-gns.c:242
4236msgid "No unneeded output" 4229msgid "No unneeded output"
4237msgstr "Sin salida innecesaria" 4230msgstr "Sin salida innecesaria"
4238 4231
4239#: src/gns/gnunet-gns.c:256 4232#: src/gns/gnunet-gns.c:258
4240#, fuzzy 4233#, fuzzy
4241msgid "GNUnet GNS resolver tool" 4234msgid "GNUnet GNS resolver tool"
4242msgstr "Herramienta de acceso GNUnet GNS" 4235msgstr "Herramienta de acceso GNUnet GNS"
4243 4236
4244#: src/gns/gnunet-gns-helper-service-w32.c:600 4237#: src/gns/gnunet-gns-helper-service-w32.c:602
4245msgid "Not ready to process requests, lacking ego data\n" 4238msgid "Not ready to process requests, lacking ego data\n"
4246msgstr "" 4239msgstr ""
4247 4240
4248#: src/gns/gnunet-gns-helper-service-w32.c:699 4241#: src/gns/gnunet-gns-helper-service-w32.c:701
4249msgid "" 4242msgid ""
4250"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-" 4243"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-"
4251"gns-import.sh?\n" 4244"gns-import.sh?\n"
4252msgstr "" 4245msgstr ""
4253 4246
4254#: src/gns/gnunet-gns-helper-service-w32.c:737 4247#: src/gns/gnunet-gns-helper-service-w32.c:739
4255#, fuzzy, c-format 4248#, fuzzy, c-format
4256msgid "Failed to connect to identity service\n" 4249msgid "Failed to connect to identity service\n"
4257msgstr "Fallo al conectar a gnunetd.\n" 4250msgstr "Fallo al conectar a gnunetd.\n"
4258 4251
4259#: src/gns/gnunet-gns-import.c:450 4252#: src/gns/gnunet-gns-import.c:452
4260msgid "This program will import some GNS authorities into your GNS namestore." 4253msgid "This program will import some GNS authorities into your GNS namestore."
4261msgstr "" 4254msgstr ""
4262 4255
4263#: src/gns/gnunet-gns-proxy.c:110 4256#: src/gns/gnunet-gns-proxy.c:118
4264#: src/hostlist/gnunet-daemon-hostlist_client.c:533 4257#: src/hostlist/gnunet-daemon-hostlist_client.c:535
4265#: src/hostlist/gnunet-daemon-hostlist_client.c:751 4258#: src/hostlist/gnunet-daemon-hostlist_client.c:753
4266#: src/hostlist/gnunet-daemon-hostlist_client.c:757 4259#: src/hostlist/gnunet-daemon-hostlist_client.c:759
4267#: src/hostlist/gnunet-daemon-hostlist_client.c:809 4260#: src/hostlist/gnunet-daemon-hostlist_client.c:811
4268#: src/hostlist/gnunet-daemon-hostlist_client.c:818 4261#: src/hostlist/gnunet-daemon-hostlist_client.c:820
4269#: src/hostlist/gnunet-daemon-hostlist_client.c:929 4262#: src/hostlist/gnunet-daemon-hostlist_client.c:931
4270#: src/hostlist/gnunet-daemon-hostlist_client.c:1024 4263#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
4271#: src/hostlist/gnunet-daemon-hostlist_client.c:1029 4264#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
4272#: src/transport/plugin_transport_http_client.c:596 4265#: src/transport/plugin_transport_http_client.c:598
4273#: src/transport/plugin_transport_http_client.c:614 4266#: src/transport/plugin_transport_http_client.c:616
4274#, c-format 4267#, c-format
4275msgid "%s failed at %s:%d: `%s'\n" 4268msgid "%s failed at %s:%d: `%s'\n"
4276msgstr "%s falló en %s:%d: «%s».\n" 4269msgstr "%s falló en %s:%d: «%s».\n"
4277 4270
4278#: src/gns/gnunet-gns-proxy.c:960 4271#: src/gns/gnunet-gns-proxy.c:980
4279#, fuzzy, c-format 4272#, fuzzy, c-format
4280msgid "Unsupported CURL TLS backend %d\n" 4273msgid "Unsupported CURL TLS backend %d\n"
4281msgstr "Tipo de bloque %u no soportado\n" 4274msgstr "Tipo de bloque %u no soportado\n"
4282 4275
4283#: src/gns/gnunet-gns-proxy.c:985 4276#: src/gns/gnunet-gns-proxy.c:1005
4284#, fuzzy, c-format 4277#, fuzzy, c-format
4285msgid "Failed to fetch CN from cert: %s\n" 4278msgid "Failed to fetch CN from cert: %s\n"
4286msgstr "Se produjo un fallo al mandar la petición DNS a %s\n" 4279msgstr "Se produjo un fallo al mandar la petición DNS a %s\n"
4287 4280
4288#: src/gns/gnunet-gns-proxy.c:1008 4281#: src/gns/gnunet-gns-proxy.c:1026
4289#, fuzzy, c-format 4282#, fuzzy, c-format
4290msgid "Failed to initialize DANE: %s\n" 4283msgid "Failed to initialize DANE: %s\n"
4291msgstr "¡No se puede inicializar el resolvedor!\n" 4284msgstr "¡No se puede inicializar el resolvedor!\n"
4292 4285
4293#: src/gns/gnunet-gns-proxy.c:1021 4286#: src/gns/gnunet-gns-proxy.c:1041
4294#, fuzzy, c-format 4287#, fuzzy, c-format
4295msgid "Failed to parse DANE record: %s\n" 4288msgid "Failed to parse DANE record: %s\n"
4296msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" 4289msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n"
4297 4290
4298#: src/gns/gnunet-gns-proxy.c:1036 4291#: src/gns/gnunet-gns-proxy.c:1056
4299#, fuzzy, c-format 4292#, fuzzy, c-format
4300msgid "Failed to verify TLS connection using DANE: %s\n" 4293msgid "Failed to verify TLS connection using DANE: %s\n"
4301msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" 4294msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
4302 4295
4303#: src/gns/gnunet-gns-proxy.c:1046 4296#: src/gns/gnunet-gns-proxy.c:1066
4304#, c-format 4297#, c-format
4305msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" 4298msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
4306msgstr "" 4299msgstr ""
4307 4300
4308#: src/gns/gnunet-gns-proxy.c:1070 4301#: src/gns/gnunet-gns-proxy.c:1090
4309#, c-format 4302#, c-format
4310msgid "TLS certificate subject name (%s) does not match `%s': %d\n" 4303msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
4311msgstr "" 4304msgstr ""
4312 4305
4313#: src/gns/gnunet-gns-proxy.c:1200 4306#: src/gns/gnunet-gns-proxy.c:1221
4314#, c-format 4307#, c-format
4315msgid "Cookie domain `%s' supplied by server is invalid\n" 4308msgid "Cookie domain `%s' supplied by server is invalid\n"
4316msgstr "" 4309msgstr ""
4317 4310
4318#: src/gns/gnunet-gns-proxy.c:2062 4311#: src/gns/gnunet-gns-proxy.c:2121
4319#, fuzzy, c-format 4312#, fuzzy, c-format
4320msgid "Unsupported HTTP method `%s'\n" 4313msgid "Unsupported HTTP method `%s'\n"
4321msgstr "Tipo no soportado «%s»\n" 4314msgstr "Tipo no soportado «%s»\n"
4322 4315
4323#: src/gns/gnunet-gns-proxy.c:2583 4316#: src/gns/gnunet-gns-proxy.c:2642
4324#, c-format 4317#, c-format
4325msgid "Unable to import private key from file `%s'\n" 4318msgid "Unable to import private key from file `%s'\n"
4326msgstr "No se pudo importar la clave privada del fichero «%s»\n" 4319msgstr "No se pudo importar la clave privada del fichero «%s»\n"
4327 4320
4328#: src/gns/gnunet-gns-proxy.c:2615 4321#: src/gns/gnunet-gns-proxy.c:2674
4329#, fuzzy, c-format 4322#, fuzzy, c-format
4330msgid "Unable to import certificate from `%s'\n" 4323msgid "Unable to import certificate from `%s'\n"
4331msgstr "No se pudo importar el certificado %s\n" 4324msgstr "No se pudo importar el certificado %s\n"
4332 4325
4333#: src/gns/gnunet-gns-proxy.c:2814 4326#: src/gns/gnunet-gns-proxy.c:2875
4334#, fuzzy, c-format 4327#, fuzzy, c-format
4335msgid "Failed to start HTTPS server for `%s'\n" 4328msgid "Failed to start HTTPS server for `%s'\n"
4336msgstr "Se produjo un fallo al iniciar el servidor HTTP\n" 4329msgstr "Se produjo un fallo al iniciar el servidor HTTP\n"
4337 4330
4338#: src/gns/gnunet-gns-proxy.c:2839 src/rest/gnunet-rest-server.c:656 4331#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
4339#, fuzzy 4332#, fuzzy
4340msgid "Failed to pass client to MHD\n" 4333msgid "Failed to pass client to MHD\n"
4341msgstr "Se produjo un fallo al conectar con GNS\n" 4334msgstr "Se produjo un fallo al conectar con GNS\n"
4342 4335
4343#: src/gns/gnunet-gns-proxy.c:3169 4336#: src/gns/gnunet-gns-proxy.c:3233
4344#, fuzzy, c-format 4337#, fuzzy, c-format
4345msgid "Unsupported socks version %d\n" 4338msgid "Unsupported socks version %d\n"
4346msgstr "Tipo de bloque %u no soportado\n" 4339msgstr "Tipo de bloque %u no soportado\n"
4347 4340
4348#: src/gns/gnunet-gns-proxy.c:3198 4341#: src/gns/gnunet-gns-proxy.c:3262
4349#, fuzzy, c-format 4342#, fuzzy, c-format
4350msgid "Unsupported socks command %d\n" 4343msgid "Unsupported socks command %d\n"
4351msgstr "Tipo de bloque %u no soportado\n" 4344msgstr "Tipo de bloque %u no soportado\n"
4352 4345
4353#: src/gns/gnunet-gns-proxy.c:3280 4346#: src/gns/gnunet-gns-proxy.c:3345
4354#, fuzzy, c-format 4347#, fuzzy, c-format
4355msgid "Unsupported socks address type %d\n" 4348msgid "Unsupported socks address type %d\n"
4356msgstr "Tipo de bloque %u no soportado\n" 4349msgstr "Tipo de bloque %u no soportado\n"
4357 4350
4358#: src/gns/gnunet-gns-proxy.c:3570 4351#: src/gns/gnunet-gns-proxy.c:3635
4359#, fuzzy, c-format 4352#, fuzzy, c-format
4360msgid "Failed to load X.509 key and certificate from `%s'\n" 4353msgid "Failed to load X.509 key and certificate from `%s'\n"
4361msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n" 4354msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n"
4362 4355
4363#: src/gns/gnunet-gns-proxy.c:3698 4356#: src/gns/gnunet-gns-proxy.c:3763
4364msgid "listen on specified port (default: 7777)" 4357msgid "listen on specified port (default: 7777)"
4365msgstr "escuchar en el puerto especificado (predeterminado: 7777)" 4358msgstr "escuchar en el puerto especificado (predeterminado: 7777)"
4366 4359
4367#: src/gns/gnunet-gns-proxy.c:3703 4360#: src/gns/gnunet-gns-proxy.c:3768
4368msgid "pem file to use as CA" 4361msgid "pem file to use as CA"
4369msgstr "fichero pem para usar como autoridad de certificación (CA)" 4362msgstr "fichero pem para usar como autoridad de certificación (CA)"
4370 4363
4371#: src/gns/gnunet-gns-proxy.c:3707 4364#: src/gns/gnunet-gns-proxy.c:3772
4372msgid "disable use of IPv6" 4365msgid "disable use of IPv6"
4373msgstr "" 4366msgstr ""
4374 4367
4375#: src/gns/gnunet-gns-proxy.c:3733 4368#: src/gns/gnunet-gns-proxy.c:3798
4376msgid "GNUnet GNS proxy" 4369msgid "GNUnet GNS proxy"
4377msgstr "Proxy GNUnet GNS" 4370msgstr "Proxy GNUnet GNS"
4378 4371
4379#: src/gns/gnunet-service-gns.c:511 4372#: src/gns/gnunet-service-gns.c:506
4380#, fuzzy 4373#, fuzzy
4381msgid "Properly base32-encoded public key required" 4374msgid "Properly base32-encoded public key required"
4382msgstr "Tipo requerido\n" 4375msgstr "Tipo requerido\n"
4383 4376
4384#: src/gns/gnunet-service-gns.c:547 4377#: src/gns/gnunet-service-gns.c:542
4385#, fuzzy 4378#, fuzzy
4386msgid "Failed to connect to the namecache!\n" 4379msgid "Failed to connect to the namecache!\n"
4387msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n" 4380msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
4388 4381
4389#: src/gns/gnunet-service-gns.c:566 4382#: src/gns/gnunet-service-gns.c:561
4390#: src/zonemaster/gnunet-service-zonemaster.c:873 4383#: src/zonemaster/gnunet-service-zonemaster.c:875
4391#: src/zonemaster/gnunet-service-zonemaster-monitor.c:438 4384#: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
4392msgid "Could not connect to DHT!\n" 4385msgid "Could not connect to DHT!\n"
4393msgstr "¡No se pudo conectar a la DHT!\n" 4386msgstr "¡No se pudo conectar a la DHT!\n"
4394 4387
4395#: src/gns/gnunet-service-gns_interceptor.c:257 4388#: src/gns/gnunet-service-gns_interceptor.c:259
4396#, fuzzy 4389#, fuzzy
4397msgid "Error converting GNS response to DNS response!\n" 4390msgid "Error converting GNS response to DNS response!\n"
4398msgstr "¡Se produjo un error al convertir los argumentos a una URI!\n" 4391msgstr "¡Se produjo un error al convertir los argumentos a una URI!\n"
4399 4392
4400#: src/gns/gnunet-service-gns_interceptor.c:364 4393#: src/gns/gnunet-service-gns_interceptor.c:366
4401#, fuzzy 4394#, fuzzy
4402msgid "Failed to connect to the DNS service!\n" 4395msgid "Failed to connect to the DNS service!\n"
4403msgstr "¡Se produjo un fallo al conectar con el servicio GNS!\n" 4396msgstr "¡Se produjo un fallo al conectar con el servicio GNS!\n"
4404 4397
4405#: src/gns/gnunet-service-gns_resolver.c:717 4398#: src/gns/gnunet-service-gns_resolver.c:700
4406#, fuzzy, c-format 4399#, fuzzy, c-format
4407msgid "Protocol `%s' unknown, skipping labels.\n" 4400msgid "Protocol `%s' unknown, skipping labels.\n"
4408msgstr "Módulo «%s» no encontrado\n" 4401msgstr "Módulo «%s» no encontrado\n"
4409 4402
4410#: src/gns/gnunet-service-gns_resolver.c:728 4403#: src/gns/gnunet-service-gns_resolver.c:711
4411#, c-format 4404#, c-format
4412msgid "Service `%s' unknown for protocol `%s', skipping labels.\n" 4405msgid "Service `%s' unknown for protocol `%s', skipping labels.\n"
4413msgstr "" 4406msgstr ""
4414 4407
4415#: src/gns/gnunet-service-gns_resolver.c:931 4408#: src/gns/gnunet-service-gns_resolver.c:914
4416#, fuzzy 4409#, fuzzy
4417msgid "Failed to parse DNS response\n" 4410msgid "Failed to parse DNS response\n"
4418msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" 4411msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n"
4419 4412
4420#: src/gns/gnunet-service-gns_resolver.c:1112 4413#: src/gns/gnunet-service-gns_resolver.c:1095
4421#, c-format 4414#, c-format
4422msgid "Skipping record of unsupported type %d\n" 4415msgid "Skipping record of unsupported type %d\n"
4423msgstr "" 4416msgstr ""
4424 4417
4425#: src/gns/gnunet-service-gns_resolver.c:1382 4418#: src/gns/gnunet-service-gns_resolver.c:1365
4426#, fuzzy, c-format 4419#, fuzzy, c-format
4427msgid "VPN returned empty result for `%s'\n" 4420msgid "VPN returned empty result for `%s'\n"
4428msgstr "El ATS devolvió resultados para %u direcciones\n" 4421msgstr "El ATS devolvió resultados para %u direcciones\n"
4429 4422
4430#: src/gns/gnunet-service-gns_resolver.c:1823 4423#: src/gns/gnunet-service-gns_resolver.c:1806
4431#, c-format 4424#, c-format
4432msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" 4425msgid "GNS lookup resulted in DNS name that is too long (`%s')\n"
4433msgstr "" 4426msgstr ""
4434 4427
4435#: src/gns/gnunet-service-gns_resolver.c:1866 4428#: src/gns/gnunet-service-gns_resolver.c:1849
4436#, fuzzy, c-format 4429#, fuzzy, c-format
4437msgid "GNS lookup failed (zero records found for `%s')\n" 4430msgid "GNS lookup failed (zero records found for `%s')\n"
4438msgstr "No se han encontrado ficheros en «%s»\n" 4431msgstr "No se han encontrado ficheros en «%s»\n"
4439 4432
4440#: src/gns/gnunet-service-gns_resolver.c:2281 4433#: src/gns/gnunet-service-gns_resolver.c:2264
4441msgid "GNS lookup recursion failed (no delegation record found)\n" 4434msgid "GNS lookup recursion failed (no delegation record found)\n"
4442msgstr "" 4435msgstr ""
4443 4436
4444#: src/gns/gnunet-service-gns_resolver.c:2304 4437#: src/gns/gnunet-service-gns_resolver.c:2287
4445#, fuzzy, c-format 4438#, fuzzy, c-format
4446msgid "Failed to cache GNS resolution: %s\n" 4439msgid "Failed to cache GNS resolution: %s\n"
4447msgstr "Se produjo un fallo al mandar la petición DNS a %s\n" 4440msgstr "Se produjo un fallo al mandar la petición DNS a %s\n"
4448 4441
4449#: src/gns/gnunet-service-gns_resolver.c:2467 4442#: src/gns/gnunet-service-gns_resolver.c:2450
4450#, c-format 4443#, c-format
4451msgid "GNS namecache returned empty result for `%s'\n" 4444msgid "GNS namecache returned empty result for `%s'\n"
4452msgstr "" 4445msgstr ""
4453 4446
4454#: src/gns/gnunet-service-gns_resolver.c:2602 4447#: src/gns/gnunet-service-gns_resolver.c:2585
4455#, c-format 4448#, c-format
4456msgid "Zone %s was revoked, resolution fails\n" 4449msgid "Zone %s was revoked, resolution fails\n"
4457msgstr "" 4450msgstr ""
4458 4451
4459#: src/gns/plugin_gnsrecord_gns.c:179 4452#: src/gns/plugin_gnsrecord_gns.c:181
4460#, c-format 4453#, c-format
4461msgid "Unable to parse PKEY record `%s'\n" 4454msgid "Unable to parse PKEY record `%s'\n"
4462msgstr "No se pudo procesar el registro PKEY «%s»\n" 4455msgstr "No se pudo procesar el registro PKEY «%s»\n"
4463 4456
4464#: src/gns/plugin_gnsrecord_gns.c:210 4457#: src/gns/plugin_gnsrecord_gns.c:212
4465#, fuzzy, c-format 4458#, fuzzy, c-format
4466msgid "Unable to parse GNS2DNS record `%s'\n" 4459msgid "Unable to parse GNS2DNS record `%s'\n"
4467msgstr "No se pudo procesar el registro SOA «%s»\n" 4460msgstr "No se pudo procesar el registro SOA «%s»\n"
4468 4461
4469#: src/gns/plugin_gnsrecord_gns.c:231 4462#: src/gns/plugin_gnsrecord_gns.c:233
4470#, fuzzy, c-format 4463#, fuzzy, c-format
4471msgid "Failed to serialize GNS2DNS record with value `%s'\n" 4464msgid "Failed to serialize GNS2DNS record with value `%s'\n"
4472msgstr "" 4465msgstr ""
4473"Se produjo un fallo al escribir el directorio con los resultados de búsqueda " 4466"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
4474"de «%s»\n" 4467"de «%s»\n"
4475 4468
4476#: src/gns/plugin_gnsrecord_gns.c:256 4469#: src/gns/plugin_gnsrecord_gns.c:258
4477#, c-format 4470#, c-format
4478msgid "Unable to parse VPN record string `%s'\n" 4471msgid "Unable to parse VPN record string `%s'\n"
4479msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" 4472msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
4480 4473
4481#: src/gns/plugin_gnsrecord_gns.c:292 4474#: src/gns/plugin_gnsrecord_gns.c:294
4482#, fuzzy, c-format 4475#, fuzzy, c-format
4483msgid "Unable to parse BOX record string `%s'\n" 4476msgid "Unable to parse BOX record string `%s'\n"
4484msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" 4477msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
4485 4478
4486#: src/gnsrecord/plugin_gnsrecord_dns.c:357 4479#: src/gnsrecord/plugin_gnsrecord_dns.c:359
4487#, c-format 4480#, c-format
4488msgid "Unable to parse IPv4 address `%s'\n" 4481msgid "Unable to parse IPv4 address `%s'\n"
4489msgstr "No se pudo procesar la dirección IPv4 «%s»\n" 4482msgstr "No se pudo procesar la dirección IPv4 «%s»\n"
4490 4483
4491#: src/gnsrecord/plugin_gnsrecord_dns.c:378 4484#: src/gnsrecord/plugin_gnsrecord_dns.c:380
4492#, fuzzy, c-format 4485#, fuzzy, c-format
4493msgid "Failed to serialize NS record with value `%s'\n" 4486msgid "Failed to serialize NS record with value `%s'\n"
4494msgstr "" 4487msgstr ""
4495"Se produjo un fallo al escribir el directorio con los resultados de búsqueda " 4488"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
4496"de «%s»\n" 4489"de «%s»\n"
4497 4490
4498#: src/gnsrecord/plugin_gnsrecord_dns.c:400 4491#: src/gnsrecord/plugin_gnsrecord_dns.c:402
4499#, fuzzy, c-format 4492#, fuzzy, c-format
4500msgid "Failed to serialize CNAME record with value `%s'\n" 4493msgid "Failed to serialize CNAME record with value `%s'\n"
4501msgstr "" 4494msgstr ""
4502"Se produjo un fallo al escribir el directorio con los resultados de búsqueda " 4495"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
4503"de «%s»\n" 4496"de «%s»\n"
4504 4497
4505#: src/gnsrecord/plugin_gnsrecord_dns.c:485 4498#: src/gnsrecord/plugin_gnsrecord_dns.c:487
4506#, fuzzy, c-format 4499#, fuzzy, c-format
4507msgid "Failed to serialize CERT record with %u bytes\n" 4500msgid "Failed to serialize CERT record with %u bytes\n"
4508msgstr "" 4501msgstr ""
4509"Se produjo un fallo al escribir el directorio con los resultados de búsqueda " 4502"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
4510"de «%s»\n" 4503"de «%s»\n"
4511 4504
4512#: src/gnsrecord/plugin_gnsrecord_dns.c:521 4505#: src/gnsrecord/plugin_gnsrecord_dns.c:523
4513#, c-format 4506#, c-format
4514msgid "Unable to parse SOA record `%s'\n" 4507msgid "Unable to parse SOA record `%s'\n"
4515msgstr "No se pudo procesar el registro SOA «%s»\n" 4508msgstr "No se pudo procesar el registro SOA «%s»\n"
4516 4509
4517#: src/gnsrecord/plugin_gnsrecord_dns.c:540 4510#: src/gnsrecord/plugin_gnsrecord_dns.c:542
4518#, fuzzy, c-format 4511#, fuzzy, c-format
4519msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n" 4512msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
4520msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n" 4513msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n"
4521 4514
4522#: src/gnsrecord/plugin_gnsrecord_dns.c:563 4515#: src/gnsrecord/plugin_gnsrecord_dns.c:565
4523#, fuzzy, c-format 4516#, fuzzy, c-format
4524msgid "Failed to serialize PTR record with value `%s'\n" 4517msgid "Failed to serialize PTR record with value `%s'\n"
4525msgstr "" 4518msgstr ""
4526"Se produjo un fallo al escribir el directorio con los resultados de búsqueda " 4519"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
4527"de «%s»\n" 4520"de «%s»\n"
4528 4521
4529#: src/gnsrecord/plugin_gnsrecord_dns.c:586 4522#: src/gnsrecord/plugin_gnsrecord_dns.c:588
4530#, c-format 4523#, c-format
4531msgid "Unable to parse MX record `%s'\n" 4524msgid "Unable to parse MX record `%s'\n"
4532msgstr "No se pudo procesar el registro MX «%s»\n" 4525msgstr "No se pudo procesar el registro MX «%s»\n"
4533 4526
4534#: src/gnsrecord/plugin_gnsrecord_dns.c:601 4527#: src/gnsrecord/plugin_gnsrecord_dns.c:603
4535#, fuzzy, c-format 4528#, fuzzy, c-format
4536msgid "Failed to serialize MX record with hostname `%s'\n" 4529msgid "Failed to serialize MX record with hostname `%s'\n"
4537msgstr "" 4530msgstr ""
4538"Se produjo un fallo al escribir el directorio con los resultados de búsqueda " 4531"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
4539"de «%s»\n" 4532"de «%s»\n"
4540 4533
4541#: src/gnsrecord/plugin_gnsrecord_dns.c:628 4534#: src/gnsrecord/plugin_gnsrecord_dns.c:630
4542#, fuzzy, c-format 4535#, fuzzy, c-format
4543msgid "Unable to parse SRV record `%s'\n" 4536msgid "Unable to parse SRV record `%s'\n"
4544msgstr "No se pudo procesar el registro SOA «%s»\n" 4537msgstr "No se pudo procesar el registro SOA «%s»\n"
4545 4538
4546#: src/gnsrecord/plugin_gnsrecord_dns.c:644 4539#: src/gnsrecord/plugin_gnsrecord_dns.c:646
4547#, fuzzy, c-format 4540#, fuzzy, c-format
4548msgid "Failed to serialize SRV record with target `%s'\n" 4541msgid "Failed to serialize SRV record with target `%s'\n"
4549msgstr "" 4542msgstr ""
4550"Se produjo un fallo al escribir el directorio con los resultados de búsqueda " 4543"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
4551"de «%s»\n" 4544"de «%s»\n"
4552 4545
4553#: src/gnsrecord/plugin_gnsrecord_dns.c:661 4546#: src/gnsrecord/plugin_gnsrecord_dns.c:663
4554#, c-format 4547#, c-format
4555msgid "Unable to parse IPv6 address `%s'\n" 4548msgid "Unable to parse IPv6 address `%s'\n"
4556msgstr "No se pudo procesar dirección IPv4 «%s»\n" 4549msgstr "No se pudo procesar dirección IPv4 «%s»\n"
4557 4550
4558#: src/gnsrecord/plugin_gnsrecord_dns.c:685 4551#: src/gnsrecord/plugin_gnsrecord_dns.c:687
4559#: src/gnsrecord/plugin_gnsrecord_dns.c:701 4552#: src/gnsrecord/plugin_gnsrecord_dns.c:703
4560#, c-format 4553#, c-format
4561msgid "Unable to parse TLSA record string `%s'\n" 4554msgid "Unable to parse TLSA record string `%s'\n"
4562msgstr "No se pudo procesar la cadena de registro TLSA «%s»\n" 4555msgstr "No se pudo procesar la cadena de registro TLSA «%s»\n"
4563 4556
4564#: src/hello/gnunet-hello.c:124 4557#: src/hello/gnunet-hello.c:126
4565msgid "Call with name of HELLO file to modify.\n" 4558msgid "Call with name of HELLO file to modify.\n"
4566msgstr "Llamar con el nombre del fichero «HELLO» para modificar.\n" 4559msgstr "Llamar con el nombre del fichero «HELLO» para modificar.\n"
4567 4560
4568#: src/hello/gnunet-hello.c:130 4561#: src/hello/gnunet-hello.c:132
4569#, c-format 4562#, c-format
4570msgid "Error accessing file `%s': %s\n" 4563msgid "Error accessing file `%s': %s\n"
4571msgstr "Error accediendo al fichero «%s»: %s\n" 4564msgstr "Error accediendo al fichero «%s»: %s\n"
4572 4565
4573#: src/hello/gnunet-hello.c:138 4566#: src/hello/gnunet-hello.c:140
4574#, c-format 4567#, c-format
4575msgid "File `%s' is too big to be a HELLO\n" 4568msgid "File `%s' is too big to be a HELLO\n"
4576msgstr "El fichero «%s» es demasiado grande para ser un «HELLO»\n" 4569msgstr "El fichero «%s» es demasiado grande para ser un «HELLO»\n"
4577 4570
4578#: src/hello/gnunet-hello.c:145 4571#: src/hello/gnunet-hello.c:147
4579#, c-format 4572#, c-format
4580msgid "File `%s' is too small to be a HELLO\n" 4573msgid "File `%s' is too small to be a HELLO\n"
4581msgstr "El fichero «%s» es demasiado pequeño para ser un «HELLO»\n" 4574msgstr "El fichero «%s» es demasiado pequeño para ser un «HELLO»\n"
4582 4575
4583#: src/hello/gnunet-hello.c:155 src/hello/gnunet-hello.c:196 4576#: src/hello/gnunet-hello.c:157 src/hello/gnunet-hello.c:198
4584#, c-format 4577#, c-format
4585msgid "Error opening file `%s': %s\n" 4578msgid "Error opening file `%s': %s\n"
4586msgstr "Error abriendo fichero «%s»: %s\n" 4579msgstr "Error abriendo fichero «%s»: %s\n"
4587 4580
4588#: src/hello/gnunet-hello.c:172 4581#: src/hello/gnunet-hello.c:174
4589#, c-format 4582#, c-format
4590msgid "Did not find well-formed HELLO in file `%s'\n" 4583msgid "Did not find well-formed HELLO in file `%s'\n"
4591msgstr "No se encontró un «HELLO» bien formado en el fichero «%s»\n" 4584msgstr "No se encontró un «HELLO» bien formado en el fichero «%s»\n"
4592 4585
4593#: src/hello/gnunet-hello.c:208 4586#: src/hello/gnunet-hello.c:210
4594#, c-format 4587#, c-format
4595msgid "Error writing HELLO to file `%s': %s\n" 4588msgid "Error writing HELLO to file `%s': %s\n"
4596msgstr "Error escribiendo «HELLO» al fichero «%s»: %s\n" 4589msgstr "Error escribiendo «HELLO» al fichero «%s»: %s\n"
4597 4590
4598#: src/hello/gnunet-hello.c:217 4591#: src/hello/gnunet-hello.c:219
4599#, c-format 4592#, c-format
4600msgid "Modified %u addresses, wrote %u bytes\n" 4593msgid "Modified %u addresses, wrote %u bytes\n"
4601msgstr "" 4594msgstr ""
4602 4595
4603#: src/hello/hello.c:1108 4596#: src/hello/hello.c:1110
4604msgid "Failed to parse HELLO message: missing expiration time\n" 4597msgid "Failed to parse HELLO message: missing expiration time\n"
4605msgstr "" 4598msgstr ""
4606"Se produjo un fallo al procesar un mensaje «HELLO»: falta el tiempo de " 4599"Se produjo un fallo al procesar un mensaje «HELLO»: falta el tiempo de "
4607"expiración\n" 4600"expiración\n"
4608 4601
4609#: src/hello/hello.c:1117 4602#: src/hello/hello.c:1119
4610msgid "Failed to parse HELLO message: invalid expiration time\n" 4603msgid "Failed to parse HELLO message: invalid expiration time\n"
4611msgstr "" 4604msgstr ""
4612"Se produjo un fallo al procesar un mensaje «HELLO»: tiempo de expiración no " 4605"Se produjo un fallo al procesar un mensaje «HELLO»: tiempo de expiración no "
4613"válido\n" 4606"válido\n"
4614 4607
4615#: src/hello/hello.c:1127 4608#: src/hello/hello.c:1129
4616msgid "Failed to parse HELLO message: malformed\n" 4609msgid "Failed to parse HELLO message: malformed\n"
4617msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n" 4610msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n"
4618 4611
4619#: src/hello/hello.c:1138 4612#: src/hello/hello.c:1140
4620msgid "Failed to parse HELLO message: missing transport plugin\n" 4613msgid "Failed to parse HELLO message: missing transport plugin\n"
4621msgstr "" 4614msgstr ""
4622"Se produjo un fallo al procesar un mensaje «HELLO»: falta el módulo de " 4615"Se produjo un fallo al procesar un mensaje «HELLO»: falta el módulo de "
4623"transporte\n" 4616"transporte\n"
4624 4617
4625#: src/hello/hello.c:1156 4618#: src/hello/hello.c:1158
4626#, fuzzy, c-format 4619#, fuzzy, c-format
4627msgid "Plugin `%s' not found, skipping address\n" 4620msgid "Plugin `%s' not found, skipping address\n"
4628msgstr "Módulo «%s» no encontrado\n" 4621msgstr "Módulo «%s» no encontrado\n"
4629 4622
4630#: src/hello/hello.c:1164 4623#: src/hello/hello.c:1166
4631#, c-format 4624#, c-format
4632msgid "Plugin `%s' does not support URIs yet\n" 4625msgid "Plugin `%s' does not support URIs yet\n"
4633msgstr "El módulo «%s» no soporta URI todavía\n" 4626msgstr "El módulo «%s» no soporta URI todavía\n"
4634 4627
4635#: src/hello/hello.c:1179 4628#: src/hello/hello.c:1181
4636#, c-format 4629#, c-format
4637msgid "Failed to parse `%s' as an address for plugin `%s'\n" 4630msgid "Failed to parse `%s' as an address for plugin `%s'\n"
4638msgstr "" 4631msgstr ""
4639"Se produjo un fallo al procesar «%s» como una dirección para el módulo «%s»\n" 4632"Se produjo un fallo al procesar «%s» como una dirección para el módulo «%s»\n"
4640 4633
4641#: src/hostlist/gnunet-daemon-hostlist.c:314 4634#: src/hostlist/gnunet-daemon-hostlist.c:316
4642msgid "" 4635msgid ""
4643"None of the functions for the hostlist daemon were enabled. I have no " 4636"None of the functions for the hostlist daemon were enabled. I have no "
4644"reason to run!\n" 4637"reason to run!\n"
@@ -4646,11 +4639,11 @@ msgstr ""
4646"Ninguna de las funciones para el demonio de listas de máquinas fue " 4639"Ninguna de las funciones para el demonio de listas de máquinas fue "
4647"activada. ¡No tengo razón para ejecutarme!\n" 4640"activada. ¡No tengo razón para ejecutarme!\n"
4648 4641
4649#: src/hostlist/gnunet-daemon-hostlist.c:374 4642#: src/hostlist/gnunet-daemon-hostlist.c:376
4650msgid "advertise our hostlist to other peers" 4643msgid "advertise our hostlist to other peers"
4651msgstr "anuncia nuestra lista de máquinas a otros pares" 4644msgstr "anuncia nuestra lista de máquinas a otros pares"
4652 4645
4653#: src/hostlist/gnunet-daemon-hostlist.c:379 4646#: src/hostlist/gnunet-daemon-hostlist.c:381
4654msgid "" 4647msgid ""
4655"bootstrap using hostlists (it is highly recommended that you always use this " 4648"bootstrap using hostlists (it is highly recommended that you always use this "
4656"option)" 4649"option)"
@@ -4658,49 +4651,49 @@ msgstr ""
4658"realizar inicialización usando listas de máquinas (es altamente recomendable " 4651"realizar inicialización usando listas de máquinas (es altamente recomendable "
4659"que siempre se use esta opción)" 4652"que siempre se use esta opción)"
4660 4653
4661#: src/hostlist/gnunet-daemon-hostlist.c:383 4654#: src/hostlist/gnunet-daemon-hostlist.c:385
4662msgid "enable learning about hostlist servers from other peers" 4655msgid "enable learning about hostlist servers from other peers"
4663msgstr "" 4656msgstr ""
4664"habilitar aprendizaje de servidores de listas de máquinas de otros pares" 4657"habilitar aprendizaje de servidores de listas de máquinas de otros pares"
4665 4658
4666#: src/hostlist/gnunet-daemon-hostlist.c:388 4659#: src/hostlist/gnunet-daemon-hostlist.c:390
4667msgid "provide a hostlist server" 4660msgid "provide a hostlist server"
4668msgstr "proveer un servidor de listas de máquinas" 4661msgstr "proveer un servidor de listas de máquinas"
4669 4662
4670#: src/hostlist/gnunet-daemon-hostlist.c:404 4663#: src/hostlist/gnunet-daemon-hostlist.c:406
4671msgid "GNUnet hostlist server and client" 4664msgid "GNUnet hostlist server and client"
4672msgstr "Servidor y cliente GNUnet de listas de máquinas" 4665msgstr "Servidor y cliente GNUnet de listas de máquinas"
4673 4666
4674#: src/hostlist/gnunet-daemon-hostlist_client.c:347 4667#: src/hostlist/gnunet-daemon-hostlist_client.c:349
4675msgid "# bytes downloaded from hostlist servers" 4668msgid "# bytes downloaded from hostlist servers"
4676msgstr "# bytes descargados de servidores de listas de máquinas" 4669msgstr "# bytes descargados de servidores de listas de máquinas"
4677 4670
4678#: src/hostlist/gnunet-daemon-hostlist_client.c:368 4671#: src/hostlist/gnunet-daemon-hostlist_client.c:370
4679#: src/hostlist/gnunet-daemon-hostlist_client.c:401 4672#: src/hostlist/gnunet-daemon-hostlist_client.c:403
4680msgid "# invalid HELLOs downloaded from hostlist servers" 4673msgid "# invalid HELLOs downloaded from hostlist servers"
4681msgstr "# «HELLO» no válidos descargados de servidores de listas de máquinas" 4674msgstr "# «HELLO» no válidos descargados de servidores de listas de máquinas"
4682 4675
4683#: src/hostlist/gnunet-daemon-hostlist_client.c:371 4676#: src/hostlist/gnunet-daemon-hostlist_client.c:373
4684#: src/hostlist/gnunet-daemon-hostlist_client.c:404 4677#: src/hostlist/gnunet-daemon-hostlist_client.c:406
4685#, c-format 4678#, c-format
4686msgid "Invalid `%s' message received from hostlist at `%s'\n" 4679msgid "Invalid `%s' message received from hostlist at `%s'\n"
4687msgstr "Mensaje «%s» no válido recibido de la lista de máquinas en «%s»\n" 4680msgstr "Mensaje «%s» no válido recibido de la lista de máquinas en «%s»\n"
4688 4681
4689#: src/hostlist/gnunet-daemon-hostlist_client.c:389 4682#: src/hostlist/gnunet-daemon-hostlist_client.c:391
4690msgid "# valid HELLOs downloaded from hostlist servers" 4683msgid "# valid HELLOs downloaded from hostlist servers"
4691msgstr "# «HELLO» válidos descargados de servidores de listas de máquinas" 4684msgstr "# «HELLO» válidos descargados de servidores de listas de máquinas"
4692 4685
4693#: src/hostlist/gnunet-daemon-hostlist_client.c:659 4686#: src/hostlist/gnunet-daemon-hostlist_client.c:661
4694#: src/hostlist/gnunet-daemon-hostlist_client.c:1405 4687#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
4695msgid "# advertised hostlist URIs" 4688msgid "# advertised hostlist URIs"
4696msgstr "# URI de listas de máquinas anunciadas" 4689msgstr "# URI de listas de máquinas anunciadas"
4697 4690
4698#: src/hostlist/gnunet-daemon-hostlist_client.c:689 4691#: src/hostlist/gnunet-daemon-hostlist_client.c:691
4699#, c-format 4692#, c-format
4700msgid "# advertised URI `%s' downloaded" 4693msgid "# advertised URI `%s' downloaded"
4701msgstr "# URI anunciadas «%s» descargadas" 4694msgstr "# URI anunciadas «%s» descargadas"
4702 4695
4703#: src/hostlist/gnunet-daemon-hostlist_client.c:732 4696#: src/hostlist/gnunet-daemon-hostlist_client.c:734
4704#, c-format 4697#, c-format
4705msgid "" 4698msgid ""
4706"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI " 4699"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
@@ -4709,120 +4702,120 @@ msgstr ""
4709"Lista de máquinas anunciada con la URI «%s» no pudo ser descargada. La URI " 4702"Lista de máquinas anunciada con la URI «%s» no pudo ser descargada. La URI "
4710"anunciada es descartada.\n" 4703"anunciada es descartada.\n"
4711 4704
4712#: src/hostlist/gnunet-daemon-hostlist_client.c:860 4705#: src/hostlist/gnunet-daemon-hostlist_client.c:862
4713#, c-format 4706#, c-format
4714msgid "Timeout trying to download hostlist from `%s'\n" 4707msgid "Timeout trying to download hostlist from `%s'\n"
4715msgstr "" 4708msgstr ""
4716"Finalizado el plazo mientras se intentaba bajar lista de máquinas de «%s»\n" 4709"Finalizado el plazo mientras se intentaba bajar lista de máquinas de «%s»\n"
4717 4710
4718#: src/hostlist/gnunet-daemon-hostlist_client.c:874 4711#: src/hostlist/gnunet-daemon-hostlist_client.c:876
4719#, c-format 4712#, c-format
4720msgid "Download limit of %u bytes exceeded, stopping download\n" 4713msgid "Download limit of %u bytes exceeded, stopping download\n"
4721msgstr "Límite de descarga de %u bytes superado, parando descarga\n" 4714msgstr "Límite de descarga de %u bytes superado, parando descarga\n"
4722 4715
4723#: src/hostlist/gnunet-daemon-hostlist_client.c:894 4716#: src/hostlist/gnunet-daemon-hostlist_client.c:896
4724#, c-format 4717#, c-format
4725msgid "Download of hostlist from `%s' failed: `%s'\n" 4718msgid "Download of hostlist from `%s' failed: `%s'\n"
4726msgstr "Descarga de lista de máquinas de «%s» fallida: «%s»\n" 4719msgstr "Descarga de lista de máquinas de «%s» fallida: «%s»\n"
4727 4720
4728#: src/hostlist/gnunet-daemon-hostlist_client.c:900 4721#: src/hostlist/gnunet-daemon-hostlist_client.c:902
4729#, c-format 4722#, c-format
4730msgid "Download of hostlist `%s' completed.\n" 4723msgid "Download of hostlist `%s' completed.\n"
4731msgstr "Descarga de lista de máquinas «%s» completada.\n" 4724msgstr "Descarga de lista de máquinas «%s» completada.\n"
4732 4725
4733#: src/hostlist/gnunet-daemon-hostlist_client.c:908 4726#: src/hostlist/gnunet-daemon-hostlist_client.c:910
4734#, c-format 4727#, c-format
4735msgid "Adding successfully tested hostlist `%s' datastore.\n" 4728msgid "Adding successfully tested hostlist `%s' datastore.\n"
4736msgstr "Añadiendo el almacén de datos de la lista de máquinas probada «%s».\n" 4729msgstr "Añadiendo el almacén de datos de la lista de máquinas probada «%s».\n"
4737 4730
4738#: src/hostlist/gnunet-daemon-hostlist_client.c:961 4731#: src/hostlist/gnunet-daemon-hostlist_client.c:963
4739#, c-format 4732#, c-format
4740msgid "Bootstrapping using hostlist at `%s'.\n" 4733msgid "Bootstrapping using hostlist at `%s'.\n"
4741msgstr "Inicializando usando lista de máquinas en «%s».\n" 4734msgstr "Inicializando usando lista de máquinas en «%s».\n"
4742 4735
4743#: src/hostlist/gnunet-daemon-hostlist_client.c:969 4736#: src/hostlist/gnunet-daemon-hostlist_client.c:971
4744msgid "# hostlist downloads initiated" 4737msgid "# hostlist downloads initiated"
4745msgstr "# descargas de listas de máquinas iniciadas" 4738msgstr "# descargas de listas de máquinas iniciadas"
4746 4739
4747#: src/hostlist/gnunet-daemon-hostlist_client.c:1096 4740#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
4748#: src/hostlist/gnunet-daemon-hostlist_client.c:1663 4741#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
4749msgid "# milliseconds between hostlist downloads" 4742msgid "# milliseconds between hostlist downloads"
4750msgstr "# milisegundos entre descargas de listas de máquinas" 4743msgstr "# milisegundos entre descargas de listas de máquinas"
4751 4744
4752#: src/hostlist/gnunet-daemon-hostlist_client.c:1105 4745#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
4753#, c-format 4746#, c-format
4754msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n" 4747msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n"
4755msgstr "" 4748msgstr ""
4756"Hay %u/%u conexiones. Se considerará descargar una lista de máquinas en %s\n" 4749"Hay %u/%u conexiones. Se considerará descargar una lista de máquinas en %s\n"
4757 4750
4758#: src/hostlist/gnunet-daemon-hostlist_client.c:1164 4751#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
4759#: src/hostlist/gnunet-daemon-hostlist_client.c:1185 4752#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
4760msgid "# active connections" 4753msgid "# active connections"
4761msgstr "# conexiones activas" 4754msgstr "# conexiones activas"
4762 4755
4763#: src/hostlist/gnunet-daemon-hostlist_client.c:1351 4756#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
4764#, c-format 4757#, c-format
4765msgid "Loading saved hostlist entries from file `%s' \n" 4758msgid "Loading saved hostlist entries from file `%s' \n"
4766msgstr "Cargando entradas guardadas de listas de máquinas del fichero «%s»\n" 4759msgstr "Cargando entradas guardadas de listas de máquinas del fichero «%s»\n"
4767 4760
4768#: src/hostlist/gnunet-daemon-hostlist_client.c:1356 4761#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
4769#, c-format 4762#, c-format
4770msgid "Hostlist file `%s' does not exist\n" 4763msgid "Hostlist file `%s' does not exist\n"
4771msgstr "El fichero de listas de máquinas «%s» no existe\n" 4764msgstr "El fichero de listas de máquinas «%s» no existe\n"
4772 4765
4773#: src/hostlist/gnunet-daemon-hostlist_client.c:1365 4766#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
4774#, c-format 4767#, c-format
4775msgid "Could not open file `%s' for reading to load hostlists: %s\n" 4768msgid "Could not open file `%s' for reading to load hostlists: %s\n"
4776msgstr "" 4769msgstr ""
4777"No se pudo abrir el fichero «%s» en modo lectura para cargar las listas de " 4770"No se pudo abrir el fichero «%s» en modo lectura para cargar las listas de "
4778"máquinas: %s\n" 4771"máquinas: %s\n"
4779 4772
4780#: src/hostlist/gnunet-daemon-hostlist_client.c:1399 4773#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
4781#, c-format 4774#, c-format
4782msgid "%u hostlist URIs loaded from file\n" 4775msgid "%u hostlist URIs loaded from file\n"
4783msgstr "%u URI de listas de máquinas cargadas del fichero\n" 4776msgstr "%u URI de listas de máquinas cargadas del fichero\n"
4784 4777
4785#: src/hostlist/gnunet-daemon-hostlist_client.c:1402 4778#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
4786msgid "# hostlist URIs read from file" 4779msgid "# hostlist URIs read from file"
4787msgstr "# URI de listas de máquinas leídas de fichero" 4780msgstr "# URI de listas de máquinas leídas de fichero"
4788 4781
4789#: src/hostlist/gnunet-daemon-hostlist_client.c:1448 4782#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
4790#, c-format 4783#, c-format
4791msgid "Could not open file `%s' for writing to save hostlists: %s\n" 4784msgid "Could not open file `%s' for writing to save hostlists: %s\n"
4792msgstr "" 4785msgstr ""
4793"No se pudo abrir el fichero «%s» en modo escritura para almacenar las listas " 4786"No se pudo abrir el fichero «%s» en modo escritura para almacenar las listas "
4794"de máquinas: %s\n" 4787"de máquinas: %s\n"
4795 4788
4796#: src/hostlist/gnunet-daemon-hostlist_client.c:1455 4789#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
4797#, c-format 4790#, c-format
4798msgid "Writing %u hostlist URIs to `%s'\n" 4791msgid "Writing %u hostlist URIs to `%s'\n"
4799msgstr "Escribiendo %u URI de listas de máquinas a «%s»\n" 4792msgstr "Escribiendo %u URI de listas de máquinas a «%s»\n"
4800 4793
4801#: src/hostlist/gnunet-daemon-hostlist_client.c:1479 4794#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
4802#: src/hostlist/gnunet-daemon-hostlist_client.c:1496 4795#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
4803#, c-format 4796#, c-format
4804msgid "Error writing hostlist URIs to file `%s'\n" 4797msgid "Error writing hostlist URIs to file `%s'\n"
4805msgstr "Error escribiendo URI de listas de máquinas al fichero «%s»\n" 4798msgstr "Error escribiendo URI de listas de máquinas al fichero «%s»\n"
4806 4799
4807#: src/hostlist/gnunet-daemon-hostlist_client.c:1491 4800#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
4808msgid "# hostlist URIs written to file" 4801msgid "# hostlist URIs written to file"
4809msgstr "# URI de listas de máquinas escritas a fichero" 4802msgstr "# URI de listas de máquinas escritas a fichero"
4810 4803
4811#: src/hostlist/gnunet-daemon-hostlist_client.c:1593 4804#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
4812#: src/transport/plugin_transport_http_client.c:2272 4805#: src/transport/plugin_transport_http_client.c:2274
4813#, c-format 4806#, c-format
4814msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n" 4807msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
4815msgstr "" 4808msgstr ""
4816 4809
4817#: src/hostlist/gnunet-daemon-hostlist_client.c:1622 4810#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
4818msgid "Learning is enabled on this peer\n" 4811msgid "Learning is enabled on this peer\n"
4819msgstr "El aprendizaje está habilitado en este par\n" 4812msgstr "El aprendizaje está habilitado en este par\n"
4820 4813
4821#: src/hostlist/gnunet-daemon-hostlist_client.c:1636 4814#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
4822msgid "Learning is not enabled on this peer\n" 4815msgid "Learning is not enabled on this peer\n"
4823msgstr "El aprendizaje no está habilitado en este par\n" 4816msgstr "El aprendizaje no está habilitado en este par\n"
4824 4817
4825#: src/hostlist/gnunet-daemon-hostlist_client.c:1649 4818#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
4826#, c-format 4819#, c-format
4827msgid "" 4820msgid ""
4828"Since learning is not enabled on this peer, hostlist file `%s' was removed\n" 4821"Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
@@ -4830,927 +4823,970 @@ msgstr ""
4830"La lista de máquinas «%s» fue eliminada puesto que el aprendizaje no está " 4823"La lista de máquinas «%s» fue eliminada puesto que el aprendizaje no está "
4831"habilitado en este par\n" 4824"habilitado en este par\n"
4832 4825
4833#: src/hostlist/gnunet-daemon-hostlist_server.c:174 4826#: src/hostlist/gnunet-daemon-hostlist_server.c:176
4834msgid "bytes in hostlist" 4827msgid "bytes in hostlist"
4835msgstr "bytes en la lista de máquinas" 4828msgstr "bytes en la lista de máquinas"
4836 4829
4837#: src/hostlist/gnunet-daemon-hostlist_server.c:199 4830#: src/hostlist/gnunet-daemon-hostlist_server.c:201
4838msgid "expired addresses encountered" 4831msgid "expired addresses encountered"
4839msgstr "direcciones expiradas encontradas" 4832msgstr "direcciones expiradas encontradas"
4840 4833
4841#: src/hostlist/gnunet-daemon-hostlist_server.c:235 4834#: src/hostlist/gnunet-daemon-hostlist_server.c:237
4842#: src/hostlist/gnunet-daemon-hostlist_server.c:529 4835#: src/hostlist/gnunet-daemon-hostlist_server.c:531
4843#: src/peerinfo-tool/gnunet-peerinfo.c:383 4836#: src/peerinfo-tool/gnunet-peerinfo.c:385
4844#: src/peerinfo-tool/gnunet-peerinfo.c:532 4837#: src/peerinfo-tool/gnunet-peerinfo.c:534
4845#: src/topology/gnunet-daemon-topology.c:860 4838#: src/topology/gnunet-daemon-topology.c:862
4846#, c-format 4839#, c-format
4847msgid "Error in communication with PEERINFO service: %s\n" 4840msgid "Error in communication with PEERINFO service: %s\n"
4848msgstr "" 4841msgstr ""
4849"Error en la comunicación con el servicio de información de pares (PEERINFO): " 4842"Error en la comunicación con el servicio de información de pares (PEERINFO): "
4850"%s\n" 4843"%s\n"
4851 4844
4852#: src/hostlist/gnunet-daemon-hostlist_server.c:259 4845#: src/hostlist/gnunet-daemon-hostlist_server.c:261
4853msgid "HELLOs without addresses encountered (ignored)" 4846msgid "HELLOs without addresses encountered (ignored)"
4854msgstr "«HELLO» sin dirección encontrados (ignorados)" 4847msgstr "«HELLO» sin dirección encontrados (ignorados)"
4855 4848
4856#: src/hostlist/gnunet-daemon-hostlist_server.c:276 4849#: src/hostlist/gnunet-daemon-hostlist_server.c:278
4857msgid "bytes not included in hostlist (size limit)" 4850msgid "bytes not included in hostlist (size limit)"
4858msgstr "bytes no incluidos en la lista de máquinas (límite de tamaño)" 4851msgstr "bytes no incluidos en la lista de máquinas (límite de tamaño)"
4859 4852
4860#: src/hostlist/gnunet-daemon-hostlist_server.c:380 4853#: src/hostlist/gnunet-daemon-hostlist_server.c:382
4861#, c-format 4854#, c-format
4862msgid "Refusing `%s' request to hostlist server\n" 4855msgid "Refusing `%s' request to hostlist server\n"
4863msgstr "Rechazando petición «%s» al servidor de listas de máquinas\n" 4856msgstr "Rechazando petición «%s» al servidor de listas de máquinas\n"
4864 4857
4865#: src/hostlist/gnunet-daemon-hostlist_server.c:383 4858#: src/hostlist/gnunet-daemon-hostlist_server.c:385
4866msgid "hostlist requests refused (not HTTP GET)" 4859msgid "hostlist requests refused (not HTTP GET)"
4867msgstr "Peticiones de listas de máquinas rechazadas (no HTTP GET)" 4860msgstr "Peticiones de listas de máquinas rechazadas (no HTTP GET)"
4868 4861
4869#: src/hostlist/gnunet-daemon-hostlist_server.c:395 4862#: src/hostlist/gnunet-daemon-hostlist_server.c:397
4870#, c-format 4863#, c-format
4871msgid "Refusing `%s' request with %llu bytes of upload data\n" 4864msgid "Refusing `%s' request with %llu bytes of upload data\n"
4872msgstr "Rechazando petición «%s» con %llu bytes de datos de subida\n" 4865msgstr "Rechazando petición «%s» con %llu bytes de datos de subida\n"
4873 4866
4874#: src/hostlist/gnunet-daemon-hostlist_server.c:399 4867#: src/hostlist/gnunet-daemon-hostlist_server.c:401
4875msgid "hostlist requests refused (upload data)" 4868msgid "hostlist requests refused (upload data)"
4876msgstr "Peticiones de listas de máquinas rechazadas (datos de subida)" 4869msgstr "Peticiones de listas de máquinas rechazadas (datos de subida)"
4877 4870
4878#: src/hostlist/gnunet-daemon-hostlist_server.c:406 4871#: src/hostlist/gnunet-daemon-hostlist_server.c:408
4879msgid "Could not handle hostlist request since I do not have a response yet\n" 4872msgid "Could not handle hostlist request since I do not have a response yet\n"
4880msgstr "" 4873msgstr ""
4881"No se pudo manejar una petición de lista de máquinas debido a que no hay una " 4874"No se pudo manejar una petición de lista de máquinas debido a que no hay una "
4882"respuesta todavía\n" 4875"respuesta todavía\n"
4883 4876
4884#: src/hostlist/gnunet-daemon-hostlist_server.c:409 4877#: src/hostlist/gnunet-daemon-hostlist_server.c:411
4885msgid "hostlist requests refused (not ready)" 4878msgid "hostlist requests refused (not ready)"
4886msgstr "Peticiones de listas de máquinas rechazadas (no preparados)" 4879msgstr "Peticiones de listas de máquinas rechazadas (no preparados)"
4887 4880
4888#: src/hostlist/gnunet-daemon-hostlist_server.c:414 4881#: src/hostlist/gnunet-daemon-hostlist_server.c:416
4889msgid "Received request for our hostlist\n" 4882msgid "Received request for our hostlist\n"
4890msgstr "Peticiones recibidas de nuestra lista de máquinas\n" 4883msgstr "Peticiones recibidas de nuestra lista de máquinas\n"
4891 4884
4892#: src/hostlist/gnunet-daemon-hostlist_server.c:416 4885#: src/hostlist/gnunet-daemon-hostlist_server.c:418
4893msgid "hostlist requests processed" 4886msgid "hostlist requests processed"
4894msgstr "Peticiones de lista de máquinas procesadas" 4887msgstr "Peticiones de lista de máquinas procesadas"
4895 4888
4896#: src/hostlist/gnunet-daemon-hostlist_server.c:464 4889#: src/hostlist/gnunet-daemon-hostlist_server.c:466
4897msgid "# hostlist advertisements send" 4890msgid "# hostlist advertisements send"
4898msgstr "# anuncios de listas de máquinas enviados" 4891msgstr "# anuncios de listas de máquinas enviados"
4899 4892
4900#: src/hostlist/gnunet-daemon-hostlist_server.c:677 4893#: src/hostlist/gnunet-daemon-hostlist_server.c:679
4901#: src/transport/gnunet-service-transport.c:2813 4894#: src/transport/gnunet-service-transport.c:2814
4902msgid "Could not access PEERINFO service. Exiting.\n" 4895msgid "Could not access PEERINFO service. Exiting.\n"
4903msgstr "" 4896msgstr ""
4904"No se pudo acceder al servicio de información de pares (PEERINFO). " 4897"No se pudo acceder al servicio de información de pares (PEERINFO). "
4905"Saliendo.\n" 4898"Saliendo.\n"
4906 4899
4907#: src/hostlist/gnunet-daemon-hostlist_server.c:689 4900#: src/hostlist/gnunet-daemon-hostlist_server.c:691
4908#, c-format 4901#, c-format
4909msgid "Invalid port number %llu. Exiting.\n" 4902msgid "Invalid port number %llu. Exiting.\n"
4910msgstr "Número de puerto %llu no válido. Saliendo.\n" 4903msgstr "Número de puerto %llu no válido. Saliendo.\n"
4911 4904
4912#: src/hostlist/gnunet-daemon-hostlist_server.c:701 4905#: src/hostlist/gnunet-daemon-hostlist_server.c:703
4913#, c-format 4906#, c-format
4914msgid "Hostlist service starts on %s:%llu\n" 4907msgid "Hostlist service starts on %s:%llu\n"
4915msgstr "Servicio de listas de máquinas arranca en %s:%llu\n" 4908msgstr "Servicio de listas de máquinas arranca en %s:%llu\n"
4916 4909
4917#: src/hostlist/gnunet-daemon-hostlist_server.c:716 4910#: src/hostlist/gnunet-daemon-hostlist_server.c:718
4918#, c-format 4911#, c-format
4919msgid "Address to obtain hostlist: `%s'\n" 4912msgid "Address to obtain hostlist: `%s'\n"
4920msgstr "Dirección para obtener la lista de máquinas: «%s»\n" 4913msgstr "Dirección para obtener la lista de máquinas: «%s»\n"
4921 4914
4922#: src/hostlist/gnunet-daemon-hostlist_server.c:729 4915#: src/hostlist/gnunet-daemon-hostlist_server.c:731
4923#, fuzzy 4916#, fuzzy
4924msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4917msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4925msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n" 4918msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n"
4926 4919
4927#: src/hostlist/gnunet-daemon-hostlist_server.c:746 4920#: src/hostlist/gnunet-daemon-hostlist_server.c:748
4928#, fuzzy 4921#, fuzzy
4929msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n" 4922msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
4930msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n" 4923msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n"
4931 4924
4932#: src/hostlist/gnunet-daemon-hostlist_server.c:767 4925#: src/hostlist/gnunet-daemon-hostlist_server.c:769
4933#, fuzzy, c-format 4926#, fuzzy, c-format
4934msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4927msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4935msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n" 4928msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n"
4936 4929
4937#: src/hostlist/gnunet-daemon-hostlist_server.c:787 4930#: src/hostlist/gnunet-daemon-hostlist_server.c:789
4938#, fuzzy, c-format 4931#, fuzzy, c-format
4939msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n" 4932msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
4940msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n" 4933msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n"
4941 4934
4942#: src/hostlist/gnunet-daemon-hostlist_server.c:827 4935#: src/hostlist/gnunet-daemon-hostlist_server.c:829
4943#, c-format 4936#, c-format
4944msgid "Could not start hostlist HTTP server on port %u\n" 4937msgid "Could not start hostlist HTTP server on port %u\n"
4945msgstr "" 4938msgstr ""
4946"No se pudo arrancar un servidor de listas de máquinas HTTP en el puerto %u\n" 4939"No se pudo arrancar un servidor de listas de máquinas HTTP en el puerto %u\n"
4947 4940
4948#: src/identity/gnunet-identity.c:177 4941#: src/identity/gnunet-identity.c:179
4949#, fuzzy, c-format 4942#, fuzzy, c-format
4950msgid "Failed to create ego: %s\n" 4943msgid "Failed to create ego: %s\n"
4951msgstr "Se produjo un fallo al crear la página para «%s»\n" 4944msgstr "Se produjo un fallo al crear la página para «%s»\n"
4952 4945
4953#: src/identity/gnunet-identity.c:199 4946#: src/identity/gnunet-identity.c:201
4954#, fuzzy, c-format 4947#, fuzzy, c-format
4955msgid "Failed to set default ego: %s\n" 4948msgid "Failed to set default ego: %s\n"
4956msgstr "Se produjo un fallo al crear la página para «%s»\n" 4949msgstr "Se produjo un fallo al crear la página para «%s»\n"
4957 4950
4958#: src/identity/gnunet-identity.c:354 4951#: src/identity/gnunet-identity.c:356
4959msgid "create ego NAME" 4952msgid "create ego NAME"
4960msgstr "" 4953msgstr ""
4961 4954
4962#: src/identity/gnunet-identity.c:360 4955#: src/identity/gnunet-identity.c:362
4963#, fuzzy 4956#, fuzzy
4964msgid "delete ego NAME " 4957msgid "delete ego NAME "
4965msgstr "borrar un nombre de espacio de nombres (NAME)" 4958msgstr "borrar un nombre de espacio de nombres (NAME)"
4966 4959
4967#: src/identity/gnunet-identity.c:365 4960#: src/identity/gnunet-identity.c:367
4968#, fuzzy 4961#, fuzzy
4969msgid "display all egos" 4962msgid "display all egos"
4970msgstr "mostrar registros" 4963msgstr "mostrar registros"
4971 4964
4972#: src/identity/gnunet-identity.c:371 4965#: src/identity/gnunet-identity.c:373
4973msgid "" 4966msgid ""
4974"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)" 4967"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
4975msgstr "" 4968msgstr ""
4976 4969
4977# Miguel: Aquí he dejado monitorización porque esto es 4970# Miguel: Aquí he dejado monitorización porque esto es
4978# del servicio de traducción de direcciones. 4971# del servicio de traducción de direcciones.
4979#: src/identity/gnunet-identity.c:376 4972#: src/identity/gnunet-identity.c:378
4980#, fuzzy 4973#, fuzzy
4981msgid "run in monitor mode egos" 4974msgid "run in monitor mode egos"
4982msgstr "modo de monitorización" 4975msgstr "modo de monitorización"
4983 4976
4984#: src/identity/gnunet-identity.c:382 4977#: src/identity/gnunet-identity.c:384
4985msgid "" 4978msgid ""
4986"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)" 4979"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
4987msgstr "" 4980msgstr ""
4988 4981
4989#: src/identity/gnunet-identity.c:396 4982#: src/identity/gnunet-identity.c:398
4990msgid "Maintain egos" 4983msgid "Maintain egos"
4991msgstr "" 4984msgstr ""
4992 4985
4993#: src/identity/gnunet-service-identity.c:389 4986#: src/identity/gnunet-service-identity.c:391
4994msgid "no default known" 4987msgid "no default known"
4995msgstr "" 4988msgstr ""
4996 4989
4997#: src/identity/gnunet-service-identity.c:414 4990#: src/identity/gnunet-service-identity.c:416
4998msgid "default configured, but ego unknown (internal error)" 4991msgid "default configured, but ego unknown (internal error)"
4999msgstr "" 4992msgstr ""
5000 4993
5001#: src/identity/gnunet-service-identity.c:505 4994#: src/identity/gnunet-service-identity.c:507
5002#: src/identity/gnunet-service-identity.c:788 4995#: src/identity/gnunet-service-identity.c:790
5003#: src/identity/gnunet-service-identity.c:916 4996#: src/identity/gnunet-service-identity.c:918
5004#, fuzzy, c-format 4997#, fuzzy, c-format
5005msgid "Failed to write subsystem default identifier map to `%s'.\n" 4998msgid "Failed to write subsystem default identifier map to `%s'.\n"
5006msgstr "" 4999msgstr ""
5007"Se produjo un fallo al obtener los identificadores de fichero para «%s»\n" 5000"Se produjo un fallo al obtener los identificadores de fichero para «%s»\n"
5008 5001
5009#: src/identity/gnunet-service-identity.c:513 5002#: src/identity/gnunet-service-identity.c:515
5010msgid "Unknown ego specified for service (internal error)" 5003msgid "Unknown ego specified for service (internal error)"
5011msgstr "" 5004msgstr ""
5012 5005
5013#: src/identity/gnunet-service-identity.c:608 5006#: src/identity/gnunet-service-identity.c:610
5014msgid "identifier already in use for another ego" 5007msgid "identifier already in use for another ego"
5015msgstr "" 5008msgstr ""
5016 5009
5017#: src/identity/gnunet-service-identity.c:763 5010#: src/identity/gnunet-service-identity.c:765
5018#, fuzzy 5011#, fuzzy
5019msgid "target name already exists" 5012msgid "target name already exists"
5020msgstr "El registro ya existía en el almacén de nombres" 5013msgstr "El registro ya existía en el almacén de nombres"
5021 5014
5022#: src/identity/gnunet-service-identity.c:806 5015#: src/identity/gnunet-service-identity.c:808
5023#: src/identity/gnunet-service-identity.c:934 5016#: src/identity/gnunet-service-identity.c:936
5024msgid "no matching ego found" 5017msgid "no matching ego found"
5025msgstr "" 5018msgstr ""
5026 5019
5027#: src/identity/gnunet-service-identity.c:969 5020#: src/identity/gnunet-service-identity.c:971
5028#, fuzzy, c-format 5021#, fuzzy, c-format
5029msgid "Failed to parse ego information in `%s'\n" 5022msgid "Failed to parse ego information in `%s'\n"
5030msgstr "Se produjo un fallo al procesar la identidad del par «%s»\n" 5023msgstr "Se produjo un fallo al procesar la identidad del par «%s»\n"
5031 5024
5032#: src/identity/gnunet-service-identity.c:1027 5025#: src/identity/gnunet-service-identity.c:1029
5033#, fuzzy, c-format 5026#, fuzzy, c-format
5034msgid "Failed to parse subsystem identity configuration file `%s'\n" 5027msgid "Failed to parse subsystem identity configuration file `%s'\n"
5035msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" 5028msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
5036 5029
5037#: src/identity/gnunet-service-identity.c:1037 5030#: src/identity/gnunet-service-identity.c:1039
5038#, fuzzy, c-format 5031#, fuzzy, c-format
5039msgid "Failed to create directory `%s' for storing egos\n" 5032msgid "Failed to create directory `%s' for storing egos\n"
5040msgstr "Se produjo un fallo al leer el directorio «%s»\n" 5033msgstr "Se produjo un fallo al leer el directorio «%s»\n"
5041 5034
5042#: src/json/json.c:121 5035#: src/json/json.c:123
5043#, fuzzy, c-format 5036#, fuzzy, c-format
5044msgid "Failed to parse JSON in option `%s': %s (%s)\n" 5037msgid "Failed to parse JSON in option `%s': %s (%s)\n"
5045msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" 5038msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
5046 5039
5047#: src/multicast/gnunet-multicast.c:46 src/multicast/gnunet-multicast.c:70 5040#: src/my/my.c:196 src/my/my.c:215
5048msgid "This command doesn't do anything yet."
5049msgstr ""
5050
5051#: src/my/my.c:194 src/my/my.c:213
5052#, fuzzy, c-format 5041#, fuzzy, c-format
5053msgid "%s failed at %s:%d with error: %s\n" 5042msgid "%s failed at %s:%d with error: %s\n"
5054msgstr "«%s» falló en %s: %d con el error: %s\n" 5043msgstr "«%s» falló en %s: %d con el error: %s\n"
5055 5044
5056#: src/mysql/mysql.c:178 5045#: src/mysql/mysql.c:180
5057#, c-format 5046#, c-format
5058msgid "Trying to use file `%s' for MySQL configuration.\n" 5047msgid "Trying to use file `%s' for MySQL configuration.\n"
5059msgstr "Intentando usar el fichero «%s» para la configuración de MySQL.\n" 5048msgstr "Intentando usar el fichero «%s» para la configuración de MySQL.\n"
5060 5049
5061#: src/mysql/mysql.c:185 5050#: src/mysql/mysql.c:187
5062#, c-format 5051#, c-format
5063msgid "Could not access file `%s': %s\n" 5052msgid "Could not access file `%s': %s\n"
5064msgstr "No se pudo acceder al fichero «%s»: %s\n" 5053msgstr "No se pudo acceder al fichero «%s»: %s\n"
5065 5054
5066#: src/namecache/gnunet-namecache.c:105 5055#: src/namecache/gnunet-namecache.c:107
5067#, fuzzy, c-format 5056#, fuzzy, c-format
5068msgid "No records found for `%s'" 5057msgid "No records found for `%s'"
5069msgstr "No se han encontrado ficheros en «%s»\n" 5058msgstr "No se han encontrado ficheros en «%s»\n"
5070 5059
5071#: src/namecache/gnunet-namecache.c:120 src/namestore/gnunet-namestore.c:424 5060#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
5072#, c-format 5061#, c-format
5073msgid "\tCorrupt or unsupported record of type %u\n" 5062msgid "\tCorrupt or unsupported record of type %u\n"
5074msgstr "\tRegistro corrupto o no soportado del tipo %u\n" 5063msgstr "\tRegistro corrupto o no soportado del tipo %u\n"
5075 5064
5076#: src/namecache/gnunet-namecache.c:181 5065#: src/namecache/gnunet-namecache.c:183
5077#, fuzzy, c-format 5066#, fuzzy, c-format
5078msgid "You must specify which zone should be accessed\n" 5067msgid "You must specify which zone should be accessed\n"
5079msgstr "Se debe especificar un apodo\n" 5068msgstr "Se debe especificar un apodo\n"
5080 5069
5081#: src/namecache/gnunet-namecache.c:191 5070#: src/namecache/gnunet-namecache.c:193
5082#, fuzzy, c-format 5071#, fuzzy, c-format
5083msgid "Invalid public key for zone `%s'\n" 5072msgid "Invalid public key for zone `%s'\n"
5084msgstr "Parámetro no válido «%s»\n" 5073msgstr "Parámetro no válido «%s»\n"
5085 5074
5086#: src/namecache/gnunet-namecache.c:199 5075#: src/namecache/gnunet-namecache.c:201
5087#, fuzzy, c-format 5076#, fuzzy, c-format
5088msgid "You must specify a name\n" 5077msgid "You must specify a name\n"
5089msgstr "¡Debes especificar un receptor!\n" 5078msgstr "¡Debes especificar un receptor!\n"
5090 5079
5091#: src/namecache/gnunet-namecache.c:230 src/namestore/gnunet-namestore.c:1290 5080#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
5092msgid "name of the record to add/delete/display" 5081msgid "name of the record to add/delete/display"
5093msgstr "nombre del registro a añadir/borrar/mostrar" 5082msgstr "nombre del registro a añadir/borrar/mostrar"
5094 5083
5095#: src/namecache/gnunet-namecache.c:236 5084#: src/namecache/gnunet-namecache.c:238
5096#, fuzzy 5085#, fuzzy
5097msgid "spezifies the public key of the zone to look in" 5086msgid "spezifies the public key of the zone to look in"
5098msgstr "Especificar el tipo del registro a buscar" 5087msgstr "Especificar el tipo del registro a buscar"
5099 5088
5100#: src/namecache/gnunet-namecache.c:248 src/namestore/gnunet-namestore.c:1342 5089#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
5101msgid "GNUnet zone manipulation tool" 5090msgid "GNUnet zone manipulation tool"
5102msgstr "Herramienta de manipulación de zona de GNUnet" 5091msgstr "Herramienta de manipulación de zona de GNUnet"
5103 5092
5104#: src/namecache/namecache_api.c:294 5093#: src/namecache/namecache_api.c:296
5105#, fuzzy 5094#, fuzzy
5106msgid "Namecache failed to cache block" 5095msgid "Namecache failed to cache block"
5107msgstr "El almacén de nombres no pudo añadir el registro" 5096msgstr "El almacén de nombres no pudo añadir el registro"
5108 5097
5109# Miguel: ¿Conectar y conexión? 5098# Miguel: ¿Conectar y conexión?
5110#: src/namecache/namecache_api.c:381 5099#: src/namecache/namecache_api.c:383
5111#, fuzzy 5100#, fuzzy
5112msgid "Error communicating with namecache service" 5101msgid "Error communicating with namecache service"
5113msgstr "Error al comunicar con el servicio ARM.\n" 5102msgstr "Error al comunicar con el servicio ARM.\n"
5114 5103
5115#: src/namecache/plugin_namecache_flat.c:119 5104#: src/namecache/plugin_namecache_flat.c:121
5116#: src/namecache/plugin_namecache_flat.c:253 5105#: src/namecache/plugin_namecache_flat.c:255
5117#: src/namestore/plugin_namestore_heap.c:146 5106#: src/namestore/plugin_namestore_heap.c:148
5118#: src/namestore/plugin_namestore_heap.c:393 5107#: src/namestore/plugin_namestore_heap.c:395
5119#: src/peerstore/plugin_peerstore_flat.c:377 5108#: src/peerstore/plugin_peerstore_flat.c:379
5120#: src/peerstore/plugin_peerstore_flat.c:536 5109#: src/peerstore/plugin_peerstore_flat.c:538
5121#, fuzzy, c-format 5110#, fuzzy, c-format
5122msgid "Unable to initialize file: %s.\n" 5111msgid "Unable to initialize file: %s.\n"
5123msgstr "Imposible inicializar SQLite: %s.\n" 5112msgstr "Imposible inicializar SQLite: %s.\n"
5124 5113
5125#: src/namecache/plugin_namecache_flat.c:130 5114#: src/namecache/plugin_namecache_flat.c:132
5126#: src/namestore/plugin_namestore_heap.c:157 5115#: src/namestore/plugin_namestore_heap.c:159
5127#: src/peerstore/plugin_peerstore_flat.c:392 5116#: src/peerstore/plugin_peerstore_flat.c:394
5128#, fuzzy, c-format 5117#, fuzzy, c-format
5129msgid "Unable to get filesize: %s.\n" 5118msgid "Unable to get filesize: %s.\n"
5130msgstr "Se produjo un fallo al crear los índices\n" 5119msgstr "Se produjo un fallo al crear los índices\n"
5131 5120
5132#: src/namecache/plugin_namecache_flat.c:149 5121#: src/namecache/plugin_namecache_flat.c:151
5133#: src/namestore/plugin_namestore_heap.c:170 5122#: src/namestore/plugin_namestore_heap.c:172
5134#: src/peerstore/plugin_peerstore_flat.c:404 5123#: src/peerstore/plugin_peerstore_flat.c:406
5135#, fuzzy, c-format 5124#, fuzzy, c-format
5136msgid "Unable to read file: %s.\n" 5125msgid "Unable to read file: %s.\n"
5137msgstr "Se produjo un fallo al crear los índices\n" 5126msgstr "Se produjo un fallo al crear los índices\n"
5138 5127
5139#: src/namecache/plugin_namecache_flat.c:408 5128#: src/namecache/plugin_namecache_flat.c:410
5140#, fuzzy 5129#, fuzzy
5141msgid "flat plugin running\n" 5130msgid "flat plugin running\n"
5142msgstr "Base de datos sqlite ejecutándose\n" 5131msgstr "Base de datos sqlite ejecutándose\n"
5143 5132
5144#: src/namestore/gnunet-namestore.c:311 5133#: src/namecache/plugin_namecache_sqlite.c:183
5134#: src/namecache/plugin_namecache_sqlite.c:197
5135#: src/namestore/plugin_namestore_sqlite.c:219
5136#: src/namestore/plugin_namestore_sqlite.c:230
5137#, fuzzy, c-format
5138msgid "Failed to setup database at `%s'\n"
5139msgstr "Se produjo un fallo al inciar «%s» en «%s»\n"
5140
5141#: src/namestore/gnunet-namestore.c:341
5145#, c-format 5142#, c-format
5146msgid "Adding record failed: %s\n" 5143msgid "Adding record failed: %s\n"
5147msgstr "No se pudo añadir el registro: %s\n" 5144msgstr "No se pudo añadir el registro: %s\n"
5148 5145
5149#: src/namestore/gnunet-namestore.c:341 5146#: src/namestore/gnunet-namestore.c:371
5150#, fuzzy, c-format 5147#, fuzzy, c-format
5151msgid "Deleting record failed, record does not exist%s%s\n" 5148msgid "Deleting record failed, record does not exist%s%s\n"
5152msgstr "No se pudo borrar el registro: %s\n" 5149msgstr "No se pudo borrar el registro: %s\n"
5153 5150
5154#: src/namestore/gnunet-namestore.c:348 5151#: src/namestore/gnunet-namestore.c:378
5155#, fuzzy, c-format 5152#, fuzzy, c-format
5156msgid "Deleting record failed%s%s\n" 5153msgid "Deleting record failed%s%s\n"
5157msgstr "No se pudo borrar el registro: %s\n" 5154msgstr "No se pudo borrar el registro: %s\n"
5158 5155
5159#: src/namestore/gnunet-namestore.c:628 src/namestore/gnunet-namestore.c:636 5156#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
5160#, c-format 5157#, c-format
5161msgid "A %s record exists already under `%s', no other records can be added.\n" 5158msgid "A %s record exists already under `%s', no other records can be added.\n"
5162msgstr "" 5159msgstr ""
5163 5160
5164#: src/namestore/gnunet-namestore.c:650 src/namestore/gnunet-namestore.c:662 5161#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
5165#, c-format 5162#, c-format
5166msgid "Records already exist under `%s', cannot add `%s' record.\n" 5163msgid "Records already exist under `%s', cannot add `%s' record.\n"
5167msgstr "" 5164msgstr ""
5168 5165
5169#: src/namestore/gnunet-namestore.c:675 5166#: src/namestore/gnunet-namestore.c:707
5170#, c-format 5167#, c-format
5171msgid "" 5168msgid ""
5172"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n" 5169"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
5173msgstr "" 5170msgstr ""
5174 5171
5175#: src/namestore/gnunet-namestore.c:809 5172#: src/namestore/gnunet-namestore.c:837
5176#, c-format 5173#, c-format
5177msgid "There are no records under label `%s' that could be deleted.\n" 5174msgid "There are no records under label `%s' that could be deleted.\n"
5178msgstr "" 5175msgstr ""
5179 5176
5180#: src/namestore/gnunet-namestore.c:850 5177#: src/namestore/gnunet-namestore.c:878
5181#, c-format 5178#, c-format
5182msgid "" 5179msgid ""
5183"There are no records under label `%s' that match the request for deletion.\n" 5180"There are no records under label `%s' that match the request for deletion.\n"
5184msgstr "" 5181msgstr ""
5185 5182
5186#: src/namestore/gnunet-namestore.c:902 5183#: src/namestore/gnunet-namestore.c:965
5184#, fuzzy, c-format
5185msgid "Failed to replace records: %s\n"
5186msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n"
5187
5188#: src/namestore/gnunet-namestore.c:1009
5187#, c-format 5189#, c-format
5188msgid "No options given\n" 5190msgid "No options given\n"
5189msgstr "No se han proporcionado opciones\n" 5191msgstr "No se han proporcionado opciones\n"
5190 5192
5191#: src/namestore/gnunet-namestore.c:921 src/namestore/gnunet-namestore.c:930 5193#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
5192#: src/namestore/gnunet-namestore.c:949 src/namestore/gnunet-namestore.c:972 5194#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
5193#: src/namestore/gnunet-namestore.c:1026 5195#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
5194#, c-format 5196#, c-format
5195msgid "Missing option `%s' for operation `%s'\n" 5197msgid "Missing option `%s' for operation `%s'\n"
5196msgstr "Falta la opción «%s» para la operación «%s»\n" 5198msgstr "Falta la opción «%s» para la operación «%s»\n"
5197 5199
5198#: src/namestore/gnunet-namestore.c:922 src/namestore/gnunet-namestore.c:931 5200#: src/namestore/gnunet-namestore.c:1033
5199#: src/namestore/gnunet-namestore.c:950 src/namestore/gnunet-namestore.c:974 5201msgid "replace"
5202msgstr ""
5203
5204#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
5205#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
5200msgid "add" 5206msgid "add"
5201msgstr "añadir" 5207msgstr "añadir"
5202 5208
5203#: src/namestore/gnunet-namestore.c:940 5209#: src/namestore/gnunet-namestore.c:1084
5204#, c-format 5210#, c-format
5205msgid "Unsupported type `%s'\n" 5211msgid "Unsupported type `%s'\n"
5206msgstr "Tipo no soportado «%s»\n" 5212msgstr "Tipo no soportado «%s»\n"
5207 5213
5208#: src/namestore/gnunet-namestore.c:962 5214#: src/namestore/gnunet-namestore.c:1106
5209#, c-format 5215#, c-format
5210msgid "Value `%s' invalid for record type `%s'\n" 5216msgid "Value `%s' invalid for record type `%s'\n"
5211msgstr "Valor «%s» no válido para el tipo de registro «%s»\n" 5217msgstr "Valor «%s» no válido para el tipo de registro «%s»\n"
5212 5218
5213#: src/namestore/gnunet-namestore.c:1007 5219#: src/namestore/gnunet-namestore.c:1129
5214#, c-format 5220#, c-format
5215msgid "Invalid time format `%s'\n" 5221msgid "Invalid time format `%s'\n"
5216msgstr "Formato de tiempo no válido «%s»\n" 5222msgstr "Formato de tiempo no válido «%s»\n"
5217 5223
5218#: src/namestore/gnunet-namestore.c:1027 5224#: src/namestore/gnunet-namestore.c:1149
5219msgid "del" 5225msgid "del"
5220msgstr "borrar" 5226msgstr "borrar"
5221 5227
5222#: src/namestore/gnunet-namestore.c:1070 5228#: src/namestore/gnunet-namestore.c:1192
5223#, fuzzy, c-format 5229#, fuzzy, c-format
5224msgid "Invalid public key for reverse lookup `%s'\n" 5230msgid "Invalid public key for reverse lookup `%s'\n"
5225msgstr "Parámetro no válido «%s»\n" 5231msgstr "Parámetro no válido «%s»\n"
5226 5232
5227#: src/namestore/gnunet-namestore.c:1099 5233#: src/namestore/gnunet-namestore.c:1221
5228#: src/peerinfo-tool/gnunet-peerinfo.c:773 5234#: src/peerinfo-tool/gnunet-peerinfo.c:775
5229#, c-format 5235#, c-format
5230msgid "Invalid URI `%s'\n" 5236msgid "Invalid URI `%s'\n"
5231msgstr "URI no válida: «%s»\n" 5237msgstr "URI no válida: «%s»\n"
5232 5238
5233#: src/namestore/gnunet-namestore.c:1134 5239#: src/namestore/gnunet-namestore.c:1249
5234#, fuzzy, c-format 5240#, fuzzy, c-format
5235msgid "Invalid nick `%s'\n" 5241msgid "Invalid nick `%s'\n"
5236msgstr "URI no válida: «%s»\n" 5242msgstr "URI no válida: «%s»\n"
5237 5243
5238#: src/namestore/gnunet-namestore.c:1174 5244#: src/namestore/gnunet-namestore.c:1289
5239#, fuzzy, c-format 5245#, fuzzy, c-format
5240msgid "No default ego configured in identity service\n" 5246msgid "No default ego configured in identity service\n"
5241msgstr "'%s': servicio desconocido: %s\n" 5247msgstr "'%s': servicio desconocido: %s\n"
5242 5248
5243#: src/namestore/gnunet-namestore.c:1238 5249#: src/namestore/gnunet-namestore.c:1341
5250#, fuzzy, c-format
5251msgid "Superfluous command line arguments (starting with `%s') ignored\n"
5252msgstr "Argumentos superfluos (ignorados).\n"
5253
5254#: src/namestore/gnunet-namestore.c:1357
5244#, fuzzy, c-format 5255#, fuzzy, c-format
5245msgid "Cannot connect to identity service\n" 5256msgid "Cannot connect to identity service\n"
5246msgstr "¡No se pudo conectar al servicio %s!\n" 5257msgstr "¡No se pudo conectar al servicio %s!\n"
5247 5258
5248#: src/namestore/gnunet-namestore.c:1263 5259#: src/namestore/gnunet-namestore.c:1407
5260msgid "Empty record line argument is not allowed.\n"
5261msgstr ""
5262
5263#: src/namestore/gnunet-namestore.c:1423
5264#, c-format
5265msgid "Invalid expiration time `%s' (must be without unit)\n"
5266msgstr ""
5267
5268#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
5269#: src/namestore/gnunet-namestore.c:1470
5270#, fuzzy, c-format
5271msgid "Missing entries in record line `%s'.\n"
5272msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n"
5273
5274#: src/namestore/gnunet-namestore.c:1444
5275#, fuzzy, c-format
5276msgid "Unknown record type `%s'\n"
5277msgstr "Comando desconocido «%s»\n"
5278
5279#: src/namestore/gnunet-namestore.c:1484
5280#, fuzzy, c-format
5281msgid "Invalid record data for type %s: `%s'.\n"
5282msgstr "Formato no válido para la IP: «%s»\n"
5283
5284#: src/namestore/gnunet-namestore.c:1548
5249msgid "add record" 5285msgid "add record"
5250msgstr "añadir registro" 5286msgstr "añadir registro"
5251 5287
5252#: src/namestore/gnunet-namestore.c:1267 5288#: src/namestore/gnunet-namestore.c:1552
5253msgid "delete record" 5289msgid "delete record"
5254msgstr "borrar registro" 5290msgstr "borrar registro"
5255 5291
5256#: src/namestore/gnunet-namestore.c:1271 5292#: src/namestore/gnunet-namestore.c:1556
5257msgid "display records" 5293msgid "display records"
5258msgstr "mostrar registros" 5294msgstr "mostrar registros"
5259 5295
5260#: src/namestore/gnunet-namestore.c:1276 5296#: src/namestore/gnunet-namestore.c:1561
5261msgid "" 5297msgid ""
5262"expiration time for record to use (for adding only), \"never\" is possible" 5298"expiration time for record to use (for adding only), \"never\" is possible"
5263msgstr "" 5299msgstr ""
5264"tiempo de expiración del registro a usar (únicamente para añadir), nunca " 5300"tiempo de expiración del registro a usar (únicamente para añadir), nunca "
5265"(\"never\") es posible" 5301"(\"never\") es posible"
5266 5302
5267#: src/namestore/gnunet-namestore.c:1281 5303#: src/namestore/gnunet-namestore.c:1566
5268#, fuzzy 5304#, fuzzy
5269msgid "set the desired nick name for the zone" 5305msgid "set the desired nick name for the zone"
5270msgstr "establece el nivel LEVEL deseado de replicación" 5306msgstr "establece el nivel LEVEL deseado de replicación"
5271 5307
5272#: src/namestore/gnunet-namestore.c:1285 5308#: src/namestore/gnunet-namestore.c:1570
5273#, fuzzy 5309#, fuzzy
5274msgid "monitor changes in the namestore" 5310msgid "monitor changes in the namestore"
5275msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n" 5311msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
5276 5312
5277#: src/namestore/gnunet-namestore.c:1295 5313#: src/namestore/gnunet-namestore.c:1580
5278#, fuzzy 5314#, fuzzy
5279msgid "determine our name for the given PKEY" 5315msgid "determine our name for the given PKEY"
5280msgstr "establece las preferencias para el par dado" 5316msgstr "establece las preferencias para el par dado"
5281 5317
5282#: src/namestore/gnunet-namestore.c:1300 5318#: src/namestore/gnunet-namestore.c:1585
5319msgid ""
5320"set record set to values given by (possibly multiple) RECORDLINES; can be "
5321"specified multiple times"
5322msgstr ""
5323
5324#: src/namestore/gnunet-namestore.c:1590
5283msgid "type of the record to add/delete/display" 5325msgid "type of the record to add/delete/display"
5284msgstr "tipo del registro a añadir/borrar/mostrar" 5326msgstr "tipo del registro a añadir/borrar/mostrar"
5285 5327
5286#: src/namestore/gnunet-namestore.c:1305 5328#: src/namestore/gnunet-namestore.c:1595
5287msgid "URI to import into our zone" 5329msgid "URI to import into our zone"
5288msgstr "URI a importar a nuestra zona" 5330msgstr "URI a importar a nuestra zona"
5289 5331
5290#: src/namestore/gnunet-namestore.c:1310 5332#: src/namestore/gnunet-namestore.c:1600
5291msgid "value of the record to add/delete" 5333msgid "value of the record to add/delete"
5292msgstr "valor del registro a añadir/borrar" 5334msgstr "valor del registro a añadir/borrar"
5293 5335
5294#: src/namestore/gnunet-namestore.c:1314 5336#: src/namestore/gnunet-namestore.c:1604
5295msgid "create or list public record" 5337msgid "create or list public record"
5296msgstr "crear o listar registros públicos" 5338msgstr "crear o listar registros públicos"
5297 5339
5298#: src/namestore/gnunet-namestore.c:1318 5340#: src/namestore/gnunet-namestore.c:1608
5299msgid "" 5341msgid ""
5300"create shadow record (only valid if all other records of the same type have " 5342"create shadow record (only valid if all other records of the same type have "
5301"expired" 5343"expired"
5302msgstr "" 5344msgstr ""
5303 5345
5304#: src/namestore/gnunet-namestore.c:1323 5346#: src/namestore/gnunet-namestore.c:1613
5305#, fuzzy 5347#, fuzzy
5306msgid "name of the ego controlling the zone" 5348msgid "name of the ego controlling the zone"
5307msgstr "nombre de la sección a la que acceder" 5349msgstr "nombre de la sección a la que acceder"
5308 5350
5309# form?? 5351# form??
5310#: src/namestore/gnunet-namestore-fcfsd.c:547 5352#: src/namestore/gnunet-namestore-fcfsd.c:549
5311#, c-format 5353#, c-format
5312msgid "Unsupported form value `%s'\n" 5354msgid "Unsupported form value `%s'\n"
5313msgstr "Forma de valor no soportada «%s»\n" 5355msgstr "Forma de valor no soportada «%s»\n"
5314 5356
5315#: src/namestore/gnunet-namestore-fcfsd.c:574 5357#: src/namestore/gnunet-namestore-fcfsd.c:576
5316#, c-format 5358#, c-format
5317msgid "Failed to create record for domain `%s': %s\n" 5359msgid "Failed to create record for domain `%s': %s\n"
5318msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n" 5360msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n"
5319 5361
5320#: src/namestore/gnunet-namestore-fcfsd.c:595 5362#: src/namestore/gnunet-namestore-fcfsd.c:597
5321msgid "Error when mapping zone to name\n" 5363msgid "Error when mapping zone to name\n"
5322msgstr "" 5364msgstr ""
5323 5365
5324#: src/namestore/gnunet-namestore-fcfsd.c:627 5366#: src/namestore/gnunet-namestore-fcfsd.c:629
5325#, c-format 5367#, c-format
5326msgid "Found existing name `%s' for the given key\n" 5368msgid "Found existing name `%s' for the given key\n"
5327msgstr "Encontrado nombre «%s» para la clave dada\n" 5369msgstr "Encontrado nombre «%s» para la clave dada\n"
5328 5370
5329#: src/namestore/gnunet-namestore-fcfsd.c:687 5371#: src/namestore/gnunet-namestore-fcfsd.c:689
5330#, c-format 5372#, c-format
5331msgid "Found %u existing records for domain `%s'\n" 5373msgid "Found %u existing records for domain `%s'\n"
5332msgstr "Encontrados %u registros para el dominio «%s»\n" 5374msgstr "Encontrados %u registros para el dominio «%s»\n"
5333 5375
5334#: src/namestore/gnunet-namestore-fcfsd.c:775 5376#: src/namestore/gnunet-namestore-fcfsd.c:777
5335#, c-format 5377#, c-format
5336msgid "Failed to create page for `%s'\n" 5378msgid "Failed to create page for `%s'\n"
5337msgstr "Se produjo un fallo al crear la página para «%s»\n" 5379msgstr "Se produjo un fallo al crear la página para «%s»\n"
5338 5380
5339#: src/namestore/gnunet-namestore-fcfsd.c:794 5381#: src/namestore/gnunet-namestore-fcfsd.c:796
5340#, c-format 5382#, c-format
5341msgid "Failed to setup post processor for `%s'\n" 5383msgid "Failed to setup post processor for `%s'\n"
5342msgstr "Se produjo un fallo al configurar el post-procesador para «%s»\n" 5384msgstr "Se produjo un fallo al configurar el post-procesador para «%s»\n"
5343 5385
5344#: src/namestore/gnunet-namestore-fcfsd.c:830 5386#: src/namestore/gnunet-namestore-fcfsd.c:832
5345msgid "Domain name must not contain `.'\n" 5387msgid "Domain name must not contain `.'\n"
5346msgstr "El nombre de dominio no puede contener «.»\n" 5388msgstr "El nombre de dominio no puede contener «.»\n"
5347 5389
5348#: src/namestore/gnunet-namestore-fcfsd.c:839 5390#: src/namestore/gnunet-namestore-fcfsd.c:841
5349msgid "Domain name must not contain `+'\n" 5391msgid "Domain name must not contain `+'\n"
5350msgstr "El nombre de dominio no puede contener «+»\n" 5392msgstr "El nombre de dominio no puede contener «+»\n"
5351 5393
5352#: src/namestore/gnunet-namestore-fcfsd.c:1069 5394#: src/namestore/gnunet-namestore-fcfsd.c:1071
5353msgid "No ego configured for `fcfsd` subsystem\n" 5395msgid "No ego configured for `fcfsd` subsystem\n"
5354msgstr "" 5396msgstr ""
5355 5397
5356#: src/namestore/gnunet-namestore-fcfsd.c:1097 5398#: src/namestore/gnunet-namestore-fcfsd.c:1099
5357msgid "Failed to start HTTP server\n" 5399msgid "Failed to start HTTP server\n"
5358msgstr "Se produjo un fallo al iniciar el servidor HTTP\n" 5400msgstr "Se produjo un fallo al iniciar el servidor HTTP\n"
5359 5401
5360#: src/namestore/gnunet-namestore-fcfsd.c:1145 5402#: src/namestore/gnunet-namestore-fcfsd.c:1147
5361#, fuzzy 5403#, fuzzy
5362msgid "Failed to connect to identity\n" 5404msgid "Failed to connect to identity\n"
5363msgstr "Se produjo un fallo al conectar con GNS\n" 5405msgstr "Se produjo un fallo al conectar con GNS\n"
5364 5406
5365#: src/namestore/gnunet-namestore-fcfsd.c:1171 5407#: src/namestore/gnunet-namestore-fcfsd.c:1173
5366msgid "name of the zone that is to be managed by FCFSD" 5408msgid "name of the zone that is to be managed by FCFSD"
5367msgstr "" 5409msgstr ""
5368 5410
5369#: src/namestore/gnunet-namestore-fcfsd.c:1190 5411#: src/namestore/gnunet-namestore-fcfsd.c:1192
5370#, fuzzy 5412#, fuzzy
5371msgid "GNU Name System First Come First Serve name registration service" 5413msgid "GNU Name System First Come First Serve name registration service"
5372msgstr "Servicio de registro GNUnet GNS primero en llegar, primero en servirse" 5414msgstr "Servicio de registro GNUnet GNS primero en llegar, primero en servirse"
5373 5415
5374#: src/namestore/gnunet-service-namestore.c:749 5416#: src/namestore/gnunet-service-namestore.c:900
5375#, fuzzy, c-format 5417#, fuzzy, c-format
5376msgid "Failed to replicate block in namecache: %s\n" 5418msgid "Failed to replicate block in namecache: %s\n"
5377msgstr "Se produjo un fallo al crear el espacio de nombres «%s»\n" 5419msgstr "Se produjo un fallo al crear el espacio de nombres «%s»\n"
5378 5420
5379#: src/namestore/gnunet-zoneimport.c:2036 5421#: src/namestore/gnunet-zoneimport.c:2038
5380msgid "size to use for the main hash map" 5422msgid "size to use for the main hash map"
5381msgstr "" 5423msgstr ""
5382 5424
5383#: src/namestore/gnunet-zoneimport.c:2041 5425#: src/namestore/gnunet-zoneimport.c:2043
5384msgid "minimum expiration time we assume for imported records" 5426msgid "minimum expiration time we assume for imported records"
5385msgstr "" 5427msgstr ""
5386 5428
5387#: src/namestore/namestore_api.c:389 5429#: src/namestore/namestore_api.c:391
5388#, fuzzy 5430#, fuzzy
5389msgid "Namestore failed to store record\n" 5431msgid "Namestore failed to store record\n"
5390msgstr "El almacén de nombres no pudo añadir el registro\n" 5432msgstr "El almacén de nombres no pudo añadir el registro\n"
5391 5433
5392#: src/namestore/plugin_namestore_heap.c:776 5434#: src/namestore/plugin_namestore_heap.c:778
5393#, fuzzy 5435#, fuzzy
5394msgid "heap file database running\n" 5436msgid "heap file database running\n"
5395msgstr "Base de datos de plantilla ejecutándose\n" 5437msgstr "Base de datos de plantilla ejecutándose\n"
5396 5438
5397#: src/namestore/plugin_namestore_sqlite.c:216 5439#: src/nat-auto/gnunet-nat-auto.c:193
5398#: src/namestore/plugin_namestore_sqlite.c:227
5399#, fuzzy, c-format
5400msgid "Failed to setup database at `%s'\n"
5401msgstr "Se produjo un fallo al inciar «%s» en «%s»\n"
5402
5403#: src/nat-auto/gnunet-nat-auto.c:191
5404#, fuzzy 5440#, fuzzy
5405msgid "Suggested configuration changes:\n" 5441msgid "Suggested configuration changes:\n"
5406msgstr "Configuración de GNUnet" 5442msgstr "Configuración de GNUnet"
5407 5443
5408#: src/nat-auto/gnunet-nat-auto.c:217 5444#: src/nat-auto/gnunet-nat-auto.c:219
5409#, fuzzy, c-format 5445#, fuzzy, c-format
5410msgid "Failed to write configuration to `%s'\n" 5446msgid "Failed to write configuration to `%s'\n"
5411msgstr "Se produjo un fallo al guardar la nueva configuración al disco" 5447msgstr "Se produjo un fallo al guardar la nueva configuración al disco"
5412 5448
5413#: src/nat-auto/gnunet-nat-auto.c:224 5449#: src/nat-auto/gnunet-nat-auto.c:226
5414#, fuzzy, c-format 5450#, fuzzy, c-format
5415msgid "Wrote updated configuration to `%s'\n" 5451msgid "Wrote updated configuration to `%s'\n"
5416msgstr "No se pudo acceder al fichero de configuración «%s»\n" 5452msgstr "No se pudo acceder al fichero de configuración «%s»\n"
5417 5453
5418#: src/nat-auto/gnunet-nat-auto.c:343 5454#: src/nat-auto/gnunet-nat-auto.c:345
5419#, fuzzy 5455#, fuzzy
5420msgid "run autoconfiguration" 5456msgid "run autoconfiguration"
5421msgstr "Configuración de GNUnet" 5457msgstr "Configuración de GNUnet"
5422 5458
5423#: src/nat-auto/gnunet-nat-auto.c:349 5459#: src/nat-auto/gnunet-nat-auto.c:351
5424msgid "section name providing the configuration for the adapter" 5460msgid "section name providing the configuration for the adapter"
5425msgstr "" 5461msgstr ""
5426 5462
5427#: src/nat-auto/gnunet-nat-auto.c:354 src/nat/gnunet-nat.c:451 5463#: src/nat-auto/gnunet-nat-auto.c:356 src/nat/gnunet-nat.c:459
5428msgid "use TCP" 5464msgid "use TCP"
5429msgstr "" 5465msgstr ""
5430 5466
5431#: src/nat-auto/gnunet-nat-auto.c:359 src/nat/gnunet-nat.c:456 5467#: src/nat-auto/gnunet-nat-auto.c:361 src/nat/gnunet-nat.c:464
5432msgid "use UDP" 5468msgid "use UDP"
5433msgstr "" 5469msgstr ""
5434 5470
5435#: src/nat-auto/gnunet-nat-auto.c:364 5471#: src/nat-auto/gnunet-nat-auto.c:366
5436#, fuzzy 5472#, fuzzy
5437msgid "write configuration file (for autoconfiguration)" 5473msgid "write configuration file (for autoconfiguration)"
5438msgstr "¡Ninguna aplicación definida en la configuración!\n" 5474msgstr "¡Ninguna aplicación definida en la configuración!\n"
5439 5475
5440#: src/nat-auto/gnunet-nat-auto.c:376 5476#: src/nat-auto/gnunet-nat-auto.c:378
5441#, fuzzy 5477#, fuzzy
5442msgid "GNUnet NAT traversal autoconfiguration" 5478msgid "GNUnet NAT traversal autoconfiguration"
5443msgstr "Demonio de ayuda en las pruebas de recorrido NAT de GNUnet" 5479msgstr "Demonio de ayuda en las pruebas de recorrido NAT de GNUnet"
5444 5480
5445#: src/nat-auto/gnunet-nat-auto_legacy.c:401 5481#: src/nat-auto/gnunet-nat-auto_legacy.c:403
5446#: src/nat-auto/gnunet-service-nat-auto_legacy.c:679 5482#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
5447#: src/nat-auto/nat_auto_api_test.c:403 5483#: src/nat-auto/nat_auto_api_test.c:409
5448msgid "Failed to connect to `gnunet-nat-server'\n" 5484msgid "Failed to connect to `gnunet-nat-server'\n"
5449msgstr "Se produjo un fallo al conectar con «gnunet-nat-server»\n" 5485msgstr "Se produjo un fallo al conectar con «gnunet-nat-server»\n"
5450 5486
5451#: src/nat-auto/gnunet-nat-auto_legacy.c:516 5487#: src/nat-auto/gnunet-nat-auto_legacy.c:518
5452#, c-format 5488#, c-format
5453msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n" 5489msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
5454msgstr "" 5490msgstr ""
5455"Se produjo un fallo al crear el «socket» de escucha asociado a «%s» para " 5491"Se produjo un fallo al crear el «socket» de escucha asociado a «%s» para "
5456"pruebas NAT: %s\n" 5492"pruebas NAT: %s\n"
5457 5493
5458#: src/nat-auto/gnunet-nat-auto_legacy.c:566 5494#: src/nat-auto/gnunet-nat-auto_legacy.c:568
5459#: src/nat-auto/nat_auto_api_test.c:569 5495#: src/nat-auto/nat_auto_api_test.c:575
5460#, fuzzy 5496#, fuzzy
5461msgid "NAT test failed to start NAT library\n" 5497msgid "NAT test failed to start NAT library\n"
5462msgstr "El almacén de nombres no pudo añadir el registro\n" 5498msgstr "El almacén de nombres no pudo añadir el registro\n"
5463 5499
5464#: src/nat-auto/gnunet-service-nat-auto.c:340 5500#: src/nat-auto/gnunet-service-nat-auto.c:342
5465#, fuzzy 5501#, fuzzy
5466msgid "UPnP client `upnpc` command not found, disabling UPnP\n" 5502msgid "UPnP client `upnpc` command not found, disabling UPnP\n"
5467msgstr "comando «upnpc» no encontrado\n" 5503msgstr "comando «upnpc» no encontrado\n"
5468 5504
5469#: src/nat-auto/gnunet-service-nat-auto_legacy.c:383 5505#: src/nat-auto/gnunet-service-nat-auto_legacy.c:385
5470msgid "NAT traversal with ICMP Server succeeded.\n" 5506msgid "NAT traversal with ICMP Server succeeded.\n"
5471msgstr "Recorrido NAT con servidor ICMP satisfactorio.\n" 5507msgstr "Recorrido NAT con servidor ICMP satisfactorio.\n"
5472 5508
5473#: src/nat-auto/gnunet-service-nat-auto_legacy.c:384 5509#: src/nat-auto/gnunet-service-nat-auto_legacy.c:386
5474msgid "NAT traversal with ICMP Server failed.\n" 5510msgid "NAT traversal with ICMP Server failed.\n"
5475msgstr "Recorrido NAT con servidor ICMP fallido.\n" 5511msgstr "Recorrido NAT con servidor ICMP fallido.\n"
5476 5512
5477#: src/nat-auto/gnunet-service-nat-auto_legacy.c:403 5513#: src/nat-auto/gnunet-service-nat-auto_legacy.c:405
5478msgid "Testing connection reversal with ICMP server.\n" 5514msgid "Testing connection reversal with ICMP server.\n"
5479msgstr "Probando conexión inversa con el servidor ICMP.\n" 5515msgstr "Probando conexión inversa con el servidor ICMP.\n"
5480 5516
5481#: src/nat-auto/gnunet-service-nat-auto_legacy.c:435 5517#: src/nat-auto/gnunet-service-nat-auto_legacy.c:437
5482#, c-format 5518#, c-format
5483msgid "Detected external IP `%s'\n" 5519msgid "Detected external IP `%s'\n"
5484msgstr "Detectada IP externa «%s»\n" 5520msgstr "Detectada IP externa «%s»\n"
5485 5521
5486#: src/nat-auto/gnunet-service-nat-auto_legacy.c:570 5522#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
5487msgid "This system has a global IPv6 address, setting IPv6 to supported.\n" 5523msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
5488msgstr "" 5524msgstr ""
5489"Este sistema tiene una dirección IPv6 global, fijando IPv6 a habilitado.\n" 5525"Este sistema tiene una dirección IPv6 global, fijando IPv6 a habilitado.\n"
5490 5526
5491#: src/nat-auto/gnunet-service-nat-auto_legacy.c:588 5527#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
5492#, c-format 5528#, c-format
5493msgid "Detected internal network address `%s'.\n" 5529msgid "Detected internal network address `%s'.\n"
5494msgstr "Detectada dirección de la red interna «%s».\n" 5530msgstr "Detectada dirección de la red interna «%s».\n"
5495 5531
5496#: src/nat-auto/gnunet-service-nat-auto_legacy.c:722 5532#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
5497msgid "upnpc found, enabling its use\n" 5533msgid "upnpc found, enabling its use\n"
5498msgstr "«upnpc» encontrado, habilitando su uso\n" 5534msgstr "«upnpc» encontrado, habilitando su uso\n"
5499 5535
5500#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723 5536#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
5501msgid "upnpc not found\n" 5537msgid "upnpc not found\n"
5502msgstr "«upnpc» no encontrado\n" 5538msgstr "«upnpc» no encontrado\n"
5503 5539
5504#: src/nat-auto/gnunet-service-nat-auto_legacy.c:760 5540#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
5505msgid "test_icmp_server not possible, as we have no public IPv4 address\n" 5541msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
5506msgstr "" 5542msgstr ""
5507 5543
5508#: src/nat-auto/gnunet-service-nat-auto_legacy.c:772 5544#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
5509#: src/nat-auto/gnunet-service-nat-auto_legacy.c:832 5545#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
5510msgid "test_icmp_server not possible, as we are not behind NAT\n" 5546msgid "test_icmp_server not possible, as we are not behind NAT\n"
5511msgstr "" 5547msgstr ""
5512 5548
5513#: src/nat-auto/gnunet-service-nat-auto_legacy.c:784 5549#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
5514#: src/nat-auto/gnunet-service-nat-auto_legacy.c:844 5550#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
5515msgid "No working gnunet-helper-nat-server found\n" 5551msgid "No working gnunet-helper-nat-server found\n"
5516msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n" 5552msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n"
5517 5553
5518#: src/nat-auto/gnunet-service-nat-auto_legacy.c:821 5554#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
5519msgid "test_icmp_client not possible, as we have no internal IPv4 address\n" 5555msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
5520msgstr "" 5556msgstr ""
5521 5557
5522#: src/nat-auto/nat_auto_api.c:74 5558#: src/nat-auto/nat_auto_api.c:76
5523msgid "Operation Successful" 5559msgid "Operation Successful"
5524msgstr "" 5560msgstr ""
5525 5561
5526#: src/nat-auto/nat_auto_api.c:76 5562#: src/nat-auto/nat_auto_api.c:78
5527msgid "IPC failure" 5563msgid "IPC failure"
5528msgstr "" 5564msgstr ""
5529 5565
5530#: src/nat-auto/nat_auto_api.c:78 5566#: src/nat-auto/nat_auto_api.c:80
5531msgid "Failure in network subsystem, check permissions." 5567msgid "Failure in network subsystem, check permissions."
5532msgstr "" 5568msgstr ""
5533 5569
5534#: src/nat-auto/nat_auto_api.c:80 5570#: src/nat-auto/nat_auto_api.c:82
5535msgid "Encountered timeout while performing operation" 5571msgid "Encountered timeout while performing operation"
5536msgstr "" 5572msgstr ""
5537 5573
5538#: src/nat-auto/nat_auto_api.c:82 5574#: src/nat-auto/nat_auto_api.c:84
5539msgid "detected that we are offline" 5575msgid "detected that we are offline"
5540msgstr "" 5576msgstr ""
5541 5577
5542#: src/nat-auto/nat_auto_api.c:84 5578#: src/nat-auto/nat_auto_api.c:86
5543#, fuzzy 5579#, fuzzy
5544msgid "`upnpc` command not found" 5580msgid "`upnpc` command not found"
5545msgstr "comando «upnpc» no encontrado\n" 5581msgstr "comando «upnpc» no encontrado\n"
5546 5582
5547#: src/nat-auto/nat_auto_api.c:86 5583#: src/nat-auto/nat_auto_api.c:88
5548#, fuzzy 5584#, fuzzy
5549msgid "Failed to run `upnpc` command" 5585msgid "Failed to run `upnpc` command"
5550msgstr "Se produjo un fallo al ejecutar «%s»\n" 5586msgstr "Se produjo un fallo al ejecutar «%s»\n"
5551 5587
5552#: src/nat-auto/nat_auto_api.c:88 5588#: src/nat-auto/nat_auto_api.c:90
5553#, fuzzy 5589#, fuzzy
5554msgid "`upnpc' command took too long, process killed" 5590msgid "`upnpc' command took too long, process killed"
5555msgstr "comando «upnpc» no encontrado\n" 5591msgstr "comando «upnpc» no encontrado\n"
5556 5592
5557#: src/nat-auto/nat_auto_api.c:90 5593#: src/nat-auto/nat_auto_api.c:92
5558msgid "`upnpc' command failed to establish port mapping" 5594msgid "`upnpc' command failed to establish port mapping"
5559msgstr "" 5595msgstr ""
5560 5596
5561#: src/nat-auto/nat_auto_api.c:92 5597#: src/nat-auto/nat_auto_api.c:94
5562#, fuzzy 5598#, fuzzy
5563msgid "`external-ip' command not found" 5599msgid "`external-ip' command not found"
5564msgstr "comando «external-ip» no encontrado\n" 5600msgstr "comando «external-ip» no encontrado\n"
5565 5601
5566#: src/nat-auto/nat_auto_api.c:94 5602#: src/nat-auto/nat_auto_api.c:96
5567#, fuzzy 5603#, fuzzy
5568msgid "Failed to run `external-ip` command" 5604msgid "Failed to run `external-ip` command"
5569msgstr "Se produjo un fallo al ejecutar «%s»\n" 5605msgstr "Se produjo un fallo al ejecutar «%s»\n"
5570 5606
5571#: src/nat-auto/nat_auto_api.c:96 5607#: src/nat-auto/nat_auto_api.c:98
5572#, fuzzy 5608#, fuzzy
5573msgid "`external-ip' command output invalid" 5609msgid "`external-ip' command output invalid"
5574msgstr "comando «external-ip» no encontrado\n" 5610msgstr "comando «external-ip» no encontrado\n"
5575 5611
5576#: src/nat-auto/nat_auto_api.c:98 5612#: src/nat-auto/nat_auto_api.c:100
5577msgid "no valid address was returned by `external-ip'" 5613msgid "no valid address was returned by `external-ip'"
5578msgstr "" 5614msgstr ""
5579 5615
5580#: src/nat-auto/nat_auto_api.c:100 5616#: src/nat-auto/nat_auto_api.c:102
5581#, fuzzy 5617#, fuzzy
5582msgid "Could not determine interface with internal/local network address" 5618msgid "Could not determine interface with internal/local network address"
5583msgstr "No se pudo determinar la ruta de instalación de los módulos.\n" 5619msgstr "No se pudo determinar la ruta de instalación de los módulos.\n"
5584 5620
5585#: src/nat-auto/nat_auto_api.c:102 5621#: src/nat-auto/nat_auto_api.c:104
5586#, fuzzy 5622#, fuzzy
5587msgid "No functioning gnunet-helper-nat-server installation found" 5623msgid "No functioning gnunet-helper-nat-server installation found"
5588msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n" 5624msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n"
5589 5625
5590#: src/nat-auto/nat_auto_api.c:104 5626#: src/nat-auto/nat_auto_api.c:106
5591msgid "NAT test could not be initialized" 5627msgid "NAT test could not be initialized"
5592msgstr "" 5628msgstr ""
5593 5629
5594#: src/nat-auto/nat_auto_api.c:106 5630#: src/nat-auto/nat_auto_api.c:108
5595msgid "NAT test timeout reached" 5631msgid "NAT test timeout reached"
5596msgstr "" 5632msgstr ""
5597 5633
5598#: src/nat-auto/nat_auto_api.c:108 5634#: src/nat-auto/nat_auto_api.c:110
5599msgid "could not register NAT" 5635msgid "could not register NAT"
5600msgstr "" 5636msgstr ""
5601 5637
5602#: src/nat-auto/nat_auto_api.c:110 5638#: src/nat-auto/nat_auto_api.c:112
5603#, fuzzy 5639#, fuzzy
5604msgid "No working gnunet-helper-nat-client installation found" 5640msgid "No working gnunet-helper-nat-client installation found"
5605msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n" 5641msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n"
5606 5642
5607#: src/nat-auto/nat_auto_api_test.c:475 5643#: src/nat-auto/nat_auto_api_test.c:481
5608#, fuzzy, c-format 5644#, fuzzy, c-format
5609msgid "Failed to find valid PORT in section `%s'\n" 5645msgid "Failed to find valid PORT in section `%s'\n"
5610msgstr "¡Se produjo un fallo al buscar la opción %s en la sección %s!\n" 5646msgstr "¡Se produjo un fallo al buscar la opción %s en la sección %s!\n"
5611 5647
5612#: src/nat-auto/nat_auto_api_test.c:520 5648#: src/nat-auto/nat_auto_api_test.c:526
5613#, fuzzy, c-format 5649#, fuzzy, c-format
5614msgid "Failed to create socket bound to `%s' for NAT test: %s\n" 5650msgid "Failed to create socket bound to `%s' for NAT test: %s\n"
5615msgstr "" 5651msgstr ""
5616"Se produjo un fallo al crear el «socket» de escucha asociado a «%s» para " 5652"Se produjo un fallo al crear el «socket» de escucha asociado a «%s» para "
5617"pruebas NAT: %s\n" 5653"pruebas NAT: %s\n"
5618 5654
5619#: src/nat/gnunet-nat.c:429 5655#: src/nat/gnunet-nat.c:437
5620msgid "which IP and port are we locally using to bind/listen to" 5656msgid "which IP and port are we locally using to bind/listen to"
5621msgstr "" 5657msgstr ""
5622 5658
5623#: src/nat/gnunet-nat.c:435 5659#: src/nat/gnunet-nat.c:443
5624msgid "which remote IP and port should be asked for connection reversal" 5660msgid "which remote IP and port should be asked for connection reversal"
5625msgstr "" 5661msgstr ""
5626 5662
5627#: src/nat/gnunet-nat.c:441 5663#: src/nat/gnunet-nat.c:449
5628msgid "" 5664msgid ""
5629"name of configuration section to find additional options, such as manual " 5665"name of configuration section to find additional options, such as manual "
5630"host punching data" 5666"host punching data"
5631msgstr "" 5667msgstr ""
5632 5668
5633#: src/nat/gnunet-nat.c:446 5669#: src/nat/gnunet-nat.c:454
5634msgid "enable STUN processing" 5670msgid "enable STUN processing"
5635msgstr "" 5671msgstr ""
5636 5672
5637#: src/nat/gnunet-nat.c:461 5673#: src/nat/gnunet-nat.c:469
5638#, fuzzy 5674#, fuzzy
5639msgid "watch for connection reversal requests" 5675msgid "watch for connection reversal requests"
5640msgstr "# pares desconectados debido a petición externa" 5676msgstr "# pares desconectados debido a petición externa"
5641 5677
5642#: src/nat/gnunet-nat.c:473 5678#: src/nat/gnunet-nat.c:481
5643#, fuzzy 5679#, fuzzy
5644msgid "GNUnet NAT traversal autoconfigure daemon" 5680msgid "GNUnet NAT traversal autoconfigure daemon"
5645msgstr "Demonio de ayuda en las pruebas de recorrido NAT de GNUnet" 5681msgstr "Demonio de ayuda en las pruebas de recorrido NAT de GNUnet"
5646 5682
5647#: src/nat/gnunet-service-nat.c:1337 5683#: src/nat/gnunet-service-nat.c:1339
5648#, c-format 5684#, c-format
5649msgid "Malformed punched hole specification `%s' (lacks port)\n" 5685msgid "Malformed punched hole specification `%s' (lacks port)\n"
5650msgstr "" 5686msgstr ""
5651 5687
5652#: src/nat/gnunet-service-nat.c:1347 5688#: src/nat/gnunet-service-nat.c:1349
5653#, fuzzy, c-format 5689#, fuzzy, c-format
5654msgid "Invalid port number in punched hole specification `%s' (lacks port)\n" 5690msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
5655msgstr "" 5691msgstr ""
5656"Puerto inválido \"%s\" en la especificación de la lista local, probando el " 5692"Puerto inválido \"%s\" en la especificación de la lista local, probando el "
5657"puerto %d.\n" 5693"puerto %d.\n"
5658 5694
5659#: src/nat/gnunet-service-nat.c:1363 5695#: src/nat/gnunet-service-nat.c:1365
5660#, c-format 5696#, c-format
5661msgid "Malformed punched hole specification `%s' (lacks `]')\n" 5697msgid "Malformed punched hole specification `%s' (lacks `]')\n"
5662msgstr "" 5698msgstr ""
5663 5699
5664#: src/nat/gnunet-service-nat.c:1374 5700#: src/nat/gnunet-service-nat.c:1376
5665#, c-format 5701#, c-format
5666msgid "Malformed punched hole specification `%s' (IPv6 address invalid)" 5702msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
5667msgstr "" 5703msgstr ""
5668 5704
5669#: src/nat/gnunet-service-nat.c:1839 5705#: src/nat/gnunet-service-nat.c:1841
5670#, fuzzy 5706#, fuzzy
5671msgid "Connection reversal request failed\n" 5707msgid "Connection reversal request failed\n"
5672msgstr "Colección detenida.\n" 5708msgstr "Colección detenida.\n"
5673 5709
5674#: src/nat/gnunet-service-nat.c:1912 5710#: src/nat/gnunet-service-nat.c:1914
5675msgid "" 5711msgid ""
5676"UPnP enabled in configuration, but UPnP client `upnpc` command not found, " 5712"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
5677"disabling UPnP\n" 5713"disabling UPnP\n"
5678msgstr "" 5714msgstr ""
5679 5715
5680#: src/nat/gnunet-service-nat_helper.c:184 5716#: src/nat/gnunet-service-nat_helper.c:186
5681#, c-format 5717#, c-format
5682msgid "gnunet-helper-nat-server generated malformed address `%s'\n" 5718msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
5683msgstr "«gnunet-helper-nat-server» generó la dirección mal formada «%s»\n" 5719msgstr "«gnunet-helper-nat-server» generó la dirección mal formada «%s»\n"
5684 5720
5685#: src/nat/gnunet-service-nat_helper.c:271 5721#: src/nat/gnunet-service-nat_helper.c:273
5686#, c-format 5722#, c-format
5687msgid "Failed to start %s\n" 5723msgid "Failed to start %s\n"
5688msgstr "Se produjo un fallo al arrancar %s\n" 5724msgstr "Se produjo un fallo al arrancar %s\n"
5689 5725
5690#: src/nat/gnunet-service-nat_mini.c:194 5726#: src/nat/gnunet-service-nat_mini.c:196
5691msgid "`external-ip' command not found\n" 5727msgid "`external-ip' command not found\n"
5692msgstr "comando «external-ip» no encontrado\n" 5728msgstr "comando «external-ip» no encontrado\n"
5693 5729
5694#: src/nat/gnunet-service-nat_mini.c:654 5730#: src/nat/gnunet-service-nat_mini.c:656
5695msgid "`upnpc' command not found\n" 5731msgid "`upnpc' command not found\n"
5696msgstr "comando «upnpc» no encontrado\n" 5732msgstr "comando «upnpc» no encontrado\n"
5697 5733
5698#: src/nse/gnunet-nse.c:120 5734#: src/nse/gnunet-nse.c:122
5699#, fuzzy 5735#, fuzzy
5700msgid "Show network size estimates from NSE service." 5736msgid "Show network size estimates from NSE service."
5701msgstr "# Estimaciones del tamaño de red recibidas" 5737msgstr "# Estimaciones del tamaño de red recibidas"
5702 5738
5703#: src/nse/gnunet-nse-profiler.c:847 5739#: src/nse/gnunet-nse-profiler.c:849
5704msgid "limit to the number of connections to NSE services, 0 for none" 5740msgid "limit to the number of connections to NSE services, 0 for none"
5705msgstr "límite al número de conexiones a servicios NSE, 0 para ilimitadas" 5741msgstr "límite al número de conexiones a servicios NSE, 0 para ilimitadas"
5706 5742
5707#: src/nse/gnunet-nse-profiler.c:852 5743#: src/nse/gnunet-nse-profiler.c:854
5708msgid "name of the file for writing connection information and statistics" 5744msgid "name of the file for writing connection information and statistics"
5709msgstr "" 5745msgstr ""
5710"nombre del fichero para escribir información y estadísticas de la conexión" 5746"nombre del fichero para escribir información y estadísticas de la conexión"
5711 5747
5712#: src/nse/gnunet-nse-profiler.c:864 5748#: src/nse/gnunet-nse-profiler.c:866
5713msgid "name of the file for writing the main results" 5749msgid "name of the file for writing the main results"
5714msgstr "nombre del fichero en el que escribir los resultados principales" 5750msgstr "nombre del fichero en el que escribir los resultados principales"
5715 5751
5716#: src/nse/gnunet-nse-profiler.c:871 5752#: src/nse/gnunet-nse-profiler.c:873
5717msgid "Number of peers to run in each round, separated by commas" 5753msgid "Number of peers to run in each round, separated by commas"
5718msgstr "Número de pares a ejecutar en cada ronda, separados por comas" 5754msgstr "Número de pares a ejecutar en cada ronda, separados por comas"
5719 5755
5720#: src/nse/gnunet-nse-profiler.c:882 5756#: src/nse/gnunet-nse-profiler.c:884
5721msgid "delay between rounds" 5757msgid "delay between rounds"
5722msgstr "retraso entre rondas" 5758msgstr "retraso entre rondas"
5723 5759
5724#: src/nse/gnunet-nse-profiler.c:891 5760#: src/nse/gnunet-nse-profiler.c:893
5725msgid "Measure quality and performance of the NSE service." 5761msgid "Measure quality and performance of the NSE service."
5726msgstr "Medir la calidad y rendimiento del servicio NSE." 5762msgstr "Medir la calidad y rendimiento del servicio NSE."
5727 5763
5728#: src/nse/gnunet-service-nse.c:1532 5764#: src/nse/gnunet-service-nse.c:1534
5729#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:274 5765#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
5730msgid "Value is too large.\n" 5766msgid "Value is too large.\n"
5731msgstr "" 5767msgstr ""
5732 5768
5733#: src/peerinfo/gnunet-service-peerinfo.c:176 5769#: src/peerinfo/gnunet-service-peerinfo.c:178
5734#, c-format 5770#, c-format
5735msgid "Removing expired address of transport `%s'\n" 5771msgid "Removing expired address of transport `%s'\n"
5736msgstr "Eliminando dirección de transporte «%s»\n" 5772msgstr "Eliminando dirección de transporte «%s»\n"
5737 5773
5738#: src/peerinfo/gnunet-service-peerinfo.c:311 5774#: src/peerinfo/gnunet-service-peerinfo.c:313
5739#, fuzzy, c-format 5775#, fuzzy, c-format
5740msgid "Failed to parse HELLO in file `%s': %s\n" 5776msgid "Failed to parse HELLO in file `%s': %s\n"
5741msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" 5777msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
5742 5778
5743#: src/peerinfo/gnunet-service-peerinfo.c:332 5779#: src/peerinfo/gnunet-service-peerinfo.c:334
5744#: src/peerinfo/gnunet-service-peerinfo.c:363 5780#: src/peerinfo/gnunet-service-peerinfo.c:365
5745#, fuzzy, c-format 5781#, fuzzy, c-format
5746msgid "Failed to parse HELLO in file `%s'\n" 5782msgid "Failed to parse HELLO in file `%s'\n"
5747msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" 5783msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
5748 5784
5749#: src/peerinfo/gnunet-service-peerinfo.c:447 5785#: src/peerinfo/gnunet-service-peerinfo.c:449
5750msgid "# peers known" 5786msgid "# peers known"
5751msgstr "# pares conocidos" 5787msgstr "# pares conocidos"
5752 5788
5753#: src/peerinfo/gnunet-service-peerinfo.c:490 5789#: src/peerinfo/gnunet-service-peerinfo.c:492
5754#, c-format 5790#, c-format
5755msgid "" 5791msgid ""
5756"File `%s' in directory `%s' does not match naming convention. Removed.\n" 5792"File `%s' in directory `%s' does not match naming convention. Removed.\n"
@@ -5758,1145 +5794,904 @@ msgstr ""
5758"El fichero «%s» en el directorio «%s» no sigue la convención de nombres. " 5794"El fichero «%s» en el directorio «%s» no sigue la convención de nombres. "
5759"Eliminado.\n" 5795"Eliminado.\n"
5760 5796
5761#: src/peerinfo/gnunet-service-peerinfo.c:657 5797#: src/peerinfo/gnunet-service-peerinfo.c:659
5762#, fuzzy, c-format 5798#, fuzzy, c-format
5763msgid "Scanning directory `%s'\n" 5799msgid "Scanning directory `%s'\n"
5764msgstr "Escaneando directorio «%s».\n" 5800msgstr "Escaneando directorio «%s».\n"
5765 5801
5766#: src/peerinfo/gnunet-service-peerinfo.c:665 5802#: src/peerinfo/gnunet-service-peerinfo.c:667
5767#, c-format 5803#, c-format
5768msgid "Still no peers found in `%s'!\n" 5804msgid "Still no peers found in `%s'!\n"
5769msgstr "¡Aún no se han encontrado pares en «%s»!\n" 5805msgstr "¡Aún no se han encontrado pares en «%s»!\n"
5770 5806
5771#: src/peerinfo/gnunet-service-peerinfo.c:1098 5807#: src/peerinfo/gnunet-service-peerinfo.c:1100
5772#, fuzzy, c-format 5808#, fuzzy, c-format
5773msgid "Cleaning up directory `%s'\n" 5809msgid "Cleaning up directory `%s'\n"
5774msgstr "Escaneando directorio «%s».\n" 5810msgstr "Escaneando directorio «%s».\n"
5775 5811
5776#: src/peerinfo/gnunet-service-peerinfo.c:1436 5812#: src/peerinfo/gnunet-service-peerinfo.c:1438
5777#, c-format 5813#, c-format
5778msgid "Importing HELLOs from `%s'\n" 5814msgid "Importing HELLOs from `%s'\n"
5779msgstr "Importando HELLO de «%s»\n" 5815msgstr "Importando HELLO de «%s»\n"
5780 5816
5781#: src/peerinfo/gnunet-service-peerinfo.c:1449 5817#: src/peerinfo/gnunet-service-peerinfo.c:1451
5782msgid "Skipping import of included HELLOs\n" 5818msgid "Skipping import of included HELLOs\n"
5783msgstr "" 5819msgstr ""
5784 5820
5785# Miguel: "Failed to receive" también aquí está traducido como 5821# Miguel: "Failed to receive" también aquí está traducido como
5786# "no se obtuvo respuesta" por claridad. 5822# "no se obtuvo respuesta" por claridad.
5787#: src/peerinfo/peerinfo_api.c:218 5823#: src/peerinfo/peerinfo_api.c:220
5788msgid "Failed to receive response from `PEERINFO' service." 5824msgid "Failed to receive response from `PEERINFO' service."
5789msgstr "" 5825msgstr ""
5790"No se obtuvo respuesta del servicio de información de pares (PEERINFO)." 5826"No se obtuvo respuesta del servicio de información de pares (PEERINFO)."
5791 5827
5792#: src/peerinfo-tool/gnunet-peerinfo.c:237 5828#: src/peerinfo-tool/gnunet-peerinfo.c:239
5793#, fuzzy, c-format 5829#, fuzzy, c-format
5794msgid "%sPeer `%s'\n" 5830msgid "%sPeer `%s'\n"
5795msgstr "Par «%s»\n" 5831msgstr "Par «%s»\n"
5796 5832
5797#: src/peerinfo-tool/gnunet-peerinfo.c:244 5833#: src/peerinfo-tool/gnunet-peerinfo.c:246
5798#, c-format 5834#, c-format
5799msgid "\tExpires: %s \t %s\n" 5835msgid "\tExpires: %s \t %s\n"
5800msgstr "" 5836msgstr ""
5801 5837
5802#: src/peerinfo-tool/gnunet-peerinfo.c:297 5838#: src/peerinfo-tool/gnunet-peerinfo.c:299
5803#: src/rest-plugins/plugin_rest_peerinfo.c:499 5839#: src/rest-plugins/plugin_rest_peerinfo.c:501
5804#, fuzzy, c-format 5840#, fuzzy, c-format
5805msgid "Failure: Cannot convert address to string for peer `%s'\n" 5841msgid "Failure: Cannot convert address to string for peer `%s'\n"
5806msgstr "Se produjo un fallo al resolver la dirección para el par «%s»\n" 5842msgstr "Se produjo un fallo al resolver la dirección para el par «%s»\n"
5807 5843
5808#: src/peerinfo-tool/gnunet-peerinfo.c:464 5844#: src/peerinfo-tool/gnunet-peerinfo.c:466
5809#, fuzzy, c-format 5845#, fuzzy, c-format
5810msgid "Failure: Received invalid %s\n" 5846msgid "Failure: Received invalid %s\n"
5811msgstr "recibido mensaje '%s' no válido: %s.\n" 5847msgstr "recibido mensaje '%s' no válido: %s.\n"
5812 5848
5813#: src/peerinfo-tool/gnunet-peerinfo.c:478 5849#: src/peerinfo-tool/gnunet-peerinfo.c:480
5814#, fuzzy, c-format 5850#, fuzzy, c-format
5815msgid "Failed to write HELLO with %u bytes to file `%s'\n" 5851msgid "Failed to write HELLO with %u bytes to file `%s'\n"
5816msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" 5852msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
5817 5853
5818#: src/peerinfo-tool/gnunet-peerinfo.c:497 5854#: src/peerinfo-tool/gnunet-peerinfo.c:499
5819#, c-format 5855#, c-format
5820msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n" 5856msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
5821msgstr "" 5857msgstr ""
5822 5858
5823#: src/peerinfo-tool/gnunet-peerinfo.c:797 5859#: src/peerinfo-tool/gnunet-peerinfo.c:799
5824#, c-format 5860#, c-format
5825msgid "I am peer `%s'.\n" 5861msgid "I am peer `%s'.\n"
5826msgstr "Yo soy el par «%s».\n" 5862msgstr "Yo soy el par «%s».\n"
5827 5863
5828#: src/peerinfo-tool/gnunet-peerinfo.c:841 5864#: src/peerinfo-tool/gnunet-peerinfo.c:843
5829msgid "don't resolve host names" 5865msgid "don't resolve host names"
5830msgstr "no resolver nombres de máquina" 5866msgstr "no resolver nombres de máquina"
5831 5867
5832#: src/peerinfo-tool/gnunet-peerinfo.c:846 5868#: src/peerinfo-tool/gnunet-peerinfo.c:848
5833msgid "output only the identity strings" 5869msgid "output only the identity strings"
5834msgstr "mostrar únicamente las cadenas de identidad" 5870msgstr "mostrar únicamente las cadenas de identidad"
5835 5871
5836#: src/peerinfo-tool/gnunet-peerinfo.c:850 5872#: src/peerinfo-tool/gnunet-peerinfo.c:852
5837msgid "include friend-only information" 5873msgid "include friend-only information"
5838msgstr "" 5874msgstr ""
5839 5875
5840#: src/peerinfo-tool/gnunet-peerinfo.c:855 5876#: src/peerinfo-tool/gnunet-peerinfo.c:857
5841msgid "output our own identity only" 5877msgid "output our own identity only"
5842msgstr "muestra únicamente nuestra propia identidad" 5878msgstr "muestra únicamente nuestra propia identidad"
5843 5879
5844#: src/peerinfo-tool/gnunet-peerinfo.c:860 5880#: src/peerinfo-tool/gnunet-peerinfo.c:862
5845msgid "list all known peers" 5881msgid "list all known peers"
5846msgstr "mostrar todos los pares conocidos" 5882msgstr "mostrar todos los pares conocidos"
5847 5883
5848#: src/peerinfo-tool/gnunet-peerinfo.c:866 5884#: src/peerinfo-tool/gnunet-peerinfo.c:868
5849msgid "dump hello to file" 5885msgid "dump hello to file"
5850msgstr "" 5886msgstr ""
5851 5887
5852#: src/peerinfo-tool/gnunet-peerinfo.c:871 5888#: src/peerinfo-tool/gnunet-peerinfo.c:873
5853msgid "also output HELLO uri(s)" 5889msgid "also output HELLO uri(s)"
5854msgstr "también mostrar las URI de «HELLO»" 5890msgstr "también mostrar las URI de «HELLO»"
5855 5891
5856#: src/peerinfo-tool/gnunet-peerinfo.c:877 5892#: src/peerinfo-tool/gnunet-peerinfo.c:879
5857msgid "add given HELLO uri to the database" 5893msgid "add given HELLO uri to the database"
5858msgstr "añade la URI de «HELLO» dada a la base de datos" 5894msgstr "añade la URI de «HELLO» dada a la base de datos"
5859 5895
5860#: src/peerinfo-tool/gnunet-peerinfo.c:895 5896#: src/peerinfo-tool/gnunet-peerinfo.c:897
5861msgid "Print information about peers." 5897msgid "Print information about peers."
5862msgstr "Imprimir información sobre los pares." 5898msgstr "Imprimir información sobre los pares."
5863 5899
5864#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:103 5900#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
5865#: src/transport/gnunet-service-transport_plugins.c:166 5901#: src/transport/gnunet-service-transport_plugins.c:168
5866#, c-format 5902#, c-format
5867msgid "Starting transport plugins `%s'\n" 5903msgid "Starting transport plugins `%s'\n"
5868msgstr "Iniciando los módulos de transporte «%s»\n" 5904msgstr "Iniciando los módulos de transporte «%s»\n"
5869 5905
5870#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:107 5906#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
5871#: src/transport/gnunet-service-transport_plugins.c:171 5907#: src/transport/gnunet-service-transport_plugins.c:173
5872#, c-format 5908#, c-format
5873msgid "Loading `%s' transport plugin\n" 5909msgid "Loading `%s' transport plugin\n"
5874msgstr "Cargando el módulo de transporte «%s»\n" 5910msgstr "Cargando el módulo de transporte «%s»\n"
5875 5911
5876#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:127 5912#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
5877#: src/transport/gnunet-service-transport_plugins.c:206 5913#: src/transport/gnunet-service-transport_plugins.c:208
5878#, c-format 5914#, c-format
5879msgid "Failed to load transport plugin for `%s'\n" 5915msgid "Failed to load transport plugin for `%s'\n"
5880msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" 5916msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n"
5881 5917
5882#: src/peerstore/gnunet-peerstore.c:89 5918#: src/peerstore/gnunet-peerstore.c:91
5883msgid "peerstore" 5919msgid "peerstore"
5884msgstr "" 5920msgstr ""
5885 5921
5886#: src/peerstore/gnunet-service-peerstore.c:596 5922#: src/peerstore/gnunet-service-peerstore.c:598
5887#, fuzzy, c-format 5923#, fuzzy, c-format
5888msgid "Could not load database backend `%s'\n" 5924msgid "Could not load database backend `%s'\n"
5889msgstr "No se pudo leer el fichero de la lista negra «%s»\n" 5925msgstr "No se pudo leer el fichero de la lista negra «%s»\n"
5890 5926
5891#: src/peerstore/peerstore_api.c:348 5927#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
5892msgid "timeout"
5893msgstr ""
5894
5895#: src/peerstore/peerstore_api.c:564 src/peerstore/peerstore_api.c:613
5896#, fuzzy 5928#, fuzzy
5897msgid "Unexpected iteration response, this should not happen.\n" 5929msgid "Unexpected iteration response, this should not happen.\n"
5898msgstr "El formato de salida es desconocido, ésto no debería pasar.\n" 5930msgstr "El formato de salida es desconocido, ésto no debería pasar.\n"
5899 5931
5900#: src/peerstore/peerstore_api.c:627 5932#: src/peerstore/peerstore_api.c:595
5901#, fuzzy 5933#, fuzzy
5902msgid "Received a malformed response from service." 5934msgid "Received a malformed response from service."
5903msgstr "Recibida petición DNS mal formada de %s\n" 5935msgstr "Recibida petición DNS mal formada de %s\n"
5904 5936
5905#: src/peerstore/peerstore_api.c:776 5937#: src/peerstore/peerstore_api.c:731
5906msgid "Received a watch result for a non existing watch.\n" 5938msgid "Received a watch result for a non existing watch.\n"
5907msgstr "" 5939msgstr ""
5908 5940
5909#: src/peerstore/plugin_peerstore_sqlite.c:451 5941#: src/peerstore/plugin_peerstore_sqlite.c:453
5910#: src/psycstore/plugin_psycstore_sqlite.c:280
5911#, fuzzy, c-format 5942#, fuzzy, c-format
5912msgid "" 5943msgid ""
5913"Error executing SQL query: %s\n" 5944"Error executing SQL query: %s\n"
5914" %s\n" 5945" %s\n"
5915msgstr "Error abriendo fichero «%s»: %s\n" 5946msgstr "Error abriendo fichero «%s»: %s\n"
5916 5947
5917#: src/peerstore/plugin_peerstore_sqlite.c:486 5948#: src/peerstore/plugin_peerstore_sqlite.c:488
5918#: src/psycstore/plugin_psycstore_mysql.c:248
5919#: src/psycstore/plugin_psycstore_sqlite.c:257
5920#, fuzzy, c-format 5949#, fuzzy, c-format
5921msgid "" 5950msgid ""
5922"Error preparing SQL query: %s\n" 5951"Error preparing SQL query: %s\n"
5923" %s\n" 5952" %s\n"
5924msgstr "Error leyendo de «%s»: %s\n" 5953msgstr "Error leyendo de «%s»: %s\n"
5925 5954
5926#: src/peerstore/plugin_peerstore_sqlite.c:568 5955#: src/peerstore/plugin_peerstore_sqlite.c:570
5927#, fuzzy, c-format 5956#, fuzzy, c-format
5928msgid "Unable to create indices: %s.\n" 5957msgid "Unable to create indices: %s.\n"
5929msgstr "Se produjo un fallo al crear los índices\n" 5958msgstr "Se produjo un fallo al crear los índices\n"
5930 5959
5931#: src/pq/pq_prepare.c:82 5960#: src/pq/pq_prepare.c:84
5932#, fuzzy, c-format 5961#, fuzzy, c-format
5933msgid "PQprepare (`%s' as `%s') failed with error: %s\n" 5962msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
5934msgstr "«%s» para «%s» falló en %s: %d con error: %s\n" 5963msgstr "«%s» para «%s» falló en %s: %d con error: %s\n"
5935 5964
5936#: src/psycstore/gnunet-service-psycstore.c:247 5965#: src/pt/gnunet-daemon-pt.c:423
5937#, fuzzy
5938msgid "Failed to store membership information!\n"
5939msgstr "Se produjo un fallo al retomar la operación de publicación «%s»: %s\n"
5940
5941#: src/psycstore/gnunet-service-psycstore.c:269
5942#, fuzzy
5943msgid "Failed to test membership!\n"
5944msgstr "¡Se produjo un fallo al configurar el túnel mesh!\n"
5945
5946#: src/psycstore/gnunet-service-psycstore.c:298
5947#, fuzzy
5948msgid "Dropping invalid fragment\n"
5949msgstr "Parámetro no válido «%s»\n"
5950
5951#: src/psycstore/gnunet-service-psycstore.c:309
5952#, fuzzy
5953msgid "Failed to store fragment\n"
5954msgstr "Se produjo un fallo al iniciar el demonio: %s\n"
5955
5956#: src/psycstore/gnunet-service-psycstore.c:366
5957#, fuzzy
5958msgid "Failed to get fragment!\n"
5959msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
5960
5961#: src/psycstore/gnunet-service-psycstore.c:432
5962#, fuzzy
5963msgid "Failed to get message!\n"
5964msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
5965
5966#: src/psycstore/gnunet-service-psycstore.c:462
5967#, fuzzy
5968msgid "Failed to get message fragment!\n"
5969msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n"
5970
5971#: src/psycstore/gnunet-service-psycstore.c:492
5972#, fuzzy
5973msgid "Failed to get master counters!\n"
5974msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
5975
5976#: src/psycstore/gnunet-service-psycstore.c:673
5977#, fuzzy, c-format
5978msgid "Failed to begin modifying state: %d\n"
5979msgstr "Se produjo un fallo al cargar el estado: %s\n"
5980
5981#: src/psycstore/gnunet-service-psycstore.c:683
5982#, fuzzy, c-format
5983msgid "Failed to modify state: %d\n"
5984msgstr "Se produjo un fallo al cargar el estado: %s\n"
5985
5986#: src/psycstore/gnunet-service-psycstore.c:691
5987#, fuzzy
5988msgid "Failed to end modifying state!\n"
5989msgstr "Se produjo un fallo al cargar el estado: %s\n"
5990
5991#: src/psycstore/gnunet-service-psycstore.c:728
5992msgid "Tried to set invalid state variable name!\n"
5993msgstr ""
5994
5995#: src/psycstore/gnunet-service-psycstore.c:742
5996#, fuzzy
5997msgid "Failed to begin synchronizing state!\n"
5998msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
5999
6000#: src/psycstore/gnunet-service-psycstore.c:759
6001#, fuzzy
6002msgid "Failed to end synchronizing state!\n"
6003msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
6004
6005#: src/psycstore/gnunet-service-psycstore.c:777
6006#: src/psycstore/gnunet-service-psycstore.c:793
6007#, fuzzy
6008msgid "Failed to reset state!\n"
6009msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
6010
6011#: src/psycstore/gnunet-service-psycstore.c:822
6012#: src/psycstore/gnunet-service-psycstore.c:879
6013msgid "Tried to get invalid state variable name!\n"
6014msgstr ""
6015
6016#: src/psycstore/gnunet-service-psycstore.c:849
6017#: src/psycstore/gnunet-service-psycstore.c:894
6018#, fuzzy
6019msgid "Failed to get state variable!\n"
6020msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
6021
6022#: src/psycstore/plugin_psycstore_mysql.c:279
6023#, fuzzy
6024msgid "Unable to initialize Mysql.\n"
6025msgstr "Imposible inicializar SQLite: %s.\n"
6026
6027#: src/psycstore/plugin_psycstore_mysql.c:289
6028#, fuzzy, c-format
6029msgid "Failed to run SQL statement `%s'\n"
6030msgstr "Se produjo un fallo al preparar la sentencia «%s»\n"
6031
6032#: src/psycstore/plugin_psycstore_sqlite.c:59
6033#, fuzzy, c-format
6034msgid "`%s' failed at %s:%d with error: %s (%d)\n"
6035msgstr "«%s» falló en %s: %d con el error: %s\n"
6036
6037#: src/psycstore/plugin_psycstore_sqlite.c:1922
6038#, fuzzy
6039msgid "SQLite database running\n"
6040msgstr "Base de datos sqlite ejecutándose\n"
6041
6042#: src/pt/gnunet-daemon-pt.c:421
6043msgid "Failed to pack DNS request. Dropping.\n" 5966msgid "Failed to pack DNS request. Dropping.\n"
6044msgstr "Se produjo un fallo al empaquetar la petición DNS. Omitiendo.\n" 5967msgstr "Se produjo un fallo al empaquetar la petición DNS. Omitiendo.\n"
6045 5968
6046#: src/pt/gnunet-daemon-pt.c:427 5969#: src/pt/gnunet-daemon-pt.c:429
6047msgid "# DNS requests mapped to VPN" 5970msgid "# DNS requests mapped to VPN"
6048msgstr "# Peticiones DNS asociadas a la VPN" 5971msgstr "# Peticiones DNS asociadas a la VPN"
6049 5972
6050#: src/pt/gnunet-daemon-pt.c:481 5973#: src/pt/gnunet-daemon-pt.c:483
6051msgid "# DNS records modified" 5974msgid "# DNS records modified"
6052msgstr "# Registros DNS modificados" 5975msgstr "# Registros DNS modificados"
6053 5976
6054#: src/pt/gnunet-daemon-pt.c:665 5977#: src/pt/gnunet-daemon-pt.c:667
6055msgid "# DNS replies intercepted" 5978msgid "# DNS replies intercepted"
6056msgstr "# Respuestas DNS interceptadas" 5979msgstr "# Respuestas DNS interceptadas"
6057 5980
6058#: src/pt/gnunet-daemon-pt.c:672 5981#: src/pt/gnunet-daemon-pt.c:674
6059msgid "Failed to parse DNS request. Dropping.\n" 5982msgid "Failed to parse DNS request. Dropping.\n"
6060msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" 5983msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n"
6061 5984
6062#: src/pt/gnunet-daemon-pt.c:710 5985#: src/pt/gnunet-daemon-pt.c:712
6063msgid "# DNS requests dropped (timeout)" 5986msgid "# DNS requests dropped (timeout)"
6064msgstr "# Peticiones DNS omitidas (expiradas)" 5987msgstr "# Peticiones DNS omitidas (expiradas)"
6065 5988
6066#: src/pt/gnunet-daemon-pt.c:766 5989#: src/pt/gnunet-daemon-pt.c:768
6067msgid "# DNS requests intercepted" 5990msgid "# DNS requests intercepted"
6068msgstr "# Peticiones DNS interceptadas" 5991msgstr "# Peticiones DNS interceptadas"
6069 5992
6070#: src/pt/gnunet-daemon-pt.c:771 5993#: src/pt/gnunet-daemon-pt.c:773
6071#, fuzzy 5994#, fuzzy
6072msgid "# DNS requests dropped (DNS cadet channel down)" 5995msgid "# DNS requests dropped (DNS cadet channel down)"
6073msgstr "# Peticiones DNS omitidas (túnel mesh DNS caído)" 5996msgstr "# Peticiones DNS omitidas (túnel mesh DNS caído)"
6074 5997
6075#: src/pt/gnunet-daemon-pt.c:779 5998#: src/pt/gnunet-daemon-pt.c:781
6076msgid "# DNS requests dropped (malformed)" 5999msgid "# DNS requests dropped (malformed)"
6077msgstr "# Peticiones DNS omitidas (mal formadas)" 6000msgstr "# Peticiones DNS omitidas (mal formadas)"
6078 6001
6079#: src/pt/gnunet-daemon-pt.c:874 6002#: src/pt/gnunet-daemon-pt.c:876
6080msgid "# DNS replies received" 6003msgid "# DNS replies received"
6081msgstr "# Respuestas DNS recibidas" 6004msgstr "# Respuestas DNS recibidas"
6082 6005
6083#: src/pt/gnunet-daemon-pt.c:891 6006#: src/pt/gnunet-daemon-pt.c:893
6084msgid "# DNS replies dropped (too late?)" 6007msgid "# DNS replies dropped (too late?)"
6085msgstr "# Respuestas DNS (¿demasiado tarde?)" 6008msgstr "# Respuestas DNS (¿demasiado tarde?)"
6086 6009
6087#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226 6010#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
6088#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251 6011#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
6089#: src/pt/gnunet-daemon-pt.c:1260 6012#: src/pt/gnunet-daemon-pt.c:1262
6090#, c-format 6013#, c-format
6091msgid "Failed to connect to %s service. Exiting.\n" 6014msgid "Failed to connect to %s service. Exiting.\n"
6092msgstr "Se produjo un fallo al conectar con el servicio %s. Saliendo.\n" 6015msgstr "Se produjo un fallo al conectar con el servicio %s. Saliendo.\n"
6093 6016
6094#: src/pt/gnunet-daemon-pt.c:1305 6017#: src/pt/gnunet-daemon-pt.c:1307
6095msgid "Daemon to run to perform IP protocol translation to GNUnet" 6018msgid "Daemon to run to perform IP protocol translation to GNUnet"
6096msgstr "" 6019msgstr ""
6097"Demonio a ejecutar para realizar la traducción de protocolo IP a GNUnet" 6020"Demonio a ejecutar para realizar la traducción de protocolo IP a GNUnet"
6098 6021
6099#: src/reclaim/gnunet-reclaim.c:465 6022#: src/reclaim/gnunet-reclaim.c:467
6100#, fuzzy, c-format 6023#, fuzzy, c-format
6101msgid "Ego is required\n" 6024msgid "Ego is required\n"
6102msgstr "Las opción «%s» o «%s» es necesaria.\n" 6025msgstr "Las opción «%s» o «%s» es necesaria.\n"
6103 6026
6104#: src/reclaim/gnunet-reclaim.c:473 6027#: src/reclaim/gnunet-reclaim.c:475
6105#, c-format 6028#, c-format
6106msgid "Attribute value missing!\n" 6029msgid "Attribute value missing!\n"
6107msgstr "" 6030msgstr ""
6108 6031
6109#: src/reclaim/gnunet-reclaim.c:481 6032#: src/reclaim/gnunet-reclaim.c:483
6110#, fuzzy, c-format 6033#, fuzzy, c-format
6111msgid "Requesting party key is required!\n" 6034msgid "Requesting party key is required!\n"
6112msgstr "el parámetro --section es necesario\n" 6035msgstr "el parámetro --section es necesario\n"
6113 6036
6114#: src/reclaim/gnunet-reclaim.c:504 6037#: src/reclaim/gnunet-reclaim.c:506
6115msgid "Add attribute" 6038msgid "Add attribute"
6116msgstr "" 6039msgstr ""
6117 6040
6118#: src/reclaim/gnunet-reclaim.c:510 6041#: src/reclaim/gnunet-reclaim.c:512
6119msgid "Attribute value" 6042msgid "Attribute value"
6120msgstr "" 6043msgstr ""
6121 6044
6122#: src/reclaim/gnunet-reclaim.c:515 6045#: src/reclaim/gnunet-reclaim.c:517
6123msgid "Ego" 6046msgid "Ego"
6124msgstr "" 6047msgstr ""
6125 6048
6126#: src/reclaim/gnunet-reclaim.c:520 6049#: src/reclaim/gnunet-reclaim.c:522
6127msgid "Audience (relying party)" 6050msgid "Audience (relying party)"
6128msgstr "" 6051msgstr ""
6129 6052
6130#: src/reclaim/gnunet-reclaim.c:524 6053#: src/reclaim/gnunet-reclaim.c:526
6131msgid "List attributes for Ego" 6054msgid "List attributes for Ego"
6132msgstr "" 6055msgstr ""
6133 6056
6134#: src/reclaim/gnunet-reclaim.c:529 6057#: src/reclaim/gnunet-reclaim.c:531
6135msgid "Issue a ticket" 6058msgid "Issue a ticket"
6136msgstr "" 6059msgstr ""
6137 6060
6138#: src/reclaim/gnunet-reclaim.c:534 6061#: src/reclaim/gnunet-reclaim.c:536
6139msgid "Consume a ticket" 6062msgid "Consume a ticket"
6140msgstr "" 6063msgstr ""
6141 6064
6142#: src/reclaim/gnunet-reclaim.c:539 6065#: src/reclaim/gnunet-reclaim.c:541
6143msgid "Revoke a ticket" 6066msgid "Revoke a ticket"
6144msgstr "" 6067msgstr ""
6145 6068
6146#: src/reclaim/gnunet-reclaim.c:544 6069#: src/reclaim/gnunet-reclaim.c:546
6147msgid "Type of attribute" 6070msgid "Type of attribute"
6148msgstr "" 6071msgstr ""
6149 6072
6150#: src/reclaim/gnunet-reclaim.c:549 6073#: src/reclaim/gnunet-reclaim.c:551
6151msgid "Expiration interval of the attribute" 6074msgid "Expiration interval of the attribute"
6152msgstr "" 6075msgstr ""
6153 6076
6154#: src/reclaim/reclaim_api.c:434 6077#: src/reclaim/reclaim_api.c:436
6155#, fuzzy 6078#, fuzzy
6156msgid "failed to store record\n" 6079msgid "failed to store record\n"
6157msgstr "El almacén de nombres no pudo añadir el registro\n" 6080msgstr "El almacén de nombres no pudo añadir el registro\n"
6158 6081
6159#: src/regex/gnunet-daemon-regexprofiler.c:265 6082#: src/regex/gnunet-daemon-regexprofiler.c:267
6160#, c-format 6083#, c-format
6161msgid "%s service is lacking key configuration settings (%s). Exiting.\n" 6084msgid "%s service is lacking key configuration settings (%s). Exiting.\n"
6162msgstr "" 6085msgstr ""
6163"El servicio %s carece de opciones de configuración de clave (%s). " 6086"El servicio %s carece de opciones de configuración de clave (%s). "
6164"Saliendo.\n" 6087"Saliendo.\n"
6165 6088
6166#: src/regex/gnunet-daemon-regexprofiler.c:378 6089#: src/regex/gnunet-daemon-regexprofiler.c:380
6167#, fuzzy 6090#, fuzzy
6168msgid "Daemon to announce regular expressions for the peer using cadet." 6091msgid "Daemon to announce regular expressions for the peer using cadet."
6169msgstr "Demonio para anunciar expresiones regulares para el par usando mesh." 6092msgstr "Demonio para anunciar expresiones regulares para el par usando mesh."
6170 6093
6171#: src/regex/gnunet-regex-profiler.c:1384 6094#: src/regex/gnunet-regex-profiler.c:1386
6172msgid "No configuration file given. Exiting\n" 6095msgid "No configuration file given. Exiting\n"
6173msgstr "No se ha introducido ningún fichero de configuración. Saliendo\n" 6096msgstr "No se ha introducido ningún fichero de configuración. Saliendo\n"
6174 6097
6175#: src/regex/gnunet-regex-profiler.c:1425 6098#: src/regex/gnunet-regex-profiler.c:1427
6176#: src/regex/gnunet-regex-simulation-profiler.c:628 6099#: src/regex/gnunet-regex-simulation-profiler.c:630
6177#, c-format 6100#, c-format
6178msgid "No policy directory specified on command line. Exiting.\n" 6101msgid "No policy directory specified on command line. Exiting.\n"
6179msgstr "" 6102msgstr ""
6180"No se ha especificado una política de directorios en la línea de comandos. " 6103"No se ha especificado una política de directorios en la línea de comandos. "
6181"Saliendo.\n" 6104"Saliendo.\n"
6182 6105
6183#: src/regex/gnunet-regex-profiler.c:1431 6106#: src/regex/gnunet-regex-profiler.c:1433
6184#: src/regex/gnunet-regex-simulation-profiler.c:636 6107#: src/regex/gnunet-regex-simulation-profiler.c:638
6185#, c-format 6108#, c-format
6186msgid "Specified policies directory does not exist. Exiting.\n" 6109msgid "Specified policies directory does not exist. Exiting.\n"
6187msgstr "Las políticas de directorio especificadas no existen. Saliendo.\n" 6110msgstr "Las políticas de directorio especificadas no existen. Saliendo.\n"
6188 6111
6189#: src/regex/gnunet-regex-profiler.c:1438 6112#: src/regex/gnunet-regex-profiler.c:1440
6190#, c-format 6113#, c-format
6191msgid "No files found in `%s'\n" 6114msgid "No files found in `%s'\n"
6192msgstr "No se han encontrado ficheros en «%s»\n" 6115msgstr "No se han encontrado ficheros en «%s»\n"
6193 6116
6194#: src/regex/gnunet-regex-profiler.c:1447 6117#: src/regex/gnunet-regex-profiler.c:1449
6195msgid "No search strings file given. Exiting.\n" 6118msgid "No search strings file given. Exiting.\n"
6196msgstr "No se ha proporcionado un fichero de cadenas de búsqueda. Saliendo.\n" 6119msgstr "No se ha proporcionado un fichero de cadenas de búsqueda. Saliendo.\n"
6197 6120
6198#: src/regex/gnunet-regex-profiler.c:1467 6121#: src/regex/gnunet-regex-profiler.c:1469
6199msgid "Error loading search strings. Exiting.\n" 6122msgid "Error loading search strings. Exiting.\n"
6200msgstr "Error cargando cadenas de búsqueda. Saliendo.\n" 6123msgstr "Error cargando cadenas de búsqueda. Saliendo.\n"
6201 6124
6202#: src/regex/gnunet-regex-profiler.c:1555 6125#: src/regex/gnunet-regex-profiler.c:1557
6203msgid "name of the file for writing statistics" 6126msgid "name of the file for writing statistics"
6204msgstr "nombre del fichero para escribir las estadísticas" 6127msgstr "nombre del fichero para escribir las estadísticas"
6205 6128
6206#: src/regex/gnunet-regex-profiler.c:1561 6129#: src/regex/gnunet-regex-profiler.c:1563
6207#, fuzzy 6130#, fuzzy
6208msgid "wait TIMEOUT before ending the experiment" 6131msgid "wait TIMEOUT before ending the experiment"
6209msgstr "" 6132msgstr ""
6210"esperar «TIMEOUT» antes de considerar que una coincidencia de cadenas como " 6133"esperar «TIMEOUT» antes de considerar que una coincidencia de cadenas como "
6211"fallida" 6134"fallida"
6212 6135
6213#: src/regex/gnunet-regex-profiler.c:1567 6136#: src/regex/gnunet-regex-profiler.c:1569
6214msgid "directory with policy files" 6137msgid "directory with policy files"
6215msgstr "" 6138msgstr ""
6216 6139
6217#: src/regex/gnunet-regex-profiler.c:1574 6140#: src/regex/gnunet-regex-profiler.c:1576
6218#, fuzzy 6141#, fuzzy
6219msgid "name of file with input strings" 6142msgid "name of file with input strings"
6220msgstr "nombre del fichero para escribir las estadísticas" 6143msgstr "nombre del fichero para escribir las estadísticas"
6221 6144
6222#: src/regex/gnunet-regex-profiler.c:1580 6145#: src/regex/gnunet-regex-profiler.c:1582
6223#, fuzzy 6146#, fuzzy
6224msgid "name of file with hosts' names" 6147msgid "name of file with hosts' names"
6225msgstr "nombre del fichero para escribir las estadísticas" 6148msgstr "nombre del fichero para escribir las estadísticas"
6226 6149
6227#: src/regex/gnunet-regex-profiler.c:1593 6150#: src/regex/gnunet-regex-profiler.c:1595
6228msgid "Profiler for regex" 6151msgid "Profiler for regex"
6229msgstr "Perfilador para expresiones regulares." 6152msgstr "Perfilador para expresiones regulares."
6230 6153
6231#: src/regex/gnunet-regex-simulation-profiler.c:697 6154#: src/regex/gnunet-regex-simulation-profiler.c:699
6232msgid "name of the table to write DFAs" 6155msgid "name of the table to write DFAs"
6233msgstr "nombre de la tabla para escribir los DFA" 6156msgstr "nombre de la tabla para escribir los DFA"
6234 6157
6235# WTF??? 6158# WTF???
6236#: src/regex/gnunet-regex-simulation-profiler.c:703 6159#: src/regex/gnunet-regex-simulation-profiler.c:705
6237msgid "maximum path compression length" 6160msgid "maximum path compression length"
6238msgstr "longitud de la máxima compresión de rutas" 6161msgstr "longitud de la máxima compresión de rutas"
6239 6162
6240#: src/regex/gnunet-regex-simulation-profiler.c:717 6163#: src/regex/gnunet-regex-simulation-profiler.c:719
6241msgid "Profiler for regex library" 6164msgid "Profiler for regex library"
6242msgstr "Analizador de rendimiento para la biblioteca de expresiones regulares" 6165msgstr "Analizador de rendimiento para la biblioteca de expresiones regulares"
6243 6166
6244#: src/regex/regex_api_announce.c:150 6167#: src/regex/regex_api_announce.c:152
6245#, fuzzy, c-format 6168#, fuzzy, c-format
6246msgid "Regex `%s' is too long!\n" 6169msgid "Regex `%s' is too long!\n"
6247msgstr "El servicio «%s» no está ejecutandose\n" 6170msgstr "El servicio «%s» no está ejecutandose\n"
6248 6171
6249#: src/regex/regex_api_search.c:210 6172#: src/regex/regex_api_search.c:212
6250#, fuzzy, c-format 6173#, fuzzy, c-format
6251msgid "Search string `%s' is too long!\n" 6174msgid "Search string `%s' is too long!\n"
6252msgstr "El servicio «%s» no está ejecutandose\n" 6175msgstr "El servicio «%s» no está ejecutandose\n"
6253 6176
6254#: src/rest/gnunet-rest-server.c:925 6177#: src/rest/gnunet-rest-server.c:927
6255#, fuzzy 6178#, fuzzy
6256msgid "listen on specified port (default: 7776)" 6179msgid "listen on specified port (default: 7776)"
6257msgstr "escuchar en el puerto especificado (predeterminado: 7777)" 6180msgstr "escuchar en el puerto especificado (predeterminado: 7777)"
6258 6181
6259#: src/rest/gnunet-rest-server.c:942 6182#: src/rest/gnunet-rest-server.c:944
6260#, fuzzy 6183#, fuzzy
6261msgid "GNUnet REST server" 6184msgid "GNUnet REST server"
6262msgstr "Herramienta de acceso GNUnet GNS" 6185msgstr "Herramienta de acceso GNUnet GNS"
6263 6186
6264#: src/rest-plugins/plugin_rest_copying.c:207 6187#: src/rest-plugins/plugin_rest_copying.c:209
6265#, fuzzy 6188#, fuzzy
6266msgid "COPYING REST API initialized\n" 6189msgid "COPYING REST API initialized\n"
6267msgstr "Conexión fallida\n" 6190msgstr "Conexión fallida\n"
6268 6191
6269#: src/rest-plugins/plugin_rest_credential.c:1126 6192#: src/rest-plugins/plugin_rest_credential.c:1128
6270#, fuzzy 6193#, fuzzy
6271msgid "GNS REST API initialized\n" 6194msgid "GNS REST API initialized\n"
6272msgstr "Conexión fallida\n" 6195msgstr "Conexión fallida\n"
6273 6196
6274#: src/rest-plugins/plugin_rest_gns.c:450 6197#: src/rest-plugins/plugin_rest_gns.c:452
6275#, fuzzy 6198#, fuzzy
6276msgid "Gns REST API initialized\n" 6199msgid "Gns REST API initialized\n"
6277msgstr "Conexión fallida\n" 6200msgstr "Conexión fallida\n"
6278 6201
6279#: src/rest-plugins/plugin_rest_identity.c:1295 6202#: src/rest-plugins/plugin_rest_identity.c:1297
6280#, fuzzy 6203#, fuzzy
6281msgid "Identity REST API initialized\n" 6204msgid "Identity REST API initialized\n"
6282msgstr "Conexión fallida\n" 6205msgstr "Conexión fallida\n"
6283 6206
6284#: src/rest-plugins/plugin_rest_namestore.c:1077 6207#: src/rest-plugins/plugin_rest_namestore.c:1079
6285#, fuzzy 6208#, fuzzy
6286msgid "Namestore REST API initialized\n" 6209msgid "Namestore REST API initialized\n"
6287msgstr "Conexión fallida\n" 6210msgstr "Conexión fallida\n"
6288 6211
6289#: src/rest-plugins/plugin_rest_openid_connect.c:2135 6212#: src/rest-plugins/plugin_rest_openid_connect.c:2245
6290#: src/rest-plugins/plugin_rest_reclaim.c:1079 6213#: src/rest-plugins/plugin_rest_reclaim.c:1079
6291#, fuzzy 6214#, fuzzy
6292msgid "Identity Provider REST API initialized\n" 6215msgid "Identity Provider REST API initialized\n"
6293msgstr "Conexión fallida\n" 6216msgstr "Conexión fallida\n"
6294 6217
6295#: src/rest-plugins/plugin_rest_peerinfo.c:794 6218#: src/rest-plugins/plugin_rest_peerinfo.c:796
6296#, fuzzy 6219#, fuzzy
6297msgid "Peerinfo REST API initialized\n" 6220msgid "Peerinfo REST API initialized\n"
6298msgstr "Conexión fallida\n" 6221msgstr "Conexión fallida\n"
6299 6222
6300#: src/revocation/gnunet-revocation.c:127 6223#: src/revocation/gnunet-revocation.c:129
6301#, fuzzy, c-format 6224#, fuzzy, c-format
6302msgid "Key `%s' is valid\n" 6225msgid "Key `%s' is valid\n"
6303msgstr "Formato del pseudónimo '%s' no es válido.\n" 6226msgstr "Formato del pseudónimo '%s' no es válido.\n"
6304 6227
6305# Miguel: ¿Quizá fuese mejor «Se ha parado el servicio x»? 6228# Miguel: ¿Quizá fuese mejor «Se ha parado el servicio x»?
6306# Esto también es aplicable a las siguientes traducciones. 6229# Esto también es aplicable a las siguientes traducciones.
6307#: src/revocation/gnunet-revocation.c:132 6230#: src/revocation/gnunet-revocation.c:134
6308#, fuzzy, c-format 6231#, fuzzy, c-format
6309msgid "Key `%s' has been revoked\n" 6232msgid "Key `%s' has been revoked\n"
6310msgstr "El servicio «%s» se ha parado.\n" 6233msgstr "El servicio «%s» se ha parado.\n"
6311 6234
6312#: src/revocation/gnunet-revocation.c:138 6235#: src/revocation/gnunet-revocation.c:140
6313#, fuzzy 6236#, fuzzy
6314msgid "Internal error\n" 6237msgid "Internal error\n"
6315msgstr "Error interno." 6238msgstr "Error interno."
6316 6239
6317#: src/revocation/gnunet-revocation.c:164 6240#: src/revocation/gnunet-revocation.c:166
6318#, c-format 6241#, c-format
6319msgid "Key for ego `%s' is still valid, revocation failed (!)\n" 6242msgid "Key for ego `%s' is still valid, revocation failed (!)\n"
6320msgstr "" 6243msgstr ""
6321 6244
6322#: src/revocation/gnunet-revocation.c:169 6245#: src/revocation/gnunet-revocation.c:171
6323#, fuzzy 6246#, fuzzy
6324msgid "Revocation failed (!)\n" 6247msgid "Revocation failed (!)\n"
6325msgstr "La operación ha fallado.\n" 6248msgstr "La operación ha fallado.\n"
6326 6249
6327#: src/revocation/gnunet-revocation.c:174 6250#: src/revocation/gnunet-revocation.c:176
6328#, c-format 6251#, c-format
6329msgid "Key for ego `%s' has been successfully revoked\n" 6252msgid "Key for ego `%s' has been successfully revoked\n"
6330msgstr "" 6253msgstr ""
6331 6254
6332#: src/revocation/gnunet-revocation.c:179 6255#: src/revocation/gnunet-revocation.c:181
6333msgid "Revocation successful.\n" 6256msgid "Revocation successful.\n"
6334msgstr "" 6257msgstr ""
6335 6258
6336#: src/revocation/gnunet-revocation.c:184 6259#: src/revocation/gnunet-revocation.c:186
6337msgid "Internal error, key revocation might have failed\n" 6260msgid "Internal error, key revocation might have failed\n"
6338msgstr "" 6261msgstr ""
6339 6262
6340#: src/revocation/gnunet-revocation.c:321 6263#: src/revocation/gnunet-revocation.c:323
6341#, c-format 6264#, c-format
6342msgid "Revocation certificate for `%s' stored in `%s'\n" 6265msgid "Revocation certificate for `%s' stored in `%s'\n"
6343msgstr "" 6266msgstr ""
6344 6267
6345#: src/revocation/gnunet-revocation.c:350 6268#: src/revocation/gnunet-revocation.c:352
6346#, fuzzy, c-format 6269#, fuzzy, c-format
6347msgid "Ego `%s' not found.\n" 6270msgid "Ego `%s' not found.\n"
6348msgstr "Módulo «%s» no encontrado\n" 6271msgstr "Módulo «%s» no encontrado\n"
6349 6272
6350#: src/revocation/gnunet-revocation.c:371 6273#: src/revocation/gnunet-revocation.c:373
6351#, c-format 6274#, c-format
6352msgid "Error: revocation certificate in `%s' is not for `%s'\n" 6275msgid "Error: revocation certificate in `%s' is not for `%s'\n"
6353msgstr "" 6276msgstr ""
6354 6277
6355#: src/revocation/gnunet-revocation.c:391 6278#: src/revocation/gnunet-revocation.c:393
6356msgid "Revocation certificate ready\n" 6279msgid "Revocation certificate ready\n"
6357msgstr "" 6280msgstr ""
6358 6281
6359#: src/revocation/gnunet-revocation.c:401 6282#: src/revocation/gnunet-revocation.c:403
6360msgid "Revocation certificate not ready, calculating proof of work\n" 6283msgid "Revocation certificate not ready, calculating proof of work\n"
6361msgstr "" 6284msgstr ""
6362 6285
6363#: src/revocation/gnunet-revocation.c:435 src/social/gnunet-social.c:1178 6286#: src/revocation/gnunet-revocation.c:437
6364#, fuzzy, c-format 6287#, fuzzy, c-format
6365msgid "Public key `%s' malformed\n" 6288msgid "Public key `%s' malformed\n"
6366msgstr "El bloque del tipo %u está mal formado\n" 6289msgstr "El bloque del tipo %u está mal formado\n"
6367 6290
6368#: src/revocation/gnunet-revocation.c:448 6291#: src/revocation/gnunet-revocation.c:450
6369msgid "" 6292msgid ""
6370"Testing and revoking at the same time is not allowed, only executing test.\n" 6293"Testing and revoking at the same time is not allowed, only executing test.\n"
6371msgstr "" 6294msgstr ""
6372 6295
6373#: src/revocation/gnunet-revocation.c:468 6296#: src/revocation/gnunet-revocation.c:470
6374#, fuzzy 6297#, fuzzy
6375msgid "No filename to store revocation certificate given.\n" 6298msgid "No filename to store revocation certificate given.\n"
6376msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n" 6299msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n"
6377 6300
6378#: src/revocation/gnunet-revocation.c:489 6301#: src/revocation/gnunet-revocation.c:491
6379#, fuzzy, c-format 6302#, fuzzy, c-format
6380msgid "Failed to read revocation certificate from `%s'\n" 6303msgid "Failed to read revocation certificate from `%s'\n"
6381msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n" 6304msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n"
6382 6305
6383#: src/revocation/gnunet-revocation.c:514 6306#: src/revocation/gnunet-revocation.c:516
6384#, fuzzy 6307#, fuzzy
6385msgid "No action specified. Nothing to do.\n" 6308msgid "No action specified. Nothing to do.\n"
6386msgstr "Ninguna interfaz especificada, usando la marcada por defecto\n" 6309msgstr "Ninguna interfaz especificada, usando la marcada por defecto\n"
6387 6310
6388#: src/revocation/gnunet-revocation.c:533 6311#: src/revocation/gnunet-revocation.c:535
6389msgid "use NAME for the name of the revocation file" 6312msgid "use NAME for the name of the revocation file"
6390msgstr "" 6313msgstr ""
6391 6314
6392#: src/revocation/gnunet-revocation.c:539 6315#: src/revocation/gnunet-revocation.c:541
6393msgid "" 6316msgid ""
6394"revoke the private key associated for the the private key associated with " 6317"revoke the private key associated for the the private key associated with "
6395"the ego NAME " 6318"the ego NAME "
6396msgstr "" 6319msgstr ""
6397 6320
6398#: src/revocation/gnunet-revocation.c:544 6321#: src/revocation/gnunet-revocation.c:546
6399msgid "actually perform revocation, otherwise we just do the precomputation" 6322msgid "actually perform revocation, otherwise we just do the precomputation"
6400msgstr "" 6323msgstr ""
6401 6324
6402#: src/revocation/gnunet-revocation.c:550 6325#: src/revocation/gnunet-revocation.c:552
6403msgid "test if the public key KEY has been revoked" 6326msgid "test if the public key KEY has been revoked"
6404msgstr "" 6327msgstr ""
6405 6328
6406#: src/revocation/gnunet-service-revocation.c:457 6329#: src/revocation/gnunet-service-revocation.c:459
6407#, fuzzy 6330#, fuzzy
6408msgid "# unsupported revocations received via set union" 6331msgid "# unsupported revocations received via set union"
6409msgstr "Opciones de paquete IPv4 recibidas. Ignoradas.\n" 6332msgstr "Opciones de paquete IPv4 recibidas. Ignoradas.\n"
6410 6333
6411#: src/revocation/gnunet-service-revocation.c:466 6334#: src/revocation/gnunet-service-revocation.c:468
6412#, fuzzy 6335#, fuzzy
6413msgid "# revocation messages received via set union" 6336msgid "# revocation messages received via set union"
6414msgstr "# mensajes «DATA» recibidos vía WLAN" 6337msgstr "# mensajes «DATA» recibidos vía WLAN"
6415 6338
6416#: src/revocation/gnunet-service-revocation.c:471 6339#: src/revocation/gnunet-service-revocation.c:473
6417#, c-format 6340#, c-format
6418msgid "Error computing revocation set union with %s\n" 6341msgid "Error computing revocation set union with %s\n"
6419msgstr "" 6342msgstr ""
6420 6343
6421#: src/revocation/gnunet-service-revocation.c:475 6344#: src/revocation/gnunet-service-revocation.c:477
6422#, fuzzy 6345#, fuzzy
6423msgid "# revocation set unions failed" 6346msgid "# revocation set unions failed"
6424msgstr "# sesiones wlan creadas" 6347msgstr "# sesiones wlan creadas"
6425 6348
6426#: src/revocation/gnunet-service-revocation.c:484 6349#: src/revocation/gnunet-service-revocation.c:486
6427#, fuzzy 6350#, fuzzy
6428msgid "# revocation set unions completed" 6351msgid "# revocation set unions completed"
6429msgstr "# transmisiones de fragmentos completadas" 6352msgstr "# transmisiones de fragmentos completadas"
6430 6353
6431#: src/revocation/gnunet-service-revocation.c:523 6354#: src/revocation/gnunet-service-revocation.c:525
6432msgid "SET service crashed, terminating revocation service\n" 6355msgid "SET service crashed, terminating revocation service\n"
6433msgstr "" 6356msgstr ""
6434 6357
6435#: src/revocation/gnunet-service-revocation.c:865 6358#: src/revocation/gnunet-service-revocation.c:867
6436#, fuzzy 6359#, fuzzy
6437msgid "Could not open revocation database file!" 6360msgid "Could not open revocation database file!"
6438msgstr "No se pudo conectar con el almacén de datos." 6361msgstr "No se pudo conectar con el almacén de datos."
6439 6362
6440#: src/rps/gnunet-rps.c:258 6363#: src/rps/gnunet-rps.c:260
6441msgid "Seed a PeerID" 6364msgid "Seed a PeerID"
6442msgstr "" 6365msgstr ""
6443 6366
6444#: src/rps/gnunet-rps.c:262 6367#: src/rps/gnunet-rps.c:264
6445msgid "Get updates of view (0 for infinite updates)" 6368msgid "Get updates of view (0 for infinite updates)"
6446msgstr "" 6369msgstr ""
6447 6370
6448#: src/rps/gnunet-rps.c:266 6371#: src/rps/gnunet-rps.c:268
6449msgid "Get peers from biased stream" 6372msgid "Get peers from biased stream"
6450msgstr "" 6373msgstr ""
6451 6374
6452#: src/rps/gnunet-rps-profiler.c:2770 6375#: src/rps/gnunet-rps-profiler.c:2959
6453#, fuzzy 6376#, fuzzy
6454msgid "duration of the profiling" 6377msgid "duration of the profiling"
6455msgstr "" 6378msgstr ""
6456"La configuración o la versión de GNUnet cambiaron. ¡Debes ejecutar '%s'!\n" 6379"La configuración o la versión de GNUnet cambiaron. ¡Debes ejecutar '%s'!\n"
6457 6380
6458#: src/rps/gnunet-rps-profiler.c:2776 6381#: src/rps/gnunet-rps-profiler.c:2965
6459#, fuzzy 6382#, fuzzy
6460msgid "timeout for the profiling" 6383msgid "timeout for the profiling"
6461msgstr "Especificar el tipo del registro a buscar" 6384msgstr "Especificar el tipo del registro a buscar"
6462 6385
6463#: src/rps/gnunet-rps-profiler.c:2782 6386#: src/rps/gnunet-rps-profiler.c:2971
6464#, fuzzy 6387#, fuzzy
6465msgid "number of PeerIDs to request" 6388msgid "number of PeerIDs to request"
6466msgstr "número de pares para empezar" 6389msgstr "número de pares para empezar"
6467 6390
6468#: src/rps/gnunet-rps-profiler.c:2797 6391#: src/rps/gnunet-rps-profiler.c:2986
6469#, fuzzy 6392#, fuzzy
6470msgid "Measure quality and performance of the RPS service." 6393msgid "Measure quality and performance of the RPS service."
6471msgstr "Medir la calidad y rendimiento del servicio NSE." 6394msgstr "Medir la calidad y rendimiento del servicio NSE."
6472 6395
6473#: src/scalarproduct/gnunet-scalarproduct.c:218 6396#: src/scalarproduct/gnunet-scalarproduct.c:220
6474#, fuzzy 6397#, fuzzy
6475msgid "You must specify at least one message ID to check!\n" 6398msgid "You must specify at least one message ID to check!\n"
6476msgstr "Debes especificar un fichero a inspeccionar.\n" 6399msgstr "Debes especificar un fichero a inspeccionar.\n"
6477 6400
6478#: src/scalarproduct/gnunet-scalarproduct.c:225 6401#: src/scalarproduct/gnunet-scalarproduct.c:227
6479msgid "This program needs a session identifier for comparing vectors.\n" 6402msgid "This program needs a session identifier for comparing vectors.\n"
6480msgstr "" 6403msgstr ""
6481 6404
6482#: src/scalarproduct/gnunet-scalarproduct.c:238 6405#: src/scalarproduct/gnunet-scalarproduct.c:240
6483#, c-format 6406#, c-format
6484msgid "" 6407msgid ""
6485"Tried to set initiator mode, as peer ID was given. However, `%s' is not a " 6408"Tried to set initiator mode, as peer ID was given. However, `%s' is not a "
6486"valid peer identifier.\n" 6409"valid peer identifier.\n"
6487msgstr "" 6410msgstr ""
6488 6411
6489#: src/scalarproduct/gnunet-scalarproduct.c:256 6412#: src/scalarproduct/gnunet-scalarproduct.c:258
6490msgid "Need elements to compute the scalarproduct, got none.\n" 6413msgid "Need elements to compute the scalarproduct, got none.\n"
6491msgstr "" 6414msgstr ""
6492 6415
6493#: src/scalarproduct/gnunet-scalarproduct.c:278 6416#: src/scalarproduct/gnunet-scalarproduct.c:280
6494#, fuzzy, c-format 6417#, fuzzy, c-format
6495msgid "Malformed input, could not parse `%s'\n" 6418msgid "Malformed input, could not parse `%s'\n"
6496msgstr "Se produjo un fallo al iniciar el servicio «%s»\n" 6419msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
6497 6420
6498#: src/scalarproduct/gnunet-scalarproduct.c:296 6421#: src/scalarproduct/gnunet-scalarproduct.c:298
6499#, fuzzy, c-format 6422#, fuzzy, c-format
6500msgid "Could not convert `%s' to int64_t.\n" 6423msgid "Could not convert `%s' to int64_t.\n"
6501msgstr "No se pudo conectar al servicio %s.\n" 6424msgstr "No se pudo conectar al servicio %s.\n"
6502 6425
6503#: src/scalarproduct/gnunet-scalarproduct.c:323 6426#: src/scalarproduct/gnunet-scalarproduct.c:325
6504#, c-format 6427#, c-format
6505msgid "Failed to initiate computation, were all keys unique?\n" 6428msgid "Failed to initiate computation, were all keys unique?\n"
6506msgstr "" 6429msgstr ""
6507 6430
6508#: src/scalarproduct/gnunet-scalarproduct.c:349 6431#: src/scalarproduct/gnunet-scalarproduct.c:351
6509#: src/scalarproduct/gnunet-scalarproduct.c:355 6432#: src/scalarproduct/gnunet-scalarproduct.c:357
6510msgid "" 6433msgid ""
6511"A comma separated list of elements to compare as vector with our remote peer." 6434"A comma separated list of elements to compare as vector with our remote peer."
6512msgstr "" 6435msgstr ""
6513 6436
6514#: src/scalarproduct/gnunet-scalarproduct.c:361 6437#: src/scalarproduct/gnunet-scalarproduct.c:363
6515msgid "" 6438msgid ""
6516"[Optional] peer to calculate our scalarproduct with. If this parameter is " 6439"[Optional] peer to calculate our scalarproduct with. If this parameter is "
6517"not given, the service will wait for a remote peer to compute the request." 6440"not given, the service will wait for a remote peer to compute the request."
6518msgstr "" 6441msgstr ""
6519 6442
6520#: src/scalarproduct/gnunet-scalarproduct.c:367 6443#: src/scalarproduct/gnunet-scalarproduct.c:369
6521msgid "Transaction ID shared with peer." 6444msgid "Transaction ID shared with peer."
6522msgstr "" 6445msgstr ""
6523 6446
6524#: src/scalarproduct/gnunet-scalarproduct.c:377 6447#: src/scalarproduct/gnunet-scalarproduct.c:379
6525msgid "Calculate the Vectorproduct with a GNUnet peer." 6448msgid "Calculate the Vectorproduct with a GNUnet peer."
6526msgstr "" 6449msgstr ""
6527 6450
6528#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1399 6451#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
6529#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1343 6452#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
6530#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1170 6453#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
6531#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1061 6454#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
6532#, fuzzy 6455#, fuzzy
6533msgid "Connect to CADET failed\n" 6456msgid "Connect to CADET failed\n"
6534msgstr "Conexión fallida (¿bug?)\n" 6457msgstr "Conexión fallida (¿bug?)\n"
6535 6458
6536#: src/scalarproduct/scalarproduct_api.c:183 6459#: src/scalarproduct/scalarproduct_api.c:185
6537msgid "Keys given to SCALARPRODUCT not unique!\n" 6460msgid "Keys given to SCALARPRODUCT not unique!\n"
6538msgstr "" 6461msgstr ""
6539 6462
6540#: src/secretsharing/gnunet-secretsharing-profiler.c:614 6463#: src/secretsharing/gnunet-secretsharing-profiler.c:616
6541msgid "dkg start delay" 6464msgid "dkg start delay"
6542msgstr "" 6465msgstr ""
6543 6466
6544#: src/secretsharing/gnunet-secretsharing-profiler.c:620 6467#: src/secretsharing/gnunet-secretsharing-profiler.c:622
6545msgid "dkg timeout" 6468msgid "dkg timeout"
6546msgstr "" 6469msgstr ""
6547 6470
6548#: src/secretsharing/gnunet-secretsharing-profiler.c:626 6471#: src/secretsharing/gnunet-secretsharing-profiler.c:628
6549msgid "threshold" 6472msgid "threshold"
6550msgstr "" 6473msgstr ""
6551 6474
6552#: src/secretsharing/gnunet-secretsharing-profiler.c:631 6475#: src/secretsharing/gnunet-secretsharing-profiler.c:633
6553msgid "also profile decryption" 6476msgid "also profile decryption"
6554msgstr "" 6477msgstr ""
6555 6478
6556#: src/set/gnunet-service-set.c:2004 6479#: src/set/gnunet-service-set.c:2005
6557#, fuzzy 6480#, fuzzy
6558msgid "Could not connect to CADET service\n" 6481msgid "Could not connect to CADET service\n"
6559msgstr "¡No se pudo conectar al servicio %s!\n" 6482msgstr "¡No se pudo conectar al servicio %s!\n"
6560 6483
6561# Miguel: Conjunto resta. 6484# Miguel: Conjunto resta.
6562#: src/set/gnunet-set-ibf-profiler.c:250 6485#: src/set/gnunet-set-ibf-profiler.c:252
6563msgid "number of element in set A-B" 6486msgid "number of element in set A-B"
6564msgstr "número de elementos en el conjunto A-B" 6487msgstr "número de elementos en el conjunto A-B"
6565 6488
6566#: src/set/gnunet-set-ibf-profiler.c:256 6489#: src/set/gnunet-set-ibf-profiler.c:258
6567msgid "number of element in set B-A" 6490msgid "number of element in set B-A"
6568msgstr "número de elementos en el conjunto B-A" 6491msgstr "número de elementos en el conjunto B-A"
6569 6492
6570# Miguel: Conjunto unión. 6493# Miguel: Conjunto unión.
6571#: src/set/gnunet-set-ibf-profiler.c:262 6494#: src/set/gnunet-set-ibf-profiler.c:264
6572msgid "number of common elements in A and B" 6495msgid "number of common elements in A and B"
6573msgstr "número de elementos comunes en A y B" 6496msgstr "número de elementos comunes en A y B"
6574 6497
6575# Miguel: "hash" me tiene un poco frito. ¿Existe alguna traducción buena? 6498# Miguel: "hash" me tiene un poco frito. ¿Existe alguna traducción buena?
6576#: src/set/gnunet-set-ibf-profiler.c:268 6499#: src/set/gnunet-set-ibf-profiler.c:270
6577msgid "hash num" 6500msgid "hash num"
6578msgstr "número de hash" 6501msgstr "número de hash"
6579 6502
6580#: src/set/gnunet-set-ibf-profiler.c:274 6503#: src/set/gnunet-set-ibf-profiler.c:276
6581msgid "ibf size" 6504msgid "ibf size"
6582msgstr "tamaño ibf" 6505msgstr "tamaño ibf"
6583 6506
6584#: src/set/gnunet-set-profiler.c:442 6507#: src/set/gnunet-set-profiler.c:444
6585msgid "use byzantine mode" 6508msgid "use byzantine mode"
6586msgstr "" 6509msgstr ""
6587 6510
6588#: src/set/gnunet-set-profiler.c:448 6511#: src/set/gnunet-set-profiler.c:450
6589msgid "force sending full set" 6512msgid "force sending full set"
6590msgstr "" 6513msgstr ""
6591 6514
6592#: src/set/gnunet-set-profiler.c:454 6515#: src/set/gnunet-set-profiler.c:456
6593msgid "number delta operation" 6516msgid "number delta operation"
6594msgstr "" 6517msgstr ""
6595 6518
6596#: src/set/gnunet-set-profiler.c:466 6519#: src/set/gnunet-set-profiler.c:468
6597msgid "operation to execute" 6520msgid "operation to execute"
6598msgstr "" 6521msgstr ""
6599 6522
6600#: src/set/gnunet-set-profiler.c:472 6523#: src/set/gnunet-set-profiler.c:474
6601msgid "element size" 6524msgid "element size"
6602msgstr "" 6525msgstr ""
6603 6526
6604#: src/social/gnunet-social.c:1164 6527#: src/sq/sq.c:54
6605#, fuzzy
6606msgid "--place missing or invalid.\n"
6607msgstr "Parámetro no válido «%s»\n"
6608
6609#: src/social/gnunet-social.c:1215
6610msgid "assign --name in state to --data"
6611msgstr ""
6612
6613#: src/social/gnunet-social.c:1220
6614msgid "say good-bye and leave somebody else's place"
6615msgstr ""
6616
6617#: src/social/gnunet-social.c:1225
6618msgid "create a place"
6619msgstr ""
6620
6621#: src/social/gnunet-social.c:1230
6622msgid "destroy a place we were hosting"
6623msgstr ""
6624
6625#: src/social/gnunet-social.c:1235
6626msgid "enter somebody else's place"
6627msgstr ""
6628
6629#: src/social/gnunet-social.c:1241
6630msgid "find state matching name prefix"
6631msgstr ""
6632
6633#: src/social/gnunet-social.c:1246
6634msgid "replay history of messages up to the given --limit"
6635msgstr ""
6636
6637#: src/social/gnunet-social.c:1251
6638msgid "reconnect to a previously created place"
6639msgstr ""
6640
6641#: src/social/gnunet-social.c:1256
6642msgid "publish something to a place we are hosting"
6643msgstr ""
6644
6645#: src/social/gnunet-social.c:1261
6646msgid "reconnect to a previously entered place"
6647msgstr ""
6648
6649#: src/social/gnunet-social.c:1266
6650msgid "search for state matching exact name"
6651msgstr ""
6652
6653#: src/social/gnunet-social.c:1271
6654msgid "submit something to somebody's place"
6655msgstr ""
6656
6657#: src/social/gnunet-social.c:1276
6658msgid "list of egos and subscribed places"
6659msgstr ""
6660
6661#: src/social/gnunet-social.c:1281
6662msgid "extract and replay history between message IDs --start and --until"
6663msgstr ""
6664
6665#: src/social/gnunet-social.c:1290
6666msgid "application ID to use when connecting"
6667msgstr ""
6668
6669#: src/social/gnunet-social.c:1296
6670msgid "message body or state value"
6671msgstr ""
6672
6673#: src/social/gnunet-social.c:1302
6674#, fuzzy
6675msgid "name or public key of ego"
6676msgstr "Parámetro no válido «%s»\n"
6677
6678#: src/social/gnunet-social.c:1307
6679#, fuzzy
6680msgid "wait for incoming messages"
6681msgstr "Falló al entregar el mensaje '%s'.\n"
6682
6683#: src/social/gnunet-social.c:1313
6684#, fuzzy
6685msgid "GNS name"
6686msgstr "Mostrar el _nombre"
6687
6688#: src/social/gnunet-social.c:1319
6689msgid "peer ID for --guest-enter"
6690msgstr ""
6691
6692#: src/social/gnunet-social.c:1325
6693msgid "name (key) to query from state"
6694msgstr ""
6695
6696#: src/social/gnunet-social.c:1331
6697#, fuzzy
6698msgid "method name"
6699msgstr "Mostrar el _nombre"
6700
6701#: src/social/gnunet-social.c:1337
6702#, fuzzy
6703msgid "number of messages to replay from history"
6704msgstr "número de mensajes a usar por iteración"
6705
6706#: src/social/gnunet-social.c:1343
6707msgid "key address of place"
6708msgstr ""
6709
6710#: src/social/gnunet-social.c:1349
6711msgid "start message ID for history replay"
6712msgstr ""
6713
6714#: src/social/gnunet-social.c:1354
6715msgid "respond to entry requests by admitting all guests"
6716msgstr ""
6717
6718#: src/social/gnunet-social.c:1360
6719msgid "end message ID for history replay"
6720msgstr ""
6721
6722#: src/social/gnunet-social.c:1365
6723msgid "respond to entry requests by refusing all guests"
6724msgstr ""
6725
6726#: src/social/gnunet-social.c:1375
6727msgid ""
6728"gnunet-social - Interact with the social service: enter/leave, send/receive "
6729"messages, access history and state.\n"
6730msgstr ""
6731
6732#: src/sq/sq.c:52
6733#, c-format 6528#, c-format
6734msgid "Failure to bind %u-th SQL parameter\n" 6529msgid "Failure to bind %u-th SQL parameter\n"
6735msgstr "" 6530msgstr ""
6736 6531
6737#: src/sq/sq.c:59 6532#: src/sq/sq.c:61
6738msgid "Failure in sqlite3_reset (!)\n" 6533msgid "Failure in sqlite3_reset (!)\n"
6739msgstr "" 6534msgstr ""
6740 6535
6741#: src/sq/sq.c:137 6536#: src/sq/sq.c:139
6742#, fuzzy, c-format 6537#, fuzzy, c-format
6743msgid "Failed to reset sqlite statement with error: %s\n" 6538msgid "Failed to reset sqlite statement with error: %s\n"
6744msgstr "«%s» falló al resolver el método «%s» con error: %s\n" 6539msgstr "«%s» falló al resolver el método «%s» con error: %s\n"
6745 6540
6746#: src/statistics/gnunet-service-statistics.c:336 6541#: src/statistics/gnunet-service-statistics.c:338
6747#, c-format 6542#, c-format
6748msgid "Wrote %llu bytes of statistics to `%s'\n" 6543msgid "Wrote %llu bytes of statistics to `%s'\n"
6749msgstr "Escritos %llu bytes de estadísticas a «%s»\n" 6544msgstr "Escritos %llu bytes de estadísticas a «%s»\n"
6750 6545
6751#: src/statistics/gnunet-service-statistics.c:1084 6546#: src/statistics/gnunet-service-statistics.c:1086
6752#, c-format 6547#, c-format
6753msgid "Loading %llu bytes of statistics from `%s'\n" 6548msgid "Loading %llu bytes of statistics from `%s'\n"
6754msgstr "Cargando %llu bytes de estadísticas de «%s»\n" 6549msgstr "Cargando %llu bytes de estadísticas de «%s»\n"
6755 6550
6756#: src/statistics/gnunet-statistics.c:407 6551#: src/statistics/gnunet-statistics.c:409
6757#: src/statistics/gnunet-statistics.c:448 6552#: src/statistics/gnunet-statistics.c:450
6758msgid "Failed to obtain statistics.\n" 6553msgid "Failed to obtain statistics.\n"
6759msgstr "Se produjo un fallo al obtener las estadísticas.\n" 6554msgstr "Se produjo un fallo al obtener las estadísticas.\n"
6760 6555
6761#: src/statistics/gnunet-statistics.c:410 6556#: src/statistics/gnunet-statistics.c:412
6762#: src/statistics/gnunet-statistics.c:451 6557#: src/statistics/gnunet-statistics.c:453
6763#, c-format 6558#, c-format
6764msgid "Failed to obtain statistics from host `%s:%llu'\n" 6559msgid "Failed to obtain statistics from host `%s:%llu'\n"
6765msgstr "" 6560msgstr ""
6766"Se produjo un fallo al obtener las estadísticas de la máquina «%s:%llu»\n" 6561"Se produjo un fallo al obtener las estadísticas de la máquina «%s:%llu»\n"
6767 6562
6768#: src/statistics/gnunet-statistics.c:526 6563#: src/statistics/gnunet-statistics.c:528
6769msgid "Missing argument: subsystem \n" 6564msgid "Missing argument: subsystem \n"
6770msgstr "Falta el parámetro: subsistema\n" 6565msgstr "Falta el parámetro: subsistema\n"
6771 6566
6772#: src/statistics/gnunet-statistics.c:534 6567#: src/statistics/gnunet-statistics.c:536
6773msgid "Missing argument: name\n" 6568msgid "Missing argument: name\n"
6774msgstr "Falta el argumento: nombre\n" 6569msgstr "Falta el argumento: nombre\n"
6775 6570
6776#: src/statistics/gnunet-statistics.c:577 6571#: src/statistics/gnunet-statistics.c:579
6777#, c-format 6572#, c-format
6778msgid "No subsystem or name given\n" 6573msgid "No subsystem or name given\n"
6779msgstr "No se proporcionó un subsistema o un nombre\n" 6574msgstr "No se proporcionó un subsistema o un nombre\n"
6780 6575
6781#: src/statistics/gnunet-statistics.c:592 6576#: src/statistics/gnunet-statistics.c:594
6782#, c-format 6577#, c-format
6783msgid "Failed to initialize watch routine\n" 6578msgid "Failed to initialize watch routine\n"
6784msgstr "Se produjo un fallo al inicializar la rutina de visualización\n" 6579msgstr "Se produjo un fallo al inicializar la rutina de visualización\n"
6785 6580
6786#: src/statistics/gnunet-statistics.c:727 6581#: src/statistics/gnunet-statistics.c:729
6787#, c-format 6582#, c-format
6788msgid "Invalid argument `%s'\n" 6583msgid "Invalid argument `%s'\n"
6789msgstr "Parámetro no válido «%s»\n" 6584msgstr "Parámetro no válido «%s»\n"
6790 6585
6791#: src/statistics/gnunet-statistics.c:745 6586#: src/statistics/gnunet-statistics.c:747
6792#, c-format 6587#, c-format
6793msgid "A port is required to connect to host `%s'\n" 6588msgid "A port is required to connect to host `%s'\n"
6794msgstr "Se necesita un puerto para conectar con la máquina «%s»\n" 6589msgstr "Se necesita un puerto para conectar con la máquina «%s»\n"
6795 6590
6796#: src/statistics/gnunet-statistics.c:753 6591#: src/statistics/gnunet-statistics.c:755
6797#, c-format 6592#, c-format
6798msgid "A port has to be between 1 and 65535 to connect to host `%s'\n" 6593msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
6799msgstr "Un puerto debe estar entre 1 y 65534 para conectar a la máquina «%s»\n" 6594msgstr "Un puerto debe estar entre 1 y 65534 para conectar a la máquina «%s»\n"
6800 6595
6801#: src/statistics/gnunet-statistics.c:784 6596#: src/statistics/gnunet-statistics.c:786
6802#, c-format 6597#, c-format
6803msgid "Not able to watch testbed nodes (yet - feel free to implement)\n" 6598msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
6804msgstr "" 6599msgstr ""
6805 6600
6806#: src/statistics/gnunet-statistics.c:817 6601#: src/statistics/gnunet-statistics.c:819
6807msgid "limit output to statistics for the given NAME" 6602msgid "limit output to statistics for the given NAME"
6808msgstr "limita la salida de estadísticas para el nombre (NAME) dado" 6603msgstr "limita la salida de estadísticas para el nombre (NAME) dado"
6809 6604
6810#: src/statistics/gnunet-statistics.c:822 6605#: src/statistics/gnunet-statistics.c:824
6811msgid "make the value being set persistent" 6606msgid "make the value being set persistent"
6812msgstr "hacer el valor persistente" 6607msgstr "hacer el valor persistente"
6813 6608
6814#: src/statistics/gnunet-statistics.c:828 6609#: src/statistics/gnunet-statistics.c:830
6815msgid "limit output to the given SUBSYSTEM" 6610msgid "limit output to the given SUBSYSTEM"
6816msgstr "límite de salida para el subsistema (SUBSYSTEM) dado" 6611msgstr "límite de salida para el subsistema (SUBSYSTEM) dado"
6817 6612
6818#: src/statistics/gnunet-statistics.c:834 6613#: src/statistics/gnunet-statistics.c:836
6819msgid "use as csv separator" 6614msgid "use as csv separator"
6820msgstr "" 6615msgstr ""
6821 6616
6822#: src/statistics/gnunet-statistics.c:840 6617#: src/statistics/gnunet-statistics.c:842
6823msgid "path to the folder containing the testbed data" 6618msgid "path to the folder containing the testbed data"
6824msgstr "" 6619msgstr ""
6825 6620
6826#: src/statistics/gnunet-statistics.c:845 6621#: src/statistics/gnunet-statistics.c:847
6827msgid "just print the statistics value" 6622msgid "just print the statistics value"
6828msgstr "imprime el valor de las estadísticas" 6623msgstr "imprime el valor de las estadísticas"
6829 6624
6830#: src/statistics/gnunet-statistics.c:850 6625#: src/statistics/gnunet-statistics.c:852
6831msgid "watch value continuously" 6626msgid "watch value continuously"
6832msgstr "visualiza el valor continuamente" 6627msgstr "visualiza el valor continuamente"
6833 6628
6834#: src/statistics/gnunet-statistics.c:856 6629#: src/statistics/gnunet-statistics.c:858
6835msgid "connect to remote host" 6630msgid "connect to remote host"
6836msgstr "conectar a equipo remoto" 6631msgstr "conectar a equipo remoto"
6837 6632
6838#: src/statistics/gnunet-statistics.c:862 6633#: src/statistics/gnunet-statistics.c:864
6839msgid "port for remote host" 6634msgid "port for remote host"
6840msgstr "puerto del equipo remoto" 6635msgstr "puerto del equipo remoto"
6841 6636
6842#: src/statistics/gnunet-statistics.c:879 6637#: src/statistics/gnunet-statistics.c:881
6843msgid "Print statistics about GNUnet operations." 6638msgid "Print statistics about GNUnet operations."
6844msgstr "Imprime estadísticas acerca de las operaciones de GNUnet." 6639msgstr "Imprime estadísticas acerca de las operaciones de GNUnet."
6845 6640
6846#: src/statistics/statistics_api.c:751 6641#: src/statistics/statistics_api.c:753
6847msgid "Could not save some persistent statistics\n" 6642msgid "Could not save some persistent statistics\n"
6848msgstr "No se pudieron guardar algunas estadísticas persistentes\n" 6643msgstr "No se pudieron guardar algunas estadísticas persistentes\n"
6849 6644
6850#: src/testbed/generate-underlay-topology.c:223 6645#: src/testbed/generate-underlay-topology.c:225
6851#, fuzzy 6646#, fuzzy
6852msgid "Need at least 2 arguments\n" 6647msgid "Need at least 2 arguments\n"
6853msgstr "Tiene que especificar una URI como parámetro.\n" 6648msgstr "Tiene que especificar una URI como parámetro.\n"
6854 6649
6855#: src/testbed/generate-underlay-topology.c:228 6650#: src/testbed/generate-underlay-topology.c:230
6856msgid "Database filename missing\n" 6651msgid "Database filename missing\n"
6857msgstr "" 6652msgstr ""
6858 6653
6859#: src/testbed/generate-underlay-topology.c:235 6654#: src/testbed/generate-underlay-topology.c:237
6860#, fuzzy 6655#, fuzzy
6861msgid "Topology string missing\n" 6656msgid "Topology string missing\n"
6862msgstr "falta una opción" 6657msgstr "falta una opción"
6863 6658
6864#: src/testbed/generate-underlay-topology.c:240 6659#: src/testbed/generate-underlay-topology.c:242
6865#, fuzzy, c-format 6660#, fuzzy, c-format
6866msgid "Invalid topology: %s\n" 6661msgid "Invalid topology: %s\n"
6867msgstr "Parámetro no válido «%s»\n" 6662msgstr "Parámetro no válido «%s»\n"
6868 6663
6869#: src/testbed/generate-underlay-topology.c:253 6664#: src/testbed/generate-underlay-topology.c:255
6870#, c-format 6665#, c-format
6871msgid "An argument is missing for given topology `%s'\n" 6666msgid "An argument is missing for given topology `%s'\n"
6872msgstr "" 6667msgstr ""
6873 6668
6874#: src/testbed/generate-underlay-topology.c:259 6669#: src/testbed/generate-underlay-topology.c:261
6875#, fuzzy, c-format 6670#, fuzzy, c-format
6876msgid "Invalid argument `%s' given as topology argument\n" 6671msgid "Invalid argument `%s' given as topology argument\n"
6877msgstr "Parámetro no válido «%s»\n" 6672msgstr "Parámetro no válido «%s»\n"
6878 6673
6879#: src/testbed/generate-underlay-topology.c:267 6674#: src/testbed/generate-underlay-topology.c:269
6880#, fuzzy, c-format 6675#, fuzzy, c-format
6881msgid "Filename argument missing for topology `%s'\n" 6676msgid "Filename argument missing for topology `%s'\n"
6882msgstr "¡Falló mientras se esperaba la configuración topológica!\n" 6677msgstr "¡Falló mientras se esperaba la configuración topológica!\n"
6883 6678
6884#: src/testbed/generate-underlay-topology.c:281 6679#: src/testbed/generate-underlay-topology.c:283
6885#, c-format 6680#, c-format
6886msgid "Second argument for topology `%s' is missing\n" 6681msgid "Second argument for topology `%s' is missing\n"
6887msgstr "" 6682msgstr ""
6888 6683
6889#: src/testbed/generate-underlay-topology.c:287 6684#: src/testbed/generate-underlay-topology.c:289
6890#, fuzzy, c-format 6685#, fuzzy, c-format
6891msgid "Invalid argument `%s'; expecting unsigned int\n" 6686msgid "Invalid argument `%s'; expecting unsigned int\n"
6892msgstr "Argumento no válido para '%s' en %s:%d.\n" 6687msgstr "Argumento no válido para '%s' en %s:%d.\n"
6893 6688
6894#: src/testbed/generate-underlay-topology.c:340 6689#: src/testbed/generate-underlay-topology.c:342
6895#: src/testbed/gnunet-testbed-profiler.c:281 6690#: src/testbed/gnunet-testbed-profiler.c:283
6896msgid "create COUNT number of peers" 6691msgid "create COUNT number of peers"
6897msgstr "crea «COUNT» número de pares" 6692msgstr "crea «COUNT» número de pares"
6898 6693
6899#: src/testbed/generate-underlay-topology.c:350 6694#: src/testbed/generate-underlay-topology.c:352
6900msgid "" 6695msgid ""
6901"Generates SQLite3 database representing a given underlay topology.\n" 6696"Generates SQLite3 database representing a given underlay topology.\n"
6902"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n" 6697"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n"
@@ -6920,63 +6715,63 @@ msgid ""
6920"content/topology-file-format\n" 6715"content/topology-file-format\n"
6921msgstr "" 6716msgstr ""
6922 6717
6923#: src/testbed/gnunet-daemon-latency-logger.c:313 6718#: src/testbed/gnunet-daemon-latency-logger.c:315
6924msgid "Daemon to log latency values of connections to neighbours" 6719msgid "Daemon to log latency values of connections to neighbours"
6925msgstr "" 6720msgstr ""
6926 6721
6927#: src/testbed/gnunet-daemon-testbed-blacklist.c:247 6722#: src/testbed/gnunet-daemon-testbed-blacklist.c:249
6928msgid "" 6723msgid ""
6929"Daemon to restrict incoming transport layer connections during testbed " 6724"Daemon to restrict incoming transport layer connections during testbed "
6930"deployments" 6725"deployments"
6931msgstr "" 6726msgstr ""
6932 6727
6933#: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 6728#: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
6934#: src/testing/testing.c:286 src/util/gnunet-ecc.c:310 6729#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
6935#, c-format 6730#, c-format
6936msgid "Incorrect hostkey file format: %s\n" 6731msgid "Incorrect hostkey file format: %s\n"
6937msgstr "El fichero de máquinas no tiene el formato correcto: %s\n" 6732msgstr "El fichero de máquinas no tiene el formato correcto: %s\n"
6938 6733
6939#: src/testbed/gnunet-daemon-testbed-underlay.c:469 6734#: src/testbed/gnunet-daemon-testbed-underlay.c:471
6940msgid "Daemon to restrict underlay network in testbed deployments" 6735msgid "Daemon to restrict underlay network in testbed deployments"
6941msgstr "" 6736msgstr ""
6942 6737
6943#: src/testbed/gnunet-service-testbed_cpustatus.c:726 6738#: src/testbed/gnunet-service-testbed_cpustatus.c:728
6944#, c-format 6739#, c-format
6945msgid "" 6740msgid ""
6946"Cannot open %s for writing load statistics. Not logging load statistics\n" 6741"Cannot open %s for writing load statistics. Not logging load statistics\n"
6947msgstr "" 6742msgstr ""
6948 6743
6949#: src/testbed/gnunet-service-testbed_peers.c:1157 6744#: src/testbed/gnunet-service-testbed_peers.c:1159
6950#, fuzzy, c-format 6745#, fuzzy, c-format
6951msgid "%s is stopped" 6746msgid "%s is stopped"
6952msgstr "# elementos almacenados" 6747msgstr "# elementos almacenados"
6953 6748
6954#: src/testbed/gnunet-service-testbed_peers.c:1159 6749#: src/testbed/gnunet-service-testbed_peers.c:1161
6955#, fuzzy, c-format 6750#, fuzzy, c-format
6956msgid "%s is starting" 6751msgid "%s is starting"
6957msgstr "'%s' comenzando\n" 6752msgstr "'%s' comenzando\n"
6958 6753
6959#: src/testbed/gnunet-service-testbed_peers.c:1161 6754#: src/testbed/gnunet-service-testbed_peers.c:1163
6960#, c-format 6755#, c-format
6961msgid "%s is stopping" 6756msgid "%s is stopping"
6962msgstr "" 6757msgstr ""
6963 6758
6964#: src/testbed/gnunet-service-testbed_peers.c:1163 6759#: src/testbed/gnunet-service-testbed_peers.c:1165
6965#, fuzzy, c-format 6760#, fuzzy, c-format
6966msgid "%s is starting already" 6761msgid "%s is starting already"
6967msgstr "'%s' comenzando\n" 6762msgstr "'%s' comenzando\n"
6968 6763
6969#: src/testbed/gnunet-service-testbed_peers.c:1165 6764#: src/testbed/gnunet-service-testbed_peers.c:1167
6970#, c-format 6765#, c-format
6971msgid "%s is stopping already" 6766msgid "%s is stopping already"
6972msgstr "" 6767msgstr ""
6973 6768
6974#: src/testbed/gnunet-service-testbed_peers.c:1167 6769#: src/testbed/gnunet-service-testbed_peers.c:1169
6975#, c-format 6770#, c-format
6976msgid "%s is started already" 6771msgid "%s is started already"
6977msgstr "" 6772msgstr ""
6978 6773
6979#: src/testbed/gnunet-service-testbed_peers.c:1169 6774#: src/testbed/gnunet-service-testbed_peers.c:1171
6980#, c-format 6775#, c-format
6981msgid "%s is stopped already" 6776msgid "%s is stopped already"
6982msgstr "" 6777msgstr ""
@@ -6984,23 +6779,23 @@ msgstr ""
6984# Miguel: ¿Debería cambiar las siglas de ARM? 6779# Miguel: ¿Debería cambiar las siglas de ARM?
6985# De momento las he mantenido con una traducción en 6780# De momento las he mantenido con una traducción en
6986# otro mensaje. 6781# otro mensaje.
6987#: src/testbed/gnunet-service-testbed_peers.c:1171 6782#: src/testbed/gnunet-service-testbed_peers.c:1173
6988#, fuzzy, c-format 6783#, fuzzy, c-format
6989msgid "%s service is not known to ARM" 6784msgid "%s service is not known to ARM"
6990msgstr "El servicio «%s» es desconocido para el ARM.\n" 6785msgstr "El servicio «%s» es desconocido para el ARM.\n"
6991 6786
6992#: src/testbed/gnunet-service-testbed_peers.c:1173 6787#: src/testbed/gnunet-service-testbed_peers.c:1175
6993#, fuzzy, c-format 6788#, fuzzy, c-format
6994msgid "%s service failed to start" 6789msgid "%s service failed to start"
6995msgstr "El proceso del servicio no devolvió un estado\n" 6790msgstr "El proceso del servicio no devolvió un estado\n"
6996 6791
6997# Miguel: ¿Es mejor «ya que» que «porque» o «debido al apagado»? 6792# Miguel: ¿Es mejor «ya que» que «porque» o «debido al apagado»?
6998#: src/testbed/gnunet-service-testbed_peers.c:1175 6793#: src/testbed/gnunet-service-testbed_peers.c:1177
6999#, fuzzy, c-format 6794#, fuzzy, c-format
7000msgid "%s service can't be started because ARM is shutting down" 6795msgid "%s service can't be started because ARM is shutting down"
7001msgstr "Petición ignorada porque el ARM se está apagando.\n" 6796msgstr "Petición ignorada porque el ARM se está apagando.\n"
7002 6797
7003#: src/testbed/gnunet-service-testbed_peers.c:1177 6798#: src/testbed/gnunet-service-testbed_peers.c:1179
7004#, fuzzy, c-format 6799#, fuzzy, c-format
7005msgid "%.s Unknown result code." 6800msgid "%.s Unknown result code."
7006msgstr "Código de respuesta del ARM desconocido.\n" 6801msgstr "Código de respuesta del ARM desconocido.\n"
@@ -7015,167 +6810,167 @@ msgstr "Esperando a los pares para conectar (%u ciclos restantes)...\n"
7015msgid "Spawning process `%s'\n" 6810msgid "Spawning process `%s'\n"
7016msgstr "Iniciando el proceso auxiliar (HELPER) «%s»\n" 6811msgstr "Iniciando el proceso auxiliar (HELPER) «%s»\n"
7017 6812
7018#: src/testbed/gnunet-testbed-profiler.c:287 6813#: src/testbed/gnunet-testbed-profiler.c:289
7019msgid "tolerate COUNT number of continious timeout failures" 6814msgid "tolerate COUNT number of continious timeout failures"
7020msgstr "tolerar un número «COUNT» de continuas expiraciones de plazo" 6815msgstr "tolerar un número «COUNT» de continuas expiraciones de plazo"
7021 6816
7022#: src/testbed/gnunet-testbed-profiler.c:292 6817#: src/testbed/gnunet-testbed-profiler.c:294
7023msgid "" 6818msgid ""
7024"run profiler in non-interactive mode where upon testbed setup the profiler " 6819"run profiler in non-interactive mode where upon testbed setup the profiler "
7025"does not wait for a keystroke but continues to run until a termination " 6820"does not wait for a keystroke but continues to run until a termination "
7026"signal is received" 6821"signal is received"
7027msgstr "" 6822msgstr ""
7028 6823
7029#: src/testbed/testbed_api.c:408 6824#: src/testbed/testbed_api.c:410
7030#, c-format 6825#, c-format
7031msgid "Adding host %u failed with error: %s\n" 6826msgid "Adding host %u failed with error: %s\n"
7032msgstr "No se pudo añadir la máquina %u por el error: %s\n" 6827msgstr "No se pudo añadir la máquina %u por el error: %s\n"
7033 6828
7034#: src/testbed/testbed_api_hosts.c:411 6829#: src/testbed/testbed_api_hosts.c:413
7035#, c-format 6830#, c-format
7036msgid "Hosts file %s not found\n" 6831msgid "Hosts file %s not found\n"
7037msgstr "El fichero de máquinas %s no fue encontrado\n" 6832msgstr "El fichero de máquinas %s no fue encontrado\n"
7038 6833
7039#: src/testbed/testbed_api_hosts.c:419 6834#: src/testbed/testbed_api_hosts.c:421
7040#, c-format 6835#, c-format
7041msgid "Hosts file %s has no data\n" 6836msgid "Hosts file %s has no data\n"
7042msgstr "El archivo de máquinas %s no tiene datos\n" 6837msgstr "El archivo de máquinas %s no tiene datos\n"
7043 6838
7044#: src/testbed/testbed_api_hosts.c:426 6839#: src/testbed/testbed_api_hosts.c:428
7045#, c-format 6840#, c-format
7046msgid "Hosts file %s cannot be read\n" 6841msgid "Hosts file %s cannot be read\n"
7047msgstr "El archivo de máquinas %s no puede leerse\n" 6842msgstr "El archivo de máquinas %s no puede leerse\n"
7048 6843
7049#: src/testbed/testbed_api_hosts.c:567 6844#: src/testbed/testbed_api_hosts.c:569
7050#, c-format 6845#, c-format
7051msgid "The function %s is only available when compiled with (--with-ll)\n" 6846msgid "The function %s is only available when compiled with (--with-ll)\n"
7052msgstr "" 6847msgstr ""
7053 6848
7054#: src/testbed/testbed_api_testbed.c:816 6849#: src/testbed/testbed_api_testbed.c:818
7055msgid "Linking controllers failed. Exiting" 6850msgid "Linking controllers failed. Exiting"
7056msgstr "Los controladores de enlazado fallaron. Saliendo" 6851msgstr "Los controladores de enlazado fallaron. Saliendo"
7057 6852
7058#: src/testbed/testbed_api_testbed.c:984 6853#: src/testbed/testbed_api_testbed.c:986
7059#, c-format 6854#, c-format
7060msgid "Host registration failed for a host. Error: %s\n" 6855msgid "Host registration failed for a host. Error: %s\n"
7061msgstr "El registro de máquinas falló para una máquina. Error: %s\n" 6856msgstr "El registro de máquinas falló para una máquina. Error: %s\n"
7062 6857
7063#: src/testbed/testbed_api_testbed.c:1050 6858#: src/testbed/testbed_api_testbed.c:1052
7064msgid "Controller crash detected. Shutting down.\n" 6859msgid "Controller crash detected. Shutting down.\n"
7065msgstr "" 6860msgstr ""
7066 6861
7067#: src/testbed/testbed_api_testbed.c:1139 6862#: src/testbed/testbed_api_testbed.c:1141
7068#, c-format 6863#, c-format
7069msgid "Host %s cannot start testbed\n" 6864msgid "Host %s cannot start testbed\n"
7070msgstr "La máquina %s no puede comenzar la batería de pruebas\n" 6865msgstr "La máquina %s no puede comenzar la batería de pruebas\n"
7071 6866
7072#: src/testbed/testbed_api_testbed.c:1143 6867#: src/testbed/testbed_api_testbed.c:1145
7073msgid "Testbed cannot be started on localhost\n" 6868msgid "Testbed cannot be started on localhost\n"
7074msgstr "La batería de pruebas no se puede iniciar en localhost\n" 6869msgstr "La batería de pruebas no se puede iniciar en localhost\n"
7075 6870
7076#: src/testbed/testbed_api_testbed.c:1181 6871#: src/testbed/testbed_api_testbed.c:1183
7077msgid "Cannot start the master controller" 6872msgid "Cannot start the master controller"
7078msgstr "No se puede iniciar el controlador maestro" 6873msgstr "No se puede iniciar el controlador maestro"
7079 6874
7080#: src/testbed/testbed_api_testbed.c:1199 6875#: src/testbed/testbed_api_testbed.c:1201
7081msgid "Shutting down testbed due to timeout while setup.\n" 6876msgid "Shutting down testbed due to timeout while setup.\n"
7082msgstr "" 6877msgstr ""
7083 6878
7084#: src/testbed/testbed_api_testbed.c:1259 6879#: src/testbed/testbed_api_testbed.c:1261
7085#, fuzzy 6880#, fuzzy
7086msgid "No hosts loaded from LoadLeveler. Need at least one host\n" 6881msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
7087msgstr "No se han cargado máquinas. Se necesita al menos una máquina.\n" 6882msgstr "No se han cargado máquinas. Se necesita al menos una máquina.\n"
7088 6883
7089#: src/testbed/testbed_api_testbed.c:1271 6884#: src/testbed/testbed_api_testbed.c:1273
7090msgid "No hosts loaded. Need at least one host\n" 6885msgid "No hosts loaded. Need at least one host\n"
7091msgstr "No se han cargado máquinas. Se necesita al menos una máquina.\n" 6886msgstr "No se han cargado máquinas. Se necesita al menos una máquina.\n"
7092 6887
7093#: src/testbed/testbed_api_testbed.c:1295 6888#: src/testbed/testbed_api_testbed.c:1297
7094msgid "Specified topology must be supported by testbed" 6889msgid "Specified topology must be supported by testbed"
7095msgstr "" 6890msgstr ""
7096"La topología especificada debe estar soportada por la batería de pruebas" 6891"La topología especificada debe estar soportada por la batería de pruebas"
7097 6892
7098#: src/testbed/testbed_api_testbed.c:1345 6893#: src/testbed/testbed_api_testbed.c:1347
7099#, c-format 6894#, c-format
7100msgid "" 6895msgid ""
7101"Maximum number of edges a peer can have in a scale free topology cannot be " 6896"Maximum number of edges a peer can have in a scale free topology cannot be "
7102"more than %u. Given `%s = %llu'" 6897"more than %u. Given `%s = %llu'"
7103msgstr "" 6898msgstr ""
7104 6899
7105#: src/testbed/testbed_api_testbed.c:1361 6900#: src/testbed/testbed_api_testbed.c:1363
7106#, c-format 6901#, c-format
7107msgid "" 6902msgid ""
7108"The number of edges that can established when adding a new node to scale " 6903"The number of edges that can established when adding a new node to scale "
7109"free topology cannot be more than %u. Given `%s = %llu'" 6904"free topology cannot be more than %u. Given `%s = %llu'"
7110msgstr "" 6905msgstr ""
7111 6906
7112#: src/testbed/testbed_api_topology.c:1026 6907#: src/testbed/testbed_api_topology.c:1028
7113#, c-format 6908#, c-format
7114msgid "Topology file %s not found\n" 6909msgid "Topology file %s not found\n"
7115msgstr "El fichero de topología %s no fue encontrado\n" 6910msgstr "El fichero de topología %s no fue encontrado\n"
7116 6911
7117#: src/testbed/testbed_api_topology.c:1034 6912#: src/testbed/testbed_api_topology.c:1036
7118#, c-format 6913#, c-format
7119msgid "Topology file %s has no data\n" 6914msgid "Topology file %s has no data\n"
7120msgstr "El fichero de topología %s no tiene datos\n" 6915msgstr "El fichero de topología %s no tiene datos\n"
7121 6916
7122#: src/testbed/testbed_api_topology.c:1042 6917#: src/testbed/testbed_api_topology.c:1044
7123#, c-format 6918#, c-format
7124msgid "Topology file %s cannot be read\n" 6919msgid "Topology file %s cannot be read\n"
7125msgstr "El fichero de topología %s no puede ser leido\n" 6920msgstr "El fichero de topología %s no puede ser leido\n"
7126 6921
7127#: src/testbed/testbed_api_topology.c:1064 6922#: src/testbed/testbed_api_topology.c:1066
7128#, c-format 6923#, c-format
7129msgid "Failed to read peer index from toology file: %s" 6924msgid "Failed to read peer index from toology file: %s"
7130msgstr "" 6925msgstr ""
7131"Se produjo un fallo al leer el índice de pares del archivo de topología: %s" 6926"Se produjo un fallo al leer el índice de pares del archivo de topología: %s"
7132 6927
7133#: src/testbed/testbed_api_topology.c:1073 6928#: src/testbed/testbed_api_topology.c:1075
7134#: src/testbed/testbed_api_topology.c:1097 6929#: src/testbed/testbed_api_topology.c:1099
7135#, c-format 6930#, c-format
7136msgid "Value in given topology file: %s out of range\n" 6931msgid "Value in given topology file: %s out of range\n"
7137msgstr "Valor en el fichero de topología dato: %s está fuera de rango\n" 6932msgstr "Valor en el fichero de topología dato: %s está fuera de rango\n"
7138 6933
7139#: src/testbed/testbed_api_topology.c:1079 6934#: src/testbed/testbed_api_topology.c:1081
7140#: src/testbed/testbed_api_topology.c:1103 6935#: src/testbed/testbed_api_topology.c:1105
7141#, c-format 6936#, c-format
7142msgid "Failed to read peer index from topology file: %s" 6937msgid "Failed to read peer index from topology file: %s"
7143msgstr "" 6938msgstr ""
7144"Se produjo un fallo al leer índice de pares del fichero de topología: %s" 6939"Se produjo un fallo al leer índice de pares del fichero de topología: %s"
7145 6940
7146#: src/testbed/testbed_api_topology.c:1085 6941#: src/testbed/testbed_api_topology.c:1087
7147#: src/testbed/testbed_api_topology.c:1109 6942#: src/testbed/testbed_api_topology.c:1111
7148msgid "Topology file needs more peers than given ones\n" 6943msgid "Topology file needs more peers than given ones\n"
7149msgstr "El fichero de topología necesita más pares que los dados\n" 6944msgstr "El fichero de topología necesita más pares que los dados\n"
7150 6945
7151#: src/testbed/testbed_api_topology.c:1143 6946#: src/testbed/testbed_api_topology.c:1145
7152#, c-format 6947#, c-format
7153msgid "Ignoring to connect peer %u to peer %u\n" 6948msgid "Ignoring to connect peer %u to peer %u\n"
7154msgstr "Ignorando conexión del par %u al par %u\n" 6949msgstr "Ignorando conexión del par %u al par %u\n"
7155 6950
7156#: src/testing/gnunet-testing.c:171 6951#: src/testing/gnunet-testing.c:173
7157#, c-format 6952#, c-format
7158msgid "Could not extract hostkey %u (offset too large?)\n" 6953msgid "Could not extract hostkey %u (offset too large?)\n"
7159msgstr "" 6954msgstr ""
7160"No se pudo extraer la clave de máquina %u (¿desplazamiento demasiado " 6955"No se pudo extraer la clave de máquina %u (¿desplazamiento demasiado "
7161"grande?)\n" 6956"grande?)\n"
7162 6957
7163#: src/testing/gnunet-testing.c:251 6958#: src/testing/gnunet-testing.c:253
7164#, c-format 6959#, c-format
7165msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n" 6960msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n"
7166msgstr "Comando desconocido, use «q» para salir o «r» para reiniciar el par\n" 6961msgstr "Comando desconocido, use «q» para salir o «r» para reiniciar el par\n"
7167 6962
7168#: src/testing/gnunet-testing.c:352 6963#: src/testing/gnunet-testing.c:354
7169msgid "create unique configuration files" 6964msgid "create unique configuration files"
7170msgstr "crear ficheros de configuración únicos" 6965msgstr "crear ficheros de configuración únicos"
7171 6966
7172#: src/testing/gnunet-testing.c:357 6967#: src/testing/gnunet-testing.c:359
7173msgid "extract hostkey file from pre-computed hostkey list" 6968msgid "extract hostkey file from pre-computed hostkey list"
7174msgstr "" 6969msgstr ""
7175"extraer los ficheros de claves de máquinas de una lista pre-computada de " 6970"extraer los ficheros de claves de máquinas de una lista pre-computada de "
7176"claves de máquinas" 6971"claves de máquinas"
7177 6972
7178#: src/testing/gnunet-testing.c:363 6973#: src/testing/gnunet-testing.c:365
7179msgid "" 6974msgid ""
7180"number of unique configuration files to create, or number of the hostkey to " 6975"number of unique configuration files to create, or number of the hostkey to "
7181"extract" 6976"extract"
@@ -7183,15 +6978,15 @@ msgstr ""
7183"número de ficheros de configuración únicos o claves de máquina a crear, o el " 6978"número de ficheros de configuración únicos o claves de máquina a crear, o el "
7184"número de claves de máquina a extraer" 6979"número de claves de máquina a extraer"
7185 6980
7186#: src/testing/gnunet-testing.c:370 6981#: src/testing/gnunet-testing.c:372
7187msgid "configuration template" 6982msgid "configuration template"
7188msgstr "plantilla de configuración" 6983msgstr "plantilla de configuración"
7189 6984
7190#: src/testing/gnunet-testing.c:376 6985#: src/testing/gnunet-testing.c:378
7191msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)" 6986msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)"
7192msgstr "" 6987msgstr ""
7193 6988
7194#: src/testing/gnunet-testing.c:389 6989#: src/testing/gnunet-testing.c:391
7195msgid "Command line tool to access the testing library" 6990msgid "Command line tool to access the testing library"
7196msgstr "" 6991msgstr ""
7197"Herramienta de línea de comandos para acceder a la biblioteca de pruebas" 6992"Herramienta de línea de comandos para acceder a la biblioteca de pruebas"
@@ -7201,19 +6996,19 @@ msgstr ""
7201msgid "list COUNT number of keys" 6996msgid "list COUNT number of keys"
7202msgstr "crea «COUNT» número de pares" 6997msgstr "crea «COUNT» número de pares"
7203 6998
7204#: src/testing/testing.c:270 6999#: src/testing/testing.c:272
7205#, c-format 7000#, c-format
7206msgid "Hostkeys file not found: %s\n" 7001msgid "Hostkeys file not found: %s\n"
7207msgstr "El fichero de máquinas no fue encontrado: %s\n" 7002msgstr "El fichero de máquinas no fue encontrado: %s\n"
7208 7003
7209#: src/testing/testing.c:713 7004#: src/testing/testing.c:715
7210#, c-format 7005#, c-format
7211msgid "Key number %u does not exist\n" 7006msgid "Key number %u does not exist\n"
7212msgstr "El número de clave %u no existe\n" 7007msgstr "El número de clave %u no existe\n"
7213 7008
7214# Miguel: "testbed" lo he traducido como batería de pruebas, pero 7009# Miguel: "testbed" lo he traducido como batería de pruebas, pero
7215# no es una traducción muy literal. 7010# no es una traducción muy literal.
7216#: src/testing/testing.c:1157 7011#: src/testing/testing.c:1159
7217#, c-format 7012#, c-format
7218msgid "" 7013msgid ""
7219"You attempted to create a testbed with more than %u hosts. Please " 7014"You attempted to create a testbed with more than %u hosts. Please "
@@ -7222,107 +7017,107 @@ msgstr ""
7222"Se ha intentado crear una batería de pruebas con más de %u máquinas. Por " 7017"Se ha intentado crear una batería de pruebas con más de %u máquinas. Por "
7223"favor, pre-compute más claves de máquinas primero.\n" 7018"favor, pre-compute más claves de máquinas primero.\n"
7224 7019
7225#: src/testing/testing.c:1166 7020#: src/testing/testing.c:1168
7226#, c-format 7021#, c-format
7227msgid "Failed to initialize hostkey for peer %u\n" 7022msgid "Failed to initialize hostkey for peer %u\n"
7228msgstr "" 7023msgstr ""
7229"Se produjo un fallo al inicializar la clave de la máquina desde el par %u\n" 7024"Se produjo un fallo al inicializar la clave de la máquina desde el par %u\n"
7230 7025
7231#: src/testing/testing.c:1176 7026#: src/testing/testing.c:1178
7232#, fuzzy 7027#, fuzzy
7233msgid "PRIVATE_KEY option in PEER section missing in configuration\n" 7028msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
7234msgstr "¡Falta la opción «%s» en la sección «%s» de la configuración!\n" 7029msgstr "¡Falta la opción «%s» en la sección «%s» de la configuración!\n"
7235 7030
7236#: src/testing/testing.c:1189 7031#: src/testing/testing.c:1191
7237msgid "Failed to create configuration for peer (not enough free ports?)\n" 7032msgid "Failed to create configuration for peer (not enough free ports?)\n"
7238msgstr "" 7033msgstr ""
7239"Se produjo un fallo al crear la configuración para el par (¿no hay " 7034"Se produjo un fallo al crear la configuración para el par (¿no hay "
7240"suficientes puertos libres?)\n" 7035"suficientes puertos libres?)\n"
7241 7036
7242#: src/testing/testing.c:1203 7037#: src/testing/testing.c:1205
7243#, fuzzy, c-format 7038#, fuzzy, c-format
7244msgid "Cannot open hostkey file `%s': %s\n" 7039msgid "Cannot open hostkey file `%s': %s\n"
7245msgstr "No se pudo abrir el fichero de claves de máquina: %s\n" 7040msgstr "No se pudo abrir el fichero de claves de máquina: %s\n"
7246 7041
7247#: src/testing/testing.c:1215 7042#: src/testing/testing.c:1217
7248#, c-format 7043#, c-format
7249msgid "Failed to write hostkey file for peer %u: %s\n" 7044msgid "Failed to write hostkey file for peer %u: %s\n"
7250msgstr "" 7045msgstr ""
7251"Se produjo un fallo al escribir la clave de la máquina para el par %u: %s\n" 7046"Se produjo un fallo al escribir la clave de la máquina para el par %u: %s\n"
7252 7047
7253#: src/testing/testing.c:1240 7048#: src/testing/testing.c:1242
7254#, c-format 7049#, c-format
7255msgid "Failed to write configuration file `%s' for peer %u: %s\n" 7050msgid "Failed to write configuration file `%s' for peer %u: %s\n"
7256msgstr "" 7051msgstr ""
7257"Se produjo un fallo al escribir el fichero de configuración «%s» para el par " 7052"Se produjo un fallo al escribir el fichero de configuración «%s» para el par "
7258"%u: %s\n" 7053"%u: %s\n"
7259 7054
7260#: src/testing/testing.c:1342 7055#: src/testing/testing.c:1344
7261#, c-format 7056#, c-format
7262msgid "Failed to start `%s': %s\n" 7057msgid "Failed to start `%s': %s\n"
7263msgstr "Se produjo un fallo al arrancar «%s»: %s\n" 7058msgstr "Se produjo un fallo al arrancar «%s»: %s\n"
7264 7059
7265#: src/testing/testing.c:1645 7060#: src/testing/testing.c:1647
7266#, c-format 7061#, c-format
7267msgid "Failed to load configuration from %s\n" 7062msgid "Failed to load configuration from %s\n"
7268msgstr "Se produjo un fallo al cargar la configuración de %s\n" 7063msgstr "Se produjo un fallo al cargar la configuración de %s\n"
7269 7064
7270#: src/topology/friends.c:124 7065#: src/topology/friends.c:126
7271#, fuzzy, c-format 7066#, fuzzy, c-format
7272msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n" 7067msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n"
7273msgstr "" 7068msgstr ""
7274"Error de sintaxis en el fichero de la lista negra en el desplazamiento %llu, " 7069"Error de sintaxis en el fichero de la lista negra en el desplazamiento %llu, "
7275"omitiendo bytes «%s».\n" 7070"omitiendo bytes «%s».\n"
7276 7071
7277#: src/topology/friends.c:178 7072#: src/topology/friends.c:180
7278#, fuzzy, c-format 7073#, fuzzy, c-format
7279msgid "Directory for file `%s' does not seem to be writable.\n" 7074msgid "Directory for file `%s' does not seem to be writable.\n"
7280msgstr "«gnunet-arm» o «ssh» no parecen terminar.\n" 7075msgstr "«gnunet-arm» o «ssh» no parecen terminar.\n"
7281 7076
7282#: src/topology/gnunet-daemon-topology.c:228 7077#: src/topology/gnunet-daemon-topology.c:230
7283msgid "# peers blacklisted" 7078msgid "# peers blacklisted"
7284msgstr "# pares en la lista negra" 7079msgstr "# pares en la lista negra"
7285 7080
7286#: src/topology/gnunet-daemon-topology.c:342 7081#: src/topology/gnunet-daemon-topology.c:344
7287#, fuzzy 7082#, fuzzy
7288msgid "# connect requests issued to ATS" 7083msgid "# connect requests issued to ATS"
7289msgstr "# peticiones de conexión requeridas al servicio de transporte" 7084msgstr "# peticiones de conexión requeridas al servicio de transporte"
7290 7085
7291# gossiped?? 7086# gossiped??
7292#: src/topology/gnunet-daemon-topology.c:536 7087#: src/topology/gnunet-daemon-topology.c:538
7293msgid "# HELLO messages gossipped" 7088msgid "# HELLO messages gossipped"
7294msgstr "# Mensajes «HELLO» rumoreados" 7089msgstr "# Mensajes «HELLO» rumoreados"
7295 7090
7296#: src/topology/gnunet-daemon-topology.c:638 7091#: src/topology/gnunet-daemon-topology.c:640
7297#: src/topology/gnunet-daemon-topology.c:724 7092#: src/topology/gnunet-daemon-topology.c:726
7298msgid "# friends connected" 7093msgid "# friends connected"
7299msgstr "# amigos conectados" 7094msgstr "# amigos conectados"
7300 7095
7301#: src/topology/gnunet-daemon-topology.c:921 7096#: src/topology/gnunet-daemon-topology.c:923
7302msgid "Failed to connect to core service, can not manage topology!\n" 7097msgid "Failed to connect to core service, can not manage topology!\n"
7303msgstr "" 7098msgstr ""
7304"¡Se produjo un fallo al conectar con el servicio principal, no se puede " 7099"¡Se produjo un fallo al conectar con el servicio principal, no se puede "
7305"gestionar la topología!\n" 7100"gestionar la topología!\n"
7306 7101
7307#: src/topology/gnunet-daemon-topology.c:954 7102#: src/topology/gnunet-daemon-topology.c:956
7308#, c-format 7103#, c-format
7309msgid "Found myself `%s' in friend list (useless, ignored)\n" 7104msgid "Found myself `%s' in friend list (useless, ignored)\n"
7310msgstr "Me he encontrado «%s» en mi lista de amigos (inútil, ignorado)\n" 7105msgstr "Me he encontrado «%s» en mi lista de amigos (inútil, ignorado)\n"
7311 7106
7312#: src/topology/gnunet-daemon-topology.c:961 7107#: src/topology/gnunet-daemon-topology.c:963
7313#, c-format 7108#, c-format
7314msgid "Found friend `%s' in configuration\n" 7109msgid "Found friend `%s' in configuration\n"
7315msgstr "Encontrado amigo «%s» en la configuración\n" 7110msgstr "Encontrado amigo «%s» en la configuración\n"
7316 7111
7317#: src/topology/gnunet-daemon-topology.c:983 7112#: src/topology/gnunet-daemon-topology.c:985
7318msgid "Encountered errors parsing friends list!\n" 7113msgid "Encountered errors parsing friends list!\n"
7319msgstr "" 7114msgstr ""
7320 7115
7321#: src/topology/gnunet-daemon-topology.c:986 7116#: src/topology/gnunet-daemon-topology.c:988
7322msgid "# friends in configuration" 7117msgid "# friends in configuration"
7323msgstr "# amigos en configuración" 7118msgstr "# amigos en configuración"
7324 7119
7325#: src/topology/gnunet-daemon-topology.c:993 7120#: src/topology/gnunet-daemon-topology.c:995
7326msgid "" 7121msgid ""
7327"Fewer friends specified than required by minimum friend count. Will only " 7122"Fewer friends specified than required by minimum friend count. Will only "
7328"connect to friends.\n" 7123"connect to friends.\n"
@@ -7330,376 +7125,405 @@ msgstr ""
7330"Menos amigos especificados que los requeridos por el contador mínimo de " 7125"Menos amigos especificados que los requeridos por el contador mínimo de "
7331"amigos. Sólo me conectaré a amigos.\n" 7126"amigos. Sólo me conectaré a amigos.\n"
7332 7127
7333#: src/topology/gnunet-daemon-topology.c:999 7128#: src/topology/gnunet-daemon-topology.c:1001
7334msgid "" 7129msgid ""
7335"More friendly connections required than target total number of connections.\n" 7130"More friendly connections required than target total number of connections.\n"
7336msgstr "" 7131msgstr ""
7337"Más conexiones amistosas requeridas que el número objetivo total de " 7132"Más conexiones amistosas requeridas que el número objetivo total de "
7338"conexiones.\n" 7133"conexiones.\n"
7339 7134
7340#: src/topology/gnunet-daemon-topology.c:1052 7135#: src/topology/gnunet-daemon-topology.c:1054
7341#: src/transport/plugin_transport_wlan.c:1515 7136#: src/transport/plugin_transport_wlan.c:1517
7342msgid "# HELLO messages received" 7137msgid "# HELLO messages received"
7343msgstr "# mensajes «HELLO» recibidos" 7138msgstr "# mensajes «HELLO» recibidos"
7344 7139
7345#: src/topology/gnunet-daemon-topology.c:1230 7140#: src/topology/gnunet-daemon-topology.c:1233
7346msgid "GNUnet topology control" 7141msgid "GNUnet topology control"
7347msgstr "" 7142msgstr ""
7348 7143
7349#: src/transport/gnunet-service-transport_ats.c:139 7144#: src/transport/gnunet-communicator-tcp.c:2329
7145#: src/transport/gnunet-communicator-udp.c:2883
7146#: src/transport/gnunet-service-tng.c:4679
7147#: src/transport/gnunet-service-transport.c:2782
7148#, fuzzy
7149msgid "Transport service is lacking key configuration settings. Exiting.\n"
7150msgstr ""
7151"El servicio de transporte carece de opciones de configuración de clave. "
7152"Saliendo.\n"
7153
7154#: src/transport/gnunet-communicator-tcp.c:2393
7155#, fuzzy
7156msgid "GNUnet TCP communicator"
7157msgstr "Configurador Gtk de GNUnet"
7158
7159#: src/transport/gnunet-communicator-udp.c:2954
7160#, fuzzy
7161msgid "GNUnet UDP communicator"
7162msgstr "Configurador Gtk de GNUnet"
7163
7164#: src/transport/gnunet-communicator-unix.c:802
7165#, fuzzy
7166msgid ""
7167"Maximum number of UNIX connections exceeded, dropping incoming message\n"
7168msgstr "El número máximo de conexiones es %u\n"
7169
7170#: src/transport/gnunet-communicator-unix.c:1073
7171#: src/transport/plugin_transport_unix.c:1403
7172#, fuzzy, c-format
7173msgid "Cannot create path to `%s'\n"
7174msgstr "Se produjo un fallo al crear la página para «%s»\n"
7175
7176#: src/transport/gnunet-communicator-unix.c:1162
7177msgid "GNUnet UNIX domain socket communicator"
7178msgstr ""
7179
7180#: src/transport/gnunet-service-transport_ats.c:141
7350msgid "# Addresses given to ATS" 7181msgid "# Addresses given to ATS"
7351msgstr "" 7182msgstr ""
7352 7183
7353#: src/transport/gnunet-service-transport.c:446 7184#: src/transport/gnunet-service-transport.c:448
7354msgid "# messages dropped due to slow client" 7185msgid "# messages dropped due to slow client"
7355msgstr "# mensajes omitidos debido a un cliente lento" 7186msgstr "# mensajes omitidos debido a un cliente lento"
7356 7187
7357#: src/transport/gnunet-service-transport.c:816 7188#: src/transport/gnunet-service-transport.c:817
7358msgid "# bytes payload dropped (other peer was not connected)" 7189msgid "# bytes payload dropped (other peer was not connected)"
7359msgstr "# bytes de «payload» omitidos (el otro par no estaba conectado)" 7190msgstr "# bytes de «payload» omitidos (el otro par no estaba conectado)"
7360 7191
7361#: src/transport/gnunet-service-transport.c:1549 7192#: src/transport/gnunet-service-transport.c:1550
7362#, fuzzy 7193#, fuzzy
7363msgid "# bytes payload discarded due to not connected peer" 7194msgid "# bytes payload discarded due to not connected peer"
7364msgstr "# bytes de «payload» descartados debido a par no conectado" 7195msgstr "# bytes de «payload» descartados debido a par no conectado"
7365 7196
7366#: src/transport/gnunet-service-transport.c:1709 7197#: src/transport/gnunet-service-transport.c:1710
7367msgid "# bytes total received" 7198msgid "# bytes total received"
7368msgstr "# total de bytes recibidos" 7199msgstr "# total de bytes recibidos"
7369 7200
7370#: src/transport/gnunet-service-transport.c:1806 7201#: src/transport/gnunet-service-transport.c:1807
7371msgid "# bytes payload received" 7202msgid "# bytes payload received"
7372msgstr "# bytes de «payload» recibidos" 7203msgstr "# bytes de «payload» recibidos"
7373 7204
7374#: src/transport/gnunet-service-transport.c:2123 7205#: src/transport/gnunet-service-transport.c:2124
7375#: src/transport/gnunet-service-transport.c:2595 7206#: src/transport/gnunet-service-transport.c:2596
7376msgid "# disconnects due to blacklist" 7207msgid "# disconnects due to blacklist"
7377msgstr "# desconexiones debido a la lista negra" 7208msgstr "# desconexiones debido a la lista negra"
7378 7209
7379#: src/transport/gnunet-service-transport.c:2599 7210#: src/transport/gnunet-service-transport.c:2600
7380#, fuzzy, c-format 7211#, fuzzy, c-format
7381msgid "Disallowing connection to peer `%s' on transport %s\n" 7212msgid "Disallowing connection to peer `%s' on transport %s\n"
7382msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" 7213msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n"
7383 7214
7384#: src/transport/gnunet-service-transport.c:2707 7215#: src/transport/gnunet-service-transport.c:2708
7385#, fuzzy, c-format 7216#, fuzzy, c-format
7386msgid "Adding blacklisting entry for peer `%s'\n" 7217msgid "Adding blacklisting entry for peer `%s'\n"
7387msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n" 7218msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n"
7388 7219
7389#: src/transport/gnunet-service-transport.c:2716 7220#: src/transport/gnunet-service-transport.c:2717
7390#, c-format 7221#, c-format
7391msgid "Adding blacklisting entry for peer `%s':`%s'\n" 7222msgid "Adding blacklisting entry for peer `%s':`%s'\n"
7392msgstr "" 7223msgstr ""
7393 7224
7394#: src/transport/gnunet-service-transport.c:2781 7225#: src/transport/gnunet-service-transport_hello.c:195
7395#, fuzzy
7396msgid "Transport service is lacking key configuration settings. Exiting.\n"
7397msgstr ""
7398"El servicio de transporte carece de opciones de configuración de clave. "
7399"Saliendo.\n"
7400
7401#: src/transport/gnunet-service-transport_hello.c:193
7402msgid "# refreshed my HELLO" 7226msgid "# refreshed my HELLO"
7403msgstr "# refrescos de mi «HELLO»" 7227msgstr "# refrescos de mi «HELLO»"
7404 7228
7405#: src/transport/gnunet-service-transport_neighbours.c:804 7229#: src/transport/gnunet-service-transport_neighbours.c:805
7406#, fuzzy 7230#, fuzzy
7407msgid "# session creation failed" 7231msgid "# session creation failed"
7408msgstr "# sesiones wlan creadas" 7232msgstr "# sesiones wlan creadas"
7409 7233
7410#: src/transport/gnunet-service-transport_neighbours.c:1051 7234#: src/transport/gnunet-service-transport_neighbours.c:1052
7411msgid "# DISCONNECT messages sent" 7235msgid "# DISCONNECT messages sent"
7412msgstr "# Mensajes «DISCONNECT» enviados" 7236msgstr "# Mensajes «DISCONNECT» enviados"
7413 7237
7414#: src/transport/gnunet-service-transport_neighbours.c:1174 7238#: src/transport/gnunet-service-transport_neighbours.c:1175
7415msgid "# disconnects due to quota of 0" 7239msgid "# disconnects due to quota of 0"
7416msgstr "# desconexiones debido a una cuota de 0" 7240msgstr "# desconexiones debido a una cuota de 0"
7417 7241
7418#: src/transport/gnunet-service-transport_neighbours.c:1322 7242#: src/transport/gnunet-service-transport_neighbours.c:1323
7419#: src/transport/gnunet-service-transport_neighbours.c:1783 7243#: src/transport/gnunet-service-transport_neighbours.c:1784
7420msgid "# bytes in message queue for other peers" 7244msgid "# bytes in message queue for other peers"
7421msgstr "# bytes en la cola de mensajes para otros pares" 7245msgstr "# bytes en la cola de mensajes para otros pares"
7422 7246
7423#: src/transport/gnunet-service-transport_neighbours.c:1327 7247#: src/transport/gnunet-service-transport_neighbours.c:1328
7424msgid "# messages transmitted to other peers" 7248msgid "# messages transmitted to other peers"
7425msgstr "# mensajes transmitidos a otros pares" 7249msgstr "# mensajes transmitidos a otros pares"
7426 7250
7427#: src/transport/gnunet-service-transport_neighbours.c:1333 7251#: src/transport/gnunet-service-transport_neighbours.c:1334
7428msgid "# transmission failures for messages to other peers" 7252msgid "# transmission failures for messages to other peers"
7429msgstr "# fallos de transmisión en mensajes a otros pares" 7253msgstr "# fallos de transmisión en mensajes a otros pares"
7430 7254
7431#: src/transport/gnunet-service-transport_neighbours.c:1393 7255#: src/transport/gnunet-service-transport_neighbours.c:1394
7432msgid "# messages timed out while in transport queue" 7256msgid "# messages timed out while in transport queue"
7433msgstr "# mensajes expirados mientras estaban en la cola de transporte" 7257msgstr "# mensajes expirados mientras estaban en la cola de transporte"
7434 7258
7435#: src/transport/gnunet-service-transport_neighbours.c:1477 7259#: src/transport/gnunet-service-transport_neighbours.c:1478
7436msgid "# KEEPALIVES sent" 7260msgid "# KEEPALIVES sent"
7437msgstr "" 7261msgstr ""
7438 7262
7439#: src/transport/gnunet-service-transport_neighbours.c:1513 7263#: src/transport/gnunet-service-transport_neighbours.c:1514
7440msgid "# KEEPALIVE messages discarded (peer unknown)" 7264msgid "# KEEPALIVE messages discarded (peer unknown)"
7441msgstr "# Mensajes «KEEPALIVE» descartados (par desconocido)" 7265msgstr "# Mensajes «KEEPALIVE» descartados (par desconocido)"
7442 7266
7443#: src/transport/gnunet-service-transport_neighbours.c:1521 7267#: src/transport/gnunet-service-transport_neighbours.c:1522
7444msgid "# KEEPALIVE messages discarded (no session)" 7268msgid "# KEEPALIVE messages discarded (no session)"
7445msgstr "# mensajes «KEEPALIVE» descartados (no hay sesión)" 7269msgstr "# mensajes «KEEPALIVE» descartados (no hay sesión)"
7446 7270
7447#: src/transport/gnunet-service-transport_neighbours.c:1531 7271#: src/transport/gnunet-service-transport_neighbours.c:1532
7448msgid "# KEEPALIVES received in good order" 7272msgid "# KEEPALIVES received in good order"
7449msgstr "" 7273msgstr ""
7450 7274
7451#: src/transport/gnunet-service-transport_neighbours.c:1576 7275#: src/transport/gnunet-service-transport_neighbours.c:1577
7452#, fuzzy 7276#, fuzzy
7453msgid "# KEEPALIVE_RESPONSEs discarded (not connected)" 7277msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
7454msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)" 7278msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
7455 7279
7456#: src/transport/gnunet-service-transport_neighbours.c:1585 7280#: src/transport/gnunet-service-transport_neighbours.c:1586
7457#, fuzzy 7281#, fuzzy
7458msgid "# KEEPALIVE_RESPONSEs discarded (not expected)" 7282msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
7459msgstr "# Mensajes «KEEPALIVE_RESPONSE» descartados (no esperado)" 7283msgstr "# Mensajes «KEEPALIVE_RESPONSE» descartados (no esperado)"
7460 7284
7461#: src/transport/gnunet-service-transport_neighbours.c:1593 7285#: src/transport/gnunet-service-transport_neighbours.c:1594
7462#, fuzzy 7286#, fuzzy
7463msgid "# KEEPALIVE_RESPONSEs discarded (address changed)" 7287msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
7464msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)" 7288msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
7465 7289
7466#: src/transport/gnunet-service-transport_neighbours.c:1602 7290#: src/transport/gnunet-service-transport_neighbours.c:1603
7467#, fuzzy 7291#, fuzzy
7468msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)" 7292msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
7469msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)" 7293msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
7470 7294
7471#: src/transport/gnunet-service-transport_neighbours.c:1607 7295#: src/transport/gnunet-service-transport_neighbours.c:1608
7472#, fuzzy 7296#, fuzzy
7473msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)" 7297msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
7474msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)" 7298msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
7475 7299
7476#: src/transport/gnunet-service-transport_neighbours.c:1613 7300#: src/transport/gnunet-service-transport_neighbours.c:1614
7477#, fuzzy 7301#, fuzzy
7478msgid "# KEEPALIVE_RESPONSEs received (OK)" 7302msgid "# KEEPALIVE_RESPONSEs received (OK)"
7479msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)" 7303msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
7480 7304
7481#: src/transport/gnunet-service-transport_neighbours.c:1680 7305#: src/transport/gnunet-service-transport_neighbours.c:1681
7482msgid "# messages discarded due to lack of neighbour record" 7306msgid "# messages discarded due to lack of neighbour record"
7483msgstr "# mensajes descartados debido a la falta de registro vecinal" 7307msgstr "# mensajes descartados debido a la falta de registro vecinal"
7484 7308
7485#: src/transport/gnunet-service-transport_neighbours.c:1714 7309#: src/transport/gnunet-service-transport_neighbours.c:1715
7486msgid "# bandwidth quota violations by other peers" 7310msgid "# bandwidth quota violations by other peers"
7487msgstr "# violaciones de la cuota de ancho de banda por otros pares" 7311msgstr "# violaciones de la cuota de ancho de banda por otros pares"
7488 7312
7489# throttling? 7313# throttling?
7490#: src/transport/gnunet-service-transport_neighbours.c:1729 7314#: src/transport/gnunet-service-transport_neighbours.c:1730
7491msgid "# ms throttling suggested" 7315msgid "# ms throttling suggested"
7492msgstr "# ms de impulso sugeridos" 7316msgstr "# ms de impulso sugeridos"
7493 7317
7494#: src/transport/gnunet-service-transport_neighbours.c:1852 7318#: src/transport/gnunet-service-transport_neighbours.c:1853
7495#, fuzzy, c-format 7319#, fuzzy, c-format
7496msgid "Failed to send SYN message to peer `%s'\n" 7320msgid "Failed to send SYN message to peer `%s'\n"
7497msgstr "" 7321msgstr ""
7498"Se produjo un fallo al procesar el mensaje interno del programa auxiliar " 7322"Se produjo un fallo al procesar el mensaje interno del programa auxiliar "
7499"«%s»\n" 7323"«%s»\n"
7500 7324
7501#: src/transport/gnunet-service-transport_neighbours.c:1872 7325#: src/transport/gnunet-service-transport_neighbours.c:1873
7502#, fuzzy 7326#, fuzzy
7503msgid "# Failed attempts to switch addresses (failed to send SYN CONT)" 7327msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
7504msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" 7328msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n"
7505 7329
7506#: src/transport/gnunet-service-transport_neighbours.c:1911 7330#: src/transport/gnunet-service-transport_neighbours.c:1912
7507#, fuzzy 7331#, fuzzy
7508msgid "# SYN messages sent" 7332msgid "# SYN messages sent"
7509msgstr "# Mensajes «DISCONNECT» enviados" 7333msgstr "# Mensajes «DISCONNECT» enviados"
7510 7334
7511#: src/transport/gnunet-service-transport_neighbours.c:1928 7335#: src/transport/gnunet-service-transport_neighbours.c:1929
7512#, fuzzy, c-format 7336#, fuzzy, c-format
7513msgid "Failed to transmit SYN message to %s\n" 7337msgid "Failed to transmit SYN message to %s\n"
7514msgstr "Se produjo un fallo al transmitir un mensaje al servicio «%s».\n" 7338msgstr "Se produjo un fallo al transmitir un mensaje al servicio «%s».\n"
7515 7339
7516#: src/transport/gnunet-service-transport_neighbours.c:1958 7340#: src/transport/gnunet-service-transport_neighbours.c:1959
7517#, fuzzy 7341#, fuzzy
7518msgid "# Failed attempts to switch addresses (failed to send SYN)" 7342msgid "# Failed attempts to switch addresses (failed to send SYN)"
7519msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" 7343msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n"
7520 7344
7521#: src/transport/gnunet-service-transport_neighbours.c:2026 7345#: src/transport/gnunet-service-transport_neighbours.c:2027
7522#, fuzzy, c-format 7346#, fuzzy, c-format
7523msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n" 7347msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
7524msgstr "¡Se produjo un fallo al conectar al servicio de estadísticas!\n" 7348msgstr "¡Se produjo un fallo al conectar al servicio de estadísticas!\n"
7525 7349
7526#: src/transport/gnunet-service-transport_neighbours.c:2080 7350#: src/transport/gnunet-service-transport_neighbours.c:2081
7527#, fuzzy 7351#, fuzzy
7528msgid "# SYN_ACK messages sent" 7352msgid "# SYN_ACK messages sent"
7529msgstr "# Mensajes «DISCONNECT» enviados" 7353msgstr "# Mensajes «DISCONNECT» enviados"
7530 7354
7531#: src/transport/gnunet-service-transport_neighbours.c:2097 7355#: src/transport/gnunet-service-transport_neighbours.c:2098
7532#, fuzzy, c-format 7356#, fuzzy, c-format
7533msgid "Failed to transmit SYN_ACK message to %s\n" 7357msgid "Failed to transmit SYN_ACK message to %s\n"
7534msgstr "Se produjo un fallo al transmitir un mensaje al servicio «%s».\n" 7358msgstr "Se produjo un fallo al transmitir un mensaje al servicio «%s».\n"
7535 7359
7536#: src/transport/gnunet-service-transport_neighbours.c:2260 7360#: src/transport/gnunet-service-transport_neighbours.c:2261
7537#, fuzzy 7361#, fuzzy
7538msgid "# SYN messages received" 7362msgid "# SYN messages received"
7539msgstr "# mensajes PING recibidos" 7363msgstr "# mensajes PING recibidos"
7540 7364
7541#: src/transport/gnunet-service-transport_neighbours.c:2265 7365#: src/transport/gnunet-service-transport_neighbours.c:2266
7542#, c-format 7366#, c-format
7543msgid "SYN request from peer `%s' ignored due impending shutdown\n" 7367msgid "SYN request from peer `%s' ignored due impending shutdown\n"
7544msgstr "" 7368msgstr ""
7545 7369
7546#: src/transport/gnunet-service-transport_neighbours.c:2652 7370#: src/transport/gnunet-service-transport_neighbours.c:2653
7547msgid "# Attempts to switch addresses" 7371msgid "# Attempts to switch addresses"
7548msgstr "" 7372msgstr ""
7549 7373
7550#: src/transport/gnunet-service-transport_neighbours.c:3137 7374#: src/transport/gnunet-service-transport_neighbours.c:3138
7551#, fuzzy 7375#, fuzzy
7552msgid "# SYN_ACK messages received" 7376msgid "# SYN_ACK messages received"
7553msgstr "# mensajes SET QUOTA recibidos" 7377msgstr "# mensajes SET QUOTA recibidos"
7554 7378
7555#: src/transport/gnunet-service-transport_neighbours.c:3145 7379#: src/transport/gnunet-service-transport_neighbours.c:3146
7556#, fuzzy 7380#, fuzzy
7557msgid "# unexpected SYN_ACK messages (no peer)" 7381msgid "# unexpected SYN_ACK messages (no peer)"
7558msgstr "# Mensajes «CONNECT_ACK» inesperados (sin par)" 7382msgstr "# Mensajes «CONNECT_ACK» inesperados (sin par)"
7559 7383
7560#: src/transport/gnunet-service-transport_neighbours.c:3163 7384#: src/transport/gnunet-service-transport_neighbours.c:3164
7561#: src/transport/gnunet-service-transport_neighbours.c:3187 7385#: src/transport/gnunet-service-transport_neighbours.c:3188
7562#, fuzzy 7386#, fuzzy
7563msgid "# unexpected SYN_ACK messages (not ready)" 7387msgid "# unexpected SYN_ACK messages (not ready)"
7564msgstr "# Mensajes «CONNECT_ACK» inesperados (no estaba preparado)" 7388msgstr "# Mensajes «CONNECT_ACK» inesperados (no estaba preparado)"
7565 7389
7566#: src/transport/gnunet-service-transport_neighbours.c:3199 7390#: src/transport/gnunet-service-transport_neighbours.c:3200
7567#, fuzzy 7391#, fuzzy
7568msgid "# unexpected SYN_ACK messages (waiting on ATS)" 7392msgid "# unexpected SYN_ACK messages (waiting on ATS)"
7569msgstr "# Mensajes «CONNECT_ACK» inesperados (esperando en el ATS)" 7393msgstr "# Mensajes «CONNECT_ACK» inesperados (esperando en el ATS)"
7570 7394
7571#: src/transport/gnunet-service-transport_neighbours.c:3224 7395#: src/transport/gnunet-service-transport_neighbours.c:3225
7572msgid "# Successful attempts to switch addresses" 7396msgid "# Successful attempts to switch addresses"
7573msgstr "" 7397msgstr ""
7574 7398
7575#: src/transport/gnunet-service-transport_neighbours.c:3237 7399#: src/transport/gnunet-service-transport_neighbours.c:3238
7576#, fuzzy 7400#, fuzzy
7577msgid "# unexpected SYN_ACK messages (disconnecting)" 7401msgid "# unexpected SYN_ACK messages (disconnecting)"
7578msgstr "# Mensajes «CONNECT_ACK» inesperados (desconectando)" 7402msgstr "# Mensajes «CONNECT_ACK» inesperados (desconectando)"
7579 7403
7580#: src/transport/gnunet-service-transport_neighbours.c:3410 7404#: src/transport/gnunet-service-transport_neighbours.c:3411
7581#, fuzzy 7405#, fuzzy
7582msgid "# ACK messages received" 7406msgid "# ACK messages received"
7583msgstr "# mensajes «REQUEST CONNECT» recibidos" 7407msgstr "# mensajes «REQUEST CONNECT» recibidos"
7584 7408
7585#: src/transport/gnunet-service-transport_neighbours.c:3446 7409#: src/transport/gnunet-service-transport_neighbours.c:3447
7586#, fuzzy 7410#, fuzzy
7587msgid "# unexpected ACK messages" 7411msgid "# unexpected ACK messages"
7588msgstr "# Mensajes «SESSION ACK» inesperados" 7412msgstr "# Mensajes «SESSION ACK» inesperados"
7589 7413
7590#: src/transport/gnunet-service-transport_neighbours.c:3534 7414#: src/transport/gnunet-service-transport_neighbours.c:3535
7591#, fuzzy 7415#, fuzzy
7592msgid "# quota messages ignored (malformed)" 7416msgid "# quota messages ignored (malformed)"
7593msgstr "# mensajes de desconexión ignorados (formato antiguo)" 7417msgstr "# mensajes de desconexión ignorados (formato antiguo)"
7594 7418
7595#: src/transport/gnunet-service-transport_neighbours.c:3541 7419#: src/transport/gnunet-service-transport_neighbours.c:3542
7596#, fuzzy 7420#, fuzzy
7597msgid "# QUOTA messages received" 7421msgid "# QUOTA messages received"
7598msgstr "# Mensajes «GAP PUT» recibidos" 7422msgstr "# Mensajes «GAP PUT» recibidos"
7599 7423
7600#: src/transport/gnunet-service-transport_neighbours.c:3581 7424#: src/transport/gnunet-service-transport_neighbours.c:3582
7601#, fuzzy 7425#, fuzzy
7602msgid "# disconnect messages ignored (malformed)" 7426msgid "# disconnect messages ignored (malformed)"
7603msgstr "# mensajes de desconexión ignorados (formato antiguo)" 7427msgstr "# mensajes de desconexión ignorados (formato antiguo)"
7604 7428
7605#: src/transport/gnunet-service-transport_neighbours.c:3588 7429#: src/transport/gnunet-service-transport_neighbours.c:3589
7606#, fuzzy 7430#, fuzzy
7607msgid "# DISCONNECT messages received" 7431msgid "# DISCONNECT messages received"
7608msgstr "# mensajes «REQUEST CONNECT» recibidos" 7432msgstr "# mensajes «REQUEST CONNECT» recibidos"
7609 7433
7610#: src/transport/gnunet-service-transport_neighbours.c:3599 7434#: src/transport/gnunet-service-transport_neighbours.c:3600
7611msgid "# disconnect messages ignored (timestamp)" 7435msgid "# disconnect messages ignored (timestamp)"
7612msgstr "# mensajes de desconexión ignorados (marca temporal)" 7436msgstr "# mensajes de desconexión ignorados (marca temporal)"
7613 7437
7614#: src/transport/gnunet-service-transport_neighbours.c:3734 7438#: src/transport/gnunet-service-transport_neighbours.c:3735
7615msgid "# disconnected from peer upon explicit request" 7439msgid "# disconnected from peer upon explicit request"
7616msgstr "# desconexiones del par debido a una petición explícita" 7440msgstr "# desconexiones del par debido a una petición explícita"
7617 7441
7618#: src/transport/gnunet-service-transport_plugins.c:156 7442#: src/transport/gnunet-service-transport_plugins.c:158
7619msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n" 7443msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n"
7620msgstr "El servicio de transporte carece de la opción «NEIGHBOUR_LIMIT».\n" 7444msgstr "El servicio de transporte carece de la opción «NEIGHBOUR_LIMIT».\n"
7621 7445
7622#: src/transport/gnunet-service-transport_plugins.c:221 7446#: src/transport/gnunet-service-transport_plugins.c:223
7623#: src/transport/gnunet-service-transport_plugins.c:229 7447#: src/transport/gnunet-service-transport_plugins.c:231
7624#: src/transport/gnunet-service-transport_plugins.c:237 7448#: src/transport/gnunet-service-transport_plugins.c:239
7625#: src/transport/gnunet-service-transport_plugins.c:245 7449#: src/transport/gnunet-service-transport_plugins.c:247
7626#: src/transport/gnunet-service-transport_plugins.c:253 7450#: src/transport/gnunet-service-transport_plugins.c:255
7627#: src/transport/gnunet-service-transport_plugins.c:261 7451#: src/transport/gnunet-service-transport_plugins.c:263
7628#: src/transport/gnunet-service-transport_plugins.c:269 7452#: src/transport/gnunet-service-transport_plugins.c:271
7629#: src/transport/gnunet-service-transport_plugins.c:277 7453#: src/transport/gnunet-service-transport_plugins.c:279
7630#: src/transport/gnunet-service-transport_plugins.c:285 7454#: src/transport/gnunet-service-transport_plugins.c:287
7631#: src/transport/gnunet-service-transport_plugins.c:293 7455#: src/transport/gnunet-service-transport_plugins.c:295
7632#: src/transport/gnunet-service-transport_plugins.c:301 7456#: src/transport/gnunet-service-transport_plugins.c:303
7633#, fuzzy, c-format 7457#, fuzzy, c-format
7634msgid "Missing function `%s' in transport plugin for `%s'\n" 7458msgid "Missing function `%s' in transport plugin for `%s'\n"
7635msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" 7459msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n"
7636 7460
7637#: src/transport/gnunet-service-transport_plugins.c:308 7461#: src/transport/gnunet-service-transport_plugins.c:310
7638#, fuzzy, c-format 7462#, fuzzy, c-format
7639msgid "Did not load plugin `%s' due to missing functions\n" 7463msgid "Did not load plugin `%s' due to missing functions\n"
7640msgstr "Falló al cargar el plugin '%s' en %s:%d. Descargando plugin.\n" 7464msgstr "Falló al cargar el plugin '%s' en %s:%d. Descargando plugin.\n"
7641 7465
7642#: src/transport/gnunet-service-transport_validation.c:386 7466#: src/transport/gnunet-service-transport_validation.c:388
7643#, fuzzy 7467#, fuzzy
7644msgid "# Addresses in validation map" 7468msgid "# Addresses in validation map"
7645msgstr "# revalidaciones de direcciones iniciadas" 7469msgstr "# revalidaciones de direcciones iniciadas"
7646 7470
7647#: src/transport/gnunet-service-transport_validation.c:489 7471#: src/transport/gnunet-service-transport_validation.c:491
7648#: src/transport/gnunet-service-transport_validation.c:675 7472#: src/transport/gnunet-service-transport_validation.c:677
7649#: src/transport/gnunet-service-transport_validation.c:995 7473#: src/transport/gnunet-service-transport_validation.c:997
7650#: src/transport/gnunet-service-transport_validation.c:1607 7474#: src/transport/gnunet-service-transport_validation.c:1609
7651#, fuzzy 7475#, fuzzy
7652msgid "# validations running" 7476msgid "# validations running"
7653msgstr "Base de datos sqlite ejecutándose\n" 7477msgstr "Base de datos sqlite ejecutándose\n"
7654 7478
7655#: src/transport/gnunet-service-transport_validation.c:530 7479#: src/transport/gnunet-service-transport_validation.c:532
7656#, fuzzy 7480#, fuzzy
7657msgid "# address records discarded (timeout)" 7481msgid "# address records discarded (timeout)"
7658msgstr "# registros de direcciones descartados" 7482msgstr "# registros de direcciones descartados"
7659 7483
7660#: src/transport/gnunet-service-transport_validation.c:578 7484#: src/transport/gnunet-service-transport_validation.c:580
7661#, fuzzy 7485#, fuzzy
7662msgid "# address records discarded (blacklist)" 7486msgid "# address records discarded (blacklist)"
7663msgstr "# registros de direcciones descartados" 7487msgstr "# registros de direcciones descartados"
7664 7488
7665#: src/transport/gnunet-service-transport_validation.c:666 7489#: src/transport/gnunet-service-transport_validation.c:668
7666#, fuzzy 7490#, fuzzy
7667msgid "# PINGs for address validation sent" 7491msgid "# PINGs for address validation sent"
7668msgstr "# revalidaciones de direcciones iniciadas" 7492msgstr "# revalidaciones de direcciones iniciadas"
7669 7493
7670#: src/transport/gnunet-service-transport_validation.c:746 7494#: src/transport/gnunet-service-transport_validation.c:748
7671msgid "# validations delayed by global throttle" 7495msgid "# validations delayed by global throttle"
7672msgstr "" 7496msgstr ""
7673 7497
7674#: src/transport/gnunet-service-transport_validation.c:783 7498#: src/transport/gnunet-service-transport_validation.c:785
7675msgid "# address revalidations started" 7499msgid "# address revalidations started"
7676msgstr "# revalidaciones de direcciones iniciadas" 7500msgstr "# revalidaciones de direcciones iniciadas"
7677 7501
7678#: src/transport/gnunet-service-transport_validation.c:1121 7502#: src/transport/gnunet-service-transport_validation.c:1123
7679msgid "# PING message for different peer received" 7503msgid "# PING message for different peer received"
7680msgstr "# Mensajes PING recibidos para un par diferente" 7504msgstr "# Mensajes PING recibidos para un par diferente"
7681 7505
7682#: src/transport/gnunet-service-transport_validation.c:1172 7506#: src/transport/gnunet-service-transport_validation.c:1174
7683#, fuzzy, c-format 7507#, fuzzy, c-format
7684msgid "Plugin `%s' not available, cannot confirm having this address\n" 7508msgid "Plugin `%s' not available, cannot confirm having this address\n"
7685msgstr "" 7509msgstr ""
7686"No confirmando el PING con dirección «%s» ya que no puedo confirmar tener " 7510"No confirmando el PING con dirección «%s» ya que no puedo confirmar tener "
7687"esa dirección.\n" 7511"esa dirección.\n"
7688 7512
7689#: src/transport/gnunet-service-transport_validation.c:1185 7513#: src/transport/gnunet-service-transport_validation.c:1187
7690msgid "# failed address checks during validation" 7514msgid "# failed address checks during validation"
7691msgstr "" 7515msgstr ""
7692 7516
7693#: src/transport/gnunet-service-transport_validation.c:1188 7517#: src/transport/gnunet-service-transport_validation.c:1190
7694#, c-format 7518#, c-format
7695msgid "Address `%s' is not one of my addresses, not confirming PING\n" 7519msgid "Address `%s' is not one of my addresses, not confirming PING\n"
7696msgstr "" 7520msgstr ""
7697 7521
7698#: src/transport/gnunet-service-transport_validation.c:1196 7522#: src/transport/gnunet-service-transport_validation.c:1198
7699msgid "# successful address checks during validation" 7523msgid "# successful address checks during validation"
7700msgstr "" 7524msgstr ""
7701 7525
7702#: src/transport/gnunet-service-transport_validation.c:1209 7526#: src/transport/gnunet-service-transport_validation.c:1211
7703#, fuzzy, c-format 7527#, fuzzy, c-format
7704msgid "" 7528msgid ""
7705"Not confirming PING from peer `%s' with address `%s' since I cannot confirm " 7529"Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
@@ -7708,69 +7532,70 @@ msgstr ""
7708"No confirmando el PING con dirección «%s» ya que no puedo confirmar tener " 7532"No confirmando el PING con dirección «%s» ya que no puedo confirmar tener "
7709"esa dirección.\n" 7533"esa dirección.\n"
7710 7534
7711#: src/transport/gnunet-service-transport_validation.c:1264 7535#: src/transport/gnunet-service-transport_validation.c:1266
7712#, fuzzy, c-format 7536#, fuzzy, c-format
7713msgid "Failed to create PONG signature for peer `%s'\n" 7537msgid "Failed to create PONG signature for peer `%s'\n"
7714msgstr "Se produjo un fallo al crear la página para «%s»\n" 7538msgstr "Se produjo un fallo al crear la página para «%s»\n"
7715 7539
7716#: src/transport/gnunet-service-transport_validation.c:1315 7540#: src/transport/gnunet-service-transport_validation.c:1317
7717msgid "# PONGs unicast via reliable transport" 7541msgid "# PONGs unicast via reliable transport"
7718msgstr "# unicast de PONG vía transporte confiable" 7542msgstr "# unicast de PONG vía transporte confiable"
7719 7543
7720#: src/transport/gnunet-service-transport_validation.c:1324 7544#: src/transport/gnunet-service-transport_validation.c:1326
7721msgid "# PONGs multicast to all available addresses" 7545msgid "# PONGs multicast to all available addresses"
7722msgstr "# multicast de PONG a todas las direcciones disponibles" 7546msgstr "# multicast de PONG a todas las direcciones disponibles"
7723 7547
7724#: src/transport/gnunet-service-transport_validation.c:1497 7548#: src/transport/gnunet-service-transport_validation.c:1499
7725msgid "# PONGs dropped, no matching pending validation" 7549msgid "# PONGs dropped, no matching pending validation"
7726msgstr "# PONG omitidos, no hay una validación pendiente coincidente" 7550msgstr "# PONG omitidos, no hay una validación pendiente coincidente"
7727 7551
7728#: src/transport/gnunet-service-transport_validation.c:1515 7552#: src/transport/gnunet-service-transport_validation.c:1517
7729msgid "# PONGs dropped, signature expired" 7553msgid "# PONGs dropped, signature expired"
7730msgstr "# Mensajes PONG omitidos, firma expirada" 7554msgstr "# Mensajes PONG omitidos, firma expirada"
7731 7555
7732#: src/transport/gnunet-service-transport_validation.c:1570 7556#: src/transport/gnunet-service-transport_validation.c:1572
7733#, fuzzy 7557#, fuzzy
7734msgid "# validations succeeded" 7558msgid "# validations succeeded"
7735msgstr "# revalidaciones de direcciones iniciadas" 7559msgstr "# revalidaciones de direcciones iniciadas"
7736 7560
7737#: src/transport/gnunet-service-transport_validation.c:1625 7561#: src/transport/gnunet-service-transport_validation.c:1627
7738#, fuzzy 7562#, fuzzy
7739msgid "# HELLOs given to peerinfo" 7563msgid "# HELLOs given to peerinfo"
7740msgstr "# «HELLO» obtenidos de «peerinfo»" 7564msgstr "# «HELLO» obtenidos de «peerinfo»"
7741 7565
7742#: src/transport/gnunet-transport.c:411 7566#: src/transport/gnunet-transport.c:413
7743#, c-format 7567#, c-format
7744msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" 7568msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
7745msgstr "Transmitidos %llu bytes/s (%llu bytes en %s)\n" 7569msgstr "Transmitidos %llu bytes/s (%llu bytes en %s)\n"
7746 7570
7747#: src/transport/gnunet-transport.c:421 7571#: src/transport/gnunet-transport.c:423
7748#, c-format 7572#, c-format
7749msgid "Received %llu bytes/s (%llu bytes in %s)\n" 7573msgid "Received %llu bytes/s (%llu bytes in %s)\n"
7750msgstr "Recibidos %llu bytes/s (%llu bytes en %s)\n" 7574msgstr "Recibidos %llu bytes/s (%llu bytes en %s)\n"
7751 7575
7752#: src/transport/gnunet-transport.c:465 7576#: src/transport/gnunet-transport.c:467
7753#, c-format 7577#, c-format
7754msgid "Failed to connect to `%s'\n" 7578msgid "Failed to connect to `%s'\n"
7755msgstr "Se produjo un fallo al conectar con «%s»\n" 7579msgstr "Se produjo un fallo al conectar con «%s»\n"
7756 7580
7757#: src/transport/gnunet-transport.c:478 7581#: src/transport/gnunet-transport.c:480
7758#, c-format 7582#, c-format
7759msgid "Failed to resolve address for peer `%s'\n" 7583msgid "Failed to resolve address for peer `%s'\n"
7760msgstr "Se produjo un fallo al resolver la dirección para el par «%s»\n" 7584msgstr "Se produjo un fallo al resolver la dirección para el par «%s»\n"
7761 7585
7762# Miguel: La traducción no es literal, pero me parece más correcta 7586# Miguel: La traducción no es literal, pero me parece más correcta
7763# en castellano. 7587# en castellano.
7764#: src/transport/gnunet-transport.c:492 7588#: src/transport/gnunet-transport.c:494
7765msgid "Failed to list connections, timeout occured\n" 7589#, fuzzy
7590msgid "Failed to list connections, timeout occurred\n"
7766msgstr "No se pudieron listar las conexiones, expiró el plazo\n" 7591msgstr "No se pudieron listar las conexiones, expiró el plazo\n"
7767 7592
7768#: src/transport/gnunet-transport.c:525 7593#: src/transport/gnunet-transport.c:527
7769#, fuzzy, c-format 7594#, fuzzy, c-format
7770msgid "Transmitting %u bytes\n" 7595msgid "Transmitting %u bytes\n"
7771msgstr "Transmitiendo %u bytes a %s\n" 7596msgstr "Transmitiendo %u bytes a %s\n"
7772 7597
7773#: src/transport/gnunet-transport.c:559 7598#: src/transport/gnunet-transport.c:561
7774#, c-format 7599#, c-format
7775msgid "" 7600msgid ""
7776"Successfully connected to `%s', starting to send benchmark data in %u Kb " 7601"Successfully connected to `%s', starting to send benchmark data in %u Kb "
@@ -7779,46 +7604,46 @@ msgstr ""
7779"Conectado satisfactoriamente a «%s», empezando a mandar datos de prueba en " 7604"Conectado satisfactoriamente a «%s», empezando a mandar datos de prueba en "
7780"bloques de %u Kb\n" 7605"bloques de %u Kb\n"
7781 7606
7782#: src/transport/gnunet-transport.c:590 7607#: src/transport/gnunet-transport.c:592
7783#, c-format 7608#, c-format
7784msgid "Disconnected from peer `%s' while benchmarking\n" 7609msgid "Disconnected from peer `%s' while benchmarking\n"
7785msgstr "Desconectado del par «%s» mientras probaba\n" 7610msgstr "Desconectado del par «%s» mientras probaba\n"
7786 7611
7787#: src/transport/gnunet-transport.c:614 src/transport/gnunet-transport.c:643 7612#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
7788#, c-format 7613#, c-format
7789msgid "%24s: %-17s %4s (%u connections in total)\n" 7614msgid "%24s: %-17s %4s (%u connections in total)\n"
7790msgstr "%24s: %-17s %4s (%u conexiones en total)\n" 7615msgstr "%24s: %-17s %4s (%u conexiones en total)\n"
7791 7616
7792#: src/transport/gnunet-transport.c:616 7617#: src/transport/gnunet-transport.c:618
7793msgid "Connected to" 7618msgid "Connected to"
7794msgstr "Conectado a" 7619msgstr "Conectado a"
7795 7620
7796#: src/transport/gnunet-transport.c:645 7621#: src/transport/gnunet-transport.c:647
7797msgid "Disconnected from" 7622msgid "Disconnected from"
7798msgstr "Desconectado de" 7623msgstr "Desconectado de"
7799 7624
7800#: src/transport/gnunet-transport.c:680 7625#: src/transport/gnunet-transport.c:682
7801#, fuzzy, c-format 7626#, fuzzy, c-format
7802msgid "Received %u bytes\n" 7627msgid "Received %u bytes\n"
7803msgstr "Recibidos %u bytes de %s\n" 7628msgstr "Recibidos %u bytes de %s\n"
7804 7629
7805#: src/transport/gnunet-transport.c:717 7630#: src/transport/gnunet-transport.c:719
7806#, c-format 7631#, c-format
7807msgid "Peer `%s': %s %s in state `%s' until %s\n" 7632msgid "Peer `%s': %s %s in state `%s' until %s\n"
7808msgstr "" 7633msgstr ""
7809 7634
7810#: src/transport/gnunet-transport.c:729 7635#: src/transport/gnunet-transport.c:731
7811#, c-format 7636#, c-format
7812msgid "Peer `%s': %s %s\n" 7637msgid "Peer `%s': %s %s\n"
7813msgstr "Par «%s»: %s %s\n" 7638msgstr "Par «%s»: %s %s\n"
7814 7639
7815#: src/transport/gnunet-transport.c:1142 7640#: src/transport/gnunet-transport.c:1144
7816#, fuzzy 7641#, fuzzy
7817msgid "Monitor disconnected from transport service. Reconnecting.\n" 7642msgid "Monitor disconnected from transport service. Reconnecting.\n"
7818msgstr "" 7643msgstr ""
7819"El cliente se desconectó del servicio principal, tratando de reconectar.\n" 7644"El cliente se desconectó del servicio principal, tratando de reconectar.\n"
7820 7645
7821#: src/transport/gnunet-transport.c:1249 7646#: src/transport/gnunet-transport.c:1251
7822#, fuzzy, c-format 7647#, fuzzy, c-format
7823msgid "" 7648msgid ""
7824"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, " 7649"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
@@ -7827,7 +7652,7 @@ msgstr ""
7827"Múltiples operaciones introducidas. Por favor, seleccione únicamente una " 7652"Múltiples operaciones introducidas. Por favor, seleccione únicamente una "
7828"operación: %s, %s, %s, %s, %s, %s\n" 7653"operación: %s, %s, %s, %s, %s, %s\n"
7829 7654
7830#: src/transport/gnunet-transport.c:1262 7655#: src/transport/gnunet-transport.c:1264
7831#, fuzzy, c-format 7656#, fuzzy, c-format
7832msgid "" 7657msgid ""
7833"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n" 7658"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
@@ -7835,136 +7660,136 @@ msgstr ""
7835"Ninguna operación introducida. Por favor, seleccione alguna operación: %s, " 7660"Ninguna operación introducida. Por favor, seleccione alguna operación: %s, "
7836"%s, %s, %s, %s, %s\n" 7661"%s, %s, %s, %s, %s\n"
7837 7662
7838#: src/transport/gnunet-transport.c:1292 7663#: src/transport/gnunet-transport.c:1294
7839#, fuzzy 7664#, fuzzy
7840msgid "Failed to connect to transport service for disconnection\n" 7665msgid "Failed to connect to transport service for disconnection\n"
7841msgstr "Se produjo un fallo al conectar con el servicio de transporte\n" 7666msgstr "Se produjo un fallo al conectar con el servicio de transporte\n"
7842 7667
7843#: src/transport/gnunet-transport.c:1298 7668#: src/transport/gnunet-transport.c:1300
7844msgid "Blacklisting request in place, stop with CTRL-C\n" 7669msgid "Blacklisting request in place, stop with CTRL-C\n"
7845msgstr "" 7670msgstr ""
7846 7671
7847#: src/transport/gnunet-transport.c:1323 src/transport/gnunet-transport.c:1353 7672#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
7848#: src/transport/gnunet-transport.c:1406 7673#: src/transport/gnunet-transport.c:1408
7849msgid "Failed to connect to transport service\n" 7674msgid "Failed to connect to transport service\n"
7850msgstr "Se produjo un fallo al conectar con el servicio de transporte\n" 7675msgstr "Se produjo un fallo al conectar con el servicio de transporte\n"
7851 7676
7852#: src/transport/gnunet-transport.c:1360 7677#: src/transport/gnunet-transport.c:1362
7853msgid "Starting to receive benchmark data\n" 7678msgid "Starting to receive benchmark data\n"
7854msgstr "Empezando a recibir datos de prueba\n" 7679msgstr "Empezando a recibir datos de prueba\n"
7855 7680
7856#: src/transport/gnunet-transport.c:1431 7681#: src/transport/gnunet-transport.c:1433
7857#, fuzzy 7682#, fuzzy
7858msgid "print information for all peers (instead of only connected peers)" 7683msgid "print information for all peers (instead of only connected peers)"
7859msgstr "Imprime información sobre los pares conectados." 7684msgstr "Imprime información sobre los pares conectados."
7860 7685
7861#: src/transport/gnunet-transport.c:1435 7686#: src/transport/gnunet-transport.c:1437
7862msgid "measure how fast we are receiving data from all peers (until CTRL-C)" 7687msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
7863msgstr "medir cómo de rápido recibimos datos de todos los pares (hasta CTRL-C)" 7688msgstr "medir cómo de rápido recibimos datos de todos los pares (hasta CTRL-C)"
7864 7689
7865#: src/transport/gnunet-transport.c:1439 7690#: src/transport/gnunet-transport.c:1441
7866#, fuzzy 7691#, fuzzy
7867msgid "disconnect from a peer" 7692msgid "disconnect from a peer"
7868msgstr "conectar a un par" 7693msgstr "conectar a un par"
7869 7694
7870#: src/transport/gnunet-transport.c:1443 7695#: src/transport/gnunet-transport.c:1445
7871msgid "provide information about all current connections (once)" 7696msgid "provide information about all current connections (once)"
7872msgstr "provee información sobre todas las conexiones actuales (una vez)" 7697msgstr "provee información sobre todas las conexiones actuales (una vez)"
7873 7698
7874#: src/transport/gnunet-transport.c:1451 7699#: src/transport/gnunet-transport.c:1453
7875msgid "" 7700msgid ""
7876"provide information about all connects and disconnect events (continuously)" 7701"provide information about all connects and disconnect events (continuously)"
7877msgstr "" 7702msgstr ""
7878"provee información sobre todas los eventos de conexión y desconexión " 7703"provee información sobre todas los eventos de conexión y desconexión "
7879"(continuamente)" 7704"(continuamente)"
7880 7705
7881#: src/transport/gnunet-transport.c:1455 7706#: src/transport/gnunet-transport.c:1457
7882msgid "do not resolve hostnames" 7707msgid "do not resolve hostnames"
7883msgstr "no resolver nombres de máquinas" 7708msgstr "no resolver nombres de máquinas"
7884 7709
7885#: src/transport/gnunet-transport.c:1460 7710#: src/transport/gnunet-transport.c:1462
7886#: src/transport/gnunet-transport-profiler.c:639 7711#: src/transport/gnunet-transport-profiler.c:641
7887msgid "peer identity" 7712msgid "peer identity"
7888msgstr "identidad del par" 7713msgstr "identidad del par"
7889 7714
7890#: src/transport/gnunet-transport.c:1464 7715#: src/transport/gnunet-transport.c:1466
7891#, fuzzy 7716#, fuzzy
7892msgid "monitor plugin sessions" 7717msgid "monitor plugin sessions"
7893msgstr "# sesiones wlan pendientes" 7718msgstr "# sesiones wlan pendientes"
7894 7719
7895#: src/transport/gnunet-transport.c:1469 7720#: src/transport/gnunet-transport.c:1471
7896msgid "send data for benchmarking to the other peer (until CTRL-C)" 7721msgid "send data for benchmarking to the other peer (until CTRL-C)"
7897msgstr "enviar data para prueba a otro par (hasta CTRL-C)" 7722msgstr "enviar data para prueba a otro par (hasta CTRL-C)"
7898 7723
7899#: src/transport/gnunet-transport.c:1480 7724#: src/transport/gnunet-transport.c:1482
7900#: src/transport/gnunet-transport-profiler.c:650 7725#: src/transport/gnunet-transport-profiler.c:652
7901msgid "Direct access to transport service." 7726msgid "Direct access to transport service."
7902msgstr "Acceso directo al servicio de transporte." 7727msgstr "Acceso directo al servicio de transporte."
7903 7728
7904#: src/transport/gnunet-transport-profiler.c:217 7729#: src/transport/gnunet-transport-profiler.c:219
7905#, c-format 7730#, c-format
7906msgid "%llu B in %llu ms == %.2f KB/s!\n" 7731msgid "%llu B in %llu ms == %.2f KB/s!\n"
7907msgstr "" 7732msgstr ""
7908 7733
7909#: src/transport/gnunet-transport-profiler.c:615 7734#: src/transport/gnunet-transport-profiler.c:617
7910msgid "send data to peer" 7735msgid "send data to peer"
7911msgstr "" 7736msgstr ""
7912 7737
7913#: src/transport/gnunet-transport-profiler.c:619 7738#: src/transport/gnunet-transport-profiler.c:621
7914#, fuzzy 7739#, fuzzy
7915msgid "receive data from peer" 7740msgid "receive data from peer"
7916msgstr "# respuestas recibidas de otros pares" 7741msgstr "# respuestas recibidas de otros pares"
7917 7742
7918#: src/transport/gnunet-transport-profiler.c:624 7743#: src/transport/gnunet-transport-profiler.c:626
7919#, fuzzy 7744#, fuzzy
7920msgid "iterations" 7745msgid "iterations"
7921msgstr "Otras configuraciones" 7746msgstr "Otras configuraciones"
7922 7747
7923#: src/transport/gnunet-transport-profiler.c:629 7748#: src/transport/gnunet-transport-profiler.c:631
7924#, fuzzy 7749#, fuzzy
7925msgid "number of messages to send" 7750msgid "number of messages to send"
7926msgstr "número de mensajes a usar por iteración" 7751msgstr "número de mensajes a usar por iteración"
7927 7752
7928#: src/transport/gnunet-transport-profiler.c:634 7753#: src/transport/gnunet-transport-profiler.c:636
7929#, fuzzy 7754#, fuzzy
7930msgid "message size to use" 7755msgid "message size to use"
7931msgstr "tamaño del mensaje" 7756msgstr "tamaño del mensaje"
7932 7757
7933#: src/transport/plugin_transport_http_client.c:1472 7758#: src/transport/plugin_transport_http_client.c:1474
7934#: src/transport/plugin_transport_http_server.c:2310 7759#: src/transport/plugin_transport_http_server.c:2312
7935#: src/transport/plugin_transport_http_server.c:3524 7760#: src/transport/plugin_transport_http_server.c:3530
7936#: src/transport/plugin_transport_tcp.c:3889 7761#: src/transport/plugin_transport_tcp.c:3895
7937#: src/transport/plugin_transport_tcp.c:3896 7762#: src/transport/plugin_transport_tcp.c:3902
7938#: src/transport/plugin_transport_xt.c:3897 7763#: src/transport/plugin_transport_xt.c:3899
7939#: src/transport/plugin_transport_xt.c:3904 7764#: src/transport/plugin_transport_xt.c:3906
7940msgid "TCP_STEALTH not supported on this platform.\n" 7765msgid "TCP_STEALTH not supported on this platform.\n"
7941msgstr "" 7766msgstr ""
7942 7767
7943#: src/transport/plugin_transport_http_client.c:2113 7768#: src/transport/plugin_transport_http_client.c:2115
7944#, c-format 7769#, c-format
7945msgid "Could not initialize curl multi handle, failed to start %s plugin!\n" 7770msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
7946msgstr "" 7771msgstr ""
7947"¡No se pudo inicializar el multi-manejador de curl, no se pudo iniciar el " 7772"¡No se pudo inicializar el multi-manejador de curl, no se pudo iniciar el "
7948"módulo %s!\n" 7773"módulo %s!\n"
7949 7774
7950#: src/transport/plugin_transport_http_client.c:2162 7775#: src/transport/plugin_transport_http_client.c:2164
7951#: src/transport/plugin_transport_http_server.c:3239 7776#: src/transport/plugin_transport_http_server.c:3245
7952#, c-format 7777#, c-format
7953msgid "Shutting down plugin `%s'\n" 7778msgid "Shutting down plugin `%s'\n"
7954msgstr "Finalizando el módulo «%s»\n" 7779msgstr "Finalizando el módulo «%s»\n"
7955 7780
7956#: src/transport/plugin_transport_http_client.c:2179 7781#: src/transport/plugin_transport_http_client.c:2181
7957#: src/transport/plugin_transport_http_server.c:3309 7782#: src/transport/plugin_transport_http_server.c:3315
7958#, c-format 7783#, c-format
7959msgid "Shutdown for plugin `%s' complete\n" 7784msgid "Shutdown for plugin `%s' complete\n"
7960msgstr "Finalización del módulo «%s» completa\n" 7785msgstr "Finalización del módulo «%s» completa\n"
7961 7786
7962#: src/transport/plugin_transport_http_client.c:2213 7787#: src/transport/plugin_transport_http_client.c:2215
7963#, fuzzy, c-format 7788#, fuzzy, c-format
7964msgid "Maximum number of requests is %u\n" 7789msgid "Maximum number of requests is %u\n"
7965msgstr "El número máximo de conexiones es %u\n" 7790msgstr "El número máximo de conexiones es %u\n"
7966 7791
7967#: src/transport/plugin_transport_http_server.c:1754 7792#: src/transport/plugin_transport_http_server.c:1756
7968#, c-format 7793#, c-format
7969msgid "" 7794msgid ""
7970"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data " 7795"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data "
@@ -7973,12 +7798,12 @@ msgstr ""
7973"Acceso desde la conexión %p (%u de %u) para «%s» «%s» URL «%s» con tamaño de " 7798"Acceso desde la conexión %p (%u de %u) para «%s» «%s» URL «%s» con tamaño de "
7974"los datos de subida %u\n" 7799"los datos de subida %u\n"
7975 7800
7976#: src/transport/plugin_transport_http_server.c:2026 7801#: src/transport/plugin_transport_http_server.c:2028
7977#, c-format 7802#, c-format
7978msgid "Accepting connection (%u of %u) from `%s'\n" 7803msgid "Accepting connection (%u of %u) from `%s'\n"
7979msgstr "Aceptando conexión (%u de %u) desde «%s»\n" 7804msgstr "Aceptando conexión (%u de %u) desde «%s»\n"
7980 7805
7981#: src/transport/plugin_transport_http_server.c:2034 7806#: src/transport/plugin_transport_http_server.c:2036
7982#, c-format 7807#, c-format
7983msgid "" 7808msgid ""
7984"Server reached maximum number connections (%u), rejecting new connection\n" 7809"Server reached maximum number connections (%u), rejecting new connection\n"
@@ -7986,7 +7811,7 @@ msgstr ""
7986"El servidor ha alcanzado el número máximo de conexiones (%u), rechazando " 7811"El servidor ha alcanzado el número máximo de conexiones (%u), rechazando "
7987"nueva conexión\n" 7812"nueva conexión\n"
7988 7813
7989#: src/transport/plugin_transport_http_server.c:2184 7814#: src/transport/plugin_transport_http_server.c:2186
7990msgid "" 7815msgid ""
7991"Could not create a new TLS certificate, program `gnunet-transport-" 7816"Could not create a new TLS certificate, program `gnunet-transport-"
7992"certificate-creation' could not be started!\n" 7817"certificate-creation' could not be started!\n"
@@ -7994,273 +7819,273 @@ msgstr ""
7994"¡No se pudo crear un certificado TLS nuevo, el programa «gnunet-transport-" 7819"¡No se pudo crear un certificado TLS nuevo, el programa «gnunet-transport-"
7995"certificate-creation» no pudo ser iniciado!\n" 7820"certificate-creation» no pudo ser iniciado!\n"
7996 7821
7997#: src/transport/plugin_transport_http_server.c:2207 7822#: src/transport/plugin_transport_http_server.c:2209
7998#, fuzzy, c-format 7823#, fuzzy, c-format
7999msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n" 7824msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n"
8000msgstr "" 7825msgstr ""
8001"¡No se encontró ningún certificado TLS útil y se produjo un fallo al crear " 7826"¡No se encontró ningún certificado TLS útil y se produjo un fallo al crear "
8002"uno!\n" 7827"uno!\n"
8003 7828
8004#: src/transport/plugin_transport_http_server.c:2336 7829#: src/transport/plugin_transport_http_server.c:2338
8005msgid "Could not load or create server certificate! Loading plugin failed!\n" 7830msgid "Could not load or create server certificate! Loading plugin failed!\n"
8006msgstr "" 7831msgstr ""
8007 7832
8008#: src/transport/plugin_transport_http_server.c:2648 7833#: src/transport/plugin_transport_http_server.c:2654
8009msgid "Require valid port number for service in configuration!\n" 7834msgid "Require valid port number for service in configuration!\n"
8010msgstr "¡Se necesita un puerto válido para el servicio en la configuración!\n" 7835msgstr "¡Se necesita un puerto válido para el servicio en la configuración!\n"
8011 7836
8012#: src/transport/plugin_transport_http_server.c:2813 7837#: src/transport/plugin_transport_http_server.c:2819
8013#, c-format 7838#, c-format
8014msgid "Found %u addresses to report to NAT service\n" 7839msgid "Found %u addresses to report to NAT service\n"
8015msgstr "Encontradas %u direcciones para comunicar al servicio NAT\n" 7840msgstr "Encontradas %u direcciones para comunicar al servicio NAT\n"
8016 7841
8017#: src/transport/plugin_transport_http_server.c:2899 7842#: src/transport/plugin_transport_http_server.c:2905
8018#: src/transport/plugin_transport_udp.c:3621 7843#: src/transport/plugin_transport_udp.c:3627
8019#: src/transport/plugin_transport_xu.c:2047 7844#: src/transport/plugin_transport_xu.c:2049
8020msgid "Disabling IPv6 since it is not supported on this system!\n" 7845msgid "Disabling IPv6 since it is not supported on this system!\n"
8021msgstr "¡Deshabilitando IPv6 ya que no está soportado en este sistema!\n" 7846msgstr "¡Deshabilitando IPv6 ya que no está soportado en este sistema!\n"
8022 7847
8023#: src/transport/plugin_transport_http_server.c:3005 7848#: src/transport/plugin_transport_http_server.c:3011
8024#, c-format 7849#, c-format
8025msgid "IPv4 support is %s\n" 7850msgid "IPv4 support is %s\n"
8026msgstr "El soporte IPv4 es %s\n" 7851msgstr "El soporte IPv4 es %s\n"
8027 7852
8028#: src/transport/plugin_transport_http_server.c:3020 7853#: src/transport/plugin_transport_http_server.c:3026
8029#, c-format 7854#, c-format
8030msgid "IPv6 support is %s\n" 7855msgid "IPv6 support is %s\n"
8031msgstr "El soporte IPv6 es %s\n" 7856msgstr "El soporte IPv6 es %s\n"
8032 7857
8033#: src/transport/plugin_transport_http_server.c:3026 7858#: src/transport/plugin_transport_http_server.c:3032
8034msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n" 7859msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n"
8035msgstr "¡Ni IPv4 ni IPv6 están habilitadas! Corrija la configuración\n" 7860msgstr "¡Ni IPv4 ni IPv6 están habilitadas! Corrija la configuración\n"
8036 7861
8037#: src/transport/plugin_transport_http_server.c:3037 7862#: src/transport/plugin_transport_http_server.c:3043
8038msgid "Port is required! Fix in configuration\n" 7863msgid "Port is required! Fix in configuration\n"
8039msgstr "¡El puerto es necesario! Corrija la configuración\n" 7864msgstr "¡El puerto es necesario! Corrija la configuración\n"
8040 7865
8041#: src/transport/plugin_transport_http_server.c:3043 7866#: src/transport/plugin_transport_http_server.c:3049
8042#, c-format 7867#, c-format
8043msgid "Using port %u\n" 7868msgid "Using port %u\n"
8044msgstr "Usando puerto %u\n" 7869msgstr "Usando puerto %u\n"
8045 7870
8046#: src/transport/plugin_transport_http_server.c:3062 7871#: src/transport/plugin_transport_http_server.c:3068
8047#, c-format 7872#, c-format
8048msgid "Specific IPv4 address `%s' in configuration file is invalid!\n" 7873msgid "Specific IPv4 address `%s' in configuration file is invalid!\n"
8049msgstr "" 7874msgstr ""
8050"¡La dirección IPv4 «%s» especificada en el fichero de configuración no es " 7875"¡La dirección IPv4 «%s» especificada en el fichero de configuración no es "
8051"válida!\n" 7876"válida!\n"
8052 7877
8053#: src/transport/plugin_transport_http_server.c:3097 7878#: src/transport/plugin_transport_http_server.c:3103
8054#, c-format 7879#, c-format
8055msgid "Specific IPv6 address `%s' in configuration file is invalid!\n" 7880msgid "Specific IPv6 address `%s' in configuration file is invalid!\n"
8056msgstr "" 7881msgstr ""
8057"¡La dirección IPv6 «%s» especificada en el fichero de configuración no es " 7882"¡La dirección IPv6 «%s» especificada en el fichero de configuración no es "
8058"válida!\n" 7883"válida!\n"
8059 7884
8060#: src/transport/plugin_transport_http_server.c:3172 7885#: src/transport/plugin_transport_http_server.c:3178
8061#, c-format 7886#, c-format
8062msgid "Using external hostname `%s'\n" 7887msgid "Using external hostname `%s'\n"
8063msgstr "Usando nombre de máquina externo «%s»\n" 7888msgstr "Usando nombre de máquina externo «%s»\n"
8064 7889
8065#: src/transport/plugin_transport_http_server.c:3193 7890#: src/transport/plugin_transport_http_server.c:3199
8066#, c-format 7891#, c-format
8067msgid "Notifying transport only about hostname `%s'\n" 7892msgid "Notifying transport only about hostname `%s'\n"
8068msgstr "Notificando al transporte sólo el nombre de máquina «%s»\n" 7893msgstr "Notificando al transporte sólo el nombre de máquina «%s»\n"
8069 7894
8070#: src/transport/plugin_transport_http_server.c:3210 7895#: src/transport/plugin_transport_http_server.c:3216
8071#, c-format 7896#, c-format
8072msgid "Maximum number of connections is %u\n" 7897msgid "Maximum number of connections is %u\n"
8073msgstr "El número máximo de conexiones es %u\n" 7898msgstr "El número máximo de conexiones es %u\n"
8074 7899
8075#: src/transport/plugin_transport_http_server.c:3536 7900#: src/transport/plugin_transport_http_server.c:3542
8076#, fuzzy 7901#, fuzzy
8077msgid "Unable to compile URL regex\n" 7902msgid "Unable to compile URL regex\n"
8078msgstr "¡Imposible obtener «HELLO» del par!\n" 7903msgstr "¡Imposible obtener «HELLO» del par!\n"
8079 7904
8080#: src/transport/plugin_transport_smtp.c:221 7905#: src/transport/plugin_transport_smtp.c:223
8081#, c-format 7906#, c-format
8082msgid "Received malformed message via %s. Ignored.\n" 7907msgid "Received malformed message via %s. Ignored.\n"
8083msgstr "Mensaje mal formado recibido vía %s. Ignorado.\n" 7908msgstr "Mensaje mal formado recibido vía %s. Ignorado.\n"
8084 7909
8085#: src/transport/plugin_transport_smtp.c:308 7910#: src/transport/plugin_transport_smtp.c:310
8086msgid "SMTP filter string to invalid, lacks ': '\n" 7911msgid "SMTP filter string to invalid, lacks ': '\n"
8087msgstr "La cadena de filtrado SMTP no es válida, carece de «: »\n" 7912msgstr "La cadena de filtrado SMTP no es válida, carece de «: »\n"
8088 7913
8089# to should be too 7914# to should be too
8090#: src/transport/plugin_transport_smtp.c:317 7915#: src/transport/plugin_transport_smtp.c:319
8091#, c-format 7916#, c-format
8092msgid "SMTP filter string to long, capped to `%s'\n" 7917msgid "SMTP filter string to long, capped to `%s'\n"
8093msgstr "La cadena de filtrado SMTP es demasiado larga, recortada a «%s»\n" 7918msgstr "La cadena de filtrado SMTP es demasiado larga, recortada a «%s»\n"
8094 7919
8095#: src/transport/plugin_transport_smtp.c:412 7920#: src/transport/plugin_transport_smtp.c:414
8096#: src/transport/plugin_transport_smtp.c:422 7921#: src/transport/plugin_transport_smtp.c:424
8097#: src/transport/plugin_transport_smtp.c:435 7922#: src/transport/plugin_transport_smtp.c:437
8098#: src/transport/plugin_transport_smtp.c:454 7923#: src/transport/plugin_transport_smtp.c:456
8099#: src/transport/plugin_transport_smtp.c:477 7924#: src/transport/plugin_transport_smtp.c:479
8100#: src/transport/plugin_transport_smtp.c:485 7925#: src/transport/plugin_transport_smtp.c:487
8101#: src/transport/plugin_transport_smtp.c:498 7926#: src/transport/plugin_transport_smtp.c:500
8102#: src/transport/plugin_transport_smtp.c:509 7927#: src/transport/plugin_transport_smtp.c:511
8103#, c-format 7928#, c-format
8104msgid "SMTP: `%s' failed: %s.\n" 7929msgid "SMTP: `%s' failed: %s.\n"
8105msgstr "SMTP: «%s» falló: %s.\n" 7930msgstr "SMTP: «%s» falló: %s.\n"
8106 7931
8107#: src/transport/plugin_transport_smtp.c:650 7932#: src/transport/plugin_transport_smtp.c:652
8108msgid "No email-address specified, can not start SMTP transport.\n" 7933msgid "No email-address specified, can not start SMTP transport.\n"
8109msgstr "" 7934msgstr ""
8110"No se ha especificado una dirección de correo, no se puede iniciar el " 7935"No se ha especificado una dirección de correo, no se puede iniciar el "
8111"transporte SMTP.\n" 7936"transporte SMTP.\n"
8112 7937
8113#: src/transport/plugin_transport_smtp.c:662 7938#: src/transport/plugin_transport_smtp.c:664
8114msgid "# bytes received via SMTP" 7939msgid "# bytes received via SMTP"
8115msgstr "# bytes recibidos vía SMTP" 7940msgstr "# bytes recibidos vía SMTP"
8116 7941
8117#: src/transport/plugin_transport_smtp.c:663 7942#: src/transport/plugin_transport_smtp.c:665
8118msgid "# bytes sent via SMTP" 7943msgid "# bytes sent via SMTP"
8119msgstr "# bytes enviados vía SMTP" 7944msgstr "# bytes enviados vía SMTP"
8120 7945
8121#: src/transport/plugin_transport_smtp.c:665 7946#: src/transport/plugin_transport_smtp.c:667
8122msgid "# bytes dropped by SMTP (outgoing)" 7947msgid "# bytes dropped by SMTP (outgoing)"
8123msgstr "# bytes omitidos por SMTP (salientes)" 7948msgstr "# bytes omitidos por SMTP (salientes)"
8124 7949
8125#: src/transport/plugin_transport_tcp.c:1545 7950#: src/transport/plugin_transport_tcp.c:1551
8126#: src/transport/plugin_transport_tcp.c:2871 7951#: src/transport/plugin_transport_tcp.c:2877
8127#: src/transport/plugin_transport_xt.c:1551 7952#: src/transport/plugin_transport_xt.c:1553
8128#: src/transport/plugin_transport_xt.c:2877 7953#: src/transport/plugin_transport_xt.c:2879
8129#, c-format 7954#, c-format
8130msgid "Unexpected address length: %u bytes\n" 7955msgid "Unexpected address length: %u bytes\n"
8131msgstr "Longitud de dirección inesperada: %u bytes\n" 7956msgstr "Longitud de dirección inesperada: %u bytes\n"
8132 7957
8133#: src/transport/plugin_transport_tcp.c:1728 7958#: src/transport/plugin_transport_tcp.c:1734
8134#: src/transport/plugin_transport_tcp.c:1952 7959#: src/transport/plugin_transport_tcp.c:1958
8135#: src/transport/plugin_transport_tcp.c:3135 7960#: src/transport/plugin_transport_tcp.c:3141
8136#: src/transport/plugin_transport_tcp.c:4012 7961#: src/transport/plugin_transport_tcp.c:4018
8137#: src/transport/plugin_transport_xt.c:1734 7962#: src/transport/plugin_transport_xt.c:1736
8138#: src/transport/plugin_transport_xt.c:1958 7963#: src/transport/plugin_transport_xt.c:1960
8139#: src/transport/plugin_transport_xt.c:3141 7964#: src/transport/plugin_transport_xt.c:3143
8140msgid "# TCP sessions active" 7965msgid "# TCP sessions active"
8141msgstr "# Sesiones TCP activas" 7966msgstr "# Sesiones TCP activas"
8142 7967
8143#: src/transport/plugin_transport_tcp.c:1770 7968#: src/transport/plugin_transport_tcp.c:1776
8144#: src/transport/plugin_transport_tcp.c:1934 7969#: src/transport/plugin_transport_tcp.c:1940
8145#: src/transport/plugin_transport_tcp.c:2058 7970#: src/transport/plugin_transport_tcp.c:2064
8146#: src/transport/plugin_transport_tcp.c:2131 7971#: src/transport/plugin_transport_tcp.c:2137
8147#: src/transport/plugin_transport_tcp.c:2231 7972#: src/transport/plugin_transport_tcp.c:2237
8148#: src/transport/plugin_transport_tcp.c:2256 7973#: src/transport/plugin_transport_tcp.c:2262
8149#: src/transport/plugin_transport_xt.c:1776 7974#: src/transport/plugin_transport_xt.c:1778
8150#: src/transport/plugin_transport_xt.c:1940 7975#: src/transport/plugin_transport_xt.c:1942
8151#: src/transport/plugin_transport_xt.c:2064 7976#: src/transport/plugin_transport_xt.c:2066
8152#: src/transport/plugin_transport_xt.c:2137 7977#: src/transport/plugin_transport_xt.c:2139
8153#: src/transport/plugin_transport_xt.c:2237 7978#: src/transport/plugin_transport_xt.c:2239
8154#: src/transport/plugin_transport_xt.c:2262 7979#: src/transport/plugin_transport_xt.c:2264
8155msgid "# bytes currently in TCP buffers" 7980msgid "# bytes currently in TCP buffers"
8156msgstr "# bytes actualmente en los buffer TCP" 7981msgstr "# bytes actualmente en los buffer TCP"
8157 7982
8158#: src/transport/plugin_transport_tcp.c:1773 7983#: src/transport/plugin_transport_tcp.c:1779
8159#: src/transport/plugin_transport_xt.c:1779 7984#: src/transport/plugin_transport_xt.c:1781
8160msgid "# bytes discarded by TCP (disconnect)" 7985msgid "# bytes discarded by TCP (disconnect)"
8161msgstr "# bytes descartados por TCP (desconectado)" 7986msgstr "# bytes descartados por TCP (desconectado)"
8162 7987
8163#: src/transport/plugin_transport_tcp.c:2061 7988#: src/transport/plugin_transport_tcp.c:2067
8164#: src/transport/plugin_transport_xt.c:2067 7989#: src/transport/plugin_transport_xt.c:2069
8165msgid "# bytes discarded by TCP (timeout)" 7990msgid "# bytes discarded by TCP (timeout)"
8166msgstr "# bytes omitidos por TCP (expirados)" 7991msgstr "# bytes omitidos por TCP (expirados)"
8167 7992
8168#: src/transport/plugin_transport_tcp.c:2135 7993#: src/transport/plugin_transport_tcp.c:2141
8169#: src/transport/plugin_transport_xt.c:2141 7994#: src/transport/plugin_transport_xt.c:2143
8170msgid "# bytes transmitted via TCP" 7995msgid "# bytes transmitted via TCP"
8171msgstr "# bytes recibidos vía TCP" 7996msgstr "# bytes recibidos vía TCP"
8172 7997
8173#: src/transport/plugin_transport_tcp.c:2533 7998#: src/transport/plugin_transport_tcp.c:2539
8174#: src/transport/plugin_transport_xt.c:2539 7999#: src/transport/plugin_transport_xt.c:2541
8175msgid "# requests to create session with invalid address" 8000msgid "# requests to create session with invalid address"
8176msgstr "" 8001msgstr ""
8177 8002
8178#: src/transport/plugin_transport_tcp.c:2709 8003#: src/transport/plugin_transport_tcp.c:2715
8179#: src/transport/plugin_transport_xt.c:2715 8004#: src/transport/plugin_transport_xt.c:2717
8180msgid "# transport-service disconnect requests for TCP" 8005msgid "# transport-service disconnect requests for TCP"
8181msgstr "# peticiones de desconexión del servicio de transporte por TCP" 8006msgstr "# peticiones de desconexión del servicio de transporte por TCP"
8182 8007
8183#: src/transport/plugin_transport_tcp.c:3201 8008#: src/transport/plugin_transport_tcp.c:3207
8184#: src/transport/plugin_transport_xt.c:3207 8009#: src/transport/plugin_transport_xt.c:3209
8185msgid "# TCP WELCOME messages received" 8010msgid "# TCP WELCOME messages received"
8186msgstr "# Mensajes «WELCOME» TCP recibidos" 8011msgstr "# Mensajes «WELCOME» TCP recibidos"
8187 8012
8188#: src/transport/plugin_transport_tcp.c:3407 8013#: src/transport/plugin_transport_tcp.c:3413
8189#: src/transport/plugin_transport_xt.c:3413 8014#: src/transport/plugin_transport_xt.c:3415
8190msgid "# bytes received via TCP" 8015msgid "# bytes received via TCP"
8191msgstr "# bytes recibidos vía TCP" 8016msgstr "# bytes recibidos vía TCP"
8192 8017
8193#: src/transport/plugin_transport_tcp.c:3458 8018#: src/transport/plugin_transport_tcp.c:3464
8194#: src/transport/plugin_transport_tcp.c:3516 8019#: src/transport/plugin_transport_tcp.c:3522
8195#: src/transport/plugin_transport_xt.c:3464 8020#: src/transport/plugin_transport_xt.c:3466
8196#: src/transport/plugin_transport_xt.c:3522 8021#: src/transport/plugin_transport_xt.c:3524
8197#, fuzzy 8022#, fuzzy
8198msgid "# TCP server connections active" 8023msgid "# TCP server connections active"
8199msgstr "# conexiones «stream» activas" 8024msgstr "# conexiones «stream» activas"
8200 8025
8201#: src/transport/plugin_transport_tcp.c:3462 8026#: src/transport/plugin_transport_tcp.c:3468
8202#: src/transport/plugin_transport_xt.c:3468 8027#: src/transport/plugin_transport_xt.c:3470
8203#, fuzzy 8028#, fuzzy
8204msgid "# TCP server connect events" 8029msgid "# TCP server connect events"
8205msgstr "# Pares conectados" 8030msgstr "# Pares conectados"
8206 8031
8207#: src/transport/plugin_transport_tcp.c:3468 8032#: src/transport/plugin_transport_tcp.c:3474
8208#: src/transport/plugin_transport_xt.c:3474 8033#: src/transport/plugin_transport_xt.c:3476
8209msgid "TCP connection limit reached, suspending server\n" 8034msgid "TCP connection limit reached, suspending server\n"
8210msgstr "" 8035msgstr ""
8211 8036
8212#: src/transport/plugin_transport_tcp.c:3470 8037#: src/transport/plugin_transport_tcp.c:3476
8213#: src/transport/plugin_transport_xt.c:3476 8038#: src/transport/plugin_transport_xt.c:3478
8214msgid "# TCP service suspended" 8039msgid "# TCP service suspended"
8215msgstr "" 8040msgstr ""
8216 8041
8217#: src/transport/plugin_transport_tcp.c:3510 8042#: src/transport/plugin_transport_tcp.c:3516
8218#: src/transport/plugin_transport_xt.c:3516 8043#: src/transport/plugin_transport_xt.c:3518
8219msgid "# TCP service resumed" 8044msgid "# TCP service resumed"
8220msgstr "" 8045msgstr ""
8221 8046
8222#: src/transport/plugin_transport_tcp.c:3520 8047#: src/transport/plugin_transport_tcp.c:3526
8223#: src/transport/plugin_transport_xt.c:3526 8048#: src/transport/plugin_transport_xt.c:3528
8224msgid "# network-level TCP disconnect events" 8049msgid "# network-level TCP disconnect events"
8225msgstr "# eventos de desconexión TCP a nivel de red" 8050msgstr "# eventos de desconexión TCP a nivel de red"
8226 8051
8227#: src/transport/plugin_transport_tcp.c:3839 8052#: src/transport/plugin_transport_tcp.c:3845
8228#: src/transport/plugin_transport_xt.c:3847 8053#: src/transport/plugin_transport_xt.c:3849
8229msgid "Failed to start service.\n" 8054msgid "Failed to start service.\n"
8230msgstr "Se produjo un fallo al iniciar el servicio.\n" 8055msgstr "Se produjo un fallo al iniciar el servicio.\n"
8231 8056
8232#: src/transport/plugin_transport_tcp.c:4000 8057#: src/transport/plugin_transport_tcp.c:4006
8233#, c-format 8058#, c-format
8234msgid "TCP transport listening on port %llu\n" 8059msgid "TCP transport listening on port %llu\n"
8235msgstr "Transporte TCP escuchando en el puerto %llu\n" 8060msgstr "Transporte TCP escuchando en el puerto %llu\n"
8236 8061
8237#: src/transport/plugin_transport_tcp.c:4004 8062#: src/transport/plugin_transport_tcp.c:4010
8238msgid "TCP transport not listening on any port (client only)\n" 8063msgid "TCP transport not listening on any port (client only)\n"
8239msgstr "Transporte TCP no escuchando en ningún puerto (únicamente cliente)\n" 8064msgstr "Transporte TCP no escuchando en ningún puerto (únicamente cliente)\n"
8240 8065
8241#: src/transport/plugin_transport_tcp.c:4008 8066#: src/transport/plugin_transport_tcp.c:4014
8242#, c-format 8067#, c-format
8243msgid "TCP transport advertises itself as being on port %llu\n" 8068msgid "TCP transport advertises itself as being on port %llu\n"
8244msgstr "El transporte TCP anuncia que está en el puerto %llu\n" 8069msgstr "El transporte TCP anuncia que está en el puerto %llu\n"
8245 8070
8246#: src/transport/plugin_transport_udp_broadcasting.c:166 8071#: src/transport/plugin_transport_udp_broadcasting.c:168
8247#, fuzzy 8072#, fuzzy
8248msgid "# Multicast HELLO beacons received via UDP" 8073msgid "# Multicast HELLO beacons received via UDP"
8249msgstr "# beacons HELLO multicast IPv6 recibidos vía UDP" 8074msgstr "# beacons HELLO multicast IPv6 recibidos vía UDP"
8250 8075
8251#: src/transport/plugin_transport_udp_broadcasting.c:546 8076#: src/transport/plugin_transport_udp_broadcasting.c:548
8252msgid "" 8077msgid ""
8253"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" 8078"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
8254msgstr "" 8079msgstr ""
8255 8080
8256#: src/transport/plugin_transport_udp_broadcasting.c:563 8081#: src/transport/plugin_transport_udp_broadcasting.c:565
8257#, c-format 8082#, c-format
8258msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" 8083msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
8259msgstr "" 8084msgstr ""
8260"Se produjo un fallo al establecer la opción de «broadcast» IPv4 para el " 8085"Se produjo un fallo al establecer la opción de «broadcast» IPv4 para el "
8261"«socket» en el puerto %d\n" 8086"«socket» en el puerto %d\n"
8262 8087
8263#: src/transport/plugin_transport_udp.c:3365 8088#: src/transport/plugin_transport_udp.c:3371
8264#, c-format 8089#, c-format
8265msgid "" 8090msgid ""
8266"UDP could not transmit message to `%s': Network seems down, please check " 8091"UDP could not transmit message to `%s': Network seems down, please check "
@@ -8269,7 +8094,7 @@ msgstr ""
8269"UDP no pudo transmitir el mensaje a «%s»: La red parece caída, por favor, " 8094"UDP no pudo transmitir el mensaje a «%s»: La red parece caída, por favor, "
8270"compruebe su configuración de red\n" 8095"compruebe su configuración de red\n"
8271 8096
8272#: src/transport/plugin_transport_udp.c:3379 8097#: src/transport/plugin_transport_udp.c:3385
8273#, fuzzy 8098#, fuzzy
8274msgid "" 8099msgid ""
8275"UDP could not transmit IPv6 message! Please check your network configuration " 8100"UDP could not transmit IPv6 message! Please check your network configuration "
@@ -8279,152 +8104,147 @@ msgstr ""
8279"configuración de red y deshabilite IPv6 si su conexión carece de una " 8104"configuración de red y deshabilite IPv6 si su conexión carece de una "
8280"dirección IPv6 global\n" 8105"dirección IPv6 global\n"
8281 8106
8282#: src/transport/plugin_transport_udp.c:3697 8107#: src/transport/plugin_transport_udp.c:3703
8283#: src/transport/plugin_transport_udp.c:3796 8108#: src/transport/plugin_transport_udp.c:3802
8284#, fuzzy, c-format 8109#, fuzzy, c-format
8285msgid "Failed to bind UDP socket to %s: %s\n" 8110msgid "Failed to bind UDP socket to %s: %s\n"
8286msgstr "Se produjo un fallo al abrir los «sockets» UDP\n" 8111msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
8287 8112
8288#: src/transport/plugin_transport_udp.c:3715 8113#: src/transport/plugin_transport_udp.c:3721
8289#: src/transport/plugin_transport_xu.c:2141 8114#: src/transport/plugin_transport_xu.c:2143
8290#, fuzzy 8115#, fuzzy
8291msgid "Disabling IPv4 since it is not supported on this system!\n" 8116msgid "Disabling IPv4 since it is not supported on this system!\n"
8292msgstr "¡Deshabilitando IPv6 ya que no está soportado en este sistema!\n" 8117msgstr "¡Deshabilitando IPv6 ya que no está soportado en este sistema!\n"
8293 8118
8294#: src/transport/plugin_transport_udp.c:3806 8119#: src/transport/plugin_transport_udp.c:3812
8295msgid "Failed to open UDP sockets\n" 8120msgid "Failed to open UDP sockets\n"
8296msgstr "Se produjo un fallo al abrir los «sockets» UDP\n" 8121msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
8297 8122
8298#: src/transport/plugin_transport_udp.c:3877 8123#: src/transport/plugin_transport_udp.c:3883
8299#: src/transport/plugin_transport_udp.c:3891 8124#: src/transport/plugin_transport_udp.c:3897
8300#: src/transport/plugin_transport_xu.c:2299 8125#: src/transport/plugin_transport_xu.c:2301
8301#: src/transport/plugin_transport_xu.c:2313 8126#: src/transport/plugin_transport_xu.c:2315
8302msgid "must be in [0,65535]" 8127msgid "must be in [0,65535]"
8303msgstr "" 8128msgstr ""
8304 8129
8305#: src/transport/plugin_transport_udp.c:3923 8130#: src/transport/plugin_transport_udp.c:3929
8306#: src/transport/plugin_transport_xu.c:2345 8131#: src/transport/plugin_transport_xu.c:2347
8307#, fuzzy 8132#, fuzzy
8308msgid "must be valid IPv4 address" 8133msgid "must be valid IPv4 address"
8309msgstr "«%s» no es una dirección IP válida.\n" 8134msgstr "«%s» no es una dirección IP válida.\n"
8310 8135
8311#: src/transport/plugin_transport_udp.c:3950 8136#: src/transport/plugin_transport_udp.c:3956
8312#: src/transport/plugin_transport_xu.c:2372 8137#: src/transport/plugin_transport_xu.c:2374
8313#, fuzzy 8138#, fuzzy
8314msgid "must be valid IPv6 address" 8139msgid "must be valid IPv6 address"
8315msgstr "«%s» no es una dirección IP válida.\n" 8140msgstr "«%s» no es una dirección IP válida.\n"
8316 8141
8317#: src/transport/plugin_transport_udp.c:4014 8142#: src/transport/plugin_transport_udp.c:4020
8318#, fuzzy 8143#, fuzzy
8319msgid "Failed to create UDP network sockets\n" 8144msgid "Failed to create UDP network sockets\n"
8320msgstr "Se produjo un fallo al crear una nueva firma" 8145msgstr "Se produjo un fallo al crear una nueva firma"
8321 8146
8322#: src/transport/plugin_transport_unix.c:1401 8147#: src/transport/plugin_transport_unix.c:1416
8323#, fuzzy, c-format
8324msgid "Cannot create path to `%s'\n"
8325msgstr "Se produjo un fallo al crear la página para «%s»\n"
8326
8327#: src/transport/plugin_transport_unix.c:1414
8328#, fuzzy, c-format 8148#, fuzzy, c-format
8329msgid "Cannot bind to `%s'\n" 8149msgid "Cannot bind to `%s'\n"
8330msgstr "Imposible hallar el hash de '%s'.\n" 8150msgstr "Imposible hallar el hash de '%s'.\n"
8331 8151
8332#: src/transport/plugin_transport_unix.c:1814 8152#: src/transport/plugin_transport_unix.c:1816
8333#, fuzzy 8153#, fuzzy
8334msgid "Failed to open UNIX listen socket\n" 8154msgid "Failed to open UNIX listen socket\n"
8335msgstr "Se produjo un fallo al abrir los «sockets» UNIX\n" 8155msgstr "Se produjo un fallo al abrir los «sockets» UNIX\n"
8336 8156
8337#: src/transport/plugin_transport_wlan.c:766 8157#: src/transport/plugin_transport_wlan.c:768
8338#, fuzzy 8158#, fuzzy
8339msgid "# ACKs sent" 8159msgid "# ACKs sent"
8340msgstr "# ACK WLAN enviados" 8160msgstr "# ACK WLAN enviados"
8341 8161
8342#: src/transport/plugin_transport_wlan.c:786 8162#: src/transport/plugin_transport_wlan.c:788
8343#, fuzzy 8163#, fuzzy
8344msgid "# Messages defragmented" 8164msgid "# Messages defragmented"
8345msgstr "# mensajes defragmentados" 8165msgstr "# mensajes defragmentados"
8346 8166
8347#: src/transport/plugin_transport_wlan.c:827 8167#: src/transport/plugin_transport_wlan.c:829
8348#: src/transport/plugin_transport_wlan.c:912 8168#: src/transport/plugin_transport_wlan.c:914
8349#, fuzzy 8169#, fuzzy
8350msgid "# Sessions allocated" 8170msgid "# Sessions allocated"
8351msgstr "# sesiones WLAN alojadas" 8171msgstr "# sesiones WLAN alojadas"
8352 8172
8353#: src/transport/plugin_transport_wlan.c:1033 8173#: src/transport/plugin_transport_wlan.c:1035
8354#, fuzzy 8174#, fuzzy
8355msgid "# message fragments sent" 8175msgid "# message fragments sent"
8356msgstr "# fragmentos de mensaje WLAN enviados" 8176msgstr "# fragmentos de mensaje WLAN enviados"
8357 8177
8358#: src/transport/plugin_transport_wlan.c:1062 8178#: src/transport/plugin_transport_wlan.c:1064
8359#, fuzzy 8179#, fuzzy
8360msgid "# messages pending (with fragmentation)" 8180msgid "# messages pending (with fragmentation)"
8361msgstr "# mensajes WLAN pendientes (con fragmentación)" 8181msgstr "# mensajes WLAN pendientes (con fragmentación)"
8362 8182
8363#: src/transport/plugin_transport_wlan.c:1191 8183#: src/transport/plugin_transport_wlan.c:1193
8364#: src/transport/plugin_transport_wlan.c:1282 8184#: src/transport/plugin_transport_wlan.c:1284
8365#: src/transport/plugin_transport_wlan.c:2303 8185#: src/transport/plugin_transport_wlan.c:2305
8366#, fuzzy 8186#, fuzzy
8367msgid "# MAC endpoints allocated" 8187msgid "# MAC endpoints allocated"
8368msgstr "# MAC de destino WLAN alojadas" 8188msgstr "# MAC de destino WLAN alojadas"
8369 8189
8370#: src/transport/plugin_transport_wlan.c:1565 8190#: src/transport/plugin_transport_wlan.c:1567
8371#, fuzzy 8191#, fuzzy
8372msgid "# ACKs received" 8192msgid "# ACKs received"
8373msgstr "# ACK recibidos vía WLAN" 8193msgstr "# ACK recibidos vía WLAN"
8374 8194
8375#: src/transport/plugin_transport_wlan.c:1634 8195#: src/transport/plugin_transport_wlan.c:1636
8376#, fuzzy 8196#, fuzzy
8377msgid "# DATA messages discarded due to CRC32 error" 8197msgid "# DATA messages discarded due to CRC32 error"
8378msgstr "# mensajes DATA WLAN descartados debido a un error en el CRC32" 8198msgstr "# mensajes DATA WLAN descartados debido a un error en el CRC32"
8379 8199
8380#: src/transport/plugin_transport_wlan.c:1738 8200#: src/transport/plugin_transport_wlan.c:1740
8381#, fuzzy 8201#, fuzzy
8382msgid "# HELLO beacons sent" 8202msgid "# HELLO beacons sent"
8383msgstr "# «beacons HELLO» enviados vía WLAN" 8203msgstr "# «beacons HELLO» enviados vía WLAN"
8384 8204
8385#: src/transport/plugin_transport_wlan.c:1854 8205#: src/transport/plugin_transport_wlan.c:1856
8386#, fuzzy 8206#, fuzzy
8387msgid "# DATA messages received" 8207msgid "# DATA messages received"
8388msgstr "# Mensajes «GAP PUT» recibidos" 8208msgstr "# Mensajes «GAP PUT» recibidos"
8389 8209
8390#: src/transport/plugin_transport_wlan.c:1888 8210#: src/transport/plugin_transport_wlan.c:1890
8391#, fuzzy 8211#, fuzzy
8392msgid "# DATA messages processed" 8212msgid "# DATA messages processed"
8393msgstr "# mensajes «DATA» WLAN procesados" 8213msgstr "# mensajes «DATA» WLAN procesados"
8394 8214
8395#: src/transport/plugin_transport_wlan.c:2278 8215#: src/transport/plugin_transport_wlan.c:2280
8396#, c-format 8216#, c-format
8397msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n" 8217msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n"
8398msgstr "" 8218msgstr ""
8399"El ejecutable auxiliar «%s» no tiene activado el bit SUID, no se puede " 8219"El ejecutable auxiliar «%s» no tiene activado el bit SUID, no se puede "
8400"ejecutar el transporte WLAN\n" 8220"ejecutar el transporte WLAN\n"
8401 8221
8402#: src/transport/plugin_transport_wlan.c:2300 8222#: src/transport/plugin_transport_wlan.c:2302
8403#, fuzzy 8223#, fuzzy
8404msgid "# sessions allocated" 8224msgid "# sessions allocated"
8405msgstr "# sesiones WLAN alojadas" 8225msgstr "# sesiones WLAN alojadas"
8406 8226
8407#: src/transport/plugin_transport_xt.c:4008 8227#: src/transport/plugin_transport_xt.c:4010
8408#, fuzzy, c-format 8228#, fuzzy, c-format
8409msgid "XT transport listening on port %llu\n" 8229msgid "XT transport listening on port %llu\n"
8410msgstr "Transporte TCP escuchando en el puerto %llu\n" 8230msgstr "Transporte TCP escuchando en el puerto %llu\n"
8411 8231
8412#: src/transport/plugin_transport_xt.c:4012 8232#: src/transport/plugin_transport_xt.c:4014
8413#, fuzzy 8233#, fuzzy
8414msgid "XT transport not listening on any port (client only)\n" 8234msgid "XT transport not listening on any port (client only)\n"
8415msgstr "Transporte TCP no escuchando en ningún puerto (únicamente cliente)\n" 8235msgstr "Transporte TCP no escuchando en ningún puerto (únicamente cliente)\n"
8416 8236
8417#: src/transport/plugin_transport_xt.c:4016 8237#: src/transport/plugin_transport_xt.c:4018
8418#, fuzzy, c-format 8238#, fuzzy, c-format
8419msgid "XT transport advertises itself as being on port %llu\n" 8239msgid "XT transport advertises itself as being on port %llu\n"
8420msgstr "El transporte TCP anuncia que está en el puerto %llu\n" 8240msgstr "El transporte TCP anuncia que está en el puerto %llu\n"
8421 8241
8422#: src/transport/plugin_transport_xt.c:4020 8242#: src/transport/plugin_transport_xt.c:4022
8423#, fuzzy 8243#, fuzzy
8424msgid "# XT sessions active" 8244msgid "# XT sessions active"
8425msgstr "# Sesiones TCP activas" 8245msgstr "# Sesiones TCP activas"
8426 8246
8427#: src/transport/plugin_transport_xu.c:1235 8247#: src/transport/plugin_transport_xu.c:1237
8428#, fuzzy, c-format 8248#, fuzzy, c-format
8429msgid "" 8249msgid ""
8430"XU could not transmit message to `%s': Network seems down, please check your " 8250"XU could not transmit message to `%s': Network seems down, please check your "
@@ -8433,7 +8253,7 @@ msgstr ""
8433"UDP no pudo transmitir el mensaje a «%s»: La red parece caída, por favor, " 8253"UDP no pudo transmitir el mensaje a «%s»: La red parece caída, por favor, "
8434"compruebe su configuración de red\n" 8254"compruebe su configuración de red\n"
8435 8255
8436#: src/transport/plugin_transport_xu.c:1249 8256#: src/transport/plugin_transport_xu.c:1251
8437#, fuzzy 8257#, fuzzy
8438msgid "" 8258msgid ""
8439"XU could not transmit IPv6 message! Please check your network configuration " 8259"XU could not transmit IPv6 message! Please check your network configuration "
@@ -8443,48 +8263,48 @@ msgstr ""
8443"configuración de red y deshabilite IPv6 si su conexión carece de una " 8263"configuración de red y deshabilite IPv6 si su conexión carece de una "
8444"dirección IPv6 global\n" 8264"dirección IPv6 global\n"
8445 8265
8446#: src/transport/plugin_transport_xu.c:2123 8266#: src/transport/plugin_transport_xu.c:2125
8447#: src/transport/plugin_transport_xu.c:2222 8267#: src/transport/plugin_transport_xu.c:2224
8448#, fuzzy, c-format 8268#, fuzzy, c-format
8449msgid "Failed to bind XU socket to %s: %s\n" 8269msgid "Failed to bind XU socket to %s: %s\n"
8450msgstr "Se produjo un fallo al abrir los «sockets» UDP\n" 8270msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
8451 8271
8452#: src/transport/plugin_transport_xu.c:2232 8272#: src/transport/plugin_transport_xu.c:2234
8453#, fuzzy 8273#, fuzzy
8454msgid "Failed to open XU sockets\n" 8274msgid "Failed to open XU sockets\n"
8455msgstr "Se produjo un fallo al abrir los «sockets» UDP\n" 8275msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
8456 8276
8457#: src/transport/plugin_transport_xu.c:2396 8277#: src/transport/plugin_transport_xu.c:2398
8458#, fuzzy 8278#, fuzzy
8459msgid "Failed to create XU network sockets\n" 8279msgid "Failed to create XU network sockets\n"
8460msgstr "Se produjo un fallo al crear una nueva firma" 8280msgstr "Se produjo un fallo al crear una nueva firma"
8461 8281
8462#: src/transport/tcp_connection_legacy.c:450 8282#: src/transport/tcp_connection_legacy.c:452
8463#, c-format 8283#, c-format
8464msgid "Access denied to `%s'\n" 8284msgid "Access denied to `%s'\n"
8465msgstr "Acceso denegado a «%s»\n" 8285msgstr "Acceso denegado a «%s»\n"
8466 8286
8467#: src/transport/tcp_connection_legacy.c:467 8287#: src/transport/tcp_connection_legacy.c:469
8468#, c-format 8288#, c-format
8469msgid "Accepting connection from `%s': %p\n" 8289msgid "Accepting connection from `%s': %p\n"
8470msgstr "Aceptando conexión desde «%s»: %p\n" 8290msgstr "Aceptando conexión desde «%s»: %p\n"
8471 8291
8472#: src/transport/tcp_server_legacy.c:472 src/util/service.c:1109 8292#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1666
8473#, c-format 8293#, c-format
8474msgid "`%s' failed for port %d (%s).\n" 8294msgid "`%s' failed for port %d (%s).\n"
8475msgstr "«%s» falló para el puerto %d (%s).\n" 8295msgstr "«%s» falló para el puerto %d (%s).\n"
8476 8296
8477#: src/transport/tcp_server_legacy.c:482 src/util/service.c:1119 8297#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1676
8478#, c-format 8298#, c-format
8479msgid "`%s' failed for port %d (%s): address already in use\n" 8299msgid "`%s' failed for port %d (%s): address already in use\n"
8480msgstr "«%s» falló para el puerto %d (%s): dirección en uso actualmente\n" 8300msgstr "«%s» falló para el puerto %d (%s): dirección en uso actualmente\n"
8481 8301
8482#: src/transport/tcp_server_legacy.c:488 src/util/service.c:1125 8302#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1682
8483#, fuzzy, c-format 8303#, fuzzy, c-format
8484msgid "`%s' failed for `%s': address already in use\n" 8304msgid "`%s' failed for `%s': address already in use\n"
8485msgstr "«%s» falló para «%.*s»: dirección en uso actualmente\n" 8305msgstr "«%s» falló para «%.*s»: dirección en uso actualmente\n"
8486 8306
8487#: src/transport/tcp_server_legacy.c:888 8307#: src/transport/tcp_server_legacy.c:890
8488#, c-format 8308#, c-format
8489msgid "" 8309msgid ""
8490"Processing code for message of type %u did not call " 8310"Processing code for message of type %u did not call "
@@ -8493,195 +8313,197 @@ msgstr ""
8493"El código de procesado para el mensaje del tipo %u no llamó a " 8313"El código de procesado para el mensaje del tipo %u no llamó a "
8494"«GNUNET_SERVER_receive_done» después de %s\n" 8314"«GNUNET_SERVER_receive_done» después de %s\n"
8495 8315
8496#: src/transport/tcp_service_legacy.c:337 src/util/service.c:2378 8316#: src/transport/tcp_service_legacy.c:339 src/util/service.c:870
8497#, c-format 8317#, c-format
8498msgid "Unknown address family %d\n" 8318msgid "Unknown address family %d\n"
8499msgstr "Familia de direcciones %d desconocida\n" 8319msgstr "Familia de direcciones %d desconocida\n"
8500 8320
8501#: src/transport/tcp_service_legacy.c:344 8321#: src/transport/tcp_service_legacy.c:346
8502#, c-format 8322#, c-format
8503msgid "Access from `%s' denied to service `%s'\n" 8323msgid "Access from `%s' denied to service `%s'\n"
8504msgstr "Acceso denegado desde «%s» al servicio «%s»\n" 8324msgstr "Acceso denegado desde «%s» al servicio «%s»\n"
8505 8325
8506#: src/transport/tcp_service_legacy.c:400 src/util/service.c:437 8326#: src/transport/tcp_service_legacy.c:402 src/util/service.c:994
8507#, c-format 8327#, c-format
8508msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n" 8328msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
8509msgstr "No se pudo procesar la especificación de red IPv4 «%s» para «%s:%s»\n" 8329msgstr "No se pudo procesar la especificación de red IPv4 «%s» para «%s:%s»\n"
8510 8330
8511#: src/transport/tcp_service_legacy.c:438 src/util/service.c:480 8331#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1037
8512#, c-format 8332#, c-format
8513msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n" 8333msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
8514msgstr "No se pudo procesar la especificación de red IPv6 «%s» para «%s:%s»\n" 8334msgstr "No se pudo procesar la especificación de red IPv6 «%s» para «%s:%s»\n"
8515 8335
8516#: src/transport/tcp_service_legacy.c:902 src/util/service.c:1040 8336#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1597
8517msgid "Could not access a pre-bound socket, will try to bind myself\n" 8337msgid "Could not access a pre-bound socket, will try to bind myself\n"
8518msgstr "" 8338msgstr ""
8519"No se pudo acceder a un «socket» pre-ascociado, lo intentaré asociar yo " 8339"No se pudo acceder a un «socket» pre-ascociado, lo intentaré asociar yo "
8520"mismo\n" 8340"mismo\n"
8521 8341
8522#: src/transport/tcp_service_legacy.c:951 8342#: src/transport/tcp_service_legacy.c:953
8523#: src/transport/tcp_service_legacy.c:969 src/util/service.c:1192 8343#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1750
8524#, c-format 8344#, c-format
8525msgid "Specified value for `%s' of service `%s' is invalid\n" 8345msgid "Specified value for `%s' of service `%s' is invalid\n"
8526msgstr "El valor especificado «%s» para el servicio «%s» no es válido\n" 8346msgstr "El valor especificado «%s» para el servicio «%s» no es válido\n"
8527 8347
8528#: src/transport/tcp_service_legacy.c:994 src/util/service.c:1224 8348#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1783
8529#, c-format 8349#, c-format
8530msgid "Could not access pre-bound socket %u, will try to bind myself\n" 8350msgid "Could not access pre-bound socket %u, will try to bind myself\n"
8531msgstr "" 8351msgstr ""
8532"No se pudo acceder al «socket» pre-ascociado %u, lo intentaré asociar yo " 8352"No se pudo acceder al «socket» pre-ascociado %u, lo intentaré asociar yo "
8533"mismo\n" 8353"mismo\n"
8534 8354
8535#: src/transport/tcp_service_legacy.c:1159 8355#: src/transport/tcp_service_legacy.c:1161
8536#, c-format 8356#, c-format
8537msgid "Failed to start `%s' at `%s'\n" 8357msgid "Failed to start `%s' at `%s'\n"
8538msgstr "Se produjo un fallo al inciar «%s» en «%s»\n" 8358msgstr "Se produjo un fallo al inciar «%s» en «%s»\n"
8539 8359
8540#: src/transport/tcp_service_legacy.c:1200 8360#: src/transport/tcp_service_legacy.c:1202
8541#, c-format 8361#, c-format
8542msgid "Service `%s' runs at %s\n" 8362msgid "Service `%s' runs at %s\n"
8543msgstr "El servicio «%s» se ejecuta en %s\n" 8363msgstr "El servicio «%s» se ejecuta en %s\n"
8544 8364
8545#: src/transport/tcp_service_legacy.c:1249 src/util/service.c:1498 8365#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2057
8546msgid "Service process failed to initialize\n" 8366msgid "Service process failed to initialize\n"
8547msgstr "No se pudo inicializar el proceso del servicio\n" 8367msgstr "No se pudo inicializar el proceso del servicio\n"
8548 8368
8549#: src/transport/tcp_service_legacy.c:1253 src/util/service.c:1502 8369#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2061
8550msgid "Service process could not initialize server function\n" 8370msgid "Service process could not initialize server function\n"
8551msgstr "" 8371msgstr ""
8552"No se pudo inicializar la función del servidor en el proceso del servicio\n" 8372"No se pudo inicializar la función del servidor en el proceso del servicio\n"
8553 8373
8554#: src/transport/tcp_service_legacy.c:1257 src/util/service.c:1506 8374#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2065
8555msgid "Service process failed to report status\n" 8375msgid "Service process failed to report status\n"
8556msgstr "El proceso del servicio no devolvió un estado\n" 8376msgstr "El proceso del servicio no devolvió un estado\n"
8557 8377
8558#: src/transport/tcp_service_legacy.c:1311 src/util/disk.c:1521 8378#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
8559#: src/util/service.c:1376 8379#: src/util/service.c:1935
8560#, c-format 8380#, c-format
8561msgid "Cannot obtain information about user `%s': %s\n" 8381msgid "Cannot obtain information about user `%s': %s\n"
8562msgstr "No se pudo obtener información acerca del usuario «%s»: %s\n" 8382msgstr "No se pudo obtener información acerca del usuario «%s»: %s\n"
8563 8383
8564#: src/transport/tcp_service_legacy.c:1312 src/util/service.c:1378 8384#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1937
8565msgid "No such user" 8385msgid "No such user"
8566msgstr "No existe tal usuario" 8386msgstr "No existe tal usuario"
8567 8387
8568#: src/transport/tcp_service_legacy.c:1325 src/util/service.c:1397 8388#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1956
8569#, c-format 8389#, c-format
8570msgid "Cannot change user/group to `%s': %s\n" 8390msgid "Cannot change user/group to `%s': %s\n"
8571msgstr "Imposible cambiar el usuario/grupo a «%s»: %s\n" 8391msgstr "Imposible cambiar el usuario/grupo a «%s»: %s\n"
8572 8392
8573#: src/transport/tcp_service_legacy.c:1396 src/util/service.c:1757 8393#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2318
8574msgid "do daemonize (detach from terminal)" 8394msgid "do daemonize (detach from terminal)"
8575msgstr "demonizar (desasociar del terminal)" 8395msgstr "demonizar (desasociar del terminal)"
8576 8396
8577#: src/transport/tcp_service_legacy.c:1446 src/util/program.c:277 8397#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:2382
8578#: src/util/service.c:1820 8398#: src/util/service.c:2397
8579#, fuzzy, c-format 8399#, fuzzy, c-format
8580msgid "Malformed configuration file `%s', exit ...\n" 8400msgid "Malformed configuration file `%s', exit ...\n"
8581msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" 8401msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
8582 8402
8583#: src/transport/tcp_service_legacy.c:1456 src/util/program.c:297 8403#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2409
8584#: src/util/service.c:1831
8585#, fuzzy 8404#, fuzzy
8586msgid "Malformed configuration, exit ...\n" 8405msgid "Malformed configuration, exit ...\n"
8587msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n" 8406msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
8588 8407
8589#: src/transport/tcp_service_legacy.c:1461 src/util/program.c:290 8408#: src/transport/tcp_service_legacy.c:1463
8590#: src/util/service.c:1837
8591#, c-format 8409#, c-format
8592msgid "Could not access configuration file `%s'\n" 8410msgid "Could not access configuration file `%s'\n"
8593msgstr "No se pudo acceder al fichero de configuración «%s»\n" 8411msgstr "No se pudo acceder al fichero de configuración «%s»\n"
8594 8412
8595#: src/util/bio.c:179 src/util/bio.c:187 8413#: src/transport/transport_api2_communication.c:764
8414msgid "Dropped backchanel message: handler not provided by communicator\n"
8415msgstr ""
8416
8417#: src/util/bio.c:181 src/util/bio.c:189
8596#, c-format 8418#, c-format
8597msgid "Error reading `%s': %s" 8419msgid "Error reading `%s': %s"
8598msgstr "Error leyendo «%s»: %s" 8420msgstr "Error leyendo «%s»: %s"
8599 8421
8600#: src/util/bio.c:189 8422#: src/util/bio.c:191
8601msgid "End of file" 8423msgid "End of file"
8602msgstr "Fin del fichero" 8424msgstr "Fin del fichero"
8603 8425
8604#: src/util/bio.c:246 8426#: src/util/bio.c:248
8605#, c-format 8427#, c-format
8606msgid "Error reading length of string `%s'" 8428msgid "Error reading length of string `%s'"
8607msgstr "Se produjo un error leyendo la cadena «%s»" 8429msgstr "Se produjo un error leyendo la cadena «%s»"
8608 8430
8609#: src/util/bio.c:256 8431#: src/util/bio.c:258
8610#, c-format 8432#, c-format
8611msgid "String `%s' longer than allowed (%u > %u)" 8433msgid "String `%s' longer than allowed (%u > %u)"
8612msgstr "La cadena «%s» es mayor de lo permitido (%u > %u)" 8434msgstr "La cadena «%s» es mayor de lo permitido (%u > %u)"
8613 8435
8614#: src/util/bio.c:304 8436#: src/util/bio.c:306
8615#, c-format 8437#, c-format
8616msgid "Serialized metadata `%s' larger than allowed (%u>%u)" 8438msgid "Serialized metadata `%s' larger than allowed (%u>%u)"
8617msgstr "Los metadatos serializados «%s» son mayores de lo permitido (%u>%u)" 8439msgstr "Los metadatos serializados «%s» son mayores de lo permitido (%u>%u)"
8618 8440
8619#: src/util/bio.c:326 8441#: src/util/bio.c:328
8620#, c-format 8442#, c-format
8621msgid "Metadata `%s' failed to deserialize" 8443msgid "Metadata `%s' failed to deserialize"
8622msgstr "Se produjo un fallo al deserializar los metadatos «%s»" 8444msgstr "Se produjo un fallo al deserializar los metadatos «%s»"
8623 8445
8624#: src/util/client.c:732 8446#: src/util/client.c:734
8625msgid "not a valid filename" 8447msgid "not a valid filename"
8626msgstr "" 8448msgstr ""
8627 8449
8628#: src/util/client.c:923 8450#: src/util/client.c:925
8629#, c-format 8451#, c-format
8630msgid "Need a non-empty hostname for service `%s'.\n" 8452msgid "Need a non-empty hostname for service `%s'.\n"
8631msgstr "Se necesita un nombre de máquina no vacío para el servicio «%s».\n" 8453msgstr "Se necesita un nombre de máquina no vacío para el servicio «%s».\n"
8632 8454
8633#: src/util/common_logging.c:257 src/util/common_logging.c:1159 8455#: src/util/common_logging.c:259 src/util/common_logging.c:1162
8634msgid "DEBUG" 8456msgid "DEBUG"
8635msgstr "DEPURACIÓN" 8457msgstr "DEPURACIÓN"
8636 8458
8637#: src/util/common_logging.c:259 src/util/common_logging.c:1157 8459#: src/util/common_logging.c:261 src/util/common_logging.c:1160
8638msgid "INFO" 8460msgid "INFO"
8639msgstr "INFORMACIÓN" 8461msgstr "INFORMACIÓN"
8640 8462
8641#: src/util/common_logging.c:261 src/util/common_logging.c:1155 8463#: src/util/common_logging.c:263 src/util/common_logging.c:1158
8642msgid "MESSAGE" 8464msgid "MESSAGE"
8643msgstr "MENSAJE" 8465msgstr "MENSAJE"
8644 8466
8645#: src/util/common_logging.c:263 src/util/common_logging.c:1153 8467#: src/util/common_logging.c:265 src/util/common_logging.c:1156
8646msgid "WARNING" 8468msgid "WARNING"
8647msgstr "PELIGRO" 8469msgstr "PELIGRO"
8648 8470
8649#: src/util/common_logging.c:265 src/util/common_logging.c:1151 8471#: src/util/common_logging.c:267 src/util/common_logging.c:1154
8650msgid "ERROR" 8472msgid "ERROR"
8651msgstr "ERROR" 8473msgstr "ERROR"
8652 8474
8653#: src/util/common_logging.c:267 src/util/common_logging.c:1161 8475#: src/util/common_logging.c:269 src/util/common_logging.c:1164
8654msgid "NONE" 8476msgid "NONE"
8655msgstr "NINGUNO" 8477msgstr "NINGUNO"
8656 8478
8657#: src/util/common_logging.c:631 src/util/common_logging.c:661 8479#: src/util/common_logging.c:633 src/util/common_logging.c:663
8658#, c-format 8480#, c-format
8659msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n" 8481msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
8660msgstr "" 8482msgstr ""
8661 8483
8662#: src/util/common_logging.c:895 8484#: src/util/common_logging.c:898
8663#, c-format 8485#, c-format
8664msgid "Message `%.*s' repeated %u times in the last %s\n" 8486msgid "Message `%.*s' repeated %u times in the last %s\n"
8665msgstr "Mensaje `%.*s» repetido %u veces en el último %s\n" 8487msgstr "Mensaje `%.*s» repetido %u veces en el último %s\n"
8666 8488
8667#: src/util/common_logging.c:1162 8489#: src/util/common_logging.c:1165
8668msgid "INVALID" 8490msgid "INVALID"
8669msgstr "NO VÁLIDO" 8491msgstr "NO VÁLIDO"
8670 8492
8671#: src/util/common_logging.c:1455 8493#: src/util/common_logging.c:1458
8672msgid "unknown address" 8494msgid "unknown address"
8673msgstr "dirección desconocida" 8495msgstr "dirección desconocida"
8674 8496
8675#: src/util/common_logging.c:1497 8497#: src/util/common_logging.c:1500
8676msgid "invalid address" 8498msgid "invalid address"
8677msgstr "dirección no válida" 8499msgstr "dirección no válida"
8678 8500
8679#: src/util/common_logging.c:1515 8501#: src/util/common_logging.c:1518
8680#, c-format 8502#, c-format
8681msgid "Configuration fails to specify option `%s' in section `%s'!\n" 8503msgid "Configuration fails to specify option `%s' in section `%s'!\n"
8682msgstr "¡La configuración no especifica la opción «%s» en la sección «%s»!\n" 8504msgstr "¡La configuración no especifica la opción «%s» en la sección «%s»!\n"
8683 8505
8684#: src/util/common_logging.c:1536 8506#: src/util/common_logging.c:1539
8685#, c-format 8507#, c-format
8686msgid "" 8508msgid ""
8687"Configuration specifies invalid value for option `%s' in section `%s': %s\n" 8509"Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8689,22 +8511,22 @@ msgstr ""
8689"La configuración especifica un valor no válido en la opción «%s» de la " 8511"La configuración especifica un valor no válido en la opción «%s» de la "
8690"sección «%s»: %s\n" 8512"sección «%s»: %s\n"
8691 8513
8692#: src/util/configuration.c:294 8514#: src/util/configuration.c:331
8693#, c-format 8515#, c-format
8694msgid "Syntax error while deserializing in line %u\n" 8516msgid "Syntax error while deserializing in line %u\n"
8695msgstr "Error de sintaxis en la línea %u mientras se deserializaba\n" 8517msgstr "Error de sintaxis en la línea %u mientras se deserializaba\n"
8696 8518
8697#: src/util/configuration.c:361 8519#: src/util/configuration.c:398
8698#, fuzzy, c-format 8520#, fuzzy, c-format
8699msgid "Error while reading file `%s'\n" 8521msgid "Error while reading file `%s'\n"
8700msgstr "Error decodificando clave %u\n" 8522msgstr "Error decodificando clave %u\n"
8701 8523
8702#: src/util/configuration.c:970 8524#: src/util/configuration.c:1016
8703#, fuzzy 8525#, fuzzy
8704msgid "Not a valid relative time specification" 8526msgid "Not a valid relative time specification"
8705msgstr "Tiempo de expiración no válido para la operación «%s»\n" 8527msgstr "Tiempo de expiración no válido para la operación «%s»\n"
8706 8528
8707#: src/util/configuration.c:1059 8529#: src/util/configuration.c:1105
8708#, c-format 8530#, c-format
8709msgid "" 8531msgid ""
8710"Configuration value '%s' for '%s' in section '%s' is not in set of legal " 8532"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
@@ -8713,24 +8535,24 @@ msgstr ""
8713"El valor de configuración «%s» para «%s» de la sección «%s» no está dentro " 8535"El valor de configuración «%s» para «%s» de la sección «%s» no está dentro "
8714"de las opciones legales\n" 8536"de las opciones legales\n"
8715 8537
8716#: src/util/configuration.c:1178 8538#: src/util/configuration.c:1224
8717#, c-format 8539#, c-format
8718msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n" 8540msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n"
8719msgstr "" 8541msgstr ""
8720 8542
8721#: src/util/configuration.c:1211 8543#: src/util/configuration.c:1257
8722#, fuzzy, c-format 8544#, fuzzy, c-format
8723msgid "Missing closing `%s' in option `%s'\n" 8545msgid "Missing closing `%s' in option `%s'\n"
8724msgstr "Falta la opción «%s» para la operación «%s»\n" 8546msgstr "Falta la opción «%s» para la operación «%s»\n"
8725 8547
8726#: src/util/configuration.c:1279 8548#: src/util/configuration.c:1325
8727#, c-format 8549#, c-format
8728msgid "" 8550msgid ""
8729"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined " 8551"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined "
8730"as an environmental variable\n" 8552"as an environmental variable\n"
8731msgstr "" 8553msgstr ""
8732 8554
8733#: src/util/container_bloomfilter.c:530 8555#: src/util/container_bloomfilter.c:532
8734#, c-format 8556#, c-format
8735msgid "" 8557msgid ""
8736"Size of file on disk is incorrect for this Bloom filter (want %llu, have " 8558"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
@@ -8739,43 +8561,43 @@ msgstr ""
8739"El tamaño del fichero en disco es incorrecto para este «Bloom " 8561"El tamaño del fichero en disco es incorrecto para este «Bloom "
8740"filter» (esperado %llu, tiene %llu)\n" 8562"filter» (esperado %llu, tiene %llu)\n"
8741 8563
8742#: src/util/crypto_ecc.c:860 8564#: src/util/crypto_ecc.c:862
8743#, c-format 8565#, c-format
8744msgid "ECC signing failed at %s:%d: %s\n" 8566msgid "ECC signing failed at %s:%d: %s\n"
8745msgstr "El firmado ECC falló en %s:%d: %s\n" 8567msgstr "El firmado ECC falló en %s:%d: %s\n"
8746 8568
8747#: src/util/crypto_ecc.c:915 8569#: src/util/crypto_ecc.c:917
8748#, fuzzy, c-format 8570#, fuzzy, c-format
8749msgid "EdDSA signing failed at %s:%d: %s\n" 8571msgid "EdDSA signing failed at %s:%d: %s\n"
8750msgstr "El firmado ECC falló en %s:%d: %s\n" 8572msgstr "El firmado ECC falló en %s:%d: %s\n"
8751 8573
8752#: src/util/crypto_ecc.c:994 8574#: src/util/crypto_ecc.c:996
8753#, fuzzy, c-format 8575#, fuzzy, c-format
8754msgid "ECDSA signature verification failed at %s:%d: %s\n" 8576msgid "ECDSA signature verification failed at %s:%d: %s\n"
8755msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" 8577msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n"
8756 8578
8757#: src/util/crypto_ecc.c:1055 8579#: src/util/crypto_ecc.c:1057
8758#, fuzzy, c-format 8580#, fuzzy, c-format
8759msgid "EdDSA signature verification failed at %s:%d: %s\n" 8581msgid "EdDSA signature verification failed at %s:%d: %s\n"
8760msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" 8582msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n"
8761 8583
8762#: src/util/crypto_ecc_setup.c:121 src/util/crypto_ecc_setup.c:160 8584#: src/util/crypto_ecc_setup.c:123 src/util/crypto_ecc_setup.c:162
8763#: src/util/crypto_ecc_setup.c:303 src/util/crypto_ecc_setup.c:350 8585#: src/util/crypto_ecc_setup.c:305 src/util/crypto_ecc_setup.c:352
8764#, c-format 8586#, c-format
8765msgid "Could not acquire lock on file `%s': %s...\n" 8587msgid "Could not acquire lock on file `%s': %s...\n"
8766msgstr "No se pudo bloquear el fichero «%s»: %s...\n" 8588msgstr "No se pudo bloquear el fichero «%s»: %s...\n"
8767 8589
8768#: src/util/crypto_ecc_setup.c:127 src/util/crypto_ecc_setup.c:309 8590#: src/util/crypto_ecc_setup.c:129 src/util/crypto_ecc_setup.c:311
8769msgid "Creating a new private key. This may take a while.\n" 8591msgid "Creating a new private key. This may take a while.\n"
8770msgstr "Generando una clave privada nueva. Esto puede tomar un tiempo.\n" 8592msgstr "Generando una clave privada nueva. Esto puede tomar un tiempo.\n"
8771 8593
8772#: src/util/crypto_ecc_setup.c:164 src/util/crypto_ecc_setup.c:354 8594#: src/util/crypto_ecc_setup.c:166 src/util/crypto_ecc_setup.c:356
8773msgid "This may be ok if someone is currently generating a private key.\n" 8595msgid "This may be ok if someone is currently generating a private key.\n"
8774msgstr "" 8596msgstr ""
8775"Esto puede estar bien si alguien está actualmente generando una clave " 8597"Esto puede estar bien si alguien está actualmente generando una clave "
8776"privada.\n" 8598"privada.\n"
8777 8599
8778#: src/util/crypto_ecc_setup.c:194 src/util/crypto_ecc_setup.c:396 8600#: src/util/crypto_ecc_setup.c:196 src/util/crypto_ecc_setup.c:398
8779#, c-format 8601#, c-format
8780msgid "" 8602msgid ""
8781"When trying to read key file `%s' I found %u bytes but I need at least %u.\n" 8603"When trying to read key file `%s' I found %u bytes but I need at least %u.\n"
@@ -8783,67 +8605,67 @@ msgstr ""
8783"Cuando se intentaba leer el fichero de claves «%s» se encontraron %u bytes " 8605"Cuando se intentaba leer el fichero de claves «%s» se encontraron %u bytes "
8784"pero al menos %u son necesarios.\n" 8606"pero al menos %u son necesarios.\n"
8785 8607
8786#: src/util/crypto_ecc_setup.c:199 src/util/crypto_ecc_setup.c:400 8608#: src/util/crypto_ecc_setup.c:201 src/util/crypto_ecc_setup.c:402
8787msgid "This may be ok if someone is currently generating a key.\n" 8609msgid "This may be ok if someone is currently generating a key.\n"
8788msgstr "" 8610msgstr ""
8789"Esto puede ser correcto si alguien está actualmente generando una clave de " 8611"Esto puede ser correcto si alguien está actualmente generando una clave de "
8790"máquina.\n" 8612"máquina.\n"
8791 8613
8792#: src/util/crypto_ecc_setup.c:466 8614#: src/util/crypto_ecc_setup.c:468
8793#, fuzzy 8615#, fuzzy
8794msgid "Could not load peer's private key\n" 8616msgid "Could not load peer's private key\n"
8795msgstr "No se pudo acceder a la clave de máquina.\n" 8617msgstr "No se pudo acceder a la clave de máquina.\n"
8796 8618
8797#: src/util/crypto_random.c:304 8619#: src/util/crypto_random.c:306
8798#, c-format 8620#, c-format
8799msgid "libgcrypt has not the expected version (version %s is required).\n" 8621msgid "libgcrypt has not the expected version (version %s is required).\n"
8800msgstr "libgcrypt no tiene la versión esperada (se necesita la versión %s).\n" 8622msgstr "libgcrypt no tiene la versión esperada (se necesita la versión %s).\n"
8801 8623
8802#: src/util/crypto_rsa.c:848 8624#: src/util/crypto_rsa.c:850
8803#, fuzzy, c-format 8625#, fuzzy, c-format
8804msgid "RSA signing failed at %s:%d: %s\n" 8626msgid "RSA signing failed at %s:%d: %s\n"
8805msgstr "El firmado ECC falló en %s:%d: %s\n" 8627msgstr "El firmado ECC falló en %s:%d: %s\n"
8806 8628
8807#: src/util/crypto_rsa.c:1187 8629#: src/util/crypto_rsa.c:1189
8808#, c-format 8630#, c-format
8809msgid "RSA signature verification failed at %s:%d: %s\n" 8631msgid "RSA signature verification failed at %s:%d: %s\n"
8810msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" 8632msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n"
8811 8633
8812#: src/util/disk.c:1251 8634#: src/util/disk.c:1255
8813#, c-format 8635#, c-format
8814msgid "Expected `%s' to be a directory!\n" 8636msgid "Expected `%s' to be a directory!\n"
8815msgstr "¡Se esperaba que «%s» fuera un directorio!\n" 8637msgstr "¡Se esperaba que «%s» fuera un directorio!\n"
8816 8638
8817#: src/util/dnsparser.c:250 8639#: src/util/dnsparser.c:264
8818#, c-format 8640#, c-format
8819msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n" 8641msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
8820msgstr "" 8642msgstr ""
8821"Se produjo un fallo al convertir el nombre en formato DNS IDNA «%s» a UTF-8: " 8643"Se produjo un fallo al convertir el nombre en formato DNS IDNA «%s» a UTF-8: "
8822"%s\n" 8644"%s\n"
8823 8645
8824#: src/util/dnsparser.c:940 8646#: src/util/dnsparser.c:954
8825#, c-format 8647#, c-format
8826msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n" 8648msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
8827msgstr "" 8649msgstr ""
8828"Se produjo un fallo al convertir el nombre en UTF-8 «%s» al formato DNS " 8650"Se produjo un fallo al convertir el nombre en UTF-8 «%s» al formato DNS "
8829"IDNA: %s\n" 8651"IDNA: %s\n"
8830 8652
8831#: src/util/dnsstub.c:229 8653#: src/util/dnsstub.c:231
8832#, c-format 8654#, c-format
8833msgid "Could not bind to any port: %s\n" 8655msgid "Could not bind to any port: %s\n"
8834msgstr "No se pudo asociar con ningún puerto: %s\n" 8656msgstr "No se pudo asociar con ningún puerto: %s\n"
8835 8657
8836#: src/util/dnsstub.c:360 8658#: src/util/dnsstub.c:362
8837#, c-format 8659#, c-format
8838msgid "Received DNS response that is too small (%u bytes)" 8660msgid "Received DNS response that is too small (%u bytes)"
8839msgstr "Recibida respuesta DNS demasiado pequeña (%u bytes)" 8661msgstr "Recibida respuesta DNS demasiado pequeña (%u bytes)"
8840 8662
8841#: src/util/dnsstub.c:507 8663#: src/util/dnsstub.c:509
8842#, fuzzy, c-format 8664#, fuzzy, c-format
8843msgid "Failed to send DNS request to %s: %s\n" 8665msgid "Failed to send DNS request to %s: %s\n"
8844msgstr "Se produjo un fallo al mandar la petición DNS a %s\n" 8666msgstr "Se produjo un fallo al mandar la petición DNS a %s\n"
8845 8667
8846#: src/util/dnsstub.c:513 8668#: src/util/dnsstub.c:515
8847#, c-format 8669#, c-format
8848msgid "Sent DNS request to %s\n" 8670msgid "Sent DNS request to %s\n"
8849msgstr "Petición DNS enviada a %s\n" 8671msgstr "Petición DNS enviada a %s\n"
@@ -8913,11 +8735,11 @@ msgstr "Use %s para obtener una lista de opciones.\n"
8913msgid "Missing mandatory option `%s'.\n" 8735msgid "Missing mandatory option `%s'.\n"
8914msgstr "Falta la opción «%s» para la operación «%s»\n" 8736msgstr "Falta la opción «%s» para la operación «%s»\n"
8915 8737
8916#: src/util/getopt_helpers.c:68 8738#: src/util/getopt_helpers.c:70
8917msgid "print the version number" 8739msgid "print the version number"
8918msgstr "imprime el número de versión" 8740msgstr "imprime el número de versión"
8919 8741
8920#: src/util/getopt_helpers.c:113 8742#: src/util/getopt_helpers.c:116
8921#, c-format 8743#, c-format
8922msgid "" 8744msgid ""
8923"Arguments mandatory for long options are also mandatory for short options.\n" 8745"Arguments mandatory for long options are also mandatory for short options.\n"
@@ -8925,124 +8747,124 @@ msgstr ""
8925"Los parámetros obligatorios para las opciones largas también lo son para sus " 8747"Los parámetros obligatorios para las opciones largas también lo son para sus "
8926"versiones cortas.\n" 8748"versiones cortas.\n"
8927 8749
8928#: src/util/getopt_helpers.c:201 8750#: src/util/getopt_helpers.c:204
8929msgid "print this help" 8751msgid "print this help"
8930msgstr "imprime esta ayuda" 8752msgstr "imprime esta ayuda"
8931 8753
8932#: src/util/getopt_helpers.c:279 8754#: src/util/getopt_helpers.c:282
8933msgid "be verbose" 8755msgid "be verbose"
8934msgstr "" 8756msgstr ""
8935 8757
8936#: src/util/getopt_helpers.c:420 8758#: src/util/getopt_helpers.c:423
8937msgid "configure logging to use LOGLEVEL" 8759msgid "configure logging to use LOGLEVEL"
8938msgstr "" 8760msgstr ""
8939 8761
8940#: src/util/getopt_helpers.c:500 8762#: src/util/getopt_helpers.c:503
8941msgid "configure logging to write logs to FILENAME" 8763msgid "configure logging to write logs to FILENAME"
8942msgstr "" 8764msgstr ""
8943 8765
8944#: src/util/getopt_helpers.c:522 8766#: src/util/getopt_helpers.c:525
8945#, fuzzy 8767#, fuzzy
8946msgid "use configuration file FILENAME" 8768msgid "use configuration file FILENAME"
8947msgstr "crear ficheros de configuración únicos" 8769msgstr "crear ficheros de configuración únicos"
8948 8770
8949#: src/util/getopt_helpers.c:559 src/util/getopt_helpers.c:763 8771#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
8950#: src/util/getopt_helpers.c:830 8772#: src/util/getopt_helpers.c:839
8951#, c-format 8773#, c-format
8952msgid "You must pass a number to the `%s' option.\n" 8774msgid "You must pass a number to the `%s' option.\n"
8953msgstr "Tienes que introducir un número en la opción «%s».\n" 8775msgstr "Tienes que introducir un número en la opción «%s».\n"
8954 8776
8955#: src/util/getopt_helpers.c:624 8777#: src/util/getopt_helpers.c:629
8956#, c-format 8778#, c-format
8957msgid "You must pass relative time to the `%s' option.\n" 8779msgid "You must pass relative time to the `%s' option.\n"
8958msgstr "Debes introducir un tiempo relativo en la opción «%s».\n" 8780msgstr "Debes introducir un tiempo relativo en la opción «%s».\n"
8959 8781
8960#: src/util/getopt_helpers.c:690 8782#: src/util/getopt_helpers.c:695
8961#, fuzzy, c-format 8783#, fuzzy, c-format
8962msgid "You must pass absolute time to the `%s' option.\n" 8784msgid "You must pass absolute time to the `%s' option.\n"
8963msgstr "Debes introducir un tiempo relativo en la opción «%s».\n" 8785msgstr "Debes introducir un tiempo relativo en la opción «%s».\n"
8964 8786
8965#: src/util/getopt_helpers.c:754 8787#: src/util/getopt_helpers.c:760
8966#, c-format 8788#, c-format
8967msgid "Your input for the '%s' option has to be a non negative number \n" 8789msgid "Your input for the '%s' option has to be a non negative number \n"
8968msgstr "" 8790msgstr ""
8969 8791
8970#: src/util/getopt_helpers.c:837 8792#: src/util/getopt_helpers.c:846
8971#, fuzzy, c-format 8793#, fuzzy, c-format
8972msgid "You must pass a number below %u to the `%s' option.\n" 8794msgid "You must pass a number below %u to the `%s' option.\n"
8973msgstr "Tienes que introducir un número en la opción «%s».\n" 8795msgstr "Tienes que introducir un número en la opción «%s».\n"
8974 8796
8975#: src/util/getopt_helpers.c:923 8797#: src/util/getopt_helpers.c:932
8976#, c-format 8798#, c-format
8977msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n" 8799msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
8978msgstr "" 8800msgstr ""
8979 8801
8980#: src/util/gnunet-config.c:157 8802#: src/util/gnunet-config.c:160
8981#, fuzzy, c-format 8803#, fuzzy, c-format
8982msgid "failed to load configuration defaults" 8804msgid "failed to load configuration defaults"
8983msgstr "Se produjo un fallo al cargar la configuración de %s\n" 8805msgstr "Se produjo un fallo al cargar la configuración de %s\n"
8984 8806
8985#: src/util/gnunet-config.c:170 8807#: src/util/gnunet-config.c:173
8986#, c-format 8808#, fuzzy, c-format
8987msgid "--section argument is required\n" 8809msgid "%s or %s argument is required\n"
8988msgstr "el parámetro --section es necesario\n" 8810msgstr "el parámetro --section es necesario\n"
8989 8811
8990#: src/util/gnunet-config.c:173 8812#: src/util/gnunet-config.c:181
8991#, c-format 8813#, c-format
8992msgid "The following sections are available:\n" 8814msgid "The following sections are available:\n"
8993msgstr "" 8815msgstr ""
8994 8816
8995#: src/util/gnunet-config.c:224 8817#: src/util/gnunet-config.c:232
8996#, c-format 8818#, c-format
8997msgid "--option argument required to set value\n" 8819msgid "--option argument required to set value\n"
8998msgstr "el parámetro --option es necesario para establecer un valor\n" 8820msgstr "el parámetro --option es necesario para establecer un valor\n"
8999 8821
9000#: src/util/gnunet-config.c:263 8822#: src/util/gnunet-config.c:286
9001msgid "obtain option of value as a filename (with $-expansion)" 8823msgid "obtain option of value as a filename (with $-expansion)"
9002msgstr "" 8824msgstr ""
9003"obtener la opción del valor como un nombre de fichero (con expansión del $)" 8825"obtener la opción del valor como un nombre de fichero (con expansión del $)"
9004 8826
9005#: src/util/gnunet-config.c:268 8827#: src/util/gnunet-config.c:291
9006msgid "name of the section to access" 8828msgid "name of the section to access"
9007msgstr "nombre de la sección a la que acceder" 8829msgstr "nombre de la sección a la que acceder"
9008 8830
9009#: src/util/gnunet-config.c:273 8831#: src/util/gnunet-config.c:296
9010msgid "name of the option to access" 8832msgid "name of the option to access"
9011msgstr "nombre de la opción a la que acceder" 8833msgstr "nombre de la opción a la que acceder"
9012 8834
9013#: src/util/gnunet-config.c:278 8835#: src/util/gnunet-config.c:301
9014msgid "value to set" 8836msgid "value to set"
9015msgstr "valor a establecer" 8837msgstr "valor a establecer"
9016 8838
9017#: src/util/gnunet-config.c:282 8839#: src/util/gnunet-config.c:305
9018#, fuzzy 8840#, fuzzy
9019msgid "print available configuration sections" 8841msgid "print available configuration sections"
9020msgstr "Falta configuración sobre las opciones de claves.\n" 8842msgstr "Falta configuración sobre las opciones de claves.\n"
9021 8843
9022#: src/util/gnunet-config.c:286 8844#: src/util/gnunet-config.c:309
9023msgid "write configuration file that only contains delta to defaults" 8845msgid "write configuration file that only contains delta to defaults"
9024msgstr "" 8846msgstr ""
9025 8847
9026#: src/util/gnunet-config.c:299 8848#: src/util/gnunet-config.c:322
9027msgid "Manipulate GNUnet configuration files" 8849msgid "Manipulate GNUnet configuration files"
9028msgstr "Manipular ficheros de configuración de GNUnet" 8850msgstr "Manipular ficheros de configuración de GNUnet"
9029 8851
9030#: src/util/gnunet-ecc.c:92 8852#: src/util/gnunet-ecc.c:94
9031#, c-format 8853#, c-format
9032msgid "Failed to open `%s': %s\n" 8854msgid "Failed to open `%s': %s\n"
9033msgstr "Se produjo un fallo al abrir «%s»: %s\n" 8855msgstr "Se produjo un fallo al abrir «%s»: %s\n"
9034 8856
9035#: src/util/gnunet-ecc.c:128 8857#: src/util/gnunet-ecc.c:130
9036#, fuzzy, c-format 8858#, fuzzy, c-format
9037msgid "Generating %u keys like %s, please wait" 8859msgid "Generating %u keys like %s, please wait"
9038msgstr "Generando %u claves, por favor, espere" 8860msgstr "Generando %u claves, por favor, espere"
9039 8861
9040#: src/util/gnunet-ecc.c:141 8862#: src/util/gnunet-ecc.c:143
9041#, c-format 8863#, c-format
9042msgid "Generating %u keys, please wait" 8864msgid "Generating %u keys, please wait"
9043msgstr "Generando %u claves, por favor, espere" 8865msgstr "Generando %u claves, por favor, espere"
9044 8866
9045#: src/util/gnunet-ecc.c:182 8867#: src/util/gnunet-ecc.c:184
9046#, c-format 8868#, c-format
9047msgid "" 8869msgid ""
9048"\n" 8870"\n"
@@ -9051,103 +8873,103 @@ msgstr ""
9051"\n" 8873"\n"
9052"Se produjo un fallo al escribir en «%s»: %s\n" 8874"Se produjo un fallo al escribir en «%s»: %s\n"
9053 8875
9054#: src/util/gnunet-ecc.c:192 8876#: src/util/gnunet-ecc.c:194
9055#, fuzzy, c-format 8877#, fuzzy, c-format
9056msgid "" 8878msgid ""
9057"\n" 8879"\n"
9058"Finished!\n" 8880"Finished!\n"
9059msgstr "¡Finalizado!\n" 8881msgstr "¡Finalizado!\n"
9060 8882
9061#: src/util/gnunet-ecc.c:195 8883#: src/util/gnunet-ecc.c:197
9062#, c-format 8884#, c-format
9063msgid "" 8885msgid ""
9064"\n" 8886"\n"
9065"Error, %u keys not generated\n" 8887"Error, %u keys not generated\n"
9066msgstr "" 8888msgstr ""
9067 8889
9068#: src/util/gnunet-ecc.c:288 8890#: src/util/gnunet-ecc.c:290
9069#, fuzzy, c-format 8891#, fuzzy, c-format
9070msgid "Hostkeys file `%s' not found\n" 8892msgid "Hostkeys file `%s' not found\n"
9071msgstr "El fichero de máquinas %s no fue encontrado\n" 8893msgstr "El fichero de máquinas %s no fue encontrado\n"
9072 8894
9073#: src/util/gnunet-ecc.c:303 8895#: src/util/gnunet-ecc.c:305
9074#, fuzzy, c-format 8896#, fuzzy, c-format
9075msgid "Hostkeys file `%s' is empty\n" 8897msgid "Hostkeys file `%s' is empty\n"
9076msgstr "El archivo de amigos «%s» está vacío.\n" 8898msgstr "El archivo de amigos «%s» está vacío.\n"
9077 8899
9078#: src/util/gnunet-ecc.c:332 8900#: src/util/gnunet-ecc.c:334
9079#, fuzzy, c-format 8901#, fuzzy, c-format
9080msgid "Could not read hostkey file: %s\n" 8902msgid "Could not read hostkey file: %s\n"
9081msgstr "¡No se puede leer el fichero de claves de máquina!\n" 8903msgstr "¡No se puede leer el fichero de claves de máquina!\n"
9082 8904
9083#: src/util/gnunet-ecc.c:389 8905#: src/util/gnunet-ecc.c:391
9084msgid "No hostkey file specified on command line\n" 8906msgid "No hostkey file specified on command line\n"
9085msgstr "No se ha especificado la clave de máquina en la línea de comandos\n" 8907msgstr "No se ha especificado la clave de máquina en la línea de comandos\n"
9086 8908
9087#: src/util/gnunet-ecc.c:454 8909#: src/util/gnunet-ecc.c:456
9088msgid "list keys included in a file (for testing)" 8910msgid "list keys included in a file (for testing)"
9089msgstr "" 8911msgstr ""
9090 8912
9091#: src/util/gnunet-ecc.c:459 8913#: src/util/gnunet-ecc.c:461
9092msgid "number of keys to list included in a file (for testing)" 8914msgid "number of keys to list included in a file (for testing)"
9093msgstr "" 8915msgstr ""
9094 8916
9095#: src/util/gnunet-ecc.c:464 8917#: src/util/gnunet-ecc.c:466
9096msgid "create COUNT public-private key pairs (for testing)" 8918msgid "create COUNT public-private key pairs (for testing)"
9097msgstr "crea «COUNT» pares de claves pública-privada (para pruebas)" 8919msgstr "crea «COUNT» pares de claves pública-privada (para pruebas)"
9098 8920
9099#: src/util/gnunet-ecc.c:468 8921#: src/util/gnunet-ecc.c:470
9100msgid "print the public key in ASCII format" 8922msgid "print the public key in ASCII format"
9101msgstr "imprime la clave pública en formato ASCII" 8923msgstr "imprime la clave pública en formato ASCII"
9102 8924
9103#: src/util/gnunet-ecc.c:472 8925#: src/util/gnunet-ecc.c:474
9104#, fuzzy 8926#, fuzzy
9105msgid "print the private key in ASCII format" 8927msgid "print the private key in ASCII format"
9106msgstr "imprime la clave pública en formato ASCII" 8928msgstr "imprime la clave pública en formato ASCII"
9107 8929
9108#: src/util/gnunet-ecc.c:476 8930#: src/util/gnunet-ecc.c:478
9109#, fuzzy 8931#, fuzzy
9110msgid "print the public key in HEX format" 8932msgid "print the public key in HEX format"
9111msgstr "imprime la clave pública en formato ASCII" 8933msgstr "imprime la clave pública en formato ASCII"
9112 8934
9113#: src/util/gnunet-ecc.c:480 8935#: src/util/gnunet-ecc.c:482
9114msgid "print examples of ECC operations (used for compatibility testing)" 8936msgid "print examples of ECC operations (used for compatibility testing)"
9115msgstr "" 8937msgstr ""
9116 8938
9117#: src/util/gnunet-ecc.c:496 8939#: src/util/gnunet-ecc.c:498
9118msgid "Manipulate GNUnet private ECC key files" 8940msgid "Manipulate GNUnet private ECC key files"
9119msgstr "Manipular los ficheros de clave privada ECC de GNUnet" 8941msgstr "Manipular los ficheros de clave privada ECC de GNUnet"
9120 8942
9121#: src/util/gnunet-resolver.c:166 8943#: src/util/gnunet-resolver.c:168
9122msgid "perform a reverse lookup" 8944msgid "perform a reverse lookup"
9123msgstr "realizar una búsqueda inversa" 8945msgstr "realizar una búsqueda inversa"
9124 8946
9125#: src/util/gnunet-resolver.c:177 8947#: src/util/gnunet-resolver.c:179
9126msgid "Use build-in GNUnet stub resolver" 8948msgid "Use build-in GNUnet stub resolver"
9127msgstr "Utilizar el resolvedor interno para pruebas de GNUnet" 8949msgstr "Utilizar el resolvedor interno para pruebas de GNUnet"
9128 8950
9129#: src/util/gnunet-scrypt.c:240 8951#: src/util/gnunet-scrypt.c:242
9130#, c-format 8952#, c-format
9131msgid "Loading hostkey from `%s' failed.\n" 8953msgid "Loading hostkey from `%s' failed.\n"
9132msgstr "La carga de la clave de la máquina desde «%s» ha fallado.\n" 8954msgstr "La carga de la clave de la máquina desde «%s» ha fallado.\n"
9133 8955
9134#: src/util/gnunet-scrypt.c:315 8956#: src/util/gnunet-scrypt.c:317
9135msgid "number of bits to require for the proof of work" 8957msgid "number of bits to require for the proof of work"
9136msgstr "" 8958msgstr ""
9137 8959
9138#: src/util/gnunet-scrypt.c:320 8960#: src/util/gnunet-scrypt.c:322
9139msgid "file with private key, otherwise default is used" 8961msgid "file with private key, otherwise default is used"
9140msgstr "" 8962msgstr ""
9141 8963
9142#: src/util/gnunet-scrypt.c:325 8964#: src/util/gnunet-scrypt.c:327
9143msgid "file with proof of work, otherwise default is used" 8965msgid "file with proof of work, otherwise default is used"
9144msgstr "" 8966msgstr ""
9145 8967
9146#: src/util/gnunet-scrypt.c:330 8968#: src/util/gnunet-scrypt.c:332
9147msgid "time to wait between calculations" 8969msgid "time to wait between calculations"
9148msgstr "" 8970msgstr ""
9149 8971
9150#: src/util/gnunet-scrypt.c:343 8972#: src/util/gnunet-scrypt.c:345
9151#, fuzzy 8973#, fuzzy
9152msgid "Manipulate GNUnet proof of work files" 8974msgid "Manipulate GNUnet proof of work files"
9153msgstr "Manipular los ficheros de clave privada ECC de GNUnet" 8975msgstr "Manipular los ficheros de clave privada ECC de GNUnet"
@@ -9156,53 +8978,53 @@ msgstr "Manipular los ficheros de clave privada ECC de GNUnet"
9156msgid "No DNS server available. DNS resolution will not be possible.\n" 8978msgid "No DNS server available. DNS resolution will not be possible.\n"
9157msgstr "" 8979msgstr ""
9158 8980
9159#: src/util/gnunet-uri.c:83 8981#: src/util/gnunet-uri.c:85
9160#, c-format 8982#, c-format
9161msgid "No URI specified on command line\n" 8983msgid "No URI specified on command line\n"
9162msgstr "No se ha especificado una URI en la línea de comandos. Saliendo.\n" 8984msgstr "No se ha especificado una URI en la línea de comandos. Saliendo.\n"
9163 8985
9164#: src/util/gnunet-uri.c:89 8986#: src/util/gnunet-uri.c:91
9165#, c-format 8987#, c-format
9166msgid "Invalid URI: does not start with `%s'\n" 8988msgid "Invalid URI: does not start with `%s'\n"
9167msgstr "URI no válida: no comienza con «%s»\n" 8989msgstr "URI no válida: no comienza con «%s»\n"
9168 8990
9169#: src/util/gnunet-uri.c:96 8991#: src/util/gnunet-uri.c:98
9170#, c-format 8992#, c-format
9171msgid "Invalid URI: fails to specify subsystem\n" 8993msgid "Invalid URI: fails to specify subsystem\n"
9172msgstr "URI no válida: falla al especificar el subsistema\n" 8994msgstr "URI no válida: falla al especificar el subsistema\n"
9173 8995
9174#: src/util/gnunet-uri.c:106 8996#: src/util/gnunet-uri.c:108
9175#, c-format 8997#, c-format
9176msgid "No handler known for subsystem `%s'\n" 8998msgid "No handler known for subsystem `%s'\n"
9177msgstr "No hay un manejador conocido para el subsistema «%s»\n" 8999msgstr "No hay un manejador conocido para el subsistema «%s»\n"
9178 9000
9179#: src/util/gnunet-uri.c:168 9001#: src/util/gnunet-uri.c:170
9180msgid "Perform default-actions for GNUnet URIs" 9002msgid "Perform default-actions for GNUnet URIs"
9181msgstr "Realizar las acciones predeterminadas para URI de GNUnet" 9003msgstr "Realizar las acciones predeterminadas para URI de GNUnet"
9182 9004
9183#: src/util/helper.c:333 9005#: src/util/helper.c:335
9184#, c-format 9006#, c-format
9185msgid "Error reading from `%s': %s\n" 9007msgid "Error reading from `%s': %s\n"
9186msgstr "Error leyendo de «%s»: %s\n" 9008msgstr "Error leyendo de «%s»: %s\n"
9187 9009
9188#: src/util/helper.c:384 9010#: src/util/helper.c:386
9189#, c-format 9011#, c-format
9190msgid "Failed to parse inbound message from helper `%s'\n" 9012msgid "Failed to parse inbound message from helper `%s'\n"
9191msgstr "" 9013msgstr ""
9192"Se produjo un fallo al procesar el mensaje interno del programa auxiliar " 9014"Se produjo un fallo al procesar el mensaje interno del programa auxiliar "
9193"«%s»\n" 9015"«%s»\n"
9194 9016
9195#: src/util/helper.c:604 9017#: src/util/helper.c:606
9196#, c-format 9018#, c-format
9197msgid "Error writing to `%s': %s\n" 9019msgid "Error writing to `%s': %s\n"
9198msgstr "Error escribiendo a «%s»: %s\n" 9020msgstr "Error escribiendo a «%s»: %s\n"
9199 9021
9200#: src/util/network.c:134 9022#: src/util/network.c:136
9201#, c-format 9023#, c-format
9202msgid "Unable to shorten unix path `%s' while keeping name unique\n" 9024msgid "Unable to shorten unix path `%s' while keeping name unique\n"
9203msgstr "Imposible acortar la ruta unix «%s» manteniendo el nombre único\n" 9025msgstr "Imposible acortar la ruta unix «%s» manteniendo el nombre único\n"
9204 9026
9205#: src/util/network.c:1793 src/util/network.c:1977 9027#: src/util/network.c:1794 src/util/network.c:1978
9206#, c-format 9028#, c-format
9207msgid "" 9029msgid ""
9208"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n" 9030"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
@@ -9210,7 +9032,7 @@ msgstr ""
9210"¡Error lógico interno fatal, el proceso está colgado en «%s» (abortar con " 9032"¡Error lógico interno fatal, el proceso está colgado en «%s» (abortar con "
9211"CTRL-C)!\n" 9033"CTRL-C)!\n"
9212 9034
9213#: src/util/os_installation.c:507 9035#: src/util/os_installation.c:509
9214#, c-format 9036#, c-format
9215msgid "" 9037msgid ""
9216"Could not determine installation path for %s. Set `%s' environment " 9038"Could not determine installation path for %s. Set `%s' environment "
@@ -9219,57 +9041,72 @@ msgstr ""
9219"No se pudo determinar la ruta de instalación de %s. Establezca la variable " 9041"No se pudo determinar la ruta de instalación de %s. Establezca la variable "
9220"de entorno «%s».\n" 9042"de entorno «%s».\n"
9221 9043
9222#: src/util/os_installation.c:879 9044#: src/util/os_installation.c:881
9223#, c-format 9045#, c-format
9224msgid "Could not find binary `%s' in PATH!\n" 9046msgid "Could not find binary `%s' in PATH!\n"
9225msgstr "¡No se pudo encontrar el programa llamado «%s» en PATH!\n" 9047msgstr "¡No se pudo encontrar el programa llamado «%s» en PATH!\n"
9226 9048
9227#: src/util/os_installation.c:920 9049#: src/util/os_installation.c:922
9228#, c-format 9050#, c-format
9229msgid "Binary `%s' exists, but is not SUID\n" 9051msgid "Binary `%s' exists, but is not SUID\n"
9230msgstr "" 9052msgstr ""
9231 9053
9232#: src/util/os_installation.c:951 9054#: src/util/os_installation.c:953
9233#, fuzzy, c-format 9055#, fuzzy, c-format
9234msgid "CreateProcess failed for binary %s (%d).\n" 9056msgid "CreateProcess failed for binary %s (%d).\n"
9235msgstr "«%s» falló para el puerto %d (%s).\n" 9057msgstr "«%s» falló para el puerto %d (%s).\n"
9236 9058
9237#: src/util/os_installation.c:961 9059#: src/util/os_installation.c:963
9238#, c-format 9060#, c-format
9239msgid "GetExitCodeProcess failed for binary %s (%d).\n" 9061msgid "GetExitCodeProcess failed for binary %s (%d).\n"
9240msgstr "" 9062msgstr ""
9241 9063
9242#: src/util/plugin.c:84 9064#: src/util/plugin.c:86
9243#, c-format 9065#, c-format
9244msgid "Initialization of plugin mechanism failed: %s!\n" 9066msgid "Initialization of plugin mechanism failed: %s!\n"
9245msgstr "¡La inicialización del mecanismo de módulos falló: %s!\n" 9067msgstr "¡La inicialización del mecanismo de módulos falló: %s!\n"
9246 9068
9247#: src/util/plugin.c:149 9069#: src/util/plugin.c:151
9248#, c-format 9070#, c-format
9249msgid "`%s' failed to resolve method '%s' with error: %s\n" 9071msgid "`%s' failed to resolve method '%s' with error: %s\n"
9250msgstr "«%s» falló al resolver el método «%s» con error: %s\n" 9072msgstr "«%s» falló al resolver el método «%s» con error: %s\n"
9251 9073
9252#: src/util/plugin.c:224 9074#: src/util/plugin.c:226
9253#, c-format 9075#, c-format
9254msgid "`%s' failed for library `%s' with error: %s\n" 9076msgid "`%s' failed for library `%s' with error: %s\n"
9255msgstr "Falló «%s» para la biblioteca «%s» con error: %s\n" 9077msgstr "Falló «%s» para la biblioteca «%s» con error: %s\n"
9256 9078
9257#: src/util/plugin.c:383 9079#: src/util/plugin.c:385
9258msgid "Could not determine plugin installation path.\n" 9080msgid "Could not determine plugin installation path.\n"
9259msgstr "No se pudo determinar la ruta de instalación de los módulos.\n" 9081msgstr "No se pudo determinar la ruta de instalación de los módulos.\n"
9260 9082
9261#: src/util/regex.c:132 9083#: src/util/program.c:283
9084#, fuzzy, c-format
9085msgid "Unreadable or malformed configuration file `%s', exit ...\n"
9086msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
9087
9088#: src/util/program.c:301
9089#, fuzzy, c-format
9090msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
9091msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
9092
9093#: src/util/program.c:318
9094#, fuzzy
9095msgid "Unreadable or malformed configuration, exit ...\n"
9096msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
9097
9098#: src/util/regex.c:134
9262#, c-format 9099#, c-format
9263msgid "Bad mask: %d\n" 9100msgid "Bad mask: %d\n"
9264msgstr "" 9101msgstr ""
9265 9102
9266#: src/util/resolver_api.c:216 9103#: src/util/resolver_api.c:218
9267#, c-format 9104#, c-format
9268msgid "" 9105msgid ""
9269"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n" 9106"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n"
9270msgstr "" 9107msgstr ""
9271 9108
9272#: src/util/resolver_api.c:237 9109#: src/util/resolver_api.c:239
9273#, fuzzy, c-format 9110#, fuzzy, c-format
9274msgid "" 9111msgid ""
9275"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS " 9112"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS "
@@ -9278,12 +9115,12 @@ msgstr ""
9278"¡Se debe especificar «%s» o una dirección numérica IP para «%s» de «%s» en " 9115"¡Se debe especificar «%s» o una dirección numérica IP para «%s» de «%s» en "
9279"la configuración!\n" 9116"la configuración!\n"
9280 9117
9281#: src/util/resolver_api.c:873 9118#: src/util/resolver_api.c:875
9282#, c-format 9119#, c-format
9283msgid "Timeout trying to resolve hostname `%s'.\n" 9120msgid "Timeout trying to resolve hostname `%s'.\n"
9284msgstr "Expiración de plazo intentando resolver el nombre de máquina «%s».\n" 9121msgstr "Expiración de plazo intentando resolver el nombre de máquina «%s».\n"
9285 9122
9286#: src/util/resolver_api.c:886 9123#: src/util/resolver_api.c:888
9287#, c-format 9124#, c-format
9288msgid "Timeout trying to resolve IP address `%s'.\n" 9125msgid "Timeout trying to resolve IP address `%s'.\n"
9289msgstr "Expiración de plazo intentando resolver la dirección IP «%s».\n" 9126msgstr "Expiración de plazo intentando resolver la dirección IP «%s».\n"
@@ -9291,24 +9128,19 @@ msgstr "Expiración de plazo intentando resolver la dirección IP «%s».\n"
9291# Miguel: He traducido "default" por "predeterminado", la locución 9128# Miguel: He traducido "default" por "predeterminado", la locución
9292# "por defecto" no tiene sentido en sitios como este y he tratado 9129# "por defecto" no tiene sentido en sitios como este y he tratado
9293# de ser consistente. 9130# de ser consistente.
9294#: src/util/resolver_api.c:1071 9131#: src/util/resolver_api.c:1073
9295#, fuzzy 9132#, fuzzy
9296msgid "Resolver not configured correctly.\n" 9133msgid "Resolver not configured correctly.\n"
9297msgstr "¡El servicio predeterminado «%s» no está configurado correctamente!\n" 9134msgstr "¡El servicio predeterminado «%s» no está configurado correctamente!\n"
9298 9135
9299#: src/util/resolver_api.c:1158 src/util/resolver_api.c:1181 9136#: src/util/resolver_api.c:1160 src/util/resolver_api.c:1183
9300#: src/util/resolver_api.c:1195 9137#: src/util/resolver_api.c:1197
9301#, fuzzy, c-format 9138#, fuzzy, c-format
9302msgid "Could not resolve our FQDN: %s\n" 9139msgid "Could not resolve our FQDN: %s\n"
9303msgstr "" 9140msgstr ""
9304"No se pudo resolver nuestro nombre de dominio cualificado (FQDN) : %s\n" 9141"No se pudo resolver nuestro nombre de dominio cualificado (FQDN) : %s\n"
9305 9142
9306#: src/util/service.c:1303 9143#: src/util/service.c:674
9307msgid ""
9308"Could not bind to any of the ports I was supposed to, refusing to run!\n"
9309msgstr ""
9310
9311#: src/util/service.c:2123
9312#, fuzzy, c-format 9144#, fuzzy, c-format
9313msgid "" 9145msgid ""
9314"Processing code for message of type %u did not call " 9146"Processing code for message of type %u did not call "
@@ -9317,343 +9149,470 @@ msgstr ""
9317"El código de procesado para el mensaje del tipo %u no llamó a " 9149"El código de procesado para el mensaje del tipo %u no llamó a "
9318"«GNUNET_SERVER_receive_done» después de %s\n" 9150"«GNUNET_SERVER_receive_done» después de %s\n"
9319 9151
9320#: src/util/signal.c:87 9152#: src/util/service.c:1862
9153msgid ""
9154"Could not bind to any of the ports I was supposed to, refusing to run!\n"
9155msgstr ""
9156
9157#: src/util/signal.c:89
9321#, c-format 9158#, c-format
9322msgid "signal (%d, %p) returned %d.\n" 9159msgid "signal (%d, %p) returned %d.\n"
9323msgstr "señal (%d, %p) devolvió %d.\n" 9160msgstr "señal (%d, %p) devolvió %d.\n"
9324 9161
9325#: src/util/socks.c:595 9162#: src/util/socks.c:597
9326#, c-format 9163#, c-format
9327msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n" 9164msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
9328msgstr "" 9165msgstr ""
9329 9166
9330#: src/util/socks.c:614 9167#: src/util/socks.c:616
9331#, c-format 9168#, c-format
9332msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n" 9169msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
9333msgstr "" 9170msgstr ""
9334 9171
9335#: src/util/strings.c:174 9172#: src/util/strings.c:176
9336msgid "b" 9173msgid "b"
9337msgstr "b" 9174msgstr "b"
9338 9175
9339#: src/util/strings.c:471 9176#: src/util/strings.c:475
9340#, c-format 9177#, c-format
9341msgid "Character sets requested were `%s'->`%s'\n" 9178msgid "Character sets requested were `%s'->`%s'\n"
9342msgstr "Los conjuntos de caracteres pedidos fueron «%s»->«%s»\n" 9179msgstr "Los conjuntos de caracteres pedidos fueron «%s»->«%s»\n"
9343 9180
9344#: src/util/strings.c:598 9181#: src/util/strings.c:602
9345msgid "Failed to expand `$HOME': environment variable `HOME' not set" 9182msgid "Failed to expand `$HOME': environment variable `HOME' not set"
9346msgstr "" 9183msgstr ""
9347"Se produjo un fallo al expandir «$HOME»: variable de entorno «HOME» no " 9184"Se produjo un fallo al expandir «$HOME»: variable de entorno «HOME» no "
9348"establecida" 9185"establecida"
9349 9186
9350#: src/util/strings.c:702 9187#: src/util/strings.c:706
9351msgid "µs" 9188msgid "µs"
9352msgstr "" 9189msgstr ""
9353 9190
9354#: src/util/strings.c:706 9191#: src/util/strings.c:710
9355msgid "forever" 9192msgid "forever"
9356msgstr "para siempre" 9193msgstr "para siempre"
9357 9194
9358#: src/util/strings.c:708 9195#: src/util/strings.c:712
9359msgid "0 ms" 9196msgid "0 ms"
9360msgstr "0 ms" 9197msgstr "0 ms"
9361 9198
9362#: src/util/strings.c:714 9199#: src/util/strings.c:718
9363msgid "ms" 9200msgid "ms"
9364msgstr "ms" 9201msgstr "ms"
9365 9202
9366#: src/util/strings.c:720 9203#: src/util/strings.c:724
9367msgid "s" 9204msgid "s"
9368msgstr "s" 9205msgstr "s"
9369 9206
9370#: src/util/strings.c:726 9207#: src/util/strings.c:730
9371msgid "m" 9208msgid "m"
9372msgstr "m" 9209msgstr "m"
9373 9210
9374#: src/util/strings.c:732 9211#: src/util/strings.c:736
9375msgid "h" 9212msgid "h"
9376msgstr "h" 9213msgstr "h"
9377 9214
9378#: src/util/strings.c:739 9215#: src/util/strings.c:743
9379msgid "day" 9216msgid "day"
9380msgstr "día" 9217msgstr "día"
9381 9218
9382#: src/util/strings.c:741 9219#: src/util/strings.c:745
9383msgid "days" 9220msgid "days"
9384msgstr "días" 9221msgstr "días"
9385 9222
9386#: src/util/strings.c:770 9223#: src/util/strings.c:774
9387msgid "end of time" 9224msgid "end of time"
9388msgstr "fin del plazo" 9225msgstr "fin del plazo"
9389 9226
9390#: src/util/strings.c:1272 9227#: src/util/strings.c:1277
9391msgid "IPv6 address did not start with `['\n" 9228msgid "IPv6 address did not start with `['\n"
9392msgstr "La dirección IPv6 no empezaba con «[»\n" 9229msgstr "La dirección IPv6 no empezaba con «[»\n"
9393 9230
9394#: src/util/strings.c:1280 9231#: src/util/strings.c:1285
9395msgid "IPv6 address did contain ':' to separate port number\n" 9232msgid "IPv6 address did contain ':' to separate port number\n"
9396msgstr "La dirección IPv6 contenía «:» para separar el número de puerto\n" 9233msgstr "La dirección IPv6 contenía «:» para separar el número de puerto\n"
9397 9234
9398#: src/util/strings.c:1286 9235#: src/util/strings.c:1291
9399msgid "IPv6 address did contain ']' before ':' to separate port number\n" 9236msgid "IPv6 address did contain ']' before ':' to separate port number\n"
9400msgstr "" 9237msgstr ""
9401"La dirección IPv6 contenía «]» antes de «:» para separar el número de " 9238"La dirección IPv6 contenía «]» antes de «:» para separar el número de "
9402"puerto\n" 9239"puerto\n"
9403 9240
9404#: src/util/strings.c:1293 9241#: src/util/strings.c:1301
9405msgid "IPv6 address did contain a valid port number after the last ':'\n" 9242msgid "IPv6 address did contain a valid port number after the last ':'\n"
9406msgstr "" 9243msgstr ""
9407"La dirección IPv6 contenía un número de puerto válido después del último " 9244"La dirección IPv6 contenía un número de puerto válido después del último "
9408"«:»\n" 9245"«:»\n"
9409 9246
9410#: src/util/strings.c:1302 9247#: src/util/strings.c:1310
9411#, c-format 9248#, c-format
9412msgid "Invalid IPv6 address `%s': %s\n" 9249msgid "Invalid IPv6 address `%s': %s\n"
9413msgstr "Dirección IPv6 «%s» no válida: %s\n" 9250msgstr "Dirección IPv6 «%s» no válida: %s\n"
9414 9251
9415#: src/util/strings.c:1574 src/util/strings.c:1590 9252#: src/util/strings.c:1586 src/util/strings.c:1602
9416msgid "Port not in range\n" 9253msgid "Port not in range\n"
9417msgstr "" 9254msgstr ""
9418 9255
9419#: src/util/strings.c:1599 9256#: src/util/strings.c:1611
9420#, fuzzy, c-format 9257#, fuzzy, c-format
9421msgid "Malformed port policy `%s'\n" 9258msgid "Malformed port policy `%s'\n"
9422msgstr "Se produjo un fallo al iniciar el servicio «%s»\n" 9259msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
9423 9260
9424#: src/util/strings.c:1682 src/util/strings.c:1713 src/util/strings.c:1761 9261#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
9425#: src/util/strings.c:1782 9262#: src/util/strings.c:1798
9426#, c-format 9263#, c-format
9427msgid "Invalid format for IP: `%s'\n" 9264msgid "Invalid format for IP: `%s'\n"
9428msgstr "Formato no válido para la IP: «%s»\n" 9265msgstr "Formato no válido para la IP: «%s»\n"
9429 9266
9430#: src/util/strings.c:1739 9267#: src/util/strings.c:1754
9431#, c-format 9268#, c-format
9432msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)." 9269msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
9433msgstr "Notación de red no válida («/%d» no es válido en IPv4 CIDR)." 9270msgstr "Notación de red no válida («/%d» no es válido en IPv4 CIDR)."
9434 9271
9435#: src/util/strings.c:1791 9272#: src/util/strings.c:1807
9436#, fuzzy, c-format 9273#, fuzzy, c-format
9437msgid "Invalid format: `%s'\n" 9274msgid "Invalid format: `%s'\n"
9438msgstr "Formato de tiempo no válido «%s»\n" 9275msgstr "Formato de tiempo no válido «%s»\n"
9439 9276
9440#: src/util/strings.c:1843 9277#: src/util/strings.c:1860
9441#, c-format 9278#, c-format
9442msgid "Invalid network notation (does not end with ';': `%s')\n" 9279msgid "Invalid network notation (does not end with ';': `%s')\n"
9443msgstr "Notación de red no válida (no termina con «;»: «%s»)\n" 9280msgstr "Notación de red no válida (no termina con «;»: «%s»)\n"
9444 9281
9445#: src/util/strings.c:1893 9282#: src/util/strings.c:1914
9446#, c-format 9283#, c-format
9447msgid "Wrong format `%s' for netmask\n" 9284msgid "Wrong format `%s' for netmask\n"
9448msgstr "Formato «%s» erroneo para máscara de red\n" 9285msgstr "Formato «%s» erroneo para máscara de red\n"
9449 9286
9450#: src/util/strings.c:1924 9287#: src/util/strings.c:1945
9451#, c-format 9288#, c-format
9452msgid "Wrong format `%s' for network\n" 9289msgid "Wrong format `%s' for network\n"
9453msgstr "Formato «%s» erroneo para red\n" 9290msgstr "Formato «%s» erroneo para red\n"
9454 9291
9455#: src/vpn/gnunet-service-vpn.c:538 src/vpn/gnunet-service-vpn.c:1805 9292#: src/util/time.c:828 src/util/time.c:860
9293#, fuzzy, c-format
9294msgid "Failed to map `%s', cannot assure monotonic time!\n"
9295msgstr ""
9296"Se produjo un fallo al recuperar el espacio de nombres «%s», no se pudo "
9297"retomar la operación de publicación.\n"
9298
9299#: src/util/time.c:866
9300#, c-format
9301msgid ""
9302"Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
9303msgstr ""
9304
9305#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
9456#, fuzzy 9306#, fuzzy
9457msgid "# Active channels" 9307msgid "# Active channels"
9458msgstr "# Túneles activos" 9308msgstr "# Túneles activos"
9459 9309
9460#: src/vpn/gnunet-service-vpn.c:597 9310#: src/vpn/gnunet-service-vpn.c:599
9461#, fuzzy 9311#, fuzzy
9462msgid "# Messages dropped in cadet queue (overflow)" 9312msgid "# Messages dropped in cadet queue (overflow)"
9463msgstr "# Bytes omitidos en la cola mesh (desbordamiento)" 9313msgstr "# Bytes omitidos en la cola mesh (desbordamiento)"
9464 9314
9465#: src/vpn/gnunet-service-vpn.c:751 9315#: src/vpn/gnunet-service-vpn.c:753
9466#, fuzzy 9316#, fuzzy
9467msgid "# ICMP packets received from cadet" 9317msgid "# ICMP packets received from cadet"
9468msgstr "# Paquetes ICMP recibidos de mesh" 9318msgstr "# Paquetes ICMP recibidos de mesh"
9469 9319
9470#: src/vpn/gnunet-service-vpn.c:1094 9320#: src/vpn/gnunet-service-vpn.c:1096
9471#, fuzzy 9321#, fuzzy
9472msgid "# UDP packets received from cadet" 9322msgid "# UDP packets received from cadet"
9473msgstr "# Paquetes UDP recibidos de mesh" 9323msgstr "# Paquetes UDP recibidos de mesh"
9474 9324
9475#: src/vpn/gnunet-service-vpn.c:1253 9325#: src/vpn/gnunet-service-vpn.c:1255
9476#, fuzzy 9326#, fuzzy
9477msgid "# TCP packets received from cadet" 9327msgid "# TCP packets received from cadet"
9478msgstr "# Paquetes TCP recibidos de mesh" 9328msgstr "# Paquetes TCP recibidos de mesh"
9479 9329
9480#: src/vpn/gnunet-service-vpn.c:1465 9330#: src/vpn/gnunet-service-vpn.c:1467
9481#, fuzzy 9331#, fuzzy
9482msgid "# Cadet channels created" 9332msgid "# Cadet channels created"
9483msgstr "# Túneles mesh creados" 9333msgstr "# Túneles mesh creados"
9484 9334
9485#: src/vpn/gnunet-service-vpn.c:1685 9335#: src/vpn/gnunet-service-vpn.c:1687
9486#, c-format 9336#, c-format
9487msgid "Protocol %u not supported, dropping\n" 9337msgid "Protocol %u not supported, dropping\n"
9488msgstr "Protocolo %u no soportado, omitiendo\n" 9338msgstr "Protocolo %u no soportado, omitiendo\n"
9489 9339
9490#: src/vpn/gnunet-service-vpn.c:1824 9340#: src/vpn/gnunet-service-vpn.c:1826
9491#, fuzzy 9341#, fuzzy
9492msgid "# Packets dropped (channel not yet online)" 9342msgid "# Packets dropped (channel not yet online)"
9493msgstr "# Paquetes ICMP omitidos (tipo no permitido)" 9343msgstr "# Paquetes ICMP omitidos (tipo no permitido)"
9494 9344
9495#: src/vpn/gnunet-service-vpn.c:2004 9345#: src/vpn/gnunet-service-vpn.c:2006
9496msgid "# ICMPv4 packets dropped (not allowed)" 9346msgid "# ICMPv4 packets dropped (not allowed)"
9497msgstr "# Paquetes ICMPv4 omitidos (no permitido)" 9347msgstr "# Paquetes ICMPv4 omitidos (no permitido)"
9498 9348
9499#: src/vpn/gnunet-service-vpn.c:2025 9349#: src/vpn/gnunet-service-vpn.c:2027
9500msgid "# ICMPv6 packets dropped (not allowed)" 9350msgid "# ICMPv6 packets dropped (not allowed)"
9501msgstr "# Paquetes ICMPv6 omitidos (no permitido)" 9351msgstr "# Paquetes ICMPv6 omitidos (no permitido)"
9502 9352
9503#: src/vpn/gnunet-service-vpn.c:2233 9353#: src/vpn/gnunet-service-vpn.c:2235
9504msgid "# Packets received from TUN interface" 9354msgid "# Packets received from TUN interface"
9505msgstr "# Paquetes recibidos de la interfaz TUN" 9355msgstr "# Paquetes recibidos de la interfaz TUN"
9506 9356
9507#: src/vpn/gnunet-service-vpn.c:2266 src/vpn/gnunet-service-vpn.c:2302 9357#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
9508#, c-format 9358#, c-format
9509msgid "Packet received for unmapped destination `%s' (dropping it)\n" 9359msgid "Packet received for unmapped destination `%s' (dropping it)\n"
9510msgstr "Paquete recibido para el destino «%s» no mapeado (omitiéndolo)\n" 9360msgstr "Paquete recibido para el destino «%s» no mapeado (omitiéndolo)\n"
9511 9361
9512#: src/vpn/gnunet-service-vpn.c:2312 9362#: src/vpn/gnunet-service-vpn.c:2314
9513msgid "Received IPv4 packet with options (dropping it)\n" 9363msgid "Received IPv4 packet with options (dropping it)\n"
9514msgstr "Recibido paquete IPv4 con opciones (omitiéndolo)\n" 9364msgstr "Recibido paquete IPv4 con opciones (omitiéndolo)\n"
9515 9365
9516#: src/vpn/gnunet-service-vpn.c:2326 9366#: src/vpn/gnunet-service-vpn.c:2328
9517#, c-format 9367#, c-format
9518msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" 9368msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
9519msgstr "Recibido paquete de protocolo %d desconocido desde TUN (omitiéndolo)\n" 9369msgstr "Recibido paquete de protocolo %d desconocido desde TUN (omitiéndolo)\n"
9520 9370
9521#: src/vpn/gnunet-service-vpn.c:2365 9371#: src/vpn/gnunet-service-vpn.c:2367
9522msgid "Failed to find unallocated IPv4 address in VPN's range\n" 9372msgid "Failed to find unallocated IPv4 address in VPN's range\n"
9523msgstr "No se encontraron direcciones IPv4 libres en el rango de la VPN\n" 9373msgstr "No se encontraron direcciones IPv4 libres en el rango de la VPN\n"
9524 9374
9525#: src/vpn/gnunet-service-vpn.c:2420 9375#: src/vpn/gnunet-service-vpn.c:2422
9526msgid "Failed to find unallocated IPv6 address in VPN's range\n" 9376msgid "Failed to find unallocated IPv6 address in VPN's range\n"
9527msgstr "No se encontraron direcciones IPv6 libres en el rango de la VPN\n" 9377msgstr "No se encontraron direcciones IPv6 libres en el rango de la VPN\n"
9528 9378
9529#: src/vpn/gnunet-service-vpn.c:2462 src/vpn/gnunet-service-vpn.c:2684 9379#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
9530msgid "# Active destinations" 9380msgid "# Active destinations"
9531msgstr "# Destinos activos" 9381msgstr "# Destinos activos"
9532 9382
9533#: src/vpn/gnunet-service-vpn.c:2733 9383#: src/vpn/gnunet-service-vpn.c:2735
9534msgid "Failed to allocate IP address for new destination\n" 9384msgid "Failed to allocate IP address for new destination\n"
9535msgstr "" 9385msgstr ""
9536"Se produjo un fallo al alojar las direcciones IP para el nuevo destino\n" 9386"Se produjo un fallo al alojar las direcciones IP para el nuevo destino\n"
9537 9387
9538#: src/vpn/gnunet-service-vpn.c:2996 9388#: src/vpn/gnunet-service-vpn.c:2998
9539#, fuzzy 9389#, fuzzy
9540msgid "Must specify valid IPv6 address" 9390msgid "Must specify valid IPv6 address"
9541msgstr "«%s» no es una dirección IP válida.\n" 9391msgstr "«%s» no es una dirección IP válida.\n"
9542 9392
9543#: src/vpn/gnunet-service-vpn.c:3020 9393#: src/vpn/gnunet-service-vpn.c:3022
9544msgid "Must specify valid IPv6 mask" 9394msgid "Must specify valid IPv6 mask"
9545msgstr "" 9395msgstr ""
9546 9396
9547#: src/vpn/gnunet-service-vpn.c:3028 9397#: src/vpn/gnunet-service-vpn.c:3030
9548msgid "IPv6 support disabled as this system does not support IPv6\n" 9398msgid "IPv6 support disabled as this system does not support IPv6\n"
9549msgstr "" 9399msgstr ""
9550"El soporte de IPv6 se deshabilita porque este sistema no soporta IPv6\n" 9400"El soporte de IPv6 se deshabilita porque este sistema no soporta IPv6\n"
9551 9401
9552#: src/vpn/gnunet-service-vpn.c:3041 9402#: src/vpn/gnunet-service-vpn.c:3043
9553#, fuzzy 9403#, fuzzy
9554msgid "Must specify valid IPv4 address" 9404msgid "Must specify valid IPv4 address"
9555msgstr "«%s» no es una dirección IP válida.\n" 9405msgstr "«%s» no es una dirección IP válida.\n"
9556 9406
9557#: src/vpn/gnunet-service-vpn.c:3054 9407#: src/vpn/gnunet-service-vpn.c:3056
9558msgid "Must specify valid IPv4 mask" 9408msgid "Must specify valid IPv4 mask"
9559msgstr "" 9409msgstr ""
9560 9410
9561#: src/vpn/gnunet-service-vpn.c:3064 9411#: src/vpn/gnunet-service-vpn.c:3066
9562msgid "IPv4 support disabled as this system does not support IPv4\n" 9412msgid "IPv4 support disabled as this system does not support IPv4\n"
9563msgstr "" 9413msgstr ""
9564"El soporte de IPv4 se deshabilita porque este sistema no soporta IPv4\n" 9414"El soporte de IPv4 se deshabilita porque este sistema no soporta IPv4\n"
9565 9415
9566#: src/vpn/gnunet-vpn.c:145 9416#: src/vpn/gnunet-vpn.c:147
9567msgid "Error creating tunnel\n" 9417msgid "Error creating tunnel\n"
9568msgstr "Error creando el túnel\n" 9418msgstr "Error creando el túnel\n"
9569 9419
9570#: src/vpn/gnunet-vpn.c:189 src/vpn/gnunet-vpn.c:220 9420#: src/vpn/gnunet-vpn.c:191 src/vpn/gnunet-vpn.c:222
9571#, c-format 9421#, c-format
9572msgid "Option `%s' makes no sense with option `%s'.\n" 9422msgid "Option `%s' makes no sense with option `%s'.\n"
9573msgstr "La opción «%s» no tiene sentido con la opción «%s».\n" 9423msgstr "La opción «%s» no tiene sentido con la opción «%s».\n"
9574 9424
9575#: src/vpn/gnunet-vpn.c:202 9425#: src/vpn/gnunet-vpn.c:204
9576#, c-format 9426#, c-format
9577msgid "Option `%s' or `%s' is required.\n" 9427msgid "Option `%s' or `%s' is required.\n"
9578msgstr "Las opción «%s» o «%s» es necesaria.\n" 9428msgstr "Las opción «%s» o «%s» es necesaria.\n"
9579 9429
9580#: src/vpn/gnunet-vpn.c:214 9430#: src/vpn/gnunet-vpn.c:216
9581#, c-format 9431#, c-format
9582msgid "Option `%s' or `%s' is required when using option `%s'.\n" 9432msgid "Option `%s' or `%s' is required when using option `%s'.\n"
9583msgstr "Las opción «%s» o «%s» es necesaria cuando se usa la opción «%s».\n" 9433msgstr "Las opción «%s» o «%s» es necesaria cuando se usa la opción «%s».\n"
9584 9434
9585#: src/vpn/gnunet-vpn.c:234 9435#: src/vpn/gnunet-vpn.c:236
9586#, c-format 9436#, c-format
9587msgid "`%s' is not a valid peer identifier.\n" 9437msgid "`%s' is not a valid peer identifier.\n"
9588msgstr "«%s» no es un identificador de par válido\n" 9438msgstr "«%s» no es un identificador de par válido\n"
9589 9439
9590#: src/vpn/gnunet-vpn.c:254 9440#: src/vpn/gnunet-vpn.c:256
9591#, c-format 9441#, c-format
9592msgid "`%s' is not a valid IP address.\n" 9442msgid "`%s' is not a valid IP address.\n"
9593msgstr "«%s» no es una dirección IP válida.\n" 9443msgstr "«%s» no es una dirección IP válida.\n"
9594 9444
9595#: src/vpn/gnunet-vpn.c:290 9445#: src/vpn/gnunet-vpn.c:292
9596msgid "request that result should be an IPv4 address" 9446msgid "request that result should be an IPv4 address"
9597msgstr "petición cuyo resultado debe ser una dirección IPv4" 9447msgstr "petición cuyo resultado debe ser una dirección IPv4"
9598 9448
9599#: src/vpn/gnunet-vpn.c:295 9449#: src/vpn/gnunet-vpn.c:297
9600msgid "request that result should be an IPv6 address" 9450msgid "request that result should be an IPv6 address"
9601msgstr "petición cuyo resultado debe ser una dirección IPv6" 9451msgstr "petición cuyo resultado debe ser una dirección IPv6"
9602 9452
9603#: src/vpn/gnunet-vpn.c:301 9453#: src/vpn/gnunet-vpn.c:303
9604msgid "how long should the mapping be valid for new tunnels?" 9454msgid "how long should the mapping be valid for new tunnels?"
9605msgstr "¿cuánto tiempo debe ser válido el mapeado para túneles nuevos?" 9455msgstr "¿cuánto tiempo debe ser válido el mapeado para túneles nuevos?"
9606 9456
9607#: src/vpn/gnunet-vpn.c:307 9457#: src/vpn/gnunet-vpn.c:309
9608msgid "destination IP for the tunnel" 9458msgid "destination IP for the tunnel"
9609msgstr "IP de destino para el túnel" 9459msgstr "IP de destino para el túnel"
9610 9460
9611#: src/vpn/gnunet-vpn.c:313 9461#: src/vpn/gnunet-vpn.c:315
9612msgid "peer offering the service we would like to access" 9462msgid "peer offering the service we would like to access"
9613msgstr "par que ofrece el servicio al que nos gustaría acceder" 9463msgstr "par que ofrece el servicio al que nos gustaría acceder"
9614 9464
9615#: src/vpn/gnunet-vpn.c:319 9465#: src/vpn/gnunet-vpn.c:321
9616msgid "name of the service we would like to access" 9466msgid "name of the service we would like to access"
9617msgstr "nombre del servicio al que nos gustaría acceder" 9467msgstr "nombre del servicio al que nos gustaría acceder"
9618 9468
9619#: src/vpn/gnunet-vpn.c:324 9469#: src/vpn/gnunet-vpn.c:326
9620msgid "service is offered via TCP" 9470msgid "service is offered via TCP"
9621msgstr "el servicio es ofrecido vía TCP" 9471msgstr "el servicio es ofrecido vía TCP"
9622 9472
9623#: src/vpn/gnunet-vpn.c:329 9473#: src/vpn/gnunet-vpn.c:331
9624msgid "service is offered via UDP" 9474msgid "service is offered via UDP"
9625msgstr "el servicio es ofrecido vía UDP" 9475msgstr "el servicio es ofrecido vía UDP"
9626 9476
9627#: src/vpn/gnunet-vpn.c:342 9477#: src/vpn/gnunet-vpn.c:344
9628msgid "Setup tunnels via VPN." 9478msgid "Setup tunnels via VPN."
9629msgstr "Configurar túneles vía VPN." 9479msgstr "Configurar túneles vía VPN."
9630 9480
9631#: src/zonemaster/gnunet-service-zonemaster.c:836 9481#: src/zonemaster/gnunet-service-zonemaster.c:838
9632#: src/zonemaster/gnunet-service-zonemaster-monitor.c:414 9482#: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
9633msgid "Failed to connect to the namestore!\n" 9483msgid "Failed to connect to the namestore!\n"
9634msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n" 9484msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
9635 9485
9636#: src/include/gnunet_common.h:770 src/include/gnunet_common.h:777 9486#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
9637#: src/include/gnunet_common.h:787 9487#: src/include/gnunet_common.h:789
9638#, fuzzy, c-format 9488#, fuzzy, c-format
9639msgid "Assertion failed at %s:%d. Aborting.\n" 9489msgid "Assertion failed at %s:%d. Aborting.\n"
9640msgstr "Aserción fallida en %s:%d.\n" 9490msgstr "Aserción fallida en %s:%d.\n"
9641 9491
9642#: src/include/gnunet_common.h:795 9492#: src/include/gnunet_common.h:797
9643#, c-format 9493#, c-format
9644msgid "Assertion failed at %s:%d.\n" 9494msgid "Assertion failed at %s:%d.\n"
9645msgstr "Aserción fallida en %s:%d.\n" 9495msgstr "Aserción fallida en %s:%d.\n"
9646 9496
9647#: src/include/gnunet_common.h:807 9497#: src/include/gnunet_common.h:809
9648#, c-format 9498#, c-format
9649msgid "External protocol violation detected at %s:%d.\n" 9499msgid "External protocol violation detected at %s:%d.\n"
9650msgstr "Violación externa del protocolo detectada en %s:%d.\n" 9500msgstr "Violación externa del protocolo detectada en %s:%d.\n"
9651 9501
9652#: src/include/gnunet_common.h:834 src/include/gnunet_common.h:843 9502#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
9653#, c-format 9503#, c-format
9654msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" 9504msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
9655msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n" 9505msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
9656 9506
9507#, fuzzy
9508#~ msgid "Invalid tunnel owner `%s'\n"
9509#~ msgstr "Formato de tiempo no válido «%s»\n"
9510
9511#, fuzzy
9512#~ msgid "Provide information about a particular tunnel"
9513#~ msgstr "proveer información acerca de un túnel en particular"
9514
9515#, fuzzy
9516#~ msgid "Failed to store membership information!\n"
9517#~ msgstr ""
9518#~ "Se produjo un fallo al retomar la operación de publicación «%s»: %s\n"
9519
9520#, fuzzy
9521#~ msgid "Failed to test membership!\n"
9522#~ msgstr "¡Se produjo un fallo al configurar el túnel mesh!\n"
9523
9524#, fuzzy
9525#~ msgid "Dropping invalid fragment\n"
9526#~ msgstr "Parámetro no válido «%s»\n"
9527
9528#, fuzzy
9529#~ msgid "Failed to store fragment\n"
9530#~ msgstr "Se produjo un fallo al iniciar el demonio: %s\n"
9531
9532#, fuzzy
9533#~ msgid "Failed to get fragment!\n"
9534#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
9535
9536#, fuzzy
9537#~ msgid "Failed to get message!\n"
9538#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
9539
9540#, fuzzy
9541#~ msgid "Failed to get message fragment!\n"
9542#~ msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n"
9543
9544#, fuzzy
9545#~ msgid "Failed to get master counters!\n"
9546#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
9547
9548#, fuzzy
9549#~ msgid "Failed to begin modifying state: %d\n"
9550#~ msgstr "Se produjo un fallo al cargar el estado: %s\n"
9551
9552#, fuzzy
9553#~ msgid "Failed to modify state: %d\n"
9554#~ msgstr "Se produjo un fallo al cargar el estado: %s\n"
9555
9556#, fuzzy
9557#~ msgid "Failed to end modifying state!\n"
9558#~ msgstr "Se produjo un fallo al cargar el estado: %s\n"
9559
9560#, fuzzy
9561#~ msgid "Failed to begin synchronizing state!\n"
9562#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
9563
9564#, fuzzy
9565#~ msgid "Failed to end synchronizing state!\n"
9566#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
9567
9568#, fuzzy
9569#~ msgid "Failed to reset state!\n"
9570#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
9571
9572#, fuzzy
9573#~ msgid "Failed to get state variable!\n"
9574#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
9575
9576#, fuzzy
9577#~ msgid "Unable to initialize Mysql.\n"
9578#~ msgstr "Imposible inicializar SQLite: %s.\n"
9579
9580#, fuzzy
9581#~ msgid "Failed to run SQL statement `%s'\n"
9582#~ msgstr "Se produjo un fallo al preparar la sentencia «%s»\n"
9583
9584#, fuzzy
9585#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
9586#~ msgstr "«%s» falló en %s: %d con el error: %s\n"
9587
9588#, fuzzy
9589#~ msgid "SQLite database running\n"
9590#~ msgstr "Base de datos sqlite ejecutándose\n"
9591
9592#, fuzzy
9593#~ msgid "--place missing or invalid.\n"
9594#~ msgstr "Parámetro no válido «%s»\n"
9595
9596#, fuzzy
9597#~ msgid "name or public key of ego"
9598#~ msgstr "Parámetro no válido «%s»\n"
9599
9600#, fuzzy
9601#~ msgid "wait for incoming messages"
9602#~ msgstr "Falló al entregar el mensaje '%s'.\n"
9603
9604#, fuzzy
9605#~ msgid "GNS name"
9606#~ msgstr "Mostrar el _nombre"
9607
9608#, fuzzy
9609#~ msgid "method name"
9610#~ msgstr "Mostrar el _nombre"
9611
9612#, fuzzy
9613#~ msgid "number of messages to replay from history"
9614#~ msgstr "número de mensajes a usar por iteración"
9615
9657#~ msgid "Could not resolve `%s' (%s): %s\n" 9616#~ msgid "Could not resolve `%s' (%s): %s\n"
9658#~ msgstr "No se pudo resolver «%s» (%s): %s\n" 9617#~ msgstr "No se pudo resolver «%s» (%s): %s\n"
9659 9618
@@ -11084,12 +11043,6 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
11084#~ "El servicio de transporte no es capaz de acceder a la clave de la " 11043#~ "El servicio de transporte no es capaz de acceder a la clave de la "
11085#~ "máquina. Saliendo.\n" 11044#~ "máquina. Saliendo.\n"
11086 11045
11087#~ msgid ""
11088#~ "Failed to recover namespace `%s', cannot resume publishing operation.\n"
11089#~ msgstr ""
11090#~ "Se produjo un fallo al recuperar el espacio de nombres «%s», no se pudo "
11091#~ "retomar la operación de publicación.\n"
11092
11093#~ msgid "Failed to create or read private key for namespace `%s'\n" 11046#~ msgid "Failed to create or read private key for namespace `%s'\n"
11094#~ msgstr "" 11047#~ msgstr ""
11095#~ "Se produjo un fallo al crear o leer la clave privada para el espacio de " 11048#~ "Se produjo un fallo al crear o leer la clave privada para el espacio de "
@@ -14572,9 +14525,6 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
14572#~ msgid "No commands specified.\n" 14525#~ msgid "No commands specified.\n"
14573#~ msgstr "Ningún comando fue especificado.\n" 14526#~ msgstr "Ningún comando fue especificado.\n"
14574 14527
14575#~ msgid "Superflous arguments (ignored).\n"
14576#~ msgstr "Argumentos superfluos (ignorados).\n"
14577
14578#~ msgid "Query `%s' had no results.\n" 14528#~ msgid "Query `%s' had no results.\n"
14579#~ msgstr "La pregunta '%s' no tuvo resultados.\n" 14529#~ msgstr "La pregunta '%s' no tuvo resultados.\n"
14580 14530
@@ -14760,9 +14710,6 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
14760#~ "Solo se puede arrancar wizard para configurar gnunetd.\n" 14710#~ "Solo se puede arrancar wizard para configurar gnunetd.\n"
14761#~ "¿Te olvidaste de la opción %s'?\n" 14711#~ "¿Te olvidaste de la opción %s'?\n"
14762 14712
14763#~ msgid "Gtk GNUnet Configurator"
14764#~ msgstr "Configurador Gtk de GNUnet"
14765
14766#~ msgid "_File" 14713#~ msgid "_File"
14767#~ msgstr "_Fichero" 14714#~ msgstr "_Fichero"
14768 14715
diff --git a/po/fr.po b/po/fr.po
index 41ac372ef..02c8d6295 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
7msgstr "" 7msgstr ""
8"Project-Id-Version: gnunet 0.10.1\n" 8"Project-Id-Version: gnunet 0.10.1\n"
9"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" 9"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
10"POT-Creation-Date: 2018-10-20 11:13+0200\n" 10"POT-Creation-Date: 2019-02-13 00:37+0100\n"
11"PO-Revision-Date: 2015-12-24 01:20+0100\n" 11"PO-Revision-Date: 2015-12-24 01:20+0100\n"
12"Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" 12"Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
13"Language-Team: French <traduc@traduc.org>\n" 13"Language-Team: French <traduc@traduc.org>\n"
@@ -16,1014 +16,1009 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n" 16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n" 17"Content-Transfer-Encoding: 8bit\n"
18 18
19#: src/arm/gnunet-arm.c:154 19#: src/arm/gnunet-arm.c:156
20#, c-format 20#, c-format
21msgid "Failed to remove configuration file %s\n" 21msgid "Failed to remove configuration file %s\n"
22msgstr "" 22msgstr ""
23 23
24#: src/arm/gnunet-arm.c:160 24#: src/arm/gnunet-arm.c:162
25#, c-format 25#, c-format
26msgid "Failed to remove servicehome directory %s\n" 26msgid "Failed to remove servicehome directory %s\n"
27msgstr "" 27msgstr ""
28 28
29#: src/arm/gnunet-arm.c:220 src/testbed/gnunet-service-testbed_peers.c:1137 29#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
30msgid "Message was sent successfully" 30msgid "Message was sent successfully"
31msgstr "" 31msgstr ""
32 32
33#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139 33#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
34msgid "We disconnected from ARM before we could send a request" 34msgid "We disconnected from ARM before we could send a request"
35msgstr "" 35msgstr ""
36 36
37#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141 37#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
38msgid "Unknown request status" 38msgid "Unknown request status"
39msgstr "" 39msgstr ""
40 40
41#: src/arm/gnunet-arm.c:240 41#: src/arm/gnunet-arm.c:242
42#, fuzzy 42#, fuzzy
43msgid "is stopped" 43msgid "is stopped"
44msgstr "%s est arrêté" 44msgstr "%s est arrêté"
45 45
46#: src/arm/gnunet-arm.c:242 46#: src/arm/gnunet-arm.c:244
47#, fuzzy 47#, fuzzy
48msgid "is starting" 48msgid "is starting"
49msgstr "%s est en cours de démarrage" 49msgstr "%s est en cours de démarrage"
50 50
51#: src/arm/gnunet-arm.c:244 51#: src/arm/gnunet-arm.c:246
52#, fuzzy 52#, fuzzy
53msgid "is stopping" 53msgid "is stopping"
54msgstr "%s est en cours d'arrêt" 54msgstr "%s est en cours d'arrêt"
55 55
56#: src/arm/gnunet-arm.c:246 56#: src/arm/gnunet-arm.c:248
57#, fuzzy 57#, fuzzy
58msgid "is starting already" 58msgid "is starting already"
59msgstr "%s est déjà en cours de démarrage" 59msgstr "%s est déjà en cours de démarrage"
60 60
61#: src/arm/gnunet-arm.c:248 61#: src/arm/gnunet-arm.c:250
62#, fuzzy 62#, fuzzy
63msgid "is stopping already" 63msgid "is stopping already"
64msgstr "%s est déjà arrêté" 64msgstr "%s est déjà arrêté"
65 65
66#: src/arm/gnunet-arm.c:250 66#: src/arm/gnunet-arm.c:252
67#, fuzzy 67#, fuzzy
68msgid "is started already" 68msgid "is started already"
69msgstr "%s est déjà démarré" 69msgstr "%s est déjà démarré"
70 70
71#: src/arm/gnunet-arm.c:252 71#: src/arm/gnunet-arm.c:254
72#, fuzzy 72#, fuzzy
73msgid "is stopped already" 73msgid "is stopped already"
74msgstr "%s est déjà arrêté" 74msgstr "%s est déjà arrêté"
75 75
76#: src/arm/gnunet-arm.c:254 76#: src/arm/gnunet-arm.c:256
77msgid "service is not known to ARM" 77msgid "service is not known to ARM"
78msgstr "" 78msgstr ""
79 79
80#: src/arm/gnunet-arm.c:256 80#: src/arm/gnunet-arm.c:258
81#, fuzzy 81#, fuzzy
82msgid "service failed to start" 82msgid "service failed to start"
83msgstr "Échec du démarrage de %s\n" 83msgstr "Échec du démarrage de %s\n"
84 84
85#: src/arm/gnunet-arm.c:258 85#: src/arm/gnunet-arm.c:260
86msgid "service cannot be manipulated because ARM is shutting down" 86msgid "service cannot be manipulated because ARM is shutting down"
87msgstr "" 87msgstr ""
88 88
89#: src/arm/gnunet-arm.c:260 89#: src/arm/gnunet-arm.c:262
90#, fuzzy 90#, fuzzy
91msgid "Unknown result code." 91msgid "Unknown result code."
92msgstr "%.s Code d'erreur inconnu" 92msgstr "%.s Code d'erreur inconnu"
93 93
94#: src/arm/gnunet-arm.c:292 94#: src/arm/gnunet-arm.c:295
95msgid "Fatal error initializing ARM API.\n" 95msgid "Fatal error initializing ARM API.\n"
96msgstr "" 96msgstr ""
97 97
98#: src/arm/gnunet-arm.c:320 src/arm/gnunet-arm.c:329 98#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
99#, c-format 99#, c-format
100msgid "Failed to start the ARM service: %s\n" 100msgid "Failed to start the ARM service: %s\n"
101msgstr "" 101msgstr ""
102 102
103#: src/arm/gnunet-arm.c:363 103#: src/arm/gnunet-arm.c:368
104#, c-format 104#, c-format
105msgid "Failed to send a stop request to the ARM service: %s\n" 105msgid "Failed to send a stop request to the ARM service: %s\n"
106msgstr "" 106msgstr ""
107 107
108#: src/arm/gnunet-arm.c:374 108#: src/arm/gnunet-arm.c:379
109#, c-format 109#, c-format
110msgid "Failed to stop the ARM service: %s\n" 110msgid "Failed to stop the ARM service: %s\n"
111msgstr "" 111msgstr ""
112 112
113#: src/arm/gnunet-arm.c:413 113#: src/arm/gnunet-arm.c:419
114#, fuzzy, c-format 114#, fuzzy, c-format
115msgid "Failed to send a request to start the `%s' service: %s\n" 115msgid "Failed to send a request to start the `%s' service: %s\n"
116msgstr "Dernier message reçu de %s\n" 116msgstr "Dernier message reçu de %s\n"
117 117
118#: src/arm/gnunet-arm.c:423 118#: src/arm/gnunet-arm.c:429
119#, c-format 119#, c-format
120msgid "Failed to start the `%s' service: %s\n" 120msgid "Failed to start the `%s' service: %s\n"
121msgstr "" 121msgstr ""
122 122
123#: src/arm/gnunet-arm.c:460 123#: src/arm/gnunet-arm.c:467
124#, c-format 124#, c-format
125msgid "Failed to send a request to kill the `%s' service: %%s\n" 125msgid "Failed to send a request to kill the `%s' service: %%s\n"
126msgstr "" 126msgstr ""
127 127
128#: src/arm/gnunet-arm.c:471 128#: src/arm/gnunet-arm.c:478
129#, c-format 129#, c-format
130msgid "Failed to kill the `%s' service: %s\n" 130msgid "Failed to kill the `%s' service: %s\n"
131msgstr "" 131msgstr ""
132 132
133#: src/arm/gnunet-arm.c:511 133#: src/arm/gnunet-arm.c:519
134#, c-format 134#, c-format
135msgid "Failed to request a list of services: %s\n" 135msgid "Failed to request a list of services: %s\n"
136msgstr "" 136msgstr ""
137 137
138#: src/arm/gnunet-arm.c:520 138#: src/arm/gnunet-arm.c:528
139msgid "Error communicating with ARM. ARM not running?\n" 139msgid "Error communicating with ARM. ARM not running?\n"
140msgstr "" 140msgstr ""
141 141
142#: src/arm/gnunet-arm.c:526 142#: src/arm/gnunet-arm.c:534
143msgid "Running services:\n" 143msgid "Running services:\n"
144msgstr "Services en exécution :\n" 144msgstr "Services en exécution :\n"
145 145
146#: src/arm/gnunet-arm.c:614 146#: src/arm/gnunet-arm.c:623
147#, c-format 147#, c-format
148msgid "Now only monitoring, press CTRL-C to stop.\n" 148msgid "Now only monitoring, press CTRL-C to stop.\n"
149msgstr "" 149msgstr ""
150 150
151#: src/arm/gnunet-arm.c:646 151#: src/arm/gnunet-arm.c:656
152#, c-format 152#, c-format
153msgid "Stopped %s.\n" 153msgid "Stopped %s.\n"
154msgstr "Arrêté %s.\n" 154msgstr "Arrêté %s.\n"
155 155
156#: src/arm/gnunet-arm.c:649 156#: src/arm/gnunet-arm.c:659
157#, c-format 157#, c-format
158msgid "Starting %s...\n" 158msgid "Starting %s...\n"
159msgstr "En cous de démarrage %s…\n" 159msgstr "En cous de démarrage %s…\n"
160 160
161#: src/arm/gnunet-arm.c:652 161#: src/arm/gnunet-arm.c:662
162#, c-format 162#, c-format
163msgid "Stopping %s...\n" 163msgid "Stopping %s...\n"
164msgstr "En cour d'arrêt %s…\n" 164msgstr "En cour d'arrêt %s…\n"
165 165
166#: src/arm/gnunet-arm.c:666 166#: src/arm/gnunet-arm.c:676
167#, c-format 167#, c-format
168msgid "Unknown status %u for service %s.\n" 168msgid "Unknown status %u for service %s.\n"
169msgstr "" 169msgstr ""
170 170
171#: src/arm/gnunet-arm.c:767 171#: src/arm/gnunet-arm.c:766
172msgid "stop all GNUnet services" 172msgid "stop all GNUnet services"
173msgstr "" 173msgstr ""
174 174
175#: src/arm/gnunet-arm.c:773 175#: src/arm/gnunet-arm.c:771
176msgid "start a particular service" 176msgid "start a particular service"
177msgstr "" 177msgstr ""
178 178
179#: src/arm/gnunet-arm.c:779 179#: src/arm/gnunet-arm.c:776
180msgid "stop a particular service" 180msgid "stop a particular service"
181msgstr "" 181msgstr ""
182 182
183#: src/arm/gnunet-arm.c:784 183#: src/arm/gnunet-arm.c:780
184msgid "start all GNUnet default services" 184msgid "start all GNUnet default services"
185msgstr "" 185msgstr ""
186 186
187#: src/arm/gnunet-arm.c:789 187#: src/arm/gnunet-arm.c:784
188msgid "stop and start all GNUnet default services" 188msgid "stop and start all GNUnet default services"
189msgstr "" 189msgstr ""
190 190
191#: src/arm/gnunet-arm.c:793 191#: src/arm/gnunet-arm.c:788
192msgid "delete config file and directory on exit" 192msgid "delete config file and directory on exit"
193msgstr "" 193msgstr ""
194 194
195#: src/arm/gnunet-arm.c:798 195#: src/arm/gnunet-arm.c:792
196msgid "monitor ARM activities" 196msgid "monitor ARM activities"
197msgstr "" 197msgstr ""
198 198
199#: src/arm/gnunet-arm.c:803 199#: src/arm/gnunet-arm.c:796
200msgid "don't print status messages" 200msgid "don't print status messages"
201msgstr "" 201msgstr ""
202 202
203#: src/arm/gnunet-arm.c:809 203#: src/arm/gnunet-arm.c:801
204msgid "exit with error status if operation does not finish after DELAY" 204msgid "exit with error status if operation does not finish after DELAY"
205msgstr "" 205msgstr ""
206 206
207#: src/arm/gnunet-arm.c:814 207#: src/arm/gnunet-arm.c:805
208msgid "list currently running services" 208msgid "list currently running services"
209msgstr "" 209msgstr ""
210 210
211#: src/arm/gnunet-arm.c:819 211#: src/arm/gnunet-arm.c:809
212msgid "don't let gnunet-service-arm inherit standard output" 212msgid "don't let gnunet-service-arm inherit standard output"
213msgstr "" 213msgstr ""
214 214
215#: src/arm/gnunet-arm.c:824 215#: src/arm/gnunet-arm.c:813
216msgid "don't let gnunet-service-arm inherit standard error" 216msgid "don't let gnunet-service-arm inherit standard error"
217msgstr "" 217msgstr ""
218 218
219#: src/arm/gnunet-arm.c:837 219#: src/arm/gnunet-arm.c:828
220msgid "Control services and the Automated Restart Manager (ARM)" 220msgid "Control services and the Automated Restart Manager (ARM)"
221msgstr "" 221msgstr ""
222 222
223#: src/arm/gnunet-service-arm.c:386 src/transport/plugin_transport_tcp.c:1118 223#: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
224#: src/transport/plugin_transport_xt.c:1118 224#: src/transport/plugin_transport_xt.c:1120
225#: src/transport/tcp_service_legacy.c:555 src/util/service.c:610 225#: src/transport/tcp_service_legacy.c:557 src/util/service.c:1167
226#, c-format 226#, c-format
227msgid "" 227msgid ""
228"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n" 228"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
229msgstr "" 229msgstr ""
230 230
231#: src/arm/gnunet-service-arm.c:410 src/arm/gnunet-service-arm.c:416 231#: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
232#: src/transport/plugin_transport_tcp.c:1137 232#: src/transport/plugin_transport_tcp.c:1139
233#: src/transport/plugin_transport_tcp.c:1143 233#: src/transport/plugin_transport_tcp.c:1145
234#: src/transport/plugin_transport_tcp.c:3823 234#: src/transport/plugin_transport_tcp.c:3829
235#: src/transport/plugin_transport_xt.c:1137 235#: src/transport/plugin_transport_xt.c:1139
236#: src/transport/plugin_transport_xt.c:1143 236#: src/transport/plugin_transport_xt.c:1145
237#: src/transport/plugin_transport_xt.c:3831 237#: src/transport/plugin_transport_xt.c:3833
238#: src/transport/tcp_service_legacy.c:574 238#: src/transport/tcp_service_legacy.c:576
239#: src/transport/tcp_service_legacy.c:580 src/util/service.c:635 239#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1192
240#: src/util/service.c:641 240#: src/util/service.c:1198
241#, c-format 241#, c-format
242msgid "Require valid port number for service `%s' in configuration!\n" 242msgid "Require valid port number for service `%s' in configuration!\n"
243msgstr "" 243msgstr ""
244 244
245#: src/arm/gnunet-service-arm.c:455 src/transport/plugin_transport_tcp.c:1174 245#: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
246#: src/transport/plugin_transport_xt.c:1174 246#: src/transport/plugin_transport_xt.c:1176
247#: src/transport/tcp_service_legacy.c:611 src/util/client.c:504 247#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
248#: src/util/service.c:680 248#: src/util/service.c:1237
249#, c-format 249#, c-format
250msgid "UNIXPATH `%s' too long, maximum length is %llu\n" 250msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
251msgstr "" 251msgstr ""
252 252
253#: src/arm/gnunet-service-arm.c:460 src/transport/plugin_transport_tcp.c:1178 253#: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
254#: src/transport/plugin_transport_xt.c:1178 254#: src/transport/plugin_transport_xt.c:1180
255#: src/transport/tcp_service_legacy.c:615 src/util/client.c:509 255#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
256#: src/util/service.c:685 256#: src/util/service.c:1242
257#, c-format 257#, c-format
258msgid "Using `%s' instead\n" 258msgid "Using `%s' instead\n"
259msgstr "" 259msgstr ""
260 260
261#: src/arm/gnunet-service-arm.c:493 src/transport/plugin_transport_tcp.c:1209 261#: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
262#: src/transport/plugin_transport_xt.c:1209 262#: src/transport/plugin_transport_xt.c:1211
263#: src/transport/tcp_service_legacy.c:646 src/util/service.c:721 263#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1278
264#, c-format 264#, c-format
265msgid "" 265msgid ""
266"Disabling UNIX domain socket support for service `%s', failed to create UNIX " 266"Disabling UNIX domain socket support for service `%s', failed to create UNIX "
267"domain socket: %s\n" 267"domain socket: %s\n"
268msgstr "" 268msgstr ""
269 269
270#: src/arm/gnunet-service-arm.c:515 src/transport/plugin_transport_tcp.c:1226 270#: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
271#: src/transport/plugin_transport_xt.c:1226 271#: src/transport/plugin_transport_xt.c:1228
272#: src/transport/tcp_service_legacy.c:663 src/util/service.c:739 272#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1296
273#, c-format 273#, c-format
274msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n" 274msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
275msgstr "" 275msgstr ""
276 276
277#: src/arm/gnunet-service-arm.c:554 277#: src/arm/gnunet-service-arm.c:556
278#: src/transport/plugin_transport_http_server.c:2682 278#: src/transport/plugin_transport_http_server.c:2688
279#: src/transport/plugin_transport_tcp.c:1257 279#: src/transport/plugin_transport_tcp.c:1259
280#: src/transport/plugin_transport_xt.c:1257 280#: src/transport/plugin_transport_xt.c:1259
281#: src/transport/tcp_service_legacy.c:694 src/util/service.c:780 281#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1337
282#, c-format 282#, c-format
283msgid "Failed to resolve `%s': %s\n" 283msgid "Failed to resolve `%s': %s\n"
284msgstr "Résolution de « %s » échouée : %s\n" 284msgstr "Résolution de « %s » échouée : %s\n"
285 285
286#: src/arm/gnunet-service-arm.c:573 286#: src/arm/gnunet-service-arm.c:575
287#: src/transport/plugin_transport_http_server.c:2700 287#: src/transport/plugin_transport_http_server.c:2706
288#: src/transport/plugin_transport_tcp.c:1276 288#: src/transport/plugin_transport_tcp.c:1278
289#: src/transport/plugin_transport_xt.c:1276 289#: src/transport/plugin_transport_xt.c:1278
290#: src/transport/tcp_service_legacy.c:713 src/util/service.c:800 290#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1357
291#, c-format 291#, c-format
292msgid "Failed to find %saddress for `%s'.\n" 292msgid "Failed to find %saddress for `%s'.\n"
293msgstr "" 293msgstr ""
294 294
295#: src/arm/gnunet-service-arm.c:984 295#: src/arm/gnunet-service-arm.c:986
296#, c-format 296#, c-format
297msgid "Failed to start service `%s'\n" 297msgid "Failed to start service `%s'\n"
298msgstr "" 298msgstr ""
299 299
300#: src/arm/gnunet-service-arm.c:995 300#: src/arm/gnunet-service-arm.c:997
301#, c-format 301#, c-format
302msgid "Starting service `%s'\n" 302msgid "Starting service `%s'\n"
303msgstr "" 303msgstr ""
304 304
305#: src/arm/gnunet-service-arm.c:1107 305#: src/arm/gnunet-service-arm.c:1109
306#, c-format 306#, c-format
307msgid "Unable to create socket for service `%s': %s\n" 307msgid "Unable to create socket for service `%s': %s\n"
308msgstr "" 308msgstr ""
309 309
310#: src/arm/gnunet-service-arm.c:1142 310#: src/arm/gnunet-service-arm.c:1144
311#, c-format 311#, c-format
312msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n" 312msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n"
313msgstr "" 313msgstr ""
314 314
315#: src/arm/gnunet-service-arm.c:1185 315#: src/arm/gnunet-service-arm.c:1187
316#, c-format 316#, c-format
317msgid "ARM now monitors connections to service `%s' at `%s'\n" 317msgid "ARM now monitors connections to service `%s' at `%s'\n"
318msgstr "" 318msgstr ""
319 319
320#: src/arm/gnunet-service-arm.c:1364 320#: src/arm/gnunet-service-arm.c:1346
321#, c-format 321#, c-format
322msgid "Preparing to stop `%s'\n" 322msgid "Preparing to stop `%s'\n"
323msgstr "" 323msgstr ""
324 324
325#: src/arm/gnunet-service-arm.c:1669 325#: src/arm/gnunet-service-arm.c:1651
326#, c-format 326#, c-format
327msgid "Restarting service `%s'.\n" 327msgid "Restarting service `%s'.\n"
328msgstr "" 328msgstr ""
329 329
330#: src/arm/gnunet-service-arm.c:1830 330#: src/arm/gnunet-service-arm.c:1812
331msgid "exit" 331msgid "exit"
332msgstr "exit" 332msgstr "exit"
333 333
334#: src/arm/gnunet-service-arm.c:1835 334#: src/arm/gnunet-service-arm.c:1817
335msgid "signal" 335msgid "signal"
336msgstr "signal" 336msgstr "signal"
337 337
338#: src/arm/gnunet-service-arm.c:1840 338#: src/arm/gnunet-service-arm.c:1822
339msgid "unknown" 339msgid "unknown"
340msgstr "inconnu" 340msgstr "inconnu"
341 341
342#: src/arm/gnunet-service-arm.c:1846 342#: src/arm/gnunet-service-arm.c:1828
343#, c-format 343#, c-format
344msgid "Service `%s' took %s to terminate\n" 344msgid "Service `%s' took %s to terminate\n"
345msgstr "" 345msgstr ""
346 346
347#: src/arm/gnunet-service-arm.c:1872 347#: src/arm/gnunet-service-arm.c:1854
348#, c-format 348#, c-format
349msgid "Service `%s' terminated normally, will restart at any time\n" 349msgid "Service `%s' terminated normally, will restart at any time\n"
350msgstr "" 350msgstr ""
351 351
352#: src/arm/gnunet-service-arm.c:1888 352#: src/arm/gnunet-service-arm.c:1870
353#, c-format 353#, c-format
354msgid "Service `%s' terminated with status %s/%d, will restart in %s\n" 354msgid "Service `%s' terminated with status %s/%d, will restart in %s\n"
355msgstr "" 355msgstr ""
356 356
357#: src/arm/mockup-service.c:40 357#: src/arm/mockup-service.c:42
358msgid "Initiating shutdown as requested by client.\n" 358msgid "Initiating shutdown as requested by client.\n"
359msgstr "" 359msgstr ""
360 360
361#: src/ats/gnunet-ats-solver-eval.c:2779 src/ats/gnunet-ats-solver-eval.c:2820 361#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
362#, c-format 362#, c-format
363msgid "" 363msgid ""
364"Could not load quota for network `%s': `%s', assigning default bandwidth " 364"Could not load quota for network `%s': `%s', assigning default bandwidth "
365"%llu\n" 365"%llu\n"
366msgstr "" 366msgstr ""
367 367
368#: src/ats/gnunet-ats-solver-eval.c:2797 368#: src/ats/gnunet-ats-solver-eval.c:2799
369#, c-format 369#, c-format
370msgid "" 370msgid ""
371"No outbound quota configured for network `%s', assigning default bandwidth " 371"No outbound quota configured for network `%s', assigning default bandwidth "
372"%llu\n" 372"%llu\n"
373msgstr "" 373msgstr ""
374 374
375#: src/ats/gnunet-ats-solver-eval.c:2838 375#: src/ats/gnunet-ats-solver-eval.c:2840
376#, c-format 376#, c-format
377msgid "" 377msgid ""
378"No outbound quota configure for network `%s', assigning default bandwidth " 378"No outbound quota configure for network `%s', assigning default bandwidth "
379"%llu\n" 379"%llu\n"
380msgstr "" 380msgstr ""
381 381
382#: src/ats/gnunet-ats-solver-eval.c:3292 src/ats-tests/gnunet-solver-eval.c:937 382#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
383msgid "solver to use" 383msgid "solver to use"
384msgstr "solveur utilisé" 384msgstr "solveur utilisé"
385 385
386#: src/ats/gnunet-ats-solver-eval.c:3297 src/ats-tests/gnunet-solver-eval.c:943 386#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
387#: src/ats-tests/gnunet-solver-eval.c:948 387#: src/ats-tests/gnunet-solver-eval.c:950
388msgid "experiment to use" 388msgid "experiment to use"
389msgstr "" 389msgstr ""
390 390
391#: src/ats/gnunet-ats-solver-eval.c:3304 391#: src/ats/gnunet-ats-solver-eval.c:3306
392msgid "print logging" 392msgid "print logging"
393msgstr "afficher le journal" 393msgstr "afficher le journal"
394 394
395#: src/ats/gnunet-ats-solver-eval.c:3309 395#: src/ats/gnunet-ats-solver-eval.c:3311
396msgid "save logging to disk" 396msgid "save logging to disk"
397msgstr "" 397msgstr ""
398 398
399#: src/ats/gnunet-ats-solver-eval.c:3314 399#: src/ats/gnunet-ats-solver-eval.c:3316
400msgid "disable normalization" 400msgid "disable normalization"
401msgstr "" 401msgstr ""
402 402
403#: src/ats/gnunet-service-ats_plugins.c:302 403#: src/ats/gnunet-service-ats-new.c:756
404#: src/ats/gnunet-service-ats_plugins.c:451
405#, c-format
406msgid "Failed to initialize solver `%s'!\n"
407msgstr ""
408
409#: src/ats/gnunet-service-ats_plugins.c:304
404#, c-format 410#, c-format
405msgid "" 411msgid ""
406"Could not load %s quota for network `%s': `%s', assigning default bandwidth " 412"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
407"%llu\n" 413"%llu\n"
408msgstr "" 414msgstr ""
409 415
410#: src/ats/gnunet-service-ats_plugins.c:312 416#: src/ats/gnunet-service-ats_plugins.c:314
411#, c-format 417#, c-format
412msgid "%s quota configured for network `%s' is %llu\n" 418msgid "%s quota configured for network `%s' is %llu\n"
413msgstr "" 419msgstr ""
414 420
415#: src/ats/gnunet-service-ats_plugins.c:357 421#: src/ats/gnunet-service-ats_plugins.c:359
416#, c-format 422#, c-format
417msgid "" 423msgid ""
418"No %s-quota configured for network `%s', assigning default bandwidth %llu\n" 424"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
419msgstr "" 425msgstr ""
420 426
421#: src/ats/gnunet-service-ats_plugins.c:449 427#: src/ats/plugin_ats2_common.c:90
422#, c-format 428#, c-format
423msgid "Failed to initialize solver `%s'!\n" 429msgid ""
430"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
431"%llu\n"
424msgstr "" 432msgstr ""
425 433
426#: src/ats/plugin_ats_mlp.c:1272 434#: src/ats/plugin_ats_mlp.c:1274
427msgid "Problem size too large, cannot allocate memory!\n" 435msgid "Problem size too large, cannot allocate memory!\n"
428msgstr "" 436msgstr ""
429 437
430#: src/ats/plugin_ats_mlp.c:1868 438#: src/ats/plugin_ats_mlp.c:1870
431#, c-format 439#, c-format
432msgid "Adding address for peer `%s' multiple times\n" 440msgid "Adding address for peer `%s' multiple times\n"
433msgstr "" 441msgstr ""
434 442
435#: src/ats/plugin_ats_mlp.c:1912 443#: src/ats/plugin_ats_mlp.c:1914
436#, c-format 444#, c-format
437msgid "Updating address property for peer `%s' %p not added before\n" 445msgid "Updating address property for peer `%s' %p not added before\n"
438msgstr "" 446msgstr ""
439 447
440#: src/ats/plugin_ats_mlp.c:2474 448#: src/ats/plugin_ats_mlp.c:2476
441msgid "" 449msgid ""
442"MLP solver is not optimizing for anything, changing to feasibility check\n" 450"MLP solver is not optimizing for anything, changing to feasibility check\n"
443msgstr "" 451msgstr ""
444 452
445#: src/ats/plugin_ats_mlp.c:2514 src/ats/plugin_ats_mlp.c:2531 453#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
446#: src/ats/plugin_ats_mlp.c:2563 src/ats/plugin_ats_mlp.c:2581 454#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
447#: src/ats/plugin_ats_mlp.c:2600 src/ats/plugin_ats_proportional.c:1139 455#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
448#: src/ats/plugin_ats_ril.c:2610 src/ats/plugin_ats_ril.c:2627 456#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
449#: src/ats/plugin_ats_ril.c:2644 src/ats/plugin_ats_ril.c:2661 457#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
450#: src/ats/plugin_ats_ril.c:2678 src/ats/plugin_ats_ril.c:2695 458#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
451#: src/ats/plugin_ats_ril.c:2712 src/ats/plugin_ats_ril.c:2729 459#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
452#, fuzzy, c-format 460#, fuzzy, c-format
453msgid "Invalid %s configuration %f \n" 461msgid "Invalid %s configuration %f \n"
454msgstr "fornat invalide : « %s »\n" 462msgstr "fornat invalide : « %s »\n"
455 463
456#: src/ats/plugin_ats_mlp.c:2669 464#: src/ats/plugin_ats_mlp.c:2671
457#, c-format 465#, c-format
458msgid "" 466msgid ""
459"Adjusting inconsistent outbound quota configuration for network `%s', is " 467"Adjusting inconsistent outbound quota configuration for network `%s', is "
460"%llu must be at least %llu\n" 468"%llu must be at least %llu\n"
461msgstr "" 469msgstr ""
462 470
463#: src/ats/plugin_ats_mlp.c:2678 471#: src/ats/plugin_ats_mlp.c:2680
464#, c-format 472#, c-format
465msgid "" 473msgid ""
466"Adjusting inconsistent inbound quota configuration for network `%s', is %llu " 474"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
467"must be at least %llu\n" 475"must be at least %llu\n"
468msgstr "" 476msgstr ""
469 477
470#: src/ats/plugin_ats_mlp.c:2688 478#: src/ats/plugin_ats_mlp.c:2690
471#, c-format 479#, c-format
472msgid "" 480msgid ""
473"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" 481"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
474msgstr "" 482msgstr ""
475 483
476#: src/ats/plugin_ats_mlp.c:2697 484#: src/ats/plugin_ats_mlp.c:2699
477#, c-format 485#, c-format
478msgid "" 486msgid ""
479"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" 487"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
480msgstr "" 488msgstr ""
481 489
482#: src/ats/plugin_ats_proportional.c:1162 490#: src/ats/plugin_ats_proportional.c:1164
483#, fuzzy, c-format 491#, fuzzy, c-format
484msgid "Invalid %s configuration %f\n" 492msgid "Invalid %s configuration %f\n"
485msgstr "fornat invalide : « %s »\n" 493msgstr "fornat invalide : « %s »\n"
486 494
487#: src/ats-tests/ats-testing.c:420 495#: src/ats-tests/ats-testing.c:422
488#, c-format 496#, c-format
489msgid "Connected master [%u] with slave [%u]\n" 497msgid "Connected master [%u] with slave [%u]\n"
490msgstr "" 498msgstr ""
491 499
492#: src/ats-tests/ats-testing.c:427 500#: src/ats-tests/ats-testing.c:429
493#, c-format 501#, c-format
494msgid "Failed to connect master peer [%u] with slave [%u]\n" 502msgid "Failed to connect master peer [%u] with slave [%u]\n"
495msgstr "" 503msgstr ""
496 504
497#: src/ats-tests/ats-testing-log.c:835 505#: src/ats-tests/ats-testing-log.c:837
498msgid "Stop logging\n" 506msgid "Stop logging\n"
499msgstr "Arrêter la journalisation\n" 507msgstr "Arrêter la journalisation\n"
500 508
501#: src/ats-tests/ats-testing-log.c:890 509#: src/ats-tests/ats-testing-log.c:892
502#, c-format 510#, c-format
503msgid "Start logging `%s'\n" 511msgid "Start logging `%s'\n"
504msgstr "Démarrer la journalisation « %s »\n" 512msgstr "Démarrer la journalisation « %s »\n"
505 513
506#: src/ats-tests/gnunet-ats-sim.c:88 514#: src/ats-tests/gnunet-ats-sim.c:90
507#, c-format 515#, c-format
508msgid "" 516msgid ""
509"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. " 517"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. "
510"= %u KiB/s\n" 518"= %u KiB/s\n"
511msgstr "" 519msgstr ""
512 520
513#: src/ats-tool/gnunet-ats.c:305 521#: src/ats-tool/gnunet-ats.c:307
514#, c-format 522#, c-format
515msgid "%u address resolutions had a timeout\n" 523msgid "%u address resolutions had a timeout\n"
516msgstr "" 524msgstr ""
517 525
518#: src/ats-tool/gnunet-ats.c:309 526#: src/ats-tool/gnunet-ats.c:311
519#, c-format 527#, c-format
520msgid "ATS returned stat_results for %u addresses\n" 528msgid "ATS returned stat_results for %u addresses\n"
521msgstr "" 529msgstr ""
522 530
523#: src/ats-tool/gnunet-ats.c:393 531#: src/ats-tool/gnunet-ats.c:395
524#, c-format 532#, c-format
525msgid "" 533msgid ""
526"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/" 534"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/"
527"s, %s\n" 535"s, %s\n"
528msgstr "" 536msgstr ""
529 537
530#: src/ats-tool/gnunet-ats.c:400 538#: src/ats-tool/gnunet-ats.c:402
531msgid "active " 539msgid "active "
532msgstr "" 540msgstr ""
533 541
534#: src/ats-tool/gnunet-ats.c:400 542#: src/ats-tool/gnunet-ats.c:402
535msgid "inactive " 543msgid "inactive "
536msgstr "" 544msgstr ""
537 545
538#: src/ats-tool/gnunet-ats.c:510 546#: src/ats-tool/gnunet-ats.c:512
539#, c-format 547#, c-format
540msgid "Removed address of peer `%s' with plugin `%s'\n" 548msgid "Removed address of peer `%s' with plugin `%s'\n"
541msgstr "" 549msgstr ""
542 550
543#: src/ats-tool/gnunet-ats.c:703 551#: src/ats-tool/gnunet-ats.c:705
544#, c-format 552#, c-format
545msgid "Quota for network `%11s' (in/out): %10s / %10s\n" 553msgid "Quota for network `%11s' (in/out): %10s / %10s\n"
546msgstr "" 554msgstr ""
547 555
548#: src/ats-tool/gnunet-ats.c:746 src/ats-tool/gnunet-ats.c:759 556#: src/ats-tool/gnunet-ats.c:748 src/ats-tool/gnunet-ats.c:761
549#, c-format 557#, c-format
550msgid "Failed to parse peer identity `%s'\n" 558msgid "Failed to parse peer identity `%s'\n"
551msgstr "" 559msgstr ""
552 560
553#: src/ats-tool/gnunet-ats.c:771 561#: src/ats-tool/gnunet-ats.c:773
554#, c-format 562#, c-format
555msgid "Please select one operation: %s or %s or %s or %s or %s\n" 563msgid "Please select one operation: %s or %s or %s or %s or %s\n"
556msgstr "" 564msgstr ""
557 565
558#: src/ats-tool/gnunet-ats.c:793 src/ats-tool/gnunet-ats.c:818 566#: src/ats-tool/gnunet-ats.c:795 src/ats-tool/gnunet-ats.c:820
559#: src/ats-tool/gnunet-ats.c:849 src/ats-tool/gnunet-ats.c:894 567#: src/ats-tool/gnunet-ats.c:851 src/ats-tool/gnunet-ats.c:896
560msgid "Cannot connect to ATS service, exiting...\n" 568msgid "Cannot connect to ATS service, exiting...\n"
561msgstr "" 569msgstr ""
562 570
563#: src/ats-tool/gnunet-ats.c:804 src/ats-tool/gnunet-ats.c:830 571#: src/ats-tool/gnunet-ats.c:806 src/ats-tool/gnunet-ats.c:832
564msgid "Cannot issue request to ATS service, exiting...\n" 572msgid "Cannot issue request to ATS service, exiting...\n"
565msgstr "" 573msgstr ""
566 574
567#: src/ats-tool/gnunet-ats.c:860 575#: src/ats-tool/gnunet-ats.c:862
568msgid "No preference type given!\n" 576msgid "No preference type given!\n"
569msgstr "" 577msgstr ""
570 578
571#: src/ats-tool/gnunet-ats.c:867 579#: src/ats-tool/gnunet-ats.c:869
572msgid "No peer given!\n" 580msgid "No peer given!\n"
573msgstr "" 581msgstr ""
574 582
575#: src/ats-tool/gnunet-ats.c:885 583#: src/ats-tool/gnunet-ats.c:887
576msgid "Valid type required\n" 584msgid "Valid type required\n"
577msgstr "" 585msgstr ""
578 586
579#: src/ats-tool/gnunet-ats.c:948 587#: src/ats-tool/gnunet-ats.c:950
580msgid "get list of active addresses currently used" 588msgid "get list of active addresses currently used"
581msgstr "" 589msgstr ""
582 590
583#: src/ats-tool/gnunet-ats.c:952 591#: src/ats-tool/gnunet-ats.c:954
584msgid "get list of all active addresses" 592msgid "get list of all active addresses"
585msgstr "" 593msgstr ""
586 594
587#: src/ats-tool/gnunet-ats.c:958 595#: src/ats-tool/gnunet-ats.c:960
588#, fuzzy 596#, fuzzy
589msgid "connect to PEER" 597msgid "connect to PEER"
590msgstr "Connecté à" 598msgstr "Connecté à"
591 599
592#: src/ats-tool/gnunet-ats.c:962 600#: src/ats-tool/gnunet-ats.c:964
593msgid "do not resolve IP addresses to hostnames" 601msgid "do not resolve IP addresses to hostnames"
594msgstr "" 602msgstr ""
595 603
596#: src/ats-tool/gnunet-ats.c:967 604#: src/ats-tool/gnunet-ats.c:969
597msgid "monitor mode" 605msgid "monitor mode"
598msgstr "mode moniteur" 606msgstr "mode moniteur"
599 607
600#: src/ats-tool/gnunet-ats.c:972 608#: src/ats-tool/gnunet-ats.c:974
601msgid "set preference for the given peer" 609msgid "set preference for the given peer"
602msgstr "" 610msgstr ""
603 611
604#: src/ats-tool/gnunet-ats.c:977 612#: src/ats-tool/gnunet-ats.c:979
605msgid "print all configured quotas" 613msgid "print all configured quotas"
606msgstr "" 614msgstr ""
607 615
608#: src/ats-tool/gnunet-ats.c:982 616#: src/ats-tool/gnunet-ats.c:984
609msgid "peer id" 617msgid "peer id"
610msgstr "" 618msgstr ""
611 619
612#: src/ats-tool/gnunet-ats.c:988 620#: src/ats-tool/gnunet-ats.c:990
613msgid "preference type to set: latency | bandwidth" 621msgid "preference type to set: latency | bandwidth"
614msgstr "" 622msgstr ""
615 623
616#: src/ats-tool/gnunet-ats.c:994 624#: src/ats-tool/gnunet-ats.c:996
617msgid "preference value" 625msgid "preference value"
618msgstr "" 626msgstr ""
619 627
620#: src/ats-tool/gnunet-ats.c:999 628#: src/ats-tool/gnunet-ats.c:1001
621msgid "verbose output (include ATS address properties)" 629msgid "verbose output (include ATS address properties)"
622msgstr "" 630msgstr ""
623 631
624#: src/ats-tool/gnunet-ats.c:1009 632#: src/ats-tool/gnunet-ats.c:1011
625msgid "Print information about ATS state" 633msgid "Print information about ATS state"
626msgstr "" 634msgstr ""
627 635
628#: src/auction/gnunet-auction-create.c:161 636#: src/auction/gnunet-auction-create.c:163
629msgid "description of the item to be sold" 637msgid "description of the item to be sold"
630msgstr "" 638msgstr ""
631 639
632#: src/auction/gnunet-auction-create.c:167 640#: src/auction/gnunet-auction-create.c:169
633msgid "mapping of possible prices" 641msgid "mapping of possible prices"
634msgstr "" 642msgstr ""
635 643
636#: src/auction/gnunet-auction-create.c:173 644#: src/auction/gnunet-auction-create.c:175
637msgid "max duration per round" 645msgid "max duration per round"
638msgstr "" 646msgstr ""
639 647
640#: src/auction/gnunet-auction-create.c:179 648#: src/auction/gnunet-auction-create.c:181
641msgid "duration until auction starts" 649msgid "duration until auction starts"
642msgstr "" 650msgstr ""
643 651
644#: src/auction/gnunet-auction-create.c:184 652#: src/auction/gnunet-auction-create.c:186
645msgid "" 653msgid ""
646"number of items to sell\n" 654"number of items to sell\n"
647"0 for first price auction\n" 655"0 for first price auction\n"
648">0 for vickrey/M+1st price auction" 656">0 for vickrey/M+1st price auction"
649msgstr "" 657msgstr ""
650 658
651#: src/auction/gnunet-auction-create.c:191 659#: src/auction/gnunet-auction-create.c:193
652msgid "public auction outcome" 660msgid "public auction outcome"
653msgstr "" 661msgstr ""
654 662
655#: src/auction/gnunet-auction-create.c:196 663#: src/auction/gnunet-auction-create.c:198
656msgid "keep running in foreground until auction completes" 664msgid "keep running in foreground until auction completes"
657msgstr "" 665msgstr ""
658 666
659#: src/auction/gnunet-auction-create.c:207 667#: src/auction/gnunet-auction-create.c:209
660msgid "create a new auction and start listening for bidders" 668msgid "create a new auction and start listening for bidders"
661msgstr "" 669msgstr ""
662 670
663#: src/auction/gnunet-auction-info.c:74 src/auction/gnunet-auction-join.c:74 671#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
664#: src/conversation/gnunet-conversation-test.c:252 672#: src/conversation/gnunet-conversation-test.c:254
665#: src/revocation/gnunet-revocation.c:560 src/template/gnunet-template.c:74 673#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
666msgid "help text" 674msgid "help text"
667msgstr "" 675msgstr ""
668 676
669#: src/cadet/gnunet-cadet.c:705 677#: src/cadet/gnunet-cadet.c:631
670#, c-format 678#, c-format
671msgid "Invalid peer ID `%s'\n" 679msgid "Invalid peer ID `%s'\n"
672msgstr "" 680msgstr ""
673 681
674#: src/cadet/gnunet-cadet.c:744 682#: src/cadet/gnunet-cadet.c:718
675#, c-format
676msgid "Invalid tunnel owner `%s'\n"
677msgstr ""
678
679#: src/cadet/gnunet-cadet.c:817
680msgid "Extra arguments are not applicable in combination with this option.\n" 683msgid "Extra arguments are not applicable in combination with this option.\n"
681msgstr "" 684msgstr ""
682 685
683#: src/cadet/gnunet-cadet.c:908 686#: src/cadet/gnunet-cadet.c:795
684#, c-format 687#, c-format
685msgid "Invalid target `%s'\n" 688msgid "Invalid target `%s'\n"
686msgstr "" 689msgstr ""
687 690
688#: src/cadet/gnunet-cadet.c:945 691#: src/cadet/gnunet-cadet.c:832
689msgid "No action requested\n" 692msgid "No action requested\n"
690msgstr "" 693msgstr ""
691 694
692#: src/cadet/gnunet-cadet.c:970 695#: src/cadet/gnunet-cadet.c:857
693msgid "Provide information about a particular connection" 696msgid "Provide information about a particular connection"
694msgstr "" 697msgstr ""
695 698
696#: src/cadet/gnunet-cadet.c:975 699#: src/cadet/gnunet-cadet.c:861
697msgid "Activate echo mode" 700msgid "Activate echo mode"
698msgstr "" 701msgstr ""
699 702
700#: src/cadet/gnunet-cadet.c:980 703#: src/cadet/gnunet-cadet.c:866
701msgid "Dump debug information to STDERR"
702msgstr ""
703
704#: src/cadet/gnunet-cadet.c:986
705msgid "Listen for connections using a shared secret among sender and recipient" 704msgid "Listen for connections using a shared secret among sender and recipient"
706msgstr "" 705msgstr ""
707 706
708#: src/cadet/gnunet-cadet.c:993 707#: src/cadet/gnunet-cadet.c:871
709msgid "Provide information about a patricular peer" 708msgid "Provide information about a patricular peer"
710msgstr "" 709msgstr ""
711 710
712#: src/cadet/gnunet-cadet.c:999 711#: src/cadet/gnunet-cadet.c:875
713msgid "Provide information about all peers" 712msgid "Provide information about all peers"
714msgstr "" 713msgstr ""
715 714
716#: src/cadet/gnunet-cadet.c:1005 715#: src/cadet/gnunet-cadet.c:879
717msgid "Provide information about a particular tunnel"
718msgstr ""
719
720#: src/cadet/gnunet-cadet.c:1011
721msgid "Provide information about all tunnels" 716msgid "Provide information about all tunnels"
722msgstr "" 717msgstr ""
723 718
724#: src/consensus/gnunet-consensus-profiler.c:521 719#: src/consensus/gnunet-consensus-profiler.c:523
725#: src/secretsharing/gnunet-secretsharing-profiler.c:608 720#: src/secretsharing/gnunet-secretsharing-profiler.c:610
726msgid "number of peers in consensus" 721msgid "number of peers in consensus"
727msgstr "" 722msgstr ""
728 723
729#: src/consensus/gnunet-consensus-profiler.c:527 724#: src/consensus/gnunet-consensus-profiler.c:529
730msgid "" 725msgid ""
731"how many peers (random selection without replacement) receive one value?" 726"how many peers (random selection without replacement) receive one value?"
732msgstr "" 727msgstr ""
733 728
734#: src/consensus/gnunet-consensus-profiler.c:533 729#: src/consensus/gnunet-consensus-profiler.c:535
735#: src/set/gnunet-set-profiler.c:431 src/set/gnunet-set-profiler.c:437 730#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
736#: src/set/gnunet-set-profiler.c:460 731#: src/set/gnunet-set-profiler.c:462
737msgid "number of values" 732msgid "number of values"
738msgstr "nombre de valeurs" 733msgstr "nombre de valeurs"
739 734
740#: src/consensus/gnunet-consensus-profiler.c:539 735#: src/consensus/gnunet-consensus-profiler.c:541
741msgid "consensus timeout" 736msgid "consensus timeout"
742msgstr "" 737msgstr ""
743 738
744#: src/consensus/gnunet-consensus-profiler.c:546 739#: src/consensus/gnunet-consensus-profiler.c:548
745msgid "delay until consensus starts" 740msgid "delay until consensus starts"
746msgstr "" 741msgstr ""
747 742
748#: src/consensus/gnunet-consensus-profiler.c:552 743#: src/consensus/gnunet-consensus-profiler.c:554
749#: src/set/gnunet-set-profiler.c:478 744#: src/set/gnunet-set-profiler.c:480
750msgid "write statistics to file" 745msgid "write statistics to file"
751msgstr "" 746msgstr ""
752 747
753#: src/consensus/gnunet-consensus-profiler.c:557 748#: src/consensus/gnunet-consensus-profiler.c:559
754msgid "distribute elements to a static subset of good peers" 749msgid "distribute elements to a static subset of good peers"
755msgstr "" 750msgstr ""
756 751
757#: src/consensus/gnunet-consensus-profiler.c:562 752#: src/consensus/gnunet-consensus-profiler.c:564
758msgid "be more verbose (print received values)" 753msgid "be more verbose (print received values)"
759msgstr "" 754msgstr ""
760 755
761#: src/conversation/conversation_api.c:513 756#: src/conversation/conversation_api.c:515
762#: src/conversation/conversation_api_call.c:492 757#: src/conversation/conversation_api_call.c:494
763msgid "Connection to conversation service lost, trying to reconnect\n" 758msgid "Connection to conversation service lost, trying to reconnect\n"
764msgstr "" 759msgstr ""
765 760
766#: src/conversation/gnunet-conversation.c:275 761#: src/conversation/gnunet-conversation.c:277
767#, c-format 762#, c-format
768msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" 763msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
769msgstr "" 764msgstr ""
770 765
771#: src/conversation/gnunet-conversation.c:300 766#: src/conversation/gnunet-conversation.c:302
772#, c-format 767#, c-format
773msgid "Call from `%s' terminated\n" 768msgid "Call from `%s' terminated\n"
774msgstr "" 769msgstr ""
775 770
776#: src/conversation/gnunet-conversation.c:335 771#: src/conversation/gnunet-conversation.c:337
777#, c-format 772#, c-format
778msgid "Call from `%s' suspended by other user\n" 773msgid "Call from `%s' suspended by other user\n"
779msgstr "" 774msgstr ""
780 775
781#: src/conversation/gnunet-conversation.c:340 776#: src/conversation/gnunet-conversation.c:342
782#, c-format 777#, c-format
783msgid "Call from `%s' resumed by other user\n" 778msgid "Call from `%s' resumed by other user\n"
784msgstr "" 779msgstr ""
785 780
786#: src/conversation/gnunet-conversation.c:358 781#: src/conversation/gnunet-conversation.c:360
787#, c-format 782#, c-format
788msgid "Ego `%s' no longer available, phone is now down.\n" 783msgid "Ego `%s' no longer available, phone is now down.\n"
789msgstr "" 784msgstr ""
790 785
791#: src/conversation/gnunet-conversation.c:373 786#: src/conversation/gnunet-conversation.c:375
792msgid "Failed to setup phone (internal error)\n" 787msgid "Failed to setup phone (internal error)\n"
793msgstr "" 788msgstr ""
794 789
795#: src/conversation/gnunet-conversation.c:385 790#: src/conversation/gnunet-conversation.c:387
796#, c-format 791#, c-format
797msgid "Phone active at `%s'. Type `/help' for a list of available commands\n" 792msgid "Phone active at `%s'. Type `/help' for a list of available commands\n"
798msgstr "" 793msgstr ""
799 794
800#: src/conversation/gnunet-conversation.c:409 795#: src/conversation/gnunet-conversation.c:411
801#, c-format 796#, c-format
802msgid "Resolved address of `%s'. Now ringing other party.\n" 797msgid "Resolved address of `%s'. Now ringing other party.\n"
803msgstr "" 798msgstr ""
804 799
805#: src/conversation/gnunet-conversation.c:416 800#: src/conversation/gnunet-conversation.c:418
806#, c-format 801#, c-format
807msgid "Connection established to `%s'\n" 802msgid "Connection established to `%s'\n"
808msgstr "" 803msgstr ""
809 804
810#: src/conversation/gnunet-conversation.c:423 805#: src/conversation/gnunet-conversation.c:425
811#, c-format 806#, c-format
812msgid "Failed to resolve `%s'\n" 807msgid "Failed to resolve `%s'\n"
813msgstr "Résolution de « %s » échouée\n" 808msgstr "Résolution de « %s » échouée\n"
814 809
815#: src/conversation/gnunet-conversation.c:431 810#: src/conversation/gnunet-conversation.c:433
816#, fuzzy, c-format 811#, fuzzy, c-format
817msgid "Call to `%s' terminated\n" 812msgid "Call to `%s' terminated\n"
818msgstr "Appel terminé\n" 813msgstr "Appel terminé\n"
819 814
820#: src/conversation/gnunet-conversation.c:440 815#: src/conversation/gnunet-conversation.c:442
821#, c-format 816#, c-format
822msgid "Connection to `%s' suspended (by other user)\n" 817msgid "Connection to `%s' suspended (by other user)\n"
823msgstr "" 818msgstr ""
824 819
825#: src/conversation/gnunet-conversation.c:446 820#: src/conversation/gnunet-conversation.c:448
826#, c-format 821#, c-format
827msgid "Connection to `%s' resumed (by other user)\n" 822msgid "Connection to `%s' resumed (by other user)\n"
828msgstr "" 823msgstr ""
829 824
830#: src/conversation/gnunet-conversation.c:451 825#: src/conversation/gnunet-conversation.c:453
831msgid "Error with the call, restarting it\n" 826msgid "Error with the call, restarting it\n"
832msgstr "" 827msgstr ""
833 828
834#: src/conversation/gnunet-conversation.c:522 829#: src/conversation/gnunet-conversation.c:524
835#, c-format 830#, c-format
836msgid "Unknown command `%s'\n" 831msgid "Unknown command `%s'\n"
837msgstr "Commande « %s » inconnue\n" 832msgstr "Commande « %s » inconnue\n"
838 833
839#: src/conversation/gnunet-conversation.c:538 834#: src/conversation/gnunet-conversation.c:540
840#: src/conversation/gnunet-conversation.c:552 835#: src/conversation/gnunet-conversation.c:554
841#, c-format 836#, c-format
842msgid "Ego `%s' not available\n" 837msgid "Ego `%s' not available\n"
843msgstr "" 838msgstr ""
844 839
845#: src/conversation/gnunet-conversation.c:545 840#: src/conversation/gnunet-conversation.c:547
846#: src/conversation/gnunet-conversation.c:601 841#: src/conversation/gnunet-conversation.c:603
847msgid "You are calling someone else already, hang up first!\n" 842msgid "You are calling someone else already, hang up first!\n"
848msgstr "" 843msgstr ""
849 844
850#: src/conversation/gnunet-conversation.c:560 845#: src/conversation/gnunet-conversation.c:562
851#: src/conversation/gnunet-conversation.c:614 846#: src/conversation/gnunet-conversation.c:616
852#, c-format 847#, c-format
853msgid "You are answering call from `%s', hang up or suspend that call first!\n" 848msgid "You are answering call from `%s', hang up or suspend that call first!\n"
854msgstr "" 849msgstr ""
855 850
856#: src/conversation/gnunet-conversation.c:570 851#: src/conversation/gnunet-conversation.c:572
857msgid "Call recipient missing.\n" 852msgid "Call recipient missing.\n"
858msgstr "" 853msgstr ""
859 854
860#: src/conversation/gnunet-conversation.c:625 855#: src/conversation/gnunet-conversation.c:627
861msgid "There is no incoming call to accept here!\n" 856msgid "There is no incoming call to accept here!\n"
862msgstr "" 857msgstr ""
863 858
864#: src/conversation/gnunet-conversation.c:642 859#: src/conversation/gnunet-conversation.c:644
865#, c-format 860#, c-format
866msgid "There is no incoming call `%s' to accept right now!\n" 861msgid "There is no incoming call `%s' to accept right now!\n"
867msgstr "" 862msgstr ""
868 863
869#: src/conversation/gnunet-conversation.c:673 864#: src/conversation/gnunet-conversation.c:675
870msgid "We currently do not have an address.\n" 865msgid "We currently do not have an address.\n"
871msgstr "" 866msgstr ""
872 867
873#: src/conversation/gnunet-conversation.c:697 868#: src/conversation/gnunet-conversation.c:699
874#, c-format 869#, c-format
875msgid "We are currently trying to locate the private key for the ego `%s'.\n" 870msgid "We are currently trying to locate the private key for the ego `%s'.\n"
876msgstr "" 871msgstr ""
877 872
878#: src/conversation/gnunet-conversation.c:702 873#: src/conversation/gnunet-conversation.c:704
879#, c-format 874#, c-format
880msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n" 875msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n"
881msgstr "" 876msgstr ""
882 877
883#: src/conversation/gnunet-conversation.c:708 878#: src/conversation/gnunet-conversation.c:710
884#: src/conversation/gnunet-conversation.c:732 879#: src/conversation/gnunet-conversation.c:734
885#, c-format 880#, c-format
886msgid "You are having a conversation with `%s'.\n" 881msgid "You are having a conversation with `%s'.\n"
887msgstr "" 882msgstr ""
888 883
889#: src/conversation/gnunet-conversation.c:713 884#: src/conversation/gnunet-conversation.c:715
890msgid "" 885msgid ""
891"We had an internal error setting up our phone line. You can still make " 886"We had an internal error setting up our phone line. You can still make "
892"calls.\n" 887"calls.\n"
893msgstr "" 888msgstr ""
894 889
895#: src/conversation/gnunet-conversation.c:722 890#: src/conversation/gnunet-conversation.c:724
896#, c-format 891#, c-format
897msgid "We are trying to find the network address to call `%s'.\n" 892msgid "We are trying to find the network address to call `%s'.\n"
898msgstr "" 893msgstr ""
899 894
900#: src/conversation/gnunet-conversation.c:727 895#: src/conversation/gnunet-conversation.c:729
901#, c-format 896#, c-format
902msgid "We are calling `%s', their phone should be ringing.\n" 897msgid "We are calling `%s', their phone should be ringing.\n"
903msgstr "" 898msgstr ""
904 899
905#: src/conversation/gnunet-conversation.c:746 900#: src/conversation/gnunet-conversation.c:748
906msgid "Calls waiting:\n" 901msgid "Calls waiting:\n"
907msgstr "" 902msgstr ""
908 903
909#: src/conversation/gnunet-conversation.c:752 904#: src/conversation/gnunet-conversation.c:754
910#, c-format 905#, c-format
911msgid "#%u: `%s'\n" 906msgid "#%u: `%s'\n"
912msgstr "#%u : « %s »\n" 907msgstr "#%u : « %s »\n"
913 908
914#: src/conversation/gnunet-conversation.c:781 909#: src/conversation/gnunet-conversation.c:783
915#: src/conversation/gnunet-conversation.c:796 910#: src/conversation/gnunet-conversation.c:798
916msgid "There is no call that could be suspended right now.\n" 911msgid "There is no call that could be suspended right now.\n"
917msgstr "" 912msgstr ""
918 913
919#: src/conversation/gnunet-conversation.c:829 914#: src/conversation/gnunet-conversation.c:831
920#: src/conversation/gnunet-conversation.c:845 915#: src/conversation/gnunet-conversation.c:847
921msgid "There is no call that could be resumed right now.\n" 916msgid "There is no call that could be resumed right now.\n"
922msgstr "" 917msgstr ""
923 918
924#: src/conversation/gnunet-conversation.c:852 919#: src/conversation/gnunet-conversation.c:854
925#, c-format 920#, c-format
926msgid "Already talking with `%s', cannot resume a call right now.\n" 921msgid "Already talking with `%s', cannot resume a call right now.\n"
927msgstr "" 922msgstr ""
928 923
929#: src/conversation/gnunet-conversation.c:861 924#: src/conversation/gnunet-conversation.c:863
930msgid "There is no incoming call to resume here!\n" 925msgid "There is no incoming call to resume here!\n"
931msgstr "" 926msgstr ""
932 927
933#: src/conversation/gnunet-conversation.c:878 928#: src/conversation/gnunet-conversation.c:880
934#, c-format 929#, c-format
935msgid "There is no incoming call `%s' to resume right now!\n" 930msgid "There is no incoming call `%s' to resume right now!\n"
936msgstr "" 931msgstr ""
937 932
938#: src/conversation/gnunet-conversation.c:913 933#: src/conversation/gnunet-conversation.c:915
939msgid "There is no call that could be cancelled right now.\n" 934msgid "There is no call that could be cancelled right now.\n"
940msgstr "" 935msgstr ""
941 936
942#: src/conversation/gnunet-conversation.c:921 937#: src/conversation/gnunet-conversation.c:923
943msgid "There is no incoming call to refuse here!\n" 938msgid "There is no incoming call to refuse here!\n"
944msgstr "" 939msgstr ""
945 940
946#: src/conversation/gnunet-conversation.c:938 941#: src/conversation/gnunet-conversation.c:940
947#, c-format 942#, c-format
948msgid "There is no incoming call `%s' to refuse right now!\n" 943msgid "There is no incoming call `%s' to refuse right now!\n"
949msgstr "" 944msgstr ""
950 945
951#: src/conversation/gnunet-conversation.c:964 946#: src/conversation/gnunet-conversation.c:966
952msgid "Use `/address' to find out which address this phone should have in GNS" 947msgid "Use `/address' to find out which address this phone should have in GNS"
953msgstr "" 948msgstr ""
954 949
955#: src/conversation/gnunet-conversation.c:966 950#: src/conversation/gnunet-conversation.c:968
956msgid "Use `/call USER.gnu' to call USER" 951msgid "Use `/call USER.gnu' to call USER"
957msgstr "" 952msgstr ""
958 953
959#: src/conversation/gnunet-conversation.c:968 954#: src/conversation/gnunet-conversation.c:970
960msgid "Use `/accept #NUM' to accept incoming call #NUM" 955msgid "Use `/accept #NUM' to accept incoming call #NUM"
961msgstr "" 956msgstr ""
962 957
963#: src/conversation/gnunet-conversation.c:970 958#: src/conversation/gnunet-conversation.c:972
964msgid "Use `/suspend' to suspend the active call" 959msgid "Use `/suspend' to suspend the active call"
965msgstr "" 960msgstr ""
966 961
967#: src/conversation/gnunet-conversation.c:972 962#: src/conversation/gnunet-conversation.c:974
968msgid "" 963msgid ""
969"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming " 964"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming "
970"calls, no argument is needed to resume the current outgoing call." 965"calls, no argument is needed to resume the current outgoing call."
971msgstr "" 966msgstr ""
972 967
973#: src/conversation/gnunet-conversation.c:974 968#: src/conversation/gnunet-conversation.c:976
974msgid "Use `/cancel' to reject or terminate a call" 969msgid "Use `/cancel' to reject or terminate a call"
975msgstr "" 970msgstr ""
976 971
977#: src/conversation/gnunet-conversation.c:976 972#: src/conversation/gnunet-conversation.c:978
978msgid "Use `/status' to print status information" 973msgid "Use `/status' to print status information"
979msgstr "" 974msgstr ""
980 975
981#: src/conversation/gnunet-conversation.c:978 976#: src/conversation/gnunet-conversation.c:980
982msgid "Use `/quit' to terminate gnunet-conversation" 977msgid "Use `/quit' to terminate gnunet-conversation"
983msgstr "" 978msgstr ""
984 979
985#: src/conversation/gnunet-conversation.c:980 980#: src/conversation/gnunet-conversation.c:982
986msgid "Use `/help command' to get help for a specific command" 981msgid "Use `/help command' to get help for a specific command"
987msgstr "" 982msgstr ""
988 983
989#: src/conversation/gnunet-conversation.c:1196 984#: src/conversation/gnunet-conversation.c:1198
990#, c-format 985#, c-format
991msgid "Name of our ego changed to `%s'\n" 986msgid "Name of our ego changed to `%s'\n"
992msgstr "" 987msgstr ""
993 988
994#: src/conversation/gnunet-conversation.c:1209 989#: src/conversation/gnunet-conversation.c:1211
995#, c-format 990#, c-format
996msgid "Our ego `%s' was deleted!\n" 991msgid "Our ego `%s' was deleted!\n"
997msgstr "" 992msgstr ""
998 993
999#: src/conversation/gnunet-conversation.c:1247 994#: src/conversation/gnunet-conversation.c:1249
1000msgid "You must specify the NAME of an ego to use\n" 995msgid "You must specify the NAME of an ego to use\n"
1001msgstr "" 996msgstr ""
1002 997
1003#: src/conversation/gnunet-conversation.c:1271 998#: src/conversation/gnunet-conversation.c:1273
1004msgid "Failed to start gnunet-helper-w32-console\n" 999msgid "Failed to start gnunet-helper-w32-console\n"
1005msgstr "" 1000msgstr ""
1006 1001
1007#: src/conversation/gnunet-conversation.c:1300 1002#: src/conversation/gnunet-conversation.c:1302
1008msgid "sets the NAME of the ego to use for the caller ID" 1003msgid "sets the NAME of the ego to use for the caller ID"
1009msgstr "" 1004msgstr ""
1010 1005
1011#: src/conversation/gnunet-conversation.c:1305 1006#: src/conversation/gnunet-conversation.c:1307
1012msgid "sets the LINE to use for the phone" 1007msgid "sets the LINE to use for the phone"
1013msgstr "" 1008msgstr ""
1014 1009
1015#: src/conversation/gnunet-conversation.c:1334 1010#: src/conversation/gnunet-conversation.c:1336
1016msgid "Enables having a conversation with other GNUnet users." 1011msgid "Enables having a conversation with other GNUnet users."
1017msgstr "" 1012msgstr ""
1018 1013
1019#: src/conversation/gnunet-conversation-test.c:118 1014#: src/conversation/gnunet-conversation-test.c:120
1020#, c-format 1015#, c-format
1021msgid "" 1016msgid ""
1022"\n" 1017"\n"
1023"End of transmission. Have a GNU day.\n" 1018"End of transmission. Have a GNU day.\n"
1024msgstr "" 1019msgstr ""
1025 1020
1026#: src/conversation/gnunet-conversation-test.c:143 1021#: src/conversation/gnunet-conversation-test.c:145
1027#, c-format 1022#, c-format
1028msgid "" 1023msgid ""
1029"\n" 1024"\n"
@@ -1031,959 +1026,955 @@ msgid ""
1031"settings are working..." 1026"settings are working..."
1032msgstr "" 1027msgstr ""
1033 1028
1034#: src/conversation/gnunet-conversation-test.c:214 1029#: src/conversation/gnunet-conversation-test.c:216
1035#, c-format 1030#, c-format
1036msgid "" 1031msgid ""
1037"We will now be recording you for %s. After that time, the recording will be " 1032"We will now be recording you for %s. After that time, the recording will be "
1038"played back to you..." 1033"played back to you..."
1039msgstr "" 1034msgstr ""
1040 1035
1041#: src/conversation/gnunet_gst.c:620 1036#: src/conversation/gnunet_gst.c:622
1042#: src/conversation/gnunet-helper-audio-playback-gst.c:359 1037#: src/conversation/gnunet-helper-audio-playback-gst.c:361
1043#, c-format 1038#, c-format
1044msgid "Read error from STDIN: %d %s\n" 1039msgid "Read error from STDIN: %d %s\n"
1045msgstr "" 1040msgstr ""
1046 1041
1047#: src/conversation/gnunet-helper-audio-playback.c:323 1042#: src/conversation/gnunet-helper-audio-playback.c:325
1048#, c-format 1043#, c-format
1049msgid "pa_stream_write() failed: %s\n" 1044msgid "pa_stream_write() failed: %s\n"
1050msgstr "pa_stream_write() échoué : %s\n" 1045msgstr "pa_stream_write() échoué : %s\n"
1051 1046
1052#: src/conversation/gnunet-helper-audio-playback.c:625 1047#: src/conversation/gnunet-helper-audio-playback.c:627
1053msgid "gnunet-helper-audio-playback - Got signal, exiting\n" 1048msgid "gnunet-helper-audio-playback - Got signal, exiting\n"
1054msgstr "" 1049msgstr ""
1055 1050
1056#: src/conversation/gnunet-helper-audio-playback.c:651 1051#: src/conversation/gnunet-helper-audio-playback.c:653
1057#: src/conversation/gnunet-helper-audio-record.c:561 1052#: src/conversation/gnunet-helper-audio-record.c:563
1058msgid "Connection established.\n" 1053msgid "Connection established.\n"
1059msgstr "" 1054msgstr ""
1060 1055
1061#: src/conversation/gnunet-helper-audio-playback.c:656 1056#: src/conversation/gnunet-helper-audio-playback.c:658
1062#: src/conversation/gnunet-helper-audio-record.c:566 1057#: src/conversation/gnunet-helper-audio-record.c:568
1063#, c-format 1058#, c-format
1064msgid "pa_stream_new() failed: %s\n" 1059msgid "pa_stream_new() failed: %s\n"
1065msgstr "pa_stream_new() échoué : %s\n" 1060msgstr "pa_stream_new() échoué : %s\n"
1066 1061
1067#: src/conversation/gnunet-helper-audio-playback.c:670 1062#: src/conversation/gnunet-helper-audio-playback.c:672
1068#, c-format 1063#, c-format
1069msgid "pa_stream_connect_playback() failed: %s\n" 1064msgid "pa_stream_connect_playback() failed: %s\n"
1070msgstr "pa_stream_connect_playback() échoué : %s\n" 1065msgstr "pa_stream_connect_playback() échoué : %s\n"
1071 1066
1072#: src/conversation/gnunet-helper-audio-playback.c:683 1067#: src/conversation/gnunet-helper-audio-playback.c:685
1073#: src/conversation/gnunet-helper-audio-record.c:592 1068#: src/conversation/gnunet-helper-audio-record.c:594
1074#, c-format 1069#, c-format
1075msgid "Connection failure: %s\n" 1070msgid "Connection failure: %s\n"
1076msgstr "" 1071msgstr ""
1077 1072
1078#: src/conversation/gnunet-helper-audio-playback.c:704 1073#: src/conversation/gnunet-helper-audio-playback.c:706
1079#: src/conversation/gnunet-helper-audio-record.c:615 1074#: src/conversation/gnunet-helper-audio-record.c:617
1080msgid "Wrong Spec\n" 1075msgid "Wrong Spec\n"
1081msgstr "Spécification incorrecte\n" 1076msgstr "Spécification incorrecte\n"
1082 1077
1083#: src/conversation/gnunet-helper-audio-playback.c:710 1078#: src/conversation/gnunet-helper-audio-playback.c:712
1084#: src/conversation/gnunet-helper-audio-record.c:621 1079#: src/conversation/gnunet-helper-audio-record.c:623
1085msgid "pa_mainloop_new() failed.\n" 1080msgid "pa_mainloop_new() failed.\n"
1086msgstr "pa_mainloop_new() échoué.\n" 1081msgstr "pa_mainloop_new() échoué.\n"
1087 1082
1088#: src/conversation/gnunet-helper-audio-playback.c:724 1083#: src/conversation/gnunet-helper-audio-playback.c:726
1089#: src/conversation/gnunet-helper-audio-record.c:636 1084#: src/conversation/gnunet-helper-audio-record.c:638
1090msgid "pa_context_new() failed.\n" 1085msgid "pa_context_new() failed.\n"
1091msgstr "pa_context_new() échoué.\n" 1086msgstr "pa_context_new() échoué.\n"
1092 1087
1093#: src/conversation/gnunet-helper-audio-playback.c:731 1088#: src/conversation/gnunet-helper-audio-playback.c:733
1094#: src/conversation/gnunet-helper-audio-record.c:642 1089#: src/conversation/gnunet-helper-audio-record.c:644
1095#, c-format 1090#, c-format
1096msgid "pa_context_connect() failed: %s\n" 1091msgid "pa_context_connect() failed: %s\n"
1097msgstr "pa_context_connect() échoué : %s\n" 1092msgstr "pa_context_connect() échoué : %s\n"
1098 1093
1099#: src/conversation/gnunet-helper-audio-playback.c:737 1094#: src/conversation/gnunet-helper-audio-playback.c:739
1100#: src/conversation/gnunet-helper-audio-record.c:648 1095#: src/conversation/gnunet-helper-audio-record.c:650
1101msgid "pa_mainloop_run() failed.\n" 1096msgid "pa_mainloop_run() failed.\n"
1102msgstr "pa_mainloop_run() échoué.\n" 1097msgstr "pa_mainloop_run() échoué.\n"
1103 1098
1104#: src/conversation/gnunet-helper-audio-playback.c:816 1099#: src/conversation/gnunet-helper-audio-playback.c:818
1105#, c-format 1100#, c-format
1106msgid "Read error from STDIN: %s\n" 1101msgid "Read error from STDIN: %s\n"
1107msgstr "" 1102msgstr ""
1108 1103
1109#: src/conversation/gnunet-helper-audio-record.c:351 1104#: src/conversation/gnunet-helper-audio-record.c:353
1110#, c-format 1105#, c-format
1111msgid "opus_encode_float() failed: %s. Aborting\n" 1106msgid "opus_encode_float() failed: %s. Aborting\n"
1112msgstr "opus_encode_float() échoué : %s. Annulation\n" 1107msgstr "opus_encode_float() échoué : %s. Annulation\n"
1113 1108
1114#: src/conversation/gnunet-helper-audio-record.c:430 1109#: src/conversation/gnunet-helper-audio-record.c:432
1115#, c-format 1110#, c-format
1116msgid "pa_stream_peek() failed: %s\n" 1111msgid "pa_stream_peek() failed: %s\n"
1117msgstr "pa_stream_peek() échoué : %s\n" 1112msgstr "pa_stream_peek() échoué : %s\n"
1118 1113
1119#: src/conversation/gnunet-helper-audio-record.c:472 1114#: src/conversation/gnunet-helper-audio-record.c:474
1120msgid "Got signal, exiting.\n" 1115msgid "Got signal, exiting.\n"
1121msgstr "" 1116msgstr ""
1122 1117
1123#: src/conversation/gnunet-helper-audio-record.c:498 1118#: src/conversation/gnunet-helper-audio-record.c:500
1124msgid "Stream successfully created.\n" 1119msgid "Stream successfully created.\n"
1125msgstr "" 1120msgstr ""
1126 1121
1127#: src/conversation/gnunet-helper-audio-record.c:503 1122#: src/conversation/gnunet-helper-audio-record.c:505
1128#, c-format 1123#, c-format
1129msgid "pa_stream_get_buffer_attr() failed: %s\n" 1124msgid "pa_stream_get_buffer_attr() failed: %s\n"
1130msgstr "pa_stream_get_buffer_attr() échoué : %s\n" 1125msgstr "pa_stream_get_buffer_attr() échoué : %s\n"
1131 1126
1132#: src/conversation/gnunet-helper-audio-record.c:511 1127#: src/conversation/gnunet-helper-audio-record.c:513
1133#, c-format 1128#, c-format
1134msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" 1129msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
1135msgstr "" 1130msgstr ""
1136 1131
1137#: src/conversation/gnunet-helper-audio-record.c:515 1132#: src/conversation/gnunet-helper-audio-record.c:517
1138#, c-format 1133#, c-format
1139msgid "Using sample spec '%s', channel map '%s'.\n" 1134msgid "Using sample spec '%s', channel map '%s'.\n"
1140msgstr "" 1135msgstr ""
1141 1136
1142#: src/conversation/gnunet-helper-audio-record.c:522 1137#: src/conversation/gnunet-helper-audio-record.c:524
1143#, c-format 1138#, c-format
1144msgid "Connected to device %s (%u, %ssuspended).\n" 1139msgid "Connected to device %s (%u, %ssuspended).\n"
1145msgstr "" 1140msgstr ""
1146 1141
1147#: src/conversation/gnunet-helper-audio-record.c:531 1142#: src/conversation/gnunet-helper-audio-record.c:533
1148#, c-format 1143#, c-format
1149msgid "Stream error: %s\n" 1144msgid "Stream error: %s\n"
1150msgstr "" 1145msgstr ""
1151 1146
1152#: src/conversation/gnunet-helper-audio-record.c:579 1147#: src/conversation/gnunet-helper-audio-record.c:581
1153#, c-format 1148#, c-format
1154msgid "pa_stream_connect_record() failed: %s\n" 1149msgid "pa_stream_connect_record() failed: %s\n"
1155msgstr "pa_stream_connect_record() échoué : %s\n" 1150msgstr "pa_stream_connect_record() échoué : %s\n"
1156 1151
1157#: src/conversation/gnunet-helper-audio-record.c:693 1152#: src/conversation/gnunet-helper-audio-record.c:695
1158msgid "ogg_stream_init() failed.\n" 1153msgid "ogg_stream_init() failed.\n"
1159msgstr "ogg_stream_init() échoué.\n" 1154msgstr "ogg_stream_init() échoué.\n"
1160 1155
1161#: src/conversation/gnunet-helper-audio-record.c:738 1156#: src/conversation/gnunet-helper-audio-record.c:740
1162#, c-format 1157#, c-format
1163msgid "Failed to allocate %u bytes for second packet\n" 1158msgid "Failed to allocate %u bytes for second packet\n"
1164msgstr "" 1159msgstr ""
1165 1160
1166#: src/conversation/gnunet-service-conversation.c:1303 1161#: src/conversation/gnunet-service-conversation.c:1305
1167#, c-format 1162#, c-format
1168msgid "Could not open line, port %s already in use!\n" 1163msgid "Could not open line, port %s already in use!\n"
1169msgstr "" 1164msgstr ""
1170 1165
1171#: src/conversation/microphone.c:119 1166#: src/conversation/microphone.c:121
1172msgid "Could not start record audio helper\n" 1167msgid "Could not start record audio helper\n"
1173msgstr "" 1168msgstr ""
1174 1169
1175#: src/conversation/plugin_gnsrecord_conversation.c:70 1170#: src/conversation/plugin_gnsrecord_conversation.c:72
1176#, c-format 1171#, c-format
1177msgid "PHONE version %u not supported\n" 1172msgid "PHONE version %u not supported\n"
1178msgstr "" 1173msgstr ""
1179 1174
1180#: src/conversation/plugin_gnsrecord_conversation.c:133 1175#: src/conversation/plugin_gnsrecord_conversation.c:135
1181#: src/conversation/plugin_gnsrecord_conversation.c:147 1176#: src/conversation/plugin_gnsrecord_conversation.c:149
1182#, c-format 1177#, c-format
1183msgid "Unable to parse PHONE record `%s'\n" 1178msgid "Unable to parse PHONE record `%s'\n"
1184msgstr "" 1179msgstr ""
1185 1180
1186#: src/conversation/speaker.c:73 1181#: src/conversation/speaker.c:75
1187msgid "Could not start playback audio helper.\n" 1182msgid "Could not start playback audio helper.\n"
1188msgstr "" 1183msgstr ""
1189 1184
1190#: src/core/gnunet-core.c:88 1185#: src/core/gnunet-core.c:90
1191msgid "fresh connection" 1186msgid "fresh connection"
1192msgstr "" 1187msgstr ""
1193 1188
1194#: src/core/gnunet-core.c:91 1189#: src/core/gnunet-core.c:93
1195msgid "key sent" 1190msgid "key sent"
1196msgstr "" 1191msgstr ""
1197 1192
1198#: src/core/gnunet-core.c:94 1193#: src/core/gnunet-core.c:96
1199msgid "key received" 1194msgid "key received"
1200msgstr "" 1195msgstr ""
1201 1196
1202#: src/core/gnunet-core.c:97 1197#: src/core/gnunet-core.c:99
1203msgid "connection established" 1198msgid "connection established"
1204msgstr "" 1199msgstr ""
1205 1200
1206#: src/core/gnunet-core.c:100 1201#: src/core/gnunet-core.c:102
1207msgid "rekeying" 1202msgid "rekeying"
1208msgstr "" 1203msgstr ""
1209 1204
1210#: src/core/gnunet-core.c:103 1205#: src/core/gnunet-core.c:105
1211#, fuzzy 1206#, fuzzy
1212msgid "disconnected" 1207msgid "disconnected"
1213msgstr "Déconnecté de" 1208msgstr "Déconnecté de"
1214 1209
1215#: src/core/gnunet-core.c:110 1210#: src/core/gnunet-core.c:112
1216msgid "Connection to CORE service lost (reconnecting)" 1211msgid "Connection to CORE service lost (reconnecting)"
1217msgstr "" 1212msgstr ""
1218 1213
1219#: src/core/gnunet-core.c:113 1214#: src/core/gnunet-core.c:115
1220#, fuzzy 1215#, fuzzy
1221msgid "unknown state" 1216msgid "unknown state"
1222msgstr "adresse inconnue" 1217msgstr "adresse inconnue"
1223 1218
1224#: src/core/gnunet-core.c:118 1219#: src/core/gnunet-core.c:120
1225#, c-format 1220#, c-format
1226msgid "%24s: %-30s %4s (timeout in %6s)\n" 1221msgid "%24s: %-30s %4s (timeout in %6s)\n"
1227msgstr "" 1222msgstr ""
1228 1223
1229#: src/core/gnunet-core.c:142 src/peerinfo-tool/gnunet-peerinfo.c:726 1224#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
1230#, c-format 1225#, c-format
1231msgid "Invalid command line argument `%s'\n" 1226msgid "Invalid command line argument `%s'\n"
1232msgstr "" 1227msgstr ""
1233 1228
1234#: src/core/gnunet-core.c:153 1229#: src/core/gnunet-core.c:155
1235msgid "Failed to connect to CORE service!\n" 1230msgid "Failed to connect to CORE service!\n"
1236msgstr "" 1231msgstr ""
1237 1232
1238#: src/core/gnunet-core.c:175 src/transport/gnunet-transport.c:1447 1233#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
1239msgid "provide information about all current connections (continuously)" 1234msgid "provide information about all current connections (continuously)"
1240msgstr "" 1235msgstr ""
1241 1236
1242#: src/core/gnunet-core.c:184 1237#: src/core/gnunet-core.c:186
1243msgid "Print information about connected peers." 1238msgid "Print information about connected peers."
1244msgstr "" 1239msgstr ""
1245 1240
1246#: src/core/gnunet-service-core.c:345 1241#: src/core/gnunet-service-core.c:347
1247msgid "# send requests dropped (disconnected)" 1242msgid "# send requests dropped (disconnected)"
1248msgstr "" 1243msgstr ""
1249 1244
1250#: src/core/gnunet-service-core.c:369 1245#: src/core/gnunet-service-core.c:371
1251msgid "# dequeuing CAR (duplicate request)" 1246msgid "# dequeuing CAR (duplicate request)"
1252msgstr "" 1247msgstr ""
1253 1248
1254#: src/core/gnunet-service-core.c:441 1249#: src/core/gnunet-service-core.c:443
1255#, c-format 1250#, c-format
1256msgid "# bytes of messages of type %u received" 1251msgid "# bytes of messages of type %u received"
1257msgstr "" 1252msgstr ""
1258 1253
1259#: src/core/gnunet-service-core.c:539 1254#: src/core/gnunet-service-core.c:541
1260msgid "# messages discarded (session disconnected)" 1255msgid "# messages discarded (session disconnected)"
1261msgstr "" 1256msgstr ""
1262 1257
1263#: src/core/gnunet-service-core.c:877 1258#: src/core/gnunet-service-core.c:879
1264#, c-format 1259#, c-format
1265msgid "# messages of type %u discarded (client busy)" 1260msgid "# messages of type %u discarded (client busy)"
1266msgstr "" 1261msgstr ""
1267 1262
1268#: src/core/gnunet-service-core.c:986 1263#: src/core/gnunet-service-core.c:988
1269msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" 1264msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n"
1270msgstr "" 1265msgstr ""
1271 1266
1272#: src/core/gnunet-service-core.c:1007 1267#: src/core/gnunet-service-core.c:1009
1273#, c-format 1268#, c-format
1274msgid "Core service of `%s' ready.\n" 1269msgid "Core service of `%s' ready.\n"
1275msgstr "" 1270msgstr ""
1276 1271
1277#: src/core/gnunet-service-core_kx.c:615 1272#: src/core/gnunet-service-core_kx.c:617
1278msgid "# bytes encrypted" 1273msgid "# bytes encrypted"
1279msgstr "" 1274msgstr ""
1280 1275
1281#: src/core/gnunet-service-core_kx.c:675 1276#: src/core/gnunet-service-core_kx.c:677
1282msgid "# bytes decrypted" 1277msgid "# bytes decrypted"
1283msgstr "" 1278msgstr ""
1284 1279
1285#: src/core/gnunet-service-core_kx.c:777 1280#: src/core/gnunet-service-core_kx.c:779
1286msgid "# PAYLOAD dropped (out of order)" 1281msgid "# PAYLOAD dropped (out of order)"
1287msgstr "" 1282msgstr ""
1288 1283
1289#: src/core/gnunet-service-core_kx.c:827 1284#: src/core/gnunet-service-core_kx.c:829
1290msgid "# key exchanges initiated" 1285msgid "# key exchanges initiated"
1291msgstr "" 1286msgstr ""
1292 1287
1293#: src/core/gnunet-service-core_kx.c:889 1288#: src/core/gnunet-service-core_kx.c:891
1294msgid "# key exchanges stopped" 1289msgid "# key exchanges stopped"
1295msgstr "" 1290msgstr ""
1296 1291
1297#: src/core/gnunet-service-core_kx.c:923 1292#: src/core/gnunet-service-core_kx.c:925
1298msgid "# PING messages transmitted" 1293msgid "# PING messages transmitted"
1299msgstr "" 1294msgstr ""
1300 1295
1301#: src/core/gnunet-service-core_kx.c:990 1296#: src/core/gnunet-service-core_kx.c:992
1302msgid "# old ephemeral keys ignored" 1297msgid "# old ephemeral keys ignored"
1303msgstr "" 1298msgstr ""
1304 1299
1305#: src/core/gnunet-service-core_kx.c:1003 1300#: src/core/gnunet-service-core_kx.c:1005
1306msgid "# duplicate ephemeral keys ignored" 1301msgid "# duplicate ephemeral keys ignored"
1307msgstr "" 1302msgstr ""
1308 1303
1309#: src/core/gnunet-service-core_kx.c:1038 1304#: src/core/gnunet-service-core_kx.c:1040
1310msgid "# EPHEMERAL_KEYs rejected (bad signature)" 1305msgid "# EPHEMERAL_KEYs rejected (bad signature)"
1311msgstr "" 1306msgstr ""
1312 1307
1313#: src/core/gnunet-service-core_kx.c:1052 1308#: src/core/gnunet-service-core_kx.c:1054
1314#, c-format 1309#, c-format
1315msgid "" 1310msgid ""
1316"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match " 1311"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
1317"our system time (%llu not in [%llu,%llu]).\n" 1312"our system time (%llu not in [%llu,%llu]).\n"
1318msgstr "" 1313msgstr ""
1319 1314
1320#: src/core/gnunet-service-core_kx.c:1058 1315#: src/core/gnunet-service-core_kx.c:1060
1321msgid "# EPHEMERAL_KEY messages rejected due to time" 1316msgid "# EPHEMERAL_KEY messages rejected due to time"
1322msgstr "" 1317msgstr ""
1323 1318
1324#: src/core/gnunet-service-core_kx.c:1078 1319#: src/core/gnunet-service-core_kx.c:1080
1325msgid "# valid ephemeral keys received" 1320msgid "# valid ephemeral keys received"
1326msgstr "" 1321msgstr ""
1327 1322
1328#: src/core/gnunet-service-core_kx.c:1178 1323#: src/core/gnunet-service-core_kx.c:1180
1329#: src/transport/gnunet-service-transport_validation.c:1126 1324#: src/transport/gnunet-service-transport_validation.c:1128
1330msgid "# PING messages received" 1325msgid "# PING messages received"
1331msgstr "" 1326msgstr ""
1332 1327
1333#: src/core/gnunet-service-core_kx.c:1187 1328#: src/core/gnunet-service-core_kx.c:1189
1334msgid "# PING messages dropped (out of order)" 1329msgid "# PING messages dropped (out of order)"
1335msgstr "" 1330msgstr ""
1336 1331
1337#: src/core/gnunet-service-core_kx.c:1246 1332#: src/core/gnunet-service-core_kx.c:1248
1338msgid "# PONG messages created" 1333msgid "# PONG messages created"
1339msgstr "" 1334msgstr ""
1340 1335
1341#: src/core/gnunet-service-core_kx.c:1272 1336#: src/core/gnunet-service-core_kx.c:1274
1342msgid "# sessions terminated by timeout" 1337msgid "# sessions terminated by timeout"
1343msgstr "" 1338msgstr ""
1344 1339
1345#: src/core/gnunet-service-core_kx.c:1285 1340#: src/core/gnunet-service-core_kx.c:1287
1346msgid "# keepalive messages sent" 1341msgid "# keepalive messages sent"
1347msgstr "" 1342msgstr ""
1348 1343
1349#: src/core/gnunet-service-core_kx.c:1349 1344#: src/core/gnunet-service-core_kx.c:1351
1350#: src/transport/gnunet-service-transport_validation.c:1459 1345#: src/transport/gnunet-service-transport_validation.c:1461
1351msgid "# PONG messages received" 1346msgid "# PONG messages received"
1352msgstr "" 1347msgstr ""
1353 1348
1354#: src/core/gnunet-service-core_kx.c:1356 1349#: src/core/gnunet-service-core_kx.c:1358
1355msgid "# PONG messages dropped (connection down)" 1350msgid "# PONG messages dropped (connection down)"
1356msgstr "" 1351msgstr ""
1357 1352
1358#: src/core/gnunet-service-core_kx.c:1361 1353#: src/core/gnunet-service-core_kx.c:1363
1359msgid "# PONG messages dropped (out of order)" 1354msgid "# PONG messages dropped (out of order)"
1360msgstr "" 1355msgstr ""
1361 1356
1362#: src/core/gnunet-service-core_kx.c:1396 1357#: src/core/gnunet-service-core_kx.c:1398
1363msgid "# PONG messages decrypted" 1358msgid "# PONG messages decrypted"
1364msgstr "" 1359msgstr ""
1365 1360
1366#: src/core/gnunet-service-core_kx.c:1434 1361#: src/core/gnunet-service-core_kx.c:1436
1367msgid "# session keys confirmed via PONG" 1362msgid "# session keys confirmed via PONG"
1368msgstr "" 1363msgstr ""
1369 1364
1370#: src/core/gnunet-service-core_kx.c:1445 1365#: src/core/gnunet-service-core_kx.c:1447
1371msgid "# timeouts prevented via PONG" 1366msgid "# timeouts prevented via PONG"
1372msgstr "" 1367msgstr ""
1373 1368
1374#: src/core/gnunet-service-core_kx.c:1452 1369#: src/core/gnunet-service-core_kx.c:1454
1375msgid "# rekey operations confirmed via PONG" 1370msgid "# rekey operations confirmed via PONG"
1376msgstr "" 1371msgstr ""
1377 1372
1378#: src/core/gnunet-service-core_kx.c:1640 1373#: src/core/gnunet-service-core_kx.c:1642
1379msgid "# DATA message dropped (out of order)" 1374msgid "# DATA message dropped (out of order)"
1380msgstr "" 1375msgstr ""
1381 1376
1382#: src/core/gnunet-service-core_kx.c:1648 1377#: src/core/gnunet-service-core_kx.c:1650
1383#, c-format 1378#, c-format
1384msgid "" 1379msgid ""
1385"Session to peer `%s' went down due to key expiration (should not happen)\n" 1380"Session to peer `%s' went down due to key expiration (should not happen)\n"
1386msgstr "" 1381msgstr ""
1387 1382
1388#: src/core/gnunet-service-core_kx.c:1651 1383#: src/core/gnunet-service-core_kx.c:1653
1389msgid "# sessions terminated by key expiration" 1384msgid "# sessions terminated by key expiration"
1390msgstr "" 1385msgstr ""
1391 1386
1392#: src/core/gnunet-service-core_kx.c:1740 1387#: src/core/gnunet-service-core_kx.c:1742
1393#: src/core/gnunet-service-core_kx.c:1766 1388#: src/core/gnunet-service-core_kx.c:1768
1394msgid "# bytes dropped (duplicates)" 1389msgid "# bytes dropped (duplicates)"
1395msgstr "" 1390msgstr ""
1396 1391
1397#: src/core/gnunet-service-core_kx.c:1753 1392#: src/core/gnunet-service-core_kx.c:1755
1398msgid "# bytes dropped (out of sequence)" 1393msgid "# bytes dropped (out of sequence)"
1399msgstr "" 1394msgstr ""
1400 1395
1401#: src/core/gnunet-service-core_kx.c:1795 1396#: src/core/gnunet-service-core_kx.c:1797
1402msgid "# bytes dropped (ancient message)" 1397msgid "# bytes dropped (ancient message)"
1403msgstr "" 1398msgstr ""
1404 1399
1405#: src/core/gnunet-service-core_kx.c:1803 1400#: src/core/gnunet-service-core_kx.c:1805
1406msgid "# bytes of payload decrypted" 1401msgid "# bytes of payload decrypted"
1407msgstr "" 1402msgstr ""
1408 1403
1409#: src/core/gnunet-service-core_sessions.c:258 1404#: src/core/gnunet-service-core_sessions.c:260
1410#: src/core/gnunet-service-core_sessions.c:348 1405#: src/core/gnunet-service-core_sessions.c:350
1411#: src/dht/gnunet-service-dht_neighbours.c:739 1406#: src/dht/gnunet-service-dht_neighbours.c:741
1412#: src/dht/gnunet-service-dht_neighbours.c:802 1407#: src/dht/gnunet-service-dht_neighbours.c:804
1413#: src/fs/gnunet-service-fs_cp.c:613 src/fs/gnunet-service-fs_cp.c:1520 1408#: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
1414#: src/topology/gnunet-daemon-topology.c:615 1409#: src/topology/gnunet-daemon-topology.c:617
1415#: src/topology/gnunet-daemon-topology.c:717 1410#: src/topology/gnunet-daemon-topology.c:719
1416#: src/transport/gnunet-service-transport_neighbours.c:719 1411#: src/transport/gnunet-service-transport_neighbours.c:720
1417#: src/transport/gnunet-service-transport_neighbours.c:727 1412#: src/transport/gnunet-service-transport_neighbours.c:728
1418msgid "# peers connected" 1413msgid "# peers connected"
1419msgstr "" 1414msgstr ""
1420 1415
1421#: src/core/gnunet-service-core_sessions.c:294 1416#: src/core/gnunet-service-core_sessions.c:296
1422msgid "# type map refreshes sent" 1417msgid "# type map refreshes sent"
1423msgstr "" 1418msgstr ""
1424 1419
1425#: src/core/gnunet-service-core_sessions.c:414 1420#: src/core/gnunet-service-core_sessions.c:416
1426msgid "# outdated typemap confirmations received" 1421msgid "# outdated typemap confirmations received"
1427msgstr "" 1422msgstr ""
1428 1423
1429#: src/core/gnunet-service-core_sessions.c:431 1424#: src/core/gnunet-service-core_sessions.c:433
1430msgid "# valid typemap confirmations received" 1425msgid "# valid typemap confirmations received"
1431msgstr "" 1426msgstr ""
1432 1427
1433#: src/core/gnunet-service-core_typemap.c:167 1428#: src/core/gnunet-service-core_typemap.c:169
1434#: src/core/gnunet-service-core_typemap.c:179 1429#: src/core/gnunet-service-core_typemap.c:181
1435msgid "# type maps received" 1430msgid "# type maps received"
1436msgstr "" 1431msgstr ""
1437 1432
1438#: src/core/gnunet-service-core_typemap.c:210 1433#: src/core/gnunet-service-core_typemap.c:212
1439msgid "# updates to my type map" 1434msgid "# updates to my type map"
1440msgstr "" 1435msgstr ""
1441 1436
1442#: src/credential/credential_misc.c:86 1437#: src/credential/credential_misc.c:88
1443#, c-format 1438#, c-format
1444msgid "Unable to parse CRED record string `%s'\n" 1439msgid "Unable to parse CRED record string `%s'\n"
1445msgstr "" 1440msgstr ""
1446 1441
1447#: src/credential/gnunet-credential.c:262 src/namestore/gnunet-namestore.c:887 1442#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
1448#, c-format 1443#, c-format
1449msgid "Ego `%s' not known to identity service\n" 1444msgid "Ego `%s' not known to identity service\n"
1450msgstr "" 1445msgstr ""
1451 1446
1452#: src/credential/gnunet-credential.c:278 1447#: src/credential/gnunet-credential.c:280
1453#: src/credential/gnunet-credential.c:432 1448#: src/credential/gnunet-credential.c:434
1454#, c-format 1449#, c-format
1455msgid "Issuer public key `%s' is not well-formed\n" 1450msgid "Issuer public key `%s' is not well-formed\n"
1456msgstr "" 1451msgstr ""
1457 1452
1458#: src/credential/gnunet-credential.c:359 1453#: src/credential/gnunet-credential.c:361
1459#: src/credential/gnunet-credential.c:421 1454#: src/credential/gnunet-credential.c:423
1460#, c-format 1455#, c-format
1461msgid "Issuer public key not well-formed\n" 1456msgid "Issuer public key not well-formed\n"
1462msgstr "" 1457msgstr ""
1463 1458
1464#: src/credential/gnunet-credential.c:370 1459#: src/credential/gnunet-credential.c:372
1465#: src/credential/gnunet-credential.c:442 1460#: src/credential/gnunet-credential.c:444
1466#, fuzzy, c-format 1461#, fuzzy, c-format
1467msgid "Failed to connect to CREDENTIAL\n" 1462msgid "Failed to connect to CREDENTIAL\n"
1468msgstr "Impossible d’ouvrir « %s ».\n" 1463msgstr "Impossible d’ouvrir « %s ».\n"
1469 1464
1470#: src/credential/gnunet-credential.c:377 1465#: src/credential/gnunet-credential.c:379
1471#, c-format 1466#, c-format
1472msgid "You must provide issuer the attribute\n" 1467msgid "You must provide issuer the attribute\n"
1473msgstr "" 1468msgstr ""
1474 1469
1475#: src/credential/gnunet-credential.c:385 1470#: src/credential/gnunet-credential.c:387
1476#, c-format 1471#, c-format
1477msgid "ego required\n" 1472msgid "ego required\n"
1478msgstr "" 1473msgstr ""
1479 1474
1480#: src/credential/gnunet-credential.c:401 1475#: src/credential/gnunet-credential.c:403
1481#, c-format 1476#, c-format
1482msgid "Subject public key needed\n" 1477msgid "Subject public key needed\n"
1483msgstr "" 1478msgstr ""
1484 1479
1485#: src/credential/gnunet-credential.c:412 1480#: src/credential/gnunet-credential.c:414
1486#, c-format 1481#, c-format
1487msgid "Subject public key `%s' is not well-formed\n" 1482msgid "Subject public key `%s' is not well-formed\n"
1488msgstr "" 1483msgstr ""
1489 1484
1490#: src/credential/gnunet-credential.c:449 1485#: src/credential/gnunet-credential.c:451
1491#, c-format 1486#, c-format
1492msgid "You must provide issuer and subject attributes\n" 1487msgid "You must provide issuer and subject attributes\n"
1493msgstr "" 1488msgstr ""
1494 1489
1495#: src/credential/gnunet-credential.c:502 1490#: src/credential/gnunet-credential.c:504
1496#, c-format 1491#, c-format
1497msgid "Issuer ego required\n" 1492msgid "Issuer ego required\n"
1498msgstr "" 1493msgstr ""
1499 1494
1500#: src/credential/gnunet-credential.c:514 1495#: src/credential/gnunet-credential.c:516
1501#, c-format 1496#, c-format
1502msgid "Please specify name to lookup, subject key and issuer key!\n" 1497msgid "Please specify name to lookup, subject key and issuer key!\n"
1503msgstr "" 1498msgstr ""
1504 1499
1505#: src/credential/gnunet-credential.c:534 1500#: src/credential/gnunet-credential.c:536
1506msgid "create credential" 1501msgid "create credential"
1507msgstr "" 1502msgstr ""
1508 1503
1509#: src/credential/gnunet-credential.c:538 1504#: src/credential/gnunet-credential.c:540
1510msgid "verify credential against attribute" 1505msgid "verify credential against attribute"
1511msgstr "" 1506msgstr ""
1512 1507
1513#: src/credential/gnunet-credential.c:543 1508#: src/credential/gnunet-credential.c:545
1514msgid "The public key of the subject to lookup the credential for" 1509msgid "The public key of the subject to lookup the credential for"
1515msgstr "" 1510msgstr ""
1516 1511
1517#: src/credential/gnunet-credential.c:548 1512#: src/credential/gnunet-credential.c:550
1518msgid "The name of the credential presented by the subject" 1513msgid "The name of the credential presented by the subject"
1519msgstr "" 1514msgstr ""
1520 1515
1521#: src/credential/gnunet-credential.c:553 1516#: src/credential/gnunet-credential.c:555
1522msgid "The public key of the authority to verify the credential against" 1517msgid "The public key of the authority to verify the credential against"
1523msgstr "" 1518msgstr ""
1524 1519
1525#: src/credential/gnunet-credential.c:558 1520#: src/credential/gnunet-credential.c:560
1526msgid "The ego to use" 1521msgid "The ego to use"
1527msgstr "" 1522msgstr ""
1528 1523
1529#: src/credential/gnunet-credential.c:563 1524#: src/credential/gnunet-credential.c:565
1530msgid "The issuer attribute to verify against or to issue" 1525msgid "The issuer attribute to verify against or to issue"
1531msgstr "" 1526msgstr ""
1532 1527
1533#: src/credential/gnunet-credential.c:568 1528#: src/credential/gnunet-credential.c:570
1534msgid "The time to live for the credential" 1529msgid "The time to live for the credential"
1535msgstr "" 1530msgstr ""
1536 1531
1537#: src/credential/gnunet-credential.c:572 1532#: src/credential/gnunet-credential.c:574
1538msgid "collect credentials" 1533msgid "collect credentials"
1539msgstr "" 1534msgstr ""
1540 1535
1541#: src/credential/gnunet-credential.c:586 1536#: src/credential/gnunet-credential.c:588
1542msgid "GNUnet credential resolver tool" 1537msgid "GNUnet credential resolver tool"
1543msgstr "" 1538msgstr ""
1544 1539
1545#: src/credential/gnunet-service-credential.c:1136 src/gns/gnunet-gns.c:183 1540#: src/credential/gnunet-service-credential.c:1138 src/gns/gnunet-gns.c:185
1546#: src/gns/gnunet-gns-helper-service-w32.c:725 1541#: src/gns/gnunet-gns-helper-service-w32.c:727
1547#, c-format 1542#, c-format
1548msgid "Failed to connect to GNS\n" 1543msgid "Failed to connect to GNS\n"
1549msgstr "" 1544msgstr ""
1550 1545
1551#: src/credential/gnunet-service-credential.c:1142 1546#: src/credential/gnunet-service-credential.c:1144
1552#: src/namestore/gnunet-namestore.c:913 1547#: src/namestore/gnunet-namestore.c:1019
1553#: src/namestore/gnunet-namestore-fcfsd.c:1136 1548#: src/namestore/gnunet-namestore-fcfsd.c:1138
1554#, c-format 1549#, c-format
1555msgid "Failed to connect to namestore\n" 1550msgid "Failed to connect to namestore\n"
1556msgstr "" 1551msgstr ""
1557 1552
1558#: src/credential/plugin_gnsrecord_credential.c:184 1553#: src/credential/plugin_gnsrecord_credential.c:186
1559#, fuzzy, c-format 1554#, fuzzy, c-format
1560msgid "Unable to parse ATTR record string `%s'\n" 1555msgid "Unable to parse ATTR record string `%s'\n"
1561msgstr "Résolution de « %s » échouée\n" 1556msgstr "Résolution de « %s » échouée\n"
1562 1557
1563#: src/datacache/datacache.c:117 src/datacache/datacache.c:309 1558#: src/datacache/datacache.c:119 src/datacache/datacache.c:311
1564#: src/datastore/gnunet-service-datastore.c:755 1559#: src/datastore/gnunet-service-datastore.c:757
1565msgid "# bytes stored" 1560msgid "# bytes stored"
1566msgstr "" 1561msgstr ""
1567 1562
1568#: src/datacache/datacache.c:121 src/datacache/datacache.c:313 1563#: src/datacache/datacache.c:123 src/datacache/datacache.c:315
1569msgid "# items stored" 1564msgid "# items stored"
1570msgstr "" 1565msgstr ""
1571 1566
1572#: src/datacache/datacache.c:204 1567#: src/datacache/datacache.c:206
1573#, c-format 1568#, c-format
1574msgid "Loading `%s' datacache plugin\n" 1569msgid "Loading `%s' datacache plugin\n"
1575msgstr "" 1570msgstr ""
1576 1571
1577#: src/datacache/datacache.c:215 1572#: src/datacache/datacache.c:217
1578#, c-format 1573#, c-format
1579msgid "Failed to load datacache plugin for `%s'\n" 1574msgid "Failed to load datacache plugin for `%s'\n"
1580msgstr "" 1575msgstr ""
1581 1576
1582#: src/datacache/datacache.c:343 1577#: src/datacache/datacache.c:345
1583msgid "# requests received" 1578msgid "# requests received"
1584msgstr "" 1579msgstr ""
1585 1580
1586#: src/datacache/datacache.c:353 1581#: src/datacache/datacache.c:355
1587msgid "# requests filtered by bloom filter" 1582msgid "# requests filtered by bloom filter"
1588msgstr "" 1583msgstr ""
1589 1584
1590#: src/datacache/datacache.c:383 1585#: src/datacache/datacache.c:385
1591msgid "# requests for random value received" 1586msgid "# requests for random value received"
1592msgstr "" 1587msgstr ""
1593 1588
1594#: src/datacache/datacache.c:415 1589#: src/datacache/datacache.c:417
1595msgid "# proximity search requests received" 1590msgid "# proximity search requests received"
1596msgstr "" 1591msgstr ""
1597 1592
1598#: src/datacache/plugin_datacache_heap.c:551 1593#: src/datacache/plugin_datacache_heap.c:553
1599msgid "Heap datacache running\n" 1594msgid "Heap datacache running\n"
1600msgstr "" 1595msgstr ""
1601 1596
1602#: src/datacache/plugin_datacache_sqlite.c:116 1597#: src/datacache/plugin_datacache_sqlite.c:118
1603#: src/datacache/plugin_datacache_sqlite.c:125 1598#: src/datacache/plugin_datacache_sqlite.c:127
1604#: src/datastore/plugin_datastore_mysql.c:890 1599#: src/datastore/plugin_datastore_mysql.c:892
1605#: src/datastore/plugin_datastore_sqlite.c:56 1600#: src/datastore/plugin_datastore_sqlite.c:58
1606#: src/datastore/plugin_datastore_sqlite.c:64 src/my/my.c:79 src/my/my.c:91 1601#: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
1607#: src/mysql/mysql.c:40 src/mysql/mysql.c:47 1602#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
1608#: src/namecache/plugin_namecache_sqlite.c:50 1603#: src/namecache/plugin_namecache_sqlite.c:52
1609#: src/namestore/plugin_namestore_sqlite.c:51 1604#: src/namestore/plugin_namestore_sqlite.c:53
1610#: src/peerstore/plugin_peerstore_sqlite.c:50 1605#: src/peerstore/plugin_peerstore_sqlite.c:52
1611#: src/psycstore/plugin_psycstore_mysql.c:60 1606#: src/reclaim/plugin_reclaim_sqlite.c:52
1612#: src/reclaim/plugin_reclaim_sqlite.c:50 1607#: src/testbed/generate-underlay-topology.c:47
1613#: src/testbed/generate-underlay-topology.c:45 1608#: src/testbed/gnunet-daemon-latency-logger.c:52
1614#: src/testbed/gnunet-daemon-latency-logger.c:50 1609#: src/testbed/gnunet-daemon-testbed-underlay.c:56
1615#: src/testbed/gnunet-daemon-testbed-underlay.c:54 1610#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
1616#: src/testbed/testbed_api_hosts.c:67 src/util/crypto_ecc.c:51 1611#: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
1617#: src/util/crypto_ecc_setup.c:39 src/util/crypto_mpi.c:37 1612#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
1618#: src/include/gnunet_common.h:816 src/include/gnunet_common.h:825 1613#: src/scalarproduct/scalarproduct.h:35
1619#: src/scalarproduct/scalarproduct.h:33
1620#, c-format 1614#, c-format
1621msgid "`%s' failed at %s:%d with error: %s\n" 1615msgid "`%s' failed at %s:%d with error: %s\n"
1622msgstr "" 1616msgstr ""
1623 1617
1624#: src/datacache/plugin_datacache_sqlite.c:861 1618#: src/datacache/plugin_datacache_sqlite.c:863
1625#: src/datastore/plugin_datastore_sqlite.c:506 1619#: src/datastore/plugin_datastore_sqlite.c:508
1626#: src/namecache/plugin_namecache_sqlite.c:327 1620#: src/namecache/plugin_namecache_sqlite.c:229
1627#: src/namestore/plugin_namestore_sqlite.c:262 1621#: src/namestore/plugin_namestore_sqlite.c:265
1628#: src/reclaim/plugin_reclaim_sqlite.c:334 1622#: src/reclaim/plugin_reclaim_sqlite.c:336
1629msgid "Tried to close sqlite without finalizing all prepared statements.\n" 1623msgid "Tried to close sqlite without finalizing all prepared statements.\n"
1630msgstr "" 1624msgstr ""
1631 1625
1632#: src/datastore/datastore_api.c:346 1626#: src/datastore/datastore_api.c:348
1633#, fuzzy 1627#, fuzzy
1634msgid "DATASTORE disconnected" 1628msgid "DATASTORE disconnected"
1635msgstr "Déconnecté de" 1629msgstr "Déconnecté de"
1636 1630
1637#: src/datastore/datastore_api.c:466 1631#: src/datastore/datastore_api.c:468
1638#, fuzzy 1632#, fuzzy
1639msgid "Disconnected from DATASTORE" 1633msgid "Disconnected from DATASTORE"
1640msgstr "Déconnecté de" 1634msgstr "Déconnecté de"
1641 1635
1642#: src/datastore/datastore_api.c:567 1636#: src/datastore/datastore_api.c:569
1643msgid "# queue overflows" 1637msgid "# queue overflows"
1644msgstr "" 1638msgstr ""
1645 1639
1646#: src/datastore/datastore_api.c:597 1640#: src/datastore/datastore_api.c:599
1647msgid "# queue entries created" 1641msgid "# queue entries created"
1648msgstr "" 1642msgstr ""
1649 1643
1650#: src/datastore/datastore_api.c:758 1644#: src/datastore/datastore_api.c:760
1651msgid "# status messages received" 1645msgid "# status messages received"
1652msgstr "" 1646msgstr ""
1653 1647
1654#: src/datastore/datastore_api.c:812 1648#: src/datastore/datastore_api.c:814
1655msgid "# Results received" 1649msgid "# Results received"
1656msgstr "" 1650msgstr ""
1657 1651
1658#: src/datastore/datastore_api.c:918 1652#: src/datastore/datastore_api.c:920
1659msgid "# datastore connections (re)created" 1653msgid "# datastore connections (re)created"
1660msgstr "" 1654msgstr ""
1661 1655
1662#: src/datastore/datastore_api.c:1032 1656#: src/datastore/datastore_api.c:1034
1663msgid "# PUT requests executed" 1657msgid "# PUT requests executed"
1664msgstr "" 1658msgstr ""
1665 1659
1666#: src/datastore/datastore_api.c:1093 1660#: src/datastore/datastore_api.c:1095
1667msgid "# RESERVE requests executed" 1661msgid "# RESERVE requests executed"
1668msgstr "" 1662msgstr ""
1669 1663
1670#: src/datastore/datastore_api.c:1158 1664#: src/datastore/datastore_api.c:1160
1671msgid "# RELEASE RESERVE requests executed" 1665msgid "# RELEASE RESERVE requests executed"
1672msgstr "" 1666msgstr ""
1673 1667
1674#: src/datastore/datastore_api.c:1236 1668#: src/datastore/datastore_api.c:1238
1675msgid "# REMOVE requests executed" 1669msgid "# REMOVE requests executed"
1676msgstr "" 1670msgstr ""
1677 1671
1678#: src/datastore/datastore_api.c:1296 1672#: src/datastore/datastore_api.c:1298
1679msgid "# GET REPLICATION requests executed" 1673msgid "# GET REPLICATION requests executed"
1680msgstr "" 1674msgstr ""
1681 1675
1682#: src/datastore/datastore_api.c:1358 1676#: src/datastore/datastore_api.c:1360
1683msgid "# GET ZERO ANONYMITY requests executed" 1677msgid "# GET ZERO ANONYMITY requests executed"
1684msgstr "" 1678msgstr ""
1685 1679
1686#: src/datastore/datastore_api.c:1439 1680#: src/datastore/datastore_api.c:1441
1687msgid "# GET requests executed" 1681msgid "# GET requests executed"
1688msgstr "" 1682msgstr ""
1689 1683
1690#: src/datastore/gnunet-datastore.c:187 1684#: src/datastore/gnunet-datastore.c:189
1691#, c-format 1685#, c-format
1692msgid "Dumped %<PRIu64> records\n" 1686msgid "Dumped %<PRIu64> records\n"
1693msgstr "" 1687msgstr ""
1694 1688
1695#: src/datastore/gnunet-datastore.c:215 src/datastore/gnunet-datastore.c:227 1689#: src/datastore/gnunet-datastore.c:217 src/datastore/gnunet-datastore.c:229
1696#, c-format 1690#, c-format
1697msgid "Short write to file: %zd bytes expecting %zd\n" 1691msgid "Short write to file: %zd bytes expecting %zd\n"
1698msgstr "" 1692msgstr ""
1699 1693
1700#: src/datastore/gnunet-datastore.c:259 1694#: src/datastore/gnunet-datastore.c:261
1701msgid "Error queueing datastore GET operation\n" 1695msgid "Error queueing datastore GET operation\n"
1702msgstr "" 1696msgstr ""
1703 1697
1704#: src/datastore/gnunet-datastore.c:285 src/datastore/gnunet-datastore.c:410 1698#: src/datastore/gnunet-datastore.c:287 src/datastore/gnunet-datastore.c:412
1705#, fuzzy, c-format 1699#, fuzzy, c-format
1706msgid "Unable to open dump file: %s\n" 1700msgid "Unable to open dump file: %s\n"
1707msgstr "Résolution de « %s » échouée\n" 1701msgstr "Résolution de « %s » échouée\n"
1708 1702
1709#: src/datastore/gnunet-datastore.c:324 1703#: src/datastore/gnunet-datastore.c:326
1710#, c-format 1704#, c-format
1711msgid "Failed to store item: %s, aborting\n" 1705msgid "Failed to store item: %s, aborting\n"
1712msgstr "" 1706msgstr ""
1713 1707
1714#: src/datastore/gnunet-datastore.c:338 1708#: src/datastore/gnunet-datastore.c:340
1715#, c-format 1709#, c-format
1716msgid "Inserted %<PRIu64> records\n" 1710msgid "Inserted %<PRIu64> records\n"
1717msgstr "" 1711msgstr ""
1718 1712
1719#: src/datastore/gnunet-datastore.c:347 src/datastore/gnunet-datastore.c:361 1713#: src/datastore/gnunet-datastore.c:349 src/datastore/gnunet-datastore.c:363
1720#, c-format 1714#, c-format
1721msgid "Short read from file: %zd bytes expecting %zd\n" 1715msgid "Short read from file: %zd bytes expecting %zd\n"
1722msgstr "" 1716msgstr ""
1723 1717
1724#: src/datastore/gnunet-datastore.c:387 1718#: src/datastore/gnunet-datastore.c:389
1725msgid "Error queueing datastore PUT operation\n" 1719msgid "Error queueing datastore PUT operation\n"
1726msgstr "" 1720msgstr ""
1727 1721
1728#: src/datastore/gnunet-datastore.c:430 1722#: src/datastore/gnunet-datastore.c:432
1729msgid "Input file is not of a supported format\n" 1723msgid "Input file is not of a supported format\n"
1730msgstr "" 1724msgstr ""
1731 1725
1732#: src/datastore/gnunet-datastore.c:456 1726#: src/datastore/gnunet-datastore.c:458
1733msgid "Failed connecting to the datastore.\n" 1727msgid "Failed connecting to the datastore.\n"
1734msgstr "" 1728msgstr ""
1735 1729
1736#: src/datastore/gnunet-datastore.c:468 1730#: src/datastore/gnunet-datastore.c:470
1737#, c-format 1731#, c-format
1738msgid "Please choose at least one operation: %s, %s\n" 1732msgid "Please choose at least one operation: %s, %s\n"
1739msgstr "" 1733msgstr ""
1740 1734
1741#: src/datastore/gnunet-datastore.c:491 1735#: src/datastore/gnunet-datastore.c:493
1742msgid "Dump all records from the datastore" 1736msgid "Dump all records from the datastore"
1743msgstr "" 1737msgstr ""
1744 1738
1745#: src/datastore/gnunet-datastore.c:495 1739#: src/datastore/gnunet-datastore.c:497
1746msgid "Insert records into the datastore" 1740msgid "Insert records into the datastore"
1747msgstr "" 1741msgstr ""
1748 1742
1749#: src/datastore/gnunet-datastore.c:500 1743#: src/datastore/gnunet-datastore.c:502
1750msgid "File to dump or insert" 1744msgid "File to dump or insert"
1751msgstr "" 1745msgstr ""
1752 1746
1753#: src/datastore/gnunet-datastore.c:509 1747#: src/datastore/gnunet-datastore.c:511
1754msgid "Manipulate GNUnet datastore" 1748msgid "Manipulate GNUnet datastore"
1755msgstr "" 1749msgstr ""
1756 1750
1757#: src/datastore/gnunet-service-datastore.c:336 1751#: src/datastore/gnunet-service-datastore.c:338
1758msgid "# bytes expired" 1752msgid "# bytes expired"
1759msgstr "" 1753msgstr ""
1760 1754
1761#: src/datastore/gnunet-service-datastore.c:418 1755#: src/datastore/gnunet-service-datastore.c:420
1762msgid "# bytes purged (low-priority)" 1756msgid "# bytes purged (low-priority)"
1763msgstr "" 1757msgstr ""
1764 1758
1765#: src/datastore/gnunet-service-datastore.c:560 1759#: src/datastore/gnunet-service-datastore.c:562
1766msgid "# results found" 1760msgid "# results found"
1767msgstr "# résultats introuvables" 1761msgstr "# résultats introuvables"
1768 1762
1769#: src/datastore/gnunet-service-datastore.c:601 1763#: src/datastore/gnunet-service-datastore.c:603
1770#, c-format 1764#, c-format
1771msgid "" 1765msgid ""
1772"Insufficient space (%llu bytes are available) to satisfy RESERVE request for " 1766"Insufficient space (%llu bytes are available) to satisfy RESERVE request for "
1773"%llu bytes\n" 1767"%llu bytes\n"
1774msgstr "" 1768msgstr ""
1775 1769
1776#: src/datastore/gnunet-service-datastore.c:612 1770#: src/datastore/gnunet-service-datastore.c:614
1777#, c-format 1771#, c-format
1778msgid "" 1772msgid ""
1779"The requested amount (%llu bytes) is larger than the cache size (%llu " 1773"The requested amount (%llu bytes) is larger than the cache size (%llu "
1780"bytes)\n" 1774"bytes)\n"
1781msgstr "" 1775msgstr ""
1782 1776
1783#: src/datastore/gnunet-service-datastore.c:618 1777#: src/datastore/gnunet-service-datastore.c:620
1784msgid "" 1778msgid ""
1785"Insufficient space to satisfy request and requested amount is larger than " 1779"Insufficient space to satisfy request and requested amount is larger than "
1786"cache size" 1780"cache size"
1787msgstr "" 1781msgstr ""
1788 1782
1789#: src/datastore/gnunet-service-datastore.c:625 1783#: src/datastore/gnunet-service-datastore.c:627
1790msgid "Insufficient space to satisfy request" 1784msgid "Insufficient space to satisfy request"
1791msgstr "" 1785msgstr ""
1792 1786
1793#: src/datastore/gnunet-service-datastore.c:632 1787#: src/datastore/gnunet-service-datastore.c:634
1794#: src/datastore/gnunet-service-datastore.c:687 1788#: src/datastore/gnunet-service-datastore.c:689
1795#: src/datastore/gnunet-service-datastore.c:835 1789#: src/datastore/gnunet-service-datastore.c:837
1796#: src/datastore/gnunet-service-datastore.c:1467 1790#: src/datastore/gnunet-service-datastore.c:1469
1797msgid "# reserved" 1791msgid "# reserved"
1798msgstr "# réservé" 1792msgstr "# réservé"
1799 1793
1800#: src/datastore/gnunet-service-datastore.c:705 1794#: src/datastore/gnunet-service-datastore.c:707
1801msgid "Could not find matching reservation" 1795msgid "Could not find matching reservation"
1802msgstr "" 1796msgstr ""
1803 1797
1804#: src/datastore/gnunet-service-datastore.c:771 1798#: src/datastore/gnunet-service-datastore.c:773
1805#, c-format 1799#, c-format
1806msgid "Need %llu bytes more space (%llu allowed, using %llu)\n" 1800msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
1807msgstr "" 1801msgstr ""
1808 1802
1809#: src/datastore/gnunet-service-datastore.c:874 1803#: src/datastore/gnunet-service-datastore.c:876
1810msgid "# GET requests received" 1804msgid "# GET requests received"
1811msgstr "" 1805msgstr ""
1812 1806
1813#: src/datastore/gnunet-service-datastore.c:905 1807#: src/datastore/gnunet-service-datastore.c:907
1814msgid "# GET KEY requests received" 1808msgid "# GET KEY requests received"
1815msgstr "" 1809msgstr ""
1816 1810
1817#: src/datastore/gnunet-service-datastore.c:918 1811#: src/datastore/gnunet-service-datastore.c:920
1818msgid "# requests filtered by bloomfilter" 1812msgid "# requests filtered by bloomfilter"
1819msgstr "" 1813msgstr ""
1820 1814
1821#: src/datastore/gnunet-service-datastore.c:954 1815#: src/datastore/gnunet-service-datastore.c:956
1822msgid "# GET REPLICATION requests received" 1816msgid "# GET REPLICATION requests received"
1823msgstr "" 1817msgstr ""
1824 1818
1825#: src/datastore/gnunet-service-datastore.c:987 1819#: src/datastore/gnunet-service-datastore.c:989
1826msgid "# GET ZERO ANONYMITY requests received" 1820msgid "# GET ZERO ANONYMITY requests received"
1827msgstr "" 1821msgstr ""
1828 1822
1829#: src/datastore/gnunet-service-datastore.c:1034 1823#: src/datastore/gnunet-service-datastore.c:1036
1830msgid "Content not found" 1824msgid "Content not found"
1831msgstr "" 1825msgstr ""
1832 1826
1833#: src/datastore/gnunet-service-datastore.c:1041 1827#: src/datastore/gnunet-service-datastore.c:1043
1834msgid "# bytes removed (explicit request)" 1828msgid "# bytes removed (explicit request)"
1835msgstr "" 1829msgstr ""
1836 1830
1837#: src/datastore/gnunet-service-datastore.c:1086 1831#: src/datastore/gnunet-service-datastore.c:1088
1838msgid "# REMOVE requests received" 1832msgid "# REMOVE requests received"
1839msgstr "" 1833msgstr ""
1840 1834
1841#: src/datastore/gnunet-service-datastore.c:1135 1835#: src/datastore/gnunet-service-datastore.c:1137
1842#, c-format 1836#, c-format
1843msgid "" 1837msgid ""
1844"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n" 1838"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
1845msgstr "" 1839msgstr ""
1846 1840
1847#: src/datastore/gnunet-service-datastore.c:1141 1841#: src/datastore/gnunet-service-datastore.c:1143
1848#: src/datastore/gnunet-service-datastore.c:1316 1842#: src/datastore/gnunet-service-datastore.c:1318
1849#, c-format 1843#, c-format
1850msgid "New payload: %lld\n" 1844msgid "New payload: %lld\n"
1851msgstr "" 1845msgstr ""
1852 1846
1853#: src/datastore/gnunet-service-datastore.c:1195 1847#: src/datastore/gnunet-service-datastore.c:1197
1854#, c-format 1848#, c-format
1855msgid "Loading `%s' datastore plugin\n" 1849msgid "Loading `%s' datastore plugin\n"
1856msgstr "" 1850msgstr ""
1857 1851
1858#: src/datastore/gnunet-service-datastore.c:1207 1852#: src/datastore/gnunet-service-datastore.c:1209
1859#, c-format 1853#, c-format
1860msgid "Failed to load datastore plugin for `%s'\n" 1854msgid "Failed to load datastore plugin for `%s'\n"
1861msgstr "" 1855msgstr ""
1862 1856
1863#: src/datastore/gnunet-service-datastore.c:1267 1857#: src/datastore/gnunet-service-datastore.c:1269
1864msgid "Bloomfilter construction complete.\n" 1858msgid "Bloomfilter construction complete.\n"
1865msgstr "" 1859msgstr ""
1866 1860
1867#: src/datastore/gnunet-service-datastore.c:1323 1861#: src/datastore/gnunet-service-datastore.c:1325
1868msgid "Rebuilding bloomfilter. Please be patient.\n" 1862msgid "Rebuilding bloomfilter. Please be patient.\n"
1869msgstr "" 1863msgstr ""
1870 1864
1871#: src/datastore/gnunet-service-datastore.c:1334 1865#: src/datastore/gnunet-service-datastore.c:1336
1872msgid "Plugin does not support get_keys function. Please fix!\n" 1866msgid "Plugin does not support get_keys function. Please fix!\n"
1873msgstr "" 1867msgstr ""
1874 1868
1875#: src/datastore/gnunet-service-datastore.c:1504 1869#: src/datastore/gnunet-service-datastore.c:1506
1876#, c-format 1870#, c-format
1877msgid "# bytes used in file-sharing datastore `%s'" 1871msgid "# bytes used in file-sharing datastore `%s'"
1878msgstr "" 1872msgstr ""
1879 1873
1880#: src/datastore/gnunet-service-datastore.c:1520 1874#: src/datastore/gnunet-service-datastore.c:1522
1881msgid "# quota" 1875msgid "# quota"
1882msgstr "# quota" 1876msgstr "# quota"
1883 1877
1884#: src/datastore/gnunet-service-datastore.c:1525 1878#: src/datastore/gnunet-service-datastore.c:1527
1885msgid "# cache size" 1879msgid "# cache size"
1886msgstr "# taille du cache" 1880msgstr "# taille du cache"
1887 1881
1888#: src/datastore/gnunet-service-datastore.c:1541 1882#: src/datastore/gnunet-service-datastore.c:1543
1889#, c-format 1883#, c-format
1890msgid "Could not use specified filename `%s' for bloomfilter.\n" 1884msgid "Could not use specified filename `%s' for bloomfilter.\n"
1891msgstr "" 1885msgstr ""
1892 1886
1893#: src/datastore/gnunet-service-datastore.c:1559 1887#: src/datastore/gnunet-service-datastore.c:1561
1894#: src/datastore/gnunet-service-datastore.c:1575 1888#: src/datastore/gnunet-service-datastore.c:1577
1895#, c-format 1889#, c-format
1896msgid "Failed to remove bogus bloomfilter file `%s'\n" 1890msgid "Failed to remove bogus bloomfilter file `%s'\n"
1897msgstr "" 1891msgstr ""
1898 1892
1899#: src/datastore/gnunet-service-datastore.c:1607 1893#: src/datastore/gnunet-service-datastore.c:1609
1900msgid "Failed to initialize bloomfilter.\n" 1894msgid "Failed to initialize bloomfilter.\n"
1901msgstr "" 1895msgstr ""
1902 1896
1903#: src/datastore/plugin_datastore_heap.c:891 1897#: src/datastore/plugin_datastore_heap.c:893
1904msgid "Heap database running\n" 1898msgid "Heap database running\n"
1905msgstr "" 1899msgstr ""
1906 1900
1907#: src/datastore/plugin_datastore_mysql.c:369 1901#: src/datastore/plugin_datastore_mysql.c:371
1908#: src/datastore/plugin_datastore_mysql.c:421 1902#: src/datastore/plugin_datastore_mysql.c:423
1909#: src/datastore/plugin_datastore_mysql.c:1073 1903#: src/datastore/plugin_datastore_mysql.c:1075
1910msgid "MySQL statement run failure" 1904msgid "MySQL statement run failure"
1911msgstr "" 1905msgstr ""
1912 1906
1913#: src/datastore/plugin_datastore_mysql.c:408 1907#: src/datastore/plugin_datastore_mysql.c:410
1914#: src/datastore/plugin_datastore_sqlite.c:676 1908#: src/datastore/plugin_datastore_sqlite.c:678
1915msgid "Data too large" 1909msgid "Data too large"
1916msgstr "" 1910msgstr ""
1917 1911
1918#: src/datastore/plugin_datastore_mysql.c:846 1912#: src/datastore/plugin_datastore_mysql.c:848
1919#, c-format 1913#, c-format
1920msgid "`%s' for `%s' failed at %s:%d with error: %s\n" 1914msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
1921msgstr "" 1915msgstr ""
1922 1916
1923#: src/datastore/plugin_datastore_mysql.c:1178 1917#: src/datastore/plugin_datastore_mysql.c:1180
1924#: src/psycstore/plugin_psycstore_mysql.c:1934
1925msgid "Mysql database running\n" 1918msgid "Mysql database running\n"
1926msgstr "" 1919msgstr ""
1927 1920
1928#: src/datastore/plugin_datastore_postgres.c:274 1921#: src/datastore/plugin_datastore_postgres.c:276
1929#: src/datastore/plugin_datastore_postgres.c:891 1922#: src/datastore/plugin_datastore_postgres.c:893
1930msgid "Postgress exec failure" 1923msgid "Postgress exec failure"
1931msgstr "" 1924msgstr ""
1932 1925
1933#: src/datastore/plugin_datastore_postgres.c:852 1926#: src/datastore/plugin_datastore_postgres.c:854
1934msgid "Failed to drop table from database.\n" 1927msgid "Failed to drop table from database.\n"
1935msgstr "" 1928msgstr ""
1936 1929
1937#: src/datastore/plugin_datastore_postgres.c:950 1930#: src/datastore/plugin_datastore_postgres.c:952
1938#: src/psycstore/plugin_psycstore_postgres.c:1504
1939msgid "Postgres database running\n" 1931msgid "Postgres database running\n"
1940msgstr "" 1932msgstr ""
1941 1933
1942#: src/datastore/plugin_datastore_sqlite.c:64 1934#: src/datastore/plugin_datastore_sqlite.c:66
1943#: src/testbed/generate-underlay-topology.c:48 1935#: src/testbed/generate-underlay-topology.c:50
1944#: src/testbed/gnunet-daemon-latency-logger.c:53 1936#: src/testbed/gnunet-daemon-latency-logger.c:55
1945#: src/testbed/gnunet-daemon-testbed-underlay.c:57 1937#: src/testbed/gnunet-daemon-testbed-underlay.c:59
1946#, c-format 1938#, c-format
1947msgid "`%s' failed at %s:%u with error: %s" 1939msgid "`%s' failed at %s:%u with error: %s"
1948msgstr "" 1940msgstr ""
1949 1941
1950#: src/datastore/plugin_datastore_sqlite.c:269 1942#: src/datastore/plugin_datastore_sqlite.c:271
1951#: src/namecache/plugin_namecache_sqlite.c:207 1943#: src/namecache/plugin_namecache_sqlite.c:173
1952#: src/namestore/plugin_namestore_sqlite.c:203 1944#: src/namestore/plugin_namestore_sqlite.c:206
1953#: src/peerstore/plugin_peerstore_sqlite.c:533 1945#: src/peerstore/plugin_peerstore_sqlite.c:535
1954#: src/psycstore/plugin_psycstore_sqlite.c:323 1946#: src/reclaim/plugin_reclaim_sqlite.c:212
1955#: src/reclaim/plugin_reclaim_sqlite.c:210
1956#, c-format 1947#, c-format
1957msgid "Unable to initialize SQLite: %s.\n" 1948msgid "Unable to initialize SQLite: %s.\n"
1958msgstr "" 1949msgstr ""
1959 1950
1960#: src/datastore/plugin_datastore_sqlite.c:627 1951#: src/datastore/plugin_datastore_sqlite.c:629
1961msgid "sqlite bind failure" 1952msgid "sqlite bind failure"
1962msgstr "" 1953msgstr ""
1963 1954
1964#: src/datastore/plugin_datastore_sqlite.c:1325 1955#: src/datastore/plugin_datastore_sqlite.c:1327
1965msgid "sqlite version to old to determine size, assuming zero\n" 1956msgid "sqlite version to old to determine size, assuming zero\n"
1966msgstr "" 1957msgstr ""
1967 1958
1968#: src/datastore/plugin_datastore_sqlite.c:1359 1959#: src/datastore/plugin_datastore_sqlite.c:1361
1969#, c-format 1960#, c-format
1970msgid "" 1961msgid ""
1971"Using sqlite page utilization to estimate payload (%llu pages of size %llu " 1962"Using sqlite page utilization to estimate payload (%llu pages of size %llu "
1972"bytes)\n" 1963"bytes)\n"
1973msgstr "" 1964msgstr ""
1974 1965
1975#: src/datastore/plugin_datastore_sqlite.c:1403 1966#: src/datastore/plugin_datastore_sqlite.c:1405
1976#: src/namecache/plugin_namecache_sqlite.c:638 1967#: src/namecache/plugin_namecache_sqlite.c:557
1977#: src/namestore/plugin_namestore_sqlite.c:753 1968#: src/namestore/plugin_namestore_sqlite.c:750
1978#: src/reclaim/plugin_reclaim_sqlite.c:709 1969#: src/reclaim/plugin_reclaim_sqlite.c:711
1979msgid "Sqlite database running\n" 1970msgid "Sqlite database running\n"
1980msgstr "" 1971msgstr ""
1981 1972
1982#: src/datastore/plugin_datastore_template.c:251 1973#: src/datastore/plugin_datastore_template.c:253
1983msgid "Template database running\n" 1974msgid "Template database running\n"
1984msgstr "" 1975msgstr ""
1985 1976
1986#: src/dht/gnunet-dht-get.c:156 1977#: src/dht/gnunet-dht-get.c:158
1987#, c-format 1978#, c-format
1988msgid "" 1979msgid ""
1989"Result %d, type %d:\n" 1980"Result %d, type %d:\n"
@@ -1992,1445 +1983,1445 @@ msgstr ""
1992"Resultat %d, type %d :\n" 1983"Resultat %d, type %d :\n"
1993"%.*s\n" 1984"%.*s\n"
1994 1985
1995#: src/dht/gnunet-dht-get.c:157 1986#: src/dht/gnunet-dht-get.c:159
1996#, fuzzy, c-format 1987#, fuzzy, c-format
1997msgid "Result %d, type %d:\n" 1988msgid "Result %d, type %d:\n"
1998msgstr "" 1989msgstr ""
1999"Resultat %d, type %d :\n" 1990"Resultat %d, type %d :\n"
2000"%.*s\n" 1991"%.*s\n"
2001 1992
2002#: src/dht/gnunet-dht-get.c:202 1993#: src/dht/gnunet-dht-get.c:204
2003msgid "Must provide key for DHT GET!\n" 1994msgid "Must provide key for DHT GET!\n"
2004msgstr "" 1995msgstr ""
2005 1996
2006#: src/dht/gnunet-dht-get.c:208 src/dht/gnunet-dht-monitor.c:255 1997#: src/dht/gnunet-dht-get.c:210 src/dht/gnunet-dht-monitor.c:257
2007msgid "Failed to connect to DHT service!\n" 1998msgid "Failed to connect to DHT service!\n"
2008msgstr "" 1999msgstr ""
2009 2000
2010#: src/dht/gnunet-dht-get.c:217 2001#: src/dht/gnunet-dht-get.c:219
2011msgid "Issueing DHT GET with key" 2002msgid "Issuing DHT GET with key"
2012msgstr "" 2003msgstr ""
2013 2004
2014#: src/dht/gnunet-dht-get.c:246 src/dht/gnunet-dht-monitor.c:305 2005#: src/dht/gnunet-dht-get.c:248 src/dht/gnunet-dht-monitor.c:307
2015#: src/dht/gnunet-dht-put.c:196 2006#: src/dht/gnunet-dht-put.c:198
2016msgid "the query key" 2007msgid "the query key"
2017msgstr "" 2008msgstr ""
2018 2009
2019#: src/dht/gnunet-dht-get.c:251 2010#: src/dht/gnunet-dht-get.c:253
2020msgid "how many parallel requests (replicas) to create" 2011msgid "how many parallel requests (replicas) to create"
2021msgstr "" 2012msgstr ""
2022 2013
2023#: src/dht/gnunet-dht-get.c:256 src/dht/gnunet-dht-monitor.c:311 2014#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
2024msgid "the type of data to look for" 2015msgid "the type of data to look for"
2025msgstr "" 2016msgstr ""
2026 2017
2027#: src/dht/gnunet-dht-get.c:261 2018#: src/dht/gnunet-dht-get.c:263
2028msgid "how long to execute this query before giving up?" 2019msgid "how long to execute this query before giving up?"
2029msgstr "" 2020msgstr ""
2030 2021
2031#: src/dht/gnunet-dht-get.c:265 src/dht/gnunet-dht-put.c:200 2022#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
2032msgid "use DHT's demultiplex everywhere option" 2023msgid "use DHT's demultiplex everywhere option"
2033msgstr "" 2024msgstr ""
2034 2025
2035#: src/dht/gnunet-dht-get.c:278 2026#: src/dht/gnunet-dht-get.c:280
2036msgid "Issue a GET request to the GNUnet DHT, prints results." 2027msgid "Issue a GET request to the GNUnet DHT, prints results."
2037msgstr "" 2028msgstr ""
2038 2029
2039#: src/dht/gnunet-dht-monitor.c:317 2030#: src/dht/gnunet-dht-monitor.c:319
2040msgid "how long should the monitor command run" 2031msgid "how long should the monitor command run"
2041msgstr "" 2032msgstr ""
2042 2033
2043#: src/dht/gnunet-dht-monitor.c:322 src/fs/gnunet-download.c:370 2034#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
2044#: src/nse/gnunet-nse-profiler.c:876 2035#: src/nse/gnunet-nse-profiler.c:878
2045msgid "be verbose (print progress information)" 2036msgid "be verbose (print progress information)"
2046msgstr "" 2037msgstr ""
2047 2038
2048#: src/dht/gnunet-dht-monitor.c:335 2039#: src/dht/gnunet-dht-monitor.c:337
2049msgid "Prints all packets that go through the DHT." 2040msgid "Prints all packets that go through the DHT."
2050msgstr "" 2041msgstr ""
2051 2042
2052#: src/dht/gnunet_dht_profiler.c:914 src/testbed/gnunet-testbed-profiler.c:251 2043#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
2053#, c-format 2044#, c-format
2054msgid "Exiting as the number of peers is %u\n" 2045msgid "Exiting as the number of peers is %u\n"
2055msgstr "" 2046msgstr ""
2056 2047
2057#: src/dht/gnunet_dht_profiler.c:947 src/rps/gnunet-rps-profiler.c:2764 2048#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
2058#, fuzzy 2049#, fuzzy
2059msgid "number of peers to start" 2050msgid "number of peers to start"
2060msgstr "nombre de valeurs" 2051msgstr "nombre de valeurs"
2061 2052
2062#: src/dht/gnunet_dht_profiler.c:952 2053#: src/dht/gnunet_dht_profiler.c:954
2063msgid "number of PUTs to perform per peer" 2054msgid "number of PUTs to perform per peer"
2064msgstr "" 2055msgstr ""
2065 2056
2066#: src/dht/gnunet_dht_profiler.c:957 src/nse/gnunet-nse-profiler.c:858 2057#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
2067#: src/testbed/gnunet-testbed-profiler.c:302 2058#: src/testbed/gnunet-testbed-profiler.c:304
2068msgid "name of the file with the login information for the testbed" 2059msgid "name of the file with the login information for the testbed"
2069msgstr "" 2060msgstr ""
2070 2061
2071#: src/dht/gnunet_dht_profiler.c:962 2062#: src/dht/gnunet_dht_profiler.c:964
2072msgid "delay between rounds for collecting statistics (default: 30 sec)" 2063msgid "delay between rounds for collecting statistics (default: 30 sec)"
2073msgstr "" 2064msgstr ""
2074 2065
2075#: src/dht/gnunet_dht_profiler.c:967 2066#: src/dht/gnunet_dht_profiler.c:969
2076msgid "delay to start doing PUTs (default: 1 sec)" 2067msgid "delay to start doing PUTs (default: 1 sec)"
2077msgstr "" 2068msgstr ""
2078 2069
2079#: src/dht/gnunet_dht_profiler.c:972 2070#: src/dht/gnunet_dht_profiler.c:974
2080msgid "delay to start doing GETs (default: 5 min)" 2071msgid "delay to start doing GETs (default: 5 min)"
2081msgstr "" 2072msgstr ""
2082 2073
2083#: src/dht/gnunet_dht_profiler.c:977 2074#: src/dht/gnunet_dht_profiler.c:979
2084msgid "replication degree for DHT PUTs" 2075msgid "replication degree for DHT PUTs"
2085msgstr "" 2076msgstr ""
2086 2077
2087#: src/dht/gnunet_dht_profiler.c:982 2078#: src/dht/gnunet_dht_profiler.c:984
2088msgid "chance that a peer is selected at random for PUTs" 2079msgid "chance that a peer is selected at random for PUTs"
2089msgstr "" 2080msgstr ""
2090 2081
2091#: src/dht/gnunet_dht_profiler.c:987 2082#: src/dht/gnunet_dht_profiler.c:989
2092msgid "timeout for DHT PUT and GET requests (default: 1 min)" 2083msgid "timeout for DHT PUT and GET requests (default: 1 min)"
2093msgstr "" 2084msgstr ""
2094 2085
2095#: src/dht/gnunet_dht_profiler.c:1007 2086#: src/dht/gnunet_dht_profiler.c:1009
2096msgid "Measure quality and performance of the DHT service." 2087msgid "Measure quality and performance of the DHT service."
2097msgstr "" 2088msgstr ""
2098 2089
2099#: src/dht/gnunet-dht-put.c:132 2090#: src/dht/gnunet-dht-put.c:134
2100msgid "Must provide KEY and DATA for DHT put!\n" 2091msgid "Must provide KEY and DATA for DHT put!\n"
2101msgstr "" 2092msgstr ""
2102 2093
2103#: src/dht/gnunet-dht-put.c:140 2094#: src/dht/gnunet-dht-put.c:142
2104#, fuzzy 2095#, fuzzy
2105msgid "Could not connect to DHT service!\n" 2096msgid "Could not connect to DHT service!\n"
2106msgstr "Impossible d’ouvrir « %s ».\n" 2097msgstr "Impossible d’ouvrir « %s ».\n"
2107 2098
2108#: src/dht/gnunet-dht-put.c:151 2099#: src/dht/gnunet-dht-put.c:153
2109#, c-format 2100#, c-format
2110msgid "Issuing put request for `%s' with data `%s'!\n" 2101msgid "Issuing put request for `%s' with data `%s'!\n"
2111msgstr "" 2102msgstr ""
2112 2103
2113#: src/dht/gnunet-dht-put.c:186 2104#: src/dht/gnunet-dht-put.c:188
2114msgid "the data to insert under the key" 2105msgid "the data to insert under the key"
2115msgstr "" 2106msgstr ""
2116 2107
2117#: src/dht/gnunet-dht-put.c:191 2108#: src/dht/gnunet-dht-put.c:193
2118msgid "how long to store this entry in the dht (in seconds)" 2109msgid "how long to store this entry in the dht (in seconds)"
2119msgstr "" 2110msgstr ""
2120 2111
2121#: src/dht/gnunet-dht-put.c:205 2112#: src/dht/gnunet-dht-put.c:207
2122msgid "how many replicas to create" 2113msgid "how many replicas to create"
2123msgstr "" 2114msgstr ""
2124 2115
2125#: src/dht/gnunet-dht-put.c:209 2116#: src/dht/gnunet-dht-put.c:211
2126msgid "use DHT's record route option" 2117msgid "use DHT's record route option"
2127msgstr "" 2118msgstr ""
2128 2119
2129#: src/dht/gnunet-dht-put.c:214 2120#: src/dht/gnunet-dht-put.c:216
2130msgid "the type to insert data as" 2121msgid "the type to insert data as"
2131msgstr "" 2122msgstr ""
2132 2123
2133#: src/dht/gnunet-dht-put.c:231 2124#: src/dht/gnunet-dht-put.c:233
2134msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY." 2125msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY."
2135msgstr "" 2126msgstr ""
2136 2127
2137#: src/dht/gnunet-service-dht_clients.c:367 2128#: src/dht/gnunet-service-dht_clients.c:369
2138msgid "# GET requests from clients injected" 2129msgid "# GET requests from clients injected"
2139msgstr "" 2130msgstr ""
2140 2131
2141#: src/dht/gnunet-service-dht_clients.c:481 2132#: src/dht/gnunet-service-dht_clients.c:483
2142msgid "# PUT requests received from clients" 2133msgid "# PUT requests received from clients"
2143msgstr "" 2134msgstr ""
2144 2135
2145#: src/dht/gnunet-service-dht_clients.c:614 2136#: src/dht/gnunet-service-dht_clients.c:616
2146msgid "# GET requests received from clients" 2137msgid "# GET requests received from clients"
2147msgstr "" 2138msgstr ""
2148 2139
2149#: src/dht/gnunet-service-dht_clients.c:840 2140#: src/dht/gnunet-service-dht_clients.c:842
2150msgid "# GET STOP requests received from clients" 2141msgid "# GET STOP requests received from clients"
2151msgstr "" 2142msgstr ""
2152 2143
2153#: src/dht/gnunet-service-dht_clients.c:1025 2144#: src/dht/gnunet-service-dht_clients.c:1027
2154msgid "# Key match, type mismatches in REPLY to CLIENT" 2145msgid "# Key match, type mismatches in REPLY to CLIENT"
2155msgstr "" 2146msgstr ""
2156 2147
2157#: src/dht/gnunet-service-dht_clients.c:1040 2148#: src/dht/gnunet-service-dht_clients.c:1042
2158msgid "# Duplicate REPLIES to CLIENT request dropped" 2149msgid "# Duplicate REPLIES to CLIENT request dropped"
2159msgstr "" 2150msgstr ""
2160 2151
2161#: src/dht/gnunet-service-dht_clients.c:1086 2152#: src/dht/gnunet-service-dht_clients.c:1088
2162#, c-format 2153#, c-format
2163msgid "Unsupported block type (%u) in request!\n" 2154msgid "Unsupported block type (%u) in request!\n"
2164msgstr "" 2155msgstr ""
2165 2156
2166#: src/dht/gnunet-service-dht_clients.c:1093 2157#: src/dht/gnunet-service-dht_clients.c:1095
2167msgid "# RESULTS queued for clients" 2158msgid "# RESULTS queued for clients"
2168msgstr "" 2159msgstr ""
2169 2160
2170#: src/dht/gnunet-service-dht_clients.c:1171 2161#: src/dht/gnunet-service-dht_clients.c:1173
2171msgid "# REPLIES ignored for CLIENTS (no match)" 2162msgid "# REPLIES ignored for CLIENTS (no match)"
2172msgstr "" 2163msgstr ""
2173 2164
2174#: src/dht/gnunet-service-dht_datacache.c:71 2165#: src/dht/gnunet-service-dht_datacache.c:73
2175#, c-format 2166#, c-format
2176msgid "%s request received, but have no datacache!\n" 2167msgid "%s request received, but have no datacache!\n"
2177msgstr "" 2168msgstr ""
2178 2169
2179#: src/dht/gnunet-service-dht_datacache.c:81 2170#: src/dht/gnunet-service-dht_datacache.c:83
2180msgid "# ITEMS stored in datacache" 2171msgid "# ITEMS stored in datacache"
2181msgstr "" 2172msgstr ""
2182 2173
2183#: src/dht/gnunet-service-dht_datacache.c:205 2174#: src/dht/gnunet-service-dht_datacache.c:207
2184msgid "# Good RESULTS found in datacache" 2175msgid "# Good RESULTS found in datacache"
2185msgstr "" 2176msgstr ""
2186 2177
2187#: src/dht/gnunet-service-dht_datacache.c:217 2178#: src/dht/gnunet-service-dht_datacache.c:219
2188msgid "# Duplicate RESULTS found in datacache" 2179msgid "# Duplicate RESULTS found in datacache"
2189msgstr "" 2180msgstr ""
2190 2181
2191#: src/dht/gnunet-service-dht_datacache.c:223 2182#: src/dht/gnunet-service-dht_datacache.c:225
2192msgid "# Invalid RESULTS found in datacache" 2183msgid "# Invalid RESULTS found in datacache"
2193msgstr "" 2184msgstr ""
2194 2185
2195#: src/dht/gnunet-service-dht_datacache.c:229 2186#: src/dht/gnunet-service-dht_datacache.c:231
2196msgid "# Irrelevant RESULTS found in datacache" 2187msgid "# Irrelevant RESULTS found in datacache"
2197msgstr "" 2188msgstr ""
2198 2189
2199#: src/dht/gnunet-service-dht_datacache.c:241 2190#: src/dht/gnunet-service-dht_datacache.c:243
2200msgid "# Unsupported RESULTS found in datacache" 2191msgid "# Unsupported RESULTS found in datacache"
2201msgstr "" 2192msgstr ""
2202 2193
2203#: src/dht/gnunet-service-dht_datacache.c:245 2194#: src/dht/gnunet-service-dht_datacache.c:247
2204#, c-format 2195#, c-format
2205msgid "Unsupported block type (%u) in local response!\n" 2196msgid "Unsupported block type (%u) in local response!\n"
2206msgstr "" 2197msgstr ""
2207 2198
2208#: src/dht/gnunet-service-dht_datacache.c:280 2199#: src/dht/gnunet-service-dht_datacache.c:282
2209msgid "# GET requests given to datacache" 2200msgid "# GET requests given to datacache"
2210msgstr "" 2201msgstr ""
2211 2202
2212#: src/dht/gnunet-service-dht_hello.c:84 2203#: src/dht/gnunet-service-dht_hello.c:86
2213msgid "# HELLOs obtained from peerinfo" 2204msgid "# HELLOs obtained from peerinfo"
2214msgstr "" 2205msgstr ""
2215 2206
2216#: src/dht/gnunet-service-dht_neighbours.c:677 2207#: src/dht/gnunet-service-dht_neighbours.c:679
2217msgid "# FIND PEER messages initiated" 2208msgid "# FIND PEER messages initiated"
2218msgstr "" 2209msgstr ""
2219 2210
2220#: src/dht/gnunet-service-dht_neighbours.c:850 2211#: src/dht/gnunet-service-dht_neighbours.c:852
2221msgid "# requests TTL-dropped" 2212msgid "# requests TTL-dropped"
2222msgstr "" 2213msgstr ""
2223 2214
2224#: src/dht/gnunet-service-dht_neighbours.c:1053 2215#: src/dht/gnunet-service-dht_neighbours.c:1055
2225#: src/dht/gnunet-service-dht_neighbours.c:1096 2216#: src/dht/gnunet-service-dht_neighbours.c:1098
2226msgid "# Peers excluded from routing due to Bloomfilter" 2217msgid "# Peers excluded from routing due to Bloomfilter"
2227msgstr "" 2218msgstr ""
2228 2219
2229#: src/dht/gnunet-service-dht_neighbours.c:1070 2220#: src/dht/gnunet-service-dht_neighbours.c:1072
2230#: src/dht/gnunet-service-dht_neighbours.c:1112 2221#: src/dht/gnunet-service-dht_neighbours.c:1114
2231msgid "# Peer selection failed" 2222msgid "# Peer selection failed"
2232msgstr "" 2223msgstr ""
2233 2224
2234#: src/dht/gnunet-service-dht_neighbours.c:1269 2225#: src/dht/gnunet-service-dht_neighbours.c:1271
2235msgid "# PUT requests routed" 2226msgid "# PUT requests routed"
2236msgstr "" 2227msgstr ""
2237 2228
2238#: src/dht/gnunet-service-dht_neighbours.c:1302 2229#: src/dht/gnunet-service-dht_neighbours.c:1304
2239msgid "# PUT messages queued for transmission" 2230msgid "# PUT messages queued for transmission"
2240msgstr "" 2231msgstr ""
2241 2232
2242#: src/dht/gnunet-service-dht_neighbours.c:1313 2233#: src/dht/gnunet-service-dht_neighbours.c:1315
2243#: src/dht/gnunet-service-dht_neighbours.c:1453 2234#: src/dht/gnunet-service-dht_neighbours.c:1455
2244#: src/dht/gnunet-service-dht_neighbours.c:1556 2235#: src/dht/gnunet-service-dht_neighbours.c:1558
2245msgid "# P2P messages dropped due to full queue" 2236msgid "# P2P messages dropped due to full queue"
2246msgstr "" 2237msgstr ""
2247 2238
2248#: src/dht/gnunet-service-dht_neighbours.c:1398 2239#: src/dht/gnunet-service-dht_neighbours.c:1400
2249msgid "# GET requests routed" 2240msgid "# GET requests routed"
2250msgstr "" 2241msgstr ""
2251 2242
2252#: src/dht/gnunet-service-dht_neighbours.c:1441 2243#: src/dht/gnunet-service-dht_neighbours.c:1443
2253msgid "# GET messages queued for transmission" 2244msgid "# GET messages queued for transmission"
2254msgstr "" 2245msgstr ""
2255 2246
2256#: src/dht/gnunet-service-dht_neighbours.c:1571 2247#: src/dht/gnunet-service-dht_neighbours.c:1573
2257msgid "# RESULT messages queued for transmission" 2248msgid "# RESULT messages queued for transmission"
2258msgstr "" 2249msgstr ""
2259 2250
2260#: src/dht/gnunet-service-dht_neighbours.c:1674 2251#: src/dht/gnunet-service-dht_neighbours.c:1676
2261msgid "# Expired PUTs discarded" 2252msgid "# Expired PUTs discarded"
2262msgstr "" 2253msgstr ""
2263 2254
2264#: src/dht/gnunet-service-dht_neighbours.c:1682 2255#: src/dht/gnunet-service-dht_neighbours.c:1684
2265msgid "# P2P PUT requests received" 2256msgid "# P2P PUT requests received"
2266msgstr "" 2257msgstr ""
2267 2258
2268#: src/dht/gnunet-service-dht_neighbours.c:1686 2259#: src/dht/gnunet-service-dht_neighbours.c:1688
2269msgid "# P2P PUT bytes received" 2260msgid "# P2P PUT bytes received"
2270msgstr "" 2261msgstr ""
2271 2262
2272#: src/dht/gnunet-service-dht_neighbours.c:1912 2263#: src/dht/gnunet-service-dht_neighbours.c:1914
2273msgid "# FIND PEER requests ignored due to Bloomfilter" 2264msgid "# FIND PEER requests ignored due to Bloomfilter"
2274msgstr "" 2265msgstr ""
2275 2266
2276#: src/dht/gnunet-service-dht_neighbours.c:1920 2267#: src/dht/gnunet-service-dht_neighbours.c:1922
2277msgid "# FIND PEER requests ignored due to lack of HELLO" 2268msgid "# FIND PEER requests ignored due to lack of HELLO"
2278msgstr "" 2269msgstr ""
2279 2270
2280#: src/dht/gnunet-service-dht_neighbours.c:2082 2271#: src/dht/gnunet-service-dht_neighbours.c:2084
2281msgid "# P2P GET requests received" 2272msgid "# P2P GET requests received"
2282msgstr "" 2273msgstr ""
2283 2274
2284#: src/dht/gnunet-service-dht_neighbours.c:2086 2275#: src/dht/gnunet-service-dht_neighbours.c:2088
2285msgid "# P2P GET bytes received" 2276msgid "# P2P GET bytes received"
2286msgstr "" 2277msgstr ""
2287 2278
2288#: src/dht/gnunet-service-dht_neighbours.c:2151 2279#: src/dht/gnunet-service-dht_neighbours.c:2153
2289msgid "# P2P FIND PEER requests processed" 2280msgid "# P2P FIND PEER requests processed"
2290msgstr "" 2281msgstr ""
2291 2282
2292#: src/dht/gnunet-service-dht_neighbours.c:2172 2283#: src/dht/gnunet-service-dht_neighbours.c:2174
2293msgid "# P2P GET requests ONLY routed" 2284msgid "# P2P GET requests ONLY routed"
2294msgstr "" 2285msgstr ""
2295 2286
2296#: src/dht/gnunet-service-dht_neighbours.c:2349 2287#: src/dht/gnunet-service-dht_neighbours.c:2351
2297msgid "# Expired results discarded" 2288msgid "# Expired results discarded"
2298msgstr "" 2289msgstr ""
2299 2290
2300#: src/dht/gnunet-service-dht_neighbours.c:2365 2291#: src/dht/gnunet-service-dht_neighbours.c:2367
2301msgid "# P2P RESULTS received" 2292msgid "# P2P RESULTS received"
2302msgstr "" 2293msgstr ""
2303 2294
2304#: src/dht/gnunet-service-dht_neighbours.c:2369 2295#: src/dht/gnunet-service-dht_neighbours.c:2371
2305msgid "# P2P RESULT bytes received" 2296msgid "# P2P RESULT bytes received"
2306msgstr "" 2297msgstr ""
2307 2298
2308#: src/dht/gnunet-service-dht_nse.c:57 2299#: src/dht/gnunet-service-dht_nse.c:59
2309msgid "# Network size estimates received" 2300msgid "# Network size estimates received"
2310msgstr "" 2301msgstr ""
2311 2302
2312#: src/dht/gnunet-service-dht_routing.c:221 2303#: src/dht/gnunet-service-dht_routing.c:223
2313msgid "# Good REPLIES matched against routing table" 2304msgid "# Good REPLIES matched against routing table"
2314msgstr "" 2305msgstr ""
2315 2306
2316#: src/dht/gnunet-service-dht_routing.c:235 2307#: src/dht/gnunet-service-dht_routing.c:237
2317msgid "# Duplicate REPLIES matched against routing table" 2308msgid "# Duplicate REPLIES matched against routing table"
2318msgstr "" 2309msgstr ""
2319 2310
2320#: src/dht/gnunet-service-dht_routing.c:241 2311#: src/dht/gnunet-service-dht_routing.c:243
2321msgid "# Invalid REPLIES matched against routing table" 2312msgid "# Invalid REPLIES matched against routing table"
2322msgstr "" 2313msgstr ""
2323 2314
2324#: src/dht/gnunet-service-dht_routing.c:247 2315#: src/dht/gnunet-service-dht_routing.c:249
2325msgid "# Irrelevant REPLIES matched against routing table" 2316msgid "# Irrelevant REPLIES matched against routing table"
2326msgstr "" 2317msgstr ""
2327 2318
2328#: src/dht/gnunet-service-dht_routing.c:259 2319#: src/dht/gnunet-service-dht_routing.c:261
2329msgid "# Unsupported REPLIES matched against routing table" 2320msgid "# Unsupported REPLIES matched against routing table"
2330msgstr "" 2321msgstr ""
2331 2322
2332#: src/dht/gnunet-service-dht_routing.c:337 2323#: src/dht/gnunet-service-dht_routing.c:339
2333msgid "# Entries removed from routing table" 2324msgid "# Entries removed from routing table"
2334msgstr "" 2325msgstr ""
2335 2326
2336#: src/dht/gnunet-service-dht_routing.c:413 2327#: src/dht/gnunet-service-dht_routing.c:415
2337msgid "# Entries added to routing table" 2328msgid "# Entries added to routing table"
2338msgstr "" 2329msgstr ""
2339 2330
2340#: src/dht/gnunet-service-dht_routing.c:435 2331#: src/dht/gnunet-service-dht_routing.c:437
2341msgid "# DHT requests combined" 2332msgid "# DHT requests combined"
2342msgstr "" 2333msgstr ""
2343 2334
2344#: src/dht/plugin_block_dht.c:187 2335#: src/dht/plugin_block_dht.c:189
2345#, c-format 2336#, c-format
2346msgid "Block not of type %u\n" 2337msgid "Block not of type %u\n"
2347msgstr "" 2338msgstr ""
2348 2339
2349#: src/dht/plugin_block_dht.c:196 2340#: src/dht/plugin_block_dht.c:198
2350msgid "Size mismatch for block\n" 2341msgid "Size mismatch for block\n"
2351msgstr "" 2342msgstr ""
2352 2343
2353#: src/dht/plugin_block_dht.c:207 2344#: src/dht/plugin_block_dht.c:209
2354#, c-format 2345#, c-format
2355msgid "Block of type %u is malformed\n" 2346msgid "Block of type %u is malformed\n"
2356msgstr "" 2347msgstr ""
2357 2348
2358#: src/dns/gnunet-dns-monitor.c:351 src/dns/gnunet-dns-monitor.c:356 2349#: src/dns/gnunet-dns-monitor.c:353 src/dns/gnunet-dns-monitor.c:358
2359msgid "only monitor DNS queries" 2350msgid "only monitor DNS queries"
2360msgstr "" 2351msgstr ""
2361 2352
2362#: src/dns/gnunet-dns-monitor.c:368 2353#: src/dns/gnunet-dns-monitor.c:370
2363msgid "Monitor DNS queries." 2354msgid "Monitor DNS queries."
2364msgstr "" 2355msgstr ""
2365 2356
2366#: src/dns/gnunet-dns-redirector.c:235 2357#: src/dns/gnunet-dns-redirector.c:237
2367msgid "set A records" 2358msgid "set A records"
2368msgstr "" 2359msgstr ""
2369 2360
2370#: src/dns/gnunet-dns-redirector.c:241 2361#: src/dns/gnunet-dns-redirector.c:243
2371msgid "set AAAA records" 2362msgid "set AAAA records"
2372msgstr "" 2363msgstr ""
2373 2364
2374#: src/dns/gnunet-dns-redirector.c:254 2365#: src/dns/gnunet-dns-redirector.c:256
2375msgid "Change DNS replies to point elsewhere." 2366msgid "Change DNS replies to point elsewhere."
2376msgstr "" 2367msgstr ""
2377 2368
2378#: src/dns/gnunet-service-dns.c:460 2369#: src/dns/gnunet-service-dns.c:462
2379msgid "# DNS requests answered via TUN interface" 2370msgid "# DNS requests answered via TUN interface"
2380msgstr "" 2371msgstr ""
2381 2372
2382#: src/dns/gnunet-service-dns.c:608 2373#: src/dns/gnunet-service-dns.c:610
2383msgid "# DNS exit failed (failed to open socket)" 2374msgid "# DNS exit failed (failed to open socket)"
2384msgstr "" 2375msgstr ""
2385 2376
2386#: src/dns/gnunet-service-dns.c:738 2377#: src/dns/gnunet-service-dns.c:740
2387msgid "# External DNS response discarded (no matching request)" 2378msgid "# External DNS response discarded (no matching request)"
2388msgstr "" 2379msgstr ""
2389 2380
2390#: src/dns/gnunet-service-dns.c:813 2381#: src/dns/gnunet-service-dns.c:815
2391msgid "# Client response discarded (no matching request)" 2382msgid "# Client response discarded (no matching request)"
2392msgstr "" 2383msgstr ""
2393 2384
2394#: src/dns/gnunet-service-dns.c:928 2385#: src/dns/gnunet-service-dns.c:930
2395msgid "Received malformed IPv4-UDP packet on TUN interface.\n" 2386msgid "Received malformed IPv4-UDP packet on TUN interface.\n"
2396msgstr "" 2387msgstr ""
2397 2388
2398#: src/dns/gnunet-service-dns.c:944 2389#: src/dns/gnunet-service-dns.c:946
2399msgid "Received malformed IPv6-UDP packet on TUN interface.\n" 2390msgid "Received malformed IPv6-UDP packet on TUN interface.\n"
2400msgstr "" 2391msgstr ""
2401 2392
2402#: src/dns/gnunet-service-dns.c:953 2393#: src/dns/gnunet-service-dns.c:955
2403#, c-format 2394#, c-format
2404msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n" 2395msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n"
2405msgstr "" 2396msgstr ""
2406 2397
2407#: src/dns/gnunet-service-dns.c:963 2398#: src/dns/gnunet-service-dns.c:965
2408msgid "DNS interceptor got non-DNS packet (dropped)\n" 2399msgid "DNS interceptor got non-DNS packet (dropped)\n"
2409msgstr "" 2400msgstr ""
2410 2401
2411#: src/dns/gnunet-service-dns.c:965 2402#: src/dns/gnunet-service-dns.c:967
2412msgid "# Non-DNS UDP packet received via TUN interface" 2403msgid "# Non-DNS UDP packet received via TUN interface"
2413msgstr "" 2404msgstr ""
2414 2405
2415#: src/dns/gnunet-service-dns.c:1032 2406#: src/dns/gnunet-service-dns.c:1034
2416msgid "# DNS requests received via TUN interface" 2407msgid "# DNS requests received via TUN interface"
2417msgstr "" 2408msgstr ""
2418 2409
2419#: src/dns/gnunet-service-dns.c:1080 src/exit/gnunet-daemon-exit.c:3563 2410#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
2420msgid "need a valid IPv4 or IPv6 address\n" 2411msgid "need a valid IPv4 or IPv6 address\n"
2421msgstr "" 2412msgstr ""
2422 2413
2423#: src/dns/gnunet-service-dns.c:1090 2414#: src/dns/gnunet-service-dns.c:1092
2424#, c-format 2415#, c-format
2425msgid "`%s' must be installed SUID, will not run DNS interceptor\n" 2416msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
2426msgstr "" 2417msgstr ""
2427 2418
2428#: src/dv/gnunet-dv.c:173 2419#: src/dv/gnunet-dv.c:175
2429msgid "Print information about DV state" 2420msgid "Print information about DV state"
2430msgstr "" 2421msgstr ""
2431 2422
2432#: src/exit/gnunet-daemon-exit.c:958 2423#: src/exit/gnunet-daemon-exit.c:960
2433msgid "# TCP packets sent via TUN" 2424msgid "# TCP packets sent via TUN"
2434msgstr "" 2425msgstr ""
2435 2426
2436#: src/exit/gnunet-daemon-exit.c:1059 2427#: src/exit/gnunet-daemon-exit.c:1061
2437msgid "# ICMP packets sent via TUN" 2428msgid "# ICMP packets sent via TUN"
2438msgstr "" 2429msgstr ""
2439 2430
2440#: src/exit/gnunet-daemon-exit.c:1338 2431#: src/exit/gnunet-daemon-exit.c:1340
2441msgid "# UDP packets sent via TUN" 2432msgid "# UDP packets sent via TUN"
2442msgstr "" 2433msgstr ""
2443 2434
2444#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570 2435#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
2445#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699 2436#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
2446#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951 2437#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
2447#: src/exit/gnunet-daemon-exit.c:2205 2438#: src/exit/gnunet-daemon-exit.c:2207
2448msgid "# Bytes received from CADET" 2439msgid "# Bytes received from CADET"
2449msgstr "" 2440msgstr ""
2450 2441
2451#: src/exit/gnunet-daemon-exit.c:1465 2442#: src/exit/gnunet-daemon-exit.c:1467
2452msgid "# UDP IP-exit requests received via cadet" 2443msgid "# UDP IP-exit requests received via cadet"
2453msgstr "" 2444msgstr ""
2454 2445
2455#: src/exit/gnunet-daemon-exit.c:1573 2446#: src/exit/gnunet-daemon-exit.c:1575
2456msgid "# UDP service requests received via cadet" 2447msgid "# UDP service requests received via cadet"
2457msgstr "" 2448msgstr ""
2458 2449
2459#: src/exit/gnunet-daemon-exit.c:1613 2450#: src/exit/gnunet-daemon-exit.c:1615
2460msgid "# TCP service creation requests received via cadet" 2451msgid "# TCP service creation requests received via cadet"
2461msgstr "" 2452msgstr ""
2462 2453
2463#: src/exit/gnunet-daemon-exit.c:1702 2454#: src/exit/gnunet-daemon-exit.c:1704
2464msgid "# TCP IP-exit creation requests received via cadet" 2455msgid "# TCP IP-exit creation requests received via cadet"
2465msgstr "" 2456msgstr ""
2466 2457
2467#: src/exit/gnunet-daemon-exit.c:1786 2458#: src/exit/gnunet-daemon-exit.c:1788
2468msgid "# TCP DATA requests dropped (no session)" 2459msgid "# TCP DATA requests dropped (no session)"
2469msgstr "" 2460msgstr ""
2470 2461
2471#: src/exit/gnunet-daemon-exit.c:1823 2462#: src/exit/gnunet-daemon-exit.c:1825
2472msgid "# TCP data requests received via cadet" 2463msgid "# TCP data requests received via cadet"
2473msgstr "" 2464msgstr ""
2474 2465
2475#: src/exit/gnunet-daemon-exit.c:1954 2466#: src/exit/gnunet-daemon-exit.c:1956
2476msgid "# ICMP IP-exit requests received via cadet" 2467msgid "# ICMP IP-exit requests received via cadet"
2477msgstr "" 2468msgstr ""
2478 2469
2479#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277 2470#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
2480#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:826 2471#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
2481#: src/vpn/gnunet-service-vpn.c:989 src/vpn/gnunet-service-vpn.c:2103 2472#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
2482msgid "# ICMPv4 packets dropped (type not allowed)" 2473msgid "# ICMPv4 packets dropped (type not allowed)"
2483msgstr "" 2474msgstr ""
2484 2475
2485#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336 2476#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
2486#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885 2477#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
2487#: src/vpn/gnunet-service-vpn.c:1022 src/vpn/gnunet-service-vpn.c:2156 2478#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
2488msgid "# ICMPv6 packets dropped (type not allowed)" 2479msgid "# ICMPv6 packets dropped (type not allowed)"
2489msgstr "" 2480msgstr ""
2490 2481
2491#: src/exit/gnunet-daemon-exit.c:2208 2482#: src/exit/gnunet-daemon-exit.c:2210
2492msgid "# ICMP service requests received via cadet" 2483msgid "# ICMP service requests received via cadet"
2493msgstr "" 2484msgstr ""
2494 2485
2495#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:983 2486#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
2496#: src/vpn/gnunet-service-vpn.c:2094 2487#: src/vpn/gnunet-service-vpn.c:2096
2497msgid "# ICMPv4 packets dropped (impossible PT to v6)" 2488msgid "# ICMPv4 packets dropped (impossible PT to v6)"
2498msgstr "" 2489msgstr ""
2499 2490
2500#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:873 2491#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
2501#: src/vpn/gnunet-service-vpn.c:2128 src/vpn/gnunet-service-vpn.c:2139 2492#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
2502msgid "# ICMPv6 packets dropped (impossible PT to v4)" 2493msgid "# ICMPv6 packets dropped (impossible PT to v4)"
2503msgstr "" 2494msgstr ""
2504 2495
2505#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066 2496#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
2506msgid "# Inbound CADET channels created" 2497msgid "# Inbound CADET channels created"
2507msgstr "" 2498msgstr ""
2508 2499
2509#: src/exit/gnunet-daemon-exit.c:2520 2500#: src/exit/gnunet-daemon-exit.c:2522
2510#, c-format 2501#, c-format
2511msgid "Got duplicate service records for `%s:%u'\n" 2502msgid "Got duplicate service records for `%s:%u'\n"
2512msgstr "" 2503msgstr ""
2513 2504
2514#: src/exit/gnunet-daemon-exit.c:2539 2505#: src/exit/gnunet-daemon-exit.c:2541
2515msgid "# Messages transmitted via cadet channels" 2506msgid "# Messages transmitted via cadet channels"
2516msgstr "" 2507msgstr ""
2517 2508
2518#: src/exit/gnunet-daemon-exit.c:2717 2509#: src/exit/gnunet-daemon-exit.c:2719
2519msgid "# ICMP packets dropped (not allowed)" 2510msgid "# ICMP packets dropped (not allowed)"
2520msgstr "" 2511msgstr ""
2521 2512
2522#: src/exit/gnunet-daemon-exit.c:2725 2513#: src/exit/gnunet-daemon-exit.c:2727
2523msgid "ICMP Packet dropped, have no matching connection information\n" 2514msgid "ICMP Packet dropped, have no matching connection information\n"
2524msgstr "" 2515msgstr ""
2525 2516
2526#: src/exit/gnunet-daemon-exit.c:2799 2517#: src/exit/gnunet-daemon-exit.c:2801
2527msgid "UDP Packet dropped, have no matching connection information\n" 2518msgid "UDP Packet dropped, have no matching connection information\n"
2528msgstr "" 2519msgstr ""
2529 2520
2530#: src/exit/gnunet-daemon-exit.c:2871 2521#: src/exit/gnunet-daemon-exit.c:2873
2531msgid "TCP Packet dropped, have no matching connection information\n" 2522msgid "TCP Packet dropped, have no matching connection information\n"
2532msgstr "" 2523msgstr ""
2533 2524
2534#: src/exit/gnunet-daemon-exit.c:2919 2525#: src/exit/gnunet-daemon-exit.c:2921
2535msgid "# Packets received from TUN" 2526msgid "# Packets received from TUN"
2536msgstr "" 2527msgstr ""
2537 2528
2538#: src/exit/gnunet-daemon-exit.c:2933 2529#: src/exit/gnunet-daemon-exit.c:2935
2539msgid "# Bytes received from TUN" 2530msgid "# Bytes received from TUN"
2540msgstr "" 2531msgstr ""
2541 2532
2542#: src/exit/gnunet-daemon-exit.c:2959 2533#: src/exit/gnunet-daemon-exit.c:2961
2543msgid "IPv4 packet options received. Ignored.\n" 2534msgid "IPv4 packet options received. Ignored.\n"
2544msgstr "" 2535msgstr ""
2545 2536
2546#: src/exit/gnunet-daemon-exit.c:2986 2537#: src/exit/gnunet-daemon-exit.c:2988
2547#, c-format 2538#, c-format
2548msgid "IPv4 packet with unsupported next header %u received. Ignored.\n" 2539msgid "IPv4 packet with unsupported next header %u received. Ignored.\n"
2549msgstr "" 2540msgstr ""
2550 2541
2551#: src/exit/gnunet-daemon-exit.c:3032 2542#: src/exit/gnunet-daemon-exit.c:3034
2552#, c-format 2543#, c-format
2553msgid "IPv6 packet with unsupported next header %d received. Ignored.\n" 2544msgid "IPv6 packet with unsupported next header %d received. Ignored.\n"
2554msgstr "" 2545msgstr ""
2555 2546
2556#: src/exit/gnunet-daemon-exit.c:3040 2547#: src/exit/gnunet-daemon-exit.c:3042
2557#, c-format 2548#, c-format
2558msgid "Packet from unknown protocol %u received. Ignored.\n" 2549msgid "Packet from unknown protocol %u received. Ignored.\n"
2559msgstr "" 2550msgstr ""
2560 2551
2561#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253 2552#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
2562#, c-format 2553#, c-format
2563msgid "Option `%s' for domain `%s' is not formatted correctly!\n" 2554msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
2564msgstr "" 2555msgstr ""
2565 2556
2566#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275 2557#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
2567#, c-format 2558#, c-format
2568msgid "`%s' is not a valid port number (for domain `%s')!" 2559msgid "`%s' is not a valid port number (for domain `%s')!"
2569msgstr "" 2560msgstr ""
2570 2561
2571#: src/exit/gnunet-daemon-exit.c:3316 2562#: src/exit/gnunet-daemon-exit.c:3318
2572#, c-format 2563#, c-format
2573msgid "No addresses found for hostname `%s' of service `%s'!\n" 2564msgid "No addresses found for hostname `%s' of service `%s'!\n"
2574msgstr "" 2565msgstr ""
2575 2566
2576#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343 2567#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
2577#, c-format 2568#, c-format
2578msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n" 2569msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
2579msgstr "" 2570msgstr ""
2580 2571
2581#: src/exit/gnunet-daemon-exit.c:3355 2572#: src/exit/gnunet-daemon-exit.c:3357
2582#, c-format 2573#, c-format
2583msgid "No IP addresses found for hostname `%s' of service `%s'!\n" 2574msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
2584msgstr "" 2575msgstr ""
2585 2576
2586#: src/exit/gnunet-daemon-exit.c:3499 2577#: src/exit/gnunet-daemon-exit.c:3501
2587msgid "" 2578msgid ""
2588"This system does not support IPv4, will disable IPv4 functions despite them " 2579"This system does not support IPv4, will disable IPv4 functions despite them "
2589"being enabled in the configuration\n" 2580"being enabled in the configuration\n"
2590msgstr "" 2581msgstr ""
2591 2582
2592#: src/exit/gnunet-daemon-exit.c:3507 2583#: src/exit/gnunet-daemon-exit.c:3509
2593msgid "" 2584msgid ""
2594"This system does not support IPv6, will disable IPv6 functions despite them " 2585"This system does not support IPv6, will disable IPv6 functions despite them "
2595"being enabled in the configuration\n" 2586"being enabled in the configuration\n"
2596msgstr "" 2587msgstr ""
2597 2588
2598#: src/exit/gnunet-daemon-exit.c:3514 2589#: src/exit/gnunet-daemon-exit.c:3516
2599msgid "" 2590msgid ""
2600"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use " 2591"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
2601"ENABLE_IPv4=YES\n" 2592"ENABLE_IPv4=YES\n"
2602msgstr "" 2593msgstr ""
2603 2594
2604#: src/exit/gnunet-daemon-exit.c:3520 2595#: src/exit/gnunet-daemon-exit.c:3522
2605msgid "" 2596msgid ""
2606"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use " 2597"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
2607"ENABLE_IPv6=YES\n" 2598"ENABLE_IPv6=YES\n"
2608msgstr "" 2599msgstr ""
2609 2600
2610#: src/exit/gnunet-daemon-exit.c:3688 2601#: src/exit/gnunet-daemon-exit.c:3690
2611msgid "Must be a number" 2602msgid "Must be a number"
2612msgstr "Doit être un nombre" 2603msgstr "Doit être un nombre"
2613 2604
2614#: src/exit/gnunet-daemon-exit.c:3803 2605#: src/exit/gnunet-daemon-exit.c:3805
2615#, c-format 2606#, c-format
2616msgid "`%s' must be installed SUID, EXIT will not work\n" 2607msgid "`%s' must be installed SUID, EXIT will not work\n"
2617msgstr "" 2608msgstr ""
2618 2609
2619#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202 2610#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
2620msgid "No useful service enabled. Exiting.\n" 2611msgid "No useful service enabled. Exiting.\n"
2621msgstr "" 2612msgstr ""
2622 2613
2623#: src/exit/gnunet-daemon-exit.c:3964 2614#: src/exit/gnunet-daemon-exit.c:3966
2624msgid "Daemon to run to provide an IP exit node for the VPN" 2615msgid "Daemon to run to provide an IP exit node for the VPN"
2625msgstr "" 2616msgstr ""
2626 2617
2627#: src/fragmentation/defragmentation.c:273 2618#: src/fragmentation/defragmentation.c:275
2628msgid "# acknowledgements sent for fragment" 2619msgid "# acknowledgements sent for fragment"
2629msgstr "" 2620msgstr ""
2630 2621
2631#: src/fragmentation/defragmentation.c:466 2622#: src/fragmentation/defragmentation.c:468
2632#: src/transport/plugin_transport_wlan.c:1552 2623#: src/transport/plugin_transport_wlan.c:1554
2633msgid "# fragments received" 2624msgid "# fragments received"
2634msgstr "" 2625msgstr ""
2635 2626
2636#: src/fragmentation/defragmentation.c:536 2627#: src/fragmentation/defragmentation.c:538
2637msgid "# duplicate fragments received" 2628msgid "# duplicate fragments received"
2638msgstr "" 2629msgstr ""
2639 2630
2640#: src/fragmentation/defragmentation.c:554 2631#: src/fragmentation/defragmentation.c:556
2641msgid "# messages defragmented" 2632msgid "# messages defragmented"
2642msgstr "" 2633msgstr ""
2643 2634
2644#: src/fragmentation/fragmentation.c:238 2635#: src/fragmentation/fragmentation.c:240
2645msgid "# fragments transmitted" 2636msgid "# fragments transmitted"
2646msgstr "" 2637msgstr ""
2647 2638
2648#: src/fragmentation/fragmentation.c:243 2639#: src/fragmentation/fragmentation.c:245
2649msgid "# fragments retransmitted" 2640msgid "# fragments retransmitted"
2650msgstr "" 2641msgstr ""
2651 2642
2652#: src/fragmentation/fragmentation.c:276 2643#: src/fragmentation/fragmentation.c:278
2653msgid "# fragments wrap arounds" 2644msgid "# fragments wrap arounds"
2654msgstr "" 2645msgstr ""
2655 2646
2656#: src/fragmentation/fragmentation.c:323 2647#: src/fragmentation/fragmentation.c:325
2657msgid "# messages fragmented" 2648msgid "# messages fragmented"
2658msgstr "" 2649msgstr ""
2659 2650
2660#: src/fragmentation/fragmentation.c:329 2651#: src/fragmentation/fragmentation.c:331
2661msgid "# total size of fragmented messages" 2652msgid "# total size of fragmented messages"
2662msgstr "" 2653msgstr ""
2663 2654
2664#: src/fragmentation/fragmentation.c:454 2655#: src/fragmentation/fragmentation.c:456
2665msgid "# fragment acknowledgements received" 2656msgid "# fragment acknowledgements received"
2666msgstr "" 2657msgstr ""
2667 2658
2668#: src/fragmentation/fragmentation.c:461 2659#: src/fragmentation/fragmentation.c:463
2669msgid "# bits removed from fragmentation ACKs" 2660msgid "# bits removed from fragmentation ACKs"
2670msgstr "" 2661msgstr ""
2671 2662
2672#: src/fragmentation/fragmentation.c:485 2663#: src/fragmentation/fragmentation.c:487
2673msgid "# fragmentation transmissions completed" 2664msgid "# fragmentation transmissions completed"
2674msgstr "" 2665msgstr ""
2675 2666
2676#: src/fs/fs_api.c:497 2667#: src/fs/fs_api.c:499
2677#, c-format 2668#, c-format
2678msgid "Could not open file `%s': %s" 2669msgid "Could not open file `%s': %s"
2679msgstr "" 2670msgstr ""
2680 2671
2681#: src/fs/fs_api.c:508 2672#: src/fs/fs_api.c:510
2682#, c-format 2673#, c-format
2683msgid "Could not read file `%s': %s" 2674msgid "Could not read file `%s': %s"
2684msgstr "" 2675msgstr ""
2685 2676
2686#: src/fs/fs_api.c:516 2677#: src/fs/fs_api.c:518
2687#, c-format 2678#, c-format
2688msgid "Short read reading from file `%s'!" 2679msgid "Short read reading from file `%s'!"
2689msgstr "" 2680msgstr ""
2690 2681
2691#: src/fs/fs_api.c:1124 2682#: src/fs/fs_api.c:1126
2692#, c-format 2683#, c-format
2693msgid "Failed to resume publishing information `%s': %s\n" 2684msgid "Failed to resume publishing information `%s': %s\n"
2694msgstr "" 2685msgstr ""
2695 2686
2696#: src/fs/fs_api.c:1644 2687#: src/fs/fs_api.c:1646
2697#, c-format 2688#, c-format
2698msgid "Failure while resuming publishing operation `%s': %s\n" 2689msgid "Failure while resuming publishing operation `%s': %s\n"
2699msgstr "" 2690msgstr ""
2700 2691
2701#: src/fs/fs_api.c:1660 2692#: src/fs/fs_api.c:1662
2702#, c-format 2693#, c-format
2703msgid "Failed to resume publishing operation `%s': %s\n" 2694msgid "Failed to resume publishing operation `%s': %s\n"
2704msgstr "" 2695msgstr ""
2705 2696
2706#: src/fs/fs_api.c:2320 2697#: src/fs/fs_api.c:2322
2707#, c-format 2698#, c-format
2708msgid "Failure while resuming unindexing operation `%s': %s\n" 2699msgid "Failure while resuming unindexing operation `%s': %s\n"
2709msgstr "" 2700msgstr ""
2710 2701
2711#: src/fs/fs_api.c:2330 2702#: src/fs/fs_api.c:2332
2712#, c-format 2703#, c-format
2713msgid "Failed to resume unindexing operation `%s': %s\n" 2704msgid "Failed to resume unindexing operation `%s': %s\n"
2714msgstr "" 2705msgstr ""
2715 2706
2716#: src/fs/fs_api.c:2458 src/fs/fs_api.c:2704 2707#: src/fs/fs_api.c:2460 src/fs/fs_api.c:2706
2717#, c-format 2708#, c-format
2718msgid "Failed to resume sub-download `%s': %s\n" 2709msgid "Failed to resume sub-download `%s': %s\n"
2719msgstr "" 2710msgstr ""
2720 2711
2721#: src/fs/fs_api.c:2476 2712#: src/fs/fs_api.c:2478
2722#, c-format 2713#, c-format
2723msgid "Failed to resume sub-search `%s': %s\n" 2714msgid "Failed to resume sub-search `%s': %s\n"
2724msgstr "" 2715msgstr ""
2725 2716
2726#: src/fs/fs_api.c:2491 src/fs/fs_api.c:2510 src/fs/fs_api.c:3014 2717#: src/fs/fs_api.c:2493 src/fs/fs_api.c:2512 src/fs/fs_api.c:3016
2727#, c-format 2718#, c-format
2728msgid "Failure while resuming search operation `%s': %s\n" 2719msgid "Failure while resuming search operation `%s': %s\n"
2729msgstr "" 2720msgstr ""
2730 2721
2731#: src/fs/fs_api.c:2694 2722#: src/fs/fs_api.c:2696
2732#, c-format 2723#, c-format
2733msgid "Failed to resume sub-download `%s': could not open file `%s'\n" 2724msgid "Failed to resume sub-download `%s': could not open file `%s'\n"
2734msgstr "" 2725msgstr ""
2735 2726
2736#: src/fs/fs_api.c:2957 2727#: src/fs/fs_api.c:2959
2737msgid "Could not resume running search, will resume as paused search\n" 2728msgid "Could not resume running search, will resume as paused search\n"
2738msgstr "" 2729msgstr ""
2739 2730
2740#: src/fs/fs_api.c:3052 2731#: src/fs/fs_api.c:3054
2741#, c-format 2732#, c-format
2742msgid "Failure while resuming download operation `%s': %s\n" 2733msgid "Failure while resuming download operation `%s': %s\n"
2743msgstr "" 2734msgstr ""
2744 2735
2745#: src/fs/fs_directory.c:211 2736#: src/fs/fs_directory.c:213
2746msgid "MAGIC mismatch. This is not a GNUnet directory.\n" 2737msgid "MAGIC mismatch. This is not a GNUnet directory.\n"
2747msgstr "" 2738msgstr ""
2748 2739
2749#: src/fs/fs_download.c:308 2740#: src/fs/fs_download.c:310
2750msgid "" 2741msgid ""
2751"Recursive downloads of directories larger than 4 GB are not supported on 32-" 2742"Recursive downloads of directories larger than 4 GB are not supported on 32-"
2752"bit systems\n" 2743"bit systems\n"
2753msgstr "" 2744msgstr ""
2754 2745
2755#: src/fs/fs_download.c:333 2746#: src/fs/fs_download.c:335
2756msgid "Directory too large for system address space\n" 2747msgid "Directory too large for system address space\n"
2757msgstr "" 2748msgstr ""
2758 2749
2759#: src/fs/fs_download.c:345 2750#: src/fs/fs_download.c:347
2760#, c-format 2751#, c-format
2761msgid "" 2752msgid ""
2762"Failed to access full directroy contents of `%s' for recursive download\n" 2753"Failed to access full directroy contents of `%s' for recursive download\n"
2763msgstr "" 2754msgstr ""
2764 2755
2765#: src/fs/fs_download.c:532 src/fs/fs_download.c:544 2756#: src/fs/fs_download.c:534 src/fs/fs_download.c:546
2766#, c-format 2757#, c-format
2767msgid "Failed to open file `%s' for writing" 2758msgid "Failed to open file `%s' for writing"
2768msgstr "" 2759msgstr ""
2769 2760
2770#: src/fs/fs_download.c:954 2761#: src/fs/fs_download.c:956
2771#, c-format 2762#, c-format
2772msgid "Failed to create directory for recursive download of `%s'\n" 2763msgid "Failed to create directory for recursive download of `%s'\n"
2773msgstr "" 2764msgstr ""
2774 2765
2775#: src/fs/fs_download.c:1045 2766#: src/fs/fs_download.c:1047
2776#, c-format 2767#, c-format
2777msgid "" 2768msgid ""
2778"Internal error or bogus download URI (expected %u bytes at depth %u and " 2769"Internal error or bogus download URI (expected %u bytes at depth %u and "
2779"offset %llu/%llu, got %u bytes)" 2770"offset %llu/%llu, got %u bytes)"
2780msgstr "" 2771msgstr ""
2781 2772
2782#: src/fs/fs_download.c:1073 2773#: src/fs/fs_download.c:1075
2783msgid "internal error decrypting content" 2774msgid "internal error decrypting content"
2784msgstr "" 2775msgstr ""
2785 2776
2786#: src/fs/fs_download.c:1097 2777#: src/fs/fs_download.c:1099
2787#, c-format 2778#, c-format
2788msgid "Download failed: could not open file `%s': %s" 2779msgid "Download failed: could not open file `%s': %s"
2789msgstr "" 2780msgstr ""
2790 2781
2791#: src/fs/fs_download.c:1109 2782#: src/fs/fs_download.c:1111
2792#, c-format 2783#, c-format
2793msgid "Failed to seek to offset %llu in file `%s': %s" 2784msgid "Failed to seek to offset %llu in file `%s': %s"
2794msgstr "" 2785msgstr ""
2795 2786
2796#: src/fs/fs_download.c:1118 2787#: src/fs/fs_download.c:1120
2797#, c-format 2788#, c-format
2798msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s" 2789msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s"
2799msgstr "" 2790msgstr ""
2800 2791
2801#: src/fs/fs_download.c:1218 2792#: src/fs/fs_download.c:1220
2802msgid "internal error decoding tree" 2793msgid "internal error decoding tree"
2803msgstr "" 2794msgstr ""
2804 2795
2805#: src/fs/fs_download.c:1883 2796#: src/fs/fs_download.c:1885
2806msgid "Invalid URI" 2797msgid "Invalid URI"
2807msgstr "URI invalide" 2798msgstr "URI invalide"
2808 2799
2809#: src/fs/fs_getopt.c:224 2800#: src/fs/fs_getopt.c:235
2810#, c-format 2801#, c-format
2811msgid "" 2802msgid ""
2812"Unknown metadata type in metadata option `%s'. Using metadata type " 2803"Unknown metadata type in metadata option `%s'. Using metadata type "
2813"`unknown' instead.\n" 2804"`unknown' instead.\n"
2814msgstr "" 2805msgstr ""
2815 2806
2816#: src/fs/fs_list_indexed.c:150 2807#: src/fs/fs_list_indexed.c:152
2817#, fuzzy, c-format 2808#, fuzzy, c-format
2818msgid "Failed to receive response from `%s' service.\n" 2809msgid "Failed to receive response from `%s' service.\n"
2819msgstr "Dernier message reçu de %s\n" 2810msgstr "Dernier message reçu de %s\n"
2820 2811
2821#: src/fs/fs_list_indexed.c:194 2812#: src/fs/fs_list_indexed.c:196
2822#, c-format 2813#, c-format
2823msgid "Failed to not connect to `%s' service.\n" 2814msgid "Failed to not connect to `%s' service.\n"
2824msgstr "" 2815msgstr ""
2825 2816
2826#: src/fs/fs_misc.c:126 2817#: src/fs/fs_misc.c:128
2827#, c-format 2818#, c-format
2828msgid "Did not find mime type `%s' in extension list.\n" 2819msgid "Did not find mime type `%s' in extension list.\n"
2829msgstr "" 2820msgstr ""
2830 2821
2831#: src/fs/fs_namespace.c:205 2822#: src/fs/fs_namespace.c:207
2832#, c-format 2823#, c-format
2833msgid "Failed to open `%s' for writing: %s\n" 2824msgid "Failed to open `%s' for writing: %s\n"
2834msgstr "" 2825msgstr ""
2835 2826
2836#: src/fs/fs_namespace.c:230 2827#: src/fs/fs_namespace.c:232
2837#, c-format 2828#, c-format
2838msgid "Failed to write `%s': %s\n" 2829msgid "Failed to write `%s': %s\n"
2839msgstr "" 2830msgstr ""
2840 2831
2841#: src/fs/fs_namespace.c:322 2832#: src/fs/fs_namespace.c:324
2842#, c-format 2833#, c-format
2843msgid "Failed to read `%s': %s\n" 2834msgid "Failed to read `%s': %s\n"
2844msgstr "" 2835msgstr ""
2845 2836
2846#: src/fs/fs_namespace.c:468 2837#: src/fs/fs_namespace.c:470
2847msgid "Failed to connect to datastore." 2838msgid "Failed to connect to datastore."
2848msgstr "" 2839msgstr ""
2849 2840
2850#: src/fs/fs_publish.c:125 src/fs/fs_publish.c:436 2841#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:438
2851#, c-format 2842#, c-format
2852msgid "Publishing failed: %s" 2843msgid "Publishing failed: %s"
2853msgstr "" 2844msgstr ""
2854 2845
2855#: src/fs/fs_publish.c:722 src/fs/fs_publish.c:776 src/fs/fs_publish.c:821 2846#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
2856#: src/fs/fs_publish.c:842 src/fs/fs_publish.c:872 src/fs/fs_publish.c:1138 2847#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
2857#, c-format 2848#, c-format
2858msgid "Can not index file `%s': %s. Will try to insert instead.\n" 2849msgid "Can not index file `%s': %s. Will try to insert instead.\n"
2859msgstr "" 2850msgstr ""
2860 2851
2861#: src/fs/fs_publish.c:778 2852#: src/fs/fs_publish.c:780
2862msgid "error on index-start request to `fs' service" 2853msgid "error on index-start request to `fs' service"
2863msgstr "" 2854msgstr ""
2864 2855
2865#: src/fs/fs_publish.c:823 2856#: src/fs/fs_publish.c:825
2866msgid "failed to compute hash" 2857msgid "failed to compute hash"
2867msgstr "" 2858msgstr ""
2868 2859
2869#: src/fs/fs_publish.c:843 2860#: src/fs/fs_publish.c:845
2870msgid "filename too long" 2861msgid "filename too long"
2871msgstr "" 2862msgstr ""
2872 2863
2873#: src/fs/fs_publish.c:874 2864#: src/fs/fs_publish.c:876
2874msgid "could not connect to `fs' service" 2865msgid "could not connect to `fs' service"
2875msgstr "" 2866msgstr ""
2876 2867
2877#: src/fs/fs_publish.c:900 2868#: src/fs/fs_publish.c:902
2878#, c-format 2869#, c-format
2879msgid "Failed to get file identifiers for `%s'\n" 2870msgid "Failed to get file identifiers for `%s'\n"
2880msgstr "" 2871msgstr ""
2881 2872
2882#: src/fs/fs_publish.c:989 src/fs/fs_publish.c:1025 2873#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
2883msgid "Can not create LOC URI. Will continue with CHK instead.\n" 2874msgid "Can not create LOC URI. Will continue with CHK instead.\n"
2884msgstr "" 2875msgstr ""
2885 2876
2886#: src/fs/fs_publish.c:1092 2877#: src/fs/fs_publish.c:1094
2887#, c-format 2878#, c-format
2888msgid "Recursive upload failed at `%s': %s" 2879msgid "Recursive upload failed at `%s': %s"
2889msgstr "" 2880msgstr ""
2890 2881
2891#: src/fs/fs_publish.c:1100 2882#: src/fs/fs_publish.c:1102
2892#, c-format 2883#, c-format
2893msgid "Recursive upload failed: %s" 2884msgid "Recursive upload failed: %s"
2894msgstr "" 2885msgstr ""
2895 2886
2896#: src/fs/fs_publish.c:1140 2887#: src/fs/fs_publish.c:1142
2897msgid "needs to be an actual file" 2888msgid "needs to be an actual file"
2898msgstr "" 2889msgstr ""
2899 2890
2900#: src/fs/fs_publish.c:1379 2891#: src/fs/fs_publish.c:1381
2901#, fuzzy, c-format 2892#, fuzzy, c-format
2902msgid "Datastore failure: %s" 2893msgid "Datastore failure: %s"
2903msgstr "pa_stream_new() échoué : %s\n" 2894msgstr "pa_stream_new() échoué : %s\n"
2904 2895
2905#: src/fs/fs_publish.c:1470 2896#: src/fs/fs_publish.c:1472
2906#, c-format 2897#, c-format
2907msgid "Reserving space for %u entries and %llu bytes for publication\n" 2898msgid "Reserving space for %u entries and %llu bytes for publication\n"
2908msgstr "" 2899msgstr ""
2909 2900
2910#: src/fs/fs_publish_ksk.c:218 2901#: src/fs/fs_publish_ksk.c:220
2911msgid "Could not connect to datastore." 2902msgid "Could not connect to datastore."
2912msgstr "" 2903msgstr ""
2913 2904
2914#: src/fs/fs_publish_ublock.c:239 2905#: src/fs/fs_publish_ublock.c:241
2915msgid "Internal error." 2906msgid "Internal error."
2916msgstr "Erreur interne." 2907msgstr "Erreur interne."
2917 2908
2918#: src/fs/fs_search.c:820 src/fs/fs_search.c:890 2909#: src/fs/fs_search.c:822 src/fs/fs_search.c:892
2919#, c-format 2910#, c-format
2920msgid "Failed to parse URI `%s': %s\n" 2911msgid "Failed to parse URI `%s': %s\n"
2921msgstr "" 2912msgstr ""
2922 2913
2923#: src/fs/fs_search.c:977 2914#: src/fs/fs_search.c:979
2924#, c-format 2915#, c-format
2925msgid "Got result with unknown block type `%d', ignoring" 2916msgid "Got result with unknown block type `%d', ignoring"
2926msgstr "" 2917msgstr ""
2927 2918
2928#: src/fs/fs_unindex.c:61 2919#: src/fs/fs_unindex.c:63
2929msgid "Failed to find given position in file" 2920msgid "Failed to find given position in file"
2930msgstr "" 2921msgstr ""
2931 2922
2932#: src/fs/fs_unindex.c:66 2923#: src/fs/fs_unindex.c:68
2933msgid "Failed to read file" 2924msgid "Failed to read file"
2934msgstr "" 2925msgstr ""
2935 2926
2936#: src/fs/fs_unindex.c:273 2927#: src/fs/fs_unindex.c:275
2937msgid "Error communicating with `fs' service." 2928msgid "Error communicating with `fs' service."
2938msgstr "" 2929msgstr ""
2939 2930
2940#: src/fs/fs_unindex.c:324 2931#: src/fs/fs_unindex.c:326
2941msgid "Failed to connect to FS service for unindexing." 2932msgid "Failed to connect to FS service for unindexing."
2942msgstr "" 2933msgstr ""
2943 2934
2944#: src/fs/fs_unindex.c:374 src/fs/fs_unindex.c:386 2935#: src/fs/fs_unindex.c:376 src/fs/fs_unindex.c:388
2945msgid "Failed to get KSKs from directory scan." 2936msgid "Failed to get KSKs from directory scan."
2946msgstr "" 2937msgstr ""
2947 2938
2948#: src/fs/fs_unindex.c:382 2939#: src/fs/fs_unindex.c:384
2949#, c-format 2940#, c-format
2950msgid "Internal error scanning `%s'.\n" 2941msgid "Internal error scanning `%s'.\n"
2951msgstr "" 2942msgstr ""
2952 2943
2953#: src/fs/fs_unindex.c:441 2944#: src/fs/fs_unindex.c:443
2954#, c-format 2945#, c-format
2955msgid "Failed to remove UBlock: %s\n" 2946msgid "Failed to remove UBlock: %s\n"
2956msgstr "" 2947msgstr ""
2957 2948
2958#: src/fs/fs_unindex.c:586 src/fs/fs_unindex.c:650 2949#: src/fs/fs_unindex.c:588 src/fs/fs_unindex.c:652
2959msgid "Failed to connect to `datastore' service." 2950msgid "Failed to connect to `datastore' service."
2960msgstr "" 2951msgstr ""
2961 2952
2962#: src/fs/fs_unindex.c:663 2953#: src/fs/fs_unindex.c:665
2963msgid "Failed to open file for unindexing." 2954msgid "Failed to open file for unindexing."
2964msgstr "" 2955msgstr ""
2965 2956
2966#: src/fs/fs_unindex.c:702 2957#: src/fs/fs_unindex.c:704
2967msgid "Failed to compute hash of file." 2958msgid "Failed to compute hash of file."
2968msgstr "" 2959msgstr ""
2969 2960
2970#: src/fs/fs_uri.c:232 2961#: src/fs/fs_uri.c:234
2971#, no-c-format 2962#, no-c-format
2972msgid "Malformed KSK URI (`%' must be followed by HEX number)" 2963msgid "Malformed KSK URI (`%' must be followed by HEX number)"
2973msgstr "" 2964msgstr ""
2974 2965
2975#: src/fs/fs_uri.c:291 2966#: src/fs/fs_uri.c:293
2976msgid "Malformed KSK URI (must not begin or end with `+')" 2967msgid "Malformed KSK URI (must not begin or end with `+')"
2977msgstr "" 2968msgstr ""
2978 2969
2979#: src/fs/fs_uri.c:309 2970#: src/fs/fs_uri.c:311
2980msgid "Malformed KSK URI (`++' not allowed)" 2971msgid "Malformed KSK URI (`++' not allowed)"
2981msgstr "" 2972msgstr ""
2982 2973
2983#: src/fs/fs_uri.c:316 2974#: src/fs/fs_uri.c:318
2984msgid "Malformed KSK URI (quotes not balanced)" 2975msgid "Malformed KSK URI (quotes not balanced)"
2985msgstr "" 2976msgstr ""
2986 2977
2987#: src/fs/fs_uri.c:386 2978#: src/fs/fs_uri.c:388
2988msgid "Malformed SKS URI (wrong syntax)" 2979msgid "Malformed SKS URI (wrong syntax)"
2989msgstr "" 2980msgstr ""
2990 2981
2991#: src/fs/fs_uri.c:427 2982#: src/fs/fs_uri.c:429
2992msgid "Malformed CHK URI (wrong syntax)" 2983msgid "Malformed CHK URI (wrong syntax)"
2993msgstr "" 2984msgstr ""
2994 2985
2995#: src/fs/fs_uri.c:442 2986#: src/fs/fs_uri.c:444
2996msgid "Malformed CHK URI (failed to decode CHK)" 2987msgid "Malformed CHK URI (failed to decode CHK)"
2997msgstr "" 2988msgstr ""
2998 2989
2999#: src/fs/fs_uri.c:521 2990#: src/fs/fs_uri.c:523
3000msgid "LOC URI malformed (wrong syntax)" 2991msgid "LOC URI malformed (wrong syntax)"
3001msgstr "" 2992msgstr ""
3002 2993
3003#: src/fs/fs_uri.c:536 2994#: src/fs/fs_uri.c:538
3004msgid "LOC URI malformed (no CHK)" 2995msgid "LOC URI malformed (no CHK)"
3005msgstr "" 2996msgstr ""
3006 2997
3007#: src/fs/fs_uri.c:546 2998#: src/fs/fs_uri.c:548
3008msgid "LOC URI malformed (missing LOC)" 2999msgid "LOC URI malformed (missing LOC)"
3009msgstr "" 3000msgstr ""
3010 3001
3011#: src/fs/fs_uri.c:554 3002#: src/fs/fs_uri.c:556
3012msgid "LOC URI malformed (wrong syntax for public key)" 3003msgid "LOC URI malformed (wrong syntax for public key)"
3013msgstr "" 3004msgstr ""
3014 3005
3015#: src/fs/fs_uri.c:562 3006#: src/fs/fs_uri.c:564
3016msgid "LOC URI malformed (could not decode public key)" 3007msgid "LOC URI malformed (could not decode public key)"
3017msgstr "" 3008msgstr ""
3018 3009
3019#: src/fs/fs_uri.c:568 3010#: src/fs/fs_uri.c:570
3020msgid "LOC URI malformed (could not find signature)" 3011msgid "LOC URI malformed (could not find signature)"
3021msgstr "" 3012msgstr ""
3022 3013
3023#: src/fs/fs_uri.c:574 3014#: src/fs/fs_uri.c:576
3024msgid "LOC URI malformed (wrong syntax for signature)" 3015msgid "LOC URI malformed (wrong syntax for signature)"
3025msgstr "" 3016msgstr ""
3026 3017
3027#: src/fs/fs_uri.c:583 3018#: src/fs/fs_uri.c:585
3028msgid "LOC URI malformed (could not decode signature)" 3019msgid "LOC URI malformed (could not decode signature)"
3029msgstr "" 3020msgstr ""
3030 3021
3031#: src/fs/fs_uri.c:589 3022#: src/fs/fs_uri.c:591
3032msgid "LOC URI malformed (wrong syntax for expiration time)" 3023msgid "LOC URI malformed (wrong syntax for expiration time)"
3033msgstr "" 3024msgstr ""
3034 3025
3035#: src/fs/fs_uri.c:595 3026#: src/fs/fs_uri.c:597
3036msgid "LOC URI malformed (could not parse expiration time)" 3027msgid "LOC URI malformed (could not parse expiration time)"
3037msgstr "" 3028msgstr ""
3038 3029
3039#: src/fs/fs_uri.c:607 3030#: src/fs/fs_uri.c:609
3040msgid "LOC URI malformed (signature failed validation)" 3031msgid "LOC URI malformed (signature failed validation)"
3041msgstr "" 3032msgstr ""
3042 3033
3043#: src/fs/fs_uri.c:641 3034#: src/fs/fs_uri.c:643
3044#, fuzzy 3035#, fuzzy
3045msgid "invalid argument" 3036msgid "invalid argument"
3046msgstr "Argument invalide « %s »\n" 3037msgstr "Argument invalide « %s »\n"
3047 3038
3048#: src/fs/fs_uri.c:653 3039#: src/fs/fs_uri.c:655
3049msgid "Unrecognized URI type" 3040msgid "Unrecognized URI type"
3050msgstr "Type d’URI non reconnu" 3041msgstr "Type d’URI non reconnu"
3051 3042
3052#: src/fs/fs_uri.c:1057 src/fs/fs_uri.c:1084 3043#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
3053msgid "No keywords specified!\n" 3044msgid "No keywords specified!\n"
3054msgstr "" 3045msgstr ""
3055 3046
3056#: src/fs/fs_uri.c:1090 3047#: src/fs/fs_uri.c:1092
3057msgid "Number of double-quotes not balanced!\n" 3048msgid "Number of double-quotes not balanced!\n"
3058msgstr "" 3049msgstr ""
3059 3050
3060#: src/fs/gnunet-auto-share.c:230 3051#: src/fs/gnunet-auto-share.c:232
3061#, c-format 3052#, c-format
3062msgid "Failed to load state: %s\n" 3053msgid "Failed to load state: %s\n"
3063msgstr "" 3054msgstr ""
3064 3055
3065#: src/fs/gnunet-auto-share.c:283 src/fs/gnunet-auto-share.c:293 3056#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
3066#: src/fs/gnunet-auto-share.c:303 3057#: src/fs/gnunet-auto-share.c:305
3067#, c-format 3058#, c-format
3068msgid "Failed to save state to file %s\n" 3059msgid "Failed to save state to file %s\n"
3069msgstr "" 3060msgstr ""
3070 3061
3071#: src/fs/gnunet-auto-share.c:405 3062#: src/fs/gnunet-auto-share.c:407
3072#, c-format 3063#, c-format
3073msgid "Publication of `%s' done\n" 3064msgid "Publication of `%s' done\n"
3074msgstr "Publication de « %s » terminée\n" 3065msgstr "Publication de « %s » terminée\n"
3075 3066
3076#: src/fs/gnunet-auto-share.c:492 3067#: src/fs/gnunet-auto-share.c:494
3077#, c-format 3068#, c-format
3078msgid "Publishing `%s'\n" 3069msgid "Publishing `%s'\n"
3079msgstr "Publication de « %s »\n" 3070msgstr "Publication de « %s »\n"
3080 3071
3081#: src/fs/gnunet-auto-share.c:502 3072#: src/fs/gnunet-auto-share.c:504
3082#, c-format 3073#, c-format
3083msgid "Failed to run `%s'\n" 3074msgid "Failed to run `%s'\n"
3084msgstr "" 3075msgstr ""
3085 3076
3086#: src/fs/gnunet-auto-share.c:711 3077#: src/fs/gnunet-auto-share.c:713
3087#, c-format 3078#, c-format
3088msgid "" 3079msgid ""
3089"You must specify one and only one directory name for automatic publication.\n" 3080"You must specify one and only one directory name for automatic publication.\n"
3090msgstr "" 3081msgstr ""
3091 3082
3092#: src/fs/gnunet-auto-share.c:765 src/fs/gnunet-publish.c:898 3083#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
3093msgid "set the desired LEVEL of sender-anonymity" 3084msgid "set the desired LEVEL of sender-anonymity"
3094msgstr "" 3085msgstr ""
3095 3086
3096#: src/fs/gnunet-auto-share.c:770 src/fs/gnunet-publish.c:902 3087#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
3097msgid "disable adding the creation time to the metadata of the uploaded file" 3088msgid "disable adding the creation time to the metadata of the uploaded file"
3098msgstr "" 3089msgstr ""
3099 3090
3100#: src/fs/gnunet-auto-share.c:775 src/fs/gnunet-publish.c:907 3091#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
3101msgid "do not use libextractor to add keywords or metadata" 3092msgid "do not use libextractor to add keywords or metadata"
3102msgstr "" 3093msgstr ""
3103 3094
3104#: src/fs/gnunet-auto-share.c:781 src/fs/gnunet-publish.c:942 3095#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
3105msgid "specify the priority of the content" 3096msgid "specify the priority of the content"
3106msgstr "" 3097msgstr ""
3107 3098
3108#: src/fs/gnunet-auto-share.c:787 src/fs/gnunet-publish.c:954 3099#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
3109msgid "set the desired replication LEVEL" 3100msgid "set the desired replication LEVEL"
3110msgstr "" 3101msgstr ""
3111 3102
3112#: src/fs/gnunet-auto-share.c:811 3103#: src/fs/gnunet-auto-share.c:813
3113msgid "Automatically publish files from a directory on GNUnet" 3104msgid "Automatically publish files from a directory on GNUnet"
3114msgstr "" 3105msgstr ""
3115 3106
3116#: src/fs/gnunet-daemon-fsprofiler.c:646 3107#: src/fs/gnunet-daemon-fsprofiler.c:648
3117msgid "Daemon to use file-sharing to measure its performance." 3108msgid "Daemon to use file-sharing to measure its performance."
3118msgstr "" 3109msgstr ""
3119 3110
3120#: src/fs/gnunet-directory.c:51 3111#: src/fs/gnunet-directory.c:53
3121#, c-format 3112#, c-format
3122msgid "\t<original file embedded in %u bytes of meta data>\n" 3113msgid "\t<original file embedded in %u bytes of meta data>\n"
3123msgstr "" 3114msgstr ""
3124 3115
3125#: src/fs/gnunet-directory.c:103 3116#: src/fs/gnunet-directory.c:105
3126#, c-format 3117#, c-format
3127msgid "Directory `%s' meta data:\n" 3118msgid "Directory `%s' meta data:\n"
3128msgstr "" 3119msgstr ""
3129 3120
3130#: src/fs/gnunet-directory.c:106 3121#: src/fs/gnunet-directory.c:108
3131#, c-format 3122#, c-format
3132msgid "Directory `%s' contents:\n" 3123msgid "Directory `%s' contents:\n"
3133msgstr "" 3124msgstr ""
3134 3125
3135#: src/fs/gnunet-directory.c:141 3126#: src/fs/gnunet-directory.c:143
3136msgid "You must specify a filename to inspect.\n" 3127msgid "You must specify a filename to inspect.\n"
3137msgstr "" 3128msgstr ""
3138 3129
3139#: src/fs/gnunet-directory.c:154 3130#: src/fs/gnunet-directory.c:156
3140#, c-format 3131#, c-format
3141msgid "Failed to read directory `%s'\n" 3132msgid "Failed to read directory `%s'\n"
3142msgstr "" 3133msgstr ""
3143 3134
3144#: src/fs/gnunet-directory.c:163 3135#: src/fs/gnunet-directory.c:165
3145#, c-format 3136#, c-format
3146msgid "`%s' is not a GNUnet directory\n" 3137msgid "`%s' is not a GNUnet directory\n"
3147msgstr "" 3138msgstr ""
3148 3139
3149#: src/fs/gnunet-directory.c:192 3140#: src/fs/gnunet-directory.c:194
3150msgid "Display contents of a GNUnet directory" 3141msgid "Display contents of a GNUnet directory"
3151msgstr "" 3142msgstr ""
3152 3143
3153#: src/fs/gnunet-download.c:137 3144#: src/fs/gnunet-download.c:139
3154#, c-format 3145#, c-format
3155msgid "Starting download `%s'.\n" 3146msgid "Starting download `%s'.\n"
3156msgstr "" 3147msgstr ""
3157 3148
3158#: src/fs/gnunet-download.c:147 3149#: src/fs/gnunet-download.c:149
3159msgid "<unknown time>" 3150msgid "<unknown time>"
3160msgstr "" 3151msgstr ""
3161 3152
3162#: src/fs/gnunet-download.c:156 3153#: src/fs/gnunet-download.c:158
3163#, c-format 3154#, c-format
3164msgid "" 3155msgid ""
3165"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to " 3156"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to "
3166"download\n" 3157"download\n"
3167msgstr "" 3158msgstr ""
3168 3159
3169#: src/fs/gnunet-download.c:182 3160#: src/fs/gnunet-download.c:184
3170#, c-format 3161#, c-format
3171msgid "Error downloading: %s.\n" 3162msgid "Error downloading: %s.\n"
3172msgstr "" 3163msgstr ""
3173 3164
3174#: src/fs/gnunet-download.c:199 3165#: src/fs/gnunet-download.c:201
3175#, c-format 3166#, c-format
3176msgid "Downloading `%s' done (%s/s).\n" 3167msgid "Downloading `%s' done (%s/s).\n"
3177msgstr "" 3168msgstr ""
3178 3169
3179#: src/fs/gnunet-download.c:214 src/fs/gnunet-publish.c:293 3170#: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
3180#: src/fs/gnunet-search.c:210 src/fs/gnunet-unindex.c:105 3171#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
3181#, c-format 3172#, c-format
3182msgid "Unexpected status: %d\n" 3173msgid "Unexpected status: %d\n"
3183msgstr "" 3174msgstr ""
3184 3175
3185#: src/fs/gnunet-download.c:244 3176#: src/fs/gnunet-download.c:246
3186msgid "You need to specify a URI argument.\n" 3177msgid "You need to specify a URI argument.\n"
3187msgstr "" 3178msgstr ""
3188 3179
3189#: src/fs/gnunet-download.c:251 src/fs/gnunet-publish.c:724 3180#: src/fs/gnunet-download.c:253 src/fs/gnunet-publish.c:727
3190#, c-format 3181#, c-format
3191msgid "Failed to parse URI: %s\n" 3182msgid "Failed to parse URI: %s\n"
3192msgstr "" 3183msgstr ""
3193 3184
3194#: src/fs/gnunet-download.c:262 3185#: src/fs/gnunet-download.c:264
3195msgid "Only CHK or LOC URIs supported.\n" 3186msgid "Only CHK or LOC URIs supported.\n"
3196msgstr "" 3187msgstr ""
3197 3188
3198#: src/fs/gnunet-download.c:271 3189#: src/fs/gnunet-download.c:273
3199msgid "Target filename must be specified.\n" 3190msgid "Target filename must be specified.\n"
3200msgstr "" 3191msgstr ""
3201 3192
3202#: src/fs/gnunet-download.c:289 src/fs/gnunet-publish.c:868 3193#: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
3203#: src/fs/gnunet-search.c:268 src/fs/gnunet-unindex.c:137 3194#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
3204#, c-format 3195#, c-format
3205msgid "Could not initialize `%s' subsystem.\n" 3196msgid "Could not initialize `%s' subsystem.\n"
3206msgstr "" 3197msgstr ""
3207 3198
3208#: src/fs/gnunet-download.c:337 src/fs/gnunet-search.c:311 3199#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
3209msgid "set the desired LEVEL of receiver-anonymity" 3200msgid "set the desired LEVEL of receiver-anonymity"
3210msgstr "" 3201msgstr ""
3211 3202
3212#: src/fs/gnunet-download.c:342 3203#: src/fs/gnunet-download.c:344
3213msgid "delete incomplete downloads (when aborted with CTRL-C)" 3204msgid "delete incomplete downloads (when aborted with CTRL-C)"
3214msgstr "" 3205msgstr ""
3215 3206
3216#: src/fs/gnunet-download.c:347 src/fs/gnunet-search.c:317 3207#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
3217msgid "only search the local peer (no P2P network search)" 3208msgid "only search the local peer (no P2P network search)"
3218msgstr "" 3209msgstr ""
3219 3210
3220#: src/fs/gnunet-download.c:352 3211#: src/fs/gnunet-download.c:354
3221msgid "write the file to FILENAME" 3212msgid "write the file to FILENAME"
3222msgstr "" 3213msgstr ""
3223 3214
3224#: src/fs/gnunet-download.c:357 3215#: src/fs/gnunet-download.c:359
3225msgid "set the maximum number of parallel downloads that is allowed" 3216msgid "set the maximum number of parallel downloads that is allowed"
3226msgstr "" 3217msgstr ""
3227 3218
3228#: src/fs/gnunet-download.c:362 3219#: src/fs/gnunet-download.c:364
3229msgid "set the maximum number of parallel requests for blocks that is allowed" 3220msgid "set the maximum number of parallel requests for blocks that is allowed"
3230msgstr "" 3221msgstr ""
3231 3222
3232#: src/fs/gnunet-download.c:366 3223#: src/fs/gnunet-download.c:368
3233msgid "download a GNUnet directory recursively" 3224msgid "download a GNUnet directory recursively"
3234msgstr "" 3225msgstr ""
3235 3226
3236#: src/fs/gnunet-download.c:384 3227#: src/fs/gnunet-download.c:386
3237msgid "" 3228msgid ""
3238"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/" 3229"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
3239"chk/...)" 3230"chk/...)"
3240msgstr "" 3231msgstr ""
3241 3232
3242#: src/fs/gnunet-fs.c:117 3233#: src/fs/gnunet-fs.c:119
3243msgid "print a list of all indexed files" 3234msgid "print a list of all indexed files"
3244msgstr "" 3235msgstr ""
3245 3236
3246#: src/fs/gnunet-fs.c:128 3237#: src/fs/gnunet-fs.c:130
3247msgid "Special file-sharing operations" 3238msgid "Special file-sharing operations"
3248msgstr "" 3239msgstr ""
3249 3240
3250#: src/fs/gnunet-fs-profiler.c:209 3241#: src/fs/gnunet-fs-profiler.c:211
3251msgid "run the experiment with COUNT peers" 3242msgid "run the experiment with COUNT peers"
3252msgstr "" 3243msgstr ""
3253 3244
3254#: src/fs/gnunet-fs-profiler.c:215 3245#: src/fs/gnunet-fs-profiler.c:217
3255msgid "specifies name of a file with the HOSTS the testbed should use" 3246msgid "specifies name of a file with the HOSTS the testbed should use"
3256msgstr "" 3247msgstr ""
3257 3248
3258#: src/fs/gnunet-fs-profiler.c:221 3249#: src/fs/gnunet-fs-profiler.c:223
3259msgid "automatically terminate experiment after DELAY" 3250msgid "automatically terminate experiment after DELAY"
3260msgstr "" 3251msgstr ""
3261 3252
3262#: src/fs/gnunet-fs-profiler.c:231 3253#: src/fs/gnunet-fs-profiler.c:233
3263msgid "run a testbed to measure file-sharing performance" 3254msgid "run a testbed to measure file-sharing performance"
3264msgstr "" 3255msgstr ""
3265 3256
3266#: src/fs/gnunet-publish.c:217 src/fs/gnunet-publish.c:229 3257#: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
3267#, c-format 3258#, c-format
3268msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" 3259msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
3269msgstr "" 3260msgstr ""
3270 3261
3271#: src/fs/gnunet-publish.c:237 3262#: src/fs/gnunet-publish.c:239
3272#, c-format 3263#, c-format
3273msgid "Error publishing: %s.\n" 3264msgid "Error publishing: %s.\n"
3274msgstr "" 3265msgstr ""
3275 3266
3276#: src/fs/gnunet-publish.c:244 3267#: src/fs/gnunet-publish.c:246
3277#, c-format 3268#, c-format
3278msgid "Publishing `%s' done.\n" 3269msgid "Publishing `%s' done.\n"
3279msgstr "Publication de « %s » terminée.\n" 3270msgstr "Publication de « %s » terminée.\n"
3280 3271
3281#: src/fs/gnunet-publish.c:249 3272#: src/fs/gnunet-publish.c:251
3282#, c-format 3273#, c-format
3283msgid "URI is `%s'.\n" 3274msgid "URI is `%s'.\n"
3284msgstr "L’URI est « %s ».\n" 3275msgstr "L’URI est « %s ».\n"
3285 3276
3286#: src/fs/gnunet-publish.c:257 3277#: src/fs/gnunet-publish.c:259
3287#, fuzzy, c-format 3278#, fuzzy, c-format
3288msgid "Namespace URI is `%s'.\n" 3279msgid "Namespace URI is `%s'.\n"
3289msgstr "L’URI est « %s ».\n" 3280msgstr "L’URI est « %s ».\n"
3290 3281
3291#: src/fs/gnunet-publish.c:273 3282#: src/fs/gnunet-publish.c:275
3292msgid "Starting cleanup after abort\n" 3283msgid "Starting cleanup after abort\n"
3293msgstr "" 3284msgstr ""
3294 3285
3295#: src/fs/gnunet-publish.c:280 3286#: src/fs/gnunet-publish.c:282
3296msgid "Cleanup after abort completed.\n" 3287msgid "Cleanup after abort completed.\n"
3297msgstr "" 3288msgstr ""
3298 3289
3299#: src/fs/gnunet-publish.c:286 3290#: src/fs/gnunet-publish.c:288
3300msgid "Cleanup after abort failed.\n" 3291msgid "Cleanup after abort failed.\n"
3301msgstr "" 3292msgstr ""
3302 3293
3303#: src/fs/gnunet-publish.c:428 3294#: src/fs/gnunet-publish.c:430
3304#, c-format 3295#, c-format
3305msgid "Meta data for file `%s' (%s)\n" 3296msgid "Meta data for file `%s' (%s)\n"
3306msgstr "" 3297msgstr ""
3307 3298
3308#: src/fs/gnunet-publish.c:433 3299#: src/fs/gnunet-publish.c:435
3309#, c-format 3300#, c-format
3310msgid "Keywords for file `%s' (%s)\n" 3301msgid "Keywords for file `%s' (%s)\n"
3311msgstr "" 3302msgstr ""
3312 3303
3313#: src/fs/gnunet-publish.c:587 3304#: src/fs/gnunet-publish.c:590
3314msgid "Could not publish\n" 3305msgid "Could not publish\n"
3315msgstr "" 3306msgstr ""
3316 3307
3317#: src/fs/gnunet-publish.c:612 3308#: src/fs/gnunet-publish.c:615
3318msgid "Could not start publishing.\n" 3309msgid "Could not start publishing.\n"
3319msgstr "" 3310msgstr ""
3320 3311
3321#: src/fs/gnunet-publish.c:646 3312#: src/fs/gnunet-publish.c:649
3322#, c-format 3313#, c-format
3323msgid "Scanning directory `%s'.\n" 3314msgid "Scanning directory `%s'.\n"
3324msgstr "" 3315msgstr ""
3325 3316
3326#: src/fs/gnunet-publish.c:650 3317#: src/fs/gnunet-publish.c:653
3327#, c-format 3318#, c-format
3328msgid "Scanning file `%s'.\n" 3319msgid "Scanning file `%s'.\n"
3329msgstr "" 3320msgstr ""
3330 3321
3331#: src/fs/gnunet-publish.c:656 3322#: src/fs/gnunet-publish.c:659
3332#, c-format 3323#, c-format
3333msgid "There was trouble processing file `%s', skipping it.\n" 3324msgid "There was trouble processing file `%s', skipping it.\n"
3334msgstr "" 3325msgstr ""
3335 3326
3336#: src/fs/gnunet-publish.c:663 3327#: src/fs/gnunet-publish.c:666
3337msgid "Preprocessing complete.\n" 3328msgid "Preprocessing complete.\n"
3338msgstr "" 3329msgstr ""
3339 3330
3340#: src/fs/gnunet-publish.c:668 3331#: src/fs/gnunet-publish.c:671
3341#, c-format 3332#, c-format
3342msgid "Extracting meta data from file `%s' complete.\n" 3333msgid "Extracting meta data from file `%s' complete.\n"
3343msgstr "" 3334msgstr ""
3344 3335
3345#: src/fs/gnunet-publish.c:675 3336#: src/fs/gnunet-publish.c:678
3346msgid "Meta data extraction has finished.\n" 3337msgid "Meta data extraction has finished.\n"
3347msgstr "" 3338msgstr ""
3348 3339
3349#: src/fs/gnunet-publish.c:684 3340#: src/fs/gnunet-publish.c:687
3350msgid "Internal error scanning directory.\n" 3341msgid "Internal error scanning directory.\n"
3351msgstr "" 3342msgstr ""
3352 3343
3353#: src/fs/gnunet-publish.c:712 3344#: src/fs/gnunet-publish.c:715
3354#, c-format 3345#, c-format
3355msgid "Selected pseudonym `%s' unknown\n" 3346msgid "Selected pseudonym `%s' unknown\n"
3356msgstr "" 3347msgstr ""
3357 3348
3358#: src/fs/gnunet-publish.c:745 3349#: src/fs/gnunet-publish.c:749
3359#, c-format 3350#, c-format
3360msgid "Failed to access `%s': %s\n" 3351msgid "Failed to access `%s': %s\n"
3361msgstr "" 3352msgstr ""
3362 3353
3363#: src/fs/gnunet-publish.c:759 3354#: src/fs/gnunet-publish.c:763
3364msgid "" 3355msgid ""
3365"Failed to start meta directory scanner. Is gnunet-helper-publish-fs " 3356"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
3366"installed?\n" 3357"installed?\n"
3367msgstr "" 3358msgstr ""
3368 3359
3369#: src/fs/gnunet-publish.c:815 3360#: src/fs/gnunet-publish.c:819
3370#, c-format 3361#, c-format
3371msgid "Cannot extract metadata from a URI!\n" 3362msgid "Cannot extract metadata from a URI!\n"
3372msgstr "" 3363msgstr ""
3373 3364
3374#: src/fs/gnunet-publish.c:822 3365#: src/fs/gnunet-publish.c:826
3375#, c-format 3366#, c-format
3376msgid "You must specify one and only one filename for insertion.\n" 3367msgid "You must specify one and only one filename for insertion.\n"
3377msgstr "" 3368msgstr ""
3378 3369
3379#: src/fs/gnunet-publish.c:828 3370#: src/fs/gnunet-publish.c:832
3380#, c-format 3371#, c-format
3381msgid "You must NOT specify an URI and a filename.\n" 3372msgid "You must NOT specify an URI and a filename.\n"
3382msgstr "" 3373msgstr ""
3383 3374
3384#: src/fs/gnunet-publish.c:836 src/vpn/gnunet-vpn.c:208 3375#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:210
3385#, c-format 3376#, c-format
3386msgid "Option `%s' is required when using option `%s'.\n" 3377msgid "Option `%s' is required when using option `%s'.\n"
3387msgstr "" 3378msgstr ""
3388 3379
3389#: src/fs/gnunet-publish.c:847 src/fs/gnunet-publish.c:855 3380#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
3390#: src/transport/gnunet-transport.c:1280 src/transport/gnunet-transport.c:1307 3381#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
3391#, c-format 3382#, c-format
3392msgid "Option `%s' makes no sense without option `%s'.\n" 3383msgid "Option `%s' makes no sense without option `%s'.\n"
3393msgstr "" 3384msgstr ""
3394 3385
3395#: src/fs/gnunet-publish.c:911 3386#: src/fs/gnunet-publish.c:916
3396msgid "" 3387msgid ""
3397"print list of extracted keywords that would be used, but do not perform " 3388"print list of extracted keywords that would be used, but do not perform "
3398"upload" 3389"upload"
3399msgstr "" 3390msgstr ""
3400 3391
3401#: src/fs/gnunet-publish.c:917 3392#: src/fs/gnunet-publish.c:922
3402msgid "" 3393msgid ""
3403"add an additional keyword for the top-level file or directory (this option " 3394"add an additional keyword for the top-level file or directory (this option "
3404"can be specified multiple times)" 3395"can be specified multiple times)"
3405msgstr "" 3396msgstr ""
3406 3397
3407#: src/fs/gnunet-publish.c:923 3398#: src/fs/gnunet-publish.c:928
3408msgid "set the meta-data for the given TYPE to the given VALUE" 3399msgid "set the meta-data for the given TYPE to the given VALUE"
3409msgstr "" 3400msgstr ""
3410 3401
3411#: src/fs/gnunet-publish.c:928 3402#: src/fs/gnunet-publish.c:932
3412msgid "" 3403msgid ""
3413"do not index, perform full insertion (stores entire file in encrypted form " 3404"do not index, perform full insertion (stores entire file in encrypted form "
3414"in GNUnet database)" 3405"in GNUnet database)"
3415msgstr "" 3406msgstr ""
3416 3407
3417#: src/fs/gnunet-publish.c:935 3408#: src/fs/gnunet-publish.c:938
3418msgid "" 3409msgid ""
3419"specify ID of an updated version to be published in the future (for " 3410"specify ID of an updated version to be published in the future (for "
3420"namespace insertions only)" 3411"namespace insertions only)"
3421msgstr "" 3412msgstr ""
3422 3413
3423#: src/fs/gnunet-publish.c:948 3414#: src/fs/gnunet-publish.c:949
3424msgid "publish the files under the pseudonym NAME (place file into namespace)" 3415msgid "publish the files under the pseudonym NAME (place file into namespace)"
3425msgstr "" 3416msgstr ""
3426 3417
3427#: src/fs/gnunet-publish.c:958 3418#: src/fs/gnunet-publish.c:959
3428msgid "" 3419msgid ""
3429"only simulate the process but do not do any actual publishing (useful to " 3420"only simulate the process but do not do any actual publishing (useful to "
3430"compute URIs)" 3421"compute URIs)"
3431msgstr "" 3422msgstr ""
3432 3423
3433#: src/fs/gnunet-publish.c:964 3424#: src/fs/gnunet-publish.c:965
3434msgid "" 3425msgid ""
3435"set the ID of this version of the publication (for namespace insertions only)" 3426"set the ID of this version of the publication (for namespace insertions only)"
3436msgstr "" 3427msgstr ""
@@ -3441,29 +3432,29 @@ msgid ""
3441"to the file with the respective URI)" 3432"to the file with the respective URI)"
3442msgstr "" 3433msgstr ""
3443 3434
3444#: src/fs/gnunet-publish.c:987 3435#: src/fs/gnunet-publish.c:989
3445msgid "Publish a file or directory on GNUnet" 3436msgid "Publish a file or directory on GNUnet"
3446msgstr "" 3437msgstr ""
3447 3438
3448#: src/fs/gnunet-search.c:125 3439#: src/fs/gnunet-search.c:127
3449#, c-format 3440#, c-format
3450msgid "Failed to write directory with search results to `%s'\n" 3441msgid "Failed to write directory with search results to `%s'\n"
3451msgstr "" 3442msgstr ""
3452 3443
3453#: src/fs/gnunet-search.c:202 3444#: src/fs/gnunet-search.c:207
3454#, c-format 3445#, c-format
3455msgid "Error searching: %s.\n" 3446msgid "Error searching: %s.\n"
3456msgstr "" 3447msgstr ""
3457 3448
3458#: src/fs/gnunet-search.c:258 3449#: src/fs/gnunet-search.c:263
3459msgid "Could not create keyword URI from arguments.\n" 3450msgid "Could not create keyword URI from arguments.\n"
3460msgstr "" 3451msgstr ""
3461 3452
3462#: src/fs/gnunet-search.c:282 3453#: src/fs/gnunet-search.c:287
3463msgid "Could not start searching.\n" 3454msgid "Could not start searching.\n"
3464msgstr "" 3455msgstr ""
3465 3456
3466#: src/fs/gnunet-search.c:323 3457#: src/fs/gnunet-search.c:324
3467msgid "write search results to file starting with PREFIX" 3458msgid "write search results to file starting with PREFIX"
3468msgstr "" 3459msgstr ""
3469 3460
@@ -3471,7 +3462,7 @@ msgstr ""
3471msgid "automatically terminate search after DELAY" 3462msgid "automatically terminate search after DELAY"
3472msgstr "" 3463msgstr ""
3473 3464
3474#: src/fs/gnunet-search.c:338 3465#: src/fs/gnunet-search.c:335
3475msgid "automatically terminate search after VALUE results are found" 3466msgid "automatically terminate search after VALUE results are found"
3476msgstr "" 3467msgstr ""
3477 3468
@@ -3479,2939 +3470,2758 @@ msgstr ""
3479msgid "Search GNUnet for files that were published on GNUnet" 3470msgid "Search GNUnet for files that were published on GNUnet"
3480msgstr "" 3471msgstr ""
3481 3472
3482#: src/fs/gnunet-service-fs.c:375 src/fs/gnunet-service-fs.c:880 3473#: src/fs/gnunet-service-fs.c:377 src/fs/gnunet-service-fs.c:882
3483msgid "# client searches active" 3474msgid "# client searches active"
3484msgstr "" 3475msgstr ""
3485 3476
3486#: src/fs/gnunet-service-fs.c:434 3477#: src/fs/gnunet-service-fs.c:436
3487msgid "# replies received for local clients" 3478msgid "# replies received for local clients"
3488msgstr "" 3479msgstr ""
3489 3480
3490#: src/fs/gnunet-service-fs.c:603 3481#: src/fs/gnunet-service-fs.c:605
3491msgid "# running average P2P latency (ms)" 3482msgid "# running average P2P latency (ms)"
3492msgstr "" 3483msgstr ""
3493 3484
3494#: src/fs/gnunet-service-fs.c:655 src/fs/gnunet-service-fs_cp.c:562 3485#: src/fs/gnunet-service-fs.c:657 src/fs/gnunet-service-fs_cp.c:564
3495msgid "# Loopback routes suppressed" 3486msgid "# Loopback routes suppressed"
3496msgstr "" 3487msgstr ""
3497 3488
3498#: src/fs/gnunet-service-fs.c:834 3489#: src/fs/gnunet-service-fs.c:836
3499msgid "# client searches received" 3490msgid "# client searches received"
3500msgstr "" 3491msgstr ""
3501 3492
3502#: src/fs/gnunet-service-fs.c:873 3493#: src/fs/gnunet-service-fs.c:875
3503msgid "# client searches updated (merged content seen list)" 3494msgid "# client searches updated (merged content seen list)"
3504msgstr "" 3495msgstr ""
3505 3496
3506#: src/fs/gnunet-service-fs.c:1044 3497#: src/fs/gnunet-service-fs.c:1040
3507#, c-format 3498#, c-format
3508msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n" 3499msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n"
3509msgstr "" 3500msgstr ""
3510 3501
3511#: src/fs/gnunet-service-fs.c:1284 3502#: src/fs/gnunet-service-fs.c:1280
3512msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n" 3503msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n"
3513msgstr "" 3504msgstr ""
3514 3505
3515#: src/fs/gnunet-service-fs.c:1309 src/hostlist/gnunet-daemon-hostlist.c:353 3506#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
3516#: src/topology/gnunet-daemon-topology.c:1200 3507#: src/topology/gnunet-daemon-topology.c:1202
3517#, c-format 3508#, c-format
3518msgid "Failed to connect to `%s' service.\n" 3509msgid "Failed to connect to `%s' service.\n"
3519msgstr "" 3510msgstr ""
3520 3511
3521#: src/fs/gnunet-service-fs_cadet_client.c:368 3512#: src/fs/gnunet-service-fs_cadet_client.c:370
3522msgid "# replies received via cadet" 3513msgid "# replies received via cadet"
3523msgstr "" 3514msgstr ""
3524 3515
3525#: src/fs/gnunet-service-fs_cadet_client.c:382 3516#: src/fs/gnunet-service-fs_cadet_client.c:384
3526msgid "# replies received via cadet dropped" 3517msgid "# replies received via cadet dropped"
3527msgstr "" 3518msgstr ""
3528 3519
3529#: src/fs/gnunet-service-fs_cadet_server.c:263 3520#: src/fs/gnunet-service-fs_cadet_server.c:265
3530msgid "# queries received via CADET not answered" 3521msgid "# queries received via CADET not answered"
3531msgstr "" 3522msgstr ""
3532 3523
3533#: src/fs/gnunet-service-fs_cadet_server.c:318 3524#: src/fs/gnunet-service-fs_cadet_server.c:320
3534msgid "# Blocks transferred via cadet" 3525msgid "# Blocks transferred via cadet"
3535msgstr "" 3526msgstr ""
3536 3527
3537#: src/fs/gnunet-service-fs_cadet_server.c:344 3528#: src/fs/gnunet-service-fs_cadet_server.c:346
3538msgid "# queries received via cadet" 3529msgid "# queries received via cadet"
3539msgstr "" 3530msgstr ""
3540 3531
3541#: src/fs/gnunet-service-fs_cadet_server.c:386 3532#: src/fs/gnunet-service-fs_cadet_server.c:388
3542msgid "# cadet client connections rejected" 3533msgid "# cadet client connections rejected"
3543msgstr "" 3534msgstr ""
3544 3535
3545#: src/fs/gnunet-service-fs_cadet_server.c:393 3536#: src/fs/gnunet-service-fs_cadet_server.c:395
3546#: src/fs/gnunet-service-fs_cadet_server.c:433 3537#: src/fs/gnunet-service-fs_cadet_server.c:435
3547#, fuzzy 3538#, fuzzy
3548msgid "# cadet connections active" 3539msgid "# cadet connections active"
3549msgstr "# Session TCP active" 3540msgstr "# Session TCP active"
3550 3541
3551#: src/fs/gnunet-service-fs_cp.c:684 3542#: src/fs/gnunet-service-fs_cp.c:685
3552msgid "# migration stop messages received" 3543msgid "# migration stop messages received"
3553msgstr "" 3544msgstr ""
3554 3545
3555#: src/fs/gnunet-service-fs_cp.c:688 3546#: src/fs/gnunet-service-fs_cp.c:689
3556#, c-format 3547#, c-format
3557msgid "Migration of content to peer `%s' blocked for %s\n" 3548msgid "Migration of content to peer `%s' blocked for %s\n"
3558msgstr "" 3549msgstr ""
3559 3550
3560#: src/fs/gnunet-service-fs_cp.c:721 src/fs/gnunet-service-fs_cp.c:1343 3551#: src/fs/gnunet-service-fs_cp.c:722 src/fs/gnunet-service-fs_cp.c:1344
3561msgid "# P2P searches active" 3552msgid "# P2P searches active"
3562msgstr "" 3553msgstr ""
3563 3554
3564#: src/fs/gnunet-service-fs_cp.c:816 3555#: src/fs/gnunet-service-fs_cp.c:817
3565msgid "# artificial delays introduced (ms)" 3556msgid "# artificial delays introduced (ms)"
3566msgstr "" 3557msgstr ""
3567 3558
3568#: src/fs/gnunet-service-fs_cp.c:873 3559#: src/fs/gnunet-service-fs_cp.c:874
3569msgid "# replies dropped due to type mismatch" 3560msgid "# replies dropped due to type mismatch"
3570msgstr "" 3561msgstr ""
3571 3562
3572#: src/fs/gnunet-service-fs_cp.c:881 3563#: src/fs/gnunet-service-fs_cp.c:882
3573msgid "# replies received for other peers" 3564msgid "# replies received for other peers"
3574msgstr "" 3565msgstr ""
3575 3566
3576#: src/fs/gnunet-service-fs_cp.c:895 3567#: src/fs/gnunet-service-fs_cp.c:896
3577msgid "# replies dropped due to insufficient cover traffic" 3568msgid "# replies dropped due to insufficient cover traffic"
3578msgstr "" 3569msgstr ""
3579 3570
3580#: src/fs/gnunet-service-fs_cp.c:942 3571#: src/fs/gnunet-service-fs_cp.c:943
3581msgid "# P2P searches destroyed due to ultimate reply" 3572msgid "# P2P searches destroyed due to ultimate reply"
3582msgstr "" 3573msgstr ""
3583 3574
3584#: src/fs/gnunet-service-fs_cp.c:1013 3575#: src/fs/gnunet-service-fs_cp.c:1014
3585msgid "# requests done for free (low load)" 3576msgid "# requests done for free (low load)"
3586msgstr "" 3577msgstr ""
3587 3578
3588#: src/fs/gnunet-service-fs_cp.c:1038 3579#: src/fs/gnunet-service-fs_cp.c:1039
3589msgid "# request dropped, priority insufficient" 3580msgid "# request dropped, priority insufficient"
3590msgstr "" 3581msgstr ""
3591 3582
3592#: src/fs/gnunet-service-fs_cp.c:1048 3583#: src/fs/gnunet-service-fs_cp.c:1049
3593msgid "# requests done for a price (normal load)" 3584msgid "# requests done for a price (normal load)"
3594msgstr "" 3585msgstr ""
3595 3586
3596#: src/fs/gnunet-service-fs_cp.c:1146 3587#: src/fs/gnunet-service-fs_cp.c:1147
3597msgid "# requests dropped due to higher-TTL request" 3588msgid "# requests dropped due to higher-TTL request"
3598msgstr "" 3589msgstr ""
3599 3590
3600#: src/fs/gnunet-service-fs_cp.c:1203 3591#: src/fs/gnunet-service-fs_cp.c:1204
3601msgid "# GET requests received (from other peers)" 3592msgid "# GET requests received (from other peers)"
3602msgstr "" 3593msgstr ""
3603 3594
3604#: src/fs/gnunet-service-fs_cp.c:1226 3595#: src/fs/gnunet-service-fs_cp.c:1227
3605msgid "# requests dropped due to missing reverse route" 3596msgid "# requests dropped due to missing reverse route"
3606msgstr "" 3597msgstr ""
3607 3598
3608#: src/fs/gnunet-service-fs_cp.c:1239 3599#: src/fs/gnunet-service-fs_cp.c:1240
3609msgid "# requests dropped due to full reply queue" 3600msgid "# requests dropped due to full reply queue"
3610msgstr "" 3601msgstr ""
3611 3602
3612#: src/fs/gnunet-service-fs_cp.c:1295 3603#: src/fs/gnunet-service-fs_cp.c:1296
3613msgid "# requests dropped due TTL underflow" 3604msgid "# requests dropped due TTL underflow"
3614msgstr "" 3605msgstr ""
3615 3606
3616#: src/fs/gnunet-service-fs_cp.c:1339 3607#: src/fs/gnunet-service-fs_cp.c:1340
3617msgid "# P2P query messages received and processed" 3608msgid "# P2P query messages received and processed"
3618msgstr "" 3609msgstr ""
3619 3610
3620#: src/fs/gnunet-service-fs_cp.c:1706 3611#: src/fs/gnunet-service-fs_cp.c:1707
3621msgid "# migration stop messages sent" 3612msgid "# migration stop messages sent"
3622msgstr "" 3613msgstr ""
3623 3614
3624#: src/fs/gnunet-service-fs_indexing.c:132 3615#: src/fs/gnunet-service-fs_indexing.c:134
3625#: src/fs/gnunet-service-fs_indexing.c:193 3616#: src/fs/gnunet-service-fs_indexing.c:195
3626#, c-format 3617#, c-format
3627msgid "Could not open `%s'.\n" 3618msgid "Could not open `%s'.\n"
3628msgstr "Impossible d’ouvrir « %s ».\n" 3619msgstr "Impossible d’ouvrir « %s ».\n"
3629 3620
3630#: src/fs/gnunet-service-fs_indexing.c:149 3621#: src/fs/gnunet-service-fs_indexing.c:151
3631#, c-format 3622#, c-format
3632msgid "Error writing `%s'.\n" 3623msgid "Error writing `%s'.\n"
3633msgstr "" 3624msgstr ""
3634 3625
3635#: src/fs/gnunet-service-fs_indexing.c:251 3626#: src/fs/gnunet-service-fs_indexing.c:253
3636#, c-format 3627#, c-format
3637msgid "Failed to delete bogus block: %s\n" 3628msgid "Failed to delete bogus block: %s\n"
3638msgstr "" 3629msgstr ""
3639 3630
3640#: src/fs/gnunet-service-fs_indexing.c:329 3631#: src/fs/gnunet-service-fs_indexing.c:331
3641msgid "# index blocks removed: original file inaccessible" 3632msgid "# index blocks removed: original file inaccessible"
3642msgstr "" 3633msgstr ""
3643 3634
3644#: src/fs/gnunet-service-fs_indexing.c:355 3635#: src/fs/gnunet-service-fs_indexing.c:357
3645#, c-format 3636#, c-format
3646msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n" 3637msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n"
3647msgstr "" 3638msgstr ""
3648 3639
3649#: src/fs/gnunet-service-fs_indexing.c:359 3640#: src/fs/gnunet-service-fs_indexing.c:361
3650msgid "not indexed" 3641msgid "not indexed"
3651msgstr "non indexé" 3642msgstr "non indexé"
3652 3643
3653#: src/fs/gnunet-service-fs_indexing.c:392 3644#: src/fs/gnunet-service-fs_indexing.c:394
3654#, c-format 3645#, c-format
3655msgid "Indexed file `%s' changed at offset %llu\n" 3646msgid "Indexed file `%s' changed at offset %llu\n"
3656msgstr "" 3647msgstr ""
3657 3648
3658#: src/fs/gnunet-service-fs_indexing.c:516 3649#: src/fs/gnunet-service-fs_indexing.c:518
3659#, c-format 3650#, c-format
3660msgid "" 3651msgid ""
3661"Index request received for file `%s' is already indexed as `%s'. Permitting " 3652"Index request received for file `%s' is already indexed as `%s'. Permitting "
3662"anyway.\n" 3653"anyway.\n"
3663msgstr "" 3654msgstr ""
3664 3655
3665#: src/fs/gnunet-service-fs_pe.c:263 3656#: src/fs/gnunet-service-fs_pe.c:265
3666msgid "# average retransmission delay (ms)" 3657msgid "# average retransmission delay (ms)"
3667msgstr "" 3658msgstr ""
3668 3659
3669#: src/fs/gnunet-service-fs_pe.c:425 3660#: src/fs/gnunet-service-fs_pe.c:427
3670msgid "# delay heap timeout (ms)" 3661msgid "# delay heap timeout (ms)"
3671msgstr "" 3662msgstr ""
3672 3663
3673#: src/fs/gnunet-service-fs_pe.c:436 3664#: src/fs/gnunet-service-fs_pe.c:438
3674msgid "# query plans executed" 3665msgid "# query plans executed"
3675msgstr "" 3666msgstr ""
3676 3667
3677#: src/fs/gnunet-service-fs_pe.c:464 3668#: src/fs/gnunet-service-fs_pe.c:466
3678msgid "# query messages sent to other peers" 3669msgid "# query messages sent to other peers"
3679msgstr "" 3670msgstr ""
3680 3671
3681#: src/fs/gnunet-service-fs_pe.c:534 3672#: src/fs/gnunet-service-fs_pe.c:536
3682msgid "# requests merged" 3673msgid "# requests merged"
3683msgstr "" 3674msgstr ""
3684 3675
3685#: src/fs/gnunet-service-fs_pe.c:544 3676#: src/fs/gnunet-service-fs_pe.c:546
3686msgid "# requests refreshed" 3677msgid "# requests refreshed"
3687msgstr "" 3678msgstr ""
3688 3679
3689#: src/fs/gnunet-service-fs_pe.c:604 src/fs/gnunet-service-fs_pe.c:707 3680#: src/fs/gnunet-service-fs_pe.c:606 src/fs/gnunet-service-fs_pe.c:709
3690#: src/fs/gnunet-service-fs_pe.c:786 3681#: src/fs/gnunet-service-fs_pe.c:788
3691msgid "# query plan entries" 3682msgid "# query plan entries"
3692msgstr "" 3683msgstr ""
3693 3684
3694#: src/fs/gnunet-service-fs_pr.c:328 3685#: src/fs/gnunet-service-fs_pr.c:330
3695msgid "# Pending requests created" 3686msgid "# Pending requests created"
3696msgstr "" 3687msgstr ""
3697 3688
3698#: src/fs/gnunet-service-fs_pr.c:428 src/fs/gnunet-service-fs_pr.c:675 3689#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
3699msgid "# Pending requests active" 3690msgid "# Pending requests active"
3700msgstr "" 3691msgstr ""
3701 3692
3702#: src/fs/gnunet-service-fs_pr.c:856 3693#: src/fs/gnunet-service-fs_pr.c:858
3703msgid "# replies received and matched" 3694msgid "# replies received and matched"
3704msgstr "" 3695msgstr ""
3705 3696
3706#: src/fs/gnunet-service-fs_pr.c:892 3697#: src/fs/gnunet-service-fs_pr.c:894
3707msgid "# duplicate replies discarded (bloomfilter)" 3698msgid "# duplicate replies discarded (bloomfilter)"
3708msgstr "" 3699msgstr ""
3709 3700
3710#: src/fs/gnunet-service-fs_pr.c:901 3701#: src/fs/gnunet-service-fs_pr.c:903
3711msgid "# irrelevant replies discarded" 3702msgid "# irrelevant replies discarded"
3712msgstr "" 3703msgstr ""
3713 3704
3714#: src/fs/gnunet-service-fs_pr.c:916 3705#: src/fs/gnunet-service-fs_pr.c:918
3715#, c-format 3706#, c-format
3716msgid "Unsupported block type %u\n" 3707msgid "Unsupported block type %u\n"
3717msgstr "" 3708msgstr ""
3718 3709
3719#: src/fs/gnunet-service-fs_pr.c:933 3710#: src/fs/gnunet-service-fs_pr.c:935
3720msgid "# results found locally" 3711msgid "# results found locally"
3721msgstr "" 3712msgstr ""
3722 3713
3723#: src/fs/gnunet-service-fs_pr.c:1063 3714#: src/fs/gnunet-service-fs_pr.c:1065
3724msgid "# Datastore `PUT' failures" 3715msgid "# Datastore `PUT' failures"
3725msgstr "" 3716msgstr ""
3726 3717
3727#: src/fs/gnunet-service-fs_pr.c:1091 3718#: src/fs/gnunet-service-fs_pr.c:1093
3728msgid "# storage requests dropped due to high load" 3719msgid "# storage requests dropped due to high load"
3729msgstr "" 3720msgstr ""
3730 3721
3731#: src/fs/gnunet-service-fs_pr.c:1129 3722#: src/fs/gnunet-service-fs_pr.c:1131
3732msgid "# Replies received from DHT" 3723msgid "# Replies received from DHT"
3733msgstr "" 3724msgstr ""
3734 3725
3735#: src/fs/gnunet-service-fs_pr.c:1260 3726#: src/fs/gnunet-service-fs_pr.c:1262
3736msgid "# Replies received from CADET" 3727msgid "# Replies received from CADET"
3737msgstr "" 3728msgstr ""
3738 3729
3739#: src/fs/gnunet-service-fs_pr.c:1312 3730#: src/fs/gnunet-service-fs_pr.c:1314
3740#, c-format 3731#, c-format
3741msgid "Datastore lookup already took %s!\n" 3732msgid "Datastore lookup already took %s!\n"
3742msgstr "" 3733msgstr ""
3743 3734
3744#: src/fs/gnunet-service-fs_pr.c:1333 3735#: src/fs/gnunet-service-fs_pr.c:1335
3745#, c-format 3736#, c-format
3746msgid "On-demand lookup already took %s!\n" 3737msgid "On-demand lookup already took %s!\n"
3747msgstr "" 3738msgstr ""
3748 3739
3749#: src/fs/gnunet-service-fs_pr.c:1393 3740#: src/fs/gnunet-service-fs_pr.c:1395
3750msgid "# requested DBLOCK or IBLOCK not found" 3741msgid "# requested DBLOCK or IBLOCK not found"
3751msgstr "" 3742msgstr ""
3752 3743
3753#: src/fs/gnunet-service-fs_pr.c:1452 3744#: src/fs/gnunet-service-fs_pr.c:1454
3754msgid "# Datastore lookups concluded (error queueing)" 3745msgid "# Datastore lookups concluded (error queueing)"
3755msgstr "" 3746msgstr ""
3756 3747
3757#: src/fs/gnunet-service-fs_pr.c:1507 3748#: src/fs/gnunet-service-fs_pr.c:1509
3758msgid "# Datastore lookups concluded (no results)" 3749msgid "# Datastore lookups concluded (no results)"
3759msgstr "" 3750msgstr ""
3760 3751
3761#: src/fs/gnunet-service-fs_pr.c:1522 3752#: src/fs/gnunet-service-fs_pr.c:1524
3762msgid "# Datastore lookups concluded (seen all)" 3753msgid "# Datastore lookups concluded (seen all)"
3763msgstr "" 3754msgstr ""
3764 3755
3765#: src/fs/gnunet-service-fs_pr.c:1546 3756#: src/fs/gnunet-service-fs_pr.c:1548
3766msgid "# Datastore lookups aborted (more than MAX_RESULTS)" 3757msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
3767msgstr "" 3758msgstr ""
3768 3759
3769#: src/fs/gnunet-service-fs_pr.c:1560 3760#: src/fs/gnunet-service-fs_pr.c:1562
3770msgid "# on-demand blocks matched requests" 3761msgid "# on-demand blocks matched requests"
3771msgstr "" 3762msgstr ""
3772 3763
3773#: src/fs/gnunet-service-fs_pr.c:1581 3764#: src/fs/gnunet-service-fs_pr.c:1583
3774msgid "# on-demand lookups performed successfully" 3765msgid "# on-demand lookups performed successfully"
3775msgstr "" 3766msgstr ""
3776 3767
3777#: src/fs/gnunet-service-fs_pr.c:1586 3768#: src/fs/gnunet-service-fs_pr.c:1588
3778msgid "# on-demand lookups failed" 3769msgid "# on-demand lookups failed"
3779msgstr "" 3770msgstr ""
3780 3771
3781#: src/fs/gnunet-service-fs_pr.c:1624 3772#: src/fs/gnunet-service-fs_pr.c:1626
3782msgid "# Datastore lookups concluded (found last result)" 3773msgid "# Datastore lookups concluded (found last result)"
3783msgstr "" 3774msgstr ""
3784 3775
3785#: src/fs/gnunet-service-fs_pr.c:1637 3776#: src/fs/gnunet-service-fs_pr.c:1639
3786msgid "# Datastore lookups concluded (load too high)" 3777msgid "# Datastore lookups concluded (load too high)"
3787msgstr "" 3778msgstr ""
3788 3779
3789#: src/fs/gnunet-service-fs_pr.c:1691 3780#: src/fs/gnunet-service-fs_pr.c:1693
3790msgid "# Datastore lookups initiated" 3781msgid "# Datastore lookups initiated"
3791msgstr "" 3782msgstr ""
3792 3783
3793#: src/fs/gnunet-service-fs_pr.c:1747 3784#: src/fs/gnunet-service-fs_pr.c:1749
3794msgid "# GAP PUT messages received" 3785msgid "# GAP PUT messages received"
3795msgstr "" 3786msgstr ""
3796 3787
3797#: src/fs/gnunet-service-fs_push.c:644 3788#: src/fs/gnunet-service-fs_push.c:646
3798msgid "time required, content pushing disabled" 3789msgid "time required, content pushing disabled"
3799msgstr "" 3790msgstr ""
3800 3791
3801#: src/fs/gnunet-unindex.c:87 3792#: src/fs/gnunet-unindex.c:89
3802#, c-format 3793#, c-format
3803msgid "Unindexing at %llu/%llu (%s remaining)\n" 3794msgid "Unindexing at %llu/%llu (%s remaining)\n"
3804msgstr "" 3795msgstr ""
3805 3796
3806#: src/fs/gnunet-unindex.c:93 3797#: src/fs/gnunet-unindex.c:95
3807#, c-format 3798#, c-format
3808msgid "Error unindexing: %s.\n" 3799msgid "Error unindexing: %s.\n"
3809msgstr "" 3800msgstr ""
3810 3801
3811#: src/fs/gnunet-unindex.c:98 3802#: src/fs/gnunet-unindex.c:100
3812msgid "Unindexing done.\n" 3803msgid "Unindexing done.\n"
3813msgstr "" 3804msgstr ""
3814 3805
3815#: src/fs/gnunet-unindex.c:127 3806#: src/fs/gnunet-unindex.c:129
3816#, c-format 3807#, c-format
3817msgid "You must specify one and only one filename for unindexing.\n" 3808msgid "You must specify one and only one filename for unindexing.\n"
3818msgstr "" 3809msgstr ""
3819 3810
3820#: src/fs/gnunet-unindex.c:144 3811#: src/fs/gnunet-unindex.c:146
3821msgid "Could not start unindex operation.\n" 3812msgid "Could not start unindex operation.\n"
3822msgstr "" 3813msgstr ""
3823 3814
3824#: src/fs/gnunet-unindex.c:176 3815#: src/fs/gnunet-unindex.c:178
3825msgid "Unindex a file that was previously indexed with gnunet-publish." 3816msgid "Unindex a file that was previously indexed with gnunet-publish."
3826msgstr "" 3817msgstr ""
3827 3818
3828#: src/gns/gns_tld_api.c:274 3819#: src/gns/gns_tld_api.c:348
3829msgid "Expected a base32-encoded public zone key\n" 3820msgid "Expected a base32-encoded public zone key\n"
3830msgstr "" 3821msgstr ""
3831 3822
3832#: src/gns/gnunet-bcd.c:125 3823#: src/gns/gnunet-bcd.c:127
3833#, c-format 3824#, c-format
3834msgid "Refusing `%s' request to HTTP server\n" 3825msgid "Refusing `%s' request to HTTP server\n"
3835msgstr "" 3826msgstr ""
3836 3827
3837#: src/gns/gnunet-bcd.c:355 3828#: src/gns/gnunet-bcd.c:357
3838#, c-format 3829#, c-format
3839msgid "Invalid port number %u. Exiting.\n" 3830msgid "Invalid port number %u. Exiting.\n"
3840msgstr "" 3831msgstr ""
3841 3832
3842#: src/gns/gnunet-bcd.c:360 3833#: src/gns/gnunet-bcd.c:362
3843#, c-format 3834#, c-format
3844msgid "Businesscard HTTP server starts on %u\n" 3835msgid "Businesscard HTTP server starts on %u\n"
3845msgstr "" 3836msgstr ""
3846 3837
3847#: src/gns/gnunet-bcd.c:374 3838#: src/gns/gnunet-bcd.c:376
3848#, c-format 3839#, c-format
3849msgid "Could not start businesscard HTTP server on port %u\n" 3840msgid "Could not start businesscard HTTP server on port %u\n"
3850msgstr "" 3841msgstr ""
3851 3842
3852#: src/gns/gnunet-bcd.c:521 3843#: src/gns/gnunet-bcd.c:523
3853msgid "Run HTTP serve on port PORT (default is 8888)" 3844msgid "Run HTTP serve on port PORT (default is 8888)"
3854msgstr "" 3845msgstr ""
3855 3846
3856#: src/gns/gnunet-bcd.c:534 3847#: src/gns/gnunet-bcd.c:536
3857msgid "GNUnet HTTP server to create business cards" 3848msgid "GNUnet HTTP server to create business cards"
3858msgstr "" 3849msgstr ""
3859 3850
3860#: src/gns/gnunet-dns2gns.c:201 3851#: src/gns/gnunet-dns2gns.c:203
3861msgid "Failed to pack DNS response into UDP packet!\n" 3852msgid "Failed to pack DNS response into UDP packet!\n"
3862msgstr "" 3853msgstr ""
3863 3854
3864#: src/gns/gnunet-dns2gns.c:403 3855#: src/gns/gnunet-dns2gns.c:405
3865#, c-format 3856#, c-format
3866msgid "Cannot parse DNS request from %s\n" 3857msgid "Cannot parse DNS request from %s\n"
3867msgstr "" 3858msgstr ""
3868 3859
3869#: src/gns/gnunet-dns2gns.c:419 3860#: src/gns/gnunet-dns2gns.c:421
3870#, c-format 3861#, c-format
3871msgid "Received malformed DNS request from %s\n" 3862msgid "Received malformed DNS request from %s\n"
3872msgstr "" 3863msgstr ""
3873 3864
3874#: src/gns/gnunet-dns2gns.c:427 3865#: src/gns/gnunet-dns2gns.c:429
3875#, c-format 3866#, c-format
3876msgid "Received unsupported DNS request from %s\n" 3867msgid "Received unsupported DNS request from %s\n"
3877msgstr "" 3868msgstr ""
3878 3869
3879#: src/gns/gnunet-dns2gns.c:586 3870#: src/gns/gnunet-dns2gns.c:588
3880msgid "No DNS server specified!\n" 3871msgid "No DNS server specified!\n"
3881msgstr "" 3872msgstr ""
3882 3873
3883#: src/gns/gnunet-dns2gns.c:686 3874#: src/gns/gnunet-dns2gns.c:688
3884msgid "IP of recursive DNS resolver to use (required)" 3875msgid "IP of recursive DNS resolver to use (required)"
3885msgstr "" 3876msgstr ""
3886 3877
3887#: src/gns/gnunet-dns2gns.c:691 3878#: src/gns/gnunet-dns2gns.c:693
3888msgid "UDP port to listen on for inbound DNS requests; default: 2853" 3879msgid "UDP port to listen on for inbound DNS requests; default: 2853"
3889msgstr "" 3880msgstr ""
3890 3881
3891#: src/gns/gnunet-dns2gns.c:708 3882#: src/gns/gnunet-dns2gns.c:710
3892msgid "GNUnet DNS-to-GNS proxy (a DNS server)" 3883msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
3893msgstr "" 3884msgstr ""
3894 3885
3895#: src/gns/gnunet-gns-benchmark.c:580 3886#: src/gns/gnunet-gns-benchmark.c:582
3896msgid "how long to wait between queries" 3887msgid "how long to wait between queries"
3897msgstr "" 3888msgstr ""
3898 3889
3899#: src/gns/gnunet-gns-benchmark.c:585 3890#: src/gns/gnunet-gns-benchmark.c:587
3900msgid "how long to wait for an answer" 3891msgid "how long to wait for an answer"
3901msgstr "" 3892msgstr ""
3902 3893
3903#: src/gns/gnunet-gns-benchmark.c:589 3894#: src/gns/gnunet-gns-benchmark.c:591
3904msgid "look for GNS2DNS records instead of ANY" 3895msgid "look for GNS2DNS records instead of ANY"
3905msgstr "" 3896msgstr ""
3906 3897
3907#: src/gns/gnunet-gns.c:197 3898#: src/gns/gnunet-gns.c:199
3908#, c-format 3899#, c-format
3909msgid "Invalid typename specified, assuming `ANY'\n" 3900msgid "Invalid typename specified, assuming `ANY'\n"
3910msgstr "" 3901msgstr ""
3911 3902
3912#: src/gns/gnunet-gns.c:231 3903#: src/gns/gnunet-gns.c:233
3913msgid "Lookup a record for the given name" 3904msgid "Lookup a record for the given name"
3914msgstr "" 3905msgstr ""
3915 3906
3916#: src/gns/gnunet-gns.c:236 3907#: src/gns/gnunet-gns.c:238
3917msgid "Specify the type of the record to lookup" 3908msgid "Specify the type of the record to lookup"
3918msgstr "" 3909msgstr ""
3919 3910
3920#: src/gns/gnunet-gns.c:240 3911#: src/gns/gnunet-gns.c:242
3921msgid "No unneeded output" 3912msgid "No unneeded output"
3922msgstr "" 3913msgstr ""
3923 3914
3924#: src/gns/gnunet-gns.c:256 3915#: src/gns/gnunet-gns.c:258
3925msgid "GNUnet GNS resolver tool" 3916msgid "GNUnet GNS resolver tool"
3926msgstr "" 3917msgstr ""
3927 3918
3928#: src/gns/gnunet-gns-helper-service-w32.c:600 3919#: src/gns/gnunet-gns-helper-service-w32.c:602
3929msgid "Not ready to process requests, lacking ego data\n" 3920msgid "Not ready to process requests, lacking ego data\n"
3930msgstr "" 3921msgstr ""
3931 3922
3932#: src/gns/gnunet-gns-helper-service-w32.c:699 3923#: src/gns/gnunet-gns-helper-service-w32.c:701
3933msgid "" 3924msgid ""
3934"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-" 3925"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-"
3935"gns-import.sh?\n" 3926"gns-import.sh?\n"
3936msgstr "" 3927msgstr ""
3937 3928
3938#: src/gns/gnunet-gns-helper-service-w32.c:737 3929#: src/gns/gnunet-gns-helper-service-w32.c:739
3939#, c-format 3930#, c-format
3940msgid "Failed to connect to identity service\n" 3931msgid "Failed to connect to identity service\n"
3941msgstr "" 3932msgstr ""
3942 3933
3943#: src/gns/gnunet-gns-import.c:450 3934#: src/gns/gnunet-gns-import.c:452
3944msgid "This program will import some GNS authorities into your GNS namestore." 3935msgid "This program will import some GNS authorities into your GNS namestore."
3945msgstr "" 3936msgstr ""
3946 3937
3947#: src/gns/gnunet-gns-proxy.c:110 3938#: src/gns/gnunet-gns-proxy.c:118
3948#: src/hostlist/gnunet-daemon-hostlist_client.c:533 3939#: src/hostlist/gnunet-daemon-hostlist_client.c:535
3949#: src/hostlist/gnunet-daemon-hostlist_client.c:751 3940#: src/hostlist/gnunet-daemon-hostlist_client.c:753
3950#: src/hostlist/gnunet-daemon-hostlist_client.c:757 3941#: src/hostlist/gnunet-daemon-hostlist_client.c:759
3951#: src/hostlist/gnunet-daemon-hostlist_client.c:809 3942#: src/hostlist/gnunet-daemon-hostlist_client.c:811
3952#: src/hostlist/gnunet-daemon-hostlist_client.c:818 3943#: src/hostlist/gnunet-daemon-hostlist_client.c:820
3953#: src/hostlist/gnunet-daemon-hostlist_client.c:929 3944#: src/hostlist/gnunet-daemon-hostlist_client.c:931
3954#: src/hostlist/gnunet-daemon-hostlist_client.c:1024 3945#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
3955#: src/hostlist/gnunet-daemon-hostlist_client.c:1029 3946#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
3956#: src/transport/plugin_transport_http_client.c:596 3947#: src/transport/plugin_transport_http_client.c:598
3957#: src/transport/plugin_transport_http_client.c:614 3948#: src/transport/plugin_transport_http_client.c:616
3958#, c-format 3949#, c-format
3959msgid "%s failed at %s:%d: `%s'\n" 3950msgid "%s failed at %s:%d: `%s'\n"
3960msgstr "" 3951msgstr ""
3961 3952
3962#: src/gns/gnunet-gns-proxy.c:960 3953#: src/gns/gnunet-gns-proxy.c:980
3963#, c-format 3954#, c-format
3964msgid "Unsupported CURL TLS backend %d\n" 3955msgid "Unsupported CURL TLS backend %d\n"
3965msgstr "" 3956msgstr ""
3966 3957
3967#: src/gns/gnunet-gns-proxy.c:985 3958#: src/gns/gnunet-gns-proxy.c:1005
3968#, c-format 3959#, c-format
3969msgid "Failed to fetch CN from cert: %s\n" 3960msgid "Failed to fetch CN from cert: %s\n"
3970msgstr "" 3961msgstr ""
3971 3962
3972#: src/gns/gnunet-gns-proxy.c:1008 3963#: src/gns/gnunet-gns-proxy.c:1026
3973#, c-format 3964#, c-format
3974msgid "Failed to initialize DANE: %s\n" 3965msgid "Failed to initialize DANE: %s\n"
3975msgstr "" 3966msgstr ""
3976 3967
3977#: src/gns/gnunet-gns-proxy.c:1021 3968#: src/gns/gnunet-gns-proxy.c:1041
3978#, c-format 3969#, c-format
3979msgid "Failed to parse DANE record: %s\n" 3970msgid "Failed to parse DANE record: %s\n"
3980msgstr "" 3971msgstr ""
3981 3972
3982#: src/gns/gnunet-gns-proxy.c:1036 3973#: src/gns/gnunet-gns-proxy.c:1056
3983#, c-format 3974#, c-format
3984msgid "Failed to verify TLS connection using DANE: %s\n" 3975msgid "Failed to verify TLS connection using DANE: %s\n"
3985msgstr "" 3976msgstr ""
3986 3977
3987#: src/gns/gnunet-gns-proxy.c:1046 3978#: src/gns/gnunet-gns-proxy.c:1066
3988#, c-format 3979#, c-format
3989msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" 3980msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
3990msgstr "" 3981msgstr ""
3991 3982
3992#: src/gns/gnunet-gns-proxy.c:1070 3983#: src/gns/gnunet-gns-proxy.c:1090
3993#, c-format 3984#, c-format
3994msgid "TLS certificate subject name (%s) does not match `%s': %d\n" 3985msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
3995msgstr "" 3986msgstr ""
3996 3987
3997#: src/gns/gnunet-gns-proxy.c:1200 3988#: src/gns/gnunet-gns-proxy.c:1221
3998#, c-format 3989#, c-format
3999msgid "Cookie domain `%s' supplied by server is invalid\n" 3990msgid "Cookie domain `%s' supplied by server is invalid\n"
4000msgstr "" 3991msgstr ""
4001 3992
4002#: src/gns/gnunet-gns-proxy.c:2062 3993#: src/gns/gnunet-gns-proxy.c:2121
4003#, c-format 3994#, c-format
4004msgid "Unsupported HTTP method `%s'\n" 3995msgid "Unsupported HTTP method `%s'\n"
4005msgstr "" 3996msgstr ""
4006 3997
4007#: src/gns/gnunet-gns-proxy.c:2583 3998#: src/gns/gnunet-gns-proxy.c:2642
4008#, c-format 3999#, c-format
4009msgid "Unable to import private key from file `%s'\n" 4000msgid "Unable to import private key from file `%s'\n"
4010msgstr "" 4001msgstr ""
4011 4002
4012#: src/gns/gnunet-gns-proxy.c:2615 4003#: src/gns/gnunet-gns-proxy.c:2674
4013#, c-format 4004#, c-format
4014msgid "Unable to import certificate from `%s'\n" 4005msgid "Unable to import certificate from `%s'\n"
4015msgstr "" 4006msgstr ""
4016 4007
4017#: src/gns/gnunet-gns-proxy.c:2814 4008#: src/gns/gnunet-gns-proxy.c:2875
4018#, c-format 4009#, c-format
4019msgid "Failed to start HTTPS server for `%s'\n" 4010msgid "Failed to start HTTPS server for `%s'\n"
4020msgstr "" 4011msgstr ""
4021 4012
4022#: src/gns/gnunet-gns-proxy.c:2839 src/rest/gnunet-rest-server.c:656 4013#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
4023msgid "Failed to pass client to MHD\n" 4014msgid "Failed to pass client to MHD\n"
4024msgstr "" 4015msgstr ""
4025 4016
4026#: src/gns/gnunet-gns-proxy.c:3169 4017#: src/gns/gnunet-gns-proxy.c:3233
4027#, c-format 4018#, c-format
4028msgid "Unsupported socks version %d\n" 4019msgid "Unsupported socks version %d\n"
4029msgstr "" 4020msgstr ""
4030 4021
4031#: src/gns/gnunet-gns-proxy.c:3198 4022#: src/gns/gnunet-gns-proxy.c:3262
4032#, c-format 4023#, c-format
4033msgid "Unsupported socks command %d\n" 4024msgid "Unsupported socks command %d\n"
4034msgstr "" 4025msgstr ""
4035 4026
4036#: src/gns/gnunet-gns-proxy.c:3280 4027#: src/gns/gnunet-gns-proxy.c:3345
4037#, c-format 4028#, c-format
4038msgid "Unsupported socks address type %d\n" 4029msgid "Unsupported socks address type %d\n"
4039msgstr "" 4030msgstr ""
4040 4031
4041#: src/gns/gnunet-gns-proxy.c:3570 4032#: src/gns/gnunet-gns-proxy.c:3635
4042#, c-format 4033#, c-format
4043msgid "Failed to load X.509 key and certificate from `%s'\n" 4034msgid "Failed to load X.509 key and certificate from `%s'\n"
4044msgstr "" 4035msgstr ""
4045 4036
4046#: src/gns/gnunet-gns-proxy.c:3698 4037#: src/gns/gnunet-gns-proxy.c:3763
4047msgid "listen on specified port (default: 7777)" 4038msgid "listen on specified port (default: 7777)"
4048msgstr "" 4039msgstr ""
4049 4040
4050#: src/gns/gnunet-gns-proxy.c:3703 4041#: src/gns/gnunet-gns-proxy.c:3768
4051msgid "pem file to use as CA" 4042msgid "pem file to use as CA"
4052msgstr "" 4043msgstr ""
4053 4044
4054#: src/gns/gnunet-gns-proxy.c:3707 4045#: src/gns/gnunet-gns-proxy.c:3772
4055msgid "disable use of IPv6" 4046msgid "disable use of IPv6"
4056msgstr "" 4047msgstr ""
4057 4048
4058#: src/gns/gnunet-gns-proxy.c:3733 4049#: src/gns/gnunet-gns-proxy.c:3798
4059msgid "GNUnet GNS proxy" 4050msgid "GNUnet GNS proxy"
4060msgstr "" 4051msgstr ""
4061 4052
4062#: src/gns/gnunet-service-gns.c:511 4053#: src/gns/gnunet-service-gns.c:506
4063msgid "Properly base32-encoded public key required" 4054msgid "Properly base32-encoded public key required"
4064msgstr "" 4055msgstr ""
4065 4056
4066#: src/gns/gnunet-service-gns.c:547 4057#: src/gns/gnunet-service-gns.c:542
4067msgid "Failed to connect to the namecache!\n" 4058msgid "Failed to connect to the namecache!\n"
4068msgstr "" 4059msgstr ""
4069 4060
4070#: src/gns/gnunet-service-gns.c:566 4061#: src/gns/gnunet-service-gns.c:561
4071#: src/zonemaster/gnunet-service-zonemaster.c:873 4062#: src/zonemaster/gnunet-service-zonemaster.c:875
4072#: src/zonemaster/gnunet-service-zonemaster-monitor.c:438 4063#: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
4073msgid "Could not connect to DHT!\n" 4064msgid "Could not connect to DHT!\n"
4074msgstr "" 4065msgstr ""
4075 4066
4076#: src/gns/gnunet-service-gns_interceptor.c:257 4067#: src/gns/gnunet-service-gns_interceptor.c:259
4077msgid "Error converting GNS response to DNS response!\n" 4068msgid "Error converting GNS response to DNS response!\n"
4078msgstr "" 4069msgstr ""
4079 4070
4080#: src/gns/gnunet-service-gns_interceptor.c:364 4071#: src/gns/gnunet-service-gns_interceptor.c:366
4081msgid "Failed to connect to the DNS service!\n" 4072msgid "Failed to connect to the DNS service!\n"
4082msgstr "" 4073msgstr ""
4083 4074
4084#: src/gns/gnunet-service-gns_resolver.c:717 4075#: src/gns/gnunet-service-gns_resolver.c:700
4085#, c-format 4076#, c-format
4086msgid "Protocol `%s' unknown, skipping labels.\n" 4077msgid "Protocol `%s' unknown, skipping labels.\n"
4087msgstr "" 4078msgstr ""
4088 4079
4089#: src/gns/gnunet-service-gns_resolver.c:728 4080#: src/gns/gnunet-service-gns_resolver.c:711
4090#, c-format 4081#, c-format
4091msgid "Service `%s' unknown for protocol `%s', skipping labels.\n" 4082msgid "Service `%s' unknown for protocol `%s', skipping labels.\n"
4092msgstr "" 4083msgstr ""
4093 4084
4094#: src/gns/gnunet-service-gns_resolver.c:931 4085#: src/gns/gnunet-service-gns_resolver.c:914
4095msgid "Failed to parse DNS response\n" 4086msgid "Failed to parse DNS response\n"
4096msgstr "" 4087msgstr ""
4097 4088
4098#: src/gns/gnunet-service-gns_resolver.c:1112 4089#: src/gns/gnunet-service-gns_resolver.c:1095
4099#, c-format 4090#, c-format
4100msgid "Skipping record of unsupported type %d\n" 4091msgid "Skipping record of unsupported type %d\n"
4101msgstr "" 4092msgstr ""
4102 4093
4103#: src/gns/gnunet-service-gns_resolver.c:1382 4094#: src/gns/gnunet-service-gns_resolver.c:1365
4104#, c-format 4095#, c-format
4105msgid "VPN returned empty result for `%s'\n" 4096msgid "VPN returned empty result for `%s'\n"
4106msgstr "" 4097msgstr ""
4107 4098
4108#: src/gns/gnunet-service-gns_resolver.c:1823 4099#: src/gns/gnunet-service-gns_resolver.c:1806
4109#, c-format 4100#, c-format
4110msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" 4101msgid "GNS lookup resulted in DNS name that is too long (`%s')\n"
4111msgstr "" 4102msgstr ""
4112 4103
4113#: src/gns/gnunet-service-gns_resolver.c:1866 4104#: src/gns/gnunet-service-gns_resolver.c:1849
4114#, c-format 4105#, c-format
4115msgid "GNS lookup failed (zero records found for `%s')\n" 4106msgid "GNS lookup failed (zero records found for `%s')\n"
4116msgstr "" 4107msgstr ""
4117 4108
4118#: src/gns/gnunet-service-gns_resolver.c:2281 4109#: src/gns/gnunet-service-gns_resolver.c:2264
4119msgid "GNS lookup recursion failed (no delegation record found)\n" 4110msgid "GNS lookup recursion failed (no delegation record found)\n"
4120msgstr "" 4111msgstr ""
4121 4112
4122#: src/gns/gnunet-service-gns_resolver.c:2304 4113#: src/gns/gnunet-service-gns_resolver.c:2287
4123#, c-format 4114#, c-format
4124msgid "Failed to cache GNS resolution: %s\n" 4115msgid "Failed to cache GNS resolution: %s\n"
4125msgstr "" 4116msgstr ""
4126 4117
4127#: src/gns/gnunet-service-gns_resolver.c:2467 4118#: src/gns/gnunet-service-gns_resolver.c:2450
4128#, c-format 4119#, c-format
4129msgid "GNS namecache returned empty result for `%s'\n" 4120msgid "GNS namecache returned empty result for `%s'\n"
4130msgstr "" 4121msgstr ""
4131 4122
4132#: src/gns/gnunet-service-gns_resolver.c:2602 4123#: src/gns/gnunet-service-gns_resolver.c:2585
4133#, c-format 4124#, c-format
4134msgid "Zone %s was revoked, resolution fails\n" 4125msgid "Zone %s was revoked, resolution fails\n"
4135msgstr "" 4126msgstr ""
4136 4127
4137#: src/gns/plugin_gnsrecord_gns.c:179 4128#: src/gns/plugin_gnsrecord_gns.c:181
4138#, c-format 4129#, c-format
4139msgid "Unable to parse PKEY record `%s'\n" 4130msgid "Unable to parse PKEY record `%s'\n"
4140msgstr "" 4131msgstr ""
4141 4132
4142#: src/gns/plugin_gnsrecord_gns.c:210 4133#: src/gns/plugin_gnsrecord_gns.c:212
4143#, c-format 4134#, c-format
4144msgid "Unable to parse GNS2DNS record `%s'\n" 4135msgid "Unable to parse GNS2DNS record `%s'\n"
4145msgstr "" 4136msgstr ""
4146 4137
4147#: src/gns/plugin_gnsrecord_gns.c:231 4138#: src/gns/plugin_gnsrecord_gns.c:233
4148#, c-format 4139#, c-format
4149msgid "Failed to serialize GNS2DNS record with value `%s'\n" 4140msgid "Failed to serialize GNS2DNS record with value `%s'\n"
4150msgstr "" 4141msgstr ""
4151 4142
4152#: src/gns/plugin_gnsrecord_gns.c:256 4143#: src/gns/plugin_gnsrecord_gns.c:258
4153#, c-format 4144#, c-format
4154msgid "Unable to parse VPN record string `%s'\n" 4145msgid "Unable to parse VPN record string `%s'\n"
4155msgstr "" 4146msgstr ""
4156 4147
4157#: src/gns/plugin_gnsrecord_gns.c:292 4148#: src/gns/plugin_gnsrecord_gns.c:294
4158#, c-format 4149#, c-format
4159msgid "Unable to parse BOX record string `%s'\n" 4150msgid "Unable to parse BOX record string `%s'\n"
4160msgstr "" 4151msgstr ""
4161 4152
4162#: src/gnsrecord/plugin_gnsrecord_dns.c:357 4153#: src/gnsrecord/plugin_gnsrecord_dns.c:359
4163#, c-format 4154#, c-format
4164msgid "Unable to parse IPv4 address `%s'\n" 4155msgid "Unable to parse IPv4 address `%s'\n"
4165msgstr "" 4156msgstr ""
4166 4157
4167#: src/gnsrecord/plugin_gnsrecord_dns.c:378 4158#: src/gnsrecord/plugin_gnsrecord_dns.c:380
4168#, c-format 4159#, c-format
4169msgid "Failed to serialize NS record with value `%s'\n" 4160msgid "Failed to serialize NS record with value `%s'\n"
4170msgstr "" 4161msgstr ""
4171 4162
4172#: src/gnsrecord/plugin_gnsrecord_dns.c:400 4163#: src/gnsrecord/plugin_gnsrecord_dns.c:402
4173#, c-format 4164#, c-format
4174msgid "Failed to serialize CNAME record with value `%s'\n" 4165msgid "Failed to serialize CNAME record with value `%s'\n"
4175msgstr "" 4166msgstr ""
4176 4167
4177#: src/gnsrecord/plugin_gnsrecord_dns.c:485 4168#: src/gnsrecord/plugin_gnsrecord_dns.c:487
4178#, c-format 4169#, c-format
4179msgid "Failed to serialize CERT record with %u bytes\n" 4170msgid "Failed to serialize CERT record with %u bytes\n"
4180msgstr "" 4171msgstr ""
4181 4172
4182#: src/gnsrecord/plugin_gnsrecord_dns.c:521 4173#: src/gnsrecord/plugin_gnsrecord_dns.c:523
4183#, c-format 4174#, c-format
4184msgid "Unable to parse SOA record `%s'\n" 4175msgid "Unable to parse SOA record `%s'\n"
4185msgstr "" 4176msgstr ""
4186 4177
4187#: src/gnsrecord/plugin_gnsrecord_dns.c:540 4178#: src/gnsrecord/plugin_gnsrecord_dns.c:542
4188#, c-format 4179#, c-format
4189msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n" 4180msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
4190msgstr "" 4181msgstr ""
4191 4182
4192#: src/gnsrecord/plugin_gnsrecord_dns.c:563 4183#: src/gnsrecord/plugin_gnsrecord_dns.c:565
4193#, c-format 4184#, c-format
4194msgid "Failed to serialize PTR record with value `%s'\n" 4185msgid "Failed to serialize PTR record with value `%s'\n"
4195msgstr "" 4186msgstr ""
4196 4187
4197#: src/gnsrecord/plugin_gnsrecord_dns.c:586 4188#: src/gnsrecord/plugin_gnsrecord_dns.c:588
4198#, c-format 4189#, c-format
4199msgid "Unable to parse MX record `%s'\n" 4190msgid "Unable to parse MX record `%s'\n"
4200msgstr "" 4191msgstr ""
4201 4192
4202#: src/gnsrecord/plugin_gnsrecord_dns.c:601 4193#: src/gnsrecord/plugin_gnsrecord_dns.c:603
4203#, c-format 4194#, c-format
4204msgid "Failed to serialize MX record with hostname `%s'\n" 4195msgid "Failed to serialize MX record with hostname `%s'\n"
4205msgstr "" 4196msgstr ""
4206 4197
4207#: src/gnsrecord/plugin_gnsrecord_dns.c:628 4198#: src/gnsrecord/plugin_gnsrecord_dns.c:630
4208#, c-format 4199#, c-format
4209msgid "Unable to parse SRV record `%s'\n" 4200msgid "Unable to parse SRV record `%s'\n"
4210msgstr "" 4201msgstr ""
4211 4202
4212#: src/gnsrecord/plugin_gnsrecord_dns.c:644 4203#: src/gnsrecord/plugin_gnsrecord_dns.c:646
4213#, c-format 4204#, c-format
4214msgid "Failed to serialize SRV record with target `%s'\n" 4205msgid "Failed to serialize SRV record with target `%s'\n"
4215msgstr "" 4206msgstr ""
4216 4207
4217#: src/gnsrecord/plugin_gnsrecord_dns.c:661 4208#: src/gnsrecord/plugin_gnsrecord_dns.c:663
4218#, c-format 4209#, c-format
4219msgid "Unable to parse IPv6 address `%s'\n" 4210msgid "Unable to parse IPv6 address `%s'\n"
4220msgstr "" 4211msgstr ""
4221 4212
4222#: src/gnsrecord/plugin_gnsrecord_dns.c:685 4213#: src/gnsrecord/plugin_gnsrecord_dns.c:687
4223#: src/gnsrecord/plugin_gnsrecord_dns.c:701 4214#: src/gnsrecord/plugin_gnsrecord_dns.c:703
4224#, c-format 4215#, c-format
4225msgid "Unable to parse TLSA record string `%s'\n" 4216msgid "Unable to parse TLSA record string `%s'\n"
4226msgstr "" 4217msgstr ""
4227 4218
4228#: src/hello/gnunet-hello.c:124 4219#: src/hello/gnunet-hello.c:126
4229msgid "Call with name of HELLO file to modify.\n" 4220msgid "Call with name of HELLO file to modify.\n"
4230msgstr "" 4221msgstr ""
4231 4222
4232#: src/hello/gnunet-hello.c:130 4223#: src/hello/gnunet-hello.c:132
4233#, c-format 4224#, c-format
4234msgid "Error accessing file `%s': %s\n" 4225msgid "Error accessing file `%s': %s\n"
4235msgstr "" 4226msgstr ""
4236 4227
4237#: src/hello/gnunet-hello.c:138 4228#: src/hello/gnunet-hello.c:140
4238#, c-format 4229#, c-format
4239msgid "File `%s' is too big to be a HELLO\n" 4230msgid "File `%s' is too big to be a HELLO\n"
4240msgstr "" 4231msgstr ""
4241 4232
4242#: src/hello/gnunet-hello.c:145 4233#: src/hello/gnunet-hello.c:147
4243#, c-format 4234#, c-format
4244msgid "File `%s' is too small to be a HELLO\n" 4235msgid "File `%s' is too small to be a HELLO\n"
4245msgstr "" 4236msgstr ""
4246 4237
4247#: src/hello/gnunet-hello.c:155 src/hello/gnunet-hello.c:196 4238#: src/hello/gnunet-hello.c:157 src/hello/gnunet-hello.c:198
4248#, c-format 4239#, c-format
4249msgid "Error opening file `%s': %s\n" 4240msgid "Error opening file `%s': %s\n"
4250msgstr "" 4241msgstr ""
4251 4242
4252#: src/hello/gnunet-hello.c:172 4243#: src/hello/gnunet-hello.c:174
4253#, c-format 4244#, c-format
4254msgid "Did not find well-formed HELLO in file `%s'\n" 4245msgid "Did not find well-formed HELLO in file `%s'\n"
4255msgstr "" 4246msgstr ""
4256 4247
4257#: src/hello/gnunet-hello.c:208 4248#: src/hello/gnunet-hello.c:210
4258#, c-format 4249#, c-format
4259msgid "Error writing HELLO to file `%s': %s\n" 4250msgid "Error writing HELLO to file `%s': %s\n"
4260msgstr "" 4251msgstr ""
4261 4252
4262#: src/hello/gnunet-hello.c:217 4253#: src/hello/gnunet-hello.c:219
4263#, c-format 4254#, c-format
4264msgid "Modified %u addresses, wrote %u bytes\n" 4255msgid "Modified %u addresses, wrote %u bytes\n"
4265msgstr "" 4256msgstr ""
4266 4257
4267#: src/hello/hello.c:1108 4258#: src/hello/hello.c:1110
4268msgid "Failed to parse HELLO message: missing expiration time\n" 4259msgid "Failed to parse HELLO message: missing expiration time\n"
4269msgstr "" 4260msgstr ""
4270 4261
4271#: src/hello/hello.c:1117 4262#: src/hello/hello.c:1119
4272msgid "Failed to parse HELLO message: invalid expiration time\n" 4263msgid "Failed to parse HELLO message: invalid expiration time\n"
4273msgstr "" 4264msgstr ""
4274 4265
4275#: src/hello/hello.c:1127 4266#: src/hello/hello.c:1129
4276msgid "Failed to parse HELLO message: malformed\n" 4267msgid "Failed to parse HELLO message: malformed\n"
4277msgstr "" 4268msgstr ""
4278 4269
4279#: src/hello/hello.c:1138 4270#: src/hello/hello.c:1140
4280msgid "Failed to parse HELLO message: missing transport plugin\n" 4271msgid "Failed to parse HELLO message: missing transport plugin\n"
4281msgstr "" 4272msgstr ""
4282 4273
4283#: src/hello/hello.c:1156 4274#: src/hello/hello.c:1158
4284#, fuzzy, c-format 4275#, fuzzy, c-format
4285msgid "Plugin `%s' not found, skipping address\n" 4276msgid "Plugin `%s' not found, skipping address\n"
4286msgstr "Extension « %s » introuvable\n" 4277msgstr "Extension « %s » introuvable\n"
4287 4278
4288#: src/hello/hello.c:1164 4279#: src/hello/hello.c:1166
4289#, c-format 4280#, c-format
4290msgid "Plugin `%s' does not support URIs yet\n" 4281msgid "Plugin `%s' does not support URIs yet\n"
4291msgstr "" 4282msgstr ""
4292 4283
4293#: src/hello/hello.c:1179 4284#: src/hello/hello.c:1181
4294#, c-format 4285#, c-format
4295msgid "Failed to parse `%s' as an address for plugin `%s'\n" 4286msgid "Failed to parse `%s' as an address for plugin `%s'\n"
4296msgstr "" 4287msgstr ""
4297 4288
4298#: src/hostlist/gnunet-daemon-hostlist.c:314 4289#: src/hostlist/gnunet-daemon-hostlist.c:316
4299msgid "" 4290msgid ""
4300"None of the functions for the hostlist daemon were enabled. I have no " 4291"None of the functions for the hostlist daemon were enabled. I have no "
4301"reason to run!\n" 4292"reason to run!\n"
4302msgstr "" 4293msgstr ""
4303 4294
4304#: src/hostlist/gnunet-daemon-hostlist.c:374 4295#: src/hostlist/gnunet-daemon-hostlist.c:376
4305msgid "advertise our hostlist to other peers" 4296msgid "advertise our hostlist to other peers"
4306msgstr "" 4297msgstr ""
4307 4298
4308#: src/hostlist/gnunet-daemon-hostlist.c:379 4299#: src/hostlist/gnunet-daemon-hostlist.c:381
4309msgid "" 4300msgid ""
4310"bootstrap using hostlists (it is highly recommended that you always use this " 4301"bootstrap using hostlists (it is highly recommended that you always use this "
4311"option)" 4302"option)"
4312msgstr "" 4303msgstr ""
4313 4304
4314#: src/hostlist/gnunet-daemon-hostlist.c:383 4305#: src/hostlist/gnunet-daemon-hostlist.c:385
4315msgid "enable learning about hostlist servers from other peers" 4306msgid "enable learning about hostlist servers from other peers"
4316msgstr "" 4307msgstr ""
4317 4308
4318#: src/hostlist/gnunet-daemon-hostlist.c:388 4309#: src/hostlist/gnunet-daemon-hostlist.c:390
4319msgid "provide a hostlist server" 4310msgid "provide a hostlist server"
4320msgstr "" 4311msgstr ""
4321 4312
4322#: src/hostlist/gnunet-daemon-hostlist.c:404 4313#: src/hostlist/gnunet-daemon-hostlist.c:406
4323msgid "GNUnet hostlist server and client" 4314msgid "GNUnet hostlist server and client"
4324msgstr "" 4315msgstr ""
4325 4316
4326#: src/hostlist/gnunet-daemon-hostlist_client.c:347 4317#: src/hostlist/gnunet-daemon-hostlist_client.c:349
4327msgid "# bytes downloaded from hostlist servers" 4318msgid "# bytes downloaded from hostlist servers"
4328msgstr "" 4319msgstr ""
4329 4320
4330#: src/hostlist/gnunet-daemon-hostlist_client.c:368 4321#: src/hostlist/gnunet-daemon-hostlist_client.c:370
4331#: src/hostlist/gnunet-daemon-hostlist_client.c:401 4322#: src/hostlist/gnunet-daemon-hostlist_client.c:403
4332msgid "# invalid HELLOs downloaded from hostlist servers" 4323msgid "# invalid HELLOs downloaded from hostlist servers"
4333msgstr "" 4324msgstr ""
4334 4325
4335#: src/hostlist/gnunet-daemon-hostlist_client.c:371 4326#: src/hostlist/gnunet-daemon-hostlist_client.c:373
4336#: src/hostlist/gnunet-daemon-hostlist_client.c:404 4327#: src/hostlist/gnunet-daemon-hostlist_client.c:406
4337#, c-format 4328#, c-format
4338msgid "Invalid `%s' message received from hostlist at `%s'\n" 4329msgid "Invalid `%s' message received from hostlist at `%s'\n"
4339msgstr "" 4330msgstr ""
4340 4331
4341#: src/hostlist/gnunet-daemon-hostlist_client.c:389 4332#: src/hostlist/gnunet-daemon-hostlist_client.c:391
4342msgid "# valid HELLOs downloaded from hostlist servers" 4333msgid "# valid HELLOs downloaded from hostlist servers"
4343msgstr "" 4334msgstr ""
4344 4335
4345#: src/hostlist/gnunet-daemon-hostlist_client.c:659 4336#: src/hostlist/gnunet-daemon-hostlist_client.c:661
4346#: src/hostlist/gnunet-daemon-hostlist_client.c:1405 4337#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
4347msgid "# advertised hostlist URIs" 4338msgid "# advertised hostlist URIs"
4348msgstr "" 4339msgstr ""
4349 4340
4350#: src/hostlist/gnunet-daemon-hostlist_client.c:689 4341#: src/hostlist/gnunet-daemon-hostlist_client.c:691
4351#, c-format 4342#, c-format
4352msgid "# advertised URI `%s' downloaded" 4343msgid "# advertised URI `%s' downloaded"
4353msgstr "" 4344msgstr ""
4354 4345
4355#: src/hostlist/gnunet-daemon-hostlist_client.c:732 4346#: src/hostlist/gnunet-daemon-hostlist_client.c:734
4356#, c-format 4347#, c-format
4357msgid "" 4348msgid ""
4358"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI " 4349"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
4359"gets dismissed.\n" 4350"gets dismissed.\n"
4360msgstr "" 4351msgstr ""
4361 4352
4362#: src/hostlist/gnunet-daemon-hostlist_client.c:860 4353#: src/hostlist/gnunet-daemon-hostlist_client.c:862
4363#, c-format 4354#, c-format
4364msgid "Timeout trying to download hostlist from `%s'\n" 4355msgid "Timeout trying to download hostlist from `%s'\n"
4365msgstr "" 4356msgstr ""
4366 4357
4367#: src/hostlist/gnunet-daemon-hostlist_client.c:874 4358#: src/hostlist/gnunet-daemon-hostlist_client.c:876
4368#, c-format 4359#, c-format
4369msgid "Download limit of %u bytes exceeded, stopping download\n" 4360msgid "Download limit of %u bytes exceeded, stopping download\n"
4370msgstr "" 4361msgstr ""
4371 4362
4372#: src/hostlist/gnunet-daemon-hostlist_client.c:894 4363#: src/hostlist/gnunet-daemon-hostlist_client.c:896
4373#, c-format 4364#, c-format
4374msgid "Download of hostlist from `%s' failed: `%s'\n" 4365msgid "Download of hostlist from `%s' failed: `%s'\n"
4375msgstr "" 4366msgstr ""
4376 4367
4377#: src/hostlist/gnunet-daemon-hostlist_client.c:900 4368#: src/hostlist/gnunet-daemon-hostlist_client.c:902
4378#, c-format 4369#, c-format
4379msgid "Download of hostlist `%s' completed.\n" 4370msgid "Download of hostlist `%s' completed.\n"
4380msgstr "" 4371msgstr ""
4381 4372
4382#: src/hostlist/gnunet-daemon-hostlist_client.c:908 4373#: src/hostlist/gnunet-daemon-hostlist_client.c:910
4383#, c-format 4374#, c-format
4384msgid "Adding successfully tested hostlist `%s' datastore.\n" 4375msgid "Adding successfully tested hostlist `%s' datastore.\n"
4385msgstr "" 4376msgstr ""
4386 4377
4387#: src/hostlist/gnunet-daemon-hostlist_client.c:961 4378#: src/hostlist/gnunet-daemon-hostlist_client.c:963
4388#, c-format 4379#, c-format
4389msgid "Bootstrapping using hostlist at `%s'.\n" 4380msgid "Bootstrapping using hostlist at `%s'.\n"
4390msgstr "" 4381msgstr ""
4391 4382
4392#: src/hostlist/gnunet-daemon-hostlist_client.c:969 4383#: src/hostlist/gnunet-daemon-hostlist_client.c:971
4393msgid "# hostlist downloads initiated" 4384msgid "# hostlist downloads initiated"
4394msgstr "" 4385msgstr ""
4395 4386
4396#: src/hostlist/gnunet-daemon-hostlist_client.c:1096 4387#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
4397#: src/hostlist/gnunet-daemon-hostlist_client.c:1663 4388#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
4398msgid "# milliseconds between hostlist downloads" 4389msgid "# milliseconds between hostlist downloads"
4399msgstr "" 4390msgstr ""
4400 4391
4401#: src/hostlist/gnunet-daemon-hostlist_client.c:1105 4392#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
4402#, c-format 4393#, c-format
4403msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n" 4394msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n"
4404msgstr "" 4395msgstr ""
4405 4396
4406#: src/hostlist/gnunet-daemon-hostlist_client.c:1164 4397#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
4407#: src/hostlist/gnunet-daemon-hostlist_client.c:1185 4398#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
4408msgid "# active connections" 4399msgid "# active connections"
4409msgstr "" 4400msgstr ""
4410 4401
4411#: src/hostlist/gnunet-daemon-hostlist_client.c:1351 4402#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
4412#, c-format 4403#, c-format
4413msgid "Loading saved hostlist entries from file `%s' \n" 4404msgid "Loading saved hostlist entries from file `%s' \n"
4414msgstr "" 4405msgstr ""
4415 4406
4416#: src/hostlist/gnunet-daemon-hostlist_client.c:1356 4407#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
4417#, c-format 4408#, c-format
4418msgid "Hostlist file `%s' does not exist\n" 4409msgid "Hostlist file `%s' does not exist\n"
4419msgstr "" 4410msgstr ""
4420 4411
4421#: src/hostlist/gnunet-daemon-hostlist_client.c:1365 4412#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
4422#, c-format 4413#, c-format
4423msgid "Could not open file `%s' for reading to load hostlists: %s\n" 4414msgid "Could not open file `%s' for reading to load hostlists: %s\n"
4424msgstr "" 4415msgstr ""
4425 4416
4426#: src/hostlist/gnunet-daemon-hostlist_client.c:1399 4417#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
4427#, c-format 4418#, c-format
4428msgid "%u hostlist URIs loaded from file\n" 4419msgid "%u hostlist URIs loaded from file\n"
4429msgstr "" 4420msgstr ""
4430 4421
4431#: src/hostlist/gnunet-daemon-hostlist_client.c:1402 4422#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
4432msgid "# hostlist URIs read from file" 4423msgid "# hostlist URIs read from file"
4433msgstr "" 4424msgstr ""
4434 4425
4435#: src/hostlist/gnunet-daemon-hostlist_client.c:1448 4426#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
4436#, c-format 4427#, c-format
4437msgid "Could not open file `%s' for writing to save hostlists: %s\n" 4428msgid "Could not open file `%s' for writing to save hostlists: %s\n"
4438msgstr "" 4429msgstr ""
4439 4430
4440#: src/hostlist/gnunet-daemon-hostlist_client.c:1455 4431#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
4441#, c-format 4432#, c-format
4442msgid "Writing %u hostlist URIs to `%s'\n" 4433msgid "Writing %u hostlist URIs to `%s'\n"
4443msgstr "" 4434msgstr ""
4444 4435
4445#: src/hostlist/gnunet-daemon-hostlist_client.c:1479 4436#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
4446#: src/hostlist/gnunet-daemon-hostlist_client.c:1496 4437#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
4447#, c-format 4438#, c-format
4448msgid "Error writing hostlist URIs to file `%s'\n" 4439msgid "Error writing hostlist URIs to file `%s'\n"
4449msgstr "" 4440msgstr ""
4450 4441
4451#: src/hostlist/gnunet-daemon-hostlist_client.c:1491 4442#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
4452msgid "# hostlist URIs written to file" 4443msgid "# hostlist URIs written to file"
4453msgstr "" 4444msgstr ""
4454 4445
4455#: src/hostlist/gnunet-daemon-hostlist_client.c:1593 4446#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
4456#: src/transport/plugin_transport_http_client.c:2272 4447#: src/transport/plugin_transport_http_client.c:2274
4457#, c-format 4448#, c-format
4458msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n" 4449msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
4459msgstr "" 4450msgstr ""
4460 4451
4461#: src/hostlist/gnunet-daemon-hostlist_client.c:1622 4452#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
4462msgid "Learning is enabled on this peer\n" 4453msgid "Learning is enabled on this peer\n"
4463msgstr "" 4454msgstr ""
4464 4455
4465#: src/hostlist/gnunet-daemon-hostlist_client.c:1636 4456#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
4466msgid "Learning is not enabled on this peer\n" 4457msgid "Learning is not enabled on this peer\n"
4467msgstr "" 4458msgstr ""
4468 4459
4469#: src/hostlist/gnunet-daemon-hostlist_client.c:1649 4460#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
4470#, c-format 4461#, c-format
4471msgid "" 4462msgid ""
4472"Since learning is not enabled on this peer, hostlist file `%s' was removed\n" 4463"Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
4473msgstr "" 4464msgstr ""
4474 4465
4475#: src/hostlist/gnunet-daemon-hostlist_server.c:174 4466#: src/hostlist/gnunet-daemon-hostlist_server.c:176
4476msgid "bytes in hostlist" 4467msgid "bytes in hostlist"
4477msgstr "" 4468msgstr ""
4478 4469
4479#: src/hostlist/gnunet-daemon-hostlist_server.c:199 4470#: src/hostlist/gnunet-daemon-hostlist_server.c:201
4480msgid "expired addresses encountered" 4471msgid "expired addresses encountered"
4481msgstr "" 4472msgstr ""
4482 4473
4483#: src/hostlist/gnunet-daemon-hostlist_server.c:235 4474#: src/hostlist/gnunet-daemon-hostlist_server.c:237
4484#: src/hostlist/gnunet-daemon-hostlist_server.c:529 4475#: src/hostlist/gnunet-daemon-hostlist_server.c:531
4485#: src/peerinfo-tool/gnunet-peerinfo.c:383 4476#: src/peerinfo-tool/gnunet-peerinfo.c:385
4486#: src/peerinfo-tool/gnunet-peerinfo.c:532 4477#: src/peerinfo-tool/gnunet-peerinfo.c:534
4487#: src/topology/gnunet-daemon-topology.c:860 4478#: src/topology/gnunet-daemon-topology.c:862
4488#, c-format 4479#, c-format
4489msgid "Error in communication with PEERINFO service: %s\n" 4480msgid "Error in communication with PEERINFO service: %s\n"
4490msgstr "" 4481msgstr ""
4491 4482
4492#: src/hostlist/gnunet-daemon-hostlist_server.c:259 4483#: src/hostlist/gnunet-daemon-hostlist_server.c:261
4493msgid "HELLOs without addresses encountered (ignored)" 4484msgid "HELLOs without addresses encountered (ignored)"
4494msgstr "" 4485msgstr ""
4495 4486
4496#: src/hostlist/gnunet-daemon-hostlist_server.c:276 4487#: src/hostlist/gnunet-daemon-hostlist_server.c:278
4497msgid "bytes not included in hostlist (size limit)" 4488msgid "bytes not included in hostlist (size limit)"
4498msgstr "" 4489msgstr ""
4499 4490
4500#: src/hostlist/gnunet-daemon-hostlist_server.c:380 4491#: src/hostlist/gnunet-daemon-hostlist_server.c:382
4501#, c-format 4492#, c-format
4502msgid "Refusing `%s' request to hostlist server\n" 4493msgid "Refusing `%s' request to hostlist server\n"
4503msgstr "" 4494msgstr ""
4504 4495
4505#: src/hostlist/gnunet-daemon-hostlist_server.c:383 4496#: src/hostlist/gnunet-daemon-hostlist_server.c:385
4506msgid "hostlist requests refused (not HTTP GET)" 4497msgid "hostlist requests refused (not HTTP GET)"
4507msgstr "" 4498msgstr ""
4508 4499
4509#: src/hostlist/gnunet-daemon-hostlist_server.c:395 4500#: src/hostlist/gnunet-daemon-hostlist_server.c:397
4510#, c-format 4501#, c-format
4511msgid "Refusing `%s' request with %llu bytes of upload data\n" 4502msgid "Refusing `%s' request with %llu bytes of upload data\n"
4512msgstr "" 4503msgstr ""
4513 4504
4514#: src/hostlist/gnunet-daemon-hostlist_server.c:399 4505#: src/hostlist/gnunet-daemon-hostlist_server.c:401
4515msgid "hostlist requests refused (upload data)" 4506msgid "hostlist requests refused (upload data)"
4516msgstr "" 4507msgstr ""
4517 4508
4518#: src/hostlist/gnunet-daemon-hostlist_server.c:406 4509#: src/hostlist/gnunet-daemon-hostlist_server.c:408
4519msgid "Could not handle hostlist request since I do not have a response yet\n" 4510msgid "Could not handle hostlist request since I do not have a response yet\n"
4520msgstr "" 4511msgstr ""
4521 4512
4522#: src/hostlist/gnunet-daemon-hostlist_server.c:409 4513#: src/hostlist/gnunet-daemon-hostlist_server.c:411
4523msgid "hostlist requests refused (not ready)" 4514msgid "hostlist requests refused (not ready)"
4524msgstr "" 4515msgstr ""
4525 4516
4526#: src/hostlist/gnunet-daemon-hostlist_server.c:414 4517#: src/hostlist/gnunet-daemon-hostlist_server.c:416
4527msgid "Received request for our hostlist\n" 4518msgid "Received request for our hostlist\n"
4528msgstr "" 4519msgstr ""
4529 4520
4530#: src/hostlist/gnunet-daemon-hostlist_server.c:416 4521#: src/hostlist/gnunet-daemon-hostlist_server.c:418
4531msgid "hostlist requests processed" 4522msgid "hostlist requests processed"
4532msgstr "" 4523msgstr ""
4533 4524
4534#: src/hostlist/gnunet-daemon-hostlist_server.c:464 4525#: src/hostlist/gnunet-daemon-hostlist_server.c:466
4535msgid "# hostlist advertisements send" 4526msgid "# hostlist advertisements send"
4536msgstr "" 4527msgstr ""
4537 4528
4538#: src/hostlist/gnunet-daemon-hostlist_server.c:677 4529#: src/hostlist/gnunet-daemon-hostlist_server.c:679
4539#: src/transport/gnunet-service-transport.c:2813 4530#: src/transport/gnunet-service-transport.c:2814
4540msgid "Could not access PEERINFO service. Exiting.\n" 4531msgid "Could not access PEERINFO service. Exiting.\n"
4541msgstr "" 4532msgstr ""
4542 4533
4543#: src/hostlist/gnunet-daemon-hostlist_server.c:689 4534#: src/hostlist/gnunet-daemon-hostlist_server.c:691
4544#, c-format 4535#, c-format
4545msgid "Invalid port number %llu. Exiting.\n" 4536msgid "Invalid port number %llu. Exiting.\n"
4546msgstr "" 4537msgstr ""
4547 4538
4548#: src/hostlist/gnunet-daemon-hostlist_server.c:701 4539#: src/hostlist/gnunet-daemon-hostlist_server.c:703
4549#, c-format 4540#, c-format
4550msgid "Hostlist service starts on %s:%llu\n" 4541msgid "Hostlist service starts on %s:%llu\n"
4551msgstr "" 4542msgstr ""
4552 4543
4553#: src/hostlist/gnunet-daemon-hostlist_server.c:716 4544#: src/hostlist/gnunet-daemon-hostlist_server.c:718
4554#, c-format 4545#, c-format
4555msgid "Address to obtain hostlist: `%s'\n" 4546msgid "Address to obtain hostlist: `%s'\n"
4556msgstr "" 4547msgstr ""
4557 4548
4558#: src/hostlist/gnunet-daemon-hostlist_server.c:729 4549#: src/hostlist/gnunet-daemon-hostlist_server.c:731
4559msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4550msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4560msgstr "" 4551msgstr ""
4561 4552
4562#: src/hostlist/gnunet-daemon-hostlist_server.c:746 4553#: src/hostlist/gnunet-daemon-hostlist_server.c:748
4563msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n" 4554msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
4564msgstr "" 4555msgstr ""
4565 4556
4566#: src/hostlist/gnunet-daemon-hostlist_server.c:767 4557#: src/hostlist/gnunet-daemon-hostlist_server.c:769
4567#, c-format 4558#, c-format
4568msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4559msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4569msgstr "" 4560msgstr ""
4570 4561
4571#: src/hostlist/gnunet-daemon-hostlist_server.c:787 4562#: src/hostlist/gnunet-daemon-hostlist_server.c:789
4572#, c-format 4563#, c-format
4573msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n" 4564msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
4574msgstr "" 4565msgstr ""
4575 4566
4576#: src/hostlist/gnunet-daemon-hostlist_server.c:827 4567#: src/hostlist/gnunet-daemon-hostlist_server.c:829
4577#, c-format 4568#, c-format
4578msgid "Could not start hostlist HTTP server on port %u\n" 4569msgid "Could not start hostlist HTTP server on port %u\n"
4579msgstr "" 4570msgstr ""
4580 4571
4581#: src/identity/gnunet-identity.c:177 4572#: src/identity/gnunet-identity.c:179
4582#, c-format 4573#, c-format
4583msgid "Failed to create ego: %s\n" 4574msgid "Failed to create ego: %s\n"
4584msgstr "" 4575msgstr ""
4585 4576
4586#: src/identity/gnunet-identity.c:199 4577#: src/identity/gnunet-identity.c:201
4587#, c-format 4578#, c-format
4588msgid "Failed to set default ego: %s\n" 4579msgid "Failed to set default ego: %s\n"
4589msgstr "" 4580msgstr ""
4590 4581
4591#: src/identity/gnunet-identity.c:354 4582#: src/identity/gnunet-identity.c:356
4592msgid "create ego NAME" 4583msgid "create ego NAME"
4593msgstr "" 4584msgstr ""
4594 4585
4595#: src/identity/gnunet-identity.c:360 4586#: src/identity/gnunet-identity.c:362
4596msgid "delete ego NAME " 4587msgid "delete ego NAME "
4597msgstr "" 4588msgstr ""
4598 4589
4599#: src/identity/gnunet-identity.c:365 4590#: src/identity/gnunet-identity.c:367
4600msgid "display all egos" 4591msgid "display all egos"
4601msgstr "" 4592msgstr ""
4602 4593
4603#: src/identity/gnunet-identity.c:371 4594#: src/identity/gnunet-identity.c:373
4604msgid "" 4595msgid ""
4605"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)" 4596"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
4606msgstr "" 4597msgstr ""
4607 4598
4608#: src/identity/gnunet-identity.c:376 4599#: src/identity/gnunet-identity.c:378
4609msgid "run in monitor mode egos" 4600msgid "run in monitor mode egos"
4610msgstr "" 4601msgstr ""
4611 4602
4612#: src/identity/gnunet-identity.c:382 4603#: src/identity/gnunet-identity.c:384
4613msgid "" 4604msgid ""
4614"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)" 4605"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
4615msgstr "" 4606msgstr ""
4616 4607
4617#: src/identity/gnunet-identity.c:396 4608#: src/identity/gnunet-identity.c:398
4618msgid "Maintain egos" 4609msgid "Maintain egos"
4619msgstr "" 4610msgstr ""
4620 4611
4621#: src/identity/gnunet-service-identity.c:389 4612#: src/identity/gnunet-service-identity.c:391
4622msgid "no default known" 4613msgid "no default known"
4623msgstr "" 4614msgstr ""
4624 4615
4625#: src/identity/gnunet-service-identity.c:414 4616#: src/identity/gnunet-service-identity.c:416
4626msgid "default configured, but ego unknown (internal error)" 4617msgid "default configured, but ego unknown (internal error)"
4627msgstr "" 4618msgstr ""
4628 4619
4629#: src/identity/gnunet-service-identity.c:505 4620#: src/identity/gnunet-service-identity.c:507
4630#: src/identity/gnunet-service-identity.c:788 4621#: src/identity/gnunet-service-identity.c:790
4631#: src/identity/gnunet-service-identity.c:916 4622#: src/identity/gnunet-service-identity.c:918
4632#, c-format 4623#, c-format
4633msgid "Failed to write subsystem default identifier map to `%s'.\n" 4624msgid "Failed to write subsystem default identifier map to `%s'.\n"
4634msgstr "" 4625msgstr ""
4635 4626
4636#: src/identity/gnunet-service-identity.c:513 4627#: src/identity/gnunet-service-identity.c:515
4637msgid "Unknown ego specified for service (internal error)" 4628msgid "Unknown ego specified for service (internal error)"
4638msgstr "" 4629msgstr ""
4639 4630
4640#: src/identity/gnunet-service-identity.c:608 4631#: src/identity/gnunet-service-identity.c:610
4641msgid "identifier already in use for another ego" 4632msgid "identifier already in use for another ego"
4642msgstr "" 4633msgstr ""
4643 4634
4644#: src/identity/gnunet-service-identity.c:763 4635#: src/identity/gnunet-service-identity.c:765
4645msgid "target name already exists" 4636msgid "target name already exists"
4646msgstr "" 4637msgstr ""
4647 4638
4648#: src/identity/gnunet-service-identity.c:806 4639#: src/identity/gnunet-service-identity.c:808
4649#: src/identity/gnunet-service-identity.c:934 4640#: src/identity/gnunet-service-identity.c:936
4650msgid "no matching ego found" 4641msgid "no matching ego found"
4651msgstr "" 4642msgstr ""
4652 4643
4653#: src/identity/gnunet-service-identity.c:969 4644#: src/identity/gnunet-service-identity.c:971
4654#, c-format 4645#, c-format
4655msgid "Failed to parse ego information in `%s'\n" 4646msgid "Failed to parse ego information in `%s'\n"
4656msgstr "" 4647msgstr ""
4657 4648
4658#: src/identity/gnunet-service-identity.c:1027 4649#: src/identity/gnunet-service-identity.c:1029
4659#, c-format 4650#, c-format
4660msgid "Failed to parse subsystem identity configuration file `%s'\n" 4651msgid "Failed to parse subsystem identity configuration file `%s'\n"
4661msgstr "" 4652msgstr ""
4662 4653
4663#: src/identity/gnunet-service-identity.c:1037 4654#: src/identity/gnunet-service-identity.c:1039
4664#, c-format 4655#, c-format
4665msgid "Failed to create directory `%s' for storing egos\n" 4656msgid "Failed to create directory `%s' for storing egos\n"
4666msgstr "" 4657msgstr ""
4667 4658
4668#: src/json/json.c:121 4659#: src/json/json.c:123
4669#, fuzzy, c-format 4660#, fuzzy, c-format
4670msgid "Failed to parse JSON in option `%s': %s (%s)\n" 4661msgid "Failed to parse JSON in option `%s': %s (%s)\n"
4671msgstr "Résolution de « %s » échouée : %s\n" 4662msgstr "Résolution de « %s » échouée : %s\n"
4672 4663
4673#: src/multicast/gnunet-multicast.c:46 src/multicast/gnunet-multicast.c:70 4664#: src/my/my.c:196 src/my/my.c:215
4674msgid "This command doesn't do anything yet."
4675msgstr ""
4676
4677#: src/my/my.c:194 src/my/my.c:213
4678#, c-format 4665#, c-format
4679msgid "%s failed at %s:%d with error: %s\n" 4666msgid "%s failed at %s:%d with error: %s\n"
4680msgstr "" 4667msgstr ""
4681 4668
4682#: src/mysql/mysql.c:178 4669#: src/mysql/mysql.c:180
4683#, c-format 4670#, c-format
4684msgid "Trying to use file `%s' for MySQL configuration.\n" 4671msgid "Trying to use file `%s' for MySQL configuration.\n"
4685msgstr "" 4672msgstr ""
4686 4673
4687#: src/mysql/mysql.c:185 4674#: src/mysql/mysql.c:187
4688#, c-format 4675#, c-format
4689msgid "Could not access file `%s': %s\n" 4676msgid "Could not access file `%s': %s\n"
4690msgstr "" 4677msgstr ""
4691 4678
4692#: src/namecache/gnunet-namecache.c:105 4679#: src/namecache/gnunet-namecache.c:107
4693#, c-format 4680#, c-format
4694msgid "No records found for `%s'" 4681msgid "No records found for `%s'"
4695msgstr "" 4682msgstr ""
4696 4683
4697#: src/namecache/gnunet-namecache.c:120 src/namestore/gnunet-namestore.c:424 4684#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
4698#, c-format 4685#, c-format
4699msgid "\tCorrupt or unsupported record of type %u\n" 4686msgid "\tCorrupt or unsupported record of type %u\n"
4700msgstr "" 4687msgstr ""
4701 4688
4702#: src/namecache/gnunet-namecache.c:181 4689#: src/namecache/gnunet-namecache.c:183
4703#, c-format 4690#, c-format
4704msgid "You must specify which zone should be accessed\n" 4691msgid "You must specify which zone should be accessed\n"
4705msgstr "" 4692msgstr ""
4706 4693
4707#: src/namecache/gnunet-namecache.c:191 4694#: src/namecache/gnunet-namecache.c:193
4708#, fuzzy, c-format 4695#, fuzzy, c-format
4709msgid "Invalid public key for zone `%s'\n" 4696msgid "Invalid public key for zone `%s'\n"
4710msgstr "fornat invalide : « %s »\n" 4697msgstr "fornat invalide : « %s »\n"
4711 4698
4712#: src/namecache/gnunet-namecache.c:199 4699#: src/namecache/gnunet-namecache.c:201
4713#, c-format 4700#, c-format
4714msgid "You must specify a name\n" 4701msgid "You must specify a name\n"
4715msgstr "" 4702msgstr ""
4716 4703
4717#: src/namecache/gnunet-namecache.c:230 src/namestore/gnunet-namestore.c:1290 4704#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
4718msgid "name of the record to add/delete/display" 4705msgid "name of the record to add/delete/display"
4719msgstr "" 4706msgstr ""
4720 4707
4721#: src/namecache/gnunet-namecache.c:236 4708#: src/namecache/gnunet-namecache.c:238
4722msgid "spezifies the public key of the zone to look in" 4709msgid "spezifies the public key of the zone to look in"
4723msgstr "" 4710msgstr ""
4724 4711
4725#: src/namecache/gnunet-namecache.c:248 src/namestore/gnunet-namestore.c:1342 4712#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
4726msgid "GNUnet zone manipulation tool" 4713msgid "GNUnet zone manipulation tool"
4727msgstr "" 4714msgstr ""
4728 4715
4729#: src/namecache/namecache_api.c:294 4716#: src/namecache/namecache_api.c:296
4730msgid "Namecache failed to cache block" 4717msgid "Namecache failed to cache block"
4731msgstr "" 4718msgstr ""
4732 4719
4733#: src/namecache/namecache_api.c:381 4720#: src/namecache/namecache_api.c:383
4734msgid "Error communicating with namecache service" 4721msgid "Error communicating with namecache service"
4735msgstr "" 4722msgstr ""
4736 4723
4737#: src/namecache/plugin_namecache_flat.c:119 4724#: src/namecache/plugin_namecache_flat.c:121
4738#: src/namecache/plugin_namecache_flat.c:253 4725#: src/namecache/plugin_namecache_flat.c:255
4739#: src/namestore/plugin_namestore_heap.c:146 4726#: src/namestore/plugin_namestore_heap.c:148
4740#: src/namestore/plugin_namestore_heap.c:393 4727#: src/namestore/plugin_namestore_heap.c:395
4741#: src/peerstore/plugin_peerstore_flat.c:377 4728#: src/peerstore/plugin_peerstore_flat.c:379
4742#: src/peerstore/plugin_peerstore_flat.c:536 4729#: src/peerstore/plugin_peerstore_flat.c:538
4743#, c-format 4730#, c-format
4744msgid "Unable to initialize file: %s.\n" 4731msgid "Unable to initialize file: %s.\n"
4745msgstr "" 4732msgstr ""
4746 4733
4747#: src/namecache/plugin_namecache_flat.c:130 4734#: src/namecache/plugin_namecache_flat.c:132
4748#: src/namestore/plugin_namestore_heap.c:157 4735#: src/namestore/plugin_namestore_heap.c:159
4749#: src/peerstore/plugin_peerstore_flat.c:392 4736#: src/peerstore/plugin_peerstore_flat.c:394
4750#, c-format 4737#, c-format
4751msgid "Unable to get filesize: %s.\n" 4738msgid "Unable to get filesize: %s.\n"
4752msgstr "" 4739msgstr ""
4753 4740
4754#: src/namecache/plugin_namecache_flat.c:149 4741#: src/namecache/plugin_namecache_flat.c:151
4755#: src/namestore/plugin_namestore_heap.c:170 4742#: src/namestore/plugin_namestore_heap.c:172
4756#: src/peerstore/plugin_peerstore_flat.c:404 4743#: src/peerstore/plugin_peerstore_flat.c:406
4757#, fuzzy, c-format 4744#, fuzzy, c-format
4758msgid "Unable to read file: %s.\n" 4745msgid "Unable to read file: %s.\n"
4759msgstr "Résolution de « %s » échouée\n" 4746msgstr "Résolution de « %s » échouée\n"
4760 4747
4761#: src/namecache/plugin_namecache_flat.c:408 4748#: src/namecache/plugin_namecache_flat.c:410
4762msgid "flat plugin running\n" 4749msgid "flat plugin running\n"
4763msgstr "" 4750msgstr ""
4764 4751
4765#: src/namestore/gnunet-namestore.c:311 4752#: src/namecache/plugin_namecache_sqlite.c:183
4753#: src/namecache/plugin_namecache_sqlite.c:197
4754#: src/namestore/plugin_namestore_sqlite.c:219
4755#: src/namestore/plugin_namestore_sqlite.c:230
4756#, fuzzy, c-format
4757msgid "Failed to setup database at `%s'\n"
4758msgstr "Échec du démarrage de %s\n"
4759
4760#: src/namestore/gnunet-namestore.c:341
4766#, c-format 4761#, c-format
4767msgid "Adding record failed: %s\n" 4762msgid "Adding record failed: %s\n"
4768msgstr "" 4763msgstr ""
4769 4764
4770#: src/namestore/gnunet-namestore.c:341 4765#: src/namestore/gnunet-namestore.c:371
4771#, c-format 4766#, c-format
4772msgid "Deleting record failed, record does not exist%s%s\n" 4767msgid "Deleting record failed, record does not exist%s%s\n"
4773msgstr "" 4768msgstr ""
4774 4769
4775#: src/namestore/gnunet-namestore.c:348 4770#: src/namestore/gnunet-namestore.c:378
4776#, c-format 4771#, c-format
4777msgid "Deleting record failed%s%s\n" 4772msgid "Deleting record failed%s%s\n"
4778msgstr "" 4773msgstr ""
4779 4774
4780#: src/namestore/gnunet-namestore.c:628 src/namestore/gnunet-namestore.c:636 4775#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
4781#, c-format 4776#, c-format
4782msgid "A %s record exists already under `%s', no other records can be added.\n" 4777msgid "A %s record exists already under `%s', no other records can be added.\n"
4783msgstr "" 4778msgstr ""
4784 4779
4785#: src/namestore/gnunet-namestore.c:650 src/namestore/gnunet-namestore.c:662 4780#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
4786#, c-format 4781#, c-format
4787msgid "Records already exist under `%s', cannot add `%s' record.\n" 4782msgid "Records already exist under `%s', cannot add `%s' record.\n"
4788msgstr "" 4783msgstr ""
4789 4784
4790#: src/namestore/gnunet-namestore.c:675 4785#: src/namestore/gnunet-namestore.c:707
4791#, c-format 4786#, c-format
4792msgid "" 4787msgid ""
4793"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n" 4788"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
4794msgstr "" 4789msgstr ""
4795 4790
4796#: src/namestore/gnunet-namestore.c:809 4791#: src/namestore/gnunet-namestore.c:837
4797#, c-format 4792#, c-format
4798msgid "There are no records under label `%s' that could be deleted.\n" 4793msgid "There are no records under label `%s' that could be deleted.\n"
4799msgstr "" 4794msgstr ""
4800 4795
4801#: src/namestore/gnunet-namestore.c:850 4796#: src/namestore/gnunet-namestore.c:878
4802#, c-format 4797#, c-format
4803msgid "" 4798msgid ""
4804"There are no records under label `%s' that match the request for deletion.\n" 4799"There are no records under label `%s' that match the request for deletion.\n"
4805msgstr "" 4800msgstr ""
4806 4801
4807#: src/namestore/gnunet-namestore.c:902 4802#: src/namestore/gnunet-namestore.c:965
4803#, fuzzy, c-format
4804msgid "Failed to replace records: %s\n"
4805msgstr "Résolution de « %s » échouée : %s\n"
4806
4807#: src/namestore/gnunet-namestore.c:1009
4808#, c-format 4808#, c-format
4809msgid "No options given\n" 4809msgid "No options given\n"
4810msgstr "" 4810msgstr ""
4811 4811
4812#: src/namestore/gnunet-namestore.c:921 src/namestore/gnunet-namestore.c:930 4812#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
4813#: src/namestore/gnunet-namestore.c:949 src/namestore/gnunet-namestore.c:972 4813#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
4814#: src/namestore/gnunet-namestore.c:1026 4814#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
4815#, c-format 4815#, c-format
4816msgid "Missing option `%s' for operation `%s'\n" 4816msgid "Missing option `%s' for operation `%s'\n"
4817msgstr "" 4817msgstr ""
4818 4818
4819#: src/namestore/gnunet-namestore.c:922 src/namestore/gnunet-namestore.c:931 4819#: src/namestore/gnunet-namestore.c:1033
4820#: src/namestore/gnunet-namestore.c:950 src/namestore/gnunet-namestore.c:974 4820msgid "replace"
4821msgstr ""
4822
4823#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
4824#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
4821msgid "add" 4825msgid "add"
4822msgstr "ajouter" 4826msgstr "ajouter"
4823 4827
4824#: src/namestore/gnunet-namestore.c:940 4828#: src/namestore/gnunet-namestore.c:1084
4825#, c-format 4829#, c-format
4826msgid "Unsupported type `%s'\n" 4830msgid "Unsupported type `%s'\n"
4827msgstr "" 4831msgstr ""
4828 4832
4829#: src/namestore/gnunet-namestore.c:962 4833#: src/namestore/gnunet-namestore.c:1106
4830#, c-format 4834#, c-format
4831msgid "Value `%s' invalid for record type `%s'\n" 4835msgid "Value `%s' invalid for record type `%s'\n"
4832msgstr "" 4836msgstr ""
4833 4837
4834#: src/namestore/gnunet-namestore.c:1007 4838#: src/namestore/gnunet-namestore.c:1129
4835#, c-format 4839#, c-format
4836msgid "Invalid time format `%s'\n" 4840msgid "Invalid time format `%s'\n"
4837msgstr "" 4841msgstr ""
4838 4842
4839#: src/namestore/gnunet-namestore.c:1027 4843#: src/namestore/gnunet-namestore.c:1149
4840msgid "del" 4844msgid "del"
4841msgstr "supprimer" 4845msgstr "supprimer"
4842 4846
4843#: src/namestore/gnunet-namestore.c:1070 4847#: src/namestore/gnunet-namestore.c:1192
4844#, c-format 4848#, c-format
4845msgid "Invalid public key for reverse lookup `%s'\n" 4849msgid "Invalid public key for reverse lookup `%s'\n"
4846msgstr "" 4850msgstr ""
4847 4851
4848#: src/namestore/gnunet-namestore.c:1099 4852#: src/namestore/gnunet-namestore.c:1221
4849#: src/peerinfo-tool/gnunet-peerinfo.c:773 4853#: src/peerinfo-tool/gnunet-peerinfo.c:775
4850#, c-format 4854#, c-format
4851msgid "Invalid URI `%s'\n" 4855msgid "Invalid URI `%s'\n"
4852msgstr "URI invalide « %s »\n" 4856msgstr "URI invalide « %s »\n"
4853 4857
4854#: src/namestore/gnunet-namestore.c:1134 4858#: src/namestore/gnunet-namestore.c:1249
4855#, c-format 4859#, c-format
4856msgid "Invalid nick `%s'\n" 4860msgid "Invalid nick `%s'\n"
4857msgstr "" 4861msgstr ""
4858 4862
4859#: src/namestore/gnunet-namestore.c:1174 4863#: src/namestore/gnunet-namestore.c:1289
4860#, c-format 4864#, c-format
4861msgid "No default ego configured in identity service\n" 4865msgid "No default ego configured in identity service\n"
4862msgstr "" 4866msgstr ""
4863 4867
4864#: src/namestore/gnunet-namestore.c:1238 4868#: src/namestore/gnunet-namestore.c:1341
4869#, c-format
4870msgid "Superfluous command line arguments (starting with `%s') ignored\n"
4871msgstr ""
4872
4873#: src/namestore/gnunet-namestore.c:1357
4865#, c-format 4874#, c-format
4866msgid "Cannot connect to identity service\n" 4875msgid "Cannot connect to identity service\n"
4867msgstr "" 4876msgstr ""
4868 4877
4869#: src/namestore/gnunet-namestore.c:1263 4878#: src/namestore/gnunet-namestore.c:1407
4879msgid "Empty record line argument is not allowed.\n"
4880msgstr ""
4881
4882#: src/namestore/gnunet-namestore.c:1423
4883#, c-format
4884msgid "Invalid expiration time `%s' (must be without unit)\n"
4885msgstr ""
4886
4887#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
4888#: src/namestore/gnunet-namestore.c:1470
4889#, c-format
4890msgid "Missing entries in record line `%s'.\n"
4891msgstr ""
4892
4893#: src/namestore/gnunet-namestore.c:1444
4894#, fuzzy, c-format
4895msgid "Unknown record type `%s'\n"
4896msgstr "Commande « %s » inconnue\n"
4897
4898#: src/namestore/gnunet-namestore.c:1484
4899#, fuzzy, c-format
4900msgid "Invalid record data for type %s: `%s'.\n"
4901msgstr "fornat invalide : « %s »\n"
4902
4903#: src/namestore/gnunet-namestore.c:1548
4870msgid "add record" 4904msgid "add record"
4871msgstr "ajouter un enregistrement" 4905msgstr "ajouter un enregistrement"
4872 4906
4873#: src/namestore/gnunet-namestore.c:1267 4907#: src/namestore/gnunet-namestore.c:1552
4874msgid "delete record" 4908msgid "delete record"
4875msgstr "suprimer un enregistrement" 4909msgstr "suprimer un enregistrement"
4876 4910
4877#: src/namestore/gnunet-namestore.c:1271 4911#: src/namestore/gnunet-namestore.c:1556
4878msgid "display records" 4912msgid "display records"
4879msgstr "afficher les enregistrements" 4913msgstr "afficher les enregistrements"
4880 4914
4881#: src/namestore/gnunet-namestore.c:1276 4915#: src/namestore/gnunet-namestore.c:1561
4882msgid "" 4916msgid ""
4883"expiration time for record to use (for adding only), \"never\" is possible" 4917"expiration time for record to use (for adding only), \"never\" is possible"
4884msgstr "" 4918msgstr ""
4885 4919
4886#: src/namestore/gnunet-namestore.c:1281 4920#: src/namestore/gnunet-namestore.c:1566
4887msgid "set the desired nick name for the zone" 4921msgid "set the desired nick name for the zone"
4888msgstr "" 4922msgstr ""
4889 4923
4890#: src/namestore/gnunet-namestore.c:1285 4924#: src/namestore/gnunet-namestore.c:1570
4891msgid "monitor changes in the namestore" 4925msgid "monitor changes in the namestore"
4892msgstr "" 4926msgstr ""
4893 4927
4894#: src/namestore/gnunet-namestore.c:1295 4928#: src/namestore/gnunet-namestore.c:1580
4895msgid "determine our name for the given PKEY" 4929msgid "determine our name for the given PKEY"
4896msgstr "" 4930msgstr ""
4897 4931
4898#: src/namestore/gnunet-namestore.c:1300 4932#: src/namestore/gnunet-namestore.c:1585
4933msgid ""
4934"set record set to values given by (possibly multiple) RECORDLINES; can be "
4935"specified multiple times"
4936msgstr ""
4937
4938#: src/namestore/gnunet-namestore.c:1590
4899msgid "type of the record to add/delete/display" 4939msgid "type of the record to add/delete/display"
4900msgstr "" 4940msgstr ""
4901 4941
4902#: src/namestore/gnunet-namestore.c:1305 4942#: src/namestore/gnunet-namestore.c:1595
4903msgid "URI to import into our zone" 4943msgid "URI to import into our zone"
4904msgstr "" 4944msgstr ""
4905 4945
4906#: src/namestore/gnunet-namestore.c:1310 4946#: src/namestore/gnunet-namestore.c:1600
4907msgid "value of the record to add/delete" 4947msgid "value of the record to add/delete"
4908msgstr "" 4948msgstr ""
4909 4949
4910#: src/namestore/gnunet-namestore.c:1314 4950#: src/namestore/gnunet-namestore.c:1604
4911msgid "create or list public record" 4951msgid "create or list public record"
4912msgstr "" 4952msgstr ""
4913 4953
4914#: src/namestore/gnunet-namestore.c:1318 4954#: src/namestore/gnunet-namestore.c:1608
4915msgid "" 4955msgid ""
4916"create shadow record (only valid if all other records of the same type have " 4956"create shadow record (only valid if all other records of the same type have "
4917"expired" 4957"expired"
4918msgstr "" 4958msgstr ""
4919 4959
4920#: src/namestore/gnunet-namestore.c:1323 4960#: src/namestore/gnunet-namestore.c:1613
4921msgid "name of the ego controlling the zone" 4961msgid "name of the ego controlling the zone"
4922msgstr "" 4962msgstr ""
4923 4963
4924#: src/namestore/gnunet-namestore-fcfsd.c:547 4964#: src/namestore/gnunet-namestore-fcfsd.c:549
4925#, c-format 4965#, c-format
4926msgid "Unsupported form value `%s'\n" 4966msgid "Unsupported form value `%s'\n"
4927msgstr "" 4967msgstr ""
4928 4968
4929#: src/namestore/gnunet-namestore-fcfsd.c:574 4969#: src/namestore/gnunet-namestore-fcfsd.c:576
4930#, c-format 4970#, c-format
4931msgid "Failed to create record for domain `%s': %s\n" 4971msgid "Failed to create record for domain `%s': %s\n"
4932msgstr "" 4972msgstr ""
4933 4973
4934#: src/namestore/gnunet-namestore-fcfsd.c:595 4974#: src/namestore/gnunet-namestore-fcfsd.c:597
4935msgid "Error when mapping zone to name\n" 4975msgid "Error when mapping zone to name\n"
4936msgstr "" 4976msgstr ""
4937 4977
4938#: src/namestore/gnunet-namestore-fcfsd.c:627 4978#: src/namestore/gnunet-namestore-fcfsd.c:629
4939#, c-format 4979#, c-format
4940msgid "Found existing name `%s' for the given key\n" 4980msgid "Found existing name `%s' for the given key\n"
4941msgstr "" 4981msgstr ""
4942 4982
4943#: src/namestore/gnunet-namestore-fcfsd.c:687 4983#: src/namestore/gnunet-namestore-fcfsd.c:689
4944#, c-format 4984#, c-format
4945msgid "Found %u existing records for domain `%s'\n" 4985msgid "Found %u existing records for domain `%s'\n"
4946msgstr "" 4986msgstr ""
4947 4987
4948#: src/namestore/gnunet-namestore-fcfsd.c:775 4988#: src/namestore/gnunet-namestore-fcfsd.c:777
4949#, c-format 4989#, c-format
4950msgid "Failed to create page for `%s'\n" 4990msgid "Failed to create page for `%s'\n"
4951msgstr "" 4991msgstr ""
4952 4992
4953#: src/namestore/gnunet-namestore-fcfsd.c:794 4993#: src/namestore/gnunet-namestore-fcfsd.c:796
4954#, c-format 4994#, c-format
4955msgid "Failed to setup post processor for `%s'\n" 4995msgid "Failed to setup post processor for `%s'\n"
4956msgstr "" 4996msgstr ""
4957 4997
4958#: src/namestore/gnunet-namestore-fcfsd.c:830 4998#: src/namestore/gnunet-namestore-fcfsd.c:832
4959msgid "Domain name must not contain `.'\n" 4999msgid "Domain name must not contain `.'\n"
4960msgstr "" 5000msgstr ""
4961 5001
4962#: src/namestore/gnunet-namestore-fcfsd.c:839 5002#: src/namestore/gnunet-namestore-fcfsd.c:841
4963msgid "Domain name must not contain `+'\n" 5003msgid "Domain name must not contain `+'\n"
4964msgstr "" 5004msgstr ""
4965 5005
4966#: src/namestore/gnunet-namestore-fcfsd.c:1069 5006#: src/namestore/gnunet-namestore-fcfsd.c:1071
4967msgid "No ego configured for `fcfsd` subsystem\n" 5007msgid "No ego configured for `fcfsd` subsystem\n"
4968msgstr "" 5008msgstr ""
4969 5009
4970#: src/namestore/gnunet-namestore-fcfsd.c:1097 5010#: src/namestore/gnunet-namestore-fcfsd.c:1099
4971msgid "Failed to start HTTP server\n" 5011msgid "Failed to start HTTP server\n"
4972msgstr "" 5012msgstr ""
4973 5013
4974#: src/namestore/gnunet-namestore-fcfsd.c:1145 5014#: src/namestore/gnunet-namestore-fcfsd.c:1147
4975msgid "Failed to connect to identity\n" 5015msgid "Failed to connect to identity\n"
4976msgstr "" 5016msgstr ""
4977 5017
4978#: src/namestore/gnunet-namestore-fcfsd.c:1171 5018#: src/namestore/gnunet-namestore-fcfsd.c:1173
4979msgid "name of the zone that is to be managed by FCFSD" 5019msgid "name of the zone that is to be managed by FCFSD"
4980msgstr "" 5020msgstr ""
4981 5021
4982#: src/namestore/gnunet-namestore-fcfsd.c:1190 5022#: src/namestore/gnunet-namestore-fcfsd.c:1192
4983msgid "GNU Name System First Come First Serve name registration service" 5023msgid "GNU Name System First Come First Serve name registration service"
4984msgstr "" 5024msgstr ""
4985 5025
4986#: src/namestore/gnunet-service-namestore.c:749 5026#: src/namestore/gnunet-service-namestore.c:900
4987#, c-format 5027#, c-format
4988msgid "Failed to replicate block in namecache: %s\n" 5028msgid "Failed to replicate block in namecache: %s\n"
4989msgstr "" 5029msgstr ""
4990 5030
4991#: src/namestore/gnunet-zoneimport.c:2036 5031#: src/namestore/gnunet-zoneimport.c:2038
4992msgid "size to use for the main hash map" 5032msgid "size to use for the main hash map"
4993msgstr "" 5033msgstr ""
4994 5034
4995#: src/namestore/gnunet-zoneimport.c:2041 5035#: src/namestore/gnunet-zoneimport.c:2043
4996msgid "minimum expiration time we assume for imported records" 5036msgid "minimum expiration time we assume for imported records"
4997msgstr "" 5037msgstr ""
4998 5038
4999#: src/namestore/namestore_api.c:389 5039#: src/namestore/namestore_api.c:391
5000msgid "Namestore failed to store record\n" 5040msgid "Namestore failed to store record\n"
5001msgstr "" 5041msgstr ""
5002 5042
5003#: src/namestore/plugin_namestore_heap.c:776 5043#: src/namestore/plugin_namestore_heap.c:778
5004msgid "heap file database running\n" 5044msgid "heap file database running\n"
5005msgstr "" 5045msgstr ""
5006 5046
5007#: src/namestore/plugin_namestore_sqlite.c:216 5047#: src/nat-auto/gnunet-nat-auto.c:193
5008#: src/namestore/plugin_namestore_sqlite.c:227
5009#, fuzzy, c-format
5010msgid "Failed to setup database at `%s'\n"
5011msgstr "Échec du démarrage de %s\n"
5012
5013#: src/nat-auto/gnunet-nat-auto.c:191
5014msgid "Suggested configuration changes:\n" 5048msgid "Suggested configuration changes:\n"
5015msgstr "" 5049msgstr ""
5016 5050
5017#: src/nat-auto/gnunet-nat-auto.c:217 5051#: src/nat-auto/gnunet-nat-auto.c:219
5018#, fuzzy, c-format 5052#, fuzzy, c-format
5019msgid "Failed to write configuration to `%s'\n" 5053msgid "Failed to write configuration to `%s'\n"
5020msgstr "fornat invalide : « %s »\n" 5054msgstr "fornat invalide : « %s »\n"
5021 5055
5022#: src/nat-auto/gnunet-nat-auto.c:224 5056#: src/nat-auto/gnunet-nat-auto.c:226
5023#, c-format 5057#, c-format
5024msgid "Wrote updated configuration to `%s'\n" 5058msgid "Wrote updated configuration to `%s'\n"
5025msgstr "" 5059msgstr ""
5026 5060
5027#: src/nat-auto/gnunet-nat-auto.c:343 5061#: src/nat-auto/gnunet-nat-auto.c:345
5028#, fuzzy 5062#, fuzzy
5029msgid "run autoconfiguration" 5063msgid "run autoconfiguration"
5030msgstr "fornat invalide : « %s »\n" 5064msgstr "fornat invalide : « %s »\n"
5031 5065
5032#: src/nat-auto/gnunet-nat-auto.c:349 5066#: src/nat-auto/gnunet-nat-auto.c:351
5033msgid "section name providing the configuration for the adapter" 5067msgid "section name providing the configuration for the adapter"
5034msgstr "" 5068msgstr ""
5035 5069
5036#: src/nat-auto/gnunet-nat-auto.c:354 src/nat/gnunet-nat.c:451 5070#: src/nat-auto/gnunet-nat-auto.c:356 src/nat/gnunet-nat.c:459
5037msgid "use TCP" 5071msgid "use TCP"
5038msgstr "" 5072msgstr ""
5039 5073
5040#: src/nat-auto/gnunet-nat-auto.c:359 src/nat/gnunet-nat.c:456 5074#: src/nat-auto/gnunet-nat-auto.c:361 src/nat/gnunet-nat.c:464
5041msgid "use UDP" 5075msgid "use UDP"
5042msgstr "" 5076msgstr ""
5043 5077
5044#: src/nat-auto/gnunet-nat-auto.c:364 5078#: src/nat-auto/gnunet-nat-auto.c:366
5045msgid "write configuration file (for autoconfiguration)" 5079msgid "write configuration file (for autoconfiguration)"
5046msgstr "" 5080msgstr ""
5047 5081
5048#: src/nat-auto/gnunet-nat-auto.c:376 5082#: src/nat-auto/gnunet-nat-auto.c:378
5049msgid "GNUnet NAT traversal autoconfiguration" 5083msgid "GNUnet NAT traversal autoconfiguration"
5050msgstr "" 5084msgstr ""
5051 5085
5052#: src/nat-auto/gnunet-nat-auto_legacy.c:401 5086#: src/nat-auto/gnunet-nat-auto_legacy.c:403
5053#: src/nat-auto/gnunet-service-nat-auto_legacy.c:679 5087#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
5054#: src/nat-auto/nat_auto_api_test.c:403 5088#: src/nat-auto/nat_auto_api_test.c:409
5055msgid "Failed to connect to `gnunet-nat-server'\n" 5089msgid "Failed to connect to `gnunet-nat-server'\n"
5056msgstr "" 5090msgstr ""
5057 5091
5058#: src/nat-auto/gnunet-nat-auto_legacy.c:516 5092#: src/nat-auto/gnunet-nat-auto_legacy.c:518
5059#, c-format 5093#, c-format
5060msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n" 5094msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
5061msgstr "" 5095msgstr ""
5062 5096
5063#: src/nat-auto/gnunet-nat-auto_legacy.c:566 5097#: src/nat-auto/gnunet-nat-auto_legacy.c:568
5064#: src/nat-auto/nat_auto_api_test.c:569 5098#: src/nat-auto/nat_auto_api_test.c:575
5065msgid "NAT test failed to start NAT library\n" 5099msgid "NAT test failed to start NAT library\n"
5066msgstr "" 5100msgstr ""
5067 5101
5068#: src/nat-auto/gnunet-service-nat-auto.c:340 5102#: src/nat-auto/gnunet-service-nat-auto.c:342
5069msgid "UPnP client `upnpc` command not found, disabling UPnP\n" 5103msgid "UPnP client `upnpc` command not found, disabling UPnP\n"
5070msgstr "" 5104msgstr ""
5071 5105
5072#: src/nat-auto/gnunet-service-nat-auto_legacy.c:383 5106#: src/nat-auto/gnunet-service-nat-auto_legacy.c:385
5073msgid "NAT traversal with ICMP Server succeeded.\n" 5107msgid "NAT traversal with ICMP Server succeeded.\n"
5074msgstr "" 5108msgstr ""
5075 5109
5076#: src/nat-auto/gnunet-service-nat-auto_legacy.c:384 5110#: src/nat-auto/gnunet-service-nat-auto_legacy.c:386
5077msgid "NAT traversal with ICMP Server failed.\n" 5111msgid "NAT traversal with ICMP Server failed.\n"
5078msgstr "" 5112msgstr ""
5079 5113
5080#: src/nat-auto/gnunet-service-nat-auto_legacy.c:403 5114#: src/nat-auto/gnunet-service-nat-auto_legacy.c:405
5081msgid "Testing connection reversal with ICMP server.\n" 5115msgid "Testing connection reversal with ICMP server.\n"
5082msgstr "" 5116msgstr ""
5083 5117
5084#: src/nat-auto/gnunet-service-nat-auto_legacy.c:435 5118#: src/nat-auto/gnunet-service-nat-auto_legacy.c:437
5085#, c-format 5119#, c-format
5086msgid "Detected external IP `%s'\n" 5120msgid "Detected external IP `%s'\n"
5087msgstr "" 5121msgstr ""
5088 5122
5089#: src/nat-auto/gnunet-service-nat-auto_legacy.c:570 5123#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
5090msgid "This system has a global IPv6 address, setting IPv6 to supported.\n" 5124msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
5091msgstr "" 5125msgstr ""
5092 5126
5093#: src/nat-auto/gnunet-service-nat-auto_legacy.c:588 5127#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
5094#, c-format 5128#, c-format
5095msgid "Detected internal network address `%s'.\n" 5129msgid "Detected internal network address `%s'.\n"
5096msgstr "" 5130msgstr ""
5097 5131
5098#: src/nat-auto/gnunet-service-nat-auto_legacy.c:722 5132#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
5099msgid "upnpc found, enabling its use\n" 5133msgid "upnpc found, enabling its use\n"
5100msgstr "" 5134msgstr ""
5101 5135
5102#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723 5136#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
5103msgid "upnpc not found\n" 5137msgid "upnpc not found\n"
5104msgstr "upnpc introuvable\n" 5138msgstr "upnpc introuvable\n"
5105 5139
5106#: src/nat-auto/gnunet-service-nat-auto_legacy.c:760 5140#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
5107msgid "test_icmp_server not possible, as we have no public IPv4 address\n" 5141msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
5108msgstr "" 5142msgstr ""
5109 5143
5110#: src/nat-auto/gnunet-service-nat-auto_legacy.c:772 5144#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
5111#: src/nat-auto/gnunet-service-nat-auto_legacy.c:832 5145#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
5112msgid "test_icmp_server not possible, as we are not behind NAT\n" 5146msgid "test_icmp_server not possible, as we are not behind NAT\n"
5113msgstr "" 5147msgstr ""
5114 5148
5115#: src/nat-auto/gnunet-service-nat-auto_legacy.c:784 5149#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
5116#: src/nat-auto/gnunet-service-nat-auto_legacy.c:844 5150#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
5117msgid "No working gnunet-helper-nat-server found\n" 5151msgid "No working gnunet-helper-nat-server found\n"
5118msgstr "" 5152msgstr ""
5119 5153
5120#: src/nat-auto/gnunet-service-nat-auto_legacy.c:821 5154#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
5121msgid "test_icmp_client not possible, as we have no internal IPv4 address\n" 5155msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
5122msgstr "" 5156msgstr ""
5123 5157
5124#: src/nat-auto/nat_auto_api.c:74 5158#: src/nat-auto/nat_auto_api.c:76
5125msgid "Operation Successful" 5159msgid "Operation Successful"
5126msgstr "" 5160msgstr ""
5127 5161
5128#: src/nat-auto/nat_auto_api.c:76 5162#: src/nat-auto/nat_auto_api.c:78
5129msgid "IPC failure" 5163msgid "IPC failure"
5130msgstr "" 5164msgstr ""
5131 5165
5132#: src/nat-auto/nat_auto_api.c:78 5166#: src/nat-auto/nat_auto_api.c:80
5133msgid "Failure in network subsystem, check permissions." 5167msgid "Failure in network subsystem, check permissions."
5134msgstr "" 5168msgstr ""
5135 5169
5136#: src/nat-auto/nat_auto_api.c:80 5170#: src/nat-auto/nat_auto_api.c:82
5137msgid "Encountered timeout while performing operation" 5171msgid "Encountered timeout while performing operation"
5138msgstr "" 5172msgstr ""
5139 5173
5140#: src/nat-auto/nat_auto_api.c:82 5174#: src/nat-auto/nat_auto_api.c:84
5141msgid "detected that we are offline" 5175msgid "detected that we are offline"
5142msgstr "" 5176msgstr ""
5143 5177
5144#: src/nat-auto/nat_auto_api.c:84 5178#: src/nat-auto/nat_auto_api.c:86
5145msgid "`upnpc` command not found" 5179msgid "`upnpc` command not found"
5146msgstr "" 5180msgstr ""
5147 5181
5148#: src/nat-auto/nat_auto_api.c:86 5182#: src/nat-auto/nat_auto_api.c:88
5149msgid "Failed to run `upnpc` command" 5183msgid "Failed to run `upnpc` command"
5150msgstr "" 5184msgstr ""
5151 5185
5152#: src/nat-auto/nat_auto_api.c:88 5186#: src/nat-auto/nat_auto_api.c:90
5153msgid "`upnpc' command took too long, process killed" 5187msgid "`upnpc' command took too long, process killed"
5154msgstr "" 5188msgstr ""
5155 5189
5156#: src/nat-auto/nat_auto_api.c:90 5190#: src/nat-auto/nat_auto_api.c:92
5157msgid "`upnpc' command failed to establish port mapping" 5191msgid "`upnpc' command failed to establish port mapping"
5158msgstr "" 5192msgstr ""
5159 5193
5160#: src/nat-auto/nat_auto_api.c:92 5194#: src/nat-auto/nat_auto_api.c:94
5161msgid "`external-ip' command not found" 5195msgid "`external-ip' command not found"
5162msgstr "" 5196msgstr ""
5163 5197
5164#: src/nat-auto/nat_auto_api.c:94 5198#: src/nat-auto/nat_auto_api.c:96
5165msgid "Failed to run `external-ip` command" 5199msgid "Failed to run `external-ip` command"
5166msgstr "" 5200msgstr ""
5167 5201
5168#: src/nat-auto/nat_auto_api.c:96 5202#: src/nat-auto/nat_auto_api.c:98
5169msgid "`external-ip' command output invalid" 5203msgid "`external-ip' command output invalid"
5170msgstr "" 5204msgstr ""
5171 5205
5172#: src/nat-auto/nat_auto_api.c:98 5206#: src/nat-auto/nat_auto_api.c:100
5173msgid "no valid address was returned by `external-ip'" 5207msgid "no valid address was returned by `external-ip'"
5174msgstr "" 5208msgstr ""
5175 5209
5176#: src/nat-auto/nat_auto_api.c:100 5210#: src/nat-auto/nat_auto_api.c:102
5177msgid "Could not determine interface with internal/local network address" 5211msgid "Could not determine interface with internal/local network address"
5178msgstr "" 5212msgstr ""
5179 5213
5180#: src/nat-auto/nat_auto_api.c:102 5214#: src/nat-auto/nat_auto_api.c:104
5181msgid "No functioning gnunet-helper-nat-server installation found" 5215msgid "No functioning gnunet-helper-nat-server installation found"
5182msgstr "" 5216msgstr ""
5183 5217
5184#: src/nat-auto/nat_auto_api.c:104 5218#: src/nat-auto/nat_auto_api.c:106
5185msgid "NAT test could not be initialized" 5219msgid "NAT test could not be initialized"
5186msgstr "" 5220msgstr ""
5187 5221
5188#: src/nat-auto/nat_auto_api.c:106 5222#: src/nat-auto/nat_auto_api.c:108
5189msgid "NAT test timeout reached" 5223msgid "NAT test timeout reached"
5190msgstr "" 5224msgstr ""
5191 5225
5192#: src/nat-auto/nat_auto_api.c:108 5226#: src/nat-auto/nat_auto_api.c:110
5193msgid "could not register NAT" 5227msgid "could not register NAT"
5194msgstr "" 5228msgstr ""
5195 5229
5196#: src/nat-auto/nat_auto_api.c:110 5230#: src/nat-auto/nat_auto_api.c:112
5197msgid "No working gnunet-helper-nat-client installation found" 5231msgid "No working gnunet-helper-nat-client installation found"
5198msgstr "" 5232msgstr ""
5199 5233
5200#: src/nat-auto/nat_auto_api_test.c:475 5234#: src/nat-auto/nat_auto_api_test.c:481
5201#, fuzzy, c-format 5235#, fuzzy, c-format
5202msgid "Failed to find valid PORT in section `%s'\n" 5236msgid "Failed to find valid PORT in section `%s'\n"
5203msgstr "Résolution de « %s » échouée : %s\n" 5237msgstr "Résolution de « %s » échouée : %s\n"
5204 5238
5205#: src/nat-auto/nat_auto_api_test.c:520 5239#: src/nat-auto/nat_auto_api_test.c:526
5206#, fuzzy, c-format 5240#, fuzzy, c-format
5207msgid "Failed to create socket bound to `%s' for NAT test: %s\n" 5241msgid "Failed to create socket bound to `%s' for NAT test: %s\n"
5208msgstr "Résolution de « %s » échouée : %s\n" 5242msgstr "Résolution de « %s » échouée : %s\n"
5209 5243
5210#: src/nat/gnunet-nat.c:429 5244#: src/nat/gnunet-nat.c:437
5211msgid "which IP and port are we locally using to bind/listen to" 5245msgid "which IP and port are we locally using to bind/listen to"
5212msgstr "" 5246msgstr ""
5213 5247
5214#: src/nat/gnunet-nat.c:435 5248#: src/nat/gnunet-nat.c:443
5215msgid "which remote IP and port should be asked for connection reversal" 5249msgid "which remote IP and port should be asked for connection reversal"
5216msgstr "" 5250msgstr ""
5217 5251
5218#: src/nat/gnunet-nat.c:441 5252#: src/nat/gnunet-nat.c:449
5219msgid "" 5253msgid ""
5220"name of configuration section to find additional options, such as manual " 5254"name of configuration section to find additional options, such as manual "
5221"host punching data" 5255"host punching data"
5222msgstr "" 5256msgstr ""
5223 5257
5224#: src/nat/gnunet-nat.c:446 5258#: src/nat/gnunet-nat.c:454
5225msgid "enable STUN processing" 5259msgid "enable STUN processing"
5226msgstr "" 5260msgstr ""
5227 5261
5228#: src/nat/gnunet-nat.c:461 5262#: src/nat/gnunet-nat.c:469
5229msgid "watch for connection reversal requests" 5263msgid "watch for connection reversal requests"
5230msgstr "" 5264msgstr ""
5231 5265
5232#: src/nat/gnunet-nat.c:473 5266#: src/nat/gnunet-nat.c:481
5233msgid "GNUnet NAT traversal autoconfigure daemon" 5267msgid "GNUnet NAT traversal autoconfigure daemon"
5234msgstr "" 5268msgstr ""
5235 5269
5236#: src/nat/gnunet-service-nat.c:1337 5270#: src/nat/gnunet-service-nat.c:1339
5237#, c-format 5271#, c-format
5238msgid "Malformed punched hole specification `%s' (lacks port)\n" 5272msgid "Malformed punched hole specification `%s' (lacks port)\n"
5239msgstr "" 5273msgstr ""
5240 5274
5241#: src/nat/gnunet-service-nat.c:1347 5275#: src/nat/gnunet-service-nat.c:1349
5242#, c-format 5276#, c-format
5243msgid "Invalid port number in punched hole specification `%s' (lacks port)\n" 5277msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
5244msgstr "" 5278msgstr ""
5245 5279
5246#: src/nat/gnunet-service-nat.c:1363 5280#: src/nat/gnunet-service-nat.c:1365
5247#, c-format 5281#, c-format
5248msgid "Malformed punched hole specification `%s' (lacks `]')\n" 5282msgid "Malformed punched hole specification `%s' (lacks `]')\n"
5249msgstr "" 5283msgstr ""
5250 5284
5251#: src/nat/gnunet-service-nat.c:1374 5285#: src/nat/gnunet-service-nat.c:1376
5252#, c-format 5286#, c-format
5253msgid "Malformed punched hole specification `%s' (IPv6 address invalid)" 5287msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
5254msgstr "" 5288msgstr ""
5255 5289
5256#: src/nat/gnunet-service-nat.c:1839 5290#: src/nat/gnunet-service-nat.c:1841
5257msgid "Connection reversal request failed\n" 5291msgid "Connection reversal request failed\n"
5258msgstr "" 5292msgstr ""
5259 5293
5260#: src/nat/gnunet-service-nat.c:1912 5294#: src/nat/gnunet-service-nat.c:1914
5261msgid "" 5295msgid ""
5262"UPnP enabled in configuration, but UPnP client `upnpc` command not found, " 5296"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
5263"disabling UPnP\n" 5297"disabling UPnP\n"
5264msgstr "" 5298msgstr ""
5265 5299
5266#: src/nat/gnunet-service-nat_helper.c:184 5300#: src/nat/gnunet-service-nat_helper.c:186
5267#, c-format 5301#, c-format
5268msgid "gnunet-helper-nat-server generated malformed address `%s'\n" 5302msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
5269msgstr "" 5303msgstr ""
5270 5304
5271#: src/nat/gnunet-service-nat_helper.c:271 5305#: src/nat/gnunet-service-nat_helper.c:273
5272#, c-format 5306#, c-format
5273msgid "Failed to start %s\n" 5307msgid "Failed to start %s\n"
5274msgstr "Échec du démarrage de %s\n" 5308msgstr "Échec du démarrage de %s\n"
5275 5309
5276#: src/nat/gnunet-service-nat_mini.c:194 5310#: src/nat/gnunet-service-nat_mini.c:196
5277msgid "`external-ip' command not found\n" 5311msgid "`external-ip' command not found\n"
5278msgstr "" 5312msgstr ""
5279 5313
5280#: src/nat/gnunet-service-nat_mini.c:654 5314#: src/nat/gnunet-service-nat_mini.c:656
5281msgid "`upnpc' command not found\n" 5315msgid "`upnpc' command not found\n"
5282msgstr "" 5316msgstr ""
5283 5317
5284#: src/nse/gnunet-nse.c:120 5318#: src/nse/gnunet-nse.c:122
5285msgid "Show network size estimates from NSE service." 5319msgid "Show network size estimates from NSE service."
5286msgstr "" 5320msgstr ""
5287 5321
5288#: src/nse/gnunet-nse-profiler.c:847 5322#: src/nse/gnunet-nse-profiler.c:849
5289msgid "limit to the number of connections to NSE services, 0 for none" 5323msgid "limit to the number of connections to NSE services, 0 for none"
5290msgstr "" 5324msgstr ""
5291 5325
5292#: src/nse/gnunet-nse-profiler.c:852 5326#: src/nse/gnunet-nse-profiler.c:854
5293msgid "name of the file for writing connection information and statistics" 5327msgid "name of the file for writing connection information and statistics"
5294msgstr "" 5328msgstr ""
5295 5329
5296#: src/nse/gnunet-nse-profiler.c:864 5330#: src/nse/gnunet-nse-profiler.c:866
5297msgid "name of the file for writing the main results" 5331msgid "name of the file for writing the main results"
5298msgstr "" 5332msgstr ""
5299 5333
5300#: src/nse/gnunet-nse-profiler.c:871 5334#: src/nse/gnunet-nse-profiler.c:873
5301msgid "Number of peers to run in each round, separated by commas" 5335msgid "Number of peers to run in each round, separated by commas"
5302msgstr "" 5336msgstr ""
5303 5337
5304#: src/nse/gnunet-nse-profiler.c:882 5338#: src/nse/gnunet-nse-profiler.c:884
5305msgid "delay between rounds" 5339msgid "delay between rounds"
5306msgstr "" 5340msgstr ""
5307 5341
5308#: src/nse/gnunet-nse-profiler.c:891 5342#: src/nse/gnunet-nse-profiler.c:893
5309msgid "Measure quality and performance of the NSE service." 5343msgid "Measure quality and performance of the NSE service."
5310msgstr "" 5344msgstr ""
5311 5345
5312#: src/nse/gnunet-service-nse.c:1532 5346#: src/nse/gnunet-service-nse.c:1534
5313#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:274 5347#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
5314msgid "Value is too large.\n" 5348msgid "Value is too large.\n"
5315msgstr "" 5349msgstr ""
5316 5350
5317#: src/peerinfo/gnunet-service-peerinfo.c:176 5351#: src/peerinfo/gnunet-service-peerinfo.c:178
5318#, c-format 5352#, c-format
5319msgid "Removing expired address of transport `%s'\n" 5353msgid "Removing expired address of transport `%s'\n"
5320msgstr "" 5354msgstr ""
5321 5355
5322#: src/peerinfo/gnunet-service-peerinfo.c:311 5356#: src/peerinfo/gnunet-service-peerinfo.c:313
5323#, c-format 5357#, c-format
5324msgid "Failed to parse HELLO in file `%s': %s\n" 5358msgid "Failed to parse HELLO in file `%s': %s\n"
5325msgstr "" 5359msgstr ""
5326 5360
5327#: src/peerinfo/gnunet-service-peerinfo.c:332 5361#: src/peerinfo/gnunet-service-peerinfo.c:334
5328#: src/peerinfo/gnunet-service-peerinfo.c:363 5362#: src/peerinfo/gnunet-service-peerinfo.c:365
5329#, c-format 5363#, c-format
5330msgid "Failed to parse HELLO in file `%s'\n" 5364msgid "Failed to parse HELLO in file `%s'\n"
5331msgstr "" 5365msgstr ""
5332 5366
5333#: src/peerinfo/gnunet-service-peerinfo.c:447 5367#: src/peerinfo/gnunet-service-peerinfo.c:449
5334msgid "# peers known" 5368msgid "# peers known"
5335msgstr "" 5369msgstr ""
5336 5370
5337#: src/peerinfo/gnunet-service-peerinfo.c:490 5371#: src/peerinfo/gnunet-service-peerinfo.c:492
5338#, c-format 5372#, c-format
5339msgid "" 5373msgid ""
5340"File `%s' in directory `%s' does not match naming convention. Removed.\n" 5374"File `%s' in directory `%s' does not match naming convention. Removed.\n"
5341msgstr "" 5375msgstr ""
5342 5376
5343#: src/peerinfo/gnunet-service-peerinfo.c:657 5377#: src/peerinfo/gnunet-service-peerinfo.c:659
5344#, c-format 5378#, c-format
5345msgid "Scanning directory `%s'\n" 5379msgid "Scanning directory `%s'\n"
5346msgstr "" 5380msgstr ""
5347 5381
5348#: src/peerinfo/gnunet-service-peerinfo.c:665 5382#: src/peerinfo/gnunet-service-peerinfo.c:667
5349#, c-format 5383#, c-format
5350msgid "Still no peers found in `%s'!\n" 5384msgid "Still no peers found in `%s'!\n"
5351msgstr "" 5385msgstr ""
5352 5386
5353#: src/peerinfo/gnunet-service-peerinfo.c:1098 5387#: src/peerinfo/gnunet-service-peerinfo.c:1100
5354#, c-format 5388#, c-format
5355msgid "Cleaning up directory `%s'\n" 5389msgid "Cleaning up directory `%s'\n"
5356msgstr "" 5390msgstr ""
5357 5391
5358#: src/peerinfo/gnunet-service-peerinfo.c:1436 5392#: src/peerinfo/gnunet-service-peerinfo.c:1438
5359#, c-format 5393#, c-format
5360msgid "Importing HELLOs from `%s'\n" 5394msgid "Importing HELLOs from `%s'\n"
5361msgstr "" 5395msgstr ""
5362 5396
5363#: src/peerinfo/gnunet-service-peerinfo.c:1449 5397#: src/peerinfo/gnunet-service-peerinfo.c:1451
5364msgid "Skipping import of included HELLOs\n" 5398msgid "Skipping import of included HELLOs\n"
5365msgstr "" 5399msgstr ""
5366 5400
5367#: src/peerinfo/peerinfo_api.c:218 5401#: src/peerinfo/peerinfo_api.c:220
5368msgid "Failed to receive response from `PEERINFO' service." 5402msgid "Failed to receive response from `PEERINFO' service."
5369msgstr "" 5403msgstr ""
5370 5404
5371#: src/peerinfo-tool/gnunet-peerinfo.c:237 5405#: src/peerinfo-tool/gnunet-peerinfo.c:239
5372#, c-format 5406#, c-format
5373msgid "%sPeer `%s'\n" 5407msgid "%sPeer `%s'\n"
5374msgstr "" 5408msgstr ""
5375 5409
5376#: src/peerinfo-tool/gnunet-peerinfo.c:244 5410#: src/peerinfo-tool/gnunet-peerinfo.c:246
5377#, c-format 5411#, c-format
5378msgid "\tExpires: %s \t %s\n" 5412msgid "\tExpires: %s \t %s\n"
5379msgstr "" 5413msgstr ""
5380 5414
5381#: src/peerinfo-tool/gnunet-peerinfo.c:297 5415#: src/peerinfo-tool/gnunet-peerinfo.c:299
5382#: src/rest-plugins/plugin_rest_peerinfo.c:499 5416#: src/rest-plugins/plugin_rest_peerinfo.c:501
5383#, c-format 5417#, c-format
5384msgid "Failure: Cannot convert address to string for peer `%s'\n" 5418msgid "Failure: Cannot convert address to string for peer `%s'\n"
5385msgstr "" 5419msgstr ""
5386 5420
5387#: src/peerinfo-tool/gnunet-peerinfo.c:464 5421#: src/peerinfo-tool/gnunet-peerinfo.c:466
5388#, c-format 5422#, c-format
5389msgid "Failure: Received invalid %s\n" 5423msgid "Failure: Received invalid %s\n"
5390msgstr "" 5424msgstr ""
5391 5425
5392#: src/peerinfo-tool/gnunet-peerinfo.c:478 5426#: src/peerinfo-tool/gnunet-peerinfo.c:480
5393#, c-format 5427#, c-format
5394msgid "Failed to write HELLO with %u bytes to file `%s'\n" 5428msgid "Failed to write HELLO with %u bytes to file `%s'\n"
5395msgstr "" 5429msgstr ""
5396 5430
5397#: src/peerinfo-tool/gnunet-peerinfo.c:497 5431#: src/peerinfo-tool/gnunet-peerinfo.c:499
5398#, c-format 5432#, c-format
5399msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n" 5433msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
5400msgstr "" 5434msgstr ""
5401 5435
5402#: src/peerinfo-tool/gnunet-peerinfo.c:797 5436#: src/peerinfo-tool/gnunet-peerinfo.c:799
5403#, c-format 5437#, c-format
5404msgid "I am peer `%s'.\n" 5438msgid "I am peer `%s'.\n"
5405msgstr "" 5439msgstr ""
5406 5440
5407#: src/peerinfo-tool/gnunet-peerinfo.c:841 5441#: src/peerinfo-tool/gnunet-peerinfo.c:843
5408msgid "don't resolve host names" 5442msgid "don't resolve host names"
5409msgstr "" 5443msgstr ""
5410 5444
5411#: src/peerinfo-tool/gnunet-peerinfo.c:846 5445#: src/peerinfo-tool/gnunet-peerinfo.c:848
5412msgid "output only the identity strings" 5446msgid "output only the identity strings"
5413msgstr "" 5447msgstr ""
5414 5448
5415#: src/peerinfo-tool/gnunet-peerinfo.c:850 5449#: src/peerinfo-tool/gnunet-peerinfo.c:852
5416msgid "include friend-only information" 5450msgid "include friend-only information"
5417msgstr "" 5451msgstr ""
5418 5452
5419#: src/peerinfo-tool/gnunet-peerinfo.c:855 5453#: src/peerinfo-tool/gnunet-peerinfo.c:857
5420msgid "output our own identity only" 5454msgid "output our own identity only"
5421msgstr "" 5455msgstr ""
5422 5456
5423#: src/peerinfo-tool/gnunet-peerinfo.c:860 5457#: src/peerinfo-tool/gnunet-peerinfo.c:862
5424msgid "list all known peers" 5458msgid "list all known peers"
5425msgstr "" 5459msgstr ""
5426 5460
5427#: src/peerinfo-tool/gnunet-peerinfo.c:866 5461#: src/peerinfo-tool/gnunet-peerinfo.c:868
5428msgid "dump hello to file" 5462msgid "dump hello to file"
5429msgstr "" 5463msgstr ""
5430 5464
5431#: src/peerinfo-tool/gnunet-peerinfo.c:871 5465#: src/peerinfo-tool/gnunet-peerinfo.c:873
5432msgid "also output HELLO uri(s)" 5466msgid "also output HELLO uri(s)"
5433msgstr "" 5467msgstr ""
5434 5468
5435#: src/peerinfo-tool/gnunet-peerinfo.c:877 5469#: src/peerinfo-tool/gnunet-peerinfo.c:879
5436msgid "add given HELLO uri to the database" 5470msgid "add given HELLO uri to the database"
5437msgstr "" 5471msgstr ""
5438 5472
5439#: src/peerinfo-tool/gnunet-peerinfo.c:895 5473#: src/peerinfo-tool/gnunet-peerinfo.c:897
5440msgid "Print information about peers." 5474msgid "Print information about peers."
5441msgstr "" 5475msgstr ""
5442 5476
5443#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:103 5477#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
5444#: src/transport/gnunet-service-transport_plugins.c:166 5478#: src/transport/gnunet-service-transport_plugins.c:168
5445#, c-format 5479#, c-format
5446msgid "Starting transport plugins `%s'\n" 5480msgid "Starting transport plugins `%s'\n"
5447msgstr "" 5481msgstr ""
5448 5482
5449#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:107 5483#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
5450#: src/transport/gnunet-service-transport_plugins.c:171 5484#: src/transport/gnunet-service-transport_plugins.c:173
5451#, c-format 5485#, c-format
5452msgid "Loading `%s' transport plugin\n" 5486msgid "Loading `%s' transport plugin\n"
5453msgstr "" 5487msgstr ""
5454 5488
5455#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:127 5489#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
5456#: src/transport/gnunet-service-transport_plugins.c:206 5490#: src/transport/gnunet-service-transport_plugins.c:208
5457#, c-format 5491#, c-format
5458msgid "Failed to load transport plugin for `%s'\n" 5492msgid "Failed to load transport plugin for `%s'\n"
5459msgstr "" 5493msgstr ""
5460 5494
5461#: src/peerstore/gnunet-peerstore.c:89 5495#: src/peerstore/gnunet-peerstore.c:91
5462msgid "peerstore" 5496msgid "peerstore"
5463msgstr "" 5497msgstr ""
5464 5498
5465#: src/peerstore/gnunet-service-peerstore.c:596 5499#: src/peerstore/gnunet-service-peerstore.c:598
5466#, fuzzy, c-format 5500#, fuzzy, c-format
5467msgid "Could not load database backend `%s'\n" 5501msgid "Could not load database backend `%s'\n"
5468msgstr "Impossible d’ouvrir « %s ».\n" 5502msgstr "Impossible d’ouvrir « %s ».\n"
5469 5503
5470#: src/peerstore/peerstore_api.c:348 5504#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
5471msgid "timeout"
5472msgstr ""
5473
5474#: src/peerstore/peerstore_api.c:564 src/peerstore/peerstore_api.c:613
5475msgid "Unexpected iteration response, this should not happen.\n" 5505msgid "Unexpected iteration response, this should not happen.\n"
5476msgstr "" 5506msgstr ""
5477 5507
5478#: src/peerstore/peerstore_api.c:627 5508#: src/peerstore/peerstore_api.c:595
5479msgid "Received a malformed response from service." 5509msgid "Received a malformed response from service."
5480msgstr "" 5510msgstr ""
5481 5511
5482#: src/peerstore/peerstore_api.c:776 5512#: src/peerstore/peerstore_api.c:731
5483msgid "Received a watch result for a non existing watch.\n" 5513msgid "Received a watch result for a non existing watch.\n"
5484msgstr "" 5514msgstr ""
5485 5515
5486#: src/peerstore/plugin_peerstore_sqlite.c:451 5516#: src/peerstore/plugin_peerstore_sqlite.c:453
5487#: src/psycstore/plugin_psycstore_sqlite.c:280
5488#, c-format 5517#, c-format
5489msgid "" 5518msgid ""
5490"Error executing SQL query: %s\n" 5519"Error executing SQL query: %s\n"
5491" %s\n" 5520" %s\n"
5492msgstr "" 5521msgstr ""
5493 5522
5494#: src/peerstore/plugin_peerstore_sqlite.c:486 5523#: src/peerstore/plugin_peerstore_sqlite.c:488
5495#: src/psycstore/plugin_psycstore_mysql.c:248
5496#: src/psycstore/plugin_psycstore_sqlite.c:257
5497#, c-format 5524#, c-format
5498msgid "" 5525msgid ""
5499"Error preparing SQL query: %s\n" 5526"Error preparing SQL query: %s\n"
5500" %s\n" 5527" %s\n"
5501msgstr "" 5528msgstr ""
5502 5529
5503#: src/peerstore/plugin_peerstore_sqlite.c:568 5530#: src/peerstore/plugin_peerstore_sqlite.c:570
5504#, c-format 5531#, c-format
5505msgid "Unable to create indices: %s.\n" 5532msgid "Unable to create indices: %s.\n"
5506msgstr "" 5533msgstr ""
5507 5534
5508#: src/pq/pq_prepare.c:82 5535#: src/pq/pq_prepare.c:84
5509#, c-format 5536#, c-format
5510msgid "PQprepare (`%s' as `%s') failed with error: %s\n" 5537msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
5511msgstr "" 5538msgstr ""
5512 5539
5513#: src/psycstore/gnunet-service-psycstore.c:247 5540#: src/pt/gnunet-daemon-pt.c:423
5514msgid "Failed to store membership information!\n"
5515msgstr ""
5516
5517#: src/psycstore/gnunet-service-psycstore.c:269
5518msgid "Failed to test membership!\n"
5519msgstr ""
5520
5521#: src/psycstore/gnunet-service-psycstore.c:298
5522#, fuzzy
5523msgid "Dropping invalid fragment\n"
5524msgstr "Argument invalide « %s »\n"
5525
5526#: src/psycstore/gnunet-service-psycstore.c:309
5527#, fuzzy
5528msgid "Failed to store fragment\n"
5529msgstr "Échec du démarrage de %s\n"
5530
5531#: src/psycstore/gnunet-service-psycstore.c:366
5532msgid "Failed to get fragment!\n"
5533msgstr ""
5534
5535#: src/psycstore/gnunet-service-psycstore.c:432
5536msgid "Failed to get message!\n"
5537msgstr ""
5538
5539#: src/psycstore/gnunet-service-psycstore.c:462
5540msgid "Failed to get message fragment!\n"
5541msgstr ""
5542
5543#: src/psycstore/gnunet-service-psycstore.c:492
5544msgid "Failed to get master counters!\n"
5545msgstr ""
5546
5547#: src/psycstore/gnunet-service-psycstore.c:673
5548#, fuzzy, c-format
5549msgid "Failed to begin modifying state: %d\n"
5550msgstr "Échec du démarrage de %s\n"
5551
5552#: src/psycstore/gnunet-service-psycstore.c:683
5553#, fuzzy, c-format
5554msgid "Failed to modify state: %d\n"
5555msgstr "Échec du démarrage de %s\n"
5556
5557#: src/psycstore/gnunet-service-psycstore.c:691
5558msgid "Failed to end modifying state!\n"
5559msgstr ""
5560
5561#: src/psycstore/gnunet-service-psycstore.c:728
5562msgid "Tried to set invalid state variable name!\n"
5563msgstr ""
5564
5565#: src/psycstore/gnunet-service-psycstore.c:742
5566msgid "Failed to begin synchronizing state!\n"
5567msgstr ""
5568
5569#: src/psycstore/gnunet-service-psycstore.c:759
5570msgid "Failed to end synchronizing state!\n"
5571msgstr ""
5572
5573#: src/psycstore/gnunet-service-psycstore.c:777
5574#: src/psycstore/gnunet-service-psycstore.c:793
5575msgid "Failed to reset state!\n"
5576msgstr ""
5577
5578#: src/psycstore/gnunet-service-psycstore.c:822
5579#: src/psycstore/gnunet-service-psycstore.c:879
5580msgid "Tried to get invalid state variable name!\n"
5581msgstr ""
5582
5583#: src/psycstore/gnunet-service-psycstore.c:849
5584#: src/psycstore/gnunet-service-psycstore.c:894
5585msgid "Failed to get state variable!\n"
5586msgstr ""
5587
5588#: src/psycstore/plugin_psycstore_mysql.c:279
5589#, fuzzy
5590msgid "Unable to initialize Mysql.\n"
5591msgstr "Résolution de « %s » échouée\n"
5592
5593#: src/psycstore/plugin_psycstore_mysql.c:289
5594#, fuzzy, c-format
5595msgid "Failed to run SQL statement `%s'\n"
5596msgstr "Échec du démarrage de %s\n"
5597
5598#: src/psycstore/plugin_psycstore_sqlite.c:59
5599#, c-format
5600msgid "`%s' failed at %s:%d with error: %s (%d)\n"
5601msgstr ""
5602
5603#: src/psycstore/plugin_psycstore_sqlite.c:1922
5604msgid "SQLite database running\n"
5605msgstr ""
5606
5607#: src/pt/gnunet-daemon-pt.c:421
5608msgid "Failed to pack DNS request. Dropping.\n" 5541msgid "Failed to pack DNS request. Dropping.\n"
5609msgstr "" 5542msgstr ""
5610 5543
5611#: src/pt/gnunet-daemon-pt.c:427 5544#: src/pt/gnunet-daemon-pt.c:429
5612msgid "# DNS requests mapped to VPN" 5545msgid "# DNS requests mapped to VPN"
5613msgstr "" 5546msgstr ""
5614 5547
5615#: src/pt/gnunet-daemon-pt.c:481 5548#: src/pt/gnunet-daemon-pt.c:483
5616msgid "# DNS records modified" 5549msgid "# DNS records modified"
5617msgstr "" 5550msgstr ""
5618 5551
5619#: src/pt/gnunet-daemon-pt.c:665 5552#: src/pt/gnunet-daemon-pt.c:667
5620msgid "# DNS replies intercepted" 5553msgid "# DNS replies intercepted"
5621msgstr "" 5554msgstr ""
5622 5555
5623#: src/pt/gnunet-daemon-pt.c:672 5556#: src/pt/gnunet-daemon-pt.c:674
5624msgid "Failed to parse DNS request. Dropping.\n" 5557msgid "Failed to parse DNS request. Dropping.\n"
5625msgstr "" 5558msgstr ""
5626 5559
5627#: src/pt/gnunet-daemon-pt.c:710 5560#: src/pt/gnunet-daemon-pt.c:712
5628msgid "# DNS requests dropped (timeout)" 5561msgid "# DNS requests dropped (timeout)"
5629msgstr "" 5562msgstr ""
5630 5563
5631#: src/pt/gnunet-daemon-pt.c:766 5564#: src/pt/gnunet-daemon-pt.c:768
5632msgid "# DNS requests intercepted" 5565msgid "# DNS requests intercepted"
5633msgstr "" 5566msgstr ""
5634 5567
5635#: src/pt/gnunet-daemon-pt.c:771 5568#: src/pt/gnunet-daemon-pt.c:773
5636msgid "# DNS requests dropped (DNS cadet channel down)" 5569msgid "# DNS requests dropped (DNS cadet channel down)"
5637msgstr "" 5570msgstr ""
5638 5571
5639#: src/pt/gnunet-daemon-pt.c:779 5572#: src/pt/gnunet-daemon-pt.c:781
5640msgid "# DNS requests dropped (malformed)" 5573msgid "# DNS requests dropped (malformed)"
5641msgstr "" 5574msgstr ""
5642 5575
5643#: src/pt/gnunet-daemon-pt.c:874 5576#: src/pt/gnunet-daemon-pt.c:876
5644msgid "# DNS replies received" 5577msgid "# DNS replies received"
5645msgstr "" 5578msgstr ""
5646 5579
5647#: src/pt/gnunet-daemon-pt.c:891 5580#: src/pt/gnunet-daemon-pt.c:893
5648msgid "# DNS replies dropped (too late?)" 5581msgid "# DNS replies dropped (too late?)"
5649msgstr "" 5582msgstr ""
5650 5583
5651#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226 5584#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
5652#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251 5585#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
5653#: src/pt/gnunet-daemon-pt.c:1260 5586#: src/pt/gnunet-daemon-pt.c:1262
5654#, c-format 5587#, c-format
5655msgid "Failed to connect to %s service. Exiting.\n" 5588msgid "Failed to connect to %s service. Exiting.\n"
5656msgstr "" 5589msgstr ""
5657 5590
5658#: src/pt/gnunet-daemon-pt.c:1305 5591#: src/pt/gnunet-daemon-pt.c:1307
5659msgid "Daemon to run to perform IP protocol translation to GNUnet" 5592msgid "Daemon to run to perform IP protocol translation to GNUnet"
5660msgstr "" 5593msgstr ""
5661 5594
5662#: src/reclaim/gnunet-reclaim.c:465 5595#: src/reclaim/gnunet-reclaim.c:467
5663#, c-format 5596#, c-format
5664msgid "Ego is required\n" 5597msgid "Ego is required\n"
5665msgstr "" 5598msgstr ""
5666 5599
5667#: src/reclaim/gnunet-reclaim.c:473 5600#: src/reclaim/gnunet-reclaim.c:475
5668#, c-format 5601#, c-format
5669msgid "Attribute value missing!\n" 5602msgid "Attribute value missing!\n"
5670msgstr "" 5603msgstr ""
5671 5604
5672#: src/reclaim/gnunet-reclaim.c:481 5605#: src/reclaim/gnunet-reclaim.c:483
5673#, c-format 5606#, c-format
5674msgid "Requesting party key is required!\n" 5607msgid "Requesting party key is required!\n"
5675msgstr "" 5608msgstr ""
5676 5609
5677#: src/reclaim/gnunet-reclaim.c:504 5610#: src/reclaim/gnunet-reclaim.c:506
5678msgid "Add attribute" 5611msgid "Add attribute"
5679msgstr "" 5612msgstr ""
5680 5613
5681#: src/reclaim/gnunet-reclaim.c:510 5614#: src/reclaim/gnunet-reclaim.c:512
5682msgid "Attribute value" 5615msgid "Attribute value"
5683msgstr "" 5616msgstr ""
5684 5617
5685#: src/reclaim/gnunet-reclaim.c:515 5618#: src/reclaim/gnunet-reclaim.c:517
5686msgid "Ego" 5619msgid "Ego"
5687msgstr "" 5620msgstr ""
5688 5621
5689#: src/reclaim/gnunet-reclaim.c:520 5622#: src/reclaim/gnunet-reclaim.c:522
5690msgid "Audience (relying party)" 5623msgid "Audience (relying party)"
5691msgstr "" 5624msgstr ""
5692 5625
5693#: src/reclaim/gnunet-reclaim.c:524 5626#: src/reclaim/gnunet-reclaim.c:526
5694msgid "List attributes for Ego" 5627msgid "List attributes for Ego"
5695msgstr "" 5628msgstr ""
5696 5629
5697#: src/reclaim/gnunet-reclaim.c:529 5630#: src/reclaim/gnunet-reclaim.c:531
5698msgid "Issue a ticket" 5631msgid "Issue a ticket"
5699msgstr "" 5632msgstr ""
5700 5633
5701#: src/reclaim/gnunet-reclaim.c:534 5634#: src/reclaim/gnunet-reclaim.c:536
5702msgid "Consume a ticket" 5635msgid "Consume a ticket"
5703msgstr "" 5636msgstr ""
5704 5637
5705#: src/reclaim/gnunet-reclaim.c:539 5638#: src/reclaim/gnunet-reclaim.c:541
5706msgid "Revoke a ticket" 5639msgid "Revoke a ticket"
5707msgstr "" 5640msgstr ""
5708 5641
5709#: src/reclaim/gnunet-reclaim.c:544 5642#: src/reclaim/gnunet-reclaim.c:546
5710msgid "Type of attribute" 5643msgid "Type of attribute"
5711msgstr "" 5644msgstr ""
5712 5645
5713#: src/reclaim/gnunet-reclaim.c:549 5646#: src/reclaim/gnunet-reclaim.c:551
5714msgid "Expiration interval of the attribute" 5647msgid "Expiration interval of the attribute"
5715msgstr "" 5648msgstr ""
5716 5649
5717#: src/reclaim/reclaim_api.c:434 5650#: src/reclaim/reclaim_api.c:436
5718#, fuzzy 5651#, fuzzy
5719msgid "failed to store record\n" 5652msgid "failed to store record\n"
5720msgstr "Échec du démarrage de %s\n" 5653msgstr "Échec du démarrage de %s\n"
5721 5654
5722#: src/regex/gnunet-daemon-regexprofiler.c:265 5655#: src/regex/gnunet-daemon-regexprofiler.c:267
5723#, c-format 5656#, c-format
5724msgid "%s service is lacking key configuration settings (%s). Exiting.\n" 5657msgid "%s service is lacking key configuration settings (%s). Exiting.\n"
5725msgstr "" 5658msgstr ""
5726 5659
5727#: src/regex/gnunet-daemon-regexprofiler.c:378 5660#: src/regex/gnunet-daemon-regexprofiler.c:380
5728msgid "Daemon to announce regular expressions for the peer using cadet." 5661msgid "Daemon to announce regular expressions for the peer using cadet."
5729msgstr "" 5662msgstr ""
5730 5663
5731#: src/regex/gnunet-regex-profiler.c:1384 5664#: src/regex/gnunet-regex-profiler.c:1386
5732msgid "No configuration file given. Exiting\n" 5665msgid "No configuration file given. Exiting\n"
5733msgstr "" 5666msgstr ""
5734 5667
5735#: src/regex/gnunet-regex-profiler.c:1425 5668#: src/regex/gnunet-regex-profiler.c:1427
5736#: src/regex/gnunet-regex-simulation-profiler.c:628 5669#: src/regex/gnunet-regex-simulation-profiler.c:630
5737#, c-format 5670#, c-format
5738msgid "No policy directory specified on command line. Exiting.\n" 5671msgid "No policy directory specified on command line. Exiting.\n"
5739msgstr "" 5672msgstr ""
5740 5673
5741#: src/regex/gnunet-regex-profiler.c:1431 5674#: src/regex/gnunet-regex-profiler.c:1433
5742#: src/regex/gnunet-regex-simulation-profiler.c:636 5675#: src/regex/gnunet-regex-simulation-profiler.c:638
5743#, c-format 5676#, c-format
5744msgid "Specified policies directory does not exist. Exiting.\n" 5677msgid "Specified policies directory does not exist. Exiting.\n"
5745msgstr "" 5678msgstr ""
5746 5679
5747#: src/regex/gnunet-regex-profiler.c:1438 5680#: src/regex/gnunet-regex-profiler.c:1440
5748#, c-format 5681#, c-format
5749msgid "No files found in `%s'\n" 5682msgid "No files found in `%s'\n"
5750msgstr "" 5683msgstr ""
5751 5684
5752#: src/regex/gnunet-regex-profiler.c:1447 5685#: src/regex/gnunet-regex-profiler.c:1449
5753msgid "No search strings file given. Exiting.\n" 5686msgid "No search strings file given. Exiting.\n"
5754msgstr "" 5687msgstr ""
5755 5688
5756#: src/regex/gnunet-regex-profiler.c:1467 5689#: src/regex/gnunet-regex-profiler.c:1469
5757msgid "Error loading search strings. Exiting.\n" 5690msgid "Error loading search strings. Exiting.\n"
5758msgstr "" 5691msgstr ""
5759 5692
5760#: src/regex/gnunet-regex-profiler.c:1555 5693#: src/regex/gnunet-regex-profiler.c:1557
5761msgid "name of the file for writing statistics" 5694msgid "name of the file for writing statistics"
5762msgstr "" 5695msgstr ""
5763 5696
5764#: src/regex/gnunet-regex-profiler.c:1561 5697#: src/regex/gnunet-regex-profiler.c:1563
5765msgid "wait TIMEOUT before ending the experiment" 5698msgid "wait TIMEOUT before ending the experiment"
5766msgstr "" 5699msgstr ""
5767 5700
5768#: src/regex/gnunet-regex-profiler.c:1567 5701#: src/regex/gnunet-regex-profiler.c:1569
5769msgid "directory with policy files" 5702msgid "directory with policy files"
5770msgstr "" 5703msgstr ""
5771 5704
5772#: src/regex/gnunet-regex-profiler.c:1574 5705#: src/regex/gnunet-regex-profiler.c:1576
5773msgid "name of file with input strings" 5706msgid "name of file with input strings"
5774msgstr "" 5707msgstr ""
5775 5708
5776#: src/regex/gnunet-regex-profiler.c:1580 5709#: src/regex/gnunet-regex-profiler.c:1582
5777msgid "name of file with hosts' names" 5710msgid "name of file with hosts' names"
5778msgstr "" 5711msgstr ""
5779 5712
5780#: src/regex/gnunet-regex-profiler.c:1593 5713#: src/regex/gnunet-regex-profiler.c:1595
5781msgid "Profiler for regex" 5714msgid "Profiler for regex"
5782msgstr "" 5715msgstr ""
5783 5716
5784#: src/regex/gnunet-regex-simulation-profiler.c:697 5717#: src/regex/gnunet-regex-simulation-profiler.c:699
5785msgid "name of the table to write DFAs" 5718msgid "name of the table to write DFAs"
5786msgstr "" 5719msgstr ""
5787 5720
5788#: src/regex/gnunet-regex-simulation-profiler.c:703 5721#: src/regex/gnunet-regex-simulation-profiler.c:705
5789msgid "maximum path compression length" 5722msgid "maximum path compression length"
5790msgstr "" 5723msgstr ""
5791 5724
5792#: src/regex/gnunet-regex-simulation-profiler.c:717 5725#: src/regex/gnunet-regex-simulation-profiler.c:719
5793msgid "Profiler for regex library" 5726msgid "Profiler for regex library"
5794msgstr "" 5727msgstr ""
5795 5728
5796#: src/regex/regex_api_announce.c:150 5729#: src/regex/regex_api_announce.c:152
5797#, c-format 5730#, c-format
5798msgid "Regex `%s' is too long!\n" 5731msgid "Regex `%s' is too long!\n"
5799msgstr "" 5732msgstr ""
5800 5733
5801#: src/regex/regex_api_search.c:210 5734#: src/regex/regex_api_search.c:212
5802#, c-format 5735#, c-format
5803msgid "Search string `%s' is too long!\n" 5736msgid "Search string `%s' is too long!\n"
5804msgstr "" 5737msgstr ""
5805 5738
5806#: src/rest/gnunet-rest-server.c:925 5739#: src/rest/gnunet-rest-server.c:927
5807msgid "listen on specified port (default: 7776)" 5740msgid "listen on specified port (default: 7776)"
5808msgstr "" 5741msgstr ""
5809 5742
5810#: src/rest/gnunet-rest-server.c:942 5743#: src/rest/gnunet-rest-server.c:944
5811msgid "GNUnet REST server" 5744msgid "GNUnet REST server"
5812msgstr "" 5745msgstr ""
5813 5746
5814#: src/rest-plugins/plugin_rest_copying.c:207 5747#: src/rest-plugins/plugin_rest_copying.c:209
5815msgid "COPYING REST API initialized\n" 5748msgid "COPYING REST API initialized\n"
5816msgstr "" 5749msgstr ""
5817 5750
5818#: src/rest-plugins/plugin_rest_credential.c:1126 5751#: src/rest-plugins/plugin_rest_credential.c:1128
5819msgid "GNS REST API initialized\n" 5752msgid "GNS REST API initialized\n"
5820msgstr "" 5753msgstr ""
5821 5754
5822#: src/rest-plugins/plugin_rest_gns.c:450 5755#: src/rest-plugins/plugin_rest_gns.c:452
5823msgid "Gns REST API initialized\n" 5756msgid "Gns REST API initialized\n"
5824msgstr "" 5757msgstr ""
5825 5758
5826#: src/rest-plugins/plugin_rest_identity.c:1295 5759#: src/rest-plugins/plugin_rest_identity.c:1297
5827msgid "Identity REST API initialized\n" 5760msgid "Identity REST API initialized\n"
5828msgstr "" 5761msgstr ""
5829 5762
5830#: src/rest-plugins/plugin_rest_namestore.c:1077 5763#: src/rest-plugins/plugin_rest_namestore.c:1079
5831msgid "Namestore REST API initialized\n" 5764msgid "Namestore REST API initialized\n"
5832msgstr "" 5765msgstr ""
5833 5766
5834#: src/rest-plugins/plugin_rest_openid_connect.c:2135 5767#: src/rest-plugins/plugin_rest_openid_connect.c:2245
5835#: src/rest-plugins/plugin_rest_reclaim.c:1079 5768#: src/rest-plugins/plugin_rest_reclaim.c:1079
5836msgid "Identity Provider REST API initialized\n" 5769msgid "Identity Provider REST API initialized\n"
5837msgstr "" 5770msgstr ""
5838 5771
5839#: src/rest-plugins/plugin_rest_peerinfo.c:794 5772#: src/rest-plugins/plugin_rest_peerinfo.c:796
5840msgid "Peerinfo REST API initialized\n" 5773msgid "Peerinfo REST API initialized\n"
5841msgstr "" 5774msgstr ""
5842 5775
5843#: src/revocation/gnunet-revocation.c:127 5776#: src/revocation/gnunet-revocation.c:129
5844#, c-format 5777#, c-format
5845msgid "Key `%s' is valid\n" 5778msgid "Key `%s' is valid\n"
5846msgstr "" 5779msgstr ""
5847 5780
5848#: src/revocation/gnunet-revocation.c:132 5781#: src/revocation/gnunet-revocation.c:134
5849#, c-format 5782#, c-format
5850msgid "Key `%s' has been revoked\n" 5783msgid "Key `%s' has been revoked\n"
5851msgstr "" 5784msgstr ""
5852 5785
5853#: src/revocation/gnunet-revocation.c:138 5786#: src/revocation/gnunet-revocation.c:140
5854msgid "Internal error\n" 5787msgid "Internal error\n"
5855msgstr "" 5788msgstr ""
5856 5789
5857#: src/revocation/gnunet-revocation.c:164 5790#: src/revocation/gnunet-revocation.c:166
5858#, c-format 5791#, c-format
5859msgid "Key for ego `%s' is still valid, revocation failed (!)\n" 5792msgid "Key for ego `%s' is still valid, revocation failed (!)\n"
5860msgstr "" 5793msgstr ""
5861 5794
5862#: src/revocation/gnunet-revocation.c:169 5795#: src/revocation/gnunet-revocation.c:171
5863msgid "Revocation failed (!)\n" 5796msgid "Revocation failed (!)\n"
5864msgstr "" 5797msgstr ""
5865 5798
5866#: src/revocation/gnunet-revocation.c:174 5799#: src/revocation/gnunet-revocation.c:176
5867#, c-format 5800#, c-format
5868msgid "Key for ego `%s' has been successfully revoked\n" 5801msgid "Key for ego `%s' has been successfully revoked\n"
5869msgstr "" 5802msgstr ""
5870 5803
5871#: src/revocation/gnunet-revocation.c:179 5804#: src/revocation/gnunet-revocation.c:181
5872msgid "Revocation successful.\n" 5805msgid "Revocation successful.\n"
5873msgstr "" 5806msgstr ""
5874 5807
5875#: src/revocation/gnunet-revocation.c:184 5808#: src/revocation/gnunet-revocation.c:186
5876msgid "Internal error, key revocation might have failed\n" 5809msgid "Internal error, key revocation might have failed\n"
5877msgstr "" 5810msgstr ""
5878 5811
5879#: src/revocation/gnunet-revocation.c:321 5812#: src/revocation/gnunet-revocation.c:323
5880#, c-format 5813#, c-format
5881msgid "Revocation certificate for `%s' stored in `%s'\n" 5814msgid "Revocation certificate for `%s' stored in `%s'\n"
5882msgstr "" 5815msgstr ""
5883 5816
5884#: src/revocation/gnunet-revocation.c:350 5817#: src/revocation/gnunet-revocation.c:352
5885#, c-format 5818#, c-format
5886msgid "Ego `%s' not found.\n" 5819msgid "Ego `%s' not found.\n"
5887msgstr "" 5820msgstr ""
5888 5821
5889#: src/revocation/gnunet-revocation.c:371 5822#: src/revocation/gnunet-revocation.c:373
5890#, c-format 5823#, c-format
5891msgid "Error: revocation certificate in `%s' is not for `%s'\n" 5824msgid "Error: revocation certificate in `%s' is not for `%s'\n"
5892msgstr "" 5825msgstr ""
5893 5826
5894#: src/revocation/gnunet-revocation.c:391 5827#: src/revocation/gnunet-revocation.c:393
5895msgid "Revocation certificate ready\n" 5828msgid "Revocation certificate ready\n"
5896msgstr "" 5829msgstr ""
5897 5830
5898#: src/revocation/gnunet-revocation.c:401 5831#: src/revocation/gnunet-revocation.c:403
5899msgid "Revocation certificate not ready, calculating proof of work\n" 5832msgid "Revocation certificate not ready, calculating proof of work\n"
5900msgstr "" 5833msgstr ""
5901 5834
5902#: src/revocation/gnunet-revocation.c:435 src/social/gnunet-social.c:1178 5835#: src/revocation/gnunet-revocation.c:437
5903#, c-format 5836#, c-format
5904msgid "Public key `%s' malformed\n" 5837msgid "Public key `%s' malformed\n"
5905msgstr "" 5838msgstr ""
5906 5839
5907#: src/revocation/gnunet-revocation.c:448 5840#: src/revocation/gnunet-revocation.c:450
5908msgid "" 5841msgid ""
5909"Testing and revoking at the same time is not allowed, only executing test.\n" 5842"Testing and revoking at the same time is not allowed, only executing test.\n"
5910msgstr "" 5843msgstr ""
5911 5844
5912#: src/revocation/gnunet-revocation.c:468 5845#: src/revocation/gnunet-revocation.c:470
5913msgid "No filename to store revocation certificate given.\n" 5846msgid "No filename to store revocation certificate given.\n"
5914msgstr "" 5847msgstr ""
5915 5848
5916#: src/revocation/gnunet-revocation.c:489 5849#: src/revocation/gnunet-revocation.c:491
5917#, c-format 5850#, c-format
5918msgid "Failed to read revocation certificate from `%s'\n" 5851msgid "Failed to read revocation certificate from `%s'\n"
5919msgstr "" 5852msgstr ""
5920 5853
5921#: src/revocation/gnunet-revocation.c:514 5854#: src/revocation/gnunet-revocation.c:516
5922msgid "No action specified. Nothing to do.\n" 5855msgid "No action specified. Nothing to do.\n"
5923msgstr "" 5856msgstr ""
5924 5857
5925#: src/revocation/gnunet-revocation.c:533 5858#: src/revocation/gnunet-revocation.c:535
5926msgid "use NAME for the name of the revocation file" 5859msgid "use NAME for the name of the revocation file"
5927msgstr "" 5860msgstr ""
5928 5861
5929#: src/revocation/gnunet-revocation.c:539 5862#: src/revocation/gnunet-revocation.c:541
5930msgid "" 5863msgid ""
5931"revoke the private key associated for the the private key associated with " 5864"revoke the private key associated for the the private key associated with "
5932"the ego NAME " 5865"the ego NAME "
5933msgstr "" 5866msgstr ""
5934 5867
5935#: src/revocation/gnunet-revocation.c:544 5868#: src/revocation/gnunet-revocation.c:546
5936msgid "actually perform revocation, otherwise we just do the precomputation" 5869msgid "actually perform revocation, otherwise we just do the precomputation"
5937msgstr "" 5870msgstr ""
5938 5871
5939#: src/revocation/gnunet-revocation.c:550 5872#: src/revocation/gnunet-revocation.c:552
5940msgid "test if the public key KEY has been revoked" 5873msgid "test if the public key KEY has been revoked"
5941msgstr "" 5874msgstr ""
5942 5875
5943#: src/revocation/gnunet-service-revocation.c:457 5876#: src/revocation/gnunet-service-revocation.c:459
5944msgid "# unsupported revocations received via set union" 5877msgid "# unsupported revocations received via set union"
5945msgstr "" 5878msgstr ""
5946 5879
5947#: src/revocation/gnunet-service-revocation.c:466 5880#: src/revocation/gnunet-service-revocation.c:468
5948msgid "# revocation messages received via set union" 5881msgid "# revocation messages received via set union"
5949msgstr "" 5882msgstr ""
5950 5883
5951#: src/revocation/gnunet-service-revocation.c:471 5884#: src/revocation/gnunet-service-revocation.c:473
5952#, c-format 5885#, c-format
5953msgid "Error computing revocation set union with %s\n" 5886msgid "Error computing revocation set union with %s\n"
5954msgstr "" 5887msgstr ""
5955 5888
5956#: src/revocation/gnunet-service-revocation.c:475 5889#: src/revocation/gnunet-service-revocation.c:477
5957msgid "# revocation set unions failed" 5890msgid "# revocation set unions failed"
5958msgstr "" 5891msgstr ""
5959 5892
5960#: src/revocation/gnunet-service-revocation.c:484 5893#: src/revocation/gnunet-service-revocation.c:486
5961msgid "# revocation set unions completed" 5894msgid "# revocation set unions completed"
5962msgstr "" 5895msgstr ""
5963 5896
5964#: src/revocation/gnunet-service-revocation.c:523 5897#: src/revocation/gnunet-service-revocation.c:525
5965msgid "SET service crashed, terminating revocation service\n" 5898msgid "SET service crashed, terminating revocation service\n"
5966msgstr "" 5899msgstr ""
5967 5900
5968#: src/revocation/gnunet-service-revocation.c:865 5901#: src/revocation/gnunet-service-revocation.c:867
5969msgid "Could not open revocation database file!" 5902msgid "Could not open revocation database file!"
5970msgstr "" 5903msgstr ""
5971 5904
5972#: src/rps/gnunet-rps.c:258 5905#: src/rps/gnunet-rps.c:260
5973msgid "Seed a PeerID" 5906msgid "Seed a PeerID"
5974msgstr "" 5907msgstr ""
5975 5908
5976#: src/rps/gnunet-rps.c:262 5909#: src/rps/gnunet-rps.c:264
5977msgid "Get updates of view (0 for infinite updates)" 5910msgid "Get updates of view (0 for infinite updates)"
5978msgstr "" 5911msgstr ""
5979 5912
5980#: src/rps/gnunet-rps.c:266 5913#: src/rps/gnunet-rps.c:268
5981msgid "Get peers from biased stream" 5914msgid "Get peers from biased stream"
5982msgstr "" 5915msgstr ""
5983 5916
5984#: src/rps/gnunet-rps-profiler.c:2770 5917#: src/rps/gnunet-rps-profiler.c:2959
5985msgid "duration of the profiling" 5918msgid "duration of the profiling"
5986msgstr "" 5919msgstr ""
5987 5920
5988#: src/rps/gnunet-rps-profiler.c:2776 5921#: src/rps/gnunet-rps-profiler.c:2965
5989msgid "timeout for the profiling" 5922msgid "timeout for the profiling"
5990msgstr "" 5923msgstr ""
5991 5924
5992#: src/rps/gnunet-rps-profiler.c:2782 5925#: src/rps/gnunet-rps-profiler.c:2971
5993#, fuzzy 5926#, fuzzy
5994msgid "number of PeerIDs to request" 5927msgid "number of PeerIDs to request"
5995msgstr "nombre de valeurs" 5928msgstr "nombre de valeurs"
5996 5929
5997#: src/rps/gnunet-rps-profiler.c:2797 5930#: src/rps/gnunet-rps-profiler.c:2986
5998msgid "Measure quality and performance of the RPS service." 5931msgid "Measure quality and performance of the RPS service."
5999msgstr "" 5932msgstr ""
6000 5933
6001#: src/scalarproduct/gnunet-scalarproduct.c:218 5934#: src/scalarproduct/gnunet-scalarproduct.c:220
6002msgid "You must specify at least one message ID to check!\n" 5935msgid "You must specify at least one message ID to check!\n"
6003msgstr "" 5936msgstr ""
6004 5937
6005#: src/scalarproduct/gnunet-scalarproduct.c:225 5938#: src/scalarproduct/gnunet-scalarproduct.c:227
6006msgid "This program needs a session identifier for comparing vectors.\n" 5939msgid "This program needs a session identifier for comparing vectors.\n"
6007msgstr "" 5940msgstr ""
6008 5941
6009#: src/scalarproduct/gnunet-scalarproduct.c:238 5942#: src/scalarproduct/gnunet-scalarproduct.c:240
6010#, c-format 5943#, c-format
6011msgid "" 5944msgid ""
6012"Tried to set initiator mode, as peer ID was given. However, `%s' is not a " 5945"Tried to set initiator mode, as peer ID was given. However, `%s' is not a "
6013"valid peer identifier.\n" 5946"valid peer identifier.\n"
6014msgstr "" 5947msgstr ""
6015 5948
6016#: src/scalarproduct/gnunet-scalarproduct.c:256 5949#: src/scalarproduct/gnunet-scalarproduct.c:258
6017msgid "Need elements to compute the scalarproduct, got none.\n" 5950msgid "Need elements to compute the scalarproduct, got none.\n"
6018msgstr "" 5951msgstr ""
6019 5952
6020#: src/scalarproduct/gnunet-scalarproduct.c:278 5953#: src/scalarproduct/gnunet-scalarproduct.c:280
6021#, c-format 5954#, c-format
6022msgid "Malformed input, could not parse `%s'\n" 5955msgid "Malformed input, could not parse `%s'\n"
6023msgstr "" 5956msgstr ""
6024 5957
6025#: src/scalarproduct/gnunet-scalarproduct.c:296 5958#: src/scalarproduct/gnunet-scalarproduct.c:298
6026#, fuzzy, c-format 5959#, fuzzy, c-format
6027msgid "Could not convert `%s' to int64_t.\n" 5960msgid "Could not convert `%s' to int64_t.\n"
6028msgstr "Impossible d’ouvrir « %s ».\n" 5961msgstr "Impossible d’ouvrir « %s ».\n"
6029 5962
6030#: src/scalarproduct/gnunet-scalarproduct.c:323 5963#: src/scalarproduct/gnunet-scalarproduct.c:325
6031#, c-format 5964#, c-format
6032msgid "Failed to initiate computation, were all keys unique?\n" 5965msgid "Failed to initiate computation, were all keys unique?\n"
6033msgstr "" 5966msgstr ""
6034 5967
6035#: src/scalarproduct/gnunet-scalarproduct.c:349 5968#: src/scalarproduct/gnunet-scalarproduct.c:351
6036#: src/scalarproduct/gnunet-scalarproduct.c:355 5969#: src/scalarproduct/gnunet-scalarproduct.c:357
6037msgid "" 5970msgid ""
6038"A comma separated list of elements to compare as vector with our remote peer." 5971"A comma separated list of elements to compare as vector with our remote peer."
6039msgstr "" 5972msgstr ""
6040 5973
6041#: src/scalarproduct/gnunet-scalarproduct.c:361 5974#: src/scalarproduct/gnunet-scalarproduct.c:363
6042msgid "" 5975msgid ""
6043"[Optional] peer to calculate our scalarproduct with. If this parameter is " 5976"[Optional] peer to calculate our scalarproduct with. If this parameter is "
6044"not given, the service will wait for a remote peer to compute the request." 5977"not given, the service will wait for a remote peer to compute the request."
6045msgstr "" 5978msgstr ""
6046 5979
6047#: src/scalarproduct/gnunet-scalarproduct.c:367 5980#: src/scalarproduct/gnunet-scalarproduct.c:369
6048msgid "Transaction ID shared with peer." 5981msgid "Transaction ID shared with peer."
6049msgstr "" 5982msgstr ""
6050 5983
6051#: src/scalarproduct/gnunet-scalarproduct.c:377 5984#: src/scalarproduct/gnunet-scalarproduct.c:379
6052msgid "Calculate the Vectorproduct with a GNUnet peer." 5985msgid "Calculate the Vectorproduct with a GNUnet peer."
6053msgstr "" 5986msgstr ""
6054 5987
6055#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1399 5988#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
6056#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1343 5989#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
6057#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1170 5990#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
6058#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1061 5991#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
6059msgid "Connect to CADET failed\n" 5992msgid "Connect to CADET failed\n"
6060msgstr "" 5993msgstr ""
6061 5994
6062#: src/scalarproduct/scalarproduct_api.c:183 5995#: src/scalarproduct/scalarproduct_api.c:185
6063msgid "Keys given to SCALARPRODUCT not unique!\n" 5996msgid "Keys given to SCALARPRODUCT not unique!\n"
6064msgstr "" 5997msgstr ""
6065 5998
6066#: src/secretsharing/gnunet-secretsharing-profiler.c:614 5999#: src/secretsharing/gnunet-secretsharing-profiler.c:616
6067msgid "dkg start delay" 6000msgid "dkg start delay"
6068msgstr "" 6001msgstr ""
6069 6002
6070#: src/secretsharing/gnunet-secretsharing-profiler.c:620 6003#: src/secretsharing/gnunet-secretsharing-profiler.c:622
6071msgid "dkg timeout" 6004msgid "dkg timeout"
6072msgstr "" 6005msgstr ""
6073 6006
6074#: src/secretsharing/gnunet-secretsharing-profiler.c:626 6007#: src/secretsharing/gnunet-secretsharing-profiler.c:628
6075msgid "threshold" 6008msgid "threshold"
6076msgstr "threshold" 6009msgstr "threshold"
6077 6010
6078#: src/secretsharing/gnunet-secretsharing-profiler.c:631 6011#: src/secretsharing/gnunet-secretsharing-profiler.c:633
6079msgid "also profile decryption" 6012msgid "also profile decryption"
6080msgstr "" 6013msgstr ""
6081 6014
6082#: src/set/gnunet-service-set.c:2004 6015#: src/set/gnunet-service-set.c:2005
6083#, fuzzy 6016#, fuzzy
6084msgid "Could not connect to CADET service\n" 6017msgid "Could not connect to CADET service\n"
6085msgstr "Impossible d’ouvrir « %s ».\n" 6018msgstr "Impossible d’ouvrir « %s ».\n"
6086 6019
6087#: src/set/gnunet-set-ibf-profiler.c:250 6020#: src/set/gnunet-set-ibf-profiler.c:252
6088msgid "number of element in set A-B" 6021msgid "number of element in set A-B"
6089msgstr "" 6022msgstr ""
6090 6023
6091#: src/set/gnunet-set-ibf-profiler.c:256 6024#: src/set/gnunet-set-ibf-profiler.c:258
6092msgid "number of element in set B-A" 6025msgid "number of element in set B-A"
6093msgstr "" 6026msgstr ""
6094 6027
6095#: src/set/gnunet-set-ibf-profiler.c:262 6028#: src/set/gnunet-set-ibf-profiler.c:264
6096msgid "number of common elements in A and B" 6029msgid "number of common elements in A and B"
6097msgstr "" 6030msgstr ""
6098 6031
6099#: src/set/gnunet-set-ibf-profiler.c:268 6032#: src/set/gnunet-set-ibf-profiler.c:270
6100msgid "hash num" 6033msgid "hash num"
6101msgstr "numéro de hash" 6034msgstr "numéro de hash"
6102 6035
6103#: src/set/gnunet-set-ibf-profiler.c:274 6036#: src/set/gnunet-set-ibf-profiler.c:276
6104msgid "ibf size" 6037msgid "ibf size"
6105msgstr "taille ibz" 6038msgstr "taille ibz"
6106 6039
6107#: src/set/gnunet-set-profiler.c:442 6040#: src/set/gnunet-set-profiler.c:444
6108msgid "use byzantine mode" 6041msgid "use byzantine mode"
6109msgstr "" 6042msgstr ""
6110 6043
6111#: src/set/gnunet-set-profiler.c:448 6044#: src/set/gnunet-set-profiler.c:450
6112msgid "force sending full set" 6045msgid "force sending full set"
6113msgstr "" 6046msgstr ""
6114 6047
6115#: src/set/gnunet-set-profiler.c:454 6048#: src/set/gnunet-set-profiler.c:456
6116msgid "number delta operation" 6049msgid "number delta operation"
6117msgstr "" 6050msgstr ""
6118 6051
6119#: src/set/gnunet-set-profiler.c:466 6052#: src/set/gnunet-set-profiler.c:468
6120msgid "operation to execute" 6053msgid "operation to execute"
6121msgstr "" 6054msgstr ""
6122 6055
6123#: src/set/gnunet-set-profiler.c:472 6056#: src/set/gnunet-set-profiler.c:474
6124msgid "element size" 6057msgid "element size"
6125msgstr "" 6058msgstr ""
6126 6059
6127#: src/social/gnunet-social.c:1164 6060#: src/sq/sq.c:54
6128msgid "--place missing or invalid.\n"
6129msgstr ""
6130
6131#: src/social/gnunet-social.c:1215
6132msgid "assign --name in state to --data"
6133msgstr ""
6134
6135#: src/social/gnunet-social.c:1220
6136msgid "say good-bye and leave somebody else's place"
6137msgstr ""
6138
6139#: src/social/gnunet-social.c:1225
6140msgid "create a place"
6141msgstr ""
6142
6143#: src/social/gnunet-social.c:1230
6144msgid "destroy a place we were hosting"
6145msgstr ""
6146
6147#: src/social/gnunet-social.c:1235
6148msgid "enter somebody else's place"
6149msgstr ""
6150
6151#: src/social/gnunet-social.c:1241
6152msgid "find state matching name prefix"
6153msgstr ""
6154
6155#: src/social/gnunet-social.c:1246
6156msgid "replay history of messages up to the given --limit"
6157msgstr ""
6158
6159#: src/social/gnunet-social.c:1251
6160msgid "reconnect to a previously created place"
6161msgstr ""
6162
6163#: src/social/gnunet-social.c:1256
6164msgid "publish something to a place we are hosting"
6165msgstr ""
6166
6167#: src/social/gnunet-social.c:1261
6168msgid "reconnect to a previously entered place"
6169msgstr ""
6170
6171#: src/social/gnunet-social.c:1266
6172msgid "search for state matching exact name"
6173msgstr ""
6174
6175#: src/social/gnunet-social.c:1271
6176msgid "submit something to somebody's place"
6177msgstr ""
6178
6179#: src/social/gnunet-social.c:1276
6180msgid "list of egos and subscribed places"
6181msgstr ""
6182
6183#: src/social/gnunet-social.c:1281
6184msgid "extract and replay history between message IDs --start and --until"
6185msgstr ""
6186
6187#: src/social/gnunet-social.c:1290
6188msgid "application ID to use when connecting"
6189msgstr ""
6190
6191#: src/social/gnunet-social.c:1296
6192msgid "message body or state value"
6193msgstr ""
6194
6195#: src/social/gnunet-social.c:1302
6196msgid "name or public key of ego"
6197msgstr ""
6198
6199#: src/social/gnunet-social.c:1307
6200msgid "wait for incoming messages"
6201msgstr ""
6202
6203#: src/social/gnunet-social.c:1313
6204msgid "GNS name"
6205msgstr ""
6206
6207#: src/social/gnunet-social.c:1319
6208msgid "peer ID for --guest-enter"
6209msgstr ""
6210
6211#: src/social/gnunet-social.c:1325
6212msgid "name (key) to query from state"
6213msgstr ""
6214
6215#: src/social/gnunet-social.c:1331
6216msgid "method name"
6217msgstr ""
6218
6219#: src/social/gnunet-social.c:1337
6220#, fuzzy
6221msgid "number of messages to replay from history"
6222msgstr "nombre de valeurs"
6223
6224#: src/social/gnunet-social.c:1343
6225msgid "key address of place"
6226msgstr ""
6227
6228#: src/social/gnunet-social.c:1349
6229msgid "start message ID for history replay"
6230msgstr ""
6231
6232#: src/social/gnunet-social.c:1354
6233msgid "respond to entry requests by admitting all guests"
6234msgstr ""
6235
6236#: src/social/gnunet-social.c:1360
6237msgid "end message ID for history replay"
6238msgstr ""
6239
6240#: src/social/gnunet-social.c:1365
6241msgid "respond to entry requests by refusing all guests"
6242msgstr ""
6243
6244#: src/social/gnunet-social.c:1375
6245msgid ""
6246"gnunet-social - Interact with the social service: enter/leave, send/receive "
6247"messages, access history and state.\n"
6248msgstr ""
6249
6250#: src/sq/sq.c:52
6251#, c-format 6061#, c-format
6252msgid "Failure to bind %u-th SQL parameter\n" 6062msgid "Failure to bind %u-th SQL parameter\n"
6253msgstr "" 6063msgstr ""
6254 6064
6255#: src/sq/sq.c:59 6065#: src/sq/sq.c:61
6256msgid "Failure in sqlite3_reset (!)\n" 6066msgid "Failure in sqlite3_reset (!)\n"
6257msgstr "" 6067msgstr ""
6258 6068
6259#: src/sq/sq.c:137 6069#: src/sq/sq.c:139
6260#, fuzzy, c-format 6070#, fuzzy, c-format
6261msgid "Failed to reset sqlite statement with error: %s\n" 6071msgid "Failed to reset sqlite statement with error: %s\n"
6262msgstr "Échec du démarrage de %s\n" 6072msgstr "Échec du démarrage de %s\n"
6263 6073
6264#: src/statistics/gnunet-service-statistics.c:336 6074#: src/statistics/gnunet-service-statistics.c:338
6265#, c-format 6075#, c-format
6266msgid "Wrote %llu bytes of statistics to `%s'\n" 6076msgid "Wrote %llu bytes of statistics to `%s'\n"
6267msgstr "" 6077msgstr ""
6268 6078
6269#: src/statistics/gnunet-service-statistics.c:1084 6079#: src/statistics/gnunet-service-statistics.c:1086
6270#, c-format 6080#, c-format
6271msgid "Loading %llu bytes of statistics from `%s'\n" 6081msgid "Loading %llu bytes of statistics from `%s'\n"
6272msgstr "" 6082msgstr ""
6273 6083
6274#: src/statistics/gnunet-statistics.c:407 6084#: src/statistics/gnunet-statistics.c:409
6275#: src/statistics/gnunet-statistics.c:448 6085#: src/statistics/gnunet-statistics.c:450
6276msgid "Failed to obtain statistics.\n" 6086msgid "Failed to obtain statistics.\n"
6277msgstr "" 6087msgstr ""
6278 6088
6279#: src/statistics/gnunet-statistics.c:410 6089#: src/statistics/gnunet-statistics.c:412
6280#: src/statistics/gnunet-statistics.c:451 6090#: src/statistics/gnunet-statistics.c:453
6281#, c-format 6091#, c-format
6282msgid "Failed to obtain statistics from host `%s:%llu'\n" 6092msgid "Failed to obtain statistics from host `%s:%llu'\n"
6283msgstr "" 6093msgstr ""
6284 6094
6285#: src/statistics/gnunet-statistics.c:526 6095#: src/statistics/gnunet-statistics.c:528
6286msgid "Missing argument: subsystem \n" 6096msgid "Missing argument: subsystem \n"
6287msgstr "" 6097msgstr ""
6288 6098
6289#: src/statistics/gnunet-statistics.c:534 6099#: src/statistics/gnunet-statistics.c:536
6290msgid "Missing argument: name\n" 6100msgid "Missing argument: name\n"
6291msgstr "" 6101msgstr ""
6292 6102
6293#: src/statistics/gnunet-statistics.c:577 6103#: src/statistics/gnunet-statistics.c:579
6294#, c-format 6104#, c-format
6295msgid "No subsystem or name given\n" 6105msgid "No subsystem or name given\n"
6296msgstr "" 6106msgstr ""
6297 6107
6298#: src/statistics/gnunet-statistics.c:592 6108#: src/statistics/gnunet-statistics.c:594
6299#, c-format 6109#, c-format
6300msgid "Failed to initialize watch routine\n" 6110msgid "Failed to initialize watch routine\n"
6301msgstr "" 6111msgstr ""
6302 6112
6303#: src/statistics/gnunet-statistics.c:727 6113#: src/statistics/gnunet-statistics.c:729
6304#, c-format 6114#, c-format
6305msgid "Invalid argument `%s'\n" 6115msgid "Invalid argument `%s'\n"
6306msgstr "Argument invalide « %s »\n" 6116msgstr "Argument invalide « %s »\n"
6307 6117
6308#: src/statistics/gnunet-statistics.c:745 6118#: src/statistics/gnunet-statistics.c:747
6309#, c-format 6119#, c-format
6310msgid "A port is required to connect to host `%s'\n" 6120msgid "A port is required to connect to host `%s'\n"
6311msgstr "" 6121msgstr ""
6312 6122
6313#: src/statistics/gnunet-statistics.c:753 6123#: src/statistics/gnunet-statistics.c:755
6314#, c-format 6124#, c-format
6315msgid "A port has to be between 1 and 65535 to connect to host `%s'\n" 6125msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
6316msgstr "" 6126msgstr ""
6317 6127
6318#: src/statistics/gnunet-statistics.c:784 6128#: src/statistics/gnunet-statistics.c:786
6319#, c-format 6129#, c-format
6320msgid "Not able to watch testbed nodes (yet - feel free to implement)\n" 6130msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
6321msgstr "" 6131msgstr ""
6322 6132
6323#: src/statistics/gnunet-statistics.c:817 6133#: src/statistics/gnunet-statistics.c:819
6324msgid "limit output to statistics for the given NAME" 6134msgid "limit output to statistics for the given NAME"
6325msgstr "" 6135msgstr ""
6326 6136
6327#: src/statistics/gnunet-statistics.c:822 6137#: src/statistics/gnunet-statistics.c:824
6328msgid "make the value being set persistent" 6138msgid "make the value being set persistent"
6329msgstr "" 6139msgstr ""
6330 6140
6331#: src/statistics/gnunet-statistics.c:828 6141#: src/statistics/gnunet-statistics.c:830
6332msgid "limit output to the given SUBSYSTEM" 6142msgid "limit output to the given SUBSYSTEM"
6333msgstr "" 6143msgstr ""
6334 6144
6335#: src/statistics/gnunet-statistics.c:834 6145#: src/statistics/gnunet-statistics.c:836
6336msgid "use as csv separator" 6146msgid "use as csv separator"
6337msgstr "" 6147msgstr ""
6338 6148
6339#: src/statistics/gnunet-statistics.c:840 6149#: src/statistics/gnunet-statistics.c:842
6340msgid "path to the folder containing the testbed data" 6150msgid "path to the folder containing the testbed data"
6341msgstr "" 6151msgstr ""
6342 6152
6343#: src/statistics/gnunet-statistics.c:845 6153#: src/statistics/gnunet-statistics.c:847
6344msgid "just print the statistics value" 6154msgid "just print the statistics value"
6345msgstr "" 6155msgstr ""
6346 6156
6347#: src/statistics/gnunet-statistics.c:850 6157#: src/statistics/gnunet-statistics.c:852
6348msgid "watch value continuously" 6158msgid "watch value continuously"
6349msgstr "" 6159msgstr ""
6350 6160
6351#: src/statistics/gnunet-statistics.c:856 6161#: src/statistics/gnunet-statistics.c:858
6352msgid "connect to remote host" 6162msgid "connect to remote host"
6353msgstr "" 6163msgstr ""
6354 6164
6355#: src/statistics/gnunet-statistics.c:862 6165#: src/statistics/gnunet-statistics.c:864
6356msgid "port for remote host" 6166msgid "port for remote host"
6357msgstr "" 6167msgstr ""
6358 6168
6359#: src/statistics/gnunet-statistics.c:879 6169#: src/statistics/gnunet-statistics.c:881
6360msgid "Print statistics about GNUnet operations." 6170msgid "Print statistics about GNUnet operations."
6361msgstr "" 6171msgstr ""
6362 6172
6363#: src/statistics/statistics_api.c:751 6173#: src/statistics/statistics_api.c:753
6364msgid "Could not save some persistent statistics\n" 6174msgid "Could not save some persistent statistics\n"
6365msgstr "" 6175msgstr ""
6366 6176
6367#: src/testbed/generate-underlay-topology.c:223 6177#: src/testbed/generate-underlay-topology.c:225
6368msgid "Need at least 2 arguments\n" 6178msgid "Need at least 2 arguments\n"
6369msgstr "" 6179msgstr ""
6370 6180
6371#: src/testbed/generate-underlay-topology.c:228 6181#: src/testbed/generate-underlay-topology.c:230
6372msgid "Database filename missing\n" 6182msgid "Database filename missing\n"
6373msgstr "" 6183msgstr ""
6374 6184
6375#: src/testbed/generate-underlay-topology.c:235 6185#: src/testbed/generate-underlay-topology.c:237
6376msgid "Topology string missing\n" 6186msgid "Topology string missing\n"
6377msgstr "" 6187msgstr ""
6378 6188
6379#: src/testbed/generate-underlay-topology.c:240 6189#: src/testbed/generate-underlay-topology.c:242
6380#, c-format 6190#, c-format
6381msgid "Invalid topology: %s\n" 6191msgid "Invalid topology: %s\n"
6382msgstr "Topologie invalide : %s\n" 6192msgstr "Topologie invalide : %s\n"
6383 6193
6384#: src/testbed/generate-underlay-topology.c:253 6194#: src/testbed/generate-underlay-topology.c:255
6385#, c-format 6195#, c-format
6386msgid "An argument is missing for given topology `%s'\n" 6196msgid "An argument is missing for given topology `%s'\n"
6387msgstr "" 6197msgstr ""
6388 6198
6389#: src/testbed/generate-underlay-topology.c:259 6199#: src/testbed/generate-underlay-topology.c:261
6390#, c-format 6200#, c-format
6391msgid "Invalid argument `%s' given as topology argument\n" 6201msgid "Invalid argument `%s' given as topology argument\n"
6392msgstr "" 6202msgstr ""
6393 6203
6394#: src/testbed/generate-underlay-topology.c:267 6204#: src/testbed/generate-underlay-topology.c:269
6395#, c-format 6205#, c-format
6396msgid "Filename argument missing for topology `%s'\n" 6206msgid "Filename argument missing for topology `%s'\n"
6397msgstr "" 6207msgstr ""
6398 6208
6399#: src/testbed/generate-underlay-topology.c:281 6209#: src/testbed/generate-underlay-topology.c:283
6400#, c-format 6210#, c-format
6401msgid "Second argument for topology `%s' is missing\n" 6211msgid "Second argument for topology `%s' is missing\n"
6402msgstr "" 6212msgstr ""
6403 6213
6404#: src/testbed/generate-underlay-topology.c:287 6214#: src/testbed/generate-underlay-topology.c:289
6405#, c-format 6215#, c-format
6406msgid "Invalid argument `%s'; expecting unsigned int\n" 6216msgid "Invalid argument `%s'; expecting unsigned int\n"
6407msgstr "" 6217msgstr ""
6408 6218
6409#: src/testbed/generate-underlay-topology.c:340 6219#: src/testbed/generate-underlay-topology.c:342
6410#: src/testbed/gnunet-testbed-profiler.c:281 6220#: src/testbed/gnunet-testbed-profiler.c:283
6411msgid "create COUNT number of peers" 6221msgid "create COUNT number of peers"
6412msgstr "" 6222msgstr ""
6413 6223
6414#: src/testbed/generate-underlay-topology.c:350 6224#: src/testbed/generate-underlay-topology.c:352
6415msgid "" 6225msgid ""
6416"Generates SQLite3 database representing a given underlay topology.\n" 6226"Generates SQLite3 database representing a given underlay topology.\n"
6417"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n" 6227"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n"
@@ -6435,83 +6245,83 @@ msgid ""
6435"content/topology-file-format\n" 6245"content/topology-file-format\n"
6436msgstr "" 6246msgstr ""
6437 6247
6438#: src/testbed/gnunet-daemon-latency-logger.c:313 6248#: src/testbed/gnunet-daemon-latency-logger.c:315
6439msgid "Daemon to log latency values of connections to neighbours" 6249msgid "Daemon to log latency values of connections to neighbours"
6440msgstr "" 6250msgstr ""
6441 6251
6442#: src/testbed/gnunet-daemon-testbed-blacklist.c:247 6252#: src/testbed/gnunet-daemon-testbed-blacklist.c:249
6443msgid "" 6253msgid ""
6444"Daemon to restrict incoming transport layer connections during testbed " 6254"Daemon to restrict incoming transport layer connections during testbed "
6445"deployments" 6255"deployments"
6446msgstr "" 6256msgstr ""
6447 6257
6448#: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 6258#: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
6449#: src/testing/testing.c:286 src/util/gnunet-ecc.c:310 6259#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
6450#, c-format 6260#, c-format
6451msgid "Incorrect hostkey file format: %s\n" 6261msgid "Incorrect hostkey file format: %s\n"
6452msgstr "" 6262msgstr ""
6453 6263
6454#: src/testbed/gnunet-daemon-testbed-underlay.c:469 6264#: src/testbed/gnunet-daemon-testbed-underlay.c:471
6455msgid "Daemon to restrict underlay network in testbed deployments" 6265msgid "Daemon to restrict underlay network in testbed deployments"
6456msgstr "" 6266msgstr ""
6457 6267
6458#: src/testbed/gnunet-service-testbed_cpustatus.c:726 6268#: src/testbed/gnunet-service-testbed_cpustatus.c:728
6459#, c-format 6269#, c-format
6460msgid "" 6270msgid ""
6461"Cannot open %s for writing load statistics. Not logging load statistics\n" 6271"Cannot open %s for writing load statistics. Not logging load statistics\n"
6462msgstr "" 6272msgstr ""
6463 6273
6464#: src/testbed/gnunet-service-testbed_peers.c:1157 6274#: src/testbed/gnunet-service-testbed_peers.c:1159
6465#, c-format 6275#, c-format
6466msgid "%s is stopped" 6276msgid "%s is stopped"
6467msgstr "%s est arrêté" 6277msgstr "%s est arrêté"
6468 6278
6469#: src/testbed/gnunet-service-testbed_peers.c:1159 6279#: src/testbed/gnunet-service-testbed_peers.c:1161
6470#, c-format 6280#, c-format
6471msgid "%s is starting" 6281msgid "%s is starting"
6472msgstr "%s est en cours de démarrage" 6282msgstr "%s est en cours de démarrage"
6473 6283
6474#: src/testbed/gnunet-service-testbed_peers.c:1161 6284#: src/testbed/gnunet-service-testbed_peers.c:1163
6475#, c-format 6285#, c-format
6476msgid "%s is stopping" 6286msgid "%s is stopping"
6477msgstr "%s est en cours d'arrêt" 6287msgstr "%s est en cours d'arrêt"
6478 6288
6479#: src/testbed/gnunet-service-testbed_peers.c:1163 6289#: src/testbed/gnunet-service-testbed_peers.c:1165
6480#, c-format 6290#, c-format
6481msgid "%s is starting already" 6291msgid "%s is starting already"
6482msgstr "%s est déjà en cours de démarrage" 6292msgstr "%s est déjà en cours de démarrage"
6483 6293
6484#: src/testbed/gnunet-service-testbed_peers.c:1165 6294#: src/testbed/gnunet-service-testbed_peers.c:1167
6485#, c-format 6295#, c-format
6486msgid "%s is stopping already" 6296msgid "%s is stopping already"
6487msgstr "%s est déjà arrêté" 6297msgstr "%s est déjà arrêté"
6488 6298
6489#: src/testbed/gnunet-service-testbed_peers.c:1167 6299#: src/testbed/gnunet-service-testbed_peers.c:1169
6490#, c-format 6300#, c-format
6491msgid "%s is started already" 6301msgid "%s is started already"
6492msgstr "%s est déjà démarré" 6302msgstr "%s est déjà démarré"
6493 6303
6494#: src/testbed/gnunet-service-testbed_peers.c:1169 6304#: src/testbed/gnunet-service-testbed_peers.c:1171
6495#, c-format 6305#, c-format
6496msgid "%s is stopped already" 6306msgid "%s is stopped already"
6497msgstr "%s est déjà arrêté" 6307msgstr "%s est déjà arrêté"
6498 6308
6499#: src/testbed/gnunet-service-testbed_peers.c:1171 6309#: src/testbed/gnunet-service-testbed_peers.c:1173
6500#, c-format 6310#, c-format
6501msgid "%s service is not known to ARM" 6311msgid "%s service is not known to ARM"
6502msgstr "" 6312msgstr ""
6503 6313
6504#: src/testbed/gnunet-service-testbed_peers.c:1173 6314#: src/testbed/gnunet-service-testbed_peers.c:1175
6505#, c-format 6315#, c-format
6506msgid "%s service failed to start" 6316msgid "%s service failed to start"
6507msgstr "" 6317msgstr ""
6508 6318
6509#: src/testbed/gnunet-service-testbed_peers.c:1175 6319#: src/testbed/gnunet-service-testbed_peers.c:1177
6510#, c-format 6320#, c-format
6511msgid "%s service can't be started because ARM is shutting down" 6321msgid "%s service can't be started because ARM is shutting down"
6512msgstr "" 6322msgstr ""
6513 6323
6514#: src/testbed/gnunet-service-testbed_peers.c:1177 6324#: src/testbed/gnunet-service-testbed_peers.c:1179
6515#, c-format 6325#, c-format
6516msgid "%.s Unknown result code." 6326msgid "%.s Unknown result code."
6517msgstr "%.s Code d'erreur inconnu" 6327msgstr "%.s Code d'erreur inconnu"
@@ -6525,173 +6335,173 @@ msgstr ""
6525msgid "Spawning process `%s'\n" 6335msgid "Spawning process `%s'\n"
6526msgstr "" 6336msgstr ""
6527 6337
6528#: src/testbed/gnunet-testbed-profiler.c:287 6338#: src/testbed/gnunet-testbed-profiler.c:289
6529msgid "tolerate COUNT number of continious timeout failures" 6339msgid "tolerate COUNT number of continious timeout failures"
6530msgstr "" 6340msgstr ""
6531 6341
6532#: src/testbed/gnunet-testbed-profiler.c:292 6342#: src/testbed/gnunet-testbed-profiler.c:294
6533msgid "" 6343msgid ""
6534"run profiler in non-interactive mode where upon testbed setup the profiler " 6344"run profiler in non-interactive mode where upon testbed setup the profiler "
6535"does not wait for a keystroke but continues to run until a termination " 6345"does not wait for a keystroke but continues to run until a termination "
6536"signal is received" 6346"signal is received"
6537msgstr "" 6347msgstr ""
6538 6348
6539#: src/testbed/testbed_api.c:408 6349#: src/testbed/testbed_api.c:410
6540#, c-format 6350#, c-format
6541msgid "Adding host %u failed with error: %s\n" 6351msgid "Adding host %u failed with error: %s\n"
6542msgstr "" 6352msgstr ""
6543 6353
6544#: src/testbed/testbed_api_hosts.c:411 6354#: src/testbed/testbed_api_hosts.c:413
6545#, c-format 6355#, c-format
6546msgid "Hosts file %s not found\n" 6356msgid "Hosts file %s not found\n"
6547msgstr "" 6357msgstr ""
6548 6358
6549#: src/testbed/testbed_api_hosts.c:419 6359#: src/testbed/testbed_api_hosts.c:421
6550#, c-format 6360#, c-format
6551msgid "Hosts file %s has no data\n" 6361msgid "Hosts file %s has no data\n"
6552msgstr "" 6362msgstr ""
6553 6363
6554#: src/testbed/testbed_api_hosts.c:426 6364#: src/testbed/testbed_api_hosts.c:428
6555#, c-format 6365#, c-format
6556msgid "Hosts file %s cannot be read\n" 6366msgid "Hosts file %s cannot be read\n"
6557msgstr "" 6367msgstr ""
6558 6368
6559#: src/testbed/testbed_api_hosts.c:567 6369#: src/testbed/testbed_api_hosts.c:569
6560#, c-format 6370#, c-format
6561msgid "The function %s is only available when compiled with (--with-ll)\n" 6371msgid "The function %s is only available when compiled with (--with-ll)\n"
6562msgstr "" 6372msgstr ""
6563 6373
6564#: src/testbed/testbed_api_testbed.c:816 6374#: src/testbed/testbed_api_testbed.c:818
6565msgid "Linking controllers failed. Exiting" 6375msgid "Linking controllers failed. Exiting"
6566msgstr "" 6376msgstr ""
6567 6377
6568#: src/testbed/testbed_api_testbed.c:984 6378#: src/testbed/testbed_api_testbed.c:986
6569#, c-format 6379#, c-format
6570msgid "Host registration failed for a host. Error: %s\n" 6380msgid "Host registration failed for a host. Error: %s\n"
6571msgstr "" 6381msgstr ""
6572 6382
6573#: src/testbed/testbed_api_testbed.c:1050 6383#: src/testbed/testbed_api_testbed.c:1052
6574msgid "Controller crash detected. Shutting down.\n" 6384msgid "Controller crash detected. Shutting down.\n"
6575msgstr "" 6385msgstr ""
6576 6386
6577#: src/testbed/testbed_api_testbed.c:1139 6387#: src/testbed/testbed_api_testbed.c:1141
6578#, c-format 6388#, c-format
6579msgid "Host %s cannot start testbed\n" 6389msgid "Host %s cannot start testbed\n"
6580msgstr "" 6390msgstr ""
6581 6391
6582#: src/testbed/testbed_api_testbed.c:1143 6392#: src/testbed/testbed_api_testbed.c:1145
6583msgid "Testbed cannot be started on localhost\n" 6393msgid "Testbed cannot be started on localhost\n"
6584msgstr "" 6394msgstr ""
6585 6395
6586#: src/testbed/testbed_api_testbed.c:1181 6396#: src/testbed/testbed_api_testbed.c:1183
6587msgid "Cannot start the master controller" 6397msgid "Cannot start the master controller"
6588msgstr "" 6398msgstr ""
6589 6399
6590#: src/testbed/testbed_api_testbed.c:1199 6400#: src/testbed/testbed_api_testbed.c:1201
6591msgid "Shutting down testbed due to timeout while setup.\n" 6401msgid "Shutting down testbed due to timeout while setup.\n"
6592msgstr "" 6402msgstr ""
6593 6403
6594#: src/testbed/testbed_api_testbed.c:1259 6404#: src/testbed/testbed_api_testbed.c:1261
6595msgid "No hosts loaded from LoadLeveler. Need at least one host\n" 6405msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
6596msgstr "" 6406msgstr ""
6597 6407
6598#: src/testbed/testbed_api_testbed.c:1271 6408#: src/testbed/testbed_api_testbed.c:1273
6599msgid "No hosts loaded. Need at least one host\n" 6409msgid "No hosts loaded. Need at least one host\n"
6600msgstr "" 6410msgstr ""
6601 6411
6602#: src/testbed/testbed_api_testbed.c:1295 6412#: src/testbed/testbed_api_testbed.c:1297
6603msgid "Specified topology must be supported by testbed" 6413msgid "Specified topology must be supported by testbed"
6604msgstr "" 6414msgstr ""
6605 6415
6606#: src/testbed/testbed_api_testbed.c:1345 6416#: src/testbed/testbed_api_testbed.c:1347
6607#, c-format 6417#, c-format
6608msgid "" 6418msgid ""
6609"Maximum number of edges a peer can have in a scale free topology cannot be " 6419"Maximum number of edges a peer can have in a scale free topology cannot be "
6610"more than %u. Given `%s = %llu'" 6420"more than %u. Given `%s = %llu'"
6611msgstr "" 6421msgstr ""
6612 6422
6613#: src/testbed/testbed_api_testbed.c:1361 6423#: src/testbed/testbed_api_testbed.c:1363
6614#, c-format 6424#, c-format
6615msgid "" 6425msgid ""
6616"The number of edges that can established when adding a new node to scale " 6426"The number of edges that can established when adding a new node to scale "
6617"free topology cannot be more than %u. Given `%s = %llu'" 6427"free topology cannot be more than %u. Given `%s = %llu'"
6618msgstr "" 6428msgstr ""
6619 6429
6620#: src/testbed/testbed_api_topology.c:1026 6430#: src/testbed/testbed_api_topology.c:1028
6621#, c-format 6431#, c-format
6622msgid "Topology file %s not found\n" 6432msgid "Topology file %s not found\n"
6623msgstr "" 6433msgstr ""
6624 6434
6625#: src/testbed/testbed_api_topology.c:1034 6435#: src/testbed/testbed_api_topology.c:1036
6626#, c-format 6436#, c-format
6627msgid "Topology file %s has no data\n" 6437msgid "Topology file %s has no data\n"
6628msgstr "" 6438msgstr ""
6629 6439
6630#: src/testbed/testbed_api_topology.c:1042 6440#: src/testbed/testbed_api_topology.c:1044
6631#, c-format 6441#, c-format
6632msgid "Topology file %s cannot be read\n" 6442msgid "Topology file %s cannot be read\n"
6633msgstr "" 6443msgstr ""
6634 6444
6635#: src/testbed/testbed_api_topology.c:1064 6445#: src/testbed/testbed_api_topology.c:1066
6636#, c-format 6446#, c-format
6637msgid "Failed to read peer index from toology file: %s" 6447msgid "Failed to read peer index from toology file: %s"
6638msgstr "" 6448msgstr ""
6639 6449
6640#: src/testbed/testbed_api_topology.c:1073 6450#: src/testbed/testbed_api_topology.c:1075
6641#: src/testbed/testbed_api_topology.c:1097 6451#: src/testbed/testbed_api_topology.c:1099
6642#, c-format 6452#, c-format
6643msgid "Value in given topology file: %s out of range\n" 6453msgid "Value in given topology file: %s out of range\n"
6644msgstr "" 6454msgstr ""
6645 6455
6646#: src/testbed/testbed_api_topology.c:1079 6456#: src/testbed/testbed_api_topology.c:1081
6647#: src/testbed/testbed_api_topology.c:1103 6457#: src/testbed/testbed_api_topology.c:1105
6648#, c-format 6458#, c-format
6649msgid "Failed to read peer index from topology file: %s" 6459msgid "Failed to read peer index from topology file: %s"
6650msgstr "" 6460msgstr ""
6651 6461
6652#: src/testbed/testbed_api_topology.c:1085 6462#: src/testbed/testbed_api_topology.c:1087
6653#: src/testbed/testbed_api_topology.c:1109 6463#: src/testbed/testbed_api_topology.c:1111
6654msgid "Topology file needs more peers than given ones\n" 6464msgid "Topology file needs more peers than given ones\n"
6655msgstr "" 6465msgstr ""
6656 6466
6657#: src/testbed/testbed_api_topology.c:1143 6467#: src/testbed/testbed_api_topology.c:1145
6658#, c-format 6468#, c-format
6659msgid "Ignoring to connect peer %u to peer %u\n" 6469msgid "Ignoring to connect peer %u to peer %u\n"
6660msgstr "" 6470msgstr ""
6661 6471
6662#: src/testing/gnunet-testing.c:171 6472#: src/testing/gnunet-testing.c:173
6663#, c-format 6473#, c-format
6664msgid "Could not extract hostkey %u (offset too large?)\n" 6474msgid "Could not extract hostkey %u (offset too large?)\n"
6665msgstr "" 6475msgstr ""
6666 6476
6667#: src/testing/gnunet-testing.c:251 6477#: src/testing/gnunet-testing.c:253
6668#, c-format 6478#, c-format
6669msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n" 6479msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n"
6670msgstr "" 6480msgstr ""
6671 6481
6672#: src/testing/gnunet-testing.c:352 6482#: src/testing/gnunet-testing.c:354
6673msgid "create unique configuration files" 6483msgid "create unique configuration files"
6674msgstr "" 6484msgstr ""
6675 6485
6676#: src/testing/gnunet-testing.c:357 6486#: src/testing/gnunet-testing.c:359
6677msgid "extract hostkey file from pre-computed hostkey list" 6487msgid "extract hostkey file from pre-computed hostkey list"
6678msgstr "" 6488msgstr ""
6679 6489
6680#: src/testing/gnunet-testing.c:363 6490#: src/testing/gnunet-testing.c:365
6681msgid "" 6491msgid ""
6682"number of unique configuration files to create, or number of the hostkey to " 6492"number of unique configuration files to create, or number of the hostkey to "
6683"extract" 6493"extract"
6684msgstr "" 6494msgstr ""
6685 6495
6686#: src/testing/gnunet-testing.c:370 6496#: src/testing/gnunet-testing.c:372
6687msgid "configuration template" 6497msgid "configuration template"
6688msgstr "" 6498msgstr ""
6689 6499
6690#: src/testing/gnunet-testing.c:376 6500#: src/testing/gnunet-testing.c:378
6691msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)" 6501msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)"
6692msgstr "" 6502msgstr ""
6693 6503
6694#: src/testing/gnunet-testing.c:389 6504#: src/testing/gnunet-testing.c:391
6695msgid "Command line tool to access the testing library" 6505msgid "Command line tool to access the testing library"
6696msgstr "" 6506msgstr ""
6697 6507
@@ -6699,1493 +6509,1517 @@ msgstr ""
6699msgid "list COUNT number of keys" 6509msgid "list COUNT number of keys"
6700msgstr "" 6510msgstr ""
6701 6511
6702#: src/testing/testing.c:270 6512#: src/testing/testing.c:272
6703#, c-format 6513#, c-format
6704msgid "Hostkeys file not found: %s\n" 6514msgid "Hostkeys file not found: %s\n"
6705msgstr "" 6515msgstr ""
6706 6516
6707#: src/testing/testing.c:713 6517#: src/testing/testing.c:715
6708#, c-format 6518#, c-format
6709msgid "Key number %u does not exist\n" 6519msgid "Key number %u does not exist\n"
6710msgstr "" 6520msgstr ""
6711 6521
6712#: src/testing/testing.c:1157 6522#: src/testing/testing.c:1159
6713#, c-format 6523#, c-format
6714msgid "" 6524msgid ""
6715"You attempted to create a testbed with more than %u hosts. Please " 6525"You attempted to create a testbed with more than %u hosts. Please "
6716"precompute more hostkeys first.\n" 6526"precompute more hostkeys first.\n"
6717msgstr "" 6527msgstr ""
6718 6528
6719#: src/testing/testing.c:1166 6529#: src/testing/testing.c:1168
6720#, c-format 6530#, c-format
6721msgid "Failed to initialize hostkey for peer %u\n" 6531msgid "Failed to initialize hostkey for peer %u\n"
6722msgstr "" 6532msgstr ""
6723 6533
6724#: src/testing/testing.c:1176 6534#: src/testing/testing.c:1178
6725msgid "PRIVATE_KEY option in PEER section missing in configuration\n" 6535msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
6726msgstr "" 6536msgstr ""
6727 6537
6728#: src/testing/testing.c:1189 6538#: src/testing/testing.c:1191
6729msgid "Failed to create configuration for peer (not enough free ports?)\n" 6539msgid "Failed to create configuration for peer (not enough free ports?)\n"
6730msgstr "" 6540msgstr ""
6731 6541
6732#: src/testing/testing.c:1203 6542#: src/testing/testing.c:1205
6733#, c-format 6543#, c-format
6734msgid "Cannot open hostkey file `%s': %s\n" 6544msgid "Cannot open hostkey file `%s': %s\n"
6735msgstr "" 6545msgstr ""
6736 6546
6737#: src/testing/testing.c:1215 6547#: src/testing/testing.c:1217
6738#, c-format 6548#, c-format
6739msgid "Failed to write hostkey file for peer %u: %s\n" 6549msgid "Failed to write hostkey file for peer %u: %s\n"
6740msgstr "" 6550msgstr ""
6741 6551
6742#: src/testing/testing.c:1240 6552#: src/testing/testing.c:1242
6743#, c-format 6553#, c-format
6744msgid "Failed to write configuration file `%s' for peer %u: %s\n" 6554msgid "Failed to write configuration file `%s' for peer %u: %s\n"
6745msgstr "" 6555msgstr ""
6746 6556
6747#: src/testing/testing.c:1342 6557#: src/testing/testing.c:1344
6748#, c-format 6558#, c-format
6749msgid "Failed to start `%s': %s\n" 6559msgid "Failed to start `%s': %s\n"
6750msgstr "" 6560msgstr ""
6751 6561
6752#: src/testing/testing.c:1645 6562#: src/testing/testing.c:1647
6753#, c-format 6563#, c-format
6754msgid "Failed to load configuration from %s\n" 6564msgid "Failed to load configuration from %s\n"
6755msgstr "" 6565msgstr ""
6756 6566
6757#: src/topology/friends.c:124 6567#: src/topology/friends.c:126
6758#, c-format 6568#, c-format
6759msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n" 6569msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n"
6760msgstr "" 6570msgstr ""
6761 6571
6762#: src/topology/friends.c:178 6572#: src/topology/friends.c:180
6763#, c-format 6573#, c-format
6764msgid "Directory for file `%s' does not seem to be writable.\n" 6574msgid "Directory for file `%s' does not seem to be writable.\n"
6765msgstr "" 6575msgstr ""
6766 6576
6767#: src/topology/gnunet-daemon-topology.c:228 6577#: src/topology/gnunet-daemon-topology.c:230
6768msgid "# peers blacklisted" 6578msgid "# peers blacklisted"
6769msgstr "" 6579msgstr ""
6770 6580
6771#: src/topology/gnunet-daemon-topology.c:342 6581#: src/topology/gnunet-daemon-topology.c:344
6772msgid "# connect requests issued to ATS" 6582msgid "# connect requests issued to ATS"
6773msgstr "" 6583msgstr ""
6774 6584
6775#: src/topology/gnunet-daemon-topology.c:536 6585#: src/topology/gnunet-daemon-topology.c:538
6776msgid "# HELLO messages gossipped" 6586msgid "# HELLO messages gossipped"
6777msgstr "" 6587msgstr ""
6778 6588
6779#: src/topology/gnunet-daemon-topology.c:638 6589#: src/topology/gnunet-daemon-topology.c:640
6780#: src/topology/gnunet-daemon-topology.c:724 6590#: src/topology/gnunet-daemon-topology.c:726
6781msgid "# friends connected" 6591msgid "# friends connected"
6782msgstr "" 6592msgstr ""
6783 6593
6784#: src/topology/gnunet-daemon-topology.c:921 6594#: src/topology/gnunet-daemon-topology.c:923
6785msgid "Failed to connect to core service, can not manage topology!\n" 6595msgid "Failed to connect to core service, can not manage topology!\n"
6786msgstr "" 6596msgstr ""
6787 6597
6788#: src/topology/gnunet-daemon-topology.c:954 6598#: src/topology/gnunet-daemon-topology.c:956
6789#, c-format 6599#, c-format
6790msgid "Found myself `%s' in friend list (useless, ignored)\n" 6600msgid "Found myself `%s' in friend list (useless, ignored)\n"
6791msgstr "" 6601msgstr ""
6792 6602
6793#: src/topology/gnunet-daemon-topology.c:961 6603#: src/topology/gnunet-daemon-topology.c:963
6794#, c-format 6604#, c-format
6795msgid "Found friend `%s' in configuration\n" 6605msgid "Found friend `%s' in configuration\n"
6796msgstr "" 6606msgstr ""
6797 6607
6798#: src/topology/gnunet-daemon-topology.c:983 6608#: src/topology/gnunet-daemon-topology.c:985
6799msgid "Encountered errors parsing friends list!\n" 6609msgid "Encountered errors parsing friends list!\n"
6800msgstr "" 6610msgstr ""
6801 6611
6802#: src/topology/gnunet-daemon-topology.c:986 6612#: src/topology/gnunet-daemon-topology.c:988
6803msgid "# friends in configuration" 6613msgid "# friends in configuration"
6804msgstr "" 6614msgstr ""
6805 6615
6806#: src/topology/gnunet-daemon-topology.c:993 6616#: src/topology/gnunet-daemon-topology.c:995
6807msgid "" 6617msgid ""
6808"Fewer friends specified than required by minimum friend count. Will only " 6618"Fewer friends specified than required by minimum friend count. Will only "
6809"connect to friends.\n" 6619"connect to friends.\n"
6810msgstr "" 6620msgstr ""
6811 6621
6812#: src/topology/gnunet-daemon-topology.c:999 6622#: src/topology/gnunet-daemon-topology.c:1001
6813msgid "" 6623msgid ""
6814"More friendly connections required than target total number of connections.\n" 6624"More friendly connections required than target total number of connections.\n"
6815msgstr "" 6625msgstr ""
6816 6626
6817#: src/topology/gnunet-daemon-topology.c:1052 6627#: src/topology/gnunet-daemon-topology.c:1054
6818#: src/transport/plugin_transport_wlan.c:1515 6628#: src/transport/plugin_transport_wlan.c:1517
6819msgid "# HELLO messages received" 6629msgid "# HELLO messages received"
6820msgstr "" 6630msgstr ""
6821 6631
6822#: src/topology/gnunet-daemon-topology.c:1230 6632#: src/topology/gnunet-daemon-topology.c:1233
6823msgid "GNUnet topology control" 6633msgid "GNUnet topology control"
6824msgstr "" 6634msgstr ""
6825 6635
6826#: src/transport/gnunet-service-transport_ats.c:139 6636#: src/transport/gnunet-communicator-tcp.c:2329
6637#: src/transport/gnunet-communicator-udp.c:2883
6638#: src/transport/gnunet-service-tng.c:4679
6639#: src/transport/gnunet-service-transport.c:2782
6640msgid "Transport service is lacking key configuration settings. Exiting.\n"
6641msgstr ""
6642
6643#: src/transport/gnunet-communicator-tcp.c:2393
6644msgid "GNUnet TCP communicator"
6645msgstr ""
6646
6647#: src/transport/gnunet-communicator-udp.c:2954
6648msgid "GNUnet UDP communicator"
6649msgstr ""
6650
6651#: src/transport/gnunet-communicator-unix.c:802
6652msgid ""
6653"Maximum number of UNIX connections exceeded, dropping incoming message\n"
6654msgstr ""
6655
6656#: src/transport/gnunet-communicator-unix.c:1073
6657#: src/transport/plugin_transport_unix.c:1403
6658#, c-format
6659msgid "Cannot create path to `%s'\n"
6660msgstr ""
6661
6662#: src/transport/gnunet-communicator-unix.c:1162
6663msgid "GNUnet UNIX domain socket communicator"
6664msgstr ""
6665
6666#: src/transport/gnunet-service-transport_ats.c:141
6827msgid "# Addresses given to ATS" 6667msgid "# Addresses given to ATS"
6828msgstr "" 6668msgstr ""
6829 6669
6830#: src/transport/gnunet-service-transport.c:446 6670#: src/transport/gnunet-service-transport.c:448
6831msgid "# messages dropped due to slow client" 6671msgid "# messages dropped due to slow client"
6832msgstr "" 6672msgstr ""
6833 6673
6834#: src/transport/gnunet-service-transport.c:816 6674#: src/transport/gnunet-service-transport.c:817
6835msgid "# bytes payload dropped (other peer was not connected)" 6675msgid "# bytes payload dropped (other peer was not connected)"
6836msgstr "" 6676msgstr ""
6837 6677
6838#: src/transport/gnunet-service-transport.c:1549 6678#: src/transport/gnunet-service-transport.c:1550
6839msgid "# bytes payload discarded due to not connected peer" 6679msgid "# bytes payload discarded due to not connected peer"
6840msgstr "" 6680msgstr ""
6841 6681
6842#: src/transport/gnunet-service-transport.c:1709 6682#: src/transport/gnunet-service-transport.c:1710
6843msgid "# bytes total received" 6683msgid "# bytes total received"
6844msgstr "" 6684msgstr ""
6845 6685
6846#: src/transport/gnunet-service-transport.c:1806 6686#: src/transport/gnunet-service-transport.c:1807
6847msgid "# bytes payload received" 6687msgid "# bytes payload received"
6848msgstr "" 6688msgstr ""
6849 6689
6850#: src/transport/gnunet-service-transport.c:2123 6690#: src/transport/gnunet-service-transport.c:2124
6851#: src/transport/gnunet-service-transport.c:2595 6691#: src/transport/gnunet-service-transport.c:2596
6852msgid "# disconnects due to blacklist" 6692msgid "# disconnects due to blacklist"
6853msgstr "" 6693msgstr ""
6854 6694
6855#: src/transport/gnunet-service-transport.c:2599 6695#: src/transport/gnunet-service-transport.c:2600
6856#, c-format 6696#, c-format
6857msgid "Disallowing connection to peer `%s' on transport %s\n" 6697msgid "Disallowing connection to peer `%s' on transport %s\n"
6858msgstr "" 6698msgstr ""
6859 6699
6860#: src/transport/gnunet-service-transport.c:2707 6700#: src/transport/gnunet-service-transport.c:2708
6861#, c-format 6701#, c-format
6862msgid "Adding blacklisting entry for peer `%s'\n" 6702msgid "Adding blacklisting entry for peer `%s'\n"
6863msgstr "" 6703msgstr ""
6864 6704
6865#: src/transport/gnunet-service-transport.c:2716 6705#: src/transport/gnunet-service-transport.c:2717
6866#, c-format 6706#, c-format
6867msgid "Adding blacklisting entry for peer `%s':`%s'\n" 6707msgid "Adding blacklisting entry for peer `%s':`%s'\n"
6868msgstr "" 6708msgstr ""
6869 6709
6870#: src/transport/gnunet-service-transport.c:2781 6710#: src/transport/gnunet-service-transport_hello.c:195
6871msgid "Transport service is lacking key configuration settings. Exiting.\n"
6872msgstr ""
6873
6874#: src/transport/gnunet-service-transport_hello.c:193
6875msgid "# refreshed my HELLO" 6711msgid "# refreshed my HELLO"
6876msgstr "" 6712msgstr ""
6877 6713
6878#: src/transport/gnunet-service-transport_neighbours.c:804 6714#: src/transport/gnunet-service-transport_neighbours.c:805
6879#, fuzzy 6715#, fuzzy
6880msgid "# session creation failed" 6716msgid "# session creation failed"
6881msgstr "# Session TCP active" 6717msgstr "# Session TCP active"
6882 6718
6883#: src/transport/gnunet-service-transport_neighbours.c:1051 6719#: src/transport/gnunet-service-transport_neighbours.c:1052
6884msgid "# DISCONNECT messages sent" 6720msgid "# DISCONNECT messages sent"
6885msgstr "" 6721msgstr ""
6886 6722
6887#: src/transport/gnunet-service-transport_neighbours.c:1174 6723#: src/transport/gnunet-service-transport_neighbours.c:1175
6888msgid "# disconnects due to quota of 0" 6724msgid "# disconnects due to quota of 0"
6889msgstr "" 6725msgstr ""
6890 6726
6891#: src/transport/gnunet-service-transport_neighbours.c:1322 6727#: src/transport/gnunet-service-transport_neighbours.c:1323
6892#: src/transport/gnunet-service-transport_neighbours.c:1783 6728#: src/transport/gnunet-service-transport_neighbours.c:1784
6893msgid "# bytes in message queue for other peers" 6729msgid "# bytes in message queue for other peers"
6894msgstr "" 6730msgstr ""
6895 6731
6896#: src/transport/gnunet-service-transport_neighbours.c:1327 6732#: src/transport/gnunet-service-transport_neighbours.c:1328
6897msgid "# messages transmitted to other peers" 6733msgid "# messages transmitted to other peers"
6898msgstr "" 6734msgstr ""
6899 6735
6900#: src/transport/gnunet-service-transport_neighbours.c:1333 6736#: src/transport/gnunet-service-transport_neighbours.c:1334
6901msgid "# transmission failures for messages to other peers" 6737msgid "# transmission failures for messages to other peers"
6902msgstr "" 6738msgstr ""
6903 6739
6904#: src/transport/gnunet-service-transport_neighbours.c:1393 6740#: src/transport/gnunet-service-transport_neighbours.c:1394
6905msgid "# messages timed out while in transport queue" 6741msgid "# messages timed out while in transport queue"
6906msgstr "" 6742msgstr ""
6907 6743
6908#: src/transport/gnunet-service-transport_neighbours.c:1477 6744#: src/transport/gnunet-service-transport_neighbours.c:1478
6909msgid "# KEEPALIVES sent" 6745msgid "# KEEPALIVES sent"
6910msgstr "" 6746msgstr ""
6911 6747
6912#: src/transport/gnunet-service-transport_neighbours.c:1513 6748#: src/transport/gnunet-service-transport_neighbours.c:1514
6913msgid "# KEEPALIVE messages discarded (peer unknown)" 6749msgid "# KEEPALIVE messages discarded (peer unknown)"
6914msgstr "" 6750msgstr ""
6915 6751
6916#: src/transport/gnunet-service-transport_neighbours.c:1521 6752#: src/transport/gnunet-service-transport_neighbours.c:1522
6917msgid "# KEEPALIVE messages discarded (no session)" 6753msgid "# KEEPALIVE messages discarded (no session)"
6918msgstr "" 6754msgstr ""
6919 6755
6920#: src/transport/gnunet-service-transport_neighbours.c:1531 6756#: src/transport/gnunet-service-transport_neighbours.c:1532
6921msgid "# KEEPALIVES received in good order" 6757msgid "# KEEPALIVES received in good order"
6922msgstr "" 6758msgstr ""
6923 6759
6924#: src/transport/gnunet-service-transport_neighbours.c:1576 6760#: src/transport/gnunet-service-transport_neighbours.c:1577
6925msgid "# KEEPALIVE_RESPONSEs discarded (not connected)" 6761msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
6926msgstr "" 6762msgstr ""
6927 6763
6928#: src/transport/gnunet-service-transport_neighbours.c:1585 6764#: src/transport/gnunet-service-transport_neighbours.c:1586
6929msgid "# KEEPALIVE_RESPONSEs discarded (not expected)" 6765msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
6930msgstr "" 6766msgstr ""
6931 6767
6932#: src/transport/gnunet-service-transport_neighbours.c:1593 6768#: src/transport/gnunet-service-transport_neighbours.c:1594
6933msgid "# KEEPALIVE_RESPONSEs discarded (address changed)" 6769msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
6934msgstr "" 6770msgstr ""
6935 6771
6936#: src/transport/gnunet-service-transport_neighbours.c:1602 6772#: src/transport/gnunet-service-transport_neighbours.c:1603
6937msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)" 6773msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
6938msgstr "" 6774msgstr ""
6939 6775
6940#: src/transport/gnunet-service-transport_neighbours.c:1607 6776#: src/transport/gnunet-service-transport_neighbours.c:1608
6941msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)" 6777msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
6942msgstr "" 6778msgstr ""
6943 6779
6944#: src/transport/gnunet-service-transport_neighbours.c:1613 6780#: src/transport/gnunet-service-transport_neighbours.c:1614
6945msgid "# KEEPALIVE_RESPONSEs received (OK)" 6781msgid "# KEEPALIVE_RESPONSEs received (OK)"
6946msgstr "" 6782msgstr ""
6947 6783
6948#: src/transport/gnunet-service-transport_neighbours.c:1680 6784#: src/transport/gnunet-service-transport_neighbours.c:1681
6949msgid "# messages discarded due to lack of neighbour record" 6785msgid "# messages discarded due to lack of neighbour record"
6950msgstr "" 6786msgstr ""
6951 6787
6952#: src/transport/gnunet-service-transport_neighbours.c:1714 6788#: src/transport/gnunet-service-transport_neighbours.c:1715
6953msgid "# bandwidth quota violations by other peers" 6789msgid "# bandwidth quota violations by other peers"
6954msgstr "" 6790msgstr ""
6955 6791
6956#: src/transport/gnunet-service-transport_neighbours.c:1729 6792#: src/transport/gnunet-service-transport_neighbours.c:1730
6957msgid "# ms throttling suggested" 6793msgid "# ms throttling suggested"
6958msgstr "" 6794msgstr ""
6959 6795
6960#: src/transport/gnunet-service-transport_neighbours.c:1852 6796#: src/transport/gnunet-service-transport_neighbours.c:1853
6961#, fuzzy, c-format 6797#, fuzzy, c-format
6962msgid "Failed to send SYN message to peer `%s'\n" 6798msgid "Failed to send SYN message to peer `%s'\n"
6963msgstr "Résolution de « %s » échouée\n" 6799msgstr "Résolution de « %s » échouée\n"
6964 6800
6965#: src/transport/gnunet-service-transport_neighbours.c:1872 6801#: src/transport/gnunet-service-transport_neighbours.c:1873
6966msgid "# Failed attempts to switch addresses (failed to send SYN CONT)" 6802msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
6967msgstr "" 6803msgstr ""
6968 6804
6969#: src/transport/gnunet-service-transport_neighbours.c:1911 6805#: src/transport/gnunet-service-transport_neighbours.c:1912
6970msgid "# SYN messages sent" 6806msgid "# SYN messages sent"
6971msgstr "" 6807msgstr ""
6972 6808
6973#: src/transport/gnunet-service-transport_neighbours.c:1928 6809#: src/transport/gnunet-service-transport_neighbours.c:1929
6974#, fuzzy, c-format 6810#, fuzzy, c-format
6975msgid "Failed to transmit SYN message to %s\n" 6811msgid "Failed to transmit SYN message to %s\n"
6976msgstr "Échec du démarrage de %s\n" 6812msgstr "Échec du démarrage de %s\n"
6977 6813
6978#: src/transport/gnunet-service-transport_neighbours.c:1958 6814#: src/transport/gnunet-service-transport_neighbours.c:1959
6979msgid "# Failed attempts to switch addresses (failed to send SYN)" 6815msgid "# Failed attempts to switch addresses (failed to send SYN)"
6980msgstr "" 6816msgstr ""
6981 6817
6982#: src/transport/gnunet-service-transport_neighbours.c:2026 6818#: src/transport/gnunet-service-transport_neighbours.c:2027
6983#, c-format 6819#, c-format
6984msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n" 6820msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
6985msgstr "" 6821msgstr ""
6986 6822
6987#: src/transport/gnunet-service-transport_neighbours.c:2080 6823#: src/transport/gnunet-service-transport_neighbours.c:2081
6988msgid "# SYN_ACK messages sent" 6824msgid "# SYN_ACK messages sent"
6989msgstr "" 6825msgstr ""
6990 6826
6991#: src/transport/gnunet-service-transport_neighbours.c:2097 6827#: src/transport/gnunet-service-transport_neighbours.c:2098
6992#, fuzzy, c-format 6828#, fuzzy, c-format
6993msgid "Failed to transmit SYN_ACK message to %s\n" 6829msgid "Failed to transmit SYN_ACK message to %s\n"
6994msgstr "Échec du démarrage de %s\n" 6830msgstr "Échec du démarrage de %s\n"
6995 6831
6996#: src/transport/gnunet-service-transport_neighbours.c:2260 6832#: src/transport/gnunet-service-transport_neighbours.c:2261
6997msgid "# SYN messages received" 6833msgid "# SYN messages received"
6998msgstr "" 6834msgstr ""
6999 6835
7000#: src/transport/gnunet-service-transport_neighbours.c:2265 6836#: src/transport/gnunet-service-transport_neighbours.c:2266
7001#, c-format 6837#, c-format
7002msgid "SYN request from peer `%s' ignored due impending shutdown\n" 6838msgid "SYN request from peer `%s' ignored due impending shutdown\n"
7003msgstr "" 6839msgstr ""
7004 6840
7005#: src/transport/gnunet-service-transport_neighbours.c:2652 6841#: src/transport/gnunet-service-transport_neighbours.c:2653
7006msgid "# Attempts to switch addresses" 6842msgid "# Attempts to switch addresses"
7007msgstr "" 6843msgstr ""
7008 6844
7009#: src/transport/gnunet-service-transport_neighbours.c:3137 6845#: src/transport/gnunet-service-transport_neighbours.c:3138
7010msgid "# SYN_ACK messages received" 6846msgid "# SYN_ACK messages received"
7011msgstr "" 6847msgstr ""
7012 6848
7013#: src/transport/gnunet-service-transport_neighbours.c:3145 6849#: src/transport/gnunet-service-transport_neighbours.c:3146
7014msgid "# unexpected SYN_ACK messages (no peer)" 6850msgid "# unexpected SYN_ACK messages (no peer)"
7015msgstr "" 6851msgstr ""
7016 6852
7017#: src/transport/gnunet-service-transport_neighbours.c:3163 6853#: src/transport/gnunet-service-transport_neighbours.c:3164
7018#: src/transport/gnunet-service-transport_neighbours.c:3187 6854#: src/transport/gnunet-service-transport_neighbours.c:3188
7019msgid "# unexpected SYN_ACK messages (not ready)" 6855msgid "# unexpected SYN_ACK messages (not ready)"
7020msgstr "" 6856msgstr ""
7021 6857
7022#: src/transport/gnunet-service-transport_neighbours.c:3199 6858#: src/transport/gnunet-service-transport_neighbours.c:3200
7023msgid "# unexpected SYN_ACK messages (waiting on ATS)" 6859msgid "# unexpected SYN_ACK messages (waiting on ATS)"
7024msgstr "" 6860msgstr ""
7025 6861
7026#: src/transport/gnunet-service-transport_neighbours.c:3224 6862#: src/transport/gnunet-service-transport_neighbours.c:3225
7027msgid "# Successful attempts to switch addresses" 6863msgid "# Successful attempts to switch addresses"
7028msgstr "" 6864msgstr ""
7029 6865
7030#: src/transport/gnunet-service-transport_neighbours.c:3237 6866#: src/transport/gnunet-service-transport_neighbours.c:3238
7031msgid "# unexpected SYN_ACK messages (disconnecting)" 6867msgid "# unexpected SYN_ACK messages (disconnecting)"
7032msgstr "" 6868msgstr ""
7033 6869
7034#: src/transport/gnunet-service-transport_neighbours.c:3410 6870#: src/transport/gnunet-service-transport_neighbours.c:3411
7035msgid "# ACK messages received" 6871msgid "# ACK messages received"
7036msgstr "" 6872msgstr ""
7037 6873
7038#: src/transport/gnunet-service-transport_neighbours.c:3446 6874#: src/transport/gnunet-service-transport_neighbours.c:3447
7039msgid "# unexpected ACK messages" 6875msgid "# unexpected ACK messages"
7040msgstr "" 6876msgstr ""
7041 6877
7042#: src/transport/gnunet-service-transport_neighbours.c:3534 6878#: src/transport/gnunet-service-transport_neighbours.c:3535
7043msgid "# quota messages ignored (malformed)" 6879msgid "# quota messages ignored (malformed)"
7044msgstr "" 6880msgstr ""
7045 6881
7046#: src/transport/gnunet-service-transport_neighbours.c:3541 6882#: src/transport/gnunet-service-transport_neighbours.c:3542
7047msgid "# QUOTA messages received" 6883msgid "# QUOTA messages received"
7048msgstr "" 6884msgstr ""
7049 6885
7050#: src/transport/gnunet-service-transport_neighbours.c:3581 6886#: src/transport/gnunet-service-transport_neighbours.c:3582
7051msgid "# disconnect messages ignored (malformed)" 6887msgid "# disconnect messages ignored (malformed)"
7052msgstr "" 6888msgstr ""
7053 6889
7054#: src/transport/gnunet-service-transport_neighbours.c:3588 6890#: src/transport/gnunet-service-transport_neighbours.c:3589
7055msgid "# DISCONNECT messages received" 6891msgid "# DISCONNECT messages received"
7056msgstr "" 6892msgstr ""
7057 6893
7058#: src/transport/gnunet-service-transport_neighbours.c:3599 6894#: src/transport/gnunet-service-transport_neighbours.c:3600
7059msgid "# disconnect messages ignored (timestamp)" 6895msgid "# disconnect messages ignored (timestamp)"
7060msgstr "" 6896msgstr ""
7061 6897
7062#: src/transport/gnunet-service-transport_neighbours.c:3734 6898#: src/transport/gnunet-service-transport_neighbours.c:3735
7063msgid "# disconnected from peer upon explicit request" 6899msgid "# disconnected from peer upon explicit request"
7064msgstr "" 6900msgstr ""
7065 6901
7066#: src/transport/gnunet-service-transport_plugins.c:156 6902#: src/transport/gnunet-service-transport_plugins.c:158
7067msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n" 6903msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n"
7068msgstr "" 6904msgstr ""
7069 6905
7070#: src/transport/gnunet-service-transport_plugins.c:221 6906#: src/transport/gnunet-service-transport_plugins.c:223
7071#: src/transport/gnunet-service-transport_plugins.c:229 6907#: src/transport/gnunet-service-transport_plugins.c:231
7072#: src/transport/gnunet-service-transport_plugins.c:237 6908#: src/transport/gnunet-service-transport_plugins.c:239
7073#: src/transport/gnunet-service-transport_plugins.c:245 6909#: src/transport/gnunet-service-transport_plugins.c:247
7074#: src/transport/gnunet-service-transport_plugins.c:253 6910#: src/transport/gnunet-service-transport_plugins.c:255
7075#: src/transport/gnunet-service-transport_plugins.c:261 6911#: src/transport/gnunet-service-transport_plugins.c:263
7076#: src/transport/gnunet-service-transport_plugins.c:269 6912#: src/transport/gnunet-service-transport_plugins.c:271
7077#: src/transport/gnunet-service-transport_plugins.c:277 6913#: src/transport/gnunet-service-transport_plugins.c:279
7078#: src/transport/gnunet-service-transport_plugins.c:285 6914#: src/transport/gnunet-service-transport_plugins.c:287
7079#: src/transport/gnunet-service-transport_plugins.c:293 6915#: src/transport/gnunet-service-transport_plugins.c:295
7080#: src/transport/gnunet-service-transport_plugins.c:301 6916#: src/transport/gnunet-service-transport_plugins.c:303
7081#, c-format 6917#, c-format
7082msgid "Missing function `%s' in transport plugin for `%s'\n" 6918msgid "Missing function `%s' in transport plugin for `%s'\n"
7083msgstr "" 6919msgstr ""
7084 6920
7085#: src/transport/gnunet-service-transport_plugins.c:308 6921#: src/transport/gnunet-service-transport_plugins.c:310
7086#, c-format 6922#, c-format
7087msgid "Did not load plugin `%s' due to missing functions\n" 6923msgid "Did not load plugin `%s' due to missing functions\n"
7088msgstr "" 6924msgstr ""
7089 6925
7090#: src/transport/gnunet-service-transport_validation.c:386 6926#: src/transport/gnunet-service-transport_validation.c:388
7091msgid "# Addresses in validation map" 6927msgid "# Addresses in validation map"
7092msgstr "" 6928msgstr ""
7093 6929
7094#: src/transport/gnunet-service-transport_validation.c:489 6930#: src/transport/gnunet-service-transport_validation.c:491
7095#: src/transport/gnunet-service-transport_validation.c:675 6931#: src/transport/gnunet-service-transport_validation.c:677
7096#: src/transport/gnunet-service-transport_validation.c:995 6932#: src/transport/gnunet-service-transport_validation.c:997
7097#: src/transport/gnunet-service-transport_validation.c:1607 6933#: src/transport/gnunet-service-transport_validation.c:1609
7098msgid "# validations running" 6934msgid "# validations running"
7099msgstr "" 6935msgstr ""
7100 6936
7101#: src/transport/gnunet-service-transport_validation.c:530 6937#: src/transport/gnunet-service-transport_validation.c:532
7102msgid "# address records discarded (timeout)" 6938msgid "# address records discarded (timeout)"
7103msgstr "" 6939msgstr ""
7104 6940
7105#: src/transport/gnunet-service-transport_validation.c:578 6941#: src/transport/gnunet-service-transport_validation.c:580
7106msgid "# address records discarded (blacklist)" 6942msgid "# address records discarded (blacklist)"
7107msgstr "" 6943msgstr ""
7108 6944
7109#: src/transport/gnunet-service-transport_validation.c:666 6945#: src/transport/gnunet-service-transport_validation.c:668
7110msgid "# PINGs for address validation sent" 6946msgid "# PINGs for address validation sent"
7111msgstr "" 6947msgstr ""
7112 6948
7113#: src/transport/gnunet-service-transport_validation.c:746 6949#: src/transport/gnunet-service-transport_validation.c:748
7114msgid "# validations delayed by global throttle" 6950msgid "# validations delayed by global throttle"
7115msgstr "" 6951msgstr ""
7116 6952
7117#: src/transport/gnunet-service-transport_validation.c:783 6953#: src/transport/gnunet-service-transport_validation.c:785
7118msgid "# address revalidations started" 6954msgid "# address revalidations started"
7119msgstr "" 6955msgstr ""
7120 6956
7121#: src/transport/gnunet-service-transport_validation.c:1121 6957#: src/transport/gnunet-service-transport_validation.c:1123
7122msgid "# PING message for different peer received" 6958msgid "# PING message for different peer received"
7123msgstr "" 6959msgstr ""
7124 6960
7125#: src/transport/gnunet-service-transport_validation.c:1172 6961#: src/transport/gnunet-service-transport_validation.c:1174
7126#, c-format 6962#, c-format
7127msgid "Plugin `%s' not available, cannot confirm having this address\n" 6963msgid "Plugin `%s' not available, cannot confirm having this address\n"
7128msgstr "" 6964msgstr ""
7129 6965
7130#: src/transport/gnunet-service-transport_validation.c:1185 6966#: src/transport/gnunet-service-transport_validation.c:1187
7131msgid "# failed address checks during validation" 6967msgid "# failed address checks during validation"
7132msgstr "" 6968msgstr ""
7133 6969
7134#: src/transport/gnunet-service-transport_validation.c:1188 6970#: src/transport/gnunet-service-transport_validation.c:1190
7135#, c-format 6971#, c-format
7136msgid "Address `%s' is not one of my addresses, not confirming PING\n" 6972msgid "Address `%s' is not one of my addresses, not confirming PING\n"
7137msgstr "" 6973msgstr ""
7138 6974
7139#: src/transport/gnunet-service-transport_validation.c:1196 6975#: src/transport/gnunet-service-transport_validation.c:1198
7140msgid "# successful address checks during validation" 6976msgid "# successful address checks during validation"
7141msgstr "" 6977msgstr ""
7142 6978
7143#: src/transport/gnunet-service-transport_validation.c:1209 6979#: src/transport/gnunet-service-transport_validation.c:1211
7144#, c-format 6980#, c-format
7145msgid "" 6981msgid ""
7146"Not confirming PING from peer `%s' with address `%s' since I cannot confirm " 6982"Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
7147"having this address.\n" 6983"having this address.\n"
7148msgstr "" 6984msgstr ""
7149 6985
7150#: src/transport/gnunet-service-transport_validation.c:1264 6986#: src/transport/gnunet-service-transport_validation.c:1266
7151#, c-format 6987#, c-format
7152msgid "Failed to create PONG signature for peer `%s'\n" 6988msgid "Failed to create PONG signature for peer `%s'\n"
7153msgstr "" 6989msgstr ""
7154 6990
7155#: src/transport/gnunet-service-transport_validation.c:1315 6991#: src/transport/gnunet-service-transport_validation.c:1317
7156msgid "# PONGs unicast via reliable transport" 6992msgid "# PONGs unicast via reliable transport"
7157msgstr "" 6993msgstr ""
7158 6994
7159#: src/transport/gnunet-service-transport_validation.c:1324 6995#: src/transport/gnunet-service-transport_validation.c:1326
7160msgid "# PONGs multicast to all available addresses" 6996msgid "# PONGs multicast to all available addresses"
7161msgstr "" 6997msgstr ""
7162 6998
7163#: src/transport/gnunet-service-transport_validation.c:1497 6999#: src/transport/gnunet-service-transport_validation.c:1499
7164msgid "# PONGs dropped, no matching pending validation" 7000msgid "# PONGs dropped, no matching pending validation"
7165msgstr "" 7001msgstr ""
7166 7002
7167#: src/transport/gnunet-service-transport_validation.c:1515 7003#: src/transport/gnunet-service-transport_validation.c:1517
7168msgid "# PONGs dropped, signature expired" 7004msgid "# PONGs dropped, signature expired"
7169msgstr "" 7005msgstr ""
7170 7006
7171#: src/transport/gnunet-service-transport_validation.c:1570 7007#: src/transport/gnunet-service-transport_validation.c:1572
7172msgid "# validations succeeded" 7008msgid "# validations succeeded"
7173msgstr "" 7009msgstr ""
7174 7010
7175#: src/transport/gnunet-service-transport_validation.c:1625 7011#: src/transport/gnunet-service-transport_validation.c:1627
7176msgid "# HELLOs given to peerinfo" 7012msgid "# HELLOs given to peerinfo"
7177msgstr "" 7013msgstr ""
7178 7014
7179#: src/transport/gnunet-transport.c:411 7015#: src/transport/gnunet-transport.c:413
7180#, c-format 7016#, c-format
7181msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" 7017msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
7182msgstr "" 7018msgstr ""
7183 7019
7184#: src/transport/gnunet-transport.c:421 7020#: src/transport/gnunet-transport.c:423
7185#, c-format 7021#, c-format
7186msgid "Received %llu bytes/s (%llu bytes in %s)\n" 7022msgid "Received %llu bytes/s (%llu bytes in %s)\n"
7187msgstr "" 7023msgstr ""
7188 7024
7189#: src/transport/gnunet-transport.c:465 7025#: src/transport/gnunet-transport.c:467
7190#, c-format 7026#, c-format
7191msgid "Failed to connect to `%s'\n" 7027msgid "Failed to connect to `%s'\n"
7192msgstr "" 7028msgstr ""
7193 7029
7194#: src/transport/gnunet-transport.c:478 7030#: src/transport/gnunet-transport.c:480
7195#, c-format 7031#, c-format
7196msgid "Failed to resolve address for peer `%s'\n" 7032msgid "Failed to resolve address for peer `%s'\n"
7197msgstr "" 7033msgstr ""
7198 7034
7199#: src/transport/gnunet-transport.c:492 7035#: src/transport/gnunet-transport.c:494
7200msgid "Failed to list connections, timeout occured\n" 7036#, fuzzy
7201msgstr "" 7037msgid "Failed to list connections, timeout occurred\n"
7038msgstr "fornat invalide : « %s »\n"
7202 7039
7203#: src/transport/gnunet-transport.c:525 7040#: src/transport/gnunet-transport.c:527
7204#, c-format 7041#, c-format
7205msgid "Transmitting %u bytes\n" 7042msgid "Transmitting %u bytes\n"
7206msgstr "" 7043msgstr ""
7207 7044
7208#: src/transport/gnunet-transport.c:559 7045#: src/transport/gnunet-transport.c:561
7209#, c-format 7046#, c-format
7210msgid "" 7047msgid ""
7211"Successfully connected to `%s', starting to send benchmark data in %u Kb " 7048"Successfully connected to `%s', starting to send benchmark data in %u Kb "
7212"blocks\n" 7049"blocks\n"
7213msgstr "" 7050msgstr ""
7214 7051
7215#: src/transport/gnunet-transport.c:590 7052#: src/transport/gnunet-transport.c:592
7216#, c-format 7053#, c-format
7217msgid "Disconnected from peer `%s' while benchmarking\n" 7054msgid "Disconnected from peer `%s' while benchmarking\n"
7218msgstr "" 7055msgstr ""
7219 7056
7220#: src/transport/gnunet-transport.c:614 src/transport/gnunet-transport.c:643 7057#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
7221#, c-format 7058#, c-format
7222msgid "%24s: %-17s %4s (%u connections in total)\n" 7059msgid "%24s: %-17s %4s (%u connections in total)\n"
7223msgstr "" 7060msgstr ""
7224 7061
7225#: src/transport/gnunet-transport.c:616 7062#: src/transport/gnunet-transport.c:618
7226msgid "Connected to" 7063msgid "Connected to"
7227msgstr "Connecté à" 7064msgstr "Connecté à"
7228 7065
7229#: src/transport/gnunet-transport.c:645 7066#: src/transport/gnunet-transport.c:647
7230msgid "Disconnected from" 7067msgid "Disconnected from"
7231msgstr "Déconnecté de" 7068msgstr "Déconnecté de"
7232 7069
7233#: src/transport/gnunet-transport.c:680 7070#: src/transport/gnunet-transport.c:682
7234#, fuzzy, c-format 7071#, fuzzy, c-format
7235msgid "Received %u bytes\n" 7072msgid "Received %u bytes\n"
7236msgstr "%s message(s) reçu(s)\n" 7073msgstr "%s message(s) reçu(s)\n"
7237 7074
7238#: src/transport/gnunet-transport.c:717 7075#: src/transport/gnunet-transport.c:719
7239#, c-format 7076#, c-format
7240msgid "Peer `%s': %s %s in state `%s' until %s\n" 7077msgid "Peer `%s': %s %s in state `%s' until %s\n"
7241msgstr "" 7078msgstr ""
7242 7079
7243#: src/transport/gnunet-transport.c:729 7080#: src/transport/gnunet-transport.c:731
7244#, c-format 7081#, c-format
7245msgid "Peer `%s': %s %s\n" 7082msgid "Peer `%s': %s %s\n"
7246msgstr "" 7083msgstr ""
7247 7084
7248#: src/transport/gnunet-transport.c:1142 7085#: src/transport/gnunet-transport.c:1144
7249msgid "Monitor disconnected from transport service. Reconnecting.\n" 7086msgid "Monitor disconnected from transport service. Reconnecting.\n"
7250msgstr "" 7087msgstr ""
7251 7088
7252#: src/transport/gnunet-transport.c:1249 7089#: src/transport/gnunet-transport.c:1251
7253#, c-format 7090#, c-format
7254msgid "" 7091msgid ""
7255"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, " 7092"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
7256"%s, %s %s\n" 7093"%s, %s %s\n"
7257msgstr "" 7094msgstr ""
7258 7095
7259#: src/transport/gnunet-transport.c:1262 7096#: src/transport/gnunet-transport.c:1264
7260#, c-format 7097#, c-format
7261msgid "" 7098msgid ""
7262"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n" 7099"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
7263msgstr "" 7100msgstr ""
7264 7101
7265#: src/transport/gnunet-transport.c:1292 7102#: src/transport/gnunet-transport.c:1294
7266msgid "Failed to connect to transport service for disconnection\n" 7103msgid "Failed to connect to transport service for disconnection\n"
7267msgstr "" 7104msgstr ""
7268 7105
7269#: src/transport/gnunet-transport.c:1298 7106#: src/transport/gnunet-transport.c:1300
7270msgid "Blacklisting request in place, stop with CTRL-C\n" 7107msgid "Blacklisting request in place, stop with CTRL-C\n"
7271msgstr "" 7108msgstr ""
7272 7109
7273#: src/transport/gnunet-transport.c:1323 src/transport/gnunet-transport.c:1353 7110#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
7274#: src/transport/gnunet-transport.c:1406 7111#: src/transport/gnunet-transport.c:1408
7275msgid "Failed to connect to transport service\n" 7112msgid "Failed to connect to transport service\n"
7276msgstr "" 7113msgstr ""
7277 7114
7278#: src/transport/gnunet-transport.c:1360 7115#: src/transport/gnunet-transport.c:1362
7279msgid "Starting to receive benchmark data\n" 7116msgid "Starting to receive benchmark data\n"
7280msgstr "" 7117msgstr ""
7281 7118
7282#: src/transport/gnunet-transport.c:1431 7119#: src/transport/gnunet-transport.c:1433
7283msgid "print information for all peers (instead of only connected peers)" 7120msgid "print information for all peers (instead of only connected peers)"
7284msgstr "" 7121msgstr ""
7285 7122
7286#: src/transport/gnunet-transport.c:1435 7123#: src/transport/gnunet-transport.c:1437
7287msgid "measure how fast we are receiving data from all peers (until CTRL-C)" 7124msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
7288msgstr "" 7125msgstr ""
7289 7126
7290#: src/transport/gnunet-transport.c:1439 7127#: src/transport/gnunet-transport.c:1441
7291msgid "disconnect from a peer" 7128msgid "disconnect from a peer"
7292msgstr "" 7129msgstr ""
7293 7130
7294#: src/transport/gnunet-transport.c:1443 7131#: src/transport/gnunet-transport.c:1445
7295msgid "provide information about all current connections (once)" 7132msgid "provide information about all current connections (once)"
7296msgstr "" 7133msgstr ""
7297 7134
7298#: src/transport/gnunet-transport.c:1451 7135#: src/transport/gnunet-transport.c:1453
7299msgid "" 7136msgid ""
7300"provide information about all connects and disconnect events (continuously)" 7137"provide information about all connects and disconnect events (continuously)"
7301msgstr "" 7138msgstr ""
7302 7139
7303#: src/transport/gnunet-transport.c:1455 7140#: src/transport/gnunet-transport.c:1457
7304msgid "do not resolve hostnames" 7141msgid "do not resolve hostnames"
7305msgstr "" 7142msgstr ""
7306 7143
7307#: src/transport/gnunet-transport.c:1460 7144#: src/transport/gnunet-transport.c:1462
7308#: src/transport/gnunet-transport-profiler.c:639 7145#: src/transport/gnunet-transport-profiler.c:641
7309msgid "peer identity" 7146msgid "peer identity"
7310msgstr "" 7147msgstr ""
7311 7148
7312#: src/transport/gnunet-transport.c:1464 7149#: src/transport/gnunet-transport.c:1466
7313msgid "monitor plugin sessions" 7150msgid "monitor plugin sessions"
7314msgstr "" 7151msgstr ""
7315 7152
7316#: src/transport/gnunet-transport.c:1469 7153#: src/transport/gnunet-transport.c:1471
7317msgid "send data for benchmarking to the other peer (until CTRL-C)" 7154msgid "send data for benchmarking to the other peer (until CTRL-C)"
7318msgstr "" 7155msgstr ""
7319 7156
7320#: src/transport/gnunet-transport.c:1480 7157#: src/transport/gnunet-transport.c:1482
7321#: src/transport/gnunet-transport-profiler.c:650 7158#: src/transport/gnunet-transport-profiler.c:652
7322msgid "Direct access to transport service." 7159msgid "Direct access to transport service."
7323msgstr "" 7160msgstr ""
7324 7161
7325#: src/transport/gnunet-transport-profiler.c:217 7162#: src/transport/gnunet-transport-profiler.c:219
7326#, c-format 7163#, c-format
7327msgid "%llu B in %llu ms == %.2f KB/s!\n" 7164msgid "%llu B in %llu ms == %.2f KB/s!\n"
7328msgstr "" 7165msgstr ""
7329 7166
7330#: src/transport/gnunet-transport-profiler.c:615 7167#: src/transport/gnunet-transport-profiler.c:617
7331msgid "send data to peer" 7168msgid "send data to peer"
7332msgstr "" 7169msgstr ""
7333 7170
7334#: src/transport/gnunet-transport-profiler.c:619 7171#: src/transport/gnunet-transport-profiler.c:621
7335msgid "receive data from peer" 7172msgid "receive data from peer"
7336msgstr "" 7173msgstr ""
7337 7174
7338#: src/transport/gnunet-transport-profiler.c:624 7175#: src/transport/gnunet-transport-profiler.c:626
7339msgid "iterations" 7176msgid "iterations"
7340msgstr "" 7177msgstr ""
7341 7178
7342#: src/transport/gnunet-transport-profiler.c:629 7179#: src/transport/gnunet-transport-profiler.c:631
7343#, fuzzy 7180#, fuzzy
7344msgid "number of messages to send" 7181msgid "number of messages to send"
7345msgstr "nombre de valeurs" 7182msgstr "nombre de valeurs"
7346 7183
7347#: src/transport/gnunet-transport-profiler.c:634 7184#: src/transport/gnunet-transport-profiler.c:636
7348msgid "message size to use" 7185msgid "message size to use"
7349msgstr "" 7186msgstr ""
7350 7187
7351#: src/transport/plugin_transport_http_client.c:1472 7188#: src/transport/plugin_transport_http_client.c:1474
7352#: src/transport/plugin_transport_http_server.c:2310 7189#: src/transport/plugin_transport_http_server.c:2312
7353#: src/transport/plugin_transport_http_server.c:3524 7190#: src/transport/plugin_transport_http_server.c:3530
7354#: src/transport/plugin_transport_tcp.c:3889 7191#: src/transport/plugin_transport_tcp.c:3895
7355#: src/transport/plugin_transport_tcp.c:3896 7192#: src/transport/plugin_transport_tcp.c:3902
7356#: src/transport/plugin_transport_xt.c:3897 7193#: src/transport/plugin_transport_xt.c:3899
7357#: src/transport/plugin_transport_xt.c:3904 7194#: src/transport/plugin_transport_xt.c:3906
7358msgid "TCP_STEALTH not supported on this platform.\n" 7195msgid "TCP_STEALTH not supported on this platform.\n"
7359msgstr "" 7196msgstr ""
7360 7197
7361#: src/transport/plugin_transport_http_client.c:2113 7198#: src/transport/plugin_transport_http_client.c:2115
7362#, c-format 7199#, c-format
7363msgid "Could not initialize curl multi handle, failed to start %s plugin!\n" 7200msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
7364msgstr "" 7201msgstr ""
7365 7202
7366#: src/transport/plugin_transport_http_client.c:2162 7203#: src/transport/plugin_transport_http_client.c:2164
7367#: src/transport/plugin_transport_http_server.c:3239 7204#: src/transport/plugin_transport_http_server.c:3245
7368#, c-format 7205#, c-format
7369msgid "Shutting down plugin `%s'\n" 7206msgid "Shutting down plugin `%s'\n"
7370msgstr "" 7207msgstr ""
7371 7208
7372#: src/transport/plugin_transport_http_client.c:2179 7209#: src/transport/plugin_transport_http_client.c:2181
7373#: src/transport/plugin_transport_http_server.c:3309 7210#: src/transport/plugin_transport_http_server.c:3315
7374#, c-format 7211#, c-format
7375msgid "Shutdown for plugin `%s' complete\n" 7212msgid "Shutdown for plugin `%s' complete\n"
7376msgstr "" 7213msgstr ""
7377 7214
7378#: src/transport/plugin_transport_http_client.c:2213 7215#: src/transport/plugin_transport_http_client.c:2215
7379#, c-format 7216#, c-format
7380msgid "Maximum number of requests is %u\n" 7217msgid "Maximum number of requests is %u\n"
7381msgstr "" 7218msgstr ""
7382 7219
7383#: src/transport/plugin_transport_http_server.c:1754 7220#: src/transport/plugin_transport_http_server.c:1756
7384#, c-format 7221#, c-format
7385msgid "" 7222msgid ""
7386"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data " 7223"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data "
7387"size %u\n" 7224"size %u\n"
7388msgstr "" 7225msgstr ""
7389 7226
7390#: src/transport/plugin_transport_http_server.c:2026 7227#: src/transport/plugin_transport_http_server.c:2028
7391#, c-format 7228#, c-format
7392msgid "Accepting connection (%u of %u) from `%s'\n" 7229msgid "Accepting connection (%u of %u) from `%s'\n"
7393msgstr "" 7230msgstr ""
7394 7231
7395#: src/transport/plugin_transport_http_server.c:2034 7232#: src/transport/plugin_transport_http_server.c:2036
7396#, c-format 7233#, c-format
7397msgid "" 7234msgid ""
7398"Server reached maximum number connections (%u), rejecting new connection\n" 7235"Server reached maximum number connections (%u), rejecting new connection\n"
7399msgstr "" 7236msgstr ""
7400 7237
7401#: src/transport/plugin_transport_http_server.c:2184 7238#: src/transport/plugin_transport_http_server.c:2186
7402msgid "" 7239msgid ""
7403"Could not create a new TLS certificate, program `gnunet-transport-" 7240"Could not create a new TLS certificate, program `gnunet-transport-"
7404"certificate-creation' could not be started!\n" 7241"certificate-creation' could not be started!\n"
7405msgstr "" 7242msgstr ""
7406 7243
7407#: src/transport/plugin_transport_http_server.c:2207 7244#: src/transport/plugin_transport_http_server.c:2209
7408#, c-format 7245#, c-format
7409msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n" 7246msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n"
7410msgstr "" 7247msgstr ""
7411 7248
7412#: src/transport/plugin_transport_http_server.c:2336 7249#: src/transport/plugin_transport_http_server.c:2338
7413msgid "Could not load or create server certificate! Loading plugin failed!\n" 7250msgid "Could not load or create server certificate! Loading plugin failed!\n"
7414msgstr "" 7251msgstr ""
7415 7252
7416#: src/transport/plugin_transport_http_server.c:2648 7253#: src/transport/plugin_transport_http_server.c:2654
7417msgid "Require valid port number for service in configuration!\n" 7254msgid "Require valid port number for service in configuration!\n"
7418msgstr "" 7255msgstr ""
7419 7256
7420#: src/transport/plugin_transport_http_server.c:2813 7257#: src/transport/plugin_transport_http_server.c:2819
7421#, c-format 7258#, c-format
7422msgid "Found %u addresses to report to NAT service\n" 7259msgid "Found %u addresses to report to NAT service\n"
7423msgstr "" 7260msgstr ""
7424 7261
7425#: src/transport/plugin_transport_http_server.c:2899 7262#: src/transport/plugin_transport_http_server.c:2905
7426#: src/transport/plugin_transport_udp.c:3621 7263#: src/transport/plugin_transport_udp.c:3627
7427#: src/transport/plugin_transport_xu.c:2047 7264#: src/transport/plugin_transport_xu.c:2049
7428msgid "Disabling IPv6 since it is not supported on this system!\n" 7265msgid "Disabling IPv6 since it is not supported on this system!\n"
7429msgstr "" 7266msgstr ""
7430 7267
7431#: src/transport/plugin_transport_http_server.c:3005 7268#: src/transport/plugin_transport_http_server.c:3011
7432#, c-format 7269#, c-format
7433msgid "IPv4 support is %s\n" 7270msgid "IPv4 support is %s\n"
7434msgstr "Prise en charge d’IPv4 %s\n" 7271msgstr "Prise en charge d’IPv4 %s\n"
7435 7272
7436#: src/transport/plugin_transport_http_server.c:3020 7273#: src/transport/plugin_transport_http_server.c:3026
7437#, c-format 7274#, c-format
7438msgid "IPv6 support is %s\n" 7275msgid "IPv6 support is %s\n"
7439msgstr "Prise en charge d’IPv6 %s\n" 7276msgstr "Prise en charge d’IPv6 %s\n"
7440 7277
7441#: src/transport/plugin_transport_http_server.c:3026 7278#: src/transport/plugin_transport_http_server.c:3032
7442msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n" 7279msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n"
7443msgstr "" 7280msgstr ""
7444 7281
7445#: src/transport/plugin_transport_http_server.c:3037 7282#: src/transport/plugin_transport_http_server.c:3043
7446msgid "Port is required! Fix in configuration\n" 7283msgid "Port is required! Fix in configuration\n"
7447msgstr "" 7284msgstr ""
7448 7285
7449#: src/transport/plugin_transport_http_server.c:3043 7286#: src/transport/plugin_transport_http_server.c:3049
7450#, c-format 7287#, c-format
7451msgid "Using port %u\n" 7288msgid "Using port %u\n"
7452msgstr "Utilisation du port %u\n" 7289msgstr "Utilisation du port %u\n"
7453 7290
7454#: src/transport/plugin_transport_http_server.c:3062 7291#: src/transport/plugin_transport_http_server.c:3068
7455#, c-format 7292#, c-format
7456msgid "Specific IPv4 address `%s' in configuration file is invalid!\n" 7293msgid "Specific IPv4 address `%s' in configuration file is invalid!\n"
7457msgstr "" 7294msgstr ""
7458 7295
7459#: src/transport/plugin_transport_http_server.c:3097 7296#: src/transport/plugin_transport_http_server.c:3103
7460#, c-format 7297#, c-format
7461msgid "Specific IPv6 address `%s' in configuration file is invalid!\n" 7298msgid "Specific IPv6 address `%s' in configuration file is invalid!\n"
7462msgstr "" 7299msgstr ""
7463 7300
7464#: src/transport/plugin_transport_http_server.c:3172 7301#: src/transport/plugin_transport_http_server.c:3178
7465#, c-format 7302#, c-format
7466msgid "Using external hostname `%s'\n" 7303msgid "Using external hostname `%s'\n"
7467msgstr "" 7304msgstr ""
7468 7305
7469#: src/transport/plugin_transport_http_server.c:3193 7306#: src/transport/plugin_transport_http_server.c:3199
7470#, c-format 7307#, c-format
7471msgid "Notifying transport only about hostname `%s'\n" 7308msgid "Notifying transport only about hostname `%s'\n"
7472msgstr "" 7309msgstr ""
7473 7310
7474#: src/transport/plugin_transport_http_server.c:3210 7311#: src/transport/plugin_transport_http_server.c:3216
7475#, c-format 7312#, c-format
7476msgid "Maximum number of connections is %u\n" 7313msgid "Maximum number of connections is %u\n"
7477msgstr "" 7314msgstr ""
7478 7315
7479#: src/transport/plugin_transport_http_server.c:3536 7316#: src/transport/plugin_transport_http_server.c:3542
7480msgid "Unable to compile URL regex\n" 7317msgid "Unable to compile URL regex\n"
7481msgstr "" 7318msgstr ""
7482 7319
7483#: src/transport/plugin_transport_smtp.c:221 7320#: src/transport/plugin_transport_smtp.c:223
7484#, c-format 7321#, c-format
7485msgid "Received malformed message via %s. Ignored.\n" 7322msgid "Received malformed message via %s. Ignored.\n"
7486msgstr "" 7323msgstr ""
7487 7324
7488#: src/transport/plugin_transport_smtp.c:308 7325#: src/transport/plugin_transport_smtp.c:310
7489msgid "SMTP filter string to invalid, lacks ': '\n" 7326msgid "SMTP filter string to invalid, lacks ': '\n"
7490msgstr "" 7327msgstr ""
7491 7328
7492#: src/transport/plugin_transport_smtp.c:317 7329#: src/transport/plugin_transport_smtp.c:319
7493#, c-format 7330#, c-format
7494msgid "SMTP filter string to long, capped to `%s'\n" 7331msgid "SMTP filter string to long, capped to `%s'\n"
7495msgstr "" 7332msgstr ""
7496 7333
7497#: src/transport/plugin_transport_smtp.c:412 7334#: src/transport/plugin_transport_smtp.c:414
7498#: src/transport/plugin_transport_smtp.c:422 7335#: src/transport/plugin_transport_smtp.c:424
7499#: src/transport/plugin_transport_smtp.c:435 7336#: src/transport/plugin_transport_smtp.c:437
7500#: src/transport/plugin_transport_smtp.c:454 7337#: src/transport/plugin_transport_smtp.c:456
7501#: src/transport/plugin_transport_smtp.c:477 7338#: src/transport/plugin_transport_smtp.c:479
7502#: src/transport/plugin_transport_smtp.c:485 7339#: src/transport/plugin_transport_smtp.c:487
7503#: src/transport/plugin_transport_smtp.c:498 7340#: src/transport/plugin_transport_smtp.c:500
7504#: src/transport/plugin_transport_smtp.c:509 7341#: src/transport/plugin_transport_smtp.c:511
7505#, c-format 7342#, c-format
7506msgid "SMTP: `%s' failed: %s.\n" 7343msgid "SMTP: `%s' failed: %s.\n"
7507msgstr "SNTP : « %s » échouée : %s.\n" 7344msgstr "SNTP : « %s » échouée : %s.\n"
7508 7345
7509#: src/transport/plugin_transport_smtp.c:650 7346#: src/transport/plugin_transport_smtp.c:652
7510msgid "No email-address specified, can not start SMTP transport.\n" 7347msgid "No email-address specified, can not start SMTP transport.\n"
7511msgstr "" 7348msgstr ""
7512 7349
7513#: src/transport/plugin_transport_smtp.c:662 7350#: src/transport/plugin_transport_smtp.c:664
7514msgid "# bytes received via SMTP" 7351msgid "# bytes received via SMTP"
7515msgstr "" 7352msgstr ""
7516 7353
7517#: src/transport/plugin_transport_smtp.c:663 7354#: src/transport/plugin_transport_smtp.c:665
7518msgid "# bytes sent via SMTP" 7355msgid "# bytes sent via SMTP"
7519msgstr "" 7356msgstr ""
7520 7357
7521#: src/transport/plugin_transport_smtp.c:665 7358#: src/transport/plugin_transport_smtp.c:667
7522msgid "# bytes dropped by SMTP (outgoing)" 7359msgid "# bytes dropped by SMTP (outgoing)"
7523msgstr "" 7360msgstr ""
7524 7361
7525#: src/transport/plugin_transport_tcp.c:1545 7362#: src/transport/plugin_transport_tcp.c:1551
7526#: src/transport/plugin_transport_tcp.c:2871 7363#: src/transport/plugin_transport_tcp.c:2877
7527#: src/transport/plugin_transport_xt.c:1551 7364#: src/transport/plugin_transport_xt.c:1553
7528#: src/transport/plugin_transport_xt.c:2877 7365#: src/transport/plugin_transport_xt.c:2879
7529#, c-format 7366#, c-format
7530msgid "Unexpected address length: %u bytes\n" 7367msgid "Unexpected address length: %u bytes\n"
7531msgstr "" 7368msgstr ""
7532 7369
7533#: src/transport/plugin_transport_tcp.c:1728 7370#: src/transport/plugin_transport_tcp.c:1734
7534#: src/transport/plugin_transport_tcp.c:1952 7371#: src/transport/plugin_transport_tcp.c:1958
7535#: src/transport/plugin_transport_tcp.c:3135 7372#: src/transport/plugin_transport_tcp.c:3141
7536#: src/transport/plugin_transport_tcp.c:4012 7373#: src/transport/plugin_transport_tcp.c:4018
7537#: src/transport/plugin_transport_xt.c:1734 7374#: src/transport/plugin_transport_xt.c:1736
7538#: src/transport/plugin_transport_xt.c:1958 7375#: src/transport/plugin_transport_xt.c:1960
7539#: src/transport/plugin_transport_xt.c:3141 7376#: src/transport/plugin_transport_xt.c:3143
7540msgid "# TCP sessions active" 7377msgid "# TCP sessions active"
7541msgstr "# Session TCP active" 7378msgstr "# Session TCP active"
7542 7379
7543#: src/transport/plugin_transport_tcp.c:1770 7380#: src/transport/plugin_transport_tcp.c:1776
7544#: src/transport/plugin_transport_tcp.c:1934 7381#: src/transport/plugin_transport_tcp.c:1940
7545#: src/transport/plugin_transport_tcp.c:2058 7382#: src/transport/plugin_transport_tcp.c:2064
7546#: src/transport/plugin_transport_tcp.c:2131 7383#: src/transport/plugin_transport_tcp.c:2137
7547#: src/transport/plugin_transport_tcp.c:2231 7384#: src/transport/plugin_transport_tcp.c:2237
7548#: src/transport/plugin_transport_tcp.c:2256 7385#: src/transport/plugin_transport_tcp.c:2262
7549#: src/transport/plugin_transport_xt.c:1776 7386#: src/transport/plugin_transport_xt.c:1778
7550#: src/transport/plugin_transport_xt.c:1940 7387#: src/transport/plugin_transport_xt.c:1942
7551#: src/transport/plugin_transport_xt.c:2064 7388#: src/transport/plugin_transport_xt.c:2066
7552#: src/transport/plugin_transport_xt.c:2137 7389#: src/transport/plugin_transport_xt.c:2139
7553#: src/transport/plugin_transport_xt.c:2237 7390#: src/transport/plugin_transport_xt.c:2239
7554#: src/transport/plugin_transport_xt.c:2262 7391#: src/transport/plugin_transport_xt.c:2264
7555msgid "# bytes currently in TCP buffers" 7392msgid "# bytes currently in TCP buffers"
7556msgstr "" 7393msgstr ""
7557 7394
7558#: src/transport/plugin_transport_tcp.c:1773 7395#: src/transport/plugin_transport_tcp.c:1779
7559#: src/transport/plugin_transport_xt.c:1779 7396#: src/transport/plugin_transport_xt.c:1781
7560msgid "# bytes discarded by TCP (disconnect)" 7397msgid "# bytes discarded by TCP (disconnect)"
7561msgstr "" 7398msgstr ""
7562 7399
7563#: src/transport/plugin_transport_tcp.c:2061 7400#: src/transport/plugin_transport_tcp.c:2067
7564#: src/transport/plugin_transport_xt.c:2067 7401#: src/transport/plugin_transport_xt.c:2069
7565msgid "# bytes discarded by TCP (timeout)" 7402msgid "# bytes discarded by TCP (timeout)"
7566msgstr "" 7403msgstr ""
7567 7404
7568#: src/transport/plugin_transport_tcp.c:2135 7405#: src/transport/plugin_transport_tcp.c:2141
7569#: src/transport/plugin_transport_xt.c:2141 7406#: src/transport/plugin_transport_xt.c:2143
7570msgid "# bytes transmitted via TCP" 7407msgid "# bytes transmitted via TCP"
7571msgstr "" 7408msgstr ""
7572 7409
7573#: src/transport/plugin_transport_tcp.c:2533 7410#: src/transport/plugin_transport_tcp.c:2539
7574#: src/transport/plugin_transport_xt.c:2539 7411#: src/transport/plugin_transport_xt.c:2541
7575msgid "# requests to create session with invalid address" 7412msgid "# requests to create session with invalid address"
7576msgstr "" 7413msgstr ""
7577 7414
7578#: src/transport/plugin_transport_tcp.c:2709 7415#: src/transport/plugin_transport_tcp.c:2715
7579#: src/transport/plugin_transport_xt.c:2715 7416#: src/transport/plugin_transport_xt.c:2717
7580msgid "# transport-service disconnect requests for TCP" 7417msgid "# transport-service disconnect requests for TCP"
7581msgstr "" 7418msgstr ""
7582 7419
7583#: src/transport/plugin_transport_tcp.c:3201 7420#: src/transport/plugin_transport_tcp.c:3207
7584#: src/transport/plugin_transport_xt.c:3207 7421#: src/transport/plugin_transport_xt.c:3209
7585msgid "# TCP WELCOME messages received" 7422msgid "# TCP WELCOME messages received"
7586msgstr "" 7423msgstr ""
7587 7424
7588#: src/transport/plugin_transport_tcp.c:3407 7425#: src/transport/plugin_transport_tcp.c:3413
7589#: src/transport/plugin_transport_xt.c:3413 7426#: src/transport/plugin_transport_xt.c:3415
7590msgid "# bytes received via TCP" 7427msgid "# bytes received via TCP"
7591msgstr "" 7428msgstr ""
7592 7429
7593#: src/transport/plugin_transport_tcp.c:3458 7430#: src/transport/plugin_transport_tcp.c:3464
7594#: src/transport/plugin_transport_tcp.c:3516 7431#: src/transport/plugin_transport_tcp.c:3522
7595#: src/transport/plugin_transport_xt.c:3464 7432#: src/transport/plugin_transport_xt.c:3466
7596#: src/transport/plugin_transport_xt.c:3522 7433#: src/transport/plugin_transport_xt.c:3524
7597#, fuzzy 7434#, fuzzy
7598msgid "# TCP server connections active" 7435msgid "# TCP server connections active"
7599msgstr "# Session TCP active" 7436msgstr "# Session TCP active"
7600 7437
7601#: src/transport/plugin_transport_tcp.c:3462 7438#: src/transport/plugin_transport_tcp.c:3468
7602#: src/transport/plugin_transport_xt.c:3468 7439#: src/transport/plugin_transport_xt.c:3470
7603msgid "# TCP server connect events" 7440msgid "# TCP server connect events"
7604msgstr "" 7441msgstr ""
7605 7442
7606#: src/transport/plugin_transport_tcp.c:3468 7443#: src/transport/plugin_transport_tcp.c:3474
7607#: src/transport/plugin_transport_xt.c:3474 7444#: src/transport/plugin_transport_xt.c:3476
7608msgid "TCP connection limit reached, suspending server\n" 7445msgid "TCP connection limit reached, suspending server\n"
7609msgstr "" 7446msgstr ""
7610 7447
7611#: src/transport/plugin_transport_tcp.c:3470 7448#: src/transport/plugin_transport_tcp.c:3476
7612#: src/transport/plugin_transport_xt.c:3476 7449#: src/transport/plugin_transport_xt.c:3478
7613msgid "# TCP service suspended" 7450msgid "# TCP service suspended"
7614msgstr "" 7451msgstr ""
7615 7452
7616#: src/transport/plugin_transport_tcp.c:3510 7453#: src/transport/plugin_transport_tcp.c:3516
7617#: src/transport/plugin_transport_xt.c:3516 7454#: src/transport/plugin_transport_xt.c:3518
7618msgid "# TCP service resumed" 7455msgid "# TCP service resumed"
7619msgstr "" 7456msgstr ""
7620 7457
7621#: src/transport/plugin_transport_tcp.c:3520 7458#: src/transport/plugin_transport_tcp.c:3526
7622#: src/transport/plugin_transport_xt.c:3526 7459#: src/transport/plugin_transport_xt.c:3528
7623msgid "# network-level TCP disconnect events" 7460msgid "# network-level TCP disconnect events"
7624msgstr "" 7461msgstr ""
7625 7462
7626#: src/transport/plugin_transport_tcp.c:3839 7463#: src/transport/plugin_transport_tcp.c:3845
7627#: src/transport/plugin_transport_xt.c:3847 7464#: src/transport/plugin_transport_xt.c:3849
7628msgid "Failed to start service.\n" 7465msgid "Failed to start service.\n"
7629msgstr "" 7466msgstr ""
7630 7467
7631#: src/transport/plugin_transport_tcp.c:4000 7468#: src/transport/plugin_transport_tcp.c:4006
7632#, c-format 7469#, c-format
7633msgid "TCP transport listening on port %llu\n" 7470msgid "TCP transport listening on port %llu\n"
7634msgstr "" 7471msgstr ""
7635 7472
7636#: src/transport/plugin_transport_tcp.c:4004 7473#: src/transport/plugin_transport_tcp.c:4010
7637msgid "TCP transport not listening on any port (client only)\n" 7474msgid "TCP transport not listening on any port (client only)\n"
7638msgstr "" 7475msgstr ""
7639 7476
7640#: src/transport/plugin_transport_tcp.c:4008 7477#: src/transport/plugin_transport_tcp.c:4014
7641#, c-format 7478#, c-format
7642msgid "TCP transport advertises itself as being on port %llu\n" 7479msgid "TCP transport advertises itself as being on port %llu\n"
7643msgstr "" 7480msgstr ""
7644 7481
7645#: src/transport/plugin_transport_udp_broadcasting.c:166 7482#: src/transport/plugin_transport_udp_broadcasting.c:168
7646msgid "# Multicast HELLO beacons received via UDP" 7483msgid "# Multicast HELLO beacons received via UDP"
7647msgstr "" 7484msgstr ""
7648 7485
7649#: src/transport/plugin_transport_udp_broadcasting.c:546 7486#: src/transport/plugin_transport_udp_broadcasting.c:548
7650msgid "" 7487msgid ""
7651"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" 7488"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
7652msgstr "" 7489msgstr ""
7653 7490
7654#: src/transport/plugin_transport_udp_broadcasting.c:563 7491#: src/transport/plugin_transport_udp_broadcasting.c:565
7655#, c-format 7492#, c-format
7656msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" 7493msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
7657msgstr "" 7494msgstr ""
7658 7495
7659#: src/transport/plugin_transport_udp.c:3365 7496#: src/transport/plugin_transport_udp.c:3371
7660#, c-format 7497#, c-format
7661msgid "" 7498msgid ""
7662"UDP could not transmit message to `%s': Network seems down, please check " 7499"UDP could not transmit message to `%s': Network seems down, please check "
7663"your network configuration\n" 7500"your network configuration\n"
7664msgstr "" 7501msgstr ""
7665 7502
7666#: src/transport/plugin_transport_udp.c:3379 7503#: src/transport/plugin_transport_udp.c:3385
7667msgid "" 7504msgid ""
7668"UDP could not transmit IPv6 message! Please check your network configuration " 7505"UDP could not transmit IPv6 message! Please check your network configuration "
7669"and disable IPv6 if your connection does not have a global IPv6 address\n" 7506"and disable IPv6 if your connection does not have a global IPv6 address\n"
7670msgstr "" 7507msgstr ""
7671 7508
7672#: src/transport/plugin_transport_udp.c:3697 7509#: src/transport/plugin_transport_udp.c:3703
7673#: src/transport/plugin_transport_udp.c:3796 7510#: src/transport/plugin_transport_udp.c:3802
7674#, fuzzy, c-format 7511#, fuzzy, c-format
7675msgid "Failed to bind UDP socket to %s: %s\n" 7512msgid "Failed to bind UDP socket to %s: %s\n"
7676msgstr "Résolution de « %s » échouée : %s\n" 7513msgstr "Résolution de « %s » échouée : %s\n"
7677 7514
7678#: src/transport/plugin_transport_udp.c:3715 7515#: src/transport/plugin_transport_udp.c:3721
7679#: src/transport/plugin_transport_xu.c:2141 7516#: src/transport/plugin_transport_xu.c:2143
7680msgid "Disabling IPv4 since it is not supported on this system!\n" 7517msgid "Disabling IPv4 since it is not supported on this system!\n"
7681msgstr "" 7518msgstr ""
7682 7519
7683#: src/transport/plugin_transport_udp.c:3806 7520#: src/transport/plugin_transport_udp.c:3812
7684msgid "Failed to open UDP sockets\n" 7521msgid "Failed to open UDP sockets\n"
7685msgstr "" 7522msgstr ""
7686 7523
7687#: src/transport/plugin_transport_udp.c:3877 7524#: src/transport/plugin_transport_udp.c:3883
7688#: src/transport/plugin_transport_udp.c:3891 7525#: src/transport/plugin_transport_udp.c:3897
7689#: src/transport/plugin_transport_xu.c:2299 7526#: src/transport/plugin_transport_xu.c:2301
7690#: src/transport/plugin_transport_xu.c:2313 7527#: src/transport/plugin_transport_xu.c:2315
7691msgid "must be in [0,65535]" 7528msgid "must be in [0,65535]"
7692msgstr "" 7529msgstr ""
7693 7530
7694#: src/transport/plugin_transport_udp.c:3923 7531#: src/transport/plugin_transport_udp.c:3929
7695#: src/transport/plugin_transport_xu.c:2345 7532#: src/transport/plugin_transport_xu.c:2347
7696#, fuzzy 7533#, fuzzy
7697msgid "must be valid IPv4 address" 7534msgid "must be valid IPv4 address"
7698msgstr "adresse invalide" 7535msgstr "adresse invalide"
7699 7536
7700#: src/transport/plugin_transport_udp.c:3950 7537#: src/transport/plugin_transport_udp.c:3956
7701#: src/transport/plugin_transport_xu.c:2372 7538#: src/transport/plugin_transport_xu.c:2374
7702#, fuzzy 7539#, fuzzy
7703msgid "must be valid IPv6 address" 7540msgid "must be valid IPv6 address"
7704msgstr "adresse invalide" 7541msgstr "adresse invalide"
7705 7542
7706#: src/transport/plugin_transport_udp.c:4014 7543#: src/transport/plugin_transport_udp.c:4020
7707msgid "Failed to create UDP network sockets\n" 7544msgid "Failed to create UDP network sockets\n"
7708msgstr "" 7545msgstr ""
7709 7546
7710#: src/transport/plugin_transport_unix.c:1401 7547#: src/transport/plugin_transport_unix.c:1416
7711#, c-format
7712msgid "Cannot create path to `%s'\n"
7713msgstr ""
7714
7715#: src/transport/plugin_transport_unix.c:1414
7716#, c-format 7548#, c-format
7717msgid "Cannot bind to `%s'\n" 7549msgid "Cannot bind to `%s'\n"
7718msgstr "" 7550msgstr ""
7719 7551
7720#: src/transport/plugin_transport_unix.c:1814 7552#: src/transport/plugin_transport_unix.c:1816
7721msgid "Failed to open UNIX listen socket\n" 7553msgid "Failed to open UNIX listen socket\n"
7722msgstr "" 7554msgstr ""
7723 7555
7724#: src/transport/plugin_transport_wlan.c:766 7556#: src/transport/plugin_transport_wlan.c:768
7725msgid "# ACKs sent" 7557msgid "# ACKs sent"
7726msgstr "" 7558msgstr ""
7727 7559
7728#: src/transport/plugin_transport_wlan.c:786 7560#: src/transport/plugin_transport_wlan.c:788
7729msgid "# Messages defragmented" 7561msgid "# Messages defragmented"
7730msgstr "" 7562msgstr ""
7731 7563
7732#: src/transport/plugin_transport_wlan.c:827 7564#: src/transport/plugin_transport_wlan.c:829
7733#: src/transport/plugin_transport_wlan.c:912 7565#: src/transport/plugin_transport_wlan.c:914
7734#, fuzzy 7566#, fuzzy
7735msgid "# Sessions allocated" 7567msgid "# Sessions allocated"
7736msgstr "# Session TCP active" 7568msgstr "# Session TCP active"
7737 7569
7738#: src/transport/plugin_transport_wlan.c:1033 7570#: src/transport/plugin_transport_wlan.c:1035
7739msgid "# message fragments sent" 7571msgid "# message fragments sent"
7740msgstr "" 7572msgstr ""
7741 7573
7742#: src/transport/plugin_transport_wlan.c:1062 7574#: src/transport/plugin_transport_wlan.c:1064
7743msgid "# messages pending (with fragmentation)" 7575msgid "# messages pending (with fragmentation)"
7744msgstr "" 7576msgstr ""
7745 7577
7746#: src/transport/plugin_transport_wlan.c:1191 7578#: src/transport/plugin_transport_wlan.c:1193
7747#: src/transport/plugin_transport_wlan.c:1282 7579#: src/transport/plugin_transport_wlan.c:1284
7748#: src/transport/plugin_transport_wlan.c:2303 7580#: src/transport/plugin_transport_wlan.c:2305
7749msgid "# MAC endpoints allocated" 7581msgid "# MAC endpoints allocated"
7750msgstr "" 7582msgstr ""
7751 7583
7752#: src/transport/plugin_transport_wlan.c:1565 7584#: src/transport/plugin_transport_wlan.c:1567
7753msgid "# ACKs received" 7585msgid "# ACKs received"
7754msgstr "" 7586msgstr ""
7755 7587
7756#: src/transport/plugin_transport_wlan.c:1634 7588#: src/transport/plugin_transport_wlan.c:1636
7757msgid "# DATA messages discarded due to CRC32 error" 7589msgid "# DATA messages discarded due to CRC32 error"
7758msgstr "" 7590msgstr ""
7759 7591
7760#: src/transport/plugin_transport_wlan.c:1738 7592#: src/transport/plugin_transport_wlan.c:1740
7761msgid "# HELLO beacons sent" 7593msgid "# HELLO beacons sent"
7762msgstr "" 7594msgstr ""
7763 7595
7764#: src/transport/plugin_transport_wlan.c:1854 7596#: src/transport/plugin_transport_wlan.c:1856
7765msgid "# DATA messages received" 7597msgid "# DATA messages received"
7766msgstr "" 7598msgstr ""
7767 7599
7768#: src/transport/plugin_transport_wlan.c:1888 7600#: src/transport/plugin_transport_wlan.c:1890
7769msgid "# DATA messages processed" 7601msgid "# DATA messages processed"
7770msgstr "" 7602msgstr ""
7771 7603
7772#: src/transport/plugin_transport_wlan.c:2278 7604#: src/transport/plugin_transport_wlan.c:2280
7773#, c-format 7605#, c-format
7774msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n" 7606msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n"
7775msgstr "" 7607msgstr ""
7776 7608
7777#: src/transport/plugin_transport_wlan.c:2300 7609#: src/transport/plugin_transport_wlan.c:2302
7778#, fuzzy 7610#, fuzzy
7779msgid "# sessions allocated" 7611msgid "# sessions allocated"
7780msgstr "# Session TCP active" 7612msgstr "# Session TCP active"
7781 7613
7782#: src/transport/plugin_transport_xt.c:4008 7614#: src/transport/plugin_transport_xt.c:4010
7783#, c-format 7615#, c-format
7784msgid "XT transport listening on port %llu\n" 7616msgid "XT transport listening on port %llu\n"
7785msgstr "" 7617msgstr ""
7786 7618
7787#: src/transport/plugin_transport_xt.c:4012 7619#: src/transport/plugin_transport_xt.c:4014
7788msgid "XT transport not listening on any port (client only)\n" 7620msgid "XT transport not listening on any port (client only)\n"
7789msgstr "" 7621msgstr ""
7790 7622
7791#: src/transport/plugin_transport_xt.c:4016 7623#: src/transport/plugin_transport_xt.c:4018
7792#, c-format 7624#, c-format
7793msgid "XT transport advertises itself as being on port %llu\n" 7625msgid "XT transport advertises itself as being on port %llu\n"
7794msgstr "" 7626msgstr ""
7795 7627
7796#: src/transport/plugin_transport_xt.c:4020 7628#: src/transport/plugin_transport_xt.c:4022
7797#, fuzzy 7629#, fuzzy
7798msgid "# XT sessions active" 7630msgid "# XT sessions active"
7799msgstr "# Session TCP active" 7631msgstr "# Session TCP active"
7800 7632
7801#: src/transport/plugin_transport_xu.c:1235 7633#: src/transport/plugin_transport_xu.c:1237
7802#, c-format 7634#, c-format
7803msgid "" 7635msgid ""
7804"XU could not transmit message to `%s': Network seems down, please check your " 7636"XU could not transmit message to `%s': Network seems down, please check your "
7805"network configuration\n" 7637"network configuration\n"
7806msgstr "" 7638msgstr ""
7807 7639
7808#: src/transport/plugin_transport_xu.c:1249 7640#: src/transport/plugin_transport_xu.c:1251
7809msgid "" 7641msgid ""
7810"XU could not transmit IPv6 message! Please check your network configuration " 7642"XU could not transmit IPv6 message! Please check your network configuration "
7811"and disable IPv6 if your connection does not have a global IPv6 address\n" 7643"and disable IPv6 if your connection does not have a global IPv6 address\n"
7812msgstr "" 7644msgstr ""
7813 7645
7814#: src/transport/plugin_transport_xu.c:2123 7646#: src/transport/plugin_transport_xu.c:2125
7815#: src/transport/plugin_transport_xu.c:2222 7647#: src/transport/plugin_transport_xu.c:2224
7816#, fuzzy, c-format 7648#, fuzzy, c-format
7817msgid "Failed to bind XU socket to %s: %s\n" 7649msgid "Failed to bind XU socket to %s: %s\n"
7818msgstr "Résolution de « %s » échouée : %s\n" 7650msgstr "Résolution de « %s » échouée : %s\n"
7819 7651
7820#: src/transport/plugin_transport_xu.c:2232 7652#: src/transport/plugin_transport_xu.c:2234
7821#, fuzzy 7653#, fuzzy
7822msgid "Failed to open XU sockets\n" 7654msgid "Failed to open XU sockets\n"
7823msgstr "Résolution de « %s » échouée : %s\n" 7655msgstr "Résolution de « %s » échouée : %s\n"
7824 7656
7825#: src/transport/plugin_transport_xu.c:2396 7657#: src/transport/plugin_transport_xu.c:2398
7826#, fuzzy 7658#, fuzzy
7827msgid "Failed to create XU network sockets\n" 7659msgid "Failed to create XU network sockets\n"
7828msgstr "Résolution de « %s » échouée : %s\n" 7660msgstr "Résolution de « %s » échouée : %s\n"
7829 7661
7830#: src/transport/tcp_connection_legacy.c:450 7662#: src/transport/tcp_connection_legacy.c:452
7831#, c-format 7663#, c-format
7832msgid "Access denied to `%s'\n" 7664msgid "Access denied to `%s'\n"
7833msgstr "" 7665msgstr ""
7834 7666
7835#: src/transport/tcp_connection_legacy.c:467 7667#: src/transport/tcp_connection_legacy.c:469
7836#, c-format 7668#, c-format
7837msgid "Accepting connection from `%s': %p\n" 7669msgid "Accepting connection from `%s': %p\n"
7838msgstr "" 7670msgstr ""
7839 7671
7840#: src/transport/tcp_server_legacy.c:472 src/util/service.c:1109 7672#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1666
7841#, c-format 7673#, c-format
7842msgid "`%s' failed for port %d (%s).\n" 7674msgid "`%s' failed for port %d (%s).\n"
7843msgstr "" 7675msgstr ""
7844 7676
7845#: src/transport/tcp_server_legacy.c:482 src/util/service.c:1119 7677#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1676
7846#, c-format 7678#, c-format
7847msgid "`%s' failed for port %d (%s): address already in use\n" 7679msgid "`%s' failed for port %d (%s): address already in use\n"
7848msgstr "" 7680msgstr ""
7849 7681
7850#: src/transport/tcp_server_legacy.c:488 src/util/service.c:1125 7682#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1682
7851#, c-format 7683#, c-format
7852msgid "`%s' failed for `%s': address already in use\n" 7684msgid "`%s' failed for `%s': address already in use\n"
7853msgstr "" 7685msgstr ""
7854 7686
7855#: src/transport/tcp_server_legacy.c:888 7687#: src/transport/tcp_server_legacy.c:890
7856#, c-format 7688#, c-format
7857msgid "" 7689msgid ""
7858"Processing code for message of type %u did not call " 7690"Processing code for message of type %u did not call "
7859"`GNUNET_SERVER_receive_done' after %s\n" 7691"`GNUNET_SERVER_receive_done' after %s\n"
7860msgstr "" 7692msgstr ""
7861 7693
7862#: src/transport/tcp_service_legacy.c:337 src/util/service.c:2378 7694#: src/transport/tcp_service_legacy.c:339 src/util/service.c:870
7863#, c-format 7695#, c-format
7864msgid "Unknown address family %d\n" 7696msgid "Unknown address family %d\n"
7865msgstr "" 7697msgstr ""
7866 7698
7867#: src/transport/tcp_service_legacy.c:344 7699#: src/transport/tcp_service_legacy.c:346
7868#, c-format 7700#, c-format
7869msgid "Access from `%s' denied to service `%s'\n" 7701msgid "Access from `%s' denied to service `%s'\n"
7870msgstr "" 7702msgstr ""
7871 7703
7872#: src/transport/tcp_service_legacy.c:400 src/util/service.c:437 7704#: src/transport/tcp_service_legacy.c:402 src/util/service.c:994
7873#, c-format 7705#, c-format
7874msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n" 7706msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
7875msgstr "" 7707msgstr ""
7876 7708
7877#: src/transport/tcp_service_legacy.c:438 src/util/service.c:480 7709#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1037
7878#, c-format 7710#, c-format
7879msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n" 7711msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
7880msgstr "" 7712msgstr ""
7881 7713
7882#: src/transport/tcp_service_legacy.c:902 src/util/service.c:1040 7714#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1597
7883msgid "Could not access a pre-bound socket, will try to bind myself\n" 7715msgid "Could not access a pre-bound socket, will try to bind myself\n"
7884msgstr "" 7716msgstr ""
7885 7717
7886#: src/transport/tcp_service_legacy.c:951 7718#: src/transport/tcp_service_legacy.c:953
7887#: src/transport/tcp_service_legacy.c:969 src/util/service.c:1192 7719#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1750
7888#, c-format 7720#, c-format
7889msgid "Specified value for `%s' of service `%s' is invalid\n" 7721msgid "Specified value for `%s' of service `%s' is invalid\n"
7890msgstr "" 7722msgstr ""
7891 7723
7892#: src/transport/tcp_service_legacy.c:994 src/util/service.c:1224 7724#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1783
7893#, c-format 7725#, c-format
7894msgid "Could not access pre-bound socket %u, will try to bind myself\n" 7726msgid "Could not access pre-bound socket %u, will try to bind myself\n"
7895msgstr "" 7727msgstr ""
7896 7728
7897#: src/transport/tcp_service_legacy.c:1159 7729#: src/transport/tcp_service_legacy.c:1161
7898#, c-format 7730#, c-format
7899msgid "Failed to start `%s' at `%s'\n" 7731msgid "Failed to start `%s' at `%s'\n"
7900msgstr "" 7732msgstr ""
7901 7733
7902#: src/transport/tcp_service_legacy.c:1200 7734#: src/transport/tcp_service_legacy.c:1202
7903#, c-format 7735#, c-format
7904msgid "Service `%s' runs at %s\n" 7736msgid "Service `%s' runs at %s\n"
7905msgstr "" 7737msgstr ""
7906 7738
7907#: src/transport/tcp_service_legacy.c:1249 src/util/service.c:1498 7739#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2057
7908msgid "Service process failed to initialize\n" 7740msgid "Service process failed to initialize\n"
7909msgstr "" 7741msgstr ""
7910 7742
7911#: src/transport/tcp_service_legacy.c:1253 src/util/service.c:1502 7743#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2061
7912msgid "Service process could not initialize server function\n" 7744msgid "Service process could not initialize server function\n"
7913msgstr "" 7745msgstr ""
7914 7746
7915#: src/transport/tcp_service_legacy.c:1257 src/util/service.c:1506 7747#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2065
7916msgid "Service process failed to report status\n" 7748msgid "Service process failed to report status\n"
7917msgstr "" 7749msgstr ""
7918 7750
7919#: src/transport/tcp_service_legacy.c:1311 src/util/disk.c:1521 7751#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
7920#: src/util/service.c:1376 7752#: src/util/service.c:1935
7921#, c-format 7753#, c-format
7922msgid "Cannot obtain information about user `%s': %s\n" 7754msgid "Cannot obtain information about user `%s': %s\n"
7923msgstr "" 7755msgstr ""
7924 7756
7925#: src/transport/tcp_service_legacy.c:1312 src/util/service.c:1378 7757#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1937
7926msgid "No such user" 7758msgid "No such user"
7927msgstr "Aucun utilisateur trouvé" 7759msgstr "Aucun utilisateur trouvé"
7928 7760
7929#: src/transport/tcp_service_legacy.c:1325 src/util/service.c:1397 7761#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1956
7930#, c-format 7762#, c-format
7931msgid "Cannot change user/group to `%s': %s\n" 7763msgid "Cannot change user/group to `%s': %s\n"
7932msgstr "" 7764msgstr ""
7933 7765
7934#: src/transport/tcp_service_legacy.c:1396 src/util/service.c:1757 7766#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2318
7935msgid "do daemonize (detach from terminal)" 7767msgid "do daemonize (detach from terminal)"
7936msgstr "" 7768msgstr ""
7937 7769
7938#: src/transport/tcp_service_legacy.c:1446 src/util/program.c:277 7770#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:2382
7939#: src/util/service.c:1820 7771#: src/util/service.c:2397
7940#, c-format 7772#, c-format
7941msgid "Malformed configuration file `%s', exit ...\n" 7773msgid "Malformed configuration file `%s', exit ...\n"
7942msgstr "" 7774msgstr ""
7943 7775
7944#: src/transport/tcp_service_legacy.c:1456 src/util/program.c:297 7776#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2409
7945#: src/util/service.c:1831
7946msgid "Malformed configuration, exit ...\n" 7777msgid "Malformed configuration, exit ...\n"
7947msgstr "" 7778msgstr ""
7948 7779
7949#: src/transport/tcp_service_legacy.c:1461 src/util/program.c:290 7780#: src/transport/tcp_service_legacy.c:1463
7950#: src/util/service.c:1837
7951#, c-format 7781#, c-format
7952msgid "Could not access configuration file `%s'\n" 7782msgid "Could not access configuration file `%s'\n"
7953msgstr "" 7783msgstr ""
7954 7784
7955#: src/util/bio.c:179 src/util/bio.c:187 7785#: src/transport/transport_api2_communication.c:764
7786msgid "Dropped backchanel message: handler not provided by communicator\n"
7787msgstr ""
7788
7789#: src/util/bio.c:181 src/util/bio.c:189
7956#, c-format 7790#, c-format
7957msgid "Error reading `%s': %s" 7791msgid "Error reading `%s': %s"
7958msgstr "Erreur de lecture : « %s » : %s" 7792msgstr "Erreur de lecture : « %s » : %s"
7959 7793
7960#: src/util/bio.c:189 7794#: src/util/bio.c:191
7961msgid "End of file" 7795msgid "End of file"
7962msgstr "Fin de fichier" 7796msgstr "Fin de fichier"
7963 7797
7964#: src/util/bio.c:246 7798#: src/util/bio.c:248
7965#, c-format 7799#, c-format
7966msgid "Error reading length of string `%s'" 7800msgid "Error reading length of string `%s'"
7967msgstr "" 7801msgstr ""
7968 7802
7969#: src/util/bio.c:256 7803#: src/util/bio.c:258
7970#, c-format 7804#, c-format
7971msgid "String `%s' longer than allowed (%u > %u)" 7805msgid "String `%s' longer than allowed (%u > %u)"
7972msgstr "" 7806msgstr ""
7973 7807
7974#: src/util/bio.c:304 7808#: src/util/bio.c:306
7975#, c-format 7809#, c-format
7976msgid "Serialized metadata `%s' larger than allowed (%u>%u)" 7810msgid "Serialized metadata `%s' larger than allowed (%u>%u)"
7977msgstr "" 7811msgstr ""
7978 7812
7979#: src/util/bio.c:326 7813#: src/util/bio.c:328
7980#, c-format 7814#, c-format
7981msgid "Metadata `%s' failed to deserialize" 7815msgid "Metadata `%s' failed to deserialize"
7982msgstr "" 7816msgstr ""
7983 7817
7984#: src/util/client.c:732 7818#: src/util/client.c:734
7985msgid "not a valid filename" 7819msgid "not a valid filename"
7986msgstr "" 7820msgstr ""
7987 7821
7988#: src/util/client.c:923 7822#: src/util/client.c:925
7989#, c-format 7823#, c-format
7990msgid "Need a non-empty hostname for service `%s'.\n" 7824msgid "Need a non-empty hostname for service `%s'.\n"
7991msgstr "" 7825msgstr ""
7992 7826
7993#: src/util/common_logging.c:257 src/util/common_logging.c:1159 7827#: src/util/common_logging.c:259 src/util/common_logging.c:1162
7994msgid "DEBUG" 7828msgid "DEBUG"
7995msgstr "DEBUG" 7829msgstr "DEBUG"
7996 7830
7997#: src/util/common_logging.c:259 src/util/common_logging.c:1157 7831#: src/util/common_logging.c:261 src/util/common_logging.c:1160
7998msgid "INFO" 7832msgid "INFO"
7999msgstr "INFO" 7833msgstr "INFO"
8000 7834
8001#: src/util/common_logging.c:261 src/util/common_logging.c:1155 7835#: src/util/common_logging.c:263 src/util/common_logging.c:1158
8002msgid "MESSAGE" 7836msgid "MESSAGE"
8003msgstr "" 7837msgstr ""
8004 7838
8005#: src/util/common_logging.c:263 src/util/common_logging.c:1153 7839#: src/util/common_logging.c:265 src/util/common_logging.c:1156
8006msgid "WARNING" 7840msgid "WARNING"
8007msgstr "AVERTISSEMENT" 7841msgstr "AVERTISSEMENT"
8008 7842
8009#: src/util/common_logging.c:265 src/util/common_logging.c:1151 7843#: src/util/common_logging.c:267 src/util/common_logging.c:1154
8010msgid "ERROR" 7844msgid "ERROR"
8011msgstr "ERREUR" 7845msgstr "ERREUR"
8012 7846
8013#: src/util/common_logging.c:267 src/util/common_logging.c:1161 7847#: src/util/common_logging.c:269 src/util/common_logging.c:1164
8014msgid "NONE" 7848msgid "NONE"
8015msgstr "AUCUN" 7849msgstr "AUCUN"
8016 7850
8017#: src/util/common_logging.c:631 src/util/common_logging.c:661 7851#: src/util/common_logging.c:633 src/util/common_logging.c:663
8018#, c-format 7852#, c-format
8019msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n" 7853msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
8020msgstr "" 7854msgstr ""
8021 7855
8022#: src/util/common_logging.c:895 7856#: src/util/common_logging.c:898
8023#, c-format 7857#, c-format
8024msgid "Message `%.*s' repeated %u times in the last %s\n" 7858msgid "Message `%.*s' repeated %u times in the last %s\n"
8025msgstr "" 7859msgstr ""
8026 7860
8027#: src/util/common_logging.c:1162 7861#: src/util/common_logging.c:1165
8028msgid "INVALID" 7862msgid "INVALID"
8029msgstr "INVALIDE" 7863msgstr "INVALIDE"
8030 7864
8031#: src/util/common_logging.c:1455 7865#: src/util/common_logging.c:1458
8032msgid "unknown address" 7866msgid "unknown address"
8033msgstr "adresse inconnue" 7867msgstr "adresse inconnue"
8034 7868
8035#: src/util/common_logging.c:1497 7869#: src/util/common_logging.c:1500
8036msgid "invalid address" 7870msgid "invalid address"
8037msgstr "adresse invalide" 7871msgstr "adresse invalide"
8038 7872
8039#: src/util/common_logging.c:1515 7873#: src/util/common_logging.c:1518
8040#, c-format 7874#, c-format
8041msgid "Configuration fails to specify option `%s' in section `%s'!\n" 7875msgid "Configuration fails to specify option `%s' in section `%s'!\n"
8042msgstr "" 7876msgstr ""
8043 7877
8044#: src/util/common_logging.c:1536 7878#: src/util/common_logging.c:1539
8045#, c-format 7879#, c-format
8046msgid "" 7880msgid ""
8047"Configuration specifies invalid value for option `%s' in section `%s': %s\n" 7881"Configuration specifies invalid value for option `%s' in section `%s': %s\n"
8048msgstr "" 7882msgstr ""
8049 7883
8050#: src/util/configuration.c:294 7884#: src/util/configuration.c:331
8051#, c-format 7885#, c-format
8052msgid "Syntax error while deserializing in line %u\n" 7886msgid "Syntax error while deserializing in line %u\n"
8053msgstr "" 7887msgstr ""
8054 7888
8055#: src/util/configuration.c:361 7889#: src/util/configuration.c:398
8056#, fuzzy, c-format 7890#, fuzzy, c-format
8057msgid "Error while reading file `%s'\n" 7891msgid "Error while reading file `%s'\n"
8058msgstr "Erreur de lecture : « %s » : %s" 7892msgstr "Erreur de lecture : « %s » : %s"
8059 7893
8060#: src/util/configuration.c:970 7894#: src/util/configuration.c:1016
8061msgid "Not a valid relative time specification" 7895msgid "Not a valid relative time specification"
8062msgstr "" 7896msgstr ""
8063 7897
8064#: src/util/configuration.c:1059 7898#: src/util/configuration.c:1105
8065#, c-format 7899#, c-format
8066msgid "" 7900msgid ""
8067"Configuration value '%s' for '%s' in section '%s' is not in set of legal " 7901"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
8068"choices\n" 7902"choices\n"
8069msgstr "" 7903msgstr ""
8070 7904
8071#: src/util/configuration.c:1178 7905#: src/util/configuration.c:1224
8072#, c-format 7906#, c-format
8073msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n" 7907msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n"
8074msgstr "" 7908msgstr ""
8075 7909
8076#: src/util/configuration.c:1211 7910#: src/util/configuration.c:1257
8077#, c-format 7911#, c-format
8078msgid "Missing closing `%s' in option `%s'\n" 7912msgid "Missing closing `%s' in option `%s'\n"
8079msgstr "" 7913msgstr ""
8080 7914
8081#: src/util/configuration.c:1279 7915#: src/util/configuration.c:1325
8082#, c-format 7916#, c-format
8083msgid "" 7917msgid ""
8084"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined " 7918"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined "
8085"as an environmental variable\n" 7919"as an environmental variable\n"
8086msgstr "" 7920msgstr ""
8087 7921
8088#: src/util/container_bloomfilter.c:530 7922#: src/util/container_bloomfilter.c:532
8089#, c-format 7923#, c-format
8090msgid "" 7924msgid ""
8091"Size of file on disk is incorrect for this Bloom filter (want %llu, have " 7925"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
8092"%llu)\n" 7926"%llu)\n"
8093msgstr "" 7927msgstr ""
8094 7928
8095#: src/util/crypto_ecc.c:860 7929#: src/util/crypto_ecc.c:862
8096#, c-format 7930#, c-format
8097msgid "ECC signing failed at %s:%d: %s\n" 7931msgid "ECC signing failed at %s:%d: %s\n"
8098msgstr "" 7932msgstr ""
8099 7933
8100#: src/util/crypto_ecc.c:915 7934#: src/util/crypto_ecc.c:917
8101#, c-format 7935#, c-format
8102msgid "EdDSA signing failed at %s:%d: %s\n" 7936msgid "EdDSA signing failed at %s:%d: %s\n"
8103msgstr "" 7937msgstr ""
8104 7938
8105#: src/util/crypto_ecc.c:994 7939#: src/util/crypto_ecc.c:996
8106#, c-format 7940#, c-format
8107msgid "ECDSA signature verification failed at %s:%d: %s\n" 7941msgid "ECDSA signature verification failed at %s:%d: %s\n"
8108msgstr "" 7942msgstr ""
8109 7943
8110#: src/util/crypto_ecc.c:1055 7944#: src/util/crypto_ecc.c:1057
8111#, c-format 7945#, c-format
8112msgid "EdDSA signature verification failed at %s:%d: %s\n" 7946msgid "EdDSA signature verification failed at %s:%d: %s\n"
8113msgstr "" 7947msgstr ""
8114 7948
8115#: src/util/crypto_ecc_setup.c:121 src/util/crypto_ecc_setup.c:160 7949#: src/util/crypto_ecc_setup.c:123 src/util/crypto_ecc_setup.c:162
8116#: src/util/crypto_ecc_setup.c:303 src/util/crypto_ecc_setup.c:350 7950#: src/util/crypto_ecc_setup.c:305 src/util/crypto_ecc_setup.c:352
8117#, c-format 7951#, c-format
8118msgid "Could not acquire lock on file `%s': %s...\n" 7952msgid "Could not acquire lock on file `%s': %s...\n"
8119msgstr "" 7953msgstr ""
8120 7954
8121#: src/util/crypto_ecc_setup.c:127 src/util/crypto_ecc_setup.c:309 7955#: src/util/crypto_ecc_setup.c:129 src/util/crypto_ecc_setup.c:311
8122msgid "Creating a new private key. This may take a while.\n" 7956msgid "Creating a new private key. This may take a while.\n"
8123msgstr "" 7957msgstr ""
8124 7958
8125#: src/util/crypto_ecc_setup.c:164 src/util/crypto_ecc_setup.c:354 7959#: src/util/crypto_ecc_setup.c:166 src/util/crypto_ecc_setup.c:356
8126msgid "This may be ok if someone is currently generating a private key.\n" 7960msgid "This may be ok if someone is currently generating a private key.\n"
8127msgstr "" 7961msgstr ""
8128 7962
8129#: src/util/crypto_ecc_setup.c:194 src/util/crypto_ecc_setup.c:396 7963#: src/util/crypto_ecc_setup.c:196 src/util/crypto_ecc_setup.c:398
8130#, c-format 7964#, c-format
8131msgid "" 7965msgid ""
8132"When trying to read key file `%s' I found %u bytes but I need at least %u.\n" 7966"When trying to read key file `%s' I found %u bytes but I need at least %u.\n"
8133msgstr "" 7967msgstr ""
8134 7968
8135#: src/util/crypto_ecc_setup.c:199 src/util/crypto_ecc_setup.c:400 7969#: src/util/crypto_ecc_setup.c:201 src/util/crypto_ecc_setup.c:402
8136msgid "This may be ok if someone is currently generating a key.\n" 7970msgid "This may be ok if someone is currently generating a key.\n"
8137msgstr "" 7971msgstr ""
8138 7972
8139#: src/util/crypto_ecc_setup.c:466 7973#: src/util/crypto_ecc_setup.c:468
8140msgid "Could not load peer's private key\n" 7974msgid "Could not load peer's private key\n"
8141msgstr "" 7975msgstr ""
8142 7976
8143#: src/util/crypto_random.c:304 7977#: src/util/crypto_random.c:306
8144#, c-format 7978#, c-format
8145msgid "libgcrypt has not the expected version (version %s is required).\n" 7979msgid "libgcrypt has not the expected version (version %s is required).\n"
8146msgstr "" 7980msgstr ""
8147 7981
8148#: src/util/crypto_rsa.c:848 7982#: src/util/crypto_rsa.c:850
8149#, c-format 7983#, c-format
8150msgid "RSA signing failed at %s:%d: %s\n" 7984msgid "RSA signing failed at %s:%d: %s\n"
8151msgstr "" 7985msgstr ""
8152 7986
8153#: src/util/crypto_rsa.c:1187 7987#: src/util/crypto_rsa.c:1189
8154#, c-format 7988#, c-format
8155msgid "RSA signature verification failed at %s:%d: %s\n" 7989msgid "RSA signature verification failed at %s:%d: %s\n"
8156msgstr "" 7990msgstr ""
8157 7991
8158#: src/util/disk.c:1251 7992#: src/util/disk.c:1255
8159#, c-format 7993#, c-format
8160msgid "Expected `%s' to be a directory!\n" 7994msgid "Expected `%s' to be a directory!\n"
8161msgstr "" 7995msgstr ""
8162 7996
8163#: src/util/dnsparser.c:250 7997#: src/util/dnsparser.c:264
8164#, c-format 7998#, c-format
8165msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n" 7999msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
8166msgstr "" 8000msgstr ""
8167 8001
8168#: src/util/dnsparser.c:940 8002#: src/util/dnsparser.c:954
8169#, c-format 8003#, c-format
8170msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n" 8004msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
8171msgstr "" 8005msgstr ""
8172 8006
8173#: src/util/dnsstub.c:229 8007#: src/util/dnsstub.c:231
8174#, c-format 8008#, c-format
8175msgid "Could not bind to any port: %s\n" 8009msgid "Could not bind to any port: %s\n"
8176msgstr "" 8010msgstr ""
8177 8011
8178#: src/util/dnsstub.c:360 8012#: src/util/dnsstub.c:362
8179#, c-format 8013#, c-format
8180msgid "Received DNS response that is too small (%u bytes)" 8014msgid "Received DNS response that is too small (%u bytes)"
8181msgstr "" 8015msgstr ""
8182 8016
8183#: src/util/dnsstub.c:507 8017#: src/util/dnsstub.c:509
8184#, fuzzy, c-format 8018#, fuzzy, c-format
8185msgid "Failed to send DNS request to %s: %s\n" 8019msgid "Failed to send DNS request to %s: %s\n"
8186msgstr "Résolution de « %s » échouée : %s\n" 8020msgstr "Résolution de « %s » échouée : %s\n"
8187 8021
8188#: src/util/dnsstub.c:513 8022#: src/util/dnsstub.c:515
8189#, c-format 8023#, c-format
8190msgid "Sent DNS request to %s\n" 8024msgid "Sent DNS request to %s\n"
8191msgstr "" 8025msgstr ""
@@ -8255,139 +8089,139 @@ msgstr ""
8255msgid "Missing mandatory option `%s'.\n" 8089msgid "Missing mandatory option `%s'.\n"
8256msgstr "" 8090msgstr ""
8257 8091
8258#: src/util/getopt_helpers.c:68 8092#: src/util/getopt_helpers.c:70
8259msgid "print the version number" 8093msgid "print the version number"
8260msgstr "" 8094msgstr ""
8261 8095
8262#: src/util/getopt_helpers.c:113 8096#: src/util/getopt_helpers.c:116
8263#, c-format 8097#, c-format
8264msgid "" 8098msgid ""
8265"Arguments mandatory for long options are also mandatory for short options.\n" 8099"Arguments mandatory for long options are also mandatory for short options.\n"
8266msgstr "" 8100msgstr ""
8267 8101
8268#: src/util/getopt_helpers.c:201 8102#: src/util/getopt_helpers.c:204
8269msgid "print this help" 8103msgid "print this help"
8270msgstr "" 8104msgstr ""
8271 8105
8272#: src/util/getopt_helpers.c:279 8106#: src/util/getopt_helpers.c:282
8273msgid "be verbose" 8107msgid "be verbose"
8274msgstr "" 8108msgstr ""
8275 8109
8276#: src/util/getopt_helpers.c:420 8110#: src/util/getopt_helpers.c:423
8277msgid "configure logging to use LOGLEVEL" 8111msgid "configure logging to use LOGLEVEL"
8278msgstr "" 8112msgstr ""
8279 8113
8280#: src/util/getopt_helpers.c:500 8114#: src/util/getopt_helpers.c:503
8281msgid "configure logging to write logs to FILENAME" 8115msgid "configure logging to write logs to FILENAME"
8282msgstr "" 8116msgstr ""
8283 8117
8284#: src/util/getopt_helpers.c:522 8118#: src/util/getopt_helpers.c:525
8285#, fuzzy 8119#, fuzzy
8286msgid "use configuration file FILENAME" 8120msgid "use configuration file FILENAME"
8287msgstr "fornat invalide : « %s »\n" 8121msgstr "fornat invalide : « %s »\n"
8288 8122
8289#: src/util/getopt_helpers.c:559 src/util/getopt_helpers.c:763 8123#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
8290#: src/util/getopt_helpers.c:830 8124#: src/util/getopt_helpers.c:839
8291#, c-format 8125#, c-format
8292msgid "You must pass a number to the `%s' option.\n" 8126msgid "You must pass a number to the `%s' option.\n"
8293msgstr "" 8127msgstr ""
8294 8128
8295#: src/util/getopt_helpers.c:624 8129#: src/util/getopt_helpers.c:629
8296#, c-format 8130#, c-format
8297msgid "You must pass relative time to the `%s' option.\n" 8131msgid "You must pass relative time to the `%s' option.\n"
8298msgstr "" 8132msgstr ""
8299 8133
8300#: src/util/getopt_helpers.c:690 8134#: src/util/getopt_helpers.c:695
8301#, c-format 8135#, c-format
8302msgid "You must pass absolute time to the `%s' option.\n" 8136msgid "You must pass absolute time to the `%s' option.\n"
8303msgstr "" 8137msgstr ""
8304 8138
8305#: src/util/getopt_helpers.c:754 8139#: src/util/getopt_helpers.c:760
8306#, c-format 8140#, c-format
8307msgid "Your input for the '%s' option has to be a non negative number \n" 8141msgid "Your input for the '%s' option has to be a non negative number \n"
8308msgstr "" 8142msgstr ""
8309 8143
8310#: src/util/getopt_helpers.c:837 8144#: src/util/getopt_helpers.c:846
8311#, c-format 8145#, c-format
8312msgid "You must pass a number below %u to the `%s' option.\n" 8146msgid "You must pass a number below %u to the `%s' option.\n"
8313msgstr "" 8147msgstr ""
8314 8148
8315#: src/util/getopt_helpers.c:923 8149#: src/util/getopt_helpers.c:932
8316#, c-format 8150#, c-format
8317msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n" 8151msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
8318msgstr "" 8152msgstr ""
8319 8153
8320#: src/util/gnunet-config.c:157 8154#: src/util/gnunet-config.c:160
8321#, fuzzy, c-format 8155#, fuzzy, c-format
8322msgid "failed to load configuration defaults" 8156msgid "failed to load configuration defaults"
8323msgstr "fornat invalide : « %s »\n" 8157msgstr "fornat invalide : « %s »\n"
8324 8158
8325#: src/util/gnunet-config.c:170 8159#: src/util/gnunet-config.c:173
8326#, c-format 8160#, c-format
8327msgid "--section argument is required\n" 8161msgid "%s or %s argument is required\n"
8328msgstr "" 8162msgstr ""
8329 8163
8330#: src/util/gnunet-config.c:173 8164#: src/util/gnunet-config.c:181
8331#, c-format 8165#, c-format
8332msgid "The following sections are available:\n" 8166msgid "The following sections are available:\n"
8333msgstr "" 8167msgstr ""
8334 8168
8335#: src/util/gnunet-config.c:224 8169#: src/util/gnunet-config.c:232
8336#, c-format 8170#, c-format
8337msgid "--option argument required to set value\n" 8171msgid "--option argument required to set value\n"
8338msgstr "" 8172msgstr ""
8339 8173
8340#: src/util/gnunet-config.c:263 8174#: src/util/gnunet-config.c:286
8341msgid "obtain option of value as a filename (with $-expansion)" 8175msgid "obtain option of value as a filename (with $-expansion)"
8342msgstr "" 8176msgstr ""
8343 8177
8344#: src/util/gnunet-config.c:268 8178#: src/util/gnunet-config.c:291
8345msgid "name of the section to access" 8179msgid "name of the section to access"
8346msgstr "" 8180msgstr ""
8347 8181
8348#: src/util/gnunet-config.c:273 8182#: src/util/gnunet-config.c:296
8349msgid "name of the option to access" 8183msgid "name of the option to access"
8350msgstr "" 8184msgstr ""
8351 8185
8352#: src/util/gnunet-config.c:278 8186#: src/util/gnunet-config.c:301
8353msgid "value to set" 8187msgid "value to set"
8354msgstr "" 8188msgstr ""
8355 8189
8356#: src/util/gnunet-config.c:282 8190#: src/util/gnunet-config.c:305
8357msgid "print available configuration sections" 8191msgid "print available configuration sections"
8358msgstr "" 8192msgstr ""
8359 8193
8360#: src/util/gnunet-config.c:286 8194#: src/util/gnunet-config.c:309
8361msgid "write configuration file that only contains delta to defaults" 8195msgid "write configuration file that only contains delta to defaults"
8362msgstr "" 8196msgstr ""
8363 8197
8364#: src/util/gnunet-config.c:299 8198#: src/util/gnunet-config.c:322
8365msgid "Manipulate GNUnet configuration files" 8199msgid "Manipulate GNUnet configuration files"
8366msgstr "" 8200msgstr ""
8367 8201
8368#: src/util/gnunet-ecc.c:92 8202#: src/util/gnunet-ecc.c:94
8369#, c-format 8203#, c-format
8370msgid "Failed to open `%s': %s\n" 8204msgid "Failed to open `%s': %s\n"
8371msgstr "" 8205msgstr ""
8372 8206
8373#: src/util/gnunet-ecc.c:128 8207#: src/util/gnunet-ecc.c:130
8374#, c-format 8208#, c-format
8375msgid "Generating %u keys like %s, please wait" 8209msgid "Generating %u keys like %s, please wait"
8376msgstr "" 8210msgstr ""
8377 8211
8378#: src/util/gnunet-ecc.c:141 8212#: src/util/gnunet-ecc.c:143
8379#, c-format 8213#, c-format
8380msgid "Generating %u keys, please wait" 8214msgid "Generating %u keys, please wait"
8381msgstr "" 8215msgstr ""
8382 8216
8383#: src/util/gnunet-ecc.c:182 8217#: src/util/gnunet-ecc.c:184
8384#, c-format 8218#, c-format
8385msgid "" 8219msgid ""
8386"\n" 8220"\n"
8387"Failed to write to `%s': %s\n" 8221"Failed to write to `%s': %s\n"
8388msgstr "" 8222msgstr ""
8389 8223
8390#: src/util/gnunet-ecc.c:192 8224#: src/util/gnunet-ecc.c:194
8391#, c-format 8225#, c-format
8392msgid "" 8226msgid ""
8393"\n" 8227"\n"
@@ -8396,94 +8230,94 @@ msgstr ""
8396"\n" 8230"\n"
8397"Terminé !\n" 8231"Terminé !\n"
8398 8232
8399#: src/util/gnunet-ecc.c:195 8233#: src/util/gnunet-ecc.c:197
8400#, c-format 8234#, c-format
8401msgid "" 8235msgid ""
8402"\n" 8236"\n"
8403"Error, %u keys not generated\n" 8237"Error, %u keys not generated\n"
8404msgstr "" 8238msgstr ""
8405 8239
8406#: src/util/gnunet-ecc.c:288 8240#: src/util/gnunet-ecc.c:290
8407#, c-format 8241#, c-format
8408msgid "Hostkeys file `%s' not found\n" 8242msgid "Hostkeys file `%s' not found\n"
8409msgstr "" 8243msgstr ""
8410 8244
8411#: src/util/gnunet-ecc.c:303 8245#: src/util/gnunet-ecc.c:305
8412#, c-format 8246#, c-format
8413msgid "Hostkeys file `%s' is empty\n" 8247msgid "Hostkeys file `%s' is empty\n"
8414msgstr "" 8248msgstr ""
8415 8249
8416#: src/util/gnunet-ecc.c:332 8250#: src/util/gnunet-ecc.c:334
8417#, c-format 8251#, c-format
8418msgid "Could not read hostkey file: %s\n" 8252msgid "Could not read hostkey file: %s\n"
8419msgstr "" 8253msgstr ""
8420 8254
8421#: src/util/gnunet-ecc.c:389 8255#: src/util/gnunet-ecc.c:391
8422msgid "No hostkey file specified on command line\n" 8256msgid "No hostkey file specified on command line\n"
8423msgstr "" 8257msgstr ""
8424 8258
8425#: src/util/gnunet-ecc.c:454 8259#: src/util/gnunet-ecc.c:456
8426msgid "list keys included in a file (for testing)" 8260msgid "list keys included in a file (for testing)"
8427msgstr "" 8261msgstr ""
8428 8262
8429#: src/util/gnunet-ecc.c:459 8263#: src/util/gnunet-ecc.c:461
8430msgid "number of keys to list included in a file (for testing)" 8264msgid "number of keys to list included in a file (for testing)"
8431msgstr "" 8265msgstr ""
8432 8266
8433#: src/util/gnunet-ecc.c:464 8267#: src/util/gnunet-ecc.c:466
8434msgid "create COUNT public-private key pairs (for testing)" 8268msgid "create COUNT public-private key pairs (for testing)"
8435msgstr "" 8269msgstr ""
8436 8270
8437#: src/util/gnunet-ecc.c:468 8271#: src/util/gnunet-ecc.c:470
8438msgid "print the public key in ASCII format" 8272msgid "print the public key in ASCII format"
8439msgstr "" 8273msgstr ""
8440 8274
8441#: src/util/gnunet-ecc.c:472 8275#: src/util/gnunet-ecc.c:474
8442msgid "print the private key in ASCII format" 8276msgid "print the private key in ASCII format"
8443msgstr "" 8277msgstr ""
8444 8278
8445#: src/util/gnunet-ecc.c:476 8279#: src/util/gnunet-ecc.c:478
8446msgid "print the public key in HEX format" 8280msgid "print the public key in HEX format"
8447msgstr "" 8281msgstr ""
8448 8282
8449#: src/util/gnunet-ecc.c:480 8283#: src/util/gnunet-ecc.c:482
8450msgid "print examples of ECC operations (used for compatibility testing)" 8284msgid "print examples of ECC operations (used for compatibility testing)"
8451msgstr "" 8285msgstr ""
8452 8286
8453#: src/util/gnunet-ecc.c:496 8287#: src/util/gnunet-ecc.c:498
8454msgid "Manipulate GNUnet private ECC key files" 8288msgid "Manipulate GNUnet private ECC key files"
8455msgstr "" 8289msgstr ""
8456 8290
8457#: src/util/gnunet-resolver.c:166 8291#: src/util/gnunet-resolver.c:168
8458msgid "perform a reverse lookup" 8292msgid "perform a reverse lookup"
8459msgstr "" 8293msgstr ""
8460 8294
8461#: src/util/gnunet-resolver.c:177 8295#: src/util/gnunet-resolver.c:179
8462msgid "Use build-in GNUnet stub resolver" 8296msgid "Use build-in GNUnet stub resolver"
8463msgstr "" 8297msgstr ""
8464 8298
8465#: src/util/gnunet-scrypt.c:240 8299#: src/util/gnunet-scrypt.c:242
8466#, c-format 8300#, c-format
8467msgid "Loading hostkey from `%s' failed.\n" 8301msgid "Loading hostkey from `%s' failed.\n"
8468msgstr "" 8302msgstr ""
8469 8303
8470#: src/util/gnunet-scrypt.c:315 8304#: src/util/gnunet-scrypt.c:317
8471msgid "number of bits to require for the proof of work" 8305msgid "number of bits to require for the proof of work"
8472msgstr "" 8306msgstr ""
8473 8307
8474#: src/util/gnunet-scrypt.c:320 8308#: src/util/gnunet-scrypt.c:322
8475msgid "file with private key, otherwise default is used" 8309msgid "file with private key, otherwise default is used"
8476msgstr "" 8310msgstr ""
8477 8311
8478#: src/util/gnunet-scrypt.c:325 8312#: src/util/gnunet-scrypt.c:327
8479msgid "file with proof of work, otherwise default is used" 8313msgid "file with proof of work, otherwise default is used"
8480msgstr "" 8314msgstr ""
8481 8315
8482#: src/util/gnunet-scrypt.c:330 8316#: src/util/gnunet-scrypt.c:332
8483msgid "time to wait between calculations" 8317msgid "time to wait between calculations"
8484msgstr "" 8318msgstr ""
8485 8319
8486#: src/util/gnunet-scrypt.c:343 8320#: src/util/gnunet-scrypt.c:345
8487msgid "Manipulate GNUnet proof of work files" 8321msgid "Manipulate GNUnet proof of work files"
8488msgstr "" 8322msgstr ""
8489 8323
@@ -8491,472 +8325,526 @@ msgstr ""
8491msgid "No DNS server available. DNS resolution will not be possible.\n" 8325msgid "No DNS server available. DNS resolution will not be possible.\n"
8492msgstr "" 8326msgstr ""
8493 8327
8494#: src/util/gnunet-uri.c:83 8328#: src/util/gnunet-uri.c:85
8495#, c-format 8329#, c-format
8496msgid "No URI specified on command line\n" 8330msgid "No URI specified on command line\n"
8497msgstr "" 8331msgstr ""
8498 8332
8499#: src/util/gnunet-uri.c:89 8333#: src/util/gnunet-uri.c:91
8500#, c-format 8334#, c-format
8501msgid "Invalid URI: does not start with `%s'\n" 8335msgid "Invalid URI: does not start with `%s'\n"
8502msgstr "" 8336msgstr ""
8503 8337
8504#: src/util/gnunet-uri.c:96 8338#: src/util/gnunet-uri.c:98
8505#, c-format 8339#, c-format
8506msgid "Invalid URI: fails to specify subsystem\n" 8340msgid "Invalid URI: fails to specify subsystem\n"
8507msgstr "" 8341msgstr ""
8508 8342
8509#: src/util/gnunet-uri.c:106 8343#: src/util/gnunet-uri.c:108
8510#, c-format 8344#, c-format
8511msgid "No handler known for subsystem `%s'\n" 8345msgid "No handler known for subsystem `%s'\n"
8512msgstr "" 8346msgstr ""
8513 8347
8514#: src/util/gnunet-uri.c:168 8348#: src/util/gnunet-uri.c:170
8515msgid "Perform default-actions for GNUnet URIs" 8349msgid "Perform default-actions for GNUnet URIs"
8516msgstr "" 8350msgstr ""
8517 8351
8518#: src/util/helper.c:333 8352#: src/util/helper.c:335
8519#, c-format 8353#, c-format
8520msgid "Error reading from `%s': %s\n" 8354msgid "Error reading from `%s': %s\n"
8521msgstr "" 8355msgstr ""
8522 8356
8523#: src/util/helper.c:384 8357#: src/util/helper.c:386
8524#, c-format 8358#, c-format
8525msgid "Failed to parse inbound message from helper `%s'\n" 8359msgid "Failed to parse inbound message from helper `%s'\n"
8526msgstr "" 8360msgstr ""
8527 8361
8528#: src/util/helper.c:604 8362#: src/util/helper.c:606
8529#, c-format 8363#, c-format
8530msgid "Error writing to `%s': %s\n" 8364msgid "Error writing to `%s': %s\n"
8531msgstr "" 8365msgstr ""
8532 8366
8533#: src/util/network.c:134 8367#: src/util/network.c:136
8534#, c-format 8368#, c-format
8535msgid "Unable to shorten unix path `%s' while keeping name unique\n" 8369msgid "Unable to shorten unix path `%s' while keeping name unique\n"
8536msgstr "" 8370msgstr ""
8537 8371
8538#: src/util/network.c:1793 src/util/network.c:1977 8372#: src/util/network.c:1794 src/util/network.c:1978
8539#, c-format 8373#, c-format
8540msgid "" 8374msgid ""
8541"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n" 8375"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
8542msgstr "" 8376msgstr ""
8543 8377
8544#: src/util/os_installation.c:507 8378#: src/util/os_installation.c:509
8545#, c-format 8379#, c-format
8546msgid "" 8380msgid ""
8547"Could not determine installation path for %s. Set `%s' environment " 8381"Could not determine installation path for %s. Set `%s' environment "
8548"variable.\n" 8382"variable.\n"
8549msgstr "" 8383msgstr ""
8550 8384
8551#: src/util/os_installation.c:879 8385#: src/util/os_installation.c:881
8552#, c-format 8386#, c-format
8553msgid "Could not find binary `%s' in PATH!\n" 8387msgid "Could not find binary `%s' in PATH!\n"
8554msgstr "" 8388msgstr ""
8555 8389
8556#: src/util/os_installation.c:920 8390#: src/util/os_installation.c:922
8557#, c-format 8391#, c-format
8558msgid "Binary `%s' exists, but is not SUID\n" 8392msgid "Binary `%s' exists, but is not SUID\n"
8559msgstr "" 8393msgstr ""
8560 8394
8561#: src/util/os_installation.c:951 8395#: src/util/os_installation.c:953
8562#, c-format 8396#, c-format
8563msgid "CreateProcess failed for binary %s (%d).\n" 8397msgid "CreateProcess failed for binary %s (%d).\n"
8564msgstr "" 8398msgstr ""
8565 8399
8566#: src/util/os_installation.c:961 8400#: src/util/os_installation.c:963
8567#, c-format 8401#, c-format
8568msgid "GetExitCodeProcess failed for binary %s (%d).\n" 8402msgid "GetExitCodeProcess failed for binary %s (%d).\n"
8569msgstr "" 8403msgstr ""
8570 8404
8571#: src/util/plugin.c:84 8405#: src/util/plugin.c:86
8572#, c-format 8406#, c-format
8573msgid "Initialization of plugin mechanism failed: %s!\n" 8407msgid "Initialization of plugin mechanism failed: %s!\n"
8574msgstr "" 8408msgstr ""
8575 8409
8576#: src/util/plugin.c:149 8410#: src/util/plugin.c:151
8577#, c-format 8411#, c-format
8578msgid "`%s' failed to resolve method '%s' with error: %s\n" 8412msgid "`%s' failed to resolve method '%s' with error: %s\n"
8579msgstr "" 8413msgstr ""
8580 8414
8581#: src/util/plugin.c:224 8415#: src/util/plugin.c:226
8582#, c-format 8416#, c-format
8583msgid "`%s' failed for library `%s' with error: %s\n" 8417msgid "`%s' failed for library `%s' with error: %s\n"
8584msgstr "" 8418msgstr ""
8585 8419
8586#: src/util/plugin.c:383 8420#: src/util/plugin.c:385
8587msgid "Could not determine plugin installation path.\n" 8421msgid "Could not determine plugin installation path.\n"
8588msgstr "" 8422msgstr ""
8589 8423
8590#: src/util/regex.c:132 8424#: src/util/program.c:283
8425#, fuzzy, c-format
8426msgid "Unreadable or malformed configuration file `%s', exit ...\n"
8427msgstr "fornat invalide : « %s »\n"
8428
8429#: src/util/program.c:301
8430#, c-format
8431msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
8432msgstr ""
8433
8434#: src/util/program.c:318
8435#, fuzzy
8436msgid "Unreadable or malformed configuration, exit ...\n"
8437msgstr "fornat invalide : « %s »\n"
8438
8439#: src/util/regex.c:134
8591#, c-format 8440#, c-format
8592msgid "Bad mask: %d\n" 8441msgid "Bad mask: %d\n"
8593msgstr "Masque érroné : %d\n" 8442msgstr "Masque érroné : %d\n"
8594 8443
8595#: src/util/resolver_api.c:216 8444#: src/util/resolver_api.c:218
8596#, c-format 8445#, c-format
8597msgid "" 8446msgid ""
8598"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n" 8447"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n"
8599msgstr "" 8448msgstr ""
8600 8449
8601#: src/util/resolver_api.c:237 8450#: src/util/resolver_api.c:239
8602#, c-format 8451#, c-format
8603msgid "" 8452msgid ""
8604"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS " 8453"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS "
8605"resolution will be unavailable.\n" 8454"resolution will be unavailable.\n"
8606msgstr "" 8455msgstr ""
8607 8456
8608#: src/util/resolver_api.c:873 8457#: src/util/resolver_api.c:875
8609#, c-format 8458#, c-format
8610msgid "Timeout trying to resolve hostname `%s'.\n" 8459msgid "Timeout trying to resolve hostname `%s'.\n"
8611msgstr "" 8460msgstr ""
8612 8461
8613#: src/util/resolver_api.c:886 8462#: src/util/resolver_api.c:888
8614#, c-format 8463#, c-format
8615msgid "Timeout trying to resolve IP address `%s'.\n" 8464msgid "Timeout trying to resolve IP address `%s'.\n"
8616msgstr "" 8465msgstr ""
8617 8466
8618#: src/util/resolver_api.c:1071 8467#: src/util/resolver_api.c:1073
8619msgid "Resolver not configured correctly.\n" 8468msgid "Resolver not configured correctly.\n"
8620msgstr "" 8469msgstr ""
8621 8470
8622#: src/util/resolver_api.c:1158 src/util/resolver_api.c:1181 8471#: src/util/resolver_api.c:1160 src/util/resolver_api.c:1183
8623#: src/util/resolver_api.c:1195 8472#: src/util/resolver_api.c:1197
8624#, fuzzy, c-format 8473#, fuzzy, c-format
8625msgid "Could not resolve our FQDN: %s\n" 8474msgid "Could not resolve our FQDN: %s\n"
8626msgstr "Résolution de « %s » échouée : %s\n" 8475msgstr "Résolution de « %s » échouée : %s\n"
8627 8476
8628#: src/util/service.c:1303 8477#: src/util/service.c:674
8629msgid ""
8630"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8631msgstr ""
8632
8633#: src/util/service.c:2123
8634#, c-format 8478#, c-format
8635msgid "" 8479msgid ""
8636"Processing code for message of type %u did not call " 8480"Processing code for message of type %u did not call "
8637"`GNUNET_SERVICE_client_continue' after %s\n" 8481"`GNUNET_SERVICE_client_continue' after %s\n"
8638msgstr "" 8482msgstr ""
8639 8483
8640#: src/util/signal.c:87 8484#: src/util/service.c:1862
8485msgid ""
8486"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8487msgstr ""
8488
8489#: src/util/signal.c:89
8641#, c-format 8490#, c-format
8642msgid "signal (%d, %p) returned %d.\n" 8491msgid "signal (%d, %p) returned %d.\n"
8643msgstr "" 8492msgstr ""
8644 8493
8645#: src/util/socks.c:595 8494#: src/util/socks.c:597
8646#, c-format 8495#, c-format
8647msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n" 8496msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
8648msgstr "" 8497msgstr ""
8649 8498
8650#: src/util/socks.c:614 8499#: src/util/socks.c:616
8651#, c-format 8500#, c-format
8652msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n" 8501msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
8653msgstr "" 8502msgstr ""
8654 8503
8655#: src/util/strings.c:174 8504#: src/util/strings.c:176
8656msgid "b" 8505msgid "b"
8657msgstr "o" 8506msgstr "o"
8658 8507
8659#: src/util/strings.c:471 8508#: src/util/strings.c:475
8660#, c-format 8509#, c-format
8661msgid "Character sets requested were `%s'->`%s'\n" 8510msgid "Character sets requested were `%s'->`%s'\n"
8662msgstr "" 8511msgstr ""
8663 8512
8664#: src/util/strings.c:598 8513#: src/util/strings.c:602
8665msgid "Failed to expand `$HOME': environment variable `HOME' not set" 8514msgid "Failed to expand `$HOME': environment variable `HOME' not set"
8666msgstr "" 8515msgstr ""
8667 8516
8668#: src/util/strings.c:702 8517#: src/util/strings.c:706
8669msgid "µs" 8518msgid "µs"
8670msgstr "µs" 8519msgstr "µs"
8671 8520
8672#: src/util/strings.c:706 8521#: src/util/strings.c:710
8673msgid "forever" 8522msgid "forever"
8674msgstr "perpetuel" 8523msgstr "perpetuel"
8675 8524
8676#: src/util/strings.c:708 8525#: src/util/strings.c:712
8677msgid "0 ms" 8526msgid "0 ms"
8678msgstr "0 ms" 8527msgstr "0 ms"
8679 8528
8680#: src/util/strings.c:714 8529#: src/util/strings.c:718
8681msgid "ms" 8530msgid "ms"
8682msgstr "ms" 8531msgstr "ms"
8683 8532
8684#: src/util/strings.c:720 8533#: src/util/strings.c:724
8685msgid "s" 8534msgid "s"
8686msgstr "s" 8535msgstr "s"
8687 8536
8688#: src/util/strings.c:726 8537#: src/util/strings.c:730
8689msgid "m" 8538msgid "m"
8690msgstr "m" 8539msgstr "m"
8691 8540
8692#: src/util/strings.c:732 8541#: src/util/strings.c:736
8693msgid "h" 8542msgid "h"
8694msgstr "h" 8543msgstr "h"
8695 8544
8696#: src/util/strings.c:739 8545#: src/util/strings.c:743
8697msgid "day" 8546msgid "day"
8698msgstr "jour" 8547msgstr "jour"
8699 8548
8700#: src/util/strings.c:741 8549#: src/util/strings.c:745
8701msgid "days" 8550msgid "days"
8702msgstr "jours" 8551msgstr "jours"
8703 8552
8704#: src/util/strings.c:770 8553#: src/util/strings.c:774
8705msgid "end of time" 8554msgid "end of time"
8706msgstr "fin du temps" 8555msgstr "fin du temps"
8707 8556
8708#: src/util/strings.c:1272 8557#: src/util/strings.c:1277
8709msgid "IPv6 address did not start with `['\n" 8558msgid "IPv6 address did not start with `['\n"
8710msgstr "" 8559msgstr ""
8711 8560
8712#: src/util/strings.c:1280 8561#: src/util/strings.c:1285
8713msgid "IPv6 address did contain ':' to separate port number\n" 8562msgid "IPv6 address did contain ':' to separate port number\n"
8714msgstr "" 8563msgstr ""
8715 8564
8716#: src/util/strings.c:1286 8565#: src/util/strings.c:1291
8717msgid "IPv6 address did contain ']' before ':' to separate port number\n" 8566msgid "IPv6 address did contain ']' before ':' to separate port number\n"
8718msgstr "" 8567msgstr ""
8719 8568
8720#: src/util/strings.c:1293 8569#: src/util/strings.c:1301
8721msgid "IPv6 address did contain a valid port number after the last ':'\n" 8570msgid "IPv6 address did contain a valid port number after the last ':'\n"
8722msgstr "" 8571msgstr ""
8723 8572
8724#: src/util/strings.c:1302 8573#: src/util/strings.c:1310
8725#, c-format 8574#, c-format
8726msgid "Invalid IPv6 address `%s': %s\n" 8575msgid "Invalid IPv6 address `%s': %s\n"
8727msgstr "" 8576msgstr ""
8728 8577
8729#: src/util/strings.c:1574 src/util/strings.c:1590 8578#: src/util/strings.c:1586 src/util/strings.c:1602
8730msgid "Port not in range\n" 8579msgid "Port not in range\n"
8731msgstr "" 8580msgstr ""
8732 8581
8733#: src/util/strings.c:1599 8582#: src/util/strings.c:1611
8734#, c-format 8583#, c-format
8735msgid "Malformed port policy `%s'\n" 8584msgid "Malformed port policy `%s'\n"
8736msgstr "" 8585msgstr ""
8737 8586
8738#: src/util/strings.c:1682 src/util/strings.c:1713 src/util/strings.c:1761 8587#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
8739#: src/util/strings.c:1782 8588#: src/util/strings.c:1798
8740#, c-format 8589#, c-format
8741msgid "Invalid format for IP: `%s'\n" 8590msgid "Invalid format for IP: `%s'\n"
8742msgstr "" 8591msgstr ""
8743 8592
8744#: src/util/strings.c:1739 8593#: src/util/strings.c:1754
8745#, c-format 8594#, c-format
8746msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)." 8595msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
8747msgstr "" 8596msgstr ""
8748 8597
8749#: src/util/strings.c:1791 8598#: src/util/strings.c:1807
8750#, c-format 8599#, c-format
8751msgid "Invalid format: `%s'\n" 8600msgid "Invalid format: `%s'\n"
8752msgstr "fornat invalide : « %s »\n" 8601msgstr "fornat invalide : « %s »\n"
8753 8602
8754#: src/util/strings.c:1843 8603#: src/util/strings.c:1860
8755#, c-format 8604#, c-format
8756msgid "Invalid network notation (does not end with ';': `%s')\n" 8605msgid "Invalid network notation (does not end with ';': `%s')\n"
8757msgstr "" 8606msgstr ""
8758 8607
8759#: src/util/strings.c:1893 8608#: src/util/strings.c:1914
8760#, c-format 8609#, c-format
8761msgid "Wrong format `%s' for netmask\n" 8610msgid "Wrong format `%s' for netmask\n"
8762msgstr "" 8611msgstr ""
8763 8612
8764#: src/util/strings.c:1924 8613#: src/util/strings.c:1945
8765#, c-format 8614#, c-format
8766msgid "Wrong format `%s' for network\n" 8615msgid "Wrong format `%s' for network\n"
8767msgstr "" 8616msgstr ""
8768 8617
8769#: src/vpn/gnunet-service-vpn.c:538 src/vpn/gnunet-service-vpn.c:1805 8618#: src/util/time.c:828 src/util/time.c:860
8619#, c-format
8620msgid "Failed to map `%s', cannot assure monotonic time!\n"
8621msgstr ""
8622
8623#: src/util/time.c:866
8624#, c-format
8625msgid ""
8626"Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
8627msgstr ""
8628
8629#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
8770msgid "# Active channels" 8630msgid "# Active channels"
8771msgstr "# Canaux actifs" 8631msgstr "# Canaux actifs"
8772 8632
8773#: src/vpn/gnunet-service-vpn.c:597 8633#: src/vpn/gnunet-service-vpn.c:599
8774msgid "# Messages dropped in cadet queue (overflow)" 8634msgid "# Messages dropped in cadet queue (overflow)"
8775msgstr "" 8635msgstr ""
8776 8636
8777#: src/vpn/gnunet-service-vpn.c:751 8637#: src/vpn/gnunet-service-vpn.c:753
8778msgid "# ICMP packets received from cadet" 8638msgid "# ICMP packets received from cadet"
8779msgstr "" 8639msgstr ""
8780 8640
8781#: src/vpn/gnunet-service-vpn.c:1094 8641#: src/vpn/gnunet-service-vpn.c:1096
8782msgid "# UDP packets received from cadet" 8642msgid "# UDP packets received from cadet"
8783msgstr "" 8643msgstr ""
8784 8644
8785#: src/vpn/gnunet-service-vpn.c:1253 8645#: src/vpn/gnunet-service-vpn.c:1255
8786msgid "# TCP packets received from cadet" 8646msgid "# TCP packets received from cadet"
8787msgstr "" 8647msgstr ""
8788 8648
8789#: src/vpn/gnunet-service-vpn.c:1465 8649#: src/vpn/gnunet-service-vpn.c:1467
8790msgid "# Cadet channels created" 8650msgid "# Cadet channels created"
8791msgstr "" 8651msgstr ""
8792 8652
8793#: src/vpn/gnunet-service-vpn.c:1685 8653#: src/vpn/gnunet-service-vpn.c:1687
8794#, c-format 8654#, c-format
8795msgid "Protocol %u not supported, dropping\n" 8655msgid "Protocol %u not supported, dropping\n"
8796msgstr "" 8656msgstr ""
8797 8657
8798#: src/vpn/gnunet-service-vpn.c:1824 8658#: src/vpn/gnunet-service-vpn.c:1826
8799msgid "# Packets dropped (channel not yet online)" 8659msgid "# Packets dropped (channel not yet online)"
8800msgstr "" 8660msgstr ""
8801 8661
8802#: src/vpn/gnunet-service-vpn.c:2004 8662#: src/vpn/gnunet-service-vpn.c:2006
8803msgid "# ICMPv4 packets dropped (not allowed)" 8663msgid "# ICMPv4 packets dropped (not allowed)"
8804msgstr "" 8664msgstr ""
8805 8665
8806#: src/vpn/gnunet-service-vpn.c:2025 8666#: src/vpn/gnunet-service-vpn.c:2027
8807msgid "# ICMPv6 packets dropped (not allowed)" 8667msgid "# ICMPv6 packets dropped (not allowed)"
8808msgstr "" 8668msgstr ""
8809 8669
8810#: src/vpn/gnunet-service-vpn.c:2233 8670#: src/vpn/gnunet-service-vpn.c:2235
8811msgid "# Packets received from TUN interface" 8671msgid "# Packets received from TUN interface"
8812msgstr "" 8672msgstr ""
8813 8673
8814#: src/vpn/gnunet-service-vpn.c:2266 src/vpn/gnunet-service-vpn.c:2302 8674#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
8815#, c-format 8675#, c-format
8816msgid "Packet received for unmapped destination `%s' (dropping it)\n" 8676msgid "Packet received for unmapped destination `%s' (dropping it)\n"
8817msgstr "" 8677msgstr ""
8818 8678
8819#: src/vpn/gnunet-service-vpn.c:2312 8679#: src/vpn/gnunet-service-vpn.c:2314
8820msgid "Received IPv4 packet with options (dropping it)\n" 8680msgid "Received IPv4 packet with options (dropping it)\n"
8821msgstr "" 8681msgstr ""
8822 8682
8823#: src/vpn/gnunet-service-vpn.c:2326 8683#: src/vpn/gnunet-service-vpn.c:2328
8824#, c-format 8684#, c-format
8825msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" 8685msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
8826msgstr "" 8686msgstr ""
8827 8687
8828#: src/vpn/gnunet-service-vpn.c:2365 8688#: src/vpn/gnunet-service-vpn.c:2367
8829msgid "Failed to find unallocated IPv4 address in VPN's range\n" 8689msgid "Failed to find unallocated IPv4 address in VPN's range\n"
8830msgstr "" 8690msgstr ""
8831 8691
8832#: src/vpn/gnunet-service-vpn.c:2420 8692#: src/vpn/gnunet-service-vpn.c:2422
8833msgid "Failed to find unallocated IPv6 address in VPN's range\n" 8693msgid "Failed to find unallocated IPv6 address in VPN's range\n"
8834msgstr "" 8694msgstr ""
8835 8695
8836#: src/vpn/gnunet-service-vpn.c:2462 src/vpn/gnunet-service-vpn.c:2684 8696#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
8837msgid "# Active destinations" 8697msgid "# Active destinations"
8838msgstr "" 8698msgstr ""
8839 8699
8840#: src/vpn/gnunet-service-vpn.c:2733 8700#: src/vpn/gnunet-service-vpn.c:2735
8841msgid "Failed to allocate IP address for new destination\n" 8701msgid "Failed to allocate IP address for new destination\n"
8842msgstr "" 8702msgstr ""
8843 8703
8844#: src/vpn/gnunet-service-vpn.c:2996 8704#: src/vpn/gnunet-service-vpn.c:2998
8845msgid "Must specify valid IPv6 address" 8705msgid "Must specify valid IPv6 address"
8846msgstr "" 8706msgstr ""
8847 8707
8848#: src/vpn/gnunet-service-vpn.c:3020 8708#: src/vpn/gnunet-service-vpn.c:3022
8849msgid "Must specify valid IPv6 mask" 8709msgid "Must specify valid IPv6 mask"
8850msgstr "" 8710msgstr ""
8851 8711
8852#: src/vpn/gnunet-service-vpn.c:3028 8712#: src/vpn/gnunet-service-vpn.c:3030
8853msgid "IPv6 support disabled as this system does not support IPv6\n" 8713msgid "IPv6 support disabled as this system does not support IPv6\n"
8854msgstr "" 8714msgstr ""
8855 8715
8856#: src/vpn/gnunet-service-vpn.c:3041 8716#: src/vpn/gnunet-service-vpn.c:3043
8857msgid "Must specify valid IPv4 address" 8717msgid "Must specify valid IPv4 address"
8858msgstr "" 8718msgstr ""
8859 8719
8860#: src/vpn/gnunet-service-vpn.c:3054 8720#: src/vpn/gnunet-service-vpn.c:3056
8861msgid "Must specify valid IPv4 mask" 8721msgid "Must specify valid IPv4 mask"
8862msgstr "" 8722msgstr ""
8863 8723
8864#: src/vpn/gnunet-service-vpn.c:3064 8724#: src/vpn/gnunet-service-vpn.c:3066
8865msgid "IPv4 support disabled as this system does not support IPv4\n" 8725msgid "IPv4 support disabled as this system does not support IPv4\n"
8866msgstr "" 8726msgstr ""
8867 8727
8868#: src/vpn/gnunet-vpn.c:145 8728#: src/vpn/gnunet-vpn.c:147
8869msgid "Error creating tunnel\n" 8729msgid "Error creating tunnel\n"
8870msgstr "Erreur de création du tunnel\n" 8730msgstr "Erreur de création du tunnel\n"
8871 8731
8872#: src/vpn/gnunet-vpn.c:189 src/vpn/gnunet-vpn.c:220 8732#: src/vpn/gnunet-vpn.c:191 src/vpn/gnunet-vpn.c:222
8873#, c-format 8733#, c-format
8874msgid "Option `%s' makes no sense with option `%s'.\n" 8734msgid "Option `%s' makes no sense with option `%s'.\n"
8875msgstr "" 8735msgstr ""
8876 8736
8877#: src/vpn/gnunet-vpn.c:202 8737#: src/vpn/gnunet-vpn.c:204
8878#, c-format 8738#, c-format
8879msgid "Option `%s' or `%s' is required.\n" 8739msgid "Option `%s' or `%s' is required.\n"
8880msgstr "" 8740msgstr ""
8881 8741
8882#: src/vpn/gnunet-vpn.c:214 8742#: src/vpn/gnunet-vpn.c:216
8883#, c-format 8743#, c-format
8884msgid "Option `%s' or `%s' is required when using option `%s'.\n" 8744msgid "Option `%s' or `%s' is required when using option `%s'.\n"
8885msgstr "" 8745msgstr ""
8886 8746
8887#: src/vpn/gnunet-vpn.c:234 8747#: src/vpn/gnunet-vpn.c:236
8888#, c-format 8748#, c-format
8889msgid "`%s' is not a valid peer identifier.\n" 8749msgid "`%s' is not a valid peer identifier.\n"
8890msgstr "" 8750msgstr ""
8891 8751
8892#: src/vpn/gnunet-vpn.c:254 8752#: src/vpn/gnunet-vpn.c:256
8893#, c-format 8753#, c-format
8894msgid "`%s' is not a valid IP address.\n" 8754msgid "`%s' is not a valid IP address.\n"
8895msgstr "" 8755msgstr ""
8896 8756
8897#: src/vpn/gnunet-vpn.c:290 8757#: src/vpn/gnunet-vpn.c:292
8898msgid "request that result should be an IPv4 address" 8758msgid "request that result should be an IPv4 address"
8899msgstr "" 8759msgstr ""
8900 8760
8901#: src/vpn/gnunet-vpn.c:295 8761#: src/vpn/gnunet-vpn.c:297
8902msgid "request that result should be an IPv6 address" 8762msgid "request that result should be an IPv6 address"
8903msgstr "" 8763msgstr ""
8904 8764
8905#: src/vpn/gnunet-vpn.c:301 8765#: src/vpn/gnunet-vpn.c:303
8906msgid "how long should the mapping be valid for new tunnels?" 8766msgid "how long should the mapping be valid for new tunnels?"
8907msgstr "" 8767msgstr ""
8908 8768
8909#: src/vpn/gnunet-vpn.c:307 8769#: src/vpn/gnunet-vpn.c:309
8910msgid "destination IP for the tunnel" 8770msgid "destination IP for the tunnel"
8911msgstr "" 8771msgstr ""
8912 8772
8913#: src/vpn/gnunet-vpn.c:313 8773#: src/vpn/gnunet-vpn.c:315
8914msgid "peer offering the service we would like to access" 8774msgid "peer offering the service we would like to access"
8915msgstr "" 8775msgstr ""
8916 8776
8917#: src/vpn/gnunet-vpn.c:319 8777#: src/vpn/gnunet-vpn.c:321
8918msgid "name of the service we would like to access" 8778msgid "name of the service we would like to access"
8919msgstr "" 8779msgstr ""
8920 8780
8921#: src/vpn/gnunet-vpn.c:324 8781#: src/vpn/gnunet-vpn.c:326
8922msgid "service is offered via TCP" 8782msgid "service is offered via TCP"
8923msgstr "" 8783msgstr ""
8924 8784
8925#: src/vpn/gnunet-vpn.c:329 8785#: src/vpn/gnunet-vpn.c:331
8926msgid "service is offered via UDP" 8786msgid "service is offered via UDP"
8927msgstr "" 8787msgstr ""
8928 8788
8929#: src/vpn/gnunet-vpn.c:342 8789#: src/vpn/gnunet-vpn.c:344
8930msgid "Setup tunnels via VPN." 8790msgid "Setup tunnels via VPN."
8931msgstr "Configurer des tunnels via VPN." 8791msgstr "Configurer des tunnels via VPN."
8932 8792
8933#: src/zonemaster/gnunet-service-zonemaster.c:836 8793#: src/zonemaster/gnunet-service-zonemaster.c:838
8934#: src/zonemaster/gnunet-service-zonemaster-monitor.c:414 8794#: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
8935msgid "Failed to connect to the namestore!\n" 8795msgid "Failed to connect to the namestore!\n"
8936msgstr "" 8796msgstr ""
8937 8797
8938#: src/include/gnunet_common.h:770 src/include/gnunet_common.h:777 8798#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
8939#: src/include/gnunet_common.h:787 8799#: src/include/gnunet_common.h:789
8940#, fuzzy, c-format 8800#, fuzzy, c-format
8941msgid "Assertion failed at %s:%d. Aborting.\n" 8801msgid "Assertion failed at %s:%d. Aborting.\n"
8942msgstr "opus_encode_float() échoué : %s. Annulation\n" 8802msgstr "opus_encode_float() échoué : %s. Annulation\n"
8943 8803
8944#: src/include/gnunet_common.h:795 8804#: src/include/gnunet_common.h:797
8945#, c-format 8805#, c-format
8946msgid "Assertion failed at %s:%d.\n" 8806msgid "Assertion failed at %s:%d.\n"
8947msgstr "" 8807msgstr ""
8948 8808
8949#: src/include/gnunet_common.h:807 8809#: src/include/gnunet_common.h:809
8950#, c-format 8810#, c-format
8951msgid "External protocol violation detected at %s:%d.\n" 8811msgid "External protocol violation detected at %s:%d.\n"
8952msgstr "" 8812msgstr ""
8953 8813
8954#: src/include/gnunet_common.h:834 src/include/gnunet_common.h:843 8814#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
8955#, c-format 8815#, c-format
8956msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" 8816msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
8957msgstr "" 8817msgstr ""
8958 8818
8959#, fuzzy 8819#, fuzzy
8820#~ msgid "Dropping invalid fragment\n"
8821#~ msgstr "Argument invalide « %s »\n"
8822
8823#, fuzzy
8824#~ msgid "Failed to store fragment\n"
8825#~ msgstr "Échec du démarrage de %s\n"
8826
8827#, fuzzy
8828#~ msgid "Failed to begin modifying state: %d\n"
8829#~ msgstr "Échec du démarrage de %s\n"
8830
8831#, fuzzy
8832#~ msgid "Failed to modify state: %d\n"
8833#~ msgstr "Échec du démarrage de %s\n"
8834
8835#, fuzzy
8836#~ msgid "Unable to initialize Mysql.\n"
8837#~ msgstr "Résolution de « %s » échouée\n"
8838
8839#, fuzzy
8840#~ msgid "Failed to run SQL statement `%s'\n"
8841#~ msgstr "Échec du démarrage de %s\n"
8842
8843#, fuzzy
8844#~ msgid "number of messages to replay from history"
8845#~ msgstr "nombre de valeurs"
8846
8847#, fuzzy
8960#~ msgid "Unable to connect to Postgres database '%s': %s\n" 8848#~ msgid "Unable to connect to Postgres database '%s': %s\n"
8961#~ msgstr "Résolution de « %s » échouée\n" 8849#~ msgstr "Résolution de « %s » échouée\n"
8962 8850
diff --git a/po/it.po b/po/it.po
index 5069e0baa..be1c08eee 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
7msgstr "" 7msgstr ""
8"Project-Id-Version: gnunet 0.10.1\n" 8"Project-Id-Version: gnunet 0.10.1\n"
9"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" 9"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
10"POT-Creation-Date: 2018-10-20 11:13+0200\n" 10"POT-Creation-Date: 2019-02-13 00:37+0100\n"
11"PO-Revision-Date: 2018-08-29 13:48+0200\n" 11"PO-Revision-Date: 2018-08-29 13:48+0200\n"
12"Last-Translator: Sebastiano Pistore <SebastianoPistore.info@protonmail.ch>\n" 12"Last-Translator: Sebastiano Pistore <SebastianoPistore.info@protonmail.ch>\n"
13"Language-Team: Italian <tp@lists.linux.it>\n" 13"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -20,1005 +20,1000 @@ msgstr ""
20"X-Generator: Poedit 2.0.7\n" 20"X-Generator: Poedit 2.0.7\n"
21"Plural-Forms: nplurals=2; plural=(n != 1);\n" 21"Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 22
23#: src/arm/gnunet-arm.c:154 23#: src/arm/gnunet-arm.c:156
24#, c-format 24#, c-format
25msgid "Failed to remove configuration file %s\n" 25msgid "Failed to remove configuration file %s\n"
26msgstr "" 26msgstr ""
27 27
28#: src/arm/gnunet-arm.c:160 28#: src/arm/gnunet-arm.c:162
29#, c-format 29#, c-format
30msgid "Failed to remove servicehome directory %s\n" 30msgid "Failed to remove servicehome directory %s\n"
31msgstr "" 31msgstr ""
32 32
33#: src/arm/gnunet-arm.c:220 src/testbed/gnunet-service-testbed_peers.c:1137 33#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
34msgid "Message was sent successfully" 34msgid "Message was sent successfully"
35msgstr "Messaggio inviato con successo" 35msgstr "Messaggio inviato con successo"
36 36
37#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139 37#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
38msgid "We disconnected from ARM before we could send a request" 38msgid "We disconnected from ARM before we could send a request"
39msgstr "" 39msgstr ""
40 40
41#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141 41#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
42msgid "Unknown request status" 42msgid "Unknown request status"
43msgstr "" 43msgstr ""
44 44
45#: src/arm/gnunet-arm.c:240 45#: src/arm/gnunet-arm.c:242
46#, fuzzy 46#, fuzzy
47msgid "is stopped" 47msgid "is stopped"
48msgstr "# elementi memorizzati" 48msgstr "# elementi memorizzati"
49 49
50#: src/arm/gnunet-arm.c:242 50#: src/arm/gnunet-arm.c:244
51msgid "is starting" 51msgid "is starting"
52msgstr "" 52msgstr ""
53 53
54#: src/arm/gnunet-arm.c:244 54#: src/arm/gnunet-arm.c:246
55msgid "is stopping" 55msgid "is stopping"
56msgstr "" 56msgstr ""
57 57
58#: src/arm/gnunet-arm.c:246 58#: src/arm/gnunet-arm.c:248
59msgid "is starting already" 59msgid "is starting already"
60msgstr "" 60msgstr ""
61 61
62#: src/arm/gnunet-arm.c:248 62#: src/arm/gnunet-arm.c:250
63msgid "is stopping already" 63msgid "is stopping already"
64msgstr "" 64msgstr ""
65 65
66#: src/arm/gnunet-arm.c:250 66#: src/arm/gnunet-arm.c:252
67msgid "is started already" 67msgid "is started already"
68msgstr "" 68msgstr ""
69 69
70#: src/arm/gnunet-arm.c:252 70#: src/arm/gnunet-arm.c:254
71msgid "is stopped already" 71msgid "is stopped already"
72msgstr "" 72msgstr ""
73 73
74#: src/arm/gnunet-arm.c:254 74#: src/arm/gnunet-arm.c:256
75msgid "service is not known to ARM" 75msgid "service is not known to ARM"
76msgstr "" 76msgstr ""
77 77
78#: src/arm/gnunet-arm.c:256 78#: src/arm/gnunet-arm.c:258
79msgid "service failed to start" 79msgid "service failed to start"
80msgstr "" 80msgstr ""
81 81
82#: src/arm/gnunet-arm.c:258 82#: src/arm/gnunet-arm.c:260
83msgid "service cannot be manipulated because ARM is shutting down" 83msgid "service cannot be manipulated because ARM is shutting down"
84msgstr "" 84msgstr ""
85 85
86#: src/arm/gnunet-arm.c:260 86#: src/arm/gnunet-arm.c:262
87msgid "Unknown result code." 87msgid "Unknown result code."
88msgstr "" 88msgstr ""
89 89
90#: src/arm/gnunet-arm.c:292 90#: src/arm/gnunet-arm.c:295
91msgid "Fatal error initializing ARM API.\n" 91msgid "Fatal error initializing ARM API.\n"
92msgstr "" 92msgstr ""
93 93
94#: src/arm/gnunet-arm.c:320 src/arm/gnunet-arm.c:329 94#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
95#, c-format 95#, c-format
96msgid "Failed to start the ARM service: %s\n" 96msgid "Failed to start the ARM service: %s\n"
97msgstr "" 97msgstr ""
98 98
99#: src/arm/gnunet-arm.c:363 99#: src/arm/gnunet-arm.c:368
100#, c-format 100#, c-format
101msgid "Failed to send a stop request to the ARM service: %s\n" 101msgid "Failed to send a stop request to the ARM service: %s\n"
102msgstr "" 102msgstr ""
103 103
104#: src/arm/gnunet-arm.c:374 104#: src/arm/gnunet-arm.c:379
105#, c-format 105#, c-format
106msgid "Failed to stop the ARM service: %s\n" 106msgid "Failed to stop the ARM service: %s\n"
107msgstr "" 107msgstr ""
108 108
109#: src/arm/gnunet-arm.c:413 109#: src/arm/gnunet-arm.c:419
110#, c-format 110#, c-format
111msgid "Failed to send a request to start the `%s' service: %s\n" 111msgid "Failed to send a request to start the `%s' service: %s\n"
112msgstr "" 112msgstr ""
113 113
114#: src/arm/gnunet-arm.c:423 114#: src/arm/gnunet-arm.c:429
115#, c-format 115#, c-format
116msgid "Failed to start the `%s' service: %s\n" 116msgid "Failed to start the `%s' service: %s\n"
117msgstr "" 117msgstr ""
118 118
119#: src/arm/gnunet-arm.c:460 119#: src/arm/gnunet-arm.c:467
120#, c-format 120#, c-format
121msgid "Failed to send a request to kill the `%s' service: %%s\n" 121msgid "Failed to send a request to kill the `%s' service: %%s\n"
122msgstr "" 122msgstr ""
123 123
124#: src/arm/gnunet-arm.c:471 124#: src/arm/gnunet-arm.c:478
125#, c-format 125#, c-format
126msgid "Failed to kill the `%s' service: %s\n" 126msgid "Failed to kill the `%s' service: %s\n"
127msgstr "" 127msgstr ""
128 128
129#: src/arm/gnunet-arm.c:511 129#: src/arm/gnunet-arm.c:519
130#, c-format 130#, c-format
131msgid "Failed to request a list of services: %s\n" 131msgid "Failed to request a list of services: %s\n"
132msgstr "" 132msgstr ""
133 133
134#: src/arm/gnunet-arm.c:520 134#: src/arm/gnunet-arm.c:528
135msgid "Error communicating with ARM. ARM not running?\n" 135msgid "Error communicating with ARM. ARM not running?\n"
136msgstr "" 136msgstr ""
137 137
138#: src/arm/gnunet-arm.c:526 138#: src/arm/gnunet-arm.c:534
139msgid "Running services:\n" 139msgid "Running services:\n"
140msgstr "Servizi in esecuzione:\n" 140msgstr "Servizi in esecuzione:\n"
141 141
142#: src/arm/gnunet-arm.c:614 142#: src/arm/gnunet-arm.c:623
143#, c-format 143#, c-format
144msgid "Now only monitoring, press CTRL-C to stop.\n" 144msgid "Now only monitoring, press CTRL-C to stop.\n"
145msgstr "" 145msgstr ""
146 146
147#: src/arm/gnunet-arm.c:646 147#: src/arm/gnunet-arm.c:656
148#, c-format 148#, c-format
149msgid "Stopped %s.\n" 149msgid "Stopped %s.\n"
150msgstr "%s arrestato.\n" 150msgstr "%s arrestato.\n"
151 151
152#: src/arm/gnunet-arm.c:649 152#: src/arm/gnunet-arm.c:659
153#, c-format 153#, c-format
154msgid "Starting %s...\n" 154msgid "Starting %s...\n"
155msgstr "Avvio di %s in corso...\n" 155msgstr "Avvio di %s in corso...\n"
156 156
157#: src/arm/gnunet-arm.c:652 157#: src/arm/gnunet-arm.c:662
158#, c-format 158#, c-format
159msgid "Stopping %s...\n" 159msgid "Stopping %s...\n"
160msgstr "Arresto di %s in corso...\n" 160msgstr "Arresto di %s in corso...\n"
161 161
162#: src/arm/gnunet-arm.c:666 162#: src/arm/gnunet-arm.c:676
163#, c-format 163#, c-format
164msgid "Unknown status %u for service %s.\n" 164msgid "Unknown status %u for service %s.\n"
165msgstr "" 165msgstr ""
166 166
167#: src/arm/gnunet-arm.c:767 167#: src/arm/gnunet-arm.c:766
168msgid "stop all GNUnet services" 168msgid "stop all GNUnet services"
169msgstr "arresta tutti i servizi GNUnet" 169msgstr "arresta tutti i servizi GNUnet"
170 170
171#: src/arm/gnunet-arm.c:773 171#: src/arm/gnunet-arm.c:771
172msgid "start a particular service" 172msgid "start a particular service"
173msgstr "" 173msgstr ""
174 174
175#: src/arm/gnunet-arm.c:779 175#: src/arm/gnunet-arm.c:776
176msgid "stop a particular service" 176msgid "stop a particular service"
177msgstr "" 177msgstr ""
178 178
179#: src/arm/gnunet-arm.c:784 179#: src/arm/gnunet-arm.c:780
180msgid "start all GNUnet default services" 180msgid "start all GNUnet default services"
181msgstr "" 181msgstr ""
182 182
183#: src/arm/gnunet-arm.c:789 183#: src/arm/gnunet-arm.c:784
184msgid "stop and start all GNUnet default services" 184msgid "stop and start all GNUnet default services"
185msgstr "" 185msgstr ""
186 186
187#: src/arm/gnunet-arm.c:793 187#: src/arm/gnunet-arm.c:788
188msgid "delete config file and directory on exit" 188msgid "delete config file and directory on exit"
189msgstr "" 189msgstr ""
190 190
191#: src/arm/gnunet-arm.c:798 191#: src/arm/gnunet-arm.c:792
192msgid "monitor ARM activities" 192msgid "monitor ARM activities"
193msgstr "" 193msgstr ""
194 194
195#: src/arm/gnunet-arm.c:803 195#: src/arm/gnunet-arm.c:796
196msgid "don't print status messages" 196msgid "don't print status messages"
197msgstr "" 197msgstr ""
198 198
199#: src/arm/gnunet-arm.c:809 199#: src/arm/gnunet-arm.c:801
200msgid "exit with error status if operation does not finish after DELAY" 200msgid "exit with error status if operation does not finish after DELAY"
201msgstr "" 201msgstr ""
202 202
203#: src/arm/gnunet-arm.c:814 203#: src/arm/gnunet-arm.c:805
204msgid "list currently running services" 204msgid "list currently running services"
205msgstr "elenca i servizi in esecuzione" 205msgstr "elenca i servizi in esecuzione"
206 206
207#: src/arm/gnunet-arm.c:819 207#: src/arm/gnunet-arm.c:809
208msgid "don't let gnunet-service-arm inherit standard output" 208msgid "don't let gnunet-service-arm inherit standard output"
209msgstr "" 209msgstr ""
210 210
211#: src/arm/gnunet-arm.c:824 211#: src/arm/gnunet-arm.c:813
212msgid "don't let gnunet-service-arm inherit standard error" 212msgid "don't let gnunet-service-arm inherit standard error"
213msgstr "" 213msgstr ""
214 214
215#: src/arm/gnunet-arm.c:837 215#: src/arm/gnunet-arm.c:828
216msgid "Control services and the Automated Restart Manager (ARM)" 216msgid "Control services and the Automated Restart Manager (ARM)"
217msgstr "" 217msgstr ""
218 218
219#: src/arm/gnunet-service-arm.c:386 src/transport/plugin_transport_tcp.c:1118 219#: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
220#: src/transport/plugin_transport_xt.c:1118 220#: src/transport/plugin_transport_xt.c:1120
221#: src/transport/tcp_service_legacy.c:555 src/util/service.c:610 221#: src/transport/tcp_service_legacy.c:557 src/util/service.c:1167
222#, c-format 222#, c-format
223msgid "" 223msgid ""
224"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n" 224"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
225msgstr "" 225msgstr ""
226 226
227#: src/arm/gnunet-service-arm.c:410 src/arm/gnunet-service-arm.c:416 227#: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
228#: src/transport/plugin_transport_tcp.c:1137 228#: src/transport/plugin_transport_tcp.c:1139
229#: src/transport/plugin_transport_tcp.c:1143 229#: src/transport/plugin_transport_tcp.c:1145
230#: src/transport/plugin_transport_tcp.c:3823 230#: src/transport/plugin_transport_tcp.c:3829
231#: src/transport/plugin_transport_xt.c:1137 231#: src/transport/plugin_transport_xt.c:1139
232#: src/transport/plugin_transport_xt.c:1143 232#: src/transport/plugin_transport_xt.c:1145
233#: src/transport/plugin_transport_xt.c:3831 233#: src/transport/plugin_transport_xt.c:3833
234#: src/transport/tcp_service_legacy.c:574 234#: src/transport/tcp_service_legacy.c:576
235#: src/transport/tcp_service_legacy.c:580 src/util/service.c:635 235#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1192
236#: src/util/service.c:641 236#: src/util/service.c:1198
237#, c-format 237#, c-format
238msgid "Require valid port number for service `%s' in configuration!\n" 238msgid "Require valid port number for service `%s' in configuration!\n"
239msgstr "" 239msgstr ""
240 240
241#: src/arm/gnunet-service-arm.c:455 src/transport/plugin_transport_tcp.c:1174 241#: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
242#: src/transport/plugin_transport_xt.c:1174 242#: src/transport/plugin_transport_xt.c:1176
243#: src/transport/tcp_service_legacy.c:611 src/util/client.c:504 243#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
244#: src/util/service.c:680 244#: src/util/service.c:1237
245#, c-format 245#, c-format
246msgid "UNIXPATH `%s' too long, maximum length is %llu\n" 246msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
247msgstr "" 247msgstr ""
248 248
249#: src/arm/gnunet-service-arm.c:460 src/transport/plugin_transport_tcp.c:1178 249#: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
250#: src/transport/plugin_transport_xt.c:1178 250#: src/transport/plugin_transport_xt.c:1180
251#: src/transport/tcp_service_legacy.c:615 src/util/client.c:509 251#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
252#: src/util/service.c:685 252#: src/util/service.c:1242
253#, c-format 253#, c-format
254msgid "Using `%s' instead\n" 254msgid "Using `%s' instead\n"
255msgstr "" 255msgstr ""
256 256
257#: src/arm/gnunet-service-arm.c:493 src/transport/plugin_transport_tcp.c:1209 257#: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
258#: src/transport/plugin_transport_xt.c:1209 258#: src/transport/plugin_transport_xt.c:1211
259#: src/transport/tcp_service_legacy.c:646 src/util/service.c:721 259#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1278
260#, c-format 260#, c-format
261msgid "" 261msgid ""
262"Disabling UNIX domain socket support for service `%s', failed to create UNIX " 262"Disabling UNIX domain socket support for service `%s', failed to create UNIX "
263"domain socket: %s\n" 263"domain socket: %s\n"
264msgstr "" 264msgstr ""
265 265
266#: src/arm/gnunet-service-arm.c:515 src/transport/plugin_transport_tcp.c:1226 266#: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
267#: src/transport/plugin_transport_xt.c:1226 267#: src/transport/plugin_transport_xt.c:1228
268#: src/transport/tcp_service_legacy.c:663 src/util/service.c:739 268#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1296
269#, c-format 269#, c-format
270msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n" 270msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
271msgstr "" 271msgstr ""
272 272
273#: src/arm/gnunet-service-arm.c:554 273#: src/arm/gnunet-service-arm.c:556
274#: src/transport/plugin_transport_http_server.c:2682 274#: src/transport/plugin_transport_http_server.c:2688
275#: src/transport/plugin_transport_tcp.c:1257 275#: src/transport/plugin_transport_tcp.c:1259
276#: src/transport/plugin_transport_xt.c:1257 276#: src/transport/plugin_transport_xt.c:1259
277#: src/transport/tcp_service_legacy.c:694 src/util/service.c:780 277#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1337
278#, c-format 278#, c-format
279msgid "Failed to resolve `%s': %s\n" 279msgid "Failed to resolve `%s': %s\n"
280msgstr "" 280msgstr ""
281 281
282#: src/arm/gnunet-service-arm.c:573 282#: src/arm/gnunet-service-arm.c:575
283#: src/transport/plugin_transport_http_server.c:2700 283#: src/transport/plugin_transport_http_server.c:2706
284#: src/transport/plugin_transport_tcp.c:1276 284#: src/transport/plugin_transport_tcp.c:1278
285#: src/transport/plugin_transport_xt.c:1276 285#: src/transport/plugin_transport_xt.c:1278
286#: src/transport/tcp_service_legacy.c:713 src/util/service.c:800 286#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1357
287#, c-format 287#, c-format
288msgid "Failed to find %saddress for `%s'.\n" 288msgid "Failed to find %saddress for `%s'.\n"
289msgstr "" 289msgstr ""
290 290
291#: src/arm/gnunet-service-arm.c:984 291#: src/arm/gnunet-service-arm.c:986
292#, c-format 292#, c-format
293msgid "Failed to start service `%s'\n" 293msgid "Failed to start service `%s'\n"
294msgstr "" 294msgstr ""
295 295
296#: src/arm/gnunet-service-arm.c:995 296#: src/arm/gnunet-service-arm.c:997
297#, c-format 297#, c-format
298msgid "Starting service `%s'\n" 298msgid "Starting service `%s'\n"
299msgstr "Avvio del servizio '%s' in corso\n" 299msgstr "Avvio del servizio '%s' in corso\n"
300 300
301#: src/arm/gnunet-service-arm.c:1107 301#: src/arm/gnunet-service-arm.c:1109
302#, c-format 302#, c-format
303msgid "Unable to create socket for service `%s': %s\n" 303msgid "Unable to create socket for service `%s': %s\n"
304msgstr "" 304msgstr ""
305 305
306#: src/arm/gnunet-service-arm.c:1142 306#: src/arm/gnunet-service-arm.c:1144
307#, c-format 307#, c-format
308msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n" 308msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n"
309msgstr "" 309msgstr ""
310 310
311#: src/arm/gnunet-service-arm.c:1185 311#: src/arm/gnunet-service-arm.c:1187
312#, c-format 312#, c-format
313msgid "ARM now monitors connections to service `%s' at `%s'\n" 313msgid "ARM now monitors connections to service `%s' at `%s'\n"
314msgstr "" 314msgstr ""
315 315
316#: src/arm/gnunet-service-arm.c:1364 316#: src/arm/gnunet-service-arm.c:1346
317#, c-format 317#, c-format
318msgid "Preparing to stop `%s'\n" 318msgid "Preparing to stop `%s'\n"
319msgstr "" 319msgstr ""
320 320
321#: src/arm/gnunet-service-arm.c:1669 321#: src/arm/gnunet-service-arm.c:1651
322#, c-format 322#, c-format
323msgid "Restarting service `%s'.\n" 323msgid "Restarting service `%s'.\n"
324msgstr "" 324msgstr ""
325 325
326#: src/arm/gnunet-service-arm.c:1830 326#: src/arm/gnunet-service-arm.c:1812
327msgid "exit" 327msgid "exit"
328msgstr "uscita" 328msgstr "uscita"
329 329
330#: src/arm/gnunet-service-arm.c:1835 330#: src/arm/gnunet-service-arm.c:1817
331msgid "signal" 331msgid "signal"
332msgstr "" 332msgstr ""
333 333
334#: src/arm/gnunet-service-arm.c:1840 334#: src/arm/gnunet-service-arm.c:1822
335msgid "unknown" 335msgid "unknown"
336msgstr "sconosciuto" 336msgstr "sconosciuto"
337 337
338#: src/arm/gnunet-service-arm.c:1846 338#: src/arm/gnunet-service-arm.c:1828
339#, c-format 339#, c-format
340msgid "Service `%s' took %s to terminate\n" 340msgid "Service `%s' took %s to terminate\n"
341msgstr "" 341msgstr ""
342 342
343#: src/arm/gnunet-service-arm.c:1872 343#: src/arm/gnunet-service-arm.c:1854
344#, c-format 344#, c-format
345msgid "Service `%s' terminated normally, will restart at any time\n" 345msgid "Service `%s' terminated normally, will restart at any time\n"
346msgstr "" 346msgstr ""
347 347
348#: src/arm/gnunet-service-arm.c:1888 348#: src/arm/gnunet-service-arm.c:1870
349#, c-format 349#, c-format
350msgid "Service `%s' terminated with status %s/%d, will restart in %s\n" 350msgid "Service `%s' terminated with status %s/%d, will restart in %s\n"
351msgstr "" 351msgstr ""
352 352
353#: src/arm/mockup-service.c:40 353#: src/arm/mockup-service.c:42
354msgid "Initiating shutdown as requested by client.\n" 354msgid "Initiating shutdown as requested by client.\n"
355msgstr "" 355msgstr ""
356 356
357#: src/ats/gnunet-ats-solver-eval.c:2779 src/ats/gnunet-ats-solver-eval.c:2820 357#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
358#, c-format 358#, c-format
359msgid "" 359msgid ""
360"Could not load quota for network `%s': `%s', assigning default bandwidth " 360"Could not load quota for network `%s': `%s', assigning default bandwidth "
361"%llu\n" 361"%llu\n"
362msgstr "" 362msgstr ""
363 363
364#: src/ats/gnunet-ats-solver-eval.c:2797 364#: src/ats/gnunet-ats-solver-eval.c:2799
365#, c-format 365#, c-format
366msgid "" 366msgid ""
367"No outbound quota configured for network `%s', assigning default bandwidth " 367"No outbound quota configured for network `%s', assigning default bandwidth "
368"%llu\n" 368"%llu\n"
369msgstr "" 369msgstr ""
370 370
371#: src/ats/gnunet-ats-solver-eval.c:2838 371#: src/ats/gnunet-ats-solver-eval.c:2840
372#, c-format 372#, c-format
373msgid "" 373msgid ""
374"No outbound quota configure for network `%s', assigning default bandwidth " 374"No outbound quota configure for network `%s', assigning default bandwidth "
375"%llu\n" 375"%llu\n"
376msgstr "" 376msgstr ""
377 377
378#: src/ats/gnunet-ats-solver-eval.c:3292 src/ats-tests/gnunet-solver-eval.c:937 378#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
379msgid "solver to use" 379msgid "solver to use"
380msgstr "" 380msgstr ""
381 381
382#: src/ats/gnunet-ats-solver-eval.c:3297 src/ats-tests/gnunet-solver-eval.c:943 382#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
383#: src/ats-tests/gnunet-solver-eval.c:948 383#: src/ats-tests/gnunet-solver-eval.c:950
384msgid "experiment to use" 384msgid "experiment to use"
385msgstr "" 385msgstr ""
386 386
387#: src/ats/gnunet-ats-solver-eval.c:3304 387#: src/ats/gnunet-ats-solver-eval.c:3306
388msgid "print logging" 388msgid "print logging"
389msgstr "" 389msgstr ""
390 390
391#: src/ats/gnunet-ats-solver-eval.c:3309 391#: src/ats/gnunet-ats-solver-eval.c:3311
392msgid "save logging to disk" 392msgid "save logging to disk"
393msgstr "" 393msgstr ""
394 394
395#: src/ats/gnunet-ats-solver-eval.c:3314 395#: src/ats/gnunet-ats-solver-eval.c:3316
396msgid "disable normalization" 396msgid "disable normalization"
397msgstr "" 397msgstr ""
398 398
399#: src/ats/gnunet-service-ats_plugins.c:302 399#: src/ats/gnunet-service-ats-new.c:756
400#: src/ats/gnunet-service-ats_plugins.c:451
401#, c-format
402msgid "Failed to initialize solver `%s'!\n"
403msgstr ""
404
405#: src/ats/gnunet-service-ats_plugins.c:304
400#, c-format 406#, c-format
401msgid "" 407msgid ""
402"Could not load %s quota for network `%s': `%s', assigning default bandwidth " 408"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
403"%llu\n" 409"%llu\n"
404msgstr "" 410msgstr ""
405 411
406#: src/ats/gnunet-service-ats_plugins.c:312 412#: src/ats/gnunet-service-ats_plugins.c:314
407#, c-format 413#, c-format
408msgid "%s quota configured for network `%s' is %llu\n" 414msgid "%s quota configured for network `%s' is %llu\n"
409msgstr "" 415msgstr ""
410 416
411#: src/ats/gnunet-service-ats_plugins.c:357 417#: src/ats/gnunet-service-ats_plugins.c:359
412#, c-format 418#, c-format
413msgid "" 419msgid ""
414"No %s-quota configured for network `%s', assigning default bandwidth %llu\n" 420"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
415msgstr "" 421msgstr ""
416 422
417#: src/ats/gnunet-service-ats_plugins.c:449 423#: src/ats/plugin_ats2_common.c:90
418#, c-format 424#, c-format
419msgid "Failed to initialize solver `%s'!\n" 425msgid ""
426"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
427"%llu\n"
420msgstr "" 428msgstr ""
421 429
422#: src/ats/plugin_ats_mlp.c:1272 430#: src/ats/plugin_ats_mlp.c:1274
423msgid "Problem size too large, cannot allocate memory!\n" 431msgid "Problem size too large, cannot allocate memory!\n"
424msgstr "" 432msgstr ""
425 433
426#: src/ats/plugin_ats_mlp.c:1868 434#: src/ats/plugin_ats_mlp.c:1870
427#, c-format 435#, c-format
428msgid "Adding address for peer `%s' multiple times\n" 436msgid "Adding address for peer `%s' multiple times\n"
429msgstr "" 437msgstr ""
430 438
431#: src/ats/plugin_ats_mlp.c:1912 439#: src/ats/plugin_ats_mlp.c:1914
432#, c-format 440#, c-format
433msgid "Updating address property for peer `%s' %p not added before\n" 441msgid "Updating address property for peer `%s' %p not added before\n"
434msgstr "" 442msgstr ""
435 443
436#: src/ats/plugin_ats_mlp.c:2474 444#: src/ats/plugin_ats_mlp.c:2476
437msgid "" 445msgid ""
438"MLP solver is not optimizing for anything, changing to feasibility check\n" 446"MLP solver is not optimizing for anything, changing to feasibility check\n"
439msgstr "" 447msgstr ""
440 448
441#: src/ats/plugin_ats_mlp.c:2514 src/ats/plugin_ats_mlp.c:2531 449#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
442#: src/ats/plugin_ats_mlp.c:2563 src/ats/plugin_ats_mlp.c:2581 450#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
443#: src/ats/plugin_ats_mlp.c:2600 src/ats/plugin_ats_proportional.c:1139 451#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
444#: src/ats/plugin_ats_ril.c:2610 src/ats/plugin_ats_ril.c:2627 452#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
445#: src/ats/plugin_ats_ril.c:2644 src/ats/plugin_ats_ril.c:2661 453#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
446#: src/ats/plugin_ats_ril.c:2678 src/ats/plugin_ats_ril.c:2695 454#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
447#: src/ats/plugin_ats_ril.c:2712 src/ats/plugin_ats_ril.c:2729 455#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
448#, c-format 456#, c-format
449msgid "Invalid %s configuration %f \n" 457msgid "Invalid %s configuration %f \n"
450msgstr "" 458msgstr ""
451 459
452#: src/ats/plugin_ats_mlp.c:2669 460#: src/ats/plugin_ats_mlp.c:2671
453#, c-format 461#, c-format
454msgid "" 462msgid ""
455"Adjusting inconsistent outbound quota configuration for network `%s', is " 463"Adjusting inconsistent outbound quota configuration for network `%s', is "
456"%llu must be at least %llu\n" 464"%llu must be at least %llu\n"
457msgstr "" 465msgstr ""
458 466
459#: src/ats/plugin_ats_mlp.c:2678 467#: src/ats/plugin_ats_mlp.c:2680
460#, c-format 468#, c-format
461msgid "" 469msgid ""
462"Adjusting inconsistent inbound quota configuration for network `%s', is %llu " 470"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
463"must be at least %llu\n" 471"must be at least %llu\n"
464msgstr "" 472msgstr ""
465 473
466#: src/ats/plugin_ats_mlp.c:2688 474#: src/ats/plugin_ats_mlp.c:2690
467#, c-format 475#, c-format
468msgid "" 476msgid ""
469"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" 477"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
470msgstr "" 478msgstr ""
471 479
472#: src/ats/plugin_ats_mlp.c:2697 480#: src/ats/plugin_ats_mlp.c:2699
473#, c-format 481#, c-format
474msgid "" 482msgid ""
475"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" 483"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
476msgstr "" 484msgstr ""
477 485
478#: src/ats/plugin_ats_proportional.c:1162 486#: src/ats/plugin_ats_proportional.c:1164
479#, c-format 487#, c-format
480msgid "Invalid %s configuration %f\n" 488msgid "Invalid %s configuration %f\n"
481msgstr "" 489msgstr ""
482 490
483#: src/ats-tests/ats-testing.c:420 491#: src/ats-tests/ats-testing.c:422
484#, c-format 492#, c-format
485msgid "Connected master [%u] with slave [%u]\n" 493msgid "Connected master [%u] with slave [%u]\n"
486msgstr "" 494msgstr ""
487 495
488#: src/ats-tests/ats-testing.c:427 496#: src/ats-tests/ats-testing.c:429
489#, c-format 497#, c-format
490msgid "Failed to connect master peer [%u] with slave [%u]\n" 498msgid "Failed to connect master peer [%u] with slave [%u]\n"
491msgstr "" 499msgstr ""
492 500
493#: src/ats-tests/ats-testing-log.c:835 501#: src/ats-tests/ats-testing-log.c:837
494msgid "Stop logging\n" 502msgid "Stop logging\n"
495msgstr "" 503msgstr ""
496 504
497#: src/ats-tests/ats-testing-log.c:890 505#: src/ats-tests/ats-testing-log.c:892
498#, c-format 506#, c-format
499msgid "Start logging `%s'\n" 507msgid "Start logging `%s'\n"
500msgstr "" 508msgstr ""
501 509
502#: src/ats-tests/gnunet-ats-sim.c:88 510#: src/ats-tests/gnunet-ats-sim.c:90
503#, c-format 511#, c-format
504msgid "" 512msgid ""
505"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. " 513"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. "
506"= %u KiB/s\n" 514"= %u KiB/s\n"
507msgstr "" 515msgstr ""
508 516
509#: src/ats-tool/gnunet-ats.c:305 517#: src/ats-tool/gnunet-ats.c:307
510#, c-format 518#, c-format
511msgid "%u address resolutions had a timeout\n" 519msgid "%u address resolutions had a timeout\n"
512msgstr "" 520msgstr ""
513 521
514#: src/ats-tool/gnunet-ats.c:309 522#: src/ats-tool/gnunet-ats.c:311
515#, c-format 523#, c-format
516msgid "ATS returned stat_results for %u addresses\n" 524msgid "ATS returned stat_results for %u addresses\n"
517msgstr "" 525msgstr ""
518 526
519#: src/ats-tool/gnunet-ats.c:393 527#: src/ats-tool/gnunet-ats.c:395
520#, c-format 528#, c-format
521msgid "" 529msgid ""
522"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/" 530"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/"
523"s, %s\n" 531"s, %s\n"
524msgstr "" 532msgstr ""
525 533
526#: src/ats-tool/gnunet-ats.c:400 534#: src/ats-tool/gnunet-ats.c:402
527msgid "active " 535msgid "active "
528msgstr "" 536msgstr ""
529 537
530#: src/ats-tool/gnunet-ats.c:400 538#: src/ats-tool/gnunet-ats.c:402
531msgid "inactive " 539msgid "inactive "
532msgstr "" 540msgstr ""
533 541
534#: src/ats-tool/gnunet-ats.c:510 542#: src/ats-tool/gnunet-ats.c:512
535#, c-format 543#, c-format
536msgid "Removed address of peer `%s' with plugin `%s'\n" 544msgid "Removed address of peer `%s' with plugin `%s'\n"
537msgstr "" 545msgstr ""
538 546
539#: src/ats-tool/gnunet-ats.c:703 547#: src/ats-tool/gnunet-ats.c:705
540#, c-format 548#, c-format
541msgid "Quota for network `%11s' (in/out): %10s / %10s\n" 549msgid "Quota for network `%11s' (in/out): %10s / %10s\n"
542msgstr "" 550msgstr ""
543 551
544#: src/ats-tool/gnunet-ats.c:746 src/ats-tool/gnunet-ats.c:759 552#: src/ats-tool/gnunet-ats.c:748 src/ats-tool/gnunet-ats.c:761
545#, c-format 553#, c-format
546msgid "Failed to parse peer identity `%s'\n" 554msgid "Failed to parse peer identity `%s'\n"
547msgstr "" 555msgstr ""
548 556
549#: src/ats-tool/gnunet-ats.c:771 557#: src/ats-tool/gnunet-ats.c:773
550#, c-format 558#, c-format
551msgid "Please select one operation: %s or %s or %s or %s or %s\n" 559msgid "Please select one operation: %s or %s or %s or %s or %s\n"
552msgstr "" 560msgstr ""
553 561
554#: src/ats-tool/gnunet-ats.c:793 src/ats-tool/gnunet-ats.c:818 562#: src/ats-tool/gnunet-ats.c:795 src/ats-tool/gnunet-ats.c:820
555#: src/ats-tool/gnunet-ats.c:849 src/ats-tool/gnunet-ats.c:894 563#: src/ats-tool/gnunet-ats.c:851 src/ats-tool/gnunet-ats.c:896
556msgid "Cannot connect to ATS service, exiting...\n" 564msgid "Cannot connect to ATS service, exiting...\n"
557msgstr "" 565msgstr ""
558 566
559#: src/ats-tool/gnunet-ats.c:804 src/ats-tool/gnunet-ats.c:830 567#: src/ats-tool/gnunet-ats.c:806 src/ats-tool/gnunet-ats.c:832
560msgid "Cannot issue request to ATS service, exiting...\n" 568msgid "Cannot issue request to ATS service, exiting...\n"
561msgstr "" 569msgstr ""
562 570
563#: src/ats-tool/gnunet-ats.c:860 571#: src/ats-tool/gnunet-ats.c:862
564msgid "No preference type given!\n" 572msgid "No preference type given!\n"
565msgstr "" 573msgstr ""
566 574
567#: src/ats-tool/gnunet-ats.c:867 575#: src/ats-tool/gnunet-ats.c:869
568msgid "No peer given!\n" 576msgid "No peer given!\n"
569msgstr "" 577msgstr ""
570 578
571#: src/ats-tool/gnunet-ats.c:885 579#: src/ats-tool/gnunet-ats.c:887
572msgid "Valid type required\n" 580msgid "Valid type required\n"
573msgstr "" 581msgstr ""
574 582
575#: src/ats-tool/gnunet-ats.c:948 583#: src/ats-tool/gnunet-ats.c:950
576msgid "get list of active addresses currently used" 584msgid "get list of active addresses currently used"
577msgstr "" 585msgstr ""
578 586
579#: src/ats-tool/gnunet-ats.c:952 587#: src/ats-tool/gnunet-ats.c:954
580msgid "get list of all active addresses" 588msgid "get list of all active addresses"
581msgstr "" 589msgstr ""
582 590
583#: src/ats-tool/gnunet-ats.c:958 591#: src/ats-tool/gnunet-ats.c:960
584msgid "connect to PEER" 592msgid "connect to PEER"
585msgstr "" 593msgstr ""
586 594
587#: src/ats-tool/gnunet-ats.c:962 595#: src/ats-tool/gnunet-ats.c:964
588msgid "do not resolve IP addresses to hostnames" 596msgid "do not resolve IP addresses to hostnames"
589msgstr "" 597msgstr ""
590 598
591#: src/ats-tool/gnunet-ats.c:967 599#: src/ats-tool/gnunet-ats.c:969
592msgid "monitor mode" 600msgid "monitor mode"
593msgstr "" 601msgstr ""
594 602
595#: src/ats-tool/gnunet-ats.c:972 603#: src/ats-tool/gnunet-ats.c:974
596msgid "set preference for the given peer" 604msgid "set preference for the given peer"
597msgstr "" 605msgstr ""
598 606
599#: src/ats-tool/gnunet-ats.c:977 607#: src/ats-tool/gnunet-ats.c:979
600msgid "print all configured quotas" 608msgid "print all configured quotas"
601msgstr "" 609msgstr ""
602 610
603#: src/ats-tool/gnunet-ats.c:982 611#: src/ats-tool/gnunet-ats.c:984
604msgid "peer id" 612msgid "peer id"
605msgstr "" 613msgstr ""
606 614
607#: src/ats-tool/gnunet-ats.c:988 615#: src/ats-tool/gnunet-ats.c:990
608msgid "preference type to set: latency | bandwidth" 616msgid "preference type to set: latency | bandwidth"
609msgstr "" 617msgstr ""
610 618
611#: src/ats-tool/gnunet-ats.c:994 619#: src/ats-tool/gnunet-ats.c:996
612msgid "preference value" 620msgid "preference value"
613msgstr "" 621msgstr ""
614 622
615#: src/ats-tool/gnunet-ats.c:999 623#: src/ats-tool/gnunet-ats.c:1001
616msgid "verbose output (include ATS address properties)" 624msgid "verbose output (include ATS address properties)"
617msgstr "" 625msgstr ""
618 626
619#: src/ats-tool/gnunet-ats.c:1009 627#: src/ats-tool/gnunet-ats.c:1011
620msgid "Print information about ATS state" 628msgid "Print information about ATS state"
621msgstr "" 629msgstr ""
622 630
623#: src/auction/gnunet-auction-create.c:161 631#: src/auction/gnunet-auction-create.c:163
624msgid "description of the item to be sold" 632msgid "description of the item to be sold"
625msgstr "" 633msgstr ""
626 634
627#: src/auction/gnunet-auction-create.c:167 635#: src/auction/gnunet-auction-create.c:169
628msgid "mapping of possible prices" 636msgid "mapping of possible prices"
629msgstr "" 637msgstr ""
630 638
631#: src/auction/gnunet-auction-create.c:173 639#: src/auction/gnunet-auction-create.c:175
632msgid "max duration per round" 640msgid "max duration per round"
633msgstr "" 641msgstr ""
634 642
635#: src/auction/gnunet-auction-create.c:179 643#: src/auction/gnunet-auction-create.c:181
636msgid "duration until auction starts" 644msgid "duration until auction starts"
637msgstr "" 645msgstr ""
638 646
639#: src/auction/gnunet-auction-create.c:184 647#: src/auction/gnunet-auction-create.c:186
640msgid "" 648msgid ""
641"number of items to sell\n" 649"number of items to sell\n"
642"0 for first price auction\n" 650"0 for first price auction\n"
643">0 for vickrey/M+1st price auction" 651">0 for vickrey/M+1st price auction"
644msgstr "" 652msgstr ""
645 653
646#: src/auction/gnunet-auction-create.c:191 654#: src/auction/gnunet-auction-create.c:193
647msgid "public auction outcome" 655msgid "public auction outcome"
648msgstr "" 656msgstr ""
649 657
650#: src/auction/gnunet-auction-create.c:196 658#: src/auction/gnunet-auction-create.c:198
651msgid "keep running in foreground until auction completes" 659msgid "keep running in foreground until auction completes"
652msgstr "" 660msgstr ""
653 661
654#: src/auction/gnunet-auction-create.c:207 662#: src/auction/gnunet-auction-create.c:209
655msgid "create a new auction and start listening for bidders" 663msgid "create a new auction and start listening for bidders"
656msgstr "" 664msgstr ""
657 665
658#: src/auction/gnunet-auction-info.c:74 src/auction/gnunet-auction-join.c:74 666#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
659#: src/conversation/gnunet-conversation-test.c:252 667#: src/conversation/gnunet-conversation-test.c:254
660#: src/revocation/gnunet-revocation.c:560 src/template/gnunet-template.c:74 668#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
661msgid "help text" 669msgid "help text"
662msgstr "" 670msgstr ""
663 671
664#: src/cadet/gnunet-cadet.c:705 672#: src/cadet/gnunet-cadet.c:631
665#, c-format 673#, c-format
666msgid "Invalid peer ID `%s'\n" 674msgid "Invalid peer ID `%s'\n"
667msgstr "" 675msgstr ""
668 676
669#: src/cadet/gnunet-cadet.c:744 677#: src/cadet/gnunet-cadet.c:718
670#, c-format
671msgid "Invalid tunnel owner `%s'\n"
672msgstr ""
673
674#: src/cadet/gnunet-cadet.c:817
675msgid "Extra arguments are not applicable in combination with this option.\n" 678msgid "Extra arguments are not applicable in combination with this option.\n"
676msgstr "" 679msgstr ""
677 680
678#: src/cadet/gnunet-cadet.c:908 681#: src/cadet/gnunet-cadet.c:795
679#, c-format 682#, c-format
680msgid "Invalid target `%s'\n" 683msgid "Invalid target `%s'\n"
681msgstr "" 684msgstr ""
682 685
683#: src/cadet/gnunet-cadet.c:945 686#: src/cadet/gnunet-cadet.c:832
684msgid "No action requested\n" 687msgid "No action requested\n"
685msgstr "" 688msgstr ""
686 689
687#: src/cadet/gnunet-cadet.c:970 690#: src/cadet/gnunet-cadet.c:857
688msgid "Provide information about a particular connection" 691msgid "Provide information about a particular connection"
689msgstr "" 692msgstr ""
690 693
691#: src/cadet/gnunet-cadet.c:975 694#: src/cadet/gnunet-cadet.c:861
692msgid "Activate echo mode" 695msgid "Activate echo mode"
693msgstr "" 696msgstr ""
694 697
695#: src/cadet/gnunet-cadet.c:980 698#: src/cadet/gnunet-cadet.c:866
696msgid "Dump debug information to STDERR"
697msgstr ""
698
699#: src/cadet/gnunet-cadet.c:986
700msgid "Listen for connections using a shared secret among sender and recipient" 699msgid "Listen for connections using a shared secret among sender and recipient"
701msgstr "" 700msgstr ""
702 701
703#: src/cadet/gnunet-cadet.c:993 702#: src/cadet/gnunet-cadet.c:871
704msgid "Provide information about a patricular peer" 703msgid "Provide information about a patricular peer"
705msgstr "" 704msgstr ""
706 705
707#: src/cadet/gnunet-cadet.c:999 706#: src/cadet/gnunet-cadet.c:875
708msgid "Provide information about all peers" 707msgid "Provide information about all peers"
709msgstr "" 708msgstr ""
710 709
711#: src/cadet/gnunet-cadet.c:1005 710#: src/cadet/gnunet-cadet.c:879
712msgid "Provide information about a particular tunnel"
713msgstr ""
714
715#: src/cadet/gnunet-cadet.c:1011
716msgid "Provide information about all tunnels" 711msgid "Provide information about all tunnels"
717msgstr "" 712msgstr ""
718 713
719#: src/consensus/gnunet-consensus-profiler.c:521 714#: src/consensus/gnunet-consensus-profiler.c:523
720#: src/secretsharing/gnunet-secretsharing-profiler.c:608 715#: src/secretsharing/gnunet-secretsharing-profiler.c:610
721msgid "number of peers in consensus" 716msgid "number of peers in consensus"
722msgstr "" 717msgstr ""
723 718
724#: src/consensus/gnunet-consensus-profiler.c:527 719#: src/consensus/gnunet-consensus-profiler.c:529
725msgid "" 720msgid ""
726"how many peers (random selection without replacement) receive one value?" 721"how many peers (random selection without replacement) receive one value?"
727msgstr "" 722msgstr ""
728 723
729#: src/consensus/gnunet-consensus-profiler.c:533 724#: src/consensus/gnunet-consensus-profiler.c:535
730#: src/set/gnunet-set-profiler.c:431 src/set/gnunet-set-profiler.c:437 725#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
731#: src/set/gnunet-set-profiler.c:460 726#: src/set/gnunet-set-profiler.c:462
732msgid "number of values" 727msgid "number of values"
733msgstr "" 728msgstr ""
734 729
735#: src/consensus/gnunet-consensus-profiler.c:539 730#: src/consensus/gnunet-consensus-profiler.c:541
736msgid "consensus timeout" 731msgid "consensus timeout"
737msgstr "" 732msgstr ""
738 733
739#: src/consensus/gnunet-consensus-profiler.c:546 734#: src/consensus/gnunet-consensus-profiler.c:548
740msgid "delay until consensus starts" 735msgid "delay until consensus starts"
741msgstr "" 736msgstr ""
742 737
743#: src/consensus/gnunet-consensus-profiler.c:552 738#: src/consensus/gnunet-consensus-profiler.c:554
744#: src/set/gnunet-set-profiler.c:478 739#: src/set/gnunet-set-profiler.c:480
745msgid "write statistics to file" 740msgid "write statistics to file"
746msgstr "" 741msgstr ""
747 742
748#: src/consensus/gnunet-consensus-profiler.c:557 743#: src/consensus/gnunet-consensus-profiler.c:559
749msgid "distribute elements to a static subset of good peers" 744msgid "distribute elements to a static subset of good peers"
750msgstr "" 745msgstr ""
751 746
752#: src/consensus/gnunet-consensus-profiler.c:562 747#: src/consensus/gnunet-consensus-profiler.c:564
753msgid "be more verbose (print received values)" 748msgid "be more verbose (print received values)"
754msgstr "" 749msgstr ""
755 750
756#: src/conversation/conversation_api.c:513 751#: src/conversation/conversation_api.c:515
757#: src/conversation/conversation_api_call.c:492 752#: src/conversation/conversation_api_call.c:494
758msgid "Connection to conversation service lost, trying to reconnect\n" 753msgid "Connection to conversation service lost, trying to reconnect\n"
759msgstr "" 754msgstr ""
760 755
761#: src/conversation/gnunet-conversation.c:275 756#: src/conversation/gnunet-conversation.c:277
762#, c-format 757#, c-format
763msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" 758msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
764msgstr "" 759msgstr ""
765 760
766#: src/conversation/gnunet-conversation.c:300 761#: src/conversation/gnunet-conversation.c:302
767#, c-format 762#, c-format
768msgid "Call from `%s' terminated\n" 763msgid "Call from `%s' terminated\n"
769msgstr "" 764msgstr ""
770 765
771#: src/conversation/gnunet-conversation.c:335 766#: src/conversation/gnunet-conversation.c:337
772#, c-format 767#, c-format
773msgid "Call from `%s' suspended by other user\n" 768msgid "Call from `%s' suspended by other user\n"
774msgstr "" 769msgstr ""
775 770
776#: src/conversation/gnunet-conversation.c:340 771#: src/conversation/gnunet-conversation.c:342
777#, c-format 772#, c-format
778msgid "Call from `%s' resumed by other user\n" 773msgid "Call from `%s' resumed by other user\n"
779msgstr "" 774msgstr ""
780 775
781#: src/conversation/gnunet-conversation.c:358 776#: src/conversation/gnunet-conversation.c:360
782#, c-format 777#, c-format
783msgid "Ego `%s' no longer available, phone is now down.\n" 778msgid "Ego `%s' no longer available, phone is now down.\n"
784msgstr "" 779msgstr ""
785 780
786#: src/conversation/gnunet-conversation.c:373 781#: src/conversation/gnunet-conversation.c:375
787msgid "Failed to setup phone (internal error)\n" 782msgid "Failed to setup phone (internal error)\n"
788msgstr "" 783msgstr ""
789 784
790#: src/conversation/gnunet-conversation.c:385 785#: src/conversation/gnunet-conversation.c:387
791#, c-format 786#, c-format
792msgid "Phone active at `%s'. Type `/help' for a list of available commands\n" 787msgid "Phone active at `%s'. Type `/help' for a list of available commands\n"
793msgstr "" 788msgstr ""
794 789
795#: src/conversation/gnunet-conversation.c:409 790#: src/conversation/gnunet-conversation.c:411
796#, c-format 791#, c-format
797msgid "Resolved address of `%s'. Now ringing other party.\n" 792msgid "Resolved address of `%s'. Now ringing other party.\n"
798msgstr "" 793msgstr ""
799 794
800#: src/conversation/gnunet-conversation.c:416 795#: src/conversation/gnunet-conversation.c:418
801#, c-format 796#, c-format
802msgid "Connection established to `%s'\n" 797msgid "Connection established to `%s'\n"
803msgstr "Connessione stabilita con `%s'\n" 798msgstr "Connessione stabilita con `%s'\n"
804 799
805#: src/conversation/gnunet-conversation.c:423 800#: src/conversation/gnunet-conversation.c:425
806#, c-format 801#, c-format
807msgid "Failed to resolve `%s'\n" 802msgid "Failed to resolve `%s'\n"
808msgstr "" 803msgstr ""
809 804
810#: src/conversation/gnunet-conversation.c:431 805#: src/conversation/gnunet-conversation.c:433
811#, c-format 806#, c-format
812msgid "Call to `%s' terminated\n" 807msgid "Call to `%s' terminated\n"
813msgstr "" 808msgstr ""
814 809
815#: src/conversation/gnunet-conversation.c:440 810#: src/conversation/gnunet-conversation.c:442
816#, c-format 811#, c-format
817msgid "Connection to `%s' suspended (by other user)\n" 812msgid "Connection to `%s' suspended (by other user)\n"
818msgstr "" 813msgstr ""
819 814
820#: src/conversation/gnunet-conversation.c:446 815#: src/conversation/gnunet-conversation.c:448
821#, c-format 816#, c-format
822msgid "Connection to `%s' resumed (by other user)\n" 817msgid "Connection to `%s' resumed (by other user)\n"
823msgstr "" 818msgstr ""
824 819
825#: src/conversation/gnunet-conversation.c:451 820#: src/conversation/gnunet-conversation.c:453
826msgid "Error with the call, restarting it\n" 821msgid "Error with the call, restarting it\n"
827msgstr "" 822msgstr ""
828 823
829#: src/conversation/gnunet-conversation.c:522 824#: src/conversation/gnunet-conversation.c:524
830#, c-format 825#, c-format
831msgid "Unknown command `%s'\n" 826msgid "Unknown command `%s'\n"
832msgstr "Comando `%s' sconosciuto.\n" 827msgstr "Comando `%s' sconosciuto.\n"
833 828
834#: src/conversation/gnunet-conversation.c:538 829#: src/conversation/gnunet-conversation.c:540
835#: src/conversation/gnunet-conversation.c:552 830#: src/conversation/gnunet-conversation.c:554
836#, c-format 831#, c-format
837msgid "Ego `%s' not available\n" 832msgid "Ego `%s' not available\n"
838msgstr "" 833msgstr ""
839 834
840#: src/conversation/gnunet-conversation.c:545 835#: src/conversation/gnunet-conversation.c:547
841#: src/conversation/gnunet-conversation.c:601 836#: src/conversation/gnunet-conversation.c:603
842msgid "You are calling someone else already, hang up first!\n" 837msgid "You are calling someone else already, hang up first!\n"
843msgstr "" 838msgstr ""
844 839
845#: src/conversation/gnunet-conversation.c:560 840#: src/conversation/gnunet-conversation.c:562
846#: src/conversation/gnunet-conversation.c:614 841#: src/conversation/gnunet-conversation.c:616
847#, c-format 842#, c-format
848msgid "You are answering call from `%s', hang up or suspend that call first!\n" 843msgid "You are answering call from `%s', hang up or suspend that call first!\n"
849msgstr "" 844msgstr ""
850 845
851#: src/conversation/gnunet-conversation.c:570 846#: src/conversation/gnunet-conversation.c:572
852msgid "Call recipient missing.\n" 847msgid "Call recipient missing.\n"
853msgstr "" 848msgstr ""
854 849
855#: src/conversation/gnunet-conversation.c:625 850#: src/conversation/gnunet-conversation.c:627
856msgid "There is no incoming call to accept here!\n" 851msgid "There is no incoming call to accept here!\n"
857msgstr "" 852msgstr ""
858 853
859#: src/conversation/gnunet-conversation.c:642 854#: src/conversation/gnunet-conversation.c:644
860#, c-format 855#, c-format
861msgid "There is no incoming call `%s' to accept right now!\n" 856msgid "There is no incoming call `%s' to accept right now!\n"
862msgstr "" 857msgstr ""
863 858
864#: src/conversation/gnunet-conversation.c:673 859#: src/conversation/gnunet-conversation.c:675
865msgid "We currently do not have an address.\n" 860msgid "We currently do not have an address.\n"
866msgstr "" 861msgstr ""
867 862
868#: src/conversation/gnunet-conversation.c:697 863#: src/conversation/gnunet-conversation.c:699
869#, c-format 864#, c-format
870msgid "We are currently trying to locate the private key for the ego `%s'.\n" 865msgid "We are currently trying to locate the private key for the ego `%s'.\n"
871msgstr "" 866msgstr ""
872 867
873#: src/conversation/gnunet-conversation.c:702 868#: src/conversation/gnunet-conversation.c:704
874#, c-format 869#, c-format
875msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n" 870msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n"
876msgstr "" 871msgstr ""
877 872
878#: src/conversation/gnunet-conversation.c:708 873#: src/conversation/gnunet-conversation.c:710
879#: src/conversation/gnunet-conversation.c:732 874#: src/conversation/gnunet-conversation.c:734
880#, c-format 875#, c-format
881msgid "You are having a conversation with `%s'.\n" 876msgid "You are having a conversation with `%s'.\n"
882msgstr "" 877msgstr ""
883 878
884#: src/conversation/gnunet-conversation.c:713 879#: src/conversation/gnunet-conversation.c:715
885msgid "" 880msgid ""
886"We had an internal error setting up our phone line. You can still make " 881"We had an internal error setting up our phone line. You can still make "
887"calls.\n" 882"calls.\n"
888msgstr "" 883msgstr ""
889 884
890#: src/conversation/gnunet-conversation.c:722 885#: src/conversation/gnunet-conversation.c:724
891#, c-format 886#, c-format
892msgid "We are trying to find the network address to call `%s'.\n" 887msgid "We are trying to find the network address to call `%s'.\n"
893msgstr "" 888msgstr ""
894 889
895#: src/conversation/gnunet-conversation.c:727 890#: src/conversation/gnunet-conversation.c:729
896#, c-format 891#, c-format
897msgid "We are calling `%s', their phone should be ringing.\n" 892msgid "We are calling `%s', their phone should be ringing.\n"
898msgstr "" 893msgstr ""
899 894
900#: src/conversation/gnunet-conversation.c:746 895#: src/conversation/gnunet-conversation.c:748
901msgid "Calls waiting:\n" 896msgid "Calls waiting:\n"
902msgstr "" 897msgstr ""
903 898
904#: src/conversation/gnunet-conversation.c:752 899#: src/conversation/gnunet-conversation.c:754
905#, c-format 900#, c-format
906msgid "#%u: `%s'\n" 901msgid "#%u: `%s'\n"
907msgstr "" 902msgstr ""
908 903
909#: src/conversation/gnunet-conversation.c:781 904#: src/conversation/gnunet-conversation.c:783
910#: src/conversation/gnunet-conversation.c:796 905#: src/conversation/gnunet-conversation.c:798
911msgid "There is no call that could be suspended right now.\n" 906msgid "There is no call that could be suspended right now.\n"
912msgstr "" 907msgstr ""
913 908
914#: src/conversation/gnunet-conversation.c:829 909#: src/conversation/gnunet-conversation.c:831
915#: src/conversation/gnunet-conversation.c:845 910#: src/conversation/gnunet-conversation.c:847
916msgid "There is no call that could be resumed right now.\n" 911msgid "There is no call that could be resumed right now.\n"
917msgstr "" 912msgstr ""
918 913
919#: src/conversation/gnunet-conversation.c:852 914#: src/conversation/gnunet-conversation.c:854
920#, c-format 915#, c-format
921msgid "Already talking with `%s', cannot resume a call right now.\n" 916msgid "Already talking with `%s', cannot resume a call right now.\n"
922msgstr "" 917msgstr ""
923 918
924#: src/conversation/gnunet-conversation.c:861 919#: src/conversation/gnunet-conversation.c:863
925msgid "There is no incoming call to resume here!\n" 920msgid "There is no incoming call to resume here!\n"
926msgstr "" 921msgstr ""
927 922
928#: src/conversation/gnunet-conversation.c:878 923#: src/conversation/gnunet-conversation.c:880
929#, c-format 924#, c-format
930msgid "There is no incoming call `%s' to resume right now!\n" 925msgid "There is no incoming call `%s' to resume right now!\n"
931msgstr "" 926msgstr ""
932 927
933#: src/conversation/gnunet-conversation.c:913 928#: src/conversation/gnunet-conversation.c:915
934msgid "There is no call that could be cancelled right now.\n" 929msgid "There is no call that could be cancelled right now.\n"
935msgstr "" 930msgstr ""
936 931
937#: src/conversation/gnunet-conversation.c:921 932#: src/conversation/gnunet-conversation.c:923
938msgid "There is no incoming call to refuse here!\n" 933msgid "There is no incoming call to refuse here!\n"
939msgstr "" 934msgstr ""
940 935
941#: src/conversation/gnunet-conversation.c:938 936#: src/conversation/gnunet-conversation.c:940
942#, c-format 937#, c-format
943msgid "There is no incoming call `%s' to refuse right now!\n" 938msgid "There is no incoming call `%s' to refuse right now!\n"
944msgstr "" 939msgstr ""
945 940
946#: src/conversation/gnunet-conversation.c:964 941#: src/conversation/gnunet-conversation.c:966
947msgid "Use `/address' to find out which address this phone should have in GNS" 942msgid "Use `/address' to find out which address this phone should have in GNS"
948msgstr "" 943msgstr ""
949 944
950#: src/conversation/gnunet-conversation.c:966 945#: src/conversation/gnunet-conversation.c:968
951msgid "Use `/call USER.gnu' to call USER" 946msgid "Use `/call USER.gnu' to call USER"
952msgstr "" 947msgstr ""
953 948
954#: src/conversation/gnunet-conversation.c:968 949#: src/conversation/gnunet-conversation.c:970
955msgid "Use `/accept #NUM' to accept incoming call #NUM" 950msgid "Use `/accept #NUM' to accept incoming call #NUM"
956msgstr "" 951msgstr ""
957 952
958#: src/conversation/gnunet-conversation.c:970 953#: src/conversation/gnunet-conversation.c:972
959msgid "Use `/suspend' to suspend the active call" 954msgid "Use `/suspend' to suspend the active call"
960msgstr "" 955msgstr ""
961 956
962#: src/conversation/gnunet-conversation.c:972 957#: src/conversation/gnunet-conversation.c:974
963msgid "" 958msgid ""
964"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming " 959"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming "
965"calls, no argument is needed to resume the current outgoing call." 960"calls, no argument is needed to resume the current outgoing call."
966msgstr "" 961msgstr ""
967 962
968#: src/conversation/gnunet-conversation.c:974 963#: src/conversation/gnunet-conversation.c:976
969msgid "Use `/cancel' to reject or terminate a call" 964msgid "Use `/cancel' to reject or terminate a call"
970msgstr "" 965msgstr ""
971 966
972#: src/conversation/gnunet-conversation.c:976 967#: src/conversation/gnunet-conversation.c:978
973msgid "Use `/status' to print status information" 968msgid "Use `/status' to print status information"
974msgstr "" 969msgstr ""
975 970
976#: src/conversation/gnunet-conversation.c:978 971#: src/conversation/gnunet-conversation.c:980
977msgid "Use `/quit' to terminate gnunet-conversation" 972msgid "Use `/quit' to terminate gnunet-conversation"
978msgstr "" 973msgstr ""
979 974
980#: src/conversation/gnunet-conversation.c:980 975#: src/conversation/gnunet-conversation.c:982
981msgid "Use `/help command' to get help for a specific command" 976msgid "Use `/help command' to get help for a specific command"
982msgstr "" 977msgstr ""
983 978
984#: src/conversation/gnunet-conversation.c:1196 979#: src/conversation/gnunet-conversation.c:1198
985#, c-format 980#, c-format
986msgid "Name of our ego changed to `%s'\n" 981msgid "Name of our ego changed to `%s'\n"
987msgstr "" 982msgstr ""
988 983
989#: src/conversation/gnunet-conversation.c:1209 984#: src/conversation/gnunet-conversation.c:1211
990#, c-format 985#, c-format
991msgid "Our ego `%s' was deleted!\n" 986msgid "Our ego `%s' was deleted!\n"
992msgstr "" 987msgstr ""
993 988
994#: src/conversation/gnunet-conversation.c:1247 989#: src/conversation/gnunet-conversation.c:1249
995msgid "You must specify the NAME of an ego to use\n" 990msgid "You must specify the NAME of an ego to use\n"
996msgstr "" 991msgstr ""
997 992
998#: src/conversation/gnunet-conversation.c:1271 993#: src/conversation/gnunet-conversation.c:1273
999msgid "Failed to start gnunet-helper-w32-console\n" 994msgid "Failed to start gnunet-helper-w32-console\n"
1000msgstr "" 995msgstr ""
1001 996
1002#: src/conversation/gnunet-conversation.c:1300 997#: src/conversation/gnunet-conversation.c:1302
1003msgid "sets the NAME of the ego to use for the caller ID" 998msgid "sets the NAME of the ego to use for the caller ID"
1004msgstr "" 999msgstr ""
1005 1000
1006#: src/conversation/gnunet-conversation.c:1305 1001#: src/conversation/gnunet-conversation.c:1307
1007msgid "sets the LINE to use for the phone" 1002msgid "sets the LINE to use for the phone"
1008msgstr "" 1003msgstr ""
1009 1004
1010#: src/conversation/gnunet-conversation.c:1334 1005#: src/conversation/gnunet-conversation.c:1336
1011msgid "Enables having a conversation with other GNUnet users." 1006msgid "Enables having a conversation with other GNUnet users."
1012msgstr "" 1007msgstr ""
1013 1008
1014#: src/conversation/gnunet-conversation-test.c:118 1009#: src/conversation/gnunet-conversation-test.c:120
1015#, c-format 1010#, c-format
1016msgid "" 1011msgid ""
1017"\n" 1012"\n"
1018"End of transmission. Have a GNU day.\n" 1013"End of transmission. Have a GNU day.\n"
1019msgstr "" 1014msgstr ""
1020 1015
1021#: src/conversation/gnunet-conversation-test.c:143 1016#: src/conversation/gnunet-conversation-test.c:145
1022#, c-format 1017#, c-format
1023msgid "" 1018msgid ""
1024"\n" 1019"\n"
@@ -1026,2405 +1021,2401 @@ msgid ""
1026"settings are working..." 1021"settings are working..."
1027msgstr "" 1022msgstr ""
1028 1023
1029#: src/conversation/gnunet-conversation-test.c:214 1024#: src/conversation/gnunet-conversation-test.c:216
1030#, c-format 1025#, c-format
1031msgid "" 1026msgid ""
1032"We will now be recording you for %s. After that time, the recording will be " 1027"We will now be recording you for %s. After that time, the recording will be "
1033"played back to you..." 1028"played back to you..."
1034msgstr "" 1029msgstr ""
1035 1030
1036#: src/conversation/gnunet_gst.c:620 1031#: src/conversation/gnunet_gst.c:622
1037#: src/conversation/gnunet-helper-audio-playback-gst.c:359 1032#: src/conversation/gnunet-helper-audio-playback-gst.c:361
1038#, c-format 1033#, c-format
1039msgid "Read error from STDIN: %d %s\n" 1034msgid "Read error from STDIN: %d %s\n"
1040msgstr "" 1035msgstr ""
1041 1036
1042#: src/conversation/gnunet-helper-audio-playback.c:323 1037#: src/conversation/gnunet-helper-audio-playback.c:325
1043#, c-format 1038#, c-format
1044msgid "pa_stream_write() failed: %s\n" 1039msgid "pa_stream_write() failed: %s\n"
1045msgstr "" 1040msgstr ""
1046 1041
1047#: src/conversation/gnunet-helper-audio-playback.c:625 1042#: src/conversation/gnunet-helper-audio-playback.c:627
1048msgid "gnunet-helper-audio-playback - Got signal, exiting\n" 1043msgid "gnunet-helper-audio-playback - Got signal, exiting\n"
1049msgstr "" 1044msgstr ""
1050 1045
1051#: src/conversation/gnunet-helper-audio-playback.c:651 1046#: src/conversation/gnunet-helper-audio-playback.c:653
1052#: src/conversation/gnunet-helper-audio-record.c:561 1047#: src/conversation/gnunet-helper-audio-record.c:563
1053msgid "Connection established.\n" 1048msgid "Connection established.\n"
1054msgstr "" 1049msgstr ""
1055 1050
1056#: src/conversation/gnunet-helper-audio-playback.c:656 1051#: src/conversation/gnunet-helper-audio-playback.c:658
1057#: src/conversation/gnunet-helper-audio-record.c:566 1052#: src/conversation/gnunet-helper-audio-record.c:568
1058#, c-format 1053#, c-format
1059msgid "pa_stream_new() failed: %s\n" 1054msgid "pa_stream_new() failed: %s\n"
1060msgstr "" 1055msgstr ""
1061 1056
1062#: src/conversation/gnunet-helper-audio-playback.c:670 1057#: src/conversation/gnunet-helper-audio-playback.c:672
1063#, c-format 1058#, c-format
1064msgid "pa_stream_connect_playback() failed: %s\n" 1059msgid "pa_stream_connect_playback() failed: %s\n"
1065msgstr "" 1060msgstr ""
1066 1061
1067#: src/conversation/gnunet-helper-audio-playback.c:683 1062#: src/conversation/gnunet-helper-audio-playback.c:685
1068#: src/conversation/gnunet-helper-audio-record.c:592 1063#: src/conversation/gnunet-helper-audio-record.c:594
1069#, c-format 1064#, c-format
1070msgid "Connection failure: %s\n" 1065msgid "Connection failure: %s\n"
1071msgstr "" 1066msgstr ""
1072 1067
1073#: src/conversation/gnunet-helper-audio-playback.c:704 1068#: src/conversation/gnunet-helper-audio-playback.c:706
1074#: src/conversation/gnunet-helper-audio-record.c:615 1069#: src/conversation/gnunet-helper-audio-record.c:617
1075msgid "Wrong Spec\n" 1070msgid "Wrong Spec\n"
1076msgstr "" 1071msgstr ""
1077 1072
1078#: src/conversation/gnunet-helper-audio-playback.c:710 1073#: src/conversation/gnunet-helper-audio-playback.c:712
1079#: src/conversation/gnunet-helper-audio-record.c:621 1074#: src/conversation/gnunet-helper-audio-record.c:623
1080msgid "pa_mainloop_new() failed.\n" 1075msgid "pa_mainloop_new() failed.\n"
1081msgstr "" 1076msgstr ""
1082 1077
1083#: src/conversation/gnunet-helper-audio-playback.c:724 1078#: src/conversation/gnunet-helper-audio-playback.c:726
1084#: src/conversation/gnunet-helper-audio-record.c:636 1079#: src/conversation/gnunet-helper-audio-record.c:638
1085msgid "pa_context_new() failed.\n" 1080msgid "pa_context_new() failed.\n"
1086msgstr "" 1081msgstr ""
1087 1082
1088#: src/conversation/gnunet-helper-audio-playback.c:731 1083#: src/conversation/gnunet-helper-audio-playback.c:733
1089#: src/conversation/gnunet-helper-audio-record.c:642 1084#: src/conversation/gnunet-helper-audio-record.c:644
1090#, c-format 1085#, c-format
1091msgid "pa_context_connect() failed: %s\n" 1086msgid "pa_context_connect() failed: %s\n"
1092msgstr "" 1087msgstr ""
1093 1088
1094#: src/conversation/gnunet-helper-audio-playback.c:737 1089#: src/conversation/gnunet-helper-audio-playback.c:739
1095#: src/conversation/gnunet-helper-audio-record.c:648 1090#: src/conversation/gnunet-helper-audio-record.c:650
1096msgid "pa_mainloop_run() failed.\n" 1091msgid "pa_mainloop_run() failed.\n"
1097msgstr "" 1092msgstr ""
1098 1093
1099#: src/conversation/gnunet-helper-audio-playback.c:816 1094#: src/conversation/gnunet-helper-audio-playback.c:818
1100#, c-format 1095#, c-format
1101msgid "Read error from STDIN: %s\n" 1096msgid "Read error from STDIN: %s\n"
1102msgstr "" 1097msgstr ""
1103 1098
1104#: src/conversation/gnunet-helper-audio-record.c:351 1099#: src/conversation/gnunet-helper-audio-record.c:353
1105#, c-format 1100#, c-format
1106msgid "opus_encode_float() failed: %s. Aborting\n" 1101msgid "opus_encode_float() failed: %s. Aborting\n"
1107msgstr "" 1102msgstr ""
1108 1103
1109#: src/conversation/gnunet-helper-audio-record.c:430 1104#: src/conversation/gnunet-helper-audio-record.c:432
1110#, c-format 1105#, c-format
1111msgid "pa_stream_peek() failed: %s\n" 1106msgid "pa_stream_peek() failed: %s\n"
1112msgstr "" 1107msgstr ""
1113 1108
1114#: src/conversation/gnunet-helper-audio-record.c:472 1109#: src/conversation/gnunet-helper-audio-record.c:474
1115msgid "Got signal, exiting.\n" 1110msgid "Got signal, exiting.\n"
1116msgstr "Segnale ricevuto. Uscita in corso.\n" 1111msgstr "Segnale ricevuto. Uscita in corso.\n"
1117 1112
1118#: src/conversation/gnunet-helper-audio-record.c:498 1113#: src/conversation/gnunet-helper-audio-record.c:500
1119msgid "Stream successfully created.\n" 1114msgid "Stream successfully created.\n"
1120msgstr "" 1115msgstr ""
1121 1116
1122#: src/conversation/gnunet-helper-audio-record.c:503 1117#: src/conversation/gnunet-helper-audio-record.c:505
1123#, c-format 1118#, c-format
1124msgid "pa_stream_get_buffer_attr() failed: %s\n" 1119msgid "pa_stream_get_buffer_attr() failed: %s\n"
1125msgstr "" 1120msgstr ""
1126 1121
1127#: src/conversation/gnunet-helper-audio-record.c:511 1122#: src/conversation/gnunet-helper-audio-record.c:513
1128#, c-format 1123#, c-format
1129msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" 1124msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
1130msgstr "" 1125msgstr ""
1131 1126
1132#: src/conversation/gnunet-helper-audio-record.c:515 1127#: src/conversation/gnunet-helper-audio-record.c:517
1133#, c-format 1128#, c-format
1134msgid "Using sample spec '%s', channel map '%s'.\n" 1129msgid "Using sample spec '%s', channel map '%s'.\n"
1135msgstr "" 1130msgstr ""
1136 1131
1137#: src/conversation/gnunet-helper-audio-record.c:522 1132#: src/conversation/gnunet-helper-audio-record.c:524
1138#, c-format 1133#, c-format
1139msgid "Connected to device %s (%u, %ssuspended).\n" 1134msgid "Connected to device %s (%u, %ssuspended).\n"
1140msgstr "" 1135msgstr ""
1141 1136
1142#: src/conversation/gnunet-helper-audio-record.c:531 1137#: src/conversation/gnunet-helper-audio-record.c:533
1143#, c-format 1138#, c-format
1144msgid "Stream error: %s\n" 1139msgid "Stream error: %s\n"
1145msgstr "" 1140msgstr ""
1146 1141
1147#: src/conversation/gnunet-helper-audio-record.c:579 1142#: src/conversation/gnunet-helper-audio-record.c:581
1148#, c-format 1143#, c-format
1149msgid "pa_stream_connect_record() failed: %s\n" 1144msgid "pa_stream_connect_record() failed: %s\n"
1150msgstr "" 1145msgstr ""
1151 1146
1152#: src/conversation/gnunet-helper-audio-record.c:693 1147#: src/conversation/gnunet-helper-audio-record.c:695
1153msgid "ogg_stream_init() failed.\n" 1148msgid "ogg_stream_init() failed.\n"
1154msgstr "" 1149msgstr ""
1155 1150
1156#: src/conversation/gnunet-helper-audio-record.c:738 1151#: src/conversation/gnunet-helper-audio-record.c:740
1157#, c-format 1152#, c-format
1158msgid "Failed to allocate %u bytes for second packet\n" 1153msgid "Failed to allocate %u bytes for second packet\n"
1159msgstr "" 1154msgstr ""
1160 1155
1161#: src/conversation/gnunet-service-conversation.c:1303 1156#: src/conversation/gnunet-service-conversation.c:1305
1162#, c-format 1157#, c-format
1163msgid "Could not open line, port %s already in use!\n" 1158msgid "Could not open line, port %s already in use!\n"
1164msgstr "" 1159msgstr ""
1165 1160
1166#: src/conversation/microphone.c:119 1161#: src/conversation/microphone.c:121
1167msgid "Could not start record audio helper\n" 1162msgid "Could not start record audio helper\n"
1168msgstr "" 1163msgstr ""
1169 1164
1170#: src/conversation/plugin_gnsrecord_conversation.c:70 1165#: src/conversation/plugin_gnsrecord_conversation.c:72
1171#, c-format 1166#, c-format
1172msgid "PHONE version %u not supported\n" 1167msgid "PHONE version %u not supported\n"
1173msgstr "" 1168msgstr ""
1174 1169
1175#: src/conversation/plugin_gnsrecord_conversation.c:133 1170#: src/conversation/plugin_gnsrecord_conversation.c:135
1176#: src/conversation/plugin_gnsrecord_conversation.c:147 1171#: src/conversation/plugin_gnsrecord_conversation.c:149
1177#, c-format 1172#, c-format
1178msgid "Unable to parse PHONE record `%s'\n" 1173msgid "Unable to parse PHONE record `%s'\n"
1179msgstr "" 1174msgstr ""
1180 1175
1181#: src/conversation/speaker.c:73 1176#: src/conversation/speaker.c:75
1182msgid "Could not start playback audio helper.\n" 1177msgid "Could not start playback audio helper.\n"
1183msgstr "" 1178msgstr ""
1184 1179
1185#: src/core/gnunet-core.c:88 1180#: src/core/gnunet-core.c:90
1186#, fuzzy 1181#, fuzzy
1187msgid "fresh connection" 1182msgid "fresh connection"
1188msgstr "# connessioni attive" 1183msgstr "# connessioni attive"
1189 1184
1190#: src/core/gnunet-core.c:91 1185#: src/core/gnunet-core.c:93
1191msgid "key sent" 1186msgid "key sent"
1192msgstr "" 1187msgstr ""
1193 1188
1194#: src/core/gnunet-core.c:94 1189#: src/core/gnunet-core.c:96
1195msgid "key received" 1190msgid "key received"
1196msgstr "" 1191msgstr ""
1197 1192
1198#: src/core/gnunet-core.c:97 1193#: src/core/gnunet-core.c:99
1199#, fuzzy 1194#, fuzzy
1200msgid "connection established" 1195msgid "connection established"
1201msgstr "Connessione stabilita con `%s'\n" 1196msgstr "Connessione stabilita con `%s'\n"
1202 1197
1203#: src/core/gnunet-core.c:100 1198#: src/core/gnunet-core.c:102
1204msgid "rekeying" 1199msgid "rekeying"
1205msgstr "" 1200msgstr ""
1206 1201
1207#: src/core/gnunet-core.c:103 1202#: src/core/gnunet-core.c:105
1208msgid "disconnected" 1203msgid "disconnected"
1209msgstr "" 1204msgstr ""
1210 1205
1211#: src/core/gnunet-core.c:110 1206#: src/core/gnunet-core.c:112
1212msgid "Connection to CORE service lost (reconnecting)" 1207msgid "Connection to CORE service lost (reconnecting)"
1213msgstr "" 1208msgstr ""
1214 1209
1215#: src/core/gnunet-core.c:113 1210#: src/core/gnunet-core.c:115
1216#, fuzzy 1211#, fuzzy
1217msgid "unknown state" 1212msgid "unknown state"
1218msgstr "indirizzo sconosciuto" 1213msgstr "indirizzo sconosciuto"
1219 1214
1220#: src/core/gnunet-core.c:118 1215#: src/core/gnunet-core.c:120
1221#, c-format 1216#, c-format
1222msgid "%24s: %-30s %4s (timeout in %6s)\n" 1217msgid "%24s: %-30s %4s (timeout in %6s)\n"
1223msgstr "" 1218msgstr ""
1224 1219
1225#: src/core/gnunet-core.c:142 src/peerinfo-tool/gnunet-peerinfo.c:726 1220#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
1226#, c-format 1221#, c-format
1227msgid "Invalid command line argument `%s'\n" 1222msgid "Invalid command line argument `%s'\n"
1228msgstr "" 1223msgstr ""
1229 1224
1230#: src/core/gnunet-core.c:153 1225#: src/core/gnunet-core.c:155
1231msgid "Failed to connect to CORE service!\n" 1226msgid "Failed to connect to CORE service!\n"
1232msgstr "" 1227msgstr ""
1233 1228
1234#: src/core/gnunet-core.c:175 src/transport/gnunet-transport.c:1447 1229#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
1235msgid "provide information about all current connections (continuously)" 1230msgid "provide information about all current connections (continuously)"
1236msgstr "" 1231msgstr ""
1237 1232
1238#: src/core/gnunet-core.c:184 1233#: src/core/gnunet-core.c:186
1239msgid "Print information about connected peers." 1234msgid "Print information about connected peers."
1240msgstr "" 1235msgstr ""
1241 1236
1242#: src/core/gnunet-service-core.c:345 1237#: src/core/gnunet-service-core.c:347
1243msgid "# send requests dropped (disconnected)" 1238msgid "# send requests dropped (disconnected)"
1244msgstr "" 1239msgstr ""
1245 1240
1246#: src/core/gnunet-service-core.c:369 1241#: src/core/gnunet-service-core.c:371
1247msgid "# dequeuing CAR (duplicate request)" 1242msgid "# dequeuing CAR (duplicate request)"
1248msgstr "" 1243msgstr ""
1249 1244
1250#: src/core/gnunet-service-core.c:441 1245#: src/core/gnunet-service-core.c:443
1251#, c-format 1246#, c-format
1252msgid "# bytes of messages of type %u received" 1247msgid "# bytes of messages of type %u received"
1253msgstr "" 1248msgstr ""
1254 1249
1255#: src/core/gnunet-service-core.c:539 1250#: src/core/gnunet-service-core.c:541
1256msgid "# messages discarded (session disconnected)" 1251msgid "# messages discarded (session disconnected)"
1257msgstr "" 1252msgstr ""
1258 1253
1259#: src/core/gnunet-service-core.c:877 1254#: src/core/gnunet-service-core.c:879
1260#, c-format 1255#, c-format
1261msgid "# messages of type %u discarded (client busy)" 1256msgid "# messages of type %u discarded (client busy)"
1262msgstr "" 1257msgstr ""
1263 1258
1264#: src/core/gnunet-service-core.c:986 1259#: src/core/gnunet-service-core.c:988
1265msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" 1260msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n"
1266msgstr "" 1261msgstr ""
1267 1262
1268#: src/core/gnunet-service-core.c:1007 1263#: src/core/gnunet-service-core.c:1009
1269#, fuzzy, c-format 1264#, fuzzy, c-format
1270msgid "Core service of `%s' ready.\n" 1265msgid "Core service of `%s' ready.\n"
1271msgstr "Avvio del servizio '%s' in corso\n" 1266msgstr "Avvio del servizio '%s' in corso\n"
1272 1267
1273#: src/core/gnunet-service-core_kx.c:615 1268#: src/core/gnunet-service-core_kx.c:617
1274msgid "# bytes encrypted" 1269msgid "# bytes encrypted"
1275msgstr "# byte crittografati" 1270msgstr "# byte crittografati"
1276 1271
1277#: src/core/gnunet-service-core_kx.c:675 1272#: src/core/gnunet-service-core_kx.c:677
1278msgid "# bytes decrypted" 1273msgid "# bytes decrypted"
1279msgstr "" 1274msgstr ""
1280 1275
1281#: src/core/gnunet-service-core_kx.c:777 1276#: src/core/gnunet-service-core_kx.c:779
1282msgid "# PAYLOAD dropped (out of order)" 1277msgid "# PAYLOAD dropped (out of order)"
1283msgstr "" 1278msgstr ""
1284 1279
1285#: src/core/gnunet-service-core_kx.c:827 1280#: src/core/gnunet-service-core_kx.c:829
1286msgid "# key exchanges initiated" 1281msgid "# key exchanges initiated"
1287msgstr "" 1282msgstr ""
1288 1283
1289#: src/core/gnunet-service-core_kx.c:889 1284#: src/core/gnunet-service-core_kx.c:891
1290msgid "# key exchanges stopped" 1285msgid "# key exchanges stopped"
1291msgstr "" 1286msgstr ""
1292 1287
1293#: src/core/gnunet-service-core_kx.c:923 1288#: src/core/gnunet-service-core_kx.c:925
1294#, fuzzy 1289#, fuzzy
1295msgid "# PING messages transmitted" 1290msgid "# PING messages transmitted"
1296msgstr "# messaggi PONG ricevuti" 1291msgstr "# messaggi PONG ricevuti"
1297 1292
1298#: src/core/gnunet-service-core_kx.c:990 1293#: src/core/gnunet-service-core_kx.c:992
1299msgid "# old ephemeral keys ignored" 1294msgid "# old ephemeral keys ignored"
1300msgstr "" 1295msgstr ""
1301 1296
1302#: src/core/gnunet-service-core_kx.c:1003 1297#: src/core/gnunet-service-core_kx.c:1005
1303msgid "# duplicate ephemeral keys ignored" 1298msgid "# duplicate ephemeral keys ignored"
1304msgstr "" 1299msgstr ""
1305 1300
1306#: src/core/gnunet-service-core_kx.c:1038 1301#: src/core/gnunet-service-core_kx.c:1040
1307msgid "# EPHEMERAL_KEYs rejected (bad signature)" 1302msgid "# EPHEMERAL_KEYs rejected (bad signature)"
1308msgstr "" 1303msgstr ""
1309 1304
1310#: src/core/gnunet-service-core_kx.c:1052 1305#: src/core/gnunet-service-core_kx.c:1054
1311#, c-format 1306#, c-format
1312msgid "" 1307msgid ""
1313"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match " 1308"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
1314"our system time (%llu not in [%llu,%llu]).\n" 1309"our system time (%llu not in [%llu,%llu]).\n"
1315msgstr "" 1310msgstr ""
1316 1311
1317#: src/core/gnunet-service-core_kx.c:1058 1312#: src/core/gnunet-service-core_kx.c:1060
1318msgid "# EPHEMERAL_KEY messages rejected due to time" 1313msgid "# EPHEMERAL_KEY messages rejected due to time"
1319msgstr "" 1314msgstr ""
1320 1315
1321#: src/core/gnunet-service-core_kx.c:1078 1316#: src/core/gnunet-service-core_kx.c:1080
1322#, fuzzy 1317#, fuzzy
1323msgid "# valid ephemeral keys received" 1318msgid "# valid ephemeral keys received"
1324msgstr "# messaggi PONG ricevuti" 1319msgstr "# messaggi PONG ricevuti"
1325 1320
1326#: src/core/gnunet-service-core_kx.c:1178 1321#: src/core/gnunet-service-core_kx.c:1180
1327#: src/transport/gnunet-service-transport_validation.c:1126 1322#: src/transport/gnunet-service-transport_validation.c:1128
1328msgid "# PING messages received" 1323msgid "# PING messages received"
1329msgstr "" 1324msgstr ""
1330 1325
1331#: src/core/gnunet-service-core_kx.c:1187 1326#: src/core/gnunet-service-core_kx.c:1189
1332msgid "# PING messages dropped (out of order)" 1327msgid "# PING messages dropped (out of order)"
1333msgstr "" 1328msgstr ""
1334 1329
1335#: src/core/gnunet-service-core_kx.c:1246 1330#: src/core/gnunet-service-core_kx.c:1248
1336msgid "# PONG messages created" 1331msgid "# PONG messages created"
1337msgstr "" 1332msgstr ""
1338 1333
1339#: src/core/gnunet-service-core_kx.c:1272 1334#: src/core/gnunet-service-core_kx.c:1274
1340msgid "# sessions terminated by timeout" 1335msgid "# sessions terminated by timeout"
1341msgstr "" 1336msgstr ""
1342 1337
1343#: src/core/gnunet-service-core_kx.c:1285 1338#: src/core/gnunet-service-core_kx.c:1287
1344msgid "# keepalive messages sent" 1339msgid "# keepalive messages sent"
1345msgstr "" 1340msgstr ""
1346 1341
1347#: src/core/gnunet-service-core_kx.c:1349 1342#: src/core/gnunet-service-core_kx.c:1351
1348#: src/transport/gnunet-service-transport_validation.c:1459 1343#: src/transport/gnunet-service-transport_validation.c:1461
1349msgid "# PONG messages received" 1344msgid "# PONG messages received"
1350msgstr "# messaggi PONG ricevuti" 1345msgstr "# messaggi PONG ricevuti"
1351 1346
1352#: src/core/gnunet-service-core_kx.c:1356 1347#: src/core/gnunet-service-core_kx.c:1358
1353msgid "# PONG messages dropped (connection down)" 1348msgid "# PONG messages dropped (connection down)"
1354msgstr "" 1349msgstr ""
1355 1350
1356#: src/core/gnunet-service-core_kx.c:1361 1351#: src/core/gnunet-service-core_kx.c:1363
1357msgid "# PONG messages dropped (out of order)" 1352msgid "# PONG messages dropped (out of order)"
1358msgstr "" 1353msgstr ""
1359 1354
1360#: src/core/gnunet-service-core_kx.c:1396 1355#: src/core/gnunet-service-core_kx.c:1398
1361msgid "# PONG messages decrypted" 1356msgid "# PONG messages decrypted"
1362msgstr "# messaggi PONG decrittati" 1357msgstr "# messaggi PONG decrittati"
1363 1358
1364#: src/core/gnunet-service-core_kx.c:1434 1359#: src/core/gnunet-service-core_kx.c:1436
1365msgid "# session keys confirmed via PONG" 1360msgid "# session keys confirmed via PONG"
1366msgstr "" 1361msgstr ""
1367 1362
1368#: src/core/gnunet-service-core_kx.c:1445 1363#: src/core/gnunet-service-core_kx.c:1447
1369msgid "# timeouts prevented via PONG" 1364msgid "# timeouts prevented via PONG"
1370msgstr "" 1365msgstr ""
1371 1366
1372#: src/core/gnunet-service-core_kx.c:1452 1367#: src/core/gnunet-service-core_kx.c:1454
1373msgid "# rekey operations confirmed via PONG" 1368msgid "# rekey operations confirmed via PONG"
1374msgstr "" 1369msgstr ""
1375 1370
1376#: src/core/gnunet-service-core_kx.c:1640 1371#: src/core/gnunet-service-core_kx.c:1642
1377msgid "# DATA message dropped (out of order)" 1372msgid "# DATA message dropped (out of order)"
1378msgstr "" 1373msgstr ""
1379 1374
1380#: src/core/gnunet-service-core_kx.c:1648 1375#: src/core/gnunet-service-core_kx.c:1650
1381#, c-format 1376#, c-format
1382msgid "" 1377msgid ""
1383"Session to peer `%s' went down due to key expiration (should not happen)\n" 1378"Session to peer `%s' went down due to key expiration (should not happen)\n"
1384msgstr "" 1379msgstr ""
1385 1380
1386#: src/core/gnunet-service-core_kx.c:1651 1381#: src/core/gnunet-service-core_kx.c:1653
1387msgid "# sessions terminated by key expiration" 1382msgid "# sessions terminated by key expiration"
1388msgstr "" 1383msgstr ""
1389 1384
1390#: src/core/gnunet-service-core_kx.c:1740 1385#: src/core/gnunet-service-core_kx.c:1742
1391#: src/core/gnunet-service-core_kx.c:1766 1386#: src/core/gnunet-service-core_kx.c:1768
1392msgid "# bytes dropped (duplicates)" 1387msgid "# bytes dropped (duplicates)"
1393msgstr "" 1388msgstr ""
1394 1389
1395#: src/core/gnunet-service-core_kx.c:1753 1390#: src/core/gnunet-service-core_kx.c:1755
1396msgid "# bytes dropped (out of sequence)" 1391msgid "# bytes dropped (out of sequence)"
1397msgstr "" 1392msgstr ""
1398 1393
1399#: src/core/gnunet-service-core_kx.c:1795 1394#: src/core/gnunet-service-core_kx.c:1797
1400msgid "# bytes dropped (ancient message)" 1395msgid "# bytes dropped (ancient message)"
1401msgstr "" 1396msgstr ""
1402 1397
1403#: src/core/gnunet-service-core_kx.c:1803 1398#: src/core/gnunet-service-core_kx.c:1805
1404msgid "# bytes of payload decrypted" 1399msgid "# bytes of payload decrypted"
1405msgstr "" 1400msgstr ""
1406 1401
1407#: src/core/gnunet-service-core_sessions.c:258 1402#: src/core/gnunet-service-core_sessions.c:260
1408#: src/core/gnunet-service-core_sessions.c:348 1403#: src/core/gnunet-service-core_sessions.c:350
1409#: src/dht/gnunet-service-dht_neighbours.c:739 1404#: src/dht/gnunet-service-dht_neighbours.c:741
1410#: src/dht/gnunet-service-dht_neighbours.c:802 1405#: src/dht/gnunet-service-dht_neighbours.c:804
1411#: src/fs/gnunet-service-fs_cp.c:613 src/fs/gnunet-service-fs_cp.c:1520 1406#: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
1412#: src/topology/gnunet-daemon-topology.c:615 1407#: src/topology/gnunet-daemon-topology.c:617
1413#: src/topology/gnunet-daemon-topology.c:717 1408#: src/topology/gnunet-daemon-topology.c:719
1414#: src/transport/gnunet-service-transport_neighbours.c:719 1409#: src/transport/gnunet-service-transport_neighbours.c:720
1415#: src/transport/gnunet-service-transport_neighbours.c:727 1410#: src/transport/gnunet-service-transport_neighbours.c:728
1416msgid "# peers connected" 1411msgid "# peers connected"
1417msgstr "" 1412msgstr ""
1418 1413
1419#: src/core/gnunet-service-core_sessions.c:294 1414#: src/core/gnunet-service-core_sessions.c:296
1420msgid "# type map refreshes sent" 1415msgid "# type map refreshes sent"
1421msgstr "" 1416msgstr ""
1422 1417
1423#: src/core/gnunet-service-core_sessions.c:414 1418#: src/core/gnunet-service-core_sessions.c:416
1424msgid "# outdated typemap confirmations received" 1419msgid "# outdated typemap confirmations received"
1425msgstr "" 1420msgstr ""
1426 1421
1427#: src/core/gnunet-service-core_sessions.c:431 1422#: src/core/gnunet-service-core_sessions.c:433
1428msgid "# valid typemap confirmations received" 1423msgid "# valid typemap confirmations received"
1429msgstr "" 1424msgstr ""
1430 1425
1431#: src/core/gnunet-service-core_typemap.c:167 1426#: src/core/gnunet-service-core_typemap.c:169
1432#: src/core/gnunet-service-core_typemap.c:179 1427#: src/core/gnunet-service-core_typemap.c:181
1433msgid "# type maps received" 1428msgid "# type maps received"
1434msgstr "" 1429msgstr ""
1435 1430
1436#: src/core/gnunet-service-core_typemap.c:210 1431#: src/core/gnunet-service-core_typemap.c:212
1437msgid "# updates to my type map" 1432msgid "# updates to my type map"
1438msgstr "" 1433msgstr ""
1439 1434
1440#: src/credential/credential_misc.c:86 1435#: src/credential/credential_misc.c:88
1441#, c-format 1436#, c-format
1442msgid "Unable to parse CRED record string `%s'\n" 1437msgid "Unable to parse CRED record string `%s'\n"
1443msgstr "" 1438msgstr ""
1444 1439
1445#: src/credential/gnunet-credential.c:262 src/namestore/gnunet-namestore.c:887 1440#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
1446#, c-format 1441#, c-format
1447msgid "Ego `%s' not known to identity service\n" 1442msgid "Ego `%s' not known to identity service\n"
1448msgstr "" 1443msgstr ""
1449 1444
1450#: src/credential/gnunet-credential.c:278 1445#: src/credential/gnunet-credential.c:280
1451#: src/credential/gnunet-credential.c:432 1446#: src/credential/gnunet-credential.c:434
1452#, c-format 1447#, c-format
1453msgid "Issuer public key `%s' is not well-formed\n" 1448msgid "Issuer public key `%s' is not well-formed\n"
1454msgstr "" 1449msgstr ""
1455 1450
1456#: src/credential/gnunet-credential.c:359 1451#: src/credential/gnunet-credential.c:361
1457#: src/credential/gnunet-credential.c:421 1452#: src/credential/gnunet-credential.c:423
1458#, c-format 1453#, c-format
1459msgid "Issuer public key not well-formed\n" 1454msgid "Issuer public key not well-formed\n"
1460msgstr "" 1455msgstr ""
1461 1456
1462#: src/credential/gnunet-credential.c:370 1457#: src/credential/gnunet-credential.c:372
1463#: src/credential/gnunet-credential.c:442 1458#: src/credential/gnunet-credential.c:444
1464#, c-format 1459#, c-format
1465msgid "Failed to connect to CREDENTIAL\n" 1460msgid "Failed to connect to CREDENTIAL\n"
1466msgstr "" 1461msgstr ""
1467 1462
1468#: src/credential/gnunet-credential.c:377 1463#: src/credential/gnunet-credential.c:379
1469#, c-format 1464#, c-format
1470msgid "You must provide issuer the attribute\n" 1465msgid "You must provide issuer the attribute\n"
1471msgstr "" 1466msgstr ""
1472 1467
1473#: src/credential/gnunet-credential.c:385 1468#: src/credential/gnunet-credential.c:387
1474#, c-format 1469#, c-format
1475msgid "ego required\n" 1470msgid "ego required\n"
1476msgstr "" 1471msgstr ""
1477 1472
1478#: src/credential/gnunet-credential.c:401 1473#: src/credential/gnunet-credential.c:403
1479#, c-format 1474#, c-format
1480msgid "Subject public key needed\n" 1475msgid "Subject public key needed\n"
1481msgstr "" 1476msgstr ""
1482 1477
1483#: src/credential/gnunet-credential.c:412 1478#: src/credential/gnunet-credential.c:414
1484#, c-format 1479#, c-format
1485msgid "Subject public key `%s' is not well-formed\n" 1480msgid "Subject public key `%s' is not well-formed\n"
1486msgstr "" 1481msgstr ""
1487 1482
1488#: src/credential/gnunet-credential.c:449 1483#: src/credential/gnunet-credential.c:451
1489#, c-format 1484#, c-format
1490msgid "You must provide issuer and subject attributes\n" 1485msgid "You must provide issuer and subject attributes\n"
1491msgstr "" 1486msgstr ""
1492 1487
1493#: src/credential/gnunet-credential.c:502 1488#: src/credential/gnunet-credential.c:504
1494#, c-format 1489#, c-format
1495msgid "Issuer ego required\n" 1490msgid "Issuer ego required\n"
1496msgstr "" 1491msgstr ""
1497 1492
1498#: src/credential/gnunet-credential.c:514 1493#: src/credential/gnunet-credential.c:516
1499#, c-format 1494#, c-format
1500msgid "Please specify name to lookup, subject key and issuer key!\n" 1495msgid "Please specify name to lookup, subject key and issuer key!\n"
1501msgstr "" 1496msgstr ""
1502 1497
1503#: src/credential/gnunet-credential.c:534 1498#: src/credential/gnunet-credential.c:536
1504msgid "create credential" 1499msgid "create credential"
1505msgstr "" 1500msgstr ""
1506 1501
1507#: src/credential/gnunet-credential.c:538 1502#: src/credential/gnunet-credential.c:540
1508msgid "verify credential against attribute" 1503msgid "verify credential against attribute"
1509msgstr "" 1504msgstr ""
1510 1505
1511#: src/credential/gnunet-credential.c:543 1506#: src/credential/gnunet-credential.c:545
1512msgid "The public key of the subject to lookup the credential for" 1507msgid "The public key of the subject to lookup the credential for"
1513msgstr "" 1508msgstr ""
1514 1509
1515#: src/credential/gnunet-credential.c:548 1510#: src/credential/gnunet-credential.c:550
1516msgid "The name of the credential presented by the subject" 1511msgid "The name of the credential presented by the subject"
1517msgstr "" 1512msgstr ""
1518 1513
1519#: src/credential/gnunet-credential.c:553 1514#: src/credential/gnunet-credential.c:555
1520msgid "The public key of the authority to verify the credential against" 1515msgid "The public key of the authority to verify the credential against"
1521msgstr "" 1516msgstr ""
1522 1517
1523#: src/credential/gnunet-credential.c:558 1518#: src/credential/gnunet-credential.c:560
1524msgid "The ego to use" 1519msgid "The ego to use"
1525msgstr "" 1520msgstr ""
1526 1521
1527#: src/credential/gnunet-credential.c:563 1522#: src/credential/gnunet-credential.c:565
1528msgid "The issuer attribute to verify against or to issue" 1523msgid "The issuer attribute to verify against or to issue"
1529msgstr "" 1524msgstr ""
1530 1525
1531#: src/credential/gnunet-credential.c:568 1526#: src/credential/gnunet-credential.c:570
1532msgid "The time to live for the credential" 1527msgid "The time to live for the credential"
1533msgstr "" 1528msgstr ""
1534 1529
1535#: src/credential/gnunet-credential.c:572 1530#: src/credential/gnunet-credential.c:574
1536msgid "collect credentials" 1531msgid "collect credentials"
1537msgstr "" 1532msgstr ""
1538 1533
1539#: src/credential/gnunet-credential.c:586 1534#: src/credential/gnunet-credential.c:588
1540msgid "GNUnet credential resolver tool" 1535msgid "GNUnet credential resolver tool"
1541msgstr "" 1536msgstr ""
1542 1537
1543#: src/credential/gnunet-service-credential.c:1136 src/gns/gnunet-gns.c:183 1538#: src/credential/gnunet-service-credential.c:1138 src/gns/gnunet-gns.c:185
1544#: src/gns/gnunet-gns-helper-service-w32.c:725 1539#: src/gns/gnunet-gns-helper-service-w32.c:727
1545#, c-format 1540#, c-format
1546msgid "Failed to connect to GNS\n" 1541msgid "Failed to connect to GNS\n"
1547msgstr "" 1542msgstr ""
1548 1543
1549#: src/credential/gnunet-service-credential.c:1142 1544#: src/credential/gnunet-service-credential.c:1144
1550#: src/namestore/gnunet-namestore.c:913 1545#: src/namestore/gnunet-namestore.c:1019
1551#: src/namestore/gnunet-namestore-fcfsd.c:1136 1546#: src/namestore/gnunet-namestore-fcfsd.c:1138
1552#, c-format 1547#, c-format
1553msgid "Failed to connect to namestore\n" 1548msgid "Failed to connect to namestore\n"
1554msgstr "" 1549msgstr ""
1555 1550
1556#: src/credential/plugin_gnsrecord_credential.c:184 1551#: src/credential/plugin_gnsrecord_credential.c:186
1557#, c-format 1552#, c-format
1558msgid "Unable to parse ATTR record string `%s'\n" 1553msgid "Unable to parse ATTR record string `%s'\n"
1559msgstr "" 1554msgstr ""
1560 1555
1561#: src/datacache/datacache.c:117 src/datacache/datacache.c:309 1556#: src/datacache/datacache.c:119 src/datacache/datacache.c:311
1562#: src/datastore/gnunet-service-datastore.c:755 1557#: src/datastore/gnunet-service-datastore.c:757
1563msgid "# bytes stored" 1558msgid "# bytes stored"
1564msgstr "" 1559msgstr ""
1565 1560
1566#: src/datacache/datacache.c:121 src/datacache/datacache.c:313 1561#: src/datacache/datacache.c:123 src/datacache/datacache.c:315
1567msgid "# items stored" 1562msgid "# items stored"
1568msgstr "# elementi memorizzati" 1563msgstr "# elementi memorizzati"
1569 1564
1570#: src/datacache/datacache.c:204 1565#: src/datacache/datacache.c:206
1571#, c-format 1566#, c-format
1572msgid "Loading `%s' datacache plugin\n" 1567msgid "Loading `%s' datacache plugin\n"
1573msgstr "" 1568msgstr ""
1574 1569
1575#: src/datacache/datacache.c:215 1570#: src/datacache/datacache.c:217
1576#, c-format 1571#, c-format
1577msgid "Failed to load datacache plugin for `%s'\n" 1572msgid "Failed to load datacache plugin for `%s'\n"
1578msgstr "" 1573msgstr ""
1579 1574
1580#: src/datacache/datacache.c:343 1575#: src/datacache/datacache.c:345
1581msgid "# requests received" 1576msgid "# requests received"
1582msgstr "" 1577msgstr ""
1583 1578
1584#: src/datacache/datacache.c:353 1579#: src/datacache/datacache.c:355
1585msgid "# requests filtered by bloom filter" 1580msgid "# requests filtered by bloom filter"
1586msgstr "" 1581msgstr ""
1587 1582
1588#: src/datacache/datacache.c:383 1583#: src/datacache/datacache.c:385
1589msgid "# requests for random value received" 1584msgid "# requests for random value received"
1590msgstr "" 1585msgstr ""
1591 1586
1592#: src/datacache/datacache.c:415 1587#: src/datacache/datacache.c:417
1593msgid "# proximity search requests received" 1588msgid "# proximity search requests received"
1594msgstr "" 1589msgstr ""
1595 1590
1596#: src/datacache/plugin_datacache_heap.c:551 1591#: src/datacache/plugin_datacache_heap.c:553
1597msgid "Heap datacache running\n" 1592msgid "Heap datacache running\n"
1598msgstr "" 1593msgstr ""
1599 1594
1600#: src/datacache/plugin_datacache_sqlite.c:116 1595#: src/datacache/plugin_datacache_sqlite.c:118
1601#: src/datacache/plugin_datacache_sqlite.c:125 1596#: src/datacache/plugin_datacache_sqlite.c:127
1602#: src/datastore/plugin_datastore_mysql.c:890 1597#: src/datastore/plugin_datastore_mysql.c:892
1603#: src/datastore/plugin_datastore_sqlite.c:56 1598#: src/datastore/plugin_datastore_sqlite.c:58
1604#: src/datastore/plugin_datastore_sqlite.c:64 src/my/my.c:79 src/my/my.c:91 1599#: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
1605#: src/mysql/mysql.c:40 src/mysql/mysql.c:47 1600#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
1606#: src/namecache/plugin_namecache_sqlite.c:50 1601#: src/namecache/plugin_namecache_sqlite.c:52
1607#: src/namestore/plugin_namestore_sqlite.c:51 1602#: src/namestore/plugin_namestore_sqlite.c:53
1608#: src/peerstore/plugin_peerstore_sqlite.c:50 1603#: src/peerstore/plugin_peerstore_sqlite.c:52
1609#: src/psycstore/plugin_psycstore_mysql.c:60 1604#: src/reclaim/plugin_reclaim_sqlite.c:52
1610#: src/reclaim/plugin_reclaim_sqlite.c:50 1605#: src/testbed/generate-underlay-topology.c:47
1611#: src/testbed/generate-underlay-topology.c:45 1606#: src/testbed/gnunet-daemon-latency-logger.c:52
1612#: src/testbed/gnunet-daemon-latency-logger.c:50 1607#: src/testbed/gnunet-daemon-testbed-underlay.c:56
1613#: src/testbed/gnunet-daemon-testbed-underlay.c:54 1608#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
1614#: src/testbed/testbed_api_hosts.c:67 src/util/crypto_ecc.c:51 1609#: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
1615#: src/util/crypto_ecc_setup.c:39 src/util/crypto_mpi.c:37 1610#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
1616#: src/include/gnunet_common.h:816 src/include/gnunet_common.h:825 1611#: src/scalarproduct/scalarproduct.h:35
1617#: src/scalarproduct/scalarproduct.h:33
1618#, c-format 1612#, c-format
1619msgid "`%s' failed at %s:%d with error: %s\n" 1613msgid "`%s' failed at %s:%d with error: %s\n"
1620msgstr "" 1614msgstr ""
1621 1615
1622#: src/datacache/plugin_datacache_sqlite.c:861 1616#: src/datacache/plugin_datacache_sqlite.c:863
1623#: src/datastore/plugin_datastore_sqlite.c:506 1617#: src/datastore/plugin_datastore_sqlite.c:508
1624#: src/namecache/plugin_namecache_sqlite.c:327 1618#: src/namecache/plugin_namecache_sqlite.c:229
1625#: src/namestore/plugin_namestore_sqlite.c:262 1619#: src/namestore/plugin_namestore_sqlite.c:265
1626#: src/reclaim/plugin_reclaim_sqlite.c:334 1620#: src/reclaim/plugin_reclaim_sqlite.c:336
1627msgid "Tried to close sqlite without finalizing all prepared statements.\n" 1621msgid "Tried to close sqlite without finalizing all prepared statements.\n"
1628msgstr "" 1622msgstr ""
1629 1623
1630#: src/datastore/datastore_api.c:346 1624#: src/datastore/datastore_api.c:348
1631msgid "DATASTORE disconnected" 1625msgid "DATASTORE disconnected"
1632msgstr "" 1626msgstr ""
1633 1627
1634#: src/datastore/datastore_api.c:466 1628#: src/datastore/datastore_api.c:468
1635msgid "Disconnected from DATASTORE" 1629msgid "Disconnected from DATASTORE"
1636msgstr "" 1630msgstr ""
1637 1631
1638#: src/datastore/datastore_api.c:567 1632#: src/datastore/datastore_api.c:569
1639msgid "# queue overflows" 1633msgid "# queue overflows"
1640msgstr "" 1634msgstr ""
1641 1635
1642#: src/datastore/datastore_api.c:597 1636#: src/datastore/datastore_api.c:599
1643msgid "# queue entries created" 1637msgid "# queue entries created"
1644msgstr "" 1638msgstr ""
1645 1639
1646#: src/datastore/datastore_api.c:758 1640#: src/datastore/datastore_api.c:760
1647msgid "# status messages received" 1641msgid "# status messages received"
1648msgstr "" 1642msgstr ""
1649 1643
1650#: src/datastore/datastore_api.c:812 1644#: src/datastore/datastore_api.c:814
1651msgid "# Results received" 1645msgid "# Results received"
1652msgstr "" 1646msgstr ""
1653 1647
1654#: src/datastore/datastore_api.c:918 1648#: src/datastore/datastore_api.c:920
1655msgid "# datastore connections (re)created" 1649msgid "# datastore connections (re)created"
1656msgstr "" 1650msgstr ""
1657 1651
1658#: src/datastore/datastore_api.c:1032 1652#: src/datastore/datastore_api.c:1034
1659msgid "# PUT requests executed" 1653msgid "# PUT requests executed"
1660msgstr "" 1654msgstr ""
1661 1655
1662#: src/datastore/datastore_api.c:1093 1656#: src/datastore/datastore_api.c:1095
1663msgid "# RESERVE requests executed" 1657msgid "# RESERVE requests executed"
1664msgstr "" 1658msgstr ""
1665 1659
1666#: src/datastore/datastore_api.c:1158 1660#: src/datastore/datastore_api.c:1160
1667msgid "# RELEASE RESERVE requests executed" 1661msgid "# RELEASE RESERVE requests executed"
1668msgstr "" 1662msgstr ""
1669 1663
1670#: src/datastore/datastore_api.c:1236 1664#: src/datastore/datastore_api.c:1238
1671msgid "# REMOVE requests executed" 1665msgid "# REMOVE requests executed"
1672msgstr "" 1666msgstr ""
1673 1667
1674#: src/datastore/datastore_api.c:1296 1668#: src/datastore/datastore_api.c:1298
1675msgid "# GET REPLICATION requests executed" 1669msgid "# GET REPLICATION requests executed"
1676msgstr "" 1670msgstr ""
1677 1671
1678#: src/datastore/datastore_api.c:1358 1672#: src/datastore/datastore_api.c:1360
1679msgid "# GET ZERO ANONYMITY requests executed" 1673msgid "# GET ZERO ANONYMITY requests executed"
1680msgstr "" 1674msgstr ""
1681 1675
1682#: src/datastore/datastore_api.c:1439 1676#: src/datastore/datastore_api.c:1441
1683msgid "# GET requests executed" 1677msgid "# GET requests executed"
1684msgstr "" 1678msgstr ""
1685 1679
1686#: src/datastore/gnunet-datastore.c:187 1680#: src/datastore/gnunet-datastore.c:189
1687#, c-format 1681#, c-format
1688msgid "Dumped %<PRIu64> records\n" 1682msgid "Dumped %<PRIu64> records\n"
1689msgstr "" 1683msgstr ""
1690 1684
1691#: src/datastore/gnunet-datastore.c:215 src/datastore/gnunet-datastore.c:227 1685#: src/datastore/gnunet-datastore.c:217 src/datastore/gnunet-datastore.c:229
1692#, c-format 1686#, c-format
1693msgid "Short write to file: %zd bytes expecting %zd\n" 1687msgid "Short write to file: %zd bytes expecting %zd\n"
1694msgstr "" 1688msgstr ""
1695 1689
1696#: src/datastore/gnunet-datastore.c:259 1690#: src/datastore/gnunet-datastore.c:261
1697msgid "Error queueing datastore GET operation\n" 1691msgid "Error queueing datastore GET operation\n"
1698msgstr "" 1692msgstr ""
1699 1693
1700#: src/datastore/gnunet-datastore.c:285 src/datastore/gnunet-datastore.c:410 1694#: src/datastore/gnunet-datastore.c:287 src/datastore/gnunet-datastore.c:412
1701#, c-format 1695#, c-format
1702msgid "Unable to open dump file: %s\n" 1696msgid "Unable to open dump file: %s\n"
1703msgstr "" 1697msgstr ""
1704 1698
1705#: src/datastore/gnunet-datastore.c:324 1699#: src/datastore/gnunet-datastore.c:326
1706#, c-format 1700#, c-format
1707msgid "Failed to store item: %s, aborting\n" 1701msgid "Failed to store item: %s, aborting\n"
1708msgstr "" 1702msgstr ""
1709 1703
1710#: src/datastore/gnunet-datastore.c:338 1704#: src/datastore/gnunet-datastore.c:340
1711#, c-format 1705#, c-format
1712msgid "Inserted %<PRIu64> records\n" 1706msgid "Inserted %<PRIu64> records\n"
1713msgstr "" 1707msgstr ""
1714 1708
1715#: src/datastore/gnunet-datastore.c:347 src/datastore/gnunet-datastore.c:361 1709#: src/datastore/gnunet-datastore.c:349 src/datastore/gnunet-datastore.c:363
1716#, c-format 1710#, c-format
1717msgid "Short read from file: %zd bytes expecting %zd\n" 1711msgid "Short read from file: %zd bytes expecting %zd\n"
1718msgstr "" 1712msgstr ""
1719 1713
1720#: src/datastore/gnunet-datastore.c:387 1714#: src/datastore/gnunet-datastore.c:389
1721msgid "Error queueing datastore PUT operation\n" 1715msgid "Error queueing datastore PUT operation\n"
1722msgstr "" 1716msgstr ""
1723 1717
1724#: src/datastore/gnunet-datastore.c:430 1718#: src/datastore/gnunet-datastore.c:432
1725msgid "Input file is not of a supported format\n" 1719msgid "Input file is not of a supported format\n"
1726msgstr "" 1720msgstr ""
1727 1721
1728#: src/datastore/gnunet-datastore.c:456 1722#: src/datastore/gnunet-datastore.c:458
1729msgid "Failed connecting to the datastore.\n" 1723msgid "Failed connecting to the datastore.\n"
1730msgstr "" 1724msgstr ""
1731 1725
1732#: src/datastore/gnunet-datastore.c:468 1726#: src/datastore/gnunet-datastore.c:470
1733#, c-format 1727#, c-format
1734msgid "Please choose at least one operation: %s, %s\n" 1728msgid "Please choose at least one operation: %s, %s\n"
1735msgstr "" 1729msgstr ""
1736 1730
1737#: src/datastore/gnunet-datastore.c:491 1731#: src/datastore/gnunet-datastore.c:493
1738msgid "Dump all records from the datastore" 1732msgid "Dump all records from the datastore"
1739msgstr "" 1733msgstr ""
1740 1734
1741#: src/datastore/gnunet-datastore.c:495 1735#: src/datastore/gnunet-datastore.c:497
1742msgid "Insert records into the datastore" 1736msgid "Insert records into the datastore"
1743msgstr "" 1737msgstr ""
1744 1738
1745#: src/datastore/gnunet-datastore.c:500 1739#: src/datastore/gnunet-datastore.c:502
1746msgid "File to dump or insert" 1740msgid "File to dump or insert"
1747msgstr "" 1741msgstr ""
1748 1742
1749#: src/datastore/gnunet-datastore.c:509 1743#: src/datastore/gnunet-datastore.c:511
1750msgid "Manipulate GNUnet datastore" 1744msgid "Manipulate GNUnet datastore"
1751msgstr "" 1745msgstr ""
1752 1746
1753#: src/datastore/gnunet-service-datastore.c:336 1747#: src/datastore/gnunet-service-datastore.c:338
1754msgid "# bytes expired" 1748msgid "# bytes expired"
1755msgstr "" 1749msgstr ""
1756 1750
1757#: src/datastore/gnunet-service-datastore.c:418 1751#: src/datastore/gnunet-service-datastore.c:420
1758msgid "# bytes purged (low-priority)" 1752msgid "# bytes purged (low-priority)"
1759msgstr "" 1753msgstr ""
1760 1754
1761#: src/datastore/gnunet-service-datastore.c:560 1755#: src/datastore/gnunet-service-datastore.c:562
1762msgid "# results found" 1756msgid "# results found"
1763msgstr "" 1757msgstr ""
1764 1758
1765#: src/datastore/gnunet-service-datastore.c:601 1759#: src/datastore/gnunet-service-datastore.c:603
1766#, c-format 1760#, c-format
1767msgid "" 1761msgid ""
1768"Insufficient space (%llu bytes are available) to satisfy RESERVE request for " 1762"Insufficient space (%llu bytes are available) to satisfy RESERVE request for "
1769"%llu bytes\n" 1763"%llu bytes\n"
1770msgstr "" 1764msgstr ""
1771 1765
1772#: src/datastore/gnunet-service-datastore.c:612 1766#: src/datastore/gnunet-service-datastore.c:614
1773#, c-format 1767#, c-format
1774msgid "" 1768msgid ""
1775"The requested amount (%llu bytes) is larger than the cache size (%llu " 1769"The requested amount (%llu bytes) is larger than the cache size (%llu "
1776"bytes)\n" 1770"bytes)\n"
1777msgstr "" 1771msgstr ""
1778 1772
1779#: src/datastore/gnunet-service-datastore.c:618 1773#: src/datastore/gnunet-service-datastore.c:620
1780msgid "" 1774msgid ""
1781"Insufficient space to satisfy request and requested amount is larger than " 1775"Insufficient space to satisfy request and requested amount is larger than "
1782"cache size" 1776"cache size"
1783msgstr "" 1777msgstr ""
1784 1778
1785#: src/datastore/gnunet-service-datastore.c:625 1779#: src/datastore/gnunet-service-datastore.c:627
1786msgid "Insufficient space to satisfy request" 1780msgid "Insufficient space to satisfy request"
1787msgstr "" 1781msgstr ""
1788 1782
1789#: src/datastore/gnunet-service-datastore.c:632 1783#: src/datastore/gnunet-service-datastore.c:634
1790#: src/datastore/gnunet-service-datastore.c:687 1784#: src/datastore/gnunet-service-datastore.c:689
1791#: src/datastore/gnunet-service-datastore.c:835 1785#: src/datastore/gnunet-service-datastore.c:837
1792#: src/datastore/gnunet-service-datastore.c:1467 1786#: src/datastore/gnunet-service-datastore.c:1469
1793msgid "# reserved" 1787msgid "# reserved"
1794msgstr "" 1788msgstr ""
1795 1789
1796#: src/datastore/gnunet-service-datastore.c:705 1790#: src/datastore/gnunet-service-datastore.c:707
1797msgid "Could not find matching reservation" 1791msgid "Could not find matching reservation"
1798msgstr "" 1792msgstr ""
1799 1793
1800#: src/datastore/gnunet-service-datastore.c:771 1794#: src/datastore/gnunet-service-datastore.c:773
1801#, c-format 1795#, c-format
1802msgid "Need %llu bytes more space (%llu allowed, using %llu)\n" 1796msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
1803msgstr "" 1797msgstr ""
1804 1798
1805#: src/datastore/gnunet-service-datastore.c:874 1799#: src/datastore/gnunet-service-datastore.c:876
1806msgid "# GET requests received" 1800msgid "# GET requests received"
1807msgstr "" 1801msgstr ""
1808 1802
1809#: src/datastore/gnunet-service-datastore.c:905 1803#: src/datastore/gnunet-service-datastore.c:907
1810#, fuzzy 1804#, fuzzy
1811msgid "# GET KEY requests received" 1805msgid "# GET KEY requests received"
1812msgstr "# messaggi PONG ricevuti" 1806msgstr "# messaggi PONG ricevuti"
1813 1807
1814#: src/datastore/gnunet-service-datastore.c:918 1808#: src/datastore/gnunet-service-datastore.c:920
1815msgid "# requests filtered by bloomfilter" 1809msgid "# requests filtered by bloomfilter"
1816msgstr "" 1810msgstr ""
1817 1811
1818#: src/datastore/gnunet-service-datastore.c:954 1812#: src/datastore/gnunet-service-datastore.c:956
1819msgid "# GET REPLICATION requests received" 1813msgid "# GET REPLICATION requests received"
1820msgstr "" 1814msgstr ""
1821 1815
1822#: src/datastore/gnunet-service-datastore.c:987 1816#: src/datastore/gnunet-service-datastore.c:989
1823msgid "# GET ZERO ANONYMITY requests received" 1817msgid "# GET ZERO ANONYMITY requests received"
1824msgstr "" 1818msgstr ""
1825 1819
1826#: src/datastore/gnunet-service-datastore.c:1034 1820#: src/datastore/gnunet-service-datastore.c:1036
1827msgid "Content not found" 1821msgid "Content not found"
1828msgstr "Contenuto non trovato" 1822msgstr "Contenuto non trovato"
1829 1823
1830#: src/datastore/gnunet-service-datastore.c:1041 1824#: src/datastore/gnunet-service-datastore.c:1043
1831msgid "# bytes removed (explicit request)" 1825msgid "# bytes removed (explicit request)"
1832msgstr "" 1826msgstr ""
1833 1827
1834#: src/datastore/gnunet-service-datastore.c:1086 1828#: src/datastore/gnunet-service-datastore.c:1088
1835msgid "# REMOVE requests received" 1829msgid "# REMOVE requests received"
1836msgstr "" 1830msgstr ""
1837 1831
1838#: src/datastore/gnunet-service-datastore.c:1135 1832#: src/datastore/gnunet-service-datastore.c:1137
1839#, c-format 1833#, c-format
1840msgid "" 1834msgid ""
1841"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n" 1835"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
1842msgstr "" 1836msgstr ""
1843 1837
1844#: src/datastore/gnunet-service-datastore.c:1141 1838#: src/datastore/gnunet-service-datastore.c:1143
1845#: src/datastore/gnunet-service-datastore.c:1316 1839#: src/datastore/gnunet-service-datastore.c:1318
1846#, c-format 1840#, c-format
1847msgid "New payload: %lld\n" 1841msgid "New payload: %lld\n"
1848msgstr "" 1842msgstr ""
1849 1843
1850#: src/datastore/gnunet-service-datastore.c:1195 1844#: src/datastore/gnunet-service-datastore.c:1197
1851#, c-format 1845#, c-format
1852msgid "Loading `%s' datastore plugin\n" 1846msgid "Loading `%s' datastore plugin\n"
1853msgstr "" 1847msgstr ""
1854 1848
1855#: src/datastore/gnunet-service-datastore.c:1207 1849#: src/datastore/gnunet-service-datastore.c:1209
1856#, c-format 1850#, c-format
1857msgid "Failed to load datastore plugin for `%s'\n" 1851msgid "Failed to load datastore plugin for `%s'\n"
1858msgstr "" 1852msgstr ""
1859 1853
1860#: src/datastore/gnunet-service-datastore.c:1267 1854#: src/datastore/gnunet-service-datastore.c:1269
1861msgid "Bloomfilter construction complete.\n" 1855msgid "Bloomfilter construction complete.\n"
1862msgstr "" 1856msgstr ""
1863 1857
1864#: src/datastore/gnunet-service-datastore.c:1323 1858#: src/datastore/gnunet-service-datastore.c:1325
1865msgid "Rebuilding bloomfilter. Please be patient.\n" 1859msgid "Rebuilding bloomfilter. Please be patient.\n"
1866msgstr "" 1860msgstr ""
1867 1861
1868#: src/datastore/gnunet-service-datastore.c:1334 1862#: src/datastore/gnunet-service-datastore.c:1336
1869msgid "Plugin does not support get_keys function. Please fix!\n" 1863msgid "Plugin does not support get_keys function. Please fix!\n"
1870msgstr "" 1864msgstr ""
1871 1865
1872#: src/datastore/gnunet-service-datastore.c:1504 1866#: src/datastore/gnunet-service-datastore.c:1506
1873#, c-format 1867#, c-format
1874msgid "# bytes used in file-sharing datastore `%s'" 1868msgid "# bytes used in file-sharing datastore `%s'"
1875msgstr "" 1869msgstr ""
1876 1870
1877#: src/datastore/gnunet-service-datastore.c:1520 1871#: src/datastore/gnunet-service-datastore.c:1522
1878msgid "# quota" 1872msgid "# quota"
1879msgstr "" 1873msgstr ""
1880 1874
1881#: src/datastore/gnunet-service-datastore.c:1525 1875#: src/datastore/gnunet-service-datastore.c:1527
1882msgid "# cache size" 1876msgid "# cache size"
1883msgstr "# dimensione cache" 1877msgstr "# dimensione cache"
1884 1878
1885#: src/datastore/gnunet-service-datastore.c:1541 1879#: src/datastore/gnunet-service-datastore.c:1543
1886#, c-format 1880#, c-format
1887msgid "Could not use specified filename `%s' for bloomfilter.\n" 1881msgid "Could not use specified filename `%s' for bloomfilter.\n"
1888msgstr "" 1882msgstr ""
1889 1883
1890#: src/datastore/gnunet-service-datastore.c:1559 1884#: src/datastore/gnunet-service-datastore.c:1561
1891#: src/datastore/gnunet-service-datastore.c:1575 1885#: src/datastore/gnunet-service-datastore.c:1577
1892#, c-format 1886#, c-format
1893msgid "Failed to remove bogus bloomfilter file `%s'\n" 1887msgid "Failed to remove bogus bloomfilter file `%s'\n"
1894msgstr "" 1888msgstr ""
1895 1889
1896#: src/datastore/gnunet-service-datastore.c:1607 1890#: src/datastore/gnunet-service-datastore.c:1609
1897msgid "Failed to initialize bloomfilter.\n" 1891msgid "Failed to initialize bloomfilter.\n"
1898msgstr "" 1892msgstr ""
1899 1893
1900#: src/datastore/plugin_datastore_heap.c:891 1894#: src/datastore/plugin_datastore_heap.c:893
1901msgid "Heap database running\n" 1895msgid "Heap database running\n"
1902msgstr "" 1896msgstr ""
1903 1897
1904#: src/datastore/plugin_datastore_mysql.c:369 1898#: src/datastore/plugin_datastore_mysql.c:371
1905#: src/datastore/plugin_datastore_mysql.c:421 1899#: src/datastore/plugin_datastore_mysql.c:423
1906#: src/datastore/plugin_datastore_mysql.c:1073 1900#: src/datastore/plugin_datastore_mysql.c:1075
1907msgid "MySQL statement run failure" 1901msgid "MySQL statement run failure"
1908msgstr "" 1902msgstr ""
1909 1903
1910#: src/datastore/plugin_datastore_mysql.c:408 1904#: src/datastore/plugin_datastore_mysql.c:410
1911#: src/datastore/plugin_datastore_sqlite.c:676 1905#: src/datastore/plugin_datastore_sqlite.c:678
1912msgid "Data too large" 1906msgid "Data too large"
1913msgstr "" 1907msgstr ""
1914 1908
1915#: src/datastore/plugin_datastore_mysql.c:846 1909#: src/datastore/plugin_datastore_mysql.c:848
1916#, c-format 1910#, c-format
1917msgid "`%s' for `%s' failed at %s:%d with error: %s\n" 1911msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
1918msgstr "" 1912msgstr ""
1919 1913
1920#: src/datastore/plugin_datastore_mysql.c:1178 1914#: src/datastore/plugin_datastore_mysql.c:1180
1921#: src/psycstore/plugin_psycstore_mysql.c:1934
1922msgid "Mysql database running\n" 1915msgid "Mysql database running\n"
1923msgstr "" 1916msgstr ""
1924 1917
1925#: src/datastore/plugin_datastore_postgres.c:274 1918#: src/datastore/plugin_datastore_postgres.c:276
1926#: src/datastore/plugin_datastore_postgres.c:891 1919#: src/datastore/plugin_datastore_postgres.c:893
1927msgid "Postgress exec failure" 1920msgid "Postgress exec failure"
1928msgstr "" 1921msgstr ""
1929 1922
1930#: src/datastore/plugin_datastore_postgres.c:852 1923#: src/datastore/plugin_datastore_postgres.c:854
1931msgid "Failed to drop table from database.\n" 1924msgid "Failed to drop table from database.\n"
1932msgstr "" 1925msgstr ""
1933 1926
1934#: src/datastore/plugin_datastore_postgres.c:950 1927#: src/datastore/plugin_datastore_postgres.c:952
1935#: src/psycstore/plugin_psycstore_postgres.c:1504
1936msgid "Postgres database running\n" 1928msgid "Postgres database running\n"
1937msgstr "" 1929msgstr ""
1938 1930
1939#: src/datastore/plugin_datastore_sqlite.c:64 1931#: src/datastore/plugin_datastore_sqlite.c:66
1940#: src/testbed/generate-underlay-topology.c:48 1932#: src/testbed/generate-underlay-topology.c:50
1941#: src/testbed/gnunet-daemon-latency-logger.c:53 1933#: src/testbed/gnunet-daemon-latency-logger.c:55
1942#: src/testbed/gnunet-daemon-testbed-underlay.c:57 1934#: src/testbed/gnunet-daemon-testbed-underlay.c:59
1943#, c-format 1935#, c-format
1944msgid "`%s' failed at %s:%u with error: %s" 1936msgid "`%s' failed at %s:%u with error: %s"
1945msgstr "" 1937msgstr ""
1946 1938
1947#: src/datastore/plugin_datastore_sqlite.c:269 1939#: src/datastore/plugin_datastore_sqlite.c:271
1948#: src/namecache/plugin_namecache_sqlite.c:207 1940#: src/namecache/plugin_namecache_sqlite.c:173
1949#: src/namestore/plugin_namestore_sqlite.c:203 1941#: src/namestore/plugin_namestore_sqlite.c:206
1950#: src/peerstore/plugin_peerstore_sqlite.c:533 1942#: src/peerstore/plugin_peerstore_sqlite.c:535
1951#: src/psycstore/plugin_psycstore_sqlite.c:323 1943#: src/reclaim/plugin_reclaim_sqlite.c:212
1952#: src/reclaim/plugin_reclaim_sqlite.c:210
1953#, c-format 1944#, c-format
1954msgid "Unable to initialize SQLite: %s.\n" 1945msgid "Unable to initialize SQLite: %s.\n"
1955msgstr "" 1946msgstr ""
1956 1947
1957#: src/datastore/plugin_datastore_sqlite.c:627 1948#: src/datastore/plugin_datastore_sqlite.c:629
1958msgid "sqlite bind failure" 1949msgid "sqlite bind failure"
1959msgstr "" 1950msgstr ""
1960 1951
1961#: src/datastore/plugin_datastore_sqlite.c:1325 1952#: src/datastore/plugin_datastore_sqlite.c:1327
1962msgid "sqlite version to old to determine size, assuming zero\n" 1953msgid "sqlite version to old to determine size, assuming zero\n"
1963msgstr "" 1954msgstr ""
1964 1955
1965#: src/datastore/plugin_datastore_sqlite.c:1359 1956#: src/datastore/plugin_datastore_sqlite.c:1361
1966#, c-format 1957#, c-format
1967msgid "" 1958msgid ""
1968"Using sqlite page utilization to estimate payload (%llu pages of size %llu " 1959"Using sqlite page utilization to estimate payload (%llu pages of size %llu "
1969"bytes)\n" 1960"bytes)\n"
1970msgstr "" 1961msgstr ""
1971 1962
1972#: src/datastore/plugin_datastore_sqlite.c:1403 1963#: src/datastore/plugin_datastore_sqlite.c:1405
1973#: src/namecache/plugin_namecache_sqlite.c:638 1964#: src/namecache/plugin_namecache_sqlite.c:557
1974#: src/namestore/plugin_namestore_sqlite.c:753 1965#: src/namestore/plugin_namestore_sqlite.c:750
1975#: src/reclaim/plugin_reclaim_sqlite.c:709 1966#: src/reclaim/plugin_reclaim_sqlite.c:711
1976msgid "Sqlite database running\n" 1967msgid "Sqlite database running\n"
1977msgstr "" 1968msgstr ""
1978 1969
1979#: src/datastore/plugin_datastore_template.c:251 1970#: src/datastore/plugin_datastore_template.c:253
1980msgid "Template database running\n" 1971msgid "Template database running\n"
1981msgstr "" 1972msgstr ""
1982 1973
1983#: src/dht/gnunet-dht-get.c:156 1974#: src/dht/gnunet-dht-get.c:158
1984#, c-format 1975#, c-format
1985msgid "" 1976msgid ""
1986"Result %d, type %d:\n" 1977"Result %d, type %d:\n"
1987"%.*s\n" 1978"%.*s\n"
1988msgstr "" 1979msgstr ""
1989 1980
1990#: src/dht/gnunet-dht-get.c:157 1981#: src/dht/gnunet-dht-get.c:159
1991#, c-format 1982#, c-format
1992msgid "Result %d, type %d:\n" 1983msgid "Result %d, type %d:\n"
1993msgstr "" 1984msgstr ""
1994 1985
1995#: src/dht/gnunet-dht-get.c:202 1986#: src/dht/gnunet-dht-get.c:204
1996msgid "Must provide key for DHT GET!\n" 1987msgid "Must provide key for DHT GET!\n"
1997msgstr "" 1988msgstr ""
1998 1989
1999#: src/dht/gnunet-dht-get.c:208 src/dht/gnunet-dht-monitor.c:255 1990#: src/dht/gnunet-dht-get.c:210 src/dht/gnunet-dht-monitor.c:257
2000msgid "Failed to connect to DHT service!\n" 1991msgid "Failed to connect to DHT service!\n"
2001msgstr "" 1992msgstr ""
2002 1993
2003#: src/dht/gnunet-dht-get.c:217 1994#: src/dht/gnunet-dht-get.c:219
2004msgid "Issueing DHT GET with key" 1995msgid "Issuing DHT GET with key"
2005msgstr "" 1996msgstr ""
2006 1997
2007#: src/dht/gnunet-dht-get.c:246 src/dht/gnunet-dht-monitor.c:305 1998#: src/dht/gnunet-dht-get.c:248 src/dht/gnunet-dht-monitor.c:307
2008#: src/dht/gnunet-dht-put.c:196 1999#: src/dht/gnunet-dht-put.c:198
2009msgid "the query key" 2000msgid "the query key"
2010msgstr "" 2001msgstr ""
2011 2002
2012#: src/dht/gnunet-dht-get.c:251 2003#: src/dht/gnunet-dht-get.c:253
2013msgid "how many parallel requests (replicas) to create" 2004msgid "how many parallel requests (replicas) to create"
2014msgstr "" 2005msgstr ""
2015 2006
2016#: src/dht/gnunet-dht-get.c:256 src/dht/gnunet-dht-monitor.c:311 2007#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
2017msgid "the type of data to look for" 2008msgid "the type of data to look for"
2018msgstr "" 2009msgstr ""
2019 2010
2020#: src/dht/gnunet-dht-get.c:261 2011#: src/dht/gnunet-dht-get.c:263
2021msgid "how long to execute this query before giving up?" 2012msgid "how long to execute this query before giving up?"
2022msgstr "" 2013msgstr ""
2023 2014
2024#: src/dht/gnunet-dht-get.c:265 src/dht/gnunet-dht-put.c:200 2015#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
2025msgid "use DHT's demultiplex everywhere option" 2016msgid "use DHT's demultiplex everywhere option"
2026msgstr "" 2017msgstr ""
2027 2018
2028#: src/dht/gnunet-dht-get.c:278 2019#: src/dht/gnunet-dht-get.c:280
2029msgid "Issue a GET request to the GNUnet DHT, prints results." 2020msgid "Issue a GET request to the GNUnet DHT, prints results."
2030msgstr "" 2021msgstr ""
2031 2022
2032#: src/dht/gnunet-dht-monitor.c:317 2023#: src/dht/gnunet-dht-monitor.c:319
2033msgid "how long should the monitor command run" 2024msgid "how long should the monitor command run"
2034msgstr "" 2025msgstr ""
2035 2026
2036#: src/dht/gnunet-dht-monitor.c:322 src/fs/gnunet-download.c:370 2027#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
2037#: src/nse/gnunet-nse-profiler.c:876 2028#: src/nse/gnunet-nse-profiler.c:878
2038msgid "be verbose (print progress information)" 2029msgid "be verbose (print progress information)"
2039msgstr "" 2030msgstr ""
2040 2031
2041#: src/dht/gnunet-dht-monitor.c:335 2032#: src/dht/gnunet-dht-monitor.c:337
2042msgid "Prints all packets that go through the DHT." 2033msgid "Prints all packets that go through the DHT."
2043msgstr "" 2034msgstr ""
2044 2035
2045#: src/dht/gnunet_dht_profiler.c:914 src/testbed/gnunet-testbed-profiler.c:251 2036#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
2046#, c-format 2037#, c-format
2047msgid "Exiting as the number of peers is %u\n" 2038msgid "Exiting as the number of peers is %u\n"
2048msgstr "" 2039msgstr ""
2049 2040
2050#: src/dht/gnunet_dht_profiler.c:947 src/rps/gnunet-rps-profiler.c:2764 2041#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
2051msgid "number of peers to start" 2042msgid "number of peers to start"
2052msgstr "" 2043msgstr ""
2053 2044
2054#: src/dht/gnunet_dht_profiler.c:952 2045#: src/dht/gnunet_dht_profiler.c:954
2055msgid "number of PUTs to perform per peer" 2046msgid "number of PUTs to perform per peer"
2056msgstr "" 2047msgstr ""
2057 2048
2058#: src/dht/gnunet_dht_profiler.c:957 src/nse/gnunet-nse-profiler.c:858 2049#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
2059#: src/testbed/gnunet-testbed-profiler.c:302 2050#: src/testbed/gnunet-testbed-profiler.c:304
2060msgid "name of the file with the login information for the testbed" 2051msgid "name of the file with the login information for the testbed"
2061msgstr "" 2052msgstr ""
2062 2053
2063#: src/dht/gnunet_dht_profiler.c:962 2054#: src/dht/gnunet_dht_profiler.c:964
2064msgid "delay between rounds for collecting statistics (default: 30 sec)" 2055msgid "delay between rounds for collecting statistics (default: 30 sec)"
2065msgstr "" 2056msgstr ""
2066 2057
2067#: src/dht/gnunet_dht_profiler.c:967 2058#: src/dht/gnunet_dht_profiler.c:969
2068msgid "delay to start doing PUTs (default: 1 sec)" 2059msgid "delay to start doing PUTs (default: 1 sec)"
2069msgstr "" 2060msgstr ""
2070 2061
2071#: src/dht/gnunet_dht_profiler.c:972 2062#: src/dht/gnunet_dht_profiler.c:974
2072msgid "delay to start doing GETs (default: 5 min)" 2063msgid "delay to start doing GETs (default: 5 min)"
2073msgstr "" 2064msgstr ""
2074 2065
2075#: src/dht/gnunet_dht_profiler.c:977 2066#: src/dht/gnunet_dht_profiler.c:979
2076msgid "replication degree for DHT PUTs" 2067msgid "replication degree for DHT PUTs"
2077msgstr "" 2068msgstr ""
2078 2069
2079#: src/dht/gnunet_dht_profiler.c:982 2070#: src/dht/gnunet_dht_profiler.c:984
2080msgid "chance that a peer is selected at random for PUTs" 2071msgid "chance that a peer is selected at random for PUTs"
2081msgstr "" 2072msgstr ""
2082 2073
2083#: src/dht/gnunet_dht_profiler.c:987 2074#: src/dht/gnunet_dht_profiler.c:989
2084msgid "timeout for DHT PUT and GET requests (default: 1 min)" 2075msgid "timeout for DHT PUT and GET requests (default: 1 min)"
2085msgstr "" 2076msgstr ""
2086 2077
2087#: src/dht/gnunet_dht_profiler.c:1007 2078#: src/dht/gnunet_dht_profiler.c:1009
2088msgid "Measure quality and performance of the DHT service." 2079msgid "Measure quality and performance of the DHT service."
2089msgstr "" 2080msgstr ""
2090 2081
2091#: src/dht/gnunet-dht-put.c:132 2082#: src/dht/gnunet-dht-put.c:134
2092msgid "Must provide KEY and DATA for DHT put!\n" 2083msgid "Must provide KEY and DATA for DHT put!\n"
2093msgstr "" 2084msgstr ""
2094 2085
2095#: src/dht/gnunet-dht-put.c:140 2086#: src/dht/gnunet-dht-put.c:142
2096msgid "Could not connect to DHT service!\n" 2087msgid "Could not connect to DHT service!\n"
2097msgstr "" 2088msgstr ""
2098 2089
2099#: src/dht/gnunet-dht-put.c:151 2090#: src/dht/gnunet-dht-put.c:153
2100#, c-format 2091#, c-format
2101msgid "Issuing put request for `%s' with data `%s'!\n" 2092msgid "Issuing put request for `%s' with data `%s'!\n"
2102msgstr "" 2093msgstr ""
2103 2094
2104#: src/dht/gnunet-dht-put.c:186 2095#: src/dht/gnunet-dht-put.c:188
2105msgid "the data to insert under the key" 2096msgid "the data to insert under the key"
2106msgstr "" 2097msgstr ""
2107 2098
2108#: src/dht/gnunet-dht-put.c:191 2099#: src/dht/gnunet-dht-put.c:193
2109msgid "how long to store this entry in the dht (in seconds)" 2100msgid "how long to store this entry in the dht (in seconds)"
2110msgstr "" 2101msgstr ""
2111 2102
2112#: src/dht/gnunet-dht-put.c:205 2103#: src/dht/gnunet-dht-put.c:207
2113msgid "how many replicas to create" 2104msgid "how many replicas to create"
2114msgstr "" 2105msgstr ""
2115 2106
2116#: src/dht/gnunet-dht-put.c:209 2107#: src/dht/gnunet-dht-put.c:211
2117msgid "use DHT's record route option" 2108msgid "use DHT's record route option"
2118msgstr "" 2109msgstr ""
2119 2110
2120#: src/dht/gnunet-dht-put.c:214 2111#: src/dht/gnunet-dht-put.c:216
2121msgid "the type to insert data as" 2112msgid "the type to insert data as"
2122msgstr "" 2113msgstr ""
2123 2114
2124#: src/dht/gnunet-dht-put.c:231 2115#: src/dht/gnunet-dht-put.c:233
2125msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY." 2116msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY."
2126msgstr "" 2117msgstr ""
2127 2118
2128#: src/dht/gnunet-service-dht_clients.c:367 2119#: src/dht/gnunet-service-dht_clients.c:369
2129msgid "# GET requests from clients injected" 2120msgid "# GET requests from clients injected"
2130msgstr "" 2121msgstr ""
2131 2122
2132#: src/dht/gnunet-service-dht_clients.c:481 2123#: src/dht/gnunet-service-dht_clients.c:483
2133msgid "# PUT requests received from clients" 2124msgid "# PUT requests received from clients"
2134msgstr "" 2125msgstr ""
2135 2126
2136#: src/dht/gnunet-service-dht_clients.c:614 2127#: src/dht/gnunet-service-dht_clients.c:616
2137msgid "# GET requests received from clients" 2128msgid "# GET requests received from clients"
2138msgstr "" 2129msgstr ""
2139 2130
2140#: src/dht/gnunet-service-dht_clients.c:840 2131#: src/dht/gnunet-service-dht_clients.c:842
2141msgid "# GET STOP requests received from clients" 2132msgid "# GET STOP requests received from clients"
2142msgstr "" 2133msgstr ""
2143 2134
2144#: src/dht/gnunet-service-dht_clients.c:1025 2135#: src/dht/gnunet-service-dht_clients.c:1027
2145msgid "# Key match, type mismatches in REPLY to CLIENT" 2136msgid "# Key match, type mismatches in REPLY to CLIENT"
2146msgstr "" 2137msgstr ""
2147 2138
2148#: src/dht/gnunet-service-dht_clients.c:1040 2139#: src/dht/gnunet-service-dht_clients.c:1042
2149msgid "# Duplicate REPLIES to CLIENT request dropped" 2140msgid "# Duplicate REPLIES to CLIENT request dropped"
2150msgstr "" 2141msgstr ""
2151 2142
2152#: src/dht/gnunet-service-dht_clients.c:1086 2143#: src/dht/gnunet-service-dht_clients.c:1088
2153#, c-format 2144#, c-format
2154msgid "Unsupported block type (%u) in request!\n" 2145msgid "Unsupported block type (%u) in request!\n"
2155msgstr "" 2146msgstr ""
2156 2147
2157#: src/dht/gnunet-service-dht_clients.c:1093 2148#: src/dht/gnunet-service-dht_clients.c:1095
2158msgid "# RESULTS queued for clients" 2149msgid "# RESULTS queued for clients"
2159msgstr "" 2150msgstr ""
2160 2151
2161#: src/dht/gnunet-service-dht_clients.c:1171 2152#: src/dht/gnunet-service-dht_clients.c:1173
2162msgid "# REPLIES ignored for CLIENTS (no match)" 2153msgid "# REPLIES ignored for CLIENTS (no match)"
2163msgstr "" 2154msgstr ""
2164 2155
2165#: src/dht/gnunet-service-dht_datacache.c:71 2156#: src/dht/gnunet-service-dht_datacache.c:73
2166#, c-format 2157#, c-format
2167msgid "%s request received, but have no datacache!\n" 2158msgid "%s request received, but have no datacache!\n"
2168msgstr "" 2159msgstr ""
2169 2160
2170#: src/dht/gnunet-service-dht_datacache.c:81 2161#: src/dht/gnunet-service-dht_datacache.c:83
2171msgid "# ITEMS stored in datacache" 2162msgid "# ITEMS stored in datacache"
2172msgstr "" 2163msgstr ""
2173 2164
2174#: src/dht/gnunet-service-dht_datacache.c:205 2165#: src/dht/gnunet-service-dht_datacache.c:207
2175msgid "# Good RESULTS found in datacache" 2166msgid "# Good RESULTS found in datacache"
2176msgstr "" 2167msgstr ""
2177 2168
2178#: src/dht/gnunet-service-dht_datacache.c:217 2169#: src/dht/gnunet-service-dht_datacache.c:219
2179msgid "# Duplicate RESULTS found in datacache" 2170msgid "# Duplicate RESULTS found in datacache"
2180msgstr "" 2171msgstr ""
2181 2172
2182#: src/dht/gnunet-service-dht_datacache.c:223 2173#: src/dht/gnunet-service-dht_datacache.c:225
2183msgid "# Invalid RESULTS found in datacache" 2174msgid "# Invalid RESULTS found in datacache"
2184msgstr "" 2175msgstr ""
2185 2176
2186#: src/dht/gnunet-service-dht_datacache.c:229 2177#: src/dht/gnunet-service-dht_datacache.c:231
2187msgid "# Irrelevant RESULTS found in datacache" 2178msgid "# Irrelevant RESULTS found in datacache"
2188msgstr "" 2179msgstr ""
2189 2180
2190#: src/dht/gnunet-service-dht_datacache.c:241 2181#: src/dht/gnunet-service-dht_datacache.c:243
2191msgid "# Unsupported RESULTS found in datacache" 2182msgid "# Unsupported RESULTS found in datacache"
2192msgstr "" 2183msgstr ""
2193 2184
2194#: src/dht/gnunet-service-dht_datacache.c:245 2185#: src/dht/gnunet-service-dht_datacache.c:247
2195#, c-format 2186#, c-format
2196msgid "Unsupported block type (%u) in local response!\n" 2187msgid "Unsupported block type (%u) in local response!\n"
2197msgstr "" 2188msgstr ""
2198 2189
2199#: src/dht/gnunet-service-dht_datacache.c:280 2190#: src/dht/gnunet-service-dht_datacache.c:282
2200msgid "# GET requests given to datacache" 2191msgid "# GET requests given to datacache"
2201msgstr "" 2192msgstr ""
2202 2193
2203#: src/dht/gnunet-service-dht_hello.c:84 2194#: src/dht/gnunet-service-dht_hello.c:86
2204msgid "# HELLOs obtained from peerinfo" 2195msgid "# HELLOs obtained from peerinfo"
2205msgstr "" 2196msgstr ""
2206 2197
2207#: src/dht/gnunet-service-dht_neighbours.c:677 2198#: src/dht/gnunet-service-dht_neighbours.c:679
2208msgid "# FIND PEER messages initiated" 2199msgid "# FIND PEER messages initiated"
2209msgstr "" 2200msgstr ""
2210 2201
2211#: src/dht/gnunet-service-dht_neighbours.c:850 2202#: src/dht/gnunet-service-dht_neighbours.c:852
2212msgid "# requests TTL-dropped" 2203msgid "# requests TTL-dropped"
2213msgstr "" 2204msgstr ""
2214 2205
2215#: src/dht/gnunet-service-dht_neighbours.c:1053 2206#: src/dht/gnunet-service-dht_neighbours.c:1055
2216#: src/dht/gnunet-service-dht_neighbours.c:1096 2207#: src/dht/gnunet-service-dht_neighbours.c:1098
2217msgid "# Peers excluded from routing due to Bloomfilter" 2208msgid "# Peers excluded from routing due to Bloomfilter"
2218msgstr "" 2209msgstr ""
2219 2210
2220#: src/dht/gnunet-service-dht_neighbours.c:1070 2211#: src/dht/gnunet-service-dht_neighbours.c:1072
2221#: src/dht/gnunet-service-dht_neighbours.c:1112 2212#: src/dht/gnunet-service-dht_neighbours.c:1114
2222msgid "# Peer selection failed" 2213msgid "# Peer selection failed"
2223msgstr "" 2214msgstr ""
2224 2215
2225#: src/dht/gnunet-service-dht_neighbours.c:1269 2216#: src/dht/gnunet-service-dht_neighbours.c:1271
2226msgid "# PUT requests routed" 2217msgid "# PUT requests routed"
2227msgstr "" 2218msgstr ""
2228 2219
2229#: src/dht/gnunet-service-dht_neighbours.c:1302 2220#: src/dht/gnunet-service-dht_neighbours.c:1304
2230msgid "# PUT messages queued for transmission" 2221msgid "# PUT messages queued for transmission"
2231msgstr "" 2222msgstr ""
2232 2223
2233#: src/dht/gnunet-service-dht_neighbours.c:1313 2224#: src/dht/gnunet-service-dht_neighbours.c:1315
2234#: src/dht/gnunet-service-dht_neighbours.c:1453 2225#: src/dht/gnunet-service-dht_neighbours.c:1455
2235#: src/dht/gnunet-service-dht_neighbours.c:1556 2226#: src/dht/gnunet-service-dht_neighbours.c:1558
2236msgid "# P2P messages dropped due to full queue" 2227msgid "# P2P messages dropped due to full queue"
2237msgstr "" 2228msgstr ""
2238 2229
2239#: src/dht/gnunet-service-dht_neighbours.c:1398 2230#: src/dht/gnunet-service-dht_neighbours.c:1400
2240msgid "# GET requests routed" 2231msgid "# GET requests routed"
2241msgstr "" 2232msgstr ""
2242 2233
2243#: src/dht/gnunet-service-dht_neighbours.c:1441 2234#: src/dht/gnunet-service-dht_neighbours.c:1443
2244msgid "# GET messages queued for transmission" 2235msgid "# GET messages queued for transmission"
2245msgstr "" 2236msgstr ""
2246 2237
2247#: src/dht/gnunet-service-dht_neighbours.c:1571 2238#: src/dht/gnunet-service-dht_neighbours.c:1573
2248msgid "# RESULT messages queued for transmission" 2239msgid "# RESULT messages queued for transmission"
2249msgstr "" 2240msgstr ""
2250 2241
2251#: src/dht/gnunet-service-dht_neighbours.c:1674 2242#: src/dht/gnunet-service-dht_neighbours.c:1676
2252msgid "# Expired PUTs discarded" 2243msgid "# Expired PUTs discarded"
2253msgstr "" 2244msgstr ""
2254 2245
2255#: src/dht/gnunet-service-dht_neighbours.c:1682 2246#: src/dht/gnunet-service-dht_neighbours.c:1684
2256msgid "# P2P PUT requests received" 2247msgid "# P2P PUT requests received"
2257msgstr "" 2248msgstr ""
2258 2249
2259#: src/dht/gnunet-service-dht_neighbours.c:1686 2250#: src/dht/gnunet-service-dht_neighbours.c:1688
2260msgid "# P2P PUT bytes received" 2251msgid "# P2P PUT bytes received"
2261msgstr "" 2252msgstr ""
2262 2253
2263#: src/dht/gnunet-service-dht_neighbours.c:1912 2254#: src/dht/gnunet-service-dht_neighbours.c:1914
2264msgid "# FIND PEER requests ignored due to Bloomfilter" 2255msgid "# FIND PEER requests ignored due to Bloomfilter"
2265msgstr "" 2256msgstr ""
2266 2257
2267#: src/dht/gnunet-service-dht_neighbours.c:1920 2258#: src/dht/gnunet-service-dht_neighbours.c:1922
2268msgid "# FIND PEER requests ignored due to lack of HELLO" 2259msgid "# FIND PEER requests ignored due to lack of HELLO"
2269msgstr "" 2260msgstr ""
2270 2261
2271#: src/dht/gnunet-service-dht_neighbours.c:2082 2262#: src/dht/gnunet-service-dht_neighbours.c:2084
2272msgid "# P2P GET requests received" 2263msgid "# P2P GET requests received"
2273msgstr "" 2264msgstr ""
2274 2265
2275#: src/dht/gnunet-service-dht_neighbours.c:2086 2266#: src/dht/gnunet-service-dht_neighbours.c:2088
2276msgid "# P2P GET bytes received" 2267msgid "# P2P GET bytes received"
2277msgstr "" 2268msgstr ""
2278 2269
2279#: src/dht/gnunet-service-dht_neighbours.c:2151 2270#: src/dht/gnunet-service-dht_neighbours.c:2153
2280msgid "# P2P FIND PEER requests processed" 2271msgid "# P2P FIND PEER requests processed"
2281msgstr "" 2272msgstr ""
2282 2273
2283#: src/dht/gnunet-service-dht_neighbours.c:2172 2274#: src/dht/gnunet-service-dht_neighbours.c:2174
2284msgid "# P2P GET requests ONLY routed" 2275msgid "# P2P GET requests ONLY routed"
2285msgstr "" 2276msgstr ""
2286 2277
2287#: src/dht/gnunet-service-dht_neighbours.c:2349 2278#: src/dht/gnunet-service-dht_neighbours.c:2351
2288msgid "# Expired results discarded" 2279msgid "# Expired results discarded"
2289msgstr "" 2280msgstr ""
2290 2281
2291#: src/dht/gnunet-service-dht_neighbours.c:2365 2282#: src/dht/gnunet-service-dht_neighbours.c:2367
2292msgid "# P2P RESULTS received" 2283msgid "# P2P RESULTS received"
2293msgstr "" 2284msgstr ""
2294 2285
2295#: src/dht/gnunet-service-dht_neighbours.c:2369 2286#: src/dht/gnunet-service-dht_neighbours.c:2371
2296msgid "# P2P RESULT bytes received" 2287msgid "# P2P RESULT bytes received"
2297msgstr "" 2288msgstr ""
2298 2289
2299#: src/dht/gnunet-service-dht_nse.c:57 2290#: src/dht/gnunet-service-dht_nse.c:59
2300msgid "# Network size estimates received" 2291msgid "# Network size estimates received"
2301msgstr "" 2292msgstr ""
2302 2293
2303#: src/dht/gnunet-service-dht_routing.c:221 2294#: src/dht/gnunet-service-dht_routing.c:223
2304msgid "# Good REPLIES matched against routing table" 2295msgid "# Good REPLIES matched against routing table"
2305msgstr "" 2296msgstr ""
2306 2297
2307#: src/dht/gnunet-service-dht_routing.c:235 2298#: src/dht/gnunet-service-dht_routing.c:237
2308msgid "# Duplicate REPLIES matched against routing table" 2299msgid "# Duplicate REPLIES matched against routing table"
2309msgstr "" 2300msgstr ""
2310 2301
2311#: src/dht/gnunet-service-dht_routing.c:241 2302#: src/dht/gnunet-service-dht_routing.c:243
2312msgid "# Invalid REPLIES matched against routing table" 2303msgid "# Invalid REPLIES matched against routing table"
2313msgstr "" 2304msgstr ""
2314 2305
2315#: src/dht/gnunet-service-dht_routing.c:247 2306#: src/dht/gnunet-service-dht_routing.c:249
2316msgid "# Irrelevant REPLIES matched against routing table" 2307msgid "# Irrelevant REPLIES matched against routing table"
2317msgstr "" 2308msgstr ""
2318 2309
2319#: src/dht/gnunet-service-dht_routing.c:259 2310#: src/dht/gnunet-service-dht_routing.c:261
2320msgid "# Unsupported REPLIES matched against routing table" 2311msgid "# Unsupported REPLIES matched against routing table"
2321msgstr "" 2312msgstr ""
2322 2313
2323#: src/dht/gnunet-service-dht_routing.c:337 2314#: src/dht/gnunet-service-dht_routing.c:339
2324msgid "# Entries removed from routing table" 2315msgid "# Entries removed from routing table"
2325msgstr "" 2316msgstr ""
2326 2317
2327#: src/dht/gnunet-service-dht_routing.c:413 2318#: src/dht/gnunet-service-dht_routing.c:415
2328msgid "# Entries added to routing table" 2319msgid "# Entries added to routing table"
2329msgstr "" 2320msgstr ""
2330 2321
2331#: src/dht/gnunet-service-dht_routing.c:435 2322#: src/dht/gnunet-service-dht_routing.c:437
2332msgid "# DHT requests combined" 2323msgid "# DHT requests combined"
2333msgstr "" 2324msgstr ""
2334 2325
2335#: src/dht/plugin_block_dht.c:187 2326#: src/dht/plugin_block_dht.c:189
2336#, c-format 2327#, c-format
2337msgid "Block not of type %u\n" 2328msgid "Block not of type %u\n"
2338msgstr "" 2329msgstr ""
2339 2330
2340#: src/dht/plugin_block_dht.c:196 2331#: src/dht/plugin_block_dht.c:198
2341msgid "Size mismatch for block\n" 2332msgid "Size mismatch for block\n"
2342msgstr "" 2333msgstr ""
2343 2334
2344#: src/dht/plugin_block_dht.c:207 2335#: src/dht/plugin_block_dht.c:209
2345#, c-format 2336#, c-format
2346msgid "Block of type %u is malformed\n" 2337msgid "Block of type %u is malformed\n"
2347msgstr "" 2338msgstr ""
2348 2339
2349#: src/dns/gnunet-dns-monitor.c:351 src/dns/gnunet-dns-monitor.c:356 2340#: src/dns/gnunet-dns-monitor.c:353 src/dns/gnunet-dns-monitor.c:358
2350msgid "only monitor DNS queries" 2341msgid "only monitor DNS queries"
2351msgstr "" 2342msgstr ""
2352 2343
2353#: src/dns/gnunet-dns-monitor.c:368 2344#: src/dns/gnunet-dns-monitor.c:370
2354msgid "Monitor DNS queries." 2345msgid "Monitor DNS queries."
2355msgstr "" 2346msgstr ""
2356 2347
2357#: src/dns/gnunet-dns-redirector.c:235 2348#: src/dns/gnunet-dns-redirector.c:237
2358msgid "set A records" 2349msgid "set A records"
2359msgstr "" 2350msgstr ""
2360 2351
2361#: src/dns/gnunet-dns-redirector.c:241 2352#: src/dns/gnunet-dns-redirector.c:243
2362msgid "set AAAA records" 2353msgid "set AAAA records"
2363msgstr "" 2354msgstr ""
2364 2355
2365#: src/dns/gnunet-dns-redirector.c:254 2356#: src/dns/gnunet-dns-redirector.c:256
2366msgid "Change DNS replies to point elsewhere." 2357msgid "Change DNS replies to point elsewhere."
2367msgstr "" 2358msgstr ""
2368 2359
2369#: src/dns/gnunet-service-dns.c:460 2360#: src/dns/gnunet-service-dns.c:462
2370msgid "# DNS requests answered via TUN interface" 2361msgid "# DNS requests answered via TUN interface"
2371msgstr "" 2362msgstr ""
2372 2363
2373#: src/dns/gnunet-service-dns.c:608 2364#: src/dns/gnunet-service-dns.c:610
2374msgid "# DNS exit failed (failed to open socket)" 2365msgid "# DNS exit failed (failed to open socket)"
2375msgstr "" 2366msgstr ""
2376 2367
2377#: src/dns/gnunet-service-dns.c:738 2368#: src/dns/gnunet-service-dns.c:740
2378msgid "# External DNS response discarded (no matching request)" 2369msgid "# External DNS response discarded (no matching request)"
2379msgstr "" 2370msgstr ""
2380 2371
2381#: src/dns/gnunet-service-dns.c:813 2372#: src/dns/gnunet-service-dns.c:815
2382msgid "# Client response discarded (no matching request)" 2373msgid "# Client response discarded (no matching request)"
2383msgstr "" 2374msgstr ""
2384 2375
2385#: src/dns/gnunet-service-dns.c:928 2376#: src/dns/gnunet-service-dns.c:930
2386msgid "Received malformed IPv4-UDP packet on TUN interface.\n" 2377msgid "Received malformed IPv4-UDP packet on TUN interface.\n"
2387msgstr "" 2378msgstr ""
2388 2379
2389#: src/dns/gnunet-service-dns.c:944 2380#: src/dns/gnunet-service-dns.c:946
2390msgid "Received malformed IPv6-UDP packet on TUN interface.\n" 2381msgid "Received malformed IPv6-UDP packet on TUN interface.\n"
2391msgstr "" 2382msgstr ""
2392 2383
2393#: src/dns/gnunet-service-dns.c:953 2384#: src/dns/gnunet-service-dns.c:955
2394#, c-format 2385#, c-format
2395msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n" 2386msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n"
2396msgstr "" 2387msgstr ""
2397 2388
2398#: src/dns/gnunet-service-dns.c:963 2389#: src/dns/gnunet-service-dns.c:965
2399msgid "DNS interceptor got non-DNS packet (dropped)\n" 2390msgid "DNS interceptor got non-DNS packet (dropped)\n"
2400msgstr "" 2391msgstr ""
2401 2392
2402#: src/dns/gnunet-service-dns.c:965 2393#: src/dns/gnunet-service-dns.c:967
2403msgid "# Non-DNS UDP packet received via TUN interface" 2394msgid "# Non-DNS UDP packet received via TUN interface"
2404msgstr "" 2395msgstr ""
2405 2396
2406#: src/dns/gnunet-service-dns.c:1032 2397#: src/dns/gnunet-service-dns.c:1034
2407msgid "# DNS requests received via TUN interface" 2398msgid "# DNS requests received via TUN interface"
2408msgstr "" 2399msgstr ""
2409 2400
2410#: src/dns/gnunet-service-dns.c:1080 src/exit/gnunet-daemon-exit.c:3563 2401#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
2411msgid "need a valid IPv4 or IPv6 address\n" 2402msgid "need a valid IPv4 or IPv6 address\n"
2412msgstr "" 2403msgstr ""
2413 2404
2414#: src/dns/gnunet-service-dns.c:1090 2405#: src/dns/gnunet-service-dns.c:1092
2415#, c-format 2406#, c-format
2416msgid "`%s' must be installed SUID, will not run DNS interceptor\n" 2407msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
2417msgstr "" 2408msgstr ""
2418 2409
2419#: src/dv/gnunet-dv.c:173 2410#: src/dv/gnunet-dv.c:175
2420msgid "Print information about DV state" 2411msgid "Print information about DV state"
2421msgstr "" 2412msgstr ""
2422 2413
2423#: src/exit/gnunet-daemon-exit.c:958 2414#: src/exit/gnunet-daemon-exit.c:960
2424msgid "# TCP packets sent via TUN" 2415msgid "# TCP packets sent via TUN"
2425msgstr "" 2416msgstr ""
2426 2417
2427#: src/exit/gnunet-daemon-exit.c:1059 2418#: src/exit/gnunet-daemon-exit.c:1061
2428msgid "# ICMP packets sent via TUN" 2419msgid "# ICMP packets sent via TUN"
2429msgstr "" 2420msgstr ""
2430 2421
2431#: src/exit/gnunet-daemon-exit.c:1338 2422#: src/exit/gnunet-daemon-exit.c:1340
2432msgid "# UDP packets sent via TUN" 2423msgid "# UDP packets sent via TUN"
2433msgstr "" 2424msgstr ""
2434 2425
2435#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570 2426#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
2436#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699 2427#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
2437#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951 2428#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
2438#: src/exit/gnunet-daemon-exit.c:2205 2429#: src/exit/gnunet-daemon-exit.c:2207
2439msgid "# Bytes received from CADET" 2430msgid "# Bytes received from CADET"
2440msgstr "" 2431msgstr ""
2441 2432
2442#: src/exit/gnunet-daemon-exit.c:1465 2433#: src/exit/gnunet-daemon-exit.c:1467
2443msgid "# UDP IP-exit requests received via cadet" 2434msgid "# UDP IP-exit requests received via cadet"
2444msgstr "" 2435msgstr ""
2445 2436
2446#: src/exit/gnunet-daemon-exit.c:1573 2437#: src/exit/gnunet-daemon-exit.c:1575
2447msgid "# UDP service requests received via cadet" 2438msgid "# UDP service requests received via cadet"
2448msgstr "" 2439msgstr ""
2449 2440
2450#: src/exit/gnunet-daemon-exit.c:1613 2441#: src/exit/gnunet-daemon-exit.c:1615
2451msgid "# TCP service creation requests received via cadet" 2442msgid "# TCP service creation requests received via cadet"
2452msgstr "" 2443msgstr ""
2453 2444
2454#: src/exit/gnunet-daemon-exit.c:1702 2445#: src/exit/gnunet-daemon-exit.c:1704
2455msgid "# TCP IP-exit creation requests received via cadet" 2446msgid "# TCP IP-exit creation requests received via cadet"
2456msgstr "" 2447msgstr ""
2457 2448
2458#: src/exit/gnunet-daemon-exit.c:1786 2449#: src/exit/gnunet-daemon-exit.c:1788
2459msgid "# TCP DATA requests dropped (no session)" 2450msgid "# TCP DATA requests dropped (no session)"
2460msgstr "" 2451msgstr ""
2461 2452
2462#: src/exit/gnunet-daemon-exit.c:1823 2453#: src/exit/gnunet-daemon-exit.c:1825
2463msgid "# TCP data requests received via cadet" 2454msgid "# TCP data requests received via cadet"
2464msgstr "" 2455msgstr ""
2465 2456
2466#: src/exit/gnunet-daemon-exit.c:1954 2457#: src/exit/gnunet-daemon-exit.c:1956
2467msgid "# ICMP IP-exit requests received via cadet" 2458msgid "# ICMP IP-exit requests received via cadet"
2468msgstr "" 2459msgstr ""
2469 2460
2470#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277 2461#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
2471#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:826 2462#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
2472#: src/vpn/gnunet-service-vpn.c:989 src/vpn/gnunet-service-vpn.c:2103 2463#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
2473msgid "# ICMPv4 packets dropped (type not allowed)" 2464msgid "# ICMPv4 packets dropped (type not allowed)"
2474msgstr "" 2465msgstr ""
2475 2466
2476#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336 2467#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
2477#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885 2468#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
2478#: src/vpn/gnunet-service-vpn.c:1022 src/vpn/gnunet-service-vpn.c:2156 2469#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
2479msgid "# ICMPv6 packets dropped (type not allowed)" 2470msgid "# ICMPv6 packets dropped (type not allowed)"
2480msgstr "" 2471msgstr ""
2481 2472
2482#: src/exit/gnunet-daemon-exit.c:2208 2473#: src/exit/gnunet-daemon-exit.c:2210
2483msgid "# ICMP service requests received via cadet" 2474msgid "# ICMP service requests received via cadet"
2484msgstr "" 2475msgstr ""
2485 2476
2486#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:983 2477#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
2487#: src/vpn/gnunet-service-vpn.c:2094 2478#: src/vpn/gnunet-service-vpn.c:2096
2488msgid "# ICMPv4 packets dropped (impossible PT to v6)" 2479msgid "# ICMPv4 packets dropped (impossible PT to v6)"
2489msgstr "" 2480msgstr ""
2490 2481
2491#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:873 2482#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
2492#: src/vpn/gnunet-service-vpn.c:2128 src/vpn/gnunet-service-vpn.c:2139 2483#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
2493msgid "# ICMPv6 packets dropped (impossible PT to v4)" 2484msgid "# ICMPv6 packets dropped (impossible PT to v4)"
2494msgstr "" 2485msgstr ""
2495 2486
2496#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066 2487#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
2497msgid "# Inbound CADET channels created" 2488msgid "# Inbound CADET channels created"
2498msgstr "" 2489msgstr ""
2499 2490
2500#: src/exit/gnunet-daemon-exit.c:2520 2491#: src/exit/gnunet-daemon-exit.c:2522
2501#, c-format 2492#, c-format
2502msgid "Got duplicate service records for `%s:%u'\n" 2493msgid "Got duplicate service records for `%s:%u'\n"
2503msgstr "" 2494msgstr ""
2504 2495
2505#: src/exit/gnunet-daemon-exit.c:2539 2496#: src/exit/gnunet-daemon-exit.c:2541
2506msgid "# Messages transmitted via cadet channels" 2497msgid "# Messages transmitted via cadet channels"
2507msgstr "" 2498msgstr ""
2508 2499
2509#: src/exit/gnunet-daemon-exit.c:2717 2500#: src/exit/gnunet-daemon-exit.c:2719
2510msgid "# ICMP packets dropped (not allowed)" 2501msgid "# ICMP packets dropped (not allowed)"
2511msgstr "" 2502msgstr ""
2512 2503
2513#: src/exit/gnunet-daemon-exit.c:2725 2504#: src/exit/gnunet-daemon-exit.c:2727
2514msgid "ICMP Packet dropped, have no matching connection information\n" 2505msgid "ICMP Packet dropped, have no matching connection information\n"
2515msgstr "" 2506msgstr ""
2516 2507
2517#: src/exit/gnunet-daemon-exit.c:2799 2508#: src/exit/gnunet-daemon-exit.c:2801
2518msgid "UDP Packet dropped, have no matching connection information\n" 2509msgid "UDP Packet dropped, have no matching connection information\n"
2519msgstr "" 2510msgstr ""
2520 2511
2521#: src/exit/gnunet-daemon-exit.c:2871 2512#: src/exit/gnunet-daemon-exit.c:2873
2522msgid "TCP Packet dropped, have no matching connection information\n" 2513msgid "TCP Packet dropped, have no matching connection information\n"
2523msgstr "" 2514msgstr ""
2524 2515
2525#: src/exit/gnunet-daemon-exit.c:2919 2516#: src/exit/gnunet-daemon-exit.c:2921
2526msgid "# Packets received from TUN" 2517msgid "# Packets received from TUN"
2527msgstr "" 2518msgstr ""
2528 2519
2529#: src/exit/gnunet-daemon-exit.c:2933 2520#: src/exit/gnunet-daemon-exit.c:2935
2530msgid "# Bytes received from TUN" 2521msgid "# Bytes received from TUN"
2531msgstr "" 2522msgstr ""
2532 2523
2533#: src/exit/gnunet-daemon-exit.c:2959 2524#: src/exit/gnunet-daemon-exit.c:2961
2534msgid "IPv4 packet options received. Ignored.\n" 2525msgid "IPv4 packet options received. Ignored.\n"
2535msgstr "" 2526msgstr ""
2536 2527
2537#: src/exit/gnunet-daemon-exit.c:2986 2528#: src/exit/gnunet-daemon-exit.c:2988
2538#, c-format 2529#, c-format
2539msgid "IPv4 packet with unsupported next header %u received. Ignored.\n" 2530msgid "IPv4 packet with unsupported next header %u received. Ignored.\n"
2540msgstr "" 2531msgstr ""
2541 2532
2542#: src/exit/gnunet-daemon-exit.c:3032 2533#: src/exit/gnunet-daemon-exit.c:3034
2543#, c-format 2534#, c-format
2544msgid "IPv6 packet with unsupported next header %d received. Ignored.\n" 2535msgid "IPv6 packet with unsupported next header %d received. Ignored.\n"
2545msgstr "" 2536msgstr ""
2546 2537
2547#: src/exit/gnunet-daemon-exit.c:3040 2538#: src/exit/gnunet-daemon-exit.c:3042
2548#, c-format 2539#, c-format
2549msgid "Packet from unknown protocol %u received. Ignored.\n" 2540msgid "Packet from unknown protocol %u received. Ignored.\n"
2550msgstr "" 2541msgstr ""
2551 2542
2552#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253 2543#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
2553#, c-format 2544#, c-format
2554msgid "Option `%s' for domain `%s' is not formatted correctly!\n" 2545msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
2555msgstr "" 2546msgstr ""
2556 2547
2557#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275 2548#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
2558#, c-format 2549#, c-format
2559msgid "`%s' is not a valid port number (for domain `%s')!" 2550msgid "`%s' is not a valid port number (for domain `%s')!"
2560msgstr "" 2551msgstr ""
2561 2552
2562#: src/exit/gnunet-daemon-exit.c:3316 2553#: src/exit/gnunet-daemon-exit.c:3318
2563#, c-format 2554#, c-format
2564msgid "No addresses found for hostname `%s' of service `%s'!\n" 2555msgid "No addresses found for hostname `%s' of service `%s'!\n"
2565msgstr "" 2556msgstr ""
2566 2557
2567#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343 2558#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
2568#, c-format 2559#, c-format
2569msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n" 2560msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
2570msgstr "" 2561msgstr ""
2571 2562
2572#: src/exit/gnunet-daemon-exit.c:3355 2563#: src/exit/gnunet-daemon-exit.c:3357
2573#, c-format 2564#, c-format
2574msgid "No IP addresses found for hostname `%s' of service `%s'!\n" 2565msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
2575msgstr "" 2566msgstr ""
2576 2567
2577#: src/exit/gnunet-daemon-exit.c:3499 2568#: src/exit/gnunet-daemon-exit.c:3501
2578msgid "" 2569msgid ""
2579"This system does not support IPv4, will disable IPv4 functions despite them " 2570"This system does not support IPv4, will disable IPv4 functions despite them "
2580"being enabled in the configuration\n" 2571"being enabled in the configuration\n"
2581msgstr "" 2572msgstr ""
2582 2573
2583#: src/exit/gnunet-daemon-exit.c:3507 2574#: src/exit/gnunet-daemon-exit.c:3509
2584msgid "" 2575msgid ""
2585"This system does not support IPv6, will disable IPv6 functions despite them " 2576"This system does not support IPv6, will disable IPv6 functions despite them "
2586"being enabled in the configuration\n" 2577"being enabled in the configuration\n"
2587msgstr "" 2578msgstr ""
2588 2579
2589#: src/exit/gnunet-daemon-exit.c:3514 2580#: src/exit/gnunet-daemon-exit.c:3516
2590msgid "" 2581msgid ""
2591"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use " 2582"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
2592"ENABLE_IPv4=YES\n" 2583"ENABLE_IPv4=YES\n"
2593msgstr "" 2584msgstr ""
2594 2585
2595#: src/exit/gnunet-daemon-exit.c:3520 2586#: src/exit/gnunet-daemon-exit.c:3522
2596msgid "" 2587msgid ""
2597"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use " 2588"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
2598"ENABLE_IPv6=YES\n" 2589"ENABLE_IPv6=YES\n"
2599msgstr "" 2590msgstr ""
2600 2591
2601#: src/exit/gnunet-daemon-exit.c:3688 2592#: src/exit/gnunet-daemon-exit.c:3690
2602msgid "Must be a number" 2593msgid "Must be a number"
2603msgstr "" 2594msgstr ""
2604 2595
2605#: src/exit/gnunet-daemon-exit.c:3803 2596#: src/exit/gnunet-daemon-exit.c:3805
2606#, c-format 2597#, c-format
2607msgid "`%s' must be installed SUID, EXIT will not work\n" 2598msgid "`%s' must be installed SUID, EXIT will not work\n"
2608msgstr "" 2599msgstr ""
2609 2600
2610#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202 2601#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
2611msgid "No useful service enabled. Exiting.\n" 2602msgid "No useful service enabled. Exiting.\n"
2612msgstr "" 2603msgstr ""
2613 2604
2614#: src/exit/gnunet-daemon-exit.c:3964 2605#: src/exit/gnunet-daemon-exit.c:3966
2615msgid "Daemon to run to provide an IP exit node for the VPN" 2606msgid "Daemon to run to provide an IP exit node for the VPN"
2616msgstr "" 2607msgstr ""
2617 2608
2618#: src/fragmentation/defragmentation.c:273 2609#: src/fragmentation/defragmentation.c:275
2619msgid "# acknowledgements sent for fragment" 2610msgid "# acknowledgements sent for fragment"
2620msgstr "" 2611msgstr ""
2621 2612
2622#: src/fragmentation/defragmentation.c:466 2613#: src/fragmentation/defragmentation.c:468
2623#: src/transport/plugin_transport_wlan.c:1552 2614#: src/transport/plugin_transport_wlan.c:1554
2624msgid "# fragments received" 2615msgid "# fragments received"
2625msgstr "" 2616msgstr ""
2626 2617
2627#: src/fragmentation/defragmentation.c:536 2618#: src/fragmentation/defragmentation.c:538
2628msgid "# duplicate fragments received" 2619msgid "# duplicate fragments received"
2629msgstr "" 2620msgstr ""
2630 2621
2631#: src/fragmentation/defragmentation.c:554 2622#: src/fragmentation/defragmentation.c:556
2632msgid "# messages defragmented" 2623msgid "# messages defragmented"
2633msgstr "" 2624msgstr ""
2634 2625
2635#: src/fragmentation/fragmentation.c:238 2626#: src/fragmentation/fragmentation.c:240
2636msgid "# fragments transmitted" 2627msgid "# fragments transmitted"
2637msgstr "" 2628msgstr ""
2638 2629
2639#: src/fragmentation/fragmentation.c:243 2630#: src/fragmentation/fragmentation.c:245
2640msgid "# fragments retransmitted" 2631msgid "# fragments retransmitted"
2641msgstr "" 2632msgstr ""
2642 2633
2643#: src/fragmentation/fragmentation.c:276 2634#: src/fragmentation/fragmentation.c:278
2644msgid "# fragments wrap arounds" 2635msgid "# fragments wrap arounds"
2645msgstr "" 2636msgstr ""
2646 2637
2647#: src/fragmentation/fragmentation.c:323 2638#: src/fragmentation/fragmentation.c:325
2648msgid "# messages fragmented" 2639msgid "# messages fragmented"
2649msgstr "" 2640msgstr ""
2650 2641
2651#: src/fragmentation/fragmentation.c:329 2642#: src/fragmentation/fragmentation.c:331
2652msgid "# total size of fragmented messages" 2643msgid "# total size of fragmented messages"
2653msgstr "" 2644msgstr ""
2654 2645
2655#: src/fragmentation/fragmentation.c:454 2646#: src/fragmentation/fragmentation.c:456
2656msgid "# fragment acknowledgements received" 2647msgid "# fragment acknowledgements received"
2657msgstr "" 2648msgstr ""
2658 2649
2659#: src/fragmentation/fragmentation.c:461 2650#: src/fragmentation/fragmentation.c:463
2660msgid "# bits removed from fragmentation ACKs" 2651msgid "# bits removed from fragmentation ACKs"
2661msgstr "" 2652msgstr ""
2662 2653
2663#: src/fragmentation/fragmentation.c:485 2654#: src/fragmentation/fragmentation.c:487
2664msgid "# fragmentation transmissions completed" 2655msgid "# fragmentation transmissions completed"
2665msgstr "" 2656msgstr ""
2666 2657
2667#: src/fs/fs_api.c:497 2658#: src/fs/fs_api.c:499
2668#, c-format 2659#, c-format
2669msgid "Could not open file `%s': %s" 2660msgid "Could not open file `%s': %s"
2670msgstr "" 2661msgstr ""
2671 2662
2672#: src/fs/fs_api.c:508 2663#: src/fs/fs_api.c:510
2673#, c-format 2664#, c-format
2674msgid "Could not read file `%s': %s" 2665msgid "Could not read file `%s': %s"
2675msgstr "" 2666msgstr ""
2676 2667
2677#: src/fs/fs_api.c:516 2668#: src/fs/fs_api.c:518
2678#, c-format 2669#, c-format
2679msgid "Short read reading from file `%s'!" 2670msgid "Short read reading from file `%s'!"
2680msgstr "" 2671msgstr ""
2681 2672
2682#: src/fs/fs_api.c:1124 2673#: src/fs/fs_api.c:1126
2683#, c-format 2674#, c-format
2684msgid "Failed to resume publishing information `%s': %s\n" 2675msgid "Failed to resume publishing information `%s': %s\n"
2685msgstr "" 2676msgstr ""
2686 2677
2687#: src/fs/fs_api.c:1644 2678#: src/fs/fs_api.c:1646
2688#, c-format 2679#, c-format
2689msgid "Failure while resuming publishing operation `%s': %s\n" 2680msgid "Failure while resuming publishing operation `%s': %s\n"
2690msgstr "" 2681msgstr ""
2691 2682
2692#: src/fs/fs_api.c:1660 2683#: src/fs/fs_api.c:1662
2693#, c-format 2684#, c-format
2694msgid "Failed to resume publishing operation `%s': %s\n" 2685msgid "Failed to resume publishing operation `%s': %s\n"
2695msgstr "" 2686msgstr ""
2696 2687
2697#: src/fs/fs_api.c:2320 2688#: src/fs/fs_api.c:2322
2698#, c-format 2689#, c-format
2699msgid "Failure while resuming unindexing operation `%s': %s\n" 2690msgid "Failure while resuming unindexing operation `%s': %s\n"
2700msgstr "" 2691msgstr ""
2701 2692
2702#: src/fs/fs_api.c:2330 2693#: src/fs/fs_api.c:2332
2703#, c-format 2694#, c-format
2704msgid "Failed to resume unindexing operation `%s': %s\n" 2695msgid "Failed to resume unindexing operation `%s': %s\n"
2705msgstr "" 2696msgstr ""
2706 2697
2707#: src/fs/fs_api.c:2458 src/fs/fs_api.c:2704 2698#: src/fs/fs_api.c:2460 src/fs/fs_api.c:2706
2708#, c-format 2699#, c-format
2709msgid "Failed to resume sub-download `%s': %s\n" 2700msgid "Failed to resume sub-download `%s': %s\n"
2710msgstr "" 2701msgstr ""
2711 2702
2712#: src/fs/fs_api.c:2476 2703#: src/fs/fs_api.c:2478
2713#, c-format 2704#, c-format
2714msgid "Failed to resume sub-search `%s': %s\n" 2705msgid "Failed to resume sub-search `%s': %s\n"
2715msgstr "" 2706msgstr ""
2716 2707
2717#: src/fs/fs_api.c:2491 src/fs/fs_api.c:2510 src/fs/fs_api.c:3014 2708#: src/fs/fs_api.c:2493 src/fs/fs_api.c:2512 src/fs/fs_api.c:3016
2718#, c-format 2709#, c-format
2719msgid "Failure while resuming search operation `%s': %s\n" 2710msgid "Failure while resuming search operation `%s': %s\n"
2720msgstr "" 2711msgstr ""
2721 2712
2722#: src/fs/fs_api.c:2694 2713#: src/fs/fs_api.c:2696
2723#, c-format 2714#, c-format
2724msgid "Failed to resume sub-download `%s': could not open file `%s'\n" 2715msgid "Failed to resume sub-download `%s': could not open file `%s'\n"
2725msgstr "" 2716msgstr ""
2726 2717
2727#: src/fs/fs_api.c:2957 2718#: src/fs/fs_api.c:2959
2728msgid "Could not resume running search, will resume as paused search\n" 2719msgid "Could not resume running search, will resume as paused search\n"
2729msgstr "" 2720msgstr ""
2730 2721
2731#: src/fs/fs_api.c:3052 2722#: src/fs/fs_api.c:3054
2732#, c-format 2723#, c-format
2733msgid "Failure while resuming download operation `%s': %s\n" 2724msgid "Failure while resuming download operation `%s': %s\n"
2734msgstr "" 2725msgstr ""
2735 2726
2736#: src/fs/fs_directory.c:211 2727#: src/fs/fs_directory.c:213
2737msgid "MAGIC mismatch. This is not a GNUnet directory.\n" 2728msgid "MAGIC mismatch. This is not a GNUnet directory.\n"
2738msgstr "" 2729msgstr ""
2739 2730
2740#: src/fs/fs_download.c:308 2731#: src/fs/fs_download.c:310
2741msgid "" 2732msgid ""
2742"Recursive downloads of directories larger than 4 GB are not supported on 32-" 2733"Recursive downloads of directories larger than 4 GB are not supported on 32-"
2743"bit systems\n" 2734"bit systems\n"
2744msgstr "" 2735msgstr ""
2745 2736
2746#: src/fs/fs_download.c:333 2737#: src/fs/fs_download.c:335
2747msgid "Directory too large for system address space\n" 2738msgid "Directory too large for system address space\n"
2748msgstr "" 2739msgstr ""
2749 2740
2750#: src/fs/fs_download.c:345 2741#: src/fs/fs_download.c:347
2751#, c-format 2742#, c-format
2752msgid "" 2743msgid ""
2753"Failed to access full directroy contents of `%s' for recursive download\n" 2744"Failed to access full directroy contents of `%s' for recursive download\n"
2754msgstr "" 2745msgstr ""
2755 2746
2756#: src/fs/fs_download.c:532 src/fs/fs_download.c:544 2747#: src/fs/fs_download.c:534 src/fs/fs_download.c:546
2757#, c-format 2748#, c-format
2758msgid "Failed to open file `%s' for writing" 2749msgid "Failed to open file `%s' for writing"
2759msgstr "" 2750msgstr ""
2760 2751
2761#: src/fs/fs_download.c:954 2752#: src/fs/fs_download.c:956
2762#, c-format 2753#, c-format
2763msgid "Failed to create directory for recursive download of `%s'\n" 2754msgid "Failed to create directory for recursive download of `%s'\n"
2764msgstr "" 2755msgstr ""
2765 2756
2766#: src/fs/fs_download.c:1045 2757#: src/fs/fs_download.c:1047
2767#, c-format 2758#, c-format
2768msgid "" 2759msgid ""
2769"Internal error or bogus download URI (expected %u bytes at depth %u and " 2760"Internal error or bogus download URI (expected %u bytes at depth %u and "
2770"offset %llu/%llu, got %u bytes)" 2761"offset %llu/%llu, got %u bytes)"
2771msgstr "" 2762msgstr ""
2772 2763
2773#: src/fs/fs_download.c:1073 2764#: src/fs/fs_download.c:1075
2774msgid "internal error decrypting content" 2765msgid "internal error decrypting content"
2775msgstr "" 2766msgstr ""
2776 2767
2777#: src/fs/fs_download.c:1097 2768#: src/fs/fs_download.c:1099
2778#, c-format 2769#, c-format
2779msgid "Download failed: could not open file `%s': %s" 2770msgid "Download failed: could not open file `%s': %s"
2780msgstr "" 2771msgstr ""
2781 2772
2782#: src/fs/fs_download.c:1109 2773#: src/fs/fs_download.c:1111
2783#, c-format 2774#, c-format
2784msgid "Failed to seek to offset %llu in file `%s': %s" 2775msgid "Failed to seek to offset %llu in file `%s': %s"
2785msgstr "" 2776msgstr ""
2786 2777
2787#: src/fs/fs_download.c:1118 2778#: src/fs/fs_download.c:1120
2788#, c-format 2779#, c-format
2789msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s" 2780msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s"
2790msgstr "" 2781msgstr ""
2791 2782
2792#: src/fs/fs_download.c:1218 2783#: src/fs/fs_download.c:1220
2793msgid "internal error decoding tree" 2784msgid "internal error decoding tree"
2794msgstr "" 2785msgstr ""
2795 2786
2796#: src/fs/fs_download.c:1883 2787#: src/fs/fs_download.c:1885
2797msgid "Invalid URI" 2788msgid "Invalid URI"
2798msgstr "" 2789msgstr ""
2799 2790
2800#: src/fs/fs_getopt.c:224 2791#: src/fs/fs_getopt.c:235
2801#, c-format 2792#, c-format
2802msgid "" 2793msgid ""
2803"Unknown metadata type in metadata option `%s'. Using metadata type " 2794"Unknown metadata type in metadata option `%s'. Using metadata type "
2804"`unknown' instead.\n" 2795"`unknown' instead.\n"
2805msgstr "" 2796msgstr ""
2806 2797
2807#: src/fs/fs_list_indexed.c:150 2798#: src/fs/fs_list_indexed.c:152
2808#, c-format 2799#, c-format
2809msgid "Failed to receive response from `%s' service.\n" 2800msgid "Failed to receive response from `%s' service.\n"
2810msgstr "" 2801msgstr ""
2811 2802
2812#: src/fs/fs_list_indexed.c:194 2803#: src/fs/fs_list_indexed.c:196
2813#, c-format 2804#, c-format
2814msgid "Failed to not connect to `%s' service.\n" 2805msgid "Failed to not connect to `%s' service.\n"
2815msgstr "" 2806msgstr ""
2816 2807
2817#: src/fs/fs_misc.c:126 2808#: src/fs/fs_misc.c:128
2818#, c-format 2809#, c-format
2819msgid "Did not find mime type `%s' in extension list.\n" 2810msgid "Did not find mime type `%s' in extension list.\n"
2820msgstr "" 2811msgstr ""
2821 2812
2822#: src/fs/fs_namespace.c:205 2813#: src/fs/fs_namespace.c:207
2823#, c-format 2814#, c-format
2824msgid "Failed to open `%s' for writing: %s\n" 2815msgid "Failed to open `%s' for writing: %s\n"
2825msgstr "" 2816msgstr ""
2826 2817
2827#: src/fs/fs_namespace.c:230 2818#: src/fs/fs_namespace.c:232
2828#, c-format 2819#, c-format
2829msgid "Failed to write `%s': %s\n" 2820msgid "Failed to write `%s': %s\n"
2830msgstr "" 2821msgstr ""
2831 2822
2832#: src/fs/fs_namespace.c:322 2823#: src/fs/fs_namespace.c:324
2833#, c-format 2824#, c-format
2834msgid "Failed to read `%s': %s\n" 2825msgid "Failed to read `%s': %s\n"
2835msgstr "" 2826msgstr ""
2836 2827
2837#: src/fs/fs_namespace.c:468 2828#: src/fs/fs_namespace.c:470
2838msgid "Failed to connect to datastore." 2829msgid "Failed to connect to datastore."
2839msgstr "" 2830msgstr ""
2840 2831
2841#: src/fs/fs_publish.c:125 src/fs/fs_publish.c:436 2832#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:438
2842#, c-format 2833#, c-format
2843msgid "Publishing failed: %s" 2834msgid "Publishing failed: %s"
2844msgstr "" 2835msgstr ""
2845 2836
2846#: src/fs/fs_publish.c:722 src/fs/fs_publish.c:776 src/fs/fs_publish.c:821 2837#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
2847#: src/fs/fs_publish.c:842 src/fs/fs_publish.c:872 src/fs/fs_publish.c:1138 2838#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
2848#, c-format 2839#, c-format
2849msgid "Can not index file `%s': %s. Will try to insert instead.\n" 2840msgid "Can not index file `%s': %s. Will try to insert instead.\n"
2850msgstr "" 2841msgstr ""
2851 2842
2852#: src/fs/fs_publish.c:778 2843#: src/fs/fs_publish.c:780
2853msgid "error on index-start request to `fs' service" 2844msgid "error on index-start request to `fs' service"
2854msgstr "" 2845msgstr ""
2855 2846
2856#: src/fs/fs_publish.c:823 2847#: src/fs/fs_publish.c:825
2857msgid "failed to compute hash" 2848msgid "failed to compute hash"
2858msgstr "" 2849msgstr ""
2859 2850
2860#: src/fs/fs_publish.c:843 2851#: src/fs/fs_publish.c:845
2861msgid "filename too long" 2852msgid "filename too long"
2862msgstr "" 2853msgstr ""
2863 2854
2864#: src/fs/fs_publish.c:874 2855#: src/fs/fs_publish.c:876
2865msgid "could not connect to `fs' service" 2856msgid "could not connect to `fs' service"
2866msgstr "" 2857msgstr ""
2867 2858
2868#: src/fs/fs_publish.c:900 2859#: src/fs/fs_publish.c:902
2869#, c-format 2860#, c-format
2870msgid "Failed to get file identifiers for `%s'\n" 2861msgid "Failed to get file identifiers for `%s'\n"
2871msgstr "" 2862msgstr ""
2872 2863
2873#: src/fs/fs_publish.c:989 src/fs/fs_publish.c:1025 2864#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
2874msgid "Can not create LOC URI. Will continue with CHK instead.\n" 2865msgid "Can not create LOC URI. Will continue with CHK instead.\n"
2875msgstr "" 2866msgstr ""
2876 2867
2877#: src/fs/fs_publish.c:1092 2868#: src/fs/fs_publish.c:1094
2878#, c-format 2869#, c-format
2879msgid "Recursive upload failed at `%s': %s" 2870msgid "Recursive upload failed at `%s': %s"
2880msgstr "" 2871msgstr ""
2881 2872
2882#: src/fs/fs_publish.c:1100 2873#: src/fs/fs_publish.c:1102
2883#, c-format 2874#, c-format
2884msgid "Recursive upload failed: %s" 2875msgid "Recursive upload failed: %s"
2885msgstr "" 2876msgstr ""
2886 2877
2887#: src/fs/fs_publish.c:1140 2878#: src/fs/fs_publish.c:1142
2888msgid "needs to be an actual file" 2879msgid "needs to be an actual file"
2889msgstr "" 2880msgstr ""
2890 2881
2891#: src/fs/fs_publish.c:1379 2882#: src/fs/fs_publish.c:1381
2892#, c-format 2883#, c-format
2893msgid "Datastore failure: %s" 2884msgid "Datastore failure: %s"
2894msgstr "" 2885msgstr ""
2895 2886
2896#: src/fs/fs_publish.c:1470 2887#: src/fs/fs_publish.c:1472
2897#, c-format 2888#, c-format
2898msgid "Reserving space for %u entries and %llu bytes for publication\n" 2889msgid "Reserving space for %u entries and %llu bytes for publication\n"
2899msgstr "" 2890msgstr ""
2900 2891
2901#: src/fs/fs_publish_ksk.c:218 2892#: src/fs/fs_publish_ksk.c:220
2902msgid "Could not connect to datastore." 2893msgid "Could not connect to datastore."
2903msgstr "" 2894msgstr ""
2904 2895
2905#: src/fs/fs_publish_ublock.c:239 2896#: src/fs/fs_publish_ublock.c:241
2906msgid "Internal error." 2897msgid "Internal error."
2907msgstr "" 2898msgstr ""
2908 2899
2909#: src/fs/fs_search.c:820 src/fs/fs_search.c:890 2900#: src/fs/fs_search.c:822 src/fs/fs_search.c:892
2910#, c-format 2901#, c-format
2911msgid "Failed to parse URI `%s': %s\n" 2902msgid "Failed to parse URI `%s': %s\n"
2912msgstr "" 2903msgstr ""
2913 2904
2914#: src/fs/fs_search.c:977 2905#: src/fs/fs_search.c:979
2915#, c-format 2906#, c-format
2916msgid "Got result with unknown block type `%d', ignoring" 2907msgid "Got result with unknown block type `%d', ignoring"
2917msgstr "" 2908msgstr ""
2918 2909
2919#: src/fs/fs_unindex.c:61 2910#: src/fs/fs_unindex.c:63
2920msgid "Failed to find given position in file" 2911msgid "Failed to find given position in file"
2921msgstr "" 2912msgstr ""
2922 2913
2923#: src/fs/fs_unindex.c:66 2914#: src/fs/fs_unindex.c:68
2924msgid "Failed to read file" 2915msgid "Failed to read file"
2925msgstr "" 2916msgstr ""
2926 2917
2927#: src/fs/fs_unindex.c:273 2918#: src/fs/fs_unindex.c:275
2928msgid "Error communicating with `fs' service." 2919msgid "Error communicating with `fs' service."
2929msgstr "" 2920msgstr ""
2930 2921
2931#: src/fs/fs_unindex.c:324 2922#: src/fs/fs_unindex.c:326
2932msgid "Failed to connect to FS service for unindexing." 2923msgid "Failed to connect to FS service for unindexing."
2933msgstr "" 2924msgstr ""
2934 2925
2935#: src/fs/fs_unindex.c:374 src/fs/fs_unindex.c:386 2926#: src/fs/fs_unindex.c:376 src/fs/fs_unindex.c:388
2936msgid "Failed to get KSKs from directory scan." 2927msgid "Failed to get KSKs from directory scan."
2937msgstr "" 2928msgstr ""
2938 2929
2939#: src/fs/fs_unindex.c:382 2930#: src/fs/fs_unindex.c:384
2940#, c-format 2931#, c-format
2941msgid "Internal error scanning `%s'.\n" 2932msgid "Internal error scanning `%s'.\n"
2942msgstr "" 2933msgstr ""
2943 2934
2944#: src/fs/fs_unindex.c:441 2935#: src/fs/fs_unindex.c:443
2945#, c-format 2936#, c-format
2946msgid "Failed to remove UBlock: %s\n" 2937msgid "Failed to remove UBlock: %s\n"
2947msgstr "" 2938msgstr ""
2948 2939
2949#: src/fs/fs_unindex.c:586 src/fs/fs_unindex.c:650 2940#: src/fs/fs_unindex.c:588 src/fs/fs_unindex.c:652
2950msgid "Failed to connect to `datastore' service." 2941msgid "Failed to connect to `datastore' service."
2951msgstr "" 2942msgstr ""
2952 2943
2953#: src/fs/fs_unindex.c:663 2944#: src/fs/fs_unindex.c:665
2954msgid "Failed to open file for unindexing." 2945msgid "Failed to open file for unindexing."
2955msgstr "" 2946msgstr ""
2956 2947
2957#: src/fs/fs_unindex.c:702 2948#: src/fs/fs_unindex.c:704
2958msgid "Failed to compute hash of file." 2949msgid "Failed to compute hash of file."
2959msgstr "" 2950msgstr ""
2960 2951
2961#: src/fs/fs_uri.c:232 2952#: src/fs/fs_uri.c:234
2962#, no-c-format 2953#, no-c-format
2963msgid "Malformed KSK URI (`%' must be followed by HEX number)" 2954msgid "Malformed KSK URI (`%' must be followed by HEX number)"
2964msgstr "" 2955msgstr ""
2965 2956
2966#: src/fs/fs_uri.c:291 2957#: src/fs/fs_uri.c:293
2967msgid "Malformed KSK URI (must not begin or end with `+')" 2958msgid "Malformed KSK URI (must not begin or end with `+')"
2968msgstr "" 2959msgstr ""
2969 2960
2970#: src/fs/fs_uri.c:309 2961#: src/fs/fs_uri.c:311
2971msgid "Malformed KSK URI (`++' not allowed)" 2962msgid "Malformed KSK URI (`++' not allowed)"
2972msgstr "" 2963msgstr ""
2973 2964
2974#: src/fs/fs_uri.c:316 2965#: src/fs/fs_uri.c:318
2975msgid "Malformed KSK URI (quotes not balanced)" 2966msgid "Malformed KSK URI (quotes not balanced)"
2976msgstr "" 2967msgstr ""
2977 2968
2978#: src/fs/fs_uri.c:386 2969#: src/fs/fs_uri.c:388
2979msgid "Malformed SKS URI (wrong syntax)" 2970msgid "Malformed SKS URI (wrong syntax)"
2980msgstr "" 2971msgstr ""
2981 2972
2982#: src/fs/fs_uri.c:427 2973#: src/fs/fs_uri.c:429
2983msgid "Malformed CHK URI (wrong syntax)" 2974msgid "Malformed CHK URI (wrong syntax)"
2984msgstr "" 2975msgstr ""
2985 2976
2986#: src/fs/fs_uri.c:442 2977#: src/fs/fs_uri.c:444
2987msgid "Malformed CHK URI (failed to decode CHK)" 2978msgid "Malformed CHK URI (failed to decode CHK)"
2988msgstr "" 2979msgstr ""
2989 2980
2990#: src/fs/fs_uri.c:521 2981#: src/fs/fs_uri.c:523
2991msgid "LOC URI malformed (wrong syntax)" 2982msgid "LOC URI malformed (wrong syntax)"
2992msgstr "" 2983msgstr ""
2993 2984
2994#: src/fs/fs_uri.c:536 2985#: src/fs/fs_uri.c:538
2995msgid "LOC URI malformed (no CHK)" 2986msgid "LOC URI malformed (no CHK)"
2996msgstr "" 2987msgstr ""
2997 2988
2998#: src/fs/fs_uri.c:546 2989#: src/fs/fs_uri.c:548
2999msgid "LOC URI malformed (missing LOC)" 2990msgid "LOC URI malformed (missing LOC)"
3000msgstr "" 2991msgstr ""
3001 2992
3002#: src/fs/fs_uri.c:554 2993#: src/fs/fs_uri.c:556
3003msgid "LOC URI malformed (wrong syntax for public key)" 2994msgid "LOC URI malformed (wrong syntax for public key)"
3004msgstr "" 2995msgstr ""
3005 2996
3006#: src/fs/fs_uri.c:562 2997#: src/fs/fs_uri.c:564
3007msgid "LOC URI malformed (could not decode public key)" 2998msgid "LOC URI malformed (could not decode public key)"
3008msgstr "" 2999msgstr ""
3009 3000
3010#: src/fs/fs_uri.c:568 3001#: src/fs/fs_uri.c:570
3011msgid "LOC URI malformed (could not find signature)" 3002msgid "LOC URI malformed (could not find signature)"
3012msgstr "" 3003msgstr ""
3013 3004
3014#: src/fs/fs_uri.c:574 3005#: src/fs/fs_uri.c:576
3015msgid "LOC URI malformed (wrong syntax for signature)" 3006msgid "LOC URI malformed (wrong syntax for signature)"
3016msgstr "" 3007msgstr ""
3017 3008
3018#: src/fs/fs_uri.c:583 3009#: src/fs/fs_uri.c:585
3019msgid "LOC URI malformed (could not decode signature)" 3010msgid "LOC URI malformed (could not decode signature)"
3020msgstr "" 3011msgstr ""
3021 3012
3022#: src/fs/fs_uri.c:589 3013#: src/fs/fs_uri.c:591
3023msgid "LOC URI malformed (wrong syntax for expiration time)" 3014msgid "LOC URI malformed (wrong syntax for expiration time)"
3024msgstr "" 3015msgstr ""
3025 3016
3026#: src/fs/fs_uri.c:595 3017#: src/fs/fs_uri.c:597
3027msgid "LOC URI malformed (could not parse expiration time)" 3018msgid "LOC URI malformed (could not parse expiration time)"
3028msgstr "" 3019msgstr ""
3029 3020
3030#: src/fs/fs_uri.c:607 3021#: src/fs/fs_uri.c:609
3031msgid "LOC URI malformed (signature failed validation)" 3022msgid "LOC URI malformed (signature failed validation)"
3032msgstr "" 3023msgstr ""
3033 3024
3034#: src/fs/fs_uri.c:641 3025#: src/fs/fs_uri.c:643
3035msgid "invalid argument" 3026msgid "invalid argument"
3036msgstr "" 3027msgstr ""
3037 3028
3038#: src/fs/fs_uri.c:653 3029#: src/fs/fs_uri.c:655
3039msgid "Unrecognized URI type" 3030msgid "Unrecognized URI type"
3040msgstr "" 3031msgstr ""
3041 3032
3042#: src/fs/fs_uri.c:1057 src/fs/fs_uri.c:1084 3033#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
3043msgid "No keywords specified!\n" 3034msgid "No keywords specified!\n"
3044msgstr "" 3035msgstr ""
3045 3036
3046#: src/fs/fs_uri.c:1090 3037#: src/fs/fs_uri.c:1092
3047msgid "Number of double-quotes not balanced!\n" 3038msgid "Number of double-quotes not balanced!\n"
3048msgstr "" 3039msgstr ""
3049 3040
3050#: src/fs/gnunet-auto-share.c:230 3041#: src/fs/gnunet-auto-share.c:232
3051#, c-format 3042#, c-format
3052msgid "Failed to load state: %s\n" 3043msgid "Failed to load state: %s\n"
3053msgstr "" 3044msgstr ""
3054 3045
3055#: src/fs/gnunet-auto-share.c:283 src/fs/gnunet-auto-share.c:293 3046#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
3056#: src/fs/gnunet-auto-share.c:303 3047#: src/fs/gnunet-auto-share.c:305
3057#, c-format 3048#, c-format
3058msgid "Failed to save state to file %s\n" 3049msgid "Failed to save state to file %s\n"
3059msgstr "" 3050msgstr ""
3060 3051
3061#: src/fs/gnunet-auto-share.c:405 3052#: src/fs/gnunet-auto-share.c:407
3062#, c-format 3053#, c-format
3063msgid "Publication of `%s' done\n" 3054msgid "Publication of `%s' done\n"
3064msgstr "" 3055msgstr ""
3065 3056
3066#: src/fs/gnunet-auto-share.c:492 3057#: src/fs/gnunet-auto-share.c:494
3067#, c-format 3058#, c-format
3068msgid "Publishing `%s'\n" 3059msgid "Publishing `%s'\n"
3069msgstr "" 3060msgstr ""
3070 3061
3071#: src/fs/gnunet-auto-share.c:502 3062#: src/fs/gnunet-auto-share.c:504
3072#, c-format 3063#, c-format
3073msgid "Failed to run `%s'\n" 3064msgid "Failed to run `%s'\n"
3074msgstr "" 3065msgstr ""
3075 3066
3076#: src/fs/gnunet-auto-share.c:711 3067#: src/fs/gnunet-auto-share.c:713
3077#, c-format 3068#, c-format
3078msgid "" 3069msgid ""
3079"You must specify one and only one directory name for automatic publication.\n" 3070"You must specify one and only one directory name for automatic publication.\n"
3080msgstr "" 3071msgstr ""
3081 3072
3082#: src/fs/gnunet-auto-share.c:765 src/fs/gnunet-publish.c:898 3073#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
3083msgid "set the desired LEVEL of sender-anonymity" 3074msgid "set the desired LEVEL of sender-anonymity"
3084msgstr "" 3075msgstr ""
3085 3076
3086#: src/fs/gnunet-auto-share.c:770 src/fs/gnunet-publish.c:902 3077#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
3087msgid "disable adding the creation time to the metadata of the uploaded file" 3078msgid "disable adding the creation time to the metadata of the uploaded file"
3088msgstr "" 3079msgstr ""
3089 3080
3090#: src/fs/gnunet-auto-share.c:775 src/fs/gnunet-publish.c:907 3081#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
3091msgid "do not use libextractor to add keywords or metadata" 3082msgid "do not use libextractor to add keywords or metadata"
3092msgstr "" 3083msgstr ""
3093 3084
3094#: src/fs/gnunet-auto-share.c:781 src/fs/gnunet-publish.c:942 3085#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
3095msgid "specify the priority of the content" 3086msgid "specify the priority of the content"
3096msgstr "" 3087msgstr ""
3097 3088
3098#: src/fs/gnunet-auto-share.c:787 src/fs/gnunet-publish.c:954 3089#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
3099msgid "set the desired replication LEVEL" 3090msgid "set the desired replication LEVEL"
3100msgstr "" 3091msgstr ""
3101 3092
3102#: src/fs/gnunet-auto-share.c:811 3093#: src/fs/gnunet-auto-share.c:813
3103msgid "Automatically publish files from a directory on GNUnet" 3094msgid "Automatically publish files from a directory on GNUnet"
3104msgstr "" 3095msgstr ""
3105 3096
3106#: src/fs/gnunet-daemon-fsprofiler.c:646 3097#: src/fs/gnunet-daemon-fsprofiler.c:648
3107msgid "Daemon to use file-sharing to measure its performance." 3098msgid "Daemon to use file-sharing to measure its performance."
3108msgstr "" 3099msgstr ""
3109 3100
3110#: src/fs/gnunet-directory.c:51 3101#: src/fs/gnunet-directory.c:53
3111#, c-format 3102#, c-format
3112msgid "\t<original file embedded in %u bytes of meta data>\n" 3103msgid "\t<original file embedded in %u bytes of meta data>\n"
3113msgstr "" 3104msgstr ""
3114 3105
3115#: src/fs/gnunet-directory.c:103 3106#: src/fs/gnunet-directory.c:105
3116#, c-format 3107#, c-format
3117msgid "Directory `%s' meta data:\n" 3108msgid "Directory `%s' meta data:\n"
3118msgstr "" 3109msgstr ""
3119 3110
3120#: src/fs/gnunet-directory.c:106 3111#: src/fs/gnunet-directory.c:108
3121#, c-format 3112#, c-format
3122msgid "Directory `%s' contents:\n" 3113msgid "Directory `%s' contents:\n"
3123msgstr "" 3114msgstr ""
3124 3115
3125#: src/fs/gnunet-directory.c:141 3116#: src/fs/gnunet-directory.c:143
3126msgid "You must specify a filename to inspect.\n" 3117msgid "You must specify a filename to inspect.\n"
3127msgstr "" 3118msgstr ""
3128 3119
3129#: src/fs/gnunet-directory.c:154 3120#: src/fs/gnunet-directory.c:156
3130#, c-format 3121#, c-format
3131msgid "Failed to read directory `%s'\n" 3122msgid "Failed to read directory `%s'\n"
3132msgstr "" 3123msgstr ""
3133 3124
3134#: src/fs/gnunet-directory.c:163 3125#: src/fs/gnunet-directory.c:165
3135#, c-format 3126#, c-format
3136msgid "`%s' is not a GNUnet directory\n" 3127msgid "`%s' is not a GNUnet directory\n"
3137msgstr "" 3128msgstr ""
3138 3129
3139#: src/fs/gnunet-directory.c:192 3130#: src/fs/gnunet-directory.c:194
3140msgid "Display contents of a GNUnet directory" 3131msgid "Display contents of a GNUnet directory"
3141msgstr "" 3132msgstr ""
3142 3133
3143#: src/fs/gnunet-download.c:137 3134#: src/fs/gnunet-download.c:139
3144#, c-format 3135#, c-format
3145msgid "Starting download `%s'.\n" 3136msgid "Starting download `%s'.\n"
3146msgstr "" 3137msgstr ""
3147 3138
3148#: src/fs/gnunet-download.c:147 3139#: src/fs/gnunet-download.c:149
3149msgid "<unknown time>" 3140msgid "<unknown time>"
3150msgstr "" 3141msgstr ""
3151 3142
3152#: src/fs/gnunet-download.c:156 3143#: src/fs/gnunet-download.c:158
3153#, c-format 3144#, c-format
3154msgid "" 3145msgid ""
3155"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to " 3146"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to "
3156"download\n" 3147"download\n"
3157msgstr "" 3148msgstr ""
3158 3149
3159#: src/fs/gnunet-download.c:182 3150#: src/fs/gnunet-download.c:184
3160#, c-format 3151#, c-format
3161msgid "Error downloading: %s.\n" 3152msgid "Error downloading: %s.\n"
3162msgstr "" 3153msgstr ""
3163 3154
3164#: src/fs/gnunet-download.c:199 3155#: src/fs/gnunet-download.c:201
3165#, c-format 3156#, c-format
3166msgid "Downloading `%s' done (%s/s).\n" 3157msgid "Downloading `%s' done (%s/s).\n"
3167msgstr "" 3158msgstr ""
3168 3159
3169#: src/fs/gnunet-download.c:214 src/fs/gnunet-publish.c:293 3160#: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
3170#: src/fs/gnunet-search.c:210 src/fs/gnunet-unindex.c:105 3161#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
3171#, c-format 3162#, c-format
3172msgid "Unexpected status: %d\n" 3163msgid "Unexpected status: %d\n"
3173msgstr "" 3164msgstr ""
3174 3165
3175#: src/fs/gnunet-download.c:244 3166#: src/fs/gnunet-download.c:246
3176msgid "You need to specify a URI argument.\n" 3167msgid "You need to specify a URI argument.\n"
3177msgstr "" 3168msgstr ""
3178 3169
3179#: src/fs/gnunet-download.c:251 src/fs/gnunet-publish.c:724 3170#: src/fs/gnunet-download.c:253 src/fs/gnunet-publish.c:727
3180#, c-format 3171#, c-format
3181msgid "Failed to parse URI: %s\n" 3172msgid "Failed to parse URI: %s\n"
3182msgstr "" 3173msgstr ""
3183 3174
3184#: src/fs/gnunet-download.c:262 3175#: src/fs/gnunet-download.c:264
3185msgid "Only CHK or LOC URIs supported.\n" 3176msgid "Only CHK or LOC URIs supported.\n"
3186msgstr "" 3177msgstr ""
3187 3178
3188#: src/fs/gnunet-download.c:271 3179#: src/fs/gnunet-download.c:273
3189msgid "Target filename must be specified.\n" 3180msgid "Target filename must be specified.\n"
3190msgstr "" 3181msgstr ""
3191 3182
3192#: src/fs/gnunet-download.c:289 src/fs/gnunet-publish.c:868 3183#: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
3193#: src/fs/gnunet-search.c:268 src/fs/gnunet-unindex.c:137 3184#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
3194#, c-format 3185#, c-format
3195msgid "Could not initialize `%s' subsystem.\n" 3186msgid "Could not initialize `%s' subsystem.\n"
3196msgstr "" 3187msgstr ""
3197 3188
3198#: src/fs/gnunet-download.c:337 src/fs/gnunet-search.c:311 3189#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
3199msgid "set the desired LEVEL of receiver-anonymity" 3190msgid "set the desired LEVEL of receiver-anonymity"
3200msgstr "" 3191msgstr ""
3201 3192
3202#: src/fs/gnunet-download.c:342 3193#: src/fs/gnunet-download.c:344
3203msgid "delete incomplete downloads (when aborted with CTRL-C)" 3194msgid "delete incomplete downloads (when aborted with CTRL-C)"
3204msgstr "" 3195msgstr ""
3205 3196
3206#: src/fs/gnunet-download.c:347 src/fs/gnunet-search.c:317 3197#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
3207msgid "only search the local peer (no P2P network search)" 3198msgid "only search the local peer (no P2P network search)"
3208msgstr "" 3199msgstr ""
3209 3200
3210#: src/fs/gnunet-download.c:352 3201#: src/fs/gnunet-download.c:354
3211msgid "write the file to FILENAME" 3202msgid "write the file to FILENAME"
3212msgstr "" 3203msgstr ""
3213 3204
3214#: src/fs/gnunet-download.c:357 3205#: src/fs/gnunet-download.c:359
3215msgid "set the maximum number of parallel downloads that is allowed" 3206msgid "set the maximum number of parallel downloads that is allowed"
3216msgstr "" 3207msgstr ""
3217 3208
3218#: src/fs/gnunet-download.c:362 3209#: src/fs/gnunet-download.c:364
3219msgid "set the maximum number of parallel requests for blocks that is allowed" 3210msgid "set the maximum number of parallel requests for blocks that is allowed"
3220msgstr "" 3211msgstr ""
3221 3212
3222#: src/fs/gnunet-download.c:366 3213#: src/fs/gnunet-download.c:368
3223msgid "download a GNUnet directory recursively" 3214msgid "download a GNUnet directory recursively"
3224msgstr "" 3215msgstr ""
3225 3216
3226#: src/fs/gnunet-download.c:384 3217#: src/fs/gnunet-download.c:386
3227msgid "" 3218msgid ""
3228"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/" 3219"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
3229"chk/...)" 3220"chk/...)"
3230msgstr "" 3221msgstr ""
3231 3222
3232#: src/fs/gnunet-fs.c:117 3223#: src/fs/gnunet-fs.c:119
3233msgid "print a list of all indexed files" 3224msgid "print a list of all indexed files"
3234msgstr "" 3225msgstr ""
3235 3226
3236#: src/fs/gnunet-fs.c:128 3227#: src/fs/gnunet-fs.c:130
3237msgid "Special file-sharing operations" 3228msgid "Special file-sharing operations"
3238msgstr "" 3229msgstr ""
3239 3230
3240#: src/fs/gnunet-fs-profiler.c:209 3231#: src/fs/gnunet-fs-profiler.c:211
3241msgid "run the experiment with COUNT peers" 3232msgid "run the experiment with COUNT peers"
3242msgstr "" 3233msgstr ""
3243 3234
3244#: src/fs/gnunet-fs-profiler.c:215 3235#: src/fs/gnunet-fs-profiler.c:217
3245msgid "specifies name of a file with the HOSTS the testbed should use" 3236msgid "specifies name of a file with the HOSTS the testbed should use"
3246msgstr "" 3237msgstr ""
3247 3238
3248#: src/fs/gnunet-fs-profiler.c:221 3239#: src/fs/gnunet-fs-profiler.c:223
3249msgid "automatically terminate experiment after DELAY" 3240msgid "automatically terminate experiment after DELAY"
3250msgstr "" 3241msgstr ""
3251 3242
3252#: src/fs/gnunet-fs-profiler.c:231 3243#: src/fs/gnunet-fs-profiler.c:233
3253msgid "run a testbed to measure file-sharing performance" 3244msgid "run a testbed to measure file-sharing performance"
3254msgstr "" 3245msgstr ""
3255 3246
3256#: src/fs/gnunet-publish.c:217 src/fs/gnunet-publish.c:229 3247#: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
3257#, c-format 3248#, c-format
3258msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" 3249msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
3259msgstr "" 3250msgstr ""
3260 3251
3261#: src/fs/gnunet-publish.c:237 3252#: src/fs/gnunet-publish.c:239
3262#, c-format 3253#, c-format
3263msgid "Error publishing: %s.\n" 3254msgid "Error publishing: %s.\n"
3264msgstr "" 3255msgstr ""
3265 3256
3266#: src/fs/gnunet-publish.c:244 3257#: src/fs/gnunet-publish.c:246
3267#, c-format 3258#, c-format
3268msgid "Publishing `%s' done.\n" 3259msgid "Publishing `%s' done.\n"
3269msgstr "" 3260msgstr ""
3270 3261
3271#: src/fs/gnunet-publish.c:249 3262#: src/fs/gnunet-publish.c:251
3272#, c-format 3263#, c-format
3273msgid "URI is `%s'.\n" 3264msgid "URI is `%s'.\n"
3274msgstr "" 3265msgstr ""
3275"L'URI è `%s'.\n" 3266"L'URI è `%s'.\n"
3276"\n" 3267"\n"
3277 3268
3278#: src/fs/gnunet-publish.c:257 3269#: src/fs/gnunet-publish.c:259
3279#, fuzzy, c-format 3270#, fuzzy, c-format
3280msgid "Namespace URI is `%s'.\n" 3271msgid "Namespace URI is `%s'.\n"
3281msgstr "" 3272msgstr ""
3282"L'URI è `%s'.\n" 3273"L'URI è `%s'.\n"
3283"\n" 3274"\n"
3284 3275
3285#: src/fs/gnunet-publish.c:273 3276#: src/fs/gnunet-publish.c:275
3286msgid "Starting cleanup after abort\n" 3277msgid "Starting cleanup after abort\n"
3287msgstr "" 3278msgstr ""
3288 3279
3289#: src/fs/gnunet-publish.c:280 3280#: src/fs/gnunet-publish.c:282
3290msgid "Cleanup after abort completed.\n" 3281msgid "Cleanup after abort completed.\n"
3291msgstr "" 3282msgstr ""
3292 3283
3293#: src/fs/gnunet-publish.c:286 3284#: src/fs/gnunet-publish.c:288
3294msgid "Cleanup after abort failed.\n" 3285msgid "Cleanup after abort failed.\n"
3295msgstr "" 3286msgstr ""
3296 3287
3297#: src/fs/gnunet-publish.c:428 3288#: src/fs/gnunet-publish.c:430
3298#, c-format 3289#, c-format
3299msgid "Meta data for file `%s' (%s)\n" 3290msgid "Meta data for file `%s' (%s)\n"
3300msgstr "" 3291msgstr ""
3301 3292
3302#: src/fs/gnunet-publish.c:433 3293#: src/fs/gnunet-publish.c:435
3303#, c-format 3294#, c-format
3304msgid "Keywords for file `%s' (%s)\n" 3295msgid "Keywords for file `%s' (%s)\n"
3305msgstr "" 3296msgstr ""
3306 3297
3307#: src/fs/gnunet-publish.c:587 3298#: src/fs/gnunet-publish.c:590
3308msgid "Could not publish\n" 3299msgid "Could not publish\n"
3309msgstr "" 3300msgstr ""
3310 3301
3311#: src/fs/gnunet-publish.c:612 3302#: src/fs/gnunet-publish.c:615
3312msgid "Could not start publishing.\n" 3303msgid "Could not start publishing.\n"
3313msgstr "" 3304msgstr ""
3314 3305
3315#: src/fs/gnunet-publish.c:646 3306#: src/fs/gnunet-publish.c:649
3316#, c-format 3307#, c-format
3317msgid "Scanning directory `%s'.\n" 3308msgid "Scanning directory `%s'.\n"
3318msgstr "" 3309msgstr ""
3319 3310
3320#: src/fs/gnunet-publish.c:650 3311#: src/fs/gnunet-publish.c:653
3321#, c-format 3312#, c-format
3322msgid "Scanning file `%s'.\n" 3313msgid "Scanning file `%s'.\n"
3323msgstr "" 3314msgstr ""
3324 3315
3325#: src/fs/gnunet-publish.c:656 3316#: src/fs/gnunet-publish.c:659
3326#, c-format 3317#, c-format
3327msgid "There was trouble processing file `%s', skipping it.\n" 3318msgid "There was trouble processing file `%s', skipping it.\n"
3328msgstr "" 3319msgstr ""
3329 3320
3330#: src/fs/gnunet-publish.c:663 3321#: src/fs/gnunet-publish.c:666
3331msgid "Preprocessing complete.\n" 3322msgid "Preprocessing complete.\n"
3332msgstr "" 3323msgstr ""
3333 3324
3334#: src/fs/gnunet-publish.c:668 3325#: src/fs/gnunet-publish.c:671
3335#, c-format 3326#, c-format
3336msgid "Extracting meta data from file `%s' complete.\n" 3327msgid "Extracting meta data from file `%s' complete.\n"
3337msgstr "" 3328msgstr ""
3338 3329
3339#: src/fs/gnunet-publish.c:675 3330#: src/fs/gnunet-publish.c:678
3340msgid "Meta data extraction has finished.\n" 3331msgid "Meta data extraction has finished.\n"
3341msgstr "" 3332msgstr ""
3342 3333
3343#: src/fs/gnunet-publish.c:684 3334#: src/fs/gnunet-publish.c:687
3344msgid "Internal error scanning directory.\n" 3335msgid "Internal error scanning directory.\n"
3345msgstr "" 3336msgstr ""
3346 3337
3347#: src/fs/gnunet-publish.c:712 3338#: src/fs/gnunet-publish.c:715
3348#, c-format 3339#, c-format
3349msgid "Selected pseudonym `%s' unknown\n" 3340msgid "Selected pseudonym `%s' unknown\n"
3350msgstr "" 3341msgstr ""
3351 3342
3352#: src/fs/gnunet-publish.c:745 3343#: src/fs/gnunet-publish.c:749
3353#, c-format 3344#, c-format
3354msgid "Failed to access `%s': %s\n" 3345msgid "Failed to access `%s': %s\n"
3355msgstr "" 3346msgstr ""
3356 3347
3357#: src/fs/gnunet-publish.c:759 3348#: src/fs/gnunet-publish.c:763
3358msgid "" 3349msgid ""
3359"Failed to start meta directory scanner. Is gnunet-helper-publish-fs " 3350"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
3360"installed?\n" 3351"installed?\n"
3361msgstr "" 3352msgstr ""
3362 3353
3363#: src/fs/gnunet-publish.c:815 3354#: src/fs/gnunet-publish.c:819
3364#, c-format 3355#, c-format
3365msgid "Cannot extract metadata from a URI!\n" 3356msgid "Cannot extract metadata from a URI!\n"
3366msgstr "" 3357msgstr ""
3367 3358
3368#: src/fs/gnunet-publish.c:822 3359#: src/fs/gnunet-publish.c:826
3369#, c-format 3360#, c-format
3370msgid "You must specify one and only one filename for insertion.\n" 3361msgid "You must specify one and only one filename for insertion.\n"
3371msgstr "" 3362msgstr ""
3372 3363
3373#: src/fs/gnunet-publish.c:828 3364#: src/fs/gnunet-publish.c:832
3374#, c-format 3365#, c-format
3375msgid "You must NOT specify an URI and a filename.\n" 3366msgid "You must NOT specify an URI and a filename.\n"
3376msgstr "" 3367msgstr ""
3377 3368
3378#: src/fs/gnunet-publish.c:836 src/vpn/gnunet-vpn.c:208 3369#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:210
3379#, c-format 3370#, c-format
3380msgid "Option `%s' is required when using option `%s'.\n" 3371msgid "Option `%s' is required when using option `%s'.\n"
3381msgstr "" 3372msgstr ""
3382 3373
3383#: src/fs/gnunet-publish.c:847 src/fs/gnunet-publish.c:855 3374#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
3384#: src/transport/gnunet-transport.c:1280 src/transport/gnunet-transport.c:1307 3375#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
3385#, c-format 3376#, c-format
3386msgid "Option `%s' makes no sense without option `%s'.\n" 3377msgid "Option `%s' makes no sense without option `%s'.\n"
3387msgstr "" 3378msgstr ""
3388 3379
3389#: src/fs/gnunet-publish.c:911 3380#: src/fs/gnunet-publish.c:916
3390msgid "" 3381msgid ""
3391"print list of extracted keywords that would be used, but do not perform " 3382"print list of extracted keywords that would be used, but do not perform "
3392"upload" 3383"upload"
3393msgstr "" 3384msgstr ""
3394 3385
3395#: src/fs/gnunet-publish.c:917 3386#: src/fs/gnunet-publish.c:922
3396msgid "" 3387msgid ""
3397"add an additional keyword for the top-level file or directory (this option " 3388"add an additional keyword for the top-level file or directory (this option "
3398"can be specified multiple times)" 3389"can be specified multiple times)"
3399msgstr "" 3390msgstr ""
3400 3391
3401#: src/fs/gnunet-publish.c:923 3392#: src/fs/gnunet-publish.c:928
3402msgid "set the meta-data for the given TYPE to the given VALUE" 3393msgid "set the meta-data for the given TYPE to the given VALUE"
3403msgstr "" 3394msgstr ""
3404 3395
3405#: src/fs/gnunet-publish.c:928 3396#: src/fs/gnunet-publish.c:932
3406msgid "" 3397msgid ""
3407"do not index, perform full insertion (stores entire file in encrypted form " 3398"do not index, perform full insertion (stores entire file in encrypted form "
3408"in GNUnet database)" 3399"in GNUnet database)"
3409msgstr "" 3400msgstr ""
3410 3401
3411#: src/fs/gnunet-publish.c:935 3402#: src/fs/gnunet-publish.c:938
3412msgid "" 3403msgid ""
3413"specify ID of an updated version to be published in the future (for " 3404"specify ID of an updated version to be published in the future (for "
3414"namespace insertions only)" 3405"namespace insertions only)"
3415msgstr "" 3406msgstr ""
3416 3407
3417#: src/fs/gnunet-publish.c:948 3408#: src/fs/gnunet-publish.c:949
3418msgid "publish the files under the pseudonym NAME (place file into namespace)" 3409msgid "publish the files under the pseudonym NAME (place file into namespace)"
3419msgstr "" 3410msgstr ""
3420 3411
3421#: src/fs/gnunet-publish.c:958 3412#: src/fs/gnunet-publish.c:959
3422msgid "" 3413msgid ""
3423"only simulate the process but do not do any actual publishing (useful to " 3414"only simulate the process but do not do any actual publishing (useful to "
3424"compute URIs)" 3415"compute URIs)"
3425msgstr "" 3416msgstr ""
3426 3417
3427#: src/fs/gnunet-publish.c:964 3418#: src/fs/gnunet-publish.c:965
3428msgid "" 3419msgid ""
3429"set the ID of this version of the publication (for namespace insertions only)" 3420"set the ID of this version of the publication (for namespace insertions only)"
3430msgstr "" 3421msgstr ""
@@ -3435,29 +3426,29 @@ msgid ""
3435"to the file with the respective URI)" 3426"to the file with the respective URI)"
3436msgstr "" 3427msgstr ""
3437 3428
3438#: src/fs/gnunet-publish.c:987 3429#: src/fs/gnunet-publish.c:989
3439msgid "Publish a file or directory on GNUnet" 3430msgid "Publish a file or directory on GNUnet"
3440msgstr "" 3431msgstr ""
3441 3432
3442#: src/fs/gnunet-search.c:125 3433#: src/fs/gnunet-search.c:127
3443#, c-format 3434#, c-format
3444msgid "Failed to write directory with search results to `%s'\n" 3435msgid "Failed to write directory with search results to `%s'\n"
3445msgstr "" 3436msgstr ""
3446 3437
3447#: src/fs/gnunet-search.c:202 3438#: src/fs/gnunet-search.c:207
3448#, c-format 3439#, c-format
3449msgid "Error searching: %s.\n" 3440msgid "Error searching: %s.\n"
3450msgstr "" 3441msgstr ""
3451 3442
3452#: src/fs/gnunet-search.c:258 3443#: src/fs/gnunet-search.c:263
3453msgid "Could not create keyword URI from arguments.\n" 3444msgid "Could not create keyword URI from arguments.\n"
3454msgstr "" 3445msgstr ""
3455 3446
3456#: src/fs/gnunet-search.c:282 3447#: src/fs/gnunet-search.c:287
3457msgid "Could not start searching.\n" 3448msgid "Could not start searching.\n"
3458msgstr "" 3449msgstr ""
3459 3450
3460#: src/fs/gnunet-search.c:323 3451#: src/fs/gnunet-search.c:324
3461msgid "write search results to file starting with PREFIX" 3452msgid "write search results to file starting with PREFIX"
3462msgstr "" 3453msgstr ""
3463 3454
@@ -3465,7 +3456,7 @@ msgstr ""
3465msgid "automatically terminate search after DELAY" 3456msgid "automatically terminate search after DELAY"
3466msgstr "" 3457msgstr ""
3467 3458
3468#: src/fs/gnunet-search.c:338 3459#: src/fs/gnunet-search.c:335
3469msgid "automatically terminate search after VALUE results are found" 3460msgid "automatically terminate search after VALUE results are found"
3470msgstr "" 3461msgstr ""
3471 3462
@@ -3473,2932 +3464,2755 @@ msgstr ""
3473msgid "Search GNUnet for files that were published on GNUnet" 3464msgid "Search GNUnet for files that were published on GNUnet"
3474msgstr "" 3465msgstr ""
3475 3466
3476#: src/fs/gnunet-service-fs.c:375 src/fs/gnunet-service-fs.c:880 3467#: src/fs/gnunet-service-fs.c:377 src/fs/gnunet-service-fs.c:882
3477msgid "# client searches active" 3468msgid "# client searches active"
3478msgstr "" 3469msgstr ""
3479 3470
3480#: src/fs/gnunet-service-fs.c:434 3471#: src/fs/gnunet-service-fs.c:436
3481msgid "# replies received for local clients" 3472msgid "# replies received for local clients"
3482msgstr "" 3473msgstr ""
3483 3474
3484#: src/fs/gnunet-service-fs.c:603 3475#: src/fs/gnunet-service-fs.c:605
3485msgid "# running average P2P latency (ms)" 3476msgid "# running average P2P latency (ms)"
3486msgstr "" 3477msgstr ""
3487 3478
3488#: src/fs/gnunet-service-fs.c:655 src/fs/gnunet-service-fs_cp.c:562 3479#: src/fs/gnunet-service-fs.c:657 src/fs/gnunet-service-fs_cp.c:564
3489msgid "# Loopback routes suppressed" 3480msgid "# Loopback routes suppressed"
3490msgstr "" 3481msgstr ""
3491 3482
3492#: src/fs/gnunet-service-fs.c:834 3483#: src/fs/gnunet-service-fs.c:836
3493msgid "# client searches received" 3484msgid "# client searches received"
3494msgstr "" 3485msgstr ""
3495 3486
3496#: src/fs/gnunet-service-fs.c:873 3487#: src/fs/gnunet-service-fs.c:875
3497msgid "# client searches updated (merged content seen list)" 3488msgid "# client searches updated (merged content seen list)"
3498msgstr "" 3489msgstr ""
3499 3490
3500#: src/fs/gnunet-service-fs.c:1044 3491#: src/fs/gnunet-service-fs.c:1040
3501#, c-format 3492#, c-format
3502msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n" 3493msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n"
3503msgstr "" 3494msgstr ""
3504 3495
3505#: src/fs/gnunet-service-fs.c:1284 3496#: src/fs/gnunet-service-fs.c:1280
3506msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n" 3497msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n"
3507msgstr "" 3498msgstr ""
3508 3499
3509#: src/fs/gnunet-service-fs.c:1309 src/hostlist/gnunet-daemon-hostlist.c:353 3500#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
3510#: src/topology/gnunet-daemon-topology.c:1200 3501#: src/topology/gnunet-daemon-topology.c:1202
3511#, c-format 3502#, c-format
3512msgid "Failed to connect to `%s' service.\n" 3503msgid "Failed to connect to `%s' service.\n"
3513msgstr "" 3504msgstr ""
3514 3505
3515#: src/fs/gnunet-service-fs_cadet_client.c:368 3506#: src/fs/gnunet-service-fs_cadet_client.c:370
3516msgid "# replies received via cadet" 3507msgid "# replies received via cadet"
3517msgstr "" 3508msgstr ""
3518 3509
3519#: src/fs/gnunet-service-fs_cadet_client.c:382 3510#: src/fs/gnunet-service-fs_cadet_client.c:384
3520msgid "# replies received via cadet dropped" 3511msgid "# replies received via cadet dropped"
3521msgstr "" 3512msgstr ""
3522 3513
3523#: src/fs/gnunet-service-fs_cadet_server.c:263 3514#: src/fs/gnunet-service-fs_cadet_server.c:265
3524msgid "# queries received via CADET not answered" 3515msgid "# queries received via CADET not answered"
3525msgstr "" 3516msgstr ""
3526 3517
3527#: src/fs/gnunet-service-fs_cadet_server.c:318 3518#: src/fs/gnunet-service-fs_cadet_server.c:320
3528msgid "# Blocks transferred via cadet" 3519msgid "# Blocks transferred via cadet"
3529msgstr "" 3520msgstr ""
3530 3521
3531#: src/fs/gnunet-service-fs_cadet_server.c:344 3522#: src/fs/gnunet-service-fs_cadet_server.c:346
3532msgid "# queries received via cadet" 3523msgid "# queries received via cadet"
3533msgstr "" 3524msgstr ""
3534 3525
3535#: src/fs/gnunet-service-fs_cadet_server.c:386 3526#: src/fs/gnunet-service-fs_cadet_server.c:388
3536#, fuzzy 3527#, fuzzy
3537msgid "# cadet client connections rejected" 3528msgid "# cadet client connections rejected"
3538msgstr "# connessioni attive" 3529msgstr "# connessioni attive"
3539 3530
3540#: src/fs/gnunet-service-fs_cadet_server.c:393 3531#: src/fs/gnunet-service-fs_cadet_server.c:395
3541#: src/fs/gnunet-service-fs_cadet_server.c:433 3532#: src/fs/gnunet-service-fs_cadet_server.c:435
3542#, fuzzy 3533#, fuzzy
3543msgid "# cadet connections active" 3534msgid "# cadet connections active"
3544msgstr "# connessioni attive" 3535msgstr "# connessioni attive"
3545 3536
3546#: src/fs/gnunet-service-fs_cp.c:684 3537#: src/fs/gnunet-service-fs_cp.c:685
3547msgid "# migration stop messages received" 3538msgid "# migration stop messages received"
3548msgstr "" 3539msgstr ""
3549 3540
3550#: src/fs/gnunet-service-fs_cp.c:688 3541#: src/fs/gnunet-service-fs_cp.c:689
3551#, c-format 3542#, c-format
3552msgid "Migration of content to peer `%s' blocked for %s\n" 3543msgid "Migration of content to peer `%s' blocked for %s\n"
3553msgstr "" 3544msgstr ""
3554 3545
3555#: src/fs/gnunet-service-fs_cp.c:721 src/fs/gnunet-service-fs_cp.c:1343 3546#: src/fs/gnunet-service-fs_cp.c:722 src/fs/gnunet-service-fs_cp.c:1344
3556msgid "# P2P searches active" 3547msgid "# P2P searches active"
3557msgstr "" 3548msgstr ""
3558 3549
3559#: src/fs/gnunet-service-fs_cp.c:816 3550#: src/fs/gnunet-service-fs_cp.c:817
3560msgid "# artificial delays introduced (ms)" 3551msgid "# artificial delays introduced (ms)"
3561msgstr "" 3552msgstr ""
3562 3553
3563#: src/fs/gnunet-service-fs_cp.c:873 3554#: src/fs/gnunet-service-fs_cp.c:874
3564msgid "# replies dropped due to type mismatch" 3555msgid "# replies dropped due to type mismatch"
3565msgstr "" 3556msgstr ""
3566 3557
3567#: src/fs/gnunet-service-fs_cp.c:881 3558#: src/fs/gnunet-service-fs_cp.c:882
3568msgid "# replies received for other peers" 3559msgid "# replies received for other peers"
3569msgstr "" 3560msgstr ""
3570 3561
3571#: src/fs/gnunet-service-fs_cp.c:895 3562#: src/fs/gnunet-service-fs_cp.c:896
3572msgid "# replies dropped due to insufficient cover traffic" 3563msgid "# replies dropped due to insufficient cover traffic"
3573msgstr "" 3564msgstr ""
3574 3565
3575#: src/fs/gnunet-service-fs_cp.c:942 3566#: src/fs/gnunet-service-fs_cp.c:943
3576msgid "# P2P searches destroyed due to ultimate reply" 3567msgid "# P2P searches destroyed due to ultimate reply"
3577msgstr "" 3568msgstr ""
3578 3569
3579#: src/fs/gnunet-service-fs_cp.c:1013 3570#: src/fs/gnunet-service-fs_cp.c:1014
3580msgid "# requests done for free (low load)" 3571msgid "# requests done for free (low load)"
3581msgstr "" 3572msgstr ""
3582 3573
3583#: src/fs/gnunet-service-fs_cp.c:1038 3574#: src/fs/gnunet-service-fs_cp.c:1039
3584msgid "# request dropped, priority insufficient" 3575msgid "# request dropped, priority insufficient"
3585msgstr "" 3576msgstr ""
3586 3577
3587#: src/fs/gnunet-service-fs_cp.c:1048 3578#: src/fs/gnunet-service-fs_cp.c:1049
3588msgid "# requests done for a price (normal load)" 3579msgid "# requests done for a price (normal load)"
3589msgstr "" 3580msgstr ""
3590 3581
3591#: src/fs/gnunet-service-fs_cp.c:1146 3582#: src/fs/gnunet-service-fs_cp.c:1147
3592msgid "# requests dropped due to higher-TTL request" 3583msgid "# requests dropped due to higher-TTL request"
3593msgstr "" 3584msgstr ""
3594 3585
3595#: src/fs/gnunet-service-fs_cp.c:1203 3586#: src/fs/gnunet-service-fs_cp.c:1204
3596msgid "# GET requests received (from other peers)" 3587msgid "# GET requests received (from other peers)"
3597msgstr "" 3588msgstr ""
3598 3589
3599#: src/fs/gnunet-service-fs_cp.c:1226 3590#: src/fs/gnunet-service-fs_cp.c:1227
3600msgid "# requests dropped due to missing reverse route" 3591msgid "# requests dropped due to missing reverse route"
3601msgstr "" 3592msgstr ""
3602 3593
3603#: src/fs/gnunet-service-fs_cp.c:1239 3594#: src/fs/gnunet-service-fs_cp.c:1240
3604msgid "# requests dropped due to full reply queue" 3595msgid "# requests dropped due to full reply queue"
3605msgstr "" 3596msgstr ""
3606 3597
3607#: src/fs/gnunet-service-fs_cp.c:1295 3598#: src/fs/gnunet-service-fs_cp.c:1296
3608msgid "# requests dropped due TTL underflow" 3599msgid "# requests dropped due TTL underflow"
3609msgstr "" 3600msgstr ""
3610 3601
3611#: src/fs/gnunet-service-fs_cp.c:1339 3602#: src/fs/gnunet-service-fs_cp.c:1340
3612msgid "# P2P query messages received and processed" 3603msgid "# P2P query messages received and processed"
3613msgstr "" 3604msgstr ""
3614 3605
3615#: src/fs/gnunet-service-fs_cp.c:1706 3606#: src/fs/gnunet-service-fs_cp.c:1707
3616msgid "# migration stop messages sent" 3607msgid "# migration stop messages sent"
3617msgstr "" 3608msgstr ""
3618 3609
3619#: src/fs/gnunet-service-fs_indexing.c:132 3610#: src/fs/gnunet-service-fs_indexing.c:134
3620#: src/fs/gnunet-service-fs_indexing.c:193 3611#: src/fs/gnunet-service-fs_indexing.c:195
3621#, c-format 3612#, c-format
3622msgid "Could not open `%s'.\n" 3613msgid "Could not open `%s'.\n"
3623msgstr "" 3614msgstr ""
3624 3615
3625#: src/fs/gnunet-service-fs_indexing.c:149 3616#: src/fs/gnunet-service-fs_indexing.c:151
3626#, c-format 3617#, c-format
3627msgid "Error writing `%s'.\n" 3618msgid "Error writing `%s'.\n"
3628msgstr "" 3619msgstr ""
3629 3620
3630#: src/fs/gnunet-service-fs_indexing.c:251 3621#: src/fs/gnunet-service-fs_indexing.c:253
3631#, c-format 3622#, c-format
3632msgid "Failed to delete bogus block: %s\n" 3623msgid "Failed to delete bogus block: %s\n"
3633msgstr "" 3624msgstr ""
3634 3625
3635#: src/fs/gnunet-service-fs_indexing.c:329 3626#: src/fs/gnunet-service-fs_indexing.c:331
3636msgid "# index blocks removed: original file inaccessible" 3627msgid "# index blocks removed: original file inaccessible"
3637msgstr "" 3628msgstr ""
3638 3629
3639#: src/fs/gnunet-service-fs_indexing.c:355 3630#: src/fs/gnunet-service-fs_indexing.c:357
3640#, c-format 3631#, c-format
3641msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n" 3632msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n"
3642msgstr "" 3633msgstr ""
3643 3634
3644#: src/fs/gnunet-service-fs_indexing.c:359 3635#: src/fs/gnunet-service-fs_indexing.c:361
3645msgid "not indexed" 3636msgid "not indexed"
3646msgstr "" 3637msgstr ""
3647 3638
3648#: src/fs/gnunet-service-fs_indexing.c:392 3639#: src/fs/gnunet-service-fs_indexing.c:394
3649#, c-format 3640#, c-format
3650msgid "Indexed file `%s' changed at offset %llu\n" 3641msgid "Indexed file `%s' changed at offset %llu\n"
3651msgstr "" 3642msgstr ""
3652 3643
3653#: src/fs/gnunet-service-fs_indexing.c:516 3644#: src/fs/gnunet-service-fs_indexing.c:518
3654#, c-format 3645#, c-format
3655msgid "" 3646msgid ""
3656"Index request received for file `%s' is already indexed as `%s'. Permitting " 3647"Index request received for file `%s' is already indexed as `%s'. Permitting "
3657"anyway.\n" 3648"anyway.\n"
3658msgstr "" 3649msgstr ""
3659 3650
3660#: src/fs/gnunet-service-fs_pe.c:263 3651#: src/fs/gnunet-service-fs_pe.c:265
3661msgid "# average retransmission delay (ms)" 3652msgid "# average retransmission delay (ms)"
3662msgstr "" 3653msgstr ""
3663 3654
3664#: src/fs/gnunet-service-fs_pe.c:425 3655#: src/fs/gnunet-service-fs_pe.c:427
3665msgid "# delay heap timeout (ms)" 3656msgid "# delay heap timeout (ms)"
3666msgstr "" 3657msgstr ""
3667 3658
3668#: src/fs/gnunet-service-fs_pe.c:436 3659#: src/fs/gnunet-service-fs_pe.c:438
3669msgid "# query plans executed" 3660msgid "# query plans executed"
3670msgstr "" 3661msgstr ""
3671 3662
3672#: src/fs/gnunet-service-fs_pe.c:464 3663#: src/fs/gnunet-service-fs_pe.c:466
3673msgid "# query messages sent to other peers" 3664msgid "# query messages sent to other peers"
3674msgstr "" 3665msgstr ""
3675 3666
3676#: src/fs/gnunet-service-fs_pe.c:534 3667#: src/fs/gnunet-service-fs_pe.c:536
3677msgid "# requests merged" 3668msgid "# requests merged"
3678msgstr "" 3669msgstr ""
3679 3670
3680#: src/fs/gnunet-service-fs_pe.c:544 3671#: src/fs/gnunet-service-fs_pe.c:546
3681msgid "# requests refreshed" 3672msgid "# requests refreshed"
3682msgstr "" 3673msgstr ""
3683 3674
3684#: src/fs/gnunet-service-fs_pe.c:604 src/fs/gnunet-service-fs_pe.c:707 3675#: src/fs/gnunet-service-fs_pe.c:606 src/fs/gnunet-service-fs_pe.c:709
3685#: src/fs/gnunet-service-fs_pe.c:786 3676#: src/fs/gnunet-service-fs_pe.c:788
3686msgid "# query plan entries" 3677msgid "# query plan entries"
3687msgstr "" 3678msgstr ""
3688 3679
3689#: src/fs/gnunet-service-fs_pr.c:328 3680#: src/fs/gnunet-service-fs_pr.c:330
3690msgid "# Pending requests created" 3681msgid "# Pending requests created"
3691msgstr "" 3682msgstr ""
3692 3683
3693#: src/fs/gnunet-service-fs_pr.c:428 src/fs/gnunet-service-fs_pr.c:675 3684#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
3694msgid "# Pending requests active" 3685msgid "# Pending requests active"
3695msgstr "" 3686msgstr ""
3696 3687
3697#: src/fs/gnunet-service-fs_pr.c:856 3688#: src/fs/gnunet-service-fs_pr.c:858
3698msgid "# replies received and matched" 3689msgid "# replies received and matched"
3699msgstr "" 3690msgstr ""
3700 3691
3701#: src/fs/gnunet-service-fs_pr.c:892 3692#: src/fs/gnunet-service-fs_pr.c:894
3702msgid "# duplicate replies discarded (bloomfilter)" 3693msgid "# duplicate replies discarded (bloomfilter)"
3703msgstr "" 3694msgstr ""
3704 3695
3705#: src/fs/gnunet-service-fs_pr.c:901 3696#: src/fs/gnunet-service-fs_pr.c:903
3706msgid "# irrelevant replies discarded" 3697msgid "# irrelevant replies discarded"
3707msgstr "" 3698msgstr ""
3708 3699
3709#: src/fs/gnunet-service-fs_pr.c:916 3700#: src/fs/gnunet-service-fs_pr.c:918
3710#, c-format 3701#, c-format
3711msgid "Unsupported block type %u\n" 3702msgid "Unsupported block type %u\n"
3712msgstr "" 3703msgstr ""
3713 3704
3714#: src/fs/gnunet-service-fs_pr.c:933 3705#: src/fs/gnunet-service-fs_pr.c:935
3715msgid "# results found locally" 3706msgid "# results found locally"
3716msgstr "" 3707msgstr ""
3717 3708
3718#: src/fs/gnunet-service-fs_pr.c:1063 3709#: src/fs/gnunet-service-fs_pr.c:1065
3719msgid "# Datastore `PUT' failures" 3710msgid "# Datastore `PUT' failures"
3720msgstr "" 3711msgstr ""
3721 3712
3722#: src/fs/gnunet-service-fs_pr.c:1091 3713#: src/fs/gnunet-service-fs_pr.c:1093
3723msgid "# storage requests dropped due to high load" 3714msgid "# storage requests dropped due to high load"
3724msgstr "" 3715msgstr ""
3725 3716
3726#: src/fs/gnunet-service-fs_pr.c:1129 3717#: src/fs/gnunet-service-fs_pr.c:1131
3727msgid "# Replies received from DHT" 3718msgid "# Replies received from DHT"
3728msgstr "" 3719msgstr ""
3729 3720
3730#: src/fs/gnunet-service-fs_pr.c:1260 3721#: src/fs/gnunet-service-fs_pr.c:1262
3731msgid "# Replies received from CADET" 3722msgid "# Replies received from CADET"
3732msgstr "" 3723msgstr ""
3733 3724
3734#: src/fs/gnunet-service-fs_pr.c:1312 3725#: src/fs/gnunet-service-fs_pr.c:1314
3735#, c-format 3726#, c-format
3736msgid "Datastore lookup already took %s!\n" 3727msgid "Datastore lookup already took %s!\n"
3737msgstr "" 3728msgstr ""
3738 3729
3739#: src/fs/gnunet-service-fs_pr.c:1333 3730#: src/fs/gnunet-service-fs_pr.c:1335
3740#, c-format 3731#, c-format
3741msgid "On-demand lookup already took %s!\n" 3732msgid "On-demand lookup already took %s!\n"
3742msgstr "" 3733msgstr ""
3743 3734
3744#: src/fs/gnunet-service-fs_pr.c:1393 3735#: src/fs/gnunet-service-fs_pr.c:1395
3745msgid "# requested DBLOCK or IBLOCK not found" 3736msgid "# requested DBLOCK or IBLOCK not found"
3746msgstr "" 3737msgstr ""
3747 3738
3748#: src/fs/gnunet-service-fs_pr.c:1452 3739#: src/fs/gnunet-service-fs_pr.c:1454
3749msgid "# Datastore lookups concluded (error queueing)" 3740msgid "# Datastore lookups concluded (error queueing)"
3750msgstr "" 3741msgstr ""
3751 3742
3752#: src/fs/gnunet-service-fs_pr.c:1507 3743#: src/fs/gnunet-service-fs_pr.c:1509
3753msgid "# Datastore lookups concluded (no results)" 3744msgid "# Datastore lookups concluded (no results)"
3754msgstr "" 3745msgstr ""
3755 3746
3756#: src/fs/gnunet-service-fs_pr.c:1522 3747#: src/fs/gnunet-service-fs_pr.c:1524
3757msgid "# Datastore lookups concluded (seen all)" 3748msgid "# Datastore lookups concluded (seen all)"
3758msgstr "" 3749msgstr ""
3759 3750
3760#: src/fs/gnunet-service-fs_pr.c:1546 3751#: src/fs/gnunet-service-fs_pr.c:1548
3761msgid "# Datastore lookups aborted (more than MAX_RESULTS)" 3752msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
3762msgstr "" 3753msgstr ""
3763 3754
3764#: src/fs/gnunet-service-fs_pr.c:1560 3755#: src/fs/gnunet-service-fs_pr.c:1562
3765msgid "# on-demand blocks matched requests" 3756msgid "# on-demand blocks matched requests"
3766msgstr "" 3757msgstr ""
3767 3758
3768#: src/fs/gnunet-service-fs_pr.c:1581 3759#: src/fs/gnunet-service-fs_pr.c:1583
3769msgid "# on-demand lookups performed successfully" 3760msgid "# on-demand lookups performed successfully"
3770msgstr "" 3761msgstr ""
3771 3762
3772#: src/fs/gnunet-service-fs_pr.c:1586 3763#: src/fs/gnunet-service-fs_pr.c:1588
3773msgid "# on-demand lookups failed" 3764msgid "# on-demand lookups failed"
3774msgstr "" 3765msgstr ""
3775 3766
3776#: src/fs/gnunet-service-fs_pr.c:1624 3767#: src/fs/gnunet-service-fs_pr.c:1626
3777msgid "# Datastore lookups concluded (found last result)" 3768msgid "# Datastore lookups concluded (found last result)"
3778msgstr "" 3769msgstr ""
3779 3770
3780#: src/fs/gnunet-service-fs_pr.c:1637 3771#: src/fs/gnunet-service-fs_pr.c:1639
3781msgid "# Datastore lookups concluded (load too high)" 3772msgid "# Datastore lookups concluded (load too high)"
3782msgstr "" 3773msgstr ""
3783 3774
3784#: src/fs/gnunet-service-fs_pr.c:1691 3775#: src/fs/gnunet-service-fs_pr.c:1693
3785msgid "# Datastore lookups initiated" 3776msgid "# Datastore lookups initiated"
3786msgstr "" 3777msgstr ""
3787 3778
3788#: src/fs/gnunet-service-fs_pr.c:1747 3779#: src/fs/gnunet-service-fs_pr.c:1749
3789msgid "# GAP PUT messages received" 3780msgid "# GAP PUT messages received"
3790msgstr "" 3781msgstr ""
3791 3782
3792#: src/fs/gnunet-service-fs_push.c:644 3783#: src/fs/gnunet-service-fs_push.c:646
3793msgid "time required, content pushing disabled" 3784msgid "time required, content pushing disabled"
3794msgstr "" 3785msgstr ""
3795 3786
3796#: src/fs/gnunet-unindex.c:87 3787#: src/fs/gnunet-unindex.c:89
3797#, c-format 3788#, c-format
3798msgid "Unindexing at %llu/%llu (%s remaining)\n" 3789msgid "Unindexing at %llu/%llu (%s remaining)\n"
3799msgstr "" 3790msgstr ""
3800 3791
3801#: src/fs/gnunet-unindex.c:93 3792#: src/fs/gnunet-unindex.c:95
3802#, c-format 3793#, c-format
3803msgid "Error unindexing: %s.\n" 3794msgid "Error unindexing: %s.\n"
3804msgstr "" 3795msgstr ""
3805 3796
3806#: src/fs/gnunet-unindex.c:98 3797#: src/fs/gnunet-unindex.c:100
3807msgid "Unindexing done.\n" 3798msgid "Unindexing done.\n"
3808msgstr "" 3799msgstr ""
3809 3800
3810#: src/fs/gnunet-unindex.c:127 3801#: src/fs/gnunet-unindex.c:129
3811#, c-format 3802#, c-format
3812msgid "You must specify one and only one filename for unindexing.\n" 3803msgid "You must specify one and only one filename for unindexing.\n"
3813msgstr "" 3804msgstr ""
3814 3805
3815#: src/fs/gnunet-unindex.c:144 3806#: src/fs/gnunet-unindex.c:146
3816msgid "Could not start unindex operation.\n" 3807msgid "Could not start unindex operation.\n"
3817msgstr "" 3808msgstr ""
3818 3809
3819#: src/fs/gnunet-unindex.c:176 3810#: src/fs/gnunet-unindex.c:178
3820msgid "Unindex a file that was previously indexed with gnunet-publish." 3811msgid "Unindex a file that was previously indexed with gnunet-publish."
3821msgstr "" 3812msgstr ""
3822 3813
3823#: src/gns/gns_tld_api.c:274 3814#: src/gns/gns_tld_api.c:348
3824msgid "Expected a base32-encoded public zone key\n" 3815msgid "Expected a base32-encoded public zone key\n"
3825msgstr "" 3816msgstr ""
3826 3817
3827#: src/gns/gnunet-bcd.c:125 3818#: src/gns/gnunet-bcd.c:127
3828#, c-format 3819#, c-format
3829msgid "Refusing `%s' request to HTTP server\n" 3820msgid "Refusing `%s' request to HTTP server\n"
3830msgstr "" 3821msgstr ""
3831 3822
3832#: src/gns/gnunet-bcd.c:355 3823#: src/gns/gnunet-bcd.c:357
3833#, c-format 3824#, c-format
3834msgid "Invalid port number %u. Exiting.\n" 3825msgid "Invalid port number %u. Exiting.\n"
3835msgstr "" 3826msgstr ""
3836 3827
3837#: src/gns/gnunet-bcd.c:360 3828#: src/gns/gnunet-bcd.c:362
3838#, c-format 3829#, c-format
3839msgid "Businesscard HTTP server starts on %u\n" 3830msgid "Businesscard HTTP server starts on %u\n"
3840msgstr "" 3831msgstr ""
3841 3832
3842#: src/gns/gnunet-bcd.c:374 3833#: src/gns/gnunet-bcd.c:376
3843#, c-format 3834#, c-format
3844msgid "Could not start businesscard HTTP server on port %u\n" 3835msgid "Could not start businesscard HTTP server on port %u\n"
3845msgstr "" 3836msgstr ""
3846 3837
3847#: src/gns/gnunet-bcd.c:521 3838#: src/gns/gnunet-bcd.c:523
3848msgid "Run HTTP serve on port PORT (default is 8888)" 3839msgid "Run HTTP serve on port PORT (default is 8888)"
3849msgstr "" 3840msgstr ""
3850 3841
3851#: src/gns/gnunet-bcd.c:534 3842#: src/gns/gnunet-bcd.c:536
3852msgid "GNUnet HTTP server to create business cards" 3843msgid "GNUnet HTTP server to create business cards"
3853msgstr "" 3844msgstr ""
3854 3845
3855#: src/gns/gnunet-dns2gns.c:201 3846#: src/gns/gnunet-dns2gns.c:203
3856msgid "Failed to pack DNS response into UDP packet!\n" 3847msgid "Failed to pack DNS response into UDP packet!\n"
3857msgstr "" 3848msgstr ""
3858 3849
3859#: src/gns/gnunet-dns2gns.c:403 3850#: src/gns/gnunet-dns2gns.c:405
3860#, c-format 3851#, c-format
3861msgid "Cannot parse DNS request from %s\n" 3852msgid "Cannot parse DNS request from %s\n"
3862msgstr "" 3853msgstr ""
3863 3854
3864#: src/gns/gnunet-dns2gns.c:419 3855#: src/gns/gnunet-dns2gns.c:421
3865#, c-format 3856#, c-format
3866msgid "Received malformed DNS request from %s\n" 3857msgid "Received malformed DNS request from %s\n"
3867msgstr "" 3858msgstr ""
3868 3859
3869#: src/gns/gnunet-dns2gns.c:427 3860#: src/gns/gnunet-dns2gns.c:429
3870#, c-format 3861#, c-format
3871msgid "Received unsupported DNS request from %s\n" 3862msgid "Received unsupported DNS request from %s\n"
3872msgstr "" 3863msgstr ""
3873 3864
3874#: src/gns/gnunet-dns2gns.c:586 3865#: src/gns/gnunet-dns2gns.c:588
3875msgid "No DNS server specified!\n" 3866msgid "No DNS server specified!\n"
3876msgstr "" 3867msgstr ""
3877 3868
3878#: src/gns/gnunet-dns2gns.c:686 3869#: src/gns/gnunet-dns2gns.c:688
3879msgid "IP of recursive DNS resolver to use (required)" 3870msgid "IP of recursive DNS resolver to use (required)"
3880msgstr "" 3871msgstr ""
3881 3872
3882#: src/gns/gnunet-dns2gns.c:691 3873#: src/gns/gnunet-dns2gns.c:693
3883msgid "UDP port to listen on for inbound DNS requests; default: 2853" 3874msgid "UDP port to listen on for inbound DNS requests; default: 2853"
3884msgstr "" 3875msgstr ""
3885 3876
3886#: src/gns/gnunet-dns2gns.c:708 3877#: src/gns/gnunet-dns2gns.c:710
3887msgid "GNUnet DNS-to-GNS proxy (a DNS server)" 3878msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
3888msgstr "" 3879msgstr ""
3889 3880
3890#: src/gns/gnunet-gns-benchmark.c:580 3881#: src/gns/gnunet-gns-benchmark.c:582
3891msgid "how long to wait between queries" 3882msgid "how long to wait between queries"
3892msgstr "" 3883msgstr ""
3893 3884
3894#: src/gns/gnunet-gns-benchmark.c:585 3885#: src/gns/gnunet-gns-benchmark.c:587
3895msgid "how long to wait for an answer" 3886msgid "how long to wait for an answer"
3896msgstr "" 3887msgstr ""
3897 3888
3898#: src/gns/gnunet-gns-benchmark.c:589 3889#: src/gns/gnunet-gns-benchmark.c:591
3899msgid "look for GNS2DNS records instead of ANY" 3890msgid "look for GNS2DNS records instead of ANY"
3900msgstr "" 3891msgstr ""
3901 3892
3902#: src/gns/gnunet-gns.c:197 3893#: src/gns/gnunet-gns.c:199
3903#, c-format 3894#, c-format
3904msgid "Invalid typename specified, assuming `ANY'\n" 3895msgid "Invalid typename specified, assuming `ANY'\n"
3905msgstr "" 3896msgstr ""
3906 3897
3907#: src/gns/gnunet-gns.c:231 3898#: src/gns/gnunet-gns.c:233
3908msgid "Lookup a record for the given name" 3899msgid "Lookup a record for the given name"
3909msgstr "" 3900msgstr ""
3910 3901
3911#: src/gns/gnunet-gns.c:236 3902#: src/gns/gnunet-gns.c:238
3912msgid "Specify the type of the record to lookup" 3903msgid "Specify the type of the record to lookup"
3913msgstr "" 3904msgstr ""
3914 3905
3915#: src/gns/gnunet-gns.c:240 3906#: src/gns/gnunet-gns.c:242
3916msgid "No unneeded output" 3907msgid "No unneeded output"
3917msgstr "" 3908msgstr ""
3918 3909
3919#: src/gns/gnunet-gns.c:256 3910#: src/gns/gnunet-gns.c:258
3920msgid "GNUnet GNS resolver tool" 3911msgid "GNUnet GNS resolver tool"
3921msgstr "" 3912msgstr ""
3922 3913
3923#: src/gns/gnunet-gns-helper-service-w32.c:600 3914#: src/gns/gnunet-gns-helper-service-w32.c:602
3924msgid "Not ready to process requests, lacking ego data\n" 3915msgid "Not ready to process requests, lacking ego data\n"
3925msgstr "" 3916msgstr ""
3926 3917
3927#: src/gns/gnunet-gns-helper-service-w32.c:699 3918#: src/gns/gnunet-gns-helper-service-w32.c:701
3928msgid "" 3919msgid ""
3929"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-" 3920"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-"
3930"gns-import.sh?\n" 3921"gns-import.sh?\n"
3931msgstr "" 3922msgstr ""
3932 3923
3933#: src/gns/gnunet-gns-helper-service-w32.c:737 3924#: src/gns/gnunet-gns-helper-service-w32.c:739
3934#, c-format 3925#, c-format
3935msgid "Failed to connect to identity service\n" 3926msgid "Failed to connect to identity service\n"
3936msgstr "" 3927msgstr ""
3937 3928
3938#: src/gns/gnunet-gns-import.c:450 3929#: src/gns/gnunet-gns-import.c:452
3939msgid "This program will import some GNS authorities into your GNS namestore." 3930msgid "This program will import some GNS authorities into your GNS namestore."
3940msgstr "" 3931msgstr ""
3941 3932
3942#: src/gns/gnunet-gns-proxy.c:110 3933#: src/gns/gnunet-gns-proxy.c:118
3943#: src/hostlist/gnunet-daemon-hostlist_client.c:533 3934#: src/hostlist/gnunet-daemon-hostlist_client.c:535
3944#: src/hostlist/gnunet-daemon-hostlist_client.c:751 3935#: src/hostlist/gnunet-daemon-hostlist_client.c:753
3945#: src/hostlist/gnunet-daemon-hostlist_client.c:757 3936#: src/hostlist/gnunet-daemon-hostlist_client.c:759
3946#: src/hostlist/gnunet-daemon-hostlist_client.c:809 3937#: src/hostlist/gnunet-daemon-hostlist_client.c:811
3947#: src/hostlist/gnunet-daemon-hostlist_client.c:818 3938#: src/hostlist/gnunet-daemon-hostlist_client.c:820
3948#: src/hostlist/gnunet-daemon-hostlist_client.c:929 3939#: src/hostlist/gnunet-daemon-hostlist_client.c:931
3949#: src/hostlist/gnunet-daemon-hostlist_client.c:1024 3940#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
3950#: src/hostlist/gnunet-daemon-hostlist_client.c:1029 3941#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
3951#: src/transport/plugin_transport_http_client.c:596 3942#: src/transport/plugin_transport_http_client.c:598
3952#: src/transport/plugin_transport_http_client.c:614 3943#: src/transport/plugin_transport_http_client.c:616
3953#, c-format 3944#, c-format
3954msgid "%s failed at %s:%d: `%s'\n" 3945msgid "%s failed at %s:%d: `%s'\n"
3955msgstr "" 3946msgstr ""
3956 3947
3957#: src/gns/gnunet-gns-proxy.c:960 3948#: src/gns/gnunet-gns-proxy.c:980
3958#, c-format 3949#, c-format
3959msgid "Unsupported CURL TLS backend %d\n" 3950msgid "Unsupported CURL TLS backend %d\n"
3960msgstr "" 3951msgstr ""
3961 3952
3962#: src/gns/gnunet-gns-proxy.c:985 3953#: src/gns/gnunet-gns-proxy.c:1005
3963#, c-format 3954#, c-format
3964msgid "Failed to fetch CN from cert: %s\n" 3955msgid "Failed to fetch CN from cert: %s\n"
3965msgstr "" 3956msgstr ""
3966 3957
3967#: src/gns/gnunet-gns-proxy.c:1008 3958#: src/gns/gnunet-gns-proxy.c:1026
3968#, c-format 3959#, c-format
3969msgid "Failed to initialize DANE: %s\n" 3960msgid "Failed to initialize DANE: %s\n"
3970msgstr "" 3961msgstr ""
3971 3962
3972#: src/gns/gnunet-gns-proxy.c:1021 3963#: src/gns/gnunet-gns-proxy.c:1041
3973#, c-format 3964#, c-format
3974msgid "Failed to parse DANE record: %s\n" 3965msgid "Failed to parse DANE record: %s\n"
3975msgstr "" 3966msgstr ""
3976 3967
3977#: src/gns/gnunet-gns-proxy.c:1036 3968#: src/gns/gnunet-gns-proxy.c:1056
3978#, c-format 3969#, c-format
3979msgid "Failed to verify TLS connection using DANE: %s\n" 3970msgid "Failed to verify TLS connection using DANE: %s\n"
3980msgstr "" 3971msgstr ""
3981 3972
3982#: src/gns/gnunet-gns-proxy.c:1046 3973#: src/gns/gnunet-gns-proxy.c:1066
3983#, c-format 3974#, c-format
3984msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" 3975msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
3985msgstr "" 3976msgstr ""
3986 3977
3987#: src/gns/gnunet-gns-proxy.c:1070 3978#: src/gns/gnunet-gns-proxy.c:1090
3988#, c-format 3979#, c-format
3989msgid "TLS certificate subject name (%s) does not match `%s': %d\n" 3980msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
3990msgstr "" 3981msgstr ""
3991 3982
3992#: src/gns/gnunet-gns-proxy.c:1200 3983#: src/gns/gnunet-gns-proxy.c:1221
3993#, c-format 3984#, c-format
3994msgid "Cookie domain `%s' supplied by server is invalid\n" 3985msgid "Cookie domain `%s' supplied by server is invalid\n"
3995msgstr "" 3986msgstr ""
3996 3987
3997#: src/gns/gnunet-gns-proxy.c:2062 3988#: src/gns/gnunet-gns-proxy.c:2121
3998#, c-format 3989#, c-format
3999msgid "Unsupported HTTP method `%s'\n" 3990msgid "Unsupported HTTP method `%s'\n"
4000msgstr "" 3991msgstr ""
4001 3992
4002#: src/gns/gnunet-gns-proxy.c:2583 3993#: src/gns/gnunet-gns-proxy.c:2642
4003#, c-format 3994#, c-format
4004msgid "Unable to import private key from file `%s'\n" 3995msgid "Unable to import private key from file `%s'\n"
4005msgstr "" 3996msgstr ""
4006 3997
4007#: src/gns/gnunet-gns-proxy.c:2615 3998#: src/gns/gnunet-gns-proxy.c:2674
4008#, c-format 3999#, c-format
4009msgid "Unable to import certificate from `%s'\n" 4000msgid "Unable to import certificate from `%s'\n"
4010msgstr "" 4001msgstr ""
4011 4002
4012#: src/gns/gnunet-gns-proxy.c:2814 4003#: src/gns/gnunet-gns-proxy.c:2875
4013#, c-format 4004#, c-format
4014msgid "Failed to start HTTPS server for `%s'\n" 4005msgid "Failed to start HTTPS server for `%s'\n"
4015msgstr "" 4006msgstr ""
4016 4007
4017#: src/gns/gnunet-gns-proxy.c:2839 src/rest/gnunet-rest-server.c:656 4008#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
4018msgid "Failed to pass client to MHD\n" 4009msgid "Failed to pass client to MHD\n"
4019msgstr "" 4010msgstr ""
4020 4011
4021#: src/gns/gnunet-gns-proxy.c:3169 4012#: src/gns/gnunet-gns-proxy.c:3233
4022#, c-format 4013#, c-format
4023msgid "Unsupported socks version %d\n" 4014msgid "Unsupported socks version %d\n"
4024msgstr "" 4015msgstr ""
4025 4016
4026#: src/gns/gnunet-gns-proxy.c:3198 4017#: src/gns/gnunet-gns-proxy.c:3262
4027#, c-format 4018#, c-format
4028msgid "Unsupported socks command %d\n" 4019msgid "Unsupported socks command %d\n"
4029msgstr "" 4020msgstr ""
4030 4021
4031#: src/gns/gnunet-gns-proxy.c:3280 4022#: src/gns/gnunet-gns-proxy.c:3345
4032#, c-format 4023#, c-format
4033msgid "Unsupported socks address type %d\n" 4024msgid "Unsupported socks address type %d\n"
4034msgstr "" 4025msgstr ""
4035 4026
4036#: src/gns/gnunet-gns-proxy.c:3570 4027#: src/gns/gnunet-gns-proxy.c:3635
4037#, c-format 4028#, c-format
4038msgid "Failed to load X.509 key and certificate from `%s'\n" 4029msgid "Failed to load X.509 key and certificate from `%s'\n"
4039msgstr "" 4030msgstr ""
4040 4031
4041#: src/gns/gnunet-gns-proxy.c:3698 4032#: src/gns/gnunet-gns-proxy.c:3763
4042msgid "listen on specified port (default: 7777)" 4033msgid "listen on specified port (default: 7777)"
4043msgstr "" 4034msgstr ""
4044 4035
4045#: src/gns/gnunet-gns-proxy.c:3703 4036#: src/gns/gnunet-gns-proxy.c:3768
4046msgid "pem file to use as CA" 4037msgid "pem file to use as CA"
4047msgstr "" 4038msgstr ""
4048 4039
4049#: src/gns/gnunet-gns-proxy.c:3707 4040#: src/gns/gnunet-gns-proxy.c:3772
4050msgid "disable use of IPv6" 4041msgid "disable use of IPv6"
4051msgstr "" 4042msgstr ""
4052 4043
4053#: src/gns/gnunet-gns-proxy.c:3733 4044#: src/gns/gnunet-gns-proxy.c:3798
4054msgid "GNUnet GNS proxy" 4045msgid "GNUnet GNS proxy"
4055msgstr "" 4046msgstr ""
4056 4047
4057#: src/gns/gnunet-service-gns.c:511 4048#: src/gns/gnunet-service-gns.c:506
4058msgid "Properly base32-encoded public key required" 4049msgid "Properly base32-encoded public key required"
4059msgstr "" 4050msgstr ""
4060 4051
4061#: src/gns/gnunet-service-gns.c:547 4052#: src/gns/gnunet-service-gns.c:542
4062msgid "Failed to connect to the namecache!\n" 4053msgid "Failed to connect to the namecache!\n"
4063msgstr "" 4054msgstr ""
4064 4055
4065#: src/gns/gnunet-service-gns.c:566 4056#: src/gns/gnunet-service-gns.c:561
4066#: src/zonemaster/gnunet-service-zonemaster.c:873 4057#: src/zonemaster/gnunet-service-zonemaster.c:875
4067#: src/zonemaster/gnunet-service-zonemaster-monitor.c:438 4058#: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
4068msgid "Could not connect to DHT!\n" 4059msgid "Could not connect to DHT!\n"
4069msgstr "" 4060msgstr ""
4070 4061
4071#: src/gns/gnunet-service-gns_interceptor.c:257 4062#: src/gns/gnunet-service-gns_interceptor.c:259
4072msgid "Error converting GNS response to DNS response!\n" 4063msgid "Error converting GNS response to DNS response!\n"
4073msgstr "" 4064msgstr ""
4074 4065
4075#: src/gns/gnunet-service-gns_interceptor.c:364 4066#: src/gns/gnunet-service-gns_interceptor.c:366
4076msgid "Failed to connect to the DNS service!\n" 4067msgid "Failed to connect to the DNS service!\n"
4077msgstr "" 4068msgstr ""
4078 4069
4079#: src/gns/gnunet-service-gns_resolver.c:717 4070#: src/gns/gnunet-service-gns_resolver.c:700
4080#, c-format 4071#, c-format
4081msgid "Protocol `%s' unknown, skipping labels.\n" 4072msgid "Protocol `%s' unknown, skipping labels.\n"
4082msgstr "" 4073msgstr ""
4083 4074
4084#: src/gns/gnunet-service-gns_resolver.c:728 4075#: src/gns/gnunet-service-gns_resolver.c:711
4085#, c-format 4076#, c-format
4086msgid "Service `%s' unknown for protocol `%s', skipping labels.\n" 4077msgid "Service `%s' unknown for protocol `%s', skipping labels.\n"
4087msgstr "" 4078msgstr ""
4088 4079
4089#: src/gns/gnunet-service-gns_resolver.c:931 4080#: src/gns/gnunet-service-gns_resolver.c:914
4090msgid "Failed to parse DNS response\n" 4081msgid "Failed to parse DNS response\n"
4091msgstr "" 4082msgstr ""
4092 4083
4093#: src/gns/gnunet-service-gns_resolver.c:1112 4084#: src/gns/gnunet-service-gns_resolver.c:1095
4094#, c-format 4085#, c-format
4095msgid "Skipping record of unsupported type %d\n" 4086msgid "Skipping record of unsupported type %d\n"
4096msgstr "" 4087msgstr ""
4097 4088
4098#: src/gns/gnunet-service-gns_resolver.c:1382 4089#: src/gns/gnunet-service-gns_resolver.c:1365
4099#, c-format 4090#, c-format
4100msgid "VPN returned empty result for `%s'\n" 4091msgid "VPN returned empty result for `%s'\n"
4101msgstr "" 4092msgstr ""
4102 4093
4103#: src/gns/gnunet-service-gns_resolver.c:1823 4094#: src/gns/gnunet-service-gns_resolver.c:1806
4104#, c-format 4095#, c-format
4105msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" 4096msgid "GNS lookup resulted in DNS name that is too long (`%s')\n"
4106msgstr "" 4097msgstr ""
4107 4098
4108#: src/gns/gnunet-service-gns_resolver.c:1866 4099#: src/gns/gnunet-service-gns_resolver.c:1849
4109#, c-format 4100#, c-format
4110msgid "GNS lookup failed (zero records found for `%s')\n" 4101msgid "GNS lookup failed (zero records found for `%s')\n"
4111msgstr "" 4102msgstr ""
4112 4103
4113#: src/gns/gnunet-service-gns_resolver.c:2281 4104#: src/gns/gnunet-service-gns_resolver.c:2264
4114msgid "GNS lookup recursion failed (no delegation record found)\n" 4105msgid "GNS lookup recursion failed (no delegation record found)\n"
4115msgstr "" 4106msgstr ""
4116 4107
4117#: src/gns/gnunet-service-gns_resolver.c:2304 4108#: src/gns/gnunet-service-gns_resolver.c:2287
4118#, c-format 4109#, c-format
4119msgid "Failed to cache GNS resolution: %s\n" 4110msgid "Failed to cache GNS resolution: %s\n"
4120msgstr "" 4111msgstr ""
4121 4112
4122#: src/gns/gnunet-service-gns_resolver.c:2467 4113#: src/gns/gnunet-service-gns_resolver.c:2450
4123#, c-format 4114#, c-format
4124msgid "GNS namecache returned empty result for `%s'\n" 4115msgid "GNS namecache returned empty result for `%s'\n"
4125msgstr "" 4116msgstr ""
4126 4117
4127#: src/gns/gnunet-service-gns_resolver.c:2602 4118#: src/gns/gnunet-service-gns_resolver.c:2585
4128#, c-format 4119#, c-format
4129msgid "Zone %s was revoked, resolution fails\n" 4120msgid "Zone %s was revoked, resolution fails\n"
4130msgstr "" 4121msgstr ""
4131 4122
4132#: src/gns/plugin_gnsrecord_gns.c:179 4123#: src/gns/plugin_gnsrecord_gns.c:181
4133#, c-format 4124#, c-format
4134msgid "Unable to parse PKEY record `%s'\n" 4125msgid "Unable to parse PKEY record `%s'\n"
4135msgstr "" 4126msgstr ""
4136 4127
4137#: src/gns/plugin_gnsrecord_gns.c:210 4128#: src/gns/plugin_gnsrecord_gns.c:212
4138#, c-format 4129#, c-format
4139msgid "Unable to parse GNS2DNS record `%s'\n" 4130msgid "Unable to parse GNS2DNS record `%s'\n"
4140msgstr "" 4131msgstr ""
4141 4132
4142#: src/gns/plugin_gnsrecord_gns.c:231 4133#: src/gns/plugin_gnsrecord_gns.c:233
4143#, c-format 4134#, c-format
4144msgid "Failed to serialize GNS2DNS record with value `%s'\n" 4135msgid "Failed to serialize GNS2DNS record with value `%s'\n"
4145msgstr "" 4136msgstr ""
4146 4137
4147#: src/gns/plugin_gnsrecord_gns.c:256 4138#: src/gns/plugin_gnsrecord_gns.c:258
4148#, c-format 4139#, c-format
4149msgid "Unable to parse VPN record string `%s'\n" 4140msgid "Unable to parse VPN record string `%s'\n"
4150msgstr "" 4141msgstr ""
4151 4142
4152#: src/gns/plugin_gnsrecord_gns.c:292 4143#: src/gns/plugin_gnsrecord_gns.c:294
4153#, c-format 4144#, c-format
4154msgid "Unable to parse BOX record string `%s'\n" 4145msgid "Unable to parse BOX record string `%s'\n"
4155msgstr "" 4146msgstr ""
4156 4147
4157#: src/gnsrecord/plugin_gnsrecord_dns.c:357 4148#: src/gnsrecord/plugin_gnsrecord_dns.c:359
4158#, c-format 4149#, c-format
4159msgid "Unable to parse IPv4 address `%s'\n" 4150msgid "Unable to parse IPv4 address `%s'\n"
4160msgstr "" 4151msgstr ""
4161 4152
4162#: src/gnsrecord/plugin_gnsrecord_dns.c:378 4153#: src/gnsrecord/plugin_gnsrecord_dns.c:380
4163#, c-format 4154#, c-format
4164msgid "Failed to serialize NS record with value `%s'\n" 4155msgid "Failed to serialize NS record with value `%s'\n"
4165msgstr "" 4156msgstr ""
4166 4157
4167#: src/gnsrecord/plugin_gnsrecord_dns.c:400 4158#: src/gnsrecord/plugin_gnsrecord_dns.c:402
4168#, c-format 4159#, c-format
4169msgid "Failed to serialize CNAME record with value `%s'\n" 4160msgid "Failed to serialize CNAME record with value `%s'\n"
4170msgstr "" 4161msgstr ""
4171 4162
4172#: src/gnsrecord/plugin_gnsrecord_dns.c:485 4163#: src/gnsrecord/plugin_gnsrecord_dns.c:487
4173#, c-format 4164#, c-format
4174msgid "Failed to serialize CERT record with %u bytes\n" 4165msgid "Failed to serialize CERT record with %u bytes\n"
4175msgstr "" 4166msgstr ""
4176 4167
4177#: src/gnsrecord/plugin_gnsrecord_dns.c:521 4168#: src/gnsrecord/plugin_gnsrecord_dns.c:523
4178#, c-format 4169#, c-format
4179msgid "Unable to parse SOA record `%s'\n" 4170msgid "Unable to parse SOA record `%s'\n"
4180msgstr "" 4171msgstr ""
4181 4172
4182#: src/gnsrecord/plugin_gnsrecord_dns.c:540 4173#: src/gnsrecord/plugin_gnsrecord_dns.c:542
4183#, c-format 4174#, c-format
4184msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n" 4175msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
4185msgstr "" 4176msgstr ""
4186 4177
4187#: src/gnsrecord/plugin_gnsrecord_dns.c:563 4178#: src/gnsrecord/plugin_gnsrecord_dns.c:565
4188#, c-format 4179#, c-format
4189msgid "Failed to serialize PTR record with value `%s'\n" 4180msgid "Failed to serialize PTR record with value `%s'\n"
4190msgstr "" 4181msgstr ""
4191 4182
4192#: src/gnsrecord/plugin_gnsrecord_dns.c:586 4183#: src/gnsrecord/plugin_gnsrecord_dns.c:588
4193#, c-format 4184#, c-format
4194msgid "Unable to parse MX record `%s'\n" 4185msgid "Unable to parse MX record `%s'\n"
4195msgstr "" 4186msgstr ""
4196 4187
4197#: src/gnsrecord/plugin_gnsrecord_dns.c:601 4188#: src/gnsrecord/plugin_gnsrecord_dns.c:603
4198#, c-format 4189#, c-format
4199msgid "Failed to serialize MX record with hostname `%s'\n" 4190msgid "Failed to serialize MX record with hostname `%s'\n"
4200msgstr "" 4191msgstr ""
4201 4192
4202#: src/gnsrecord/plugin_gnsrecord_dns.c:628 4193#: src/gnsrecord/plugin_gnsrecord_dns.c:630
4203#, c-format 4194#, c-format
4204msgid "Unable to parse SRV record `%s'\n" 4195msgid "Unable to parse SRV record `%s'\n"
4205msgstr "" 4196msgstr ""
4206 4197
4207#: src/gnsrecord/plugin_gnsrecord_dns.c:644 4198#: src/gnsrecord/plugin_gnsrecord_dns.c:646
4208#, c-format 4199#, c-format
4209msgid "Failed to serialize SRV record with target `%s'\n" 4200msgid "Failed to serialize SRV record with target `%s'\n"
4210msgstr "" 4201msgstr ""
4211 4202
4212#: src/gnsrecord/plugin_gnsrecord_dns.c:661 4203#: src/gnsrecord/plugin_gnsrecord_dns.c:663
4213#, c-format 4204#, c-format
4214msgid "Unable to parse IPv6 address `%s'\n" 4205msgid "Unable to parse IPv6 address `%s'\n"
4215msgstr "" 4206msgstr ""
4216 4207
4217#: src/gnsrecord/plugin_gnsrecord_dns.c:685 4208#: src/gnsrecord/plugin_gnsrecord_dns.c:687
4218#: src/gnsrecord/plugin_gnsrecord_dns.c:701 4209#: src/gnsrecord/plugin_gnsrecord_dns.c:703
4219#, c-format 4210#, c-format
4220msgid "Unable to parse TLSA record string `%s'\n" 4211msgid "Unable to parse TLSA record string `%s'\n"
4221msgstr "" 4212msgstr ""
4222 4213
4223#: src/hello/gnunet-hello.c:124 4214#: src/hello/gnunet-hello.c:126
4224msgid "Call with name of HELLO file to modify.\n" 4215msgid "Call with name of HELLO file to modify.\n"
4225msgstr "" 4216msgstr ""
4226 4217
4227#: src/hello/gnunet-hello.c:130 4218#: src/hello/gnunet-hello.c:132
4228#, c-format 4219#, c-format
4229msgid "Error accessing file `%s': %s\n" 4220msgid "Error accessing file `%s': %s\n"
4230msgstr "" 4221msgstr ""
4231 4222
4232#: src/hello/gnunet-hello.c:138 4223#: src/hello/gnunet-hello.c:140
4233#, c-format 4224#, c-format
4234msgid "File `%s' is too big to be a HELLO\n" 4225msgid "File `%s' is too big to be a HELLO\n"
4235msgstr "" 4226msgstr ""
4236 4227
4237#: src/hello/gnunet-hello.c:145 4228#: src/hello/gnunet-hello.c:147
4238#, c-format 4229#, c-format
4239msgid "File `%s' is too small to be a HELLO\n" 4230msgid "File `%s' is too small to be a HELLO\n"
4240msgstr "" 4231msgstr ""
4241 4232
4242#: src/hello/gnunet-hello.c:155 src/hello/gnunet-hello.c:196 4233#: src/hello/gnunet-hello.c:157 src/hello/gnunet-hello.c:198
4243#, c-format 4234#, c-format
4244msgid "Error opening file `%s': %s\n" 4235msgid "Error opening file `%s': %s\n"
4245msgstr "" 4236msgstr ""
4246 4237
4247#: src/hello/gnunet-hello.c:172 4238#: src/hello/gnunet-hello.c:174
4248#, c-format 4239#, c-format
4249msgid "Did not find well-formed HELLO in file `%s'\n" 4240msgid "Did not find well-formed HELLO in file `%s'\n"
4250msgstr "" 4241msgstr ""
4251 4242
4252#: src/hello/gnunet-hello.c:208 4243#: src/hello/gnunet-hello.c:210
4253#, c-format 4244#, c-format
4254msgid "Error writing HELLO to file `%s': %s\n" 4245msgid "Error writing HELLO to file `%s': %s\n"
4255msgstr "" 4246msgstr ""
4256 4247
4257#: src/hello/gnunet-hello.c:217 4248#: src/hello/gnunet-hello.c:219
4258#, c-format 4249#, c-format
4259msgid "Modified %u addresses, wrote %u bytes\n" 4250msgid "Modified %u addresses, wrote %u bytes\n"
4260msgstr "" 4251msgstr ""
4261 4252
4262#: src/hello/hello.c:1108 4253#: src/hello/hello.c:1110
4263msgid "Failed to parse HELLO message: missing expiration time\n" 4254msgid "Failed to parse HELLO message: missing expiration time\n"
4264msgstr "" 4255msgstr ""
4265 4256
4266#: src/hello/hello.c:1117 4257#: src/hello/hello.c:1119
4267msgid "Failed to parse HELLO message: invalid expiration time\n" 4258msgid "Failed to parse HELLO message: invalid expiration time\n"
4268msgstr "" 4259msgstr ""
4269 4260
4270#: src/hello/hello.c:1127 4261#: src/hello/hello.c:1129
4271msgid "Failed to parse HELLO message: malformed\n" 4262msgid "Failed to parse HELLO message: malformed\n"
4272msgstr "" 4263msgstr ""
4273 4264
4274#: src/hello/hello.c:1138 4265#: src/hello/hello.c:1140
4275msgid "Failed to parse HELLO message: missing transport plugin\n" 4266msgid "Failed to parse HELLO message: missing transport plugin\n"
4276msgstr "" 4267msgstr ""
4277 4268
4278#: src/hello/hello.c:1156 4269#: src/hello/hello.c:1158
4279#, c-format 4270#, c-format
4280msgid "Plugin `%s' not found, skipping address\n" 4271msgid "Plugin `%s' not found, skipping address\n"
4281msgstr "" 4272msgstr ""
4282 4273
4283#: src/hello/hello.c:1164 4274#: src/hello/hello.c:1166
4284#, c-format 4275#, c-format
4285msgid "Plugin `%s' does not support URIs yet\n" 4276msgid "Plugin `%s' does not support URIs yet\n"
4286msgstr "" 4277msgstr ""
4287 4278
4288#: src/hello/hello.c:1179 4279#: src/hello/hello.c:1181
4289#, c-format 4280#, c-format
4290msgid "Failed to parse `%s' as an address for plugin `%s'\n" 4281msgid "Failed to parse `%s' as an address for plugin `%s'\n"
4291msgstr "" 4282msgstr ""
4292 4283
4293#: src/hostlist/gnunet-daemon-hostlist.c:314 4284#: src/hostlist/gnunet-daemon-hostlist.c:316
4294msgid "" 4285msgid ""
4295"None of the functions for the hostlist daemon were enabled. I have no " 4286"None of the functions for the hostlist daemon were enabled. I have no "
4296"reason to run!\n" 4287"reason to run!\n"
4297msgstr "" 4288msgstr ""
4298 4289
4299#: src/hostlist/gnunet-daemon-hostlist.c:374 4290#: src/hostlist/gnunet-daemon-hostlist.c:376
4300msgid "advertise our hostlist to other peers" 4291msgid "advertise our hostlist to other peers"
4301msgstr "" 4292msgstr ""
4302 4293
4303#: src/hostlist/gnunet-daemon-hostlist.c:379 4294#: src/hostlist/gnunet-daemon-hostlist.c:381
4304msgid "" 4295msgid ""
4305"bootstrap using hostlists (it is highly recommended that you always use this " 4296"bootstrap using hostlists (it is highly recommended that you always use this "
4306"option)" 4297"option)"
4307msgstr "" 4298msgstr ""
4308 4299
4309#: src/hostlist/gnunet-daemon-hostlist.c:383 4300#: src/hostlist/gnunet-daemon-hostlist.c:385
4310msgid "enable learning about hostlist servers from other peers" 4301msgid "enable learning about hostlist servers from other peers"
4311msgstr "" 4302msgstr ""
4312 4303
4313#: src/hostlist/gnunet-daemon-hostlist.c:388 4304#: src/hostlist/gnunet-daemon-hostlist.c:390
4314msgid "provide a hostlist server" 4305msgid "provide a hostlist server"
4315msgstr "" 4306msgstr ""
4316 4307
4317#: src/hostlist/gnunet-daemon-hostlist.c:404 4308#: src/hostlist/gnunet-daemon-hostlist.c:406
4318msgid "GNUnet hostlist server and client" 4309msgid "GNUnet hostlist server and client"
4319msgstr "" 4310msgstr ""
4320 4311
4321#: src/hostlist/gnunet-daemon-hostlist_client.c:347 4312#: src/hostlist/gnunet-daemon-hostlist_client.c:349
4322msgid "# bytes downloaded from hostlist servers" 4313msgid "# bytes downloaded from hostlist servers"
4323msgstr "" 4314msgstr ""
4324 4315
4325#: src/hostlist/gnunet-daemon-hostlist_client.c:368 4316#: src/hostlist/gnunet-daemon-hostlist_client.c:370
4326#: src/hostlist/gnunet-daemon-hostlist_client.c:401 4317#: src/hostlist/gnunet-daemon-hostlist_client.c:403
4327msgid "# invalid HELLOs downloaded from hostlist servers" 4318msgid "# invalid HELLOs downloaded from hostlist servers"
4328msgstr "" 4319msgstr ""
4329 4320
4330#: src/hostlist/gnunet-daemon-hostlist_client.c:371 4321#: src/hostlist/gnunet-daemon-hostlist_client.c:373
4331#: src/hostlist/gnunet-daemon-hostlist_client.c:404 4322#: src/hostlist/gnunet-daemon-hostlist_client.c:406
4332#, c-format 4323#, c-format
4333msgid "Invalid `%s' message received from hostlist at `%s'\n" 4324msgid "Invalid `%s' message received from hostlist at `%s'\n"
4334msgstr "" 4325msgstr ""
4335 4326
4336#: src/hostlist/gnunet-daemon-hostlist_client.c:389 4327#: src/hostlist/gnunet-daemon-hostlist_client.c:391
4337msgid "# valid HELLOs downloaded from hostlist servers" 4328msgid "# valid HELLOs downloaded from hostlist servers"
4338msgstr "" 4329msgstr ""
4339 4330
4340#: src/hostlist/gnunet-daemon-hostlist_client.c:659 4331#: src/hostlist/gnunet-daemon-hostlist_client.c:661
4341#: src/hostlist/gnunet-daemon-hostlist_client.c:1405 4332#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
4342msgid "# advertised hostlist URIs" 4333msgid "# advertised hostlist URIs"
4343msgstr "" 4334msgstr ""
4344 4335
4345#: src/hostlist/gnunet-daemon-hostlist_client.c:689 4336#: src/hostlist/gnunet-daemon-hostlist_client.c:691
4346#, c-format 4337#, c-format
4347msgid "# advertised URI `%s' downloaded" 4338msgid "# advertised URI `%s' downloaded"
4348msgstr "" 4339msgstr ""
4349 4340
4350#: src/hostlist/gnunet-daemon-hostlist_client.c:732 4341#: src/hostlist/gnunet-daemon-hostlist_client.c:734
4351#, c-format 4342#, c-format
4352msgid "" 4343msgid ""
4353"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI " 4344"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
4354"gets dismissed.\n" 4345"gets dismissed.\n"
4355msgstr "" 4346msgstr ""
4356 4347
4357#: src/hostlist/gnunet-daemon-hostlist_client.c:860 4348#: src/hostlist/gnunet-daemon-hostlist_client.c:862
4358#, c-format 4349#, c-format
4359msgid "Timeout trying to download hostlist from `%s'\n" 4350msgid "Timeout trying to download hostlist from `%s'\n"
4360msgstr "" 4351msgstr ""
4361 4352
4362#: src/hostlist/gnunet-daemon-hostlist_client.c:874 4353#: src/hostlist/gnunet-daemon-hostlist_client.c:876
4363#, c-format 4354#, c-format
4364msgid "Download limit of %u bytes exceeded, stopping download\n" 4355msgid "Download limit of %u bytes exceeded, stopping download\n"
4365msgstr "" 4356msgstr ""
4366 4357
4367#: src/hostlist/gnunet-daemon-hostlist_client.c:894 4358#: src/hostlist/gnunet-daemon-hostlist_client.c:896
4368#, c-format 4359#, c-format
4369msgid "Download of hostlist from `%s' failed: `%s'\n" 4360msgid "Download of hostlist from `%s' failed: `%s'\n"
4370msgstr "" 4361msgstr ""
4371 4362
4372#: src/hostlist/gnunet-daemon-hostlist_client.c:900 4363#: src/hostlist/gnunet-daemon-hostlist_client.c:902
4373#, c-format 4364#, c-format
4374msgid "Download of hostlist `%s' completed.\n" 4365msgid "Download of hostlist `%s' completed.\n"
4375msgstr "" 4366msgstr ""
4376 4367
4377#: src/hostlist/gnunet-daemon-hostlist_client.c:908 4368#: src/hostlist/gnunet-daemon-hostlist_client.c:910
4378#, c-format 4369#, c-format
4379msgid "Adding successfully tested hostlist `%s' datastore.\n" 4370msgid "Adding successfully tested hostlist `%s' datastore.\n"
4380msgstr "" 4371msgstr ""
4381 4372
4382#: src/hostlist/gnunet-daemon-hostlist_client.c:961 4373#: src/hostlist/gnunet-daemon-hostlist_client.c:963
4383#, c-format 4374#, c-format
4384msgid "Bootstrapping using hostlist at `%s'.\n" 4375msgid "Bootstrapping using hostlist at `%s'.\n"
4385msgstr "" 4376msgstr ""
4386 4377
4387#: src/hostlist/gnunet-daemon-hostlist_client.c:969 4378#: src/hostlist/gnunet-daemon-hostlist_client.c:971
4388msgid "# hostlist downloads initiated" 4379msgid "# hostlist downloads initiated"
4389msgstr "" 4380msgstr ""
4390 4381
4391#: src/hostlist/gnunet-daemon-hostlist_client.c:1096 4382#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
4392#: src/hostlist/gnunet-daemon-hostlist_client.c:1663 4383#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
4393msgid "# milliseconds between hostlist downloads" 4384msgid "# milliseconds between hostlist downloads"
4394msgstr "" 4385msgstr ""
4395 4386
4396#: src/hostlist/gnunet-daemon-hostlist_client.c:1105 4387#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
4397#, c-format 4388#, c-format
4398msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n" 4389msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n"
4399msgstr "" 4390msgstr ""
4400 4391
4401#: src/hostlist/gnunet-daemon-hostlist_client.c:1164 4392#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
4402#: src/hostlist/gnunet-daemon-hostlist_client.c:1185 4393#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
4403msgid "# active connections" 4394msgid "# active connections"
4404msgstr "# connessioni attive" 4395msgstr "# connessioni attive"
4405 4396
4406#: src/hostlist/gnunet-daemon-hostlist_client.c:1351 4397#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
4407#, c-format 4398#, c-format
4408msgid "Loading saved hostlist entries from file `%s' \n" 4399msgid "Loading saved hostlist entries from file `%s' \n"
4409msgstr "" 4400msgstr ""
4410 4401
4411#: src/hostlist/gnunet-daemon-hostlist_client.c:1356 4402#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
4412#, c-format 4403#, c-format
4413msgid "Hostlist file `%s' does not exist\n" 4404msgid "Hostlist file `%s' does not exist\n"
4414msgstr "" 4405msgstr ""
4415 4406
4416#: src/hostlist/gnunet-daemon-hostlist_client.c:1365 4407#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
4417#, c-format 4408#, c-format
4418msgid "Could not open file `%s' for reading to load hostlists: %s\n" 4409msgid "Could not open file `%s' for reading to load hostlists: %s\n"
4419msgstr "" 4410msgstr ""
4420 4411
4421#: src/hostlist/gnunet-daemon-hostlist_client.c:1399 4412#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
4422#, c-format 4413#, c-format
4423msgid "%u hostlist URIs loaded from file\n" 4414msgid "%u hostlist URIs loaded from file\n"
4424msgstr "" 4415msgstr ""
4425 4416
4426#: src/hostlist/gnunet-daemon-hostlist_client.c:1402 4417#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
4427msgid "# hostlist URIs read from file" 4418msgid "# hostlist URIs read from file"
4428msgstr "" 4419msgstr ""
4429 4420
4430#: src/hostlist/gnunet-daemon-hostlist_client.c:1448 4421#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
4431#, c-format 4422#, c-format
4432msgid "Could not open file `%s' for writing to save hostlists: %s\n" 4423msgid "Could not open file `%s' for writing to save hostlists: %s\n"
4433msgstr "" 4424msgstr ""
4434 4425
4435#: src/hostlist/gnunet-daemon-hostlist_client.c:1455 4426#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
4436#, c-format 4427#, c-format
4437msgid "Writing %u hostlist URIs to `%s'\n" 4428msgid "Writing %u hostlist URIs to `%s'\n"
4438msgstr "" 4429msgstr ""
4439 4430
4440#: src/hostlist/gnunet-daemon-hostlist_client.c:1479 4431#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
4441#: src/hostlist/gnunet-daemon-hostlist_client.c:1496 4432#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
4442#, c-format 4433#, c-format
4443msgid "Error writing hostlist URIs to file `%s'\n" 4434msgid "Error writing hostlist URIs to file `%s'\n"
4444msgstr "" 4435msgstr ""
4445 4436
4446#: src/hostlist/gnunet-daemon-hostlist_client.c:1491 4437#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
4447msgid "# hostlist URIs written to file" 4438msgid "# hostlist URIs written to file"
4448msgstr "" 4439msgstr ""
4449 4440
4450#: src/hostlist/gnunet-daemon-hostlist_client.c:1593 4441#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
4451#: src/transport/plugin_transport_http_client.c:2272 4442#: src/transport/plugin_transport_http_client.c:2274
4452#, c-format 4443#, c-format
4453msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n" 4444msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
4454msgstr "" 4445msgstr ""
4455 4446
4456#: src/hostlist/gnunet-daemon-hostlist_client.c:1622 4447#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
4457msgid "Learning is enabled on this peer\n" 4448msgid "Learning is enabled on this peer\n"
4458msgstr "" 4449msgstr ""
4459 4450
4460#: src/hostlist/gnunet-daemon-hostlist_client.c:1636 4451#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
4461msgid "Learning is not enabled on this peer\n" 4452msgid "Learning is not enabled on this peer\n"
4462msgstr "" 4453msgstr ""
4463 4454
4464#: src/hostlist/gnunet-daemon-hostlist_client.c:1649 4455#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
4465#, c-format 4456#, c-format
4466msgid "" 4457msgid ""
4467"Since learning is not enabled on this peer, hostlist file `%s' was removed\n" 4458"Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
4468msgstr "" 4459msgstr ""
4469 4460
4470#: src/hostlist/gnunet-daemon-hostlist_server.c:174 4461#: src/hostlist/gnunet-daemon-hostlist_server.c:176
4471msgid "bytes in hostlist" 4462msgid "bytes in hostlist"
4472msgstr "" 4463msgstr ""
4473 4464
4474#: src/hostlist/gnunet-daemon-hostlist_server.c:199 4465#: src/hostlist/gnunet-daemon-hostlist_server.c:201
4475msgid "expired addresses encountered" 4466msgid "expired addresses encountered"
4476msgstr "" 4467msgstr ""
4477 4468
4478#: src/hostlist/gnunet-daemon-hostlist_server.c:235 4469#: src/hostlist/gnunet-daemon-hostlist_server.c:237
4479#: src/hostlist/gnunet-daemon-hostlist_server.c:529 4470#: src/hostlist/gnunet-daemon-hostlist_server.c:531
4480#: src/peerinfo-tool/gnunet-peerinfo.c:383 4471#: src/peerinfo-tool/gnunet-peerinfo.c:385
4481#: src/peerinfo-tool/gnunet-peerinfo.c:532 4472#: src/peerinfo-tool/gnunet-peerinfo.c:534
4482#: src/topology/gnunet-daemon-topology.c:860 4473#: src/topology/gnunet-daemon-topology.c:862
4483#, c-format 4474#, c-format
4484msgid "Error in communication with PEERINFO service: %s\n" 4475msgid "Error in communication with PEERINFO service: %s\n"
4485msgstr "" 4476msgstr ""
4486 4477
4487#: src/hostlist/gnunet-daemon-hostlist_server.c:259 4478#: src/hostlist/gnunet-daemon-hostlist_server.c:261
4488msgid "HELLOs without addresses encountered (ignored)" 4479msgid "HELLOs without addresses encountered (ignored)"
4489msgstr "" 4480msgstr ""
4490 4481
4491#: src/hostlist/gnunet-daemon-hostlist_server.c:276 4482#: src/hostlist/gnunet-daemon-hostlist_server.c:278
4492msgid "bytes not included in hostlist (size limit)" 4483msgid "bytes not included in hostlist (size limit)"
4493msgstr "" 4484msgstr ""
4494 4485
4495#: src/hostlist/gnunet-daemon-hostlist_server.c:380 4486#: src/hostlist/gnunet-daemon-hostlist_server.c:382
4496#, c-format 4487#, c-format
4497msgid "Refusing `%s' request to hostlist server\n" 4488msgid "Refusing `%s' request to hostlist server\n"
4498msgstr "" 4489msgstr ""
4499 4490
4500#: src/hostlist/gnunet-daemon-hostlist_server.c:383 4491#: src/hostlist/gnunet-daemon-hostlist_server.c:385
4501msgid "hostlist requests refused (not HTTP GET)" 4492msgid "hostlist requests refused (not HTTP GET)"
4502msgstr "" 4493msgstr ""
4503 4494
4504#: src/hostlist/gnunet-daemon-hostlist_server.c:395 4495#: src/hostlist/gnunet-daemon-hostlist_server.c:397
4505#, c-format 4496#, c-format
4506msgid "Refusing `%s' request with %llu bytes of upload data\n" 4497msgid "Refusing `%s' request with %llu bytes of upload data\n"
4507msgstr "" 4498msgstr ""
4508 4499
4509#: src/hostlist/gnunet-daemon-hostlist_server.c:399 4500#: src/hostlist/gnunet-daemon-hostlist_server.c:401
4510msgid "hostlist requests refused (upload data)" 4501msgid "hostlist requests refused (upload data)"
4511msgstr "" 4502msgstr ""
4512 4503
4513#: src/hostlist/gnunet-daemon-hostlist_server.c:406 4504#: src/hostlist/gnunet-daemon-hostlist_server.c:408
4514msgid "Could not handle hostlist request since I do not have a response yet\n" 4505msgid "Could not handle hostlist request since I do not have a response yet\n"
4515msgstr "" 4506msgstr ""
4516 4507
4517#: src/hostlist/gnunet-daemon-hostlist_server.c:409 4508#: src/hostlist/gnunet-daemon-hostlist_server.c:411
4518msgid "hostlist requests refused (not ready)" 4509msgid "hostlist requests refused (not ready)"
4519msgstr "" 4510msgstr ""
4520 4511
4521#: src/hostlist/gnunet-daemon-hostlist_server.c:414 4512#: src/hostlist/gnunet-daemon-hostlist_server.c:416
4522msgid "Received request for our hostlist\n" 4513msgid "Received request for our hostlist\n"
4523msgstr "" 4514msgstr ""
4524 4515
4525#: src/hostlist/gnunet-daemon-hostlist_server.c:416 4516#: src/hostlist/gnunet-daemon-hostlist_server.c:418
4526msgid "hostlist requests processed" 4517msgid "hostlist requests processed"
4527msgstr "" 4518msgstr ""
4528 4519
4529#: src/hostlist/gnunet-daemon-hostlist_server.c:464 4520#: src/hostlist/gnunet-daemon-hostlist_server.c:466
4530msgid "# hostlist advertisements send" 4521msgid "# hostlist advertisements send"
4531msgstr "" 4522msgstr ""
4532 4523
4533#: src/hostlist/gnunet-daemon-hostlist_server.c:677 4524#: src/hostlist/gnunet-daemon-hostlist_server.c:679
4534#: src/transport/gnunet-service-transport.c:2813 4525#: src/transport/gnunet-service-transport.c:2814
4535msgid "Could not access PEERINFO service. Exiting.\n" 4526msgid "Could not access PEERINFO service. Exiting.\n"
4536msgstr "" 4527msgstr ""
4537 4528
4538#: src/hostlist/gnunet-daemon-hostlist_server.c:689 4529#: src/hostlist/gnunet-daemon-hostlist_server.c:691
4539#, c-format 4530#, c-format
4540msgid "Invalid port number %llu. Exiting.\n" 4531msgid "Invalid port number %llu. Exiting.\n"
4541msgstr "" 4532msgstr ""
4542 4533
4543#: src/hostlist/gnunet-daemon-hostlist_server.c:701 4534#: src/hostlist/gnunet-daemon-hostlist_server.c:703
4544#, c-format 4535#, c-format
4545msgid "Hostlist service starts on %s:%llu\n" 4536msgid "Hostlist service starts on %s:%llu\n"
4546msgstr "" 4537msgstr ""
4547 4538
4548#: src/hostlist/gnunet-daemon-hostlist_server.c:716 4539#: src/hostlist/gnunet-daemon-hostlist_server.c:718
4549#, c-format 4540#, c-format
4550msgid "Address to obtain hostlist: `%s'\n" 4541msgid "Address to obtain hostlist: `%s'\n"
4551msgstr "" 4542msgstr ""
4552 4543
4553#: src/hostlist/gnunet-daemon-hostlist_server.c:729 4544#: src/hostlist/gnunet-daemon-hostlist_server.c:731
4554msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4545msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4555msgstr "" 4546msgstr ""
4556 4547
4557#: src/hostlist/gnunet-daemon-hostlist_server.c:746 4548#: src/hostlist/gnunet-daemon-hostlist_server.c:748
4558msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n" 4549msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
4559msgstr "" 4550msgstr ""
4560 4551
4561#: src/hostlist/gnunet-daemon-hostlist_server.c:767 4552#: src/hostlist/gnunet-daemon-hostlist_server.c:769
4562#, fuzzy, c-format 4553#, fuzzy, c-format
4563msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4554msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4564msgstr "`%s' non è un indirizzo IP valido.\n" 4555msgstr "`%s' non è un indirizzo IP valido.\n"
4565 4556
4566#: src/hostlist/gnunet-daemon-hostlist_server.c:787 4557#: src/hostlist/gnunet-daemon-hostlist_server.c:789
4567#, fuzzy, c-format 4558#, fuzzy, c-format
4568msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n" 4559msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
4569msgstr "`%s' non è un indirizzo IP valido.\n" 4560msgstr "`%s' non è un indirizzo IP valido.\n"
4570 4561
4571#: src/hostlist/gnunet-daemon-hostlist_server.c:827 4562#: src/hostlist/gnunet-daemon-hostlist_server.c:829
4572#, c-format 4563#, c-format
4573msgid "Could not start hostlist HTTP server on port %u\n" 4564msgid "Could not start hostlist HTTP server on port %u\n"
4574msgstr "" 4565msgstr ""
4575 4566
4576#: src/identity/gnunet-identity.c:177 4567#: src/identity/gnunet-identity.c:179
4577#, c-format 4568#, c-format
4578msgid "Failed to create ego: %s\n" 4569msgid "Failed to create ego: %s\n"
4579msgstr "" 4570msgstr ""
4580 4571
4581#: src/identity/gnunet-identity.c:199 4572#: src/identity/gnunet-identity.c:201
4582#, c-format 4573#, c-format
4583msgid "Failed to set default ego: %s\n" 4574msgid "Failed to set default ego: %s\n"
4584msgstr "" 4575msgstr ""
4585 4576
4586#: src/identity/gnunet-identity.c:354 4577#: src/identity/gnunet-identity.c:356
4587msgid "create ego NAME" 4578msgid "create ego NAME"
4588msgstr "" 4579msgstr ""
4589 4580
4590#: src/identity/gnunet-identity.c:360 4581#: src/identity/gnunet-identity.c:362
4591msgid "delete ego NAME " 4582msgid "delete ego NAME "
4592msgstr "" 4583msgstr ""
4593 4584
4594#: src/identity/gnunet-identity.c:365 4585#: src/identity/gnunet-identity.c:367
4595msgid "display all egos" 4586msgid "display all egos"
4596msgstr "" 4587msgstr ""
4597 4588
4598#: src/identity/gnunet-identity.c:371 4589#: src/identity/gnunet-identity.c:373
4599msgid "" 4590msgid ""
4600"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)" 4591"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
4601msgstr "" 4592msgstr ""
4602 4593
4603#: src/identity/gnunet-identity.c:376 4594#: src/identity/gnunet-identity.c:378
4604msgid "run in monitor mode egos" 4595msgid "run in monitor mode egos"
4605msgstr "" 4596msgstr ""
4606 4597
4607#: src/identity/gnunet-identity.c:382 4598#: src/identity/gnunet-identity.c:384
4608msgid "" 4599msgid ""
4609"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)" 4600"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
4610msgstr "" 4601msgstr ""
4611 4602
4612#: src/identity/gnunet-identity.c:396 4603#: src/identity/gnunet-identity.c:398
4613msgid "Maintain egos" 4604msgid "Maintain egos"
4614msgstr "" 4605msgstr ""
4615 4606
4616#: src/identity/gnunet-service-identity.c:389 4607#: src/identity/gnunet-service-identity.c:391
4617msgid "no default known" 4608msgid "no default known"
4618msgstr "" 4609msgstr ""
4619 4610
4620#: src/identity/gnunet-service-identity.c:414 4611#: src/identity/gnunet-service-identity.c:416
4621msgid "default configured, but ego unknown (internal error)" 4612msgid "default configured, but ego unknown (internal error)"
4622msgstr "" 4613msgstr ""
4623 4614
4624#: src/identity/gnunet-service-identity.c:505 4615#: src/identity/gnunet-service-identity.c:507
4625#: src/identity/gnunet-service-identity.c:788 4616#: src/identity/gnunet-service-identity.c:790
4626#: src/identity/gnunet-service-identity.c:916 4617#: src/identity/gnunet-service-identity.c:918
4627#, c-format 4618#, c-format
4628msgid "Failed to write subsystem default identifier map to `%s'.\n" 4619msgid "Failed to write subsystem default identifier map to `%s'.\n"
4629msgstr "" 4620msgstr ""
4630 4621
4631#: src/identity/gnunet-service-identity.c:513 4622#: src/identity/gnunet-service-identity.c:515
4632msgid "Unknown ego specified for service (internal error)" 4623msgid "Unknown ego specified for service (internal error)"
4633msgstr "" 4624msgstr ""
4634 4625
4635#: src/identity/gnunet-service-identity.c:608 4626#: src/identity/gnunet-service-identity.c:610
4636msgid "identifier already in use for another ego" 4627msgid "identifier already in use for another ego"
4637msgstr "" 4628msgstr ""
4638 4629
4639#: src/identity/gnunet-service-identity.c:763 4630#: src/identity/gnunet-service-identity.c:765
4640msgid "target name already exists" 4631msgid "target name already exists"
4641msgstr "" 4632msgstr ""
4642 4633
4643#: src/identity/gnunet-service-identity.c:806 4634#: src/identity/gnunet-service-identity.c:808
4644#: src/identity/gnunet-service-identity.c:934 4635#: src/identity/gnunet-service-identity.c:936
4645msgid "no matching ego found" 4636msgid "no matching ego found"
4646msgstr "" 4637msgstr ""
4647 4638
4648#: src/identity/gnunet-service-identity.c:969 4639#: src/identity/gnunet-service-identity.c:971
4649#, c-format 4640#, c-format
4650msgid "Failed to parse ego information in `%s'\n" 4641msgid "Failed to parse ego information in `%s'\n"
4651msgstr "" 4642msgstr ""
4652 4643
4653#: src/identity/gnunet-service-identity.c:1027 4644#: src/identity/gnunet-service-identity.c:1029
4654#, c-format 4645#, c-format
4655msgid "Failed to parse subsystem identity configuration file `%s'\n" 4646msgid "Failed to parse subsystem identity configuration file `%s'\n"
4656msgstr "" 4647msgstr ""
4657 4648
4658#: src/identity/gnunet-service-identity.c:1037 4649#: src/identity/gnunet-service-identity.c:1039
4659#, c-format 4650#, c-format
4660msgid "Failed to create directory `%s' for storing egos\n" 4651msgid "Failed to create directory `%s' for storing egos\n"
4661msgstr "" 4652msgstr ""
4662 4653
4663#: src/json/json.c:121 4654#: src/json/json.c:123
4664#, c-format 4655#, c-format
4665msgid "Failed to parse JSON in option `%s': %s (%s)\n" 4656msgid "Failed to parse JSON in option `%s': %s (%s)\n"
4666msgstr "" 4657msgstr ""
4667 4658
4668#: src/multicast/gnunet-multicast.c:46 src/multicast/gnunet-multicast.c:70 4659#: src/my/my.c:196 src/my/my.c:215
4669msgid "This command doesn't do anything yet."
4670msgstr ""
4671
4672#: src/my/my.c:194 src/my/my.c:213
4673#, c-format 4660#, c-format
4674msgid "%s failed at %s:%d with error: %s\n" 4661msgid "%s failed at %s:%d with error: %s\n"
4675msgstr "" 4662msgstr ""
4676 4663
4677#: src/mysql/mysql.c:178 4664#: src/mysql/mysql.c:180
4678#, c-format 4665#, c-format
4679msgid "Trying to use file `%s' for MySQL configuration.\n" 4666msgid "Trying to use file `%s' for MySQL configuration.\n"
4680msgstr "" 4667msgstr ""
4681 4668
4682#: src/mysql/mysql.c:185 4669#: src/mysql/mysql.c:187
4683#, c-format 4670#, c-format
4684msgid "Could not access file `%s': %s\n" 4671msgid "Could not access file `%s': %s\n"
4685msgstr "" 4672msgstr ""
4686 4673
4687#: src/namecache/gnunet-namecache.c:105 4674#: src/namecache/gnunet-namecache.c:107
4688#, c-format 4675#, c-format
4689msgid "No records found for `%s'" 4676msgid "No records found for `%s'"
4690msgstr "" 4677msgstr ""
4691 4678
4692#: src/namecache/gnunet-namecache.c:120 src/namestore/gnunet-namestore.c:424 4679#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
4693#, c-format 4680#, c-format
4694msgid "\tCorrupt or unsupported record of type %u\n" 4681msgid "\tCorrupt or unsupported record of type %u\n"
4695msgstr "" 4682msgstr ""
4696 4683
4697#: src/namecache/gnunet-namecache.c:181 4684#: src/namecache/gnunet-namecache.c:183
4698#, c-format 4685#, c-format
4699msgid "You must specify which zone should be accessed\n" 4686msgid "You must specify which zone should be accessed\n"
4700msgstr "" 4687msgstr ""
4701 4688
4702#: src/namecache/gnunet-namecache.c:191 4689#: src/namecache/gnunet-namecache.c:193
4703#, c-format 4690#, c-format
4704msgid "Invalid public key for zone `%s'\n" 4691msgid "Invalid public key for zone `%s'\n"
4705msgstr "" 4692msgstr ""
4706 4693
4707#: src/namecache/gnunet-namecache.c:199 4694#: src/namecache/gnunet-namecache.c:201
4708#, c-format 4695#, c-format
4709msgid "You must specify a name\n" 4696msgid "You must specify a name\n"
4710msgstr "È necessario specificare un nome\n" 4697msgstr "È necessario specificare un nome\n"
4711 4698
4712#: src/namecache/gnunet-namecache.c:230 src/namestore/gnunet-namestore.c:1290 4699#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
4713msgid "name of the record to add/delete/display" 4700msgid "name of the record to add/delete/display"
4714msgstr "" 4701msgstr ""
4715 4702
4716#: src/namecache/gnunet-namecache.c:236 4703#: src/namecache/gnunet-namecache.c:238
4717msgid "spezifies the public key of the zone to look in" 4704msgid "spezifies the public key of the zone to look in"
4718msgstr "" 4705msgstr ""
4719 4706
4720#: src/namecache/gnunet-namecache.c:248 src/namestore/gnunet-namestore.c:1342 4707#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
4721msgid "GNUnet zone manipulation tool" 4708msgid "GNUnet zone manipulation tool"
4722msgstr "" 4709msgstr ""
4723 4710
4724#: src/namecache/namecache_api.c:294 4711#: src/namecache/namecache_api.c:296
4725msgid "Namecache failed to cache block" 4712msgid "Namecache failed to cache block"
4726msgstr "" 4713msgstr ""
4727 4714
4728#: src/namecache/namecache_api.c:381 4715#: src/namecache/namecache_api.c:383
4729msgid "Error communicating with namecache service" 4716msgid "Error communicating with namecache service"
4730msgstr "" 4717msgstr ""
4731 4718
4732#: src/namecache/plugin_namecache_flat.c:119 4719#: src/namecache/plugin_namecache_flat.c:121
4733#: src/namecache/plugin_namecache_flat.c:253 4720#: src/namecache/plugin_namecache_flat.c:255
4734#: src/namestore/plugin_namestore_heap.c:146 4721#: src/namestore/plugin_namestore_heap.c:148
4735#: src/namestore/plugin_namestore_heap.c:393 4722#: src/namestore/plugin_namestore_heap.c:395
4736#: src/peerstore/plugin_peerstore_flat.c:377 4723#: src/peerstore/plugin_peerstore_flat.c:379
4737#: src/peerstore/plugin_peerstore_flat.c:536 4724#: src/peerstore/plugin_peerstore_flat.c:538
4738#, c-format 4725#, c-format
4739msgid "Unable to initialize file: %s.\n" 4726msgid "Unable to initialize file: %s.\n"
4740msgstr "" 4727msgstr ""
4741 4728
4742#: src/namecache/plugin_namecache_flat.c:130 4729#: src/namecache/plugin_namecache_flat.c:132
4743#: src/namestore/plugin_namestore_heap.c:157 4730#: src/namestore/plugin_namestore_heap.c:159
4744#: src/peerstore/plugin_peerstore_flat.c:392 4731#: src/peerstore/plugin_peerstore_flat.c:394
4745#, c-format 4732#, c-format
4746msgid "Unable to get filesize: %s.\n" 4733msgid "Unable to get filesize: %s.\n"
4747msgstr "" 4734msgstr ""
4748 4735
4749#: src/namecache/plugin_namecache_flat.c:149 4736#: src/namecache/plugin_namecache_flat.c:151
4750#: src/namestore/plugin_namestore_heap.c:170 4737#: src/namestore/plugin_namestore_heap.c:172
4751#: src/peerstore/plugin_peerstore_flat.c:404 4738#: src/peerstore/plugin_peerstore_flat.c:406
4752#, c-format 4739#, c-format
4753msgid "Unable to read file: %s.\n" 4740msgid "Unable to read file: %s.\n"
4754msgstr "" 4741msgstr ""
4755 4742
4756#: src/namecache/plugin_namecache_flat.c:408 4743#: src/namecache/plugin_namecache_flat.c:410
4757msgid "flat plugin running\n" 4744msgid "flat plugin running\n"
4758msgstr "" 4745msgstr ""
4759 4746
4760#: src/namestore/gnunet-namestore.c:311 4747#: src/namecache/plugin_namecache_sqlite.c:183
4748#: src/namecache/plugin_namecache_sqlite.c:197
4749#: src/namestore/plugin_namestore_sqlite.c:219
4750#: src/namestore/plugin_namestore_sqlite.c:230
4761#, c-format 4751#, c-format
4762msgid "Adding record failed: %s\n" 4752msgid "Failed to setup database at `%s'\n"
4763msgstr "" 4753msgstr ""
4764 4754
4765#: src/namestore/gnunet-namestore.c:341 4755#: src/namestore/gnunet-namestore.c:341
4766#, c-format 4756#, c-format
4757msgid "Adding record failed: %s\n"
4758msgstr ""
4759
4760#: src/namestore/gnunet-namestore.c:371
4761#, c-format
4767msgid "Deleting record failed, record does not exist%s%s\n" 4762msgid "Deleting record failed, record does not exist%s%s\n"
4768msgstr "" 4763msgstr ""
4769 4764
4770#: src/namestore/gnunet-namestore.c:348 4765#: src/namestore/gnunet-namestore.c:378
4771#, c-format 4766#, c-format
4772msgid "Deleting record failed%s%s\n" 4767msgid "Deleting record failed%s%s\n"
4773msgstr "" 4768msgstr ""
4774 4769
4775#: src/namestore/gnunet-namestore.c:628 src/namestore/gnunet-namestore.c:636 4770#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
4776#, c-format 4771#, c-format
4777msgid "A %s record exists already under `%s', no other records can be added.\n" 4772msgid "A %s record exists already under `%s', no other records can be added.\n"
4778msgstr "" 4773msgstr ""
4779 4774
4780#: src/namestore/gnunet-namestore.c:650 src/namestore/gnunet-namestore.c:662 4775#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
4781#, c-format 4776#, c-format
4782msgid "Records already exist under `%s', cannot add `%s' record.\n" 4777msgid "Records already exist under `%s', cannot add `%s' record.\n"
4783msgstr "" 4778msgstr ""
4784 4779
4785#: src/namestore/gnunet-namestore.c:675 4780#: src/namestore/gnunet-namestore.c:707
4786#, c-format 4781#, c-format
4787msgid "" 4782msgid ""
4788"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n" 4783"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
4789msgstr "" 4784msgstr ""
4790 4785
4791#: src/namestore/gnunet-namestore.c:809 4786#: src/namestore/gnunet-namestore.c:837
4792#, c-format 4787#, c-format
4793msgid "There are no records under label `%s' that could be deleted.\n" 4788msgid "There are no records under label `%s' that could be deleted.\n"
4794msgstr "" 4789msgstr ""
4795 4790
4796#: src/namestore/gnunet-namestore.c:850 4791#: src/namestore/gnunet-namestore.c:878
4797#, c-format 4792#, c-format
4798msgid "" 4793msgid ""
4799"There are no records under label `%s' that match the request for deletion.\n" 4794"There are no records under label `%s' that match the request for deletion.\n"
4800msgstr "" 4795msgstr ""
4801 4796
4802#: src/namestore/gnunet-namestore.c:902 4797#: src/namestore/gnunet-namestore.c:965
4798#, c-format
4799msgid "Failed to replace records: %s\n"
4800msgstr ""
4801
4802#: src/namestore/gnunet-namestore.c:1009
4803#, c-format 4803#, c-format
4804msgid "No options given\n" 4804msgid "No options given\n"
4805msgstr "" 4805msgstr ""
4806 4806
4807#: src/namestore/gnunet-namestore.c:921 src/namestore/gnunet-namestore.c:930 4807#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
4808#: src/namestore/gnunet-namestore.c:949 src/namestore/gnunet-namestore.c:972 4808#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
4809#: src/namestore/gnunet-namestore.c:1026 4809#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
4810#, c-format 4810#, c-format
4811msgid "Missing option `%s' for operation `%s'\n" 4811msgid "Missing option `%s' for operation `%s'\n"
4812msgstr "" 4812msgstr ""
4813 4813
4814#: src/namestore/gnunet-namestore.c:922 src/namestore/gnunet-namestore.c:931 4814#: src/namestore/gnunet-namestore.c:1033
4815#: src/namestore/gnunet-namestore.c:950 src/namestore/gnunet-namestore.c:974 4815msgid "replace"
4816msgstr ""
4817
4818#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
4819#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
4816msgid "add" 4820msgid "add"
4817msgstr "" 4821msgstr ""
4818 4822
4819#: src/namestore/gnunet-namestore.c:940 4823#: src/namestore/gnunet-namestore.c:1084
4820#, c-format 4824#, c-format
4821msgid "Unsupported type `%s'\n" 4825msgid "Unsupported type `%s'\n"
4822msgstr "" 4826msgstr ""
4823 4827
4824#: src/namestore/gnunet-namestore.c:962 4828#: src/namestore/gnunet-namestore.c:1106
4825#, c-format 4829#, c-format
4826msgid "Value `%s' invalid for record type `%s'\n" 4830msgid "Value `%s' invalid for record type `%s'\n"
4827msgstr "" 4831msgstr ""
4828 4832
4829#: src/namestore/gnunet-namestore.c:1007 4833#: src/namestore/gnunet-namestore.c:1129
4830#, c-format 4834#, c-format
4831msgid "Invalid time format `%s'\n" 4835msgid "Invalid time format `%s'\n"
4832msgstr "" 4836msgstr ""
4833 4837
4834#: src/namestore/gnunet-namestore.c:1027 4838#: src/namestore/gnunet-namestore.c:1149
4835msgid "del" 4839msgid "del"
4836msgstr "" 4840msgstr ""
4837 4841
4838#: src/namestore/gnunet-namestore.c:1070 4842#: src/namestore/gnunet-namestore.c:1192
4839#, c-format 4843#, c-format
4840msgid "Invalid public key for reverse lookup `%s'\n" 4844msgid "Invalid public key for reverse lookup `%s'\n"
4841msgstr "" 4845msgstr ""
4842 4846
4843#: src/namestore/gnunet-namestore.c:1099 4847#: src/namestore/gnunet-namestore.c:1221
4844#: src/peerinfo-tool/gnunet-peerinfo.c:773 4848#: src/peerinfo-tool/gnunet-peerinfo.c:775
4845#, c-format 4849#, c-format
4846msgid "Invalid URI `%s'\n" 4850msgid "Invalid URI `%s'\n"
4847msgstr "" 4851msgstr ""
4848 4852
4849#: src/namestore/gnunet-namestore.c:1134 4853#: src/namestore/gnunet-namestore.c:1249
4850#, c-format 4854#, c-format
4851msgid "Invalid nick `%s'\n" 4855msgid "Invalid nick `%s'\n"
4852msgstr "" 4856msgstr ""
4853 4857
4854#: src/namestore/gnunet-namestore.c:1174 4858#: src/namestore/gnunet-namestore.c:1289
4855#, c-format 4859#, c-format
4856msgid "No default ego configured in identity service\n" 4860msgid "No default ego configured in identity service\n"
4857msgstr "" 4861msgstr ""
4858 4862
4859#: src/namestore/gnunet-namestore.c:1238 4863#: src/namestore/gnunet-namestore.c:1341
4864#, c-format
4865msgid "Superfluous command line arguments (starting with `%s') ignored\n"
4866msgstr ""
4867
4868#: src/namestore/gnunet-namestore.c:1357
4860#, c-format 4869#, c-format
4861msgid "Cannot connect to identity service\n" 4870msgid "Cannot connect to identity service\n"
4862msgstr "" 4871msgstr ""
4863 4872
4864#: src/namestore/gnunet-namestore.c:1263 4873#: src/namestore/gnunet-namestore.c:1407
4874msgid "Empty record line argument is not allowed.\n"
4875msgstr ""
4876
4877#: src/namestore/gnunet-namestore.c:1423
4878#, c-format
4879msgid "Invalid expiration time `%s' (must be without unit)\n"
4880msgstr ""
4881
4882#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
4883#: src/namestore/gnunet-namestore.c:1470
4884#, c-format
4885msgid "Missing entries in record line `%s'.\n"
4886msgstr ""
4887
4888#: src/namestore/gnunet-namestore.c:1444
4889#, fuzzy, c-format
4890msgid "Unknown record type `%s'\n"
4891msgstr "Comando `%s' sconosciuto.\n"
4892
4893#: src/namestore/gnunet-namestore.c:1484
4894#, c-format
4895msgid "Invalid record data for type %s: `%s'.\n"
4896msgstr ""
4897
4898#: src/namestore/gnunet-namestore.c:1548
4865msgid "add record" 4899msgid "add record"
4866msgstr "" 4900msgstr ""
4867 4901
4868#: src/namestore/gnunet-namestore.c:1267 4902#: src/namestore/gnunet-namestore.c:1552
4869msgid "delete record" 4903msgid "delete record"
4870msgstr "" 4904msgstr ""
4871 4905
4872#: src/namestore/gnunet-namestore.c:1271 4906#: src/namestore/gnunet-namestore.c:1556
4873msgid "display records" 4907msgid "display records"
4874msgstr "" 4908msgstr ""
4875 4909
4876#: src/namestore/gnunet-namestore.c:1276 4910#: src/namestore/gnunet-namestore.c:1561
4877msgid "" 4911msgid ""
4878"expiration time for record to use (for adding only), \"never\" is possible" 4912"expiration time for record to use (for adding only), \"never\" is possible"
4879msgstr "" 4913msgstr ""
4880 4914
4881#: src/namestore/gnunet-namestore.c:1281 4915#: src/namestore/gnunet-namestore.c:1566
4882msgid "set the desired nick name for the zone" 4916msgid "set the desired nick name for the zone"
4883msgstr "" 4917msgstr ""
4884 4918
4885#: src/namestore/gnunet-namestore.c:1285 4919#: src/namestore/gnunet-namestore.c:1570
4886msgid "monitor changes in the namestore" 4920msgid "monitor changes in the namestore"
4887msgstr "" 4921msgstr ""
4888 4922
4889#: src/namestore/gnunet-namestore.c:1295 4923#: src/namestore/gnunet-namestore.c:1580
4890msgid "determine our name for the given PKEY" 4924msgid "determine our name for the given PKEY"
4891msgstr "" 4925msgstr ""
4892 4926
4893#: src/namestore/gnunet-namestore.c:1300 4927#: src/namestore/gnunet-namestore.c:1585
4928msgid ""
4929"set record set to values given by (possibly multiple) RECORDLINES; can be "
4930"specified multiple times"
4931msgstr ""
4932
4933#: src/namestore/gnunet-namestore.c:1590
4894msgid "type of the record to add/delete/display" 4934msgid "type of the record to add/delete/display"
4895msgstr "" 4935msgstr ""
4896 4936
4897#: src/namestore/gnunet-namestore.c:1305 4937#: src/namestore/gnunet-namestore.c:1595
4898msgid "URI to import into our zone" 4938msgid "URI to import into our zone"
4899msgstr "" 4939msgstr ""
4900 4940
4901#: src/namestore/gnunet-namestore.c:1310 4941#: src/namestore/gnunet-namestore.c:1600
4902msgid "value of the record to add/delete" 4942msgid "value of the record to add/delete"
4903msgstr "" 4943msgstr ""
4904 4944
4905#: src/namestore/gnunet-namestore.c:1314 4945#: src/namestore/gnunet-namestore.c:1604
4906msgid "create or list public record" 4946msgid "create or list public record"
4907msgstr "" 4947msgstr ""
4908 4948
4909#: src/namestore/gnunet-namestore.c:1318 4949#: src/namestore/gnunet-namestore.c:1608
4910msgid "" 4950msgid ""
4911"create shadow record (only valid if all other records of the same type have " 4951"create shadow record (only valid if all other records of the same type have "
4912"expired" 4952"expired"
4913msgstr "" 4953msgstr ""
4914 4954
4915#: src/namestore/gnunet-namestore.c:1323 4955#: src/namestore/gnunet-namestore.c:1613
4916msgid "name of the ego controlling the zone" 4956msgid "name of the ego controlling the zone"
4917msgstr "" 4957msgstr ""
4918 4958
4919#: src/namestore/gnunet-namestore-fcfsd.c:547 4959#: src/namestore/gnunet-namestore-fcfsd.c:549
4920#, c-format 4960#, c-format
4921msgid "Unsupported form value `%s'\n" 4961msgid "Unsupported form value `%s'\n"
4922msgstr "" 4962msgstr ""
4923 4963
4924#: src/namestore/gnunet-namestore-fcfsd.c:574 4964#: src/namestore/gnunet-namestore-fcfsd.c:576
4925#, c-format 4965#, c-format
4926msgid "Failed to create record for domain `%s': %s\n" 4966msgid "Failed to create record for domain `%s': %s\n"
4927msgstr "" 4967msgstr ""
4928 4968
4929#: src/namestore/gnunet-namestore-fcfsd.c:595 4969#: src/namestore/gnunet-namestore-fcfsd.c:597
4930msgid "Error when mapping zone to name\n" 4970msgid "Error when mapping zone to name\n"
4931msgstr "" 4971msgstr ""
4932 4972
4933#: src/namestore/gnunet-namestore-fcfsd.c:627 4973#: src/namestore/gnunet-namestore-fcfsd.c:629
4934#, c-format 4974#, c-format
4935msgid "Found existing name `%s' for the given key\n" 4975msgid "Found existing name `%s' for the given key\n"
4936msgstr "" 4976msgstr ""
4937 4977
4938#: src/namestore/gnunet-namestore-fcfsd.c:687 4978#: src/namestore/gnunet-namestore-fcfsd.c:689
4939#, c-format 4979#, c-format
4940msgid "Found %u existing records for domain `%s'\n" 4980msgid "Found %u existing records for domain `%s'\n"
4941msgstr "" 4981msgstr ""
4942 4982
4943#: src/namestore/gnunet-namestore-fcfsd.c:775 4983#: src/namestore/gnunet-namestore-fcfsd.c:777
4944#, c-format 4984#, c-format
4945msgid "Failed to create page for `%s'\n" 4985msgid "Failed to create page for `%s'\n"
4946msgstr "" 4986msgstr ""
4947 4987
4948#: src/namestore/gnunet-namestore-fcfsd.c:794 4988#: src/namestore/gnunet-namestore-fcfsd.c:796
4949#, c-format 4989#, c-format
4950msgid "Failed to setup post processor for `%s'\n" 4990msgid "Failed to setup post processor for `%s'\n"
4951msgstr "" 4991msgstr ""
4952 4992
4953#: src/namestore/gnunet-namestore-fcfsd.c:830 4993#: src/namestore/gnunet-namestore-fcfsd.c:832
4954msgid "Domain name must not contain `.'\n" 4994msgid "Domain name must not contain `.'\n"
4955msgstr "" 4995msgstr ""
4956 4996
4957#: src/namestore/gnunet-namestore-fcfsd.c:839 4997#: src/namestore/gnunet-namestore-fcfsd.c:841
4958msgid "Domain name must not contain `+'\n" 4998msgid "Domain name must not contain `+'\n"
4959msgstr "" 4999msgstr ""
4960 5000
4961#: src/namestore/gnunet-namestore-fcfsd.c:1069 5001#: src/namestore/gnunet-namestore-fcfsd.c:1071
4962msgid "No ego configured for `fcfsd` subsystem\n" 5002msgid "No ego configured for `fcfsd` subsystem\n"
4963msgstr "" 5003msgstr ""
4964 5004
4965#: src/namestore/gnunet-namestore-fcfsd.c:1097 5005#: src/namestore/gnunet-namestore-fcfsd.c:1099
4966msgid "Failed to start HTTP server\n" 5006msgid "Failed to start HTTP server\n"
4967msgstr "" 5007msgstr ""
4968 5008
4969#: src/namestore/gnunet-namestore-fcfsd.c:1145 5009#: src/namestore/gnunet-namestore-fcfsd.c:1147
4970msgid "Failed to connect to identity\n" 5010msgid "Failed to connect to identity\n"
4971msgstr "" 5011msgstr ""
4972 5012
4973#: src/namestore/gnunet-namestore-fcfsd.c:1171 5013#: src/namestore/gnunet-namestore-fcfsd.c:1173
4974msgid "name of the zone that is to be managed by FCFSD" 5014msgid "name of the zone that is to be managed by FCFSD"
4975msgstr "" 5015msgstr ""
4976 5016
4977#: src/namestore/gnunet-namestore-fcfsd.c:1190 5017#: src/namestore/gnunet-namestore-fcfsd.c:1192
4978msgid "GNU Name System First Come First Serve name registration service" 5018msgid "GNU Name System First Come First Serve name registration service"
4979msgstr "" 5019msgstr ""
4980 5020
4981#: src/namestore/gnunet-service-namestore.c:749 5021#: src/namestore/gnunet-service-namestore.c:900
4982#, c-format 5022#, c-format
4983msgid "Failed to replicate block in namecache: %s\n" 5023msgid "Failed to replicate block in namecache: %s\n"
4984msgstr "" 5024msgstr ""
4985 5025
4986#: src/namestore/gnunet-zoneimport.c:2036 5026#: src/namestore/gnunet-zoneimport.c:2038
4987msgid "size to use for the main hash map" 5027msgid "size to use for the main hash map"
4988msgstr "" 5028msgstr ""
4989 5029
4990#: src/namestore/gnunet-zoneimport.c:2041 5030#: src/namestore/gnunet-zoneimport.c:2043
4991msgid "minimum expiration time we assume for imported records" 5031msgid "minimum expiration time we assume for imported records"
4992msgstr "" 5032msgstr ""
4993 5033
4994#: src/namestore/namestore_api.c:389 5034#: src/namestore/namestore_api.c:391
4995msgid "Namestore failed to store record\n" 5035msgid "Namestore failed to store record\n"
4996msgstr "" 5036msgstr ""
4997 5037
4998#: src/namestore/plugin_namestore_heap.c:776 5038#: src/namestore/plugin_namestore_heap.c:778
4999msgid "heap file database running\n" 5039msgid "heap file database running\n"
5000msgstr "" 5040msgstr ""
5001 5041
5002#: src/namestore/plugin_namestore_sqlite.c:216 5042#: src/nat-auto/gnunet-nat-auto.c:193
5003#: src/namestore/plugin_namestore_sqlite.c:227
5004#, c-format
5005msgid "Failed to setup database at `%s'\n"
5006msgstr ""
5007
5008#: src/nat-auto/gnunet-nat-auto.c:191
5009msgid "Suggested configuration changes:\n" 5043msgid "Suggested configuration changes:\n"
5010msgstr "" 5044msgstr ""
5011 5045
5012#: src/nat-auto/gnunet-nat-auto.c:217 5046#: src/nat-auto/gnunet-nat-auto.c:219
5013#, c-format 5047#, c-format
5014msgid "Failed to write configuration to `%s'\n" 5048msgid "Failed to write configuration to `%s'\n"
5015msgstr "" 5049msgstr ""
5016 5050
5017#: src/nat-auto/gnunet-nat-auto.c:224 5051#: src/nat-auto/gnunet-nat-auto.c:226
5018#, c-format 5052#, c-format
5019msgid "Wrote updated configuration to `%s'\n" 5053msgid "Wrote updated configuration to `%s'\n"
5020msgstr "" 5054msgstr ""
5021 5055
5022#: src/nat-auto/gnunet-nat-auto.c:343 5056#: src/nat-auto/gnunet-nat-auto.c:345
5023msgid "run autoconfiguration" 5057msgid "run autoconfiguration"
5024msgstr "" 5058msgstr ""
5025 5059
5026#: src/nat-auto/gnunet-nat-auto.c:349 5060#: src/nat-auto/gnunet-nat-auto.c:351
5027msgid "section name providing the configuration for the adapter" 5061msgid "section name providing the configuration for the adapter"
5028msgstr "" 5062msgstr ""
5029 5063
5030#: src/nat-auto/gnunet-nat-auto.c:354 src/nat/gnunet-nat.c:451 5064#: src/nat-auto/gnunet-nat-auto.c:356 src/nat/gnunet-nat.c:459
5031msgid "use TCP" 5065msgid "use TCP"
5032msgstr "" 5066msgstr ""
5033 5067
5034#: src/nat-auto/gnunet-nat-auto.c:359 src/nat/gnunet-nat.c:456 5068#: src/nat-auto/gnunet-nat-auto.c:361 src/nat/gnunet-nat.c:464
5035msgid "use UDP" 5069msgid "use UDP"
5036msgstr "" 5070msgstr ""
5037 5071
5038#: src/nat-auto/gnunet-nat-auto.c:364 5072#: src/nat-auto/gnunet-nat-auto.c:366
5039msgid "write configuration file (for autoconfiguration)" 5073msgid "write configuration file (for autoconfiguration)"
5040msgstr "" 5074msgstr ""
5041 5075
5042#: src/nat-auto/gnunet-nat-auto.c:376 5076#: src/nat-auto/gnunet-nat-auto.c:378
5043msgid "GNUnet NAT traversal autoconfiguration" 5077msgid "GNUnet NAT traversal autoconfiguration"
5044msgstr "" 5078msgstr ""
5045 5079
5046#: src/nat-auto/gnunet-nat-auto_legacy.c:401 5080#: src/nat-auto/gnunet-nat-auto_legacy.c:403
5047#: src/nat-auto/gnunet-service-nat-auto_legacy.c:679 5081#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
5048#: src/nat-auto/nat_auto_api_test.c:403 5082#: src/nat-auto/nat_auto_api_test.c:409
5049msgid "Failed to connect to `gnunet-nat-server'\n" 5083msgid "Failed to connect to `gnunet-nat-server'\n"
5050msgstr "" 5084msgstr ""
5051 5085
5052#: src/nat-auto/gnunet-nat-auto_legacy.c:516 5086#: src/nat-auto/gnunet-nat-auto_legacy.c:518
5053#, c-format 5087#, c-format
5054msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n" 5088msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
5055msgstr "" 5089msgstr ""
5056 5090
5057#: src/nat-auto/gnunet-nat-auto_legacy.c:566 5091#: src/nat-auto/gnunet-nat-auto_legacy.c:568
5058#: src/nat-auto/nat_auto_api_test.c:569 5092#: src/nat-auto/nat_auto_api_test.c:575
5059msgid "NAT test failed to start NAT library\n" 5093msgid "NAT test failed to start NAT library\n"
5060msgstr "" 5094msgstr ""
5061 5095
5062#: src/nat-auto/gnunet-service-nat-auto.c:340 5096#: src/nat-auto/gnunet-service-nat-auto.c:342
5063msgid "UPnP client `upnpc` command not found, disabling UPnP\n" 5097msgid "UPnP client `upnpc` command not found, disabling UPnP\n"
5064msgstr "" 5098msgstr ""
5065 5099
5066#: src/nat-auto/gnunet-service-nat-auto_legacy.c:383 5100#: src/nat-auto/gnunet-service-nat-auto_legacy.c:385
5067msgid "NAT traversal with ICMP Server succeeded.\n" 5101msgid "NAT traversal with ICMP Server succeeded.\n"
5068msgstr "" 5102msgstr ""
5069 5103
5070#: src/nat-auto/gnunet-service-nat-auto_legacy.c:384 5104#: src/nat-auto/gnunet-service-nat-auto_legacy.c:386
5071msgid "NAT traversal with ICMP Server failed.\n" 5105msgid "NAT traversal with ICMP Server failed.\n"
5072msgstr "" 5106msgstr ""
5073 5107
5074#: src/nat-auto/gnunet-service-nat-auto_legacy.c:403 5108#: src/nat-auto/gnunet-service-nat-auto_legacy.c:405
5075msgid "Testing connection reversal with ICMP server.\n" 5109msgid "Testing connection reversal with ICMP server.\n"
5076msgstr "" 5110msgstr ""
5077 5111
5078#: src/nat-auto/gnunet-service-nat-auto_legacy.c:435 5112#: src/nat-auto/gnunet-service-nat-auto_legacy.c:437
5079#, c-format 5113#, c-format
5080msgid "Detected external IP `%s'\n" 5114msgid "Detected external IP `%s'\n"
5081msgstr "" 5115msgstr ""
5082 5116
5083#: src/nat-auto/gnunet-service-nat-auto_legacy.c:570 5117#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
5084msgid "This system has a global IPv6 address, setting IPv6 to supported.\n" 5118msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
5085msgstr "" 5119msgstr ""
5086 5120
5087#: src/nat-auto/gnunet-service-nat-auto_legacy.c:588 5121#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
5088#, c-format 5122#, c-format
5089msgid "Detected internal network address `%s'.\n" 5123msgid "Detected internal network address `%s'.\n"
5090msgstr "" 5124msgstr ""
5091 5125
5092#: src/nat-auto/gnunet-service-nat-auto_legacy.c:722 5126#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
5093msgid "upnpc found, enabling its use\n" 5127msgid "upnpc found, enabling its use\n"
5094msgstr "" 5128msgstr ""
5095 5129
5096#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723 5130#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
5097msgid "upnpc not found\n" 5131msgid "upnpc not found\n"
5098msgstr "" 5132msgstr ""
5099 5133
5100#: src/nat-auto/gnunet-service-nat-auto_legacy.c:760 5134#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
5101msgid "test_icmp_server not possible, as we have no public IPv4 address\n" 5135msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
5102msgstr "" 5136msgstr ""
5103 5137
5104#: src/nat-auto/gnunet-service-nat-auto_legacy.c:772 5138#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
5105#: src/nat-auto/gnunet-service-nat-auto_legacy.c:832 5139#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
5106msgid "test_icmp_server not possible, as we are not behind NAT\n" 5140msgid "test_icmp_server not possible, as we are not behind NAT\n"
5107msgstr "" 5141msgstr ""
5108 5142
5109#: src/nat-auto/gnunet-service-nat-auto_legacy.c:784 5143#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
5110#: src/nat-auto/gnunet-service-nat-auto_legacy.c:844 5144#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
5111msgid "No working gnunet-helper-nat-server found\n" 5145msgid "No working gnunet-helper-nat-server found\n"
5112msgstr "" 5146msgstr ""
5113 5147
5114#: src/nat-auto/gnunet-service-nat-auto_legacy.c:821 5148#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
5115msgid "test_icmp_client not possible, as we have no internal IPv4 address\n" 5149msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
5116msgstr "" 5150msgstr ""
5117 5151
5118#: src/nat-auto/nat_auto_api.c:74 5152#: src/nat-auto/nat_auto_api.c:76
5119msgid "Operation Successful" 5153msgid "Operation Successful"
5120msgstr "" 5154msgstr ""
5121 5155
5122#: src/nat-auto/nat_auto_api.c:76 5156#: src/nat-auto/nat_auto_api.c:78
5123msgid "IPC failure" 5157msgid "IPC failure"
5124msgstr "" 5158msgstr ""
5125 5159
5126#: src/nat-auto/nat_auto_api.c:78 5160#: src/nat-auto/nat_auto_api.c:80
5127msgid "Failure in network subsystem, check permissions." 5161msgid "Failure in network subsystem, check permissions."
5128msgstr "" 5162msgstr ""
5129 5163
5130#: src/nat-auto/nat_auto_api.c:80 5164#: src/nat-auto/nat_auto_api.c:82
5131msgid "Encountered timeout while performing operation" 5165msgid "Encountered timeout while performing operation"
5132msgstr "" 5166msgstr ""
5133 5167
5134#: src/nat-auto/nat_auto_api.c:82 5168#: src/nat-auto/nat_auto_api.c:84
5135msgid "detected that we are offline" 5169msgid "detected that we are offline"
5136msgstr "" 5170msgstr ""
5137 5171
5138#: src/nat-auto/nat_auto_api.c:84 5172#: src/nat-auto/nat_auto_api.c:86
5139msgid "`upnpc` command not found" 5173msgid "`upnpc` command not found"
5140msgstr "" 5174msgstr ""
5141 5175
5142#: src/nat-auto/nat_auto_api.c:86 5176#: src/nat-auto/nat_auto_api.c:88
5143msgid "Failed to run `upnpc` command" 5177msgid "Failed to run `upnpc` command"
5144msgstr "" 5178msgstr ""
5145 5179
5146#: src/nat-auto/nat_auto_api.c:88 5180#: src/nat-auto/nat_auto_api.c:90
5147msgid "`upnpc' command took too long, process killed" 5181msgid "`upnpc' command took too long, process killed"
5148msgstr "" 5182msgstr ""
5149 5183
5150#: src/nat-auto/nat_auto_api.c:90 5184#: src/nat-auto/nat_auto_api.c:92
5151msgid "`upnpc' command failed to establish port mapping" 5185msgid "`upnpc' command failed to establish port mapping"
5152msgstr "" 5186msgstr ""
5153 5187
5154#: src/nat-auto/nat_auto_api.c:92 5188#: src/nat-auto/nat_auto_api.c:94
5155msgid "`external-ip' command not found" 5189msgid "`external-ip' command not found"
5156msgstr "" 5190msgstr ""
5157 5191
5158#: src/nat-auto/nat_auto_api.c:94 5192#: src/nat-auto/nat_auto_api.c:96
5159msgid "Failed to run `external-ip` command" 5193msgid "Failed to run `external-ip` command"
5160msgstr "" 5194msgstr ""
5161 5195
5162#: src/nat-auto/nat_auto_api.c:96 5196#: src/nat-auto/nat_auto_api.c:98
5163msgid "`external-ip' command output invalid" 5197msgid "`external-ip' command output invalid"
5164msgstr "" 5198msgstr ""
5165 5199
5166#: src/nat-auto/nat_auto_api.c:98 5200#: src/nat-auto/nat_auto_api.c:100
5167msgid "no valid address was returned by `external-ip'" 5201msgid "no valid address was returned by `external-ip'"
5168msgstr "" 5202msgstr ""
5169 5203
5170#: src/nat-auto/nat_auto_api.c:100 5204#: src/nat-auto/nat_auto_api.c:102
5171msgid "Could not determine interface with internal/local network address" 5205msgid "Could not determine interface with internal/local network address"
5172msgstr "" 5206msgstr ""
5173 5207
5174#: src/nat-auto/nat_auto_api.c:102 5208#: src/nat-auto/nat_auto_api.c:104
5175msgid "No functioning gnunet-helper-nat-server installation found" 5209msgid "No functioning gnunet-helper-nat-server installation found"
5176msgstr "" 5210msgstr ""
5177 5211
5178#: src/nat-auto/nat_auto_api.c:104 5212#: src/nat-auto/nat_auto_api.c:106
5179msgid "NAT test could not be initialized" 5213msgid "NAT test could not be initialized"
5180msgstr "" 5214msgstr ""
5181 5215
5182#: src/nat-auto/nat_auto_api.c:106 5216#: src/nat-auto/nat_auto_api.c:108
5183msgid "NAT test timeout reached" 5217msgid "NAT test timeout reached"
5184msgstr "" 5218msgstr ""
5185 5219
5186#: src/nat-auto/nat_auto_api.c:108 5220#: src/nat-auto/nat_auto_api.c:110
5187msgid "could not register NAT" 5221msgid "could not register NAT"
5188msgstr "" 5222msgstr ""
5189 5223
5190#: src/nat-auto/nat_auto_api.c:110 5224#: src/nat-auto/nat_auto_api.c:112
5191msgid "No working gnunet-helper-nat-client installation found" 5225msgid "No working gnunet-helper-nat-client installation found"
5192msgstr "" 5226msgstr ""
5193 5227
5194#: src/nat-auto/nat_auto_api_test.c:475 5228#: src/nat-auto/nat_auto_api_test.c:481
5195#, c-format 5229#, c-format
5196msgid "Failed to find valid PORT in section `%s'\n" 5230msgid "Failed to find valid PORT in section `%s'\n"
5197msgstr "" 5231msgstr ""
5198 5232
5199#: src/nat-auto/nat_auto_api_test.c:520 5233#: src/nat-auto/nat_auto_api_test.c:526
5200#, c-format 5234#, c-format
5201msgid "Failed to create socket bound to `%s' for NAT test: %s\n" 5235msgid "Failed to create socket bound to `%s' for NAT test: %s\n"
5202msgstr "" 5236msgstr ""
5203 5237
5204#: src/nat/gnunet-nat.c:429 5238#: src/nat/gnunet-nat.c:437
5205msgid "which IP and port are we locally using to bind/listen to" 5239msgid "which IP and port are we locally using to bind/listen to"
5206msgstr "" 5240msgstr ""
5207 5241
5208#: src/nat/gnunet-nat.c:435 5242#: src/nat/gnunet-nat.c:443
5209msgid "which remote IP and port should be asked for connection reversal" 5243msgid "which remote IP and port should be asked for connection reversal"
5210msgstr "" 5244msgstr ""
5211 5245
5212#: src/nat/gnunet-nat.c:441 5246#: src/nat/gnunet-nat.c:449
5213msgid "" 5247msgid ""
5214"name of configuration section to find additional options, such as manual " 5248"name of configuration section to find additional options, such as manual "
5215"host punching data" 5249"host punching data"
5216msgstr "" 5250msgstr ""
5217 5251
5218#: src/nat/gnunet-nat.c:446 5252#: src/nat/gnunet-nat.c:454
5219msgid "enable STUN processing" 5253msgid "enable STUN processing"
5220msgstr "" 5254msgstr ""
5221 5255
5222#: src/nat/gnunet-nat.c:461 5256#: src/nat/gnunet-nat.c:469
5223msgid "watch for connection reversal requests" 5257msgid "watch for connection reversal requests"
5224msgstr "" 5258msgstr ""
5225 5259
5226#: src/nat/gnunet-nat.c:473 5260#: src/nat/gnunet-nat.c:481
5227msgid "GNUnet NAT traversal autoconfigure daemon" 5261msgid "GNUnet NAT traversal autoconfigure daemon"
5228msgstr "" 5262msgstr ""
5229 5263
5230#: src/nat/gnunet-service-nat.c:1337 5264#: src/nat/gnunet-service-nat.c:1339
5231#, c-format 5265#, c-format
5232msgid "Malformed punched hole specification `%s' (lacks port)\n" 5266msgid "Malformed punched hole specification `%s' (lacks port)\n"
5233msgstr "" 5267msgstr ""
5234 5268
5235#: src/nat/gnunet-service-nat.c:1347 5269#: src/nat/gnunet-service-nat.c:1349
5236#, c-format 5270#, c-format
5237msgid "Invalid port number in punched hole specification `%s' (lacks port)\n" 5271msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
5238msgstr "" 5272msgstr ""
5239 5273
5240#: src/nat/gnunet-service-nat.c:1363 5274#: src/nat/gnunet-service-nat.c:1365
5241#, c-format 5275#, c-format
5242msgid "Malformed punched hole specification `%s' (lacks `]')\n" 5276msgid "Malformed punched hole specification `%s' (lacks `]')\n"
5243msgstr "" 5277msgstr ""
5244 5278
5245#: src/nat/gnunet-service-nat.c:1374 5279#: src/nat/gnunet-service-nat.c:1376
5246#, c-format 5280#, c-format
5247msgid "Malformed punched hole specification `%s' (IPv6 address invalid)" 5281msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
5248msgstr "" 5282msgstr ""
5249 5283
5250#: src/nat/gnunet-service-nat.c:1839 5284#: src/nat/gnunet-service-nat.c:1841
5251msgid "Connection reversal request failed\n" 5285msgid "Connection reversal request failed\n"
5252msgstr "" 5286msgstr ""
5253 5287
5254#: src/nat/gnunet-service-nat.c:1912 5288#: src/nat/gnunet-service-nat.c:1914
5255msgid "" 5289msgid ""
5256"UPnP enabled in configuration, but UPnP client `upnpc` command not found, " 5290"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
5257"disabling UPnP\n" 5291"disabling UPnP\n"
5258msgstr "" 5292msgstr ""
5259 5293
5260#: src/nat/gnunet-service-nat_helper.c:184 5294#: src/nat/gnunet-service-nat_helper.c:186
5261#, c-format 5295#, c-format
5262msgid "gnunet-helper-nat-server generated malformed address `%s'\n" 5296msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
5263msgstr "" 5297msgstr ""
5264 5298
5265#: src/nat/gnunet-service-nat_helper.c:271 5299#: src/nat/gnunet-service-nat_helper.c:273
5266#, c-format 5300#, c-format
5267msgid "Failed to start %s\n" 5301msgid "Failed to start %s\n"
5268msgstr "" 5302msgstr ""
5269 5303
5270#: src/nat/gnunet-service-nat_mini.c:194 5304#: src/nat/gnunet-service-nat_mini.c:196
5271msgid "`external-ip' command not found\n" 5305msgid "`external-ip' command not found\n"
5272msgstr "" 5306msgstr ""
5273 5307
5274#: src/nat/gnunet-service-nat_mini.c:654 5308#: src/nat/gnunet-service-nat_mini.c:656
5275msgid "`upnpc' command not found\n" 5309msgid "`upnpc' command not found\n"
5276msgstr "" 5310msgstr ""
5277 5311
5278#: src/nse/gnunet-nse.c:120 5312#: src/nse/gnunet-nse.c:122
5279msgid "Show network size estimates from NSE service." 5313msgid "Show network size estimates from NSE service."
5280msgstr "" 5314msgstr ""
5281 5315
5282#: src/nse/gnunet-nse-profiler.c:847 5316#: src/nse/gnunet-nse-profiler.c:849
5283msgid "limit to the number of connections to NSE services, 0 for none" 5317msgid "limit to the number of connections to NSE services, 0 for none"
5284msgstr "" 5318msgstr ""
5285 5319
5286#: src/nse/gnunet-nse-profiler.c:852 5320#: src/nse/gnunet-nse-profiler.c:854
5287msgid "name of the file for writing connection information and statistics" 5321msgid "name of the file for writing connection information and statistics"
5288msgstr "" 5322msgstr ""
5289 5323
5290#: src/nse/gnunet-nse-profiler.c:864 5324#: src/nse/gnunet-nse-profiler.c:866
5291msgid "name of the file for writing the main results" 5325msgid "name of the file for writing the main results"
5292msgstr "" 5326msgstr ""
5293 5327
5294#: src/nse/gnunet-nse-profiler.c:871 5328#: src/nse/gnunet-nse-profiler.c:873
5295msgid "Number of peers to run in each round, separated by commas" 5329msgid "Number of peers to run in each round, separated by commas"
5296msgstr "" 5330msgstr ""
5297 5331
5298#: src/nse/gnunet-nse-profiler.c:882 5332#: src/nse/gnunet-nse-profiler.c:884
5299msgid "delay between rounds" 5333msgid "delay between rounds"
5300msgstr "" 5334msgstr ""
5301 5335
5302#: src/nse/gnunet-nse-profiler.c:891 5336#: src/nse/gnunet-nse-profiler.c:893
5303msgid "Measure quality and performance of the NSE service." 5337msgid "Measure quality and performance of the NSE service."
5304msgstr "" 5338msgstr ""
5305 5339
5306#: src/nse/gnunet-service-nse.c:1532 5340#: src/nse/gnunet-service-nse.c:1534
5307#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:274 5341#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
5308msgid "Value is too large.\n" 5342msgid "Value is too large.\n"
5309msgstr "" 5343msgstr ""
5310 5344
5311#: src/peerinfo/gnunet-service-peerinfo.c:176 5345#: src/peerinfo/gnunet-service-peerinfo.c:178
5312#, c-format 5346#, c-format
5313msgid "Removing expired address of transport `%s'\n" 5347msgid "Removing expired address of transport `%s'\n"
5314msgstr "" 5348msgstr ""
5315 5349
5316#: src/peerinfo/gnunet-service-peerinfo.c:311 5350#: src/peerinfo/gnunet-service-peerinfo.c:313
5317#, c-format 5351#, c-format
5318msgid "Failed to parse HELLO in file `%s': %s\n" 5352msgid "Failed to parse HELLO in file `%s': %s\n"
5319msgstr "" 5353msgstr ""
5320 5354
5321#: src/peerinfo/gnunet-service-peerinfo.c:332 5355#: src/peerinfo/gnunet-service-peerinfo.c:334
5322#: src/peerinfo/gnunet-service-peerinfo.c:363 5356#: src/peerinfo/gnunet-service-peerinfo.c:365
5323#, c-format 5357#, c-format
5324msgid "Failed to parse HELLO in file `%s'\n" 5358msgid "Failed to parse HELLO in file `%s'\n"
5325msgstr "" 5359msgstr ""
5326 5360
5327#: src/peerinfo/gnunet-service-peerinfo.c:447 5361#: src/peerinfo/gnunet-service-peerinfo.c:449
5328msgid "# peers known" 5362msgid "# peers known"
5329msgstr "# peer conosciuti" 5363msgstr "# peer conosciuti"
5330 5364
5331#: src/peerinfo/gnunet-service-peerinfo.c:490 5365#: src/peerinfo/gnunet-service-peerinfo.c:492
5332#, c-format 5366#, c-format
5333msgid "" 5367msgid ""
5334"File `%s' in directory `%s' does not match naming convention. Removed.\n" 5368"File `%s' in directory `%s' does not match naming convention. Removed.\n"
5335msgstr "" 5369msgstr ""
5336 5370
5337#: src/peerinfo/gnunet-service-peerinfo.c:657 5371#: src/peerinfo/gnunet-service-peerinfo.c:659
5338#, c-format 5372#, c-format
5339msgid "Scanning directory `%s'\n" 5373msgid "Scanning directory `%s'\n"
5340msgstr "" 5374msgstr ""
5341 5375
5342#: src/peerinfo/gnunet-service-peerinfo.c:665 5376#: src/peerinfo/gnunet-service-peerinfo.c:667
5343#, c-format 5377#, c-format
5344msgid "Still no peers found in `%s'!\n" 5378msgid "Still no peers found in `%s'!\n"
5345msgstr "" 5379msgstr ""
5346 5380
5347#: src/peerinfo/gnunet-service-peerinfo.c:1098 5381#: src/peerinfo/gnunet-service-peerinfo.c:1100
5348#, c-format 5382#, c-format
5349msgid "Cleaning up directory `%s'\n" 5383msgid "Cleaning up directory `%s'\n"
5350msgstr "" 5384msgstr ""
5351 5385
5352#: src/peerinfo/gnunet-service-peerinfo.c:1436 5386#: src/peerinfo/gnunet-service-peerinfo.c:1438
5353#, c-format 5387#, c-format
5354msgid "Importing HELLOs from `%s'\n" 5388msgid "Importing HELLOs from `%s'\n"
5355msgstr "" 5389msgstr ""
5356 5390
5357#: src/peerinfo/gnunet-service-peerinfo.c:1449 5391#: src/peerinfo/gnunet-service-peerinfo.c:1451
5358msgid "Skipping import of included HELLOs\n" 5392msgid "Skipping import of included HELLOs\n"
5359msgstr "" 5393msgstr ""
5360 5394
5361#: src/peerinfo/peerinfo_api.c:218 5395#: src/peerinfo/peerinfo_api.c:220
5362msgid "Failed to receive response from `PEERINFO' service." 5396msgid "Failed to receive response from `PEERINFO' service."
5363msgstr "" 5397msgstr ""
5364 5398
5365#: src/peerinfo-tool/gnunet-peerinfo.c:237 5399#: src/peerinfo-tool/gnunet-peerinfo.c:239
5366#, c-format 5400#, c-format
5367msgid "%sPeer `%s'\n" 5401msgid "%sPeer `%s'\n"
5368msgstr "" 5402msgstr ""
5369 5403
5370#: src/peerinfo-tool/gnunet-peerinfo.c:244 5404#: src/peerinfo-tool/gnunet-peerinfo.c:246
5371#, c-format 5405#, c-format
5372msgid "\tExpires: %s \t %s\n" 5406msgid "\tExpires: %s \t %s\n"
5373msgstr "" 5407msgstr ""
5374 5408
5375#: src/peerinfo-tool/gnunet-peerinfo.c:297 5409#: src/peerinfo-tool/gnunet-peerinfo.c:299
5376#: src/rest-plugins/plugin_rest_peerinfo.c:499 5410#: src/rest-plugins/plugin_rest_peerinfo.c:501
5377#, c-format 5411#, c-format
5378msgid "Failure: Cannot convert address to string for peer `%s'\n" 5412msgid "Failure: Cannot convert address to string for peer `%s'\n"
5379msgstr "" 5413msgstr ""
5380 5414
5381#: src/peerinfo-tool/gnunet-peerinfo.c:464 5415#: src/peerinfo-tool/gnunet-peerinfo.c:466
5382#, c-format 5416#, c-format
5383msgid "Failure: Received invalid %s\n" 5417msgid "Failure: Received invalid %s\n"
5384msgstr "" 5418msgstr ""
5385 5419
5386#: src/peerinfo-tool/gnunet-peerinfo.c:478 5420#: src/peerinfo-tool/gnunet-peerinfo.c:480
5387#, c-format 5421#, c-format
5388msgid "Failed to write HELLO with %u bytes to file `%s'\n" 5422msgid "Failed to write HELLO with %u bytes to file `%s'\n"
5389msgstr "" 5423msgstr ""
5390 5424
5391#: src/peerinfo-tool/gnunet-peerinfo.c:497 5425#: src/peerinfo-tool/gnunet-peerinfo.c:499
5392#, c-format 5426#, c-format
5393msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n" 5427msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
5394msgstr "" 5428msgstr ""
5395 5429
5396#: src/peerinfo-tool/gnunet-peerinfo.c:797 5430#: src/peerinfo-tool/gnunet-peerinfo.c:799
5397#, c-format 5431#, c-format
5398msgid "I am peer `%s'.\n" 5432msgid "I am peer `%s'.\n"
5399msgstr "Io sono il peer '%s''.\n" 5433msgstr "Io sono il peer '%s''.\n"
5400 5434
5401#: src/peerinfo-tool/gnunet-peerinfo.c:841 5435#: src/peerinfo-tool/gnunet-peerinfo.c:843
5402msgid "don't resolve host names" 5436msgid "don't resolve host names"
5403msgstr "" 5437msgstr ""
5404 5438
5405#: src/peerinfo-tool/gnunet-peerinfo.c:846 5439#: src/peerinfo-tool/gnunet-peerinfo.c:848
5406msgid "output only the identity strings" 5440msgid "output only the identity strings"
5407msgstr "" 5441msgstr ""
5408 5442
5409#: src/peerinfo-tool/gnunet-peerinfo.c:850 5443#: src/peerinfo-tool/gnunet-peerinfo.c:852
5410msgid "include friend-only information" 5444msgid "include friend-only information"
5411msgstr "" 5445msgstr ""
5412 5446
5413#: src/peerinfo-tool/gnunet-peerinfo.c:855 5447#: src/peerinfo-tool/gnunet-peerinfo.c:857
5414msgid "output our own identity only" 5448msgid "output our own identity only"
5415msgstr "" 5449msgstr ""
5416 5450
5417#: src/peerinfo-tool/gnunet-peerinfo.c:860 5451#: src/peerinfo-tool/gnunet-peerinfo.c:862
5418msgid "list all known peers" 5452msgid "list all known peers"
5419msgstr "" 5453msgstr ""
5420 5454
5421#: src/peerinfo-tool/gnunet-peerinfo.c:866 5455#: src/peerinfo-tool/gnunet-peerinfo.c:868
5422msgid "dump hello to file" 5456msgid "dump hello to file"
5423msgstr "" 5457msgstr ""
5424 5458
5425#: src/peerinfo-tool/gnunet-peerinfo.c:871 5459#: src/peerinfo-tool/gnunet-peerinfo.c:873
5426msgid "also output HELLO uri(s)" 5460msgid "also output HELLO uri(s)"
5427msgstr "" 5461msgstr ""
5428 5462
5429#: src/peerinfo-tool/gnunet-peerinfo.c:877 5463#: src/peerinfo-tool/gnunet-peerinfo.c:879
5430msgid "add given HELLO uri to the database" 5464msgid "add given HELLO uri to the database"
5431msgstr "" 5465msgstr ""
5432 5466
5433#: src/peerinfo-tool/gnunet-peerinfo.c:895 5467#: src/peerinfo-tool/gnunet-peerinfo.c:897
5434msgid "Print information about peers." 5468msgid "Print information about peers."
5435msgstr "" 5469msgstr ""
5436 5470
5437#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:103 5471#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
5438#: src/transport/gnunet-service-transport_plugins.c:166 5472#: src/transport/gnunet-service-transport_plugins.c:168
5439#, c-format 5473#, c-format
5440msgid "Starting transport plugins `%s'\n" 5474msgid "Starting transport plugins `%s'\n"
5441msgstr "" 5475msgstr ""
5442 5476
5443#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:107 5477#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
5444#: src/transport/gnunet-service-transport_plugins.c:171 5478#: src/transport/gnunet-service-transport_plugins.c:173
5445#, c-format 5479#, c-format
5446msgid "Loading `%s' transport plugin\n" 5480msgid "Loading `%s' transport plugin\n"
5447msgstr "" 5481msgstr ""
5448 5482
5449#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:127 5483#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
5450#: src/transport/gnunet-service-transport_plugins.c:206 5484#: src/transport/gnunet-service-transport_plugins.c:208
5451#, c-format 5485#, c-format
5452msgid "Failed to load transport plugin for `%s'\n" 5486msgid "Failed to load transport plugin for `%s'\n"
5453msgstr "" 5487msgstr ""
5454 5488
5455#: src/peerstore/gnunet-peerstore.c:89 5489#: src/peerstore/gnunet-peerstore.c:91
5456msgid "peerstore" 5490msgid "peerstore"
5457msgstr "" 5491msgstr ""
5458 5492
5459#: src/peerstore/gnunet-service-peerstore.c:596 5493#: src/peerstore/gnunet-service-peerstore.c:598
5460#, c-format 5494#, c-format
5461msgid "Could not load database backend `%s'\n" 5495msgid "Could not load database backend `%s'\n"
5462msgstr "" 5496msgstr ""
5463 5497
5464#: src/peerstore/peerstore_api.c:348 5498#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
5465msgid "timeout"
5466msgstr ""
5467
5468#: src/peerstore/peerstore_api.c:564 src/peerstore/peerstore_api.c:613
5469msgid "Unexpected iteration response, this should not happen.\n" 5499msgid "Unexpected iteration response, this should not happen.\n"
5470msgstr "" 5500msgstr ""
5471 5501
5472#: src/peerstore/peerstore_api.c:627 5502#: src/peerstore/peerstore_api.c:595
5473msgid "Received a malformed response from service." 5503msgid "Received a malformed response from service."
5474msgstr "" 5504msgstr ""
5475 5505
5476#: src/peerstore/peerstore_api.c:776 5506#: src/peerstore/peerstore_api.c:731
5477msgid "Received a watch result for a non existing watch.\n" 5507msgid "Received a watch result for a non existing watch.\n"
5478msgstr "" 5508msgstr ""
5479 5509
5480#: src/peerstore/plugin_peerstore_sqlite.c:451 5510#: src/peerstore/plugin_peerstore_sqlite.c:453
5481#: src/psycstore/plugin_psycstore_sqlite.c:280
5482#, c-format 5511#, c-format
5483msgid "" 5512msgid ""
5484"Error executing SQL query: %s\n" 5513"Error executing SQL query: %s\n"
5485" %s\n" 5514" %s\n"
5486msgstr "" 5515msgstr ""
5487 5516
5488#: src/peerstore/plugin_peerstore_sqlite.c:486 5517#: src/peerstore/plugin_peerstore_sqlite.c:488
5489#: src/psycstore/plugin_psycstore_mysql.c:248
5490#: src/psycstore/plugin_psycstore_sqlite.c:257
5491#, c-format 5518#, c-format
5492msgid "" 5519msgid ""
5493"Error preparing SQL query: %s\n" 5520"Error preparing SQL query: %s\n"
5494" %s\n" 5521" %s\n"
5495msgstr "" 5522msgstr ""
5496 5523
5497#: src/peerstore/plugin_peerstore_sqlite.c:568 5524#: src/peerstore/plugin_peerstore_sqlite.c:570
5498#, c-format 5525#, c-format
5499msgid "Unable to create indices: %s.\n" 5526msgid "Unable to create indices: %s.\n"
5500msgstr "" 5527msgstr ""
5501 5528
5502#: src/pq/pq_prepare.c:82 5529#: src/pq/pq_prepare.c:84
5503#, c-format 5530#, c-format
5504msgid "PQprepare (`%s' as `%s') failed with error: %s\n" 5531msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
5505msgstr "" 5532msgstr ""
5506 5533
5507#: src/psycstore/gnunet-service-psycstore.c:247 5534#: src/pt/gnunet-daemon-pt.c:423
5508msgid "Failed to store membership information!\n"
5509msgstr ""
5510
5511#: src/psycstore/gnunet-service-psycstore.c:269
5512msgid "Failed to test membership!\n"
5513msgstr ""
5514
5515#: src/psycstore/gnunet-service-psycstore.c:298
5516msgid "Dropping invalid fragment\n"
5517msgstr ""
5518
5519#: src/psycstore/gnunet-service-psycstore.c:309
5520msgid "Failed to store fragment\n"
5521msgstr ""
5522
5523#: src/psycstore/gnunet-service-psycstore.c:366
5524msgid "Failed to get fragment!\n"
5525msgstr ""
5526
5527#: src/psycstore/gnunet-service-psycstore.c:432
5528msgid "Failed to get message!\n"
5529msgstr ""
5530
5531#: src/psycstore/gnunet-service-psycstore.c:462
5532msgid "Failed to get message fragment!\n"
5533msgstr ""
5534
5535#: src/psycstore/gnunet-service-psycstore.c:492
5536msgid "Failed to get master counters!\n"
5537msgstr ""
5538
5539#: src/psycstore/gnunet-service-psycstore.c:673
5540#, c-format
5541msgid "Failed to begin modifying state: %d\n"
5542msgstr ""
5543
5544#: src/psycstore/gnunet-service-psycstore.c:683
5545#, c-format
5546msgid "Failed to modify state: %d\n"
5547msgstr ""
5548
5549#: src/psycstore/gnunet-service-psycstore.c:691
5550msgid "Failed to end modifying state!\n"
5551msgstr ""
5552
5553#: src/psycstore/gnunet-service-psycstore.c:728
5554msgid "Tried to set invalid state variable name!\n"
5555msgstr ""
5556
5557#: src/psycstore/gnunet-service-psycstore.c:742
5558msgid "Failed to begin synchronizing state!\n"
5559msgstr ""
5560
5561#: src/psycstore/gnunet-service-psycstore.c:759
5562msgid "Failed to end synchronizing state!\n"
5563msgstr ""
5564
5565#: src/psycstore/gnunet-service-psycstore.c:777
5566#: src/psycstore/gnunet-service-psycstore.c:793
5567msgid "Failed to reset state!\n"
5568msgstr ""
5569
5570#: src/psycstore/gnunet-service-psycstore.c:822
5571#: src/psycstore/gnunet-service-psycstore.c:879
5572msgid "Tried to get invalid state variable name!\n"
5573msgstr ""
5574
5575#: src/psycstore/gnunet-service-psycstore.c:849
5576#: src/psycstore/gnunet-service-psycstore.c:894
5577msgid "Failed to get state variable!\n"
5578msgstr ""
5579
5580#: src/psycstore/plugin_psycstore_mysql.c:279
5581msgid "Unable to initialize Mysql.\n"
5582msgstr ""
5583
5584#: src/psycstore/plugin_psycstore_mysql.c:289
5585#, c-format
5586msgid "Failed to run SQL statement `%s'\n"
5587msgstr ""
5588
5589#: src/psycstore/plugin_psycstore_sqlite.c:59
5590#, c-format
5591msgid "`%s' failed at %s:%d with error: %s (%d)\n"
5592msgstr ""
5593
5594#: src/psycstore/plugin_psycstore_sqlite.c:1922
5595msgid "SQLite database running\n"
5596msgstr ""
5597
5598#: src/pt/gnunet-daemon-pt.c:421
5599msgid "Failed to pack DNS request. Dropping.\n" 5535msgid "Failed to pack DNS request. Dropping.\n"
5600msgstr "" 5536msgstr ""
5601 5537
5602#: src/pt/gnunet-daemon-pt.c:427 5538#: src/pt/gnunet-daemon-pt.c:429
5603msgid "# DNS requests mapped to VPN" 5539msgid "# DNS requests mapped to VPN"
5604msgstr "" 5540msgstr ""
5605 5541
5606#: src/pt/gnunet-daemon-pt.c:481 5542#: src/pt/gnunet-daemon-pt.c:483
5607msgid "# DNS records modified" 5543msgid "# DNS records modified"
5608msgstr "" 5544msgstr ""
5609 5545
5610#: src/pt/gnunet-daemon-pt.c:665 5546#: src/pt/gnunet-daemon-pt.c:667
5611msgid "# DNS replies intercepted" 5547msgid "# DNS replies intercepted"
5612msgstr "" 5548msgstr ""
5613 5549
5614#: src/pt/gnunet-daemon-pt.c:672 5550#: src/pt/gnunet-daemon-pt.c:674
5615msgid "Failed to parse DNS request. Dropping.\n" 5551msgid "Failed to parse DNS request. Dropping.\n"
5616msgstr "" 5552msgstr ""
5617 5553
5618#: src/pt/gnunet-daemon-pt.c:710 5554#: src/pt/gnunet-daemon-pt.c:712
5619msgid "# DNS requests dropped (timeout)" 5555msgid "# DNS requests dropped (timeout)"
5620msgstr "" 5556msgstr ""
5621 5557
5622#: src/pt/gnunet-daemon-pt.c:766 5558#: src/pt/gnunet-daemon-pt.c:768
5623msgid "# DNS requests intercepted" 5559msgid "# DNS requests intercepted"
5624msgstr "" 5560msgstr ""
5625 5561
5626#: src/pt/gnunet-daemon-pt.c:771 5562#: src/pt/gnunet-daemon-pt.c:773
5627msgid "# DNS requests dropped (DNS cadet channel down)" 5563msgid "# DNS requests dropped (DNS cadet channel down)"
5628msgstr "" 5564msgstr ""
5629 5565
5630#: src/pt/gnunet-daemon-pt.c:779 5566#: src/pt/gnunet-daemon-pt.c:781
5631msgid "# DNS requests dropped (malformed)" 5567msgid "# DNS requests dropped (malformed)"
5632msgstr "" 5568msgstr ""
5633 5569
5634#: src/pt/gnunet-daemon-pt.c:874 5570#: src/pt/gnunet-daemon-pt.c:876
5635msgid "# DNS replies received" 5571msgid "# DNS replies received"
5636msgstr "" 5572msgstr ""
5637 5573
5638#: src/pt/gnunet-daemon-pt.c:891 5574#: src/pt/gnunet-daemon-pt.c:893
5639msgid "# DNS replies dropped (too late?)" 5575msgid "# DNS replies dropped (too late?)"
5640msgstr "" 5576msgstr ""
5641 5577
5642#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226 5578#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
5643#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251 5579#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
5644#: src/pt/gnunet-daemon-pt.c:1260 5580#: src/pt/gnunet-daemon-pt.c:1262
5645#, c-format 5581#, c-format
5646msgid "Failed to connect to %s service. Exiting.\n" 5582msgid "Failed to connect to %s service. Exiting.\n"
5647msgstr "" 5583msgstr ""
5648 5584
5649#: src/pt/gnunet-daemon-pt.c:1305 5585#: src/pt/gnunet-daemon-pt.c:1307
5650msgid "Daemon to run to perform IP protocol translation to GNUnet" 5586msgid "Daemon to run to perform IP protocol translation to GNUnet"
5651msgstr "" 5587msgstr ""
5652 5588
5653#: src/reclaim/gnunet-reclaim.c:465 5589#: src/reclaim/gnunet-reclaim.c:467
5654#, c-format 5590#, c-format
5655msgid "Ego is required\n" 5591msgid "Ego is required\n"
5656msgstr "" 5592msgstr ""
5657 5593
5658#: src/reclaim/gnunet-reclaim.c:473 5594#: src/reclaim/gnunet-reclaim.c:475
5659#, c-format 5595#, c-format
5660msgid "Attribute value missing!\n" 5596msgid "Attribute value missing!\n"
5661msgstr "" 5597msgstr ""
5662 5598
5663#: src/reclaim/gnunet-reclaim.c:481 5599#: src/reclaim/gnunet-reclaim.c:483
5664#, c-format 5600#, c-format
5665msgid "Requesting party key is required!\n" 5601msgid "Requesting party key is required!\n"
5666msgstr "" 5602msgstr ""
5667 5603
5668#: src/reclaim/gnunet-reclaim.c:504 5604#: src/reclaim/gnunet-reclaim.c:506
5669msgid "Add attribute" 5605msgid "Add attribute"
5670msgstr "" 5606msgstr ""
5671 5607
5672#: src/reclaim/gnunet-reclaim.c:510 5608#: src/reclaim/gnunet-reclaim.c:512
5673msgid "Attribute value" 5609msgid "Attribute value"
5674msgstr "" 5610msgstr ""
5675 5611
5676#: src/reclaim/gnunet-reclaim.c:515 5612#: src/reclaim/gnunet-reclaim.c:517
5677msgid "Ego" 5613msgid "Ego"
5678msgstr "" 5614msgstr ""
5679 5615
5680#: src/reclaim/gnunet-reclaim.c:520 5616#: src/reclaim/gnunet-reclaim.c:522
5681msgid "Audience (relying party)" 5617msgid "Audience (relying party)"
5682msgstr "" 5618msgstr ""
5683 5619
5684#: src/reclaim/gnunet-reclaim.c:524 5620#: src/reclaim/gnunet-reclaim.c:526
5685msgid "List attributes for Ego" 5621msgid "List attributes for Ego"
5686msgstr "" 5622msgstr ""
5687 5623
5688#: src/reclaim/gnunet-reclaim.c:529 5624#: src/reclaim/gnunet-reclaim.c:531
5689msgid "Issue a ticket" 5625msgid "Issue a ticket"
5690msgstr "" 5626msgstr ""
5691 5627
5692#: src/reclaim/gnunet-reclaim.c:534 5628#: src/reclaim/gnunet-reclaim.c:536
5693msgid "Consume a ticket" 5629msgid "Consume a ticket"
5694msgstr "" 5630msgstr ""
5695 5631
5696#: src/reclaim/gnunet-reclaim.c:539 5632#: src/reclaim/gnunet-reclaim.c:541
5697msgid "Revoke a ticket" 5633msgid "Revoke a ticket"
5698msgstr "" 5634msgstr ""
5699 5635
5700#: src/reclaim/gnunet-reclaim.c:544 5636#: src/reclaim/gnunet-reclaim.c:546
5701msgid "Type of attribute" 5637msgid "Type of attribute"
5702msgstr "" 5638msgstr ""
5703 5639
5704#: src/reclaim/gnunet-reclaim.c:549 5640#: src/reclaim/gnunet-reclaim.c:551
5705msgid "Expiration interval of the attribute" 5641msgid "Expiration interval of the attribute"
5706msgstr "" 5642msgstr ""
5707 5643
5708#: src/reclaim/reclaim_api.c:434 5644#: src/reclaim/reclaim_api.c:436
5709msgid "failed to store record\n" 5645msgid "failed to store record\n"
5710msgstr "" 5646msgstr ""
5711 5647
5712#: src/regex/gnunet-daemon-regexprofiler.c:265 5648#: src/regex/gnunet-daemon-regexprofiler.c:267
5713#, c-format 5649#, c-format
5714msgid "%s service is lacking key configuration settings (%s). Exiting.\n" 5650msgid "%s service is lacking key configuration settings (%s). Exiting.\n"
5715msgstr "" 5651msgstr ""
5716 5652
5717#: src/regex/gnunet-daemon-regexprofiler.c:378 5653#: src/regex/gnunet-daemon-regexprofiler.c:380
5718msgid "Daemon to announce regular expressions for the peer using cadet." 5654msgid "Daemon to announce regular expressions for the peer using cadet."
5719msgstr "" 5655msgstr ""
5720 5656
5721#: src/regex/gnunet-regex-profiler.c:1384 5657#: src/regex/gnunet-regex-profiler.c:1386
5722msgid "No configuration file given. Exiting\n" 5658msgid "No configuration file given. Exiting\n"
5723msgstr "" 5659msgstr ""
5724 5660
5725#: src/regex/gnunet-regex-profiler.c:1425 5661#: src/regex/gnunet-regex-profiler.c:1427
5726#: src/regex/gnunet-regex-simulation-profiler.c:628 5662#: src/regex/gnunet-regex-simulation-profiler.c:630
5727#, c-format 5663#, c-format
5728msgid "No policy directory specified on command line. Exiting.\n" 5664msgid "No policy directory specified on command line. Exiting.\n"
5729msgstr "" 5665msgstr ""
5730 5666
5731#: src/regex/gnunet-regex-profiler.c:1431 5667#: src/regex/gnunet-regex-profiler.c:1433
5732#: src/regex/gnunet-regex-simulation-profiler.c:636 5668#: src/regex/gnunet-regex-simulation-profiler.c:638
5733#, c-format 5669#, c-format
5734msgid "Specified policies directory does not exist. Exiting.\n" 5670msgid "Specified policies directory does not exist. Exiting.\n"
5735msgstr "" 5671msgstr ""
5736 5672
5737#: src/regex/gnunet-regex-profiler.c:1438 5673#: src/regex/gnunet-regex-profiler.c:1440
5738#, c-format 5674#, c-format
5739msgid "No files found in `%s'\n" 5675msgid "No files found in `%s'\n"
5740msgstr "" 5676msgstr ""
5741 5677
5742#: src/regex/gnunet-regex-profiler.c:1447 5678#: src/regex/gnunet-regex-profiler.c:1449
5743msgid "No search strings file given. Exiting.\n" 5679msgid "No search strings file given. Exiting.\n"
5744msgstr "" 5680msgstr ""
5745 5681
5746#: src/regex/gnunet-regex-profiler.c:1467 5682#: src/regex/gnunet-regex-profiler.c:1469
5747msgid "Error loading search strings. Exiting.\n" 5683msgid "Error loading search strings. Exiting.\n"
5748msgstr "" 5684msgstr ""
5749 5685
5750#: src/regex/gnunet-regex-profiler.c:1555 5686#: src/regex/gnunet-regex-profiler.c:1557
5751msgid "name of the file for writing statistics" 5687msgid "name of the file for writing statistics"
5752msgstr "" 5688msgstr ""
5753 5689
5754#: src/regex/gnunet-regex-profiler.c:1561 5690#: src/regex/gnunet-regex-profiler.c:1563
5755msgid "wait TIMEOUT before ending the experiment" 5691msgid "wait TIMEOUT before ending the experiment"
5756msgstr "" 5692msgstr ""
5757 5693
5758#: src/regex/gnunet-regex-profiler.c:1567 5694#: src/regex/gnunet-regex-profiler.c:1569
5759msgid "directory with policy files" 5695msgid "directory with policy files"
5760msgstr "" 5696msgstr ""
5761 5697
5762#: src/regex/gnunet-regex-profiler.c:1574 5698#: src/regex/gnunet-regex-profiler.c:1576
5763msgid "name of file with input strings" 5699msgid "name of file with input strings"
5764msgstr "" 5700msgstr ""
5765 5701
5766#: src/regex/gnunet-regex-profiler.c:1580 5702#: src/regex/gnunet-regex-profiler.c:1582
5767msgid "name of file with hosts' names" 5703msgid "name of file with hosts' names"
5768msgstr "" 5704msgstr ""
5769 5705
5770#: src/regex/gnunet-regex-profiler.c:1593 5706#: src/regex/gnunet-regex-profiler.c:1595
5771msgid "Profiler for regex" 5707msgid "Profiler for regex"
5772msgstr "" 5708msgstr ""
5773 5709
5774#: src/regex/gnunet-regex-simulation-profiler.c:697 5710#: src/regex/gnunet-regex-simulation-profiler.c:699
5775msgid "name of the table to write DFAs" 5711msgid "name of the table to write DFAs"
5776msgstr "" 5712msgstr ""
5777 5713
5778#: src/regex/gnunet-regex-simulation-profiler.c:703 5714#: src/regex/gnunet-regex-simulation-profiler.c:705
5779msgid "maximum path compression length" 5715msgid "maximum path compression length"
5780msgstr "" 5716msgstr ""
5781 5717
5782#: src/regex/gnunet-regex-simulation-profiler.c:717 5718#: src/regex/gnunet-regex-simulation-profiler.c:719
5783msgid "Profiler for regex library" 5719msgid "Profiler for regex library"
5784msgstr "" 5720msgstr ""
5785 5721
5786#: src/regex/regex_api_announce.c:150 5722#: src/regex/regex_api_announce.c:152
5787#, c-format 5723#, c-format
5788msgid "Regex `%s' is too long!\n" 5724msgid "Regex `%s' is too long!\n"
5789msgstr "" 5725msgstr ""
5790 5726
5791#: src/regex/regex_api_search.c:210 5727#: src/regex/regex_api_search.c:212
5792#, c-format 5728#, c-format
5793msgid "Search string `%s' is too long!\n" 5729msgid "Search string `%s' is too long!\n"
5794msgstr "" 5730msgstr ""
5795 5731
5796#: src/rest/gnunet-rest-server.c:925 5732#: src/rest/gnunet-rest-server.c:927
5797msgid "listen on specified port (default: 7776)" 5733msgid "listen on specified port (default: 7776)"
5798msgstr "" 5734msgstr ""
5799 5735
5800#: src/rest/gnunet-rest-server.c:942 5736#: src/rest/gnunet-rest-server.c:944
5801msgid "GNUnet REST server" 5737msgid "GNUnet REST server"
5802msgstr "" 5738msgstr ""
5803 5739
5804#: src/rest-plugins/plugin_rest_copying.c:207 5740#: src/rest-plugins/plugin_rest_copying.c:209
5805msgid "COPYING REST API initialized\n" 5741msgid "COPYING REST API initialized\n"
5806msgstr "" 5742msgstr ""
5807 5743
5808#: src/rest-plugins/plugin_rest_credential.c:1126 5744#: src/rest-plugins/plugin_rest_credential.c:1128
5809msgid "GNS REST API initialized\n" 5745msgid "GNS REST API initialized\n"
5810msgstr "" 5746msgstr ""
5811 5747
5812#: src/rest-plugins/plugin_rest_gns.c:450 5748#: src/rest-plugins/plugin_rest_gns.c:452
5813msgid "Gns REST API initialized\n" 5749msgid "Gns REST API initialized\n"
5814msgstr "" 5750msgstr ""
5815 5751
5816#: src/rest-plugins/plugin_rest_identity.c:1295 5752#: src/rest-plugins/plugin_rest_identity.c:1297
5817msgid "Identity REST API initialized\n" 5753msgid "Identity REST API initialized\n"
5818msgstr "" 5754msgstr ""
5819 5755
5820#: src/rest-plugins/plugin_rest_namestore.c:1077 5756#: src/rest-plugins/plugin_rest_namestore.c:1079
5821msgid "Namestore REST API initialized\n" 5757msgid "Namestore REST API initialized\n"
5822msgstr "" 5758msgstr ""
5823 5759
5824#: src/rest-plugins/plugin_rest_openid_connect.c:2135 5760#: src/rest-plugins/plugin_rest_openid_connect.c:2245
5825#: src/rest-plugins/plugin_rest_reclaim.c:1079 5761#: src/rest-plugins/plugin_rest_reclaim.c:1079
5826msgid "Identity Provider REST API initialized\n" 5762msgid "Identity Provider REST API initialized\n"
5827msgstr "" 5763msgstr ""
5828 5764
5829#: src/rest-plugins/plugin_rest_peerinfo.c:794 5765#: src/rest-plugins/plugin_rest_peerinfo.c:796
5830msgid "Peerinfo REST API initialized\n" 5766msgid "Peerinfo REST API initialized\n"
5831msgstr "" 5767msgstr ""
5832 5768
5833#: src/revocation/gnunet-revocation.c:127 5769#: src/revocation/gnunet-revocation.c:129
5834#, c-format 5770#, c-format
5835msgid "Key `%s' is valid\n" 5771msgid "Key `%s' is valid\n"
5836msgstr "" 5772msgstr ""
5837 5773
5838#: src/revocation/gnunet-revocation.c:132 5774#: src/revocation/gnunet-revocation.c:134
5839#, c-format 5775#, c-format
5840msgid "Key `%s' has been revoked\n" 5776msgid "Key `%s' has been revoked\n"
5841msgstr "" 5777msgstr ""
5842 5778
5843#: src/revocation/gnunet-revocation.c:138 5779#: src/revocation/gnunet-revocation.c:140
5844msgid "Internal error\n" 5780msgid "Internal error\n"
5845msgstr "Errore interno\n" 5781msgstr "Errore interno\n"
5846 5782
5847#: src/revocation/gnunet-revocation.c:164 5783#: src/revocation/gnunet-revocation.c:166
5848#, c-format 5784#, c-format
5849msgid "Key for ego `%s' is still valid, revocation failed (!)\n" 5785msgid "Key for ego `%s' is still valid, revocation failed (!)\n"
5850msgstr "" 5786msgstr ""
5851 5787
5852#: src/revocation/gnunet-revocation.c:169 5788#: src/revocation/gnunet-revocation.c:171
5853msgid "Revocation failed (!)\n" 5789msgid "Revocation failed (!)\n"
5854msgstr "" 5790msgstr ""
5855 5791
5856#: src/revocation/gnunet-revocation.c:174 5792#: src/revocation/gnunet-revocation.c:176
5857#, c-format 5793#, c-format
5858msgid "Key for ego `%s' has been successfully revoked\n" 5794msgid "Key for ego `%s' has been successfully revoked\n"
5859msgstr "" 5795msgstr ""
5860 5796
5861#: src/revocation/gnunet-revocation.c:179 5797#: src/revocation/gnunet-revocation.c:181
5862msgid "Revocation successful.\n" 5798msgid "Revocation successful.\n"
5863msgstr "" 5799msgstr ""
5864 5800
5865#: src/revocation/gnunet-revocation.c:184 5801#: src/revocation/gnunet-revocation.c:186
5866msgid "Internal error, key revocation might have failed\n" 5802msgid "Internal error, key revocation might have failed\n"
5867msgstr "" 5803msgstr ""
5868 5804
5869#: src/revocation/gnunet-revocation.c:321 5805#: src/revocation/gnunet-revocation.c:323
5870#, c-format 5806#, c-format
5871msgid "Revocation certificate for `%s' stored in `%s'\n" 5807msgid "Revocation certificate for `%s' stored in `%s'\n"
5872msgstr "" 5808msgstr ""
5873 5809
5874#: src/revocation/gnunet-revocation.c:350 5810#: src/revocation/gnunet-revocation.c:352
5875#, c-format 5811#, c-format
5876msgid "Ego `%s' not found.\n" 5812msgid "Ego `%s' not found.\n"
5877msgstr "" 5813msgstr ""
5878 5814
5879#: src/revocation/gnunet-revocation.c:371 5815#: src/revocation/gnunet-revocation.c:373
5880#, c-format 5816#, c-format
5881msgid "Error: revocation certificate in `%s' is not for `%s'\n" 5817msgid "Error: revocation certificate in `%s' is not for `%s'\n"
5882msgstr "" 5818msgstr ""
5883 5819
5884#: src/revocation/gnunet-revocation.c:391 5820#: src/revocation/gnunet-revocation.c:393
5885msgid "Revocation certificate ready\n" 5821msgid "Revocation certificate ready\n"
5886msgstr "" 5822msgstr ""
5887 5823
5888#: src/revocation/gnunet-revocation.c:401 5824#: src/revocation/gnunet-revocation.c:403
5889msgid "Revocation certificate not ready, calculating proof of work\n" 5825msgid "Revocation certificate not ready, calculating proof of work\n"
5890msgstr "" 5826msgstr ""
5891 5827
5892#: src/revocation/gnunet-revocation.c:435 src/social/gnunet-social.c:1178 5828#: src/revocation/gnunet-revocation.c:437
5893#, c-format 5829#, c-format
5894msgid "Public key `%s' malformed\n" 5830msgid "Public key `%s' malformed\n"
5895msgstr "" 5831msgstr ""
5896 5832
5897#: src/revocation/gnunet-revocation.c:448 5833#: src/revocation/gnunet-revocation.c:450
5898msgid "" 5834msgid ""
5899"Testing and revoking at the same time is not allowed, only executing test.\n" 5835"Testing and revoking at the same time is not allowed, only executing test.\n"
5900msgstr "" 5836msgstr ""
5901 5837
5902#: src/revocation/gnunet-revocation.c:468 5838#: src/revocation/gnunet-revocation.c:470
5903msgid "No filename to store revocation certificate given.\n" 5839msgid "No filename to store revocation certificate given.\n"
5904msgstr "" 5840msgstr ""
5905 5841
5906#: src/revocation/gnunet-revocation.c:489 5842#: src/revocation/gnunet-revocation.c:491
5907#, c-format 5843#, c-format
5908msgid "Failed to read revocation certificate from `%s'\n" 5844msgid "Failed to read revocation certificate from `%s'\n"
5909msgstr "" 5845msgstr ""
5910 5846
5911#: src/revocation/gnunet-revocation.c:514 5847#: src/revocation/gnunet-revocation.c:516
5912msgid "No action specified. Nothing to do.\n" 5848msgid "No action specified. Nothing to do.\n"
5913msgstr "" 5849msgstr ""
5914 5850
5915#: src/revocation/gnunet-revocation.c:533 5851#: src/revocation/gnunet-revocation.c:535
5916msgid "use NAME for the name of the revocation file" 5852msgid "use NAME for the name of the revocation file"
5917msgstr "" 5853msgstr ""
5918 5854
5919#: src/revocation/gnunet-revocation.c:539 5855#: src/revocation/gnunet-revocation.c:541
5920msgid "" 5856msgid ""
5921"revoke the private key associated for the the private key associated with " 5857"revoke the private key associated for the the private key associated with "
5922"the ego NAME " 5858"the ego NAME "
5923msgstr "" 5859msgstr ""
5924 5860
5925#: src/revocation/gnunet-revocation.c:544 5861#: src/revocation/gnunet-revocation.c:546
5926msgid "actually perform revocation, otherwise we just do the precomputation" 5862msgid "actually perform revocation, otherwise we just do the precomputation"
5927msgstr "" 5863msgstr ""
5928 5864
5929#: src/revocation/gnunet-revocation.c:550 5865#: src/revocation/gnunet-revocation.c:552
5930msgid "test if the public key KEY has been revoked" 5866msgid "test if the public key KEY has been revoked"
5931msgstr "" 5867msgstr ""
5932 5868
5933#: src/revocation/gnunet-service-revocation.c:457 5869#: src/revocation/gnunet-service-revocation.c:459
5934msgid "# unsupported revocations received via set union" 5870msgid "# unsupported revocations received via set union"
5935msgstr "" 5871msgstr ""
5936 5872
5937#: src/revocation/gnunet-service-revocation.c:466 5873#: src/revocation/gnunet-service-revocation.c:468
5938msgid "# revocation messages received via set union" 5874msgid "# revocation messages received via set union"
5939msgstr "" 5875msgstr ""
5940 5876
5941#: src/revocation/gnunet-service-revocation.c:471 5877#: src/revocation/gnunet-service-revocation.c:473
5942#, c-format 5878#, c-format
5943msgid "Error computing revocation set union with %s\n" 5879msgid "Error computing revocation set union with %s\n"
5944msgstr "" 5880msgstr ""
5945 5881
5946#: src/revocation/gnunet-service-revocation.c:475 5882#: src/revocation/gnunet-service-revocation.c:477
5947msgid "# revocation set unions failed" 5883msgid "# revocation set unions failed"
5948msgstr "" 5884msgstr ""
5949 5885
5950#: src/revocation/gnunet-service-revocation.c:484 5886#: src/revocation/gnunet-service-revocation.c:486
5951msgid "# revocation set unions completed" 5887msgid "# revocation set unions completed"
5952msgstr "" 5888msgstr ""
5953 5889
5954#: src/revocation/gnunet-service-revocation.c:523 5890#: src/revocation/gnunet-service-revocation.c:525
5955msgid "SET service crashed, terminating revocation service\n" 5891msgid "SET service crashed, terminating revocation service\n"
5956msgstr "" 5892msgstr ""
5957 5893
5958#: src/revocation/gnunet-service-revocation.c:865 5894#: src/revocation/gnunet-service-revocation.c:867
5959msgid "Could not open revocation database file!" 5895msgid "Could not open revocation database file!"
5960msgstr "" 5896msgstr ""
5961 5897
5962#: src/rps/gnunet-rps.c:258 5898#: src/rps/gnunet-rps.c:260
5963msgid "Seed a PeerID" 5899msgid "Seed a PeerID"
5964msgstr "" 5900msgstr ""
5965 5901
5966#: src/rps/gnunet-rps.c:262 5902#: src/rps/gnunet-rps.c:264
5967msgid "Get updates of view (0 for infinite updates)" 5903msgid "Get updates of view (0 for infinite updates)"
5968msgstr "" 5904msgstr ""
5969 5905
5970#: src/rps/gnunet-rps.c:266 5906#: src/rps/gnunet-rps.c:268
5971msgid "Get peers from biased stream" 5907msgid "Get peers from biased stream"
5972msgstr "" 5908msgstr ""
5973 5909
5974#: src/rps/gnunet-rps-profiler.c:2770 5910#: src/rps/gnunet-rps-profiler.c:2959
5975msgid "duration of the profiling" 5911msgid "duration of the profiling"
5976msgstr "" 5912msgstr ""
5977 5913
5978#: src/rps/gnunet-rps-profiler.c:2776 5914#: src/rps/gnunet-rps-profiler.c:2965
5979msgid "timeout for the profiling" 5915msgid "timeout for the profiling"
5980msgstr "" 5916msgstr ""
5981 5917
5982#: src/rps/gnunet-rps-profiler.c:2782 5918#: src/rps/gnunet-rps-profiler.c:2971
5983msgid "number of PeerIDs to request" 5919msgid "number of PeerIDs to request"
5984msgstr "" 5920msgstr ""
5985 5921
5986#: src/rps/gnunet-rps-profiler.c:2797 5922#: src/rps/gnunet-rps-profiler.c:2986
5987msgid "Measure quality and performance of the RPS service." 5923msgid "Measure quality and performance of the RPS service."
5988msgstr "" 5924msgstr ""
5989 5925
5990#: src/scalarproduct/gnunet-scalarproduct.c:218 5926#: src/scalarproduct/gnunet-scalarproduct.c:220
5991msgid "You must specify at least one message ID to check!\n" 5927msgid "You must specify at least one message ID to check!\n"
5992msgstr "" 5928msgstr ""
5993 5929
5994#: src/scalarproduct/gnunet-scalarproduct.c:225 5930#: src/scalarproduct/gnunet-scalarproduct.c:227
5995msgid "This program needs a session identifier for comparing vectors.\n" 5931msgid "This program needs a session identifier for comparing vectors.\n"
5996msgstr "" 5932msgstr ""
5997 5933
5998#: src/scalarproduct/gnunet-scalarproduct.c:238 5934#: src/scalarproduct/gnunet-scalarproduct.c:240
5999#, c-format 5935#, c-format
6000msgid "" 5936msgid ""
6001"Tried to set initiator mode, as peer ID was given. However, `%s' is not a " 5937"Tried to set initiator mode, as peer ID was given. However, `%s' is not a "
6002"valid peer identifier.\n" 5938"valid peer identifier.\n"
6003msgstr "" 5939msgstr ""
6004 5940
6005#: src/scalarproduct/gnunet-scalarproduct.c:256 5941#: src/scalarproduct/gnunet-scalarproduct.c:258
6006msgid "Need elements to compute the scalarproduct, got none.\n" 5942msgid "Need elements to compute the scalarproduct, got none.\n"
6007msgstr "" 5943msgstr ""
6008 5944
6009#: src/scalarproduct/gnunet-scalarproduct.c:278 5945#: src/scalarproduct/gnunet-scalarproduct.c:280
6010#, c-format 5946#, c-format
6011msgid "Malformed input, could not parse `%s'\n" 5947msgid "Malformed input, could not parse `%s'\n"
6012msgstr "" 5948msgstr ""
6013 5949
6014#: src/scalarproduct/gnunet-scalarproduct.c:296 5950#: src/scalarproduct/gnunet-scalarproduct.c:298
6015#, c-format 5951#, c-format
6016msgid "Could not convert `%s' to int64_t.\n" 5952msgid "Could not convert `%s' to int64_t.\n"
6017msgstr "" 5953msgstr ""
6018 5954
6019#: src/scalarproduct/gnunet-scalarproduct.c:323 5955#: src/scalarproduct/gnunet-scalarproduct.c:325
6020#, c-format 5956#, c-format
6021msgid "Failed to initiate computation, were all keys unique?\n" 5957msgid "Failed to initiate computation, were all keys unique?\n"
6022msgstr "" 5958msgstr ""
6023 5959
6024#: src/scalarproduct/gnunet-scalarproduct.c:349 5960#: src/scalarproduct/gnunet-scalarproduct.c:351
6025#: src/scalarproduct/gnunet-scalarproduct.c:355 5961#: src/scalarproduct/gnunet-scalarproduct.c:357
6026msgid "" 5962msgid ""
6027"A comma separated list of elements to compare as vector with our remote peer." 5963"A comma separated list of elements to compare as vector with our remote peer."
6028msgstr "" 5964msgstr ""
6029 5965
6030#: src/scalarproduct/gnunet-scalarproduct.c:361 5966#: src/scalarproduct/gnunet-scalarproduct.c:363
6031msgid "" 5967msgid ""
6032"[Optional] peer to calculate our scalarproduct with. If this parameter is " 5968"[Optional] peer to calculate our scalarproduct with. If this parameter is "
6033"not given, the service will wait for a remote peer to compute the request." 5969"not given, the service will wait for a remote peer to compute the request."
6034msgstr "" 5970msgstr ""
6035 5971
6036#: src/scalarproduct/gnunet-scalarproduct.c:367 5972#: src/scalarproduct/gnunet-scalarproduct.c:369
6037msgid "Transaction ID shared with peer." 5973msgid "Transaction ID shared with peer."
6038msgstr "" 5974msgstr ""
6039 5975
6040#: src/scalarproduct/gnunet-scalarproduct.c:377 5976#: src/scalarproduct/gnunet-scalarproduct.c:379
6041msgid "Calculate the Vectorproduct with a GNUnet peer." 5977msgid "Calculate the Vectorproduct with a GNUnet peer."
6042msgstr "" 5978msgstr ""
6043 5979
6044#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1399 5980#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
6045#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1343 5981#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
6046#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1170 5982#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
6047#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1061 5983#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
6048msgid "Connect to CADET failed\n" 5984msgid "Connect to CADET failed\n"
6049msgstr "" 5985msgstr ""
6050 5986
6051#: src/scalarproduct/scalarproduct_api.c:183 5987#: src/scalarproduct/scalarproduct_api.c:185
6052msgid "Keys given to SCALARPRODUCT not unique!\n" 5988msgid "Keys given to SCALARPRODUCT not unique!\n"
6053msgstr "" 5989msgstr ""
6054 5990
6055#: src/secretsharing/gnunet-secretsharing-profiler.c:614 5991#: src/secretsharing/gnunet-secretsharing-profiler.c:616
6056msgid "dkg start delay" 5992msgid "dkg start delay"
6057msgstr "" 5993msgstr ""
6058 5994
6059#: src/secretsharing/gnunet-secretsharing-profiler.c:620 5995#: src/secretsharing/gnunet-secretsharing-profiler.c:622
6060msgid "dkg timeout" 5996msgid "dkg timeout"
6061msgstr "" 5997msgstr ""
6062 5998
6063#: src/secretsharing/gnunet-secretsharing-profiler.c:626 5999#: src/secretsharing/gnunet-secretsharing-profiler.c:628
6064msgid "threshold" 6000msgid "threshold"
6065msgstr "" 6001msgstr ""
6066 6002
6067#: src/secretsharing/gnunet-secretsharing-profiler.c:631 6003#: src/secretsharing/gnunet-secretsharing-profiler.c:633
6068msgid "also profile decryption" 6004msgid "also profile decryption"
6069msgstr "" 6005msgstr ""
6070 6006
6071#: src/set/gnunet-service-set.c:2004 6007#: src/set/gnunet-service-set.c:2005
6072msgid "Could not connect to CADET service\n" 6008msgid "Could not connect to CADET service\n"
6073msgstr "" 6009msgstr ""
6074 6010
6075#: src/set/gnunet-set-ibf-profiler.c:250 6011#: src/set/gnunet-set-ibf-profiler.c:252
6076msgid "number of element in set A-B" 6012msgid "number of element in set A-B"
6077msgstr "" 6013msgstr ""
6078 6014
6079#: src/set/gnunet-set-ibf-profiler.c:256 6015#: src/set/gnunet-set-ibf-profiler.c:258
6080msgid "number of element in set B-A" 6016msgid "number of element in set B-A"
6081msgstr "" 6017msgstr ""
6082 6018
6083#: src/set/gnunet-set-ibf-profiler.c:262 6019#: src/set/gnunet-set-ibf-profiler.c:264
6084msgid "number of common elements in A and B" 6020msgid "number of common elements in A and B"
6085msgstr "" 6021msgstr ""
6086 6022
6087#: src/set/gnunet-set-ibf-profiler.c:268 6023#: src/set/gnunet-set-ibf-profiler.c:270
6088msgid "hash num" 6024msgid "hash num"
6089msgstr "" 6025msgstr ""
6090 6026
6091#: src/set/gnunet-set-ibf-profiler.c:274 6027#: src/set/gnunet-set-ibf-profiler.c:276
6092msgid "ibf size" 6028msgid "ibf size"
6093msgstr "" 6029msgstr ""
6094 6030
6095#: src/set/gnunet-set-profiler.c:442 6031#: src/set/gnunet-set-profiler.c:444
6096msgid "use byzantine mode" 6032msgid "use byzantine mode"
6097msgstr "" 6033msgstr ""
6098 6034
6099#: src/set/gnunet-set-profiler.c:448 6035#: src/set/gnunet-set-profiler.c:450
6100msgid "force sending full set" 6036msgid "force sending full set"
6101msgstr "" 6037msgstr ""
6102 6038
6103#: src/set/gnunet-set-profiler.c:454 6039#: src/set/gnunet-set-profiler.c:456
6104msgid "number delta operation" 6040msgid "number delta operation"
6105msgstr "" 6041msgstr ""
6106 6042
6107#: src/set/gnunet-set-profiler.c:466 6043#: src/set/gnunet-set-profiler.c:468
6108msgid "operation to execute" 6044msgid "operation to execute"
6109msgstr "" 6045msgstr ""
6110 6046
6111#: src/set/gnunet-set-profiler.c:472 6047#: src/set/gnunet-set-profiler.c:474
6112msgid "element size" 6048msgid "element size"
6113msgstr "" 6049msgstr ""
6114 6050
6115#: src/social/gnunet-social.c:1164 6051#: src/sq/sq.c:54
6116msgid "--place missing or invalid.\n"
6117msgstr ""
6118
6119#: src/social/gnunet-social.c:1215
6120msgid "assign --name in state to --data"
6121msgstr ""
6122
6123#: src/social/gnunet-social.c:1220
6124msgid "say good-bye and leave somebody else's place"
6125msgstr ""
6126
6127#: src/social/gnunet-social.c:1225
6128msgid "create a place"
6129msgstr ""
6130
6131#: src/social/gnunet-social.c:1230
6132msgid "destroy a place we were hosting"
6133msgstr ""
6134
6135#: src/social/gnunet-social.c:1235
6136msgid "enter somebody else's place"
6137msgstr ""
6138
6139#: src/social/gnunet-social.c:1241
6140msgid "find state matching name prefix"
6141msgstr ""
6142
6143#: src/social/gnunet-social.c:1246
6144msgid "replay history of messages up to the given --limit"
6145msgstr ""
6146
6147#: src/social/gnunet-social.c:1251
6148msgid "reconnect to a previously created place"
6149msgstr ""
6150
6151#: src/social/gnunet-social.c:1256
6152msgid "publish something to a place we are hosting"
6153msgstr ""
6154
6155#: src/social/gnunet-social.c:1261
6156msgid "reconnect to a previously entered place"
6157msgstr ""
6158
6159#: src/social/gnunet-social.c:1266
6160msgid "search for state matching exact name"
6161msgstr ""
6162
6163#: src/social/gnunet-social.c:1271
6164msgid "submit something to somebody's place"
6165msgstr ""
6166
6167#: src/social/gnunet-social.c:1276
6168msgid "list of egos and subscribed places"
6169msgstr ""
6170
6171#: src/social/gnunet-social.c:1281
6172msgid "extract and replay history between message IDs --start and --until"
6173msgstr ""
6174
6175#: src/social/gnunet-social.c:1290
6176msgid "application ID to use when connecting"
6177msgstr ""
6178
6179#: src/social/gnunet-social.c:1296
6180msgid "message body or state value"
6181msgstr ""
6182
6183#: src/social/gnunet-social.c:1302
6184msgid "name or public key of ego"
6185msgstr ""
6186
6187#: src/social/gnunet-social.c:1307
6188msgid "wait for incoming messages"
6189msgstr ""
6190
6191#: src/social/gnunet-social.c:1313
6192msgid "GNS name"
6193msgstr ""
6194
6195#: src/social/gnunet-social.c:1319
6196msgid "peer ID for --guest-enter"
6197msgstr ""
6198
6199#: src/social/gnunet-social.c:1325
6200msgid "name (key) to query from state"
6201msgstr ""
6202
6203#: src/social/gnunet-social.c:1331
6204msgid "method name"
6205msgstr ""
6206
6207#: src/social/gnunet-social.c:1337
6208msgid "number of messages to replay from history"
6209msgstr ""
6210
6211#: src/social/gnunet-social.c:1343
6212msgid "key address of place"
6213msgstr ""
6214
6215#: src/social/gnunet-social.c:1349
6216msgid "start message ID for history replay"
6217msgstr ""
6218
6219#: src/social/gnunet-social.c:1354
6220msgid "respond to entry requests by admitting all guests"
6221msgstr ""
6222
6223#: src/social/gnunet-social.c:1360
6224msgid "end message ID for history replay"
6225msgstr ""
6226
6227#: src/social/gnunet-social.c:1365
6228msgid "respond to entry requests by refusing all guests"
6229msgstr ""
6230
6231#: src/social/gnunet-social.c:1375
6232msgid ""
6233"gnunet-social - Interact with the social service: enter/leave, send/receive "
6234"messages, access history and state.\n"
6235msgstr ""
6236
6237#: src/sq/sq.c:52
6238#, c-format 6052#, c-format
6239msgid "Failure to bind %u-th SQL parameter\n" 6053msgid "Failure to bind %u-th SQL parameter\n"
6240msgstr "" 6054msgstr ""
6241 6055
6242#: src/sq/sq.c:59 6056#: src/sq/sq.c:61
6243msgid "Failure in sqlite3_reset (!)\n" 6057msgid "Failure in sqlite3_reset (!)\n"
6244msgstr "" 6058msgstr ""
6245 6059
6246#: src/sq/sq.c:137 6060#: src/sq/sq.c:139
6247#, c-format 6061#, c-format
6248msgid "Failed to reset sqlite statement with error: %s\n" 6062msgid "Failed to reset sqlite statement with error: %s\n"
6249msgstr "" 6063msgstr ""
6250 6064
6251#: src/statistics/gnunet-service-statistics.c:336 6065#: src/statistics/gnunet-service-statistics.c:338
6252#, c-format 6066#, c-format
6253msgid "Wrote %llu bytes of statistics to `%s'\n" 6067msgid "Wrote %llu bytes of statistics to `%s'\n"
6254msgstr "" 6068msgstr ""
6255 6069
6256#: src/statistics/gnunet-service-statistics.c:1084 6070#: src/statistics/gnunet-service-statistics.c:1086
6257#, c-format 6071#, c-format
6258msgid "Loading %llu bytes of statistics from `%s'\n" 6072msgid "Loading %llu bytes of statistics from `%s'\n"
6259msgstr "" 6073msgstr ""
6260 6074
6261#: src/statistics/gnunet-statistics.c:407 6075#: src/statistics/gnunet-statistics.c:409
6262#: src/statistics/gnunet-statistics.c:448 6076#: src/statistics/gnunet-statistics.c:450
6263msgid "Failed to obtain statistics.\n" 6077msgid "Failed to obtain statistics.\n"
6264msgstr "" 6078msgstr ""
6265 6079
6266#: src/statistics/gnunet-statistics.c:410 6080#: src/statistics/gnunet-statistics.c:412
6267#: src/statistics/gnunet-statistics.c:451 6081#: src/statistics/gnunet-statistics.c:453
6268#, c-format 6082#, c-format
6269msgid "Failed to obtain statistics from host `%s:%llu'\n" 6083msgid "Failed to obtain statistics from host `%s:%llu'\n"
6270msgstr "" 6084msgstr ""
6271 6085
6272#: src/statistics/gnunet-statistics.c:526 6086#: src/statistics/gnunet-statistics.c:528
6273msgid "Missing argument: subsystem \n" 6087msgid "Missing argument: subsystem \n"
6274msgstr "" 6088msgstr ""
6275 6089
6276#: src/statistics/gnunet-statistics.c:534 6090#: src/statistics/gnunet-statistics.c:536
6277msgid "Missing argument: name\n" 6091msgid "Missing argument: name\n"
6278msgstr "" 6092msgstr ""
6279 6093
6280#: src/statistics/gnunet-statistics.c:577 6094#: src/statistics/gnunet-statistics.c:579
6281#, c-format 6095#, c-format
6282msgid "No subsystem or name given\n" 6096msgid "No subsystem or name given\n"
6283msgstr "" 6097msgstr ""
6284 6098
6285#: src/statistics/gnunet-statistics.c:592 6099#: src/statistics/gnunet-statistics.c:594
6286#, c-format 6100#, c-format
6287msgid "Failed to initialize watch routine\n" 6101msgid "Failed to initialize watch routine\n"
6288msgstr "" 6102msgstr ""
6289 6103
6290#: src/statistics/gnunet-statistics.c:727 6104#: src/statistics/gnunet-statistics.c:729
6291#, c-format 6105#, c-format
6292msgid "Invalid argument `%s'\n" 6106msgid "Invalid argument `%s'\n"
6293msgstr "" 6107msgstr ""
6294 6108
6295#: src/statistics/gnunet-statistics.c:745 6109#: src/statistics/gnunet-statistics.c:747
6296#, c-format 6110#, c-format
6297msgid "A port is required to connect to host `%s'\n" 6111msgid "A port is required to connect to host `%s'\n"
6298msgstr "" 6112msgstr ""
6299 6113
6300#: src/statistics/gnunet-statistics.c:753 6114#: src/statistics/gnunet-statistics.c:755
6301#, c-format 6115#, c-format
6302msgid "A port has to be between 1 and 65535 to connect to host `%s'\n" 6116msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
6303msgstr "" 6117msgstr ""
6304 6118
6305#: src/statistics/gnunet-statistics.c:784 6119#: src/statistics/gnunet-statistics.c:786
6306#, c-format 6120#, c-format
6307msgid "Not able to watch testbed nodes (yet - feel free to implement)\n" 6121msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
6308msgstr "" 6122msgstr ""
6309 6123
6310#: src/statistics/gnunet-statistics.c:817 6124#: src/statistics/gnunet-statistics.c:819
6311msgid "limit output to statistics for the given NAME" 6125msgid "limit output to statistics for the given NAME"
6312msgstr "" 6126msgstr ""
6313 6127
6314#: src/statistics/gnunet-statistics.c:822 6128#: src/statistics/gnunet-statistics.c:824
6315msgid "make the value being set persistent" 6129msgid "make the value being set persistent"
6316msgstr "" 6130msgstr ""
6317 6131
6318#: src/statistics/gnunet-statistics.c:828 6132#: src/statistics/gnunet-statistics.c:830
6319msgid "limit output to the given SUBSYSTEM" 6133msgid "limit output to the given SUBSYSTEM"
6320msgstr "" 6134msgstr ""
6321 6135
6322#: src/statistics/gnunet-statistics.c:834 6136#: src/statistics/gnunet-statistics.c:836
6323msgid "use as csv separator" 6137msgid "use as csv separator"
6324msgstr "" 6138msgstr ""
6325 6139
6326#: src/statistics/gnunet-statistics.c:840 6140#: src/statistics/gnunet-statistics.c:842
6327msgid "path to the folder containing the testbed data" 6141msgid "path to the folder containing the testbed data"
6328msgstr "" 6142msgstr ""
6329 6143
6330#: src/statistics/gnunet-statistics.c:845 6144#: src/statistics/gnunet-statistics.c:847
6331msgid "just print the statistics value" 6145msgid "just print the statistics value"
6332msgstr "" 6146msgstr ""
6333 6147
6334#: src/statistics/gnunet-statistics.c:850 6148#: src/statistics/gnunet-statistics.c:852
6335msgid "watch value continuously" 6149msgid "watch value continuously"
6336msgstr "" 6150msgstr ""
6337 6151
6338#: src/statistics/gnunet-statistics.c:856 6152#: src/statistics/gnunet-statistics.c:858
6339msgid "connect to remote host" 6153msgid "connect to remote host"
6340msgstr "" 6154msgstr ""
6341 6155
6342#: src/statistics/gnunet-statistics.c:862 6156#: src/statistics/gnunet-statistics.c:864
6343msgid "port for remote host" 6157msgid "port for remote host"
6344msgstr "" 6158msgstr ""
6345 6159
6346#: src/statistics/gnunet-statistics.c:879 6160#: src/statistics/gnunet-statistics.c:881
6347msgid "Print statistics about GNUnet operations." 6161msgid "Print statistics about GNUnet operations."
6348msgstr "" 6162msgstr ""
6349 6163
6350#: src/statistics/statistics_api.c:751 6164#: src/statistics/statistics_api.c:753
6351msgid "Could not save some persistent statistics\n" 6165msgid "Could not save some persistent statistics\n"
6352msgstr "" 6166msgstr ""
6353 6167
6354#: src/testbed/generate-underlay-topology.c:223 6168#: src/testbed/generate-underlay-topology.c:225
6355msgid "Need at least 2 arguments\n" 6169msgid "Need at least 2 arguments\n"
6356msgstr "" 6170msgstr ""
6357 6171
6358#: src/testbed/generate-underlay-topology.c:228 6172#: src/testbed/generate-underlay-topology.c:230
6359msgid "Database filename missing\n" 6173msgid "Database filename missing\n"
6360msgstr "" 6174msgstr ""
6361 6175
6362#: src/testbed/generate-underlay-topology.c:235 6176#: src/testbed/generate-underlay-topology.c:237
6363msgid "Topology string missing\n" 6177msgid "Topology string missing\n"
6364msgstr "" 6178msgstr ""
6365 6179
6366#: src/testbed/generate-underlay-topology.c:240 6180#: src/testbed/generate-underlay-topology.c:242
6367#, c-format 6181#, c-format
6368msgid "Invalid topology: %s\n" 6182msgid "Invalid topology: %s\n"
6369msgstr "" 6183msgstr ""
6370 6184
6371#: src/testbed/generate-underlay-topology.c:253 6185#: src/testbed/generate-underlay-topology.c:255
6372#, c-format 6186#, c-format
6373msgid "An argument is missing for given topology `%s'\n" 6187msgid "An argument is missing for given topology `%s'\n"
6374msgstr "" 6188msgstr ""
6375 6189
6376#: src/testbed/generate-underlay-topology.c:259 6190#: src/testbed/generate-underlay-topology.c:261
6377#, c-format 6191#, c-format
6378msgid "Invalid argument `%s' given as topology argument\n" 6192msgid "Invalid argument `%s' given as topology argument\n"
6379msgstr "" 6193msgstr ""
6380 6194
6381#: src/testbed/generate-underlay-topology.c:267 6195#: src/testbed/generate-underlay-topology.c:269
6382#, c-format 6196#, c-format
6383msgid "Filename argument missing for topology `%s'\n" 6197msgid "Filename argument missing for topology `%s'\n"
6384msgstr "" 6198msgstr ""
6385 6199
6386#: src/testbed/generate-underlay-topology.c:281 6200#: src/testbed/generate-underlay-topology.c:283
6387#, c-format 6201#, c-format
6388msgid "Second argument for topology `%s' is missing\n" 6202msgid "Second argument for topology `%s' is missing\n"
6389msgstr "" 6203msgstr ""
6390 6204
6391#: src/testbed/generate-underlay-topology.c:287 6205#: src/testbed/generate-underlay-topology.c:289
6392#, c-format 6206#, c-format
6393msgid "Invalid argument `%s'; expecting unsigned int\n" 6207msgid "Invalid argument `%s'; expecting unsigned int\n"
6394msgstr "" 6208msgstr ""
6395 6209
6396#: src/testbed/generate-underlay-topology.c:340 6210#: src/testbed/generate-underlay-topology.c:342
6397#: src/testbed/gnunet-testbed-profiler.c:281 6211#: src/testbed/gnunet-testbed-profiler.c:283
6398msgid "create COUNT number of peers" 6212msgid "create COUNT number of peers"
6399msgstr "" 6213msgstr ""
6400 6214
6401#: src/testbed/generate-underlay-topology.c:350 6215#: src/testbed/generate-underlay-topology.c:352
6402msgid "" 6216msgid ""
6403"Generates SQLite3 database representing a given underlay topology.\n" 6217"Generates SQLite3 database representing a given underlay topology.\n"
6404"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n" 6218"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n"
@@ -6422,83 +6236,83 @@ msgid ""
6422"content/topology-file-format\n" 6236"content/topology-file-format\n"
6423msgstr "" 6237msgstr ""
6424 6238
6425#: src/testbed/gnunet-daemon-latency-logger.c:313 6239#: src/testbed/gnunet-daemon-latency-logger.c:315
6426msgid "Daemon to log latency values of connections to neighbours" 6240msgid "Daemon to log latency values of connections to neighbours"
6427msgstr "" 6241msgstr ""
6428 6242
6429#: src/testbed/gnunet-daemon-testbed-blacklist.c:247 6243#: src/testbed/gnunet-daemon-testbed-blacklist.c:249
6430msgid "" 6244msgid ""
6431"Daemon to restrict incoming transport layer connections during testbed " 6245"Daemon to restrict incoming transport layer connections during testbed "
6432"deployments" 6246"deployments"
6433msgstr "" 6247msgstr ""
6434 6248
6435#: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 6249#: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
6436#: src/testing/testing.c:286 src/util/gnunet-ecc.c:310 6250#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
6437#, c-format 6251#, c-format
6438msgid "Incorrect hostkey file format: %s\n" 6252msgid "Incorrect hostkey file format: %s\n"
6439msgstr "" 6253msgstr ""
6440 6254
6441#: src/testbed/gnunet-daemon-testbed-underlay.c:469 6255#: src/testbed/gnunet-daemon-testbed-underlay.c:471
6442msgid "Daemon to restrict underlay network in testbed deployments" 6256msgid "Daemon to restrict underlay network in testbed deployments"
6443msgstr "" 6257msgstr ""
6444 6258
6445#: src/testbed/gnunet-service-testbed_cpustatus.c:726 6259#: src/testbed/gnunet-service-testbed_cpustatus.c:728
6446#, c-format 6260#, c-format
6447msgid "" 6261msgid ""
6448"Cannot open %s for writing load statistics. Not logging load statistics\n" 6262"Cannot open %s for writing load statistics. Not logging load statistics\n"
6449msgstr "" 6263msgstr ""
6450 6264
6451#: src/testbed/gnunet-service-testbed_peers.c:1157 6265#: src/testbed/gnunet-service-testbed_peers.c:1159
6452#, c-format 6266#, c-format
6453msgid "%s is stopped" 6267msgid "%s is stopped"
6454msgstr "" 6268msgstr ""
6455 6269
6456#: src/testbed/gnunet-service-testbed_peers.c:1159 6270#: src/testbed/gnunet-service-testbed_peers.c:1161
6457#, c-format 6271#, c-format
6458msgid "%s is starting" 6272msgid "%s is starting"
6459msgstr "" 6273msgstr ""
6460 6274
6461#: src/testbed/gnunet-service-testbed_peers.c:1161 6275#: src/testbed/gnunet-service-testbed_peers.c:1163
6462#, c-format 6276#, c-format
6463msgid "%s is stopping" 6277msgid "%s is stopping"
6464msgstr "" 6278msgstr ""
6465 6279
6466#: src/testbed/gnunet-service-testbed_peers.c:1163 6280#: src/testbed/gnunet-service-testbed_peers.c:1165
6467#, c-format 6281#, c-format
6468msgid "%s is starting already" 6282msgid "%s is starting already"
6469msgstr "" 6283msgstr ""
6470 6284
6471#: src/testbed/gnunet-service-testbed_peers.c:1165 6285#: src/testbed/gnunet-service-testbed_peers.c:1167
6472#, c-format 6286#, c-format
6473msgid "%s is stopping already" 6287msgid "%s is stopping already"
6474msgstr "" 6288msgstr ""
6475 6289
6476#: src/testbed/gnunet-service-testbed_peers.c:1167 6290#: src/testbed/gnunet-service-testbed_peers.c:1169
6477#, c-format 6291#, c-format
6478msgid "%s is started already" 6292msgid "%s is started already"
6479msgstr "" 6293msgstr ""
6480 6294
6481#: src/testbed/gnunet-service-testbed_peers.c:1169 6295#: src/testbed/gnunet-service-testbed_peers.c:1171
6482#, c-format 6296#, c-format
6483msgid "%s is stopped already" 6297msgid "%s is stopped already"
6484msgstr "" 6298msgstr ""
6485 6299
6486#: src/testbed/gnunet-service-testbed_peers.c:1171 6300#: src/testbed/gnunet-service-testbed_peers.c:1173
6487#, c-format 6301#, c-format
6488msgid "%s service is not known to ARM" 6302msgid "%s service is not known to ARM"
6489msgstr "" 6303msgstr ""
6490 6304
6491#: src/testbed/gnunet-service-testbed_peers.c:1173 6305#: src/testbed/gnunet-service-testbed_peers.c:1175
6492#, c-format 6306#, c-format
6493msgid "%s service failed to start" 6307msgid "%s service failed to start"
6494msgstr "" 6308msgstr ""
6495 6309
6496#: src/testbed/gnunet-service-testbed_peers.c:1175 6310#: src/testbed/gnunet-service-testbed_peers.c:1177
6497#, c-format 6311#, c-format
6498msgid "%s service can't be started because ARM is shutting down" 6312msgid "%s service can't be started because ARM is shutting down"
6499msgstr "" 6313msgstr ""
6500 6314
6501#: src/testbed/gnunet-service-testbed_peers.c:1177 6315#: src/testbed/gnunet-service-testbed_peers.c:1179
6502#, c-format 6316#, c-format
6503msgid "%.s Unknown result code." 6317msgid "%.s Unknown result code."
6504msgstr "" 6318msgstr ""
@@ -6512,173 +6326,173 @@ msgstr ""
6512msgid "Spawning process `%s'\n" 6326msgid "Spawning process `%s'\n"
6513msgstr "" 6327msgstr ""
6514 6328
6515#: src/testbed/gnunet-testbed-profiler.c:287 6329#: src/testbed/gnunet-testbed-profiler.c:289
6516msgid "tolerate COUNT number of continious timeout failures" 6330msgid "tolerate COUNT number of continious timeout failures"
6517msgstr "" 6331msgstr ""
6518 6332
6519#: src/testbed/gnunet-testbed-profiler.c:292 6333#: src/testbed/gnunet-testbed-profiler.c:294
6520msgid "" 6334msgid ""
6521"run profiler in non-interactive mode where upon testbed setup the profiler " 6335"run profiler in non-interactive mode where upon testbed setup the profiler "
6522"does not wait for a keystroke but continues to run until a termination " 6336"does not wait for a keystroke but continues to run until a termination "
6523"signal is received" 6337"signal is received"
6524msgstr "" 6338msgstr ""
6525 6339
6526#: src/testbed/testbed_api.c:408 6340#: src/testbed/testbed_api.c:410
6527#, c-format 6341#, c-format
6528msgid "Adding host %u failed with error: %s\n" 6342msgid "Adding host %u failed with error: %s\n"
6529msgstr "" 6343msgstr ""
6530 6344
6531#: src/testbed/testbed_api_hosts.c:411 6345#: src/testbed/testbed_api_hosts.c:413
6532#, c-format 6346#, c-format
6533msgid "Hosts file %s not found\n" 6347msgid "Hosts file %s not found\n"
6534msgstr "" 6348msgstr ""
6535 6349
6536#: src/testbed/testbed_api_hosts.c:419 6350#: src/testbed/testbed_api_hosts.c:421
6537#, c-format 6351#, c-format
6538msgid "Hosts file %s has no data\n" 6352msgid "Hosts file %s has no data\n"
6539msgstr "" 6353msgstr ""
6540 6354
6541#: src/testbed/testbed_api_hosts.c:426 6355#: src/testbed/testbed_api_hosts.c:428
6542#, c-format 6356#, c-format
6543msgid "Hosts file %s cannot be read\n" 6357msgid "Hosts file %s cannot be read\n"
6544msgstr "" 6358msgstr ""
6545 6359
6546#: src/testbed/testbed_api_hosts.c:567 6360#: src/testbed/testbed_api_hosts.c:569
6547#, c-format 6361#, c-format
6548msgid "The function %s is only available when compiled with (--with-ll)\n" 6362msgid "The function %s is only available when compiled with (--with-ll)\n"
6549msgstr "" 6363msgstr ""
6550 6364
6551#: src/testbed/testbed_api_testbed.c:816 6365#: src/testbed/testbed_api_testbed.c:818
6552msgid "Linking controllers failed. Exiting" 6366msgid "Linking controllers failed. Exiting"
6553msgstr "" 6367msgstr ""
6554 6368
6555#: src/testbed/testbed_api_testbed.c:984 6369#: src/testbed/testbed_api_testbed.c:986
6556#, c-format 6370#, c-format
6557msgid "Host registration failed for a host. Error: %s\n" 6371msgid "Host registration failed for a host. Error: %s\n"
6558msgstr "" 6372msgstr ""
6559 6373
6560#: src/testbed/testbed_api_testbed.c:1050 6374#: src/testbed/testbed_api_testbed.c:1052
6561msgid "Controller crash detected. Shutting down.\n" 6375msgid "Controller crash detected. Shutting down.\n"
6562msgstr "" 6376msgstr ""
6563 6377
6564#: src/testbed/testbed_api_testbed.c:1139 6378#: src/testbed/testbed_api_testbed.c:1141
6565#, c-format 6379#, c-format
6566msgid "Host %s cannot start testbed\n" 6380msgid "Host %s cannot start testbed\n"
6567msgstr "" 6381msgstr ""
6568 6382
6569#: src/testbed/testbed_api_testbed.c:1143 6383#: src/testbed/testbed_api_testbed.c:1145
6570msgid "Testbed cannot be started on localhost\n" 6384msgid "Testbed cannot be started on localhost\n"
6571msgstr "" 6385msgstr ""
6572 6386
6573#: src/testbed/testbed_api_testbed.c:1181 6387#: src/testbed/testbed_api_testbed.c:1183
6574msgid "Cannot start the master controller" 6388msgid "Cannot start the master controller"
6575msgstr "" 6389msgstr ""
6576 6390
6577#: src/testbed/testbed_api_testbed.c:1199 6391#: src/testbed/testbed_api_testbed.c:1201
6578msgid "Shutting down testbed due to timeout while setup.\n" 6392msgid "Shutting down testbed due to timeout while setup.\n"
6579msgstr "" 6393msgstr ""
6580 6394
6581#: src/testbed/testbed_api_testbed.c:1259 6395#: src/testbed/testbed_api_testbed.c:1261
6582msgid "No hosts loaded from LoadLeveler. Need at least one host\n" 6396msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
6583msgstr "" 6397msgstr ""
6584 6398
6585#: src/testbed/testbed_api_testbed.c:1271 6399#: src/testbed/testbed_api_testbed.c:1273
6586msgid "No hosts loaded. Need at least one host\n" 6400msgid "No hosts loaded. Need at least one host\n"
6587msgstr "" 6401msgstr ""
6588 6402
6589#: src/testbed/testbed_api_testbed.c:1295 6403#: src/testbed/testbed_api_testbed.c:1297
6590msgid "Specified topology must be supported by testbed" 6404msgid "Specified topology must be supported by testbed"
6591msgstr "" 6405msgstr ""
6592 6406
6593#: src/testbed/testbed_api_testbed.c:1345 6407#: src/testbed/testbed_api_testbed.c:1347
6594#, c-format 6408#, c-format
6595msgid "" 6409msgid ""
6596"Maximum number of edges a peer can have in a scale free topology cannot be " 6410"Maximum number of edges a peer can have in a scale free topology cannot be "
6597"more than %u. Given `%s = %llu'" 6411"more than %u. Given `%s = %llu'"
6598msgstr "" 6412msgstr ""
6599 6413
6600#: src/testbed/testbed_api_testbed.c:1361 6414#: src/testbed/testbed_api_testbed.c:1363
6601#, c-format 6415#, c-format
6602msgid "" 6416msgid ""
6603"The number of edges that can established when adding a new node to scale " 6417"The number of edges that can established when adding a new node to scale "
6604"free topology cannot be more than %u. Given `%s = %llu'" 6418"free topology cannot be more than %u. Given `%s = %llu'"
6605msgstr "" 6419msgstr ""
6606 6420
6607#: src/testbed/testbed_api_topology.c:1026 6421#: src/testbed/testbed_api_topology.c:1028
6608#, c-format 6422#, c-format
6609msgid "Topology file %s not found\n" 6423msgid "Topology file %s not found\n"
6610msgstr "" 6424msgstr ""
6611 6425
6612#: src/testbed/testbed_api_topology.c:1034 6426#: src/testbed/testbed_api_topology.c:1036
6613#, c-format 6427#, c-format
6614msgid "Topology file %s has no data\n" 6428msgid "Topology file %s has no data\n"
6615msgstr "" 6429msgstr ""
6616 6430
6617#: src/testbed/testbed_api_topology.c:1042 6431#: src/testbed/testbed_api_topology.c:1044
6618#, c-format 6432#, c-format
6619msgid "Topology file %s cannot be read\n" 6433msgid "Topology file %s cannot be read\n"
6620msgstr "" 6434msgstr ""
6621 6435
6622#: src/testbed/testbed_api_topology.c:1064 6436#: src/testbed/testbed_api_topology.c:1066
6623#, c-format 6437#, c-format
6624msgid "Failed to read peer index from toology file: %s" 6438msgid "Failed to read peer index from toology file: %s"
6625msgstr "" 6439msgstr ""
6626 6440
6627#: src/testbed/testbed_api_topology.c:1073 6441#: src/testbed/testbed_api_topology.c:1075
6628#: src/testbed/testbed_api_topology.c:1097 6442#: src/testbed/testbed_api_topology.c:1099
6629#, c-format 6443#, c-format
6630msgid "Value in given topology file: %s out of range\n" 6444msgid "Value in given topology file: %s out of range\n"
6631msgstr "" 6445msgstr ""
6632 6446
6633#: src/testbed/testbed_api_topology.c:1079 6447#: src/testbed/testbed_api_topology.c:1081
6634#: src/testbed/testbed_api_topology.c:1103 6448#: src/testbed/testbed_api_topology.c:1105
6635#, c-format 6449#, c-format
6636msgid "Failed to read peer index from topology file: %s" 6450msgid "Failed to read peer index from topology file: %s"
6637msgstr "" 6451msgstr ""
6638 6452
6639#: src/testbed/testbed_api_topology.c:1085 6453#: src/testbed/testbed_api_topology.c:1087
6640#: src/testbed/testbed_api_topology.c:1109 6454#: src/testbed/testbed_api_topology.c:1111
6641msgid "Topology file needs more peers than given ones\n" 6455msgid "Topology file needs more peers than given ones\n"
6642msgstr "" 6456msgstr ""
6643 6457
6644#: src/testbed/testbed_api_topology.c:1143 6458#: src/testbed/testbed_api_topology.c:1145
6645#, c-format 6459#, c-format
6646msgid "Ignoring to connect peer %u to peer %u\n" 6460msgid "Ignoring to connect peer %u to peer %u\n"
6647msgstr "" 6461msgstr ""
6648 6462
6649#: src/testing/gnunet-testing.c:171 6463#: src/testing/gnunet-testing.c:173
6650#, c-format 6464#, c-format
6651msgid "Could not extract hostkey %u (offset too large?)\n" 6465msgid "Could not extract hostkey %u (offset too large?)\n"
6652msgstr "" 6466msgstr ""
6653 6467
6654#: src/testing/gnunet-testing.c:251 6468#: src/testing/gnunet-testing.c:253
6655#, c-format 6469#, c-format
6656msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n" 6470msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n"
6657msgstr "" 6471msgstr ""
6658 6472
6659#: src/testing/gnunet-testing.c:352 6473#: src/testing/gnunet-testing.c:354
6660msgid "create unique configuration files" 6474msgid "create unique configuration files"
6661msgstr "" 6475msgstr ""
6662 6476
6663#: src/testing/gnunet-testing.c:357 6477#: src/testing/gnunet-testing.c:359
6664msgid "extract hostkey file from pre-computed hostkey list" 6478msgid "extract hostkey file from pre-computed hostkey list"
6665msgstr "" 6479msgstr ""
6666 6480
6667#: src/testing/gnunet-testing.c:363 6481#: src/testing/gnunet-testing.c:365
6668msgid "" 6482msgid ""
6669"number of unique configuration files to create, or number of the hostkey to " 6483"number of unique configuration files to create, or number of the hostkey to "
6670"extract" 6484"extract"
6671msgstr "" 6485msgstr ""
6672 6486
6673#: src/testing/gnunet-testing.c:370 6487#: src/testing/gnunet-testing.c:372
6674msgid "configuration template" 6488msgid "configuration template"
6675msgstr "" 6489msgstr ""
6676 6490
6677#: src/testing/gnunet-testing.c:376 6491#: src/testing/gnunet-testing.c:378
6678msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)" 6492msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)"
6679msgstr "" 6493msgstr ""
6680 6494
6681#: src/testing/gnunet-testing.c:389 6495#: src/testing/gnunet-testing.c:391
6682msgid "Command line tool to access the testing library" 6496msgid "Command line tool to access the testing library"
6683msgstr "" 6497msgstr ""
6684 6498
@@ -6686,1496 +6500,1520 @@ msgstr ""
6686msgid "list COUNT number of keys" 6500msgid "list COUNT number of keys"
6687msgstr "" 6501msgstr ""
6688 6502
6689#: src/testing/testing.c:270 6503#: src/testing/testing.c:272
6690#, c-format 6504#, c-format
6691msgid "Hostkeys file not found: %s\n" 6505msgid "Hostkeys file not found: %s\n"
6692msgstr "" 6506msgstr ""
6693 6507
6694#: src/testing/testing.c:713 6508#: src/testing/testing.c:715
6695#, c-format 6509#, c-format
6696msgid "Key number %u does not exist\n" 6510msgid "Key number %u does not exist\n"
6697msgstr "" 6511msgstr ""
6698 6512
6699#: src/testing/testing.c:1157 6513#: src/testing/testing.c:1159
6700#, c-format 6514#, c-format
6701msgid "" 6515msgid ""
6702"You attempted to create a testbed with more than %u hosts. Please " 6516"You attempted to create a testbed with more than %u hosts. Please "
6703"precompute more hostkeys first.\n" 6517"precompute more hostkeys first.\n"
6704msgstr "" 6518msgstr ""
6705 6519
6706#: src/testing/testing.c:1166 6520#: src/testing/testing.c:1168
6707#, c-format 6521#, c-format
6708msgid "Failed to initialize hostkey for peer %u\n" 6522msgid "Failed to initialize hostkey for peer %u\n"
6709msgstr "" 6523msgstr ""
6710 6524
6711#: src/testing/testing.c:1176 6525#: src/testing/testing.c:1178
6712msgid "PRIVATE_KEY option in PEER section missing in configuration\n" 6526msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
6713msgstr "" 6527msgstr ""
6714 6528
6715#: src/testing/testing.c:1189 6529#: src/testing/testing.c:1191
6716msgid "Failed to create configuration for peer (not enough free ports?)\n" 6530msgid "Failed to create configuration for peer (not enough free ports?)\n"
6717msgstr "" 6531msgstr ""
6718 6532
6719#: src/testing/testing.c:1203 6533#: src/testing/testing.c:1205
6720#, c-format 6534#, c-format
6721msgid "Cannot open hostkey file `%s': %s\n" 6535msgid "Cannot open hostkey file `%s': %s\n"
6722msgstr "" 6536msgstr ""
6723 6537
6724#: src/testing/testing.c:1215 6538#: src/testing/testing.c:1217
6725#, c-format 6539#, c-format
6726msgid "Failed to write hostkey file for peer %u: %s\n" 6540msgid "Failed to write hostkey file for peer %u: %s\n"
6727msgstr "" 6541msgstr ""
6728 6542
6729#: src/testing/testing.c:1240 6543#: src/testing/testing.c:1242
6730#, c-format 6544#, c-format
6731msgid "Failed to write configuration file `%s' for peer %u: %s\n" 6545msgid "Failed to write configuration file `%s' for peer %u: %s\n"
6732msgstr "" 6546msgstr ""
6733 6547
6734#: src/testing/testing.c:1342 6548#: src/testing/testing.c:1344
6735#, c-format 6549#, c-format
6736msgid "Failed to start `%s': %s\n" 6550msgid "Failed to start `%s': %s\n"
6737msgstr "" 6551msgstr ""
6738 6552
6739#: src/testing/testing.c:1645 6553#: src/testing/testing.c:1647
6740#, c-format 6554#, c-format
6741msgid "Failed to load configuration from %s\n" 6555msgid "Failed to load configuration from %s\n"
6742msgstr "" 6556msgstr ""
6743 6557
6744#: src/topology/friends.c:124 6558#: src/topology/friends.c:126
6745#, c-format 6559#, c-format
6746msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n" 6560msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n"
6747msgstr "" 6561msgstr ""
6748 6562
6749#: src/topology/friends.c:178 6563#: src/topology/friends.c:180
6750#, c-format 6564#, c-format
6751msgid "Directory for file `%s' does not seem to be writable.\n" 6565msgid "Directory for file `%s' does not seem to be writable.\n"
6752msgstr "" 6566msgstr ""
6753 6567
6754#: src/topology/gnunet-daemon-topology.c:228 6568#: src/topology/gnunet-daemon-topology.c:230
6755msgid "# peers blacklisted" 6569msgid "# peers blacklisted"
6756msgstr "" 6570msgstr ""
6757 6571
6758#: src/topology/gnunet-daemon-topology.c:342 6572#: src/topology/gnunet-daemon-topology.c:344
6759msgid "# connect requests issued to ATS" 6573msgid "# connect requests issued to ATS"
6760msgstr "" 6574msgstr ""
6761 6575
6762#: src/topology/gnunet-daemon-topology.c:536 6576#: src/topology/gnunet-daemon-topology.c:538
6763msgid "# HELLO messages gossipped" 6577msgid "# HELLO messages gossipped"
6764msgstr "" 6578msgstr ""
6765 6579
6766#: src/topology/gnunet-daemon-topology.c:638 6580#: src/topology/gnunet-daemon-topology.c:640
6767#: src/topology/gnunet-daemon-topology.c:724 6581#: src/topology/gnunet-daemon-topology.c:726
6768msgid "# friends connected" 6582msgid "# friends connected"
6769msgstr "" 6583msgstr ""
6770 6584
6771#: src/topology/gnunet-daemon-topology.c:921 6585#: src/topology/gnunet-daemon-topology.c:923
6772msgid "Failed to connect to core service, can not manage topology!\n" 6586msgid "Failed to connect to core service, can not manage topology!\n"
6773msgstr "" 6587msgstr ""
6774 6588
6775#: src/topology/gnunet-daemon-topology.c:954 6589#: src/topology/gnunet-daemon-topology.c:956
6776#, c-format 6590#, c-format
6777msgid "Found myself `%s' in friend list (useless, ignored)\n" 6591msgid "Found myself `%s' in friend list (useless, ignored)\n"
6778msgstr "" 6592msgstr ""
6779 6593
6780#: src/topology/gnunet-daemon-topology.c:961 6594#: src/topology/gnunet-daemon-topology.c:963
6781#, c-format 6595#, c-format
6782msgid "Found friend `%s' in configuration\n" 6596msgid "Found friend `%s' in configuration\n"
6783msgstr "" 6597msgstr ""
6784 6598
6785#: src/topology/gnunet-daemon-topology.c:983 6599#: src/topology/gnunet-daemon-topology.c:985
6786msgid "Encountered errors parsing friends list!\n" 6600msgid "Encountered errors parsing friends list!\n"
6787msgstr "" 6601msgstr ""
6788 6602
6789#: src/topology/gnunet-daemon-topology.c:986 6603#: src/topology/gnunet-daemon-topology.c:988
6790msgid "# friends in configuration" 6604msgid "# friends in configuration"
6791msgstr "" 6605msgstr ""
6792 6606
6793#: src/topology/gnunet-daemon-topology.c:993 6607#: src/topology/gnunet-daemon-topology.c:995
6794msgid "" 6608msgid ""
6795"Fewer friends specified than required by minimum friend count. Will only " 6609"Fewer friends specified than required by minimum friend count. Will only "
6796"connect to friends.\n" 6610"connect to friends.\n"
6797msgstr "" 6611msgstr ""
6798 6612
6799#: src/topology/gnunet-daemon-topology.c:999 6613#: src/topology/gnunet-daemon-topology.c:1001
6800msgid "" 6614msgid ""
6801"More friendly connections required than target total number of connections.\n" 6615"More friendly connections required than target total number of connections.\n"
6802msgstr "" 6616msgstr ""
6803 6617
6804#: src/topology/gnunet-daemon-topology.c:1052 6618#: src/topology/gnunet-daemon-topology.c:1054
6805#: src/transport/plugin_transport_wlan.c:1515 6619#: src/transport/plugin_transport_wlan.c:1517
6806msgid "# HELLO messages received" 6620msgid "# HELLO messages received"
6807msgstr "" 6621msgstr ""
6808 6622
6809#: src/topology/gnunet-daemon-topology.c:1230 6623#: src/topology/gnunet-daemon-topology.c:1233
6810msgid "GNUnet topology control" 6624msgid "GNUnet topology control"
6811msgstr "" 6625msgstr ""
6812 6626
6813#: src/transport/gnunet-service-transport_ats.c:139 6627#: src/transport/gnunet-communicator-tcp.c:2329
6628#: src/transport/gnunet-communicator-udp.c:2883
6629#: src/transport/gnunet-service-tng.c:4679
6630#: src/transport/gnunet-service-transport.c:2782
6631msgid "Transport service is lacking key configuration settings. Exiting.\n"
6632msgstr ""
6633
6634#: src/transport/gnunet-communicator-tcp.c:2393
6635msgid "GNUnet TCP communicator"
6636msgstr ""
6637
6638#: src/transport/gnunet-communicator-udp.c:2954
6639msgid "GNUnet UDP communicator"
6640msgstr ""
6641
6642#: src/transport/gnunet-communicator-unix.c:802
6643msgid ""
6644"Maximum number of UNIX connections exceeded, dropping incoming message\n"
6645msgstr ""
6646
6647#: src/transport/gnunet-communicator-unix.c:1073
6648#: src/transport/plugin_transport_unix.c:1403
6649#, c-format
6650msgid "Cannot create path to `%s'\n"
6651msgstr ""
6652
6653#: src/transport/gnunet-communicator-unix.c:1162
6654msgid "GNUnet UNIX domain socket communicator"
6655msgstr ""
6656
6657#: src/transport/gnunet-service-transport_ats.c:141
6814msgid "# Addresses given to ATS" 6658msgid "# Addresses given to ATS"
6815msgstr "" 6659msgstr ""
6816 6660
6817#: src/transport/gnunet-service-transport.c:446 6661#: src/transport/gnunet-service-transport.c:448
6818msgid "# messages dropped due to slow client" 6662msgid "# messages dropped due to slow client"
6819msgstr "" 6663msgstr ""
6820 6664
6821#: src/transport/gnunet-service-transport.c:816 6665#: src/transport/gnunet-service-transport.c:817
6822msgid "# bytes payload dropped (other peer was not connected)" 6666msgid "# bytes payload dropped (other peer was not connected)"
6823msgstr "" 6667msgstr ""
6824 6668
6825#: src/transport/gnunet-service-transport.c:1549 6669#: src/transport/gnunet-service-transport.c:1550
6826msgid "# bytes payload discarded due to not connected peer" 6670msgid "# bytes payload discarded due to not connected peer"
6827msgstr "" 6671msgstr ""
6828 6672
6829#: src/transport/gnunet-service-transport.c:1709 6673#: src/transport/gnunet-service-transport.c:1710
6830msgid "# bytes total received" 6674msgid "# bytes total received"
6831msgstr "" 6675msgstr ""
6832 6676
6833#: src/transport/gnunet-service-transport.c:1806 6677#: src/transport/gnunet-service-transport.c:1807
6834msgid "# bytes payload received" 6678msgid "# bytes payload received"
6835msgstr "" 6679msgstr ""
6836 6680
6837#: src/transport/gnunet-service-transport.c:2123 6681#: src/transport/gnunet-service-transport.c:2124
6838#: src/transport/gnunet-service-transport.c:2595 6682#: src/transport/gnunet-service-transport.c:2596
6839msgid "# disconnects due to blacklist" 6683msgid "# disconnects due to blacklist"
6840msgstr "" 6684msgstr ""
6841 6685
6842#: src/transport/gnunet-service-transport.c:2599 6686#: src/transport/gnunet-service-transport.c:2600
6843#, c-format 6687#, c-format
6844msgid "Disallowing connection to peer `%s' on transport %s\n" 6688msgid "Disallowing connection to peer `%s' on transport %s\n"
6845msgstr "" 6689msgstr ""
6846 6690
6847#: src/transport/gnunet-service-transport.c:2707 6691#: src/transport/gnunet-service-transport.c:2708
6848#, c-format 6692#, c-format
6849msgid "Adding blacklisting entry for peer `%s'\n" 6693msgid "Adding blacklisting entry for peer `%s'\n"
6850msgstr "" 6694msgstr ""
6851 6695
6852#: src/transport/gnunet-service-transport.c:2716 6696#: src/transport/gnunet-service-transport.c:2717
6853#, c-format 6697#, c-format
6854msgid "Adding blacklisting entry for peer `%s':`%s'\n" 6698msgid "Adding blacklisting entry for peer `%s':`%s'\n"
6855msgstr "" 6699msgstr ""
6856 6700
6857#: src/transport/gnunet-service-transport.c:2781 6701#: src/transport/gnunet-service-transport_hello.c:195
6858msgid "Transport service is lacking key configuration settings. Exiting.\n"
6859msgstr ""
6860
6861#: src/transport/gnunet-service-transport_hello.c:193
6862msgid "# refreshed my HELLO" 6702msgid "# refreshed my HELLO"
6863msgstr "" 6703msgstr ""
6864 6704
6865#: src/transport/gnunet-service-transport_neighbours.c:804 6705#: src/transport/gnunet-service-transport_neighbours.c:805
6866msgid "# session creation failed" 6706msgid "# session creation failed"
6867msgstr "" 6707msgstr ""
6868 6708
6869#: src/transport/gnunet-service-transport_neighbours.c:1051 6709#: src/transport/gnunet-service-transport_neighbours.c:1052
6870msgid "# DISCONNECT messages sent" 6710msgid "# DISCONNECT messages sent"
6871msgstr "" 6711msgstr ""
6872 6712
6873#: src/transport/gnunet-service-transport_neighbours.c:1174 6713#: src/transport/gnunet-service-transport_neighbours.c:1175
6874msgid "# disconnects due to quota of 0" 6714msgid "# disconnects due to quota of 0"
6875msgstr "" 6715msgstr ""
6876 6716
6877#: src/transport/gnunet-service-transport_neighbours.c:1322 6717#: src/transport/gnunet-service-transport_neighbours.c:1323
6878#: src/transport/gnunet-service-transport_neighbours.c:1783 6718#: src/transport/gnunet-service-transport_neighbours.c:1784
6879msgid "# bytes in message queue for other peers" 6719msgid "# bytes in message queue for other peers"
6880msgstr "" 6720msgstr ""
6881 6721
6882#: src/transport/gnunet-service-transport_neighbours.c:1327 6722#: src/transport/gnunet-service-transport_neighbours.c:1328
6883msgid "# messages transmitted to other peers" 6723msgid "# messages transmitted to other peers"
6884msgstr "" 6724msgstr ""
6885 6725
6886#: src/transport/gnunet-service-transport_neighbours.c:1333 6726#: src/transport/gnunet-service-transport_neighbours.c:1334
6887msgid "# transmission failures for messages to other peers" 6727msgid "# transmission failures for messages to other peers"
6888msgstr "" 6728msgstr ""
6889 6729
6890#: src/transport/gnunet-service-transport_neighbours.c:1393 6730#: src/transport/gnunet-service-transport_neighbours.c:1394
6891msgid "# messages timed out while in transport queue" 6731msgid "# messages timed out while in transport queue"
6892msgstr "" 6732msgstr ""
6893 6733
6894#: src/transport/gnunet-service-transport_neighbours.c:1477 6734#: src/transport/gnunet-service-transport_neighbours.c:1478
6895msgid "# KEEPALIVES sent" 6735msgid "# KEEPALIVES sent"
6896msgstr "" 6736msgstr ""
6897 6737
6898#: src/transport/gnunet-service-transport_neighbours.c:1513 6738#: src/transport/gnunet-service-transport_neighbours.c:1514
6899msgid "# KEEPALIVE messages discarded (peer unknown)" 6739msgid "# KEEPALIVE messages discarded (peer unknown)"
6900msgstr "" 6740msgstr ""
6901 6741
6902#: src/transport/gnunet-service-transport_neighbours.c:1521 6742#: src/transport/gnunet-service-transport_neighbours.c:1522
6903msgid "# KEEPALIVE messages discarded (no session)" 6743msgid "# KEEPALIVE messages discarded (no session)"
6904msgstr "" 6744msgstr ""
6905 6745
6906#: src/transport/gnunet-service-transport_neighbours.c:1531 6746#: src/transport/gnunet-service-transport_neighbours.c:1532
6907msgid "# KEEPALIVES received in good order" 6747msgid "# KEEPALIVES received in good order"
6908msgstr "" 6748msgstr ""
6909 6749
6910#: src/transport/gnunet-service-transport_neighbours.c:1576 6750#: src/transport/gnunet-service-transport_neighbours.c:1577
6911msgid "# KEEPALIVE_RESPONSEs discarded (not connected)" 6751msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
6912msgstr "" 6752msgstr ""
6913 6753
6914#: src/transport/gnunet-service-transport_neighbours.c:1585 6754#: src/transport/gnunet-service-transport_neighbours.c:1586
6915msgid "# KEEPALIVE_RESPONSEs discarded (not expected)" 6755msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
6916msgstr "" 6756msgstr ""
6917 6757
6918#: src/transport/gnunet-service-transport_neighbours.c:1593 6758#: src/transport/gnunet-service-transport_neighbours.c:1594
6919msgid "# KEEPALIVE_RESPONSEs discarded (address changed)" 6759msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
6920msgstr "" 6760msgstr ""
6921 6761
6922#: src/transport/gnunet-service-transport_neighbours.c:1602 6762#: src/transport/gnunet-service-transport_neighbours.c:1603
6923msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)" 6763msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
6924msgstr "" 6764msgstr ""
6925 6765
6926#: src/transport/gnunet-service-transport_neighbours.c:1607 6766#: src/transport/gnunet-service-transport_neighbours.c:1608
6927msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)" 6767msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
6928msgstr "" 6768msgstr ""
6929 6769
6930#: src/transport/gnunet-service-transport_neighbours.c:1613 6770#: src/transport/gnunet-service-transport_neighbours.c:1614
6931msgid "# KEEPALIVE_RESPONSEs received (OK)" 6771msgid "# KEEPALIVE_RESPONSEs received (OK)"
6932msgstr "" 6772msgstr ""
6933 6773
6934#: src/transport/gnunet-service-transport_neighbours.c:1680 6774#: src/transport/gnunet-service-transport_neighbours.c:1681
6935msgid "# messages discarded due to lack of neighbour record" 6775msgid "# messages discarded due to lack of neighbour record"
6936msgstr "" 6776msgstr ""
6937 6777
6938#: src/transport/gnunet-service-transport_neighbours.c:1714 6778#: src/transport/gnunet-service-transport_neighbours.c:1715
6939msgid "# bandwidth quota violations by other peers" 6779msgid "# bandwidth quota violations by other peers"
6940msgstr "" 6780msgstr ""
6941 6781
6942#: src/transport/gnunet-service-transport_neighbours.c:1729 6782#: src/transport/gnunet-service-transport_neighbours.c:1730
6943msgid "# ms throttling suggested" 6783msgid "# ms throttling suggested"
6944msgstr "" 6784msgstr ""
6945 6785
6946#: src/transport/gnunet-service-transport_neighbours.c:1852 6786#: src/transport/gnunet-service-transport_neighbours.c:1853
6947#, c-format 6787#, c-format
6948msgid "Failed to send SYN message to peer `%s'\n" 6788msgid "Failed to send SYN message to peer `%s'\n"
6949msgstr "" 6789msgstr ""
6950 6790
6951#: src/transport/gnunet-service-transport_neighbours.c:1872 6791#: src/transport/gnunet-service-transport_neighbours.c:1873
6952msgid "# Failed attempts to switch addresses (failed to send SYN CONT)" 6792msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
6953msgstr "" 6793msgstr ""
6954 6794
6955#: src/transport/gnunet-service-transport_neighbours.c:1911 6795#: src/transport/gnunet-service-transport_neighbours.c:1912
6956#, fuzzy 6796#, fuzzy
6957msgid "# SYN messages sent" 6797msgid "# SYN messages sent"
6958msgstr "# messaggi PONG decrittati" 6798msgstr "# messaggi PONG decrittati"
6959 6799
6960#: src/transport/gnunet-service-transport_neighbours.c:1928 6800#: src/transport/gnunet-service-transport_neighbours.c:1929
6961#, c-format 6801#, c-format
6962msgid "Failed to transmit SYN message to %s\n" 6802msgid "Failed to transmit SYN message to %s\n"
6963msgstr "" 6803msgstr ""
6964 6804
6965#: src/transport/gnunet-service-transport_neighbours.c:1958 6805#: src/transport/gnunet-service-transport_neighbours.c:1959
6966msgid "# Failed attempts to switch addresses (failed to send SYN)" 6806msgid "# Failed attempts to switch addresses (failed to send SYN)"
6967msgstr "" 6807msgstr ""
6968 6808
6969#: src/transport/gnunet-service-transport_neighbours.c:2026 6809#: src/transport/gnunet-service-transport_neighbours.c:2027
6970#, c-format 6810#, c-format
6971msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n" 6811msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
6972msgstr "" 6812msgstr ""
6973 6813
6974#: src/transport/gnunet-service-transport_neighbours.c:2080 6814#: src/transport/gnunet-service-transport_neighbours.c:2081
6975#, fuzzy 6815#, fuzzy
6976msgid "# SYN_ACK messages sent" 6816msgid "# SYN_ACK messages sent"
6977msgstr "# messaggi PONG decrittati" 6817msgstr "# messaggi PONG decrittati"
6978 6818
6979#: src/transport/gnunet-service-transport_neighbours.c:2097 6819#: src/transport/gnunet-service-transport_neighbours.c:2098
6980#, c-format 6820#, c-format
6981msgid "Failed to transmit SYN_ACK message to %s\n" 6821msgid "Failed to transmit SYN_ACK message to %s\n"
6982msgstr "" 6822msgstr ""
6983 6823
6984#: src/transport/gnunet-service-transport_neighbours.c:2260 6824#: src/transport/gnunet-service-transport_neighbours.c:2261
6985#, fuzzy 6825#, fuzzy
6986msgid "# SYN messages received" 6826msgid "# SYN messages received"
6987msgstr "# messaggi PONG ricevuti" 6827msgstr "# messaggi PONG ricevuti"
6988 6828
6989#: src/transport/gnunet-service-transport_neighbours.c:2265 6829#: src/transport/gnunet-service-transport_neighbours.c:2266
6990#, c-format 6830#, c-format
6991msgid "SYN request from peer `%s' ignored due impending shutdown\n" 6831msgid "SYN request from peer `%s' ignored due impending shutdown\n"
6992msgstr "" 6832msgstr ""
6993 6833
6994#: src/transport/gnunet-service-transport_neighbours.c:2652 6834#: src/transport/gnunet-service-transport_neighbours.c:2653
6995msgid "# Attempts to switch addresses" 6835msgid "# Attempts to switch addresses"
6996msgstr "" 6836msgstr ""
6997 6837
6998#: src/transport/gnunet-service-transport_neighbours.c:3137 6838#: src/transport/gnunet-service-transport_neighbours.c:3138
6999#, fuzzy 6839#, fuzzy
7000msgid "# SYN_ACK messages received" 6840msgid "# SYN_ACK messages received"
7001msgstr "# messaggi PONG ricevuti" 6841msgstr "# messaggi PONG ricevuti"
7002 6842
7003#: src/transport/gnunet-service-transport_neighbours.c:3145 6843#: src/transport/gnunet-service-transport_neighbours.c:3146
7004msgid "# unexpected SYN_ACK messages (no peer)" 6844msgid "# unexpected SYN_ACK messages (no peer)"
7005msgstr "" 6845msgstr ""
7006 6846
7007#: src/transport/gnunet-service-transport_neighbours.c:3163 6847#: src/transport/gnunet-service-transport_neighbours.c:3164
7008#: src/transport/gnunet-service-transport_neighbours.c:3187 6848#: src/transport/gnunet-service-transport_neighbours.c:3188
7009msgid "# unexpected SYN_ACK messages (not ready)" 6849msgid "# unexpected SYN_ACK messages (not ready)"
7010msgstr "" 6850msgstr ""
7011 6851
7012#: src/transport/gnunet-service-transport_neighbours.c:3199 6852#: src/transport/gnunet-service-transport_neighbours.c:3200
7013msgid "# unexpected SYN_ACK messages (waiting on ATS)" 6853msgid "# unexpected SYN_ACK messages (waiting on ATS)"
7014msgstr "" 6854msgstr ""
7015 6855
7016#: src/transport/gnunet-service-transport_neighbours.c:3224 6856#: src/transport/gnunet-service-transport_neighbours.c:3225
7017msgid "# Successful attempts to switch addresses" 6857msgid "# Successful attempts to switch addresses"
7018msgstr "" 6858msgstr ""
7019 6859
7020#: src/transport/gnunet-service-transport_neighbours.c:3237 6860#: src/transport/gnunet-service-transport_neighbours.c:3238
7021msgid "# unexpected SYN_ACK messages (disconnecting)" 6861msgid "# unexpected SYN_ACK messages (disconnecting)"
7022msgstr "" 6862msgstr ""
7023 6863
7024#: src/transport/gnunet-service-transport_neighbours.c:3410 6864#: src/transport/gnunet-service-transport_neighbours.c:3411
7025#, fuzzy 6865#, fuzzy
7026msgid "# ACK messages received" 6866msgid "# ACK messages received"
7027msgstr "# messaggi PONG ricevuti" 6867msgstr "# messaggi PONG ricevuti"
7028 6868
7029#: src/transport/gnunet-service-transport_neighbours.c:3446 6869#: src/transport/gnunet-service-transport_neighbours.c:3447
7030msgid "# unexpected ACK messages" 6870msgid "# unexpected ACK messages"
7031msgstr "" 6871msgstr ""
7032 6872
7033#: src/transport/gnunet-service-transport_neighbours.c:3534 6873#: src/transport/gnunet-service-transport_neighbours.c:3535
7034msgid "# quota messages ignored (malformed)" 6874msgid "# quota messages ignored (malformed)"
7035msgstr "" 6875msgstr ""
7036 6876
7037#: src/transport/gnunet-service-transport_neighbours.c:3541 6877#: src/transport/gnunet-service-transport_neighbours.c:3542
7038#, fuzzy 6878#, fuzzy
7039msgid "# QUOTA messages received" 6879msgid "# QUOTA messages received"
7040msgstr "# messaggi PONG ricevuti" 6880msgstr "# messaggi PONG ricevuti"
7041 6881
7042#: src/transport/gnunet-service-transport_neighbours.c:3581 6882#: src/transport/gnunet-service-transport_neighbours.c:3582
7043msgid "# disconnect messages ignored (malformed)" 6883msgid "# disconnect messages ignored (malformed)"
7044msgstr "" 6884msgstr ""
7045 6885
7046#: src/transport/gnunet-service-transport_neighbours.c:3588 6886#: src/transport/gnunet-service-transport_neighbours.c:3589
7047msgid "# DISCONNECT messages received" 6887msgid "# DISCONNECT messages received"
7048msgstr "" 6888msgstr ""
7049 6889
7050#: src/transport/gnunet-service-transport_neighbours.c:3599 6890#: src/transport/gnunet-service-transport_neighbours.c:3600
7051msgid "# disconnect messages ignored (timestamp)" 6891msgid "# disconnect messages ignored (timestamp)"
7052msgstr "" 6892msgstr ""
7053 6893
7054#: src/transport/gnunet-service-transport_neighbours.c:3734 6894#: src/transport/gnunet-service-transport_neighbours.c:3735
7055msgid "# disconnected from peer upon explicit request" 6895msgid "# disconnected from peer upon explicit request"
7056msgstr "" 6896msgstr ""
7057 6897
7058#: src/transport/gnunet-service-transport_plugins.c:156 6898#: src/transport/gnunet-service-transport_plugins.c:158
7059msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n" 6899msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n"
7060msgstr "" 6900msgstr ""
7061 6901
7062#: src/transport/gnunet-service-transport_plugins.c:221 6902#: src/transport/gnunet-service-transport_plugins.c:223
7063#: src/transport/gnunet-service-transport_plugins.c:229 6903#: src/transport/gnunet-service-transport_plugins.c:231
7064#: src/transport/gnunet-service-transport_plugins.c:237 6904#: src/transport/gnunet-service-transport_plugins.c:239
7065#: src/transport/gnunet-service-transport_plugins.c:245 6905#: src/transport/gnunet-service-transport_plugins.c:247
7066#: src/transport/gnunet-service-transport_plugins.c:253 6906#: src/transport/gnunet-service-transport_plugins.c:255
7067#: src/transport/gnunet-service-transport_plugins.c:261 6907#: src/transport/gnunet-service-transport_plugins.c:263
7068#: src/transport/gnunet-service-transport_plugins.c:269 6908#: src/transport/gnunet-service-transport_plugins.c:271
7069#: src/transport/gnunet-service-transport_plugins.c:277 6909#: src/transport/gnunet-service-transport_plugins.c:279
7070#: src/transport/gnunet-service-transport_plugins.c:285 6910#: src/transport/gnunet-service-transport_plugins.c:287
7071#: src/transport/gnunet-service-transport_plugins.c:293 6911#: src/transport/gnunet-service-transport_plugins.c:295
7072#: src/transport/gnunet-service-transport_plugins.c:301 6912#: src/transport/gnunet-service-transport_plugins.c:303
7073#, c-format 6913#, c-format
7074msgid "Missing function `%s' in transport plugin for `%s'\n" 6914msgid "Missing function `%s' in transport plugin for `%s'\n"
7075msgstr "" 6915msgstr ""
7076 6916
7077#: src/transport/gnunet-service-transport_plugins.c:308 6917#: src/transport/gnunet-service-transport_plugins.c:310
7078#, c-format 6918#, c-format
7079msgid "Did not load plugin `%s' due to missing functions\n" 6919msgid "Did not load plugin `%s' due to missing functions\n"
7080msgstr "" 6920msgstr ""
7081 6921
7082#: src/transport/gnunet-service-transport_validation.c:386 6922#: src/transport/gnunet-service-transport_validation.c:388
7083msgid "# Addresses in validation map" 6923msgid "# Addresses in validation map"
7084msgstr "" 6924msgstr ""
7085 6925
7086#: src/transport/gnunet-service-transport_validation.c:489 6926#: src/transport/gnunet-service-transport_validation.c:491
7087#: src/transport/gnunet-service-transport_validation.c:675 6927#: src/transport/gnunet-service-transport_validation.c:677
7088#: src/transport/gnunet-service-transport_validation.c:995 6928#: src/transport/gnunet-service-transport_validation.c:997
7089#: src/transport/gnunet-service-transport_validation.c:1607 6929#: src/transport/gnunet-service-transport_validation.c:1609
7090msgid "# validations running" 6930msgid "# validations running"
7091msgstr "" 6931msgstr ""
7092 6932
7093#: src/transport/gnunet-service-transport_validation.c:530 6933#: src/transport/gnunet-service-transport_validation.c:532
7094msgid "# address records discarded (timeout)" 6934msgid "# address records discarded (timeout)"
7095msgstr "" 6935msgstr ""
7096 6936
7097#: src/transport/gnunet-service-transport_validation.c:578 6937#: src/transport/gnunet-service-transport_validation.c:580
7098msgid "# address records discarded (blacklist)" 6938msgid "# address records discarded (blacklist)"
7099msgstr "" 6939msgstr ""
7100 6940
7101#: src/transport/gnunet-service-transport_validation.c:666 6941#: src/transport/gnunet-service-transport_validation.c:668
7102msgid "# PINGs for address validation sent" 6942msgid "# PINGs for address validation sent"
7103msgstr "" 6943msgstr ""
7104 6944
7105#: src/transport/gnunet-service-transport_validation.c:746 6945#: src/transport/gnunet-service-transport_validation.c:748
7106msgid "# validations delayed by global throttle" 6946msgid "# validations delayed by global throttle"
7107msgstr "" 6947msgstr ""
7108 6948
7109#: src/transport/gnunet-service-transport_validation.c:783 6949#: src/transport/gnunet-service-transport_validation.c:785
7110msgid "# address revalidations started" 6950msgid "# address revalidations started"
7111msgstr "" 6951msgstr ""
7112 6952
7113#: src/transport/gnunet-service-transport_validation.c:1121 6953#: src/transport/gnunet-service-transport_validation.c:1123
7114msgid "# PING message for different peer received" 6954msgid "# PING message for different peer received"
7115msgstr "" 6955msgstr ""
7116 6956
7117#: src/transport/gnunet-service-transport_validation.c:1172 6957#: src/transport/gnunet-service-transport_validation.c:1174
7118#, c-format 6958#, c-format
7119msgid "Plugin `%s' not available, cannot confirm having this address\n" 6959msgid "Plugin `%s' not available, cannot confirm having this address\n"
7120msgstr "" 6960msgstr ""
7121 6961
7122#: src/transport/gnunet-service-transport_validation.c:1185 6962#: src/transport/gnunet-service-transport_validation.c:1187
7123msgid "# failed address checks during validation" 6963msgid "# failed address checks during validation"
7124msgstr "" 6964msgstr ""
7125 6965
7126#: src/transport/gnunet-service-transport_validation.c:1188 6966#: src/transport/gnunet-service-transport_validation.c:1190
7127#, c-format 6967#, c-format
7128msgid "Address `%s' is not one of my addresses, not confirming PING\n" 6968msgid "Address `%s' is not one of my addresses, not confirming PING\n"
7129msgstr "" 6969msgstr ""
7130 6970
7131#: src/transport/gnunet-service-transport_validation.c:1196 6971#: src/transport/gnunet-service-transport_validation.c:1198
7132msgid "# successful address checks during validation" 6972msgid "# successful address checks during validation"
7133msgstr "" 6973msgstr ""
7134 6974
7135#: src/transport/gnunet-service-transport_validation.c:1209 6975#: src/transport/gnunet-service-transport_validation.c:1211
7136#, c-format 6976#, c-format
7137msgid "" 6977msgid ""
7138"Not confirming PING from peer `%s' with address `%s' since I cannot confirm " 6978"Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
7139"having this address.\n" 6979"having this address.\n"
7140msgstr "" 6980msgstr ""
7141 6981
7142#: src/transport/gnunet-service-transport_validation.c:1264 6982#: src/transport/gnunet-service-transport_validation.c:1266
7143#, c-format 6983#, c-format
7144msgid "Failed to create PONG signature for peer `%s'\n" 6984msgid "Failed to create PONG signature for peer `%s'\n"
7145msgstr "" 6985msgstr ""
7146 6986
7147#: src/transport/gnunet-service-transport_validation.c:1315 6987#: src/transport/gnunet-service-transport_validation.c:1317
7148msgid "# PONGs unicast via reliable transport" 6988msgid "# PONGs unicast via reliable transport"
7149msgstr "" 6989msgstr ""
7150 6990
7151#: src/transport/gnunet-service-transport_validation.c:1324 6991#: src/transport/gnunet-service-transport_validation.c:1326
7152msgid "# PONGs multicast to all available addresses" 6992msgid "# PONGs multicast to all available addresses"
7153msgstr "" 6993msgstr ""
7154 6994
7155#: src/transport/gnunet-service-transport_validation.c:1497 6995#: src/transport/gnunet-service-transport_validation.c:1499
7156msgid "# PONGs dropped, no matching pending validation" 6996msgid "# PONGs dropped, no matching pending validation"
7157msgstr "" 6997msgstr ""
7158 6998
7159#: src/transport/gnunet-service-transport_validation.c:1515 6999#: src/transport/gnunet-service-transport_validation.c:1517
7160msgid "# PONGs dropped, signature expired" 7000msgid "# PONGs dropped, signature expired"
7161msgstr "" 7001msgstr ""
7162 7002
7163#: src/transport/gnunet-service-transport_validation.c:1570 7003#: src/transport/gnunet-service-transport_validation.c:1572
7164msgid "# validations succeeded" 7004msgid "# validations succeeded"
7165msgstr "" 7005msgstr ""
7166 7006
7167#: src/transport/gnunet-service-transport_validation.c:1625 7007#: src/transport/gnunet-service-transport_validation.c:1627
7168msgid "# HELLOs given to peerinfo" 7008msgid "# HELLOs given to peerinfo"
7169msgstr "" 7009msgstr ""
7170 7010
7171#: src/transport/gnunet-transport.c:411 7011#: src/transport/gnunet-transport.c:413
7172#, c-format 7012#, c-format
7173msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" 7013msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
7174msgstr "" 7014msgstr ""
7175 7015
7176#: src/transport/gnunet-transport.c:421 7016#: src/transport/gnunet-transport.c:423
7177#, c-format 7017#, c-format
7178msgid "Received %llu bytes/s (%llu bytes in %s)\n" 7018msgid "Received %llu bytes/s (%llu bytes in %s)\n"
7179msgstr "" 7019msgstr ""
7180 7020
7181#: src/transport/gnunet-transport.c:465 7021#: src/transport/gnunet-transport.c:467
7182#, c-format 7022#, c-format
7183msgid "Failed to connect to `%s'\n" 7023msgid "Failed to connect to `%s'\n"
7184msgstr "" 7024msgstr ""
7185 7025
7186#: src/transport/gnunet-transport.c:478 7026#: src/transport/gnunet-transport.c:480
7187#, c-format 7027#, c-format
7188msgid "Failed to resolve address for peer `%s'\n" 7028msgid "Failed to resolve address for peer `%s'\n"
7189msgstr "" 7029msgstr ""
7190 7030
7191#: src/transport/gnunet-transport.c:492 7031#: src/transport/gnunet-transport.c:494
7192msgid "Failed to list connections, timeout occured\n" 7032#, fuzzy
7193msgstr "" 7033msgid "Failed to list connections, timeout occurred\n"
7034msgstr "# connessioni attive"
7194 7035
7195#: src/transport/gnunet-transport.c:525 7036#: src/transport/gnunet-transport.c:527
7196#, c-format 7037#, c-format
7197msgid "Transmitting %u bytes\n" 7038msgid "Transmitting %u bytes\n"
7198msgstr "" 7039msgstr ""
7199 7040
7200#: src/transport/gnunet-transport.c:559 7041#: src/transport/gnunet-transport.c:561
7201#, c-format 7042#, c-format
7202msgid "" 7043msgid ""
7203"Successfully connected to `%s', starting to send benchmark data in %u Kb " 7044"Successfully connected to `%s', starting to send benchmark data in %u Kb "
7204"blocks\n" 7045"blocks\n"
7205msgstr "" 7046msgstr ""
7206 7047
7207#: src/transport/gnunet-transport.c:590 7048#: src/transport/gnunet-transport.c:592
7208#, c-format 7049#, c-format
7209msgid "Disconnected from peer `%s' while benchmarking\n" 7050msgid "Disconnected from peer `%s' while benchmarking\n"
7210msgstr "" 7051msgstr ""
7211 7052
7212#: src/transport/gnunet-transport.c:614 src/transport/gnunet-transport.c:643 7053#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
7213#, c-format 7054#, c-format
7214msgid "%24s: %-17s %4s (%u connections in total)\n" 7055msgid "%24s: %-17s %4s (%u connections in total)\n"
7215msgstr "" 7056msgstr ""
7216 7057
7217#: src/transport/gnunet-transport.c:616 7058#: src/transport/gnunet-transport.c:618
7218msgid "Connected to" 7059msgid "Connected to"
7219msgstr "" 7060msgstr ""
7220 7061
7221#: src/transport/gnunet-transport.c:645 7062#: src/transport/gnunet-transport.c:647
7222msgid "Disconnected from" 7063msgid "Disconnected from"
7223msgstr "" 7064msgstr ""
7224 7065
7225#: src/transport/gnunet-transport.c:680 7066#: src/transport/gnunet-transport.c:682
7226#, c-format 7067#, c-format
7227msgid "Received %u bytes\n" 7068msgid "Received %u bytes\n"
7228msgstr "" 7069msgstr ""
7229 7070
7230#: src/transport/gnunet-transport.c:717 7071#: src/transport/gnunet-transport.c:719
7231#, c-format 7072#, c-format
7232msgid "Peer `%s': %s %s in state `%s' until %s\n" 7073msgid "Peer `%s': %s %s in state `%s' until %s\n"
7233msgstr "" 7074msgstr ""
7234 7075
7235#: src/transport/gnunet-transport.c:729 7076#: src/transport/gnunet-transport.c:731
7236#, c-format 7077#, c-format
7237msgid "Peer `%s': %s %s\n" 7078msgid "Peer `%s': %s %s\n"
7238msgstr "" 7079msgstr ""
7239 7080
7240#: src/transport/gnunet-transport.c:1142 7081#: src/transport/gnunet-transport.c:1144
7241msgid "Monitor disconnected from transport service. Reconnecting.\n" 7082msgid "Monitor disconnected from transport service. Reconnecting.\n"
7242msgstr "" 7083msgstr ""
7243 7084
7244#: src/transport/gnunet-transport.c:1249 7085#: src/transport/gnunet-transport.c:1251
7245#, c-format 7086#, c-format
7246msgid "" 7087msgid ""
7247"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, " 7088"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
7248"%s, %s %s\n" 7089"%s, %s %s\n"
7249msgstr "" 7090msgstr ""
7250 7091
7251#: src/transport/gnunet-transport.c:1262 7092#: src/transport/gnunet-transport.c:1264
7252#, c-format 7093#, c-format
7253msgid "" 7094msgid ""
7254"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n" 7095"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
7255msgstr "" 7096msgstr ""
7256 7097
7257#: src/transport/gnunet-transport.c:1292 7098#: src/transport/gnunet-transport.c:1294
7258msgid "Failed to connect to transport service for disconnection\n" 7099msgid "Failed to connect to transport service for disconnection\n"
7259msgstr "" 7100msgstr ""
7260 7101
7261#: src/transport/gnunet-transport.c:1298 7102#: src/transport/gnunet-transport.c:1300
7262msgid "Blacklisting request in place, stop with CTRL-C\n" 7103msgid "Blacklisting request in place, stop with CTRL-C\n"
7263msgstr "" 7104msgstr ""
7264 7105
7265#: src/transport/gnunet-transport.c:1323 src/transport/gnunet-transport.c:1353 7106#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
7266#: src/transport/gnunet-transport.c:1406 7107#: src/transport/gnunet-transport.c:1408
7267msgid "Failed to connect to transport service\n" 7108msgid "Failed to connect to transport service\n"
7268msgstr "" 7109msgstr ""
7269 7110
7270#: src/transport/gnunet-transport.c:1360 7111#: src/transport/gnunet-transport.c:1362
7271msgid "Starting to receive benchmark data\n" 7112msgid "Starting to receive benchmark data\n"
7272msgstr "" 7113msgstr ""
7273 7114
7274#: src/transport/gnunet-transport.c:1431 7115#: src/transport/gnunet-transport.c:1433
7275msgid "print information for all peers (instead of only connected peers)" 7116msgid "print information for all peers (instead of only connected peers)"
7276msgstr "" 7117msgstr ""
7277 7118
7278#: src/transport/gnunet-transport.c:1435 7119#: src/transport/gnunet-transport.c:1437
7279msgid "measure how fast we are receiving data from all peers (until CTRL-C)" 7120msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
7280msgstr "" 7121msgstr ""
7281 7122
7282#: src/transport/gnunet-transport.c:1439 7123#: src/transport/gnunet-transport.c:1441
7283msgid "disconnect from a peer" 7124msgid "disconnect from a peer"
7284msgstr "" 7125msgstr ""
7285 7126
7286#: src/transport/gnunet-transport.c:1443 7127#: src/transport/gnunet-transport.c:1445
7287msgid "provide information about all current connections (once)" 7128msgid "provide information about all current connections (once)"
7288msgstr "" 7129msgstr ""
7289 7130
7290#: src/transport/gnunet-transport.c:1451 7131#: src/transport/gnunet-transport.c:1453
7291msgid "" 7132msgid ""
7292"provide information about all connects and disconnect events (continuously)" 7133"provide information about all connects and disconnect events (continuously)"
7293msgstr "" 7134msgstr ""
7294 7135
7295#: src/transport/gnunet-transport.c:1455 7136#: src/transport/gnunet-transport.c:1457
7296msgid "do not resolve hostnames" 7137msgid "do not resolve hostnames"
7297msgstr "" 7138msgstr ""
7298 7139
7299#: src/transport/gnunet-transport.c:1460 7140#: src/transport/gnunet-transport.c:1462
7300#: src/transport/gnunet-transport-profiler.c:639 7141#: src/transport/gnunet-transport-profiler.c:641
7301msgid "peer identity" 7142msgid "peer identity"
7302msgstr "" 7143msgstr ""
7303 7144
7304#: src/transport/gnunet-transport.c:1464 7145#: src/transport/gnunet-transport.c:1466
7305msgid "monitor plugin sessions" 7146msgid "monitor plugin sessions"
7306msgstr "" 7147msgstr ""
7307 7148
7308#: src/transport/gnunet-transport.c:1469 7149#: src/transport/gnunet-transport.c:1471
7309msgid "send data for benchmarking to the other peer (until CTRL-C)" 7150msgid "send data for benchmarking to the other peer (until CTRL-C)"
7310msgstr "" 7151msgstr ""
7311 7152
7312#: src/transport/gnunet-transport.c:1480 7153#: src/transport/gnunet-transport.c:1482
7313#: src/transport/gnunet-transport-profiler.c:650 7154#: src/transport/gnunet-transport-profiler.c:652
7314msgid "Direct access to transport service." 7155msgid "Direct access to transport service."
7315msgstr "" 7156msgstr ""
7316 7157
7317#: src/transport/gnunet-transport-profiler.c:217 7158#: src/transport/gnunet-transport-profiler.c:219
7318#, c-format 7159#, c-format
7319msgid "%llu B in %llu ms == %.2f KB/s!\n" 7160msgid "%llu B in %llu ms == %.2f KB/s!\n"
7320msgstr "" 7161msgstr ""
7321 7162
7322#: src/transport/gnunet-transport-profiler.c:615 7163#: src/transport/gnunet-transport-profiler.c:617
7323msgid "send data to peer" 7164msgid "send data to peer"
7324msgstr "" 7165msgstr ""
7325 7166
7326#: src/transport/gnunet-transport-profiler.c:619 7167#: src/transport/gnunet-transport-profiler.c:621
7327msgid "receive data from peer" 7168msgid "receive data from peer"
7328msgstr "" 7169msgstr ""
7329 7170
7330#: src/transport/gnunet-transport-profiler.c:624 7171#: src/transport/gnunet-transport-profiler.c:626
7331msgid "iterations" 7172msgid "iterations"
7332msgstr "" 7173msgstr ""
7333 7174
7334#: src/transport/gnunet-transport-profiler.c:629 7175#: src/transport/gnunet-transport-profiler.c:631
7335msgid "number of messages to send" 7176msgid "number of messages to send"
7336msgstr "" 7177msgstr ""
7337 7178
7338#: src/transport/gnunet-transport-profiler.c:634 7179#: src/transport/gnunet-transport-profiler.c:636
7339msgid "message size to use" 7180msgid "message size to use"
7340msgstr "" 7181msgstr ""
7341 7182
7342#: src/transport/plugin_transport_http_client.c:1472 7183#: src/transport/plugin_transport_http_client.c:1474
7343#: src/transport/plugin_transport_http_server.c:2310 7184#: src/transport/plugin_transport_http_server.c:2312
7344#: src/transport/plugin_transport_http_server.c:3524 7185#: src/transport/plugin_transport_http_server.c:3530
7345#: src/transport/plugin_transport_tcp.c:3889 7186#: src/transport/plugin_transport_tcp.c:3895
7346#: src/transport/plugin_transport_tcp.c:3896 7187#: src/transport/plugin_transport_tcp.c:3902
7347#: src/transport/plugin_transport_xt.c:3897 7188#: src/transport/plugin_transport_xt.c:3899
7348#: src/transport/plugin_transport_xt.c:3904 7189#: src/transport/plugin_transport_xt.c:3906
7349msgid "TCP_STEALTH not supported on this platform.\n" 7190msgid "TCP_STEALTH not supported on this platform.\n"
7350msgstr "" 7191msgstr ""
7351 7192
7352#: src/transport/plugin_transport_http_client.c:2113 7193#: src/transport/plugin_transport_http_client.c:2115
7353#, c-format 7194#, c-format
7354msgid "Could not initialize curl multi handle, failed to start %s plugin!\n" 7195msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
7355msgstr "" 7196msgstr ""
7356 7197
7357#: src/transport/plugin_transport_http_client.c:2162 7198#: src/transport/plugin_transport_http_client.c:2164
7358#: src/transport/plugin_transport_http_server.c:3239 7199#: src/transport/plugin_transport_http_server.c:3245
7359#, c-format 7200#, c-format
7360msgid "Shutting down plugin `%s'\n" 7201msgid "Shutting down plugin `%s'\n"
7361msgstr "" 7202msgstr ""
7362 7203
7363#: src/transport/plugin_transport_http_client.c:2179 7204#: src/transport/plugin_transport_http_client.c:2181
7364#: src/transport/plugin_transport_http_server.c:3309 7205#: src/transport/plugin_transport_http_server.c:3315
7365#, c-format 7206#, c-format
7366msgid "Shutdown for plugin `%s' complete\n" 7207msgid "Shutdown for plugin `%s' complete\n"
7367msgstr "" 7208msgstr ""
7368 7209
7369#: src/transport/plugin_transport_http_client.c:2213 7210#: src/transport/plugin_transport_http_client.c:2215
7370#, c-format 7211#, c-format
7371msgid "Maximum number of requests is %u\n" 7212msgid "Maximum number of requests is %u\n"
7372msgstr "" 7213msgstr ""
7373 7214
7374#: src/transport/plugin_transport_http_server.c:1754 7215#: src/transport/plugin_transport_http_server.c:1756
7375#, c-format 7216#, c-format
7376msgid "" 7217msgid ""
7377"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data " 7218"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data "
7378"size %u\n" 7219"size %u\n"
7379msgstr "" 7220msgstr ""
7380 7221
7381#: src/transport/plugin_transport_http_server.c:2026 7222#: src/transport/plugin_transport_http_server.c:2028
7382#, c-format 7223#, c-format
7383msgid "Accepting connection (%u of %u) from `%s'\n" 7224msgid "Accepting connection (%u of %u) from `%s'\n"
7384msgstr "" 7225msgstr ""
7385 7226
7386#: src/transport/plugin_transport_http_server.c:2034 7227#: src/transport/plugin_transport_http_server.c:2036
7387#, c-format 7228#, c-format
7388msgid "" 7229msgid ""
7389"Server reached maximum number connections (%u), rejecting new connection\n" 7230"Server reached maximum number connections (%u), rejecting new connection\n"
7390msgstr "" 7231msgstr ""
7391 7232
7392#: src/transport/plugin_transport_http_server.c:2184 7233#: src/transport/plugin_transport_http_server.c:2186
7393msgid "" 7234msgid ""
7394"Could not create a new TLS certificate, program `gnunet-transport-" 7235"Could not create a new TLS certificate, program `gnunet-transport-"
7395"certificate-creation' could not be started!\n" 7236"certificate-creation' could not be started!\n"
7396msgstr "" 7237msgstr ""
7397 7238
7398#: src/transport/plugin_transport_http_server.c:2207 7239#: src/transport/plugin_transport_http_server.c:2209
7399#, c-format 7240#, c-format
7400msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n" 7241msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n"
7401msgstr "" 7242msgstr ""
7402 7243
7403#: src/transport/plugin_transport_http_server.c:2336 7244#: src/transport/plugin_transport_http_server.c:2338
7404msgid "Could not load or create server certificate! Loading plugin failed!\n" 7245msgid "Could not load or create server certificate! Loading plugin failed!\n"
7405msgstr "" 7246msgstr ""
7406 7247
7407#: src/transport/plugin_transport_http_server.c:2648 7248#: src/transport/plugin_transport_http_server.c:2654
7408msgid "Require valid port number for service in configuration!\n" 7249msgid "Require valid port number for service in configuration!\n"
7409msgstr "" 7250msgstr ""
7410 7251
7411#: src/transport/plugin_transport_http_server.c:2813 7252#: src/transport/plugin_transport_http_server.c:2819
7412#, c-format 7253#, c-format
7413msgid "Found %u addresses to report to NAT service\n" 7254msgid "Found %u addresses to report to NAT service\n"
7414msgstr "" 7255msgstr ""
7415 7256
7416#: src/transport/plugin_transport_http_server.c:2899 7257#: src/transport/plugin_transport_http_server.c:2905
7417#: src/transport/plugin_transport_udp.c:3621 7258#: src/transport/plugin_transport_udp.c:3627
7418#: src/transport/plugin_transport_xu.c:2047 7259#: src/transport/plugin_transport_xu.c:2049
7419msgid "Disabling IPv6 since it is not supported on this system!\n" 7260msgid "Disabling IPv6 since it is not supported on this system!\n"
7420msgstr "" 7261msgstr ""
7421 7262
7422#: src/transport/plugin_transport_http_server.c:3005 7263#: src/transport/plugin_transport_http_server.c:3011
7423#, c-format 7264#, c-format
7424msgid "IPv4 support is %s\n" 7265msgid "IPv4 support is %s\n"
7425msgstr "" 7266msgstr ""
7426 7267
7427#: src/transport/plugin_transport_http_server.c:3020 7268#: src/transport/plugin_transport_http_server.c:3026
7428#, c-format 7269#, c-format
7429msgid "IPv6 support is %s\n" 7270msgid "IPv6 support is %s\n"
7430msgstr "" 7271msgstr ""
7431 7272
7432#: src/transport/plugin_transport_http_server.c:3026 7273#: src/transport/plugin_transport_http_server.c:3032
7433msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n" 7274msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n"
7434msgstr "" 7275msgstr ""
7435 7276
7436#: src/transport/plugin_transport_http_server.c:3037 7277#: src/transport/plugin_transport_http_server.c:3043
7437msgid "Port is required! Fix in configuration\n" 7278msgid "Port is required! Fix in configuration\n"
7438msgstr "" 7279msgstr ""
7439 7280
7440#: src/transport/plugin_transport_http_server.c:3043 7281#: src/transport/plugin_transport_http_server.c:3049
7441#, c-format 7282#, c-format
7442msgid "Using port %u\n" 7283msgid "Using port %u\n"
7443msgstr "" 7284msgstr ""
7444 7285
7445#: src/transport/plugin_transport_http_server.c:3062 7286#: src/transport/plugin_transport_http_server.c:3068
7446#, c-format 7287#, c-format
7447msgid "Specific IPv4 address `%s' in configuration file is invalid!\n" 7288msgid "Specific IPv4 address `%s' in configuration file is invalid!\n"
7448msgstr "" 7289msgstr ""
7449 7290
7450#: src/transport/plugin_transport_http_server.c:3097 7291#: src/transport/plugin_transport_http_server.c:3103
7451#, c-format 7292#, c-format
7452msgid "Specific IPv6 address `%s' in configuration file is invalid!\n" 7293msgid "Specific IPv6 address `%s' in configuration file is invalid!\n"
7453msgstr "" 7294msgstr ""
7454 7295
7455#: src/transport/plugin_transport_http_server.c:3172 7296#: src/transport/plugin_transport_http_server.c:3178
7456#, c-format 7297#, c-format
7457msgid "Using external hostname `%s'\n" 7298msgid "Using external hostname `%s'\n"
7458msgstr "" 7299msgstr ""
7459 7300
7460#: src/transport/plugin_transport_http_server.c:3193 7301#: src/transport/plugin_transport_http_server.c:3199
7461#, c-format 7302#, c-format
7462msgid "Notifying transport only about hostname `%s'\n" 7303msgid "Notifying transport only about hostname `%s'\n"
7463msgstr "" 7304msgstr ""
7464 7305
7465#: src/transport/plugin_transport_http_server.c:3210 7306#: src/transport/plugin_transport_http_server.c:3216
7466#, c-format 7307#, c-format
7467msgid "Maximum number of connections is %u\n" 7308msgid "Maximum number of connections is %u\n"
7468msgstr "" 7309msgstr ""
7469 7310
7470#: src/transport/plugin_transport_http_server.c:3536 7311#: src/transport/plugin_transport_http_server.c:3542
7471msgid "Unable to compile URL regex\n" 7312msgid "Unable to compile URL regex\n"
7472msgstr "" 7313msgstr ""
7473 7314
7474#: src/transport/plugin_transport_smtp.c:221 7315#: src/transport/plugin_transport_smtp.c:223
7475#, c-format 7316#, c-format
7476msgid "Received malformed message via %s. Ignored.\n" 7317msgid "Received malformed message via %s. Ignored.\n"
7477msgstr "" 7318msgstr ""
7478 7319
7479#: src/transport/plugin_transport_smtp.c:308 7320#: src/transport/plugin_transport_smtp.c:310
7480msgid "SMTP filter string to invalid, lacks ': '\n" 7321msgid "SMTP filter string to invalid, lacks ': '\n"
7481msgstr "" 7322msgstr ""
7482 7323
7483#: src/transport/plugin_transport_smtp.c:317 7324#: src/transport/plugin_transport_smtp.c:319
7484#, c-format 7325#, c-format
7485msgid "SMTP filter string to long, capped to `%s'\n" 7326msgid "SMTP filter string to long, capped to `%s'\n"
7486msgstr "" 7327msgstr ""
7487 7328
7488#: src/transport/plugin_transport_smtp.c:412 7329#: src/transport/plugin_transport_smtp.c:414
7489#: src/transport/plugin_transport_smtp.c:422 7330#: src/transport/plugin_transport_smtp.c:424
7490#: src/transport/plugin_transport_smtp.c:435 7331#: src/transport/plugin_transport_smtp.c:437
7491#: src/transport/plugin_transport_smtp.c:454 7332#: src/transport/plugin_transport_smtp.c:456
7492#: src/transport/plugin_transport_smtp.c:477 7333#: src/transport/plugin_transport_smtp.c:479
7493#: src/transport/plugin_transport_smtp.c:485 7334#: src/transport/plugin_transport_smtp.c:487
7494#: src/transport/plugin_transport_smtp.c:498 7335#: src/transport/plugin_transport_smtp.c:500
7495#: src/transport/plugin_transport_smtp.c:509 7336#: src/transport/plugin_transport_smtp.c:511
7496#, c-format 7337#, c-format
7497msgid "SMTP: `%s' failed: %s.\n" 7338msgid "SMTP: `%s' failed: %s.\n"
7498msgstr "" 7339msgstr ""
7499 7340
7500#: src/transport/plugin_transport_smtp.c:650 7341#: src/transport/plugin_transport_smtp.c:652
7501msgid "No email-address specified, can not start SMTP transport.\n" 7342msgid "No email-address specified, can not start SMTP transport.\n"
7502msgstr "" 7343msgstr ""
7503 7344
7504#: src/transport/plugin_transport_smtp.c:662 7345#: src/transport/plugin_transport_smtp.c:664
7505msgid "# bytes received via SMTP" 7346msgid "# bytes received via SMTP"
7506msgstr "" 7347msgstr ""
7507 7348
7508#: src/transport/plugin_transport_smtp.c:663 7349#: src/transport/plugin_transport_smtp.c:665
7509msgid "# bytes sent via SMTP" 7350msgid "# bytes sent via SMTP"
7510msgstr "# byte inviati via SMTP" 7351msgstr "# byte inviati via SMTP"
7511 7352
7512#: src/transport/plugin_transport_smtp.c:665 7353#: src/transport/plugin_transport_smtp.c:667
7513msgid "# bytes dropped by SMTP (outgoing)" 7354msgid "# bytes dropped by SMTP (outgoing)"
7514msgstr "" 7355msgstr ""
7515 7356
7516#: src/transport/plugin_transport_tcp.c:1545 7357#: src/transport/plugin_transport_tcp.c:1551
7517#: src/transport/plugin_transport_tcp.c:2871 7358#: src/transport/plugin_transport_tcp.c:2877
7518#: src/transport/plugin_transport_xt.c:1551 7359#: src/transport/plugin_transport_xt.c:1553
7519#: src/transport/plugin_transport_xt.c:2877 7360#: src/transport/plugin_transport_xt.c:2879
7520#, c-format 7361#, c-format
7521msgid "Unexpected address length: %u bytes\n" 7362msgid "Unexpected address length: %u bytes\n"
7522msgstr "" 7363msgstr ""
7523 7364
7524#: src/transport/plugin_transport_tcp.c:1728 7365#: src/transport/plugin_transport_tcp.c:1734
7525#: src/transport/plugin_transport_tcp.c:1952 7366#: src/transport/plugin_transport_tcp.c:1958
7526#: src/transport/plugin_transport_tcp.c:3135 7367#: src/transport/plugin_transport_tcp.c:3141
7527#: src/transport/plugin_transport_tcp.c:4012 7368#: src/transport/plugin_transport_tcp.c:4018
7528#: src/transport/plugin_transport_xt.c:1734 7369#: src/transport/plugin_transport_xt.c:1736
7529#: src/transport/plugin_transport_xt.c:1958 7370#: src/transport/plugin_transport_xt.c:1960
7530#: src/transport/plugin_transport_xt.c:3141 7371#: src/transport/plugin_transport_xt.c:3143
7531msgid "# TCP sessions active" 7372msgid "# TCP sessions active"
7532msgstr "" 7373msgstr ""
7533 7374
7534#: src/transport/plugin_transport_tcp.c:1770 7375#: src/transport/plugin_transport_tcp.c:1776
7535#: src/transport/plugin_transport_tcp.c:1934 7376#: src/transport/plugin_transport_tcp.c:1940
7536#: src/transport/plugin_transport_tcp.c:2058 7377#: src/transport/plugin_transport_tcp.c:2064
7537#: src/transport/plugin_transport_tcp.c:2131 7378#: src/transport/plugin_transport_tcp.c:2137
7538#: src/transport/plugin_transport_tcp.c:2231 7379#: src/transport/plugin_transport_tcp.c:2237
7539#: src/transport/plugin_transport_tcp.c:2256 7380#: src/transport/plugin_transport_tcp.c:2262
7540#: src/transport/plugin_transport_xt.c:1776 7381#: src/transport/plugin_transport_xt.c:1778
7541#: src/transport/plugin_transport_xt.c:1940 7382#: src/transport/plugin_transport_xt.c:1942
7542#: src/transport/plugin_transport_xt.c:2064 7383#: src/transport/plugin_transport_xt.c:2066
7543#: src/transport/plugin_transport_xt.c:2137 7384#: src/transport/plugin_transport_xt.c:2139
7544#: src/transport/plugin_transport_xt.c:2237 7385#: src/transport/plugin_transport_xt.c:2239
7545#: src/transport/plugin_transport_xt.c:2262 7386#: src/transport/plugin_transport_xt.c:2264
7546msgid "# bytes currently in TCP buffers" 7387msgid "# bytes currently in TCP buffers"
7547msgstr "" 7388msgstr ""
7548 7389
7549#: src/transport/plugin_transport_tcp.c:1773 7390#: src/transport/plugin_transport_tcp.c:1779
7550#: src/transport/plugin_transport_xt.c:1779 7391#: src/transport/plugin_transport_xt.c:1781
7551msgid "# bytes discarded by TCP (disconnect)" 7392msgid "# bytes discarded by TCP (disconnect)"
7552msgstr "" 7393msgstr ""
7553 7394
7554#: src/transport/plugin_transport_tcp.c:2061 7395#: src/transport/plugin_transport_tcp.c:2067
7555#: src/transport/plugin_transport_xt.c:2067 7396#: src/transport/plugin_transport_xt.c:2069
7556msgid "# bytes discarded by TCP (timeout)" 7397msgid "# bytes discarded by TCP (timeout)"
7557msgstr "" 7398msgstr ""
7558 7399
7559#: src/transport/plugin_transport_tcp.c:2135 7400#: src/transport/plugin_transport_tcp.c:2141
7560#: src/transport/plugin_transport_xt.c:2141 7401#: src/transport/plugin_transport_xt.c:2143
7561msgid "# bytes transmitted via TCP" 7402msgid "# bytes transmitted via TCP"
7562msgstr "" 7403msgstr ""
7563 7404
7564#: src/transport/plugin_transport_tcp.c:2533 7405#: src/transport/plugin_transport_tcp.c:2539
7565#: src/transport/plugin_transport_xt.c:2539 7406#: src/transport/plugin_transport_xt.c:2541
7566msgid "# requests to create session with invalid address" 7407msgid "# requests to create session with invalid address"
7567msgstr "" 7408msgstr ""
7568 7409
7569#: src/transport/plugin_transport_tcp.c:2709 7410#: src/transport/plugin_transport_tcp.c:2715
7570#: src/transport/plugin_transport_xt.c:2715 7411#: src/transport/plugin_transport_xt.c:2717
7571msgid "# transport-service disconnect requests for TCP" 7412msgid "# transport-service disconnect requests for TCP"
7572msgstr "" 7413msgstr ""
7573 7414
7574#: src/transport/plugin_transport_tcp.c:3201 7415#: src/transport/plugin_transport_tcp.c:3207
7575#: src/transport/plugin_transport_xt.c:3207 7416#: src/transport/plugin_transport_xt.c:3209
7576msgid "# TCP WELCOME messages received" 7417msgid "# TCP WELCOME messages received"
7577msgstr "" 7418msgstr ""
7578 7419
7579#: src/transport/plugin_transport_tcp.c:3407 7420#: src/transport/plugin_transport_tcp.c:3413
7580#: src/transport/plugin_transport_xt.c:3413 7421#: src/transport/plugin_transport_xt.c:3415
7581msgid "# bytes received via TCP" 7422msgid "# bytes received via TCP"
7582msgstr "" 7423msgstr ""
7583 7424
7584#: src/transport/plugin_transport_tcp.c:3458 7425#: src/transport/plugin_transport_tcp.c:3464
7585#: src/transport/plugin_transport_tcp.c:3516 7426#: src/transport/plugin_transport_tcp.c:3522
7586#: src/transport/plugin_transport_xt.c:3464 7427#: src/transport/plugin_transport_xt.c:3466
7587#: src/transport/plugin_transport_xt.c:3522 7428#: src/transport/plugin_transport_xt.c:3524
7588#, fuzzy 7429#, fuzzy
7589msgid "# TCP server connections active" 7430msgid "# TCP server connections active"
7590msgstr "# connessioni attive" 7431msgstr "# connessioni attive"
7591 7432
7592#: src/transport/plugin_transport_tcp.c:3462 7433#: src/transport/plugin_transport_tcp.c:3468
7593#: src/transport/plugin_transport_xt.c:3468 7434#: src/transport/plugin_transport_xt.c:3470
7594msgid "# TCP server connect events" 7435msgid "# TCP server connect events"
7595msgstr "" 7436msgstr ""
7596 7437
7597#: src/transport/plugin_transport_tcp.c:3468 7438#: src/transport/plugin_transport_tcp.c:3474
7598#: src/transport/plugin_transport_xt.c:3474 7439#: src/transport/plugin_transport_xt.c:3476
7599msgid "TCP connection limit reached, suspending server\n" 7440msgid "TCP connection limit reached, suspending server\n"
7600msgstr "" 7441msgstr ""
7601 7442
7602#: src/transport/plugin_transport_tcp.c:3470 7443#: src/transport/plugin_transport_tcp.c:3476
7603#: src/transport/plugin_transport_xt.c:3476 7444#: src/transport/plugin_transport_xt.c:3478
7604msgid "# TCP service suspended" 7445msgid "# TCP service suspended"
7605msgstr "" 7446msgstr ""
7606 7447
7607#: src/transport/plugin_transport_tcp.c:3510 7448#: src/transport/plugin_transport_tcp.c:3516
7608#: src/transport/plugin_transport_xt.c:3516 7449#: src/transport/plugin_transport_xt.c:3518
7609msgid "# TCP service resumed" 7450msgid "# TCP service resumed"
7610msgstr "" 7451msgstr ""
7611 7452
7612#: src/transport/plugin_transport_tcp.c:3520 7453#: src/transport/plugin_transport_tcp.c:3526
7613#: src/transport/plugin_transport_xt.c:3526 7454#: src/transport/plugin_transport_xt.c:3528
7614msgid "# network-level TCP disconnect events" 7455msgid "# network-level TCP disconnect events"
7615msgstr "" 7456msgstr ""
7616 7457
7617#: src/transport/plugin_transport_tcp.c:3839 7458#: src/transport/plugin_transport_tcp.c:3845
7618#: src/transport/plugin_transport_xt.c:3847 7459#: src/transport/plugin_transport_xt.c:3849
7619msgid "Failed to start service.\n" 7460msgid "Failed to start service.\n"
7620msgstr "" 7461msgstr ""
7621 7462
7622#: src/transport/plugin_transport_tcp.c:4000 7463#: src/transport/plugin_transport_tcp.c:4006
7623#, c-format 7464#, c-format
7624msgid "TCP transport listening on port %llu\n" 7465msgid "TCP transport listening on port %llu\n"
7625msgstr "" 7466msgstr ""
7626 7467
7627#: src/transport/plugin_transport_tcp.c:4004 7468#: src/transport/plugin_transport_tcp.c:4010
7628msgid "TCP transport not listening on any port (client only)\n" 7469msgid "TCP transport not listening on any port (client only)\n"
7629msgstr "" 7470msgstr ""
7630 7471
7631#: src/transport/plugin_transport_tcp.c:4008 7472#: src/transport/plugin_transport_tcp.c:4014
7632#, c-format 7473#, c-format
7633msgid "TCP transport advertises itself as being on port %llu\n" 7474msgid "TCP transport advertises itself as being on port %llu\n"
7634msgstr "" 7475msgstr ""
7635 7476
7636#: src/transport/plugin_transport_udp_broadcasting.c:166 7477#: src/transport/plugin_transport_udp_broadcasting.c:168
7637msgid "# Multicast HELLO beacons received via UDP" 7478msgid "# Multicast HELLO beacons received via UDP"
7638msgstr "" 7479msgstr ""
7639 7480
7640#: src/transport/plugin_transport_udp_broadcasting.c:546 7481#: src/transport/plugin_transport_udp_broadcasting.c:548
7641msgid "" 7482msgid ""
7642"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" 7483"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
7643msgstr "" 7484msgstr ""
7644 7485
7645#: src/transport/plugin_transport_udp_broadcasting.c:563 7486#: src/transport/plugin_transport_udp_broadcasting.c:565
7646#, c-format 7487#, c-format
7647msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" 7488msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
7648msgstr "" 7489msgstr ""
7649 7490
7650#: src/transport/plugin_transport_udp.c:3365 7491#: src/transport/plugin_transport_udp.c:3371
7651#, c-format 7492#, c-format
7652msgid "" 7493msgid ""
7653"UDP could not transmit message to `%s': Network seems down, please check " 7494"UDP could not transmit message to `%s': Network seems down, please check "
7654"your network configuration\n" 7495"your network configuration\n"
7655msgstr "" 7496msgstr ""
7656 7497
7657#: src/transport/plugin_transport_udp.c:3379 7498#: src/transport/plugin_transport_udp.c:3385
7658msgid "" 7499msgid ""
7659"UDP could not transmit IPv6 message! Please check your network configuration " 7500"UDP could not transmit IPv6 message! Please check your network configuration "
7660"and disable IPv6 if your connection does not have a global IPv6 address\n" 7501"and disable IPv6 if your connection does not have a global IPv6 address\n"
7661msgstr "" 7502msgstr ""
7662 7503
7663#: src/transport/plugin_transport_udp.c:3697 7504#: src/transport/plugin_transport_udp.c:3703
7664#: src/transport/plugin_transport_udp.c:3796 7505#: src/transport/plugin_transport_udp.c:3802
7665#, c-format 7506#, c-format
7666msgid "Failed to bind UDP socket to %s: %s\n" 7507msgid "Failed to bind UDP socket to %s: %s\n"
7667msgstr "" 7508msgstr ""
7668 7509
7669#: src/transport/plugin_transport_udp.c:3715 7510#: src/transport/plugin_transport_udp.c:3721
7670#: src/transport/plugin_transport_xu.c:2141 7511#: src/transport/plugin_transport_xu.c:2143
7671msgid "Disabling IPv4 since it is not supported on this system!\n" 7512msgid "Disabling IPv4 since it is not supported on this system!\n"
7672msgstr "" 7513msgstr ""
7673 7514
7674#: src/transport/plugin_transport_udp.c:3806 7515#: src/transport/plugin_transport_udp.c:3812
7675msgid "Failed to open UDP sockets\n" 7516msgid "Failed to open UDP sockets\n"
7676msgstr "" 7517msgstr ""
7677 7518
7678#: src/transport/plugin_transport_udp.c:3877 7519#: src/transport/plugin_transport_udp.c:3883
7679#: src/transport/plugin_transport_udp.c:3891 7520#: src/transport/plugin_transport_udp.c:3897
7680#: src/transport/plugin_transport_xu.c:2299 7521#: src/transport/plugin_transport_xu.c:2301
7681#: src/transport/plugin_transport_xu.c:2313 7522#: src/transport/plugin_transport_xu.c:2315
7682msgid "must be in [0,65535]" 7523msgid "must be in [0,65535]"
7683msgstr "" 7524msgstr ""
7684 7525
7685#: src/transport/plugin_transport_udp.c:3923 7526#: src/transport/plugin_transport_udp.c:3929
7686#: src/transport/plugin_transport_xu.c:2345 7527#: src/transport/plugin_transport_xu.c:2347
7687#, fuzzy 7528#, fuzzy
7688msgid "must be valid IPv4 address" 7529msgid "must be valid IPv4 address"
7689msgstr "`%s' non è un indirizzo IP valido.\n" 7530msgstr "`%s' non è un indirizzo IP valido.\n"
7690 7531
7691#: src/transport/plugin_transport_udp.c:3950 7532#: src/transport/plugin_transport_udp.c:3956
7692#: src/transport/plugin_transport_xu.c:2372 7533#: src/transport/plugin_transport_xu.c:2374
7693#, fuzzy 7534#, fuzzy
7694msgid "must be valid IPv6 address" 7535msgid "must be valid IPv6 address"
7695msgstr "`%s' non è un indirizzo IP valido.\n" 7536msgstr "`%s' non è un indirizzo IP valido.\n"
7696 7537
7697#: src/transport/plugin_transport_udp.c:4014 7538#: src/transport/plugin_transport_udp.c:4020
7698msgid "Failed to create UDP network sockets\n" 7539msgid "Failed to create UDP network sockets\n"
7699msgstr "" 7540msgstr ""
7700 7541
7701#: src/transport/plugin_transport_unix.c:1401 7542#: src/transport/plugin_transport_unix.c:1416
7702#, c-format
7703msgid "Cannot create path to `%s'\n"
7704msgstr ""
7705
7706#: src/transport/plugin_transport_unix.c:1414
7707#, fuzzy, c-format 7543#, fuzzy, c-format
7708msgid "Cannot bind to `%s'\n" 7544msgid "Cannot bind to `%s'\n"
7709msgstr "Connessione stabilita con `%s'\n" 7545msgstr "Connessione stabilita con `%s'\n"
7710 7546
7711#: src/transport/plugin_transport_unix.c:1814 7547#: src/transport/plugin_transport_unix.c:1816
7712msgid "Failed to open UNIX listen socket\n" 7548msgid "Failed to open UNIX listen socket\n"
7713msgstr "" 7549msgstr ""
7714 7550
7715#: src/transport/plugin_transport_wlan.c:766 7551#: src/transport/plugin_transport_wlan.c:768
7716msgid "# ACKs sent" 7552msgid "# ACKs sent"
7717msgstr "" 7553msgstr ""
7718 7554
7719#: src/transport/plugin_transport_wlan.c:786 7555#: src/transport/plugin_transport_wlan.c:788
7720#, fuzzy 7556#, fuzzy
7721msgid "# Messages defragmented" 7557msgid "# Messages defragmented"
7722msgstr "# messaggi PONG decrittati" 7558msgstr "# messaggi PONG decrittati"
7723 7559
7724#: src/transport/plugin_transport_wlan.c:827 7560#: src/transport/plugin_transport_wlan.c:829
7725#: src/transport/plugin_transport_wlan.c:912 7561#: src/transport/plugin_transport_wlan.c:914
7726msgid "# Sessions allocated" 7562msgid "# Sessions allocated"
7727msgstr "" 7563msgstr ""
7728 7564
7729#: src/transport/plugin_transport_wlan.c:1033 7565#: src/transport/plugin_transport_wlan.c:1035
7730msgid "# message fragments sent" 7566msgid "# message fragments sent"
7731msgstr "" 7567msgstr ""
7732 7568
7733#: src/transport/plugin_transport_wlan.c:1062 7569#: src/transport/plugin_transport_wlan.c:1064
7734msgid "# messages pending (with fragmentation)" 7570msgid "# messages pending (with fragmentation)"
7735msgstr "" 7571msgstr ""
7736 7572
7737#: src/transport/plugin_transport_wlan.c:1191 7573#: src/transport/plugin_transport_wlan.c:1193
7738#: src/transport/plugin_transport_wlan.c:1282 7574#: src/transport/plugin_transport_wlan.c:1284
7739#: src/transport/plugin_transport_wlan.c:2303 7575#: src/transport/plugin_transport_wlan.c:2305
7740msgid "# MAC endpoints allocated" 7576msgid "# MAC endpoints allocated"
7741msgstr "" 7577msgstr ""
7742 7578
7743#: src/transport/plugin_transport_wlan.c:1565 7579#: src/transport/plugin_transport_wlan.c:1567
7744#, fuzzy 7580#, fuzzy
7745msgid "# ACKs received" 7581msgid "# ACKs received"
7746msgstr "# messaggi PONG ricevuti" 7582msgstr "# messaggi PONG ricevuti"
7747 7583
7748#: src/transport/plugin_transport_wlan.c:1634 7584#: src/transport/plugin_transport_wlan.c:1636
7749msgid "# DATA messages discarded due to CRC32 error" 7585msgid "# DATA messages discarded due to CRC32 error"
7750msgstr "" 7586msgstr ""
7751 7587
7752#: src/transport/plugin_transport_wlan.c:1738 7588#: src/transport/plugin_transport_wlan.c:1740
7753msgid "# HELLO beacons sent" 7589msgid "# HELLO beacons sent"
7754msgstr "" 7590msgstr ""
7755 7591
7756#: src/transport/plugin_transport_wlan.c:1854 7592#: src/transport/plugin_transport_wlan.c:1856
7757#, fuzzy 7593#, fuzzy
7758msgid "# DATA messages received" 7594msgid "# DATA messages received"
7759msgstr "# messaggi PONG ricevuti" 7595msgstr "# messaggi PONG ricevuti"
7760 7596
7761#: src/transport/plugin_transport_wlan.c:1888 7597#: src/transport/plugin_transport_wlan.c:1890
7762#, fuzzy 7598#, fuzzy
7763msgid "# DATA messages processed" 7599msgid "# DATA messages processed"
7764msgstr "# messaggi PONG ricevuti" 7600msgstr "# messaggi PONG ricevuti"
7765 7601
7766#: src/transport/plugin_transport_wlan.c:2278 7602#: src/transport/plugin_transport_wlan.c:2280
7767#, c-format 7603#, c-format
7768msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n" 7604msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n"
7769msgstr "" 7605msgstr ""
7770 7606
7771#: src/transport/plugin_transport_wlan.c:2300 7607#: src/transport/plugin_transport_wlan.c:2302
7772msgid "# sessions allocated" 7608msgid "# sessions allocated"
7773msgstr "" 7609msgstr ""
7774 7610
7775#: src/transport/plugin_transport_xt.c:4008 7611#: src/transport/plugin_transport_xt.c:4010
7776#, c-format 7612#, c-format
7777msgid "XT transport listening on port %llu\n" 7613msgid "XT transport listening on port %llu\n"
7778msgstr "" 7614msgstr ""
7779 7615
7780#: src/transport/plugin_transport_xt.c:4012 7616#: src/transport/plugin_transport_xt.c:4014
7781msgid "XT transport not listening on any port (client only)\n" 7617msgid "XT transport not listening on any port (client only)\n"
7782msgstr "" 7618msgstr ""
7783 7619
7784#: src/transport/plugin_transport_xt.c:4016 7620#: src/transport/plugin_transport_xt.c:4018
7785#, c-format 7621#, c-format
7786msgid "XT transport advertises itself as being on port %llu\n" 7622msgid "XT transport advertises itself as being on port %llu\n"
7787msgstr "" 7623msgstr ""
7788 7624
7789#: src/transport/plugin_transport_xt.c:4020 7625#: src/transport/plugin_transport_xt.c:4022
7790msgid "# XT sessions active" 7626msgid "# XT sessions active"
7791msgstr "" 7627msgstr ""
7792 7628
7793#: src/transport/plugin_transport_xu.c:1235 7629#: src/transport/plugin_transport_xu.c:1237
7794#, c-format 7630#, c-format
7795msgid "" 7631msgid ""
7796"XU could not transmit message to `%s': Network seems down, please check your " 7632"XU could not transmit message to `%s': Network seems down, please check your "
7797"network configuration\n" 7633"network configuration\n"
7798msgstr "" 7634msgstr ""
7799 7635
7800#: src/transport/plugin_transport_xu.c:1249 7636#: src/transport/plugin_transport_xu.c:1251
7801msgid "" 7637msgid ""
7802"XU could not transmit IPv6 message! Please check your network configuration " 7638"XU could not transmit IPv6 message! Please check your network configuration "
7803"and disable IPv6 if your connection does not have a global IPv6 address\n" 7639"and disable IPv6 if your connection does not have a global IPv6 address\n"
7804msgstr "" 7640msgstr ""
7805 7641
7806#: src/transport/plugin_transport_xu.c:2123 7642#: src/transport/plugin_transport_xu.c:2125
7807#: src/transport/plugin_transport_xu.c:2222 7643#: src/transport/plugin_transport_xu.c:2224
7808#, c-format 7644#, c-format
7809msgid "Failed to bind XU socket to %s: %s\n" 7645msgid "Failed to bind XU socket to %s: %s\n"
7810msgstr "" 7646msgstr ""
7811 7647
7812#: src/transport/plugin_transport_xu.c:2232 7648#: src/transport/plugin_transport_xu.c:2234
7813msgid "Failed to open XU sockets\n" 7649msgid "Failed to open XU sockets\n"
7814msgstr "" 7650msgstr ""
7815 7651
7816#: src/transport/plugin_transport_xu.c:2396 7652#: src/transport/plugin_transport_xu.c:2398
7817msgid "Failed to create XU network sockets\n" 7653msgid "Failed to create XU network sockets\n"
7818msgstr "" 7654msgstr ""
7819 7655
7820#: src/transport/tcp_connection_legacy.c:450 7656#: src/transport/tcp_connection_legacy.c:452
7821#, c-format 7657#, c-format
7822msgid "Access denied to `%s'\n" 7658msgid "Access denied to `%s'\n"
7823msgstr "" 7659msgstr ""
7824 7660
7825#: src/transport/tcp_connection_legacy.c:467 7661#: src/transport/tcp_connection_legacy.c:469
7826#, c-format 7662#, c-format
7827msgid "Accepting connection from `%s': %p\n" 7663msgid "Accepting connection from `%s': %p\n"
7828msgstr "" 7664msgstr ""
7829 7665
7830#: src/transport/tcp_server_legacy.c:472 src/util/service.c:1109 7666#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1666
7831#, c-format 7667#, c-format
7832msgid "`%s' failed for port %d (%s).\n" 7668msgid "`%s' failed for port %d (%s).\n"
7833msgstr "" 7669msgstr ""
7834 7670
7835#: src/transport/tcp_server_legacy.c:482 src/util/service.c:1119 7671#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1676
7836#, c-format 7672#, c-format
7837msgid "`%s' failed for port %d (%s): address already in use\n" 7673msgid "`%s' failed for port %d (%s): address already in use\n"
7838msgstr "" 7674msgstr ""
7839 7675
7840#: src/transport/tcp_server_legacy.c:488 src/util/service.c:1125 7676#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1682
7841#, c-format 7677#, c-format
7842msgid "`%s' failed for `%s': address already in use\n" 7678msgid "`%s' failed for `%s': address already in use\n"
7843msgstr "" 7679msgstr ""
7844 7680
7845#: src/transport/tcp_server_legacy.c:888 7681#: src/transport/tcp_server_legacy.c:890
7846#, c-format 7682#, c-format
7847msgid "" 7683msgid ""
7848"Processing code for message of type %u did not call " 7684"Processing code for message of type %u did not call "
7849"`GNUNET_SERVER_receive_done' after %s\n" 7685"`GNUNET_SERVER_receive_done' after %s\n"
7850msgstr "" 7686msgstr ""
7851 7687
7852#: src/transport/tcp_service_legacy.c:337 src/util/service.c:2378 7688#: src/transport/tcp_service_legacy.c:339 src/util/service.c:870
7853#, c-format 7689#, c-format
7854msgid "Unknown address family %d\n" 7690msgid "Unknown address family %d\n"
7855msgstr "" 7691msgstr ""
7856 7692
7857#: src/transport/tcp_service_legacy.c:344 7693#: src/transport/tcp_service_legacy.c:346
7858#, c-format 7694#, c-format
7859msgid "Access from `%s' denied to service `%s'\n" 7695msgid "Access from `%s' denied to service `%s'\n"
7860msgstr "" 7696msgstr ""
7861 7697
7862#: src/transport/tcp_service_legacy.c:400 src/util/service.c:437 7698#: src/transport/tcp_service_legacy.c:402 src/util/service.c:994
7863#, c-format 7699#, c-format
7864msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n" 7700msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
7865msgstr "" 7701msgstr ""
7866 7702
7867#: src/transport/tcp_service_legacy.c:438 src/util/service.c:480 7703#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1037
7868#, c-format 7704#, c-format
7869msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n" 7705msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
7870msgstr "" 7706msgstr ""
7871 7707
7872#: src/transport/tcp_service_legacy.c:902 src/util/service.c:1040 7708#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1597
7873msgid "Could not access a pre-bound socket, will try to bind myself\n" 7709msgid "Could not access a pre-bound socket, will try to bind myself\n"
7874msgstr "" 7710msgstr ""
7875 7711
7876#: src/transport/tcp_service_legacy.c:951 7712#: src/transport/tcp_service_legacy.c:953
7877#: src/transport/tcp_service_legacy.c:969 src/util/service.c:1192 7713#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1750
7878#, c-format 7714#, c-format
7879msgid "Specified value for `%s' of service `%s' is invalid\n" 7715msgid "Specified value for `%s' of service `%s' is invalid\n"
7880msgstr "" 7716msgstr ""
7881 7717
7882#: src/transport/tcp_service_legacy.c:994 src/util/service.c:1224 7718#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1783
7883#, c-format 7719#, c-format
7884msgid "Could not access pre-bound socket %u, will try to bind myself\n" 7720msgid "Could not access pre-bound socket %u, will try to bind myself\n"
7885msgstr "" 7721msgstr ""
7886 7722
7887#: src/transport/tcp_service_legacy.c:1159 7723#: src/transport/tcp_service_legacy.c:1161
7888#, c-format 7724#, c-format
7889msgid "Failed to start `%s' at `%s'\n" 7725msgid "Failed to start `%s' at `%s'\n"
7890msgstr "" 7726msgstr ""
7891 7727
7892#: src/transport/tcp_service_legacy.c:1200 7728#: src/transport/tcp_service_legacy.c:1202
7893#, c-format 7729#, c-format
7894msgid "Service `%s' runs at %s\n" 7730msgid "Service `%s' runs at %s\n"
7895msgstr "" 7731msgstr ""
7896 7732
7897#: src/transport/tcp_service_legacy.c:1249 src/util/service.c:1498 7733#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2057
7898msgid "Service process failed to initialize\n" 7734msgid "Service process failed to initialize\n"
7899msgstr "" 7735msgstr ""
7900 7736
7901#: src/transport/tcp_service_legacy.c:1253 src/util/service.c:1502 7737#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2061
7902msgid "Service process could not initialize server function\n" 7738msgid "Service process could not initialize server function\n"
7903msgstr "" 7739msgstr ""
7904 7740
7905#: src/transport/tcp_service_legacy.c:1257 src/util/service.c:1506 7741#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2065
7906msgid "Service process failed to report status\n" 7742msgid "Service process failed to report status\n"
7907msgstr "" 7743msgstr ""
7908 7744
7909#: src/transport/tcp_service_legacy.c:1311 src/util/disk.c:1521 7745#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
7910#: src/util/service.c:1376 7746#: src/util/service.c:1935
7911#, c-format 7747#, c-format
7912msgid "Cannot obtain information about user `%s': %s\n" 7748msgid "Cannot obtain information about user `%s': %s\n"
7913msgstr "" 7749msgstr ""
7914 7750
7915#: src/transport/tcp_service_legacy.c:1312 src/util/service.c:1378 7751#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1937
7916msgid "No such user" 7752msgid "No such user"
7917msgstr "" 7753msgstr ""
7918 7754
7919#: src/transport/tcp_service_legacy.c:1325 src/util/service.c:1397 7755#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1956
7920#, c-format 7756#, c-format
7921msgid "Cannot change user/group to `%s': %s\n" 7757msgid "Cannot change user/group to `%s': %s\n"
7922msgstr "" 7758msgstr ""
7923 7759
7924#: src/transport/tcp_service_legacy.c:1396 src/util/service.c:1757 7760#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2318
7925msgid "do daemonize (detach from terminal)" 7761msgid "do daemonize (detach from terminal)"
7926msgstr "" 7762msgstr ""
7927 7763
7928#: src/transport/tcp_service_legacy.c:1446 src/util/program.c:277 7764#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:2382
7929#: src/util/service.c:1820 7765#: src/util/service.c:2397
7930#, c-format 7766#, c-format
7931msgid "Malformed configuration file `%s', exit ...\n" 7767msgid "Malformed configuration file `%s', exit ...\n"
7932msgstr "" 7768msgstr ""
7933 7769
7934#: src/transport/tcp_service_legacy.c:1456 src/util/program.c:297 7770#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2409
7935#: src/util/service.c:1831
7936msgid "Malformed configuration, exit ...\n" 7771msgid "Malformed configuration, exit ...\n"
7937msgstr "" 7772msgstr ""
7938 7773
7939#: src/transport/tcp_service_legacy.c:1461 src/util/program.c:290 7774#: src/transport/tcp_service_legacy.c:1463
7940#: src/util/service.c:1837
7941#, c-format 7775#, c-format
7942msgid "Could not access configuration file `%s'\n" 7776msgid "Could not access configuration file `%s'\n"
7943msgstr "" 7777msgstr ""
7944 7778
7945#: src/util/bio.c:179 src/util/bio.c:187 7779#: src/transport/transport_api2_communication.c:764
7780msgid "Dropped backchanel message: handler not provided by communicator\n"
7781msgstr ""
7782
7783#: src/util/bio.c:181 src/util/bio.c:189
7946#, c-format 7784#, c-format
7947msgid "Error reading `%s': %s" 7785msgid "Error reading `%s': %s"
7948msgstr "" 7786msgstr ""
7949 7787
7950#: src/util/bio.c:189 7788#: src/util/bio.c:191
7951msgid "End of file" 7789msgid "End of file"
7952msgstr "Fine del file" 7790msgstr "Fine del file"
7953 7791
7954#: src/util/bio.c:246 7792#: src/util/bio.c:248
7955#, c-format 7793#, c-format
7956msgid "Error reading length of string `%s'" 7794msgid "Error reading length of string `%s'"
7957msgstr "" 7795msgstr ""
7958 7796
7959#: src/util/bio.c:256 7797#: src/util/bio.c:258
7960#, c-format 7798#, c-format
7961msgid "String `%s' longer than allowed (%u > %u)" 7799msgid "String `%s' longer than allowed (%u > %u)"
7962msgstr "" 7800msgstr ""
7963 7801
7964#: src/util/bio.c:304 7802#: src/util/bio.c:306
7965#, c-format 7803#, c-format
7966msgid "Serialized metadata `%s' larger than allowed (%u>%u)" 7804msgid "Serialized metadata `%s' larger than allowed (%u>%u)"
7967msgstr "" 7805msgstr ""
7968 7806
7969#: src/util/bio.c:326 7807#: src/util/bio.c:328
7970#, c-format 7808#, c-format
7971msgid "Metadata `%s' failed to deserialize" 7809msgid "Metadata `%s' failed to deserialize"
7972msgstr "" 7810msgstr ""
7973 7811
7974#: src/util/client.c:732 7812#: src/util/client.c:734
7975msgid "not a valid filename" 7813msgid "not a valid filename"
7976msgstr "" 7814msgstr ""
7977 7815
7978#: src/util/client.c:923 7816#: src/util/client.c:925
7979#, c-format 7817#, c-format
7980msgid "Need a non-empty hostname for service `%s'.\n" 7818msgid "Need a non-empty hostname for service `%s'.\n"
7981msgstr "" 7819msgstr ""
7982 7820
7983#: src/util/common_logging.c:257 src/util/common_logging.c:1159 7821#: src/util/common_logging.c:259 src/util/common_logging.c:1162
7984msgid "DEBUG" 7822msgid "DEBUG"
7985msgstr "DEBUG" 7823msgstr "DEBUG"
7986 7824
7987#: src/util/common_logging.c:259 src/util/common_logging.c:1157 7825#: src/util/common_logging.c:261 src/util/common_logging.c:1160
7988msgid "INFO" 7826msgid "INFO"
7989msgstr "" 7827msgstr ""
7990 7828
7991#: src/util/common_logging.c:261 src/util/common_logging.c:1155 7829#: src/util/common_logging.c:263 src/util/common_logging.c:1158
7992msgid "MESSAGE" 7830msgid "MESSAGE"
7993msgstr "" 7831msgstr ""
7994 7832
7995#: src/util/common_logging.c:263 src/util/common_logging.c:1153 7833#: src/util/common_logging.c:265 src/util/common_logging.c:1156
7996msgid "WARNING" 7834msgid "WARNING"
7997msgstr "" 7835msgstr ""
7998 7836
7999#: src/util/common_logging.c:265 src/util/common_logging.c:1151 7837#: src/util/common_logging.c:267 src/util/common_logging.c:1154
8000msgid "ERROR" 7838msgid "ERROR"
8001msgstr "ERRORE" 7839msgstr "ERRORE"
8002 7840
8003#: src/util/common_logging.c:267 src/util/common_logging.c:1161 7841#: src/util/common_logging.c:269 src/util/common_logging.c:1164
8004msgid "NONE" 7842msgid "NONE"
8005msgstr "NESSUNA" 7843msgstr "NESSUNA"
8006 7844
8007#: src/util/common_logging.c:631 src/util/common_logging.c:661 7845#: src/util/common_logging.c:633 src/util/common_logging.c:663
8008#, c-format 7846#, c-format
8009msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n" 7847msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
8010msgstr "" 7848msgstr ""
8011 7849
8012#: src/util/common_logging.c:895 7850#: src/util/common_logging.c:898
8013#, c-format 7851#, c-format
8014msgid "Message `%.*s' repeated %u times in the last %s\n" 7852msgid "Message `%.*s' repeated %u times in the last %s\n"
8015msgstr "" 7853msgstr ""
8016 7854
8017#: src/util/common_logging.c:1162 7855#: src/util/common_logging.c:1165
8018msgid "INVALID" 7856msgid "INVALID"
8019msgstr "NON VALIDO" 7857msgstr "NON VALIDO"
8020 7858
8021#: src/util/common_logging.c:1455 7859#: src/util/common_logging.c:1458
8022msgid "unknown address" 7860msgid "unknown address"
8023msgstr "indirizzo sconosciuto" 7861msgstr "indirizzo sconosciuto"
8024 7862
8025#: src/util/common_logging.c:1497 7863#: src/util/common_logging.c:1500
8026msgid "invalid address" 7864msgid "invalid address"
8027msgstr "" 7865msgstr ""
8028 7866
8029#: src/util/common_logging.c:1515 7867#: src/util/common_logging.c:1518
8030#, c-format 7868#, c-format
8031msgid "Configuration fails to specify option `%s' in section `%s'!\n" 7869msgid "Configuration fails to specify option `%s' in section `%s'!\n"
8032msgstr "" 7870msgstr ""
8033 7871
8034#: src/util/common_logging.c:1536 7872#: src/util/common_logging.c:1539
8035#, c-format 7873#, c-format
8036msgid "" 7874msgid ""
8037"Configuration specifies invalid value for option `%s' in section `%s': %s\n" 7875"Configuration specifies invalid value for option `%s' in section `%s': %s\n"
8038msgstr "" 7876msgstr ""
8039 7877
8040#: src/util/configuration.c:294 7878#: src/util/configuration.c:331
8041#, c-format 7879#, c-format
8042msgid "Syntax error while deserializing in line %u\n" 7880msgid "Syntax error while deserializing in line %u\n"
8043msgstr "" 7881msgstr ""
8044 7882
8045#: src/util/configuration.c:361 7883#: src/util/configuration.c:398
8046#, c-format 7884#, c-format
8047msgid "Error while reading file `%s'\n" 7885msgid "Error while reading file `%s'\n"
8048msgstr "" 7886msgstr ""
8049 7887
8050#: src/util/configuration.c:970 7888#: src/util/configuration.c:1016
8051msgid "Not a valid relative time specification" 7889msgid "Not a valid relative time specification"
8052msgstr "" 7890msgstr ""
8053 7891
8054#: src/util/configuration.c:1059 7892#: src/util/configuration.c:1105
8055#, c-format 7893#, c-format
8056msgid "" 7894msgid ""
8057"Configuration value '%s' for '%s' in section '%s' is not in set of legal " 7895"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
8058"choices\n" 7896"choices\n"
8059msgstr "" 7897msgstr ""
8060 7898
8061#: src/util/configuration.c:1178 7899#: src/util/configuration.c:1224
8062#, c-format 7900#, c-format
8063msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n" 7901msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n"
8064msgstr "" 7902msgstr ""
8065 7903
8066#: src/util/configuration.c:1211 7904#: src/util/configuration.c:1257
8067#, c-format 7905#, c-format
8068msgid "Missing closing `%s' in option `%s'\n" 7906msgid "Missing closing `%s' in option `%s'\n"
8069msgstr "" 7907msgstr ""
8070 7908
8071#: src/util/configuration.c:1279 7909#: src/util/configuration.c:1325
8072#, c-format 7910#, c-format
8073msgid "" 7911msgid ""
8074"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined " 7912"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined "
8075"as an environmental variable\n" 7913"as an environmental variable\n"
8076msgstr "" 7914msgstr ""
8077 7915
8078#: src/util/container_bloomfilter.c:530 7916#: src/util/container_bloomfilter.c:532
8079#, c-format 7917#, c-format
8080msgid "" 7918msgid ""
8081"Size of file on disk is incorrect for this Bloom filter (want %llu, have " 7919"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
8082"%llu)\n" 7920"%llu)\n"
8083msgstr "" 7921msgstr ""
8084 7922
8085#: src/util/crypto_ecc.c:860 7923#: src/util/crypto_ecc.c:862
8086#, c-format 7924#, c-format
8087msgid "ECC signing failed at %s:%d: %s\n" 7925msgid "ECC signing failed at %s:%d: %s\n"
8088msgstr "" 7926msgstr ""
8089 7927
8090#: src/util/crypto_ecc.c:915 7928#: src/util/crypto_ecc.c:917
8091#, c-format 7929#, c-format
8092msgid "EdDSA signing failed at %s:%d: %s\n" 7930msgid "EdDSA signing failed at %s:%d: %s\n"
8093msgstr "" 7931msgstr ""
8094 7932
8095#: src/util/crypto_ecc.c:994 7933#: src/util/crypto_ecc.c:996
8096#, c-format 7934#, c-format
8097msgid "ECDSA signature verification failed at %s:%d: %s\n" 7935msgid "ECDSA signature verification failed at %s:%d: %s\n"
8098msgstr "" 7936msgstr ""
8099 7937
8100#: src/util/crypto_ecc.c:1055 7938#: src/util/crypto_ecc.c:1057
8101#, c-format 7939#, c-format
8102msgid "EdDSA signature verification failed at %s:%d: %s\n" 7940msgid "EdDSA signature verification failed at %s:%d: %s\n"
8103msgstr "" 7941msgstr ""
8104 7942
8105#: src/util/crypto_ecc_setup.c:121 src/util/crypto_ecc_setup.c:160 7943#: src/util/crypto_ecc_setup.c:123 src/util/crypto_ecc_setup.c:162
8106#: src/util/crypto_ecc_setup.c:303 src/util/crypto_ecc_setup.c:350 7944#: src/util/crypto_ecc_setup.c:305 src/util/crypto_ecc_setup.c:352
8107#, c-format 7945#, c-format
8108msgid "Could not acquire lock on file `%s': %s...\n" 7946msgid "Could not acquire lock on file `%s': %s...\n"
8109msgstr "" 7947msgstr ""
8110 7948
8111#: src/util/crypto_ecc_setup.c:127 src/util/crypto_ecc_setup.c:309 7949#: src/util/crypto_ecc_setup.c:129 src/util/crypto_ecc_setup.c:311
8112msgid "Creating a new private key. This may take a while.\n" 7950msgid "Creating a new private key. This may take a while.\n"
8113msgstr "" 7951msgstr ""
8114 7952
8115#: src/util/crypto_ecc_setup.c:164 src/util/crypto_ecc_setup.c:354 7953#: src/util/crypto_ecc_setup.c:166 src/util/crypto_ecc_setup.c:356
8116msgid "This may be ok if someone is currently generating a private key.\n" 7954msgid "This may be ok if someone is currently generating a private key.\n"
8117msgstr "" 7955msgstr ""
8118 7956
8119#: src/util/crypto_ecc_setup.c:194 src/util/crypto_ecc_setup.c:396 7957#: src/util/crypto_ecc_setup.c:196 src/util/crypto_ecc_setup.c:398
8120#, c-format 7958#, c-format
8121msgid "" 7959msgid ""
8122"When trying to read key file `%s' I found %u bytes but I need at least %u.\n" 7960"When trying to read key file `%s' I found %u bytes but I need at least %u.\n"
8123msgstr "" 7961msgstr ""
8124 7962
8125#: src/util/crypto_ecc_setup.c:199 src/util/crypto_ecc_setup.c:400 7963#: src/util/crypto_ecc_setup.c:201 src/util/crypto_ecc_setup.c:402
8126msgid "This may be ok if someone is currently generating a key.\n" 7964msgid "This may be ok if someone is currently generating a key.\n"
8127msgstr "" 7965msgstr ""
8128 7966
8129#: src/util/crypto_ecc_setup.c:466 7967#: src/util/crypto_ecc_setup.c:468
8130msgid "Could not load peer's private key\n" 7968msgid "Could not load peer's private key\n"
8131msgstr "" 7969msgstr ""
8132 7970
8133#: src/util/crypto_random.c:304 7971#: src/util/crypto_random.c:306
8134#, c-format 7972#, c-format
8135msgid "libgcrypt has not the expected version (version %s is required).\n" 7973msgid "libgcrypt has not the expected version (version %s is required).\n"
8136msgstr "" 7974msgstr ""
8137 7975
8138#: src/util/crypto_rsa.c:848 7976#: src/util/crypto_rsa.c:850
8139#, c-format 7977#, c-format
8140msgid "RSA signing failed at %s:%d: %s\n" 7978msgid "RSA signing failed at %s:%d: %s\n"
8141msgstr "" 7979msgstr ""
8142 7980
8143#: src/util/crypto_rsa.c:1187 7981#: src/util/crypto_rsa.c:1189
8144#, c-format 7982#, c-format
8145msgid "RSA signature verification failed at %s:%d: %s\n" 7983msgid "RSA signature verification failed at %s:%d: %s\n"
8146msgstr "" 7984msgstr ""
8147 7985
8148#: src/util/disk.c:1251 7986#: src/util/disk.c:1255
8149#, c-format 7987#, c-format
8150msgid "Expected `%s' to be a directory!\n" 7988msgid "Expected `%s' to be a directory!\n"
8151msgstr "" 7989msgstr ""
8152 7990
8153#: src/util/dnsparser.c:250 7991#: src/util/dnsparser.c:264
8154#, c-format 7992#, c-format
8155msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n" 7993msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
8156msgstr "" 7994msgstr ""
8157 7995
8158#: src/util/dnsparser.c:940 7996#: src/util/dnsparser.c:954
8159#, c-format 7997#, c-format
8160msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n" 7998msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
8161msgstr "" 7999msgstr ""
8162 8000
8163#: src/util/dnsstub.c:229 8001#: src/util/dnsstub.c:231
8164#, c-format 8002#, c-format
8165msgid "Could not bind to any port: %s\n" 8003msgid "Could not bind to any port: %s\n"
8166msgstr "" 8004msgstr ""
8167 8005
8168#: src/util/dnsstub.c:360 8006#: src/util/dnsstub.c:362
8169#, c-format 8007#, c-format
8170msgid "Received DNS response that is too small (%u bytes)" 8008msgid "Received DNS response that is too small (%u bytes)"
8171msgstr "" 8009msgstr ""
8172 8010
8173#: src/util/dnsstub.c:507 8011#: src/util/dnsstub.c:509
8174#, c-format 8012#, c-format
8175msgid "Failed to send DNS request to %s: %s\n" 8013msgid "Failed to send DNS request to %s: %s\n"
8176msgstr "" 8014msgstr ""
8177 8015
8178#: src/util/dnsstub.c:513 8016#: src/util/dnsstub.c:515
8179#, c-format 8017#, c-format
8180msgid "Sent DNS request to %s\n" 8018msgid "Sent DNS request to %s\n"
8181msgstr "" 8019msgstr ""
@@ -8245,138 +8083,138 @@ msgstr ""
8245msgid "Missing mandatory option `%s'.\n" 8083msgid "Missing mandatory option `%s'.\n"
8246msgstr "" 8084msgstr ""
8247 8085
8248#: src/util/getopt_helpers.c:68 8086#: src/util/getopt_helpers.c:70
8249msgid "print the version number" 8087msgid "print the version number"
8250msgstr "" 8088msgstr ""
8251 8089
8252#: src/util/getopt_helpers.c:113 8090#: src/util/getopt_helpers.c:116
8253#, c-format 8091#, c-format
8254msgid "" 8092msgid ""
8255"Arguments mandatory for long options are also mandatory for short options.\n" 8093"Arguments mandatory for long options are also mandatory for short options.\n"
8256msgstr "" 8094msgstr ""
8257 8095
8258#: src/util/getopt_helpers.c:201 8096#: src/util/getopt_helpers.c:204
8259msgid "print this help" 8097msgid "print this help"
8260msgstr "" 8098msgstr ""
8261 8099
8262#: src/util/getopt_helpers.c:279 8100#: src/util/getopt_helpers.c:282
8263msgid "be verbose" 8101msgid "be verbose"
8264msgstr "" 8102msgstr ""
8265 8103
8266#: src/util/getopt_helpers.c:420 8104#: src/util/getopt_helpers.c:423
8267msgid "configure logging to use LOGLEVEL" 8105msgid "configure logging to use LOGLEVEL"
8268msgstr "" 8106msgstr ""
8269 8107
8270#: src/util/getopt_helpers.c:500 8108#: src/util/getopt_helpers.c:503
8271msgid "configure logging to write logs to FILENAME" 8109msgid "configure logging to write logs to FILENAME"
8272msgstr "" 8110msgstr ""
8273 8111
8274#: src/util/getopt_helpers.c:522 8112#: src/util/getopt_helpers.c:525
8275msgid "use configuration file FILENAME" 8113msgid "use configuration file FILENAME"
8276msgstr "" 8114msgstr ""
8277 8115
8278#: src/util/getopt_helpers.c:559 src/util/getopt_helpers.c:763 8116#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
8279#: src/util/getopt_helpers.c:830 8117#: src/util/getopt_helpers.c:839
8280#, c-format 8118#, c-format
8281msgid "You must pass a number to the `%s' option.\n" 8119msgid "You must pass a number to the `%s' option.\n"
8282msgstr "" 8120msgstr ""
8283 8121
8284#: src/util/getopt_helpers.c:624 8122#: src/util/getopt_helpers.c:629
8285#, c-format 8123#, c-format
8286msgid "You must pass relative time to the `%s' option.\n" 8124msgid "You must pass relative time to the `%s' option.\n"
8287msgstr "" 8125msgstr ""
8288 8126
8289#: src/util/getopt_helpers.c:690 8127#: src/util/getopt_helpers.c:695
8290#, c-format 8128#, c-format
8291msgid "You must pass absolute time to the `%s' option.\n" 8129msgid "You must pass absolute time to the `%s' option.\n"
8292msgstr "" 8130msgstr ""
8293 8131
8294#: src/util/getopt_helpers.c:754 8132#: src/util/getopt_helpers.c:760
8295#, c-format 8133#, c-format
8296msgid "Your input for the '%s' option has to be a non negative number \n" 8134msgid "Your input for the '%s' option has to be a non negative number \n"
8297msgstr "" 8135msgstr ""
8298 8136
8299#: src/util/getopt_helpers.c:837 8137#: src/util/getopt_helpers.c:846
8300#, c-format 8138#, c-format
8301msgid "You must pass a number below %u to the `%s' option.\n" 8139msgid "You must pass a number below %u to the `%s' option.\n"
8302msgstr "" 8140msgstr ""
8303 8141
8304#: src/util/getopt_helpers.c:923 8142#: src/util/getopt_helpers.c:932
8305#, c-format 8143#, c-format
8306msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n" 8144msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
8307msgstr "" 8145msgstr ""
8308 8146
8309#: src/util/gnunet-config.c:157 8147#: src/util/gnunet-config.c:160
8310#, c-format 8148#, c-format
8311msgid "failed to load configuration defaults" 8149msgid "failed to load configuration defaults"
8312msgstr "" 8150msgstr ""
8313 8151
8314#: src/util/gnunet-config.c:170 8152#: src/util/gnunet-config.c:173
8315#, c-format 8153#, c-format
8316msgid "--section argument is required\n" 8154msgid "%s or %s argument is required\n"
8317msgstr "" 8155msgstr ""
8318 8156
8319#: src/util/gnunet-config.c:173 8157#: src/util/gnunet-config.c:181
8320#, c-format 8158#, c-format
8321msgid "The following sections are available:\n" 8159msgid "The following sections are available:\n"
8322msgstr "" 8160msgstr ""
8323 8161
8324#: src/util/gnunet-config.c:224 8162#: src/util/gnunet-config.c:232
8325#, c-format 8163#, c-format
8326msgid "--option argument required to set value\n" 8164msgid "--option argument required to set value\n"
8327msgstr "" 8165msgstr ""
8328 8166
8329#: src/util/gnunet-config.c:263 8167#: src/util/gnunet-config.c:286
8330msgid "obtain option of value as a filename (with $-expansion)" 8168msgid "obtain option of value as a filename (with $-expansion)"
8331msgstr "" 8169msgstr ""
8332 8170
8333#: src/util/gnunet-config.c:268 8171#: src/util/gnunet-config.c:291
8334msgid "name of the section to access" 8172msgid "name of the section to access"
8335msgstr "" 8173msgstr ""
8336 8174
8337#: src/util/gnunet-config.c:273 8175#: src/util/gnunet-config.c:296
8338msgid "name of the option to access" 8176msgid "name of the option to access"
8339msgstr "" 8177msgstr ""
8340 8178
8341#: src/util/gnunet-config.c:278 8179#: src/util/gnunet-config.c:301
8342msgid "value to set" 8180msgid "value to set"
8343msgstr "" 8181msgstr ""
8344 8182
8345#: src/util/gnunet-config.c:282 8183#: src/util/gnunet-config.c:305
8346msgid "print available configuration sections" 8184msgid "print available configuration sections"
8347msgstr "" 8185msgstr ""
8348 8186
8349#: src/util/gnunet-config.c:286 8187#: src/util/gnunet-config.c:309
8350msgid "write configuration file that only contains delta to defaults" 8188msgid "write configuration file that only contains delta to defaults"
8351msgstr "" 8189msgstr ""
8352 8190
8353#: src/util/gnunet-config.c:299 8191#: src/util/gnunet-config.c:322
8354msgid "Manipulate GNUnet configuration files" 8192msgid "Manipulate GNUnet configuration files"
8355msgstr "" 8193msgstr ""
8356 8194
8357#: src/util/gnunet-ecc.c:92 8195#: src/util/gnunet-ecc.c:94
8358#, c-format 8196#, c-format
8359msgid "Failed to open `%s': %s\n" 8197msgid "Failed to open `%s': %s\n"
8360msgstr "" 8198msgstr ""
8361 8199
8362#: src/util/gnunet-ecc.c:128 8200#: src/util/gnunet-ecc.c:130
8363#, c-format 8201#, c-format
8364msgid "Generating %u keys like %s, please wait" 8202msgid "Generating %u keys like %s, please wait"
8365msgstr "" 8203msgstr ""
8366 8204
8367#: src/util/gnunet-ecc.c:141 8205#: src/util/gnunet-ecc.c:143
8368#, c-format 8206#, c-format
8369msgid "Generating %u keys, please wait" 8207msgid "Generating %u keys, please wait"
8370msgstr "" 8208msgstr ""
8371 8209
8372#: src/util/gnunet-ecc.c:182 8210#: src/util/gnunet-ecc.c:184
8373#, c-format 8211#, c-format
8374msgid "" 8212msgid ""
8375"\n" 8213"\n"
8376"Failed to write to `%s': %s\n" 8214"Failed to write to `%s': %s\n"
8377msgstr "" 8215msgstr ""
8378 8216
8379#: src/util/gnunet-ecc.c:192 8217#: src/util/gnunet-ecc.c:194
8380#, c-format 8218#, c-format
8381msgid "" 8219msgid ""
8382"\n" 8220"\n"
@@ -8385,94 +8223,94 @@ msgstr ""
8385"\n" 8223"\n"
8386"Completato!\n" 8224"Completato!\n"
8387 8225
8388#: src/util/gnunet-ecc.c:195 8226#: src/util/gnunet-ecc.c:197
8389#, c-format 8227#, c-format
8390msgid "" 8228msgid ""
8391"\n" 8229"\n"
8392"Error, %u keys not generated\n" 8230"Error, %u keys not generated\n"
8393msgstr "" 8231msgstr ""
8394 8232
8395#: src/util/gnunet-ecc.c:288 8233#: src/util/gnunet-ecc.c:290
8396#, c-format 8234#, c-format
8397msgid "Hostkeys file `%s' not found\n" 8235msgid "Hostkeys file `%s' not found\n"
8398msgstr "" 8236msgstr ""
8399 8237
8400#: src/util/gnunet-ecc.c:303 8238#: src/util/gnunet-ecc.c:305
8401#, c-format 8239#, c-format
8402msgid "Hostkeys file `%s' is empty\n" 8240msgid "Hostkeys file `%s' is empty\n"
8403msgstr "" 8241msgstr ""
8404 8242
8405#: src/util/gnunet-ecc.c:332 8243#: src/util/gnunet-ecc.c:334
8406#, c-format 8244#, c-format
8407msgid "Could not read hostkey file: %s\n" 8245msgid "Could not read hostkey file: %s\n"
8408msgstr "" 8246msgstr ""
8409 8247
8410#: src/util/gnunet-ecc.c:389 8248#: src/util/gnunet-ecc.c:391
8411msgid "No hostkey file specified on command line\n" 8249msgid "No hostkey file specified on command line\n"
8412msgstr "" 8250msgstr ""
8413 8251
8414#: src/util/gnunet-ecc.c:454 8252#: src/util/gnunet-ecc.c:456
8415msgid "list keys included in a file (for testing)" 8253msgid "list keys included in a file (for testing)"
8416msgstr "" 8254msgstr ""
8417 8255
8418#: src/util/gnunet-ecc.c:459 8256#: src/util/gnunet-ecc.c:461
8419msgid "number of keys to list included in a file (for testing)" 8257msgid "number of keys to list included in a file (for testing)"
8420msgstr "" 8258msgstr ""
8421 8259
8422#: src/util/gnunet-ecc.c:464 8260#: src/util/gnunet-ecc.c:466
8423msgid "create COUNT public-private key pairs (for testing)" 8261msgid "create COUNT public-private key pairs (for testing)"
8424msgstr "" 8262msgstr ""
8425 8263
8426#: src/util/gnunet-ecc.c:468 8264#: src/util/gnunet-ecc.c:470
8427msgid "print the public key in ASCII format" 8265msgid "print the public key in ASCII format"
8428msgstr "" 8266msgstr ""
8429 8267
8430#: src/util/gnunet-ecc.c:472 8268#: src/util/gnunet-ecc.c:474
8431msgid "print the private key in ASCII format" 8269msgid "print the private key in ASCII format"
8432msgstr "" 8270msgstr ""
8433 8271
8434#: src/util/gnunet-ecc.c:476 8272#: src/util/gnunet-ecc.c:478
8435msgid "print the public key in HEX format" 8273msgid "print the public key in HEX format"
8436msgstr "" 8274msgstr ""
8437 8275
8438#: src/util/gnunet-ecc.c:480 8276#: src/util/gnunet-ecc.c:482
8439msgid "print examples of ECC operations (used for compatibility testing)" 8277msgid "print examples of ECC operations (used for compatibility testing)"
8440msgstr "" 8278msgstr ""
8441 8279
8442#: src/util/gnunet-ecc.c:496 8280#: src/util/gnunet-ecc.c:498
8443msgid "Manipulate GNUnet private ECC key files" 8281msgid "Manipulate GNUnet private ECC key files"
8444msgstr "" 8282msgstr ""
8445 8283
8446#: src/util/gnunet-resolver.c:166 8284#: src/util/gnunet-resolver.c:168
8447msgid "perform a reverse lookup" 8285msgid "perform a reverse lookup"
8448msgstr "" 8286msgstr ""
8449 8287
8450#: src/util/gnunet-resolver.c:177 8288#: src/util/gnunet-resolver.c:179
8451msgid "Use build-in GNUnet stub resolver" 8289msgid "Use build-in GNUnet stub resolver"
8452msgstr "" 8290msgstr ""
8453 8291
8454#: src/util/gnunet-scrypt.c:240 8292#: src/util/gnunet-scrypt.c:242
8455#, c-format 8293#, c-format
8456msgid "Loading hostkey from `%s' failed.\n" 8294msgid "Loading hostkey from `%s' failed.\n"
8457msgstr "" 8295msgstr ""
8458 8296
8459#: src/util/gnunet-scrypt.c:315 8297#: src/util/gnunet-scrypt.c:317
8460msgid "number of bits to require for the proof of work" 8298msgid "number of bits to require for the proof of work"
8461msgstr "" 8299msgstr ""
8462 8300
8463#: src/util/gnunet-scrypt.c:320 8301#: src/util/gnunet-scrypt.c:322
8464msgid "file with private key, otherwise default is used" 8302msgid "file with private key, otherwise default is used"
8465msgstr "" 8303msgstr ""
8466 8304
8467#: src/util/gnunet-scrypt.c:325 8305#: src/util/gnunet-scrypt.c:327
8468msgid "file with proof of work, otherwise default is used" 8306msgid "file with proof of work, otherwise default is used"
8469msgstr "" 8307msgstr ""
8470 8308
8471#: src/util/gnunet-scrypt.c:330 8309#: src/util/gnunet-scrypt.c:332
8472msgid "time to wait between calculations" 8310msgid "time to wait between calculations"
8473msgstr "" 8311msgstr ""
8474 8312
8475#: src/util/gnunet-scrypt.c:343 8313#: src/util/gnunet-scrypt.c:345
8476msgid "Manipulate GNUnet proof of work files" 8314msgid "Manipulate GNUnet proof of work files"
8477msgstr "" 8315msgstr ""
8478 8316
@@ -8480,467 +8318,492 @@ msgstr ""
8480msgid "No DNS server available. DNS resolution will not be possible.\n" 8318msgid "No DNS server available. DNS resolution will not be possible.\n"
8481msgstr "" 8319msgstr ""
8482 8320
8483#: src/util/gnunet-uri.c:83 8321#: src/util/gnunet-uri.c:85
8484#, c-format 8322#, c-format
8485msgid "No URI specified on command line\n" 8323msgid "No URI specified on command line\n"
8486msgstr "" 8324msgstr ""
8487 8325
8488#: src/util/gnunet-uri.c:89 8326#: src/util/gnunet-uri.c:91
8489#, c-format 8327#, c-format
8490msgid "Invalid URI: does not start with `%s'\n" 8328msgid "Invalid URI: does not start with `%s'\n"
8491msgstr "" 8329msgstr ""
8492 8330
8493#: src/util/gnunet-uri.c:96 8331#: src/util/gnunet-uri.c:98
8494#, c-format 8332#, c-format
8495msgid "Invalid URI: fails to specify subsystem\n" 8333msgid "Invalid URI: fails to specify subsystem\n"
8496msgstr "" 8334msgstr ""
8497 8335
8498#: src/util/gnunet-uri.c:106 8336#: src/util/gnunet-uri.c:108
8499#, c-format 8337#, c-format
8500msgid "No handler known for subsystem `%s'\n" 8338msgid "No handler known for subsystem `%s'\n"
8501msgstr "" 8339msgstr ""
8502 8340
8503#: src/util/gnunet-uri.c:168 8341#: src/util/gnunet-uri.c:170
8504msgid "Perform default-actions for GNUnet URIs" 8342msgid "Perform default-actions for GNUnet URIs"
8505msgstr "" 8343msgstr ""
8506 8344
8507#: src/util/helper.c:333 8345#: src/util/helper.c:335
8508#, c-format 8346#, c-format
8509msgid "Error reading from `%s': %s\n" 8347msgid "Error reading from `%s': %s\n"
8510msgstr "" 8348msgstr ""
8511 8349
8512#: src/util/helper.c:384 8350#: src/util/helper.c:386
8513#, c-format 8351#, c-format
8514msgid "Failed to parse inbound message from helper `%s'\n" 8352msgid "Failed to parse inbound message from helper `%s'\n"
8515msgstr "" 8353msgstr ""
8516 8354
8517#: src/util/helper.c:604 8355#: src/util/helper.c:606
8518#, c-format 8356#, c-format
8519msgid "Error writing to `%s': %s\n" 8357msgid "Error writing to `%s': %s\n"
8520msgstr "" 8358msgstr ""
8521 8359
8522#: src/util/network.c:134 8360#: src/util/network.c:136
8523#, c-format 8361#, c-format
8524msgid "Unable to shorten unix path `%s' while keeping name unique\n" 8362msgid "Unable to shorten unix path `%s' while keeping name unique\n"
8525msgstr "" 8363msgstr ""
8526 8364
8527#: src/util/network.c:1793 src/util/network.c:1977 8365#: src/util/network.c:1794 src/util/network.c:1978
8528#, c-format 8366#, c-format
8529msgid "" 8367msgid ""
8530"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n" 8368"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
8531msgstr "" 8369msgstr ""
8532 8370
8533#: src/util/os_installation.c:507 8371#: src/util/os_installation.c:509
8534#, c-format 8372#, c-format
8535msgid "" 8373msgid ""
8536"Could not determine installation path for %s. Set `%s' environment " 8374"Could not determine installation path for %s. Set `%s' environment "
8537"variable.\n" 8375"variable.\n"
8538msgstr "" 8376msgstr ""
8539 8377
8540#: src/util/os_installation.c:879 8378#: src/util/os_installation.c:881
8541#, c-format 8379#, c-format
8542msgid "Could not find binary `%s' in PATH!\n" 8380msgid "Could not find binary `%s' in PATH!\n"
8543msgstr "" 8381msgstr ""
8544 8382
8545#: src/util/os_installation.c:920 8383#: src/util/os_installation.c:922
8546#, c-format 8384#, c-format
8547msgid "Binary `%s' exists, but is not SUID\n" 8385msgid "Binary `%s' exists, but is not SUID\n"
8548msgstr "" 8386msgstr ""
8549 8387
8550#: src/util/os_installation.c:951 8388#: src/util/os_installation.c:953
8551#, c-format 8389#, c-format
8552msgid "CreateProcess failed for binary %s (%d).\n" 8390msgid "CreateProcess failed for binary %s (%d).\n"
8553msgstr "" 8391msgstr ""
8554 8392
8555#: src/util/os_installation.c:961 8393#: src/util/os_installation.c:963
8556#, c-format 8394#, c-format
8557msgid "GetExitCodeProcess failed for binary %s (%d).\n" 8395msgid "GetExitCodeProcess failed for binary %s (%d).\n"
8558msgstr "" 8396msgstr ""
8559 8397
8560#: src/util/plugin.c:84 8398#: src/util/plugin.c:86
8561#, c-format 8399#, c-format
8562msgid "Initialization of plugin mechanism failed: %s!\n" 8400msgid "Initialization of plugin mechanism failed: %s!\n"
8563msgstr "" 8401msgstr ""
8564 8402
8565#: src/util/plugin.c:149 8403#: src/util/plugin.c:151
8566#, c-format 8404#, c-format
8567msgid "`%s' failed to resolve method '%s' with error: %s\n" 8405msgid "`%s' failed to resolve method '%s' with error: %s\n"
8568msgstr "" 8406msgstr ""
8569 8407
8570#: src/util/plugin.c:224 8408#: src/util/plugin.c:226
8571#, c-format 8409#, c-format
8572msgid "`%s' failed for library `%s' with error: %s\n" 8410msgid "`%s' failed for library `%s' with error: %s\n"
8573msgstr "" 8411msgstr ""
8574 8412
8575#: src/util/plugin.c:383 8413#: src/util/plugin.c:385
8576msgid "Could not determine plugin installation path.\n" 8414msgid "Could not determine plugin installation path.\n"
8577msgstr "" 8415msgstr ""
8578 8416
8579#: src/util/regex.c:132 8417#: src/util/program.c:283
8418#, c-format
8419msgid "Unreadable or malformed configuration file `%s', exit ...\n"
8420msgstr ""
8421
8422#: src/util/program.c:301
8423#, c-format
8424msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
8425msgstr ""
8426
8427#: src/util/program.c:318
8428msgid "Unreadable or malformed configuration, exit ...\n"
8429msgstr ""
8430
8431#: src/util/regex.c:134
8580#, c-format 8432#, c-format
8581msgid "Bad mask: %d\n" 8433msgid "Bad mask: %d\n"
8582msgstr "" 8434msgstr ""
8583 8435
8584#: src/util/resolver_api.c:216 8436#: src/util/resolver_api.c:218
8585#, c-format 8437#, c-format
8586msgid "" 8438msgid ""
8587"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n" 8439"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n"
8588msgstr "" 8440msgstr ""
8589 8441
8590#: src/util/resolver_api.c:237 8442#: src/util/resolver_api.c:239
8591#, c-format 8443#, c-format
8592msgid "" 8444msgid ""
8593"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS " 8445"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS "
8594"resolution will be unavailable.\n" 8446"resolution will be unavailable.\n"
8595msgstr "" 8447msgstr ""
8596 8448
8597#: src/util/resolver_api.c:873 8449#: src/util/resolver_api.c:875
8598#, c-format 8450#, c-format
8599msgid "Timeout trying to resolve hostname `%s'.\n" 8451msgid "Timeout trying to resolve hostname `%s'.\n"
8600msgstr "" 8452msgstr ""
8601 8453
8602#: src/util/resolver_api.c:886 8454#: src/util/resolver_api.c:888
8603#, c-format 8455#, c-format
8604msgid "Timeout trying to resolve IP address `%s'.\n" 8456msgid "Timeout trying to resolve IP address `%s'.\n"
8605msgstr "" 8457msgstr ""
8606 8458
8607#: src/util/resolver_api.c:1071 8459#: src/util/resolver_api.c:1073
8608msgid "Resolver not configured correctly.\n" 8460msgid "Resolver not configured correctly.\n"
8609msgstr "" 8461msgstr ""
8610 8462
8611#: src/util/resolver_api.c:1158 src/util/resolver_api.c:1181 8463#: src/util/resolver_api.c:1160 src/util/resolver_api.c:1183
8612#: src/util/resolver_api.c:1195 8464#: src/util/resolver_api.c:1197
8613#, c-format 8465#, c-format
8614msgid "Could not resolve our FQDN: %s\n" 8466msgid "Could not resolve our FQDN: %s\n"
8615msgstr "" 8467msgstr ""
8616 8468
8617#: src/util/service.c:1303 8469#: src/util/service.c:674
8618msgid ""
8619"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8620msgstr ""
8621
8622#: src/util/service.c:2123
8623#, c-format 8470#, c-format
8624msgid "" 8471msgid ""
8625"Processing code for message of type %u did not call " 8472"Processing code for message of type %u did not call "
8626"`GNUNET_SERVICE_client_continue' after %s\n" 8473"`GNUNET_SERVICE_client_continue' after %s\n"
8627msgstr "" 8474msgstr ""
8628 8475
8629#: src/util/signal.c:87 8476#: src/util/service.c:1862
8477msgid ""
8478"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8479msgstr ""
8480
8481#: src/util/signal.c:89
8630#, c-format 8482#, c-format
8631msgid "signal (%d, %p) returned %d.\n" 8483msgid "signal (%d, %p) returned %d.\n"
8632msgstr "" 8484msgstr ""
8633 8485
8634#: src/util/socks.c:595 8486#: src/util/socks.c:597
8635#, c-format 8487#, c-format
8636msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n" 8488msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
8637msgstr "" 8489msgstr ""
8638 8490
8639#: src/util/socks.c:614 8491#: src/util/socks.c:616
8640#, c-format 8492#, c-format
8641msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n" 8493msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
8642msgstr "" 8494msgstr ""
8643 8495
8644#: src/util/strings.c:174 8496#: src/util/strings.c:176
8645msgid "b" 8497msgid "b"
8646msgstr "" 8498msgstr ""
8647 8499
8648#: src/util/strings.c:471 8500#: src/util/strings.c:475
8649#, c-format 8501#, c-format
8650msgid "Character sets requested were `%s'->`%s'\n" 8502msgid "Character sets requested were `%s'->`%s'\n"
8651msgstr "" 8503msgstr ""
8652 8504
8653#: src/util/strings.c:598 8505#: src/util/strings.c:602
8654msgid "Failed to expand `$HOME': environment variable `HOME' not set" 8506msgid "Failed to expand `$HOME': environment variable `HOME' not set"
8655msgstr "" 8507msgstr ""
8656 8508
8657#: src/util/strings.c:702 8509#: src/util/strings.c:706
8658msgid "µs" 8510msgid "µs"
8659msgstr "µs" 8511msgstr "µs"
8660 8512
8661#: src/util/strings.c:706 8513#: src/util/strings.c:710
8662msgid "forever" 8514msgid "forever"
8663msgstr "per sempre" 8515msgstr "per sempre"
8664 8516
8665#: src/util/strings.c:708 8517#: src/util/strings.c:712
8666msgid "0 ms" 8518msgid "0 ms"
8667msgstr "0 ms" 8519msgstr "0 ms"
8668 8520
8669#: src/util/strings.c:714 8521#: src/util/strings.c:718
8670msgid "ms" 8522msgid "ms"
8671msgstr "ms" 8523msgstr "ms"
8672 8524
8673#: src/util/strings.c:720 8525#: src/util/strings.c:724
8674msgid "s" 8526msgid "s"
8675msgstr "s" 8527msgstr "s"
8676 8528
8677#: src/util/strings.c:726 8529#: src/util/strings.c:730
8678msgid "m" 8530msgid "m"
8679msgstr "" 8531msgstr ""
8680 8532
8681#: src/util/strings.c:732 8533#: src/util/strings.c:736
8682msgid "h" 8534msgid "h"
8683msgstr "o" 8535msgstr "o"
8684 8536
8685#: src/util/strings.c:739 8537#: src/util/strings.c:743
8686msgid "day" 8538msgid "day"
8687msgstr "giorno" 8539msgstr "giorno"
8688 8540
8689#: src/util/strings.c:741 8541#: src/util/strings.c:745
8690msgid "days" 8542msgid "days"
8691msgstr "giorni" 8543msgstr "giorni"
8692 8544
8693#: src/util/strings.c:770 8545#: src/util/strings.c:774
8694msgid "end of time" 8546msgid "end of time"
8695msgstr "" 8547msgstr ""
8696 8548
8697#: src/util/strings.c:1272 8549#: src/util/strings.c:1277
8698msgid "IPv6 address did not start with `['\n" 8550msgid "IPv6 address did not start with `['\n"
8699msgstr "" 8551msgstr ""
8700 8552
8701#: src/util/strings.c:1280 8553#: src/util/strings.c:1285
8702msgid "IPv6 address did contain ':' to separate port number\n" 8554msgid "IPv6 address did contain ':' to separate port number\n"
8703msgstr "" 8555msgstr ""
8704 8556
8705#: src/util/strings.c:1286 8557#: src/util/strings.c:1291
8706msgid "IPv6 address did contain ']' before ':' to separate port number\n" 8558msgid "IPv6 address did contain ']' before ':' to separate port number\n"
8707msgstr "" 8559msgstr ""
8708 8560
8709#: src/util/strings.c:1293 8561#: src/util/strings.c:1301
8710msgid "IPv6 address did contain a valid port number after the last ':'\n" 8562msgid "IPv6 address did contain a valid port number after the last ':'\n"
8711msgstr "" 8563msgstr ""
8712 8564
8713#: src/util/strings.c:1302 8565#: src/util/strings.c:1310
8714#, c-format 8566#, c-format
8715msgid "Invalid IPv6 address `%s': %s\n" 8567msgid "Invalid IPv6 address `%s': %s\n"
8716msgstr "" 8568msgstr ""
8717 8569
8718#: src/util/strings.c:1574 src/util/strings.c:1590 8570#: src/util/strings.c:1586 src/util/strings.c:1602
8719msgid "Port not in range\n" 8571msgid "Port not in range\n"
8720msgstr "" 8572msgstr ""
8721 8573
8722#: src/util/strings.c:1599 8574#: src/util/strings.c:1611
8723#, c-format 8575#, c-format
8724msgid "Malformed port policy `%s'\n" 8576msgid "Malformed port policy `%s'\n"
8725msgstr "" 8577msgstr ""
8726 8578
8727#: src/util/strings.c:1682 src/util/strings.c:1713 src/util/strings.c:1761 8579#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
8728#: src/util/strings.c:1782 8580#: src/util/strings.c:1798
8729#, c-format 8581#, c-format
8730msgid "Invalid format for IP: `%s'\n" 8582msgid "Invalid format for IP: `%s'\n"
8731msgstr "" 8583msgstr ""
8732 8584
8733#: src/util/strings.c:1739 8585#: src/util/strings.c:1754
8734#, c-format 8586#, c-format
8735msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)." 8587msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
8736msgstr "" 8588msgstr ""
8737 8589
8738#: src/util/strings.c:1791 8590#: src/util/strings.c:1807
8739#, c-format 8591#, c-format
8740msgid "Invalid format: `%s'\n" 8592msgid "Invalid format: `%s'\n"
8741msgstr "" 8593msgstr ""
8742 8594
8743#: src/util/strings.c:1843 8595#: src/util/strings.c:1860
8744#, c-format 8596#, c-format
8745msgid "Invalid network notation (does not end with ';': `%s')\n" 8597msgid "Invalid network notation (does not end with ';': `%s')\n"
8746msgstr "" 8598msgstr ""
8747 8599
8748#: src/util/strings.c:1893 8600#: src/util/strings.c:1914
8749#, c-format 8601#, c-format
8750msgid "Wrong format `%s' for netmask\n" 8602msgid "Wrong format `%s' for netmask\n"
8751msgstr "" 8603msgstr ""
8752 8604
8753#: src/util/strings.c:1924 8605#: src/util/strings.c:1945
8754#, c-format 8606#, c-format
8755msgid "Wrong format `%s' for network\n" 8607msgid "Wrong format `%s' for network\n"
8756msgstr "" 8608msgstr ""
8757 8609
8758#: src/vpn/gnunet-service-vpn.c:538 src/vpn/gnunet-service-vpn.c:1805 8610#: src/util/time.c:828 src/util/time.c:860
8611#, c-format
8612msgid "Failed to map `%s', cannot assure monotonic time!\n"
8613msgstr ""
8614
8615#: src/util/time.c:866
8616#, c-format
8617msgid ""
8618"Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
8619msgstr ""
8620
8621#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
8759msgid "# Active channels" 8622msgid "# Active channels"
8760msgstr "# Canali attivi" 8623msgstr "# Canali attivi"
8761 8624
8762#: src/vpn/gnunet-service-vpn.c:597 8625#: src/vpn/gnunet-service-vpn.c:599
8763msgid "# Messages dropped in cadet queue (overflow)" 8626msgid "# Messages dropped in cadet queue (overflow)"
8764msgstr "" 8627msgstr ""
8765 8628
8766#: src/vpn/gnunet-service-vpn.c:751 8629#: src/vpn/gnunet-service-vpn.c:753
8767msgid "# ICMP packets received from cadet" 8630msgid "# ICMP packets received from cadet"
8768msgstr "" 8631msgstr ""
8769 8632
8770#: src/vpn/gnunet-service-vpn.c:1094 8633#: src/vpn/gnunet-service-vpn.c:1096
8771msgid "# UDP packets received from cadet" 8634msgid "# UDP packets received from cadet"
8772msgstr "" 8635msgstr ""
8773 8636
8774#: src/vpn/gnunet-service-vpn.c:1253 8637#: src/vpn/gnunet-service-vpn.c:1255
8775msgid "# TCP packets received from cadet" 8638msgid "# TCP packets received from cadet"
8776msgstr "" 8639msgstr ""
8777 8640
8778#: src/vpn/gnunet-service-vpn.c:1465 8641#: src/vpn/gnunet-service-vpn.c:1467
8779msgid "# Cadet channels created" 8642msgid "# Cadet channels created"
8780msgstr "" 8643msgstr ""
8781 8644
8782#: src/vpn/gnunet-service-vpn.c:1685 8645#: src/vpn/gnunet-service-vpn.c:1687
8783#, c-format 8646#, c-format
8784msgid "Protocol %u not supported, dropping\n" 8647msgid "Protocol %u not supported, dropping\n"
8785msgstr "" 8648msgstr ""
8786 8649
8787#: src/vpn/gnunet-service-vpn.c:1824 8650#: src/vpn/gnunet-service-vpn.c:1826
8788msgid "# Packets dropped (channel not yet online)" 8651msgid "# Packets dropped (channel not yet online)"
8789msgstr "" 8652msgstr ""
8790 8653
8791#: src/vpn/gnunet-service-vpn.c:2004 8654#: src/vpn/gnunet-service-vpn.c:2006
8792msgid "# ICMPv4 packets dropped (not allowed)" 8655msgid "# ICMPv4 packets dropped (not allowed)"
8793msgstr "" 8656msgstr ""
8794 8657
8795#: src/vpn/gnunet-service-vpn.c:2025 8658#: src/vpn/gnunet-service-vpn.c:2027
8796msgid "# ICMPv6 packets dropped (not allowed)" 8659msgid "# ICMPv6 packets dropped (not allowed)"
8797msgstr "" 8660msgstr ""
8798 8661
8799#: src/vpn/gnunet-service-vpn.c:2233 8662#: src/vpn/gnunet-service-vpn.c:2235
8800msgid "# Packets received from TUN interface" 8663msgid "# Packets received from TUN interface"
8801msgstr "" 8664msgstr ""
8802 8665
8803#: src/vpn/gnunet-service-vpn.c:2266 src/vpn/gnunet-service-vpn.c:2302 8666#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
8804#, c-format 8667#, c-format
8805msgid "Packet received for unmapped destination `%s' (dropping it)\n" 8668msgid "Packet received for unmapped destination `%s' (dropping it)\n"
8806msgstr "" 8669msgstr ""
8807 8670
8808#: src/vpn/gnunet-service-vpn.c:2312 8671#: src/vpn/gnunet-service-vpn.c:2314
8809msgid "Received IPv4 packet with options (dropping it)\n" 8672msgid "Received IPv4 packet with options (dropping it)\n"
8810msgstr "" 8673msgstr ""
8811 8674
8812#: src/vpn/gnunet-service-vpn.c:2326 8675#: src/vpn/gnunet-service-vpn.c:2328
8813#, c-format 8676#, c-format
8814msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" 8677msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
8815msgstr "" 8678msgstr ""
8816 8679
8817#: src/vpn/gnunet-service-vpn.c:2365 8680#: src/vpn/gnunet-service-vpn.c:2367
8818msgid "Failed to find unallocated IPv4 address in VPN's range\n" 8681msgid "Failed to find unallocated IPv4 address in VPN's range\n"
8819msgstr "" 8682msgstr ""
8820 8683
8821#: src/vpn/gnunet-service-vpn.c:2420 8684#: src/vpn/gnunet-service-vpn.c:2422
8822msgid "Failed to find unallocated IPv6 address in VPN's range\n" 8685msgid "Failed to find unallocated IPv6 address in VPN's range\n"
8823msgstr "" 8686msgstr ""
8824 8687
8825#: src/vpn/gnunet-service-vpn.c:2462 src/vpn/gnunet-service-vpn.c:2684 8688#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
8826msgid "# Active destinations" 8689msgid "# Active destinations"
8827msgstr "" 8690msgstr ""
8828 8691
8829#: src/vpn/gnunet-service-vpn.c:2733 8692#: src/vpn/gnunet-service-vpn.c:2735
8830msgid "Failed to allocate IP address for new destination\n" 8693msgid "Failed to allocate IP address for new destination\n"
8831msgstr "" 8694msgstr ""
8832 8695
8833#: src/vpn/gnunet-service-vpn.c:2996 8696#: src/vpn/gnunet-service-vpn.c:2998
8834msgid "Must specify valid IPv6 address" 8697msgid "Must specify valid IPv6 address"
8835msgstr "" 8698msgstr ""
8836 8699
8837#: src/vpn/gnunet-service-vpn.c:3020 8700#: src/vpn/gnunet-service-vpn.c:3022
8838msgid "Must specify valid IPv6 mask" 8701msgid "Must specify valid IPv6 mask"
8839msgstr "" 8702msgstr ""
8840 8703
8841#: src/vpn/gnunet-service-vpn.c:3028 8704#: src/vpn/gnunet-service-vpn.c:3030
8842msgid "IPv6 support disabled as this system does not support IPv6\n" 8705msgid "IPv6 support disabled as this system does not support IPv6\n"
8843msgstr "" 8706msgstr ""
8844 8707
8845#: src/vpn/gnunet-service-vpn.c:3041 8708#: src/vpn/gnunet-service-vpn.c:3043
8846msgid "Must specify valid IPv4 address" 8709msgid "Must specify valid IPv4 address"
8847msgstr "" 8710msgstr ""
8848 8711
8849#: src/vpn/gnunet-service-vpn.c:3054 8712#: src/vpn/gnunet-service-vpn.c:3056
8850msgid "Must specify valid IPv4 mask" 8713msgid "Must specify valid IPv4 mask"
8851msgstr "" 8714msgstr ""
8852 8715
8853#: src/vpn/gnunet-service-vpn.c:3064 8716#: src/vpn/gnunet-service-vpn.c:3066
8854msgid "IPv4 support disabled as this system does not support IPv4\n" 8717msgid "IPv4 support disabled as this system does not support IPv4\n"
8855msgstr "" 8718msgstr ""
8856 8719
8857#: src/vpn/gnunet-vpn.c:145 8720#: src/vpn/gnunet-vpn.c:147
8858msgid "Error creating tunnel\n" 8721msgid "Error creating tunnel\n"
8859msgstr "" 8722msgstr ""
8860 8723
8861#: src/vpn/gnunet-vpn.c:189 src/vpn/gnunet-vpn.c:220 8724#: src/vpn/gnunet-vpn.c:191 src/vpn/gnunet-vpn.c:222
8862#, c-format 8725#, c-format
8863msgid "Option `%s' makes no sense with option `%s'.\n" 8726msgid "Option `%s' makes no sense with option `%s'.\n"
8864msgstr "" 8727msgstr ""
8865 8728
8866#: src/vpn/gnunet-vpn.c:202 8729#: src/vpn/gnunet-vpn.c:204
8867#, c-format 8730#, c-format
8868msgid "Option `%s' or `%s' is required.\n" 8731msgid "Option `%s' or `%s' is required.\n"
8869msgstr "" 8732msgstr ""
8870 8733
8871#: src/vpn/gnunet-vpn.c:214 8734#: src/vpn/gnunet-vpn.c:216
8872#, c-format 8735#, c-format
8873msgid "Option `%s' or `%s' is required when using option `%s'.\n" 8736msgid "Option `%s' or `%s' is required when using option `%s'.\n"
8874msgstr "" 8737msgstr ""
8875 8738
8876#: src/vpn/gnunet-vpn.c:234 8739#: src/vpn/gnunet-vpn.c:236
8877#, c-format 8740#, c-format
8878msgid "`%s' is not a valid peer identifier.\n" 8741msgid "`%s' is not a valid peer identifier.\n"
8879msgstr "" 8742msgstr ""
8880 8743
8881#: src/vpn/gnunet-vpn.c:254 8744#: src/vpn/gnunet-vpn.c:256
8882#, c-format 8745#, c-format
8883msgid "`%s' is not a valid IP address.\n" 8746msgid "`%s' is not a valid IP address.\n"
8884msgstr "`%s' non è un indirizzo IP valido.\n" 8747msgstr "`%s' non è un indirizzo IP valido.\n"
8885 8748
8886#: src/vpn/gnunet-vpn.c:290 8749#: src/vpn/gnunet-vpn.c:292
8887msgid "request that result should be an IPv4 address" 8750msgid "request that result should be an IPv4 address"
8888msgstr "" 8751msgstr ""
8889 8752
8890#: src/vpn/gnunet-vpn.c:295 8753#: src/vpn/gnunet-vpn.c:297
8891msgid "request that result should be an IPv6 address" 8754msgid "request that result should be an IPv6 address"
8892msgstr "" 8755msgstr ""
8893 8756
8894#: src/vpn/gnunet-vpn.c:301 8757#: src/vpn/gnunet-vpn.c:303
8895msgid "how long should the mapping be valid for new tunnels?" 8758msgid "how long should the mapping be valid for new tunnels?"
8896msgstr "" 8759msgstr ""
8897 8760
8898#: src/vpn/gnunet-vpn.c:307 8761#: src/vpn/gnunet-vpn.c:309
8899msgid "destination IP for the tunnel" 8762msgid "destination IP for the tunnel"
8900msgstr "" 8763msgstr ""
8901 8764
8902#: src/vpn/gnunet-vpn.c:313 8765#: src/vpn/gnunet-vpn.c:315
8903msgid "peer offering the service we would like to access" 8766msgid "peer offering the service we would like to access"
8904msgstr "" 8767msgstr ""
8905 8768
8906#: src/vpn/gnunet-vpn.c:319 8769#: src/vpn/gnunet-vpn.c:321
8907msgid "name of the service we would like to access" 8770msgid "name of the service we would like to access"
8908msgstr "" 8771msgstr ""
8909 8772
8910#: src/vpn/gnunet-vpn.c:324 8773#: src/vpn/gnunet-vpn.c:326
8911msgid "service is offered via TCP" 8774msgid "service is offered via TCP"
8912msgstr "" 8775msgstr ""
8913 8776
8914#: src/vpn/gnunet-vpn.c:329 8777#: src/vpn/gnunet-vpn.c:331
8915msgid "service is offered via UDP" 8778msgid "service is offered via UDP"
8916msgstr "" 8779msgstr ""
8917 8780
8918#: src/vpn/gnunet-vpn.c:342 8781#: src/vpn/gnunet-vpn.c:344
8919msgid "Setup tunnels via VPN." 8782msgid "Setup tunnels via VPN."
8920msgstr "" 8783msgstr ""
8921 8784
8922#: src/zonemaster/gnunet-service-zonemaster.c:836 8785#: src/zonemaster/gnunet-service-zonemaster.c:838
8923#: src/zonemaster/gnunet-service-zonemaster-monitor.c:414 8786#: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
8924msgid "Failed to connect to the namestore!\n" 8787msgid "Failed to connect to the namestore!\n"
8925msgstr "" 8788msgstr ""
8926 8789
8927#: src/include/gnunet_common.h:770 src/include/gnunet_common.h:777 8790#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
8928#: src/include/gnunet_common.h:787 8791#: src/include/gnunet_common.h:789
8929#, c-format 8792#, c-format
8930msgid "Assertion failed at %s:%d. Aborting.\n" 8793msgid "Assertion failed at %s:%d. Aborting.\n"
8931msgstr "" 8794msgstr ""
8932 8795
8933#: src/include/gnunet_common.h:795 8796#: src/include/gnunet_common.h:797
8934#, c-format 8797#, c-format
8935msgid "Assertion failed at %s:%d.\n" 8798msgid "Assertion failed at %s:%d.\n"
8936msgstr "" 8799msgstr ""
8937 8800
8938#: src/include/gnunet_common.h:807 8801#: src/include/gnunet_common.h:809
8939#, c-format 8802#, c-format
8940msgid "External protocol violation detected at %s:%d.\n" 8803msgid "External protocol violation detected at %s:%d.\n"
8941msgstr "" 8804msgstr ""
8942 8805
8943#: src/include/gnunet_common.h:834 src/include/gnunet_common.h:843 8806#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
8944#, c-format 8807#, c-format
8945msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" 8808msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
8946msgstr "" 8809msgstr ""
diff --git a/po/sv.po b/po/sv.po
index 388ff2f82..ca713d7d8 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
7msgstr "" 7msgstr ""
8"Project-Id-Version: GNUnet 0.7.0b\n" 8"Project-Id-Version: GNUnet 0.7.0b\n"
9"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" 9"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
10"POT-Creation-Date: 2018-10-20 11:13+0200\n" 10"POT-Creation-Date: 2019-02-13 00:37+0100\n"
11"PO-Revision-Date: 2006-01-21 17:16+0100\n" 11"PO-Revision-Date: 2006-01-21 17:16+0100\n"
12"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" 12"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
13"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" 13"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -16,1042 +16,1036 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n" 16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n" 17"Content-Transfer-Encoding: 8bit\n"
18 18
19#: src/arm/gnunet-arm.c:154 19#: src/arm/gnunet-arm.c:156
20#, fuzzy, c-format 20#, fuzzy, c-format
21msgid "Failed to remove configuration file %s\n" 21msgid "Failed to remove configuration file %s\n"
22msgstr "Kunde inte spara konfigurationsfil \"%s\":" 22msgstr "Kunde inte spara konfigurationsfil \"%s\":"
23 23
24#: src/arm/gnunet-arm.c:160 24#: src/arm/gnunet-arm.c:162
25#, fuzzy, c-format 25#, fuzzy, c-format
26msgid "Failed to remove servicehome directory %s\n" 26msgid "Failed to remove servicehome directory %s\n"
27msgstr "Filformatsfel (inte en GNUnet-katalog?)\n" 27msgstr "Filformatsfel (inte en GNUnet-katalog?)\n"
28 28
29#: src/arm/gnunet-arm.c:220 src/testbed/gnunet-service-testbed_peers.c:1137 29#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
30msgid "Message was sent successfully" 30msgid "Message was sent successfully"
31msgstr "" 31msgstr ""
32 32
33#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139 33#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
34#, fuzzy 34#, fuzzy
35msgid "We disconnected from ARM before we could send a request" 35msgid "We disconnected from ARM before we could send a request"
36msgstr "# av anslutna parter" 36msgstr "# av anslutna parter"
37 37
38#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141 38#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
39#, fuzzy 39#, fuzzy
40msgid "Unknown request status" 40msgid "Unknown request status"
41msgstr "Okänd operation \"%s\"\n" 41msgstr "Okänd operation \"%s\"\n"
42 42
43#: src/arm/gnunet-arm.c:240 43#: src/arm/gnunet-arm.c:242
44#, fuzzy 44#, fuzzy
45msgid "is stopped" 45msgid "is stopped"
46msgstr "# byte krypterade" 46msgstr "# byte krypterade"
47 47
48#: src/arm/gnunet-arm.c:242 48#: src/arm/gnunet-arm.c:244
49#, fuzzy 49#, fuzzy
50msgid "is starting" 50msgid "is starting"
51msgstr "\"%s\" startar\n" 51msgstr "\"%s\" startar\n"
52 52
53#: src/arm/gnunet-arm.c:244 53#: src/arm/gnunet-arm.c:246
54#, fuzzy 54#, fuzzy
55msgid "is stopping" 55msgid "is stopping"
56msgstr "# byte krypterade" 56msgstr "# byte krypterade"
57 57
58#: src/arm/gnunet-arm.c:246 58#: src/arm/gnunet-arm.c:248
59#, fuzzy 59#, fuzzy
60msgid "is starting already" 60msgid "is starting already"
61msgstr "\"%s\" startar\n" 61msgstr "\"%s\" startar\n"
62 62
63#: src/arm/gnunet-arm.c:248 63#: src/arm/gnunet-arm.c:250
64#, fuzzy 64#, fuzzy
65msgid "is stopping already" 65msgid "is stopping already"
66msgstr "\"%s\" startar\n" 66msgstr "\"%s\" startar\n"
67 67
68#: src/arm/gnunet-arm.c:250 68#: src/arm/gnunet-arm.c:252
69#, fuzzy 69#, fuzzy
70msgid "is started already" 70msgid "is started already"
71msgstr "\"%s\" startar\n" 71msgstr "\"%s\" startar\n"
72 72
73#: src/arm/gnunet-arm.c:252 73#: src/arm/gnunet-arm.c:254
74#, fuzzy 74#, fuzzy
75msgid "is stopped already" 75msgid "is stopped already"
76msgstr "\"%s\" startar\n" 76msgstr "\"%s\" startar\n"
77 77
78#: src/arm/gnunet-arm.c:254 78#: src/arm/gnunet-arm.c:256
79#, fuzzy 79#, fuzzy
80msgid "service is not known to ARM" 80msgid "service is not known to ARM"
81msgstr "\"%s\" är inte en fil.\n" 81msgstr "\"%s\" är inte en fil.\n"
82 82
83#: src/arm/gnunet-arm.c:256 83#: src/arm/gnunet-arm.c:258
84#, fuzzy 84#, fuzzy
85msgid "service failed to start" 85msgid "service failed to start"
86msgstr "Misslyckades att starta samling.\n" 86msgstr "Misslyckades att starta samling.\n"
87 87
88#: src/arm/gnunet-arm.c:258 88#: src/arm/gnunet-arm.c:260
89msgid "service cannot be manipulated because ARM is shutting down" 89msgid "service cannot be manipulated because ARM is shutting down"
90msgstr "" 90msgstr ""
91 91
92#: src/arm/gnunet-arm.c:260 92#: src/arm/gnunet-arm.c:262
93#, fuzzy 93#, fuzzy
94msgid "Unknown result code." 94msgid "Unknown result code."
95msgstr "Okänd operation \"%s\"\n" 95msgstr "Okänd operation \"%s\"\n"
96 96
97#: src/arm/gnunet-arm.c:292 97#: src/arm/gnunet-arm.c:295
98msgid "Fatal error initializing ARM API.\n" 98msgid "Fatal error initializing ARM API.\n"
99msgstr "" 99msgstr ""
100 100
101#: src/arm/gnunet-arm.c:320 src/arm/gnunet-arm.c:329 101#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
102#, fuzzy, c-format 102#, fuzzy, c-format
103msgid "Failed to start the ARM service: %s\n" 103msgid "Failed to start the ARM service: %s\n"
104msgstr "Misslyckades att starta samling.\n" 104msgstr "Misslyckades att starta samling.\n"
105 105
106#: src/arm/gnunet-arm.c:363 106#: src/arm/gnunet-arm.c:368
107#, fuzzy, c-format 107#, fuzzy, c-format
108msgid "Failed to send a stop request to the ARM service: %s\n" 108msgid "Failed to send a stop request to the ARM service: %s\n"
109msgstr "Misslyckades att ansluta till gnunetd.\n" 109msgstr "Misslyckades att ansluta till gnunetd.\n"
110 110
111#: src/arm/gnunet-arm.c:374 111#: src/arm/gnunet-arm.c:379
112#, fuzzy, c-format 112#, fuzzy, c-format
113msgid "Failed to stop the ARM service: %s\n" 113msgid "Failed to stop the ARM service: %s\n"
114msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 114msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
115 115
116#: src/arm/gnunet-arm.c:413 116#: src/arm/gnunet-arm.c:419
117#, fuzzy, c-format 117#, fuzzy, c-format
118msgid "Failed to send a request to start the `%s' service: %s\n" 118msgid "Failed to send a request to start the `%s' service: %s\n"
119msgstr "Misslyckades att ansluta till gnunetd.\n" 119msgstr "Misslyckades att ansluta till gnunetd.\n"
120 120
121#: src/arm/gnunet-arm.c:423 121#: src/arm/gnunet-arm.c:429
122#, fuzzy, c-format 122#, fuzzy, c-format
123msgid "Failed to start the `%s' service: %s\n" 123msgid "Failed to start the `%s' service: %s\n"
124msgstr "Misslyckades att starta samling.\n" 124msgstr "Misslyckades att starta samling.\n"
125 125
126#: src/arm/gnunet-arm.c:460 126#: src/arm/gnunet-arm.c:467
127#, fuzzy, c-format 127#, fuzzy, c-format
128msgid "Failed to send a request to kill the `%s' service: %%s\n" 128msgid "Failed to send a request to kill the `%s' service: %%s\n"
129msgstr "Misslyckades att ansluta till gnunetd.\n" 129msgstr "Misslyckades att ansluta till gnunetd.\n"
130 130
131#: src/arm/gnunet-arm.c:471 131#: src/arm/gnunet-arm.c:478
132#, fuzzy, c-format 132#, fuzzy, c-format
133msgid "Failed to kill the `%s' service: %s\n" 133msgid "Failed to kill the `%s' service: %s\n"
134msgstr "Fel vid %s:%d.\n" 134msgstr "Fel vid %s:%d.\n"
135 135
136#: src/arm/gnunet-arm.c:511 136#: src/arm/gnunet-arm.c:519
137#, fuzzy, c-format 137#, fuzzy, c-format
138msgid "Failed to request a list of services: %s\n" 138msgid "Failed to request a list of services: %s\n"
139msgstr "Misslyckades att starta samling.\n" 139msgstr "Misslyckades att starta samling.\n"
140 140
141#: src/arm/gnunet-arm.c:520 141#: src/arm/gnunet-arm.c:528
142#, fuzzy 142#, fuzzy
143msgid "Error communicating with ARM. ARM not running?\n" 143msgid "Error communicating with ARM. ARM not running?\n"
144msgstr "Skriv ut information om GNUnets motparter." 144msgstr "Skriv ut information om GNUnets motparter."
145 145
146#: src/arm/gnunet-arm.c:526 146#: src/arm/gnunet-arm.c:534
147#, fuzzy 147#, fuzzy
148msgid "Running services:\n" 148msgid "Running services:\n"
149msgstr "Startade samling \"%s\".\n" 149msgstr "Startade samling \"%s\".\n"
150 150
151#: src/arm/gnunet-arm.c:614 151#: src/arm/gnunet-arm.c:623
152#, c-format 152#, c-format
153msgid "Now only monitoring, press CTRL-C to stop.\n" 153msgid "Now only monitoring, press CTRL-C to stop.\n"
154msgstr "" 154msgstr ""
155 155
156#: src/arm/gnunet-arm.c:646 156#: src/arm/gnunet-arm.c:656
157#, c-format 157#, c-format
158msgid "Stopped %s.\n" 158msgid "Stopped %s.\n"
159msgstr "" 159msgstr ""
160 160
161#: src/arm/gnunet-arm.c:649 161#: src/arm/gnunet-arm.c:659
162#, fuzzy, c-format 162#, fuzzy, c-format
163msgid "Starting %s...\n" 163msgid "Starting %s...\n"
164msgstr "Startade samling \"%s\".\n" 164msgstr "Startade samling \"%s\".\n"
165 165
166#: src/arm/gnunet-arm.c:652 166#: src/arm/gnunet-arm.c:662
167#, c-format 167#, c-format
168msgid "Stopping %s...\n" 168msgid "Stopping %s...\n"
169msgstr "" 169msgstr ""
170 170
171#: src/arm/gnunet-arm.c:666 171#: src/arm/gnunet-arm.c:676
172#, fuzzy, c-format 172#, fuzzy, c-format
173msgid "Unknown status %u for service %s.\n" 173msgid "Unknown status %u for service %s.\n"
174msgstr "Okänd operation \"%s\"\n" 174msgstr "Okänd operation \"%s\"\n"
175 175
176#: src/arm/gnunet-arm.c:767 176#: src/arm/gnunet-arm.c:766
177msgid "stop all GNUnet services" 177msgid "stop all GNUnet services"
178msgstr "" 178msgstr ""
179 179
180#: src/arm/gnunet-arm.c:773 180#: src/arm/gnunet-arm.c:771
181msgid "start a particular service" 181msgid "start a particular service"
182msgstr "" 182msgstr ""
183 183
184#: src/arm/gnunet-arm.c:779 184#: src/arm/gnunet-arm.c:776
185msgid "stop a particular service" 185msgid "stop a particular service"
186msgstr "" 186msgstr ""
187 187
188#: src/arm/gnunet-arm.c:784 188#: src/arm/gnunet-arm.c:780
189msgid "start all GNUnet default services" 189msgid "start all GNUnet default services"
190msgstr "" 190msgstr ""
191 191
192#: src/arm/gnunet-arm.c:789 192#: src/arm/gnunet-arm.c:784
193msgid "stop and start all GNUnet default services" 193msgid "stop and start all GNUnet default services"
194msgstr "" 194msgstr ""
195 195
196#: src/arm/gnunet-arm.c:793 196#: src/arm/gnunet-arm.c:788
197msgid "delete config file and directory on exit" 197msgid "delete config file and directory on exit"
198msgstr "" 198msgstr ""
199 199
200#: src/arm/gnunet-arm.c:798 200#: src/arm/gnunet-arm.c:792
201msgid "monitor ARM activities" 201msgid "monitor ARM activities"
202msgstr "" 202msgstr ""
203 203
204#: src/arm/gnunet-arm.c:803 204#: src/arm/gnunet-arm.c:796
205msgid "don't print status messages" 205msgid "don't print status messages"
206msgstr "" 206msgstr ""
207 207
208#: src/arm/gnunet-arm.c:809 208#: src/arm/gnunet-arm.c:801
209msgid "exit with error status if operation does not finish after DELAY" 209msgid "exit with error status if operation does not finish after DELAY"
210msgstr "" 210msgstr ""
211 211
212#: src/arm/gnunet-arm.c:814 212#: src/arm/gnunet-arm.c:805
213#, fuzzy 213#, fuzzy
214msgid "list currently running services" 214msgid "list currently running services"
215msgstr "Startade samling \"%s\".\n" 215msgstr "Startade samling \"%s\".\n"
216 216
217#: src/arm/gnunet-arm.c:819 217#: src/arm/gnunet-arm.c:809
218msgid "don't let gnunet-service-arm inherit standard output" 218msgid "don't let gnunet-service-arm inherit standard output"
219msgstr "" 219msgstr ""
220 220
221#: src/arm/gnunet-arm.c:824 221#: src/arm/gnunet-arm.c:813
222msgid "don't let gnunet-service-arm inherit standard error" 222msgid "don't let gnunet-service-arm inherit standard error"
223msgstr "" 223msgstr ""
224 224
225#: src/arm/gnunet-arm.c:837 225#: src/arm/gnunet-arm.c:828
226msgid "Control services and the Automated Restart Manager (ARM)" 226msgid "Control services and the Automated Restart Manager (ARM)"
227msgstr "" 227msgstr ""
228 228
229#: src/arm/gnunet-service-arm.c:386 src/transport/plugin_transport_tcp.c:1118 229#: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
230#: src/transport/plugin_transport_xt.c:1118 230#: src/transport/plugin_transport_xt.c:1120
231#: src/transport/tcp_service_legacy.c:555 src/util/service.c:610 231#: src/transport/tcp_service_legacy.c:557 src/util/service.c:1167
232#, c-format 232#, c-format
233msgid "" 233msgid ""
234"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n" 234"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
235msgstr "" 235msgstr ""
236 236
237#: src/arm/gnunet-service-arm.c:410 src/arm/gnunet-service-arm.c:416 237#: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
238#: src/transport/plugin_transport_tcp.c:1137 238#: src/transport/plugin_transport_tcp.c:1139
239#: src/transport/plugin_transport_tcp.c:1143 239#: src/transport/plugin_transport_tcp.c:1145
240#: src/transport/plugin_transport_tcp.c:3823 240#: src/transport/plugin_transport_tcp.c:3829
241#: src/transport/plugin_transport_xt.c:1137 241#: src/transport/plugin_transport_xt.c:1139
242#: src/transport/plugin_transport_xt.c:1143 242#: src/transport/plugin_transport_xt.c:1145
243#: src/transport/plugin_transport_xt.c:3831 243#: src/transport/plugin_transport_xt.c:3833
244#: src/transport/tcp_service_legacy.c:574 244#: src/transport/tcp_service_legacy.c:576
245#: src/transport/tcp_service_legacy.c:580 src/util/service.c:635 245#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1192
246#: src/util/service.c:641 246#: src/util/service.c:1198
247#, c-format 247#, c-format
248msgid "Require valid port number for service `%s' in configuration!\n" 248msgid "Require valid port number for service `%s' in configuration!\n"
249msgstr "" 249msgstr ""
250 250
251#: src/arm/gnunet-service-arm.c:455 src/transport/plugin_transport_tcp.c:1174 251#: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
252#: src/transport/plugin_transport_xt.c:1174 252#: src/transport/plugin_transport_xt.c:1176
253#: src/transport/tcp_service_legacy.c:611 src/util/client.c:504 253#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
254#: src/util/service.c:680 254#: src/util/service.c:1237
255#, c-format 255#, c-format
256msgid "UNIXPATH `%s' too long, maximum length is %llu\n" 256msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
257msgstr "" 257msgstr ""
258 258
259#: src/arm/gnunet-service-arm.c:460 src/transport/plugin_transport_tcp.c:1178 259#: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
260#: src/transport/plugin_transport_xt.c:1178 260#: src/transport/plugin_transport_xt.c:1180
261#: src/transport/tcp_service_legacy.c:615 src/util/client.c:509 261#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
262#: src/util/service.c:685 262#: src/util/service.c:1242
263#, fuzzy, c-format 263#, fuzzy, c-format
264msgid "Using `%s' instead\n" 264msgid "Using `%s' instead\n"
265msgstr "%s: flagga \"%s\" är tvetydig\n" 265msgstr "%s: flagga \"%s\" är tvetydig\n"
266 266
267#: src/arm/gnunet-service-arm.c:493 src/transport/plugin_transport_tcp.c:1209 267#: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
268#: src/transport/plugin_transport_xt.c:1209 268#: src/transport/plugin_transport_xt.c:1211
269#: src/transport/tcp_service_legacy.c:646 src/util/service.c:721 269#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1278
270#, c-format 270#, c-format
271msgid "" 271msgid ""
272"Disabling UNIX domain socket support for service `%s', failed to create UNIX " 272"Disabling UNIX domain socket support for service `%s', failed to create UNIX "
273"domain socket: %s\n" 273"domain socket: %s\n"
274msgstr "" 274msgstr ""
275 275
276#: src/arm/gnunet-service-arm.c:515 src/transport/plugin_transport_tcp.c:1226 276#: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
277#: src/transport/plugin_transport_xt.c:1226 277#: src/transport/plugin_transport_xt.c:1228
278#: src/transport/tcp_service_legacy.c:663 src/util/service.c:739 278#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1296
279#, c-format 279#, c-format
280msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n" 280msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
281msgstr "" 281msgstr ""
282 282
283#: src/arm/gnunet-service-arm.c:554 283#: src/arm/gnunet-service-arm.c:556
284#: src/transport/plugin_transport_http_server.c:2682 284#: src/transport/plugin_transport_http_server.c:2688
285#: src/transport/plugin_transport_tcp.c:1257 285#: src/transport/plugin_transport_tcp.c:1259
286#: src/transport/plugin_transport_xt.c:1257 286#: src/transport/plugin_transport_xt.c:1259
287#: src/transport/tcp_service_legacy.c:694 src/util/service.c:780 287#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1337
288#, fuzzy, c-format 288#, fuzzy, c-format
289msgid "Failed to resolve `%s': %s\n" 289msgid "Failed to resolve `%s': %s\n"
290msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 290msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
291 291
292#: src/arm/gnunet-service-arm.c:573 292#: src/arm/gnunet-service-arm.c:575
293#: src/transport/plugin_transport_http_server.c:2700 293#: src/transport/plugin_transport_http_server.c:2706
294#: src/transport/plugin_transport_tcp.c:1276 294#: src/transport/plugin_transport_tcp.c:1278
295#: src/transport/plugin_transport_xt.c:1276 295#: src/transport/plugin_transport_xt.c:1278
296#: src/transport/tcp_service_legacy.c:713 src/util/service.c:800 296#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1357
297#, fuzzy, c-format 297#, fuzzy, c-format
298msgid "Failed to find %saddress for `%s'.\n" 298msgid "Failed to find %saddress for `%s'.\n"
299msgstr "Misslyckades att binda till UDP-port %d.\n" 299msgstr "Misslyckades att binda till UDP-port %d.\n"
300 300
301#: src/arm/gnunet-service-arm.c:984 301#: src/arm/gnunet-service-arm.c:986
302#, fuzzy, c-format 302#, fuzzy, c-format
303msgid "Failed to start service `%s'\n" 303msgid "Failed to start service `%s'\n"
304msgstr "Misslyckades att starta samling.\n" 304msgstr "Misslyckades att starta samling.\n"
305 305
306#: src/arm/gnunet-service-arm.c:995 306#: src/arm/gnunet-service-arm.c:997
307#, fuzzy, c-format 307#, fuzzy, c-format
308msgid "Starting service `%s'\n" 308msgid "Starting service `%s'\n"
309msgstr "Startade samling \"%s\".\n" 309msgstr "Startade samling \"%s\".\n"
310 310
311#: src/arm/gnunet-service-arm.c:1107 311#: src/arm/gnunet-service-arm.c:1109
312#, fuzzy, c-format 312#, fuzzy, c-format
313msgid "Unable to create socket for service `%s': %s\n" 313msgid "Unable to create socket for service `%s': %s\n"
314msgstr "Kunde inte skapa användarkonto:" 314msgstr "Kunde inte skapa användarkonto:"
315 315
316#: src/arm/gnunet-service-arm.c:1142 316#: src/arm/gnunet-service-arm.c:1144
317#, c-format 317#, c-format
318msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n" 318msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n"
319msgstr "" 319msgstr ""
320 320
321#: src/arm/gnunet-service-arm.c:1185 321#: src/arm/gnunet-service-arm.c:1187
322#, c-format 322#, c-format
323msgid "ARM now monitors connections to service `%s' at `%s'\n" 323msgid "ARM now monitors connections to service `%s' at `%s'\n"
324msgstr "" 324msgstr ""
325 325
326#: src/arm/gnunet-service-arm.c:1364 326#: src/arm/gnunet-service-arm.c:1346
327#, fuzzy, c-format 327#, fuzzy, c-format
328msgid "Preparing to stop `%s'\n" 328msgid "Preparing to stop `%s'\n"
329msgstr "Startade samling \"%s\".\n" 329msgstr "Startade samling \"%s\".\n"
330 330
331#: src/arm/gnunet-service-arm.c:1669 331#: src/arm/gnunet-service-arm.c:1651
332#, fuzzy, c-format 332#, fuzzy, c-format
333msgid "Restarting service `%s'.\n" 333msgid "Restarting service `%s'.\n"
334msgstr "Startade samling \"%s\".\n" 334msgstr "Startade samling \"%s\".\n"
335 335
336#: src/arm/gnunet-service-arm.c:1830 336#: src/arm/gnunet-service-arm.c:1812
337msgid "exit" 337msgid "exit"
338msgstr "" 338msgstr ""
339 339
340#: src/arm/gnunet-service-arm.c:1835 340#: src/arm/gnunet-service-arm.c:1817
341msgid "signal" 341msgid "signal"
342msgstr "" 342msgstr ""
343 343
344#: src/arm/gnunet-service-arm.c:1840 344#: src/arm/gnunet-service-arm.c:1822
345#, fuzzy 345#, fuzzy
346msgid "unknown" 346msgid "unknown"
347msgstr "Okänt fel" 347msgstr "Okänt fel"
348 348
349#: src/arm/gnunet-service-arm.c:1846 349#: src/arm/gnunet-service-arm.c:1828
350#, fuzzy, c-format 350#, fuzzy, c-format
351msgid "Service `%s' took %s to terminate\n" 351msgid "Service `%s' took %s to terminate\n"
352msgstr "Tjänst borttagen.\n" 352msgstr "Tjänst borttagen.\n"
353 353
354#: src/arm/gnunet-service-arm.c:1872 354#: src/arm/gnunet-service-arm.c:1854
355#, c-format 355#, c-format
356msgid "Service `%s' terminated normally, will restart at any time\n" 356msgid "Service `%s' terminated normally, will restart at any time\n"
357msgstr "" 357msgstr ""
358 358
359#: src/arm/gnunet-service-arm.c:1888 359#: src/arm/gnunet-service-arm.c:1870
360#, c-format 360#, c-format
361msgid "Service `%s' terminated with status %s/%d, will restart in %s\n" 361msgid "Service `%s' terminated with status %s/%d, will restart in %s\n"
362msgstr "" 362msgstr ""
363 363
364#: src/arm/mockup-service.c:40 364#: src/arm/mockup-service.c:42
365msgid "Initiating shutdown as requested by client.\n" 365msgid "Initiating shutdown as requested by client.\n"
366msgstr "" 366msgstr ""
367 367
368#: src/ats/gnunet-ats-solver-eval.c:2779 src/ats/gnunet-ats-solver-eval.c:2820 368#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
369#, c-format 369#, c-format
370msgid "" 370msgid ""
371"Could not load quota for network `%s': `%s', assigning default bandwidth " 371"Could not load quota for network `%s': `%s', assigning default bandwidth "
372"%llu\n" 372"%llu\n"
373msgstr "" 373msgstr ""
374 374
375#: src/ats/gnunet-ats-solver-eval.c:2797 375#: src/ats/gnunet-ats-solver-eval.c:2799
376#, c-format 376#, c-format
377msgid "" 377msgid ""
378"No outbound quota configured for network `%s', assigning default bandwidth " 378"No outbound quota configured for network `%s', assigning default bandwidth "
379"%llu\n" 379"%llu\n"
380msgstr "" 380msgstr ""
381 381
382#: src/ats/gnunet-ats-solver-eval.c:2838 382#: src/ats/gnunet-ats-solver-eval.c:2840
383#, c-format 383#, c-format
384msgid "" 384msgid ""
385"No outbound quota configure for network `%s', assigning default bandwidth " 385"No outbound quota configure for network `%s', assigning default bandwidth "
386"%llu\n" 386"%llu\n"
387msgstr "" 387msgstr ""
388 388
389#: src/ats/gnunet-ats-solver-eval.c:3292 src/ats-tests/gnunet-solver-eval.c:937 389#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
390msgid "solver to use" 390msgid "solver to use"
391msgstr "" 391msgstr ""
392 392
393#: src/ats/gnunet-ats-solver-eval.c:3297 src/ats-tests/gnunet-solver-eval.c:943 393#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
394#: src/ats-tests/gnunet-solver-eval.c:948 394#: src/ats-tests/gnunet-solver-eval.c:950
395msgid "experiment to use" 395msgid "experiment to use"
396msgstr "" 396msgstr ""
397 397
398#: src/ats/gnunet-ats-solver-eval.c:3304 398#: src/ats/gnunet-ats-solver-eval.c:3306
399#, fuzzy 399#, fuzzy
400msgid "print logging" 400msgid "print logging"
401msgstr "Startade samling \"%s\".\n" 401msgstr "Startade samling \"%s\".\n"
402 402
403#: src/ats/gnunet-ats-solver-eval.c:3309 403#: src/ats/gnunet-ats-solver-eval.c:3311
404msgid "save logging to disk" 404msgid "save logging to disk"
405msgstr "" 405msgstr ""
406 406
407#: src/ats/gnunet-ats-solver-eval.c:3314 407#: src/ats/gnunet-ats-solver-eval.c:3316
408msgid "disable normalization" 408msgid "disable normalization"
409msgstr "" 409msgstr ""
410 410
411#: src/ats/gnunet-service-ats_plugins.c:302 411#: src/ats/gnunet-service-ats-new.c:756
412#: src/ats/gnunet-service-ats_plugins.c:451
413#, fuzzy, c-format
414msgid "Failed to initialize solver `%s'!\n"
415msgstr "Kunde inte initiera SQLite.\n"
416
417#: src/ats/gnunet-service-ats_plugins.c:304
412#, c-format 418#, c-format
413msgid "" 419msgid ""
414"Could not load %s quota for network `%s': `%s', assigning default bandwidth " 420"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
415"%llu\n" 421"%llu\n"
416msgstr "" 422msgstr ""
417 423
418#: src/ats/gnunet-service-ats_plugins.c:312 424#: src/ats/gnunet-service-ats_plugins.c:314
419#, c-format 425#, c-format
420msgid "%s quota configured for network `%s' is %llu\n" 426msgid "%s quota configured for network `%s' is %llu\n"
421msgstr "" 427msgstr ""
422 428
423#: src/ats/gnunet-service-ats_plugins.c:357 429#: src/ats/gnunet-service-ats_plugins.c:359
424#, c-format 430#, c-format
425msgid "" 431msgid ""
426"No %s-quota configured for network `%s', assigning default bandwidth %llu\n" 432"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
427msgstr "" 433msgstr ""
428 434
429#: src/ats/gnunet-service-ats_plugins.c:449 435#: src/ats/plugin_ats2_common.c:90
430#, fuzzy, c-format 436#, c-format
431msgid "Failed to initialize solver `%s'!\n" 437msgid ""
432msgstr "Kunde inte initiera SQLite.\n" 438"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
439"%llu\n"
440msgstr ""
433 441
434#: src/ats/plugin_ats_mlp.c:1272 442#: src/ats/plugin_ats_mlp.c:1274
435msgid "Problem size too large, cannot allocate memory!\n" 443msgid "Problem size too large, cannot allocate memory!\n"
436msgstr "" 444msgstr ""
437 445
438#: src/ats/plugin_ats_mlp.c:1868 446#: src/ats/plugin_ats_mlp.c:1870
439#, fuzzy, c-format 447#, fuzzy, c-format
440msgid "Adding address for peer `%s' multiple times\n" 448msgid "Adding address for peer `%s' multiple times\n"
441msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" 449msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
442 450
443#: src/ats/plugin_ats_mlp.c:1912 451#: src/ats/plugin_ats_mlp.c:1914
444#, fuzzy, c-format 452#, fuzzy, c-format
445msgid "Updating address property for peer `%s' %p not added before\n" 453msgid "Updating address property for peer `%s' %p not added before\n"
446msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" 454msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
447 455
448#: src/ats/plugin_ats_mlp.c:2474 456#: src/ats/plugin_ats_mlp.c:2476
449msgid "" 457msgid ""
450"MLP solver is not optimizing for anything, changing to feasibility check\n" 458"MLP solver is not optimizing for anything, changing to feasibility check\n"
451msgstr "" 459msgstr ""
452 460
453#: src/ats/plugin_ats_mlp.c:2514 src/ats/plugin_ats_mlp.c:2531 461#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
454#: src/ats/plugin_ats_mlp.c:2563 src/ats/plugin_ats_mlp.c:2581 462#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
455#: src/ats/plugin_ats_mlp.c:2600 src/ats/plugin_ats_proportional.c:1139 463#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
456#: src/ats/plugin_ats_ril.c:2610 src/ats/plugin_ats_ril.c:2627 464#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
457#: src/ats/plugin_ats_ril.c:2644 src/ats/plugin_ats_ril.c:2661 465#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
458#: src/ats/plugin_ats_ril.c:2678 src/ats/plugin_ats_ril.c:2695 466#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
459#: src/ats/plugin_ats_ril.c:2712 src/ats/plugin_ats_ril.c:2729 467#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
460#, fuzzy, c-format 468#, fuzzy, c-format
461msgid "Invalid %s configuration %f \n" 469msgid "Invalid %s configuration %f \n"
462msgstr "Kunde inte spara konfigurationsfil \"%s\":" 470msgstr "Kunde inte spara konfigurationsfil \"%s\":"
463 471
464#: src/ats/plugin_ats_mlp.c:2669 472#: src/ats/plugin_ats_mlp.c:2671
465#, c-format 473#, c-format
466msgid "" 474msgid ""
467"Adjusting inconsistent outbound quota configuration for network `%s', is " 475"Adjusting inconsistent outbound quota configuration for network `%s', is "
468"%llu must be at least %llu\n" 476"%llu must be at least %llu\n"
469msgstr "" 477msgstr ""
470 478
471#: src/ats/plugin_ats_mlp.c:2678 479#: src/ats/plugin_ats_mlp.c:2680
472#, c-format 480#, c-format
473msgid "" 481msgid ""
474"Adjusting inconsistent inbound quota configuration for network `%s', is %llu " 482"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
475"must be at least %llu\n" 483"must be at least %llu\n"
476msgstr "" 484msgstr ""
477 485
478#: src/ats/plugin_ats_mlp.c:2688 486#: src/ats/plugin_ats_mlp.c:2690
479#, c-format 487#, c-format
480msgid "" 488msgid ""
481"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" 489"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
482msgstr "" 490msgstr ""
483 491
484#: src/ats/plugin_ats_mlp.c:2697 492#: src/ats/plugin_ats_mlp.c:2699
485#, c-format 493#, c-format
486msgid "" 494msgid ""
487"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" 495"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
488msgstr "" 496msgstr ""
489 497
490#: src/ats/plugin_ats_proportional.c:1162 498#: src/ats/plugin_ats_proportional.c:1164
491#, fuzzy, c-format 499#, fuzzy, c-format
492msgid "Invalid %s configuration %f\n" 500msgid "Invalid %s configuration %f\n"
493msgstr "Kunde inte spara konfigurationsfil \"%s\":" 501msgstr "Kunde inte spara konfigurationsfil \"%s\":"
494 502
495#: src/ats-tests/ats-testing.c:420 503#: src/ats-tests/ats-testing.c:422
496#, c-format 504#, c-format
497msgid "Connected master [%u] with slave [%u]\n" 505msgid "Connected master [%u] with slave [%u]\n"
498msgstr "" 506msgstr ""
499 507
500#: src/ats-tests/ats-testing.c:427 508#: src/ats-tests/ats-testing.c:429
501#, fuzzy, c-format 509#, fuzzy, c-format
502msgid "Failed to connect master peer [%u] with slave [%u]\n" 510msgid "Failed to connect master peer [%u] with slave [%u]\n"
503msgstr "Misslyckades att ansluta till gnunetd.\n" 511msgstr "Misslyckades att ansluta till gnunetd.\n"
504 512
505#: src/ats-tests/ats-testing-log.c:835 513#: src/ats-tests/ats-testing-log.c:837
506msgid "Stop logging\n" 514msgid "Stop logging\n"
507msgstr "" 515msgstr ""
508 516
509#: src/ats-tests/ats-testing-log.c:890 517#: src/ats-tests/ats-testing-log.c:892
510#, fuzzy, c-format 518#, fuzzy, c-format
511msgid "Start logging `%s'\n" 519msgid "Start logging `%s'\n"
512msgstr "Startade samling \"%s\".\n" 520msgstr "Startade samling \"%s\".\n"
513 521
514#: src/ats-tests/gnunet-ats-sim.c:88 522#: src/ats-tests/gnunet-ats-sim.c:90
515#, c-format 523#, c-format
516msgid "" 524msgid ""
517"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. " 525"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. "
518"= %u KiB/s\n" 526"= %u KiB/s\n"
519msgstr "" 527msgstr ""
520 528
521#: src/ats-tool/gnunet-ats.c:305 529#: src/ats-tool/gnunet-ats.c:307
522#, c-format 530#, c-format
523msgid "%u address resolutions had a timeout\n" 531msgid "%u address resolutions had a timeout\n"
524msgstr "" 532msgstr ""
525 533
526#: src/ats-tool/gnunet-ats.c:309 534#: src/ats-tool/gnunet-ats.c:311
527#, c-format 535#, c-format
528msgid "ATS returned stat_results for %u addresses\n" 536msgid "ATS returned stat_results for %u addresses\n"
529msgstr "" 537msgstr ""
530 538
531#: src/ats-tool/gnunet-ats.c:393 539#: src/ats-tool/gnunet-ats.c:395
532#, fuzzy, c-format 540#, fuzzy, c-format
533msgid "" 541msgid ""
534"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/" 542"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/"
535"s, %s\n" 543"s, %s\n"
536msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" 544msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
537 545
538#: src/ats-tool/gnunet-ats.c:400 546#: src/ats-tool/gnunet-ats.c:402
539msgid "active " 547msgid "active "
540msgstr "" 548msgstr ""
541 549
542#: src/ats-tool/gnunet-ats.c:400 550#: src/ats-tool/gnunet-ats.c:402
543msgid "inactive " 551msgid "inactive "
544msgstr "" 552msgstr ""
545 553
546#: src/ats-tool/gnunet-ats.c:510 554#: src/ats-tool/gnunet-ats.c:512
547#, fuzzy, c-format 555#, fuzzy, c-format
548msgid "Removed address of peer `%s' with plugin `%s'\n" 556msgid "Removed address of peer `%s' with plugin `%s'\n"
549msgstr "Tillgängliga transport(er): %s\n" 557msgstr "Tillgängliga transport(er): %s\n"
550 558
551#: src/ats-tool/gnunet-ats.c:703 559#: src/ats-tool/gnunet-ats.c:705
552#, c-format 560#, c-format
553msgid "Quota for network `%11s' (in/out): %10s / %10s\n" 561msgid "Quota for network `%11s' (in/out): %10s / %10s\n"
554msgstr "" 562msgstr ""
555 563
556#: src/ats-tool/gnunet-ats.c:746 src/ats-tool/gnunet-ats.c:759 564#: src/ats-tool/gnunet-ats.c:748 src/ats-tool/gnunet-ats.c:761
557#, fuzzy, c-format 565#, fuzzy, c-format
558msgid "Failed to parse peer identity `%s'\n" 566msgid "Failed to parse peer identity `%s'\n"
559msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 567msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
560 568
561#: src/ats-tool/gnunet-ats.c:771 569#: src/ats-tool/gnunet-ats.c:773
562#, c-format 570#, c-format
563msgid "Please select one operation: %s or %s or %s or %s or %s\n" 571msgid "Please select one operation: %s or %s or %s or %s or %s\n"
564msgstr "" 572msgstr ""
565 573
566#: src/ats-tool/gnunet-ats.c:793 src/ats-tool/gnunet-ats.c:818 574#: src/ats-tool/gnunet-ats.c:795 src/ats-tool/gnunet-ats.c:820
567#: src/ats-tool/gnunet-ats.c:849 src/ats-tool/gnunet-ats.c:894 575#: src/ats-tool/gnunet-ats.c:851 src/ats-tool/gnunet-ats.c:896
568#, fuzzy 576#, fuzzy
569msgid "Cannot connect to ATS service, exiting...\n" 577msgid "Cannot connect to ATS service, exiting...\n"
570msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 578msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
571 579
572#: src/ats-tool/gnunet-ats.c:804 src/ats-tool/gnunet-ats.c:830 580#: src/ats-tool/gnunet-ats.c:806 src/ats-tool/gnunet-ats.c:832
573#, fuzzy 581#, fuzzy
574msgid "Cannot issue request to ATS service, exiting...\n" 582msgid "Cannot issue request to ATS service, exiting...\n"
575msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 583msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
576 584
577#: src/ats-tool/gnunet-ats.c:860 585#: src/ats-tool/gnunet-ats.c:862
578#, fuzzy 586#, fuzzy
579msgid "No preference type given!\n" 587msgid "No preference type given!\n"
580msgstr "Skriv ut information om GNUnets motparter." 588msgstr "Skriv ut information om GNUnets motparter."
581 589
582#: src/ats-tool/gnunet-ats.c:867 590#: src/ats-tool/gnunet-ats.c:869
583msgid "No peer given!\n" 591msgid "No peer given!\n"
584msgstr "" 592msgstr ""
585 593
586#: src/ats-tool/gnunet-ats.c:885 594#: src/ats-tool/gnunet-ats.c:887
587msgid "Valid type required\n" 595msgid "Valid type required\n"
588msgstr "" 596msgstr ""
589 597
590#: src/ats-tool/gnunet-ats.c:948 598#: src/ats-tool/gnunet-ats.c:950
591msgid "get list of active addresses currently used" 599msgid "get list of active addresses currently used"
592msgstr "" 600msgstr ""
593 601
594#: src/ats-tool/gnunet-ats.c:952 602#: src/ats-tool/gnunet-ats.c:954
595msgid "get list of all active addresses" 603msgid "get list of all active addresses"
596msgstr "" 604msgstr ""
597 605
598#: src/ats-tool/gnunet-ats.c:958 606#: src/ats-tool/gnunet-ats.c:960
599#, fuzzy 607#, fuzzy
600msgid "connect to PEER" 608msgid "connect to PEER"
601msgstr "Misslyckades att ansluta till gnunetd.\n" 609msgstr "Misslyckades att ansluta till gnunetd.\n"
602 610
603#: src/ats-tool/gnunet-ats.c:962 611#: src/ats-tool/gnunet-ats.c:964
604#, fuzzy 612#, fuzzy
605msgid "do not resolve IP addresses to hostnames" 613msgid "do not resolve IP addresses to hostnames"
606msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 614msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
607 615
608#: src/ats-tool/gnunet-ats.c:967 616#: src/ats-tool/gnunet-ats.c:969
609msgid "monitor mode" 617msgid "monitor mode"
610msgstr "" 618msgstr ""
611 619
612#: src/ats-tool/gnunet-ats.c:972 620#: src/ats-tool/gnunet-ats.c:974
613#, fuzzy 621#, fuzzy
614msgid "set preference for the given peer" 622msgid "set preference for the given peer"
615msgstr "Skriv ut information om GNUnets motparter." 623msgstr "Skriv ut information om GNUnets motparter."
616 624
617#: src/ats-tool/gnunet-ats.c:977 625#: src/ats-tool/gnunet-ats.c:979
618msgid "print all configured quotas" 626msgid "print all configured quotas"
619msgstr "" 627msgstr ""
620 628
621#: src/ats-tool/gnunet-ats.c:982 629#: src/ats-tool/gnunet-ats.c:984
622msgid "peer id" 630msgid "peer id"
623msgstr "" 631msgstr ""
624 632
625#: src/ats-tool/gnunet-ats.c:988 633#: src/ats-tool/gnunet-ats.c:990
626msgid "preference type to set: latency | bandwidth" 634msgid "preference type to set: latency | bandwidth"
627msgstr "" 635msgstr ""
628 636
629#: src/ats-tool/gnunet-ats.c:994 637#: src/ats-tool/gnunet-ats.c:996
630msgid "preference value" 638msgid "preference value"
631msgstr "" 639msgstr ""
632 640
633#: src/ats-tool/gnunet-ats.c:999 641#: src/ats-tool/gnunet-ats.c:1001
634msgid "verbose output (include ATS address properties)" 642msgid "verbose output (include ATS address properties)"
635msgstr "" 643msgstr ""
636 644
637#: src/ats-tool/gnunet-ats.c:1009 645#: src/ats-tool/gnunet-ats.c:1011
638#, fuzzy 646#, fuzzy
639msgid "Print information about ATS state" 647msgid "Print information about ATS state"
640msgstr "Skriv ut information om GNUnets motparter." 648msgstr "Skriv ut information om GNUnets motparter."
641 649
642#: src/auction/gnunet-auction-create.c:161 650#: src/auction/gnunet-auction-create.c:163
643msgid "description of the item to be sold" 651msgid "description of the item to be sold"
644msgstr "" 652msgstr ""
645 653
646#: src/auction/gnunet-auction-create.c:167 654#: src/auction/gnunet-auction-create.c:169
647msgid "mapping of possible prices" 655msgid "mapping of possible prices"
648msgstr "" 656msgstr ""
649 657
650#: src/auction/gnunet-auction-create.c:173 658#: src/auction/gnunet-auction-create.c:175
651msgid "max duration per round" 659msgid "max duration per round"
652msgstr "" 660msgstr ""
653 661
654#: src/auction/gnunet-auction-create.c:179 662#: src/auction/gnunet-auction-create.c:181
655msgid "duration until auction starts" 663msgid "duration until auction starts"
656msgstr "" 664msgstr ""
657 665
658#: src/auction/gnunet-auction-create.c:184 666#: src/auction/gnunet-auction-create.c:186
659msgid "" 667msgid ""
660"number of items to sell\n" 668"number of items to sell\n"
661"0 for first price auction\n" 669"0 for first price auction\n"
662">0 for vickrey/M+1st price auction" 670">0 for vickrey/M+1st price auction"
663msgstr "" 671msgstr ""
664 672
665#: src/auction/gnunet-auction-create.c:191 673#: src/auction/gnunet-auction-create.c:193
666msgid "public auction outcome" 674msgid "public auction outcome"
667msgstr "" 675msgstr ""
668 676
669#: src/auction/gnunet-auction-create.c:196 677#: src/auction/gnunet-auction-create.c:198
670msgid "keep running in foreground until auction completes" 678msgid "keep running in foreground until auction completes"
671msgstr "" 679msgstr ""
672 680
673#: src/auction/gnunet-auction-create.c:207 681#: src/auction/gnunet-auction-create.c:209
674msgid "create a new auction and start listening for bidders" 682msgid "create a new auction and start listening for bidders"
675msgstr "" 683msgstr ""
676 684
677#: src/auction/gnunet-auction-info.c:74 src/auction/gnunet-auction-join.c:74 685#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
678#: src/conversation/gnunet-conversation-test.c:252 686#: src/conversation/gnunet-conversation-test.c:254
679#: src/revocation/gnunet-revocation.c:560 src/template/gnunet-template.c:74 687#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
680#, fuzzy 688#, fuzzy
681msgid "help text" 689msgid "help text"
682msgstr "hjälptext för -t" 690msgstr "hjälptext för -t"
683 691
684#: src/cadet/gnunet-cadet.c:705 692#: src/cadet/gnunet-cadet.c:631
685#, fuzzy, c-format 693#, fuzzy, c-format
686msgid "Invalid peer ID `%s'\n" 694msgid "Invalid peer ID `%s'\n"
687msgstr "Ogiltiga argument: " 695msgstr "Ogiltiga argument: "
688 696
689#: src/cadet/gnunet-cadet.c:744 697#: src/cadet/gnunet-cadet.c:718
690#, fuzzy, c-format
691msgid "Invalid tunnel owner `%s'\n"
692msgstr "Ogiltigt format för IP: \"%s\"\n"
693
694#: src/cadet/gnunet-cadet.c:817
695msgid "Extra arguments are not applicable in combination with this option.\n" 698msgid "Extra arguments are not applicable in combination with this option.\n"
696msgstr "" 699msgstr ""
697 700
698#: src/cadet/gnunet-cadet.c:908 701#: src/cadet/gnunet-cadet.c:795
699#, fuzzy, c-format 702#, fuzzy, c-format
700msgid "Invalid target `%s'\n" 703msgid "Invalid target `%s'\n"
701msgstr "Ogiltigt argument: \"%s\"\n" 704msgstr "Ogiltigt argument: \"%s\"\n"
702 705
703#: src/cadet/gnunet-cadet.c:945 706#: src/cadet/gnunet-cadet.c:832
704#, fuzzy 707#, fuzzy
705msgid "No action requested\n" 708msgid "No action requested\n"
706msgstr "Samling stoppad.\n" 709msgstr "Samling stoppad.\n"
707 710
708#: src/cadet/gnunet-cadet.c:970 711#: src/cadet/gnunet-cadet.c:857
709#, fuzzy 712#, fuzzy
710msgid "Provide information about a particular connection" 713msgid "Provide information about a particular connection"
711msgstr "Skriv ut information om GNUnets motparter." 714msgstr "Skriv ut information om GNUnets motparter."
712 715
713#: src/cadet/gnunet-cadet.c:975 716#: src/cadet/gnunet-cadet.c:861
714msgid "Activate echo mode" 717msgid "Activate echo mode"
715msgstr "" 718msgstr ""
716 719
717#: src/cadet/gnunet-cadet.c:980 720#: src/cadet/gnunet-cadet.c:866
718msgid "Dump debug information to STDERR"
719msgstr ""
720
721#: src/cadet/gnunet-cadet.c:986
722msgid "Listen for connections using a shared secret among sender and recipient" 721msgid "Listen for connections using a shared secret among sender and recipient"
723msgstr "" 722msgstr ""
724 723
725#: src/cadet/gnunet-cadet.c:993 724#: src/cadet/gnunet-cadet.c:871
726#, fuzzy 725#, fuzzy
727msgid "Provide information about a patricular peer" 726msgid "Provide information about a patricular peer"
728msgstr "Skriv ut information om GNUnets motparter." 727msgstr "Skriv ut information om GNUnets motparter."
729 728
730#: src/cadet/gnunet-cadet.c:999 729#: src/cadet/gnunet-cadet.c:875
731#, fuzzy 730#, fuzzy
732msgid "Provide information about all peers" 731msgid "Provide information about all peers"
733msgstr "Skriv ut information om GNUnets motparter." 732msgstr "Skriv ut information om GNUnets motparter."
734 733
735#: src/cadet/gnunet-cadet.c:1005 734#: src/cadet/gnunet-cadet.c:879
736#, fuzzy
737msgid "Provide information about a particular tunnel"
738msgstr "Skriv ut information om GNUnets motparter."
739
740#: src/cadet/gnunet-cadet.c:1011
741#, fuzzy 735#, fuzzy
742msgid "Provide information about all tunnels" 736msgid "Provide information about all tunnels"
743msgstr "Skriv ut information om GNUnets motparter." 737msgstr "Skriv ut information om GNUnets motparter."
744 738
745#: src/consensus/gnunet-consensus-profiler.c:521 739#: src/consensus/gnunet-consensus-profiler.c:523
746#: src/secretsharing/gnunet-secretsharing-profiler.c:608 740#: src/secretsharing/gnunet-secretsharing-profiler.c:610
747#, fuzzy 741#, fuzzy
748msgid "number of peers in consensus" 742msgid "number of peers in consensus"
749msgstr "antal iterationer" 743msgstr "antal iterationer"
750 744
751#: src/consensus/gnunet-consensus-profiler.c:527 745#: src/consensus/gnunet-consensus-profiler.c:529
752msgid "" 746msgid ""
753"how many peers (random selection without replacement) receive one value?" 747"how many peers (random selection without replacement) receive one value?"
754msgstr "" 748msgstr ""
755 749
756#: src/consensus/gnunet-consensus-profiler.c:533 750#: src/consensus/gnunet-consensus-profiler.c:535
757#: src/set/gnunet-set-profiler.c:431 src/set/gnunet-set-profiler.c:437 751#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
758#: src/set/gnunet-set-profiler.c:460 752#: src/set/gnunet-set-profiler.c:462
759#, fuzzy 753#, fuzzy
760msgid "number of values" 754msgid "number of values"
761msgstr "antal iterationer" 755msgstr "antal iterationer"
762 756
763#: src/consensus/gnunet-consensus-profiler.c:539 757#: src/consensus/gnunet-consensus-profiler.c:541
764#, fuzzy 758#, fuzzy
765msgid "consensus timeout" 759msgid "consensus timeout"
766msgstr "# sessionsnycklar accepterade" 760msgstr "# sessionsnycklar accepterade"
767 761
768#: src/consensus/gnunet-consensus-profiler.c:546 762#: src/consensus/gnunet-consensus-profiler.c:548
769msgid "delay until consensus starts" 763msgid "delay until consensus starts"
770msgstr "" 764msgstr ""
771 765
772#: src/consensus/gnunet-consensus-profiler.c:552 766#: src/consensus/gnunet-consensus-profiler.c:554
773#: src/set/gnunet-set-profiler.c:478 767#: src/set/gnunet-set-profiler.c:480
774msgid "write statistics to file" 768msgid "write statistics to file"
775msgstr "" 769msgstr ""
776 770
777#: src/consensus/gnunet-consensus-profiler.c:557 771#: src/consensus/gnunet-consensus-profiler.c:559
778msgid "distribute elements to a static subset of good peers" 772msgid "distribute elements to a static subset of good peers"
779msgstr "" 773msgstr ""
780 774
781#: src/consensus/gnunet-consensus-profiler.c:562 775#: src/consensus/gnunet-consensus-profiler.c:564
782msgid "be more verbose (print received values)" 776msgid "be more verbose (print received values)"
783msgstr "" 777msgstr ""
784 778
785#: src/conversation/conversation_api.c:513 779#: src/conversation/conversation_api.c:515
786#: src/conversation/conversation_api_call.c:492 780#: src/conversation/conversation_api_call.c:494
787msgid "Connection to conversation service lost, trying to reconnect\n" 781msgid "Connection to conversation service lost, trying to reconnect\n"
788msgstr "" 782msgstr ""
789 783
790#: src/conversation/gnunet-conversation.c:275 784#: src/conversation/gnunet-conversation.c:277
791#, c-format 785#, c-format
792msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" 786msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
793msgstr "" 787msgstr ""
794 788
795#: src/conversation/gnunet-conversation.c:300 789#: src/conversation/gnunet-conversation.c:302
796#, c-format 790#, c-format
797msgid "Call from `%s' terminated\n" 791msgid "Call from `%s' terminated\n"
798msgstr "" 792msgstr ""
799 793
800#: src/conversation/gnunet-conversation.c:335 794#: src/conversation/gnunet-conversation.c:337
801#, c-format 795#, c-format
802msgid "Call from `%s' suspended by other user\n" 796msgid "Call from `%s' suspended by other user\n"
803msgstr "" 797msgstr ""
804 798
805#: src/conversation/gnunet-conversation.c:340 799#: src/conversation/gnunet-conversation.c:342
806#, c-format 800#, c-format
807msgid "Call from `%s' resumed by other user\n" 801msgid "Call from `%s' resumed by other user\n"
808msgstr "" 802msgstr ""
809 803
810#: src/conversation/gnunet-conversation.c:358 804#: src/conversation/gnunet-conversation.c:360
811#, c-format 805#, c-format
812msgid "Ego `%s' no longer available, phone is now down.\n" 806msgid "Ego `%s' no longer available, phone is now down.\n"
813msgstr "" 807msgstr ""
814 808
815#: src/conversation/gnunet-conversation.c:373 809#: src/conversation/gnunet-conversation.c:375
816#, fuzzy 810#, fuzzy
817msgid "Failed to setup phone (internal error)\n" 811msgid "Failed to setup phone (internal error)\n"
818msgstr "Kunde inte skapa värdnyckel!\n" 812msgstr "Kunde inte skapa värdnyckel!\n"
819 813
820#: src/conversation/gnunet-conversation.c:385 814#: src/conversation/gnunet-conversation.c:387
821#, c-format 815#, c-format
822msgid "Phone active at `%s'. Type `/help' for a list of available commands\n" 816msgid "Phone active at `%s'. Type `/help' for a list of available commands\n"
823msgstr "" 817msgstr ""
824 818
825#: src/conversation/gnunet-conversation.c:409 819#: src/conversation/gnunet-conversation.c:411
826#, c-format 820#, c-format
827msgid "Resolved address of `%s'. Now ringing other party.\n" 821msgid "Resolved address of `%s'. Now ringing other party.\n"
828msgstr "" 822msgstr ""
829 823
830#: src/conversation/gnunet-conversation.c:416 824#: src/conversation/gnunet-conversation.c:418
831#, fuzzy, c-format 825#, fuzzy, c-format
832msgid "Connection established to `%s'\n" 826msgid "Connection established to `%s'\n"
833msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 827msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
834 828
835#: src/conversation/gnunet-conversation.c:423 829#: src/conversation/gnunet-conversation.c:425
836#, fuzzy, c-format 830#, fuzzy, c-format
837msgid "Failed to resolve `%s'\n" 831msgid "Failed to resolve `%s'\n"
838msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 832msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
839 833
840#: src/conversation/gnunet-conversation.c:431 834#: src/conversation/gnunet-conversation.c:433
841#, c-format 835#, c-format
842msgid "Call to `%s' terminated\n" 836msgid "Call to `%s' terminated\n"
843msgstr "" 837msgstr ""
844 838
845#: src/conversation/gnunet-conversation.c:440 839#: src/conversation/gnunet-conversation.c:442
846#, c-format 840#, c-format
847msgid "Connection to `%s' suspended (by other user)\n" 841msgid "Connection to `%s' suspended (by other user)\n"
848msgstr "" 842msgstr ""
849 843
850#: src/conversation/gnunet-conversation.c:446 844#: src/conversation/gnunet-conversation.c:448
851#, c-format 845#, c-format
852msgid "Connection to `%s' resumed (by other user)\n" 846msgid "Connection to `%s' resumed (by other user)\n"
853msgstr "" 847msgstr ""
854 848
855#: src/conversation/gnunet-conversation.c:451 849#: src/conversation/gnunet-conversation.c:453
856msgid "Error with the call, restarting it\n" 850msgid "Error with the call, restarting it\n"
857msgstr "" 851msgstr ""
858 852
859#: src/conversation/gnunet-conversation.c:522 853#: src/conversation/gnunet-conversation.c:524
860#, fuzzy, c-format 854#, fuzzy, c-format
861msgid "Unknown command `%s'\n" 855msgid "Unknown command `%s'\n"
862msgstr "Okänd operation \"%s\"\n" 856msgstr "Okänd operation \"%s\"\n"
863 857
864#: src/conversation/gnunet-conversation.c:538 858#: src/conversation/gnunet-conversation.c:540
865#: src/conversation/gnunet-conversation.c:552 859#: src/conversation/gnunet-conversation.c:554
866#, c-format 860#, c-format
867msgid "Ego `%s' not available\n" 861msgid "Ego `%s' not available\n"
868msgstr "" 862msgstr ""
869 863
870#: src/conversation/gnunet-conversation.c:545 864#: src/conversation/gnunet-conversation.c:547
871#: src/conversation/gnunet-conversation.c:601 865#: src/conversation/gnunet-conversation.c:603
872msgid "You are calling someone else already, hang up first!\n" 866msgid "You are calling someone else already, hang up first!\n"
873msgstr "" 867msgstr ""
874 868
875#: src/conversation/gnunet-conversation.c:560 869#: src/conversation/gnunet-conversation.c:562
876#: src/conversation/gnunet-conversation.c:614 870#: src/conversation/gnunet-conversation.c:616
877#, c-format 871#, c-format
878msgid "You are answering call from `%s', hang up or suspend that call first!\n" 872msgid "You are answering call from `%s', hang up or suspend that call first!\n"
879msgstr "" 873msgstr ""
880 874
881#: src/conversation/gnunet-conversation.c:570 875#: src/conversation/gnunet-conversation.c:572
882msgid "Call recipient missing.\n" 876msgid "Call recipient missing.\n"
883msgstr "" 877msgstr ""
884 878
885#: src/conversation/gnunet-conversation.c:625 879#: src/conversation/gnunet-conversation.c:627
886msgid "There is no incoming call to accept here!\n" 880msgid "There is no incoming call to accept here!\n"
887msgstr "" 881msgstr ""
888 882
889#: src/conversation/gnunet-conversation.c:642 883#: src/conversation/gnunet-conversation.c:644
890#, c-format 884#, c-format
891msgid "There is no incoming call `%s' to accept right now!\n" 885msgid "There is no incoming call `%s' to accept right now!\n"
892msgstr "" 886msgstr ""
893 887
894#: src/conversation/gnunet-conversation.c:673 888#: src/conversation/gnunet-conversation.c:675
895msgid "We currently do not have an address.\n" 889msgid "We currently do not have an address.\n"
896msgstr "" 890msgstr ""
897 891
898#: src/conversation/gnunet-conversation.c:697 892#: src/conversation/gnunet-conversation.c:699
899#, c-format 893#, c-format
900msgid "We are currently trying to locate the private key for the ego `%s'.\n" 894msgid "We are currently trying to locate the private key for the ego `%s'.\n"
901msgstr "" 895msgstr ""
902 896
903#: src/conversation/gnunet-conversation.c:702 897#: src/conversation/gnunet-conversation.c:704
904#, c-format 898#, c-format
905msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n" 899msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n"
906msgstr "" 900msgstr ""
907 901
908#: src/conversation/gnunet-conversation.c:708 902#: src/conversation/gnunet-conversation.c:710
909#: src/conversation/gnunet-conversation.c:732 903#: src/conversation/gnunet-conversation.c:734
910#, c-format 904#, c-format
911msgid "You are having a conversation with `%s'.\n" 905msgid "You are having a conversation with `%s'.\n"
912msgstr "" 906msgstr ""
913 907
914#: src/conversation/gnunet-conversation.c:713 908#: src/conversation/gnunet-conversation.c:715
915msgid "" 909msgid ""
916"We had an internal error setting up our phone line. You can still make " 910"We had an internal error setting up our phone line. You can still make "
917"calls.\n" 911"calls.\n"
918msgstr "" 912msgstr ""
919 913
920#: src/conversation/gnunet-conversation.c:722 914#: src/conversation/gnunet-conversation.c:724
921#, c-format 915#, c-format
922msgid "We are trying to find the network address to call `%s'.\n" 916msgid "We are trying to find the network address to call `%s'.\n"
923msgstr "" 917msgstr ""
924 918
925#: src/conversation/gnunet-conversation.c:727 919#: src/conversation/gnunet-conversation.c:729
926#, c-format 920#, c-format
927msgid "We are calling `%s', their phone should be ringing.\n" 921msgid "We are calling `%s', their phone should be ringing.\n"
928msgstr "" 922msgstr ""
929 923
930#: src/conversation/gnunet-conversation.c:746 924#: src/conversation/gnunet-conversation.c:748
931msgid "Calls waiting:\n" 925msgid "Calls waiting:\n"
932msgstr "" 926msgstr ""
933 927
934#: src/conversation/gnunet-conversation.c:752 928#: src/conversation/gnunet-conversation.c:754
935#, fuzzy, c-format 929#, fuzzy, c-format
936msgid "#%u: `%s'\n" 930msgid "#%u: `%s'\n"
937msgstr "Jag är ändpunkt \"%s\".\n" 931msgstr "Jag är ändpunkt \"%s\".\n"
938 932
939#: src/conversation/gnunet-conversation.c:781 933#: src/conversation/gnunet-conversation.c:783
940#: src/conversation/gnunet-conversation.c:796 934#: src/conversation/gnunet-conversation.c:798
941msgid "There is no call that could be suspended right now.\n" 935msgid "There is no call that could be suspended right now.\n"
942msgstr "" 936msgstr ""
943 937
944#: src/conversation/gnunet-conversation.c:829 938#: src/conversation/gnunet-conversation.c:831
945#: src/conversation/gnunet-conversation.c:845 939#: src/conversation/gnunet-conversation.c:847
946msgid "There is no call that could be resumed right now.\n" 940msgid "There is no call that could be resumed right now.\n"
947msgstr "" 941msgstr ""
948 942
949#: src/conversation/gnunet-conversation.c:852 943#: src/conversation/gnunet-conversation.c:854
950#, c-format 944#, c-format
951msgid "Already talking with `%s', cannot resume a call right now.\n" 945msgid "Already talking with `%s', cannot resume a call right now.\n"
952msgstr "" 946msgstr ""
953 947
954#: src/conversation/gnunet-conversation.c:861 948#: src/conversation/gnunet-conversation.c:863
955msgid "There is no incoming call to resume here!\n" 949msgid "There is no incoming call to resume here!\n"
956msgstr "" 950msgstr ""
957 951
958#: src/conversation/gnunet-conversation.c:878 952#: src/conversation/gnunet-conversation.c:880
959#, c-format 953#, c-format
960msgid "There is no incoming call `%s' to resume right now!\n" 954msgid "There is no incoming call `%s' to resume right now!\n"
961msgstr "" 955msgstr ""
962 956
963#: src/conversation/gnunet-conversation.c:913 957#: src/conversation/gnunet-conversation.c:915
964msgid "There is no call that could be cancelled right now.\n" 958msgid "There is no call that could be cancelled right now.\n"
965msgstr "" 959msgstr ""
966 960
967#: src/conversation/gnunet-conversation.c:921 961#: src/conversation/gnunet-conversation.c:923
968msgid "There is no incoming call to refuse here!\n" 962msgid "There is no incoming call to refuse here!\n"
969msgstr "" 963msgstr ""
970 964
971#: src/conversation/gnunet-conversation.c:938 965#: src/conversation/gnunet-conversation.c:940
972#, c-format 966#, c-format
973msgid "There is no incoming call `%s' to refuse right now!\n" 967msgid "There is no incoming call `%s' to refuse right now!\n"
974msgstr "" 968msgstr ""
975 969
976#: src/conversation/gnunet-conversation.c:964 970#: src/conversation/gnunet-conversation.c:966
977msgid "Use `/address' to find out which address this phone should have in GNS" 971msgid "Use `/address' to find out which address this phone should have in GNS"
978msgstr "" 972msgstr ""
979 973
980#: src/conversation/gnunet-conversation.c:966 974#: src/conversation/gnunet-conversation.c:968
981msgid "Use `/call USER.gnu' to call USER" 975msgid "Use `/call USER.gnu' to call USER"
982msgstr "" 976msgstr ""
983 977
984#: src/conversation/gnunet-conversation.c:968 978#: src/conversation/gnunet-conversation.c:970
985msgid "Use `/accept #NUM' to accept incoming call #NUM" 979msgid "Use `/accept #NUM' to accept incoming call #NUM"
986msgstr "" 980msgstr ""
987 981
988#: src/conversation/gnunet-conversation.c:970 982#: src/conversation/gnunet-conversation.c:972
989msgid "Use `/suspend' to suspend the active call" 983msgid "Use `/suspend' to suspend the active call"
990msgstr "" 984msgstr ""
991 985
992#: src/conversation/gnunet-conversation.c:972 986#: src/conversation/gnunet-conversation.c:974
993msgid "" 987msgid ""
994"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming " 988"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming "
995"calls, no argument is needed to resume the current outgoing call." 989"calls, no argument is needed to resume the current outgoing call."
996msgstr "" 990msgstr ""
997 991
998#: src/conversation/gnunet-conversation.c:974 992#: src/conversation/gnunet-conversation.c:976
999msgid "Use `/cancel' to reject or terminate a call" 993msgid "Use `/cancel' to reject or terminate a call"
1000msgstr "" 994msgstr ""
1001 995
1002#: src/conversation/gnunet-conversation.c:976 996#: src/conversation/gnunet-conversation.c:978
1003msgid "Use `/status' to print status information" 997msgid "Use `/status' to print status information"
1004msgstr "" 998msgstr ""
1005 999
1006#: src/conversation/gnunet-conversation.c:978 1000#: src/conversation/gnunet-conversation.c:980
1007#, fuzzy 1001#, fuzzy
1008msgid "Use `/quit' to terminate gnunet-conversation" 1002msgid "Use `/quit' to terminate gnunet-conversation"
1009msgstr "tillåter klienter att fastställa gnunetds konfiguration" 1003msgstr "tillåter klienter att fastställa gnunetds konfiguration"
1010 1004
1011#: src/conversation/gnunet-conversation.c:980 1005#: src/conversation/gnunet-conversation.c:982
1012msgid "Use `/help command' to get help for a specific command" 1006msgid "Use `/help command' to get help for a specific command"
1013msgstr "" 1007msgstr ""
1014 1008
1015#: src/conversation/gnunet-conversation.c:1196 1009#: src/conversation/gnunet-conversation.c:1198
1016#, fuzzy, c-format 1010#, fuzzy, c-format
1017msgid "Name of our ego changed to `%s'\n" 1011msgid "Name of our ego changed to `%s'\n"
1018msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 1012msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
1019 1013
1020#: src/conversation/gnunet-conversation.c:1209 1014#: src/conversation/gnunet-conversation.c:1211
1021#, fuzzy, c-format 1015#, fuzzy, c-format
1022msgid "Our ego `%s' was deleted!\n" 1016msgid "Our ego `%s' was deleted!\n"
1023msgstr "Pseudonym \"%s\" togs bort.\n" 1017msgstr "Pseudonym \"%s\" togs bort.\n"
1024 1018
1025#: src/conversation/gnunet-conversation.c:1247 1019#: src/conversation/gnunet-conversation.c:1249
1026#, fuzzy 1020#, fuzzy
1027msgid "You must specify the NAME of an ego to use\n" 1021msgid "You must specify the NAME of an ego to use\n"
1028msgstr "Du måste ange en lista av filer att lägga in.\n" 1022msgstr "Du måste ange en lista av filer att lägga in.\n"
1029 1023
1030#: src/conversation/gnunet-conversation.c:1271 1024#: src/conversation/gnunet-conversation.c:1273
1031#, fuzzy 1025#, fuzzy
1032msgid "Failed to start gnunet-helper-w32-console\n" 1026msgid "Failed to start gnunet-helper-w32-console\n"
1033msgstr "Misslyckades att starta samling.\n" 1027msgstr "Misslyckades att starta samling.\n"
1034 1028
1035#: src/conversation/gnunet-conversation.c:1300 1029#: src/conversation/gnunet-conversation.c:1302
1036msgid "sets the NAME of the ego to use for the caller ID" 1030msgid "sets the NAME of the ego to use for the caller ID"
1037msgstr "" 1031msgstr ""
1038 1032
1039#: src/conversation/gnunet-conversation.c:1305 1033#: src/conversation/gnunet-conversation.c:1307
1040msgid "sets the LINE to use for the phone" 1034msgid "sets the LINE to use for the phone"
1041msgstr "" 1035msgstr ""
1042 1036
1043#: src/conversation/gnunet-conversation.c:1334 1037#: src/conversation/gnunet-conversation.c:1336
1044msgid "Enables having a conversation with other GNUnet users." 1038msgid "Enables having a conversation with other GNUnet users."
1045msgstr "" 1039msgstr ""
1046 1040
1047#: src/conversation/gnunet-conversation-test.c:118 1041#: src/conversation/gnunet-conversation-test.c:120
1048#, c-format 1042#, c-format
1049msgid "" 1043msgid ""
1050"\n" 1044"\n"
1051"End of transmission. Have a GNU day.\n" 1045"End of transmission. Have a GNU day.\n"
1052msgstr "" 1046msgstr ""
1053 1047
1054#: src/conversation/gnunet-conversation-test.c:143 1048#: src/conversation/gnunet-conversation-test.c:145
1055#, c-format 1049#, c-format
1056msgid "" 1050msgid ""
1057"\n" 1051"\n"
@@ -1059,2563 +1053,2559 @@ msgid ""
1059"settings are working..." 1053"settings are working..."
1060msgstr "" 1054msgstr ""
1061 1055
1062#: src/conversation/gnunet-conversation-test.c:214 1056#: src/conversation/gnunet-conversation-test.c:216
1063#, c-format 1057#, c-format
1064msgid "" 1058msgid ""
1065"We will now be recording you for %s. After that time, the recording will be " 1059"We will now be recording you for %s. After that time, the recording will be "
1066"played back to you..." 1060"played back to you..."
1067msgstr "" 1061msgstr ""
1068 1062
1069#: src/conversation/gnunet_gst.c:620 1063#: src/conversation/gnunet_gst.c:622
1070#: src/conversation/gnunet-helper-audio-playback-gst.c:359 1064#: src/conversation/gnunet-helper-audio-playback-gst.c:361
1071#, c-format 1065#, c-format
1072msgid "Read error from STDIN: %d %s\n" 1066msgid "Read error from STDIN: %d %s\n"
1073msgstr "" 1067msgstr ""
1074 1068
1075#: src/conversation/gnunet-helper-audio-playback.c:323 1069#: src/conversation/gnunet-helper-audio-playback.c:325
1076#, fuzzy, c-format 1070#, fuzzy, c-format
1077msgid "pa_stream_write() failed: %s\n" 1071msgid "pa_stream_write() failed: %s\n"
1078msgstr "\"%s\" %s misslyckades: %s\n" 1072msgstr "\"%s\" %s misslyckades: %s\n"
1079 1073
1080#: src/conversation/gnunet-helper-audio-playback.c:625 1074#: src/conversation/gnunet-helper-audio-playback.c:627
1081msgid "gnunet-helper-audio-playback - Got signal, exiting\n" 1075msgid "gnunet-helper-audio-playback - Got signal, exiting\n"
1082msgstr "" 1076msgstr ""
1083 1077
1084#: src/conversation/gnunet-helper-audio-playback.c:651 1078#: src/conversation/gnunet-helper-audio-playback.c:653
1085#: src/conversation/gnunet-helper-audio-record.c:561 1079#: src/conversation/gnunet-helper-audio-record.c:563
1086#, fuzzy 1080#, fuzzy
1087msgid "Connection established.\n" 1081msgid "Connection established.\n"
1088msgstr "Samling stoppad.\n" 1082msgstr "Samling stoppad.\n"
1089 1083
1090#: src/conversation/gnunet-helper-audio-playback.c:656 1084#: src/conversation/gnunet-helper-audio-playback.c:658
1091#: src/conversation/gnunet-helper-audio-record.c:566 1085#: src/conversation/gnunet-helper-audio-record.c:568
1092#, fuzzy, c-format 1086#, fuzzy, c-format
1093msgid "pa_stream_new() failed: %s\n" 1087msgid "pa_stream_new() failed: %s\n"
1094msgstr "\"%s\" %s misslyckades: %s\n" 1088msgstr "\"%s\" %s misslyckades: %s\n"
1095 1089
1096#: src/conversation/gnunet-helper-audio-playback.c:670 1090#: src/conversation/gnunet-helper-audio-playback.c:672
1097#, c-format 1091#, c-format
1098msgid "pa_stream_connect_playback() failed: %s\n" 1092msgid "pa_stream_connect_playback() failed: %s\n"
1099msgstr "" 1093msgstr ""
1100 1094
1101#: src/conversation/gnunet-helper-audio-playback.c:683 1095#: src/conversation/gnunet-helper-audio-playback.c:685
1102#: src/conversation/gnunet-helper-audio-record.c:592 1096#: src/conversation/gnunet-helper-audio-record.c:594
1103#, fuzzy, c-format 1097#, fuzzy, c-format
1104msgid "Connection failure: %s\n" 1098msgid "Connection failure: %s\n"
1105msgstr " Anslutning misslyckades (fel?)\n" 1099msgstr " Anslutning misslyckades (fel?)\n"
1106 1100
1107#: src/conversation/gnunet-helper-audio-playback.c:704 1101#: src/conversation/gnunet-helper-audio-playback.c:706
1108#: src/conversation/gnunet-helper-audio-record.c:615 1102#: src/conversation/gnunet-helper-audio-record.c:617
1109msgid "Wrong Spec\n" 1103msgid "Wrong Spec\n"
1110msgstr "" 1104msgstr ""
1111 1105
1112#: src/conversation/gnunet-helper-audio-playback.c:710 1106#: src/conversation/gnunet-helper-audio-playback.c:712
1113#: src/conversation/gnunet-helper-audio-record.c:621 1107#: src/conversation/gnunet-helper-audio-record.c:623
1114#, fuzzy 1108#, fuzzy
1115msgid "pa_mainloop_new() failed.\n" 1109msgid "pa_mainloop_new() failed.\n"
1116msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 1110msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
1117 1111
1118#: src/conversation/gnunet-helper-audio-playback.c:724 1112#: src/conversation/gnunet-helper-audio-playback.c:726
1119#: src/conversation/gnunet-helper-audio-record.c:636 1113#: src/conversation/gnunet-helper-audio-record.c:638
1120#, fuzzy 1114#, fuzzy
1121msgid "pa_context_new() failed.\n" 1115msgid "pa_context_new() failed.\n"
1122msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 1116msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
1123 1117
1124#: src/conversation/gnunet-helper-audio-playback.c:731 1118#: src/conversation/gnunet-helper-audio-playback.c:733
1125#: src/conversation/gnunet-helper-audio-record.c:642 1119#: src/conversation/gnunet-helper-audio-record.c:644
1126#, fuzzy, c-format 1120#, fuzzy, c-format
1127msgid "pa_context_connect() failed: %s\n" 1121msgid "pa_context_connect() failed: %s\n"
1128msgstr "# av anslutna parter" 1122msgstr "# av anslutna parter"
1129 1123
1130#: src/conversation/gnunet-helper-audio-playback.c:737 1124#: src/conversation/gnunet-helper-audio-playback.c:739
1131#: src/conversation/gnunet-helper-audio-record.c:648 1125#: src/conversation/gnunet-helper-audio-record.c:650
1132#, fuzzy 1126#, fuzzy
1133msgid "pa_mainloop_run() failed.\n" 1127msgid "pa_mainloop_run() failed.\n"
1134msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 1128msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
1135 1129
1136#: src/conversation/gnunet-helper-audio-playback.c:816 1130#: src/conversation/gnunet-helper-audio-playback.c:818
1137#, c-format 1131#, c-format
1138msgid "Read error from STDIN: %s\n" 1132msgid "Read error from STDIN: %s\n"
1139msgstr "" 1133msgstr ""
1140 1134
1141#: src/conversation/gnunet-helper-audio-record.c:351 1135#: src/conversation/gnunet-helper-audio-record.c:353
1142#, fuzzy, c-format 1136#, fuzzy, c-format
1143msgid "opus_encode_float() failed: %s. Aborting\n" 1137msgid "opus_encode_float() failed: %s. Aborting\n"
1144msgstr "# av anslutna parter" 1138msgstr "# av anslutna parter"
1145 1139
1146#: src/conversation/gnunet-helper-audio-record.c:430 1140#: src/conversation/gnunet-helper-audio-record.c:432
1147#, fuzzy, c-format 1141#, fuzzy, c-format
1148msgid "pa_stream_peek() failed: %s\n" 1142msgid "pa_stream_peek() failed: %s\n"
1149msgstr "\"%s\" %s misslyckades: %s\n" 1143msgstr "\"%s\" %s misslyckades: %s\n"
1150 1144
1151#: src/conversation/gnunet-helper-audio-record.c:472 1145#: src/conversation/gnunet-helper-audio-record.c:474
1152msgid "Got signal, exiting.\n" 1146msgid "Got signal, exiting.\n"
1153msgstr "" 1147msgstr ""
1154 1148
1155#: src/conversation/gnunet-helper-audio-record.c:498 1149#: src/conversation/gnunet-helper-audio-record.c:500
1156#, fuzzy 1150#, fuzzy
1157msgid "Stream successfully created.\n" 1151msgid "Stream successfully created.\n"
1158msgstr "Åtkomst nekad för \"%s\" vid %s:%d.\n" 1152msgstr "Åtkomst nekad för \"%s\" vid %s:%d.\n"
1159 1153
1160#: src/conversation/gnunet-helper-audio-record.c:503 1154#: src/conversation/gnunet-helper-audio-record.c:505
1161#, fuzzy, c-format 1155#, fuzzy, c-format
1162msgid "pa_stream_get_buffer_attr() failed: %s\n" 1156msgid "pa_stream_get_buffer_attr() failed: %s\n"
1163msgstr "\"%s\" %s misslyckades: %s\n" 1157msgstr "\"%s\" %s misslyckades: %s\n"
1164 1158
1165#: src/conversation/gnunet-helper-audio-record.c:511 1159#: src/conversation/gnunet-helper-audio-record.c:513
1166#, c-format 1160#, c-format
1167msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" 1161msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
1168msgstr "" 1162msgstr ""
1169 1163
1170#: src/conversation/gnunet-helper-audio-record.c:515 1164#: src/conversation/gnunet-helper-audio-record.c:517
1171#, c-format 1165#, c-format
1172msgid "Using sample spec '%s', channel map '%s'.\n" 1166msgid "Using sample spec '%s', channel map '%s'.\n"
1173msgstr "" 1167msgstr ""
1174 1168
1175#: src/conversation/gnunet-helper-audio-record.c:522 1169#: src/conversation/gnunet-helper-audio-record.c:524
1176#, fuzzy, c-format 1170#, fuzzy, c-format
1177msgid "Connected to device %s (%u, %ssuspended).\n" 1171msgid "Connected to device %s (%u, %ssuspended).\n"
1178msgstr "\"%s\" ansluten till \"%s\".\n" 1172msgstr "\"%s\" ansluten till \"%s\".\n"
1179 1173
1180#: src/conversation/gnunet-helper-audio-record.c:531 1174#: src/conversation/gnunet-helper-audio-record.c:533
1181#, c-format 1175#, c-format
1182msgid "Stream error: %s\n" 1176msgid "Stream error: %s\n"
1183msgstr "" 1177msgstr ""
1184 1178
1185#: src/conversation/gnunet-helper-audio-record.c:579 1179#: src/conversation/gnunet-helper-audio-record.c:581
1186#, fuzzy, c-format 1180#, fuzzy, c-format
1187msgid "pa_stream_connect_record() failed: %s\n" 1181msgid "pa_stream_connect_record() failed: %s\n"
1188msgstr "" 1182msgstr ""
1189"\n" 1183"\n"
1190"Fel vid uppladdning av fil: %s\n" 1184"Fel vid uppladdning av fil: %s\n"
1191 1185
1192#: src/conversation/gnunet-helper-audio-record.c:693 1186#: src/conversation/gnunet-helper-audio-record.c:695
1193#, fuzzy 1187#, fuzzy
1194msgid "ogg_stream_init() failed.\n" 1188msgid "ogg_stream_init() failed.\n"
1195msgstr "\"%s\" %s misslyckades: %s\n" 1189msgstr "\"%s\" %s misslyckades: %s\n"
1196 1190
1197#: src/conversation/gnunet-helper-audio-record.c:738 1191#: src/conversation/gnunet-helper-audio-record.c:740
1198#, fuzzy, c-format 1192#, fuzzy, c-format
1199msgid "Failed to allocate %u bytes for second packet\n" 1193msgid "Failed to allocate %u bytes for second packet\n"
1200msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 1194msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
1201 1195
1202#: src/conversation/gnunet-service-conversation.c:1303 1196#: src/conversation/gnunet-service-conversation.c:1305
1203#, fuzzy, c-format 1197#, fuzzy, c-format
1204msgid "Could not open line, port %s already in use!\n" 1198msgid "Could not open line, port %s already in use!\n"
1205msgstr "Kunde inte ansluta till gnunetd.\n" 1199msgstr "Kunde inte ansluta till gnunetd.\n"
1206 1200
1207#: src/conversation/microphone.c:119 1201#: src/conversation/microphone.c:121
1208#, fuzzy 1202#, fuzzy
1209msgid "Could not start record audio helper\n" 1203msgid "Could not start record audio helper\n"
1210msgstr "Kunde inte komma åt namnrymdsinformation.\n" 1204msgstr "Kunde inte komma åt namnrymdsinformation.\n"
1211 1205
1212#: src/conversation/plugin_gnsrecord_conversation.c:70 1206#: src/conversation/plugin_gnsrecord_conversation.c:72
1213#, c-format 1207#, c-format
1214msgid "PHONE version %u not supported\n" 1208msgid "PHONE version %u not supported\n"
1215msgstr "" 1209msgstr ""
1216 1210
1217#: src/conversation/plugin_gnsrecord_conversation.c:133 1211#: src/conversation/plugin_gnsrecord_conversation.c:135
1218#: src/conversation/plugin_gnsrecord_conversation.c:147 1212#: src/conversation/plugin_gnsrecord_conversation.c:149
1219#, fuzzy, c-format 1213#, fuzzy, c-format
1220msgid "Unable to parse PHONE record `%s'\n" 1214msgid "Unable to parse PHONE record `%s'\n"
1221msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 1215msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
1222 1216
1223#: src/conversation/speaker.c:73 1217#: src/conversation/speaker.c:75
1224#, fuzzy 1218#, fuzzy
1225msgid "Could not start playback audio helper.\n" 1219msgid "Could not start playback audio helper.\n"
1226msgstr "Kunde inte slå upp \"%s\": %s\n" 1220msgstr "Kunde inte slå upp \"%s\": %s\n"
1227 1221
1228#: src/core/gnunet-core.c:88 1222#: src/core/gnunet-core.c:90
1229#, fuzzy 1223#, fuzzy
1230msgid "fresh connection" 1224msgid "fresh connection"
1231msgstr "# av anslutna parter" 1225msgstr "# av anslutna parter"
1232 1226
1233#: src/core/gnunet-core.c:91 1227#: src/core/gnunet-core.c:93
1234msgid "key sent" 1228msgid "key sent"
1235msgstr "" 1229msgstr ""
1236 1230
1237#: src/core/gnunet-core.c:94 1231#: src/core/gnunet-core.c:96
1238#, fuzzy 1232#, fuzzy
1239msgid "key received" 1233msgid "key received"
1240msgstr "# sessionnycklar vägrade" 1234msgstr "# sessionnycklar vägrade"
1241 1235
1242#: src/core/gnunet-core.c:97 1236#: src/core/gnunet-core.c:99
1243#, fuzzy 1237#, fuzzy
1244msgid "connection established" 1238msgid "connection established"
1245msgstr "Samling stoppad.\n" 1239msgstr "Samling stoppad.\n"
1246 1240
1247#: src/core/gnunet-core.c:100 1241#: src/core/gnunet-core.c:102
1248msgid "rekeying" 1242msgid "rekeying"
1249msgstr "" 1243msgstr ""
1250 1244
1251#: src/core/gnunet-core.c:103 1245#: src/core/gnunet-core.c:105
1252#, fuzzy 1246#, fuzzy
1253msgid "disconnected" 1247msgid "disconnected"
1254msgstr "\"%s\" ansluten till \"%s\".\n" 1248msgstr "\"%s\" ansluten till \"%s\".\n"
1255 1249
1256#: src/core/gnunet-core.c:110 1250#: src/core/gnunet-core.c:112
1257msgid "Connection to CORE service lost (reconnecting)" 1251msgid "Connection to CORE service lost (reconnecting)"
1258msgstr "" 1252msgstr ""
1259 1253
1260#: src/core/gnunet-core.c:113 1254#: src/core/gnunet-core.c:115
1261#, fuzzy 1255#, fuzzy
1262msgid "unknown state" 1256msgid "unknown state"
1263msgstr "Okänt fel" 1257msgstr "Okänt fel"
1264 1258
1265#: src/core/gnunet-core.c:118 1259#: src/core/gnunet-core.c:120
1266#, c-format 1260#, c-format
1267msgid "%24s: %-30s %4s (timeout in %6s)\n" 1261msgid "%24s: %-30s %4s (timeout in %6s)\n"
1268msgstr "" 1262msgstr ""
1269 1263
1270#: src/core/gnunet-core.c:142 src/peerinfo-tool/gnunet-peerinfo.c:726 1264#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
1271#, fuzzy, c-format 1265#, fuzzy, c-format
1272msgid "Invalid command line argument `%s'\n" 1266msgid "Invalid command line argument `%s'\n"
1273msgstr "Ogiltiga kommandoradsargument:\n" 1267msgstr "Ogiltiga kommandoradsargument:\n"
1274 1268
1275#: src/core/gnunet-core.c:153 1269#: src/core/gnunet-core.c:155
1276#, fuzzy 1270#, fuzzy
1277msgid "Failed to connect to CORE service!\n" 1271msgid "Failed to connect to CORE service!\n"
1278msgstr "Misslyckades att ansluta till gnunetd.\n" 1272msgstr "Misslyckades att ansluta till gnunetd.\n"
1279 1273
1280#: src/core/gnunet-core.c:175 src/transport/gnunet-transport.c:1447 1274#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
1281#, fuzzy 1275#, fuzzy
1282msgid "provide information about all current connections (continuously)" 1276msgid "provide information about all current connections (continuously)"
1283msgstr "Skriv ut information om GNUnets motparter." 1277msgstr "Skriv ut information om GNUnets motparter."
1284 1278
1285#: src/core/gnunet-core.c:184 1279#: src/core/gnunet-core.c:186
1286#, fuzzy 1280#, fuzzy
1287msgid "Print information about connected peers." 1281msgid "Print information about connected peers."
1288msgstr "Skriv ut information om GNUnets motparter." 1282msgstr "Skriv ut information om GNUnets motparter."
1289 1283
1290#: src/core/gnunet-service-core.c:345 1284#: src/core/gnunet-service-core.c:347
1291msgid "# send requests dropped (disconnected)" 1285msgid "# send requests dropped (disconnected)"
1292msgstr "" 1286msgstr ""
1293 1287
1294#: src/core/gnunet-service-core.c:369 1288#: src/core/gnunet-service-core.c:371
1295msgid "# dequeuing CAR (duplicate request)" 1289msgid "# dequeuing CAR (duplicate request)"
1296msgstr "" 1290msgstr ""
1297 1291
1298#: src/core/gnunet-service-core.c:441 1292#: src/core/gnunet-service-core.c:443
1299#, fuzzy, c-format 1293#, fuzzy, c-format
1300msgid "# bytes of messages of type %u received" 1294msgid "# bytes of messages of type %u received"
1301msgstr "# krypterade PONG-meddelanden mottagna" 1295msgstr "# krypterade PONG-meddelanden mottagna"
1302 1296
1303#: src/core/gnunet-service-core.c:539 1297#: src/core/gnunet-service-core.c:541
1304#, fuzzy 1298#, fuzzy
1305msgid "# messages discarded (session disconnected)" 1299msgid "# messages discarded (session disconnected)"
1306msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 1300msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
1307 1301
1308#: src/core/gnunet-service-core.c:877 1302#: src/core/gnunet-service-core.c:879
1309#, fuzzy, c-format 1303#, fuzzy, c-format
1310msgid "# messages of type %u discarded (client busy)" 1304msgid "# messages of type %u discarded (client busy)"
1311msgstr "# krypterade PONG-meddelanden mottagna" 1305msgstr "# krypterade PONG-meddelanden mottagna"
1312 1306
1313#: src/core/gnunet-service-core.c:986 1307#: src/core/gnunet-service-core.c:988
1314#, fuzzy 1308#, fuzzy
1315msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" 1309msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n"
1316msgstr "GNUnet-konfiguration" 1310msgstr "GNUnet-konfiguration"
1317 1311
1318#: src/core/gnunet-service-core.c:1007 1312#: src/core/gnunet-service-core.c:1009
1319#, fuzzy, c-format 1313#, fuzzy, c-format
1320msgid "Core service of `%s' ready.\n" 1314msgid "Core service of `%s' ready.\n"
1321msgstr "\"%s\" är inte en fil.\n" 1315msgstr "\"%s\" är inte en fil.\n"
1322 1316
1323#: src/core/gnunet-service-core_kx.c:615 1317#: src/core/gnunet-service-core_kx.c:617
1324msgid "# bytes encrypted" 1318msgid "# bytes encrypted"
1325msgstr "# byte krypterade" 1319msgstr "# byte krypterade"
1326 1320
1327#: src/core/gnunet-service-core_kx.c:675 1321#: src/core/gnunet-service-core_kx.c:677
1328msgid "# bytes decrypted" 1322msgid "# bytes decrypted"
1329msgstr "# byte dekrypterade" 1323msgstr "# byte dekrypterade"
1330 1324
1331#: src/core/gnunet-service-core_kx.c:777 1325#: src/core/gnunet-service-core_kx.c:779
1332#, fuzzy 1326#, fuzzy
1333msgid "# PAYLOAD dropped (out of order)" 1327msgid "# PAYLOAD dropped (out of order)"
1334msgstr "# byte kastade via UDP (utgående)" 1328msgstr "# byte kastade via UDP (utgående)"
1335 1329
1336#: src/core/gnunet-service-core_kx.c:827 1330#: src/core/gnunet-service-core_kx.c:829
1337msgid "# key exchanges initiated" 1331msgid "# key exchanges initiated"
1338msgstr "" 1332msgstr ""
1339 1333
1340#: src/core/gnunet-service-core_kx.c:889 1334#: src/core/gnunet-service-core_kx.c:891
1341msgid "# key exchanges stopped" 1335msgid "# key exchanges stopped"
1342msgstr "" 1336msgstr ""
1343 1337
1344#: src/core/gnunet-service-core_kx.c:923 1338#: src/core/gnunet-service-core_kx.c:925
1345#, fuzzy 1339#, fuzzy
1346msgid "# PING messages transmitted" 1340msgid "# PING messages transmitted"
1347msgstr "# PING-meddelanden skapade" 1341msgstr "# PING-meddelanden skapade"
1348 1342
1349#: src/core/gnunet-service-core_kx.c:990 1343#: src/core/gnunet-service-core_kx.c:992
1350msgid "# old ephemeral keys ignored" 1344msgid "# old ephemeral keys ignored"
1351msgstr "" 1345msgstr ""
1352 1346
1353#: src/core/gnunet-service-core_kx.c:1003 1347#: src/core/gnunet-service-core_kx.c:1005
1354#, fuzzy 1348#, fuzzy
1355msgid "# duplicate ephemeral keys ignored" 1349msgid "# duplicate ephemeral keys ignored"
1356msgstr "# krypterade PONG-meddelanden mottagna" 1350msgstr "# krypterade PONG-meddelanden mottagna"
1357 1351
1358#: src/core/gnunet-service-core_kx.c:1038 1352#: src/core/gnunet-service-core_kx.c:1040
1359#, fuzzy 1353#, fuzzy
1360msgid "# EPHEMERAL_KEYs rejected (bad signature)" 1354msgid "# EPHEMERAL_KEYs rejected (bad signature)"
1361msgstr "# PING-meddelanden skapade" 1355msgstr "# PING-meddelanden skapade"
1362 1356
1363#: src/core/gnunet-service-core_kx.c:1052 1357#: src/core/gnunet-service-core_kx.c:1054
1364#, c-format 1358#, c-format
1365msgid "" 1359msgid ""
1366"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match " 1360"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
1367"our system time (%llu not in [%llu,%llu]).\n" 1361"our system time (%llu not in [%llu,%llu]).\n"
1368msgstr "" 1362msgstr ""
1369 1363
1370#: src/core/gnunet-service-core_kx.c:1058 1364#: src/core/gnunet-service-core_kx.c:1060
1371#, fuzzy 1365#, fuzzy
1372msgid "# EPHEMERAL_KEY messages rejected due to time" 1366msgid "# EPHEMERAL_KEY messages rejected due to time"
1373msgstr "# PING-meddelanden skapade" 1367msgstr "# PING-meddelanden skapade"
1374 1368
1375#: src/core/gnunet-service-core_kx.c:1078 1369#: src/core/gnunet-service-core_kx.c:1080
1376#, fuzzy 1370#, fuzzy
1377msgid "# valid ephemeral keys received" 1371msgid "# valid ephemeral keys received"
1378msgstr "# krypterade PONG-meddelanden mottagna" 1372msgstr "# krypterade PONG-meddelanden mottagna"
1379 1373
1380#: src/core/gnunet-service-core_kx.c:1178 1374#: src/core/gnunet-service-core_kx.c:1180
1381#: src/transport/gnunet-service-transport_validation.c:1126 1375#: src/transport/gnunet-service-transport_validation.c:1128
1382#, fuzzy 1376#, fuzzy
1383msgid "# PING messages received" 1377msgid "# PING messages received"
1384msgstr "# PING-meddelanden skapade" 1378msgstr "# PING-meddelanden skapade"
1385 1379
1386#: src/core/gnunet-service-core_kx.c:1187 1380#: src/core/gnunet-service-core_kx.c:1189
1387#, fuzzy 1381#, fuzzy
1388msgid "# PING messages dropped (out of order)" 1382msgid "# PING messages dropped (out of order)"
1389msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 1383msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
1390 1384
1391#: src/core/gnunet-service-core_kx.c:1246 1385#: src/core/gnunet-service-core_kx.c:1248
1392#, fuzzy 1386#, fuzzy
1393msgid "# PONG messages created" 1387msgid "# PONG messages created"
1394msgstr "# PING-meddelanden skapade" 1388msgstr "# PING-meddelanden skapade"
1395 1389
1396#: src/core/gnunet-service-core_kx.c:1272 1390#: src/core/gnunet-service-core_kx.c:1274
1397#, fuzzy 1391#, fuzzy
1398msgid "# sessions terminated by timeout" 1392msgid "# sessions terminated by timeout"
1399msgstr "# byte kastade via TCP (utgående)" 1393msgstr "# byte kastade via TCP (utgående)"
1400 1394
1401#: src/core/gnunet-service-core_kx.c:1285 1395#: src/core/gnunet-service-core_kx.c:1287
1402#, fuzzy 1396#, fuzzy
1403msgid "# keepalive messages sent" 1397msgid "# keepalive messages sent"
1404msgstr "# PING-meddelanden i klartext skickade" 1398msgstr "# PING-meddelanden i klartext skickade"
1405 1399
1406#: src/core/gnunet-service-core_kx.c:1349 1400#: src/core/gnunet-service-core_kx.c:1351
1407#: src/transport/gnunet-service-transport_validation.c:1459 1401#: src/transport/gnunet-service-transport_validation.c:1461
1408#, fuzzy 1402#, fuzzy
1409msgid "# PONG messages received" 1403msgid "# PONG messages received"
1410msgstr "# krypterade PONG-meddelanden mottagna" 1404msgstr "# krypterade PONG-meddelanden mottagna"
1411 1405
1412#: src/core/gnunet-service-core_kx.c:1356 1406#: src/core/gnunet-service-core_kx.c:1358
1413#, fuzzy 1407#, fuzzy
1414msgid "# PONG messages dropped (connection down)" 1408msgid "# PONG messages dropped (connection down)"
1415msgstr "# krypterade PONG-meddelanden mottagna" 1409msgstr "# krypterade PONG-meddelanden mottagna"
1416 1410
1417#: src/core/gnunet-service-core_kx.c:1361 1411#: src/core/gnunet-service-core_kx.c:1363
1418#, fuzzy 1412#, fuzzy
1419msgid "# PONG messages dropped (out of order)" 1413msgid "# PONG messages dropped (out of order)"
1420msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 1414msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
1421 1415
1422#: src/core/gnunet-service-core_kx.c:1396 1416#: src/core/gnunet-service-core_kx.c:1398
1423#, fuzzy 1417#, fuzzy
1424msgid "# PONG messages decrypted" 1418msgid "# PONG messages decrypted"
1425msgstr "# PING-meddelanden skapade" 1419msgstr "# PING-meddelanden skapade"
1426 1420
1427#: src/core/gnunet-service-core_kx.c:1434 1421#: src/core/gnunet-service-core_kx.c:1436
1428#, fuzzy 1422#, fuzzy
1429msgid "# session keys confirmed via PONG" 1423msgid "# session keys confirmed via PONG"
1430msgstr "# sessionnycklar vägrade" 1424msgstr "# sessionnycklar vägrade"
1431 1425
1432#: src/core/gnunet-service-core_kx.c:1445 1426#: src/core/gnunet-service-core_kx.c:1447
1433#, fuzzy 1427#, fuzzy
1434msgid "# timeouts prevented via PONG" 1428msgid "# timeouts prevented via PONG"
1435msgstr "# byte mottogs via TCP" 1429msgstr "# byte mottogs via TCP"
1436 1430
1437#: src/core/gnunet-service-core_kx.c:1452 1431#: src/core/gnunet-service-core_kx.c:1454
1438#, fuzzy 1432#, fuzzy
1439msgid "# rekey operations confirmed via PONG" 1433msgid "# rekey operations confirmed via PONG"
1440msgstr "# sessionnycklar vägrade" 1434msgstr "# sessionnycklar vägrade"
1441 1435
1442#: src/core/gnunet-service-core_kx.c:1640 1436#: src/core/gnunet-service-core_kx.c:1642
1443#, fuzzy 1437#, fuzzy
1444msgid "# DATA message dropped (out of order)" 1438msgid "# DATA message dropped (out of order)"
1445msgstr "# byte kastade via UDP (utgående)" 1439msgstr "# byte kastade via UDP (utgående)"
1446 1440
1447#: src/core/gnunet-service-core_kx.c:1648 1441#: src/core/gnunet-service-core_kx.c:1650
1448#, c-format 1442#, c-format
1449msgid "" 1443msgid ""
1450"Session to peer `%s' went down due to key expiration (should not happen)\n" 1444"Session to peer `%s' went down due to key expiration (should not happen)\n"
1451msgstr "" 1445msgstr ""
1452 1446
1453#: src/core/gnunet-service-core_kx.c:1651 1447#: src/core/gnunet-service-core_kx.c:1653
1454#, fuzzy 1448#, fuzzy
1455msgid "# sessions terminated by key expiration" 1449msgid "# sessions terminated by key expiration"
1456msgstr "# byte kastade via TCP (utgående)" 1450msgstr "# byte kastade via TCP (utgående)"
1457 1451
1458#: src/core/gnunet-service-core_kx.c:1740 1452#: src/core/gnunet-service-core_kx.c:1742
1459#: src/core/gnunet-service-core_kx.c:1766 1453#: src/core/gnunet-service-core_kx.c:1768
1460#, fuzzy 1454#, fuzzy
1461msgid "# bytes dropped (duplicates)" 1455msgid "# bytes dropped (duplicates)"
1462msgstr "# byte kastade via UDP (utgående)" 1456msgstr "# byte kastade via UDP (utgående)"
1463 1457
1464#: src/core/gnunet-service-core_kx.c:1753 1458#: src/core/gnunet-service-core_kx.c:1755
1465#, fuzzy 1459#, fuzzy
1466msgid "# bytes dropped (out of sequence)" 1460msgid "# bytes dropped (out of sequence)"
1467msgstr "# byte kastade via UDP (utgående)" 1461msgstr "# byte kastade via UDP (utgående)"
1468 1462
1469#: src/core/gnunet-service-core_kx.c:1795 1463#: src/core/gnunet-service-core_kx.c:1797
1470#, fuzzy 1464#, fuzzy
1471msgid "# bytes dropped (ancient message)" 1465msgid "# bytes dropped (ancient message)"
1472msgstr "# byte kastade via UDP (utgående)" 1466msgstr "# byte kastade via UDP (utgående)"
1473 1467
1474#: src/core/gnunet-service-core_kx.c:1803 1468#: src/core/gnunet-service-core_kx.c:1805
1475#, fuzzy 1469#, fuzzy
1476msgid "# bytes of payload decrypted" 1470msgid "# bytes of payload decrypted"
1477msgstr "# byte dekrypterade" 1471msgstr "# byte dekrypterade"
1478 1472
1479#: src/core/gnunet-service-core_sessions.c:258 1473#: src/core/gnunet-service-core_sessions.c:260
1480#: src/core/gnunet-service-core_sessions.c:348 1474#: src/core/gnunet-service-core_sessions.c:350
1481#: src/dht/gnunet-service-dht_neighbours.c:739 1475#: src/dht/gnunet-service-dht_neighbours.c:741
1482#: src/dht/gnunet-service-dht_neighbours.c:802 1476#: src/dht/gnunet-service-dht_neighbours.c:804
1483#: src/fs/gnunet-service-fs_cp.c:613 src/fs/gnunet-service-fs_cp.c:1520 1477#: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
1484#: src/topology/gnunet-daemon-topology.c:615 1478#: src/topology/gnunet-daemon-topology.c:617
1485#: src/topology/gnunet-daemon-topology.c:717 1479#: src/topology/gnunet-daemon-topology.c:719
1486#: src/transport/gnunet-service-transport_neighbours.c:719 1480#: src/transport/gnunet-service-transport_neighbours.c:720
1487#: src/transport/gnunet-service-transport_neighbours.c:727 1481#: src/transport/gnunet-service-transport_neighbours.c:728
1488#, fuzzy 1482#, fuzzy
1489msgid "# peers connected" 1483msgid "# peers connected"
1490msgstr "# av anslutna parter" 1484msgstr "# av anslutna parter"
1491 1485
1492#: src/core/gnunet-service-core_sessions.c:294 1486#: src/core/gnunet-service-core_sessions.c:296
1493msgid "# type map refreshes sent" 1487msgid "# type map refreshes sent"
1494msgstr "" 1488msgstr ""
1495 1489
1496#: src/core/gnunet-service-core_sessions.c:414 1490#: src/core/gnunet-service-core_sessions.c:416
1497#, fuzzy 1491#, fuzzy
1498msgid "# outdated typemap confirmations received" 1492msgid "# outdated typemap confirmations received"
1499msgstr "Kunde inte spara konfiguration!" 1493msgstr "Kunde inte spara konfiguration!"
1500 1494
1501#: src/core/gnunet-service-core_sessions.c:431 1495#: src/core/gnunet-service-core_sessions.c:433
1502#, fuzzy 1496#, fuzzy
1503msgid "# valid typemap confirmations received" 1497msgid "# valid typemap confirmations received"
1504msgstr "Kunde inte spara konfiguration!" 1498msgstr "Kunde inte spara konfiguration!"
1505 1499
1506#: src/core/gnunet-service-core_typemap.c:167 1500#: src/core/gnunet-service-core_typemap.c:169
1507#: src/core/gnunet-service-core_typemap.c:179 1501#: src/core/gnunet-service-core_typemap.c:181
1508#, fuzzy 1502#, fuzzy
1509msgid "# type maps received" 1503msgid "# type maps received"
1510msgstr "# krypterade PONG-meddelanden mottagna" 1504msgstr "# krypterade PONG-meddelanden mottagna"
1511 1505
1512#: src/core/gnunet-service-core_typemap.c:210 1506#: src/core/gnunet-service-core_typemap.c:212
1513msgid "# updates to my type map" 1507msgid "# updates to my type map"
1514msgstr "" 1508msgstr ""
1515 1509
1516#: src/credential/credential_misc.c:86 1510#: src/credential/credential_misc.c:88
1517#, fuzzy, c-format 1511#, fuzzy, c-format
1518msgid "Unable to parse CRED record string `%s'\n" 1512msgid "Unable to parse CRED record string `%s'\n"
1519msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 1513msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
1520 1514
1521#: src/credential/gnunet-credential.c:262 src/namestore/gnunet-namestore.c:887 1515#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
1522#, fuzzy, c-format 1516#, fuzzy, c-format
1523msgid "Ego `%s' not known to identity service\n" 1517msgid "Ego `%s' not known to identity service\n"
1524msgstr "\"%s\": okänd tjänst: %s\n" 1518msgstr "\"%s\": okänd tjänst: %s\n"
1525 1519
1526#: src/credential/gnunet-credential.c:278 1520#: src/credential/gnunet-credential.c:280
1527#: src/credential/gnunet-credential.c:432 1521#: src/credential/gnunet-credential.c:434
1528#, fuzzy, c-format 1522#, fuzzy, c-format
1529msgid "Issuer public key `%s' is not well-formed\n" 1523msgid "Issuer public key `%s' is not well-formed\n"
1530msgstr "Ogiltigt argument: \"%s\"\n" 1524msgstr "Ogiltigt argument: \"%s\"\n"
1531 1525
1532#: src/credential/gnunet-credential.c:359 1526#: src/credential/gnunet-credential.c:361
1533#: src/credential/gnunet-credential.c:421 1527#: src/credential/gnunet-credential.c:423
1534#, fuzzy, c-format 1528#, fuzzy, c-format
1535msgid "Issuer public key not well-formed\n" 1529msgid "Issuer public key not well-formed\n"
1536msgstr "Ogiltigt argument: \"%s\"\n" 1530msgstr "Ogiltigt argument: \"%s\"\n"
1537 1531
1538#: src/credential/gnunet-credential.c:370 1532#: src/credential/gnunet-credential.c:372
1539#: src/credential/gnunet-credential.c:442 1533#: src/credential/gnunet-credential.c:444
1540#, fuzzy, c-format 1534#, fuzzy, c-format
1541msgid "Failed to connect to CREDENTIAL\n" 1535msgid "Failed to connect to CREDENTIAL\n"
1542msgstr "Misslyckades att ansluta till gnunetd.\n" 1536msgstr "Misslyckades att ansluta till gnunetd.\n"
1543 1537
1544#: src/credential/gnunet-credential.c:377 1538#: src/credential/gnunet-credential.c:379
1545#, c-format 1539#, c-format
1546msgid "You must provide issuer the attribute\n" 1540msgid "You must provide issuer the attribute\n"
1547msgstr "" 1541msgstr ""
1548 1542
1549#: src/credential/gnunet-credential.c:385 1543#: src/credential/gnunet-credential.c:387
1550#, c-format 1544#, c-format
1551msgid "ego required\n" 1545msgid "ego required\n"
1552msgstr "" 1546msgstr ""
1553 1547
1554#: src/credential/gnunet-credential.c:401 1548#: src/credential/gnunet-credential.c:403
1555#, c-format 1549#, c-format
1556msgid "Subject public key needed\n" 1550msgid "Subject public key needed\n"
1557msgstr "" 1551msgstr ""
1558 1552
1559#: src/credential/gnunet-credential.c:412 1553#: src/credential/gnunet-credential.c:414
1560#, fuzzy, c-format 1554#, fuzzy, c-format
1561msgid "Subject public key `%s' is not well-formed\n" 1555msgid "Subject public key `%s' is not well-formed\n"
1562msgstr "Ogiltigt argument: \"%s\"\n" 1556msgstr "Ogiltigt argument: \"%s\"\n"
1563 1557
1564#: src/credential/gnunet-credential.c:449 1558#: src/credential/gnunet-credential.c:451
1565#, c-format 1559#, c-format
1566msgid "You must provide issuer and subject attributes\n" 1560msgid "You must provide issuer and subject attributes\n"
1567msgstr "" 1561msgstr ""
1568 1562
1569#: src/credential/gnunet-credential.c:502 1563#: src/credential/gnunet-credential.c:504
1570#, c-format 1564#, c-format
1571msgid "Issuer ego required\n" 1565msgid "Issuer ego required\n"
1572msgstr "" 1566msgstr ""
1573 1567
1574#: src/credential/gnunet-credential.c:514 1568#: src/credential/gnunet-credential.c:516
1575#, c-format 1569#, c-format
1576msgid "Please specify name to lookup, subject key and issuer key!\n" 1570msgid "Please specify name to lookup, subject key and issuer key!\n"
1577msgstr "" 1571msgstr ""
1578 1572
1579#: src/credential/gnunet-credential.c:534 1573#: src/credential/gnunet-credential.c:536
1580msgid "create credential" 1574msgid "create credential"
1581msgstr "" 1575msgstr ""
1582 1576
1583#: src/credential/gnunet-credential.c:538 1577#: src/credential/gnunet-credential.c:540
1584msgid "verify credential against attribute" 1578msgid "verify credential against attribute"
1585msgstr "" 1579msgstr ""
1586 1580
1587#: src/credential/gnunet-credential.c:543 1581#: src/credential/gnunet-credential.c:545
1588#, fuzzy 1582#, fuzzy
1589msgid "The public key of the subject to lookup the credential for" 1583msgid "The public key of the subject to lookup the credential for"
1590msgstr "ange prioritet för innehållet" 1584msgstr "ange prioritet för innehållet"
1591 1585
1592#: src/credential/gnunet-credential.c:548 1586#: src/credential/gnunet-credential.c:550
1593msgid "The name of the credential presented by the subject" 1587msgid "The name of the credential presented by the subject"
1594msgstr "" 1588msgstr ""
1595 1589
1596#: src/credential/gnunet-credential.c:553 1590#: src/credential/gnunet-credential.c:555
1597#, fuzzy 1591#, fuzzy
1598msgid "The public key of the authority to verify the credential against" 1592msgid "The public key of the authority to verify the credential against"
1599msgstr "ange prioritet för innehållet" 1593msgstr "ange prioritet för innehållet"
1600 1594
1601#: src/credential/gnunet-credential.c:558 1595#: src/credential/gnunet-credential.c:560
1602#, fuzzy 1596#, fuzzy
1603msgid "The ego to use" 1597msgid "The ego to use"
1604msgstr "meddelandestorlek" 1598msgstr "meddelandestorlek"
1605 1599
1606#: src/credential/gnunet-credential.c:563 1600#: src/credential/gnunet-credential.c:565
1607msgid "The issuer attribute to verify against or to issue" 1601msgid "The issuer attribute to verify against or to issue"
1608msgstr "" 1602msgstr ""
1609 1603
1610#: src/credential/gnunet-credential.c:568 1604#: src/credential/gnunet-credential.c:570
1611msgid "The time to live for the credential" 1605msgid "The time to live for the credential"
1612msgstr "" 1606msgstr ""
1613 1607
1614#: src/credential/gnunet-credential.c:572 1608#: src/credential/gnunet-credential.c:574
1615msgid "collect credentials" 1609msgid "collect credentials"
1616msgstr "" 1610msgstr ""
1617 1611
1618#: src/credential/gnunet-credential.c:586 1612#: src/credential/gnunet-credential.c:588
1619#, fuzzy 1613#, fuzzy
1620msgid "GNUnet credential resolver tool" 1614msgid "GNUnet credential resolver tool"
1621msgstr "Spåra GNUnets nätverkstopologi." 1615msgstr "Spåra GNUnets nätverkstopologi."
1622 1616
1623#: src/credential/gnunet-service-credential.c:1136 src/gns/gnunet-gns.c:183 1617#: src/credential/gnunet-service-credential.c:1138 src/gns/gnunet-gns.c:185
1624#: src/gns/gnunet-gns-helper-service-w32.c:725 1618#: src/gns/gnunet-gns-helper-service-w32.c:727
1625#, fuzzy, c-format 1619#, fuzzy, c-format
1626msgid "Failed to connect to GNS\n" 1620msgid "Failed to connect to GNS\n"
1627msgstr "Misslyckades att ansluta till gnunetd.\n" 1621msgstr "Misslyckades att ansluta till gnunetd.\n"
1628 1622
1629#: src/credential/gnunet-service-credential.c:1142 1623#: src/credential/gnunet-service-credential.c:1144
1630#: src/namestore/gnunet-namestore.c:913 1624#: src/namestore/gnunet-namestore.c:1019
1631#: src/namestore/gnunet-namestore-fcfsd.c:1136 1625#: src/namestore/gnunet-namestore-fcfsd.c:1138
1632#, fuzzy, c-format 1626#, fuzzy, c-format
1633msgid "Failed to connect to namestore\n" 1627msgid "Failed to connect to namestore\n"
1634msgstr "Misslyckades att ansluta till gnunetd.\n" 1628msgstr "Misslyckades att ansluta till gnunetd.\n"
1635 1629
1636#: src/credential/plugin_gnsrecord_credential.c:184 1630#: src/credential/plugin_gnsrecord_credential.c:186
1637#, fuzzy, c-format 1631#, fuzzy, c-format
1638msgid "Unable to parse ATTR record string `%s'\n" 1632msgid "Unable to parse ATTR record string `%s'\n"
1639msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 1633msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
1640 1634
1641#: src/datacache/datacache.c:117 src/datacache/datacache.c:309 1635#: src/datacache/datacache.c:119 src/datacache/datacache.c:311
1642#: src/datastore/gnunet-service-datastore.c:755 1636#: src/datastore/gnunet-service-datastore.c:757
1643#, fuzzy 1637#, fuzzy
1644msgid "# bytes stored" 1638msgid "# bytes stored"
1645msgstr "# byte krypterade" 1639msgstr "# byte krypterade"
1646 1640
1647#: src/datacache/datacache.c:121 src/datacache/datacache.c:313 1641#: src/datacache/datacache.c:123 src/datacache/datacache.c:315
1648#, fuzzy 1642#, fuzzy
1649msgid "# items stored" 1643msgid "# items stored"
1650msgstr "# byte krypterade" 1644msgstr "# byte krypterade"
1651 1645
1652#: src/datacache/datacache.c:204 1646#: src/datacache/datacache.c:206
1653#, c-format 1647#, c-format
1654msgid "Loading `%s' datacache plugin\n" 1648msgid "Loading `%s' datacache plugin\n"
1655msgstr "" 1649msgstr ""
1656 1650
1657#: src/datacache/datacache.c:215 1651#: src/datacache/datacache.c:217
1658#, fuzzy, c-format 1652#, fuzzy, c-format
1659msgid "Failed to load datacache plugin for `%s'\n" 1653msgid "Failed to load datacache plugin for `%s'\n"
1660msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 1654msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
1661 1655
1662#: src/datacache/datacache.c:343 1656#: src/datacache/datacache.c:345
1663#, fuzzy 1657#, fuzzy
1664msgid "# requests received" 1658msgid "# requests received"
1665msgstr "# byte mottogs via TCP" 1659msgstr "# byte mottogs via TCP"
1666 1660
1667#: src/datacache/datacache.c:353 1661#: src/datacache/datacache.c:355
1668msgid "# requests filtered by bloom filter" 1662msgid "# requests filtered by bloom filter"
1669msgstr "" 1663msgstr ""
1670 1664
1671#: src/datacache/datacache.c:383 1665#: src/datacache/datacache.c:385
1672#, fuzzy 1666#, fuzzy
1673msgid "# requests for random value received" 1667msgid "# requests for random value received"
1674msgstr "# byte mottogs via TCP" 1668msgstr "# byte mottogs via TCP"
1675 1669
1676#: src/datacache/datacache.c:415 1670#: src/datacache/datacache.c:417
1677#, fuzzy 1671#, fuzzy
1678msgid "# proximity search requests received" 1672msgid "# proximity search requests received"
1679msgstr "# klartext PONG-meddelanden mottagna" 1673msgstr "# klartext PONG-meddelanden mottagna"
1680 1674
1681#: src/datacache/plugin_datacache_heap.c:551 1675#: src/datacache/plugin_datacache_heap.c:553
1682msgid "Heap datacache running\n" 1676msgid "Heap datacache running\n"
1683msgstr "" 1677msgstr ""
1684 1678
1685#: src/datacache/plugin_datacache_sqlite.c:116 1679#: src/datacache/plugin_datacache_sqlite.c:118
1686#: src/datacache/plugin_datacache_sqlite.c:125 1680#: src/datacache/plugin_datacache_sqlite.c:127
1687#: src/datastore/plugin_datastore_mysql.c:890 1681#: src/datastore/plugin_datastore_mysql.c:892
1688#: src/datastore/plugin_datastore_sqlite.c:56 1682#: src/datastore/plugin_datastore_sqlite.c:58
1689#: src/datastore/plugin_datastore_sqlite.c:64 src/my/my.c:79 src/my/my.c:91 1683#: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
1690#: src/mysql/mysql.c:40 src/mysql/mysql.c:47 1684#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
1691#: src/namecache/plugin_namecache_sqlite.c:50 1685#: src/namecache/plugin_namecache_sqlite.c:52
1692#: src/namestore/plugin_namestore_sqlite.c:51 1686#: src/namestore/plugin_namestore_sqlite.c:53
1693#: src/peerstore/plugin_peerstore_sqlite.c:50 1687#: src/peerstore/plugin_peerstore_sqlite.c:52
1694#: src/psycstore/plugin_psycstore_mysql.c:60 1688#: src/reclaim/plugin_reclaim_sqlite.c:52
1695#: src/reclaim/plugin_reclaim_sqlite.c:50 1689#: src/testbed/generate-underlay-topology.c:47
1696#: src/testbed/generate-underlay-topology.c:45 1690#: src/testbed/gnunet-daemon-latency-logger.c:52
1697#: src/testbed/gnunet-daemon-latency-logger.c:50 1691#: src/testbed/gnunet-daemon-testbed-underlay.c:56
1698#: src/testbed/gnunet-daemon-testbed-underlay.c:54 1692#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
1699#: src/testbed/testbed_api_hosts.c:67 src/util/crypto_ecc.c:51 1693#: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
1700#: src/util/crypto_ecc_setup.c:39 src/util/crypto_mpi.c:37 1694#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
1701#: src/include/gnunet_common.h:816 src/include/gnunet_common.h:825 1695#: src/scalarproduct/scalarproduct.h:35
1702#: src/scalarproduct/scalarproduct.h:33
1703#, c-format 1696#, c-format
1704msgid "`%s' failed at %s:%d with error: %s\n" 1697msgid "`%s' failed at %s:%d with error: %s\n"
1705msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n" 1698msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
1706 1699
1707#: src/datacache/plugin_datacache_sqlite.c:861 1700#: src/datacache/plugin_datacache_sqlite.c:863
1708#: src/datastore/plugin_datastore_sqlite.c:506 1701#: src/datastore/plugin_datastore_sqlite.c:508
1709#: src/namecache/plugin_namecache_sqlite.c:327 1702#: src/namecache/plugin_namecache_sqlite.c:229
1710#: src/namestore/plugin_namestore_sqlite.c:262 1703#: src/namestore/plugin_namestore_sqlite.c:265
1711#: src/reclaim/plugin_reclaim_sqlite.c:334 1704#: src/reclaim/plugin_reclaim_sqlite.c:336
1712msgid "Tried to close sqlite without finalizing all prepared statements.\n" 1705msgid "Tried to close sqlite without finalizing all prepared statements.\n"
1713msgstr "" 1706msgstr ""
1714 1707
1715#: src/datastore/datastore_api.c:346 1708#: src/datastore/datastore_api.c:348
1716#, fuzzy 1709#, fuzzy
1717msgid "DATASTORE disconnected" 1710msgid "DATASTORE disconnected"
1718msgstr "\"%s\" ansluten till \"%s\".\n" 1711msgstr "\"%s\" ansluten till \"%s\".\n"
1719 1712
1720#: src/datastore/datastore_api.c:466 1713#: src/datastore/datastore_api.c:468
1721#, fuzzy 1714#, fuzzy
1722msgid "Disconnected from DATASTORE" 1715msgid "Disconnected from DATASTORE"
1723msgstr "\"%s\" ansluten till \"%s\".\n" 1716msgstr "\"%s\" ansluten till \"%s\".\n"
1724 1717
1725#: src/datastore/datastore_api.c:567 1718#: src/datastore/datastore_api.c:569
1726msgid "# queue overflows" 1719msgid "# queue overflows"
1727msgstr "" 1720msgstr ""
1728 1721
1729#: src/datastore/datastore_api.c:597 1722#: src/datastore/datastore_api.c:599
1730#, fuzzy 1723#, fuzzy
1731msgid "# queue entries created" 1724msgid "# queue entries created"
1732msgstr "# PING-meddelanden skapade" 1725msgstr "# PING-meddelanden skapade"
1733 1726
1734#: src/datastore/datastore_api.c:758 1727#: src/datastore/datastore_api.c:760
1735#, fuzzy 1728#, fuzzy
1736msgid "# status messages received" 1729msgid "# status messages received"
1737msgstr "# krypterade PONG-meddelanden mottagna" 1730msgstr "# krypterade PONG-meddelanden mottagna"
1738 1731
1739#: src/datastore/datastore_api.c:812 1732#: src/datastore/datastore_api.c:814
1740#, fuzzy 1733#, fuzzy
1741msgid "# Results received" 1734msgid "# Results received"
1742msgstr "# byte mottogs via TCP" 1735msgstr "# byte mottogs via TCP"
1743 1736
1744#: src/datastore/datastore_api.c:918 1737#: src/datastore/datastore_api.c:920
1745#, fuzzy 1738#, fuzzy
1746msgid "# datastore connections (re)created" 1739msgid "# datastore connections (re)created"
1747msgstr "Nätverksanslutning" 1740msgstr "Nätverksanslutning"
1748 1741
1749#: src/datastore/datastore_api.c:1032 1742#: src/datastore/datastore_api.c:1034
1750msgid "# PUT requests executed" 1743msgid "# PUT requests executed"
1751msgstr "" 1744msgstr ""
1752 1745
1753#: src/datastore/datastore_api.c:1093 1746#: src/datastore/datastore_api.c:1095
1754msgid "# RESERVE requests executed" 1747msgid "# RESERVE requests executed"
1755msgstr "" 1748msgstr ""
1756 1749
1757#: src/datastore/datastore_api.c:1158 1750#: src/datastore/datastore_api.c:1160
1758msgid "# RELEASE RESERVE requests executed" 1751msgid "# RELEASE RESERVE requests executed"
1759msgstr "" 1752msgstr ""
1760 1753
1761#: src/datastore/datastore_api.c:1236 1754#: src/datastore/datastore_api.c:1238
1762msgid "# REMOVE requests executed" 1755msgid "# REMOVE requests executed"
1763msgstr "" 1756msgstr ""
1764 1757
1765#: src/datastore/datastore_api.c:1296 1758#: src/datastore/datastore_api.c:1298
1766msgid "# GET REPLICATION requests executed" 1759msgid "# GET REPLICATION requests executed"
1767msgstr "" 1760msgstr ""
1768 1761
1769#: src/datastore/datastore_api.c:1358 1762#: src/datastore/datastore_api.c:1360
1770msgid "# GET ZERO ANONYMITY requests executed" 1763msgid "# GET ZERO ANONYMITY requests executed"
1771msgstr "" 1764msgstr ""
1772 1765
1773#: src/datastore/datastore_api.c:1439 1766#: src/datastore/datastore_api.c:1441
1774msgid "# GET requests executed" 1767msgid "# GET requests executed"
1775msgstr "" 1768msgstr ""
1776 1769
1777#: src/datastore/gnunet-datastore.c:187 1770#: src/datastore/gnunet-datastore.c:189
1778#, c-format 1771#, c-format
1779msgid "Dumped %<PRIu64> records\n" 1772msgid "Dumped %<PRIu64> records\n"
1780msgstr "" 1773msgstr ""
1781 1774
1782#: src/datastore/gnunet-datastore.c:215 src/datastore/gnunet-datastore.c:227 1775#: src/datastore/gnunet-datastore.c:217 src/datastore/gnunet-datastore.c:229
1783#, c-format 1776#, c-format
1784msgid "Short write to file: %zd bytes expecting %zd\n" 1777msgid "Short write to file: %zd bytes expecting %zd\n"
1785msgstr "" 1778msgstr ""
1786 1779
1787#: src/datastore/gnunet-datastore.c:259 1780#: src/datastore/gnunet-datastore.c:261
1788#, fuzzy 1781#, fuzzy
1789msgid "Error queueing datastore GET operation\n" 1782msgid "Error queueing datastore GET operation\n"
1790msgstr "Fel vid skapandet av användare" 1783msgstr "Fel vid skapandet av användare"
1791 1784
1792#: src/datastore/gnunet-datastore.c:285 src/datastore/gnunet-datastore.c:410 1785#: src/datastore/gnunet-datastore.c:287 src/datastore/gnunet-datastore.c:412
1793#, fuzzy, c-format 1786#, fuzzy, c-format
1794msgid "Unable to open dump file: %s\n" 1787msgid "Unable to open dump file: %s\n"
1795msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 1788msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
1796 1789
1797#: src/datastore/gnunet-datastore.c:324 1790#: src/datastore/gnunet-datastore.c:326
1798#, fuzzy, c-format 1791#, fuzzy, c-format
1799msgid "Failed to store item: %s, aborting\n" 1792msgid "Failed to store item: %s, aborting\n"
1800msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 1793msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
1801 1794
1802#: src/datastore/gnunet-datastore.c:338 1795#: src/datastore/gnunet-datastore.c:340
1803#, c-format 1796#, c-format
1804msgid "Inserted %<PRIu64> records\n" 1797msgid "Inserted %<PRIu64> records\n"
1805msgstr "" 1798msgstr ""
1806 1799
1807#: src/datastore/gnunet-datastore.c:347 src/datastore/gnunet-datastore.c:361 1800#: src/datastore/gnunet-datastore.c:349 src/datastore/gnunet-datastore.c:363
1808#, c-format 1801#, c-format
1809msgid "Short read from file: %zd bytes expecting %zd\n" 1802msgid "Short read from file: %zd bytes expecting %zd\n"
1810msgstr "" 1803msgstr ""
1811 1804
1812#: src/datastore/gnunet-datastore.c:387 1805#: src/datastore/gnunet-datastore.c:389
1813#, fuzzy 1806#, fuzzy
1814msgid "Error queueing datastore PUT operation\n" 1807msgid "Error queueing datastore PUT operation\n"
1815msgstr "Fel vid skapandet av användare" 1808msgstr "Fel vid skapandet av användare"
1816 1809
1817#: src/datastore/gnunet-datastore.c:430 1810#: src/datastore/gnunet-datastore.c:432
1818msgid "Input file is not of a supported format\n" 1811msgid "Input file is not of a supported format\n"
1819msgstr "" 1812msgstr ""
1820 1813
1821#: src/datastore/gnunet-datastore.c:456 1814#: src/datastore/gnunet-datastore.c:458
1822#, fuzzy 1815#, fuzzy
1823msgid "Failed connecting to the datastore.\n" 1816msgid "Failed connecting to the datastore.\n"
1824msgstr "Misslyckades att ansluta till gnunetd.\n" 1817msgstr "Misslyckades att ansluta till gnunetd.\n"
1825 1818
1826#: src/datastore/gnunet-datastore.c:468 1819#: src/datastore/gnunet-datastore.c:470
1827#, c-format 1820#, c-format
1828msgid "Please choose at least one operation: %s, %s\n" 1821msgid "Please choose at least one operation: %s, %s\n"
1829msgstr "" 1822msgstr ""
1830 1823
1831#: src/datastore/gnunet-datastore.c:491 1824#: src/datastore/gnunet-datastore.c:493
1832#, fuzzy 1825#, fuzzy
1833msgid "Dump all records from the datastore" 1826msgid "Dump all records from the datastore"
1834msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n" 1827msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n"
1835 1828
1836#: src/datastore/gnunet-datastore.c:495 1829#: src/datastore/gnunet-datastore.c:497
1837#, fuzzy 1830#, fuzzy
1838msgid "Insert records into the datastore" 1831msgid "Insert records into the datastore"
1839msgstr "# byte krypterade" 1832msgstr "# byte krypterade"
1840 1833
1841#: src/datastore/gnunet-datastore.c:500 1834#: src/datastore/gnunet-datastore.c:502
1842msgid "File to dump or insert" 1835msgid "File to dump or insert"
1843msgstr "" 1836msgstr ""
1844 1837
1845#: src/datastore/gnunet-datastore.c:509 1838#: src/datastore/gnunet-datastore.c:511
1846#, fuzzy 1839#, fuzzy
1847msgid "Manipulate GNUnet datastore" 1840msgid "Manipulate GNUnet datastore"
1848msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" 1841msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
1849 1842
1850#: src/datastore/gnunet-service-datastore.c:336 1843#: src/datastore/gnunet-service-datastore.c:338
1851#, fuzzy 1844#, fuzzy
1852msgid "# bytes expired" 1845msgid "# bytes expired"
1853msgstr "# byte mottogs via TCP" 1846msgstr "# byte mottogs via TCP"
1854 1847
1855#: src/datastore/gnunet-service-datastore.c:418 1848#: src/datastore/gnunet-service-datastore.c:420
1856msgid "# bytes purged (low-priority)" 1849msgid "# bytes purged (low-priority)"
1857msgstr "" 1850msgstr ""
1858 1851
1859#: src/datastore/gnunet-service-datastore.c:560 1852#: src/datastore/gnunet-service-datastore.c:562
1860msgid "# results found" 1853msgid "# results found"
1861msgstr "" 1854msgstr ""
1862 1855
1863#: src/datastore/gnunet-service-datastore.c:601 1856#: src/datastore/gnunet-service-datastore.c:603
1864#, c-format 1857#, c-format
1865msgid "" 1858msgid ""
1866"Insufficient space (%llu bytes are available) to satisfy RESERVE request for " 1859"Insufficient space (%llu bytes are available) to satisfy RESERVE request for "
1867"%llu bytes\n" 1860"%llu bytes\n"
1868msgstr "" 1861msgstr ""
1869 1862
1870#: src/datastore/gnunet-service-datastore.c:612 1863#: src/datastore/gnunet-service-datastore.c:614
1871#, c-format 1864#, c-format
1872msgid "" 1865msgid ""
1873"The requested amount (%llu bytes) is larger than the cache size (%llu " 1866"The requested amount (%llu bytes) is larger than the cache size (%llu "
1874"bytes)\n" 1867"bytes)\n"
1875msgstr "" 1868msgstr ""
1876 1869
1877#: src/datastore/gnunet-service-datastore.c:618 1870#: src/datastore/gnunet-service-datastore.c:620
1878msgid "" 1871msgid ""
1879"Insufficient space to satisfy request and requested amount is larger than " 1872"Insufficient space to satisfy request and requested amount is larger than "
1880"cache size" 1873"cache size"
1881msgstr "" 1874msgstr ""
1882 1875
1883#: src/datastore/gnunet-service-datastore.c:625 1876#: src/datastore/gnunet-service-datastore.c:627
1884msgid "Insufficient space to satisfy request" 1877msgid "Insufficient space to satisfy request"
1885msgstr "" 1878msgstr ""
1886 1879
1887#: src/datastore/gnunet-service-datastore.c:632 1880#: src/datastore/gnunet-service-datastore.c:634
1888#: src/datastore/gnunet-service-datastore.c:687 1881#: src/datastore/gnunet-service-datastore.c:689
1889#: src/datastore/gnunet-service-datastore.c:835 1882#: src/datastore/gnunet-service-datastore.c:837
1890#: src/datastore/gnunet-service-datastore.c:1467 1883#: src/datastore/gnunet-service-datastore.c:1469
1891msgid "# reserved" 1884msgid "# reserved"
1892msgstr "" 1885msgstr ""
1893 1886
1894#: src/datastore/gnunet-service-datastore.c:705 1887#: src/datastore/gnunet-service-datastore.c:707
1895msgid "Could not find matching reservation" 1888msgid "Could not find matching reservation"
1896msgstr "" 1889msgstr ""
1897 1890
1898#: src/datastore/gnunet-service-datastore.c:771 1891#: src/datastore/gnunet-service-datastore.c:773
1899#, c-format 1892#, c-format
1900msgid "Need %llu bytes more space (%llu allowed, using %llu)\n" 1893msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
1901msgstr "" 1894msgstr ""
1902 1895
1903#: src/datastore/gnunet-service-datastore.c:874 1896#: src/datastore/gnunet-service-datastore.c:876
1904#, fuzzy 1897#, fuzzy
1905msgid "# GET requests received" 1898msgid "# GET requests received"
1906msgstr "# byte mottogs via TCP" 1899msgstr "# byte mottogs via TCP"
1907 1900
1908#: src/datastore/gnunet-service-datastore.c:905 1901#: src/datastore/gnunet-service-datastore.c:907
1909#, fuzzy 1902#, fuzzy
1910msgid "# GET KEY requests received" 1903msgid "# GET KEY requests received"
1911msgstr "# byte mottogs via TCP" 1904msgstr "# byte mottogs via TCP"
1912 1905
1913#: src/datastore/gnunet-service-datastore.c:918 1906#: src/datastore/gnunet-service-datastore.c:920
1914msgid "# requests filtered by bloomfilter" 1907msgid "# requests filtered by bloomfilter"
1915msgstr "" 1908msgstr ""
1916 1909
1917#: src/datastore/gnunet-service-datastore.c:954 1910#: src/datastore/gnunet-service-datastore.c:956
1918msgid "# GET REPLICATION requests received" 1911msgid "# GET REPLICATION requests received"
1919msgstr "" 1912msgstr ""
1920 1913
1921#: src/datastore/gnunet-service-datastore.c:987 1914#: src/datastore/gnunet-service-datastore.c:989
1922msgid "# GET ZERO ANONYMITY requests received" 1915msgid "# GET ZERO ANONYMITY requests received"
1923msgstr "" 1916msgstr ""
1924 1917
1925#: src/datastore/gnunet-service-datastore.c:1034 1918#: src/datastore/gnunet-service-datastore.c:1036
1926#, fuzzy 1919#, fuzzy
1927msgid "Content not found" 1920msgid "Content not found"
1928msgstr "Kommando \"%s\" hittades inte!\n" 1921msgstr "Kommando \"%s\" hittades inte!\n"
1929 1922
1930#: src/datastore/gnunet-service-datastore.c:1041 1923#: src/datastore/gnunet-service-datastore.c:1043
1931msgid "# bytes removed (explicit request)" 1924msgid "# bytes removed (explicit request)"
1932msgstr "" 1925msgstr ""
1933 1926
1934#: src/datastore/gnunet-service-datastore.c:1086 1927#: src/datastore/gnunet-service-datastore.c:1088
1935#, fuzzy 1928#, fuzzy
1936msgid "# REMOVE requests received" 1929msgid "# REMOVE requests received"
1937msgstr "# byte mottogs via TCP" 1930msgstr "# byte mottogs via TCP"
1938 1931
1939#: src/datastore/gnunet-service-datastore.c:1135 1932#: src/datastore/gnunet-service-datastore.c:1137
1940#, c-format 1933#, c-format
1941msgid "" 1934msgid ""
1942"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n" 1935"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
1943msgstr "" 1936msgstr ""
1944 1937
1945#: src/datastore/gnunet-service-datastore.c:1141 1938#: src/datastore/gnunet-service-datastore.c:1143
1946#: src/datastore/gnunet-service-datastore.c:1316 1939#: src/datastore/gnunet-service-datastore.c:1318
1947#, c-format 1940#, c-format
1948msgid "New payload: %lld\n" 1941msgid "New payload: %lld\n"
1949msgstr "" 1942msgstr ""
1950 1943
1951#: src/datastore/gnunet-service-datastore.c:1195 1944#: src/datastore/gnunet-service-datastore.c:1197
1952#, c-format 1945#, c-format
1953msgid "Loading `%s' datastore plugin\n" 1946msgid "Loading `%s' datastore plugin\n"
1954msgstr "" 1947msgstr ""
1955 1948
1956#: src/datastore/gnunet-service-datastore.c:1207 1949#: src/datastore/gnunet-service-datastore.c:1209
1957#, fuzzy, c-format 1950#, fuzzy, c-format
1958msgid "Failed to load datastore plugin for `%s'\n" 1951msgid "Failed to load datastore plugin for `%s'\n"
1959msgstr "Kunde inte slå upp \"%s\": %s\n" 1952msgstr "Kunde inte slå upp \"%s\": %s\n"
1960 1953
1961#: src/datastore/gnunet-service-datastore.c:1267 1954#: src/datastore/gnunet-service-datastore.c:1269
1962msgid "Bloomfilter construction complete.\n" 1955msgid "Bloomfilter construction complete.\n"
1963msgstr "" 1956msgstr ""
1964 1957
1965#: src/datastore/gnunet-service-datastore.c:1323 1958#: src/datastore/gnunet-service-datastore.c:1325
1966msgid "Rebuilding bloomfilter. Please be patient.\n" 1959msgid "Rebuilding bloomfilter. Please be patient.\n"
1967msgstr "" 1960msgstr ""
1968 1961
1969#: src/datastore/gnunet-service-datastore.c:1334 1962#: src/datastore/gnunet-service-datastore.c:1336
1970msgid "Plugin does not support get_keys function. Please fix!\n" 1963msgid "Plugin does not support get_keys function. Please fix!\n"
1971msgstr "" 1964msgstr ""
1972 1965
1973#: src/datastore/gnunet-service-datastore.c:1504 1966#: src/datastore/gnunet-service-datastore.c:1506
1974#, fuzzy, c-format 1967#, fuzzy, c-format
1975msgid "# bytes used in file-sharing datastore `%s'" 1968msgid "# bytes used in file-sharing datastore `%s'"
1976msgstr "# byte krypterade" 1969msgstr "# byte krypterade"
1977 1970
1978#: src/datastore/gnunet-service-datastore.c:1520 1971#: src/datastore/gnunet-service-datastore.c:1522
1979msgid "# quota" 1972msgid "# quota"
1980msgstr "" 1973msgstr ""
1981 1974
1982#: src/datastore/gnunet-service-datastore.c:1525 1975#: src/datastore/gnunet-service-datastore.c:1527
1983msgid "# cache size" 1976msgid "# cache size"
1984msgstr "" 1977msgstr ""
1985 1978
1986#: src/datastore/gnunet-service-datastore.c:1541 1979#: src/datastore/gnunet-service-datastore.c:1543
1987#, c-format 1980#, c-format
1988msgid "Could not use specified filename `%s' for bloomfilter.\n" 1981msgid "Could not use specified filename `%s' for bloomfilter.\n"
1989msgstr "" 1982msgstr ""
1990 1983
1991#: src/datastore/gnunet-service-datastore.c:1559 1984#: src/datastore/gnunet-service-datastore.c:1561
1992#: src/datastore/gnunet-service-datastore.c:1575 1985#: src/datastore/gnunet-service-datastore.c:1577
1993#, fuzzy, c-format 1986#, fuzzy, c-format
1994msgid "Failed to remove bogus bloomfilter file `%s'\n" 1987msgid "Failed to remove bogus bloomfilter file `%s'\n"
1995msgstr "Kunde inte spara konfigurationsfil \"%s\":" 1988msgstr "Kunde inte spara konfigurationsfil \"%s\":"
1996 1989
1997#: src/datastore/gnunet-service-datastore.c:1607 1990#: src/datastore/gnunet-service-datastore.c:1609
1998#, fuzzy 1991#, fuzzy
1999msgid "Failed to initialize bloomfilter.\n" 1992msgid "Failed to initialize bloomfilter.\n"
2000msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 1993msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
2001 1994
2002#: src/datastore/plugin_datastore_heap.c:891 1995#: src/datastore/plugin_datastore_heap.c:893
2003msgid "Heap database running\n" 1996msgid "Heap database running\n"
2004msgstr "" 1997msgstr ""
2005 1998
2006#: src/datastore/plugin_datastore_mysql.c:369 1999#: src/datastore/plugin_datastore_mysql.c:371
2007#: src/datastore/plugin_datastore_mysql.c:421 2000#: src/datastore/plugin_datastore_mysql.c:423
2008#: src/datastore/plugin_datastore_mysql.c:1073 2001#: src/datastore/plugin_datastore_mysql.c:1075
2009msgid "MySQL statement run failure" 2002msgid "MySQL statement run failure"
2010msgstr "" 2003msgstr ""
2011 2004
2012#: src/datastore/plugin_datastore_mysql.c:408 2005#: src/datastore/plugin_datastore_mysql.c:410
2013#: src/datastore/plugin_datastore_sqlite.c:676 2006#: src/datastore/plugin_datastore_sqlite.c:678
2014#, fuzzy 2007#, fuzzy
2015msgid "Data too large" 2008msgid "Data too large"
2016msgstr "antal iterationer" 2009msgstr "antal iterationer"
2017 2010
2018#: src/datastore/plugin_datastore_mysql.c:846 2011#: src/datastore/plugin_datastore_mysql.c:848
2019#, fuzzy, c-format 2012#, fuzzy, c-format
2020msgid "`%s' for `%s' failed at %s:%d with error: %s\n" 2013msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
2021msgstr "\"%s\" till \"%s\" misslyckades vid %s:%d med fel: %s\n" 2014msgstr "\"%s\" till \"%s\" misslyckades vid %s:%d med fel: %s\n"
2022 2015
2023#: src/datastore/plugin_datastore_mysql.c:1178 2016#: src/datastore/plugin_datastore_mysql.c:1180
2024#: src/psycstore/plugin_psycstore_mysql.c:1934
2025msgid "Mysql database running\n" 2017msgid "Mysql database running\n"
2026msgstr "" 2018msgstr ""
2027 2019
2028#: src/datastore/plugin_datastore_postgres.c:274 2020#: src/datastore/plugin_datastore_postgres.c:276
2029#: src/datastore/plugin_datastore_postgres.c:891 2021#: src/datastore/plugin_datastore_postgres.c:893
2030msgid "Postgress exec failure" 2022msgid "Postgress exec failure"
2031msgstr "" 2023msgstr ""
2032 2024
2033#: src/datastore/plugin_datastore_postgres.c:852 2025#: src/datastore/plugin_datastore_postgres.c:854
2034#, fuzzy 2026#, fuzzy
2035msgid "Failed to drop table from database.\n" 2027msgid "Failed to drop table from database.\n"
2036msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n" 2028msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n"
2037 2029
2038#: src/datastore/plugin_datastore_postgres.c:950 2030#: src/datastore/plugin_datastore_postgres.c:952
2039#: src/psycstore/plugin_psycstore_postgres.c:1504
2040msgid "Postgres database running\n" 2031msgid "Postgres database running\n"
2041msgstr "" 2032msgstr ""
2042 2033
2043#: src/datastore/plugin_datastore_sqlite.c:64 2034#: src/datastore/plugin_datastore_sqlite.c:66
2044#: src/testbed/generate-underlay-topology.c:48 2035#: src/testbed/generate-underlay-topology.c:50
2045#: src/testbed/gnunet-daemon-latency-logger.c:53 2036#: src/testbed/gnunet-daemon-latency-logger.c:55
2046#: src/testbed/gnunet-daemon-testbed-underlay.c:57 2037#: src/testbed/gnunet-daemon-testbed-underlay.c:59
2047#, fuzzy, c-format 2038#, fuzzy, c-format
2048msgid "`%s' failed at %s:%u with error: %s" 2039msgid "`%s' failed at %s:%u with error: %s"
2049msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n" 2040msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
2050 2041
2051#: src/datastore/plugin_datastore_sqlite.c:269 2042#: src/datastore/plugin_datastore_sqlite.c:271
2052#: src/namecache/plugin_namecache_sqlite.c:207 2043#: src/namecache/plugin_namecache_sqlite.c:173
2053#: src/namestore/plugin_namestore_sqlite.c:203 2044#: src/namestore/plugin_namestore_sqlite.c:206
2054#: src/peerstore/plugin_peerstore_sqlite.c:533 2045#: src/peerstore/plugin_peerstore_sqlite.c:535
2055#: src/psycstore/plugin_psycstore_sqlite.c:323 2046#: src/reclaim/plugin_reclaim_sqlite.c:212
2056#: src/reclaim/plugin_reclaim_sqlite.c:210
2057#, fuzzy, c-format 2047#, fuzzy, c-format
2058msgid "Unable to initialize SQLite: %s.\n" 2048msgid "Unable to initialize SQLite: %s.\n"
2059msgstr "Kunde inte initiera SQLite.\n" 2049msgstr "Kunde inte initiera SQLite.\n"
2060 2050
2061#: src/datastore/plugin_datastore_sqlite.c:627 2051#: src/datastore/plugin_datastore_sqlite.c:629
2062msgid "sqlite bind failure" 2052msgid "sqlite bind failure"
2063msgstr "" 2053msgstr ""
2064 2054
2065#: src/datastore/plugin_datastore_sqlite.c:1325 2055#: src/datastore/plugin_datastore_sqlite.c:1327
2066msgid "sqlite version to old to determine size, assuming zero\n" 2056msgid "sqlite version to old to determine size, assuming zero\n"
2067msgstr "" 2057msgstr ""
2068 2058
2069#: src/datastore/plugin_datastore_sqlite.c:1359 2059#: src/datastore/plugin_datastore_sqlite.c:1361
2070#, c-format 2060#, c-format
2071msgid "" 2061msgid ""
2072"Using sqlite page utilization to estimate payload (%llu pages of size %llu " 2062"Using sqlite page utilization to estimate payload (%llu pages of size %llu "
2073"bytes)\n" 2063"bytes)\n"
2074msgstr "" 2064msgstr ""
2075 2065
2076#: src/datastore/plugin_datastore_sqlite.c:1403 2066#: src/datastore/plugin_datastore_sqlite.c:1405
2077#: src/namecache/plugin_namecache_sqlite.c:638 2067#: src/namecache/plugin_namecache_sqlite.c:557
2078#: src/namestore/plugin_namestore_sqlite.c:753 2068#: src/namestore/plugin_namestore_sqlite.c:750
2079#: src/reclaim/plugin_reclaim_sqlite.c:709 2069#: src/reclaim/plugin_reclaim_sqlite.c:711
2080msgid "Sqlite database running\n" 2070msgid "Sqlite database running\n"
2081msgstr "" 2071msgstr ""
2082 2072
2083#: src/datastore/plugin_datastore_template.c:251 2073#: src/datastore/plugin_datastore_template.c:253
2084msgid "Template database running\n" 2074msgid "Template database running\n"
2085msgstr "" 2075msgstr ""
2086 2076
2087#: src/dht/gnunet-dht-get.c:156 2077#: src/dht/gnunet-dht-get.c:158
2088#, c-format 2078#, c-format
2089msgid "" 2079msgid ""
2090"Result %d, type %d:\n" 2080"Result %d, type %d:\n"
2091"%.*s\n" 2081"%.*s\n"
2092msgstr "" 2082msgstr ""
2093 2083
2094#: src/dht/gnunet-dht-get.c:157 2084#: src/dht/gnunet-dht-get.c:159
2095#, c-format 2085#, c-format
2096msgid "Result %d, type %d:\n" 2086msgid "Result %d, type %d:\n"
2097msgstr "" 2087msgstr ""
2098 2088
2099#: src/dht/gnunet-dht-get.c:202 2089#: src/dht/gnunet-dht-get.c:204
2100msgid "Must provide key for DHT GET!\n" 2090msgid "Must provide key for DHT GET!\n"
2101msgstr "" 2091msgstr ""
2102 2092
2103#: src/dht/gnunet-dht-get.c:208 src/dht/gnunet-dht-monitor.c:255 2093#: src/dht/gnunet-dht-get.c:210 src/dht/gnunet-dht-monitor.c:257
2104#, fuzzy 2094#, fuzzy
2105msgid "Failed to connect to DHT service!\n" 2095msgid "Failed to connect to DHT service!\n"
2106msgstr "Misslyckades att ansluta till gnunetd.\n" 2096msgstr "Misslyckades att ansluta till gnunetd.\n"
2107 2097
2108#: src/dht/gnunet-dht-get.c:217 2098#: src/dht/gnunet-dht-get.c:219
2109msgid "Issueing DHT GET with key" 2099msgid "Issuing DHT GET with key"
2110msgstr "" 2100msgstr ""
2111 2101
2112#: src/dht/gnunet-dht-get.c:246 src/dht/gnunet-dht-monitor.c:305 2102#: src/dht/gnunet-dht-get.c:248 src/dht/gnunet-dht-monitor.c:307
2113#: src/dht/gnunet-dht-put.c:196 2103#: src/dht/gnunet-dht-put.c:198
2114msgid "the query key" 2104msgid "the query key"
2115msgstr "" 2105msgstr ""
2116 2106
2117#: src/dht/gnunet-dht-get.c:251 2107#: src/dht/gnunet-dht-get.c:253
2118msgid "how many parallel requests (replicas) to create" 2108msgid "how many parallel requests (replicas) to create"
2119msgstr "" 2109msgstr ""
2120 2110
2121#: src/dht/gnunet-dht-get.c:256 src/dht/gnunet-dht-monitor.c:311 2111#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
2122msgid "the type of data to look for" 2112msgid "the type of data to look for"
2123msgstr "" 2113msgstr ""
2124 2114
2125#: src/dht/gnunet-dht-get.c:261 2115#: src/dht/gnunet-dht-get.c:263
2126msgid "how long to execute this query before giving up?" 2116msgid "how long to execute this query before giving up?"
2127msgstr "" 2117msgstr ""
2128 2118
2129#: src/dht/gnunet-dht-get.c:265 src/dht/gnunet-dht-put.c:200 2119#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
2130msgid "use DHT's demultiplex everywhere option" 2120msgid "use DHT's demultiplex everywhere option"
2131msgstr "" 2121msgstr ""
2132 2122
2133#: src/dht/gnunet-dht-get.c:278 2123#: src/dht/gnunet-dht-get.c:280
2134msgid "Issue a GET request to the GNUnet DHT, prints results." 2124msgid "Issue a GET request to the GNUnet DHT, prints results."
2135msgstr "" 2125msgstr ""
2136 2126
2137#: src/dht/gnunet-dht-monitor.c:317 2127#: src/dht/gnunet-dht-monitor.c:319
2138msgid "how long should the monitor command run" 2128msgid "how long should the monitor command run"
2139msgstr "" 2129msgstr ""
2140 2130
2141#: src/dht/gnunet-dht-monitor.c:322 src/fs/gnunet-download.c:370 2131#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
2142#: src/nse/gnunet-nse-profiler.c:876 2132#: src/nse/gnunet-nse-profiler.c:878
2143msgid "be verbose (print progress information)" 2133msgid "be verbose (print progress information)"
2144msgstr "" 2134msgstr ""
2145 2135
2146#: src/dht/gnunet-dht-monitor.c:335 2136#: src/dht/gnunet-dht-monitor.c:337
2147msgid "Prints all packets that go through the DHT." 2137msgid "Prints all packets that go through the DHT."
2148msgstr "" 2138msgstr ""
2149 2139
2150#: src/dht/gnunet_dht_profiler.c:914 src/testbed/gnunet-testbed-profiler.c:251 2140#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
2151#, fuzzy, c-format 2141#, fuzzy, c-format
2152msgid "Exiting as the number of peers is %u\n" 2142msgid "Exiting as the number of peers is %u\n"
2153msgstr "Maximalt antal chattklienter uppnått.\n" 2143msgstr "Maximalt antal chattklienter uppnått.\n"
2154 2144
2155#: src/dht/gnunet_dht_profiler.c:947 src/rps/gnunet-rps-profiler.c:2764 2145#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
2156#, fuzzy 2146#, fuzzy
2157msgid "number of peers to start" 2147msgid "number of peers to start"
2158msgstr "antal iterationer" 2148msgstr "antal iterationer"
2159 2149
2160#: src/dht/gnunet_dht_profiler.c:952 2150#: src/dht/gnunet_dht_profiler.c:954
2161msgid "number of PUTs to perform per peer" 2151msgid "number of PUTs to perform per peer"
2162msgstr "" 2152msgstr ""
2163 2153
2164#: src/dht/gnunet_dht_profiler.c:957 src/nse/gnunet-nse-profiler.c:858 2154#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
2165#: src/testbed/gnunet-testbed-profiler.c:302 2155#: src/testbed/gnunet-testbed-profiler.c:304
2166msgid "name of the file with the login information for the testbed" 2156msgid "name of the file with the login information for the testbed"
2167msgstr "" 2157msgstr ""
2168 2158
2169#: src/dht/gnunet_dht_profiler.c:962 2159#: src/dht/gnunet_dht_profiler.c:964
2170msgid "delay between rounds for collecting statistics (default: 30 sec)" 2160msgid "delay between rounds for collecting statistics (default: 30 sec)"
2171msgstr "" 2161msgstr ""
2172 2162
2173#: src/dht/gnunet_dht_profiler.c:967 2163#: src/dht/gnunet_dht_profiler.c:969
2174msgid "delay to start doing PUTs (default: 1 sec)" 2164msgid "delay to start doing PUTs (default: 1 sec)"
2175msgstr "" 2165msgstr ""
2176 2166
2177#: src/dht/gnunet_dht_profiler.c:972 2167#: src/dht/gnunet_dht_profiler.c:974
2178msgid "delay to start doing GETs (default: 5 min)" 2168msgid "delay to start doing GETs (default: 5 min)"
2179msgstr "" 2169msgstr ""
2180 2170
2181#: src/dht/gnunet_dht_profiler.c:977 2171#: src/dht/gnunet_dht_profiler.c:979
2182msgid "replication degree for DHT PUTs" 2172msgid "replication degree for DHT PUTs"
2183msgstr "" 2173msgstr ""
2184 2174
2185#: src/dht/gnunet_dht_profiler.c:982 2175#: src/dht/gnunet_dht_profiler.c:984
2186msgid "chance that a peer is selected at random for PUTs" 2176msgid "chance that a peer is selected at random for PUTs"
2187msgstr "" 2177msgstr ""
2188 2178
2189#: src/dht/gnunet_dht_profiler.c:987 2179#: src/dht/gnunet_dht_profiler.c:989
2190msgid "timeout for DHT PUT and GET requests (default: 1 min)" 2180msgid "timeout for DHT PUT and GET requests (default: 1 min)"
2191msgstr "" 2181msgstr ""
2192 2182
2193#: src/dht/gnunet_dht_profiler.c:1007 2183#: src/dht/gnunet_dht_profiler.c:1009
2194#, fuzzy 2184#, fuzzy
2195msgid "Measure quality and performance of the DHT service." 2185msgid "Measure quality and performance of the DHT service."
2196msgstr "Kan inte tillgå tjänsten" 2186msgstr "Kan inte tillgå tjänsten"
2197 2187
2198#: src/dht/gnunet-dht-put.c:132 2188#: src/dht/gnunet-dht-put.c:134
2199msgid "Must provide KEY and DATA for DHT put!\n" 2189msgid "Must provide KEY and DATA for DHT put!\n"
2200msgstr "" 2190msgstr ""
2201 2191
2202#: src/dht/gnunet-dht-put.c:140 2192#: src/dht/gnunet-dht-put.c:142
2203#, fuzzy 2193#, fuzzy
2204msgid "Could not connect to DHT service!\n" 2194msgid "Could not connect to DHT service!\n"
2205msgstr "Kunde inte ansluta till gnunetd.\n" 2195msgstr "Kunde inte ansluta till gnunetd.\n"
2206 2196
2207#: src/dht/gnunet-dht-put.c:151 2197#: src/dht/gnunet-dht-put.c:153
2208#, c-format 2198#, c-format
2209msgid "Issuing put request for `%s' with data `%s'!\n" 2199msgid "Issuing put request for `%s' with data `%s'!\n"
2210msgstr "" 2200msgstr ""
2211 2201
2212#: src/dht/gnunet-dht-put.c:186 2202#: src/dht/gnunet-dht-put.c:188
2213msgid "the data to insert under the key" 2203msgid "the data to insert under the key"
2214msgstr "" 2204msgstr ""
2215 2205
2216#: src/dht/gnunet-dht-put.c:191 2206#: src/dht/gnunet-dht-put.c:193
2217msgid "how long to store this entry in the dht (in seconds)" 2207msgid "how long to store this entry in the dht (in seconds)"
2218msgstr "" 2208msgstr ""
2219 2209
2220#: src/dht/gnunet-dht-put.c:205 2210#: src/dht/gnunet-dht-put.c:207
2221msgid "how many replicas to create" 2211msgid "how many replicas to create"
2222msgstr "" 2212msgstr ""
2223 2213
2224#: src/dht/gnunet-dht-put.c:209 2214#: src/dht/gnunet-dht-put.c:211
2225msgid "use DHT's record route option" 2215msgid "use DHT's record route option"
2226msgstr "" 2216msgstr ""
2227 2217
2228#: src/dht/gnunet-dht-put.c:214 2218#: src/dht/gnunet-dht-put.c:216
2229msgid "the type to insert data as" 2219msgid "the type to insert data as"
2230msgstr "" 2220msgstr ""
2231 2221
2232#: src/dht/gnunet-dht-put.c:231 2222#: src/dht/gnunet-dht-put.c:233
2233msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY." 2223msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY."
2234msgstr "" 2224msgstr ""
2235 2225
2236#: src/dht/gnunet-service-dht_clients.c:367 2226#: src/dht/gnunet-service-dht_clients.c:369
2237#, fuzzy 2227#, fuzzy
2238msgid "# GET requests from clients injected" 2228msgid "# GET requests from clients injected"
2239msgstr "# byte mottogs via TCP" 2229msgstr "# byte mottogs via TCP"
2240 2230
2241#: src/dht/gnunet-service-dht_clients.c:481 2231#: src/dht/gnunet-service-dht_clients.c:483
2242#, fuzzy 2232#, fuzzy
2243msgid "# PUT requests received from clients" 2233msgid "# PUT requests received from clients"
2244msgstr "Meddelande mottaget från klient är ogiltig.\n" 2234msgstr "Meddelande mottaget från klient är ogiltig.\n"
2245 2235
2246#: src/dht/gnunet-service-dht_clients.c:614 2236#: src/dht/gnunet-service-dht_clients.c:616
2247#, fuzzy 2237#, fuzzy
2248msgid "# GET requests received from clients" 2238msgid "# GET requests received from clients"
2249msgstr "Meddelande mottaget från klient är ogiltig.\n" 2239msgstr "Meddelande mottaget från klient är ogiltig.\n"
2250 2240
2251#: src/dht/gnunet-service-dht_clients.c:840 2241#: src/dht/gnunet-service-dht_clients.c:842
2252#, fuzzy 2242#, fuzzy
2253msgid "# GET STOP requests received from clients" 2243msgid "# GET STOP requests received from clients"
2254msgstr "Meddelande mottaget från klient är ogiltig.\n" 2244msgstr "Meddelande mottaget från klient är ogiltig.\n"
2255 2245
2256#: src/dht/gnunet-service-dht_clients.c:1025 2246#: src/dht/gnunet-service-dht_clients.c:1027
2257msgid "# Key match, type mismatches in REPLY to CLIENT" 2247msgid "# Key match, type mismatches in REPLY to CLIENT"
2258msgstr "" 2248msgstr ""
2259 2249
2260#: src/dht/gnunet-service-dht_clients.c:1040 2250#: src/dht/gnunet-service-dht_clients.c:1042
2261msgid "# Duplicate REPLIES to CLIENT request dropped" 2251msgid "# Duplicate REPLIES to CLIENT request dropped"
2262msgstr "" 2252msgstr ""
2263 2253
2264#: src/dht/gnunet-service-dht_clients.c:1086 2254#: src/dht/gnunet-service-dht_clients.c:1088
2265#, c-format 2255#, c-format
2266msgid "Unsupported block type (%u) in request!\n" 2256msgid "Unsupported block type (%u) in request!\n"
2267msgstr "" 2257msgstr ""
2268 2258
2269#: src/dht/gnunet-service-dht_clients.c:1093 2259#: src/dht/gnunet-service-dht_clients.c:1095
2270#, fuzzy 2260#, fuzzy
2271msgid "# RESULTS queued for clients" 2261msgid "# RESULTS queued for clients"
2272msgstr "Meddelande mottaget från klient är ogiltig.\n" 2262msgstr "Meddelande mottaget från klient är ogiltig.\n"
2273 2263
2274#: src/dht/gnunet-service-dht_clients.c:1171 2264#: src/dht/gnunet-service-dht_clients.c:1173
2275msgid "# REPLIES ignored for CLIENTS (no match)" 2265msgid "# REPLIES ignored for CLIENTS (no match)"
2276msgstr "" 2266msgstr ""
2277 2267
2278#: src/dht/gnunet-service-dht_datacache.c:71 2268#: src/dht/gnunet-service-dht_datacache.c:73
2279#, fuzzy, c-format 2269#, fuzzy, c-format
2280msgid "%s request received, but have no datacache!\n" 2270msgid "%s request received, but have no datacache!\n"
2281msgstr "# byte mottagna av typen %d" 2271msgstr "# byte mottagna av typen %d"
2282 2272
2283#: src/dht/gnunet-service-dht_datacache.c:81 2273#: src/dht/gnunet-service-dht_datacache.c:83
2284msgid "# ITEMS stored in datacache" 2274msgid "# ITEMS stored in datacache"
2285msgstr "" 2275msgstr ""
2286 2276
2287#: src/dht/gnunet-service-dht_datacache.c:205 2277#: src/dht/gnunet-service-dht_datacache.c:207
2288msgid "# Good RESULTS found in datacache" 2278msgid "# Good RESULTS found in datacache"
2289msgstr "" 2279msgstr ""
2290 2280
2291#: src/dht/gnunet-service-dht_datacache.c:217 2281#: src/dht/gnunet-service-dht_datacache.c:219
2292msgid "# Duplicate RESULTS found in datacache" 2282msgid "# Duplicate RESULTS found in datacache"
2293msgstr "" 2283msgstr ""
2294 2284
2295#: src/dht/gnunet-service-dht_datacache.c:223 2285#: src/dht/gnunet-service-dht_datacache.c:225
2296msgid "# Invalid RESULTS found in datacache" 2286msgid "# Invalid RESULTS found in datacache"
2297msgstr "" 2287msgstr ""
2298 2288
2299#: src/dht/gnunet-service-dht_datacache.c:229 2289#: src/dht/gnunet-service-dht_datacache.c:231
2300msgid "# Irrelevant RESULTS found in datacache" 2290msgid "# Irrelevant RESULTS found in datacache"
2301msgstr "" 2291msgstr ""
2302 2292
2303#: src/dht/gnunet-service-dht_datacache.c:241 2293#: src/dht/gnunet-service-dht_datacache.c:243
2304msgid "# Unsupported RESULTS found in datacache" 2294msgid "# Unsupported RESULTS found in datacache"
2305msgstr "" 2295msgstr ""
2306 2296
2307#: src/dht/gnunet-service-dht_datacache.c:245 2297#: src/dht/gnunet-service-dht_datacache.c:247
2308#, c-format 2298#, c-format
2309msgid "Unsupported block type (%u) in local response!\n" 2299msgid "Unsupported block type (%u) in local response!\n"
2310msgstr "" 2300msgstr ""
2311 2301
2312#: src/dht/gnunet-service-dht_datacache.c:280 2302#: src/dht/gnunet-service-dht_datacache.c:282
2313#, fuzzy 2303#, fuzzy
2314msgid "# GET requests given to datacache" 2304msgid "# GET requests given to datacache"
2315msgstr "# byte mottogs via TCP" 2305msgstr "# byte mottogs via TCP"
2316 2306
2317#: src/dht/gnunet-service-dht_hello.c:84 2307#: src/dht/gnunet-service-dht_hello.c:86
2318#, fuzzy 2308#, fuzzy
2319msgid "# HELLOs obtained from peerinfo" 2309msgid "# HELLOs obtained from peerinfo"
2320msgstr "Meddelande mottaget från klient är ogiltig.\n" 2310msgstr "Meddelande mottaget från klient är ogiltig.\n"
2321 2311
2322#: src/dht/gnunet-service-dht_neighbours.c:677 2312#: src/dht/gnunet-service-dht_neighbours.c:679
2323#, fuzzy 2313#, fuzzy
2324msgid "# FIND PEER messages initiated" 2314msgid "# FIND PEER messages initiated"
2325msgstr "# PING-meddelanden skapade" 2315msgstr "# PING-meddelanden skapade"
2326 2316
2327#: src/dht/gnunet-service-dht_neighbours.c:850 2317#: src/dht/gnunet-service-dht_neighbours.c:852
2328#, fuzzy 2318#, fuzzy
2329msgid "# requests TTL-dropped" 2319msgid "# requests TTL-dropped"
2330msgstr "# byte mottogs via TCP" 2320msgstr "# byte mottogs via TCP"
2331 2321
2332#: src/dht/gnunet-service-dht_neighbours.c:1053 2322#: src/dht/gnunet-service-dht_neighbours.c:1055
2333#: src/dht/gnunet-service-dht_neighbours.c:1096 2323#: src/dht/gnunet-service-dht_neighbours.c:1098
2334msgid "# Peers excluded from routing due to Bloomfilter" 2324msgid "# Peers excluded from routing due to Bloomfilter"
2335msgstr "" 2325msgstr ""
2336 2326
2337#: src/dht/gnunet-service-dht_neighbours.c:1070 2327#: src/dht/gnunet-service-dht_neighbours.c:1072
2338#: src/dht/gnunet-service-dht_neighbours.c:1112 2328#: src/dht/gnunet-service-dht_neighbours.c:1114
2339msgid "# Peer selection failed" 2329msgid "# Peer selection failed"
2340msgstr "" 2330msgstr ""
2341 2331
2342#: src/dht/gnunet-service-dht_neighbours.c:1269 2332#: src/dht/gnunet-service-dht_neighbours.c:1271
2343#, fuzzy 2333#, fuzzy
2344msgid "# PUT requests routed" 2334msgid "# PUT requests routed"
2345msgstr "# byte mottogs via TCP" 2335msgstr "# byte mottogs via TCP"
2346 2336
2347#: src/dht/gnunet-service-dht_neighbours.c:1302 2337#: src/dht/gnunet-service-dht_neighbours.c:1304
2348#, fuzzy 2338#, fuzzy
2349msgid "# PUT messages queued for transmission" 2339msgid "# PUT messages queued for transmission"
2350msgstr "# PING-meddelanden skapade" 2340msgstr "# PING-meddelanden skapade"
2351 2341
2352#: src/dht/gnunet-service-dht_neighbours.c:1313 2342#: src/dht/gnunet-service-dht_neighbours.c:1315
2353#: src/dht/gnunet-service-dht_neighbours.c:1453 2343#: src/dht/gnunet-service-dht_neighbours.c:1455
2354#: src/dht/gnunet-service-dht_neighbours.c:1556 2344#: src/dht/gnunet-service-dht_neighbours.c:1558
2355#, fuzzy 2345#, fuzzy
2356msgid "# P2P messages dropped due to full queue" 2346msgid "# P2P messages dropped due to full queue"
2357msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 2347msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
2358 2348
2359#: src/dht/gnunet-service-dht_neighbours.c:1398 2349#: src/dht/gnunet-service-dht_neighbours.c:1400
2360#, fuzzy 2350#, fuzzy
2361msgid "# GET requests routed" 2351msgid "# GET requests routed"
2362msgstr "# byte mottogs via TCP" 2352msgstr "# byte mottogs via TCP"
2363 2353
2364#: src/dht/gnunet-service-dht_neighbours.c:1441 2354#: src/dht/gnunet-service-dht_neighbours.c:1443
2365#, fuzzy 2355#, fuzzy
2366msgid "# GET messages queued for transmission" 2356msgid "# GET messages queued for transmission"
2367msgstr "# PING-meddelanden skapade" 2357msgstr "# PING-meddelanden skapade"
2368 2358
2369#: src/dht/gnunet-service-dht_neighbours.c:1571 2359#: src/dht/gnunet-service-dht_neighbours.c:1573
2370#, fuzzy 2360#, fuzzy
2371msgid "# RESULT messages queued for transmission" 2361msgid "# RESULT messages queued for transmission"
2372msgstr "# PING-meddelanden skapade" 2362msgstr "# PING-meddelanden skapade"
2373 2363
2374#: src/dht/gnunet-service-dht_neighbours.c:1674 2364#: src/dht/gnunet-service-dht_neighbours.c:1676
2375msgid "# Expired PUTs discarded" 2365msgid "# Expired PUTs discarded"
2376msgstr "" 2366msgstr ""
2377 2367
2378#: src/dht/gnunet-service-dht_neighbours.c:1682 2368#: src/dht/gnunet-service-dht_neighbours.c:1684
2379#, fuzzy 2369#, fuzzy
2380msgid "# P2P PUT requests received" 2370msgid "# P2P PUT requests received"
2381msgstr "# byte mottogs via TCP" 2371msgstr "# byte mottogs via TCP"
2382 2372
2383#: src/dht/gnunet-service-dht_neighbours.c:1686 2373#: src/dht/gnunet-service-dht_neighbours.c:1688
2384#, fuzzy 2374#, fuzzy
2385msgid "# P2P PUT bytes received" 2375msgid "# P2P PUT bytes received"
2386msgstr "# byte mottogs via TCP" 2376msgstr "# byte mottogs via TCP"
2387 2377
2388#: src/dht/gnunet-service-dht_neighbours.c:1912 2378#: src/dht/gnunet-service-dht_neighbours.c:1914
2389msgid "# FIND PEER requests ignored due to Bloomfilter" 2379msgid "# FIND PEER requests ignored due to Bloomfilter"
2390msgstr "" 2380msgstr ""
2391 2381
2392#: src/dht/gnunet-service-dht_neighbours.c:1920 2382#: src/dht/gnunet-service-dht_neighbours.c:1922
2393msgid "# FIND PEER requests ignored due to lack of HELLO" 2383msgid "# FIND PEER requests ignored due to lack of HELLO"
2394msgstr "" 2384msgstr ""
2395 2385
2396#: src/dht/gnunet-service-dht_neighbours.c:2082 2386#: src/dht/gnunet-service-dht_neighbours.c:2084
2397#, fuzzy 2387#, fuzzy
2398msgid "# P2P GET requests received" 2388msgid "# P2P GET requests received"
2399msgstr "# byte mottogs via TCP" 2389msgstr "# byte mottogs via TCP"
2400 2390
2401#: src/dht/gnunet-service-dht_neighbours.c:2086 2391#: src/dht/gnunet-service-dht_neighbours.c:2088
2402#, fuzzy 2392#, fuzzy
2403msgid "# P2P GET bytes received" 2393msgid "# P2P GET bytes received"
2404msgstr "# byte mottogs via TCP" 2394msgstr "# byte mottogs via TCP"
2405 2395
2406#: src/dht/gnunet-service-dht_neighbours.c:2151 2396#: src/dht/gnunet-service-dht_neighbours.c:2153
2407#, fuzzy 2397#, fuzzy
2408msgid "# P2P FIND PEER requests processed" 2398msgid "# P2P FIND PEER requests processed"
2409msgstr "# byte mottogs via TCP" 2399msgstr "# byte mottogs via TCP"
2410 2400
2411#: src/dht/gnunet-service-dht_neighbours.c:2172 2401#: src/dht/gnunet-service-dht_neighbours.c:2174
2412#, fuzzy 2402#, fuzzy
2413msgid "# P2P GET requests ONLY routed" 2403msgid "# P2P GET requests ONLY routed"
2414msgstr "# byte mottogs via TCP" 2404msgstr "# byte mottogs via TCP"
2415 2405
2416#: src/dht/gnunet-service-dht_neighbours.c:2349 2406#: src/dht/gnunet-service-dht_neighbours.c:2351
2417msgid "# Expired results discarded" 2407msgid "# Expired results discarded"
2418msgstr "" 2408msgstr ""
2419 2409
2420#: src/dht/gnunet-service-dht_neighbours.c:2365 2410#: src/dht/gnunet-service-dht_neighbours.c:2367
2421#, fuzzy 2411#, fuzzy
2422msgid "# P2P RESULTS received" 2412msgid "# P2P RESULTS received"
2423msgstr "# krypterade PONG-meddelanden mottagna" 2413msgstr "# krypterade PONG-meddelanden mottagna"
2424 2414
2425#: src/dht/gnunet-service-dht_neighbours.c:2369 2415#: src/dht/gnunet-service-dht_neighbours.c:2371
2426#, fuzzy 2416#, fuzzy
2427msgid "# P2P RESULT bytes received" 2417msgid "# P2P RESULT bytes received"
2428msgstr "# krypterade PONG-meddelanden mottagna" 2418msgstr "# krypterade PONG-meddelanden mottagna"
2429 2419
2430#: src/dht/gnunet-service-dht_nse.c:57 2420#: src/dht/gnunet-service-dht_nse.c:59
2431#, fuzzy 2421#, fuzzy
2432msgid "# Network size estimates received" 2422msgid "# Network size estimates received"
2433msgstr "# byte mottogs via TCP" 2423msgstr "# byte mottogs via TCP"
2434 2424
2435#: src/dht/gnunet-service-dht_routing.c:221 2425#: src/dht/gnunet-service-dht_routing.c:223
2436msgid "# Good REPLIES matched against routing table" 2426msgid "# Good REPLIES matched against routing table"
2437msgstr "" 2427msgstr ""
2438 2428
2439#: src/dht/gnunet-service-dht_routing.c:235 2429#: src/dht/gnunet-service-dht_routing.c:237
2440msgid "# Duplicate REPLIES matched against routing table" 2430msgid "# Duplicate REPLIES matched against routing table"
2441msgstr "" 2431msgstr ""
2442 2432
2443#: src/dht/gnunet-service-dht_routing.c:241 2433#: src/dht/gnunet-service-dht_routing.c:243
2444msgid "# Invalid REPLIES matched against routing table" 2434msgid "# Invalid REPLIES matched against routing table"
2445msgstr "" 2435msgstr ""
2446 2436
2447#: src/dht/gnunet-service-dht_routing.c:247 2437#: src/dht/gnunet-service-dht_routing.c:249
2448msgid "# Irrelevant REPLIES matched against routing table" 2438msgid "# Irrelevant REPLIES matched against routing table"
2449msgstr "" 2439msgstr ""
2450 2440
2451#: src/dht/gnunet-service-dht_routing.c:259 2441#: src/dht/gnunet-service-dht_routing.c:261
2452msgid "# Unsupported REPLIES matched against routing table" 2442msgid "# Unsupported REPLIES matched against routing table"
2453msgstr "" 2443msgstr ""
2454 2444
2455#: src/dht/gnunet-service-dht_routing.c:337 2445#: src/dht/gnunet-service-dht_routing.c:339
2456msgid "# Entries removed from routing table" 2446msgid "# Entries removed from routing table"
2457msgstr "" 2447msgstr ""
2458 2448
2459#: src/dht/gnunet-service-dht_routing.c:413 2449#: src/dht/gnunet-service-dht_routing.c:415
2460msgid "# Entries added to routing table" 2450msgid "# Entries added to routing table"
2461msgstr "" 2451msgstr ""
2462 2452
2463#: src/dht/gnunet-service-dht_routing.c:435 2453#: src/dht/gnunet-service-dht_routing.c:437
2464#, fuzzy 2454#, fuzzy
2465msgid "# DHT requests combined" 2455msgid "# DHT requests combined"
2466msgstr "# byte mottogs via TCP" 2456msgstr "# byte mottogs via TCP"
2467 2457
2468#: src/dht/plugin_block_dht.c:187 2458#: src/dht/plugin_block_dht.c:189
2469#, fuzzy, c-format 2459#, fuzzy, c-format
2470msgid "Block not of type %u\n" 2460msgid "Block not of type %u\n"
2471msgstr "Ingen transport av typ %d är känd.\n" 2461msgstr "Ingen transport av typ %d är känd.\n"
2472 2462
2473#: src/dht/plugin_block_dht.c:196 2463#: src/dht/plugin_block_dht.c:198
2474msgid "Size mismatch for block\n" 2464msgid "Size mismatch for block\n"
2475msgstr "" 2465msgstr ""
2476 2466
2477#: src/dht/plugin_block_dht.c:207 2467#: src/dht/plugin_block_dht.c:209
2478#, c-format 2468#, c-format
2479msgid "Block of type %u is malformed\n" 2469msgid "Block of type %u is malformed\n"
2480msgstr "" 2470msgstr ""
2481 2471
2482#: src/dns/gnunet-dns-monitor.c:351 src/dns/gnunet-dns-monitor.c:356 2472#: src/dns/gnunet-dns-monitor.c:353 src/dns/gnunet-dns-monitor.c:358
2483msgid "only monitor DNS queries" 2473msgid "only monitor DNS queries"
2484msgstr "" 2474msgstr ""
2485 2475
2486#: src/dns/gnunet-dns-monitor.c:368 2476#: src/dns/gnunet-dns-monitor.c:370
2487msgid "Monitor DNS queries." 2477msgid "Monitor DNS queries."
2488msgstr "" 2478msgstr ""
2489 2479
2490#: src/dns/gnunet-dns-redirector.c:235 2480#: src/dns/gnunet-dns-redirector.c:237
2491msgid "set A records" 2481msgid "set A records"
2492msgstr "" 2482msgstr ""
2493 2483
2494#: src/dns/gnunet-dns-redirector.c:241 2484#: src/dns/gnunet-dns-redirector.c:243
2495msgid "set AAAA records" 2485msgid "set AAAA records"
2496msgstr "" 2486msgstr ""
2497 2487
2498#: src/dns/gnunet-dns-redirector.c:254 2488#: src/dns/gnunet-dns-redirector.c:256
2499msgid "Change DNS replies to point elsewhere." 2489msgid "Change DNS replies to point elsewhere."
2500msgstr "" 2490msgstr ""
2501 2491
2502#: src/dns/gnunet-service-dns.c:460 2492#: src/dns/gnunet-service-dns.c:462
2503msgid "# DNS requests answered via TUN interface" 2493msgid "# DNS requests answered via TUN interface"
2504msgstr "" 2494msgstr ""
2505 2495
2506#: src/dns/gnunet-service-dns.c:608 2496#: src/dns/gnunet-service-dns.c:610
2507msgid "# DNS exit failed (failed to open socket)" 2497msgid "# DNS exit failed (failed to open socket)"
2508msgstr "" 2498msgstr ""
2509 2499
2510#: src/dns/gnunet-service-dns.c:738 2500#: src/dns/gnunet-service-dns.c:740
2511msgid "# External DNS response discarded (no matching request)" 2501msgid "# External DNS response discarded (no matching request)"
2512msgstr "" 2502msgstr ""
2513 2503
2514#: src/dns/gnunet-service-dns.c:813 2504#: src/dns/gnunet-service-dns.c:815
2515msgid "# Client response discarded (no matching request)" 2505msgid "# Client response discarded (no matching request)"
2516msgstr "" 2506msgstr ""
2517 2507
2518#: src/dns/gnunet-service-dns.c:928 2508#: src/dns/gnunet-service-dns.c:930
2519msgid "Received malformed IPv4-UDP packet on TUN interface.\n" 2509msgid "Received malformed IPv4-UDP packet on TUN interface.\n"
2520msgstr "" 2510msgstr ""
2521 2511
2522#: src/dns/gnunet-service-dns.c:944 2512#: src/dns/gnunet-service-dns.c:946
2523msgid "Received malformed IPv6-UDP packet on TUN interface.\n" 2513msgid "Received malformed IPv6-UDP packet on TUN interface.\n"
2524msgstr "" 2514msgstr ""
2525 2515
2526#: src/dns/gnunet-service-dns.c:953 2516#: src/dns/gnunet-service-dns.c:955
2527#, c-format 2517#, c-format
2528msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n" 2518msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n"
2529msgstr "" 2519msgstr ""
2530 2520
2531#: src/dns/gnunet-service-dns.c:963 2521#: src/dns/gnunet-service-dns.c:965
2532msgid "DNS interceptor got non-DNS packet (dropped)\n" 2522msgid "DNS interceptor got non-DNS packet (dropped)\n"
2533msgstr "" 2523msgstr ""
2534 2524
2535#: src/dns/gnunet-service-dns.c:965 2525#: src/dns/gnunet-service-dns.c:967
2536msgid "# Non-DNS UDP packet received via TUN interface" 2526msgid "# Non-DNS UDP packet received via TUN interface"
2537msgstr "" 2527msgstr ""
2538 2528
2539#: src/dns/gnunet-service-dns.c:1032 2529#: src/dns/gnunet-service-dns.c:1034
2540#, fuzzy 2530#, fuzzy
2541msgid "# DNS requests received via TUN interface" 2531msgid "# DNS requests received via TUN interface"
2542msgstr "Meddelande mottaget från klient är ogiltig.\n" 2532msgstr "Meddelande mottaget från klient är ogiltig.\n"
2543 2533
2544#: src/dns/gnunet-service-dns.c:1080 src/exit/gnunet-daemon-exit.c:3563 2534#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
2545#, fuzzy 2535#, fuzzy
2546msgid "need a valid IPv4 or IPv6 address\n" 2536msgid "need a valid IPv4 or IPv6 address\n"
2547msgstr "Ogiltigt svar på \"%s\".\n" 2537msgstr "Ogiltigt svar på \"%s\".\n"
2548 2538
2549#: src/dns/gnunet-service-dns.c:1090 2539#: src/dns/gnunet-service-dns.c:1092
2550#, c-format 2540#, c-format
2551msgid "`%s' must be installed SUID, will not run DNS interceptor\n" 2541msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
2552msgstr "" 2542msgstr ""
2553 2543
2554#: src/dv/gnunet-dv.c:173 2544#: src/dv/gnunet-dv.c:175
2555#, fuzzy 2545#, fuzzy
2556msgid "Print information about DV state" 2546msgid "Print information about DV state"
2557msgstr "Skriv ut information om GNUnets motparter." 2547msgstr "Skriv ut information om GNUnets motparter."
2558 2548
2559#: src/exit/gnunet-daemon-exit.c:958 2549#: src/exit/gnunet-daemon-exit.c:960
2560#, fuzzy 2550#, fuzzy
2561msgid "# TCP packets sent via TUN" 2551msgid "# TCP packets sent via TUN"
2562msgstr "# byte skickade via UDP" 2552msgstr "# byte skickade via UDP"
2563 2553
2564#: src/exit/gnunet-daemon-exit.c:1059 2554#: src/exit/gnunet-daemon-exit.c:1061
2565#, fuzzy 2555#, fuzzy
2566msgid "# ICMP packets sent via TUN" 2556msgid "# ICMP packets sent via TUN"
2567msgstr "# byte skickade via UDP" 2557msgstr "# byte skickade via UDP"
2568 2558
2569#: src/exit/gnunet-daemon-exit.c:1338 2559#: src/exit/gnunet-daemon-exit.c:1340
2570#, fuzzy 2560#, fuzzy
2571msgid "# UDP packets sent via TUN" 2561msgid "# UDP packets sent via TUN"
2572msgstr "# byte skickade via UDP" 2562msgstr "# byte skickade via UDP"
2573 2563
2574#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570 2564#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
2575#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699 2565#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
2576#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951 2566#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
2577#: src/exit/gnunet-daemon-exit.c:2205 2567#: src/exit/gnunet-daemon-exit.c:2207
2578#, fuzzy 2568#, fuzzy
2579msgid "# Bytes received from CADET" 2569msgid "# Bytes received from CADET"
2580msgstr "# byte mottagna via HTTP" 2570msgstr "# byte mottagna via HTTP"
2581 2571
2582#: src/exit/gnunet-daemon-exit.c:1465 2572#: src/exit/gnunet-daemon-exit.c:1467
2583#, fuzzy 2573#, fuzzy
2584msgid "# UDP IP-exit requests received via cadet" 2574msgid "# UDP IP-exit requests received via cadet"
2585msgstr "# byte mottogs via TCP" 2575msgstr "# byte mottogs via TCP"
2586 2576
2587#: src/exit/gnunet-daemon-exit.c:1573 2577#: src/exit/gnunet-daemon-exit.c:1575
2588#, fuzzy 2578#, fuzzy
2589msgid "# UDP service requests received via cadet" 2579msgid "# UDP service requests received via cadet"
2590msgstr "# byte mottogs via TCP" 2580msgstr "# byte mottogs via TCP"
2591 2581
2592#: src/exit/gnunet-daemon-exit.c:1613 2582#: src/exit/gnunet-daemon-exit.c:1615
2593#, fuzzy 2583#, fuzzy
2594msgid "# TCP service creation requests received via cadet" 2584msgid "# TCP service creation requests received via cadet"
2595msgstr "# byte mottogs via TCP" 2585msgstr "# byte mottogs via TCP"
2596 2586
2597#: src/exit/gnunet-daemon-exit.c:1702 2587#: src/exit/gnunet-daemon-exit.c:1704
2598#, fuzzy 2588#, fuzzy
2599msgid "# TCP IP-exit creation requests received via cadet" 2589msgid "# TCP IP-exit creation requests received via cadet"
2600msgstr "# byte mottogs via TCP" 2590msgstr "# byte mottogs via TCP"
2601 2591
2602#: src/exit/gnunet-daemon-exit.c:1786 2592#: src/exit/gnunet-daemon-exit.c:1788
2603#, fuzzy 2593#, fuzzy
2604msgid "# TCP DATA requests dropped (no session)" 2594msgid "# TCP DATA requests dropped (no session)"
2605msgstr "# byte mottogs via TCP" 2595msgstr "# byte mottogs via TCP"
2606 2596
2607#: src/exit/gnunet-daemon-exit.c:1823 2597#: src/exit/gnunet-daemon-exit.c:1825
2608#, fuzzy 2598#, fuzzy
2609msgid "# TCP data requests received via cadet" 2599msgid "# TCP data requests received via cadet"
2610msgstr "# byte mottogs via TCP" 2600msgstr "# byte mottogs via TCP"
2611 2601
2612#: src/exit/gnunet-daemon-exit.c:1954 2602#: src/exit/gnunet-daemon-exit.c:1956
2613#, fuzzy 2603#, fuzzy
2614msgid "# ICMP IP-exit requests received via cadet" 2604msgid "# ICMP IP-exit requests received via cadet"
2615msgstr "# byte mottogs via TCP" 2605msgstr "# byte mottogs via TCP"
2616 2606
2617#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277 2607#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
2618#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:826 2608#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
2619#: src/vpn/gnunet-service-vpn.c:989 src/vpn/gnunet-service-vpn.c:2103 2609#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
2620msgid "# ICMPv4 packets dropped (type not allowed)" 2610msgid "# ICMPv4 packets dropped (type not allowed)"
2621msgstr "" 2611msgstr ""
2622 2612
2623#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336 2613#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
2624#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885 2614#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
2625#: src/vpn/gnunet-service-vpn.c:1022 src/vpn/gnunet-service-vpn.c:2156 2615#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
2626msgid "# ICMPv6 packets dropped (type not allowed)" 2616msgid "# ICMPv6 packets dropped (type not allowed)"
2627msgstr "" 2617msgstr ""
2628 2618
2629#: src/exit/gnunet-daemon-exit.c:2208 2619#: src/exit/gnunet-daemon-exit.c:2210
2630#, fuzzy 2620#, fuzzy
2631msgid "# ICMP service requests received via cadet" 2621msgid "# ICMP service requests received via cadet"
2632msgstr "Meddelande mottaget från klient är ogiltig.\n" 2622msgstr "Meddelande mottaget från klient är ogiltig.\n"
2633 2623
2634#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:983 2624#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
2635#: src/vpn/gnunet-service-vpn.c:2094 2625#: src/vpn/gnunet-service-vpn.c:2096
2636msgid "# ICMPv4 packets dropped (impossible PT to v6)" 2626msgid "# ICMPv4 packets dropped (impossible PT to v6)"
2637msgstr "" 2627msgstr ""
2638 2628
2639#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:873 2629#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
2640#: src/vpn/gnunet-service-vpn.c:2128 src/vpn/gnunet-service-vpn.c:2139 2630#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
2641msgid "# ICMPv6 packets dropped (impossible PT to v4)" 2631msgid "# ICMPv6 packets dropped (impossible PT to v4)"
2642msgstr "" 2632msgstr ""
2643 2633
2644#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066 2634#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
2645#, fuzzy 2635#, fuzzy
2646msgid "# Inbound CADET channels created" 2636msgid "# Inbound CADET channels created"
2647msgstr "# PING-meddelanden skapade" 2637msgstr "# PING-meddelanden skapade"
2648 2638
2649#: src/exit/gnunet-daemon-exit.c:2520 2639#: src/exit/gnunet-daemon-exit.c:2522
2650#, c-format 2640#, c-format
2651msgid "Got duplicate service records for `%s:%u'\n" 2641msgid "Got duplicate service records for `%s:%u'\n"
2652msgstr "" 2642msgstr ""
2653 2643
2654#: src/exit/gnunet-daemon-exit.c:2539 2644#: src/exit/gnunet-daemon-exit.c:2541
2655#, fuzzy 2645#, fuzzy
2656msgid "# Messages transmitted via cadet channels" 2646msgid "# Messages transmitted via cadet channels"
2657msgstr "# byte skickade av typen %d" 2647msgstr "# byte skickade av typen %d"
2658 2648
2659#: src/exit/gnunet-daemon-exit.c:2717 2649#: src/exit/gnunet-daemon-exit.c:2719
2660msgid "# ICMP packets dropped (not allowed)" 2650msgid "# ICMP packets dropped (not allowed)"
2661msgstr "" 2651msgstr ""
2662 2652
2663#: src/exit/gnunet-daemon-exit.c:2725 2653#: src/exit/gnunet-daemon-exit.c:2727
2664msgid "ICMP Packet dropped, have no matching connection information\n" 2654msgid "ICMP Packet dropped, have no matching connection information\n"
2665msgstr "" 2655msgstr ""
2666 2656
2667#: src/exit/gnunet-daemon-exit.c:2799 2657#: src/exit/gnunet-daemon-exit.c:2801
2668msgid "UDP Packet dropped, have no matching connection information\n" 2658msgid "UDP Packet dropped, have no matching connection information\n"
2669msgstr "" 2659msgstr ""
2670 2660
2671#: src/exit/gnunet-daemon-exit.c:2871 2661#: src/exit/gnunet-daemon-exit.c:2873
2672msgid "TCP Packet dropped, have no matching connection information\n" 2662msgid "TCP Packet dropped, have no matching connection information\n"
2673msgstr "" 2663msgstr ""
2674 2664
2675#: src/exit/gnunet-daemon-exit.c:2919 2665#: src/exit/gnunet-daemon-exit.c:2921
2676#, fuzzy 2666#, fuzzy
2677msgid "# Packets received from TUN" 2667msgid "# Packets received from TUN"
2678msgstr "# byte mottagna via HTTP" 2668msgstr "# byte mottagna via HTTP"
2679 2669
2680#: src/exit/gnunet-daemon-exit.c:2933 2670#: src/exit/gnunet-daemon-exit.c:2935
2681#, fuzzy 2671#, fuzzy
2682msgid "# Bytes received from TUN" 2672msgid "# Bytes received from TUN"
2683msgstr "# byte mottagna via HTTP" 2673msgstr "# byte mottagna via HTTP"
2684 2674
2685#: src/exit/gnunet-daemon-exit.c:2959 2675#: src/exit/gnunet-daemon-exit.c:2961
2686msgid "IPv4 packet options received. Ignored.\n" 2676msgid "IPv4 packet options received. Ignored.\n"
2687msgstr "" 2677msgstr ""
2688 2678
2689#: src/exit/gnunet-daemon-exit.c:2986 2679#: src/exit/gnunet-daemon-exit.c:2988
2690#, c-format 2680#, c-format
2691msgid "IPv4 packet with unsupported next header %u received. Ignored.\n" 2681msgid "IPv4 packet with unsupported next header %u received. Ignored.\n"
2692msgstr "" 2682msgstr ""
2693 2683
2694#: src/exit/gnunet-daemon-exit.c:3032 2684#: src/exit/gnunet-daemon-exit.c:3034
2695#, c-format 2685#, c-format
2696msgid "IPv6 packet with unsupported next header %d received. Ignored.\n" 2686msgid "IPv6 packet with unsupported next header %d received. Ignored.\n"
2697msgstr "" 2687msgstr ""
2698 2688
2699#: src/exit/gnunet-daemon-exit.c:3040 2689#: src/exit/gnunet-daemon-exit.c:3042
2700#, c-format 2690#, c-format
2701msgid "Packet from unknown protocol %u received. Ignored.\n" 2691msgid "Packet from unknown protocol %u received. Ignored.\n"
2702msgstr "" 2692msgstr ""
2703 2693
2704#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253 2694#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
2705#, fuzzy, c-format 2695#, fuzzy, c-format
2706msgid "Option `%s' for domain `%s' is not formatted correctly!\n" 2696msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
2707msgstr "%s: flagga \"%s\" är tvetydig\n" 2697msgstr "%s: flagga \"%s\" är tvetydig\n"
2708 2698
2709#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275 2699#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
2710#, c-format 2700#, c-format
2711msgid "`%s' is not a valid port number (for domain `%s')!" 2701msgid "`%s' is not a valid port number (for domain `%s')!"
2712msgstr "" 2702msgstr ""
2713 2703
2714#: src/exit/gnunet-daemon-exit.c:3316 2704#: src/exit/gnunet-daemon-exit.c:3318
2715#, c-format 2705#, c-format
2716msgid "No addresses found for hostname `%s' of service `%s'!\n" 2706msgid "No addresses found for hostname `%s' of service `%s'!\n"
2717msgstr "" 2707msgstr ""
2718 2708
2719#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343 2709#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
2720#, c-format 2710#, c-format
2721msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n" 2711msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
2722msgstr "" 2712msgstr ""
2723 2713
2724#: src/exit/gnunet-daemon-exit.c:3355 2714#: src/exit/gnunet-daemon-exit.c:3357
2725#, c-format 2715#, c-format
2726msgid "No IP addresses found for hostname `%s' of service `%s'!\n" 2716msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
2727msgstr "" 2717msgstr ""
2728 2718
2729#: src/exit/gnunet-daemon-exit.c:3499 2719#: src/exit/gnunet-daemon-exit.c:3501
2730msgid "" 2720msgid ""
2731"This system does not support IPv4, will disable IPv4 functions despite them " 2721"This system does not support IPv4, will disable IPv4 functions despite them "
2732"being enabled in the configuration\n" 2722"being enabled in the configuration\n"
2733msgstr "" 2723msgstr ""
2734 2724
2735#: src/exit/gnunet-daemon-exit.c:3507 2725#: src/exit/gnunet-daemon-exit.c:3509
2736msgid "" 2726msgid ""
2737"This system does not support IPv6, will disable IPv6 functions despite them " 2727"This system does not support IPv6, will disable IPv6 functions despite them "
2738"being enabled in the configuration\n" 2728"being enabled in the configuration\n"
2739msgstr "" 2729msgstr ""
2740 2730
2741#: src/exit/gnunet-daemon-exit.c:3514 2731#: src/exit/gnunet-daemon-exit.c:3516
2742msgid "" 2732msgid ""
2743"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use " 2733"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
2744"ENABLE_IPv4=YES\n" 2734"ENABLE_IPv4=YES\n"
2745msgstr "" 2735msgstr ""
2746 2736
2747#: src/exit/gnunet-daemon-exit.c:3520 2737#: src/exit/gnunet-daemon-exit.c:3522
2748msgid "" 2738msgid ""
2749"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use " 2739"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
2750"ENABLE_IPv6=YES\n" 2740"ENABLE_IPv6=YES\n"
2751msgstr "" 2741msgstr ""
2752 2742
2753#: src/exit/gnunet-daemon-exit.c:3688 2743#: src/exit/gnunet-daemon-exit.c:3690
2754msgid "Must be a number" 2744msgid "Must be a number"
2755msgstr "" 2745msgstr ""
2756 2746
2757#: src/exit/gnunet-daemon-exit.c:3803 2747#: src/exit/gnunet-daemon-exit.c:3805
2758#, c-format 2748#, c-format
2759msgid "`%s' must be installed SUID, EXIT will not work\n" 2749msgid "`%s' must be installed SUID, EXIT will not work\n"
2760msgstr "" 2750msgstr ""
2761 2751
2762#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202 2752#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
2763msgid "No useful service enabled. Exiting.\n" 2753msgid "No useful service enabled. Exiting.\n"
2764msgstr "" 2754msgstr ""
2765 2755
2766#: src/exit/gnunet-daemon-exit.c:3964 2756#: src/exit/gnunet-daemon-exit.c:3966
2767msgid "Daemon to run to provide an IP exit node for the VPN" 2757msgid "Daemon to run to provide an IP exit node for the VPN"
2768msgstr "" 2758msgstr ""
2769 2759
2770#: src/fragmentation/defragmentation.c:273 2760#: src/fragmentation/defragmentation.c:275
2771msgid "# acknowledgements sent for fragment" 2761msgid "# acknowledgements sent for fragment"
2772msgstr "" 2762msgstr ""
2773 2763
2774#: src/fragmentation/defragmentation.c:466 2764#: src/fragmentation/defragmentation.c:468
2775#: src/transport/plugin_transport_wlan.c:1552 2765#: src/transport/plugin_transport_wlan.c:1554
2776#, fuzzy 2766#, fuzzy
2777msgid "# fragments received" 2767msgid "# fragments received"
2778msgstr "# byte mottogs via TCP" 2768msgstr "# byte mottogs via TCP"
2779 2769
2780#: src/fragmentation/defragmentation.c:536 2770#: src/fragmentation/defragmentation.c:538
2781#, fuzzy 2771#, fuzzy
2782msgid "# duplicate fragments received" 2772msgid "# duplicate fragments received"
2783msgstr "# byte mottogs via TCP" 2773msgstr "# byte mottogs via TCP"
2784 2774
2785#: src/fragmentation/defragmentation.c:554 2775#: src/fragmentation/defragmentation.c:556
2786msgid "# messages defragmented" 2776msgid "# messages defragmented"
2787msgstr "" 2777msgstr ""
2788 2778
2789#: src/fragmentation/fragmentation.c:238 2779#: src/fragmentation/fragmentation.c:240
2790#, fuzzy 2780#, fuzzy
2791msgid "# fragments transmitted" 2781msgid "# fragments transmitted"
2792msgstr "# byte skickade av typen %d" 2782msgstr "# byte skickade av typen %d"
2793 2783
2794#: src/fragmentation/fragmentation.c:243 2784#: src/fragmentation/fragmentation.c:245
2795#, fuzzy 2785#, fuzzy
2796msgid "# fragments retransmitted" 2786msgid "# fragments retransmitted"
2797msgstr "# byte skickade av typen %d" 2787msgstr "# byte skickade av typen %d"
2798 2788
2799#: src/fragmentation/fragmentation.c:276 2789#: src/fragmentation/fragmentation.c:278
2800#, fuzzy 2790#, fuzzy
2801msgid "# fragments wrap arounds" 2791msgid "# fragments wrap arounds"
2802msgstr "# byte skickade av typen %d" 2792msgstr "# byte skickade av typen %d"
2803 2793
2804#: src/fragmentation/fragmentation.c:323 2794#: src/fragmentation/fragmentation.c:325
2805msgid "# messages fragmented" 2795msgid "# messages fragmented"
2806msgstr "" 2796msgstr ""
2807 2797
2808#: src/fragmentation/fragmentation.c:329 2798#: src/fragmentation/fragmentation.c:331
2809msgid "# total size of fragmented messages" 2799msgid "# total size of fragmented messages"
2810msgstr "" 2800msgstr ""
2811 2801
2812#: src/fragmentation/fragmentation.c:454 2802#: src/fragmentation/fragmentation.c:456
2813msgid "# fragment acknowledgements received" 2803msgid "# fragment acknowledgements received"
2814msgstr "" 2804msgstr ""
2815 2805
2816#: src/fragmentation/fragmentation.c:461 2806#: src/fragmentation/fragmentation.c:463
2817msgid "# bits removed from fragmentation ACKs" 2807msgid "# bits removed from fragmentation ACKs"
2818msgstr "" 2808msgstr ""
2819 2809
2820#: src/fragmentation/fragmentation.c:485 2810#: src/fragmentation/fragmentation.c:487
2821#, fuzzy 2811#, fuzzy
2822msgid "# fragmentation transmissions completed" 2812msgid "# fragmentation transmissions completed"
2823msgstr "# klartext PONG-meddelanden mottagna" 2813msgstr "# klartext PONG-meddelanden mottagna"
2824 2814
2825#: src/fs/fs_api.c:497 2815#: src/fs/fs_api.c:499
2826#, fuzzy, c-format 2816#, fuzzy, c-format
2827msgid "Could not open file `%s': %s" 2817msgid "Could not open file `%s': %s"
2828msgstr "Kunde inte slå upp \"%s\": %s\n" 2818msgstr "Kunde inte slå upp \"%s\": %s\n"
2829 2819
2830#: src/fs/fs_api.c:508 2820#: src/fs/fs_api.c:510
2831#, fuzzy, c-format 2821#, fuzzy, c-format
2832msgid "Could not read file `%s': %s" 2822msgid "Could not read file `%s': %s"
2833msgstr "Kunde inte slå upp \"%s\": %s\n" 2823msgstr "Kunde inte slå upp \"%s\": %s\n"
2834 2824
2835#: src/fs/fs_api.c:516 2825#: src/fs/fs_api.c:518
2836#, c-format 2826#, c-format
2837msgid "Short read reading from file `%s'!" 2827msgid "Short read reading from file `%s'!"
2838msgstr "" 2828msgstr ""
2839 2829
2840#: src/fs/fs_api.c:1124 2830#: src/fs/fs_api.c:1126
2841#, fuzzy, c-format 2831#, fuzzy, c-format
2842msgid "Failed to resume publishing information `%s': %s\n" 2832msgid "Failed to resume publishing information `%s': %s\n"
2843msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2833msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2844 2834
2845#: src/fs/fs_api.c:1644 2835#: src/fs/fs_api.c:1646
2846#, c-format 2836#, c-format
2847msgid "Failure while resuming publishing operation `%s': %s\n" 2837msgid "Failure while resuming publishing operation `%s': %s\n"
2848msgstr "" 2838msgstr ""
2849 2839
2850#: src/fs/fs_api.c:1660 2840#: src/fs/fs_api.c:1662
2851#, fuzzy, c-format 2841#, fuzzy, c-format
2852msgid "Failed to resume publishing operation `%s': %s\n" 2842msgid "Failed to resume publishing operation `%s': %s\n"
2853msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2843msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2854 2844
2855#: src/fs/fs_api.c:2320 2845#: src/fs/fs_api.c:2322
2856#, c-format 2846#, c-format
2857msgid "Failure while resuming unindexing operation `%s': %s\n" 2847msgid "Failure while resuming unindexing operation `%s': %s\n"
2858msgstr "" 2848msgstr ""
2859 2849
2860#: src/fs/fs_api.c:2330 2850#: src/fs/fs_api.c:2332
2861#, fuzzy, c-format 2851#, fuzzy, c-format
2862msgid "Failed to resume unindexing operation `%s': %s\n" 2852msgid "Failed to resume unindexing operation `%s': %s\n"
2863msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2853msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2864 2854
2865#: src/fs/fs_api.c:2458 src/fs/fs_api.c:2704 2855#: src/fs/fs_api.c:2460 src/fs/fs_api.c:2706
2866#, fuzzy, c-format 2856#, fuzzy, c-format
2867msgid "Failed to resume sub-download `%s': %s\n" 2857msgid "Failed to resume sub-download `%s': %s\n"
2868msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2858msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2869 2859
2870#: src/fs/fs_api.c:2476 2860#: src/fs/fs_api.c:2478
2871#, fuzzy, c-format 2861#, fuzzy, c-format
2872msgid "Failed to resume sub-search `%s': %s\n" 2862msgid "Failed to resume sub-search `%s': %s\n"
2873msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2863msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2874 2864
2875#: src/fs/fs_api.c:2491 src/fs/fs_api.c:2510 src/fs/fs_api.c:3014 2865#: src/fs/fs_api.c:2493 src/fs/fs_api.c:2512 src/fs/fs_api.c:3016
2876#, c-format 2866#, c-format
2877msgid "Failure while resuming search operation `%s': %s\n" 2867msgid "Failure while resuming search operation `%s': %s\n"
2878msgstr "" 2868msgstr ""
2879 2869
2880#: src/fs/fs_api.c:2694 2870#: src/fs/fs_api.c:2696
2881#, c-format 2871#, c-format
2882msgid "Failed to resume sub-download `%s': could not open file `%s'\n" 2872msgid "Failed to resume sub-download `%s': could not open file `%s'\n"
2883msgstr "" 2873msgstr ""
2884 2874
2885#: src/fs/fs_api.c:2957 2875#: src/fs/fs_api.c:2959
2886msgid "Could not resume running search, will resume as paused search\n" 2876msgid "Could not resume running search, will resume as paused search\n"
2887msgstr "" 2877msgstr ""
2888 2878
2889#: src/fs/fs_api.c:3052 2879#: src/fs/fs_api.c:3054
2890#, c-format 2880#, c-format
2891msgid "Failure while resuming download operation `%s': %s\n" 2881msgid "Failure while resuming download operation `%s': %s\n"
2892msgstr "" 2882msgstr ""
2893 2883
2894#: src/fs/fs_directory.c:211 2884#: src/fs/fs_directory.c:213
2895#, fuzzy 2885#, fuzzy
2896msgid "MAGIC mismatch. This is not a GNUnet directory.\n" 2886msgid "MAGIC mismatch. This is not a GNUnet directory.\n"
2897msgstr "Filformatsfel (inte en GNUnet-katalog?)\n" 2887msgstr "Filformatsfel (inte en GNUnet-katalog?)\n"
2898 2888
2899#: src/fs/fs_download.c:308 2889#: src/fs/fs_download.c:310
2900msgid "" 2890msgid ""
2901"Recursive downloads of directories larger than 4 GB are not supported on 32-" 2891"Recursive downloads of directories larger than 4 GB are not supported on 32-"
2902"bit systems\n" 2892"bit systems\n"
2903msgstr "" 2893msgstr ""
2904 2894
2905#: src/fs/fs_download.c:333 2895#: src/fs/fs_download.c:335
2906msgid "Directory too large for system address space\n" 2896msgid "Directory too large for system address space\n"
2907msgstr "" 2897msgstr ""
2908 2898
2909#: src/fs/fs_download.c:345 2899#: src/fs/fs_download.c:347
2910#, fuzzy, c-format 2900#, fuzzy, c-format
2911msgid "" 2901msgid ""
2912"Failed to access full directroy contents of `%s' for recursive download\n" 2902"Failed to access full directroy contents of `%s' for recursive download\n"
2913msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 2903msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
2914 2904
2915#: src/fs/fs_download.c:532 src/fs/fs_download.c:544 2905#: src/fs/fs_download.c:534 src/fs/fs_download.c:546
2916#, fuzzy, c-format 2906#, fuzzy, c-format
2917msgid "Failed to open file `%s' for writing" 2907msgid "Failed to open file `%s' for writing"
2918msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2908msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2919 2909
2920#: src/fs/fs_download.c:954 2910#: src/fs/fs_download.c:956
2921#, fuzzy, c-format 2911#, fuzzy, c-format
2922msgid "Failed to create directory for recursive download of `%s'\n" 2912msgid "Failed to create directory for recursive download of `%s'\n"
2923msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 2913msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
2924 2914
2925#: src/fs/fs_download.c:1045 2915#: src/fs/fs_download.c:1047
2926#, c-format 2916#, c-format
2927msgid "" 2917msgid ""
2928"Internal error or bogus download URI (expected %u bytes at depth %u and " 2918"Internal error or bogus download URI (expected %u bytes at depth %u and "
2929"offset %llu/%llu, got %u bytes)" 2919"offset %llu/%llu, got %u bytes)"
2930msgstr "" 2920msgstr ""
2931 2921
2932#: src/fs/fs_download.c:1073 2922#: src/fs/fs_download.c:1075
2933msgid "internal error decrypting content" 2923msgid "internal error decrypting content"
2934msgstr "" 2924msgstr ""
2935 2925
2936#: src/fs/fs_download.c:1097 2926#: src/fs/fs_download.c:1099
2937#, fuzzy, c-format 2927#, fuzzy, c-format
2938msgid "Download failed: could not open file `%s': %s" 2928msgid "Download failed: could not open file `%s': %s"
2939msgstr "Kunde inte slå upp \"%s\": %s\n" 2929msgstr "Kunde inte slå upp \"%s\": %s\n"
2940 2930
2941#: src/fs/fs_download.c:1109 2931#: src/fs/fs_download.c:1111
2942#, fuzzy, c-format 2932#, fuzzy, c-format
2943msgid "Failed to seek to offset %llu in file `%s': %s" 2933msgid "Failed to seek to offset %llu in file `%s': %s"
2944msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2934msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2945 2935
2946#: src/fs/fs_download.c:1118 2936#: src/fs/fs_download.c:1120
2947#, fuzzy, c-format 2937#, fuzzy, c-format
2948msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s" 2938msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s"
2949msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2939msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2950 2940
2951#: src/fs/fs_download.c:1218 2941#: src/fs/fs_download.c:1220
2952#, fuzzy 2942#, fuzzy
2953msgid "internal error decoding tree" 2943msgid "internal error decoding tree"
2954msgstr "=\tFel vid läsning av katalog.\n" 2944msgstr "=\tFel vid läsning av katalog.\n"
2955 2945
2956#: src/fs/fs_download.c:1883 2946#: src/fs/fs_download.c:1885
2957#, fuzzy 2947#, fuzzy
2958msgid "Invalid URI" 2948msgid "Invalid URI"
2959msgstr "Ogiltiga argument: " 2949msgstr "Ogiltiga argument: "
2960 2950
2961#: src/fs/fs_getopt.c:224 2951#: src/fs/fs_getopt.c:235
2962#, c-format 2952#, c-format
2963msgid "" 2953msgid ""
2964"Unknown metadata type in metadata option `%s'. Using metadata type " 2954"Unknown metadata type in metadata option `%s'. Using metadata type "
2965"`unknown' instead.\n" 2955"`unknown' instead.\n"
2966msgstr "" 2956msgstr ""
2967 2957
2968#: src/fs/fs_list_indexed.c:150 2958#: src/fs/fs_list_indexed.c:152
2969#, fuzzy, c-format 2959#, fuzzy, c-format
2970msgid "Failed to receive response from `%s' service.\n" 2960msgid "Failed to receive response from `%s' service.\n"
2971msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n" 2961msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n"
2972 2962
2973#: src/fs/fs_list_indexed.c:194 2963#: src/fs/fs_list_indexed.c:196
2974#, fuzzy, c-format 2964#, fuzzy, c-format
2975msgid "Failed to not connect to `%s' service.\n" 2965msgid "Failed to not connect to `%s' service.\n"
2976msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 2966msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
2977 2967
2978#: src/fs/fs_misc.c:126 2968#: src/fs/fs_misc.c:128
2979#, fuzzy, c-format 2969#, fuzzy, c-format
2980msgid "Did not find mime type `%s' in extension list.\n" 2970msgid "Did not find mime type `%s' in extension list.\n"
2981msgstr "Kunde inte hitta motpart \"%s\" i routingtabell!\n" 2971msgstr "Kunde inte hitta motpart \"%s\" i routingtabell!\n"
2982 2972
2983#: src/fs/fs_namespace.c:205 2973#: src/fs/fs_namespace.c:207
2984#, fuzzy, c-format 2974#, fuzzy, c-format
2985msgid "Failed to open `%s' for writing: %s\n" 2975msgid "Failed to open `%s' for writing: %s\n"
2986msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 2976msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
2987 2977
2988#: src/fs/fs_namespace.c:230 2978#: src/fs/fs_namespace.c:232
2989#, fuzzy, c-format 2979#, fuzzy, c-format
2990msgid "Failed to write `%s': %s\n" 2980msgid "Failed to write `%s': %s\n"
2991msgstr "Fel vid %s:%d.\n" 2981msgstr "Fel vid %s:%d.\n"
2992 2982
2993#: src/fs/fs_namespace.c:322 2983#: src/fs/fs_namespace.c:324
2994#, fuzzy, c-format 2984#, fuzzy, c-format
2995msgid "Failed to read `%s': %s\n" 2985msgid "Failed to read `%s': %s\n"
2996msgstr "Fel vid %s:%d.\n" 2986msgstr "Fel vid %s:%d.\n"
2997 2987
2998#: src/fs/fs_namespace.c:468 2988#: src/fs/fs_namespace.c:470
2999#, fuzzy 2989#, fuzzy
3000msgid "Failed to connect to datastore." 2990msgid "Failed to connect to datastore."
3001msgstr "Misslyckades att ansluta till gnunetd.\n" 2991msgstr "Misslyckades att ansluta till gnunetd.\n"
3002 2992
3003#: src/fs/fs_publish.c:125 src/fs/fs_publish.c:436 2993#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:438
3004#, fuzzy, c-format 2994#, fuzzy, c-format
3005msgid "Publishing failed: %s" 2995msgid "Publishing failed: %s"
3006msgstr "" 2996msgstr ""
3007"\n" 2997"\n"
3008"Fel vid uppladdning av fil: %s\n" 2998"Fel vid uppladdning av fil: %s\n"
3009 2999
3010#: src/fs/fs_publish.c:722 src/fs/fs_publish.c:776 src/fs/fs_publish.c:821 3000#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
3011#: src/fs/fs_publish.c:842 src/fs/fs_publish.c:872 src/fs/fs_publish.c:1138 3001#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
3012#, fuzzy, c-format 3002#, fuzzy, c-format
3013msgid "Can not index file `%s': %s. Will try to insert instead.\n" 3003msgid "Can not index file `%s': %s. Will try to insert instead.\n"
3014msgstr "Indexering av fil \"%s\" misslyckades. Försöker att infoga fil...\n" 3004msgstr "Indexering av fil \"%s\" misslyckades. Försöker att infoga fil...\n"
3015 3005
3016#: src/fs/fs_publish.c:778 3006#: src/fs/fs_publish.c:780
3017#, fuzzy 3007#, fuzzy
3018msgid "error on index-start request to `fs' service" 3008msgid "error on index-start request to `fs' service"
3019msgstr "Misslyckades att ansluta till gnunetd.\n" 3009msgstr "Misslyckades att ansluta till gnunetd.\n"
3020 3010
3021#: src/fs/fs_publish.c:823 3011#: src/fs/fs_publish.c:825
3022msgid "failed to compute hash" 3012msgid "failed to compute hash"
3023msgstr "" 3013msgstr ""
3024 3014
3025#: src/fs/fs_publish.c:843 3015#: src/fs/fs_publish.c:845
3026msgid "filename too long" 3016msgid "filename too long"
3027msgstr "" 3017msgstr ""
3028 3018
3029#: src/fs/fs_publish.c:874 3019#: src/fs/fs_publish.c:876
3030#, fuzzy 3020#, fuzzy
3031msgid "could not connect to `fs' service" 3021msgid "could not connect to `fs' service"
3032msgstr "Kunde inte ansluta till gnunetd.\n" 3022msgstr "Kunde inte ansluta till gnunetd.\n"
3033 3023
3034#: src/fs/fs_publish.c:900 3024#: src/fs/fs_publish.c:902
3035#, fuzzy, c-format 3025#, fuzzy, c-format
3036msgid "Failed to get file identifiers for `%s'\n" 3026msgid "Failed to get file identifiers for `%s'\n"
3037msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 3027msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
3038 3028
3039#: src/fs/fs_publish.c:989 src/fs/fs_publish.c:1025 3029#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
3040msgid "Can not create LOC URI. Will continue with CHK instead.\n" 3030msgid "Can not create LOC URI. Will continue with CHK instead.\n"
3041msgstr "" 3031msgstr ""
3042 3032
3043#: src/fs/fs_publish.c:1092 3033#: src/fs/fs_publish.c:1094
3044#, fuzzy, c-format 3034#, fuzzy, c-format
3045msgid "Recursive upload failed at `%s': %s" 3035msgid "Recursive upload failed at `%s': %s"
3046msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 3036msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
3047 3037
3048#: src/fs/fs_publish.c:1100 3038#: src/fs/fs_publish.c:1102
3049#, fuzzy, c-format 3039#, fuzzy, c-format
3050msgid "Recursive upload failed: %s" 3040msgid "Recursive upload failed: %s"
3051msgstr "" 3041msgstr ""
3052"\n" 3042"\n"
3053"Fel vid uppladdning av fil: %s\n" 3043"Fel vid uppladdning av fil: %s\n"
3054 3044
3055#: src/fs/fs_publish.c:1140 3045#: src/fs/fs_publish.c:1142
3056msgid "needs to be an actual file" 3046msgid "needs to be an actual file"
3057msgstr "" 3047msgstr ""
3058 3048
3059#: src/fs/fs_publish.c:1379 3049#: src/fs/fs_publish.c:1381
3060#, fuzzy, c-format 3050#, fuzzy, c-format
3061msgid "Datastore failure: %s" 3051msgid "Datastore failure: %s"
3062msgstr " Anslutning misslyckades (fel?)\n" 3052msgstr " Anslutning misslyckades (fel?)\n"
3063 3053
3064#: src/fs/fs_publish.c:1470 3054#: src/fs/fs_publish.c:1472
3065#, c-format 3055#, c-format
3066msgid "Reserving space for %u entries and %llu bytes for publication\n" 3056msgid "Reserving space for %u entries and %llu bytes for publication\n"
3067msgstr "" 3057msgstr ""
3068 3058
3069#: src/fs/fs_publish_ksk.c:218 3059#: src/fs/fs_publish_ksk.c:220
3070#, fuzzy 3060#, fuzzy
3071msgid "Could not connect to datastore." 3061msgid "Could not connect to datastore."
3072msgstr "Kunde inte ansluta till gnunetd.\n" 3062msgstr "Kunde inte ansluta till gnunetd.\n"
3073 3063
3074#: src/fs/fs_publish_ublock.c:239 3064#: src/fs/fs_publish_ublock.c:241
3075#, fuzzy 3065#, fuzzy
3076msgid "Internal error." 3066msgid "Internal error."
3077msgstr "Okänt fel.\n" 3067msgstr "Okänt fel.\n"
3078 3068
3079#: src/fs/fs_search.c:820 src/fs/fs_search.c:890 3069#: src/fs/fs_search.c:822 src/fs/fs_search.c:892
3080#, fuzzy, c-format 3070#, fuzzy, c-format
3081msgid "Failed to parse URI `%s': %s\n" 3071msgid "Failed to parse URI `%s': %s\n"
3082msgstr "Fil \"%s\" har URI: %s\n" 3072msgstr "Fil \"%s\" har URI: %s\n"
3083 3073
3084#: src/fs/fs_search.c:977 3074#: src/fs/fs_search.c:979
3085#, c-format 3075#, c-format
3086msgid "Got result with unknown block type `%d', ignoring" 3076msgid "Got result with unknown block type `%d', ignoring"
3087msgstr "" 3077msgstr ""
3088 3078
3089#: src/fs/fs_unindex.c:61 3079#: src/fs/fs_unindex.c:63
3090msgid "Failed to find given position in file" 3080msgid "Failed to find given position in file"
3091msgstr "" 3081msgstr ""
3092 3082
3093#: src/fs/fs_unindex.c:66 3083#: src/fs/fs_unindex.c:68
3094#, fuzzy 3084#, fuzzy
3095msgid "Failed to read file" 3085msgid "Failed to read file"
3096msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 3086msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
3097 3087
3098#: src/fs/fs_unindex.c:273 3088#: src/fs/fs_unindex.c:275
3099#, fuzzy 3089#, fuzzy
3100msgid "Error communicating with `fs' service." 3090msgid "Error communicating with `fs' service."
3101msgstr "Skriv ut information om GNUnets motparter." 3091msgstr "Skriv ut information om GNUnets motparter."
3102 3092
3103#: src/fs/fs_unindex.c:324 3093#: src/fs/fs_unindex.c:326
3104#, fuzzy 3094#, fuzzy
3105msgid "Failed to connect to FS service for unindexing." 3095msgid "Failed to connect to FS service for unindexing."
3106msgstr "Misslyckades att ansluta till gnunetd.\n" 3096msgstr "Misslyckades att ansluta till gnunetd.\n"
3107 3097
3108#: src/fs/fs_unindex.c:374 src/fs/fs_unindex.c:386 3098#: src/fs/fs_unindex.c:376 src/fs/fs_unindex.c:388
3109#, fuzzy 3099#, fuzzy
3110msgid "Failed to get KSKs from directory scan." 3100msgid "Failed to get KSKs from directory scan."
3111msgstr "Filformatsfel (inte en GNUnet-katalog?)\n" 3101msgstr "Filformatsfel (inte en GNUnet-katalog?)\n"
3112 3102
3113#: src/fs/fs_unindex.c:382 3103#: src/fs/fs_unindex.c:384
3114#, fuzzy, c-format 3104#, fuzzy, c-format
3115msgid "Internal error scanning `%s'.\n" 3105msgid "Internal error scanning `%s'.\n"
3116msgstr "=\tFel vid läsning av katalog.\n" 3106msgstr "=\tFel vid läsning av katalog.\n"
3117 3107
3118#: src/fs/fs_unindex.c:441 3108#: src/fs/fs_unindex.c:443
3119#, fuzzy, c-format 3109#, fuzzy, c-format
3120msgid "Failed to remove UBlock: %s\n" 3110msgid "Failed to remove UBlock: %s\n"
3121msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 3111msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
3122 3112
3123#: src/fs/fs_unindex.c:586 src/fs/fs_unindex.c:650 3113#: src/fs/fs_unindex.c:588 src/fs/fs_unindex.c:652
3124#, fuzzy 3114#, fuzzy
3125msgid "Failed to connect to `datastore' service." 3115msgid "Failed to connect to `datastore' service."
3126msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 3116msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
3127 3117
3128#: src/fs/fs_unindex.c:663 3118#: src/fs/fs_unindex.c:665
3129#, fuzzy 3119#, fuzzy
3130msgid "Failed to open file for unindexing." 3120msgid "Failed to open file for unindexing."
3131msgstr "Misslyckades att ansluta till gnunetd.\n" 3121msgstr "Misslyckades att ansluta till gnunetd.\n"
3132 3122
3133#: src/fs/fs_unindex.c:702 3123#: src/fs/fs_unindex.c:704
3134#, fuzzy 3124#, fuzzy
3135msgid "Failed to compute hash of file." 3125msgid "Failed to compute hash of file."
3136msgstr "Misslyckades att ansluta till gnunetd.\n" 3126msgstr "Misslyckades att ansluta till gnunetd.\n"
3137 3127
3138#: src/fs/fs_uri.c:232 3128#: src/fs/fs_uri.c:234
3139#, fuzzy, no-c-format 3129#, fuzzy, no-c-format
3140msgid "Malformed KSK URI (`%' must be followed by HEX number)" 3130msgid "Malformed KSK URI (`%' must be followed by HEX number)"
3141msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n" 3131msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n"
3142 3132
3143#: src/fs/fs_uri.c:291 3133#: src/fs/fs_uri.c:293
3144#, fuzzy 3134#, fuzzy
3145msgid "Malformed KSK URI (must not begin or end with `+')" 3135msgid "Malformed KSK URI (must not begin or end with `+')"
3146msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n" 3136msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n"
3147 3137
3148#: src/fs/fs_uri.c:309 3138#: src/fs/fs_uri.c:311
3149#, fuzzy 3139#, fuzzy
3150msgid "Malformed KSK URI (`++' not allowed)" 3140msgid "Malformed KSK URI (`++' not allowed)"
3151msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n" 3141msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n"
3152 3142
3153#: src/fs/fs_uri.c:316 3143#: src/fs/fs_uri.c:318
3154#, fuzzy 3144#, fuzzy
3155msgid "Malformed KSK URI (quotes not balanced)" 3145msgid "Malformed KSK URI (quotes not balanced)"
3156msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n" 3146msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n"
3157 3147
3158#: src/fs/fs_uri.c:386 3148#: src/fs/fs_uri.c:388
3159msgid "Malformed SKS URI (wrong syntax)" 3149msgid "Malformed SKS URI (wrong syntax)"
3160msgstr "" 3150msgstr ""
3161 3151
3162#: src/fs/fs_uri.c:427 3152#: src/fs/fs_uri.c:429
3163msgid "Malformed CHK URI (wrong syntax)" 3153msgid "Malformed CHK URI (wrong syntax)"
3164msgstr "" 3154msgstr ""
3165 3155
3166#: src/fs/fs_uri.c:442 3156#: src/fs/fs_uri.c:444
3167msgid "Malformed CHK URI (failed to decode CHK)" 3157msgid "Malformed CHK URI (failed to decode CHK)"
3168msgstr "" 3158msgstr ""
3169 3159
3170#: src/fs/fs_uri.c:521 3160#: src/fs/fs_uri.c:523
3171msgid "LOC URI malformed (wrong syntax)" 3161msgid "LOC URI malformed (wrong syntax)"
3172msgstr "" 3162msgstr ""
3173 3163
3174#: src/fs/fs_uri.c:536 3164#: src/fs/fs_uri.c:538
3175msgid "LOC URI malformed (no CHK)" 3165msgid "LOC URI malformed (no CHK)"
3176msgstr "" 3166msgstr ""
3177 3167
3178#: src/fs/fs_uri.c:546 3168#: src/fs/fs_uri.c:548
3179msgid "LOC URI malformed (missing LOC)" 3169msgid "LOC URI malformed (missing LOC)"
3180msgstr "" 3170msgstr ""
3181 3171
3182#: src/fs/fs_uri.c:554 3172#: src/fs/fs_uri.c:556
3183msgid "LOC URI malformed (wrong syntax for public key)" 3173msgid "LOC URI malformed (wrong syntax for public key)"
3184msgstr "" 3174msgstr ""
3185 3175
3186#: src/fs/fs_uri.c:562 3176#: src/fs/fs_uri.c:564
3187msgid "LOC URI malformed (could not decode public key)" 3177msgid "LOC URI malformed (could not decode public key)"
3188msgstr "" 3178msgstr ""
3189 3179
3190#: src/fs/fs_uri.c:568 3180#: src/fs/fs_uri.c:570
3191msgid "LOC URI malformed (could not find signature)" 3181msgid "LOC URI malformed (could not find signature)"
3192msgstr "" 3182msgstr ""
3193 3183
3194#: src/fs/fs_uri.c:574 3184#: src/fs/fs_uri.c:576
3195msgid "LOC URI malformed (wrong syntax for signature)" 3185msgid "LOC URI malformed (wrong syntax for signature)"
3196msgstr "" 3186msgstr ""
3197 3187
3198#: src/fs/fs_uri.c:583 3188#: src/fs/fs_uri.c:585
3199msgid "LOC URI malformed (could not decode signature)" 3189msgid "LOC URI malformed (could not decode signature)"
3200msgstr "" 3190msgstr ""
3201 3191
3202#: src/fs/fs_uri.c:589 3192#: src/fs/fs_uri.c:591
3203msgid "LOC URI malformed (wrong syntax for expiration time)" 3193msgid "LOC URI malformed (wrong syntax for expiration time)"
3204msgstr "" 3194msgstr ""
3205 3195
3206#: src/fs/fs_uri.c:595 3196#: src/fs/fs_uri.c:597
3207msgid "LOC URI malformed (could not parse expiration time)" 3197msgid "LOC URI malformed (could not parse expiration time)"
3208msgstr "" 3198msgstr ""
3209 3199
3210#: src/fs/fs_uri.c:607 3200#: src/fs/fs_uri.c:609
3211msgid "LOC URI malformed (signature failed validation)" 3201msgid "LOC URI malformed (signature failed validation)"
3212msgstr "" 3202msgstr ""
3213 3203
3214#: src/fs/fs_uri.c:641 3204#: src/fs/fs_uri.c:643
3215#, fuzzy 3205#, fuzzy
3216msgid "invalid argument" 3206msgid "invalid argument"
3217msgstr "Ogiltigt argument: \"%s\"\n" 3207msgstr "Ogiltigt argument: \"%s\"\n"
3218 3208
3219#: src/fs/fs_uri.c:653 3209#: src/fs/fs_uri.c:655
3220msgid "Unrecognized URI type" 3210msgid "Unrecognized URI type"
3221msgstr "" 3211msgstr ""
3222 3212
3223#: src/fs/fs_uri.c:1057 src/fs/fs_uri.c:1084 3213#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
3224msgid "No keywords specified!\n" 3214msgid "No keywords specified!\n"
3225msgstr "Inga nyckelord angivna!\n" 3215msgstr "Inga nyckelord angivna!\n"
3226 3216
3227#: src/fs/fs_uri.c:1090 3217#: src/fs/fs_uri.c:1092
3228msgid "Number of double-quotes not balanced!\n" 3218msgid "Number of double-quotes not balanced!\n"
3229msgstr "" 3219msgstr ""
3230 3220
3231#: src/fs/gnunet-auto-share.c:230 3221#: src/fs/gnunet-auto-share.c:232
3232#, fuzzy, c-format 3222#, fuzzy, c-format
3233msgid "Failed to load state: %s\n" 3223msgid "Failed to load state: %s\n"
3234msgstr "Misslyckades att starta samling.\n" 3224msgstr "Misslyckades att starta samling.\n"
3235 3225
3236#: src/fs/gnunet-auto-share.c:283 src/fs/gnunet-auto-share.c:293 3226#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
3237#: src/fs/gnunet-auto-share.c:303 3227#: src/fs/gnunet-auto-share.c:305
3238#, fuzzy, c-format 3228#, fuzzy, c-format
3239msgid "Failed to save state to file %s\n" 3229msgid "Failed to save state to file %s\n"
3240msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 3230msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
3241 3231
3242#: src/fs/gnunet-auto-share.c:405 3232#: src/fs/gnunet-auto-share.c:407
3243#, c-format 3233#, c-format
3244msgid "Publication of `%s' done\n" 3234msgid "Publication of `%s' done\n"
3245msgstr "" 3235msgstr ""
3246 3236
3247#: src/fs/gnunet-auto-share.c:492 3237#: src/fs/gnunet-auto-share.c:494
3248#, fuzzy, c-format 3238#, fuzzy, c-format
3249msgid "Publishing `%s'\n" 3239msgid "Publishing `%s'\n"
3250msgstr "" 3240msgstr ""
3251"\n" 3241"\n"
3252"Fel vid uppladdning av fil: %s\n" 3242"Fel vid uppladdning av fil: %s\n"
3253 3243
3254#: src/fs/gnunet-auto-share.c:502 3244#: src/fs/gnunet-auto-share.c:504
3255#, fuzzy, c-format 3245#, fuzzy, c-format
3256msgid "Failed to run `%s'\n" 3246msgid "Failed to run `%s'\n"
3257msgstr "Misslyckades att starta samling.\n" 3247msgstr "Misslyckades att starta samling.\n"
3258 3248
3259#: src/fs/gnunet-auto-share.c:711 3249#: src/fs/gnunet-auto-share.c:713
3260#, fuzzy, c-format 3250#, fuzzy, c-format
3261msgid "" 3251msgid ""
3262"You must specify one and only one directory name for automatic publication.\n" 3252"You must specify one and only one directory name for automatic publication.\n"
3263msgstr "Du måste ange en och endast en fil att avindexera.\n" 3253msgstr "Du måste ange en och endast en fil att avindexera.\n"
3264 3254
3265#: src/fs/gnunet-auto-share.c:765 src/fs/gnunet-publish.c:898 3255#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
3266msgid "set the desired LEVEL of sender-anonymity" 3256msgid "set the desired LEVEL of sender-anonymity"
3267msgstr "" 3257msgstr ""
3268 3258
3269#: src/fs/gnunet-auto-share.c:770 src/fs/gnunet-publish.c:902 3259#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
3270msgid "disable adding the creation time to the metadata of the uploaded file" 3260msgid "disable adding the creation time to the metadata of the uploaded file"
3271msgstr "" 3261msgstr ""
3272 3262
3273#: src/fs/gnunet-auto-share.c:775 src/fs/gnunet-publish.c:907 3263#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
3274msgid "do not use libextractor to add keywords or metadata" 3264msgid "do not use libextractor to add keywords or metadata"
3275msgstr "" 3265msgstr ""
3276 3266
3277#: src/fs/gnunet-auto-share.c:781 src/fs/gnunet-publish.c:942 3267#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
3278msgid "specify the priority of the content" 3268msgid "specify the priority of the content"
3279msgstr "ange prioritet för innehållet" 3269msgstr "ange prioritet för innehållet"
3280 3270
3281#: src/fs/gnunet-auto-share.c:787 src/fs/gnunet-publish.c:954 3271#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
3282msgid "set the desired replication LEVEL" 3272msgid "set the desired replication LEVEL"
3283msgstr "" 3273msgstr ""
3284 3274
3285#: src/fs/gnunet-auto-share.c:811 3275#: src/fs/gnunet-auto-share.c:813
3286msgid "Automatically publish files from a directory on GNUnet" 3276msgid "Automatically publish files from a directory on GNUnet"
3287msgstr "" 3277msgstr ""
3288 3278
3289#: src/fs/gnunet-daemon-fsprofiler.c:646 3279#: src/fs/gnunet-daemon-fsprofiler.c:648
3290msgid "Daemon to use file-sharing to measure its performance." 3280msgid "Daemon to use file-sharing to measure its performance."
3291msgstr "" 3281msgstr ""
3292 3282
3293#: src/fs/gnunet-directory.c:51 3283#: src/fs/gnunet-directory.c:53
3294#, c-format 3284#, c-format
3295msgid "\t<original file embedded in %u bytes of meta data>\n" 3285msgid "\t<original file embedded in %u bytes of meta data>\n"
3296msgstr "" 3286msgstr ""
3297 3287
3298#: src/fs/gnunet-directory.c:103 3288#: src/fs/gnunet-directory.c:105
3299#, fuzzy, c-format 3289#, fuzzy, c-format
3300msgid "Directory `%s' meta data:\n" 3290msgid "Directory `%s' meta data:\n"
3301msgstr "==> Katalog \"%s\":\n" 3291msgstr "==> Katalog \"%s\":\n"
3302 3292
3303#: src/fs/gnunet-directory.c:106 3293#: src/fs/gnunet-directory.c:108
3304#, fuzzy, c-format 3294#, fuzzy, c-format
3305msgid "Directory `%s' contents:\n" 3295msgid "Directory `%s' contents:\n"
3306msgstr "==> Katalog \"%s\":\n" 3296msgstr "==> Katalog \"%s\":\n"
3307 3297
3308#: src/fs/gnunet-directory.c:141 3298#: src/fs/gnunet-directory.c:143
3309#, fuzzy 3299#, fuzzy
3310msgid "You must specify a filename to inspect.\n" 3300msgid "You must specify a filename to inspect.\n"
3311msgstr "Du måste ange en lista av filer att lägga in.\n" 3301msgstr "Du måste ange en lista av filer att lägga in.\n"
3312 3302
3313#: src/fs/gnunet-directory.c:154 3303#: src/fs/gnunet-directory.c:156
3314#, fuzzy, c-format 3304#, fuzzy, c-format
3315msgid "Failed to read directory `%s'\n" 3305msgid "Failed to read directory `%s'\n"
3316msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 3306msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
3317 3307
3318#: src/fs/gnunet-directory.c:163 3308#: src/fs/gnunet-directory.c:165
3319#, fuzzy, c-format 3309#, fuzzy, c-format
3320msgid "`%s' is not a GNUnet directory\n" 3310msgid "`%s' is not a GNUnet directory\n"
3321msgstr "Filformatsfel (inte en GNUnet-katalog?)\n" 3311msgstr "Filformatsfel (inte en GNUnet-katalog?)\n"
3322 3312
3323#: src/fs/gnunet-directory.c:192 3313#: src/fs/gnunet-directory.c:194
3324#, fuzzy 3314#, fuzzy
3325msgid "Display contents of a GNUnet directory" 3315msgid "Display contents of a GNUnet directory"
3326msgstr "Filformatsfel (inte en GNUnet-katalog?)\n" 3316msgstr "Filformatsfel (inte en GNUnet-katalog?)\n"
3327 3317
3328#: src/fs/gnunet-download.c:137 3318#: src/fs/gnunet-download.c:139
3329#, fuzzy, c-format 3319#, fuzzy, c-format
3330msgid "Starting download `%s'.\n" 3320msgid "Starting download `%s'.\n"
3331msgstr "Startade samling \"%s\".\n" 3321msgstr "Startade samling \"%s\".\n"
3332 3322
3333#: src/fs/gnunet-download.c:147 3323#: src/fs/gnunet-download.c:149
3334#, fuzzy 3324#, fuzzy
3335msgid "<unknown time>" 3325msgid "<unknown time>"
3336msgstr "Okänt fel" 3326msgstr "Okänt fel"
3337 3327
3338#: src/fs/gnunet-download.c:156 3328#: src/fs/gnunet-download.c:158
3339#, c-format 3329#, c-format
3340msgid "" 3330msgid ""
3341"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to " 3331"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to "
3342"download\n" 3332"download\n"
3343msgstr "" 3333msgstr ""
3344 3334
3345#: src/fs/gnunet-download.c:182 3335#: src/fs/gnunet-download.c:184
3346#, fuzzy, c-format 3336#, fuzzy, c-format
3347msgid "Error downloading: %s.\n" 3337msgid "Error downloading: %s.\n"
3348msgstr "Fel vid nedladdning: %s\n" 3338msgstr "Fel vid nedladdning: %s\n"
3349 3339
3350#: src/fs/gnunet-download.c:199 3340#: src/fs/gnunet-download.c:201
3351#, fuzzy, c-format 3341#, fuzzy, c-format
3352msgid "Downloading `%s' done (%s/s).\n" 3342msgid "Downloading `%s' done (%s/s).\n"
3353msgstr "Uppladdning vägrades!" 3343msgstr "Uppladdning vägrades!"
3354 3344
3355#: src/fs/gnunet-download.c:214 src/fs/gnunet-publish.c:293 3345#: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
3356#: src/fs/gnunet-search.c:210 src/fs/gnunet-unindex.c:105 3346#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
3357#, c-format 3347#, c-format
3358msgid "Unexpected status: %d\n" 3348msgid "Unexpected status: %d\n"
3359msgstr "" 3349msgstr ""
3360 3350
3361#: src/fs/gnunet-download.c:244 3351#: src/fs/gnunet-download.c:246
3362#, fuzzy 3352#, fuzzy
3363msgid "You need to specify a URI argument.\n" 3353msgid "You need to specify a URI argument.\n"
3364msgstr "Du måste ange en och endast en fil att avindexera.\n" 3354msgstr "Du måste ange en och endast en fil att avindexera.\n"
3365 3355
3366#: src/fs/gnunet-download.c:251 src/fs/gnunet-publish.c:724 3356#: src/fs/gnunet-download.c:253 src/fs/gnunet-publish.c:727
3367#, fuzzy, c-format 3357#, fuzzy, c-format
3368msgid "Failed to parse URI: %s\n" 3358msgid "Failed to parse URI: %s\n"
3369msgstr "Fil \"%s\" har URI: %s\n" 3359msgstr "Fil \"%s\" har URI: %s\n"
3370 3360
3371#: src/fs/gnunet-download.c:262 3361#: src/fs/gnunet-download.c:264
3372msgid "Only CHK or LOC URIs supported.\n" 3362msgid "Only CHK or LOC URIs supported.\n"
3373msgstr "" 3363msgstr ""
3374 3364
3375#: src/fs/gnunet-download.c:271 3365#: src/fs/gnunet-download.c:273
3376msgid "Target filename must be specified.\n" 3366msgid "Target filename must be specified.\n"
3377msgstr "" 3367msgstr ""
3378 3368
3379#: src/fs/gnunet-download.c:289 src/fs/gnunet-publish.c:868 3369#: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
3380#: src/fs/gnunet-search.c:268 src/fs/gnunet-unindex.c:137 3370#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
3381#, fuzzy, c-format 3371#, fuzzy, c-format
3382msgid "Could not initialize `%s' subsystem.\n" 3372msgid "Could not initialize `%s' subsystem.\n"
3383msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 3373msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
3384 3374
3385#: src/fs/gnunet-download.c:337 src/fs/gnunet-search.c:311 3375#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
3386msgid "set the desired LEVEL of receiver-anonymity" 3376msgid "set the desired LEVEL of receiver-anonymity"
3387msgstr "" 3377msgstr ""
3388 3378
3389#: src/fs/gnunet-download.c:342 3379#: src/fs/gnunet-download.c:344
3390msgid "delete incomplete downloads (when aborted with CTRL-C)" 3380msgid "delete incomplete downloads (when aborted with CTRL-C)"
3391msgstr "" 3381msgstr ""
3392 3382
3393#: src/fs/gnunet-download.c:347 src/fs/gnunet-search.c:317 3383#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
3394msgid "only search the local peer (no P2P network search)" 3384msgid "only search the local peer (no P2P network search)"
3395msgstr "" 3385msgstr ""
3396 3386
3397#: src/fs/gnunet-download.c:352 3387#: src/fs/gnunet-download.c:354
3398msgid "write the file to FILENAME" 3388msgid "write the file to FILENAME"
3399msgstr "skriv filen till FILNAMN" 3389msgstr "skriv filen till FILNAMN"
3400 3390
3401#: src/fs/gnunet-download.c:357 3391#: src/fs/gnunet-download.c:359
3402msgid "set the maximum number of parallel downloads that is allowed" 3392msgid "set the maximum number of parallel downloads that is allowed"
3403msgstr "" 3393msgstr ""
3404 3394
3405#: src/fs/gnunet-download.c:362 3395#: src/fs/gnunet-download.c:364
3406msgid "set the maximum number of parallel requests for blocks that is allowed" 3396msgid "set the maximum number of parallel requests for blocks that is allowed"
3407msgstr "" 3397msgstr ""
3408 3398
3409#: src/fs/gnunet-download.c:366 3399#: src/fs/gnunet-download.c:368
3410msgid "download a GNUnet directory recursively" 3400msgid "download a GNUnet directory recursively"
3411msgstr "hämta en GNUnet-katalog rekursivt" 3401msgstr "hämta en GNUnet-katalog rekursivt"
3412 3402
3413#: src/fs/gnunet-download.c:384 3403#: src/fs/gnunet-download.c:386
3414msgid "" 3404msgid ""
3415"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/" 3405"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
3416"chk/...)" 3406"chk/...)"
3417msgstr "" 3407msgstr ""
3418 3408
3419#: src/fs/gnunet-fs.c:117 3409#: src/fs/gnunet-fs.c:119
3420msgid "print a list of all indexed files" 3410msgid "print a list of all indexed files"
3421msgstr "" 3411msgstr ""
3422 3412
3423#: src/fs/gnunet-fs.c:128 3413#: src/fs/gnunet-fs.c:130
3424#, fuzzy 3414#, fuzzy
3425msgid "Special file-sharing operations" 3415msgid "Special file-sharing operations"
3426msgstr "Visa alla alternativ" 3416msgstr "Visa alla alternativ"
3427 3417
3428#: src/fs/gnunet-fs-profiler.c:209 3418#: src/fs/gnunet-fs-profiler.c:211
3429msgid "run the experiment with COUNT peers" 3419msgid "run the experiment with COUNT peers"
3430msgstr "" 3420msgstr ""
3431 3421
3432#: src/fs/gnunet-fs-profiler.c:215 3422#: src/fs/gnunet-fs-profiler.c:217
3433msgid "specifies name of a file with the HOSTS the testbed should use" 3423msgid "specifies name of a file with the HOSTS the testbed should use"
3434msgstr "" 3424msgstr ""
3435 3425
3436#: src/fs/gnunet-fs-profiler.c:221 3426#: src/fs/gnunet-fs-profiler.c:223
3437msgid "automatically terminate experiment after DELAY" 3427msgid "automatically terminate experiment after DELAY"
3438msgstr "" 3428msgstr ""
3439 3429
3440#: src/fs/gnunet-fs-profiler.c:231 3430#: src/fs/gnunet-fs-profiler.c:233
3441msgid "run a testbed to measure file-sharing performance" 3431msgid "run a testbed to measure file-sharing performance"
3442msgstr "" 3432msgstr ""
3443 3433
3444#: src/fs/gnunet-publish.c:217 src/fs/gnunet-publish.c:229 3434#: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
3445#, c-format 3435#, c-format
3446msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" 3436msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
3447msgstr "" 3437msgstr ""
3448 3438
3449#: src/fs/gnunet-publish.c:237 3439#: src/fs/gnunet-publish.c:239
3450#, fuzzy, c-format 3440#, fuzzy, c-format
3451msgid "Error publishing: %s.\n" 3441msgid "Error publishing: %s.\n"
3452msgstr "Fel vid nedladdning: %s\n" 3442msgstr "Fel vid nedladdning: %s\n"
3453 3443
3454#: src/fs/gnunet-publish.c:244 3444#: src/fs/gnunet-publish.c:246
3455#, c-format 3445#, c-format
3456msgid "Publishing `%s' done.\n" 3446msgid "Publishing `%s' done.\n"
3457msgstr "" 3447msgstr ""
3458 3448
3459#: src/fs/gnunet-publish.c:249 3449#: src/fs/gnunet-publish.c:251
3460#, fuzzy, c-format 3450#, fuzzy, c-format
3461msgid "URI is `%s'.\n" 3451msgid "URI is `%s'.\n"
3462msgstr "Jag är ändpunkt \"%s\".\n" 3452msgstr "Jag är ändpunkt \"%s\".\n"
3463 3453
3464#: src/fs/gnunet-publish.c:257 3454#: src/fs/gnunet-publish.c:259
3465#, fuzzy, c-format 3455#, fuzzy, c-format
3466msgid "Namespace URI is `%s'.\n" 3456msgid "Namespace URI is `%s'.\n"
3467msgstr "Jag är ändpunkt \"%s\".\n" 3457msgstr "Jag är ändpunkt \"%s\".\n"
3468 3458
3469#: src/fs/gnunet-publish.c:273 3459#: src/fs/gnunet-publish.c:275
3470#, fuzzy 3460#, fuzzy
3471msgid "Starting cleanup after abort\n" 3461msgid "Starting cleanup after abort\n"
3472msgstr "\"%s\" uppstart klar.\n" 3462msgstr "\"%s\" uppstart klar.\n"
3473 3463
3474#: src/fs/gnunet-publish.c:280 3464#: src/fs/gnunet-publish.c:282
3475#, fuzzy 3465#, fuzzy
3476msgid "Cleanup after abort completed.\n" 3466msgid "Cleanup after abort completed.\n"
3477msgstr "\"%s\" uppstart klar.\n" 3467msgstr "\"%s\" uppstart klar.\n"
3478 3468
3479#: src/fs/gnunet-publish.c:286 3469#: src/fs/gnunet-publish.c:288
3480#, fuzzy 3470#, fuzzy
3481msgid "Cleanup after abort failed.\n" 3471msgid "Cleanup after abort failed.\n"
3482msgstr "\"%s\" uppstart klar.\n" 3472msgstr "\"%s\" uppstart klar.\n"
3483 3473
3484#: src/fs/gnunet-publish.c:428 3474#: src/fs/gnunet-publish.c:430
3485#, fuzzy, c-format 3475#, fuzzy, c-format
3486msgid "Meta data for file `%s' (%s)\n" 3476msgid "Meta data for file `%s' (%s)\n"
3487msgstr "Uppdaterar data för modul \"%s\"\n" 3477msgstr "Uppdaterar data för modul \"%s\"\n"
3488 3478
3489#: src/fs/gnunet-publish.c:433 3479#: src/fs/gnunet-publish.c:435
3490#, fuzzy, c-format 3480#, fuzzy, c-format
3491msgid "Keywords for file `%s' (%s)\n" 3481msgid "Keywords for file `%s' (%s)\n"
3492msgstr "Nyckelord för fil \"%s\":\n" 3482msgstr "Nyckelord för fil \"%s\":\n"
3493 3483
3494#: src/fs/gnunet-publish.c:587 3484#: src/fs/gnunet-publish.c:590
3495#, fuzzy 3485#, fuzzy
3496msgid "Could not publish\n" 3486msgid "Could not publish\n"
3497msgstr "Kunde inte köra \"%s\": %s\n" 3487msgstr "Kunde inte köra \"%s\": %s\n"
3498 3488
3499#: src/fs/gnunet-publish.c:612 3489#: src/fs/gnunet-publish.c:615
3500#, fuzzy 3490#, fuzzy
3501msgid "Could not start publishing.\n" 3491msgid "Could not start publishing.\n"
3502msgstr "Kunde inte slå upp \"%s\": %s\n" 3492msgstr "Kunde inte slå upp \"%s\": %s\n"
3503 3493
3504#: src/fs/gnunet-publish.c:646 3494#: src/fs/gnunet-publish.c:649
3505#, fuzzy, c-format 3495#, fuzzy, c-format
3506msgid "Scanning directory `%s'.\n" 3496msgid "Scanning directory `%s'.\n"
3507msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 3497msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
3508 3498
3509#: src/fs/gnunet-publish.c:650 3499#: src/fs/gnunet-publish.c:653
3510#, fuzzy, c-format 3500#, fuzzy, c-format
3511msgid "Scanning file `%s'.\n" 3501msgid "Scanning file `%s'.\n"
3512msgstr "Startade samling \"%s\".\n" 3502msgstr "Startade samling \"%s\".\n"
3513 3503
3514#: src/fs/gnunet-publish.c:656 3504#: src/fs/gnunet-publish.c:659
3515#, c-format 3505#, c-format
3516msgid "There was trouble processing file `%s', skipping it.\n" 3506msgid "There was trouble processing file `%s', skipping it.\n"
3517msgstr "" 3507msgstr ""
3518 3508
3519#: src/fs/gnunet-publish.c:663 3509#: src/fs/gnunet-publish.c:666
3520#, fuzzy 3510#, fuzzy
3521msgid "Preprocessing complete.\n" 3511msgid "Preprocessing complete.\n"
3522msgstr "Nedstängning klar.\n" 3512msgstr "Nedstängning klar.\n"
3523 3513
3524#: src/fs/gnunet-publish.c:668 3514#: src/fs/gnunet-publish.c:671
3525#, fuzzy, c-format 3515#, fuzzy, c-format
3526msgid "Extracting meta data from file `%s' complete.\n" 3516msgid "Extracting meta data from file `%s' complete.\n"
3527msgstr "Uppdaterar data för modul \"%s\"\n" 3517msgstr "Uppdaterar data för modul \"%s\"\n"
3528 3518
3529#: src/fs/gnunet-publish.c:675 3519#: src/fs/gnunet-publish.c:678
3530msgid "Meta data extraction has finished.\n" 3520msgid "Meta data extraction has finished.\n"
3531msgstr "" 3521msgstr ""
3532 3522
3533#: src/fs/gnunet-publish.c:684 3523#: src/fs/gnunet-publish.c:687
3534#, fuzzy 3524#, fuzzy
3535msgid "Internal error scanning directory.\n" 3525msgid "Internal error scanning directory.\n"
3536msgstr "=\tFel vid läsning av katalog.\n" 3526msgstr "=\tFel vid läsning av katalog.\n"
3537 3527
3538#: src/fs/gnunet-publish.c:712 3528#: src/fs/gnunet-publish.c:715
3539#, fuzzy, c-format 3529#, fuzzy, c-format
3540msgid "Selected pseudonym `%s' unknown\n" 3530msgid "Selected pseudonym `%s' unknown\n"
3541msgstr "Namnrymd \"%s\" skapad(rot: %s).\n" 3531msgstr "Namnrymd \"%s\" skapad(rot: %s).\n"
3542 3532
3543#: src/fs/gnunet-publish.c:745 3533#: src/fs/gnunet-publish.c:749
3544#, fuzzy, c-format 3534#, fuzzy, c-format
3545msgid "Failed to access `%s': %s\n" 3535msgid "Failed to access `%s': %s\n"
3546msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 3536msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
3547 3537
3548#: src/fs/gnunet-publish.c:759 3538#: src/fs/gnunet-publish.c:763
3549msgid "" 3539msgid ""
3550"Failed to start meta directory scanner. Is gnunet-helper-publish-fs " 3540"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
3551"installed?\n" 3541"installed?\n"
3552msgstr "" 3542msgstr ""
3553 3543
3554#: src/fs/gnunet-publish.c:815 3544#: src/fs/gnunet-publish.c:819
3555#, c-format 3545#, c-format
3556msgid "Cannot extract metadata from a URI!\n" 3546msgid "Cannot extract metadata from a URI!\n"
3557msgstr "" 3547msgstr ""
3558 3548
3559#: src/fs/gnunet-publish.c:822 3549#: src/fs/gnunet-publish.c:826
3560#, fuzzy, c-format 3550#, fuzzy, c-format
3561msgid "You must specify one and only one filename for insertion.\n" 3551msgid "You must specify one and only one filename for insertion.\n"
3562msgstr "Du måste ange en och endast en fil att avindexera.\n" 3552msgstr "Du måste ange en och endast en fil att avindexera.\n"
3563 3553
3564#: src/fs/gnunet-publish.c:828 3554#: src/fs/gnunet-publish.c:832
3565#, fuzzy, c-format 3555#, fuzzy, c-format
3566msgid "You must NOT specify an URI and a filename.\n" 3556msgid "You must NOT specify an URI and a filename.\n"
3567msgstr "Du måste ange en och endast en fil att avindexera.\n" 3557msgstr "Du måste ange en och endast en fil att avindexera.\n"
3568 3558
3569#: src/fs/gnunet-publish.c:836 src/vpn/gnunet-vpn.c:208 3559#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:210
3570#, fuzzy, c-format 3560#, fuzzy, c-format
3571msgid "Option `%s' is required when using option `%s'.\n" 3561msgid "Option `%s' is required when using option `%s'.\n"
3572msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n" 3562msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n"
3573 3563
3574#: src/fs/gnunet-publish.c:847 src/fs/gnunet-publish.c:855 3564#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
3575#: src/transport/gnunet-transport.c:1280 src/transport/gnunet-transport.c:1307 3565#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
3576#, c-format 3566#, c-format
3577msgid "Option `%s' makes no sense without option `%s'.\n" 3567msgid "Option `%s' makes no sense without option `%s'.\n"
3578msgstr "" 3568msgstr ""
3579 3569
3580#: src/fs/gnunet-publish.c:911 3570#: src/fs/gnunet-publish.c:916
3581msgid "" 3571msgid ""
3582"print list of extracted keywords that would be used, but do not perform " 3572"print list of extracted keywords that would be used, but do not perform "
3583"upload" 3573"upload"
3584msgstr "" 3574msgstr ""
3585 3575
3586#: src/fs/gnunet-publish.c:917 3576#: src/fs/gnunet-publish.c:922
3587msgid "" 3577msgid ""
3588"add an additional keyword for the top-level file or directory (this option " 3578"add an additional keyword for the top-level file or directory (this option "
3589"can be specified multiple times)" 3579"can be specified multiple times)"
3590msgstr "" 3580msgstr ""
3591 3581
3592#: src/fs/gnunet-publish.c:923 3582#: src/fs/gnunet-publish.c:928
3593msgid "set the meta-data for the given TYPE to the given VALUE" 3583msgid "set the meta-data for the given TYPE to the given VALUE"
3594msgstr "" 3584msgstr ""
3595 3585
3596#: src/fs/gnunet-publish.c:928 3586#: src/fs/gnunet-publish.c:932
3597msgid "" 3587msgid ""
3598"do not index, perform full insertion (stores entire file in encrypted form " 3588"do not index, perform full insertion (stores entire file in encrypted form "
3599"in GNUnet database)" 3589"in GNUnet database)"
3600msgstr "" 3590msgstr ""
3601 3591
3602#: src/fs/gnunet-publish.c:935 3592#: src/fs/gnunet-publish.c:938
3603msgid "" 3593msgid ""
3604"specify ID of an updated version to be published in the future (for " 3594"specify ID of an updated version to be published in the future (for "
3605"namespace insertions only)" 3595"namespace insertions only)"
3606msgstr "" 3596msgstr ""
3607 3597
3608#: src/fs/gnunet-publish.c:948 3598#: src/fs/gnunet-publish.c:949
3609msgid "publish the files under the pseudonym NAME (place file into namespace)" 3599msgid "publish the files under the pseudonym NAME (place file into namespace)"
3610msgstr "" 3600msgstr ""
3611 3601
3612#: src/fs/gnunet-publish.c:958 3602#: src/fs/gnunet-publish.c:959
3613msgid "" 3603msgid ""
3614"only simulate the process but do not do any actual publishing (useful to " 3604"only simulate the process but do not do any actual publishing (useful to "
3615"compute URIs)" 3605"compute URIs)"
3616msgstr "" 3606msgstr ""
3617 3607
3618#: src/fs/gnunet-publish.c:964 3608#: src/fs/gnunet-publish.c:965
3619msgid "" 3609msgid ""
3620"set the ID of this version of the publication (for namespace insertions only)" 3610"set the ID of this version of the publication (for namespace insertions only)"
3621msgstr "" 3611msgstr ""
@@ -3626,31 +3616,31 @@ msgid ""
3626"to the file with the respective URI)" 3616"to the file with the respective URI)"
3627msgstr "" 3617msgstr ""
3628 3618
3629#: src/fs/gnunet-publish.c:987 3619#: src/fs/gnunet-publish.c:989
3630msgid "Publish a file or directory on GNUnet" 3620msgid "Publish a file or directory on GNUnet"
3631msgstr "" 3621msgstr ""
3632 3622
3633#: src/fs/gnunet-search.c:125 3623#: src/fs/gnunet-search.c:127
3634#, c-format 3624#, c-format
3635msgid "Failed to write directory with search results to `%s'\n" 3625msgid "Failed to write directory with search results to `%s'\n"
3636msgstr "" 3626msgstr ""
3637 3627
3638#: src/fs/gnunet-search.c:202 3628#: src/fs/gnunet-search.c:207
3639#, fuzzy, c-format 3629#, fuzzy, c-format
3640msgid "Error searching: %s.\n" 3630msgid "Error searching: %s.\n"
3641msgstr "Fel vid lämning av DHT.\n" 3631msgstr "Fel vid lämning av DHT.\n"
3642 3632
3643#: src/fs/gnunet-search.c:258 3633#: src/fs/gnunet-search.c:263
3644#, fuzzy 3634#, fuzzy
3645msgid "Could not create keyword URI from arguments.\n" 3635msgid "Could not create keyword URI from arguments.\n"
3646msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 3636msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
3647 3637
3648#: src/fs/gnunet-search.c:282 3638#: src/fs/gnunet-search.c:287
3649#, fuzzy 3639#, fuzzy
3650msgid "Could not start searching.\n" 3640msgid "Could not start searching.\n"
3651msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 3641msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
3652 3642
3653#: src/fs/gnunet-search.c:323 3643#: src/fs/gnunet-search.c:324
3654msgid "write search results to file starting with PREFIX" 3644msgid "write search results to file starting with PREFIX"
3655msgstr "" 3645msgstr ""
3656 3646
@@ -3658,7 +3648,7 @@ msgstr ""
3658msgid "automatically terminate search after DELAY" 3648msgid "automatically terminate search after DELAY"
3659msgstr "" 3649msgstr ""
3660 3650
3661#: src/fs/gnunet-search.c:338 3651#: src/fs/gnunet-search.c:335
3662msgid "automatically terminate search after VALUE results are found" 3652msgid "automatically terminate search after VALUE results are found"
3663msgstr "" 3653msgstr ""
3664 3654
@@ -3666,3084 +3656,2887 @@ msgstr ""
3666msgid "Search GNUnet for files that were published on GNUnet" 3656msgid "Search GNUnet for files that were published on GNUnet"
3667msgstr "" 3657msgstr ""
3668 3658
3669#: src/fs/gnunet-service-fs.c:375 src/fs/gnunet-service-fs.c:880 3659#: src/fs/gnunet-service-fs.c:377 src/fs/gnunet-service-fs.c:882
3670#, fuzzy 3660#, fuzzy
3671msgid "# client searches active" 3661msgid "# client searches active"
3672msgstr "# klartext PONG-meddelanden mottagna" 3662msgstr "# klartext PONG-meddelanden mottagna"
3673 3663
3674#: src/fs/gnunet-service-fs.c:434 3664#: src/fs/gnunet-service-fs.c:436
3675#, fuzzy 3665#, fuzzy
3676msgid "# replies received for local clients" 3666msgid "# replies received for local clients"
3677msgstr "Meddelande mottaget från klient är ogiltig.\n" 3667msgstr "Meddelande mottaget från klient är ogiltig.\n"
3678 3668
3679#: src/fs/gnunet-service-fs.c:603 3669#: src/fs/gnunet-service-fs.c:605
3680msgid "# running average P2P latency (ms)" 3670msgid "# running average P2P latency (ms)"
3681msgstr "" 3671msgstr ""
3682 3672
3683#: src/fs/gnunet-service-fs.c:655 src/fs/gnunet-service-fs_cp.c:562 3673#: src/fs/gnunet-service-fs.c:657 src/fs/gnunet-service-fs_cp.c:564
3684msgid "# Loopback routes suppressed" 3674msgid "# Loopback routes suppressed"
3685msgstr "" 3675msgstr ""
3686 3676
3687#: src/fs/gnunet-service-fs.c:834 3677#: src/fs/gnunet-service-fs.c:836
3688#, fuzzy 3678#, fuzzy
3689msgid "# client searches received" 3679msgid "# client searches received"
3690msgstr "# klartext PONG-meddelanden mottagna" 3680msgstr "# klartext PONG-meddelanden mottagna"
3691 3681
3692#: src/fs/gnunet-service-fs.c:873 3682#: src/fs/gnunet-service-fs.c:875
3693msgid "# client searches updated (merged content seen list)" 3683msgid "# client searches updated (merged content seen list)"
3694msgstr "" 3684msgstr ""
3695 3685
3696#: src/fs/gnunet-service-fs.c:1044 3686#: src/fs/gnunet-service-fs.c:1040
3697#, c-format 3687#, c-format
3698msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n" 3688msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n"
3699msgstr "" 3689msgstr ""
3700 3690
3701#: src/fs/gnunet-service-fs.c:1284 3691#: src/fs/gnunet-service-fs.c:1280
3702#, fuzzy 3692#, fuzzy
3703msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n" 3693msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n"
3704msgstr "GNUnet-konfiguration" 3694msgstr "GNUnet-konfiguration"
3705 3695
3706#: src/fs/gnunet-service-fs.c:1309 src/hostlist/gnunet-daemon-hostlist.c:353 3696#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
3707#: src/topology/gnunet-daemon-topology.c:1200 3697#: src/topology/gnunet-daemon-topology.c:1202
3708#, fuzzy, c-format 3698#, fuzzy, c-format
3709msgid "Failed to connect to `%s' service.\n" 3699msgid "Failed to connect to `%s' service.\n"
3710msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 3700msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
3711 3701
3712#: src/fs/gnunet-service-fs_cadet_client.c:368 3702#: src/fs/gnunet-service-fs_cadet_client.c:370
3713#, fuzzy 3703#, fuzzy
3714msgid "# replies received via cadet" 3704msgid "# replies received via cadet"
3715msgstr "# byte mottagna av typen %d" 3705msgstr "# byte mottagna av typen %d"
3716 3706
3717#: src/fs/gnunet-service-fs_cadet_client.c:382 3707#: src/fs/gnunet-service-fs_cadet_client.c:384
3718#, fuzzy 3708#, fuzzy
3719msgid "# replies received via cadet dropped" 3709msgid "# replies received via cadet dropped"
3720msgstr "# byte mottagna av typen %d" 3710msgstr "# byte mottagna av typen %d"
3721 3711
3722#: src/fs/gnunet-service-fs_cadet_server.c:263 3712#: src/fs/gnunet-service-fs_cadet_server.c:265
3723#, fuzzy 3713#, fuzzy
3724msgid "# queries received via CADET not answered" 3714msgid "# queries received via CADET not answered"
3725msgstr "# byte mottogs via TCP" 3715msgstr "# byte mottogs via TCP"
3726 3716
3727#: src/fs/gnunet-service-fs_cadet_server.c:318 3717#: src/fs/gnunet-service-fs_cadet_server.c:320
3728#, fuzzy 3718#, fuzzy
3729msgid "# Blocks transferred via cadet" 3719msgid "# Blocks transferred via cadet"
3730msgstr "# byte skickade av typen %d" 3720msgstr "# byte skickade av typen %d"
3731 3721
3732#: src/fs/gnunet-service-fs_cadet_server.c:344 3722#: src/fs/gnunet-service-fs_cadet_server.c:346
3733#, fuzzy 3723#, fuzzy
3734msgid "# queries received via cadet" 3724msgid "# queries received via cadet"
3735msgstr "# byte mottogs via TCP" 3725msgstr "# byte mottogs via TCP"
3736 3726
3737#: src/fs/gnunet-service-fs_cadet_server.c:386 3727#: src/fs/gnunet-service-fs_cadet_server.c:388
3738#, fuzzy 3728#, fuzzy
3739msgid "# cadet client connections rejected" 3729msgid "# cadet client connections rejected"
3740msgstr "Nätverksanslutning" 3730msgstr "Nätverksanslutning"
3741 3731
3742#: src/fs/gnunet-service-fs_cadet_server.c:393 3732#: src/fs/gnunet-service-fs_cadet_server.c:395
3743#: src/fs/gnunet-service-fs_cadet_server.c:433 3733#: src/fs/gnunet-service-fs_cadet_server.c:435
3744#, fuzzy 3734#, fuzzy
3745msgid "# cadet connections active" 3735msgid "# cadet connections active"
3746msgstr "Nätverksanslutning" 3736msgstr "Nätverksanslutning"
3747 3737
3748#: src/fs/gnunet-service-fs_cp.c:684 3738#: src/fs/gnunet-service-fs_cp.c:685
3749#, fuzzy 3739#, fuzzy
3750msgid "# migration stop messages received" 3740msgid "# migration stop messages received"
3751msgstr "# krypterade PONG-meddelanden mottagna" 3741msgstr "# krypterade PONG-meddelanden mottagna"
3752 3742
3753#: src/fs/gnunet-service-fs_cp.c:688 3743#: src/fs/gnunet-service-fs_cp.c:689
3754#, c-format 3744#, c-format
3755msgid "Migration of content to peer `%s' blocked for %s\n" 3745msgid "Migration of content to peer `%s' blocked for %s\n"
3756msgstr "" 3746msgstr ""
3757 3747
3758#: src/fs/gnunet-service-fs_cp.c:721 src/fs/gnunet-service-fs_cp.c:1343 3748#: src/fs/gnunet-service-fs_cp.c:722 src/fs/gnunet-service-fs_cp.c:1344
3759msgid "# P2P searches active" 3749msgid "# P2P searches active"
3760msgstr "" 3750msgstr ""
3761 3751
3762#: src/fs/gnunet-service-fs_cp.c:816 3752#: src/fs/gnunet-service-fs_cp.c:817
3763msgid "# artificial delays introduced (ms)" 3753msgid "# artificial delays introduced (ms)"
3764msgstr "" 3754msgstr ""
3765 3755
3766#: src/fs/gnunet-service-fs_cp.c:873 3756#: src/fs/gnunet-service-fs_cp.c:874
3767#, fuzzy 3757#, fuzzy
3768msgid "# replies dropped due to type mismatch" 3758msgid "# replies dropped due to type mismatch"
3769msgstr "# byte mottagna av typen %d" 3759msgstr "# byte mottagna av typen %d"
3770 3760
3771#: src/fs/gnunet-service-fs_cp.c:881 3761#: src/fs/gnunet-service-fs_cp.c:882
3772#, fuzzy 3762#, fuzzy
3773msgid "# replies received for other peers" 3763msgid "# replies received for other peers"
3774msgstr "# byte mottagna av typen %d" 3764msgstr "# byte mottagna av typen %d"
3775 3765
3776#: src/fs/gnunet-service-fs_cp.c:895 3766#: src/fs/gnunet-service-fs_cp.c:896
3777msgid "# replies dropped due to insufficient cover traffic" 3767msgid "# replies dropped due to insufficient cover traffic"
3778msgstr "" 3768msgstr ""
3779 3769
3780#: src/fs/gnunet-service-fs_cp.c:942 3770#: src/fs/gnunet-service-fs_cp.c:943
3781msgid "# P2P searches destroyed due to ultimate reply" 3771msgid "# P2P searches destroyed due to ultimate reply"
3782msgstr "" 3772msgstr ""
3783 3773
3784#: src/fs/gnunet-service-fs_cp.c:1013 3774#: src/fs/gnunet-service-fs_cp.c:1014
3785msgid "# requests done for free (low load)" 3775msgid "# requests done for free (low load)"
3786msgstr "" 3776msgstr ""
3787 3777
3788#: src/fs/gnunet-service-fs_cp.c:1038 3778#: src/fs/gnunet-service-fs_cp.c:1039
3789msgid "# request dropped, priority insufficient" 3779msgid "# request dropped, priority insufficient"
3790msgstr "" 3780msgstr ""
3791 3781
3792#: src/fs/gnunet-service-fs_cp.c:1048 3782#: src/fs/gnunet-service-fs_cp.c:1049
3793msgid "# requests done for a price (normal load)" 3783msgid "# requests done for a price (normal load)"
3794msgstr "" 3784msgstr ""
3795 3785
3796#: src/fs/gnunet-service-fs_cp.c:1146 3786#: src/fs/gnunet-service-fs_cp.c:1147
3797msgid "# requests dropped due to higher-TTL request" 3787msgid "# requests dropped due to higher-TTL request"
3798msgstr "" 3788msgstr ""
3799 3789
3800#: src/fs/gnunet-service-fs_cp.c:1203 3790#: src/fs/gnunet-service-fs_cp.c:1204
3801msgid "# GET requests received (from other peers)" 3791msgid "# GET requests received (from other peers)"
3802msgstr "" 3792msgstr ""
3803 3793
3804#: src/fs/gnunet-service-fs_cp.c:1226 3794#: src/fs/gnunet-service-fs_cp.c:1227
3805msgid "# requests dropped due to missing reverse route" 3795msgid "# requests dropped due to missing reverse route"
3806msgstr "" 3796msgstr ""
3807 3797
3808#: src/fs/gnunet-service-fs_cp.c:1239 3798#: src/fs/gnunet-service-fs_cp.c:1240
3809#, fuzzy 3799#, fuzzy
3810msgid "# requests dropped due to full reply queue" 3800msgid "# requests dropped due to full reply queue"
3811msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 3801msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
3812 3802
3813#: src/fs/gnunet-service-fs_cp.c:1295 3803#: src/fs/gnunet-service-fs_cp.c:1296
3814msgid "# requests dropped due TTL underflow" 3804msgid "# requests dropped due TTL underflow"
3815msgstr "" 3805msgstr ""
3816 3806
3817#: src/fs/gnunet-service-fs_cp.c:1339 3807#: src/fs/gnunet-service-fs_cp.c:1340
3818#, fuzzy 3808#, fuzzy
3819msgid "# P2P query messages received and processed" 3809msgid "# P2P query messages received and processed"
3820msgstr "# krypterade PONG-meddelanden mottagna" 3810msgstr "# krypterade PONG-meddelanden mottagna"
3821 3811
3822#: src/fs/gnunet-service-fs_cp.c:1706 3812#: src/fs/gnunet-service-fs_cp.c:1707
3823#, fuzzy 3813#, fuzzy
3824msgid "# migration stop messages sent" 3814msgid "# migration stop messages sent"
3825msgstr "# krypterade PONG-meddelanden mottagna" 3815msgstr "# krypterade PONG-meddelanden mottagna"
3826 3816
3827#: src/fs/gnunet-service-fs_indexing.c:132 3817#: src/fs/gnunet-service-fs_indexing.c:134
3828#: src/fs/gnunet-service-fs_indexing.c:193 3818#: src/fs/gnunet-service-fs_indexing.c:195
3829#, fuzzy, c-format 3819#, fuzzy, c-format
3830msgid "Could not open `%s'.\n" 3820msgid "Could not open `%s'.\n"
3831msgstr "Kunde inte slå upp \"%s\": %s\n" 3821msgstr "Kunde inte slå upp \"%s\": %s\n"
3832 3822
3833#: src/fs/gnunet-service-fs_indexing.c:149 3823#: src/fs/gnunet-service-fs_indexing.c:151
3834#, fuzzy, c-format 3824#, fuzzy, c-format
3835msgid "Error writing `%s'.\n" 3825msgid "Error writing `%s'.\n"
3836msgstr "Fel vid skapandet av användare" 3826msgstr "Fel vid skapandet av användare"
3837 3827
3838#: src/fs/gnunet-service-fs_indexing.c:251 3828#: src/fs/gnunet-service-fs_indexing.c:253
3839#, fuzzy, c-format 3829#, fuzzy, c-format
3840msgid "Failed to delete bogus block: %s\n" 3830msgid "Failed to delete bogus block: %s\n"
3841msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 3831msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
3842 3832
3843#: src/fs/gnunet-service-fs_indexing.c:329 3833#: src/fs/gnunet-service-fs_indexing.c:331
3844msgid "# index blocks removed: original file inaccessible" 3834msgid "# index blocks removed: original file inaccessible"
3845msgstr "" 3835msgstr ""
3846 3836
3847#: src/fs/gnunet-service-fs_indexing.c:355 3837#: src/fs/gnunet-service-fs_indexing.c:357
3848#, fuzzy, c-format 3838#, fuzzy, c-format
3849msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n" 3839msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n"
3850msgstr "Kunde inte slå upp \"%s\": %s\n" 3840msgstr "Kunde inte slå upp \"%s\": %s\n"
3851 3841
3852#: src/fs/gnunet-service-fs_indexing.c:359 3842#: src/fs/gnunet-service-fs_indexing.c:361
3853#, fuzzy 3843#, fuzzy
3854msgid "not indexed" 3844msgid "not indexed"
3855msgstr "Avindexering misslyckades." 3845msgstr "Avindexering misslyckades."
3856 3846
3857#: src/fs/gnunet-service-fs_indexing.c:392 3847#: src/fs/gnunet-service-fs_indexing.c:394
3858#, fuzzy, c-format 3848#, fuzzy, c-format
3859msgid "Indexed file `%s' changed at offset %llu\n" 3849msgid "Indexed file `%s' changed at offset %llu\n"
3860msgstr "Indexering av data misslyckades vid position %i.\n" 3850msgstr "Indexering av data misslyckades vid position %i.\n"
3861 3851
3862#: src/fs/gnunet-service-fs_indexing.c:516 3852#: src/fs/gnunet-service-fs_indexing.c:518
3863#, c-format 3853#, c-format
3864msgid "" 3854msgid ""
3865"Index request received for file `%s' is already indexed as `%s'. Permitting " 3855"Index request received for file `%s' is already indexed as `%s'. Permitting "
3866"anyway.\n" 3856"anyway.\n"
3867msgstr "" 3857msgstr ""
3868 3858
3869#: src/fs/gnunet-service-fs_pe.c:263 3859#: src/fs/gnunet-service-fs_pe.c:265
3870msgid "# average retransmission delay (ms)" 3860msgid "# average retransmission delay (ms)"
3871msgstr "" 3861msgstr ""
3872 3862
3873#: src/fs/gnunet-service-fs_pe.c:425 3863#: src/fs/gnunet-service-fs_pe.c:427
3874msgid "# delay heap timeout (ms)" 3864msgid "# delay heap timeout (ms)"
3875msgstr "" 3865msgstr ""
3876 3866
3877#: src/fs/gnunet-service-fs_pe.c:436 3867#: src/fs/gnunet-service-fs_pe.c:438
3878msgid "# query plans executed" 3868msgid "# query plans executed"
3879msgstr "" 3869msgstr ""
3880 3870
3881#: src/fs/gnunet-service-fs_pe.c:464 3871#: src/fs/gnunet-service-fs_pe.c:466
3882#, fuzzy 3872#, fuzzy
3883msgid "# query messages sent to other peers" 3873msgid "# query messages sent to other peers"
3884msgstr "# byte skickade av typen %d" 3874msgstr "# byte skickade av typen %d"
3885 3875
3886#: src/fs/gnunet-service-fs_pe.c:534 3876#: src/fs/gnunet-service-fs_pe.c:536
3887#, fuzzy 3877#, fuzzy
3888msgid "# requests merged" 3878msgid "# requests merged"
3889msgstr "# byte mottogs via TCP" 3879msgstr "# byte mottogs via TCP"
3890 3880
3891#: src/fs/gnunet-service-fs_pe.c:544 3881#: src/fs/gnunet-service-fs_pe.c:546
3892#, fuzzy 3882#, fuzzy
3893msgid "# requests refreshed" 3883msgid "# requests refreshed"
3894msgstr "# byte mottogs via TCP" 3884msgstr "# byte mottogs via TCP"
3895 3885
3896#: src/fs/gnunet-service-fs_pe.c:604 src/fs/gnunet-service-fs_pe.c:707 3886#: src/fs/gnunet-service-fs_pe.c:606 src/fs/gnunet-service-fs_pe.c:709
3897#: src/fs/gnunet-service-fs_pe.c:786 3887#: src/fs/gnunet-service-fs_pe.c:788
3898msgid "# query plan entries" 3888msgid "# query plan entries"
3899msgstr "" 3889msgstr ""
3900 3890
3901#: src/fs/gnunet-service-fs_pr.c:328 3891#: src/fs/gnunet-service-fs_pr.c:330
3902#, fuzzy 3892#, fuzzy
3903msgid "# Pending requests created" 3893msgid "# Pending requests created"
3904msgstr "# byte mottogs via TCP" 3894msgstr "# byte mottogs via TCP"
3905 3895
3906#: src/fs/gnunet-service-fs_pr.c:428 src/fs/gnunet-service-fs_pr.c:675 3896#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
3907msgid "# Pending requests active" 3897msgid "# Pending requests active"
3908msgstr "" 3898msgstr ""
3909 3899
3910#: src/fs/gnunet-service-fs_pr.c:856 3900#: src/fs/gnunet-service-fs_pr.c:858
3911#, fuzzy 3901#, fuzzy
3912msgid "# replies received and matched" 3902msgid "# replies received and matched"
3913msgstr "# byte mottagna av typen %d" 3903msgstr "# byte mottagna av typen %d"
3914 3904
3915#: src/fs/gnunet-service-fs_pr.c:892 3905#: src/fs/gnunet-service-fs_pr.c:894
3916msgid "# duplicate replies discarded (bloomfilter)" 3906msgid "# duplicate replies discarded (bloomfilter)"
3917msgstr "" 3907msgstr ""
3918 3908
3919#: src/fs/gnunet-service-fs_pr.c:901 3909#: src/fs/gnunet-service-fs_pr.c:903
3920msgid "# irrelevant replies discarded" 3910msgid "# irrelevant replies discarded"
3921msgstr "" 3911msgstr ""
3922 3912
3923#: src/fs/gnunet-service-fs_pr.c:916 3913#: src/fs/gnunet-service-fs_pr.c:918
3924#, c-format 3914#, c-format
3925msgid "Unsupported block type %u\n" 3915msgid "Unsupported block type %u\n"
3926msgstr "" 3916msgstr ""
3927 3917
3928#: src/fs/gnunet-service-fs_pr.c:933 3918#: src/fs/gnunet-service-fs_pr.c:935
3929msgid "# results found locally" 3919msgid "# results found locally"
3930msgstr "" 3920msgstr ""
3931 3921
3932#: src/fs/gnunet-service-fs_pr.c:1063 3922#: src/fs/gnunet-service-fs_pr.c:1065
3933msgid "# Datastore `PUT' failures" 3923msgid "# Datastore `PUT' failures"
3934msgstr "" 3924msgstr ""
3935 3925
3936#: src/fs/gnunet-service-fs_pr.c:1091 3926#: src/fs/gnunet-service-fs_pr.c:1093
3937#, fuzzy 3927#, fuzzy
3938msgid "# storage requests dropped due to high load" 3928msgid "# storage requests dropped due to high load"
3939msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 3929msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
3940 3930
3941#: src/fs/gnunet-service-fs_pr.c:1129 3931#: src/fs/gnunet-service-fs_pr.c:1131
3942#, fuzzy 3932#, fuzzy
3943msgid "# Replies received from DHT" 3933msgid "# Replies received from DHT"
3944msgstr "# byte mottagna via HTTP" 3934msgstr "# byte mottagna via HTTP"
3945 3935
3946#: src/fs/gnunet-service-fs_pr.c:1260 3936#: src/fs/gnunet-service-fs_pr.c:1262
3947#, fuzzy 3937#, fuzzy
3948msgid "# Replies received from CADET" 3938msgid "# Replies received from CADET"
3949msgstr "# byte mottagna via HTTP" 3939msgstr "# byte mottagna via HTTP"
3950 3940
3951#: src/fs/gnunet-service-fs_pr.c:1312 3941#: src/fs/gnunet-service-fs_pr.c:1314
3952#, c-format 3942#, c-format
3953msgid "Datastore lookup already took %s!\n" 3943msgid "Datastore lookup already took %s!\n"
3954msgstr "" 3944msgstr ""
3955 3945
3956#: src/fs/gnunet-service-fs_pr.c:1333 3946#: src/fs/gnunet-service-fs_pr.c:1335
3957#, c-format 3947#, c-format
3958msgid "On-demand lookup already took %s!\n" 3948msgid "On-demand lookup already took %s!\n"
3959msgstr "" 3949msgstr ""
3960 3950
3961#: src/fs/gnunet-service-fs_pr.c:1393 3951#: src/fs/gnunet-service-fs_pr.c:1395
3962msgid "# requested DBLOCK or IBLOCK not found" 3952msgid "# requested DBLOCK or IBLOCK not found"
3963msgstr "" 3953msgstr ""
3964 3954
3965#: src/fs/gnunet-service-fs_pr.c:1452 3955#: src/fs/gnunet-service-fs_pr.c:1454
3966msgid "# Datastore lookups concluded (error queueing)" 3956msgid "# Datastore lookups concluded (error queueing)"
3967msgstr "" 3957msgstr ""
3968 3958
3969#: src/fs/gnunet-service-fs_pr.c:1507 3959#: src/fs/gnunet-service-fs_pr.c:1509
3970msgid "# Datastore lookups concluded (no results)" 3960msgid "# Datastore lookups concluded (no results)"
3971msgstr "" 3961msgstr ""
3972 3962
3973#: src/fs/gnunet-service-fs_pr.c:1522 3963#: src/fs/gnunet-service-fs_pr.c:1524
3974msgid "# Datastore lookups concluded (seen all)" 3964msgid "# Datastore lookups concluded (seen all)"
3975msgstr "" 3965msgstr ""
3976 3966
3977#: src/fs/gnunet-service-fs_pr.c:1546 3967#: src/fs/gnunet-service-fs_pr.c:1548
3978msgid "# Datastore lookups aborted (more than MAX_RESULTS)" 3968msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
3979msgstr "" 3969msgstr ""
3980 3970
3981#: src/fs/gnunet-service-fs_pr.c:1560 3971#: src/fs/gnunet-service-fs_pr.c:1562
3982msgid "# on-demand blocks matched requests" 3972msgid "# on-demand blocks matched requests"
3983msgstr "" 3973msgstr ""
3984 3974
3985#: src/fs/gnunet-service-fs_pr.c:1581 3975#: src/fs/gnunet-service-fs_pr.c:1583
3986msgid "# on-demand lookups performed successfully" 3976msgid "# on-demand lookups performed successfully"
3987msgstr "" 3977msgstr ""
3988 3978
3989#: src/fs/gnunet-service-fs_pr.c:1586 3979#: src/fs/gnunet-service-fs_pr.c:1588
3990msgid "# on-demand lookups failed" 3980msgid "# on-demand lookups failed"
3991msgstr "" 3981msgstr ""
3992 3982
3993#: src/fs/gnunet-service-fs_pr.c:1624 3983#: src/fs/gnunet-service-fs_pr.c:1626
3994msgid "# Datastore lookups concluded (found last result)" 3984msgid "# Datastore lookups concluded (found last result)"
3995msgstr "" 3985msgstr ""
3996 3986
3997#: src/fs/gnunet-service-fs_pr.c:1637 3987#: src/fs/gnunet-service-fs_pr.c:1639
3998msgid "# Datastore lookups concluded (load too high)" 3988msgid "# Datastore lookups concluded (load too high)"
3999msgstr "" 3989msgstr ""
4000 3990
4001#: src/fs/gnunet-service-fs_pr.c:1691 3991#: src/fs/gnunet-service-fs_pr.c:1693
4002msgid "# Datastore lookups initiated" 3992msgid "# Datastore lookups initiated"
4003msgstr "" 3993msgstr ""
4004 3994
4005#: src/fs/gnunet-service-fs_pr.c:1747 3995#: src/fs/gnunet-service-fs_pr.c:1749
4006#, fuzzy 3996#, fuzzy
4007msgid "# GAP PUT messages received" 3997msgid "# GAP PUT messages received"
4008msgstr "# krypterade PONG-meddelanden mottagna" 3998msgstr "# krypterade PONG-meddelanden mottagna"
4009 3999
4010#: src/fs/gnunet-service-fs_push.c:644 4000#: src/fs/gnunet-service-fs_push.c:646
4011msgid "time required, content pushing disabled" 4001msgid "time required, content pushing disabled"
4012msgstr "" 4002msgstr ""
4013 4003
4014#: src/fs/gnunet-unindex.c:87 4004#: src/fs/gnunet-unindex.c:89
4015#, c-format 4005#, c-format
4016msgid "Unindexing at %llu/%llu (%s remaining)\n" 4006msgid "Unindexing at %llu/%llu (%s remaining)\n"
4017msgstr "" 4007msgstr ""
4018 4008
4019#: src/fs/gnunet-unindex.c:93 4009#: src/fs/gnunet-unindex.c:95
4020#, fuzzy, c-format 4010#, fuzzy, c-format
4021msgid "Error unindexing: %s.\n" 4011msgid "Error unindexing: %s.\n"
4022msgstr "" 4012msgstr ""
4023"\n" 4013"\n"
4024"Fel vid avindexering av fil: %s\n" 4014"Fel vid avindexering av fil: %s\n"
4025 4015
4026#: src/fs/gnunet-unindex.c:98 4016#: src/fs/gnunet-unindex.c:100
4027#, fuzzy 4017#, fuzzy
4028msgid "Unindexing done.\n" 4018msgid "Unindexing done.\n"
4029msgstr "Avindexera filer." 4019msgstr "Avindexera filer."
4030 4020
4031#: src/fs/gnunet-unindex.c:127 4021#: src/fs/gnunet-unindex.c:129
4032#, fuzzy, c-format 4022#, fuzzy, c-format
4033msgid "You must specify one and only one filename for unindexing.\n" 4023msgid "You must specify one and only one filename for unindexing.\n"
4034msgstr "Du måste ange en och endast en fil att avindexera.\n" 4024msgstr "Du måste ange en och endast en fil att avindexera.\n"
4035 4025
4036#: src/fs/gnunet-unindex.c:144 4026#: src/fs/gnunet-unindex.c:146
4037#, fuzzy 4027#, fuzzy
4038msgid "Could not start unindex operation.\n" 4028msgid "Could not start unindex operation.\n"
4039msgstr "Kunde inte komma åt namnrymdsinformation.\n" 4029msgstr "Kunde inte komma åt namnrymdsinformation.\n"
4040 4030
4041#: src/fs/gnunet-unindex.c:176 4031#: src/fs/gnunet-unindex.c:178
4042msgid "Unindex a file that was previously indexed with gnunet-publish." 4032msgid "Unindex a file that was previously indexed with gnunet-publish."
4043msgstr "" 4033msgstr ""
4044 4034
4045#: src/gns/gns_tld_api.c:274 4035#: src/gns/gns_tld_api.c:348
4046msgid "Expected a base32-encoded public zone key\n" 4036msgid "Expected a base32-encoded public zone key\n"
4047msgstr "" 4037msgstr ""
4048 4038
4049#: src/gns/gnunet-bcd.c:125 4039#: src/gns/gnunet-bcd.c:127
4050#, c-format 4040#, c-format
4051msgid "Refusing `%s' request to HTTP server\n" 4041msgid "Refusing `%s' request to HTTP server\n"
4052msgstr "" 4042msgstr ""
4053 4043
4054#: src/gns/gnunet-bcd.c:355 4044#: src/gns/gnunet-bcd.c:357
4055#, fuzzy, c-format 4045#, fuzzy, c-format
4056msgid "Invalid port number %u. Exiting.\n" 4046msgid "Invalid port number %u. Exiting.\n"
4057msgstr "Ogiltiga argument. Avslutar.\n" 4047msgstr "Ogiltiga argument. Avslutar.\n"
4058 4048
4059#: src/gns/gnunet-bcd.c:360 4049#: src/gns/gnunet-bcd.c:362
4060#, fuzzy, c-format 4050#, fuzzy, c-format
4061msgid "Businesscard HTTP server starts on %u\n" 4051msgid "Businesscard HTTP server starts on %u\n"
4062msgstr "Misslyckades att starta samling.\n" 4052msgstr "Misslyckades att starta samling.\n"
4063 4053
4064#: src/gns/gnunet-bcd.c:374 4054#: src/gns/gnunet-bcd.c:376
4065#, fuzzy, c-format 4055#, fuzzy, c-format
4066msgid "Could not start businesscard HTTP server on port %u\n" 4056msgid "Could not start businesscard HTTP server on port %u\n"
4067msgstr "Misslyckades att starta samling.\n" 4057msgstr "Misslyckades att starta samling.\n"
4068 4058
4069#: src/gns/gnunet-bcd.c:521 4059#: src/gns/gnunet-bcd.c:523
4070msgid "Run HTTP serve on port PORT (default is 8888)" 4060msgid "Run HTTP serve on port PORT (default is 8888)"
4071msgstr "" 4061msgstr ""
4072 4062
4073#: src/gns/gnunet-bcd.c:534 4063#: src/gns/gnunet-bcd.c:536
4074msgid "GNUnet HTTP server to create business cards" 4064msgid "GNUnet HTTP server to create business cards"
4075msgstr "" 4065msgstr ""
4076 4066
4077#: src/gns/gnunet-dns2gns.c:201 4067#: src/gns/gnunet-dns2gns.c:203
4078#, fuzzy 4068#, fuzzy
4079msgid "Failed to pack DNS response into UDP packet!\n" 4069msgid "Failed to pack DNS response into UDP packet!\n"
4080msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 4070msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
4081 4071
4082#: src/gns/gnunet-dns2gns.c:403 4072#: src/gns/gnunet-dns2gns.c:405
4083#, fuzzy, c-format 4073#, fuzzy, c-format
4084msgid "Cannot parse DNS request from %s\n" 4074msgid "Cannot parse DNS request from %s\n"
4085msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 4075msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
4086 4076
4087#: src/gns/gnunet-dns2gns.c:419 4077#: src/gns/gnunet-dns2gns.c:421
4088#, fuzzy, c-format 4078#, fuzzy, c-format
4089msgid "Received malformed DNS request from %s\n" 4079msgid "Received malformed DNS request from %s\n"
4090msgstr "Mottog ogiltig \"%s\" begäran (storlek %d)\n" 4080msgstr "Mottog ogiltig \"%s\" begäran (storlek %d)\n"
4091 4081
4092#: src/gns/gnunet-dns2gns.c:427 4082#: src/gns/gnunet-dns2gns.c:429
4093#, fuzzy, c-format 4083#, fuzzy, c-format
4094msgid "Received unsupported DNS request from %s\n" 4084msgid "Received unsupported DNS request from %s\n"
4095msgstr "Mottog okänd typ av begäran %d vid %s:%d\n" 4085msgstr "Mottog okänd typ av begäran %d vid %s:%d\n"
4096 4086
4097#: src/gns/gnunet-dns2gns.c:586 4087#: src/gns/gnunet-dns2gns.c:588
4098#, fuzzy 4088#, fuzzy
4099msgid "No DNS server specified!\n" 4089msgid "No DNS server specified!\n"
4100msgstr "Inga nyckelord angivna!\n" 4090msgstr "Inga nyckelord angivna!\n"
4101 4091
4102#: src/gns/gnunet-dns2gns.c:686 4092#: src/gns/gnunet-dns2gns.c:688
4103msgid "IP of recursive DNS resolver to use (required)" 4093msgid "IP of recursive DNS resolver to use (required)"
4104msgstr "" 4094msgstr ""
4105 4095
4106#: src/gns/gnunet-dns2gns.c:691 4096#: src/gns/gnunet-dns2gns.c:693
4107msgid "UDP port to listen on for inbound DNS requests; default: 2853" 4097msgid "UDP port to listen on for inbound DNS requests; default: 2853"
4108msgstr "" 4098msgstr ""
4109 4099
4110#: src/gns/gnunet-dns2gns.c:708 4100#: src/gns/gnunet-dns2gns.c:710
4111msgid "GNUnet DNS-to-GNS proxy (a DNS server)" 4101msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
4112msgstr "" 4102msgstr ""
4113 4103
4114#: src/gns/gnunet-gns-benchmark.c:580 4104#: src/gns/gnunet-gns-benchmark.c:582
4115msgid "how long to wait between queries" 4105msgid "how long to wait between queries"
4116msgstr "" 4106msgstr ""
4117 4107
4118#: src/gns/gnunet-gns-benchmark.c:585 4108#: src/gns/gnunet-gns-benchmark.c:587
4119msgid "how long to wait for an answer" 4109msgid "how long to wait for an answer"
4120msgstr "" 4110msgstr ""
4121 4111
4122#: src/gns/gnunet-gns-benchmark.c:589 4112#: src/gns/gnunet-gns-benchmark.c:591
4123msgid "look for GNS2DNS records instead of ANY" 4113msgid "look for GNS2DNS records instead of ANY"
4124msgstr "" 4114msgstr ""
4125 4115
4126#: src/gns/gnunet-gns.c:197 4116#: src/gns/gnunet-gns.c:199
4127#, c-format 4117#, c-format
4128msgid "Invalid typename specified, assuming `ANY'\n" 4118msgid "Invalid typename specified, assuming `ANY'\n"
4129msgstr "" 4119msgstr ""
4130 4120
4131#: src/gns/gnunet-gns.c:231 4121#: src/gns/gnunet-gns.c:233
4132msgid "Lookup a record for the given name" 4122msgid "Lookup a record for the given name"
4133msgstr "" 4123msgstr ""
4134 4124
4135#: src/gns/gnunet-gns.c:236 4125#: src/gns/gnunet-gns.c:238
4136#, fuzzy 4126#, fuzzy
4137msgid "Specify the type of the record to lookup" 4127msgid "Specify the type of the record to lookup"
4138msgstr "ange prioritet för innehållet" 4128msgstr "ange prioritet för innehållet"
4139 4129
4140#: src/gns/gnunet-gns.c:240 4130#: src/gns/gnunet-gns.c:242
4141msgid "No unneeded output" 4131msgid "No unneeded output"
4142msgstr "" 4132msgstr ""
4143 4133
4144#: src/gns/gnunet-gns.c:256 4134#: src/gns/gnunet-gns.c:258
4145#, fuzzy 4135#, fuzzy
4146msgid "GNUnet GNS resolver tool" 4136msgid "GNUnet GNS resolver tool"
4147msgstr "Spåra GNUnets nätverkstopologi." 4137msgstr "Spåra GNUnets nätverkstopologi."
4148 4138
4149#: src/gns/gnunet-gns-helper-service-w32.c:600 4139#: src/gns/gnunet-gns-helper-service-w32.c:602
4150msgid "Not ready to process requests, lacking ego data\n" 4140msgid "Not ready to process requests, lacking ego data\n"
4151msgstr "" 4141msgstr ""
4152 4142
4153#: src/gns/gnunet-gns-helper-service-w32.c:699 4143#: src/gns/gnunet-gns-helper-service-w32.c:701
4154msgid "" 4144msgid ""
4155"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-" 4145"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-"
4156"gns-import.sh?\n" 4146"gns-import.sh?\n"
4157msgstr "" 4147msgstr ""
4158 4148
4159#: src/gns/gnunet-gns-helper-service-w32.c:737 4149#: src/gns/gnunet-gns-helper-service-w32.c:739
4160#, fuzzy, c-format 4150#, fuzzy, c-format
4161msgid "Failed to connect to identity service\n" 4151msgid "Failed to connect to identity service\n"
4162msgstr "Misslyckades att ansluta till gnunetd.\n" 4152msgstr "Misslyckades att ansluta till gnunetd.\n"
4163 4153
4164#: src/gns/gnunet-gns-import.c:450 4154#: src/gns/gnunet-gns-import.c:452
4165msgid "This program will import some GNS authorities into your GNS namestore." 4155msgid "This program will import some GNS authorities into your GNS namestore."
4166msgstr "" 4156msgstr ""
4167 4157
4168#: src/gns/gnunet-gns-proxy.c:110 4158#: src/gns/gnunet-gns-proxy.c:118
4169#: src/hostlist/gnunet-daemon-hostlist_client.c:533 4159#: src/hostlist/gnunet-daemon-hostlist_client.c:535
4170#: src/hostlist/gnunet-daemon-hostlist_client.c:751 4160#: src/hostlist/gnunet-daemon-hostlist_client.c:753
4171#: src/hostlist/gnunet-daemon-hostlist_client.c:757 4161#: src/hostlist/gnunet-daemon-hostlist_client.c:759
4172#: src/hostlist/gnunet-daemon-hostlist_client.c:809 4162#: src/hostlist/gnunet-daemon-hostlist_client.c:811
4173#: src/hostlist/gnunet-daemon-hostlist_client.c:818 4163#: src/hostlist/gnunet-daemon-hostlist_client.c:820
4174#: src/hostlist/gnunet-daemon-hostlist_client.c:929 4164#: src/hostlist/gnunet-daemon-hostlist_client.c:931
4175#: src/hostlist/gnunet-daemon-hostlist_client.c:1024 4165#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
4176#: src/hostlist/gnunet-daemon-hostlist_client.c:1029 4166#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
4177#: src/transport/plugin_transport_http_client.c:596 4167#: src/transport/plugin_transport_http_client.c:598
4178#: src/transport/plugin_transport_http_client.c:614 4168#: src/transport/plugin_transport_http_client.c:616
4179#, fuzzy, c-format 4169#, fuzzy, c-format
4180msgid "%s failed at %s:%d: `%s'\n" 4170msgid "%s failed at %s:%d: `%s'\n"
4181msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 4171msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
4182 4172
4183#: src/gns/gnunet-gns-proxy.c:960 4173#: src/gns/gnunet-gns-proxy.c:980
4184#, fuzzy, c-format 4174#, fuzzy, c-format
4185msgid "Unsupported CURL TLS backend %d\n" 4175msgid "Unsupported CURL TLS backend %d\n"
4186msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" 4176msgstr "Kommando \"%s\" stöds ej. Avbryter.\n"
4187 4177
4188#: src/gns/gnunet-gns-proxy.c:985 4178#: src/gns/gnunet-gns-proxy.c:1005
4189#, fuzzy, c-format 4179#, fuzzy, c-format
4190msgid "Failed to fetch CN from cert: %s\n" 4180msgid "Failed to fetch CN from cert: %s\n"
4191msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 4181msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
4192 4182
4193#: src/gns/gnunet-gns-proxy.c:1008 4183#: src/gns/gnunet-gns-proxy.c:1026
4194#, fuzzy, c-format 4184#, fuzzy, c-format
4195msgid "Failed to initialize DANE: %s\n" 4185msgid "Failed to initialize DANE: %s\n"
4196msgstr "Kunde inte initiera SQLite.\n" 4186msgstr "Kunde inte initiera SQLite.\n"
4197 4187
4198#: src/gns/gnunet-gns-proxy.c:1021 4188#: src/gns/gnunet-gns-proxy.c:1041
4199#, fuzzy, c-format 4189#, fuzzy, c-format
4200msgid "Failed to parse DANE record: %s\n" 4190msgid "Failed to parse DANE record: %s\n"
4201msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 4191msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
4202 4192
4203#: src/gns/gnunet-gns-proxy.c:1036 4193#: src/gns/gnunet-gns-proxy.c:1056
4204#, fuzzy, c-format 4194#, fuzzy, c-format
4205msgid "Failed to verify TLS connection using DANE: %s\n" 4195msgid "Failed to verify TLS connection using DANE: %s\n"
4206msgstr "Kunde inte spara konfigurationsfil \"%s\":" 4196msgstr "Kunde inte spara konfigurationsfil \"%s\":"
4207 4197
4208#: src/gns/gnunet-gns-proxy.c:1046 4198#: src/gns/gnunet-gns-proxy.c:1066
4209#, c-format 4199#, c-format
4210msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" 4200msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
4211msgstr "" 4201msgstr ""
4212 4202
4213#: src/gns/gnunet-gns-proxy.c:1070 4203#: src/gns/gnunet-gns-proxy.c:1090
4214#, c-format 4204#, c-format
4215msgid "TLS certificate subject name (%s) does not match `%s': %d\n" 4205msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
4216msgstr "" 4206msgstr ""
4217 4207
4218#: src/gns/gnunet-gns-proxy.c:1200 4208#: src/gns/gnunet-gns-proxy.c:1221
4219#, c-format 4209#, c-format
4220msgid "Cookie domain `%s' supplied by server is invalid\n" 4210msgid "Cookie domain `%s' supplied by server is invalid\n"
4221msgstr "" 4211msgstr ""
4222 4212
4223#: src/gns/gnunet-gns-proxy.c:2062 4213#: src/gns/gnunet-gns-proxy.c:2121
4224#, fuzzy, c-format 4214#, fuzzy, c-format
4225msgid "Unsupported HTTP method `%s'\n" 4215msgid "Unsupported HTTP method `%s'\n"
4226msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" 4216msgstr "Kommando \"%s\" stöds ej. Avbryter.\n"
4227 4217
4228#: src/gns/gnunet-gns-proxy.c:2583 4218#: src/gns/gnunet-gns-proxy.c:2642
4229#, fuzzy, c-format 4219#, fuzzy, c-format
4230msgid "Unable to import private key from file `%s'\n" 4220msgid "Unable to import private key from file `%s'\n"
4231msgstr "Kunde inte skapa användarkonto:" 4221msgstr "Kunde inte skapa användarkonto:"
4232 4222
4233#: src/gns/gnunet-gns-proxy.c:2615 4223#: src/gns/gnunet-gns-proxy.c:2674
4234#, fuzzy, c-format 4224#, fuzzy, c-format
4235msgid "Unable to import certificate from `%s'\n" 4225msgid "Unable to import certificate from `%s'\n"
4236msgstr "Kunde inte spara konfigurationsfil \"%s\":" 4226msgstr "Kunde inte spara konfigurationsfil \"%s\":"
4237 4227
4238#: src/gns/gnunet-gns-proxy.c:2814 4228#: src/gns/gnunet-gns-proxy.c:2875
4239#, fuzzy, c-format 4229#, fuzzy, c-format
4240msgid "Failed to start HTTPS server for `%s'\n" 4230msgid "Failed to start HTTPS server for `%s'\n"
4241msgstr "Misslyckades att starta samling.\n" 4231msgstr "Misslyckades att starta samling.\n"
4242 4232
4243#: src/gns/gnunet-gns-proxy.c:2839 src/rest/gnunet-rest-server.c:656 4233#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
4244#, fuzzy 4234#, fuzzy
4245msgid "Failed to pass client to MHD\n" 4235msgid "Failed to pass client to MHD\n"
4246msgstr "Misslyckades att ansluta till gnunetd.\n" 4236msgstr "Misslyckades att ansluta till gnunetd.\n"
4247 4237
4248#: src/gns/gnunet-gns-proxy.c:3169 4238#: src/gns/gnunet-gns-proxy.c:3233
4249#, fuzzy, c-format 4239#, fuzzy, c-format
4250msgid "Unsupported socks version %d\n" 4240msgid "Unsupported socks version %d\n"
4251msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" 4241msgstr "Kommando \"%s\" stöds ej. Avbryter.\n"
4252 4242
4253#: src/gns/gnunet-gns-proxy.c:3198 4243#: src/gns/gnunet-gns-proxy.c:3262
4254#, fuzzy, c-format 4244#, fuzzy, c-format
4255msgid "Unsupported socks command %d\n" 4245msgid "Unsupported socks command %d\n"
4256msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" 4246msgstr "Kommando \"%s\" stöds ej. Avbryter.\n"
4257 4247
4258#: src/gns/gnunet-gns-proxy.c:3280 4248#: src/gns/gnunet-gns-proxy.c:3345
4259#, fuzzy, c-format 4249#, fuzzy, c-format
4260msgid "Unsupported socks address type %d\n" 4250msgid "Unsupported socks address type %d\n"
4261msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" 4251msgstr "Kommando \"%s\" stöds ej. Avbryter.\n"
4262 4252
4263#: src/gns/gnunet-gns-proxy.c:3570 4253#: src/gns/gnunet-gns-proxy.c:3635
4264#, fuzzy, c-format 4254#, fuzzy, c-format
4265msgid "Failed to load X.509 key and certificate from `%s'\n" 4255msgid "Failed to load X.509 key and certificate from `%s'\n"
4266msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4256msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4267 4257
4268#: src/gns/gnunet-gns-proxy.c:3698 4258#: src/gns/gnunet-gns-proxy.c:3763
4269msgid "listen on specified port (default: 7777)" 4259msgid "listen on specified port (default: 7777)"
4270msgstr "" 4260msgstr ""
4271 4261
4272#: src/gns/gnunet-gns-proxy.c:3703 4262#: src/gns/gnunet-gns-proxy.c:3768
4273msgid "pem file to use as CA" 4263msgid "pem file to use as CA"
4274msgstr "" 4264msgstr ""
4275 4265
4276#: src/gns/gnunet-gns-proxy.c:3707 4266#: src/gns/gnunet-gns-proxy.c:3772
4277msgid "disable use of IPv6" 4267msgid "disable use of IPv6"
4278msgstr "" 4268msgstr ""
4279 4269
4280#: src/gns/gnunet-gns-proxy.c:3733 4270#: src/gns/gnunet-gns-proxy.c:3798
4281msgid "GNUnet GNS proxy" 4271msgid "GNUnet GNS proxy"
4282msgstr "" 4272msgstr ""
4283 4273
4284#: src/gns/gnunet-service-gns.c:511 4274#: src/gns/gnunet-service-gns.c:506
4285#, fuzzy 4275#, fuzzy
4286msgid "Properly base32-encoded public key required" 4276msgid "Properly base32-encoded public key required"
4287msgstr "Ogiltigt argument: \"%s\"\n" 4277msgstr "Ogiltigt argument: \"%s\"\n"
4288 4278
4289#: src/gns/gnunet-service-gns.c:547 4279#: src/gns/gnunet-service-gns.c:542
4290#, fuzzy 4280#, fuzzy
4291msgid "Failed to connect to the namecache!\n" 4281msgid "Failed to connect to the namecache!\n"
4292msgstr "Misslyckades att ansluta till gnunetd.\n" 4282msgstr "Misslyckades att ansluta till gnunetd.\n"
4293 4283
4294#: src/gns/gnunet-service-gns.c:566 4284#: src/gns/gnunet-service-gns.c:561
4295#: src/zonemaster/gnunet-service-zonemaster.c:873 4285#: src/zonemaster/gnunet-service-zonemaster.c:875
4296#: src/zonemaster/gnunet-service-zonemaster-monitor.c:438 4286#: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
4297#, fuzzy 4287#, fuzzy
4298msgid "Could not connect to DHT!\n" 4288msgid "Could not connect to DHT!\n"
4299msgstr "Kunde inte ansluta till gnunetd.\n" 4289msgstr "Kunde inte ansluta till gnunetd.\n"
4300 4290
4301#: src/gns/gnunet-service-gns_interceptor.c:257 4291#: src/gns/gnunet-service-gns_interceptor.c:259
4302msgid "Error converting GNS response to DNS response!\n" 4292msgid "Error converting GNS response to DNS response!\n"
4303msgstr "" 4293msgstr ""
4304 4294
4305#: src/gns/gnunet-service-gns_interceptor.c:364 4295#: src/gns/gnunet-service-gns_interceptor.c:366
4306#, fuzzy 4296#, fuzzy
4307msgid "Failed to connect to the DNS service!\n" 4297msgid "Failed to connect to the DNS service!\n"
4308msgstr "Misslyckades att ansluta till gnunetd.\n" 4298msgstr "Misslyckades att ansluta till gnunetd.\n"
4309 4299
4310#: src/gns/gnunet-service-gns_resolver.c:717 4300#: src/gns/gnunet-service-gns_resolver.c:700
4311#, c-format 4301#, c-format
4312msgid "Protocol `%s' unknown, skipping labels.\n" 4302msgid "Protocol `%s' unknown, skipping labels.\n"
4313msgstr "" 4303msgstr ""
4314 4304
4315#: src/gns/gnunet-service-gns_resolver.c:728 4305#: src/gns/gnunet-service-gns_resolver.c:711
4316#, c-format 4306#, c-format
4317msgid "Service `%s' unknown for protocol `%s', skipping labels.\n" 4307msgid "Service `%s' unknown for protocol `%s', skipping labels.\n"
4318msgstr "" 4308msgstr ""
4319 4309
4320#: src/gns/gnunet-service-gns_resolver.c:931 4310#: src/gns/gnunet-service-gns_resolver.c:914
4321#, fuzzy 4311#, fuzzy
4322msgid "Failed to parse DNS response\n" 4312msgid "Failed to parse DNS response\n"
4323msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 4313msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
4324 4314
4325#: src/gns/gnunet-service-gns_resolver.c:1112 4315#: src/gns/gnunet-service-gns_resolver.c:1095
4326#, c-format 4316#, c-format
4327msgid "Skipping record of unsupported type %d\n" 4317msgid "Skipping record of unsupported type %d\n"
4328msgstr "" 4318msgstr ""
4329 4319
4330#: src/gns/gnunet-service-gns_resolver.c:1382 4320#: src/gns/gnunet-service-gns_resolver.c:1365
4331#, c-format 4321#, c-format
4332msgid "VPN returned empty result for `%s'\n" 4322msgid "VPN returned empty result for `%s'\n"
4333msgstr "" 4323msgstr ""
4334 4324
4335#: src/gns/gnunet-service-gns_resolver.c:1823 4325#: src/gns/gnunet-service-gns_resolver.c:1806
4336#, c-format 4326#, c-format
4337msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" 4327msgid "GNS lookup resulted in DNS name that is too long (`%s')\n"
4338msgstr "" 4328msgstr ""
4339 4329
4340#: src/gns/gnunet-service-gns_resolver.c:1866 4330#: src/gns/gnunet-service-gns_resolver.c:1849
4341#, fuzzy, c-format 4331#, fuzzy, c-format
4342msgid "GNS lookup failed (zero records found for `%s')\n" 4332msgid "GNS lookup failed (zero records found for `%s')\n"
4343msgstr "%d filer hittades i katalog.\n" 4333msgstr "%d filer hittades i katalog.\n"
4344 4334
4345#: src/gns/gnunet-service-gns_resolver.c:2281 4335#: src/gns/gnunet-service-gns_resolver.c:2264
4346msgid "GNS lookup recursion failed (no delegation record found)\n" 4336msgid "GNS lookup recursion failed (no delegation record found)\n"
4347msgstr "" 4337msgstr ""
4348 4338
4349#: src/gns/gnunet-service-gns_resolver.c:2304 4339#: src/gns/gnunet-service-gns_resolver.c:2287
4350#, fuzzy, c-format 4340#, fuzzy, c-format
4351msgid "Failed to cache GNS resolution: %s\n" 4341msgid "Failed to cache GNS resolution: %s\n"
4352msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 4342msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
4353 4343
4354#: src/gns/gnunet-service-gns_resolver.c:2467 4344#: src/gns/gnunet-service-gns_resolver.c:2450
4355#, c-format 4345#, c-format
4356msgid "GNS namecache returned empty result for `%s'\n" 4346msgid "GNS namecache returned empty result for `%s'\n"
4357msgstr "" 4347msgstr ""
4358 4348
4359#: src/gns/gnunet-service-gns_resolver.c:2602 4349#: src/gns/gnunet-service-gns_resolver.c:2585
4360#, c-format 4350#, c-format
4361msgid "Zone %s was revoked, resolution fails\n" 4351msgid "Zone %s was revoked, resolution fails\n"
4362msgstr "" 4352msgstr ""
4363 4353
4364#: src/gns/plugin_gnsrecord_gns.c:179 4354#: src/gns/plugin_gnsrecord_gns.c:181
4365#, fuzzy, c-format 4355#, fuzzy, c-format
4366msgid "Unable to parse PKEY record `%s'\n" 4356msgid "Unable to parse PKEY record `%s'\n"
4367msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4357msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4368 4358
4369#: src/gns/plugin_gnsrecord_gns.c:210 4359#: src/gns/plugin_gnsrecord_gns.c:212
4370#, fuzzy, c-format 4360#, fuzzy, c-format
4371msgid "Unable to parse GNS2DNS record `%s'\n" 4361msgid "Unable to parse GNS2DNS record `%s'\n"
4372msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4362msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4373 4363
4374#: src/gns/plugin_gnsrecord_gns.c:231 4364#: src/gns/plugin_gnsrecord_gns.c:233
4375#, fuzzy, c-format 4365#, fuzzy, c-format
4376msgid "Failed to serialize GNS2DNS record with value `%s'\n" 4366msgid "Failed to serialize GNS2DNS record with value `%s'\n"
4377msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 4367msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
4378 4368
4379#: src/gns/plugin_gnsrecord_gns.c:256 4369#: src/gns/plugin_gnsrecord_gns.c:258
4380#, fuzzy, c-format 4370#, fuzzy, c-format
4381msgid "Unable to parse VPN record string `%s'\n" 4371msgid "Unable to parse VPN record string `%s'\n"
4382msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4372msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4383 4373
4384#: src/gns/plugin_gnsrecord_gns.c:292 4374#: src/gns/plugin_gnsrecord_gns.c:294
4385#, fuzzy, c-format 4375#, fuzzy, c-format
4386msgid "Unable to parse BOX record string `%s'\n" 4376msgid "Unable to parse BOX record string `%s'\n"
4387msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4377msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4388 4378
4389#: src/gnsrecord/plugin_gnsrecord_dns.c:357 4379#: src/gnsrecord/plugin_gnsrecord_dns.c:359
4390#, fuzzy, c-format 4380#, fuzzy, c-format
4391msgid "Unable to parse IPv4 address `%s'\n" 4381msgid "Unable to parse IPv4 address `%s'\n"
4392msgstr "Ogiltigt svar på \"%s\".\n" 4382msgstr "Ogiltigt svar på \"%s\".\n"
4393 4383
4394#: src/gnsrecord/plugin_gnsrecord_dns.c:378 4384#: src/gnsrecord/plugin_gnsrecord_dns.c:380
4395#, fuzzy, c-format 4385#, fuzzy, c-format
4396msgid "Failed to serialize NS record with value `%s'\n" 4386msgid "Failed to serialize NS record with value `%s'\n"
4397msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 4387msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
4398 4388
4399#: src/gnsrecord/plugin_gnsrecord_dns.c:400 4389#: src/gnsrecord/plugin_gnsrecord_dns.c:402
4400#, fuzzy, c-format 4390#, fuzzy, c-format
4401msgid "Failed to serialize CNAME record with value `%s'\n" 4391msgid "Failed to serialize CNAME record with value `%s'\n"
4402msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 4392msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
4403 4393
4404#: src/gnsrecord/plugin_gnsrecord_dns.c:485 4394#: src/gnsrecord/plugin_gnsrecord_dns.c:487
4405#, fuzzy, c-format 4395#, fuzzy, c-format
4406msgid "Failed to serialize CERT record with %u bytes\n" 4396msgid "Failed to serialize CERT record with %u bytes\n"
4407msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 4397msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
4408 4398
4409#: src/gnsrecord/plugin_gnsrecord_dns.c:521 4399#: src/gnsrecord/plugin_gnsrecord_dns.c:523
4410#, fuzzy, c-format 4400#, fuzzy, c-format
4411msgid "Unable to parse SOA record `%s'\n" 4401msgid "Unable to parse SOA record `%s'\n"
4412msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4402msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4413 4403
4414#: src/gnsrecord/plugin_gnsrecord_dns.c:540 4404#: src/gnsrecord/plugin_gnsrecord_dns.c:542
4415#, fuzzy, c-format 4405#, fuzzy, c-format
4416msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n" 4406msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
4417msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 4407msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
4418 4408
4419#: src/gnsrecord/plugin_gnsrecord_dns.c:563 4409#: src/gnsrecord/plugin_gnsrecord_dns.c:565
4420#, fuzzy, c-format 4410#, fuzzy, c-format
4421msgid "Failed to serialize PTR record with value `%s'\n" 4411msgid "Failed to serialize PTR record with value `%s'\n"
4422msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 4412msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
4423 4413
4424#: src/gnsrecord/plugin_gnsrecord_dns.c:586 4414#: src/gnsrecord/plugin_gnsrecord_dns.c:588
4425#, fuzzy, c-format 4415#, fuzzy, c-format
4426msgid "Unable to parse MX record `%s'\n" 4416msgid "Unable to parse MX record `%s'\n"
4427msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4417msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4428 4418
4429#: src/gnsrecord/plugin_gnsrecord_dns.c:601 4419#: src/gnsrecord/plugin_gnsrecord_dns.c:603
4430#, fuzzy, c-format 4420#, fuzzy, c-format
4431msgid "Failed to serialize MX record with hostname `%s'\n" 4421msgid "Failed to serialize MX record with hostname `%s'\n"
4432msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 4422msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
4433 4423
4434#: src/gnsrecord/plugin_gnsrecord_dns.c:628 4424#: src/gnsrecord/plugin_gnsrecord_dns.c:630
4435#, fuzzy, c-format 4425#, fuzzy, c-format
4436msgid "Unable to parse SRV record `%s'\n" 4426msgid "Unable to parse SRV record `%s'\n"
4437msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4427msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4438 4428
4439#: src/gnsrecord/plugin_gnsrecord_dns.c:644 4429#: src/gnsrecord/plugin_gnsrecord_dns.c:646
4440#, fuzzy, c-format 4430#, fuzzy, c-format
4441msgid "Failed to serialize SRV record with target `%s'\n" 4431msgid "Failed to serialize SRV record with target `%s'\n"
4442msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 4432msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
4443 4433
4444#: src/gnsrecord/plugin_gnsrecord_dns.c:661 4434#: src/gnsrecord/plugin_gnsrecord_dns.c:663
4445#, fuzzy, c-format 4435#, fuzzy, c-format
4446msgid "Unable to parse IPv6 address `%s'\n" 4436msgid "Unable to parse IPv6 address `%s'\n"
4447msgstr "Ogiltigt svar på \"%s\".\n" 4437msgstr "Ogiltigt svar på \"%s\".\n"
4448 4438
4449#: src/gnsrecord/plugin_gnsrecord_dns.c:685 4439#: src/gnsrecord/plugin_gnsrecord_dns.c:687
4450#: src/gnsrecord/plugin_gnsrecord_dns.c:701 4440#: src/gnsrecord/plugin_gnsrecord_dns.c:703
4451#, fuzzy, c-format 4441#, fuzzy, c-format
4452msgid "Unable to parse TLSA record string `%s'\n" 4442msgid "Unable to parse TLSA record string `%s'\n"
4453msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4443msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4454 4444
4455#: src/hello/gnunet-hello.c:124 4445#: src/hello/gnunet-hello.c:126
4456msgid "Call with name of HELLO file to modify.\n" 4446msgid "Call with name of HELLO file to modify.\n"
4457msgstr "" 4447msgstr ""
4458 4448
4459#: src/hello/gnunet-hello.c:130 4449#: src/hello/gnunet-hello.c:132
4460#, fuzzy, c-format 4450#, fuzzy, c-format
4461msgid "Error accessing file `%s': %s\n" 4451msgid "Error accessing file `%s': %s\n"
4462msgstr "Fel vid skapandet av användare" 4452msgstr "Fel vid skapandet av användare"
4463 4453
4464#: src/hello/gnunet-hello.c:138 4454#: src/hello/gnunet-hello.c:140
4465#, c-format 4455#, c-format
4466msgid "File `%s' is too big to be a HELLO\n" 4456msgid "File `%s' is too big to be a HELLO\n"
4467msgstr "" 4457msgstr ""
4468 4458
4469#: src/hello/gnunet-hello.c:145 4459#: src/hello/gnunet-hello.c:147
4470#, c-format 4460#, c-format
4471msgid "File `%s' is too small to be a HELLO\n" 4461msgid "File `%s' is too small to be a HELLO\n"
4472msgstr "" 4462msgstr ""
4473 4463
4474#: src/hello/gnunet-hello.c:155 src/hello/gnunet-hello.c:196 4464#: src/hello/gnunet-hello.c:157 src/hello/gnunet-hello.c:198
4475#, fuzzy, c-format 4465#, fuzzy, c-format
4476msgid "Error opening file `%s': %s\n" 4466msgid "Error opening file `%s': %s\n"
4477msgstr "Fel vid skapandet av användare" 4467msgstr "Fel vid skapandet av användare"
4478 4468
4479#: src/hello/gnunet-hello.c:172 4469#: src/hello/gnunet-hello.c:174
4480#, fuzzy, c-format 4470#, fuzzy, c-format
4481msgid "Did not find well-formed HELLO in file `%s'\n" 4471msgid "Did not find well-formed HELLO in file `%s'\n"
4482msgstr "%d filer hittades i katalog.\n" 4472msgstr "%d filer hittades i katalog.\n"
4483 4473
4484#: src/hello/gnunet-hello.c:208 4474#: src/hello/gnunet-hello.c:210
4485#, fuzzy, c-format 4475#, fuzzy, c-format
4486msgid "Error writing HELLO to file `%s': %s\n" 4476msgid "Error writing HELLO to file `%s': %s\n"
4487msgstr "Fel vid skapandet av användare" 4477msgstr "Fel vid skapandet av användare"
4488 4478
4489#: src/hello/gnunet-hello.c:217 4479#: src/hello/gnunet-hello.c:219
4490#, c-format 4480#, c-format
4491msgid "Modified %u addresses, wrote %u bytes\n" 4481msgid "Modified %u addresses, wrote %u bytes\n"
4492msgstr "" 4482msgstr ""
4493 4483
4494#: src/hello/hello.c:1108 4484#: src/hello/hello.c:1110
4495#, fuzzy 4485#, fuzzy
4496msgid "Failed to parse HELLO message: missing expiration time\n" 4486msgid "Failed to parse HELLO message: missing expiration time\n"
4497msgstr "Kunde inte spara konfiguration!" 4487msgstr "Kunde inte spara konfiguration!"
4498 4488
4499#: src/hello/hello.c:1117 4489#: src/hello/hello.c:1119
4500#, fuzzy 4490#, fuzzy
4501msgid "Failed to parse HELLO message: invalid expiration time\n" 4491msgid "Failed to parse HELLO message: invalid expiration time\n"
4502msgstr "Kunde inte spara konfiguration!" 4492msgstr "Kunde inte spara konfiguration!"
4503 4493
4504#: src/hello/hello.c:1127 4494#: src/hello/hello.c:1129
4505#, fuzzy 4495#, fuzzy
4506msgid "Failed to parse HELLO message: malformed\n" 4496msgid "Failed to parse HELLO message: malformed\n"
4507msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4497msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4508 4498
4509#: src/hello/hello.c:1138 4499#: src/hello/hello.c:1140
4510#, fuzzy 4500#, fuzzy
4511msgid "Failed to parse HELLO message: missing transport plugin\n" 4501msgid "Failed to parse HELLO message: missing transport plugin\n"
4512msgstr "Kunde inte slå upp \"%s\": %s\n" 4502msgstr "Kunde inte slå upp \"%s\": %s\n"
4513 4503
4514#: src/hello/hello.c:1156 4504#: src/hello/hello.c:1158
4515#, c-format 4505#, c-format
4516msgid "Plugin `%s' not found, skipping address\n" 4506msgid "Plugin `%s' not found, skipping address\n"
4517msgstr "" 4507msgstr ""
4518 4508
4519#: src/hello/hello.c:1164 4509#: src/hello/hello.c:1166
4520#, c-format 4510#, c-format
4521msgid "Plugin `%s' does not support URIs yet\n" 4511msgid "Plugin `%s' does not support URIs yet\n"
4522msgstr "" 4512msgstr ""
4523 4513
4524#: src/hello/hello.c:1179 4514#: src/hello/hello.c:1181
4525#, fuzzy, c-format 4515#, fuzzy, c-format
4526msgid "Failed to parse `%s' as an address for plugin `%s'\n" 4516msgid "Failed to parse `%s' as an address for plugin `%s'\n"
4527msgstr "Misslyckades att binda till UDP-port %d.\n" 4517msgstr "Misslyckades att binda till UDP-port %d.\n"
4528 4518
4529#: src/hostlist/gnunet-daemon-hostlist.c:314 4519#: src/hostlist/gnunet-daemon-hostlist.c:316
4530msgid "" 4520msgid ""
4531"None of the functions for the hostlist daemon were enabled. I have no " 4521"None of the functions for the hostlist daemon were enabled. I have no "
4532"reason to run!\n" 4522"reason to run!\n"
4533msgstr "" 4523msgstr ""
4534 4524
4535#: src/hostlist/gnunet-daemon-hostlist.c:374 4525#: src/hostlist/gnunet-daemon-hostlist.c:376
4536msgid "advertise our hostlist to other peers" 4526msgid "advertise our hostlist to other peers"
4537msgstr "" 4527msgstr ""
4538 4528
4539#: src/hostlist/gnunet-daemon-hostlist.c:379 4529#: src/hostlist/gnunet-daemon-hostlist.c:381
4540msgid "" 4530msgid ""
4541"bootstrap using hostlists (it is highly recommended that you always use this " 4531"bootstrap using hostlists (it is highly recommended that you always use this "
4542"option)" 4532"option)"
4543msgstr "" 4533msgstr ""
4544 4534
4545#: src/hostlist/gnunet-daemon-hostlist.c:383 4535#: src/hostlist/gnunet-daemon-hostlist.c:385
4546msgid "enable learning about hostlist servers from other peers" 4536msgid "enable learning about hostlist servers from other peers"
4547msgstr "" 4537msgstr ""
4548 4538
4549#: src/hostlist/gnunet-daemon-hostlist.c:388 4539#: src/hostlist/gnunet-daemon-hostlist.c:390
4550msgid "provide a hostlist server" 4540msgid "provide a hostlist server"
4551msgstr "" 4541msgstr ""
4552 4542
4553#: src/hostlist/gnunet-daemon-hostlist.c:404 4543#: src/hostlist/gnunet-daemon-hostlist.c:406
4554msgid "GNUnet hostlist server and client" 4544msgid "GNUnet hostlist server and client"
4555msgstr "" 4545msgstr ""
4556 4546
4557#: src/hostlist/gnunet-daemon-hostlist_client.c:347 4547#: src/hostlist/gnunet-daemon-hostlist_client.c:349
4558msgid "# bytes downloaded from hostlist servers" 4548msgid "# bytes downloaded from hostlist servers"
4559msgstr "" 4549msgstr ""
4560 4550
4561#: src/hostlist/gnunet-daemon-hostlist_client.c:368 4551#: src/hostlist/gnunet-daemon-hostlist_client.c:370
4562#: src/hostlist/gnunet-daemon-hostlist_client.c:401 4552#: src/hostlist/gnunet-daemon-hostlist_client.c:403
4563msgid "# invalid HELLOs downloaded from hostlist servers" 4553msgid "# invalid HELLOs downloaded from hostlist servers"
4564msgstr "" 4554msgstr ""
4565 4555
4566#: src/hostlist/gnunet-daemon-hostlist_client.c:371 4556#: src/hostlist/gnunet-daemon-hostlist_client.c:373
4567#: src/hostlist/gnunet-daemon-hostlist_client.c:404 4557#: src/hostlist/gnunet-daemon-hostlist_client.c:406
4568#, fuzzy, c-format 4558#, fuzzy, c-format
4569msgid "Invalid `%s' message received from hostlist at `%s'\n" 4559msgid "Invalid `%s' message received from hostlist at `%s'\n"
4570msgstr "Ogiltigt meddelande mottogs den %s:%d." 4560msgstr "Ogiltigt meddelande mottogs den %s:%d."
4571 4561
4572#: src/hostlist/gnunet-daemon-hostlist_client.c:389 4562#: src/hostlist/gnunet-daemon-hostlist_client.c:391
4573msgid "# valid HELLOs downloaded from hostlist servers" 4563msgid "# valid HELLOs downloaded from hostlist servers"
4574msgstr "" 4564msgstr ""
4575 4565
4576#: src/hostlist/gnunet-daemon-hostlist_client.c:659 4566#: src/hostlist/gnunet-daemon-hostlist_client.c:661
4577#: src/hostlist/gnunet-daemon-hostlist_client.c:1405 4567#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
4578msgid "# advertised hostlist URIs" 4568msgid "# advertised hostlist URIs"
4579msgstr "" 4569msgstr ""
4580 4570
4581#: src/hostlist/gnunet-daemon-hostlist_client.c:689 4571#: src/hostlist/gnunet-daemon-hostlist_client.c:691
4582#, c-format 4572#, c-format
4583msgid "# advertised URI `%s' downloaded" 4573msgid "# advertised URI `%s' downloaded"
4584msgstr "" 4574msgstr ""
4585 4575
4586#: src/hostlist/gnunet-daemon-hostlist_client.c:732 4576#: src/hostlist/gnunet-daemon-hostlist_client.c:734
4587#, c-format 4577#, c-format
4588msgid "" 4578msgid ""
4589"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI " 4579"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
4590"gets dismissed.\n" 4580"gets dismissed.\n"
4591msgstr "" 4581msgstr ""
4592 4582
4593#: src/hostlist/gnunet-daemon-hostlist_client.c:860 4583#: src/hostlist/gnunet-daemon-hostlist_client.c:862
4594#, fuzzy, c-format 4584#, fuzzy, c-format
4595msgid "Timeout trying to download hostlist from `%s'\n" 4585msgid "Timeout trying to download hostlist from `%s'\n"
4596msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4586msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4597 4587
4598#: src/hostlist/gnunet-daemon-hostlist_client.c:874 4588#: src/hostlist/gnunet-daemon-hostlist_client.c:876
4599#, c-format 4589#, c-format
4600msgid "Download limit of %u bytes exceeded, stopping download\n" 4590msgid "Download limit of %u bytes exceeded, stopping download\n"
4601msgstr "" 4591msgstr ""
4602 4592
4603#: src/hostlist/gnunet-daemon-hostlist_client.c:894 4593#: src/hostlist/gnunet-daemon-hostlist_client.c:896
4604#, fuzzy, c-format 4594#, fuzzy, c-format
4605msgid "Download of hostlist from `%s' failed: `%s'\n" 4595msgid "Download of hostlist from `%s' failed: `%s'\n"
4606msgstr "" 4596msgstr ""
4607"Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n" 4597"Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n"
4608 4598
4609#: src/hostlist/gnunet-daemon-hostlist_client.c:900 4599#: src/hostlist/gnunet-daemon-hostlist_client.c:902
4610#, fuzzy, c-format 4600#, fuzzy, c-format
4611msgid "Download of hostlist `%s' completed.\n" 4601msgid "Download of hostlist `%s' completed.\n"
4612msgstr "" 4602msgstr ""
4613"Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n" 4603"Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n"
4614 4604
4615#: src/hostlist/gnunet-daemon-hostlist_client.c:908 4605#: src/hostlist/gnunet-daemon-hostlist_client.c:910
4616#, c-format 4606#, c-format
4617msgid "Adding successfully tested hostlist `%s' datastore.\n" 4607msgid "Adding successfully tested hostlist `%s' datastore.\n"
4618msgstr "" 4608msgstr ""
4619 4609
4620#: src/hostlist/gnunet-daemon-hostlist_client.c:961 4610#: src/hostlist/gnunet-daemon-hostlist_client.c:963
4621#, c-format 4611#, c-format
4622msgid "Bootstrapping using hostlist at `%s'.\n" 4612msgid "Bootstrapping using hostlist at `%s'.\n"
4623msgstr "" 4613msgstr ""
4624 4614
4625#: src/hostlist/gnunet-daemon-hostlist_client.c:969 4615#: src/hostlist/gnunet-daemon-hostlist_client.c:971
4626msgid "# hostlist downloads initiated" 4616msgid "# hostlist downloads initiated"
4627msgstr "" 4617msgstr ""
4628 4618
4629#: src/hostlist/gnunet-daemon-hostlist_client.c:1096 4619#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
4630#: src/hostlist/gnunet-daemon-hostlist_client.c:1663 4620#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
4631msgid "# milliseconds between hostlist downloads" 4621msgid "# milliseconds between hostlist downloads"
4632msgstr "" 4622msgstr ""
4633 4623
4634#: src/hostlist/gnunet-daemon-hostlist_client.c:1105 4624#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
4635#, c-format 4625#, c-format
4636msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n" 4626msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n"
4637msgstr "" 4627msgstr ""
4638 4628
4639#: src/hostlist/gnunet-daemon-hostlist_client.c:1164 4629#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
4640#: src/hostlist/gnunet-daemon-hostlist_client.c:1185 4630#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
4641#, fuzzy 4631#, fuzzy
4642msgid "# active connections" 4632msgid "# active connections"
4643msgstr "Nätverksanslutning" 4633msgstr "Nätverksanslutning"
4644 4634
4645#: src/hostlist/gnunet-daemon-hostlist_client.c:1351 4635#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
4646#, fuzzy, c-format 4636#, fuzzy, c-format
4647msgid "Loading saved hostlist entries from file `%s' \n" 4637msgid "Loading saved hostlist entries from file `%s' \n"
4648msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4638msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4649 4639
4650#: src/hostlist/gnunet-daemon-hostlist_client.c:1356 4640#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
4651#, fuzzy, c-format 4641#, fuzzy, c-format
4652msgid "Hostlist file `%s' does not exist\n" 4642msgid "Hostlist file `%s' does not exist\n"
4653msgstr "antal meddelanden att använda per iteration" 4643msgstr "antal meddelanden att använda per iteration"
4654 4644
4655#: src/hostlist/gnunet-daemon-hostlist_client.c:1365 4645#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
4656#, fuzzy, c-format 4646#, fuzzy, c-format
4657msgid "Could not open file `%s' for reading to load hostlists: %s\n" 4647msgid "Could not open file `%s' for reading to load hostlists: %s\n"
4658msgstr "Kunde inte slå upp \"%s\": %s\n" 4648msgstr "Kunde inte slå upp \"%s\": %s\n"
4659 4649
4660#: src/hostlist/gnunet-daemon-hostlist_client.c:1399 4650#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
4661#, c-format 4651#, c-format
4662msgid "%u hostlist URIs loaded from file\n" 4652msgid "%u hostlist URIs loaded from file\n"
4663msgstr "" 4653msgstr ""
4664 4654
4665#: src/hostlist/gnunet-daemon-hostlist_client.c:1402 4655#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
4666msgid "# hostlist URIs read from file" 4656msgid "# hostlist URIs read from file"
4667msgstr "" 4657msgstr ""
4668 4658
4669#: src/hostlist/gnunet-daemon-hostlist_client.c:1448 4659#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
4670#, fuzzy, c-format 4660#, fuzzy, c-format
4671msgid "Could not open file `%s' for writing to save hostlists: %s\n" 4661msgid "Could not open file `%s' for writing to save hostlists: %s\n"
4672msgstr "Kunde inte slå upp \"%s\": %s\n" 4662msgstr "Kunde inte slå upp \"%s\": %s\n"
4673 4663
4674#: src/hostlist/gnunet-daemon-hostlist_client.c:1455 4664#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
4675#, fuzzy, c-format 4665#, fuzzy, c-format
4676msgid "Writing %u hostlist URIs to `%s'\n" 4666msgid "Writing %u hostlist URIs to `%s'\n"
4677msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4667msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4678 4668
4679#: src/hostlist/gnunet-daemon-hostlist_client.c:1479 4669#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
4680#: src/hostlist/gnunet-daemon-hostlist_client.c:1496 4670#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
4681#, c-format 4671#, c-format
4682msgid "Error writing hostlist URIs to file `%s'\n" 4672msgid "Error writing hostlist URIs to file `%s'\n"
4683msgstr "" 4673msgstr ""
4684 4674
4685#: src/hostlist/gnunet-daemon-hostlist_client.c:1491 4675#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
4686msgid "# hostlist URIs written to file" 4676msgid "# hostlist URIs written to file"
4687msgstr "" 4677msgstr ""
4688 4678
4689#: src/hostlist/gnunet-daemon-hostlist_client.c:1593 4679#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
4690#: src/transport/plugin_transport_http_client.c:2272 4680#: src/transport/plugin_transport_http_client.c:2274
4691#, c-format 4681#, c-format
4692msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n" 4682msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
4693msgstr "" 4683msgstr ""
4694 4684
4695#: src/hostlist/gnunet-daemon-hostlist_client.c:1622 4685#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
4696msgid "Learning is enabled on this peer\n" 4686msgid "Learning is enabled on this peer\n"
4697msgstr "" 4687msgstr ""
4698 4688
4699#: src/hostlist/gnunet-daemon-hostlist_client.c:1636 4689#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
4700msgid "Learning is not enabled on this peer\n" 4690msgid "Learning is not enabled on this peer\n"
4701msgstr "" 4691msgstr ""
4702 4692
4703#: src/hostlist/gnunet-daemon-hostlist_client.c:1649 4693#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
4704#, c-format 4694#, c-format
4705msgid "" 4695msgid ""
4706"Since learning is not enabled on this peer, hostlist file `%s' was removed\n" 4696"Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
4707msgstr "" 4697msgstr ""
4708 4698
4709#: src/hostlist/gnunet-daemon-hostlist_server.c:174 4699#: src/hostlist/gnunet-daemon-hostlist_server.c:176
4710#, fuzzy 4700#, fuzzy
4711msgid "bytes in hostlist" 4701msgid "bytes in hostlist"
4712msgstr "# byte krypterade" 4702msgstr "# byte krypterade"
4713 4703
4714#: src/hostlist/gnunet-daemon-hostlist_server.c:199 4704#: src/hostlist/gnunet-daemon-hostlist_server.c:201
4715msgid "expired addresses encountered" 4705msgid "expired addresses encountered"
4716msgstr "" 4706msgstr ""
4717 4707
4718#: src/hostlist/gnunet-daemon-hostlist_server.c:235 4708#: src/hostlist/gnunet-daemon-hostlist_server.c:237
4719#: src/hostlist/gnunet-daemon-hostlist_server.c:529 4709#: src/hostlist/gnunet-daemon-hostlist_server.c:531
4720#: src/peerinfo-tool/gnunet-peerinfo.c:383 4710#: src/peerinfo-tool/gnunet-peerinfo.c:385
4721#: src/peerinfo-tool/gnunet-peerinfo.c:532 4711#: src/peerinfo-tool/gnunet-peerinfo.c:534
4722#: src/topology/gnunet-daemon-topology.c:860 4712#: src/topology/gnunet-daemon-topology.c:862
4723#, fuzzy, c-format 4713#, fuzzy, c-format
4724msgid "Error in communication with PEERINFO service: %s\n" 4714msgid "Error in communication with PEERINFO service: %s\n"
4725msgstr "Skriv ut information om GNUnets motparter." 4715msgstr "Skriv ut information om GNUnets motparter."
4726 4716
4727#: src/hostlist/gnunet-daemon-hostlist_server.c:259 4717#: src/hostlist/gnunet-daemon-hostlist_server.c:261
4728msgid "HELLOs without addresses encountered (ignored)" 4718msgid "HELLOs without addresses encountered (ignored)"
4729msgstr "" 4719msgstr ""
4730 4720
4731#: src/hostlist/gnunet-daemon-hostlist_server.c:276 4721#: src/hostlist/gnunet-daemon-hostlist_server.c:278
4732msgid "bytes not included in hostlist (size limit)" 4722msgid "bytes not included in hostlist (size limit)"
4733msgstr "" 4723msgstr ""
4734 4724
4735#: src/hostlist/gnunet-daemon-hostlist_server.c:380 4725#: src/hostlist/gnunet-daemon-hostlist_server.c:382
4736#, c-format 4726#, c-format
4737msgid "Refusing `%s' request to hostlist server\n" 4727msgid "Refusing `%s' request to hostlist server\n"
4738msgstr "" 4728msgstr ""
4739 4729
4740#: src/hostlist/gnunet-daemon-hostlist_server.c:383 4730#: src/hostlist/gnunet-daemon-hostlist_server.c:385
4741msgid "hostlist requests refused (not HTTP GET)" 4731msgid "hostlist requests refused (not HTTP GET)"
4742msgstr "" 4732msgstr ""
4743 4733
4744#: src/hostlist/gnunet-daemon-hostlist_server.c:395 4734#: src/hostlist/gnunet-daemon-hostlist_server.c:397
4745#, c-format 4735#, c-format
4746msgid "Refusing `%s' request with %llu bytes of upload data\n" 4736msgid "Refusing `%s' request with %llu bytes of upload data\n"
4747msgstr "" 4737msgstr ""
4748 4738
4749#: src/hostlist/gnunet-daemon-hostlist_server.c:399 4739#: src/hostlist/gnunet-daemon-hostlist_server.c:401
4750msgid "hostlist requests refused (upload data)" 4740msgid "hostlist requests refused (upload data)"
4751msgstr "" 4741msgstr ""
4752 4742
4753#: src/hostlist/gnunet-daemon-hostlist_server.c:406 4743#: src/hostlist/gnunet-daemon-hostlist_server.c:408
4754msgid "Could not handle hostlist request since I do not have a response yet\n" 4744msgid "Could not handle hostlist request since I do not have a response yet\n"
4755msgstr "" 4745msgstr ""
4756 4746
4757#: src/hostlist/gnunet-daemon-hostlist_server.c:409 4747#: src/hostlist/gnunet-daemon-hostlist_server.c:411
4758msgid "hostlist requests refused (not ready)" 4748msgid "hostlist requests refused (not ready)"
4759msgstr "" 4749msgstr ""
4760 4750
4761#: src/hostlist/gnunet-daemon-hostlist_server.c:414 4751#: src/hostlist/gnunet-daemon-hostlist_server.c:416
4762msgid "Received request for our hostlist\n" 4752msgid "Received request for our hostlist\n"
4763msgstr "" 4753msgstr ""
4764 4754
4765#: src/hostlist/gnunet-daemon-hostlist_server.c:416 4755#: src/hostlist/gnunet-daemon-hostlist_server.c:418
4766msgid "hostlist requests processed" 4756msgid "hostlist requests processed"
4767msgstr "" 4757msgstr ""
4768 4758
4769#: src/hostlist/gnunet-daemon-hostlist_server.c:464 4759#: src/hostlist/gnunet-daemon-hostlist_server.c:466
4770msgid "# hostlist advertisements send" 4760msgid "# hostlist advertisements send"
4771msgstr "" 4761msgstr ""
4772 4762
4773#: src/hostlist/gnunet-daemon-hostlist_server.c:677 4763#: src/hostlist/gnunet-daemon-hostlist_server.c:679
4774#: src/transport/gnunet-service-transport.c:2813 4764#: src/transport/gnunet-service-transport.c:2814
4775#, fuzzy 4765#, fuzzy
4776msgid "Could not access PEERINFO service. Exiting.\n" 4766msgid "Could not access PEERINFO service. Exiting.\n"
4777msgstr "Kunde inte komma åt namnrymdsinformation.\n" 4767msgstr "Kunde inte komma åt namnrymdsinformation.\n"
4778 4768
4779#: src/hostlist/gnunet-daemon-hostlist_server.c:689 4769#: src/hostlist/gnunet-daemon-hostlist_server.c:691
4780#, fuzzy, c-format 4770#, fuzzy, c-format
4781msgid "Invalid port number %llu. Exiting.\n" 4771msgid "Invalid port number %llu. Exiting.\n"
4782msgstr "Ogiltiga argument. Avslutar.\n" 4772msgstr "Ogiltiga argument. Avslutar.\n"
4783 4773
4784#: src/hostlist/gnunet-daemon-hostlist_server.c:701 4774#: src/hostlist/gnunet-daemon-hostlist_server.c:703
4785#, c-format 4775#, c-format
4786msgid "Hostlist service starts on %s:%llu\n" 4776msgid "Hostlist service starts on %s:%llu\n"
4787msgstr "" 4777msgstr ""
4788 4778
4789#: src/hostlist/gnunet-daemon-hostlist_server.c:716 4779#: src/hostlist/gnunet-daemon-hostlist_server.c:718
4790#, fuzzy, c-format 4780#, fuzzy, c-format
4791msgid "Address to obtain hostlist: `%s'\n" 4781msgid "Address to obtain hostlist: `%s'\n"
4792msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4782msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4793 4783
4794#: src/hostlist/gnunet-daemon-hostlist_server.c:729 4784#: src/hostlist/gnunet-daemon-hostlist_server.c:731
4795#, fuzzy 4785#, fuzzy
4796msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4786msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4797msgstr "\"%s\" är inte tillgänglig." 4787msgstr "\"%s\" är inte tillgänglig."
4798 4788
4799#: src/hostlist/gnunet-daemon-hostlist_server.c:746 4789#: src/hostlist/gnunet-daemon-hostlist_server.c:748
4800#, fuzzy 4790#, fuzzy
4801msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n" 4791msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
4802msgstr "\"%s\" är inte tillgänglig." 4792msgstr "\"%s\" är inte tillgänglig."
4803 4793
4804#: src/hostlist/gnunet-daemon-hostlist_server.c:767 4794#: src/hostlist/gnunet-daemon-hostlist_server.c:769
4805#, fuzzy, c-format 4795#, fuzzy, c-format
4806msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4796msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4807msgstr "\"%s\" är inte tillgänglig." 4797msgstr "\"%s\" är inte tillgänglig."
4808 4798
4809#: src/hostlist/gnunet-daemon-hostlist_server.c:787 4799#: src/hostlist/gnunet-daemon-hostlist_server.c:789
4810#, fuzzy, c-format 4800#, fuzzy, c-format
4811msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n" 4801msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
4812msgstr "\"%s\" är inte tillgänglig." 4802msgstr "\"%s\" är inte tillgänglig."
4813 4803
4814#: src/hostlist/gnunet-daemon-hostlist_server.c:827 4804#: src/hostlist/gnunet-daemon-hostlist_server.c:829
4815#, c-format 4805#, c-format
4816msgid "Could not start hostlist HTTP server on port %u\n" 4806msgid "Could not start hostlist HTTP server on port %u\n"
4817msgstr "" 4807msgstr ""
4818 4808
4819#: src/identity/gnunet-identity.c:177 4809#: src/identity/gnunet-identity.c:179
4820#, fuzzy, c-format 4810#, fuzzy, c-format
4821msgid "Failed to create ego: %s\n" 4811msgid "Failed to create ego: %s\n"
4822msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 4812msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
4823 4813
4824#: src/identity/gnunet-identity.c:199 4814#: src/identity/gnunet-identity.c:201
4825#, fuzzy, c-format 4815#, fuzzy, c-format
4826msgid "Failed to set default ego: %s\n" 4816msgid "Failed to set default ego: %s\n"
4827msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 4817msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
4828 4818
4829#: src/identity/gnunet-identity.c:354 4819#: src/identity/gnunet-identity.c:356
4830msgid "create ego NAME" 4820msgid "create ego NAME"
4831msgstr "" 4821msgstr ""
4832 4822
4833#: src/identity/gnunet-identity.c:360 4823#: src/identity/gnunet-identity.c:362
4834msgid "delete ego NAME " 4824msgid "delete ego NAME "
4835msgstr "" 4825msgstr ""
4836 4826
4837#: src/identity/gnunet-identity.c:365 4827#: src/identity/gnunet-identity.c:367
4838msgid "display all egos" 4828msgid "display all egos"
4839msgstr "" 4829msgstr ""
4840 4830
4841#: src/identity/gnunet-identity.c:371 4831#: src/identity/gnunet-identity.c:373
4842msgid "" 4832msgid ""
4843"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)" 4833"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
4844msgstr "" 4834msgstr ""
4845 4835
4846#: src/identity/gnunet-identity.c:376 4836#: src/identity/gnunet-identity.c:378
4847msgid "run in monitor mode egos" 4837msgid "run in monitor mode egos"
4848msgstr "" 4838msgstr ""
4849 4839
4850#: src/identity/gnunet-identity.c:382 4840#: src/identity/gnunet-identity.c:384
4851msgid "" 4841msgid ""
4852"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)" 4842"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
4853msgstr "" 4843msgstr ""
4854 4844
4855#: src/identity/gnunet-identity.c:396 4845#: src/identity/gnunet-identity.c:398
4856msgid "Maintain egos" 4846msgid "Maintain egos"
4857msgstr "" 4847msgstr ""
4858 4848
4859#: src/identity/gnunet-service-identity.c:389 4849#: src/identity/gnunet-service-identity.c:391
4860msgid "no default known" 4850msgid "no default known"
4861msgstr "" 4851msgstr ""
4862 4852
4863#: src/identity/gnunet-service-identity.c:414 4853#: src/identity/gnunet-service-identity.c:416
4864msgid "default configured, but ego unknown (internal error)" 4854msgid "default configured, but ego unknown (internal error)"
4865msgstr "" 4855msgstr ""
4866 4856
4867#: src/identity/gnunet-service-identity.c:505 4857#: src/identity/gnunet-service-identity.c:507
4868#: src/identity/gnunet-service-identity.c:788 4858#: src/identity/gnunet-service-identity.c:790
4869#: src/identity/gnunet-service-identity.c:916 4859#: src/identity/gnunet-service-identity.c:918
4870#, fuzzy, c-format 4860#, fuzzy, c-format
4871msgid "Failed to write subsystem default identifier map to `%s'.\n" 4861msgid "Failed to write subsystem default identifier map to `%s'.\n"
4872msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4862msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4873 4863
4874#: src/identity/gnunet-service-identity.c:513 4864#: src/identity/gnunet-service-identity.c:515
4875msgid "Unknown ego specified for service (internal error)" 4865msgid "Unknown ego specified for service (internal error)"
4876msgstr "" 4866msgstr ""
4877 4867
4878#: src/identity/gnunet-service-identity.c:608 4868#: src/identity/gnunet-service-identity.c:610
4879msgid "identifier already in use for another ego" 4869msgid "identifier already in use for another ego"
4880msgstr "" 4870msgstr ""
4881 4871
4882#: src/identity/gnunet-service-identity.c:763 4872#: src/identity/gnunet-service-identity.c:765
4883msgid "target name already exists" 4873msgid "target name already exists"
4884msgstr "" 4874msgstr ""
4885 4875
4886#: src/identity/gnunet-service-identity.c:806 4876#: src/identity/gnunet-service-identity.c:808
4887#: src/identity/gnunet-service-identity.c:934 4877#: src/identity/gnunet-service-identity.c:936
4888msgid "no matching ego found" 4878msgid "no matching ego found"
4889msgstr "" 4879msgstr ""
4890 4880
4891#: src/identity/gnunet-service-identity.c:969 4881#: src/identity/gnunet-service-identity.c:971
4892#, fuzzy, c-format 4882#, fuzzy, c-format
4893msgid "Failed to parse ego information in `%s'\n" 4883msgid "Failed to parse ego information in `%s'\n"
4894msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4884msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4895 4885
4896#: src/identity/gnunet-service-identity.c:1027 4886#: src/identity/gnunet-service-identity.c:1029
4897#, fuzzy, c-format 4887#, fuzzy, c-format
4898msgid "Failed to parse subsystem identity configuration file `%s'\n" 4888msgid "Failed to parse subsystem identity configuration file `%s'\n"
4899msgstr "Kunde inte spara konfigurationsfil \"%s\":" 4889msgstr "Kunde inte spara konfigurationsfil \"%s\":"
4900 4890
4901#: src/identity/gnunet-service-identity.c:1037 4891#: src/identity/gnunet-service-identity.c:1039
4902#, fuzzy, c-format 4892#, fuzzy, c-format
4903msgid "Failed to create directory `%s' for storing egos\n" 4893msgid "Failed to create directory `%s' for storing egos\n"
4904msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4894msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4905 4895
4906#: src/json/json.c:121 4896#: src/json/json.c:123
4907#, fuzzy, c-format 4897#, fuzzy, c-format
4908msgid "Failed to parse JSON in option `%s': %s (%s)\n" 4898msgid "Failed to parse JSON in option `%s': %s (%s)\n"
4909msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 4899msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
4910 4900
4911#: src/multicast/gnunet-multicast.c:46 src/multicast/gnunet-multicast.c:70 4901#: src/my/my.c:196 src/my/my.c:215
4912msgid "This command doesn't do anything yet."
4913msgstr ""
4914
4915#: src/my/my.c:194 src/my/my.c:213
4916#, fuzzy, c-format 4902#, fuzzy, c-format
4917msgid "%s failed at %s:%d with error: %s\n" 4903msgid "%s failed at %s:%d with error: %s\n"
4918msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n" 4904msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
4919 4905
4920#: src/mysql/mysql.c:178 4906#: src/mysql/mysql.c:180
4921#, c-format 4907#, c-format
4922msgid "Trying to use file `%s' for MySQL configuration.\n" 4908msgid "Trying to use file `%s' for MySQL configuration.\n"
4923msgstr "Försöker använda fil \"%s\" för MySQL-konfiguration.\n" 4909msgstr "Försöker använda fil \"%s\" för MySQL-konfiguration.\n"
4924 4910
4925#: src/mysql/mysql.c:185 4911#: src/mysql/mysql.c:187
4926#, fuzzy, c-format 4912#, fuzzy, c-format
4927msgid "Could not access file `%s': %s\n" 4913msgid "Could not access file `%s': %s\n"
4928msgstr "Kunde inte köra \"%s\": %s\n" 4914msgstr "Kunde inte köra \"%s\": %s\n"
4929 4915
4930#: src/namecache/gnunet-namecache.c:105 4916#: src/namecache/gnunet-namecache.c:107
4931#, fuzzy, c-format 4917#, fuzzy, c-format
4932msgid "No records found for `%s'" 4918msgid "No records found for `%s'"
4933msgstr "%d filer hittades i katalog.\n" 4919msgstr "%d filer hittades i katalog.\n"
4934 4920
4935#: src/namecache/gnunet-namecache.c:120 src/namestore/gnunet-namestore.c:424 4921#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
4936#, c-format 4922#, c-format
4937msgid "\tCorrupt or unsupported record of type %u\n" 4923msgid "\tCorrupt or unsupported record of type %u\n"
4938msgstr "" 4924msgstr ""
4939 4925
4940#: src/namecache/gnunet-namecache.c:181 4926#: src/namecache/gnunet-namecache.c:183
4941#, fuzzy, c-format 4927#, fuzzy, c-format
4942msgid "You must specify which zone should be accessed\n" 4928msgid "You must specify which zone should be accessed\n"
4943msgstr "anger vilken TRANSPORT som ska testas" 4929msgstr "anger vilken TRANSPORT som ska testas"
4944 4930
4945#: src/namecache/gnunet-namecache.c:191 4931#: src/namecache/gnunet-namecache.c:193
4946#, fuzzy, c-format 4932#, fuzzy, c-format
4947msgid "Invalid public key for zone `%s'\n" 4933msgid "Invalid public key for zone `%s'\n"
4948msgstr "Ogiltigt argument: \"%s\"\n" 4934msgstr "Ogiltigt argument: \"%s\"\n"
4949 4935
4950#: src/namecache/gnunet-namecache.c:199 4936#: src/namecache/gnunet-namecache.c:201
4951#, fuzzy, c-format 4937#, fuzzy, c-format
4952msgid "You must specify a name\n" 4938msgid "You must specify a name\n"
4953msgstr "Du måste ange en mottagare!\n" 4939msgstr "Du måste ange en mottagare!\n"
4954 4940
4955#: src/namecache/gnunet-namecache.c:230 src/namestore/gnunet-namestore.c:1290 4941#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
4956msgid "name of the record to add/delete/display" 4942msgid "name of the record to add/delete/display"
4957msgstr "" 4943msgstr ""
4958 4944
4959#: src/namecache/gnunet-namecache.c:236 4945#: src/namecache/gnunet-namecache.c:238
4960#, fuzzy 4946#, fuzzy
4961msgid "spezifies the public key of the zone to look in" 4947msgid "spezifies the public key of the zone to look in"
4962msgstr "ange prioritet för innehållet" 4948msgstr "ange prioritet för innehållet"
4963 4949
4964#: src/namecache/gnunet-namecache.c:248 src/namestore/gnunet-namestore.c:1342 4950#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
4965#, fuzzy 4951#, fuzzy
4966msgid "GNUnet zone manipulation tool" 4952msgid "GNUnet zone manipulation tool"
4967msgstr "GNUnet-konfiguration" 4953msgstr "GNUnet-konfiguration"
4968 4954
4969#: src/namecache/namecache_api.c:294 4955#: src/namecache/namecache_api.c:296
4970msgid "Namecache failed to cache block" 4956msgid "Namecache failed to cache block"
4971msgstr "" 4957msgstr ""
4972 4958
4973#: src/namecache/namecache_api.c:381 4959#: src/namecache/namecache_api.c:383
4974#, fuzzy 4960#, fuzzy
4975msgid "Error communicating with namecache service" 4961msgid "Error communicating with namecache service"
4976msgstr "Skriv ut information om GNUnets motparter." 4962msgstr "Skriv ut information om GNUnets motparter."
4977 4963
4978#: src/namecache/plugin_namecache_flat.c:119 4964#: src/namecache/plugin_namecache_flat.c:121
4979#: src/namecache/plugin_namecache_flat.c:253 4965#: src/namecache/plugin_namecache_flat.c:255
4980#: src/namestore/plugin_namestore_heap.c:146 4966#: src/namestore/plugin_namestore_heap.c:148
4981#: src/namestore/plugin_namestore_heap.c:393 4967#: src/namestore/plugin_namestore_heap.c:395
4982#: src/peerstore/plugin_peerstore_flat.c:377 4968#: src/peerstore/plugin_peerstore_flat.c:379
4983#: src/peerstore/plugin_peerstore_flat.c:536 4969#: src/peerstore/plugin_peerstore_flat.c:538
4984#, fuzzy, c-format 4970#, fuzzy, c-format
4985msgid "Unable to initialize file: %s.\n" 4971msgid "Unable to initialize file: %s.\n"
4986msgstr "Kunde inte initiera SQLite.\n" 4972msgstr "Kunde inte initiera SQLite.\n"
4987 4973
4988#: src/namecache/plugin_namecache_flat.c:130 4974#: src/namecache/plugin_namecache_flat.c:132
4989#: src/namestore/plugin_namestore_heap.c:157 4975#: src/namestore/plugin_namestore_heap.c:159
4990#: src/peerstore/plugin_peerstore_flat.c:392 4976#: src/peerstore/plugin_peerstore_flat.c:394
4991#, fuzzy, c-format 4977#, fuzzy, c-format
4992msgid "Unable to get filesize: %s.\n" 4978msgid "Unable to get filesize: %s.\n"
4993msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 4979msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
4994 4980
4995#: src/namecache/plugin_namecache_flat.c:149 4981#: src/namecache/plugin_namecache_flat.c:151
4996#: src/namestore/plugin_namestore_heap.c:170 4982#: src/namestore/plugin_namestore_heap.c:172
4997#: src/peerstore/plugin_peerstore_flat.c:404 4983#: src/peerstore/plugin_peerstore_flat.c:406
4998#, fuzzy, c-format 4984#, fuzzy, c-format
4999msgid "Unable to read file: %s.\n" 4985msgid "Unable to read file: %s.\n"
5000msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 4986msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
5001 4987
5002#: src/namecache/plugin_namecache_flat.c:408 4988#: src/namecache/plugin_namecache_flat.c:410
5003msgid "flat plugin running\n" 4989msgid "flat plugin running\n"
5004msgstr "" 4990msgstr ""
5005 4991
5006#: src/namestore/gnunet-namestore.c:311 4992#: src/namecache/plugin_namecache_sqlite.c:183
4993#: src/namecache/plugin_namecache_sqlite.c:197
4994#: src/namestore/plugin_namestore_sqlite.c:219
4995#: src/namestore/plugin_namestore_sqlite.c:230
4996#, fuzzy, c-format
4997msgid "Failed to setup database at `%s'\n"
4998msgstr "Fel vid %s:%d.\n"
4999
5000#: src/namestore/gnunet-namestore.c:341
5007#, fuzzy, c-format 5001#, fuzzy, c-format
5008msgid "Adding record failed: %s\n" 5002msgid "Adding record failed: %s\n"
5009msgstr "" 5003msgstr ""
5010"\n" 5004"\n"
5011"Fel vid uppladdning av fil: %s\n" 5005"Fel vid uppladdning av fil: %s\n"
5012 5006
5013#: src/namestore/gnunet-namestore.c:341 5007#: src/namestore/gnunet-namestore.c:371
5014#, fuzzy, c-format 5008#, fuzzy, c-format
5015msgid "Deleting record failed, record does not exist%s%s\n" 5009msgid "Deleting record failed, record does not exist%s%s\n"
5016msgstr "" 5010msgstr ""
5017"\n" 5011"\n"
5018"Fel vid uppladdning av fil: %s\n" 5012"Fel vid uppladdning av fil: %s\n"
5019 5013
5020#: src/namestore/gnunet-namestore.c:348 5014#: src/namestore/gnunet-namestore.c:378
5021#, fuzzy, c-format 5015#, fuzzy, c-format
5022msgid "Deleting record failed%s%s\n" 5016msgid "Deleting record failed%s%s\n"
5023msgstr "" 5017msgstr ""
5024"\n" 5018"\n"
5025"Fel vid uppladdning av fil: %s\n" 5019"Fel vid uppladdning av fil: %s\n"
5026 5020
5027#: src/namestore/gnunet-namestore.c:628 src/namestore/gnunet-namestore.c:636 5021#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
5028#, c-format 5022#, c-format
5029msgid "A %s record exists already under `%s', no other records can be added.\n" 5023msgid "A %s record exists already under `%s', no other records can be added.\n"
5030msgstr "" 5024msgstr ""
5031 5025
5032#: src/namestore/gnunet-namestore.c:650 src/namestore/gnunet-namestore.c:662 5026#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
5033#, c-format 5027#, c-format
5034msgid "Records already exist under `%s', cannot add `%s' record.\n" 5028msgid "Records already exist under `%s', cannot add `%s' record.\n"
5035msgstr "" 5029msgstr ""
5036 5030
5037#: src/namestore/gnunet-namestore.c:675 5031#: src/namestore/gnunet-namestore.c:707
5038#, c-format 5032#, c-format
5039msgid "" 5033msgid ""
5040"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n" 5034"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
5041msgstr "" 5035msgstr ""
5042 5036
5043#: src/namestore/gnunet-namestore.c:809 5037#: src/namestore/gnunet-namestore.c:837
5044#, c-format 5038#, c-format
5045msgid "There are no records under label `%s' that could be deleted.\n" 5039msgid "There are no records under label `%s' that could be deleted.\n"
5046msgstr "" 5040msgstr ""
5047 5041
5048#: src/namestore/gnunet-namestore.c:850 5042#: src/namestore/gnunet-namestore.c:878
5049#, c-format 5043#, c-format
5050msgid "" 5044msgid ""
5051"There are no records under label `%s' that match the request for deletion.\n" 5045"There are no records under label `%s' that match the request for deletion.\n"
5052msgstr "" 5046msgstr ""
5053 5047
5054#: src/namestore/gnunet-namestore.c:902 5048#: src/namestore/gnunet-namestore.c:965
5049#, fuzzy, c-format
5050msgid "Failed to replace records: %s\n"
5051msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
5052
5053#: src/namestore/gnunet-namestore.c:1009
5055#, c-format 5054#, c-format
5056msgid "No options given\n" 5055msgid "No options given\n"
5057msgstr "" 5056msgstr ""
5058 5057
5059#: src/namestore/gnunet-namestore.c:921 src/namestore/gnunet-namestore.c:930 5058#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
5060#: src/namestore/gnunet-namestore.c:949 src/namestore/gnunet-namestore.c:972 5059#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
5061#: src/namestore/gnunet-namestore.c:1026 5060#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
5062#, fuzzy, c-format 5061#, fuzzy, c-format
5063msgid "Missing option `%s' for operation `%s'\n" 5062msgid "Missing option `%s' for operation `%s'\n"
5064msgstr "Konfigurationsfil \"%s\" skapad.\n" 5063msgstr "Konfigurationsfil \"%s\" skapad.\n"
5065 5064
5066#: src/namestore/gnunet-namestore.c:922 src/namestore/gnunet-namestore.c:931 5065#: src/namestore/gnunet-namestore.c:1033
5067#: src/namestore/gnunet-namestore.c:950 src/namestore/gnunet-namestore.c:974 5066msgid "replace"
5067msgstr ""
5068
5069#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
5070#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
5068msgid "add" 5071msgid "add"
5069msgstr "" 5072msgstr ""
5070 5073
5071#: src/namestore/gnunet-namestore.c:940 5074#: src/namestore/gnunet-namestore.c:1084
5072#, fuzzy, c-format 5075#, fuzzy, c-format
5073msgid "Unsupported type `%s'\n" 5076msgid "Unsupported type `%s'\n"
5074msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" 5077msgstr "Kommando \"%s\" stöds ej. Avbryter.\n"
5075 5078
5076#: src/namestore/gnunet-namestore.c:962 5079#: src/namestore/gnunet-namestore.c:1106
5077#, fuzzy, c-format 5080#, fuzzy, c-format
5078msgid "Value `%s' invalid for record type `%s'\n" 5081msgid "Value `%s' invalid for record type `%s'\n"
5079msgstr "%s: symbolvärde \"%s\" ogiltigt för %s\n" 5082msgstr "%s: symbolvärde \"%s\" ogiltigt för %s\n"
5080 5083
5081#: src/namestore/gnunet-namestore.c:1007 5084#: src/namestore/gnunet-namestore.c:1129
5082#, fuzzy, c-format 5085#, fuzzy, c-format
5083msgid "Invalid time format `%s'\n" 5086msgid "Invalid time format `%s'\n"
5084msgstr "Ogiltigt format för IP: \"%s\"\n" 5087msgstr "Ogiltigt format för IP: \"%s\"\n"
5085 5088
5086#: src/namestore/gnunet-namestore.c:1027 5089#: src/namestore/gnunet-namestore.c:1149
5087msgid "del" 5090msgid "del"
5088msgstr "" 5091msgstr ""
5089 5092
5090#: src/namestore/gnunet-namestore.c:1070 5093#: src/namestore/gnunet-namestore.c:1192
5091#, fuzzy, c-format 5094#, fuzzy, c-format
5092msgid "Invalid public key for reverse lookup `%s'\n" 5095msgid "Invalid public key for reverse lookup `%s'\n"
5093msgstr "Ogiltigt argument: \"%s\"\n" 5096msgstr "Ogiltigt argument: \"%s\"\n"
5094 5097
5095#: src/namestore/gnunet-namestore.c:1099 5098#: src/namestore/gnunet-namestore.c:1221
5096#: src/peerinfo-tool/gnunet-peerinfo.c:773 5099#: src/peerinfo-tool/gnunet-peerinfo.c:775
5097#, fuzzy, c-format 5100#, fuzzy, c-format
5098msgid "Invalid URI `%s'\n" 5101msgid "Invalid URI `%s'\n"
5099msgstr "Ogiltiga argument: " 5102msgstr "Ogiltiga argument: "
5100 5103
5101#: src/namestore/gnunet-namestore.c:1134 5104#: src/namestore/gnunet-namestore.c:1249
5102#, fuzzy, c-format 5105#, fuzzy, c-format
5103msgid "Invalid nick `%s'\n" 5106msgid "Invalid nick `%s'\n"
5104msgstr "Ogiltiga argument: " 5107msgstr "Ogiltiga argument: "
5105 5108
5106#: src/namestore/gnunet-namestore.c:1174 5109#: src/namestore/gnunet-namestore.c:1289
5107#, fuzzy, c-format 5110#, fuzzy, c-format
5108msgid "No default ego configured in identity service\n" 5111msgid "No default ego configured in identity service\n"
5109msgstr "\"%s\": okänd tjänst: %s\n" 5112msgstr "\"%s\": okänd tjänst: %s\n"
5110 5113
5111#: src/namestore/gnunet-namestore.c:1238 5114#: src/namestore/gnunet-namestore.c:1341
5115#, fuzzy, c-format
5116msgid "Superfluous command line arguments (starting with `%s') ignored\n"
5117msgstr "Onödiga argument (ignorerade).\n"
5118
5119#: src/namestore/gnunet-namestore.c:1357
5112#, fuzzy, c-format 5120#, fuzzy, c-format
5113msgid "Cannot connect to identity service\n" 5121msgid "Cannot connect to identity service\n"
5114msgstr "Kunde inte ansluta till gnunetd.\n" 5122msgstr "Kunde inte ansluta till gnunetd.\n"
5115 5123
5116#: src/namestore/gnunet-namestore.c:1263 5124#: src/namestore/gnunet-namestore.c:1407
5125msgid "Empty record line argument is not allowed.\n"
5126msgstr ""
5127
5128#: src/namestore/gnunet-namestore.c:1423
5129#, c-format
5130msgid "Invalid expiration time `%s' (must be without unit)\n"
5131msgstr ""
5132
5133#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
5134#: src/namestore/gnunet-namestore.c:1470
5135#, fuzzy, c-format
5136msgid "Missing entries in record line `%s'.\n"
5137msgstr "Kunde inte slå upp \"%s\": %s\n"
5138
5139#: src/namestore/gnunet-namestore.c:1444
5140#, fuzzy, c-format
5141msgid "Unknown record type `%s'\n"
5142msgstr "Okänd operation \"%s\"\n"
5143
5144#: src/namestore/gnunet-namestore.c:1484
5145#, fuzzy, c-format
5146msgid "Invalid record data for type %s: `%s'.\n"
5147msgstr "Ogiltigt format för IP: \"%s\"\n"
5148
5149#: src/namestore/gnunet-namestore.c:1548
5117msgid "add record" 5150msgid "add record"
5118msgstr "" 5151msgstr ""
5119 5152
5120#: src/namestore/gnunet-namestore.c:1267 5153#: src/namestore/gnunet-namestore.c:1552
5121msgid "delete record" 5154msgid "delete record"
5122msgstr "" 5155msgstr ""
5123 5156
5124#: src/namestore/gnunet-namestore.c:1271 5157#: src/namestore/gnunet-namestore.c:1556
5125msgid "display records" 5158msgid "display records"
5126msgstr "" 5159msgstr ""
5127 5160
5128#: src/namestore/gnunet-namestore.c:1276 5161#: src/namestore/gnunet-namestore.c:1561
5129msgid "" 5162msgid ""
5130"expiration time for record to use (for adding only), \"never\" is possible" 5163"expiration time for record to use (for adding only), \"never\" is possible"
5131msgstr "" 5164msgstr ""
5132 5165
5133#: src/namestore/gnunet-namestore.c:1281 5166#: src/namestore/gnunet-namestore.c:1566
5134#, fuzzy 5167#, fuzzy
5135msgid "set the desired nick name for the zone" 5168msgid "set the desired nick name for the zone"
5136msgstr "Skriv ut information om GNUnets motparter." 5169msgstr "Skriv ut information om GNUnets motparter."
5137 5170
5138#: src/namestore/gnunet-namestore.c:1285 5171#: src/namestore/gnunet-namestore.c:1570
5139#, fuzzy 5172#, fuzzy
5140msgid "monitor changes in the namestore" 5173msgid "monitor changes in the namestore"
5141msgstr "Misslyckades att ansluta till gnunetd.\n" 5174msgstr "Misslyckades att ansluta till gnunetd.\n"
5142 5175
5143#: src/namestore/gnunet-namestore.c:1295 5176#: src/namestore/gnunet-namestore.c:1580
5144#, fuzzy 5177#, fuzzy
5145msgid "determine our name for the given PKEY" 5178msgid "determine our name for the given PKEY"
5146msgstr "Skriv ut information om GNUnets motparter." 5179msgstr "Skriv ut information om GNUnets motparter."
5147 5180
5148#: src/namestore/gnunet-namestore.c:1300 5181#: src/namestore/gnunet-namestore.c:1585
5182msgid ""
5183"set record set to values given by (possibly multiple) RECORDLINES; can be "
5184"specified multiple times"
5185msgstr ""
5186
5187#: src/namestore/gnunet-namestore.c:1590
5149msgid "type of the record to add/delete/display" 5188msgid "type of the record to add/delete/display"
5150msgstr "" 5189msgstr ""
5151 5190
5152#: src/namestore/gnunet-namestore.c:1305 5191#: src/namestore/gnunet-namestore.c:1595
5153msgid "URI to import into our zone" 5192msgid "URI to import into our zone"
5154msgstr "" 5193msgstr ""
5155 5194
5156#: src/namestore/gnunet-namestore.c:1310 5195#: src/namestore/gnunet-namestore.c:1600
5157msgid "value of the record to add/delete" 5196msgid "value of the record to add/delete"
5158msgstr "" 5197msgstr ""
5159 5198
5160#: src/namestore/gnunet-namestore.c:1314 5199#: src/namestore/gnunet-namestore.c:1604
5161msgid "create or list public record" 5200msgid "create or list public record"
5162msgstr "" 5201msgstr ""
5163 5202
5164#: src/namestore/gnunet-namestore.c:1318 5203#: src/namestore/gnunet-namestore.c:1608
5165msgid "" 5204msgid ""
5166"create shadow record (only valid if all other records of the same type have " 5205"create shadow record (only valid if all other records of the same type have "
5167"expired" 5206"expired"
5168msgstr "" 5207msgstr ""
5169 5208
5170#: src/namestore/gnunet-namestore.c:1323 5209#: src/namestore/gnunet-namestore.c:1613
5171#, fuzzy 5210#, fuzzy
5172msgid "name of the ego controlling the zone" 5211msgid "name of the ego controlling the zone"
5173msgstr "Visa värde av alternativet" 5212msgstr "Visa värde av alternativet"
5174 5213
5175#: src/namestore/gnunet-namestore-fcfsd.c:547 5214#: src/namestore/gnunet-namestore-fcfsd.c:549
5176#, fuzzy, c-format 5215#, fuzzy, c-format
5177msgid "Unsupported form value `%s'\n" 5216msgid "Unsupported form value `%s'\n"
5178msgstr "Kommando \"%s\" stöds ej. Avbryter.\n" 5217msgstr "Kommando \"%s\" stöds ej. Avbryter.\n"
5179 5218
5180#: src/namestore/gnunet-namestore-fcfsd.c:574 5219#: src/namestore/gnunet-namestore-fcfsd.c:576
5181#, fuzzy, c-format 5220#, fuzzy, c-format
5182msgid "Failed to create record for domain `%s': %s\n" 5221msgid "Failed to create record for domain `%s': %s\n"
5183msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 5222msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
5184 5223
5185#: src/namestore/gnunet-namestore-fcfsd.c:595 5224#: src/namestore/gnunet-namestore-fcfsd.c:597
5186msgid "Error when mapping zone to name\n" 5225msgid "Error when mapping zone to name\n"
5187msgstr "" 5226msgstr ""
5188 5227
5189#: src/namestore/gnunet-namestore-fcfsd.c:627 5228#: src/namestore/gnunet-namestore-fcfsd.c:629
5190#, c-format 5229#, c-format
5191msgid "Found existing name `%s' for the given key\n" 5230msgid "Found existing name `%s' for the given key\n"
5192msgstr "" 5231msgstr ""
5193 5232
5194#: src/namestore/gnunet-namestore-fcfsd.c:687 5233#: src/namestore/gnunet-namestore-fcfsd.c:689
5195#, c-format 5234#, c-format
5196msgid "Found %u existing records for domain `%s'\n" 5235msgid "Found %u existing records for domain `%s'\n"
5197msgstr "" 5236msgstr ""
5198 5237
5199#: src/namestore/gnunet-namestore-fcfsd.c:775 5238#: src/namestore/gnunet-namestore-fcfsd.c:777
5200#, fuzzy, c-format 5239#, fuzzy, c-format
5201msgid "Failed to create page for `%s'\n" 5240msgid "Failed to create page for `%s'\n"
5202msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 5241msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
5203 5242
5204#: src/namestore/gnunet-namestore-fcfsd.c:794 5243#: src/namestore/gnunet-namestore-fcfsd.c:796
5205#, fuzzy, c-format 5244#, fuzzy, c-format
5206msgid "Failed to setup post processor for `%s'\n" 5245msgid "Failed to setup post processor for `%s'\n"
5207msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5246msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5208 5247
5209#: src/namestore/gnunet-namestore-fcfsd.c:830 5248#: src/namestore/gnunet-namestore-fcfsd.c:832
5210msgid "Domain name must not contain `.'\n" 5249msgid "Domain name must not contain `.'\n"
5211msgstr "" 5250msgstr ""
5212 5251
5213#: src/namestore/gnunet-namestore-fcfsd.c:839 5252#: src/namestore/gnunet-namestore-fcfsd.c:841
5214msgid "Domain name must not contain `+'\n" 5253msgid "Domain name must not contain `+'\n"
5215msgstr "" 5254msgstr ""
5216 5255
5217#: src/namestore/gnunet-namestore-fcfsd.c:1069 5256#: src/namestore/gnunet-namestore-fcfsd.c:1071
5218msgid "No ego configured for `fcfsd` subsystem\n" 5257msgid "No ego configured for `fcfsd` subsystem\n"
5219msgstr "" 5258msgstr ""
5220 5259
5221#: src/namestore/gnunet-namestore-fcfsd.c:1097 5260#: src/namestore/gnunet-namestore-fcfsd.c:1099
5222#, fuzzy 5261#, fuzzy
5223msgid "Failed to start HTTP server\n" 5262msgid "Failed to start HTTP server\n"
5224msgstr "Misslyckades att starta samling.\n" 5263msgstr "Misslyckades att starta samling.\n"
5225 5264
5226#: src/namestore/gnunet-namestore-fcfsd.c:1145 5265#: src/namestore/gnunet-namestore-fcfsd.c:1147
5227#, fuzzy 5266#, fuzzy
5228msgid "Failed to connect to identity\n" 5267msgid "Failed to connect to identity\n"
5229msgstr "Misslyckades att ansluta till gnunetd.\n" 5268msgstr "Misslyckades att ansluta till gnunetd.\n"
5230 5269
5231#: src/namestore/gnunet-namestore-fcfsd.c:1171 5270#: src/namestore/gnunet-namestore-fcfsd.c:1173
5232msgid "name of the zone that is to be managed by FCFSD" 5271msgid "name of the zone that is to be managed by FCFSD"
5233msgstr "" 5272msgstr ""
5234 5273
5235#: src/namestore/gnunet-namestore-fcfsd.c:1190 5274#: src/namestore/gnunet-namestore-fcfsd.c:1192
5236msgid "GNU Name System First Come First Serve name registration service" 5275msgid "GNU Name System First Come First Serve name registration service"
5237msgstr "" 5276msgstr ""
5238 5277
5239#: src/namestore/gnunet-service-namestore.c:749 5278#: src/namestore/gnunet-service-namestore.c:900
5240#, fuzzy, c-format 5279#, fuzzy, c-format
5241msgid "Failed to replicate block in namecache: %s\n" 5280msgid "Failed to replicate block in namecache: %s\n"
5242msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5281msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5243 5282
5244#: src/namestore/gnunet-zoneimport.c:2036 5283#: src/namestore/gnunet-zoneimport.c:2038
5245msgid "size to use for the main hash map" 5284msgid "size to use for the main hash map"
5246msgstr "" 5285msgstr ""
5247 5286
5248#: src/namestore/gnunet-zoneimport.c:2041 5287#: src/namestore/gnunet-zoneimport.c:2043
5249msgid "minimum expiration time we assume for imported records" 5288msgid "minimum expiration time we assume for imported records"
5250msgstr "" 5289msgstr ""
5251 5290
5252#: src/namestore/namestore_api.c:389 5291#: src/namestore/namestore_api.c:391
5253msgid "Namestore failed to store record\n" 5292msgid "Namestore failed to store record\n"
5254msgstr "" 5293msgstr ""
5255 5294
5256#: src/namestore/plugin_namestore_heap.c:776 5295#: src/namestore/plugin_namestore_heap.c:778
5257msgid "heap file database running\n" 5296msgid "heap file database running\n"
5258msgstr "" 5297msgstr ""
5259 5298
5260#: src/namestore/plugin_namestore_sqlite.c:216 5299#: src/nat-auto/gnunet-nat-auto.c:193
5261#: src/namestore/plugin_namestore_sqlite.c:227
5262#, fuzzy, c-format
5263msgid "Failed to setup database at `%s'\n"
5264msgstr "Fel vid %s:%d.\n"
5265
5266#: src/nat-auto/gnunet-nat-auto.c:191
5267#, fuzzy 5300#, fuzzy
5268msgid "Suggested configuration changes:\n" 5301msgid "Suggested configuration changes:\n"
5269msgstr "Konfigurationsfil \"%s\" skapad.\n" 5302msgstr "Konfigurationsfil \"%s\" skapad.\n"
5270 5303
5271#: src/nat-auto/gnunet-nat-auto.c:217 5304#: src/nat-auto/gnunet-nat-auto.c:219
5272#, fuzzy, c-format 5305#, fuzzy, c-format
5273msgid "Failed to write configuration to `%s'\n" 5306msgid "Failed to write configuration to `%s'\n"
5274msgstr "Kunde inte spara konfiguration!" 5307msgstr "Kunde inte spara konfiguration!"
5275 5308
5276#: src/nat-auto/gnunet-nat-auto.c:224 5309#: src/nat-auto/gnunet-nat-auto.c:226
5277#, fuzzy, c-format 5310#, fuzzy, c-format
5278msgid "Wrote updated configuration to `%s'\n" 5311msgid "Wrote updated configuration to `%s'\n"
5279msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 5312msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
5280 5313
5281#: src/nat-auto/gnunet-nat-auto.c:343 5314#: src/nat-auto/gnunet-nat-auto.c:345
5282#, fuzzy 5315#, fuzzy
5283msgid "run autoconfiguration" 5316msgid "run autoconfiguration"
5284msgstr "GNUnet-konfiguration" 5317msgstr "GNUnet-konfiguration"
5285 5318
5286#: src/nat-auto/gnunet-nat-auto.c:349 5319#: src/nat-auto/gnunet-nat-auto.c:351
5287msgid "section name providing the configuration for the adapter" 5320msgid "section name providing the configuration for the adapter"
5288msgstr "" 5321msgstr ""
5289 5322
5290#: src/nat-auto/gnunet-nat-auto.c:354 src/nat/gnunet-nat.c:451 5323#: src/nat-auto/gnunet-nat-auto.c:356 src/nat/gnunet-nat.c:459
5291msgid "use TCP" 5324msgid "use TCP"
5292msgstr "" 5325msgstr ""
5293 5326
5294#: src/nat-auto/gnunet-nat-auto.c:359 src/nat/gnunet-nat.c:456 5327#: src/nat-auto/gnunet-nat-auto.c:361 src/nat/gnunet-nat.c:464
5295msgid "use UDP" 5328msgid "use UDP"
5296msgstr "" 5329msgstr ""
5297 5330
5298#: src/nat-auto/gnunet-nat-auto.c:364 5331#: src/nat-auto/gnunet-nat-auto.c:366
5299#, fuzzy 5332#, fuzzy
5300msgid "write configuration file (for autoconfiguration)" 5333msgid "write configuration file (for autoconfiguration)"
5301msgstr "Inga applikationer definierade i konfiguration!\n" 5334msgstr "Inga applikationer definierade i konfiguration!\n"
5302 5335
5303#: src/nat-auto/gnunet-nat-auto.c:376 5336#: src/nat-auto/gnunet-nat-auto.c:378
5304#, fuzzy 5337#, fuzzy
5305msgid "GNUnet NAT traversal autoconfiguration" 5338msgid "GNUnet NAT traversal autoconfiguration"
5306msgstr "GNUnet-konfiguration" 5339msgstr "GNUnet-konfiguration"
5307 5340
5308#: src/nat-auto/gnunet-nat-auto_legacy.c:401 5341#: src/nat-auto/gnunet-nat-auto_legacy.c:403
5309#: src/nat-auto/gnunet-service-nat-auto_legacy.c:679 5342#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
5310#: src/nat-auto/nat_auto_api_test.c:403 5343#: src/nat-auto/nat_auto_api_test.c:409
5311#, fuzzy 5344#, fuzzy
5312msgid "Failed to connect to `gnunet-nat-server'\n" 5345msgid "Failed to connect to `gnunet-nat-server'\n"
5313msgstr "Misslyckades att ansluta till gnunetd.\n" 5346msgstr "Misslyckades att ansluta till gnunetd.\n"
5314 5347
5315#: src/nat-auto/gnunet-nat-auto_legacy.c:516 5348#: src/nat-auto/gnunet-nat-auto_legacy.c:518
5316#, c-format 5349#, c-format
5317msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n" 5350msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
5318msgstr "" 5351msgstr ""
5319 5352
5320#: src/nat-auto/gnunet-nat-auto_legacy.c:566 5353#: src/nat-auto/gnunet-nat-auto_legacy.c:568
5321#: src/nat-auto/nat_auto_api_test.c:569 5354#: src/nat-auto/nat_auto_api_test.c:575
5322#, fuzzy 5355#, fuzzy
5323msgid "NAT test failed to start NAT library\n" 5356msgid "NAT test failed to start NAT library\n"
5324msgstr "Misslyckades att starta samling.\n" 5357msgstr "Misslyckades att starta samling.\n"
5325 5358
5326#: src/nat-auto/gnunet-service-nat-auto.c:340 5359#: src/nat-auto/gnunet-service-nat-auto.c:342
5327#, fuzzy 5360#, fuzzy
5328msgid "UPnP client `upnpc` command not found, disabling UPnP\n" 5361msgid "UPnP client `upnpc` command not found, disabling UPnP\n"
5329msgstr "Kommando \"%s\" hittades inte!\n" 5362msgstr "Kommando \"%s\" hittades inte!\n"
5330 5363
5331#: src/nat-auto/gnunet-service-nat-auto_legacy.c:383 5364#: src/nat-auto/gnunet-service-nat-auto_legacy.c:385
5332msgid "NAT traversal with ICMP Server succeeded.\n" 5365msgid "NAT traversal with ICMP Server succeeded.\n"
5333msgstr "" 5366msgstr ""
5334 5367
5335#: src/nat-auto/gnunet-service-nat-auto_legacy.c:384 5368#: src/nat-auto/gnunet-service-nat-auto_legacy.c:386
5336msgid "NAT traversal with ICMP Server failed.\n" 5369msgid "NAT traversal with ICMP Server failed.\n"
5337msgstr "" 5370msgstr ""
5338 5371
5339#: src/nat-auto/gnunet-service-nat-auto_legacy.c:403 5372#: src/nat-auto/gnunet-service-nat-auto_legacy.c:405
5340#, fuzzy 5373#, fuzzy
5341msgid "Testing connection reversal with ICMP server.\n" 5374msgid "Testing connection reversal with ICMP server.\n"
5342msgstr "Skriv ut information om GNUnets motparter." 5375msgstr "Skriv ut information om GNUnets motparter."
5343 5376
5344#: src/nat-auto/gnunet-service-nat-auto_legacy.c:435 5377#: src/nat-auto/gnunet-service-nat-auto_legacy.c:437
5345#, fuzzy, c-format 5378#, fuzzy, c-format
5346msgid "Detected external IP `%s'\n" 5379msgid "Detected external IP `%s'\n"
5347msgstr "Mottog ogiltig RPC \"%s\".\n" 5380msgstr "Mottog ogiltig RPC \"%s\".\n"
5348 5381
5349#: src/nat-auto/gnunet-service-nat-auto_legacy.c:570 5382#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
5350msgid "This system has a global IPv6 address, setting IPv6 to supported.\n" 5383msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
5351msgstr "" 5384msgstr ""
5352 5385
5353#: src/nat-auto/gnunet-service-nat-auto_legacy.c:588 5386#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
5354#, c-format 5387#, c-format
5355msgid "Detected internal network address `%s'.\n" 5388msgid "Detected internal network address `%s'.\n"
5356msgstr "" 5389msgstr ""
5357 5390
5358#: src/nat-auto/gnunet-service-nat-auto_legacy.c:722 5391#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
5359msgid "upnpc found, enabling its use\n" 5392msgid "upnpc found, enabling its use\n"
5360msgstr "" 5393msgstr ""
5361 5394
5362#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723 5395#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
5363#, fuzzy 5396#, fuzzy
5364msgid "upnpc not found\n" 5397msgid "upnpc not found\n"
5365msgstr "Kommando \"%s\" hittades inte!\n" 5398msgstr "Kommando \"%s\" hittades inte!\n"
5366 5399
5367#: src/nat-auto/gnunet-service-nat-auto_legacy.c:760 5400#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
5368msgid "test_icmp_server not possible, as we have no public IPv4 address\n" 5401msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
5369msgstr "" 5402msgstr ""
5370 5403
5371#: src/nat-auto/gnunet-service-nat-auto_legacy.c:772 5404#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
5372#: src/nat-auto/gnunet-service-nat-auto_legacy.c:832 5405#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
5373msgid "test_icmp_server not possible, as we are not behind NAT\n" 5406msgid "test_icmp_server not possible, as we are not behind NAT\n"
5374msgstr "" 5407msgstr ""
5375 5408
5376#: src/nat-auto/gnunet-service-nat-auto_legacy.c:784 5409#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
5377#: src/nat-auto/gnunet-service-nat-auto_legacy.c:844 5410#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
5378msgid "No working gnunet-helper-nat-server found\n" 5411msgid "No working gnunet-helper-nat-server found\n"
5379msgstr "" 5412msgstr ""
5380 5413
5381#: src/nat-auto/gnunet-service-nat-auto_legacy.c:821 5414#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
5382msgid "test_icmp_client not possible, as we have no internal IPv4 address\n" 5415msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
5383msgstr "" 5416msgstr ""
5384 5417
5385#: src/nat-auto/nat_auto_api.c:74 5418#: src/nat-auto/nat_auto_api.c:76
5386msgid "Operation Successful" 5419msgid "Operation Successful"
5387msgstr "" 5420msgstr ""
5388 5421
5389#: src/nat-auto/nat_auto_api.c:76 5422#: src/nat-auto/nat_auto_api.c:78
5390msgid "IPC failure" 5423msgid "IPC failure"
5391msgstr "" 5424msgstr ""
5392 5425
5393#: src/nat-auto/nat_auto_api.c:78 5426#: src/nat-auto/nat_auto_api.c:80
5394msgid "Failure in network subsystem, check permissions." 5427msgid "Failure in network subsystem, check permissions."
5395msgstr "" 5428msgstr ""
5396 5429
5397#: src/nat-auto/nat_auto_api.c:80 5430#: src/nat-auto/nat_auto_api.c:82
5398msgid "Encountered timeout while performing operation" 5431msgid "Encountered timeout while performing operation"
5399msgstr "" 5432msgstr ""
5400 5433
5401#: src/nat-auto/nat_auto_api.c:82 5434#: src/nat-auto/nat_auto_api.c:84
5402msgid "detected that we are offline" 5435msgid "detected that we are offline"
5403msgstr "" 5436msgstr ""
5404 5437
5405#: src/nat-auto/nat_auto_api.c:84 5438#: src/nat-auto/nat_auto_api.c:86
5406#, fuzzy 5439#, fuzzy
5407msgid "`upnpc` command not found" 5440msgid "`upnpc` command not found"
5408msgstr "Kommando \"%s\" hittades inte!\n" 5441msgstr "Kommando \"%s\" hittades inte!\n"
5409 5442
5410#: src/nat-auto/nat_auto_api.c:86 5443#: src/nat-auto/nat_auto_api.c:88
5411#, fuzzy 5444#, fuzzy
5412msgid "Failed to run `upnpc` command" 5445msgid "Failed to run `upnpc` command"
5413msgstr "Misslyckades att starta samling.\n" 5446msgstr "Misslyckades att starta samling.\n"
5414 5447
5415#: src/nat-auto/nat_auto_api.c:88 5448#: src/nat-auto/nat_auto_api.c:90
5416#, fuzzy 5449#, fuzzy
5417msgid "`upnpc' command took too long, process killed" 5450msgid "`upnpc' command took too long, process killed"
5418msgstr "Kommando \"%s\" hittades inte!\n" 5451msgstr "Kommando \"%s\" hittades inte!\n"
5419 5452
5420#: src/nat-auto/nat_auto_api.c:90 5453#: src/nat-auto/nat_auto_api.c:92
5421msgid "`upnpc' command failed to establish port mapping" 5454msgid "`upnpc' command failed to establish port mapping"
5422msgstr "" 5455msgstr ""
5423 5456
5424#: src/nat-auto/nat_auto_api.c:92 5457#: src/nat-auto/nat_auto_api.c:94
5425#, fuzzy 5458#, fuzzy
5426msgid "`external-ip' command not found" 5459msgid "`external-ip' command not found"
5427msgstr "Kommando \"%s\" hittades inte!\n" 5460msgstr "Kommando \"%s\" hittades inte!\n"
5428 5461
5429#: src/nat-auto/nat_auto_api.c:94 5462#: src/nat-auto/nat_auto_api.c:96
5430#, fuzzy 5463#, fuzzy
5431msgid "Failed to run `external-ip` command" 5464msgid "Failed to run `external-ip` command"
5432msgstr "Misslyckades att starta samling.\n" 5465msgstr "Misslyckades att starta samling.\n"
5433 5466
5434#: src/nat-auto/nat_auto_api.c:96 5467#: src/nat-auto/nat_auto_api.c:98
5435msgid "`external-ip' command output invalid" 5468msgid "`external-ip' command output invalid"
5436msgstr "" 5469msgstr ""
5437 5470
5438#: src/nat-auto/nat_auto_api.c:98 5471#: src/nat-auto/nat_auto_api.c:100
5439msgid "no valid address was returned by `external-ip'" 5472msgid "no valid address was returned by `external-ip'"
5440msgstr "" 5473msgstr ""
5441 5474
5442#: src/nat-auto/nat_auto_api.c:100 5475#: src/nat-auto/nat_auto_api.c:102
5443#, fuzzy 5476#, fuzzy
5444msgid "Could not determine interface with internal/local network address" 5477msgid "Could not determine interface with internal/local network address"
5445msgstr "Kunde inte fastställa min publika IPv6-adress.\n" 5478msgstr "Kunde inte fastställa min publika IPv6-adress.\n"
5446 5479
5447#: src/nat-auto/nat_auto_api.c:102 5480#: src/nat-auto/nat_auto_api.c:104
5448msgid "No functioning gnunet-helper-nat-server installation found" 5481msgid "No functioning gnunet-helper-nat-server installation found"
5449msgstr "" 5482msgstr ""
5450 5483
5451#: src/nat-auto/nat_auto_api.c:104 5484#: src/nat-auto/nat_auto_api.c:106
5452msgid "NAT test could not be initialized" 5485msgid "NAT test could not be initialized"
5453msgstr "" 5486msgstr ""
5454 5487
5455#: src/nat-auto/nat_auto_api.c:106 5488#: src/nat-auto/nat_auto_api.c:108
5456msgid "NAT test timeout reached" 5489msgid "NAT test timeout reached"
5457msgstr "" 5490msgstr ""
5458 5491
5459#: src/nat-auto/nat_auto_api.c:108 5492#: src/nat-auto/nat_auto_api.c:110
5460msgid "could not register NAT" 5493msgid "could not register NAT"
5461msgstr "" 5494msgstr ""
5462 5495
5463#: src/nat-auto/nat_auto_api.c:110 5496#: src/nat-auto/nat_auto_api.c:112
5464msgid "No working gnunet-helper-nat-client installation found" 5497msgid "No working gnunet-helper-nat-client installation found"
5465msgstr "" 5498msgstr ""
5466 5499
5467#: src/nat-auto/nat_auto_api_test.c:475 5500#: src/nat-auto/nat_auto_api_test.c:481
5468#, fuzzy, c-format 5501#, fuzzy, c-format
5469msgid "Failed to find valid PORT in section `%s'\n" 5502msgid "Failed to find valid PORT in section `%s'\n"
5470msgstr "Misslyckades att binda till UDP-port %d.\n" 5503msgstr "Misslyckades att binda till UDP-port %d.\n"
5471 5504
5472#: src/nat-auto/nat_auto_api_test.c:520 5505#: src/nat-auto/nat_auto_api_test.c:526
5473#, fuzzy, c-format 5506#, fuzzy, c-format
5474msgid "Failed to create socket bound to `%s' for NAT test: %s\n" 5507msgid "Failed to create socket bound to `%s' for NAT test: %s\n"
5475msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5508msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5476 5509
5477#: src/nat/gnunet-nat.c:429 5510#: src/nat/gnunet-nat.c:437
5478msgid "which IP and port are we locally using to bind/listen to" 5511msgid "which IP and port are we locally using to bind/listen to"
5479msgstr "" 5512msgstr ""
5480 5513
5481#: src/nat/gnunet-nat.c:435 5514#: src/nat/gnunet-nat.c:443
5482msgid "which remote IP and port should be asked for connection reversal" 5515msgid "which remote IP and port should be asked for connection reversal"
5483msgstr "" 5516msgstr ""
5484 5517
5485#: src/nat/gnunet-nat.c:441 5518#: src/nat/gnunet-nat.c:449
5486msgid "" 5519msgid ""
5487"name of configuration section to find additional options, such as manual " 5520"name of configuration section to find additional options, such as manual "
5488"host punching data" 5521"host punching data"
5489msgstr "" 5522msgstr ""
5490 5523
5491#: src/nat/gnunet-nat.c:446 5524#: src/nat/gnunet-nat.c:454
5492msgid "enable STUN processing" 5525msgid "enable STUN processing"
5493msgstr "" 5526msgstr ""
5494 5527
5495#: src/nat/gnunet-nat.c:461 5528#: src/nat/gnunet-nat.c:469
5496msgid "watch for connection reversal requests" 5529msgid "watch for connection reversal requests"
5497msgstr "" 5530msgstr ""
5498 5531
5499#: src/nat/gnunet-nat.c:473 5532#: src/nat/gnunet-nat.c:481
5500msgid "GNUnet NAT traversal autoconfigure daemon" 5533msgid "GNUnet NAT traversal autoconfigure daemon"
5501msgstr "" 5534msgstr ""
5502 5535
5503#: src/nat/gnunet-service-nat.c:1337 5536#: src/nat/gnunet-service-nat.c:1339
5504#, c-format 5537#, c-format
5505msgid "Malformed punched hole specification `%s' (lacks port)\n" 5538msgid "Malformed punched hole specification `%s' (lacks port)\n"
5506msgstr "" 5539msgstr ""
5507 5540
5508#: src/nat/gnunet-service-nat.c:1347 5541#: src/nat/gnunet-service-nat.c:1349
5509#, c-format 5542#, c-format
5510msgid "Invalid port number in punched hole specification `%s' (lacks port)\n" 5543msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
5511msgstr "" 5544msgstr ""
5512 5545
5513#: src/nat/gnunet-service-nat.c:1363 5546#: src/nat/gnunet-service-nat.c:1365
5514#, c-format 5547#, c-format
5515msgid "Malformed punched hole specification `%s' (lacks `]')\n" 5548msgid "Malformed punched hole specification `%s' (lacks `]')\n"
5516msgstr "" 5549msgstr ""
5517 5550
5518#: src/nat/gnunet-service-nat.c:1374 5551#: src/nat/gnunet-service-nat.c:1376
5519#, c-format 5552#, c-format
5520msgid "Malformed punched hole specification `%s' (IPv6 address invalid)" 5553msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
5521msgstr "" 5554msgstr ""
5522 5555
5523#: src/nat/gnunet-service-nat.c:1839 5556#: src/nat/gnunet-service-nat.c:1841
5524#, fuzzy 5557#, fuzzy
5525msgid "Connection reversal request failed\n" 5558msgid "Connection reversal request failed\n"
5526msgstr "Samling stoppad.\n" 5559msgstr "Samling stoppad.\n"
5527 5560
5528#: src/nat/gnunet-service-nat.c:1912 5561#: src/nat/gnunet-service-nat.c:1914
5529msgid "" 5562msgid ""
5530"UPnP enabled in configuration, but UPnP client `upnpc` command not found, " 5563"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
5531"disabling UPnP\n" 5564"disabling UPnP\n"
5532msgstr "" 5565msgstr ""
5533 5566
5534#: src/nat/gnunet-service-nat_helper.c:184 5567#: src/nat/gnunet-service-nat_helper.c:186
5535#, c-format 5568#, c-format
5536msgid "gnunet-helper-nat-server generated malformed address `%s'\n" 5569msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
5537msgstr "" 5570msgstr ""
5538 5571
5539#: src/nat/gnunet-service-nat_helper.c:271 5572#: src/nat/gnunet-service-nat_helper.c:273
5540#, fuzzy, c-format 5573#, fuzzy, c-format
5541msgid "Failed to start %s\n" 5574msgid "Failed to start %s\n"
5542msgstr "Misslyckades att starta samling.\n" 5575msgstr "Misslyckades att starta samling.\n"
5543 5576
5544#: src/nat/gnunet-service-nat_mini.c:194 5577#: src/nat/gnunet-service-nat_mini.c:196
5545msgid "`external-ip' command not found\n" 5578msgid "`external-ip' command not found\n"
5546msgstr "" 5579msgstr ""
5547 5580
5548#: src/nat/gnunet-service-nat_mini.c:654 5581#: src/nat/gnunet-service-nat_mini.c:656
5549msgid "`upnpc' command not found\n" 5582msgid "`upnpc' command not found\n"
5550msgstr "" 5583msgstr ""
5551 5584
5552#: src/nse/gnunet-nse.c:120 5585#: src/nse/gnunet-nse.c:122
5553#, fuzzy 5586#, fuzzy
5554msgid "Show network size estimates from NSE service." 5587msgid "Show network size estimates from NSE service."
5555msgstr "# byte mottogs via TCP" 5588msgstr "# byte mottogs via TCP"
5556 5589
5557#: src/nse/gnunet-nse-profiler.c:847 5590#: src/nse/gnunet-nse-profiler.c:849
5558#, fuzzy 5591#, fuzzy
5559msgid "limit to the number of connections to NSE services, 0 for none" 5592msgid "limit to the number of connections to NSE services, 0 for none"
5560msgstr "Misslyckades att ansluta till gnunetd.\n" 5593msgstr "Misslyckades att ansluta till gnunetd.\n"
5561 5594
5562#: src/nse/gnunet-nse-profiler.c:852 5595#: src/nse/gnunet-nse-profiler.c:854
5563msgid "name of the file for writing connection information and statistics" 5596msgid "name of the file for writing connection information and statistics"
5564msgstr "" 5597msgstr ""
5565 5598
5566#: src/nse/gnunet-nse-profiler.c:864 5599#: src/nse/gnunet-nse-profiler.c:866
5567msgid "name of the file for writing the main results" 5600msgid "name of the file for writing the main results"
5568msgstr "" 5601msgstr ""
5569 5602
5570#: src/nse/gnunet-nse-profiler.c:871 5603#: src/nse/gnunet-nse-profiler.c:873
5571msgid "Number of peers to run in each round, separated by commas" 5604msgid "Number of peers to run in each round, separated by commas"
5572msgstr "" 5605msgstr ""
5573 5606
5574#: src/nse/gnunet-nse-profiler.c:882 5607#: src/nse/gnunet-nse-profiler.c:884
5575msgid "delay between rounds" 5608msgid "delay between rounds"
5576msgstr "" 5609msgstr ""
5577 5610
5578#: src/nse/gnunet-nse-profiler.c:891 5611#: src/nse/gnunet-nse-profiler.c:893
5579#, fuzzy 5612#, fuzzy
5580msgid "Measure quality and performance of the NSE service." 5613msgid "Measure quality and performance of the NSE service."
5581msgstr "Kan inte tillgå tjänsten" 5614msgstr "Kan inte tillgå tjänsten"
5582 5615
5583#: src/nse/gnunet-service-nse.c:1532 5616#: src/nse/gnunet-service-nse.c:1534
5584#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:274 5617#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
5585msgid "Value is too large.\n" 5618msgid "Value is too large.\n"
5586msgstr "" 5619msgstr ""
5587 5620
5588#: src/peerinfo/gnunet-service-peerinfo.c:176 5621#: src/peerinfo/gnunet-service-peerinfo.c:178
5589#, fuzzy, c-format 5622#, fuzzy, c-format
5590msgid "Removing expired address of transport `%s'\n" 5623msgid "Removing expired address of transport `%s'\n"
5591msgstr "Tillgängliga transport(er): %s\n" 5624msgstr "Tillgängliga transport(er): %s\n"
5592 5625
5593#: src/peerinfo/gnunet-service-peerinfo.c:311 5626#: src/peerinfo/gnunet-service-peerinfo.c:313
5594#, fuzzy, c-format 5627#, fuzzy, c-format
5595msgid "Failed to parse HELLO in file `%s': %s\n" 5628msgid "Failed to parse HELLO in file `%s': %s\n"
5596msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5629msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5597 5630
5598#: src/peerinfo/gnunet-service-peerinfo.c:332 5631#: src/peerinfo/gnunet-service-peerinfo.c:334
5599#: src/peerinfo/gnunet-service-peerinfo.c:363 5632#: src/peerinfo/gnunet-service-peerinfo.c:365
5600#, fuzzy, c-format 5633#, fuzzy, c-format
5601msgid "Failed to parse HELLO in file `%s'\n" 5634msgid "Failed to parse HELLO in file `%s'\n"
5602msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5635msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5603 5636
5604#: src/peerinfo/gnunet-service-peerinfo.c:447 5637#: src/peerinfo/gnunet-service-peerinfo.c:449
5605msgid "# peers known" 5638msgid "# peers known"
5606msgstr "" 5639msgstr ""
5607 5640
5608#: src/peerinfo/gnunet-service-peerinfo.c:490 5641#: src/peerinfo/gnunet-service-peerinfo.c:492
5609#, c-format 5642#, c-format
5610msgid "" 5643msgid ""
5611"File `%s' in directory `%s' does not match naming convention. Removed.\n" 5644"File `%s' in directory `%s' does not match naming convention. Removed.\n"
5612msgstr "" 5645msgstr ""
5613 5646
5614#: src/peerinfo/gnunet-service-peerinfo.c:657 5647#: src/peerinfo/gnunet-service-peerinfo.c:659
5615#, fuzzy, c-format 5648#, fuzzy, c-format
5616msgid "Scanning directory `%s'\n" 5649msgid "Scanning directory `%s'\n"
5617msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5650msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5618 5651
5619#: src/peerinfo/gnunet-service-peerinfo.c:665 5652#: src/peerinfo/gnunet-service-peerinfo.c:667
5620#, c-format 5653#, c-format
5621msgid "Still no peers found in `%s'!\n" 5654msgid "Still no peers found in `%s'!\n"
5622msgstr "" 5655msgstr ""
5623 5656
5624#: src/peerinfo/gnunet-service-peerinfo.c:1098 5657#: src/peerinfo/gnunet-service-peerinfo.c:1100
5625#, fuzzy, c-format 5658#, fuzzy, c-format
5626msgid "Cleaning up directory `%s'\n" 5659msgid "Cleaning up directory `%s'\n"
5627msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5660msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5628 5661
5629#: src/peerinfo/gnunet-service-peerinfo.c:1436 5662#: src/peerinfo/gnunet-service-peerinfo.c:1438
5630#, c-format 5663#, c-format
5631msgid "Importing HELLOs from `%s'\n" 5664msgid "Importing HELLOs from `%s'\n"
5632msgstr "" 5665msgstr ""
5633 5666
5634#: src/peerinfo/gnunet-service-peerinfo.c:1449 5667#: src/peerinfo/gnunet-service-peerinfo.c:1451
5635msgid "Skipping import of included HELLOs\n" 5668msgid "Skipping import of included HELLOs\n"
5636msgstr "" 5669msgstr ""
5637 5670
5638#: src/peerinfo/peerinfo_api.c:218 5671#: src/peerinfo/peerinfo_api.c:220
5639#, fuzzy 5672#, fuzzy
5640msgid "Failed to receive response from `PEERINFO' service." 5673msgid "Failed to receive response from `PEERINFO' service."
5641msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n" 5674msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n"
5642 5675
5643#: src/peerinfo-tool/gnunet-peerinfo.c:237 5676#: src/peerinfo-tool/gnunet-peerinfo.c:239
5644#, fuzzy, c-format 5677#, fuzzy, c-format
5645msgid "%sPeer `%s'\n" 5678msgid "%sPeer `%s'\n"
5646msgstr "Jag är ändpunkt \"%s\".\n" 5679msgstr "Jag är ändpunkt \"%s\".\n"
5647 5680
5648#: src/peerinfo-tool/gnunet-peerinfo.c:244 5681#: src/peerinfo-tool/gnunet-peerinfo.c:246
5649#, c-format 5682#, c-format
5650msgid "\tExpires: %s \t %s\n" 5683msgid "\tExpires: %s \t %s\n"
5651msgstr "" 5684msgstr ""
5652 5685
5653#: src/peerinfo-tool/gnunet-peerinfo.c:297 5686#: src/peerinfo-tool/gnunet-peerinfo.c:299
5654#: src/rest-plugins/plugin_rest_peerinfo.c:499 5687#: src/rest-plugins/plugin_rest_peerinfo.c:501
5655#, fuzzy, c-format 5688#, fuzzy, c-format
5656msgid "Failure: Cannot convert address to string for peer `%s'\n" 5689msgid "Failure: Cannot convert address to string for peer `%s'\n"
5657msgstr "Misslyckades att binda till UDP-port %d.\n" 5690msgstr "Misslyckades att binda till UDP-port %d.\n"
5658 5691
5659#: src/peerinfo-tool/gnunet-peerinfo.c:464 5692#: src/peerinfo-tool/gnunet-peerinfo.c:466
5660#, c-format 5693#, c-format
5661msgid "Failure: Received invalid %s\n" 5694msgid "Failure: Received invalid %s\n"
5662msgstr "" 5695msgstr ""
5663 5696
5664#: src/peerinfo-tool/gnunet-peerinfo.c:478 5697#: src/peerinfo-tool/gnunet-peerinfo.c:480
5665#, fuzzy, c-format 5698#, fuzzy, c-format
5666msgid "Failed to write HELLO with %u bytes to file `%s'\n" 5699msgid "Failed to write HELLO with %u bytes to file `%s'\n"
5667msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5700msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5668 5701
5669#: src/peerinfo-tool/gnunet-peerinfo.c:497 5702#: src/peerinfo-tool/gnunet-peerinfo.c:499
5670#, c-format 5703#, c-format
5671msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n" 5704msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
5672msgstr "" 5705msgstr ""
5673 5706
5674#: src/peerinfo-tool/gnunet-peerinfo.c:797 5707#: src/peerinfo-tool/gnunet-peerinfo.c:799
5675#, c-format 5708#, c-format
5676msgid "I am peer `%s'.\n" 5709msgid "I am peer `%s'.\n"
5677msgstr "Jag är ändpunkt \"%s\".\n" 5710msgstr "Jag är ändpunkt \"%s\".\n"
5678 5711
5679#: src/peerinfo-tool/gnunet-peerinfo.c:841 5712#: src/peerinfo-tool/gnunet-peerinfo.c:843
5680msgid "don't resolve host names" 5713msgid "don't resolve host names"
5681msgstr "" 5714msgstr ""
5682 5715
5683#: src/peerinfo-tool/gnunet-peerinfo.c:846 5716#: src/peerinfo-tool/gnunet-peerinfo.c:848
5684msgid "output only the identity strings" 5717msgid "output only the identity strings"
5685msgstr "" 5718msgstr ""
5686 5719
5687#: src/peerinfo-tool/gnunet-peerinfo.c:850 5720#: src/peerinfo-tool/gnunet-peerinfo.c:852
5688msgid "include friend-only information" 5721msgid "include friend-only information"
5689msgstr "" 5722msgstr ""
5690 5723
5691#: src/peerinfo-tool/gnunet-peerinfo.c:855 5724#: src/peerinfo-tool/gnunet-peerinfo.c:857
5692msgid "output our own identity only" 5725msgid "output our own identity only"
5693msgstr "" 5726msgstr ""
5694 5727
5695#: src/peerinfo-tool/gnunet-peerinfo.c:860 5728#: src/peerinfo-tool/gnunet-peerinfo.c:862
5696msgid "list all known peers" 5729msgid "list all known peers"
5697msgstr "" 5730msgstr ""
5698 5731
5699#: src/peerinfo-tool/gnunet-peerinfo.c:866 5732#: src/peerinfo-tool/gnunet-peerinfo.c:868
5700msgid "dump hello to file" 5733msgid "dump hello to file"
5701msgstr "" 5734msgstr ""
5702 5735
5703#: src/peerinfo-tool/gnunet-peerinfo.c:871 5736#: src/peerinfo-tool/gnunet-peerinfo.c:873
5704msgid "also output HELLO uri(s)" 5737msgid "also output HELLO uri(s)"
5705msgstr "" 5738msgstr ""
5706 5739
5707#: src/peerinfo-tool/gnunet-peerinfo.c:877 5740#: src/peerinfo-tool/gnunet-peerinfo.c:879
5708msgid "add given HELLO uri to the database" 5741msgid "add given HELLO uri to the database"
5709msgstr "" 5742msgstr ""
5710 5743
5711#: src/peerinfo-tool/gnunet-peerinfo.c:895 5744#: src/peerinfo-tool/gnunet-peerinfo.c:897
5712#, fuzzy 5745#, fuzzy
5713msgid "Print information about peers." 5746msgid "Print information about peers."
5714msgstr "Skriv ut information om GNUnets motparter." 5747msgstr "Skriv ut information om GNUnets motparter."
5715 5748
5716#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:103 5749#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
5717#: src/transport/gnunet-service-transport_plugins.c:166 5750#: src/transport/gnunet-service-transport_plugins.c:168
5718#, fuzzy, c-format 5751#, fuzzy, c-format
5719msgid "Starting transport plugins `%s'\n" 5752msgid "Starting transport plugins `%s'\n"
5720msgstr "Testar transport(er) %s\n" 5753msgstr "Testar transport(er) %s\n"
5721 5754
5722#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:107 5755#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
5723#: src/transport/gnunet-service-transport_plugins.c:171 5756#: src/transport/gnunet-service-transport_plugins.c:173
5724#, fuzzy, c-format 5757#, fuzzy, c-format
5725msgid "Loading `%s' transport plugin\n" 5758msgid "Loading `%s' transport plugin\n"
5726msgstr "Testar transport(er) %s\n" 5759msgstr "Testar transport(er) %s\n"
5727 5760
5728#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:127 5761#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
5729#: src/transport/gnunet-service-transport_plugins.c:206 5762#: src/transport/gnunet-service-transport_plugins.c:208
5730#, fuzzy, c-format 5763#, fuzzy, c-format
5731msgid "Failed to load transport plugin for `%s'\n" 5764msgid "Failed to load transport plugin for `%s'\n"
5732msgstr "Kunde inte slå upp \"%s\": %s\n" 5765msgstr "Kunde inte slå upp \"%s\": %s\n"
5733 5766
5734#: src/peerstore/gnunet-peerstore.c:89 5767#: src/peerstore/gnunet-peerstore.c:91
5735msgid "peerstore" 5768msgid "peerstore"
5736msgstr "" 5769msgstr ""
5737 5770
5738#: src/peerstore/gnunet-service-peerstore.c:596 5771#: src/peerstore/gnunet-service-peerstore.c:598
5739#, fuzzy, c-format 5772#, fuzzy, c-format
5740msgid "Could not load database backend `%s'\n" 5773msgid "Could not load database backend `%s'\n"
5741msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 5774msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5742 5775
5743#: src/peerstore/peerstore_api.c:348 5776#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
5744msgid "timeout"
5745msgstr ""
5746
5747#: src/peerstore/peerstore_api.c:564 src/peerstore/peerstore_api.c:613
5748#, fuzzy 5777#, fuzzy
5749msgid "Unexpected iteration response, this should not happen.\n" 5778msgid "Unexpected iteration response, this should not happen.\n"
5750msgstr "Utdataformat är inte känt, detta bör inte hända.\n" 5779msgstr "Utdataformat är inte känt, detta bör inte hända.\n"
5751 5780
5752#: src/peerstore/peerstore_api.c:627 5781#: src/peerstore/peerstore_api.c:595
5753#, fuzzy 5782#, fuzzy
5754msgid "Received a malformed response from service." 5783msgid "Received a malformed response from service."
5755msgstr "Mottog ogiltig \"%s\" begäran (storlek %d)\n" 5784msgstr "Mottog ogiltig \"%s\" begäran (storlek %d)\n"
5756 5785
5757#: src/peerstore/peerstore_api.c:776 5786#: src/peerstore/peerstore_api.c:731
5758msgid "Received a watch result for a non existing watch.\n" 5787msgid "Received a watch result for a non existing watch.\n"
5759msgstr "" 5788msgstr ""
5760 5789
5761#: src/peerstore/plugin_peerstore_sqlite.c:451 5790#: src/peerstore/plugin_peerstore_sqlite.c:453
5762#: src/psycstore/plugin_psycstore_sqlite.c:280
5763#, fuzzy, c-format 5791#, fuzzy, c-format
5764msgid "" 5792msgid ""
5765"Error executing SQL query: %s\n" 5793"Error executing SQL query: %s\n"
5766" %s\n" 5794" %s\n"
5767msgstr "Fel vid skapandet av användare" 5795msgstr "Fel vid skapandet av användare"
5768 5796
5769#: src/peerstore/plugin_peerstore_sqlite.c:486 5797#: src/peerstore/plugin_peerstore_sqlite.c:488
5770#: src/psycstore/plugin_psycstore_mysql.c:248
5771#: src/psycstore/plugin_psycstore_sqlite.c:257
5772#, fuzzy, c-format 5798#, fuzzy, c-format
5773msgid "" 5799msgid ""
5774"Error preparing SQL query: %s\n" 5800"Error preparing SQL query: %s\n"
5775" %s\n" 5801" %s\n"
5776msgstr "Fel vid skapandet av användare" 5802msgstr "Fel vid skapandet av användare"
5777 5803
5778#: src/peerstore/plugin_peerstore_sqlite.c:568 5804#: src/peerstore/plugin_peerstore_sqlite.c:570
5779#, fuzzy, c-format 5805#, fuzzy, c-format
5780msgid "Unable to create indices: %s.\n" 5806msgid "Unable to create indices: %s.\n"
5781msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 5807msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
5782 5808
5783#: src/pq/pq_prepare.c:82 5809#: src/pq/pq_prepare.c:84
5784#, fuzzy, c-format 5810#, fuzzy, c-format
5785msgid "PQprepare (`%s' as `%s') failed with error: %s\n" 5811msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
5786msgstr "\"%s\" till \"%s\" misslyckades vid %s:%d med fel: %s\n" 5812msgstr "\"%s\" till \"%s\" misslyckades vid %s:%d med fel: %s\n"
5787 5813
5788#: src/psycstore/gnunet-service-psycstore.c:247 5814#: src/pt/gnunet-daemon-pt.c:423
5789#, fuzzy
5790msgid "Failed to store membership information!\n"
5791msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
5792
5793#: src/psycstore/gnunet-service-psycstore.c:269
5794#, fuzzy
5795msgid "Failed to test membership!\n"
5796msgstr "Kunde inte skapa värdnyckel!\n"
5797
5798#: src/psycstore/gnunet-service-psycstore.c:298
5799#, fuzzy
5800msgid "Dropping invalid fragment\n"
5801msgstr "Ogiltigt argument: \"%s\"\n"
5802
5803#: src/psycstore/gnunet-service-psycstore.c:309
5804#, fuzzy
5805msgid "Failed to store fragment\n"
5806msgstr "Misslyckades att starta samling.\n"
5807
5808#: src/psycstore/gnunet-service-psycstore.c:366
5809#, fuzzy
5810msgid "Failed to get fragment!\n"
5811msgstr "Kunde inte skapa värdnyckel!\n"
5812
5813#: src/psycstore/gnunet-service-psycstore.c:432
5814#, fuzzy
5815msgid "Failed to get message!\n"
5816msgstr "Kunde inte skapa värdnyckel!\n"
5817
5818#: src/psycstore/gnunet-service-psycstore.c:462
5819#, fuzzy
5820msgid "Failed to get message fragment!\n"
5821msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5822
5823#: src/psycstore/gnunet-service-psycstore.c:492
5824#, fuzzy
5825msgid "Failed to get master counters!\n"
5826msgstr "Kunde inte skapa värdnyckel!\n"
5827
5828#: src/psycstore/gnunet-service-psycstore.c:673
5829#, fuzzy, c-format
5830msgid "Failed to begin modifying state: %d\n"
5831msgstr "Misslyckades att starta samling.\n"
5832
5833#: src/psycstore/gnunet-service-psycstore.c:683
5834#, fuzzy, c-format
5835msgid "Failed to modify state: %d\n"
5836msgstr "Misslyckades att starta samling.\n"
5837
5838#: src/psycstore/gnunet-service-psycstore.c:691
5839#, fuzzy
5840msgid "Failed to end modifying state!\n"
5841msgstr "Misslyckades att starta samling.\n"
5842
5843#: src/psycstore/gnunet-service-psycstore.c:728
5844msgid "Tried to set invalid state variable name!\n"
5845msgstr ""
5846
5847#: src/psycstore/gnunet-service-psycstore.c:742
5848#, fuzzy
5849msgid "Failed to begin synchronizing state!\n"
5850msgstr "Kunde inte skapa värdnyckel!\n"
5851
5852#: src/psycstore/gnunet-service-psycstore.c:759
5853#, fuzzy
5854msgid "Failed to end synchronizing state!\n"
5855msgstr "Kunde inte skapa värdnyckel!\n"
5856
5857#: src/psycstore/gnunet-service-psycstore.c:777
5858#: src/psycstore/gnunet-service-psycstore.c:793
5859#, fuzzy
5860msgid "Failed to reset state!\n"
5861msgstr "Kunde inte skapa värdnyckel!\n"
5862
5863#: src/psycstore/gnunet-service-psycstore.c:822
5864#: src/psycstore/gnunet-service-psycstore.c:879
5865msgid "Tried to get invalid state variable name!\n"
5866msgstr ""
5867
5868#: src/psycstore/gnunet-service-psycstore.c:849
5869#: src/psycstore/gnunet-service-psycstore.c:894
5870#, fuzzy
5871msgid "Failed to get state variable!\n"
5872msgstr "Kunde inte skapa värdnyckel!\n"
5873
5874#: src/psycstore/plugin_psycstore_mysql.c:279
5875#, fuzzy
5876msgid "Unable to initialize Mysql.\n"
5877msgstr "Kunde inte initiera SQLite.\n"
5878
5879#: src/psycstore/plugin_psycstore_mysql.c:289
5880#, fuzzy, c-format
5881msgid "Failed to run SQL statement `%s'\n"
5882msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
5883
5884#: src/psycstore/plugin_psycstore_sqlite.c:59
5885#, fuzzy, c-format
5886msgid "`%s' failed at %s:%d with error: %s (%d)\n"
5887msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
5888
5889#: src/psycstore/plugin_psycstore_sqlite.c:1922
5890msgid "SQLite database running\n"
5891msgstr ""
5892
5893#: src/pt/gnunet-daemon-pt.c:421
5894#, fuzzy 5815#, fuzzy
5895msgid "Failed to pack DNS request. Dropping.\n" 5816msgid "Failed to pack DNS request. Dropping.\n"
5896msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 5817msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
5897 5818
5898#: src/pt/gnunet-daemon-pt.c:427 5819#: src/pt/gnunet-daemon-pt.c:429
5899#, fuzzy 5820#, fuzzy
5900msgid "# DNS requests mapped to VPN" 5821msgid "# DNS requests mapped to VPN"
5901msgstr "# byte mottogs via TCP" 5822msgstr "# byte mottogs via TCP"
5902 5823
5903#: src/pt/gnunet-daemon-pt.c:481 5824#: src/pt/gnunet-daemon-pt.c:483
5904msgid "# DNS records modified" 5825msgid "# DNS records modified"
5905msgstr "" 5826msgstr ""
5906 5827
5907#: src/pt/gnunet-daemon-pt.c:665 5828#: src/pt/gnunet-daemon-pt.c:667
5908msgid "# DNS replies intercepted" 5829msgid "# DNS replies intercepted"
5909msgstr "" 5830msgstr ""
5910 5831
5911#: src/pt/gnunet-daemon-pt.c:672 5832#: src/pt/gnunet-daemon-pt.c:674
5912#, fuzzy 5833#, fuzzy
5913msgid "Failed to parse DNS request. Dropping.\n" 5834msgid "Failed to parse DNS request. Dropping.\n"
5914msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 5835msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
5915 5836
5916#: src/pt/gnunet-daemon-pt.c:710 5837#: src/pt/gnunet-daemon-pt.c:712
5917#, fuzzy 5838#, fuzzy
5918msgid "# DNS requests dropped (timeout)" 5839msgid "# DNS requests dropped (timeout)"
5919msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 5840msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
5920 5841
5921#: src/pt/gnunet-daemon-pt.c:766 5842#: src/pt/gnunet-daemon-pt.c:768
5922#, fuzzy 5843#, fuzzy
5923msgid "# DNS requests intercepted" 5844msgid "# DNS requests intercepted"
5924msgstr "# byte mottogs via TCP" 5845msgstr "# byte mottogs via TCP"
5925 5846
5926#: src/pt/gnunet-daemon-pt.c:771 5847#: src/pt/gnunet-daemon-pt.c:773
5927#, fuzzy 5848#, fuzzy
5928msgid "# DNS requests dropped (DNS cadet channel down)" 5849msgid "# DNS requests dropped (DNS cadet channel down)"
5929msgstr "# byte mottogs via TCP" 5850msgstr "# byte mottogs via TCP"
5930 5851
5931#: src/pt/gnunet-daemon-pt.c:779 5852#: src/pt/gnunet-daemon-pt.c:781
5932#, fuzzy 5853#, fuzzy
5933msgid "# DNS requests dropped (malformed)" 5854msgid "# DNS requests dropped (malformed)"
5934msgstr "# byte mottogs via TCP" 5855msgstr "# byte mottogs via TCP"
5935 5856
5936#: src/pt/gnunet-daemon-pt.c:874 5857#: src/pt/gnunet-daemon-pt.c:876
5937#, fuzzy 5858#, fuzzy
5938msgid "# DNS replies received" 5859msgid "# DNS replies received"
5939msgstr "# byte mottogs via TCP" 5860msgstr "# byte mottogs via TCP"
5940 5861
5941#: src/pt/gnunet-daemon-pt.c:891 5862#: src/pt/gnunet-daemon-pt.c:893
5942#, fuzzy 5863#, fuzzy
5943msgid "# DNS replies dropped (too late?)" 5864msgid "# DNS replies dropped (too late?)"
5944msgstr "# byte mottagna av typen %d" 5865msgstr "# byte mottagna av typen %d"
5945 5866
5946#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226 5867#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
5947#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251 5868#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
5948#: src/pt/gnunet-daemon-pt.c:1260 5869#: src/pt/gnunet-daemon-pt.c:1262
5949#, fuzzy, c-format 5870#, fuzzy, c-format
5950msgid "Failed to connect to %s service. Exiting.\n" 5871msgid "Failed to connect to %s service. Exiting.\n"
5951msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 5872msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
5952 5873
5953#: src/pt/gnunet-daemon-pt.c:1305 5874#: src/pt/gnunet-daemon-pt.c:1307
5954msgid "Daemon to run to perform IP protocol translation to GNUnet" 5875msgid "Daemon to run to perform IP protocol translation to GNUnet"
5955msgstr "" 5876msgstr ""
5956 5877
5957#: src/reclaim/gnunet-reclaim.c:465 5878#: src/reclaim/gnunet-reclaim.c:467
5958#, fuzzy, c-format 5879#, fuzzy, c-format
5959msgid "Ego is required\n" 5880msgid "Ego is required\n"
5960msgstr "%s: flagga \"%s\" är tvetydig\n" 5881msgstr "%s: flagga \"%s\" är tvetydig\n"
5961 5882
5962#: src/reclaim/gnunet-reclaim.c:473 5883#: src/reclaim/gnunet-reclaim.c:475
5963#, c-format 5884#, c-format
5964msgid "Attribute value missing!\n" 5885msgid "Attribute value missing!\n"
5965msgstr "" 5886msgstr ""
5966 5887
5967#: src/reclaim/gnunet-reclaim.c:481 5888#: src/reclaim/gnunet-reclaim.c:483
5968#, fuzzy, c-format 5889#, fuzzy, c-format
5969msgid "Requesting party key is required!\n" 5890msgid "Requesting party key is required!\n"
5970msgstr "%s: flagga \"%s\" är tvetydig\n" 5891msgstr "%s: flagga \"%s\" är tvetydig\n"
5971 5892
5972#: src/reclaim/gnunet-reclaim.c:504 5893#: src/reclaim/gnunet-reclaim.c:506
5973msgid "Add attribute" 5894msgid "Add attribute"
5974msgstr "" 5895msgstr ""
5975 5896
5976#: src/reclaim/gnunet-reclaim.c:510 5897#: src/reclaim/gnunet-reclaim.c:512
5977msgid "Attribute value" 5898msgid "Attribute value"
5978msgstr "" 5899msgstr ""
5979 5900
5980#: src/reclaim/gnunet-reclaim.c:515 5901#: src/reclaim/gnunet-reclaim.c:517
5981msgid "Ego" 5902msgid "Ego"
5982msgstr "" 5903msgstr ""
5983 5904
5984#: src/reclaim/gnunet-reclaim.c:520 5905#: src/reclaim/gnunet-reclaim.c:522
5985msgid "Audience (relying party)" 5906msgid "Audience (relying party)"
5986msgstr "" 5907msgstr ""
5987 5908
5988#: src/reclaim/gnunet-reclaim.c:524 5909#: src/reclaim/gnunet-reclaim.c:526
5989msgid "List attributes for Ego" 5910msgid "List attributes for Ego"
5990msgstr "" 5911msgstr ""
5991 5912
5992#: src/reclaim/gnunet-reclaim.c:529 5913#: src/reclaim/gnunet-reclaim.c:531
5993msgid "Issue a ticket" 5914msgid "Issue a ticket"
5994msgstr "" 5915msgstr ""
5995 5916
5996#: src/reclaim/gnunet-reclaim.c:534 5917#: src/reclaim/gnunet-reclaim.c:536
5997msgid "Consume a ticket" 5918msgid "Consume a ticket"
5998msgstr "" 5919msgstr ""
5999 5920
6000#: src/reclaim/gnunet-reclaim.c:539 5921#: src/reclaim/gnunet-reclaim.c:541
6001msgid "Revoke a ticket" 5922msgid "Revoke a ticket"
6002msgstr "" 5923msgstr ""
6003 5924
6004#: src/reclaim/gnunet-reclaim.c:544 5925#: src/reclaim/gnunet-reclaim.c:546
6005msgid "Type of attribute" 5926msgid "Type of attribute"
6006msgstr "" 5927msgstr ""
6007 5928
6008#: src/reclaim/gnunet-reclaim.c:549 5929#: src/reclaim/gnunet-reclaim.c:551
6009msgid "Expiration interval of the attribute" 5930msgid "Expiration interval of the attribute"
6010msgstr "" 5931msgstr ""
6011 5932
6012#: src/reclaim/reclaim_api.c:434 5933#: src/reclaim/reclaim_api.c:436
6013#, fuzzy 5934#, fuzzy
6014msgid "failed to store record\n" 5935msgid "failed to store record\n"
6015msgstr "Misslyckades att starta samling.\n" 5936msgstr "Misslyckades att starta samling.\n"
6016 5937
6017#: src/regex/gnunet-daemon-regexprofiler.c:265 5938#: src/regex/gnunet-daemon-regexprofiler.c:267
6018#, fuzzy, c-format 5939#, fuzzy, c-format
6019msgid "%s service is lacking key configuration settings (%s). Exiting.\n" 5940msgid "%s service is lacking key configuration settings (%s). Exiting.\n"
6020msgstr "GNUnet-konfiguration" 5941msgstr "GNUnet-konfiguration"
6021 5942
6022#: src/regex/gnunet-daemon-regexprofiler.c:378 5943#: src/regex/gnunet-daemon-regexprofiler.c:380
6023msgid "Daemon to announce regular expressions for the peer using cadet." 5944msgid "Daemon to announce regular expressions for the peer using cadet."
6024msgstr "" 5945msgstr ""
6025 5946
6026#: src/regex/gnunet-regex-profiler.c:1384 5947#: src/regex/gnunet-regex-profiler.c:1386
6027#, fuzzy 5948#, fuzzy
6028msgid "No configuration file given. Exiting\n" 5949msgid "No configuration file given. Exiting\n"
6029msgstr "använd konfigurationsfil FILNAMN" 5950msgstr "använd konfigurationsfil FILNAMN"
6030 5951
6031#: src/regex/gnunet-regex-profiler.c:1425 5952#: src/regex/gnunet-regex-profiler.c:1427
6032#: src/regex/gnunet-regex-simulation-profiler.c:628 5953#: src/regex/gnunet-regex-simulation-profiler.c:630
6033#, c-format 5954#, c-format
6034msgid "No policy directory specified on command line. Exiting.\n" 5955msgid "No policy directory specified on command line. Exiting.\n"
6035msgstr "" 5956msgstr ""
6036 5957
6037#: src/regex/gnunet-regex-profiler.c:1431 5958#: src/regex/gnunet-regex-profiler.c:1433
6038#: src/regex/gnunet-regex-simulation-profiler.c:636 5959#: src/regex/gnunet-regex-simulation-profiler.c:638
6039#, c-format 5960#, c-format
6040msgid "Specified policies directory does not exist. Exiting.\n" 5961msgid "Specified policies directory does not exist. Exiting.\n"
6041msgstr "" 5962msgstr ""
6042 5963
6043#: src/regex/gnunet-regex-profiler.c:1438 5964#: src/regex/gnunet-regex-profiler.c:1440
6044#, fuzzy, c-format 5965#, fuzzy, c-format
6045msgid "No files found in `%s'\n" 5966msgid "No files found in `%s'\n"
6046msgstr "%d filer hittades i katalog.\n" 5967msgstr "%d filer hittades i katalog.\n"
6047 5968
6048#: src/regex/gnunet-regex-profiler.c:1447 5969#: src/regex/gnunet-regex-profiler.c:1449
6049msgid "No search strings file given. Exiting.\n" 5970msgid "No search strings file given. Exiting.\n"
6050msgstr "" 5971msgstr ""
6051 5972
6052#: src/regex/gnunet-regex-profiler.c:1467 5973#: src/regex/gnunet-regex-profiler.c:1469
6053#, fuzzy 5974#, fuzzy
6054msgid "Error loading search strings. Exiting.\n" 5975msgid "Error loading search strings. Exiting.\n"
6055msgstr "Fel vid lämning av DHT.\n" 5976msgstr "Fel vid lämning av DHT.\n"
6056 5977
6057#: src/regex/gnunet-regex-profiler.c:1555 5978#: src/regex/gnunet-regex-profiler.c:1557
6058#, fuzzy 5979#, fuzzy
6059msgid "name of the file for writing statistics" 5980msgid "name of the file for writing statistics"
6060msgstr "Visa värde av alternativet" 5981msgstr "Visa värde av alternativet"
6061 5982
6062#: src/regex/gnunet-regex-profiler.c:1561 5983#: src/regex/gnunet-regex-profiler.c:1563
6063msgid "wait TIMEOUT before ending the experiment" 5984msgid "wait TIMEOUT before ending the experiment"
6064msgstr "" 5985msgstr ""
6065 5986
6066#: src/regex/gnunet-regex-profiler.c:1567 5987#: src/regex/gnunet-regex-profiler.c:1569
6067msgid "directory with policy files" 5988msgid "directory with policy files"
6068msgstr "" 5989msgstr ""
6069 5990
6070#: src/regex/gnunet-regex-profiler.c:1574 5991#: src/regex/gnunet-regex-profiler.c:1576
6071#, fuzzy 5992#, fuzzy
6072msgid "name of file with input strings" 5993msgid "name of file with input strings"
6073msgstr "Visa värde av alternativet" 5994msgstr "Visa värde av alternativet"
6074 5995
6075#: src/regex/gnunet-regex-profiler.c:1580 5996#: src/regex/gnunet-regex-profiler.c:1582
6076#, fuzzy 5997#, fuzzy
6077msgid "name of file with hosts' names" 5998msgid "name of file with hosts' names"
6078msgstr "Visa värde av alternativet" 5999msgstr "Visa värde av alternativet"
6079 6000
6080#: src/regex/gnunet-regex-profiler.c:1593 6001#: src/regex/gnunet-regex-profiler.c:1595
6081msgid "Profiler for regex" 6002msgid "Profiler for regex"
6082msgstr "" 6003msgstr ""
6083 6004
6084#: src/regex/gnunet-regex-simulation-profiler.c:697 6005#: src/regex/gnunet-regex-simulation-profiler.c:699
6085#, fuzzy 6006#, fuzzy
6086msgid "name of the table to write DFAs" 6007msgid "name of the table to write DFAs"
6087msgstr "Visa värde av alternativet" 6008msgstr "Visa värde av alternativet"
6088 6009
6089#: src/regex/gnunet-regex-simulation-profiler.c:703 6010#: src/regex/gnunet-regex-simulation-profiler.c:705
6090msgid "maximum path compression length" 6011msgid "maximum path compression length"
6091msgstr "" 6012msgstr ""
6092 6013
6093#: src/regex/gnunet-regex-simulation-profiler.c:717 6014#: src/regex/gnunet-regex-simulation-profiler.c:719
6094msgid "Profiler for regex library" 6015msgid "Profiler for regex library"
6095msgstr "" 6016msgstr ""
6096 6017
6097#: src/regex/regex_api_announce.c:150 6018#: src/regex/regex_api_announce.c:152
6098#, fuzzy, c-format 6019#, fuzzy, c-format
6099msgid "Regex `%s' is too long!\n" 6020msgid "Regex `%s' is too long!\n"
6100msgstr "\"%s\" är inte en fil.\n" 6021msgstr "\"%s\" är inte en fil.\n"
6101 6022
6102#: src/regex/regex_api_search.c:210 6023#: src/regex/regex_api_search.c:212
6103#, fuzzy, c-format 6024#, fuzzy, c-format
6104msgid "Search string `%s' is too long!\n" 6025msgid "Search string `%s' is too long!\n"
6105msgstr "\"%s\" är inte en fil.\n" 6026msgstr "\"%s\" är inte en fil.\n"
6106 6027
6107#: src/rest/gnunet-rest-server.c:925 6028#: src/rest/gnunet-rest-server.c:927
6108msgid "listen on specified port (default: 7776)" 6029msgid "listen on specified port (default: 7776)"
6109msgstr "" 6030msgstr ""
6110 6031
6111#: src/rest/gnunet-rest-server.c:942 6032#: src/rest/gnunet-rest-server.c:944
6112#, fuzzy 6033#, fuzzy
6113msgid "GNUnet REST server" 6034msgid "GNUnet REST server"
6114msgstr "Spåra GNUnets nätverkstopologi." 6035msgstr "Spåra GNUnets nätverkstopologi."
6115 6036
6116#: src/rest-plugins/plugin_rest_copying.c:207 6037#: src/rest-plugins/plugin_rest_copying.c:209
6117#, fuzzy 6038#, fuzzy
6118msgid "COPYING REST API initialized\n" 6039msgid "COPYING REST API initialized\n"
6119msgstr " Anslutning misslyckades\n" 6040msgstr " Anslutning misslyckades\n"
6120 6041
6121#: src/rest-plugins/plugin_rest_credential.c:1126 6042#: src/rest-plugins/plugin_rest_credential.c:1128
6122#, fuzzy 6043#, fuzzy
6123msgid "GNS REST API initialized\n" 6044msgid "GNS REST API initialized\n"
6124msgstr " Anslutning misslyckades\n" 6045msgstr " Anslutning misslyckades\n"
6125 6046
6126#: src/rest-plugins/plugin_rest_gns.c:450 6047#: src/rest-plugins/plugin_rest_gns.c:452
6127#, fuzzy 6048#, fuzzy
6128msgid "Gns REST API initialized\n" 6049msgid "Gns REST API initialized\n"
6129msgstr " Anslutning misslyckades\n" 6050msgstr " Anslutning misslyckades\n"
6130 6051
6131#: src/rest-plugins/plugin_rest_identity.c:1295 6052#: src/rest-plugins/plugin_rest_identity.c:1297
6132#, fuzzy 6053#, fuzzy
6133msgid "Identity REST API initialized\n" 6054msgid "Identity REST API initialized\n"
6134msgstr " Anslutning misslyckades\n" 6055msgstr " Anslutning misslyckades\n"
6135 6056
6136#: src/rest-plugins/plugin_rest_namestore.c:1077 6057#: src/rest-plugins/plugin_rest_namestore.c:1079
6137#, fuzzy 6058#, fuzzy
6138msgid "Namestore REST API initialized\n" 6059msgid "Namestore REST API initialized\n"
6139msgstr " Anslutning misslyckades\n" 6060msgstr " Anslutning misslyckades\n"
6140 6061
6141#: src/rest-plugins/plugin_rest_openid_connect.c:2135 6062#: src/rest-plugins/plugin_rest_openid_connect.c:2245
6142#: src/rest-plugins/plugin_rest_reclaim.c:1079 6063#: src/rest-plugins/plugin_rest_reclaim.c:1079
6143#, fuzzy 6064#, fuzzy
6144msgid "Identity Provider REST API initialized\n" 6065msgid "Identity Provider REST API initialized\n"
6145msgstr " Anslutning misslyckades\n" 6066msgstr " Anslutning misslyckades\n"
6146 6067
6147#: src/rest-plugins/plugin_rest_peerinfo.c:794 6068#: src/rest-plugins/plugin_rest_peerinfo.c:796
6148#, fuzzy 6069#, fuzzy
6149msgid "Peerinfo REST API initialized\n" 6070msgid "Peerinfo REST API initialized\n"
6150msgstr " Anslutning misslyckades\n" 6071msgstr " Anslutning misslyckades\n"
6151 6072
6152#: src/revocation/gnunet-revocation.c:127 6073#: src/revocation/gnunet-revocation.c:129
6153#, fuzzy, c-format 6074#, fuzzy, c-format
6154msgid "Key `%s' is valid\n" 6075msgid "Key `%s' is valid\n"
6155msgstr "Formatet på pseudonym \"%s\" är ogiltig.\n" 6076msgstr "Formatet på pseudonym \"%s\" är ogiltig.\n"
6156 6077
6157#: src/revocation/gnunet-revocation.c:132 6078#: src/revocation/gnunet-revocation.c:134
6158#, fuzzy, c-format 6079#, fuzzy, c-format
6159msgid "Key `%s' has been revoked\n" 6080msgid "Key `%s' has been revoked\n"
6160msgstr "Tjänst borttagen.\n" 6081msgstr "Tjänst borttagen.\n"
6161 6082
6162#: src/revocation/gnunet-revocation.c:138 6083#: src/revocation/gnunet-revocation.c:140
6163#, fuzzy 6084#, fuzzy
6164msgid "Internal error\n" 6085msgid "Internal error\n"
6165msgstr "Okänt fel.\n" 6086msgstr "Okänt fel.\n"
6166 6087
6167#: src/revocation/gnunet-revocation.c:164 6088#: src/revocation/gnunet-revocation.c:166
6168#, c-format 6089#, c-format
6169msgid "Key for ego `%s' is still valid, revocation failed (!)\n" 6090msgid "Key for ego `%s' is still valid, revocation failed (!)\n"
6170msgstr "" 6091msgstr ""
6171 6092
6172#: src/revocation/gnunet-revocation.c:169 6093#: src/revocation/gnunet-revocation.c:171
6173#, fuzzy 6094#, fuzzy
6174msgid "Revocation failed (!)\n" 6095msgid "Revocation failed (!)\n"
6175msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 6096msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
6176 6097
6177#: src/revocation/gnunet-revocation.c:174 6098#: src/revocation/gnunet-revocation.c:176
6178#, c-format 6099#, c-format
6179msgid "Key for ego `%s' has been successfully revoked\n" 6100msgid "Key for ego `%s' has been successfully revoked\n"
6180msgstr "" 6101msgstr ""
6181 6102
6182#: src/revocation/gnunet-revocation.c:179 6103#: src/revocation/gnunet-revocation.c:181
6183msgid "Revocation successful.\n" 6104msgid "Revocation successful.\n"
6184msgstr "" 6105msgstr ""
6185 6106
6186#: src/revocation/gnunet-revocation.c:184 6107#: src/revocation/gnunet-revocation.c:186
6187msgid "Internal error, key revocation might have failed\n" 6108msgid "Internal error, key revocation might have failed\n"
6188msgstr "" 6109msgstr ""
6189 6110
6190#: src/revocation/gnunet-revocation.c:321 6111#: src/revocation/gnunet-revocation.c:323
6191#, c-format 6112#, c-format
6192msgid "Revocation certificate for `%s' stored in `%s'\n" 6113msgid "Revocation certificate for `%s' stored in `%s'\n"
6193msgstr "" 6114msgstr ""
6194 6115
6195#: src/revocation/gnunet-revocation.c:350 6116#: src/revocation/gnunet-revocation.c:352
6196#, fuzzy, c-format 6117#, fuzzy, c-format
6197msgid "Ego `%s' not found.\n" 6118msgid "Ego `%s' not found.\n"
6198msgstr "\"%s\" misslyckades: tabell hittades inte!\n" 6119msgstr "\"%s\" misslyckades: tabell hittades inte!\n"
6199 6120
6200#: src/revocation/gnunet-revocation.c:371 6121#: src/revocation/gnunet-revocation.c:373
6201#, c-format 6122#, c-format
6202msgid "Error: revocation certificate in `%s' is not for `%s'\n" 6123msgid "Error: revocation certificate in `%s' is not for `%s'\n"
6203msgstr "" 6124msgstr ""
6204 6125
6205#: src/revocation/gnunet-revocation.c:391 6126#: src/revocation/gnunet-revocation.c:393
6206msgid "Revocation certificate ready\n" 6127msgid "Revocation certificate ready\n"
6207msgstr "" 6128msgstr ""
6208 6129
6209#: src/revocation/gnunet-revocation.c:401 6130#: src/revocation/gnunet-revocation.c:403
6210msgid "Revocation certificate not ready, calculating proof of work\n" 6131msgid "Revocation certificate not ready, calculating proof of work\n"
6211msgstr "" 6132msgstr ""
6212 6133
6213#: src/revocation/gnunet-revocation.c:435 src/social/gnunet-social.c:1178 6134#: src/revocation/gnunet-revocation.c:437
6214#, fuzzy, c-format 6135#, fuzzy, c-format
6215msgid "Public key `%s' malformed\n" 6136msgid "Public key `%s' malformed\n"
6216msgstr "Ogiltigt argument: \"%s\"\n" 6137msgstr "Ogiltigt argument: \"%s\"\n"
6217 6138
6218#: src/revocation/gnunet-revocation.c:448 6139#: src/revocation/gnunet-revocation.c:450
6219msgid "" 6140msgid ""
6220"Testing and revoking at the same time is not allowed, only executing test.\n" 6141"Testing and revoking at the same time is not allowed, only executing test.\n"
6221msgstr "" 6142msgstr ""
6222 6143
6223#: src/revocation/gnunet-revocation.c:468 6144#: src/revocation/gnunet-revocation.c:470
6224#, fuzzy 6145#, fuzzy
6225msgid "No filename to store revocation certificate given.\n" 6146msgid "No filename to store revocation certificate given.\n"
6226msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 6147msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
6227 6148
6228#: src/revocation/gnunet-revocation.c:489 6149#: src/revocation/gnunet-revocation.c:491
6229#, fuzzy, c-format 6150#, fuzzy, c-format
6230msgid "Failed to read revocation certificate from `%s'\n" 6151msgid "Failed to read revocation certificate from `%s'\n"
6231msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 6152msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
6232 6153
6233#: src/revocation/gnunet-revocation.c:514 6154#: src/revocation/gnunet-revocation.c:516
6234#, fuzzy 6155#, fuzzy
6235msgid "No action specified. Nothing to do.\n" 6156msgid "No action specified. Nothing to do.\n"
6236msgstr "Inget tabellnamn angivet, använder \"%s\".\n" 6157msgstr "Inget tabellnamn angivet, använder \"%s\".\n"
6237 6158
6238#: src/revocation/gnunet-revocation.c:533 6159#: src/revocation/gnunet-revocation.c:535
6239msgid "use NAME for the name of the revocation file" 6160msgid "use NAME for the name of the revocation file"
6240msgstr "" 6161msgstr ""
6241 6162
6242#: src/revocation/gnunet-revocation.c:539 6163#: src/revocation/gnunet-revocation.c:541
6243msgid "" 6164msgid ""
6244"revoke the private key associated for the the private key associated with " 6165"revoke the private key associated for the the private key associated with "
6245"the ego NAME " 6166"the ego NAME "
6246msgstr "" 6167msgstr ""
6247 6168
6248#: src/revocation/gnunet-revocation.c:544 6169#: src/revocation/gnunet-revocation.c:546
6249msgid "actually perform revocation, otherwise we just do the precomputation" 6170msgid "actually perform revocation, otherwise we just do the precomputation"
6250msgstr "" 6171msgstr ""
6251 6172
6252#: src/revocation/gnunet-revocation.c:550 6173#: src/revocation/gnunet-revocation.c:552
6253msgid "test if the public key KEY has been revoked" 6174msgid "test if the public key KEY has been revoked"
6254msgstr "" 6175msgstr ""
6255 6176
6256#: src/revocation/gnunet-service-revocation.c:457 6177#: src/revocation/gnunet-service-revocation.c:459
6257#, fuzzy 6178#, fuzzy
6258msgid "# unsupported revocations received via set union" 6179msgid "# unsupported revocations received via set union"
6259msgstr "# byte mottogs via TCP" 6180msgstr "# byte mottogs via TCP"
6260 6181
6261#: src/revocation/gnunet-service-revocation.c:466 6182#: src/revocation/gnunet-service-revocation.c:468
6262#, fuzzy 6183#, fuzzy
6263msgid "# revocation messages received via set union" 6184msgid "# revocation messages received via set union"
6264msgstr "# krypterade PONG-meddelanden mottagna" 6185msgstr "# krypterade PONG-meddelanden mottagna"
6265 6186
6266#: src/revocation/gnunet-service-revocation.c:471 6187#: src/revocation/gnunet-service-revocation.c:473
6267#, c-format 6188#, c-format
6268msgid "Error computing revocation set union with %s\n" 6189msgid "Error computing revocation set union with %s\n"
6269msgstr "" 6190msgstr ""
6270 6191
6271#: src/revocation/gnunet-service-revocation.c:475 6192#: src/revocation/gnunet-service-revocation.c:477
6272#, fuzzy 6193#, fuzzy
6273msgid "# revocation set unions failed" 6194msgid "# revocation set unions failed"
6274msgstr "# sessionsnycklar accepterade" 6195msgstr "# sessionsnycklar accepterade"
6275 6196
6276#: src/revocation/gnunet-service-revocation.c:484 6197#: src/revocation/gnunet-service-revocation.c:486
6277#, fuzzy 6198#, fuzzy
6278msgid "# revocation set unions completed" 6199msgid "# revocation set unions completed"
6279msgstr "# klartext PONG-meddelanden mottagna" 6200msgstr "# klartext PONG-meddelanden mottagna"
6280 6201
6281#: src/revocation/gnunet-service-revocation.c:523 6202#: src/revocation/gnunet-service-revocation.c:525
6282msgid "SET service crashed, terminating revocation service\n" 6203msgid "SET service crashed, terminating revocation service\n"
6283msgstr "" 6204msgstr ""
6284 6205
6285#: src/revocation/gnunet-service-revocation.c:865 6206#: src/revocation/gnunet-service-revocation.c:867
6286#, fuzzy 6207#, fuzzy
6287msgid "Could not open revocation database file!" 6208msgid "Could not open revocation database file!"
6288msgstr "Kunde inte ansluta till gnunetd.\n" 6209msgstr "Kunde inte ansluta till gnunetd.\n"
6289 6210
6290#: src/rps/gnunet-rps.c:258 6211#: src/rps/gnunet-rps.c:260
6291msgid "Seed a PeerID" 6212msgid "Seed a PeerID"
6292msgstr "" 6213msgstr ""
6293 6214
6294#: src/rps/gnunet-rps.c:262 6215#: src/rps/gnunet-rps.c:264
6295msgid "Get updates of view (0 for infinite updates)" 6216msgid "Get updates of view (0 for infinite updates)"
6296msgstr "" 6217msgstr ""
6297 6218
6298#: src/rps/gnunet-rps.c:266 6219#: src/rps/gnunet-rps.c:268
6299msgid "Get peers from biased stream" 6220msgid "Get peers from biased stream"
6300msgstr "" 6221msgstr ""
6301 6222
6302#: src/rps/gnunet-rps-profiler.c:2770 6223#: src/rps/gnunet-rps-profiler.c:2959
6303msgid "duration of the profiling" 6224msgid "duration of the profiling"
6304msgstr "" 6225msgstr ""
6305 6226
6306#: src/rps/gnunet-rps-profiler.c:2776 6227#: src/rps/gnunet-rps-profiler.c:2965
6307#, fuzzy 6228#, fuzzy
6308msgid "timeout for the profiling" 6229msgid "timeout for the profiling"
6309msgstr "ange prioritet för innehållet" 6230msgstr "ange prioritet för innehållet"
6310 6231
6311#: src/rps/gnunet-rps-profiler.c:2782 6232#: src/rps/gnunet-rps-profiler.c:2971
6312#, fuzzy 6233#, fuzzy
6313msgid "number of PeerIDs to request" 6234msgid "number of PeerIDs to request"
6314msgstr "antal iterationer" 6235msgstr "antal iterationer"
6315 6236
6316#: src/rps/gnunet-rps-profiler.c:2797 6237#: src/rps/gnunet-rps-profiler.c:2986
6317#, fuzzy 6238#, fuzzy
6318msgid "Measure quality and performance of the RPS service." 6239msgid "Measure quality and performance of the RPS service."
6319msgstr "Kan inte tillgå tjänsten" 6240msgstr "Kan inte tillgå tjänsten"
6320 6241
6321#: src/scalarproduct/gnunet-scalarproduct.c:218 6242#: src/scalarproduct/gnunet-scalarproduct.c:220
6322#, fuzzy 6243#, fuzzy
6323msgid "You must specify at least one message ID to check!\n" 6244msgid "You must specify at least one message ID to check!\n"
6324msgstr "Du måste ange en lista av filer att lägga in.\n" 6245msgstr "Du måste ange en lista av filer att lägga in.\n"
6325 6246
6326#: src/scalarproduct/gnunet-scalarproduct.c:225 6247#: src/scalarproduct/gnunet-scalarproduct.c:227
6327msgid "This program needs a session identifier for comparing vectors.\n" 6248msgid "This program needs a session identifier for comparing vectors.\n"
6328msgstr "" 6249msgstr ""
6329 6250
6330#: src/scalarproduct/gnunet-scalarproduct.c:238 6251#: src/scalarproduct/gnunet-scalarproduct.c:240
6331#, c-format 6252#, c-format
6332msgid "" 6253msgid ""
6333"Tried to set initiator mode, as peer ID was given. However, `%s' is not a " 6254"Tried to set initiator mode, as peer ID was given. However, `%s' is not a "
6334"valid peer identifier.\n" 6255"valid peer identifier.\n"
6335msgstr "" 6256msgstr ""
6336 6257
6337#: src/scalarproduct/gnunet-scalarproduct.c:256 6258#: src/scalarproduct/gnunet-scalarproduct.c:258
6338msgid "Need elements to compute the scalarproduct, got none.\n" 6259msgid "Need elements to compute the scalarproduct, got none.\n"
6339msgstr "" 6260msgstr ""
6340 6261
6341#: src/scalarproduct/gnunet-scalarproduct.c:278 6262#: src/scalarproduct/gnunet-scalarproduct.c:280
6342#, fuzzy, c-format 6263#, fuzzy, c-format
6343msgid "Malformed input, could not parse `%s'\n" 6264msgid "Malformed input, could not parse `%s'\n"
6344msgstr "Misslyckades att starta samling.\n" 6265msgstr "Misslyckades att starta samling.\n"
6345 6266
6346#: src/scalarproduct/gnunet-scalarproduct.c:296 6267#: src/scalarproduct/gnunet-scalarproduct.c:298
6347#, fuzzy, c-format 6268#, fuzzy, c-format
6348msgid "Could not convert `%s' to int64_t.\n" 6269msgid "Could not convert `%s' to int64_t.\n"
6349msgstr "Kunde inte ansluta till gnunetd.\n" 6270msgstr "Kunde inte ansluta till gnunetd.\n"
6350 6271
6351#: src/scalarproduct/gnunet-scalarproduct.c:323 6272#: src/scalarproduct/gnunet-scalarproduct.c:325
6352#, c-format 6273#, c-format
6353msgid "Failed to initiate computation, were all keys unique?\n" 6274msgid "Failed to initiate computation, were all keys unique?\n"
6354msgstr "" 6275msgstr ""
6355 6276
6356#: src/scalarproduct/gnunet-scalarproduct.c:349 6277#: src/scalarproduct/gnunet-scalarproduct.c:351
6357#: src/scalarproduct/gnunet-scalarproduct.c:355 6278#: src/scalarproduct/gnunet-scalarproduct.c:357
6358msgid "" 6279msgid ""
6359"A comma separated list of elements to compare as vector with our remote peer." 6280"A comma separated list of elements to compare as vector with our remote peer."
6360msgstr "" 6281msgstr ""
6361 6282
6362#: src/scalarproduct/gnunet-scalarproduct.c:361 6283#: src/scalarproduct/gnunet-scalarproduct.c:363
6363msgid "" 6284msgid ""
6364"[Optional] peer to calculate our scalarproduct with. If this parameter is " 6285"[Optional] peer to calculate our scalarproduct with. If this parameter is "
6365"not given, the service will wait for a remote peer to compute the request." 6286"not given, the service will wait for a remote peer to compute the request."
6366msgstr "" 6287msgstr ""
6367 6288
6368#: src/scalarproduct/gnunet-scalarproduct.c:367 6289#: src/scalarproduct/gnunet-scalarproduct.c:369
6369msgid "Transaction ID shared with peer." 6290msgid "Transaction ID shared with peer."
6370msgstr "" 6291msgstr ""
6371 6292
6372#: src/scalarproduct/gnunet-scalarproduct.c:377 6293#: src/scalarproduct/gnunet-scalarproduct.c:379
6373msgid "Calculate the Vectorproduct with a GNUnet peer." 6294msgid "Calculate the Vectorproduct with a GNUnet peer."
6374msgstr "" 6295msgstr ""
6375 6296
6376#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1399 6297#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
6377#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1343 6298#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
6378#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1170 6299#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
6379#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1061 6300#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
6380#, fuzzy 6301#, fuzzy
6381msgid "Connect to CADET failed\n" 6302msgid "Connect to CADET failed\n"
6382msgstr " Anslutning misslyckades (fel?)\n" 6303msgstr " Anslutning misslyckades (fel?)\n"
6383 6304
6384#: src/scalarproduct/scalarproduct_api.c:183 6305#: src/scalarproduct/scalarproduct_api.c:185
6385msgid "Keys given to SCALARPRODUCT not unique!\n" 6306msgid "Keys given to SCALARPRODUCT not unique!\n"
6386msgstr "" 6307msgstr ""
6387 6308
6388#: src/secretsharing/gnunet-secretsharing-profiler.c:614 6309#: src/secretsharing/gnunet-secretsharing-profiler.c:616
6389msgid "dkg start delay" 6310msgid "dkg start delay"
6390msgstr "" 6311msgstr ""
6391 6312
6392#: src/secretsharing/gnunet-secretsharing-profiler.c:620 6313#: src/secretsharing/gnunet-secretsharing-profiler.c:622
6393msgid "dkg timeout" 6314msgid "dkg timeout"
6394msgstr "" 6315msgstr ""
6395 6316
6396#: src/secretsharing/gnunet-secretsharing-profiler.c:626 6317#: src/secretsharing/gnunet-secretsharing-profiler.c:628
6397msgid "threshold" 6318msgid "threshold"
6398msgstr "" 6319msgstr ""
6399 6320
6400#: src/secretsharing/gnunet-secretsharing-profiler.c:631 6321#: src/secretsharing/gnunet-secretsharing-profiler.c:633
6401msgid "also profile decryption" 6322msgid "also profile decryption"
6402msgstr "" 6323msgstr ""
6403 6324
6404#: src/set/gnunet-service-set.c:2004 6325#: src/set/gnunet-service-set.c:2005
6405#, fuzzy 6326#, fuzzy
6406msgid "Could not connect to CADET service\n" 6327msgid "Could not connect to CADET service\n"
6407msgstr "Kunde inte ansluta till gnunetd.\n" 6328msgstr "Kunde inte ansluta till gnunetd.\n"
6408 6329
6409#: src/set/gnunet-set-ibf-profiler.c:250 6330#: src/set/gnunet-set-ibf-profiler.c:252
6410#, fuzzy 6331#, fuzzy
6411msgid "number of element in set A-B" 6332msgid "number of element in set A-B"
6412msgstr "antal iterationer" 6333msgstr "antal iterationer"
6413 6334
6414#: src/set/gnunet-set-ibf-profiler.c:256 6335#: src/set/gnunet-set-ibf-profiler.c:258
6415#, fuzzy 6336#, fuzzy
6416msgid "number of element in set B-A" 6337msgid "number of element in set B-A"
6417msgstr "antal iterationer" 6338msgstr "antal iterationer"
6418 6339
6419#: src/set/gnunet-set-ibf-profiler.c:262 6340#: src/set/gnunet-set-ibf-profiler.c:264
6420msgid "number of common elements in A and B" 6341msgid "number of common elements in A and B"
6421msgstr "" 6342msgstr ""
6422 6343
6423#: src/set/gnunet-set-ibf-profiler.c:268 6344#: src/set/gnunet-set-ibf-profiler.c:270
6424msgid "hash num" 6345msgid "hash num"
6425msgstr "" 6346msgstr ""
6426 6347
6427#: src/set/gnunet-set-ibf-profiler.c:274 6348#: src/set/gnunet-set-ibf-profiler.c:276
6428msgid "ibf size" 6349msgid "ibf size"
6429msgstr "" 6350msgstr ""
6430 6351
6431#: src/set/gnunet-set-profiler.c:442 6352#: src/set/gnunet-set-profiler.c:444
6432msgid "use byzantine mode" 6353msgid "use byzantine mode"
6433msgstr "" 6354msgstr ""
6434 6355
6435#: src/set/gnunet-set-profiler.c:448 6356#: src/set/gnunet-set-profiler.c:450
6436msgid "force sending full set" 6357msgid "force sending full set"
6437msgstr "" 6358msgstr ""
6438 6359
6439#: src/set/gnunet-set-profiler.c:454 6360#: src/set/gnunet-set-profiler.c:456
6440msgid "number delta operation" 6361msgid "number delta operation"
6441msgstr "" 6362msgstr ""
6442 6363
6443#: src/set/gnunet-set-profiler.c:466 6364#: src/set/gnunet-set-profiler.c:468
6444msgid "operation to execute" 6365msgid "operation to execute"
6445msgstr "" 6366msgstr ""
6446 6367
6447#: src/set/gnunet-set-profiler.c:472 6368#: src/set/gnunet-set-profiler.c:474
6448msgid "element size" 6369msgid "element size"
6449msgstr "" 6370msgstr ""
6450 6371
6451#: src/social/gnunet-social.c:1164 6372#: src/sq/sq.c:54
6452#, fuzzy
6453msgid "--place missing or invalid.\n"
6454msgstr "Ogiltigt argument: \"%s\"\n"
6455
6456#: src/social/gnunet-social.c:1215
6457msgid "assign --name in state to --data"
6458msgstr ""
6459
6460#: src/social/gnunet-social.c:1220
6461msgid "say good-bye and leave somebody else's place"
6462msgstr ""
6463
6464#: src/social/gnunet-social.c:1225
6465msgid "create a place"
6466msgstr ""
6467
6468#: src/social/gnunet-social.c:1230
6469msgid "destroy a place we were hosting"
6470msgstr ""
6471
6472#: src/social/gnunet-social.c:1235
6473msgid "enter somebody else's place"
6474msgstr ""
6475
6476#: src/social/gnunet-social.c:1241
6477msgid "find state matching name prefix"
6478msgstr ""
6479
6480#: src/social/gnunet-social.c:1246
6481msgid "replay history of messages up to the given --limit"
6482msgstr ""
6483
6484#: src/social/gnunet-social.c:1251
6485msgid "reconnect to a previously created place"
6486msgstr ""
6487
6488#: src/social/gnunet-social.c:1256
6489msgid "publish something to a place we are hosting"
6490msgstr ""
6491
6492#: src/social/gnunet-social.c:1261
6493msgid "reconnect to a previously entered place"
6494msgstr ""
6495
6496#: src/social/gnunet-social.c:1266
6497msgid "search for state matching exact name"
6498msgstr ""
6499
6500#: src/social/gnunet-social.c:1271
6501msgid "submit something to somebody's place"
6502msgstr ""
6503
6504#: src/social/gnunet-social.c:1276
6505msgid "list of egos and subscribed places"
6506msgstr ""
6507
6508#: src/social/gnunet-social.c:1281
6509msgid "extract and replay history between message IDs --start and --until"
6510msgstr ""
6511
6512#: src/social/gnunet-social.c:1290
6513msgid "application ID to use when connecting"
6514msgstr ""
6515
6516#: src/social/gnunet-social.c:1296
6517msgid "message body or state value"
6518msgstr ""
6519
6520#: src/social/gnunet-social.c:1302
6521#, fuzzy
6522msgid "name or public key of ego"
6523msgstr "Ogiltigt argument: \"%s\"\n"
6524
6525#: src/social/gnunet-social.c:1307
6526#, fuzzy
6527msgid "wait for incoming messages"
6528msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
6529
6530#: src/social/gnunet-social.c:1313
6531#, fuzzy
6532msgid "GNS name"
6533msgstr "Visa _namn"
6534
6535#: src/social/gnunet-social.c:1319
6536msgid "peer ID for --guest-enter"
6537msgstr ""
6538
6539#: src/social/gnunet-social.c:1325
6540msgid "name (key) to query from state"
6541msgstr ""
6542
6543#: src/social/gnunet-social.c:1331
6544#, fuzzy
6545msgid "method name"
6546msgstr "Visa _namn"
6547
6548#: src/social/gnunet-social.c:1337
6549#, fuzzy
6550msgid "number of messages to replay from history"
6551msgstr "antal meddelanden att använda per iteration"
6552
6553#: src/social/gnunet-social.c:1343
6554msgid "key address of place"
6555msgstr ""
6556
6557#: src/social/gnunet-social.c:1349
6558msgid "start message ID for history replay"
6559msgstr ""
6560
6561#: src/social/gnunet-social.c:1354
6562msgid "respond to entry requests by admitting all guests"
6563msgstr ""
6564
6565#: src/social/gnunet-social.c:1360
6566msgid "end message ID for history replay"
6567msgstr ""
6568
6569#: src/social/gnunet-social.c:1365
6570msgid "respond to entry requests by refusing all guests"
6571msgstr ""
6572
6573#: src/social/gnunet-social.c:1375
6574msgid ""
6575"gnunet-social - Interact with the social service: enter/leave, send/receive "
6576"messages, access history and state.\n"
6577msgstr ""
6578
6579#: src/sq/sq.c:52
6580#, c-format 6373#, c-format
6581msgid "Failure to bind %u-th SQL parameter\n" 6374msgid "Failure to bind %u-th SQL parameter\n"
6582msgstr "" 6375msgstr ""
6583 6376
6584#: src/sq/sq.c:59 6377#: src/sq/sq.c:61
6585msgid "Failure in sqlite3_reset (!)\n" 6378msgid "Failure in sqlite3_reset (!)\n"
6586msgstr "" 6379msgstr ""
6587 6380
6588#: src/sq/sq.c:137 6381#: src/sq/sq.c:139
6589#, fuzzy, c-format 6382#, fuzzy, c-format
6590msgid "Failed to reset sqlite statement with error: %s\n" 6383msgid "Failed to reset sqlite statement with error: %s\n"
6591msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n" 6384msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
6592 6385
6593#: src/statistics/gnunet-service-statistics.c:336 6386#: src/statistics/gnunet-service-statistics.c:338
6594#, fuzzy, c-format 6387#, fuzzy, c-format
6595msgid "Wrote %llu bytes of statistics to `%s'\n" 6388msgid "Wrote %llu bytes of statistics to `%s'\n"
6596msgstr "Ladda ner filer från GNUnet." 6389msgstr "Ladda ner filer från GNUnet."
6597 6390
6598#: src/statistics/gnunet-service-statistics.c:1084 6391#: src/statistics/gnunet-service-statistics.c:1086
6599#, fuzzy, c-format 6392#, fuzzy, c-format
6600msgid "Loading %llu bytes of statistics from `%s'\n" 6393msgid "Loading %llu bytes of statistics from `%s'\n"
6601msgstr "Ladda ner filer från GNUnet." 6394msgstr "Ladda ner filer från GNUnet."
6602 6395
6603#: src/statistics/gnunet-statistics.c:407 6396#: src/statistics/gnunet-statistics.c:409
6604#: src/statistics/gnunet-statistics.c:448 6397#: src/statistics/gnunet-statistics.c:450
6605#, fuzzy 6398#, fuzzy
6606msgid "Failed to obtain statistics.\n" 6399msgid "Failed to obtain statistics.\n"
6607msgstr "Misslyckades att binda till UDP-port %d.\n" 6400msgstr "Misslyckades att binda till UDP-port %d.\n"
6608 6401
6609#: src/statistics/gnunet-statistics.c:410 6402#: src/statistics/gnunet-statistics.c:412
6610#: src/statistics/gnunet-statistics.c:451 6403#: src/statistics/gnunet-statistics.c:453
6611#, fuzzy, c-format 6404#, fuzzy, c-format
6612msgid "Failed to obtain statistics from host `%s:%llu'\n" 6405msgid "Failed to obtain statistics from host `%s:%llu'\n"
6613msgstr "Misslyckades att binda till UDP-port %d.\n" 6406msgstr "Misslyckades att binda till UDP-port %d.\n"
6614 6407
6615#: src/statistics/gnunet-statistics.c:526 6408#: src/statistics/gnunet-statistics.c:528
6616msgid "Missing argument: subsystem \n" 6409msgid "Missing argument: subsystem \n"
6617msgstr "" 6410msgstr ""
6618 6411
6619#: src/statistics/gnunet-statistics.c:534 6412#: src/statistics/gnunet-statistics.c:536
6620msgid "Missing argument: name\n" 6413msgid "Missing argument: name\n"
6621msgstr "" 6414msgstr ""
6622 6415
6623#: src/statistics/gnunet-statistics.c:577 6416#: src/statistics/gnunet-statistics.c:579
6624#, c-format 6417#, c-format
6625msgid "No subsystem or name given\n" 6418msgid "No subsystem or name given\n"
6626msgstr "" 6419msgstr ""
6627 6420
6628#: src/statistics/gnunet-statistics.c:592 6421#: src/statistics/gnunet-statistics.c:594
6629#, fuzzy, c-format 6422#, fuzzy, c-format
6630msgid "Failed to initialize watch routine\n" 6423msgid "Failed to initialize watch routine\n"
6631msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 6424msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
6632 6425
6633#: src/statistics/gnunet-statistics.c:727 6426#: src/statistics/gnunet-statistics.c:729
6634#, fuzzy, c-format 6427#, fuzzy, c-format
6635msgid "Invalid argument `%s'\n" 6428msgid "Invalid argument `%s'\n"
6636msgstr "Ogiltigt argument: \"%s\"\n" 6429msgstr "Ogiltigt argument: \"%s\"\n"
6637 6430
6638#: src/statistics/gnunet-statistics.c:745 6431#: src/statistics/gnunet-statistics.c:747
6639#, fuzzy, c-format 6432#, fuzzy, c-format
6640msgid "A port is required to connect to host `%s'\n" 6433msgid "A port is required to connect to host `%s'\n"
6641msgstr "Kan inte ansluta till %u.%u.%u.%u:%u: %s\n" 6434msgstr "Kan inte ansluta till %u.%u.%u.%u:%u: %s\n"
6642 6435
6643#: src/statistics/gnunet-statistics.c:753 6436#: src/statistics/gnunet-statistics.c:755
6644#, c-format 6437#, c-format
6645msgid "A port has to be between 1 and 65535 to connect to host `%s'\n" 6438msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
6646msgstr "" 6439msgstr ""
6647 6440
6648#: src/statistics/gnunet-statistics.c:784 6441#: src/statistics/gnunet-statistics.c:786
6649#, c-format 6442#, c-format
6650msgid "Not able to watch testbed nodes (yet - feel free to implement)\n" 6443msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
6651msgstr "" 6444msgstr ""
6652 6445
6653#: src/statistics/gnunet-statistics.c:817 6446#: src/statistics/gnunet-statistics.c:819
6654msgid "limit output to statistics for the given NAME" 6447msgid "limit output to statistics for the given NAME"
6655msgstr "" 6448msgstr ""
6656 6449
6657#: src/statistics/gnunet-statistics.c:822 6450#: src/statistics/gnunet-statistics.c:824
6658msgid "make the value being set persistent" 6451msgid "make the value being set persistent"
6659msgstr "" 6452msgstr ""
6660 6453
6661#: src/statistics/gnunet-statistics.c:828 6454#: src/statistics/gnunet-statistics.c:830
6662msgid "limit output to the given SUBSYSTEM" 6455msgid "limit output to the given SUBSYSTEM"
6663msgstr "" 6456msgstr ""
6664 6457
6665#: src/statistics/gnunet-statistics.c:834 6458#: src/statistics/gnunet-statistics.c:836
6666msgid "use as csv separator" 6459msgid "use as csv separator"
6667msgstr "" 6460msgstr ""
6668 6461
6669#: src/statistics/gnunet-statistics.c:840 6462#: src/statistics/gnunet-statistics.c:842
6670msgid "path to the folder containing the testbed data" 6463msgid "path to the folder containing the testbed data"
6671msgstr "" 6464msgstr ""
6672 6465
6673#: src/statistics/gnunet-statistics.c:845 6466#: src/statistics/gnunet-statistics.c:847
6674msgid "just print the statistics value" 6467msgid "just print the statistics value"
6675msgstr "" 6468msgstr ""
6676 6469
6677#: src/statistics/gnunet-statistics.c:850 6470#: src/statistics/gnunet-statistics.c:852
6678msgid "watch value continuously" 6471msgid "watch value continuously"
6679msgstr "" 6472msgstr ""
6680 6473
6681#: src/statistics/gnunet-statistics.c:856 6474#: src/statistics/gnunet-statistics.c:858
6682msgid "connect to remote host" 6475msgid "connect to remote host"
6683msgstr "" 6476msgstr ""
6684 6477
6685#: src/statistics/gnunet-statistics.c:862 6478#: src/statistics/gnunet-statistics.c:864
6686msgid "port for remote host" 6479msgid "port for remote host"
6687msgstr "" 6480msgstr ""
6688 6481
6689#: src/statistics/gnunet-statistics.c:879 6482#: src/statistics/gnunet-statistics.c:881
6690msgid "Print statistics about GNUnet operations." 6483msgid "Print statistics about GNUnet operations."
6691msgstr "Skriv ut statistik om GNUnet-operationer." 6484msgstr "Skriv ut statistik om GNUnet-operationer."
6692 6485
6693#: src/statistics/statistics_api.c:751 6486#: src/statistics/statistics_api.c:753
6694#, fuzzy 6487#, fuzzy
6695msgid "Could not save some persistent statistics\n" 6488msgid "Could not save some persistent statistics\n"
6696msgstr "Kunde inte skapa värdnyckel!\n" 6489msgstr "Kunde inte skapa värdnyckel!\n"
6697 6490
6698#: src/testbed/generate-underlay-topology.c:223 6491#: src/testbed/generate-underlay-topology.c:225
6699#, fuzzy 6492#, fuzzy
6700msgid "Need at least 2 arguments\n" 6493msgid "Need at least 2 arguments\n"
6701msgstr "Du måste ange en och endast en fil att avindexera.\n" 6494msgstr "Du måste ange en och endast en fil att avindexera.\n"
6702 6495
6703#: src/testbed/generate-underlay-topology.c:228 6496#: src/testbed/generate-underlay-topology.c:230
6704msgid "Database filename missing\n" 6497msgid "Database filename missing\n"
6705msgstr "" 6498msgstr ""
6706 6499
6707#: src/testbed/generate-underlay-topology.c:235 6500#: src/testbed/generate-underlay-topology.c:237
6708msgid "Topology string missing\n" 6501msgid "Topology string missing\n"
6709msgstr "" 6502msgstr ""
6710 6503
6711#: src/testbed/generate-underlay-topology.c:240 6504#: src/testbed/generate-underlay-topology.c:242
6712#, fuzzy, c-format 6505#, fuzzy, c-format
6713msgid "Invalid topology: %s\n" 6506msgid "Invalid topology: %s\n"
6714msgstr "Ogiltigt argument: \"%s\"\n" 6507msgstr "Ogiltigt argument: \"%s\"\n"
6715 6508
6716#: src/testbed/generate-underlay-topology.c:253 6509#: src/testbed/generate-underlay-topology.c:255
6717#, c-format 6510#, c-format
6718msgid "An argument is missing for given topology `%s'\n" 6511msgid "An argument is missing for given topology `%s'\n"
6719msgstr "" 6512msgstr ""
6720 6513
6721#: src/testbed/generate-underlay-topology.c:259 6514#: src/testbed/generate-underlay-topology.c:261
6722#, fuzzy, c-format 6515#, fuzzy, c-format
6723msgid "Invalid argument `%s' given as topology argument\n" 6516msgid "Invalid argument `%s' given as topology argument\n"
6724msgstr "Ogiltigt argument: \"%s\"\n" 6517msgstr "Ogiltigt argument: \"%s\"\n"
6725 6518
6726#: src/testbed/generate-underlay-topology.c:267 6519#: src/testbed/generate-underlay-topology.c:269
6727#, c-format 6520#, c-format
6728msgid "Filename argument missing for topology `%s'\n" 6521msgid "Filename argument missing for topology `%s'\n"
6729msgstr "" 6522msgstr ""
6730 6523
6731#: src/testbed/generate-underlay-topology.c:281 6524#: src/testbed/generate-underlay-topology.c:283
6732#, c-format 6525#, c-format
6733msgid "Second argument for topology `%s' is missing\n" 6526msgid "Second argument for topology `%s' is missing\n"
6734msgstr "" 6527msgstr ""
6735 6528
6736#: src/testbed/generate-underlay-topology.c:287 6529#: src/testbed/generate-underlay-topology.c:289
6737#, fuzzy, c-format 6530#, fuzzy, c-format
6738msgid "Invalid argument `%s'; expecting unsigned int\n" 6531msgid "Invalid argument `%s'; expecting unsigned int\n"
6739msgstr "Ogiltigt argument: \"%s\"\n" 6532msgstr "Ogiltigt argument: \"%s\"\n"
6740 6533
6741#: src/testbed/generate-underlay-topology.c:340 6534#: src/testbed/generate-underlay-topology.c:342
6742#: src/testbed/gnunet-testbed-profiler.c:281 6535#: src/testbed/gnunet-testbed-profiler.c:283
6743msgid "create COUNT number of peers" 6536msgid "create COUNT number of peers"
6744msgstr "" 6537msgstr ""
6745 6538
6746#: src/testbed/generate-underlay-topology.c:350 6539#: src/testbed/generate-underlay-topology.c:352
6747msgid "" 6540msgid ""
6748"Generates SQLite3 database representing a given underlay topology.\n" 6541"Generates SQLite3 database representing a given underlay topology.\n"
6749"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n" 6542"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n"
@@ -6767,83 +6560,83 @@ msgid ""
6767"content/topology-file-format\n" 6560"content/topology-file-format\n"
6768msgstr "" 6561msgstr ""
6769 6562
6770#: src/testbed/gnunet-daemon-latency-logger.c:313 6563#: src/testbed/gnunet-daemon-latency-logger.c:315
6771msgid "Daemon to log latency values of connections to neighbours" 6564msgid "Daemon to log latency values of connections to neighbours"
6772msgstr "" 6565msgstr ""
6773 6566
6774#: src/testbed/gnunet-daemon-testbed-blacklist.c:247 6567#: src/testbed/gnunet-daemon-testbed-blacklist.c:249
6775msgid "" 6568msgid ""
6776"Daemon to restrict incoming transport layer connections during testbed " 6569"Daemon to restrict incoming transport layer connections during testbed "
6777"deployments" 6570"deployments"
6778msgstr "" 6571msgstr ""
6779 6572
6780#: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 6573#: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
6781#: src/testing/testing.c:286 src/util/gnunet-ecc.c:310 6574#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
6782#, c-format 6575#, c-format
6783msgid "Incorrect hostkey file format: %s\n" 6576msgid "Incorrect hostkey file format: %s\n"
6784msgstr "" 6577msgstr ""
6785 6578
6786#: src/testbed/gnunet-daemon-testbed-underlay.c:469 6579#: src/testbed/gnunet-daemon-testbed-underlay.c:471
6787msgid "Daemon to restrict underlay network in testbed deployments" 6580msgid "Daemon to restrict underlay network in testbed deployments"
6788msgstr "" 6581msgstr ""
6789 6582
6790#: src/testbed/gnunet-service-testbed_cpustatus.c:726 6583#: src/testbed/gnunet-service-testbed_cpustatus.c:728
6791#, c-format 6584#, c-format
6792msgid "" 6585msgid ""
6793"Cannot open %s for writing load statistics. Not logging load statistics\n" 6586"Cannot open %s for writing load statistics. Not logging load statistics\n"
6794msgstr "" 6587msgstr ""
6795 6588
6796#: src/testbed/gnunet-service-testbed_peers.c:1157 6589#: src/testbed/gnunet-service-testbed_peers.c:1159
6797#, fuzzy, c-format 6590#, fuzzy, c-format
6798msgid "%s is stopped" 6591msgid "%s is stopped"
6799msgstr "# byte krypterade" 6592msgstr "# byte krypterade"
6800 6593
6801#: src/testbed/gnunet-service-testbed_peers.c:1159 6594#: src/testbed/gnunet-service-testbed_peers.c:1161
6802#, fuzzy, c-format 6595#, fuzzy, c-format
6803msgid "%s is starting" 6596msgid "%s is starting"
6804msgstr "\"%s\" startar\n" 6597msgstr "\"%s\" startar\n"
6805 6598
6806#: src/testbed/gnunet-service-testbed_peers.c:1161 6599#: src/testbed/gnunet-service-testbed_peers.c:1163
6807#, c-format 6600#, c-format
6808msgid "%s is stopping" 6601msgid "%s is stopping"
6809msgstr "" 6602msgstr ""
6810 6603
6811#: src/testbed/gnunet-service-testbed_peers.c:1163 6604#: src/testbed/gnunet-service-testbed_peers.c:1165
6812#, fuzzy, c-format 6605#, fuzzy, c-format
6813msgid "%s is starting already" 6606msgid "%s is starting already"
6814msgstr "\"%s\" startar\n" 6607msgstr "\"%s\" startar\n"
6815 6608
6816#: src/testbed/gnunet-service-testbed_peers.c:1165 6609#: src/testbed/gnunet-service-testbed_peers.c:1167
6817#, c-format 6610#, c-format
6818msgid "%s is stopping already" 6611msgid "%s is stopping already"
6819msgstr "" 6612msgstr ""
6820 6613
6821#: src/testbed/gnunet-service-testbed_peers.c:1167 6614#: src/testbed/gnunet-service-testbed_peers.c:1169
6822#, c-format 6615#, c-format
6823msgid "%s is started already" 6616msgid "%s is started already"
6824msgstr "" 6617msgstr ""
6825 6618
6826#: src/testbed/gnunet-service-testbed_peers.c:1169 6619#: src/testbed/gnunet-service-testbed_peers.c:1171
6827#, c-format 6620#, c-format
6828msgid "%s is stopped already" 6621msgid "%s is stopped already"
6829msgstr "" 6622msgstr ""
6830 6623
6831#: src/testbed/gnunet-service-testbed_peers.c:1171 6624#: src/testbed/gnunet-service-testbed_peers.c:1173
6832#, fuzzy, c-format 6625#, fuzzy, c-format
6833msgid "%s service is not known to ARM" 6626msgid "%s service is not known to ARM"
6834msgstr "\"%s\" är inte en fil.\n" 6627msgstr "\"%s\" är inte en fil.\n"
6835 6628
6836#: src/testbed/gnunet-service-testbed_peers.c:1173 6629#: src/testbed/gnunet-service-testbed_peers.c:1175
6837#, fuzzy, c-format 6630#, fuzzy, c-format
6838msgid "%s service failed to start" 6631msgid "%s service failed to start"
6839msgstr "Misslyckades att starta samling.\n" 6632msgstr "Misslyckades att starta samling.\n"
6840 6633
6841#: src/testbed/gnunet-service-testbed_peers.c:1175 6634#: src/testbed/gnunet-service-testbed_peers.c:1177
6842#, c-format 6635#, c-format
6843msgid "%s service can't be started because ARM is shutting down" 6636msgid "%s service can't be started because ARM is shutting down"
6844msgstr "" 6637msgstr ""
6845 6638
6846#: src/testbed/gnunet-service-testbed_peers.c:1177 6639#: src/testbed/gnunet-service-testbed_peers.c:1179
6847#, c-format 6640#, c-format
6848msgid "%.s Unknown result code." 6641msgid "%.s Unknown result code."
6849msgstr "" 6642msgstr ""
@@ -6858,176 +6651,176 @@ msgstr "Väntar på att motparter ska ansluta (%u iterationer kvar)...\n"
6858msgid "Spawning process `%s'\n" 6651msgid "Spawning process `%s'\n"
6859msgstr "Startade samling \"%s\".\n" 6652msgstr "Startade samling \"%s\".\n"
6860 6653
6861#: src/testbed/gnunet-testbed-profiler.c:287 6654#: src/testbed/gnunet-testbed-profiler.c:289
6862msgid "tolerate COUNT number of continious timeout failures" 6655msgid "tolerate COUNT number of continious timeout failures"
6863msgstr "" 6656msgstr ""
6864 6657
6865#: src/testbed/gnunet-testbed-profiler.c:292 6658#: src/testbed/gnunet-testbed-profiler.c:294
6866msgid "" 6659msgid ""
6867"run profiler in non-interactive mode where upon testbed setup the profiler " 6660"run profiler in non-interactive mode where upon testbed setup the profiler "
6868"does not wait for a keystroke but continues to run until a termination " 6661"does not wait for a keystroke but continues to run until a termination "
6869"signal is received" 6662"signal is received"
6870msgstr "" 6663msgstr ""
6871 6664
6872#: src/testbed/testbed_api.c:408 6665#: src/testbed/testbed_api.c:410
6873#, fuzzy, c-format 6666#, fuzzy, c-format
6874msgid "Adding host %u failed with error: %s\n" 6667msgid "Adding host %u failed with error: %s\n"
6875msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n" 6668msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
6876 6669
6877#: src/testbed/testbed_api_hosts.c:411 6670#: src/testbed/testbed_api_hosts.c:413
6878#, fuzzy, c-format 6671#, fuzzy, c-format
6879msgid "Hosts file %s not found\n" 6672msgid "Hosts file %s not found\n"
6880msgstr "\"%s\" misslyckades: tabell hittades inte!\n" 6673msgstr "\"%s\" misslyckades: tabell hittades inte!\n"
6881 6674
6882#: src/testbed/testbed_api_hosts.c:419 6675#: src/testbed/testbed_api_hosts.c:421
6883#, c-format 6676#, c-format
6884msgid "Hosts file %s has no data\n" 6677msgid "Hosts file %s has no data\n"
6885msgstr "" 6678msgstr ""
6886 6679
6887#: src/testbed/testbed_api_hosts.c:426 6680#: src/testbed/testbed_api_hosts.c:428
6888#, c-format 6681#, c-format
6889msgid "Hosts file %s cannot be read\n" 6682msgid "Hosts file %s cannot be read\n"
6890msgstr "" 6683msgstr ""
6891 6684
6892#: src/testbed/testbed_api_hosts.c:567 6685#: src/testbed/testbed_api_hosts.c:569
6893#, c-format 6686#, c-format
6894msgid "The function %s is only available when compiled with (--with-ll)\n" 6687msgid "The function %s is only available when compiled with (--with-ll)\n"
6895msgstr "" 6688msgstr ""
6896 6689
6897#: src/testbed/testbed_api_testbed.c:816 6690#: src/testbed/testbed_api_testbed.c:818
6898msgid "Linking controllers failed. Exiting" 6691msgid "Linking controllers failed. Exiting"
6899msgstr "" 6692msgstr ""
6900 6693
6901#: src/testbed/testbed_api_testbed.c:984 6694#: src/testbed/testbed_api_testbed.c:986
6902#, c-format 6695#, c-format
6903msgid "Host registration failed for a host. Error: %s\n" 6696msgid "Host registration failed for a host. Error: %s\n"
6904msgstr "" 6697msgstr ""
6905 6698
6906#: src/testbed/testbed_api_testbed.c:1050 6699#: src/testbed/testbed_api_testbed.c:1052
6907msgid "Controller crash detected. Shutting down.\n" 6700msgid "Controller crash detected. Shutting down.\n"
6908msgstr "" 6701msgstr ""
6909 6702
6910#: src/testbed/testbed_api_testbed.c:1139 6703#: src/testbed/testbed_api_testbed.c:1141
6911#, c-format 6704#, c-format
6912msgid "Host %s cannot start testbed\n" 6705msgid "Host %s cannot start testbed\n"
6913msgstr "" 6706msgstr ""
6914 6707
6915#: src/testbed/testbed_api_testbed.c:1143 6708#: src/testbed/testbed_api_testbed.c:1145
6916msgid "Testbed cannot be started on localhost\n" 6709msgid "Testbed cannot be started on localhost\n"
6917msgstr "" 6710msgstr ""
6918 6711
6919#: src/testbed/testbed_api_testbed.c:1181 6712#: src/testbed/testbed_api_testbed.c:1183
6920msgid "Cannot start the master controller" 6713msgid "Cannot start the master controller"
6921msgstr "" 6714msgstr ""
6922 6715
6923#: src/testbed/testbed_api_testbed.c:1199 6716#: src/testbed/testbed_api_testbed.c:1201
6924msgid "Shutting down testbed due to timeout while setup.\n" 6717msgid "Shutting down testbed due to timeout while setup.\n"
6925msgstr "" 6718msgstr ""
6926 6719
6927#: src/testbed/testbed_api_testbed.c:1259 6720#: src/testbed/testbed_api_testbed.c:1261
6928msgid "No hosts loaded from LoadLeveler. Need at least one host\n" 6721msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
6929msgstr "" 6722msgstr ""
6930 6723
6931#: src/testbed/testbed_api_testbed.c:1271 6724#: src/testbed/testbed_api_testbed.c:1273
6932msgid "No hosts loaded. Need at least one host\n" 6725msgid "No hosts loaded. Need at least one host\n"
6933msgstr "" 6726msgstr ""
6934 6727
6935#: src/testbed/testbed_api_testbed.c:1295 6728#: src/testbed/testbed_api_testbed.c:1297
6936msgid "Specified topology must be supported by testbed" 6729msgid "Specified topology must be supported by testbed"
6937msgstr "" 6730msgstr ""
6938 6731
6939#: src/testbed/testbed_api_testbed.c:1345 6732#: src/testbed/testbed_api_testbed.c:1347
6940#, c-format 6733#, c-format
6941msgid "" 6734msgid ""
6942"Maximum number of edges a peer can have in a scale free topology cannot be " 6735"Maximum number of edges a peer can have in a scale free topology cannot be "
6943"more than %u. Given `%s = %llu'" 6736"more than %u. Given `%s = %llu'"
6944msgstr "" 6737msgstr ""
6945 6738
6946#: src/testbed/testbed_api_testbed.c:1361 6739#: src/testbed/testbed_api_testbed.c:1363
6947#, c-format 6740#, c-format
6948msgid "" 6741msgid ""
6949"The number of edges that can established when adding a new node to scale " 6742"The number of edges that can established when adding a new node to scale "
6950"free topology cannot be more than %u. Given `%s = %llu'" 6743"free topology cannot be more than %u. Given `%s = %llu'"
6951msgstr "" 6744msgstr ""
6952 6745
6953#: src/testbed/testbed_api_topology.c:1026 6746#: src/testbed/testbed_api_topology.c:1028
6954#, fuzzy, c-format 6747#, fuzzy, c-format
6955msgid "Topology file %s not found\n" 6748msgid "Topology file %s not found\n"
6956msgstr "\"%s\" misslyckades: tabell hittades inte!\n" 6749msgstr "\"%s\" misslyckades: tabell hittades inte!\n"
6957 6750
6958#: src/testbed/testbed_api_topology.c:1034 6751#: src/testbed/testbed_api_topology.c:1036
6959#, c-format 6752#, c-format
6960msgid "Topology file %s has no data\n" 6753msgid "Topology file %s has no data\n"
6961msgstr "" 6754msgstr ""
6962 6755
6963#: src/testbed/testbed_api_topology.c:1042 6756#: src/testbed/testbed_api_topology.c:1044
6964#, c-format 6757#, c-format
6965msgid "Topology file %s cannot be read\n" 6758msgid "Topology file %s cannot be read\n"
6966msgstr "" 6759msgstr ""
6967 6760
6968#: src/testbed/testbed_api_topology.c:1064 6761#: src/testbed/testbed_api_topology.c:1066
6969#, fuzzy, c-format 6762#, fuzzy, c-format
6970msgid "Failed to read peer index from toology file: %s" 6763msgid "Failed to read peer index from toology file: %s"
6971msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 6764msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
6972 6765
6973#: src/testbed/testbed_api_topology.c:1073 6766#: src/testbed/testbed_api_topology.c:1075
6974#: src/testbed/testbed_api_topology.c:1097 6767#: src/testbed/testbed_api_topology.c:1099
6975#, c-format 6768#, c-format
6976msgid "Value in given topology file: %s out of range\n" 6769msgid "Value in given topology file: %s out of range\n"
6977msgstr "" 6770msgstr ""
6978 6771
6979#: src/testbed/testbed_api_topology.c:1079 6772#: src/testbed/testbed_api_topology.c:1081
6980#: src/testbed/testbed_api_topology.c:1103 6773#: src/testbed/testbed_api_topology.c:1105
6981#, fuzzy, c-format 6774#, fuzzy, c-format
6982msgid "Failed to read peer index from topology file: %s" 6775msgid "Failed to read peer index from topology file: %s"
6983msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 6776msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
6984 6777
6985#: src/testbed/testbed_api_topology.c:1085 6778#: src/testbed/testbed_api_topology.c:1087
6986#: src/testbed/testbed_api_topology.c:1109 6779#: src/testbed/testbed_api_topology.c:1111
6987msgid "Topology file needs more peers than given ones\n" 6780msgid "Topology file needs more peers than given ones\n"
6988msgstr "" 6781msgstr ""
6989 6782
6990#: src/testbed/testbed_api_topology.c:1143 6783#: src/testbed/testbed_api_topology.c:1145
6991#, fuzzy, c-format 6784#, fuzzy, c-format
6992msgid "Ignoring to connect peer %u to peer %u\n" 6785msgid "Ignoring to connect peer %u to peer %u\n"
6993msgstr "Kan inte ansluta till %u.%u.%u.%u:%u: %s\n" 6786msgstr "Kan inte ansluta till %u.%u.%u.%u:%u: %s\n"
6994 6787
6995#: src/testing/gnunet-testing.c:171 6788#: src/testing/gnunet-testing.c:173
6996#, fuzzy, c-format 6789#, fuzzy, c-format
6997msgid "Could not extract hostkey %u (offset too large?)\n" 6790msgid "Could not extract hostkey %u (offset too large?)\n"
6998msgstr "Kunde inte skapa värdnyckel!\n" 6791msgstr "Kunde inte skapa värdnyckel!\n"
6999 6792
7000#: src/testing/gnunet-testing.c:251 6793#: src/testing/gnunet-testing.c:253
7001#, c-format 6794#, c-format
7002msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n" 6795msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n"
7003msgstr "" 6796msgstr ""
7004 6797
7005#: src/testing/gnunet-testing.c:352 6798#: src/testing/gnunet-testing.c:354
7006#, fuzzy 6799#, fuzzy
7007msgid "create unique configuration files" 6800msgid "create unique configuration files"
7008msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" 6801msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
7009 6802
7010#: src/testing/gnunet-testing.c:357 6803#: src/testing/gnunet-testing.c:359
7011msgid "extract hostkey file from pre-computed hostkey list" 6804msgid "extract hostkey file from pre-computed hostkey list"
7012msgstr "" 6805msgstr ""
7013 6806
7014#: src/testing/gnunet-testing.c:363 6807#: src/testing/gnunet-testing.c:365
7015#, fuzzy 6808#, fuzzy
7016msgid "" 6809msgid ""
7017"number of unique configuration files to create, or number of the hostkey to " 6810"number of unique configuration files to create, or number of the hostkey to "
7018"extract" 6811"extract"
7019msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" 6812msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
7020 6813
7021#: src/testing/gnunet-testing.c:370 6814#: src/testing/gnunet-testing.c:372
7022#, fuzzy 6815#, fuzzy
7023msgid "configuration template" 6816msgid "configuration template"
7024msgstr "Konfigurationsfil \"%s\" skapad.\n" 6817msgstr "Konfigurationsfil \"%s\" skapad.\n"
7025 6818
7026#: src/testing/gnunet-testing.c:376 6819#: src/testing/gnunet-testing.c:378
7027msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)" 6820msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)"
7028msgstr "" 6821msgstr ""
7029 6822
7030#: src/testing/gnunet-testing.c:389 6823#: src/testing/gnunet-testing.c:391
7031msgid "Command line tool to access the testing library" 6824msgid "Command line tool to access the testing library"
7032msgstr "" 6825msgstr ""
7033 6826
@@ -7035,1590 +6828,1614 @@ msgstr ""
7035msgid "list COUNT number of keys" 6828msgid "list COUNT number of keys"
7036msgstr "" 6829msgstr ""
7037 6830
7038#: src/testing/testing.c:270 6831#: src/testing/testing.c:272
7039#, c-format 6832#, c-format
7040msgid "Hostkeys file not found: %s\n" 6833msgid "Hostkeys file not found: %s\n"
7041msgstr "" 6834msgstr ""
7042 6835
7043#: src/testing/testing.c:713 6836#: src/testing/testing.c:715
7044#, fuzzy, c-format 6837#, fuzzy, c-format
7045msgid "Key number %u does not exist\n" 6838msgid "Key number %u does not exist\n"
7046msgstr "antal meddelanden att använda per iteration" 6839msgstr "antal meddelanden att använda per iteration"
7047 6840
7048#: src/testing/testing.c:1157 6841#: src/testing/testing.c:1159
7049#, c-format 6842#, c-format
7050msgid "" 6843msgid ""
7051"You attempted to create a testbed with more than %u hosts. Please " 6844"You attempted to create a testbed with more than %u hosts. Please "
7052"precompute more hostkeys first.\n" 6845"precompute more hostkeys first.\n"
7053msgstr "" 6846msgstr ""
7054 6847
7055#: src/testing/testing.c:1166 6848#: src/testing/testing.c:1168
7056#, fuzzy, c-format 6849#, fuzzy, c-format
7057msgid "Failed to initialize hostkey for peer %u\n" 6850msgid "Failed to initialize hostkey for peer %u\n"
7058msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 6851msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
7059 6852
7060#: src/testing/testing.c:1176 6853#: src/testing/testing.c:1178
7061#, fuzzy 6854#, fuzzy
7062msgid "PRIVATE_KEY option in PEER section missing in configuration\n" 6855msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
7063msgstr "Inga applikationer definierade i konfiguration!\n" 6856msgstr "Inga applikationer definierade i konfiguration!\n"
7064 6857
7065#: src/testing/testing.c:1189 6858#: src/testing/testing.c:1191
7066#, fuzzy 6859#, fuzzy
7067msgid "Failed to create configuration for peer (not enough free ports?)\n" 6860msgid "Failed to create configuration for peer (not enough free ports?)\n"
7068msgstr "Kunde inte komma åt namnrymdsinformation.\n" 6861msgstr "Kunde inte komma åt namnrymdsinformation.\n"
7069 6862
7070#: src/testing/testing.c:1203 6863#: src/testing/testing.c:1205
7071#, fuzzy, c-format 6864#, fuzzy, c-format
7072msgid "Cannot open hostkey file `%s': %s\n" 6865msgid "Cannot open hostkey file `%s': %s\n"
7073msgstr "Kunde inte skapa värdnyckel!\n" 6866msgstr "Kunde inte skapa värdnyckel!\n"
7074 6867
7075#: src/testing/testing.c:1215 6868#: src/testing/testing.c:1217
7076#, fuzzy, c-format 6869#, fuzzy, c-format
7077msgid "Failed to write hostkey file for peer %u: %s\n" 6870msgid "Failed to write hostkey file for peer %u: %s\n"
7078msgstr "Kunde inte skapa användarkonto:" 6871msgstr "Kunde inte skapa användarkonto:"
7079 6872
7080#: src/testing/testing.c:1240 6873#: src/testing/testing.c:1242
7081#, fuzzy, c-format 6874#, fuzzy, c-format
7082msgid "Failed to write configuration file `%s' for peer %u: %s\n" 6875msgid "Failed to write configuration file `%s' for peer %u: %s\n"
7083msgstr "Kunde inte spara konfigurationsfil \"%s\":" 6876msgstr "Kunde inte spara konfigurationsfil \"%s\":"
7084 6877
7085#: src/testing/testing.c:1342 6878#: src/testing/testing.c:1344
7086#, fuzzy, c-format 6879#, fuzzy, c-format
7087msgid "Failed to start `%s': %s\n" 6880msgid "Failed to start `%s': %s\n"
7088msgstr "Fel vid %s:%d.\n" 6881msgstr "Fel vid %s:%d.\n"
7089 6882
7090#: src/testing/testing.c:1645 6883#: src/testing/testing.c:1647
7091#, fuzzy, c-format 6884#, fuzzy, c-format
7092msgid "Failed to load configuration from %s\n" 6885msgid "Failed to load configuration from %s\n"
7093msgstr "Kunde inte spara konfigurationsfil \"%s\":" 6886msgstr "Kunde inte spara konfigurationsfil \"%s\":"
7094 6887
7095#: src/topology/friends.c:124 6888#: src/topology/friends.c:126
7096#, fuzzy, c-format 6889#, fuzzy, c-format
7097msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n" 6890msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n"
7098msgstr "Syntaxfel i konfigurationsfil \"%s\" på rad %d.\n" 6891msgstr "Syntaxfel i konfigurationsfil \"%s\" på rad %d.\n"
7099 6892
7100#: src/topology/friends.c:178 6893#: src/topology/friends.c:180
7101#, c-format 6894#, c-format
7102msgid "Directory for file `%s' does not seem to be writable.\n" 6895msgid "Directory for file `%s' does not seem to be writable.\n"
7103msgstr "" 6896msgstr ""
7104 6897
7105#: src/topology/gnunet-daemon-topology.c:228 6898#: src/topology/gnunet-daemon-topology.c:230
7106msgid "# peers blacklisted" 6899msgid "# peers blacklisted"
7107msgstr "" 6900msgstr ""
7108 6901
7109#: src/topology/gnunet-daemon-topology.c:342 6902#: src/topology/gnunet-daemon-topology.c:344
7110#, fuzzy 6903#, fuzzy
7111msgid "# connect requests issued to ATS" 6904msgid "# connect requests issued to ATS"
7112msgstr "# byte mottogs via TCP" 6905msgstr "# byte mottogs via TCP"
7113 6906
7114#: src/topology/gnunet-daemon-topology.c:536 6907#: src/topology/gnunet-daemon-topology.c:538
7115msgid "# HELLO messages gossipped" 6908msgid "# HELLO messages gossipped"
7116msgstr "" 6909msgstr ""
7117 6910
7118#: src/topology/gnunet-daemon-topology.c:638 6911#: src/topology/gnunet-daemon-topology.c:640
7119#: src/topology/gnunet-daemon-topology.c:724 6912#: src/topology/gnunet-daemon-topology.c:726
7120#, fuzzy 6913#, fuzzy
7121msgid "# friends connected" 6914msgid "# friends connected"
7122msgstr "# av anslutna parter" 6915msgstr "# av anslutna parter"
7123 6916
7124#: src/topology/gnunet-daemon-topology.c:921 6917#: src/topology/gnunet-daemon-topology.c:923
7125msgid "Failed to connect to core service, can not manage topology!\n" 6918msgid "Failed to connect to core service, can not manage topology!\n"
7126msgstr "" 6919msgstr ""
7127 6920
7128#: src/topology/gnunet-daemon-topology.c:954 6921#: src/topology/gnunet-daemon-topology.c:956
7129#, c-format 6922#, c-format
7130msgid "Found myself `%s' in friend list (useless, ignored)\n" 6923msgid "Found myself `%s' in friend list (useless, ignored)\n"
7131msgstr "" 6924msgstr ""
7132 6925
7133#: src/topology/gnunet-daemon-topology.c:961 6926#: src/topology/gnunet-daemon-topology.c:963
7134#, fuzzy, c-format 6927#, fuzzy, c-format
7135msgid "Found friend `%s' in configuration\n" 6928msgid "Found friend `%s' in configuration\n"
7136msgstr " gconfig\tGTK-konfiguration\n" 6929msgstr " gconfig\tGTK-konfiguration\n"
7137 6930
7138#: src/topology/gnunet-daemon-topology.c:983 6931#: src/topology/gnunet-daemon-topology.c:985
7139msgid "Encountered errors parsing friends list!\n" 6932msgid "Encountered errors parsing friends list!\n"
7140msgstr "" 6933msgstr ""
7141 6934
7142#: src/topology/gnunet-daemon-topology.c:986 6935#: src/topology/gnunet-daemon-topology.c:988
7143#, fuzzy 6936#, fuzzy
7144msgid "# friends in configuration" 6937msgid "# friends in configuration"
7145msgstr " gconfig\tGTK-konfiguration\n" 6938msgstr " gconfig\tGTK-konfiguration\n"
7146 6939
7147#: src/topology/gnunet-daemon-topology.c:993 6940#: src/topology/gnunet-daemon-topology.c:995
7148msgid "" 6941msgid ""
7149"Fewer friends specified than required by minimum friend count. Will only " 6942"Fewer friends specified than required by minimum friend count. Will only "
7150"connect to friends.\n" 6943"connect to friends.\n"
7151msgstr "" 6944msgstr ""
7152 6945
7153#: src/topology/gnunet-daemon-topology.c:999 6946#: src/topology/gnunet-daemon-topology.c:1001
7154msgid "" 6947msgid ""
7155"More friendly connections required than target total number of connections.\n" 6948"More friendly connections required than target total number of connections.\n"
7156msgstr "" 6949msgstr ""
7157 6950
7158#: src/topology/gnunet-daemon-topology.c:1052 6951#: src/topology/gnunet-daemon-topology.c:1054
7159#: src/transport/plugin_transport_wlan.c:1515 6952#: src/transport/plugin_transport_wlan.c:1517
7160#, fuzzy 6953#, fuzzy
7161msgid "# HELLO messages received" 6954msgid "# HELLO messages received"
7162msgstr "# krypterade PONG-meddelanden mottagna" 6955msgstr "# krypterade PONG-meddelanden mottagna"
7163 6956
7164#: src/topology/gnunet-daemon-topology.c:1230 6957#: src/topology/gnunet-daemon-topology.c:1233
7165msgid "GNUnet topology control" 6958msgid "GNUnet topology control"
7166msgstr "" 6959msgstr ""
7167 6960
7168#: src/transport/gnunet-service-transport_ats.c:139 6961#: src/transport/gnunet-communicator-tcp.c:2329
6962#: src/transport/gnunet-communicator-udp.c:2883
6963#: src/transport/gnunet-service-tng.c:4679
6964#: src/transport/gnunet-service-transport.c:2782
6965#, fuzzy
6966msgid "Transport service is lacking key configuration settings. Exiting.\n"
6967msgstr "GNUnet-konfiguration"
6968
6969#: src/transport/gnunet-communicator-tcp.c:2393
6970msgid "GNUnet TCP communicator"
6971msgstr ""
6972
6973#: src/transport/gnunet-communicator-udp.c:2954
6974msgid "GNUnet UDP communicator"
6975msgstr ""
6976
6977#: src/transport/gnunet-communicator-unix.c:802
6978#, fuzzy
6979msgid ""
6980"Maximum number of UNIX connections exceeded, dropping incoming message\n"
6981msgstr "Maximalt antal chattklienter uppnått.\n"
6982
6983#: src/transport/gnunet-communicator-unix.c:1073
6984#: src/transport/plugin_transport_unix.c:1403
6985#, fuzzy, c-format
6986msgid "Cannot create path to `%s'\n"
6987msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
6988
6989#: src/transport/gnunet-communicator-unix.c:1162
6990msgid "GNUnet UNIX domain socket communicator"
6991msgstr ""
6992
6993#: src/transport/gnunet-service-transport_ats.c:141
7169msgid "# Addresses given to ATS" 6994msgid "# Addresses given to ATS"
7170msgstr "" 6995msgstr ""
7171 6996
7172#: src/transport/gnunet-service-transport.c:446 6997#: src/transport/gnunet-service-transport.c:448
7173msgid "# messages dropped due to slow client" 6998msgid "# messages dropped due to slow client"
7174msgstr "" 6999msgstr ""
7175 7000
7176#: src/transport/gnunet-service-transport.c:816 7001#: src/transport/gnunet-service-transport.c:817
7177msgid "# bytes payload dropped (other peer was not connected)" 7002msgid "# bytes payload dropped (other peer was not connected)"
7178msgstr "" 7003msgstr ""
7179 7004
7180#: src/transport/gnunet-service-transport.c:1549 7005#: src/transport/gnunet-service-transport.c:1550
7181#, fuzzy 7006#, fuzzy
7182msgid "# bytes payload discarded due to not connected peer" 7007msgid "# bytes payload discarded due to not connected peer"
7183msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7008msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7184 7009
7185#: src/transport/gnunet-service-transport.c:1709 7010#: src/transport/gnunet-service-transport.c:1710
7186#, fuzzy 7011#, fuzzy
7187msgid "# bytes total received" 7012msgid "# bytes total received"
7188msgstr "# byte krypterade" 7013msgstr "# byte krypterade"
7189 7014
7190#: src/transport/gnunet-service-transport.c:1806 7015#: src/transport/gnunet-service-transport.c:1807
7191#, fuzzy 7016#, fuzzy
7192msgid "# bytes payload received" 7017msgid "# bytes payload received"
7193msgstr "# byte dekrypterade" 7018msgstr "# byte dekrypterade"
7194 7019
7195#: src/transport/gnunet-service-transport.c:2123 7020#: src/transport/gnunet-service-transport.c:2124
7196#: src/transport/gnunet-service-transport.c:2595 7021#: src/transport/gnunet-service-transport.c:2596
7197msgid "# disconnects due to blacklist" 7022msgid "# disconnects due to blacklist"
7198msgstr "" 7023msgstr ""
7199 7024
7200#: src/transport/gnunet-service-transport.c:2599 7025#: src/transport/gnunet-service-transport.c:2600
7201#, fuzzy, c-format 7026#, fuzzy, c-format
7202msgid "Disallowing connection to peer `%s' on transport %s\n" 7027msgid "Disallowing connection to peer `%s' on transport %s\n"
7203msgstr "Kunde inte slå upp \"%s\": %s\n" 7028msgstr "Kunde inte slå upp \"%s\": %s\n"
7204 7029
7205#: src/transport/gnunet-service-transport.c:2707 7030#: src/transport/gnunet-service-transport.c:2708
7206#, fuzzy, c-format 7031#, fuzzy, c-format
7207msgid "Adding blacklisting entry for peer `%s'\n" 7032msgid "Adding blacklisting entry for peer `%s'\n"
7208msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" 7033msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
7209 7034
7210#: src/transport/gnunet-service-transport.c:2716 7035#: src/transport/gnunet-service-transport.c:2717
7211#, c-format 7036#, c-format
7212msgid "Adding blacklisting entry for peer `%s':`%s'\n" 7037msgid "Adding blacklisting entry for peer `%s':`%s'\n"
7213msgstr "" 7038msgstr ""
7214 7039
7215#: src/transport/gnunet-service-transport.c:2781 7040#: src/transport/gnunet-service-transport_hello.c:195
7216#, fuzzy
7217msgid "Transport service is lacking key configuration settings. Exiting.\n"
7218msgstr "GNUnet-konfiguration"
7219
7220#: src/transport/gnunet-service-transport_hello.c:193
7221msgid "# refreshed my HELLO" 7041msgid "# refreshed my HELLO"
7222msgstr "" 7042msgstr ""
7223 7043
7224#: src/transport/gnunet-service-transport_neighbours.c:804 7044#: src/transport/gnunet-service-transport_neighbours.c:805
7225#, fuzzy 7045#, fuzzy
7226msgid "# session creation failed" 7046msgid "# session creation failed"
7227msgstr "# sessionsnycklar accepterade" 7047msgstr "# sessionsnycklar accepterade"
7228 7048
7229#: src/transport/gnunet-service-transport_neighbours.c:1051 7049#: src/transport/gnunet-service-transport_neighbours.c:1052
7230#, fuzzy 7050#, fuzzy
7231msgid "# DISCONNECT messages sent" 7051msgid "# DISCONNECT messages sent"
7232msgstr "# krypterade PONG-meddelanden mottagna" 7052msgstr "# krypterade PONG-meddelanden mottagna"
7233 7053
7234#: src/transport/gnunet-service-transport_neighbours.c:1174 7054#: src/transport/gnunet-service-transport_neighbours.c:1175
7235msgid "# disconnects due to quota of 0" 7055msgid "# disconnects due to quota of 0"
7236msgstr "" 7056msgstr ""
7237 7057
7238#: src/transport/gnunet-service-transport_neighbours.c:1322 7058#: src/transport/gnunet-service-transport_neighbours.c:1323
7239#: src/transport/gnunet-service-transport_neighbours.c:1783 7059#: src/transport/gnunet-service-transport_neighbours.c:1784
7240msgid "# bytes in message queue for other peers" 7060msgid "# bytes in message queue for other peers"
7241msgstr "" 7061msgstr ""
7242 7062
7243#: src/transport/gnunet-service-transport_neighbours.c:1327 7063#: src/transport/gnunet-service-transport_neighbours.c:1328
7244#, fuzzy 7064#, fuzzy
7245msgid "# messages transmitted to other peers" 7065msgid "# messages transmitted to other peers"
7246msgstr "# byte skickade av typen %d" 7066msgstr "# byte skickade av typen %d"
7247 7067
7248#: src/transport/gnunet-service-transport_neighbours.c:1333 7068#: src/transport/gnunet-service-transport_neighbours.c:1334
7249#, fuzzy 7069#, fuzzy
7250msgid "# transmission failures for messages to other peers" 7070msgid "# transmission failures for messages to other peers"
7251msgstr "# byte skickade av typen %d" 7071msgstr "# byte skickade av typen %d"
7252 7072
7253#: src/transport/gnunet-service-transport_neighbours.c:1393 7073#: src/transport/gnunet-service-transport_neighbours.c:1394
7254msgid "# messages timed out while in transport queue" 7074msgid "# messages timed out while in transport queue"
7255msgstr "" 7075msgstr ""
7256 7076
7257#: src/transport/gnunet-service-transport_neighbours.c:1477 7077#: src/transport/gnunet-service-transport_neighbours.c:1478
7258msgid "# KEEPALIVES sent" 7078msgid "# KEEPALIVES sent"
7259msgstr "" 7079msgstr ""
7260 7080
7261#: src/transport/gnunet-service-transport_neighbours.c:1513 7081#: src/transport/gnunet-service-transport_neighbours.c:1514
7262#, fuzzy 7082#, fuzzy
7263msgid "# KEEPALIVE messages discarded (peer unknown)" 7083msgid "# KEEPALIVE messages discarded (peer unknown)"
7264msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7084msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7265 7085
7266#: src/transport/gnunet-service-transport_neighbours.c:1521 7086#: src/transport/gnunet-service-transport_neighbours.c:1522
7267#, fuzzy 7087#, fuzzy
7268msgid "# KEEPALIVE messages discarded (no session)" 7088msgid "# KEEPALIVE messages discarded (no session)"
7269msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7089msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7270 7090
7271#: src/transport/gnunet-service-transport_neighbours.c:1531 7091#: src/transport/gnunet-service-transport_neighbours.c:1532
7272msgid "# KEEPALIVES received in good order" 7092msgid "# KEEPALIVES received in good order"
7273msgstr "" 7093msgstr ""
7274 7094
7275#: src/transport/gnunet-service-transport_neighbours.c:1576 7095#: src/transport/gnunet-service-transport_neighbours.c:1577
7276#, fuzzy 7096#, fuzzy
7277msgid "# KEEPALIVE_RESPONSEs discarded (not connected)" 7097msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
7278msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7098msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7279 7099
7280#: src/transport/gnunet-service-transport_neighbours.c:1585 7100#: src/transport/gnunet-service-transport_neighbours.c:1586
7281#, fuzzy 7101#, fuzzy
7282msgid "# KEEPALIVE_RESPONSEs discarded (not expected)" 7102msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
7283msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7103msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7284 7104
7285#: src/transport/gnunet-service-transport_neighbours.c:1593 7105#: src/transport/gnunet-service-transport_neighbours.c:1594
7286#, fuzzy 7106#, fuzzy
7287msgid "# KEEPALIVE_RESPONSEs discarded (address changed)" 7107msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
7288msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7108msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7289 7109
7290#: src/transport/gnunet-service-transport_neighbours.c:1602 7110#: src/transport/gnunet-service-transport_neighbours.c:1603
7291#, fuzzy 7111#, fuzzy
7292msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)" 7112msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
7293msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7113msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7294 7114
7295#: src/transport/gnunet-service-transport_neighbours.c:1607 7115#: src/transport/gnunet-service-transport_neighbours.c:1608
7296#, fuzzy 7116#, fuzzy
7297msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)" 7117msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
7298msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7118msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7299 7119
7300#: src/transport/gnunet-service-transport_neighbours.c:1613 7120#: src/transport/gnunet-service-transport_neighbours.c:1614
7301#, fuzzy 7121#, fuzzy
7302msgid "# KEEPALIVE_RESPONSEs received (OK)" 7122msgid "# KEEPALIVE_RESPONSEs received (OK)"
7303msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7123msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7304 7124
7305#: src/transport/gnunet-service-transport_neighbours.c:1680 7125#: src/transport/gnunet-service-transport_neighbours.c:1681
7306#, fuzzy 7126#, fuzzy
7307msgid "# messages discarded due to lack of neighbour record" 7127msgid "# messages discarded due to lack of neighbour record"
7308msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7128msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
7309 7129
7310#: src/transport/gnunet-service-transport_neighbours.c:1714 7130#: src/transport/gnunet-service-transport_neighbours.c:1715
7311msgid "# bandwidth quota violations by other peers" 7131msgid "# bandwidth quota violations by other peers"
7312msgstr "" 7132msgstr ""
7313 7133
7314#: src/transport/gnunet-service-transport_neighbours.c:1729 7134#: src/transport/gnunet-service-transport_neighbours.c:1730
7315msgid "# ms throttling suggested" 7135msgid "# ms throttling suggested"
7316msgstr "" 7136msgstr ""
7317 7137
7318#: src/transport/gnunet-service-transport_neighbours.c:1852 7138#: src/transport/gnunet-service-transport_neighbours.c:1853
7319#, fuzzy, c-format 7139#, fuzzy, c-format
7320msgid "Failed to send SYN message to peer `%s'\n" 7140msgid "Failed to send SYN message to peer `%s'\n"
7321msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 7141msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
7322 7142
7323#: src/transport/gnunet-service-transport_neighbours.c:1872 7143#: src/transport/gnunet-service-transport_neighbours.c:1873
7324#, fuzzy 7144#, fuzzy
7325msgid "# Failed attempts to switch addresses (failed to send SYN CONT)" 7145msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
7326msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 7146msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
7327 7147
7328#: src/transport/gnunet-service-transport_neighbours.c:1911 7148#: src/transport/gnunet-service-transport_neighbours.c:1912
7329#, fuzzy 7149#, fuzzy
7330msgid "# SYN messages sent" 7150msgid "# SYN messages sent"
7331msgstr "# krypterade PONG-meddelanden mottagna" 7151msgstr "# krypterade PONG-meddelanden mottagna"
7332 7152
7333#: src/transport/gnunet-service-transport_neighbours.c:1928 7153#: src/transport/gnunet-service-transport_neighbours.c:1929
7334#, fuzzy, c-format 7154#, fuzzy, c-format
7335msgid "Failed to transmit SYN message to %s\n" 7155msgid "Failed to transmit SYN message to %s\n"
7336msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 7156msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
7337 7157
7338#: src/transport/gnunet-service-transport_neighbours.c:1958 7158#: src/transport/gnunet-service-transport_neighbours.c:1959
7339#, fuzzy 7159#, fuzzy
7340msgid "# Failed attempts to switch addresses (failed to send SYN)" 7160msgid "# Failed attempts to switch addresses (failed to send SYN)"
7341msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 7161msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
7342 7162
7343#: src/transport/gnunet-service-transport_neighbours.c:2026 7163#: src/transport/gnunet-service-transport_neighbours.c:2027
7344#, fuzzy, c-format 7164#, fuzzy, c-format
7345msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n" 7165msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
7346msgstr "Misslyckades att ansluta till gnunetd.\n" 7166msgstr "Misslyckades att ansluta till gnunetd.\n"
7347 7167
7348#: src/transport/gnunet-service-transport_neighbours.c:2080 7168#: src/transport/gnunet-service-transport_neighbours.c:2081
7349#, fuzzy 7169#, fuzzy
7350msgid "# SYN_ACK messages sent" 7170msgid "# SYN_ACK messages sent"
7351msgstr "# krypterade PONG-meddelanden mottagna" 7171msgstr "# krypterade PONG-meddelanden mottagna"
7352 7172
7353#: src/transport/gnunet-service-transport_neighbours.c:2097 7173#: src/transport/gnunet-service-transport_neighbours.c:2098
7354#, fuzzy, c-format 7174#, fuzzy, c-format
7355msgid "Failed to transmit SYN_ACK message to %s\n" 7175msgid "Failed to transmit SYN_ACK message to %s\n"
7356msgstr "Misslyckades att initiera tjänsten \"%s\".\n" 7176msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
7357 7177
7358#: src/transport/gnunet-service-transport_neighbours.c:2260 7178#: src/transport/gnunet-service-transport_neighbours.c:2261
7359#, fuzzy 7179#, fuzzy
7360msgid "# SYN messages received" 7180msgid "# SYN messages received"
7361msgstr "# PING-meddelanden skapade" 7181msgstr "# PING-meddelanden skapade"
7362 7182
7363#: src/transport/gnunet-service-transport_neighbours.c:2265 7183#: src/transport/gnunet-service-transport_neighbours.c:2266
7364#, c-format 7184#, c-format
7365msgid "SYN request from peer `%s' ignored due impending shutdown\n" 7185msgid "SYN request from peer `%s' ignored due impending shutdown\n"
7366msgstr "" 7186msgstr ""
7367 7187
7368#: src/transport/gnunet-service-transport_neighbours.c:2652 7188#: src/transport/gnunet-service-transport_neighbours.c:2653
7369msgid "# Attempts to switch addresses" 7189msgid "# Attempts to switch addresses"
7370msgstr "" 7190msgstr ""
7371 7191
7372#: src/transport/gnunet-service-transport_neighbours.c:3137 7192#: src/transport/gnunet-service-transport_neighbours.c:3138
7373#, fuzzy 7193#, fuzzy
7374msgid "# SYN_ACK messages received" 7194msgid "# SYN_ACK messages received"
7375msgstr "# krypterade PONG-meddelanden mottagna" 7195msgstr "# krypterade PONG-meddelanden mottagna"
7376 7196
7377#: src/transport/gnunet-service-transport_neighbours.c:3145 7197#: src/transport/gnunet-service-transport_neighbours.c:3146
7378#, fuzzy 7198#, fuzzy
7379msgid "# unexpected SYN_ACK messages (no peer)" 7199msgid "# unexpected SYN_ACK messages (no peer)"
7380msgstr "skicka ANTAL meddelanden" 7200msgstr "skicka ANTAL meddelanden"
7381 7201
7382#: src/transport/gnunet-service-transport_neighbours.c:3163 7202#: src/transport/gnunet-service-transport_neighbours.c:3164
7383#: src/transport/gnunet-service-transport_neighbours.c:3187 7203#: src/transport/gnunet-service-transport_neighbours.c:3188
7384#, fuzzy 7204#, fuzzy
7385msgid "# unexpected SYN_ACK messages (not ready)" 7205msgid "# unexpected SYN_ACK messages (not ready)"
7386msgstr "skicka ANTAL meddelanden" 7206msgstr "skicka ANTAL meddelanden"
7387 7207
7388#: src/transport/gnunet-service-transport_neighbours.c:3199 7208#: src/transport/gnunet-service-transport_neighbours.c:3200
7389#, fuzzy 7209#, fuzzy
7390msgid "# unexpected SYN_ACK messages (waiting on ATS)" 7210msgid "# unexpected SYN_ACK messages (waiting on ATS)"
7391msgstr "skicka ANTAL meddelanden" 7211msgstr "skicka ANTAL meddelanden"
7392 7212
7393#: src/transport/gnunet-service-transport_neighbours.c:3224 7213#: src/transport/gnunet-service-transport_neighbours.c:3225
7394msgid "# Successful attempts to switch addresses" 7214msgid "# Successful attempts to switch addresses"
7395msgstr "" 7215msgstr ""
7396 7216
7397#: src/transport/gnunet-service-transport_neighbours.c:3237 7217#: src/transport/gnunet-service-transport_neighbours.c:3238
7398#, fuzzy 7218#, fuzzy
7399msgid "# unexpected SYN_ACK messages (disconnecting)" 7219msgid "# unexpected SYN_ACK messages (disconnecting)"
7400msgstr "skicka ANTAL meddelanden" 7220msgstr "skicka ANTAL meddelanden"
7401 7221
7402#: src/transport/gnunet-service-transport_neighbours.c:3410 7222#: src/transport/gnunet-service-transport_neighbours.c:3411
7403#, fuzzy 7223#, fuzzy
7404msgid "# ACK messages received" 7224msgid "# ACK messages received"
7405msgstr "# krypterade PONG-meddelanden mottagna" 7225msgstr "# krypterade PONG-meddelanden mottagna"
7406 7226
7407#: src/transport/gnunet-service-transport_neighbours.c:3446 7227#: src/transport/gnunet-service-transport_neighbours.c:3447
7408#, fuzzy 7228#, fuzzy
7409msgid "# unexpected ACK messages" 7229msgid "# unexpected ACK messages"
7410msgstr "# krypterade PONG-meddelanden skickade" 7230msgstr "# krypterade PONG-meddelanden skickade"
7411 7231
7412#: src/transport/gnunet-service-transport_neighbours.c:3534 7232#: src/transport/gnunet-service-transport_neighbours.c:3535
7413#, fuzzy 7233#, fuzzy
7414msgid "# quota messages ignored (malformed)" 7234msgid "# quota messages ignored (malformed)"
7415msgstr "# byte mottogs via TCP" 7235msgstr "# byte mottogs via TCP"
7416 7236
7417#: src/transport/gnunet-service-transport_neighbours.c:3541 7237#: src/transport/gnunet-service-transport_neighbours.c:3542
7418#, fuzzy 7238#, fuzzy
7419msgid "# QUOTA messages received" 7239msgid "# QUOTA messages received"
7420msgstr "# krypterade PONG-meddelanden mottagna" 7240msgstr "# krypterade PONG-meddelanden mottagna"
7421 7241
7422#: src/transport/gnunet-service-transport_neighbours.c:3581 7242#: src/transport/gnunet-service-transport_neighbours.c:3582
7423msgid "# disconnect messages ignored (malformed)" 7243msgid "# disconnect messages ignored (malformed)"
7424msgstr "" 7244msgstr ""
7425 7245
7426#: src/transport/gnunet-service-transport_neighbours.c:3588 7246#: src/transport/gnunet-service-transport_neighbours.c:3589
7427#, fuzzy 7247#, fuzzy
7428msgid "# DISCONNECT messages received" 7248msgid "# DISCONNECT messages received"
7429msgstr "# krypterade PONG-meddelanden mottagna" 7249msgstr "# krypterade PONG-meddelanden mottagna"
7430 7250
7431#: src/transport/gnunet-service-transport_neighbours.c:3599 7251#: src/transport/gnunet-service-transport_neighbours.c:3600
7432msgid "# disconnect messages ignored (timestamp)" 7252msgid "# disconnect messages ignored (timestamp)"
7433msgstr "" 7253msgstr ""
7434 7254
7435#: src/transport/gnunet-service-transport_neighbours.c:3734 7255#: src/transport/gnunet-service-transport_neighbours.c:3735
7436#, fuzzy 7256#, fuzzy
7437msgid "# disconnected from peer upon explicit request" 7257msgid "# disconnected from peer upon explicit request"
7438msgstr "# av anslutna parter" 7258msgstr "# av anslutna parter"
7439 7259
7440#: src/transport/gnunet-service-transport_plugins.c:156 7260#: src/transport/gnunet-service-transport_plugins.c:158
7441msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n" 7261msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n"
7442msgstr "" 7262msgstr ""
7443 7263
7444#: src/transport/gnunet-service-transport_plugins.c:221 7264#: src/transport/gnunet-service-transport_plugins.c:223
7445#: src/transport/gnunet-service-transport_plugins.c:229 7265#: src/transport/gnunet-service-transport_plugins.c:231
7446#: src/transport/gnunet-service-transport_plugins.c:237 7266#: src/transport/gnunet-service-transport_plugins.c:239
7447#: src/transport/gnunet-service-transport_plugins.c:245 7267#: src/transport/gnunet-service-transport_plugins.c:247
7448#: src/transport/gnunet-service-transport_plugins.c:253 7268#: src/transport/gnunet-service-transport_plugins.c:255
7449#: src/transport/gnunet-service-transport_plugins.c:261 7269#: src/transport/gnunet-service-transport_plugins.c:263
7450#: src/transport/gnunet-service-transport_plugins.c:269 7270#: src/transport/gnunet-service-transport_plugins.c:271
7451#: src/transport/gnunet-service-transport_plugins.c:277 7271#: src/transport/gnunet-service-transport_plugins.c:279
7452#: src/transport/gnunet-service-transport_plugins.c:285 7272#: src/transport/gnunet-service-transport_plugins.c:287
7453#: src/transport/gnunet-service-transport_plugins.c:293 7273#: src/transport/gnunet-service-transport_plugins.c:295
7454#: src/transport/gnunet-service-transport_plugins.c:301 7274#: src/transport/gnunet-service-transport_plugins.c:303
7455#, fuzzy, c-format 7275#, fuzzy, c-format
7456msgid "Missing function `%s' in transport plugin for `%s'\n" 7276msgid "Missing function `%s' in transport plugin for `%s'\n"
7457msgstr "Kunde inte slå upp \"%s\": %s\n" 7277msgstr "Kunde inte slå upp \"%s\": %s\n"
7458 7278
7459#: src/transport/gnunet-service-transport_plugins.c:308 7279#: src/transport/gnunet-service-transport_plugins.c:310
7460#, c-format 7280#, c-format
7461msgid "Did not load plugin `%s' due to missing functions\n" 7281msgid "Did not load plugin `%s' due to missing functions\n"
7462msgstr "" 7282msgstr ""
7463 7283
7464#: src/transport/gnunet-service-transport_validation.c:386 7284#: src/transport/gnunet-service-transport_validation.c:388
7465msgid "# Addresses in validation map" 7285msgid "# Addresses in validation map"
7466msgstr "" 7286msgstr ""
7467 7287
7468#: src/transport/gnunet-service-transport_validation.c:489 7288#: src/transport/gnunet-service-transport_validation.c:491
7469#: src/transport/gnunet-service-transport_validation.c:675 7289#: src/transport/gnunet-service-transport_validation.c:677
7470#: src/transport/gnunet-service-transport_validation.c:995 7290#: src/transport/gnunet-service-transport_validation.c:997
7471#: src/transport/gnunet-service-transport_validation.c:1607 7291#: src/transport/gnunet-service-transport_validation.c:1609
7472msgid "# validations running" 7292msgid "# validations running"
7473msgstr "" 7293msgstr ""
7474 7294
7475#: src/transport/gnunet-service-transport_validation.c:530 7295#: src/transport/gnunet-service-transport_validation.c:532
7476#, fuzzy 7296#, fuzzy
7477msgid "# address records discarded (timeout)" 7297msgid "# address records discarded (timeout)"
7478msgstr "# byte kastade via TCP (utgående)" 7298msgstr "# byte kastade via TCP (utgående)"
7479 7299
7480#: src/transport/gnunet-service-transport_validation.c:578 7300#: src/transport/gnunet-service-transport_validation.c:580
7481msgid "# address records discarded (blacklist)" 7301msgid "# address records discarded (blacklist)"
7482msgstr "" 7302msgstr ""
7483 7303
7484#: src/transport/gnunet-service-transport_validation.c:666 7304#: src/transport/gnunet-service-transport_validation.c:668
7485msgid "# PINGs for address validation sent" 7305msgid "# PINGs for address validation sent"
7486msgstr "" 7306msgstr ""
7487 7307
7488#: src/transport/gnunet-service-transport_validation.c:746 7308#: src/transport/gnunet-service-transport_validation.c:748
7489msgid "# validations delayed by global throttle" 7309msgid "# validations delayed by global throttle"
7490msgstr "" 7310msgstr ""
7491 7311
7492#: src/transport/gnunet-service-transport_validation.c:783 7312#: src/transport/gnunet-service-transport_validation.c:785
7493msgid "# address revalidations started" 7313msgid "# address revalidations started"
7494msgstr "" 7314msgstr ""
7495 7315
7496#: src/transport/gnunet-service-transport_validation.c:1121 7316#: src/transport/gnunet-service-transport_validation.c:1123
7497#, fuzzy 7317#, fuzzy
7498msgid "# PING message for different peer received" 7318msgid "# PING message for different peer received"
7499msgstr "# PING-meddelanden skapade" 7319msgstr "# PING-meddelanden skapade"
7500 7320
7501#: src/transport/gnunet-service-transport_validation.c:1172 7321#: src/transport/gnunet-service-transport_validation.c:1174
7502#, c-format 7322#, c-format
7503msgid "Plugin `%s' not available, cannot confirm having this address\n" 7323msgid "Plugin `%s' not available, cannot confirm having this address\n"
7504msgstr "" 7324msgstr ""
7505 7325
7506#: src/transport/gnunet-service-transport_validation.c:1185 7326#: src/transport/gnunet-service-transport_validation.c:1187
7507msgid "# failed address checks during validation" 7327msgid "# failed address checks during validation"
7508msgstr "" 7328msgstr ""
7509 7329
7510#: src/transport/gnunet-service-transport_validation.c:1188 7330#: src/transport/gnunet-service-transport_validation.c:1190
7511#, c-format 7331#, c-format
7512msgid "Address `%s' is not one of my addresses, not confirming PING\n" 7332msgid "Address `%s' is not one of my addresses, not confirming PING\n"
7513msgstr "" 7333msgstr ""
7514 7334
7515#: src/transport/gnunet-service-transport_validation.c:1196 7335#: src/transport/gnunet-service-transport_validation.c:1198
7516msgid "# successful address checks during validation" 7336msgid "# successful address checks during validation"
7517msgstr "" 7337msgstr ""
7518 7338
7519#: src/transport/gnunet-service-transport_validation.c:1209 7339#: src/transport/gnunet-service-transport_validation.c:1211
7520#, c-format 7340#, c-format
7521msgid "" 7341msgid ""
7522"Not confirming PING from peer `%s' with address `%s' since I cannot confirm " 7342"Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
7523"having this address.\n" 7343"having this address.\n"
7524msgstr "" 7344msgstr ""
7525 7345
7526#: src/transport/gnunet-service-transport_validation.c:1264 7346#: src/transport/gnunet-service-transport_validation.c:1266
7527#, fuzzy, c-format 7347#, fuzzy, c-format
7528msgid "Failed to create PONG signature for peer `%s'\n" 7348msgid "Failed to create PONG signature for peer `%s'\n"
7529msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 7349msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
7530 7350
7531#: src/transport/gnunet-service-transport_validation.c:1315 7351#: src/transport/gnunet-service-transport_validation.c:1317
7532msgid "# PONGs unicast via reliable transport" 7352msgid "# PONGs unicast via reliable transport"
7533msgstr "" 7353msgstr ""
7534 7354
7535#: src/transport/gnunet-service-transport_validation.c:1324 7355#: src/transport/gnunet-service-transport_validation.c:1326
7536msgid "# PONGs multicast to all available addresses" 7356msgid "# PONGs multicast to all available addresses"
7537msgstr "" 7357msgstr ""
7538 7358
7539#: src/transport/gnunet-service-transport_validation.c:1497 7359#: src/transport/gnunet-service-transport_validation.c:1499
7540msgid "# PONGs dropped, no matching pending validation" 7360msgid "# PONGs dropped, no matching pending validation"
7541msgstr "" 7361msgstr ""
7542 7362
7543#: src/transport/gnunet-service-transport_validation.c:1515 7363#: src/transport/gnunet-service-transport_validation.c:1517
7544msgid "# PONGs dropped, signature expired" 7364msgid "# PONGs dropped, signature expired"
7545msgstr "" 7365msgstr ""
7546 7366
7547#: src/transport/gnunet-service-transport_validation.c:1570 7367#: src/transport/gnunet-service-transport_validation.c:1572
7548msgid "# validations succeeded" 7368msgid "# validations succeeded"
7549msgstr "" 7369msgstr ""
7550 7370
7551#: src/transport/gnunet-service-transport_validation.c:1625 7371#: src/transport/gnunet-service-transport_validation.c:1627
7552#, fuzzy 7372#, fuzzy
7553msgid "# HELLOs given to peerinfo" 7373msgid "# HELLOs given to peerinfo"
7554msgstr "Meddelande mottaget från klient är ogiltig.\n" 7374msgstr "Meddelande mottaget från klient är ogiltig.\n"
7555 7375
7556#: src/transport/gnunet-transport.c:411 7376#: src/transport/gnunet-transport.c:413
7557#, fuzzy, c-format 7377#, fuzzy, c-format
7558msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" 7378msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
7559msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 7379msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
7560 7380
7561#: src/transport/gnunet-transport.c:421 7381#: src/transport/gnunet-transport.c:423
7562#, c-format 7382#, c-format
7563msgid "Received %llu bytes/s (%llu bytes in %s)\n" 7383msgid "Received %llu bytes/s (%llu bytes in %s)\n"
7564msgstr "" 7384msgstr ""
7565 7385
7566#: src/transport/gnunet-transport.c:465 7386#: src/transport/gnunet-transport.c:467
7567#, fuzzy, c-format 7387#, fuzzy, c-format
7568msgid "Failed to connect to `%s'\n" 7388msgid "Failed to connect to `%s'\n"
7569msgstr "Misslyckades att ansluta till gnunetd.\n" 7389msgstr "Misslyckades att ansluta till gnunetd.\n"
7570 7390
7571#: src/transport/gnunet-transport.c:478 7391#: src/transport/gnunet-transport.c:480
7572#, fuzzy, c-format 7392#, fuzzy, c-format
7573msgid "Failed to resolve address for peer `%s'\n" 7393msgid "Failed to resolve address for peer `%s'\n"
7574msgstr "Misslyckades att binda till UDP-port %d.\n" 7394msgstr "Misslyckades att binda till UDP-port %d.\n"
7575 7395
7576#: src/transport/gnunet-transport.c:492 7396#: src/transport/gnunet-transport.c:494
7577#, fuzzy 7397#, fuzzy
7578msgid "Failed to list connections, timeout occurred\n" 7398msgid "Failed to list connections, timeout occurred\n"
7579msgstr "Misslyckades att ansluta till gnunetd.\n" 7399msgstr "Misslyckades att ansluta till gnunetd.\n"
7580 7400
7581#: src/transport/gnunet-transport.c:525 7401#: src/transport/gnunet-transport.c:527
7582#, fuzzy, c-format 7402#, fuzzy, c-format
7583msgid "Transmitting %u bytes\n" 7403msgid "Transmitting %u bytes\n"
7584msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 7404msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
7585 7405
7586#: src/transport/gnunet-transport.c:559 7406#: src/transport/gnunet-transport.c:561
7587#, c-format 7407#, c-format
7588msgid "" 7408msgid ""
7589"Successfully connected to `%s', starting to send benchmark data in %u Kb " 7409"Successfully connected to `%s', starting to send benchmark data in %u Kb "
7590"blocks\n" 7410"blocks\n"
7591msgstr "" 7411msgstr ""
7592 7412
7593#: src/transport/gnunet-transport.c:590 7413#: src/transport/gnunet-transport.c:592
7594#, fuzzy, c-format 7414#, fuzzy, c-format
7595msgid "Disconnected from peer `%s' while benchmarking\n" 7415msgid "Disconnected from peer `%s' while benchmarking\n"
7596msgstr "\"%s\" ansluten till \"%s\".\n" 7416msgstr "\"%s\" ansluten till \"%s\".\n"
7597 7417
7598#: src/transport/gnunet-transport.c:614 src/transport/gnunet-transport.c:643 7418#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
7599#, c-format 7419#, c-format
7600msgid "%24s: %-17s %4s (%u connections in total)\n" 7420msgid "%24s: %-17s %4s (%u connections in total)\n"
7601msgstr "" 7421msgstr ""
7602 7422
7603#: src/transport/gnunet-transport.c:616 7423#: src/transport/gnunet-transport.c:618
7604#, fuzzy 7424#, fuzzy
7605msgid "Connected to" 7425msgid "Connected to"
7606msgstr "\"%s\" ansluten till \"%s\".\n" 7426msgstr "\"%s\" ansluten till \"%s\".\n"
7607 7427
7608#: src/transport/gnunet-transport.c:645 7428#: src/transport/gnunet-transport.c:647
7609#, fuzzy 7429#, fuzzy
7610msgid "Disconnected from" 7430msgid "Disconnected from"
7611msgstr "\"%s\" ansluten till \"%s\".\n" 7431msgstr "\"%s\" ansluten till \"%s\".\n"
7612 7432
7613#: src/transport/gnunet-transport.c:680 7433#: src/transport/gnunet-transport.c:682
7614#, fuzzy, c-format 7434#, fuzzy, c-format
7615msgid "Received %u bytes\n" 7435msgid "Received %u bytes\n"
7616msgstr "mottog ogiltigt \"%s\" meddelande\n" 7436msgstr "mottog ogiltigt \"%s\" meddelande\n"
7617 7437
7618#: src/transport/gnunet-transport.c:717 7438#: src/transport/gnunet-transport.c:719
7619#, c-format 7439#, c-format
7620msgid "Peer `%s': %s %s in state `%s' until %s\n" 7440msgid "Peer `%s': %s %s in state `%s' until %s\n"
7621msgstr "" 7441msgstr ""
7622 7442
7623#: src/transport/gnunet-transport.c:729 7443#: src/transport/gnunet-transport.c:731
7624#, fuzzy, c-format 7444#, fuzzy, c-format
7625msgid "Peer `%s': %s %s\n" 7445msgid "Peer `%s': %s %s\n"
7626msgstr "Jag är ändpunkt \"%s\".\n" 7446msgstr "Jag är ändpunkt \"%s\".\n"
7627 7447
7628#: src/transport/gnunet-transport.c:1142 7448#: src/transport/gnunet-transport.c:1144
7629#, fuzzy 7449#, fuzzy
7630msgid "Monitor disconnected from transport service. Reconnecting.\n" 7450msgid "Monitor disconnected from transport service. Reconnecting.\n"
7631msgstr "Misslyckades att ansluta till gnunetd.\n" 7451msgstr "Misslyckades att ansluta till gnunetd.\n"
7632 7452
7633#: src/transport/gnunet-transport.c:1249 7453#: src/transport/gnunet-transport.c:1251
7634#, c-format 7454#, c-format
7635msgid "" 7455msgid ""
7636"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, " 7456"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
7637"%s, %s %s\n" 7457"%s, %s %s\n"
7638msgstr "" 7458msgstr ""
7639 7459
7640#: src/transport/gnunet-transport.c:1262 7460#: src/transport/gnunet-transport.c:1264
7641#, c-format 7461#, c-format
7642msgid "" 7462msgid ""
7643"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n" 7463"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
7644msgstr "" 7464msgstr ""
7645 7465
7646#: src/transport/gnunet-transport.c:1292 7466#: src/transport/gnunet-transport.c:1294
7647#, fuzzy 7467#, fuzzy
7648msgid "Failed to connect to transport service for disconnection\n" 7468msgid "Failed to connect to transport service for disconnection\n"
7649msgstr "Misslyckades att ansluta till gnunetd.\n" 7469msgstr "Misslyckades att ansluta till gnunetd.\n"
7650 7470
7651#: src/transport/gnunet-transport.c:1298 7471#: src/transport/gnunet-transport.c:1300
7652msgid "Blacklisting request in place, stop with CTRL-C\n" 7472msgid "Blacklisting request in place, stop with CTRL-C\n"
7653msgstr "" 7473msgstr ""
7654 7474
7655#: src/transport/gnunet-transport.c:1323 src/transport/gnunet-transport.c:1353 7475#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
7656#: src/transport/gnunet-transport.c:1406 7476#: src/transport/gnunet-transport.c:1408
7657#, fuzzy 7477#, fuzzy
7658msgid "Failed to connect to transport service\n" 7478msgid "Failed to connect to transport service\n"
7659msgstr "Misslyckades att ansluta till gnunetd.\n" 7479msgstr "Misslyckades att ansluta till gnunetd.\n"
7660 7480
7661#: src/transport/gnunet-transport.c:1360 7481#: src/transport/gnunet-transport.c:1362
7662msgid "Starting to receive benchmark data\n" 7482msgid "Starting to receive benchmark data\n"
7663msgstr "" 7483msgstr ""
7664 7484
7665#: src/transport/gnunet-transport.c:1431 7485#: src/transport/gnunet-transport.c:1433
7666#, fuzzy 7486#, fuzzy
7667msgid "print information for all peers (instead of only connected peers)" 7487msgid "print information for all peers (instead of only connected peers)"
7668msgstr "Skriv ut information om GNUnets motparter." 7488msgstr "Skriv ut information om GNUnets motparter."
7669 7489
7670#: src/transport/gnunet-transport.c:1435 7490#: src/transport/gnunet-transport.c:1437
7671msgid "measure how fast we are receiving data from all peers (until CTRL-C)" 7491msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
7672msgstr "" 7492msgstr ""
7673 7493
7674#: src/transport/gnunet-transport.c:1439 7494#: src/transport/gnunet-transport.c:1441
7675#, fuzzy 7495#, fuzzy
7676msgid "disconnect from a peer" 7496msgid "disconnect from a peer"
7677msgstr "Misslyckades att ansluta till gnunetd.\n" 7497msgstr "Misslyckades att ansluta till gnunetd.\n"
7678 7498
7679#: src/transport/gnunet-transport.c:1443 7499#: src/transport/gnunet-transport.c:1445
7680#, fuzzy 7500#, fuzzy
7681msgid "provide information about all current connections (once)" 7501msgid "provide information about all current connections (once)"
7682msgstr "Skriv ut information om GNUnets motparter." 7502msgstr "Skriv ut information om GNUnets motparter."
7683 7503
7684#: src/transport/gnunet-transport.c:1451 7504#: src/transport/gnunet-transport.c:1453
7685#, fuzzy 7505#, fuzzy
7686msgid "" 7506msgid ""
7687"provide information about all connects and disconnect events (continuously)" 7507"provide information about all connects and disconnect events (continuously)"
7688msgstr "Skriv ut information om GNUnets motparter." 7508msgstr "Skriv ut information om GNUnets motparter."
7689 7509
7690#: src/transport/gnunet-transport.c:1455 7510#: src/transport/gnunet-transport.c:1457
7691#, fuzzy 7511#, fuzzy
7692msgid "do not resolve hostnames" 7512msgid "do not resolve hostnames"
7693msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 7513msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
7694 7514
7695#: src/transport/gnunet-transport.c:1460 7515#: src/transport/gnunet-transport.c:1462
7696#: src/transport/gnunet-transport-profiler.c:639 7516#: src/transport/gnunet-transport-profiler.c:641
7697msgid "peer identity" 7517msgid "peer identity"
7698msgstr "" 7518msgstr ""
7699 7519
7700#: src/transport/gnunet-transport.c:1464 7520#: src/transport/gnunet-transport.c:1466
7701msgid "monitor plugin sessions" 7521msgid "monitor plugin sessions"
7702msgstr "" 7522msgstr ""
7703 7523
7704#: src/transport/gnunet-transport.c:1469 7524#: src/transport/gnunet-transport.c:1471
7705msgid "send data for benchmarking to the other peer (until CTRL-C)" 7525msgid "send data for benchmarking to the other peer (until CTRL-C)"
7706msgstr "" 7526msgstr ""
7707 7527
7708#: src/transport/gnunet-transport.c:1480 7528#: src/transport/gnunet-transport.c:1482
7709#: src/transport/gnunet-transport-profiler.c:650 7529#: src/transport/gnunet-transport-profiler.c:652
7710#, fuzzy 7530#, fuzzy
7711msgid "Direct access to transport service." 7531msgid "Direct access to transport service."
7712msgstr "Misslyckades att ansluta till gnunetd.\n" 7532msgstr "Misslyckades att ansluta till gnunetd.\n"
7713 7533
7714#: src/transport/gnunet-transport-profiler.c:217 7534#: src/transport/gnunet-transport-profiler.c:219
7715#, c-format 7535#, c-format
7716msgid "%llu B in %llu ms == %.2f KB/s!\n" 7536msgid "%llu B in %llu ms == %.2f KB/s!\n"
7717msgstr "" 7537msgstr ""
7718 7538
7719#: src/transport/gnunet-transport-profiler.c:615 7539#: src/transport/gnunet-transport-profiler.c:617
7720msgid "send data to peer" 7540msgid "send data to peer"
7721msgstr "" 7541msgstr ""
7722 7542
7723#: src/transport/gnunet-transport-profiler.c:619 7543#: src/transport/gnunet-transport-profiler.c:621
7724#, fuzzy 7544#, fuzzy
7725msgid "receive data from peer" 7545msgid "receive data from peer"
7726msgstr "# byte mottagna av typen %d" 7546msgstr "# byte mottagna av typen %d"
7727 7547
7728#: src/transport/gnunet-transport-profiler.c:624 7548#: src/transport/gnunet-transport-profiler.c:626
7729#, fuzzy 7549#, fuzzy
7730msgid "iterations" 7550msgid "iterations"
7731msgstr "Visa alla alternativ" 7551msgstr "Visa alla alternativ"
7732 7552
7733#: src/transport/gnunet-transport-profiler.c:629 7553#: src/transport/gnunet-transport-profiler.c:631
7734#, fuzzy 7554#, fuzzy
7735msgid "number of messages to send" 7555msgid "number of messages to send"
7736msgstr "antal meddelanden att använda per iteration" 7556msgstr "antal meddelanden att använda per iteration"
7737 7557
7738#: src/transport/gnunet-transport-profiler.c:634 7558#: src/transport/gnunet-transport-profiler.c:636
7739#, fuzzy 7559#, fuzzy
7740msgid "message size to use" 7560msgid "message size to use"
7741msgstr "meddelandestorlek" 7561msgstr "meddelandestorlek"
7742 7562
7743#: src/transport/plugin_transport_http_client.c:1472 7563#: src/transport/plugin_transport_http_client.c:1474
7744#: src/transport/plugin_transport_http_server.c:2310 7564#: src/transport/plugin_transport_http_server.c:2312
7745#: src/transport/plugin_transport_http_server.c:3524 7565#: src/transport/plugin_transport_http_server.c:3530
7746#: src/transport/plugin_transport_tcp.c:3889 7566#: src/transport/plugin_transport_tcp.c:3895
7747#: src/transport/plugin_transport_tcp.c:3896 7567#: src/transport/plugin_transport_tcp.c:3902
7748#: src/transport/plugin_transport_xt.c:3897 7568#: src/transport/plugin_transport_xt.c:3899
7749#: src/transport/plugin_transport_xt.c:3904 7569#: src/transport/plugin_transport_xt.c:3906
7750msgid "TCP_STEALTH not supported on this platform.\n" 7570msgid "TCP_STEALTH not supported on this platform.\n"
7751msgstr "" 7571msgstr ""
7752 7572
7753#: src/transport/plugin_transport_http_client.c:2113 7573#: src/transport/plugin_transport_http_client.c:2115
7754#, c-format 7574#, c-format
7755msgid "Could not initialize curl multi handle, failed to start %s plugin!\n" 7575msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
7756msgstr "" 7576msgstr ""
7757 7577
7758#: src/transport/plugin_transport_http_client.c:2162 7578#: src/transport/plugin_transport_http_client.c:2164
7759#: src/transport/plugin_transport_http_server.c:3239 7579#: src/transport/plugin_transport_http_server.c:3245
7760#, fuzzy, c-format 7580#, fuzzy, c-format
7761msgid "Shutting down plugin `%s'\n" 7581msgid "Shutting down plugin `%s'\n"
7762msgstr "Testar transport(er) %s\n" 7582msgstr "Testar transport(er) %s\n"
7763 7583
7764#: src/transport/plugin_transport_http_client.c:2179 7584#: src/transport/plugin_transport_http_client.c:2181
7765#: src/transport/plugin_transport_http_server.c:3309 7585#: src/transport/plugin_transport_http_server.c:3315
7766#, fuzzy, c-format 7586#, fuzzy, c-format
7767msgid "Shutdown for plugin `%s' complete\n" 7587msgid "Shutdown for plugin `%s' complete\n"
7768msgstr "" 7588msgstr ""
7769"Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n" 7589"Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n"
7770 7590
7771#: src/transport/plugin_transport_http_client.c:2213 7591#: src/transport/plugin_transport_http_client.c:2215
7772#, fuzzy, c-format 7592#, fuzzy, c-format
7773msgid "Maximum number of requests is %u\n" 7593msgid "Maximum number of requests is %u\n"
7774msgstr "Maximalt antal chattklienter uppnått.\n" 7594msgstr "Maximalt antal chattklienter uppnått.\n"
7775 7595
7776#: src/transport/plugin_transport_http_server.c:1754 7596#: src/transport/plugin_transport_http_server.c:1756
7777#, c-format 7597#, c-format
7778msgid "" 7598msgid ""
7779"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data " 7599"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data "
7780"size %u\n" 7600"size %u\n"
7781msgstr "" 7601msgstr ""
7782 7602
7783#: src/transport/plugin_transport_http_server.c:2026 7603#: src/transport/plugin_transport_http_server.c:2028
7784#, c-format 7604#, c-format
7785msgid "Accepting connection (%u of %u) from `%s'\n" 7605msgid "Accepting connection (%u of %u) from `%s'\n"
7786msgstr "" 7606msgstr ""
7787 7607
7788#: src/transport/plugin_transport_http_server.c:2034 7608#: src/transport/plugin_transport_http_server.c:2036
7789#, c-format 7609#, c-format
7790msgid "" 7610msgid ""
7791"Server reached maximum number connections (%u), rejecting new connection\n" 7611"Server reached maximum number connections (%u), rejecting new connection\n"
7792msgstr "" 7612msgstr ""
7793 7613
7794#: src/transport/plugin_transport_http_server.c:2184 7614#: src/transport/plugin_transport_http_server.c:2186
7795msgid "" 7615msgid ""
7796"Could not create a new TLS certificate, program `gnunet-transport-" 7616"Could not create a new TLS certificate, program `gnunet-transport-"
7797"certificate-creation' could not be started!\n" 7617"certificate-creation' could not be started!\n"
7798msgstr "" 7618msgstr ""
7799 7619
7800#: src/transport/plugin_transport_http_server.c:2207 7620#: src/transport/plugin_transport_http_server.c:2209
7801#, c-format 7621#, c-format
7802msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n" 7622msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n"
7803msgstr "" 7623msgstr ""
7804 7624
7805#: src/transport/plugin_transport_http_server.c:2336 7625#: src/transport/plugin_transport_http_server.c:2338
7806msgid "Could not load or create server certificate! Loading plugin failed!\n" 7626msgid "Could not load or create server certificate! Loading plugin failed!\n"
7807msgstr "" 7627msgstr ""
7808 7628
7809#: src/transport/plugin_transport_http_server.c:2648 7629#: src/transport/plugin_transport_http_server.c:2654
7810#, fuzzy 7630#, fuzzy
7811msgid "Require valid port number for service in configuration!\n" 7631msgid "Require valid port number for service in configuration!\n"
7812msgstr "Inga applikationer definierade i konfiguration!\n" 7632msgstr "Inga applikationer definierade i konfiguration!\n"
7813 7633
7814#: src/transport/plugin_transport_http_server.c:2813 7634#: src/transport/plugin_transport_http_server.c:2819
7815#, c-format 7635#, c-format
7816msgid "Found %u addresses to report to NAT service\n" 7636msgid "Found %u addresses to report to NAT service\n"
7817msgstr "" 7637msgstr ""
7818 7638
7819#: src/transport/plugin_transport_http_server.c:2899 7639#: src/transport/plugin_transport_http_server.c:2905
7820#: src/transport/plugin_transport_udp.c:3621 7640#: src/transport/plugin_transport_udp.c:3627
7821#: src/transport/plugin_transport_xu.c:2047 7641#: src/transport/plugin_transport_xu.c:2049
7822msgid "Disabling IPv6 since it is not supported on this system!\n" 7642msgid "Disabling IPv6 since it is not supported on this system!\n"
7823msgstr "" 7643msgstr ""
7824 7644
7825#: src/transport/plugin_transport_http_server.c:3005 7645#: src/transport/plugin_transport_http_server.c:3011
7826#, c-format 7646#, c-format
7827msgid "IPv4 support is %s\n" 7647msgid "IPv4 support is %s\n"
7828msgstr "" 7648msgstr ""
7829 7649
7830#: src/transport/plugin_transport_http_server.c:3020 7650#: src/transport/plugin_transport_http_server.c:3026
7831#, c-format 7651#, c-format
7832msgid "IPv6 support is %s\n" 7652msgid "IPv6 support is %s\n"
7833msgstr "" 7653msgstr ""
7834 7654
7835#: src/transport/plugin_transport_http_server.c:3026 7655#: src/transport/plugin_transport_http_server.c:3032
7836msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n" 7656msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n"
7837msgstr "" 7657msgstr ""
7838 7658
7839#: src/transport/plugin_transport_http_server.c:3037 7659#: src/transport/plugin_transport_http_server.c:3043
7840#, fuzzy 7660#, fuzzy
7841msgid "Port is required! Fix in configuration\n" 7661msgid "Port is required! Fix in configuration\n"
7842msgstr " gconfig\tGTK-konfiguration\n" 7662msgstr " gconfig\tGTK-konfiguration\n"
7843 7663
7844#: src/transport/plugin_transport_http_server.c:3043 7664#: src/transport/plugin_transport_http_server.c:3049
7845#, fuzzy, c-format 7665#, fuzzy, c-format
7846msgid "Using port %u\n" 7666msgid "Using port %u\n"
7847msgstr "Testar transport(er) %s\n" 7667msgstr "Testar transport(er) %s\n"
7848 7668
7849#: src/transport/plugin_transport_http_server.c:3062 7669#: src/transport/plugin_transport_http_server.c:3068
7850#, fuzzy, c-format 7670#, fuzzy, c-format
7851msgid "Specific IPv4 address `%s' in configuration file is invalid!\n" 7671msgid "Specific IPv4 address `%s' in configuration file is invalid!\n"
7852msgstr "" 7672msgstr ""
7853"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s" 7673"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s"
7854"\".\n" 7674"\".\n"
7855 7675
7856#: src/transport/plugin_transport_http_server.c:3097 7676#: src/transport/plugin_transport_http_server.c:3103
7857#, fuzzy, c-format 7677#, fuzzy, c-format
7858msgid "Specific IPv6 address `%s' in configuration file is invalid!\n" 7678msgid "Specific IPv6 address `%s' in configuration file is invalid!\n"
7859msgstr "" 7679msgstr ""
7860"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s" 7680"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s"
7861"\".\n" 7681"\".\n"
7862 7682
7863#: src/transport/plugin_transport_http_server.c:3172 7683#: src/transport/plugin_transport_http_server.c:3178
7864#, fuzzy, c-format 7684#, fuzzy, c-format
7865msgid "Using external hostname `%s'\n" 7685msgid "Using external hostname `%s'\n"
7866msgstr "Startade samling \"%s\".\n" 7686msgstr "Startade samling \"%s\".\n"
7867 7687
7868#: src/transport/plugin_transport_http_server.c:3193 7688#: src/transport/plugin_transport_http_server.c:3199
7869#, fuzzy, c-format 7689#, fuzzy, c-format
7870msgid "Notifying transport only about hostname `%s'\n" 7690msgid "Notifying transport only about hostname `%s'\n"
7871msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 7691msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
7872 7692
7873#: src/transport/plugin_transport_http_server.c:3210 7693#: src/transport/plugin_transport_http_server.c:3216
7874#, fuzzy, c-format 7694#, fuzzy, c-format
7875msgid "Maximum number of connections is %u\n" 7695msgid "Maximum number of connections is %u\n"
7876msgstr "Maximalt antal chattklienter uppnått.\n" 7696msgstr "Maximalt antal chattklienter uppnått.\n"
7877 7697
7878#: src/transport/plugin_transport_http_server.c:3536 7698#: src/transport/plugin_transport_http_server.c:3542
7879#, fuzzy 7699#, fuzzy
7880msgid "Unable to compile URL regex\n" 7700msgid "Unable to compile URL regex\n"
7881msgstr "Kunde inte initiera SQLite.\n" 7701msgstr "Kunde inte initiera SQLite.\n"
7882 7702
7883#: src/transport/plugin_transport_smtp.c:221 7703#: src/transport/plugin_transport_smtp.c:223
7884#, fuzzy, c-format 7704#, fuzzy, c-format
7885msgid "Received malformed message via %s. Ignored.\n" 7705msgid "Received malformed message via %s. Ignored.\n"
7886msgstr "Mottog ogiltigt \"%s\" meddelande från \"%s\".\n" 7706msgstr "Mottog ogiltigt \"%s\" meddelande från \"%s\".\n"
7887 7707
7888# capped är inte ett bra ord IMHO 7708# capped är inte ett bra ord IMHO
7889#: src/transport/plugin_transport_smtp.c:308 7709#: src/transport/plugin_transport_smtp.c:310
7890#, fuzzy 7710#, fuzzy
7891msgid "SMTP filter string to invalid, lacks ': '\n" 7711msgid "SMTP filter string to invalid, lacks ': '\n"
7892msgstr "SMTP-filtersträng för lång, kapad till \"%s\"\n" 7712msgstr "SMTP-filtersträng för lång, kapad till \"%s\"\n"
7893 7713
7894# capped är inte ett bra ord IMHO 7714# capped är inte ett bra ord IMHO
7895#: src/transport/plugin_transport_smtp.c:317 7715#: src/transport/plugin_transport_smtp.c:319
7896#, c-format 7716#, c-format
7897msgid "SMTP filter string to long, capped to `%s'\n" 7717msgid "SMTP filter string to long, capped to `%s'\n"
7898msgstr "SMTP-filtersträng för lång, kapad till \"%s\"\n" 7718msgstr "SMTP-filtersträng för lång, kapad till \"%s\"\n"
7899 7719
7900#: src/transport/plugin_transport_smtp.c:412 7720#: src/transport/plugin_transport_smtp.c:414
7901#: src/transport/plugin_transport_smtp.c:422 7721#: src/transport/plugin_transport_smtp.c:424
7902#: src/transport/plugin_transport_smtp.c:435 7722#: src/transport/plugin_transport_smtp.c:437
7903#: src/transport/plugin_transport_smtp.c:454 7723#: src/transport/plugin_transport_smtp.c:456
7904#: src/transport/plugin_transport_smtp.c:477 7724#: src/transport/plugin_transport_smtp.c:479
7905#: src/transport/plugin_transport_smtp.c:485 7725#: src/transport/plugin_transport_smtp.c:487
7906#: src/transport/plugin_transport_smtp.c:498 7726#: src/transport/plugin_transport_smtp.c:500
7907#: src/transport/plugin_transport_smtp.c:509 7727#: src/transport/plugin_transport_smtp.c:511
7908#, fuzzy, c-format 7728#, fuzzy, c-format
7909msgid "SMTP: `%s' failed: %s.\n" 7729msgid "SMTP: `%s' failed: %s.\n"
7910msgstr "\"%s\" %s misslyckades: %s\n" 7730msgstr "\"%s\" %s misslyckades: %s\n"
7911 7731
7912#: src/transport/plugin_transport_smtp.c:650 7732#: src/transport/plugin_transport_smtp.c:652
7913msgid "No email-address specified, can not start SMTP transport.\n" 7733msgid "No email-address specified, can not start SMTP transport.\n"
7914msgstr "" 7734msgstr ""
7915 7735
7916#: src/transport/plugin_transport_smtp.c:662 7736#: src/transport/plugin_transport_smtp.c:664
7917#, fuzzy 7737#, fuzzy
7918msgid "# bytes received via SMTP" 7738msgid "# bytes received via SMTP"
7919msgstr "# byte mottogs via TCP" 7739msgstr "# byte mottogs via TCP"
7920 7740
7921#: src/transport/plugin_transport_smtp.c:663 7741#: src/transport/plugin_transport_smtp.c:665
7922#, fuzzy 7742#, fuzzy
7923msgid "# bytes sent via SMTP" 7743msgid "# bytes sent via SMTP"
7924msgstr "# byte skickades via TCP" 7744msgstr "# byte skickades via TCP"
7925 7745
7926#: src/transport/plugin_transport_smtp.c:665 7746#: src/transport/plugin_transport_smtp.c:667
7927#, fuzzy 7747#, fuzzy
7928msgid "# bytes dropped by SMTP (outgoing)" 7748msgid "# bytes dropped by SMTP (outgoing)"
7929msgstr "# byte kastade via TCP (utgående)" 7749msgstr "# byte kastade via TCP (utgående)"
7930 7750
7931#: src/transport/plugin_transport_tcp.c:1545 7751#: src/transport/plugin_transport_tcp.c:1551
7932#: src/transport/plugin_transport_tcp.c:2871 7752#: src/transport/plugin_transport_tcp.c:2877
7933#: src/transport/plugin_transport_xt.c:1551 7753#: src/transport/plugin_transport_xt.c:1553
7934#: src/transport/plugin_transport_xt.c:2877 7754#: src/transport/plugin_transport_xt.c:2879
7935#, c-format 7755#, c-format
7936msgid "Unexpected address length: %u bytes\n" 7756msgid "Unexpected address length: %u bytes\n"
7937msgstr "" 7757msgstr ""
7938 7758
7939#: src/transport/plugin_transport_tcp.c:1728 7759#: src/transport/plugin_transport_tcp.c:1734
7940#: src/transport/plugin_transport_tcp.c:1952 7760#: src/transport/plugin_transport_tcp.c:1958
7941#: src/transport/plugin_transport_tcp.c:3135 7761#: src/transport/plugin_transport_tcp.c:3141
7942#: src/transport/plugin_transport_tcp.c:4012 7762#: src/transport/plugin_transport_tcp.c:4018
7943#: src/transport/plugin_transport_xt.c:1734 7763#: src/transport/plugin_transport_xt.c:1736
7944#: src/transport/plugin_transport_xt.c:1958 7764#: src/transport/plugin_transport_xt.c:1960
7945#: src/transport/plugin_transport_xt.c:3141 7765#: src/transport/plugin_transport_xt.c:3143
7946#, fuzzy 7766#, fuzzy
7947msgid "# TCP sessions active" 7767msgid "# TCP sessions active"
7948msgstr "# sessionsnycklar accepterade" 7768msgstr "# sessionsnycklar accepterade"
7949 7769
7950#: src/transport/plugin_transport_tcp.c:1770 7770#: src/transport/plugin_transport_tcp.c:1776
7951#: src/transport/plugin_transport_tcp.c:1934 7771#: src/transport/plugin_transport_tcp.c:1940
7952#: src/transport/plugin_transport_tcp.c:2058 7772#: src/transport/plugin_transport_tcp.c:2064
7953#: src/transport/plugin_transport_tcp.c:2131 7773#: src/transport/plugin_transport_tcp.c:2137
7954#: src/transport/plugin_transport_tcp.c:2231 7774#: src/transport/plugin_transport_tcp.c:2237
7955#: src/transport/plugin_transport_tcp.c:2256 7775#: src/transport/plugin_transport_tcp.c:2262
7956#: src/transport/plugin_transport_xt.c:1776 7776#: src/transport/plugin_transport_xt.c:1778
7957#: src/transport/plugin_transport_xt.c:1940 7777#: src/transport/plugin_transport_xt.c:1942
7958#: src/transport/plugin_transport_xt.c:2064 7778#: src/transport/plugin_transport_xt.c:2066
7959#: src/transport/plugin_transport_xt.c:2137 7779#: src/transport/plugin_transport_xt.c:2139
7960#: src/transport/plugin_transport_xt.c:2237 7780#: src/transport/plugin_transport_xt.c:2239
7961#: src/transport/plugin_transport_xt.c:2262 7781#: src/transport/plugin_transport_xt.c:2264
7962#, fuzzy 7782#, fuzzy
7963msgid "# bytes currently in TCP buffers" 7783msgid "# bytes currently in TCP buffers"
7964msgstr "# byte skickades via TCP" 7784msgstr "# byte skickades via TCP"
7965 7785
7966#: src/transport/plugin_transport_tcp.c:1773 7786#: src/transport/plugin_transport_tcp.c:1779
7967#: src/transport/plugin_transport_xt.c:1779 7787#: src/transport/plugin_transport_xt.c:1781
7968#, fuzzy 7788#, fuzzy
7969msgid "# bytes discarded by TCP (disconnect)" 7789msgid "# bytes discarded by TCP (disconnect)"
7970msgstr "# byte kastade via TCP (utgående)" 7790msgstr "# byte kastade via TCP (utgående)"
7971 7791
7972#: src/transport/plugin_transport_tcp.c:2061 7792#: src/transport/plugin_transport_tcp.c:2067
7973#: src/transport/plugin_transport_xt.c:2067 7793#: src/transport/plugin_transport_xt.c:2069
7974#, fuzzy 7794#, fuzzy
7975msgid "# bytes discarded by TCP (timeout)" 7795msgid "# bytes discarded by TCP (timeout)"
7976msgstr "# byte kastade via TCP (utgående)" 7796msgstr "# byte kastade via TCP (utgående)"
7977 7797
7978#: src/transport/plugin_transport_tcp.c:2135 7798#: src/transport/plugin_transport_tcp.c:2141
7979#: src/transport/plugin_transport_xt.c:2141 7799#: src/transport/plugin_transport_xt.c:2143
7980#, fuzzy 7800#, fuzzy
7981msgid "# bytes transmitted via TCP" 7801msgid "# bytes transmitted via TCP"
7982msgstr "# byte skickade av typen %d" 7802msgstr "# byte skickade av typen %d"
7983 7803
7984#: src/transport/plugin_transport_tcp.c:2533 7804#: src/transport/plugin_transport_tcp.c:2539
7985#: src/transport/plugin_transport_xt.c:2539 7805#: src/transport/plugin_transport_xt.c:2541
7986msgid "# requests to create session with invalid address" 7806msgid "# requests to create session with invalid address"
7987msgstr "" 7807msgstr ""
7988 7808
7989#: src/transport/plugin_transport_tcp.c:2709 7809#: src/transport/plugin_transport_tcp.c:2715
7990#: src/transport/plugin_transport_xt.c:2715 7810#: src/transport/plugin_transport_xt.c:2717
7991msgid "# transport-service disconnect requests for TCP" 7811msgid "# transport-service disconnect requests for TCP"
7992msgstr "" 7812msgstr ""
7993 7813
7994#: src/transport/plugin_transport_tcp.c:3201 7814#: src/transport/plugin_transport_tcp.c:3207
7995#: src/transport/plugin_transport_xt.c:3207 7815#: src/transport/plugin_transport_xt.c:3209
7996#, fuzzy 7816#, fuzzy
7997msgid "# TCP WELCOME messages received" 7817msgid "# TCP WELCOME messages received"
7998msgstr "# krypterade PONG-meddelanden mottagna" 7818msgstr "# krypterade PONG-meddelanden mottagna"
7999 7819
8000#: src/transport/plugin_transport_tcp.c:3407 7820#: src/transport/plugin_transport_tcp.c:3413
8001#: src/transport/plugin_transport_xt.c:3413 7821#: src/transport/plugin_transport_xt.c:3415
8002msgid "# bytes received via TCP" 7822msgid "# bytes received via TCP"
8003msgstr "# byte mottogs via TCP" 7823msgstr "# byte mottogs via TCP"
8004 7824
8005#: src/transport/plugin_transport_tcp.c:3458 7825#: src/transport/plugin_transport_tcp.c:3464
8006#: src/transport/plugin_transport_tcp.c:3516 7826#: src/transport/plugin_transport_tcp.c:3522
8007#: src/transport/plugin_transport_xt.c:3464 7827#: src/transport/plugin_transport_xt.c:3466
8008#: src/transport/plugin_transport_xt.c:3522 7828#: src/transport/plugin_transport_xt.c:3524
8009#, fuzzy 7829#, fuzzy
8010msgid "# TCP server connections active" 7830msgid "# TCP server connections active"
8011msgstr "Nätverksanslutning" 7831msgstr "Nätverksanslutning"
8012 7832
8013#: src/transport/plugin_transport_tcp.c:3462 7833#: src/transport/plugin_transport_tcp.c:3468
8014#: src/transport/plugin_transport_xt.c:3468 7834#: src/transport/plugin_transport_xt.c:3470
8015#, fuzzy 7835#, fuzzy
8016msgid "# TCP server connect events" 7836msgid "# TCP server connect events"
8017msgstr "# av anslutna parter" 7837msgstr "# av anslutna parter"
8018 7838
8019#: src/transport/plugin_transport_tcp.c:3468 7839#: src/transport/plugin_transport_tcp.c:3474
8020#: src/transport/plugin_transport_xt.c:3474 7840#: src/transport/plugin_transport_xt.c:3476
8021msgid "TCP connection limit reached, suspending server\n" 7841msgid "TCP connection limit reached, suspending server\n"
8022msgstr "" 7842msgstr ""
8023 7843
8024#: src/transport/plugin_transport_tcp.c:3470 7844#: src/transport/plugin_transport_tcp.c:3476
8025#: src/transport/plugin_transport_xt.c:3476 7845#: src/transport/plugin_transport_xt.c:3478
8026msgid "# TCP service suspended" 7846msgid "# TCP service suspended"
8027msgstr "" 7847msgstr ""
8028 7848
8029#: src/transport/plugin_transport_tcp.c:3510 7849#: src/transport/plugin_transport_tcp.c:3516
8030#: src/transport/plugin_transport_xt.c:3516 7850#: src/transport/plugin_transport_xt.c:3518
8031msgid "# TCP service resumed" 7851msgid "# TCP service resumed"
8032msgstr "" 7852msgstr ""
8033 7853
8034#: src/transport/plugin_transport_tcp.c:3520 7854#: src/transport/plugin_transport_tcp.c:3526
8035#: src/transport/plugin_transport_xt.c:3526 7855#: src/transport/plugin_transport_xt.c:3528
8036msgid "# network-level TCP disconnect events" 7856msgid "# network-level TCP disconnect events"
8037msgstr "" 7857msgstr ""
8038 7858
8039#: src/transport/plugin_transport_tcp.c:3839 7859#: src/transport/plugin_transport_tcp.c:3845
8040#: src/transport/plugin_transport_xt.c:3847 7860#: src/transport/plugin_transport_xt.c:3849
8041#, fuzzy 7861#, fuzzy
8042msgid "Failed to start service.\n" 7862msgid "Failed to start service.\n"
8043msgstr "Misslyckades att starta samling.\n" 7863msgstr "Misslyckades att starta samling.\n"
8044 7864
8045#: src/transport/plugin_transport_tcp.c:4000 7865#: src/transport/plugin_transport_tcp.c:4006
8046#, c-format 7866#, c-format
8047msgid "TCP transport listening on port %llu\n" 7867msgid "TCP transport listening on port %llu\n"
8048msgstr "" 7868msgstr ""
8049 7869
8050#: src/transport/plugin_transport_tcp.c:4004 7870#: src/transport/plugin_transport_tcp.c:4010
8051msgid "TCP transport not listening on any port (client only)\n" 7871msgid "TCP transport not listening on any port (client only)\n"
8052msgstr "" 7872msgstr ""
8053 7873
8054#: src/transport/plugin_transport_tcp.c:4008 7874#: src/transport/plugin_transport_tcp.c:4014
8055#, c-format 7875#, c-format
8056msgid "TCP transport advertises itself as being on port %llu\n" 7876msgid "TCP transport advertises itself as being on port %llu\n"
8057msgstr "" 7877msgstr ""
8058 7878
8059#: src/transport/plugin_transport_udp_broadcasting.c:166 7879#: src/transport/plugin_transport_udp_broadcasting.c:168
8060#, fuzzy 7880#, fuzzy
8061msgid "# Multicast HELLO beacons received via UDP" 7881msgid "# Multicast HELLO beacons received via UDP"
8062msgstr "# krypterade PONG-meddelanden mottagna" 7882msgstr "# krypterade PONG-meddelanden mottagna"
8063 7883
8064#: src/transport/plugin_transport_udp_broadcasting.c:546 7884#: src/transport/plugin_transport_udp_broadcasting.c:548
8065msgid "" 7885msgid ""
8066"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" 7886"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
8067msgstr "" 7887msgstr ""
8068 7888
8069#: src/transport/plugin_transport_udp_broadcasting.c:563 7889#: src/transport/plugin_transport_udp_broadcasting.c:565
8070#, c-format 7890#, c-format
8071msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" 7891msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
8072msgstr "" 7892msgstr ""
8073 7893
8074#: src/transport/plugin_transport_udp.c:3365 7894#: src/transport/plugin_transport_udp.c:3371
8075#, c-format 7895#, c-format
8076msgid "" 7896msgid ""
8077"UDP could not transmit message to `%s': Network seems down, please check " 7897"UDP could not transmit message to `%s': Network seems down, please check "
8078"your network configuration\n" 7898"your network configuration\n"
8079msgstr "" 7899msgstr ""
8080 7900
8081#: src/transport/plugin_transport_udp.c:3379 7901#: src/transport/plugin_transport_udp.c:3385
8082msgid "" 7902msgid ""
8083"UDP could not transmit IPv6 message! Please check your network configuration " 7903"UDP could not transmit IPv6 message! Please check your network configuration "
8084"and disable IPv6 if your connection does not have a global IPv6 address\n" 7904"and disable IPv6 if your connection does not have a global IPv6 address\n"
8085msgstr "" 7905msgstr ""
8086 7906
8087#: src/transport/plugin_transport_udp.c:3697 7907#: src/transport/plugin_transport_udp.c:3703
8088#: src/transport/plugin_transport_udp.c:3796 7908#: src/transport/plugin_transport_udp.c:3802
8089#, fuzzy, c-format 7909#, fuzzy, c-format
8090msgid "Failed to bind UDP socket to %s: %s\n" 7910msgid "Failed to bind UDP socket to %s: %s\n"
8091msgstr "Misslyckades att binda till UDP6-port %d.\n" 7911msgstr "Misslyckades att binda till UDP6-port %d.\n"
8092 7912
8093#: src/transport/plugin_transport_udp.c:3715 7913#: src/transport/plugin_transport_udp.c:3721
8094#: src/transport/plugin_transport_xu.c:2141 7914#: src/transport/plugin_transport_xu.c:2143
8095msgid "Disabling IPv4 since it is not supported on this system!\n" 7915msgid "Disabling IPv4 since it is not supported on this system!\n"
8096msgstr "" 7916msgstr ""
8097 7917
8098#: src/transport/plugin_transport_udp.c:3806 7918#: src/transport/plugin_transport_udp.c:3812
8099#, fuzzy 7919#, fuzzy
8100msgid "Failed to open UDP sockets\n" 7920msgid "Failed to open UDP sockets\n"
8101msgstr "Misslyckades att binda till UDP6-port %d.\n" 7921msgstr "Misslyckades att binda till UDP6-port %d.\n"
8102 7922
8103#: src/transport/plugin_transport_udp.c:3877 7923#: src/transport/plugin_transport_udp.c:3883
8104#: src/transport/plugin_transport_udp.c:3891 7924#: src/transport/plugin_transport_udp.c:3897
8105#: src/transport/plugin_transport_xu.c:2299 7925#: src/transport/plugin_transport_xu.c:2301
8106#: src/transport/plugin_transport_xu.c:2313 7926#: src/transport/plugin_transport_xu.c:2315
8107msgid "must be in [0,65535]" 7927msgid "must be in [0,65535]"
8108msgstr "" 7928msgstr ""
8109 7929
8110#: src/transport/plugin_transport_udp.c:3923 7930#: src/transport/plugin_transport_udp.c:3929
8111#: src/transport/plugin_transport_xu.c:2345 7931#: src/transport/plugin_transport_xu.c:2347
8112#, fuzzy 7932#, fuzzy
8113msgid "must be valid IPv4 address" 7933msgid "must be valid IPv4 address"
8114msgstr "\"%s\" är inte tillgänglig." 7934msgstr "\"%s\" är inte tillgänglig."
8115 7935
8116#: src/transport/plugin_transport_udp.c:3950 7936#: src/transport/plugin_transport_udp.c:3956
8117#: src/transport/plugin_transport_xu.c:2372 7937#: src/transport/plugin_transport_xu.c:2374
8118#, fuzzy 7938#, fuzzy
8119msgid "must be valid IPv6 address" 7939msgid "must be valid IPv6 address"
8120msgstr "\"%s\" är inte tillgänglig." 7940msgstr "\"%s\" är inte tillgänglig."
8121 7941
8122#: src/transport/plugin_transport_udp.c:4014 7942#: src/transport/plugin_transport_udp.c:4020
8123#, fuzzy 7943#, fuzzy
8124msgid "Failed to create UDP network sockets\n" 7944msgid "Failed to create UDP network sockets\n"
8125msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 7945msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
8126 7946
8127#: src/transport/plugin_transport_unix.c:1401 7947#: src/transport/plugin_transport_unix.c:1416
8128#, fuzzy, c-format
8129msgid "Cannot create path to `%s'\n"
8130msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
8131
8132#: src/transport/plugin_transport_unix.c:1414
8133#, fuzzy, c-format 7948#, fuzzy, c-format
8134msgid "Cannot bind to `%s'\n" 7949msgid "Cannot bind to `%s'\n"
8135msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 7950msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
8136 7951
8137#: src/transport/plugin_transport_unix.c:1814 7952#: src/transport/plugin_transport_unix.c:1816
8138#, fuzzy 7953#, fuzzy
8139msgid "Failed to open UNIX listen socket\n" 7954msgid "Failed to open UNIX listen socket\n"
8140msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 7955msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
8141 7956
8142#: src/transport/plugin_transport_wlan.c:766 7957#: src/transport/plugin_transport_wlan.c:768
8143msgid "# ACKs sent" 7958msgid "# ACKs sent"
8144msgstr "" 7959msgstr ""
8145 7960
8146#: src/transport/plugin_transport_wlan.c:786 7961#: src/transport/plugin_transport_wlan.c:788
8147#, fuzzy 7962#, fuzzy
8148msgid "# Messages defragmented" 7963msgid "# Messages defragmented"
8149msgstr "# PING-meddelanden skapade" 7964msgstr "# PING-meddelanden skapade"
8150 7965
8151#: src/transport/plugin_transport_wlan.c:827 7966#: src/transport/plugin_transport_wlan.c:829
8152#: src/transport/plugin_transport_wlan.c:912 7967#: src/transport/plugin_transport_wlan.c:914
8153#, fuzzy 7968#, fuzzy
8154msgid "# Sessions allocated" 7969msgid "# Sessions allocated"
8155msgstr "# sessionsnycklar accepterade" 7970msgstr "# sessionsnycklar accepterade"
8156 7971
8157#: src/transport/plugin_transport_wlan.c:1033 7972#: src/transport/plugin_transport_wlan.c:1035
8158#, fuzzy 7973#, fuzzy
8159msgid "# message fragments sent" 7974msgid "# message fragments sent"
8160msgstr "# byte mottogs via TCP" 7975msgstr "# byte mottogs via TCP"
8161 7976
8162#: src/transport/plugin_transport_wlan.c:1062 7977#: src/transport/plugin_transport_wlan.c:1064
8163#, fuzzy 7978#, fuzzy
8164msgid "# messages pending (with fragmentation)" 7979msgid "# messages pending (with fragmentation)"
8165msgstr "# byte mottogs via TCP" 7980msgstr "# byte mottogs via TCP"
8166 7981
8167#: src/transport/plugin_transport_wlan.c:1191 7982#: src/transport/plugin_transport_wlan.c:1193
8168#: src/transport/plugin_transport_wlan.c:1282 7983#: src/transport/plugin_transport_wlan.c:1284
8169#: src/transport/plugin_transport_wlan.c:2303 7984#: src/transport/plugin_transport_wlan.c:2305
8170#, fuzzy 7985#, fuzzy
8171msgid "# MAC endpoints allocated" 7986msgid "# MAC endpoints allocated"
8172msgstr "# byte mottogs via TCP" 7987msgstr "# byte mottogs via TCP"
8173 7988
8174#: src/transport/plugin_transport_wlan.c:1565 7989#: src/transport/plugin_transport_wlan.c:1567
8175#, fuzzy 7990#, fuzzy
8176msgid "# ACKs received" 7991msgid "# ACKs received"
8177msgstr "# byte mottogs via TCP" 7992msgstr "# byte mottogs via TCP"
8178 7993
8179#: src/transport/plugin_transport_wlan.c:1634 7994#: src/transport/plugin_transport_wlan.c:1636
8180#, fuzzy 7995#, fuzzy
8181msgid "# DATA messages discarded due to CRC32 error" 7996msgid "# DATA messages discarded due to CRC32 error"
8182msgstr "Nätverksannonsering avstängd i konfigurationen!\n" 7997msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
8183 7998
8184#: src/transport/plugin_transport_wlan.c:1738 7999#: src/transport/plugin_transport_wlan.c:1740
8185#, fuzzy 8000#, fuzzy
8186msgid "# HELLO beacons sent" 8001msgid "# HELLO beacons sent"
8187msgstr "# byte skickade via UDP" 8002msgstr "# byte skickade via UDP"
8188 8003
8189#: src/transport/plugin_transport_wlan.c:1854 8004#: src/transport/plugin_transport_wlan.c:1856
8190#, fuzzy 8005#, fuzzy
8191msgid "# DATA messages received" 8006msgid "# DATA messages received"
8192msgstr "# krypterade PONG-meddelanden mottagna" 8007msgstr "# krypterade PONG-meddelanden mottagna"
8193 8008
8194#: src/transport/plugin_transport_wlan.c:1888 8009#: src/transport/plugin_transport_wlan.c:1890
8195#, fuzzy 8010#, fuzzy
8196msgid "# DATA messages processed" 8011msgid "# DATA messages processed"
8197msgstr "# krypterade PONG-meddelanden mottagna" 8012msgstr "# krypterade PONG-meddelanden mottagna"
8198 8013
8199#: src/transport/plugin_transport_wlan.c:2278 8014#: src/transport/plugin_transport_wlan.c:2280
8200#, c-format 8015#, c-format
8201msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n" 8016msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n"
8202msgstr "" 8017msgstr ""
8203 8018
8204#: src/transport/plugin_transport_wlan.c:2300 8019#: src/transport/plugin_transport_wlan.c:2302
8205#, fuzzy 8020#, fuzzy
8206msgid "# sessions allocated" 8021msgid "# sessions allocated"
8207msgstr "# sessionsnycklar accepterade" 8022msgstr "# sessionsnycklar accepterade"
8208 8023
8209#: src/transport/plugin_transport_xt.c:4008 8024#: src/transport/plugin_transport_xt.c:4010
8210#, c-format 8025#, c-format
8211msgid "XT transport listening on port %llu\n" 8026msgid "XT transport listening on port %llu\n"
8212msgstr "" 8027msgstr ""
8213 8028
8214#: src/transport/plugin_transport_xt.c:4012 8029#: src/transport/plugin_transport_xt.c:4014
8215msgid "XT transport not listening on any port (client only)\n" 8030msgid "XT transport not listening on any port (client only)\n"
8216msgstr "" 8031msgstr ""
8217 8032
8218#: src/transport/plugin_transport_xt.c:4016 8033#: src/transport/plugin_transport_xt.c:4018
8219#, c-format 8034#, c-format
8220msgid "XT transport advertises itself as being on port %llu\n" 8035msgid "XT transport advertises itself as being on port %llu\n"
8221msgstr "" 8036msgstr ""
8222 8037
8223#: src/transport/plugin_transport_xt.c:4020 8038#: src/transport/plugin_transport_xt.c:4022
8224#, fuzzy 8039#, fuzzy
8225msgid "# XT sessions active" 8040msgid "# XT sessions active"
8226msgstr "# sessionsnycklar accepterade" 8041msgstr "# sessionsnycklar accepterade"
8227 8042
8228#: src/transport/plugin_transport_xu.c:1235 8043#: src/transport/plugin_transport_xu.c:1237
8229#, c-format 8044#, c-format
8230msgid "" 8045msgid ""
8231"XU could not transmit message to `%s': Network seems down, please check your " 8046"XU could not transmit message to `%s': Network seems down, please check your "
8232"network configuration\n" 8047"network configuration\n"
8233msgstr "" 8048msgstr ""
8234 8049
8235#: src/transport/plugin_transport_xu.c:1249 8050#: src/transport/plugin_transport_xu.c:1251
8236msgid "" 8051msgid ""
8237"XU could not transmit IPv6 message! Please check your network configuration " 8052"XU could not transmit IPv6 message! Please check your network configuration "
8238"and disable IPv6 if your connection does not have a global IPv6 address\n" 8053"and disable IPv6 if your connection does not have a global IPv6 address\n"
8239msgstr "" 8054msgstr ""
8240 8055
8241#: src/transport/plugin_transport_xu.c:2123 8056#: src/transport/plugin_transport_xu.c:2125
8242#: src/transport/plugin_transport_xu.c:2222 8057#: src/transport/plugin_transport_xu.c:2224
8243#, fuzzy, c-format 8058#, fuzzy, c-format
8244msgid "Failed to bind XU socket to %s: %s\n" 8059msgid "Failed to bind XU socket to %s: %s\n"
8245msgstr "Misslyckades att binda till UDP6-port %d.\n" 8060msgstr "Misslyckades att binda till UDP6-port %d.\n"
8246 8061
8247#: src/transport/plugin_transport_xu.c:2232 8062#: src/transport/plugin_transport_xu.c:2234
8248#, fuzzy 8063#, fuzzy
8249msgid "Failed to open XU sockets\n" 8064msgid "Failed to open XU sockets\n"
8250msgstr "Misslyckades att binda till UDP6-port %d.\n" 8065msgstr "Misslyckades att binda till UDP6-port %d.\n"
8251 8066
8252#: src/transport/plugin_transport_xu.c:2396 8067#: src/transport/plugin_transport_xu.c:2398
8253#, fuzzy 8068#, fuzzy
8254msgid "Failed to create XU network sockets\n" 8069msgid "Failed to create XU network sockets\n"
8255msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n" 8070msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
8256 8071
8257#: src/transport/tcp_connection_legacy.c:450 8072#: src/transport/tcp_connection_legacy.c:452
8258#, fuzzy, c-format 8073#, fuzzy, c-format
8259msgid "Access denied to `%s'\n" 8074msgid "Access denied to `%s'\n"
8260msgstr "Åtkomst nekad för \"%s\" vid %s:%d.\n" 8075msgstr "Åtkomst nekad för \"%s\" vid %s:%d.\n"
8261 8076
8262#: src/transport/tcp_connection_legacy.c:467 8077#: src/transport/tcp_connection_legacy.c:469
8263#, c-format 8078#, c-format
8264msgid "Accepting connection from `%s': %p\n" 8079msgid "Accepting connection from `%s': %p\n"
8265msgstr "" 8080msgstr ""
8266 8081
8267# drive = hard drive ? 8082# drive = hard drive ?
8268#: src/transport/tcp_server_legacy.c:472 src/util/service.c:1109 8083#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1666
8269#, fuzzy, c-format 8084#, fuzzy, c-format
8270msgid "`%s' failed for port %d (%s).\n" 8085msgid "`%s' failed for port %d (%s).\n"
8271msgstr "\"%s\" misslyckades för enhet %s: %u\n" 8086msgstr "\"%s\" misslyckades för enhet %s: %u\n"
8272 8087
8273#: src/transport/tcp_server_legacy.c:482 src/util/service.c:1119 8088#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1676
8274#, fuzzy, c-format 8089#, fuzzy, c-format
8275msgid "`%s' failed for port %d (%s): address already in use\n" 8090msgid "`%s' failed for port %d (%s): address already in use\n"
8276msgstr "\"%s\" misslyckades för port %d: %s. Körs verkligen gnunetd?\n" 8091msgstr "\"%s\" misslyckades för port %d: %s. Körs verkligen gnunetd?\n"
8277 8092
8278#: src/transport/tcp_server_legacy.c:488 src/util/service.c:1125 8093#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1682
8279#, fuzzy, c-format 8094#, fuzzy, c-format
8280msgid "`%s' failed for `%s': address already in use\n" 8095msgid "`%s' failed for `%s': address already in use\n"
8281msgstr "\"%s\" misslyckades för port %d: %s. Körs verkligen gnunetd?\n" 8096msgstr "\"%s\" misslyckades för port %d: %s. Körs verkligen gnunetd?\n"
8282 8097
8283#: src/transport/tcp_server_legacy.c:888 8098#: src/transport/tcp_server_legacy.c:890
8284#, c-format 8099#, c-format
8285msgid "" 8100msgid ""
8286"Processing code for message of type %u did not call " 8101"Processing code for message of type %u did not call "
8287"`GNUNET_SERVER_receive_done' after %s\n" 8102"`GNUNET_SERVER_receive_done' after %s\n"
8288msgstr "" 8103msgstr ""
8289 8104
8290#: src/transport/tcp_service_legacy.c:337 src/util/service.c:2378 8105#: src/transport/tcp_service_legacy.c:339 src/util/service.c:870
8291#, fuzzy, c-format 8106#, fuzzy, c-format
8292msgid "Unknown address family %d\n" 8107msgid "Unknown address family %d\n"
8293msgstr "Okänd operation \"%s\"\n" 8108msgstr "Okänd operation \"%s\"\n"
8294 8109
8295#: src/transport/tcp_service_legacy.c:344 8110#: src/transport/tcp_service_legacy.c:346
8296#, c-format 8111#, c-format
8297msgid "Access from `%s' denied to service `%s'\n" 8112msgid "Access from `%s' denied to service `%s'\n"
8298msgstr "" 8113msgstr ""
8299 8114
8300#: src/transport/tcp_service_legacy.c:400 src/util/service.c:437 8115#: src/transport/tcp_service_legacy.c:402 src/util/service.c:994
8301#, c-format 8116#, c-format
8302msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n" 8117msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
8303msgstr "" 8118msgstr ""
8304 8119
8305#: src/transport/tcp_service_legacy.c:438 src/util/service.c:480 8120#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1037
8306#, c-format 8121#, c-format
8307msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n" 8122msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
8308msgstr "" 8123msgstr ""
8309 8124
8310#: src/transport/tcp_service_legacy.c:902 src/util/service.c:1040 8125#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1597
8311msgid "Could not access a pre-bound socket, will try to bind myself\n" 8126msgid "Could not access a pre-bound socket, will try to bind myself\n"
8312msgstr "" 8127msgstr ""
8313 8128
8314#: src/transport/tcp_service_legacy.c:951 8129#: src/transport/tcp_service_legacy.c:953
8315#: src/transport/tcp_service_legacy.c:969 src/util/service.c:1192 8130#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1750
8316#, c-format 8131#, c-format
8317msgid "Specified value for `%s' of service `%s' is invalid\n" 8132msgid "Specified value for `%s' of service `%s' is invalid\n"
8318msgstr "" 8133msgstr ""
8319 8134
8320#: src/transport/tcp_service_legacy.c:994 src/util/service.c:1224 8135#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1783
8321#, c-format 8136#, c-format
8322msgid "Could not access pre-bound socket %u, will try to bind myself\n" 8137msgid "Could not access pre-bound socket %u, will try to bind myself\n"
8323msgstr "" 8138msgstr ""
8324 8139
8325#: src/transport/tcp_service_legacy.c:1159 8140#: src/transport/tcp_service_legacy.c:1161
8326#, fuzzy, c-format 8141#, fuzzy, c-format
8327msgid "Failed to start `%s' at `%s'\n" 8142msgid "Failed to start `%s' at `%s'\n"
8328msgstr "Fel vid %s:%d.\n" 8143msgstr "Fel vid %s:%d.\n"
8329 8144
8330#: src/transport/tcp_service_legacy.c:1200 8145#: src/transport/tcp_service_legacy.c:1202
8331#, fuzzy, c-format 8146#, fuzzy, c-format
8332msgid "Service `%s' runs at %s\n" 8147msgid "Service `%s' runs at %s\n"
8333msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n" 8148msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
8334 8149
8335#: src/transport/tcp_service_legacy.c:1249 src/util/service.c:1498 8150#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2057
8336msgid "Service process failed to initialize\n" 8151msgid "Service process failed to initialize\n"
8337msgstr "" 8152msgstr ""
8338 8153
8339#: src/transport/tcp_service_legacy.c:1253 src/util/service.c:1502 8154#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2061
8340msgid "Service process could not initialize server function\n" 8155msgid "Service process could not initialize server function\n"
8341msgstr "" 8156msgstr ""
8342 8157
8343#: src/transport/tcp_service_legacy.c:1257 src/util/service.c:1506 8158#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2065
8344msgid "Service process failed to report status\n" 8159msgid "Service process failed to report status\n"
8345msgstr "" 8160msgstr ""
8346 8161
8347#: src/transport/tcp_service_legacy.c:1311 src/util/disk.c:1521 8162#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
8348#: src/util/service.c:1376 8163#: src/util/service.c:1935
8349#, fuzzy, c-format 8164#, fuzzy, c-format
8350msgid "Cannot obtain information about user `%s': %s\n" 8165msgid "Cannot obtain information about user `%s': %s\n"
8351msgstr "Kan inte öppna konfigurationsfil \"%s\".\n" 8166msgstr "Kan inte öppna konfigurationsfil \"%s\".\n"
8352 8167
8353#: src/transport/tcp_service_legacy.c:1312 src/util/service.c:1378 8168#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1937
8354msgid "No such user" 8169msgid "No such user"
8355msgstr "" 8170msgstr ""
8356 8171
8357#: src/transport/tcp_service_legacy.c:1325 src/util/service.c:1397 8172#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1956
8358#, c-format 8173#, c-format
8359msgid "Cannot change user/group to `%s': %s\n" 8174msgid "Cannot change user/group to `%s': %s\n"
8360msgstr "Kan inte ändra användare/grupp till \"%s\": %s\n" 8175msgstr "Kan inte ändra användare/grupp till \"%s\": %s\n"
8361 8176
8362#: src/transport/tcp_service_legacy.c:1396 src/util/service.c:1757 8177#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2318
8363msgid "do daemonize (detach from terminal)" 8178msgid "do daemonize (detach from terminal)"
8364msgstr "" 8179msgstr ""
8365 8180
8366#: src/transport/tcp_service_legacy.c:1446 src/util/program.c:277 8181#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:2382
8367#: src/util/service.c:1820 8182#: src/util/service.c:2397
8368#, fuzzy, c-format 8183#, fuzzy, c-format
8369msgid "Malformed configuration file `%s', exit ...\n" 8184msgid "Malformed configuration file `%s', exit ...\n"
8370msgstr "Kunde inte spara konfigurationsfil \"%s\":" 8185msgstr "Kunde inte spara konfigurationsfil \"%s\":"
8371 8186
8372#: src/transport/tcp_service_legacy.c:1456 src/util/program.c:297 8187#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2409
8373#: src/util/service.c:1831
8374#, fuzzy 8188#, fuzzy
8375msgid "Malformed configuration, exit ...\n" 8189msgid "Malformed configuration, exit ...\n"
8376msgstr "Kunde inte spara konfigurationsfil \"%s\":" 8190msgstr "Kunde inte spara konfigurationsfil \"%s\":"
8377 8191
8378#: src/transport/tcp_service_legacy.c:1461 src/util/program.c:290 8192#: src/transport/tcp_service_legacy.c:1463
8379#: src/util/service.c:1837
8380#, fuzzy, c-format 8193#, fuzzy, c-format
8381msgid "Could not access configuration file `%s'\n" 8194msgid "Could not access configuration file `%s'\n"
8382msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 8195msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
8383 8196
8384#: src/util/bio.c:179 src/util/bio.c:187 8197#: src/transport/transport_api2_communication.c:764
8198msgid "Dropped backchanel message: handler not provided by communicator\n"
8199msgstr ""
8200
8201#: src/util/bio.c:181 src/util/bio.c:189
8385#, fuzzy, c-format 8202#, fuzzy, c-format
8386msgid "Error reading `%s': %s" 8203msgid "Error reading `%s': %s"
8387msgstr "Fel vid skapandet av användare" 8204msgstr "Fel vid skapandet av användare"
8388 8205
8389#: src/util/bio.c:189 8206#: src/util/bio.c:191
8390#, fuzzy 8207#, fuzzy
8391msgid "End of file" 8208msgid "End of file"
8392msgstr "Läs in en konfigurationsfil" 8209msgstr "Läs in en konfigurationsfil"
8393 8210
8394#: src/util/bio.c:246 8211#: src/util/bio.c:248
8395#, c-format 8212#, c-format
8396msgid "Error reading length of string `%s'" 8213msgid "Error reading length of string `%s'"
8397msgstr "" 8214msgstr ""
8398 8215
8399#: src/util/bio.c:256 8216#: src/util/bio.c:258
8400#, c-format 8217#, c-format
8401msgid "String `%s' longer than allowed (%u > %u)" 8218msgid "String `%s' longer than allowed (%u > %u)"
8402msgstr "" 8219msgstr ""
8403 8220
8404#: src/util/bio.c:304 8221#: src/util/bio.c:306
8405#, c-format 8222#, c-format
8406msgid "Serialized metadata `%s' larger than allowed (%u>%u)" 8223msgid "Serialized metadata `%s' larger than allowed (%u>%u)"
8407msgstr "" 8224msgstr ""
8408 8225
8409#: src/util/bio.c:326 8226#: src/util/bio.c:328
8410#, c-format 8227#, c-format
8411msgid "Metadata `%s' failed to deserialize" 8228msgid "Metadata `%s' failed to deserialize"
8412msgstr "" 8229msgstr ""
8413 8230
8414#: src/util/client.c:732 8231#: src/util/client.c:734
8415msgid "not a valid filename" 8232msgid "not a valid filename"
8416msgstr "" 8233msgstr ""
8417 8234
8418#: src/util/client.c:923 8235#: src/util/client.c:925
8419#, c-format 8236#, c-format
8420msgid "Need a non-empty hostname for service `%s'.\n" 8237msgid "Need a non-empty hostname for service `%s'.\n"
8421msgstr "" 8238msgstr ""
8422 8239
8423#: src/util/common_logging.c:257 src/util/common_logging.c:1159 8240#: src/util/common_logging.c:259 src/util/common_logging.c:1162
8424msgid "DEBUG" 8241msgid "DEBUG"
8425msgstr "FELSÖKNING" 8242msgstr "FELSÖKNING"
8426 8243
8427#: src/util/common_logging.c:259 src/util/common_logging.c:1157 8244#: src/util/common_logging.c:261 src/util/common_logging.c:1160
8428msgid "INFO" 8245msgid "INFO"
8429msgstr "INFO" 8246msgstr "INFO"
8430 8247
8431#: src/util/common_logging.c:261 src/util/common_logging.c:1155 8248#: src/util/common_logging.c:263 src/util/common_logging.c:1158
8432msgid "MESSAGE" 8249msgid "MESSAGE"
8433msgstr "MEDDELANDE" 8250msgstr "MEDDELANDE"
8434 8251
8435#: src/util/common_logging.c:263 src/util/common_logging.c:1153 8252#: src/util/common_logging.c:265 src/util/common_logging.c:1156
8436msgid "WARNING" 8253msgid "WARNING"
8437msgstr "VARNING" 8254msgstr "VARNING"
8438 8255
8439#: src/util/common_logging.c:265 src/util/common_logging.c:1151 8256#: src/util/common_logging.c:267 src/util/common_logging.c:1154
8440msgid "ERROR" 8257msgid "ERROR"
8441msgstr "FEL" 8258msgstr "FEL"
8442 8259
8443#: src/util/common_logging.c:267 src/util/common_logging.c:1161 8260#: src/util/common_logging.c:269 src/util/common_logging.c:1164
8444msgid "NONE" 8261msgid "NONE"
8445msgstr "" 8262msgstr ""
8446 8263
8447#: src/util/common_logging.c:631 src/util/common_logging.c:661 8264#: src/util/common_logging.c:633 src/util/common_logging.c:663
8448#, c-format 8265#, c-format
8449msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n" 8266msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
8450msgstr "" 8267msgstr ""
8451 8268
8452#: src/util/common_logging.c:895 8269#: src/util/common_logging.c:898
8453#, c-format 8270#, c-format
8454msgid "Message `%.*s' repeated %u times in the last %s\n" 8271msgid "Message `%.*s' repeated %u times in the last %s\n"
8455msgstr "" 8272msgstr ""
8456 8273
8457#: src/util/common_logging.c:1162 8274#: src/util/common_logging.c:1165
8458msgid "INVALID" 8275msgid "INVALID"
8459msgstr "" 8276msgstr ""
8460 8277
8461#: src/util/common_logging.c:1455 8278#: src/util/common_logging.c:1458
8462msgid "unknown address" 8279msgid "unknown address"
8463msgstr "" 8280msgstr ""
8464 8281
8465#: src/util/common_logging.c:1497 8282#: src/util/common_logging.c:1500
8466msgid "invalid address" 8283msgid "invalid address"
8467msgstr "" 8284msgstr ""
8468 8285
8469#: src/util/common_logging.c:1515 8286#: src/util/common_logging.c:1518
8470#, fuzzy, c-format 8287#, fuzzy, c-format
8471msgid "Configuration fails to specify option `%s' in section `%s'!\n" 8288msgid "Configuration fails to specify option `%s' in section `%s'!\n"
8472msgstr "Konfigurationsfil \"%s\" skapad.\n" 8289msgstr "Konfigurationsfil \"%s\" skapad.\n"
8473 8290
8474#: src/util/common_logging.c:1536 8291#: src/util/common_logging.c:1539
8475#, fuzzy, c-format 8292#, fuzzy, c-format
8476msgid "" 8293msgid ""
8477"Configuration specifies invalid value for option `%s' in section `%s': %s\n" 8294"Configuration specifies invalid value for option `%s' in section `%s': %s\n"
8478msgstr "Konfigurationsfil \"%s\" hittades inte. Kör \"gnunet-setup -d\"!\n" 8295msgstr "Konfigurationsfil \"%s\" hittades inte. Kör \"gnunet-setup -d\"!\n"
8479 8296
8480#: src/util/configuration.c:294 8297#: src/util/configuration.c:331
8481#, fuzzy, c-format 8298#, fuzzy, c-format
8482msgid "Syntax error while deserializing in line %u\n" 8299msgid "Syntax error while deserializing in line %u\n"
8483msgstr "Syntaxfel i konfigurationsfil \"%s\" på rad %d.\n" 8300msgstr "Syntaxfel i konfigurationsfil \"%s\" på rad %d.\n"
8484 8301
8485#: src/util/configuration.c:361 8302#: src/util/configuration.c:398
8486#, fuzzy, c-format 8303#, fuzzy, c-format
8487msgid "Error while reading file `%s'\n" 8304msgid "Error while reading file `%s'\n"
8488msgstr "Fel vid nedladdning: %s\n" 8305msgstr "Fel vid nedladdning: %s\n"
8489 8306
8490#: src/util/configuration.c:970 8307#: src/util/configuration.c:1016
8491#, fuzzy 8308#, fuzzy
8492msgid "Not a valid relative time specification" 8309msgid "Not a valid relative time specification"
8493msgstr "Konfigurationsfil \"%s\" skapad.\n" 8310msgstr "Konfigurationsfil \"%s\" skapad.\n"
8494 8311
8495#: src/util/configuration.c:1059 8312#: src/util/configuration.c:1105
8496#, c-format 8313#, c-format
8497msgid "" 8314msgid ""
8498"Configuration value '%s' for '%s' in section '%s' is not in set of legal " 8315"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
8499"choices\n" 8316"choices\n"
8500msgstr "" 8317msgstr ""
8501 8318
8502#: src/util/configuration.c:1178 8319#: src/util/configuration.c:1224
8503#, c-format 8320#, c-format
8504msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n" 8321msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n"
8505msgstr "" 8322msgstr ""
8506 8323
8507#: src/util/configuration.c:1211 8324#: src/util/configuration.c:1257
8508#, fuzzy, c-format 8325#, fuzzy, c-format
8509msgid "Missing closing `%s' in option `%s'\n" 8326msgid "Missing closing `%s' in option `%s'\n"
8510msgstr "Konfigurationsfil \"%s\" skapad.\n" 8327msgstr "Konfigurationsfil \"%s\" skapad.\n"
8511 8328
8512#: src/util/configuration.c:1279 8329#: src/util/configuration.c:1325
8513#, c-format 8330#, c-format
8514msgid "" 8331msgid ""
8515"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined " 8332"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined "
8516"as an environmental variable\n" 8333"as an environmental variable\n"
8517msgstr "" 8334msgstr ""
8518 8335
8519#: src/util/container_bloomfilter.c:530 8336#: src/util/container_bloomfilter.c:532
8520#, c-format 8337#, c-format
8521msgid "" 8338msgid ""
8522"Size of file on disk is incorrect for this Bloom filter (want %llu, have " 8339"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
8523"%llu)\n" 8340"%llu)\n"
8524msgstr "" 8341msgstr ""
8525 8342
8526#: src/util/crypto_ecc.c:860 8343#: src/util/crypto_ecc.c:862
8527#, fuzzy, c-format 8344#, fuzzy, c-format
8528msgid "ECC signing failed at %s:%d: %s\n" 8345msgid "ECC signing failed at %s:%d: %s\n"
8529msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 8346msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
8530 8347
8531#: src/util/crypto_ecc.c:915 8348#: src/util/crypto_ecc.c:917
8532#, fuzzy, c-format 8349#, fuzzy, c-format
8533msgid "EdDSA signing failed at %s:%d: %s\n" 8350msgid "EdDSA signing failed at %s:%d: %s\n"
8534msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 8351msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
8535 8352
8536#: src/util/crypto_ecc.c:994 8353#: src/util/crypto_ecc.c:996
8537#, fuzzy, c-format 8354#, fuzzy, c-format
8538msgid "ECDSA signature verification failed at %s:%d: %s\n" 8355msgid "ECDSA signature verification failed at %s:%d: %s\n"
8539msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 8356msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
8540 8357
8541#: src/util/crypto_ecc.c:1055 8358#: src/util/crypto_ecc.c:1057
8542#, fuzzy, c-format 8359#, fuzzy, c-format
8543msgid "EdDSA signature verification failed at %s:%d: %s\n" 8360msgid "EdDSA signature verification failed at %s:%d: %s\n"
8544msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 8361msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
8545 8362
8546#: src/util/crypto_ecc_setup.c:121 src/util/crypto_ecc_setup.c:160 8363#: src/util/crypto_ecc_setup.c:123 src/util/crypto_ecc_setup.c:162
8547#: src/util/crypto_ecc_setup.c:303 src/util/crypto_ecc_setup.c:350 8364#: src/util/crypto_ecc_setup.c:305 src/util/crypto_ecc_setup.c:352
8548#, fuzzy, c-format 8365#, fuzzy, c-format
8549msgid "Could not acquire lock on file `%s': %s...\n" 8366msgid "Could not acquire lock on file `%s': %s...\n"
8550msgstr "Kunde inte slå upp \"%s\": %s\n" 8367msgstr "Kunde inte slå upp \"%s\": %s\n"
8551 8368
8552#: src/util/crypto_ecc_setup.c:127 src/util/crypto_ecc_setup.c:309 8369#: src/util/crypto_ecc_setup.c:129 src/util/crypto_ecc_setup.c:311
8553#, fuzzy 8370#, fuzzy
8554msgid "Creating a new private key. This may take a while.\n" 8371msgid "Creating a new private key. This may take a while.\n"
8555msgstr "Skapar ny värdnyckel (det här kan ta en stund).\n" 8372msgstr "Skapar ny värdnyckel (det här kan ta en stund).\n"
8556 8373
8557#: src/util/crypto_ecc_setup.c:164 src/util/crypto_ecc_setup.c:354 8374#: src/util/crypto_ecc_setup.c:166 src/util/crypto_ecc_setup.c:356
8558msgid "This may be ok if someone is currently generating a private key.\n" 8375msgid "This may be ok if someone is currently generating a private key.\n"
8559msgstr "" 8376msgstr ""
8560 8377
8561#: src/util/crypto_ecc_setup.c:194 src/util/crypto_ecc_setup.c:396 8378#: src/util/crypto_ecc_setup.c:196 src/util/crypto_ecc_setup.c:398
8562#, c-format 8379#, c-format
8563msgid "" 8380msgid ""
8564"When trying to read key file `%s' I found %u bytes but I need at least %u.\n" 8381"When trying to read key file `%s' I found %u bytes but I need at least %u.\n"
8565msgstr "" 8382msgstr ""
8566 8383
8567#: src/util/crypto_ecc_setup.c:199 src/util/crypto_ecc_setup.c:400 8384#: src/util/crypto_ecc_setup.c:201 src/util/crypto_ecc_setup.c:402
8568msgid "This may be ok if someone is currently generating a key.\n" 8385msgid "This may be ok if someone is currently generating a key.\n"
8569msgstr "" 8386msgstr ""
8570 8387
8571#: src/util/crypto_ecc_setup.c:466 8388#: src/util/crypto_ecc_setup.c:468
8572#, fuzzy 8389#, fuzzy
8573msgid "Could not load peer's private key\n" 8390msgid "Could not load peer's private key\n"
8574msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" 8391msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
8575 8392
8576#: src/util/crypto_random.c:304 8393#: src/util/crypto_random.c:306
8577#, c-format 8394#, c-format
8578msgid "libgcrypt has not the expected version (version %s is required).\n" 8395msgid "libgcrypt has not the expected version (version %s is required).\n"
8579msgstr "libgcrypt har inte den förväntande versionen (version %s krävs).\n" 8396msgstr "libgcrypt har inte den förväntande versionen (version %s krävs).\n"
8580 8397
8581#: src/util/crypto_rsa.c:848 8398#: src/util/crypto_rsa.c:850
8582#, fuzzy, c-format 8399#, fuzzy, c-format
8583msgid "RSA signing failed at %s:%d: %s\n" 8400msgid "RSA signing failed at %s:%d: %s\n"
8584msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 8401msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
8585 8402
8586#: src/util/crypto_rsa.c:1187 8403#: src/util/crypto_rsa.c:1189
8587#, fuzzy, c-format 8404#, fuzzy, c-format
8588msgid "RSA signature verification failed at %s:%d: %s\n" 8405msgid "RSA signature verification failed at %s:%d: %s\n"
8589msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 8406msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
8590 8407
8591#: src/util/disk.c:1251 8408#: src/util/disk.c:1255
8592#, fuzzy, c-format 8409#, fuzzy, c-format
8593msgid "Expected `%s' to be a directory!\n" 8410msgid "Expected `%s' to be a directory!\n"
8594msgstr "\"%s\" förväntade att \"%s\" skulle vara en katalog!\n" 8411msgstr "\"%s\" förväntade att \"%s\" skulle vara en katalog!\n"
8595 8412
8596#: src/util/dnsparser.c:250 8413#: src/util/dnsparser.c:264
8597#, fuzzy, c-format 8414#, fuzzy, c-format
8598msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n" 8415msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
8599msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 8416msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
8600 8417
8601#: src/util/dnsparser.c:940 8418#: src/util/dnsparser.c:954
8602#, fuzzy, c-format 8419#, fuzzy, c-format
8603msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n" 8420msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
8604msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 8421msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
8605 8422
8606#: src/util/dnsstub.c:229 8423#: src/util/dnsstub.c:231
8607#, fuzzy, c-format 8424#, fuzzy, c-format
8608msgid "Could not bind to any port: %s\n" 8425msgid "Could not bind to any port: %s\n"
8609msgstr "Kunde inte köra \"%s\": %s\n" 8426msgstr "Kunde inte köra \"%s\": %s\n"
8610 8427
8611#: src/util/dnsstub.c:360 8428#: src/util/dnsstub.c:362
8612#, c-format 8429#, c-format
8613msgid "Received DNS response that is too small (%u bytes)" 8430msgid "Received DNS response that is too small (%u bytes)"
8614msgstr "" 8431msgstr ""
8615 8432
8616#: src/util/dnsstub.c:507 8433#: src/util/dnsstub.c:509
8617#, fuzzy, c-format 8434#, fuzzy, c-format
8618msgid "Failed to send DNS request to %s: %s\n" 8435msgid "Failed to send DNS request to %s: %s\n"
8619msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 8436msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
8620 8437
8621#: src/util/dnsstub.c:513 8438#: src/util/dnsstub.c:515
8622#, fuzzy, c-format 8439#, fuzzy, c-format
8623msgid "Sent DNS request to %s\n" 8440msgid "Sent DNS request to %s\n"
8624msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" 8441msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
@@ -8688,11 +8505,11 @@ msgstr "Använd --help för att få en lista på flaggor.\n"
8688msgid "Missing mandatory option `%s'.\n" 8505msgid "Missing mandatory option `%s'.\n"
8689msgstr "Konfigurationsfil \"%s\" skapad.\n" 8506msgstr "Konfigurationsfil \"%s\" skapad.\n"
8690 8507
8691#: src/util/getopt_helpers.c:68 8508#: src/util/getopt_helpers.c:70
8692msgid "print the version number" 8509msgid "print the version number"
8693msgstr "skriv ut versionsnummer" 8510msgstr "skriv ut versionsnummer"
8694 8511
8695#: src/util/getopt_helpers.c:113 8512#: src/util/getopt_helpers.c:116
8696#, c-format 8513#, c-format
8697msgid "" 8514msgid ""
8698"Arguments mandatory for long options are also mandatory for short options.\n" 8515"Arguments mandatory for long options are also mandatory for short options.\n"
@@ -8700,227 +8517,227 @@ msgstr ""
8700"Argument som är obligatoriska för långa flaggor är också obligatoriska för " 8517"Argument som är obligatoriska för långa flaggor är också obligatoriska för "
8701"korta flaggor.\n" 8518"korta flaggor.\n"
8702 8519
8703#: src/util/getopt_helpers.c:201 8520#: src/util/getopt_helpers.c:204
8704msgid "print this help" 8521msgid "print this help"
8705msgstr "skriv ut denna hjälp" 8522msgstr "skriv ut denna hjälp"
8706 8523
8707#: src/util/getopt_helpers.c:279 8524#: src/util/getopt_helpers.c:282
8708msgid "be verbose" 8525msgid "be verbose"
8709msgstr "var informativ" 8526msgstr "var informativ"
8710 8527
8711#: src/util/getopt_helpers.c:420 8528#: src/util/getopt_helpers.c:423
8712msgid "configure logging to use LOGLEVEL" 8529msgid "configure logging to use LOGLEVEL"
8713msgstr "" 8530msgstr ""
8714 8531
8715#: src/util/getopt_helpers.c:500 8532#: src/util/getopt_helpers.c:503
8716msgid "configure logging to write logs to FILENAME" 8533msgid "configure logging to write logs to FILENAME"
8717msgstr "" 8534msgstr ""
8718 8535
8719#: src/util/getopt_helpers.c:522 8536#: src/util/getopt_helpers.c:525
8720#, fuzzy 8537#, fuzzy
8721msgid "use configuration file FILENAME" 8538msgid "use configuration file FILENAME"
8722msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" 8539msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
8723 8540
8724#: src/util/getopt_helpers.c:559 src/util/getopt_helpers.c:763 8541#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
8725#: src/util/getopt_helpers.c:830 8542#: src/util/getopt_helpers.c:839
8726#, c-format 8543#, c-format
8727msgid "You must pass a number to the `%s' option.\n" 8544msgid "You must pass a number to the `%s' option.\n"
8728msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n" 8545msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n"
8729 8546
8730#: src/util/getopt_helpers.c:624 8547#: src/util/getopt_helpers.c:629
8731#, fuzzy, c-format 8548#, fuzzy, c-format
8732msgid "You must pass relative time to the `%s' option.\n" 8549msgid "You must pass relative time to the `%s' option.\n"
8733msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n" 8550msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n"
8734 8551
8735#: src/util/getopt_helpers.c:690 8552#: src/util/getopt_helpers.c:695
8736#, fuzzy, c-format 8553#, fuzzy, c-format
8737msgid "You must pass absolute time to the `%s' option.\n" 8554msgid "You must pass absolute time to the `%s' option.\n"
8738msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n" 8555msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n"
8739 8556
8740#: src/util/getopt_helpers.c:754 8557#: src/util/getopt_helpers.c:760
8741#, c-format 8558#, c-format
8742msgid "Your input for the '%s' option has to be a non negative number \n" 8559msgid "Your input for the '%s' option has to be a non negative number \n"
8743msgstr "" 8560msgstr ""
8744 8561
8745#: src/util/getopt_helpers.c:837 8562#: src/util/getopt_helpers.c:846
8746#, fuzzy, c-format 8563#, fuzzy, c-format
8747msgid "You must pass a number below %u to the `%s' option.\n" 8564msgid "You must pass a number below %u to the `%s' option.\n"
8748msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n" 8565msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n"
8749 8566
8750#: src/util/getopt_helpers.c:923 8567#: src/util/getopt_helpers.c:932
8751#, c-format 8568#, c-format
8752msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n" 8569msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
8753msgstr "" 8570msgstr ""
8754 8571
8755#: src/util/gnunet-config.c:157 8572#: src/util/gnunet-config.c:160
8756#, fuzzy, c-format 8573#, fuzzy, c-format
8757msgid "failed to load configuration defaults" 8574msgid "failed to load configuration defaults"
8758msgstr "Kunde inte spara konfigurationsfil \"%s\":" 8575msgstr "Kunde inte spara konfigurationsfil \"%s\":"
8759 8576
8760#: src/util/gnunet-config.c:170
8761#, c-format
8762msgid "--section argument is required\n"
8763msgstr ""
8764
8765#: src/util/gnunet-config.c:173 8577#: src/util/gnunet-config.c:173
8578#, fuzzy, c-format
8579msgid "%s or %s argument is required\n"
8580msgstr "%s: flagga \"%s\" är tvetydig\n"
8581
8582#: src/util/gnunet-config.c:181
8766#, c-format 8583#, c-format
8767msgid "The following sections are available:\n" 8584msgid "The following sections are available:\n"
8768msgstr "" 8585msgstr ""
8769 8586
8770#: src/util/gnunet-config.c:224 8587#: src/util/gnunet-config.c:232
8771#, c-format 8588#, c-format
8772msgid "--option argument required to set value\n" 8589msgid "--option argument required to set value\n"
8773msgstr "" 8590msgstr ""
8774 8591
8775#: src/util/gnunet-config.c:263 8592#: src/util/gnunet-config.c:286
8776msgid "obtain option of value as a filename (with $-expansion)" 8593msgid "obtain option of value as a filename (with $-expansion)"
8777msgstr "" 8594msgstr ""
8778 8595
8779#: src/util/gnunet-config.c:268 8596#: src/util/gnunet-config.c:291
8780msgid "name of the section to access" 8597msgid "name of the section to access"
8781msgstr "" 8598msgstr ""
8782 8599
8783#: src/util/gnunet-config.c:273 8600#: src/util/gnunet-config.c:296
8784#, fuzzy 8601#, fuzzy
8785msgid "name of the option to access" 8602msgid "name of the option to access"
8786msgstr "Visa värde av alternativet" 8603msgstr "Visa värde av alternativet"
8787 8604
8788#: src/util/gnunet-config.c:278 8605#: src/util/gnunet-config.c:301
8789msgid "value to set" 8606msgid "value to set"
8790msgstr "" 8607msgstr ""
8791 8608
8792#: src/util/gnunet-config.c:282 8609#: src/util/gnunet-config.c:305
8793#, fuzzy 8610#, fuzzy
8794msgid "print available configuration sections" 8611msgid "print available configuration sections"
8795msgstr "GNUnet-konfiguration" 8612msgstr "GNUnet-konfiguration"
8796 8613
8797#: src/util/gnunet-config.c:286 8614#: src/util/gnunet-config.c:309
8798msgid "write configuration file that only contains delta to defaults" 8615msgid "write configuration file that only contains delta to defaults"
8799msgstr "" 8616msgstr ""
8800 8617
8801#: src/util/gnunet-config.c:299 8618#: src/util/gnunet-config.c:322
8802#, fuzzy 8619#, fuzzy
8803msgid "Manipulate GNUnet configuration files" 8620msgid "Manipulate GNUnet configuration files"
8804msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" 8621msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
8805 8622
8806#: src/util/gnunet-ecc.c:92 8623#: src/util/gnunet-ecc.c:94
8807#, fuzzy, c-format 8624#, fuzzy, c-format
8808msgid "Failed to open `%s': %s\n" 8625msgid "Failed to open `%s': %s\n"
8809msgstr "Misslyckades att leverera \"%s\" meddelande.\n" 8626msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
8810 8627
8811#: src/util/gnunet-ecc.c:128 8628#: src/util/gnunet-ecc.c:130
8812#, c-format 8629#, c-format
8813msgid "Generating %u keys like %s, please wait" 8630msgid "Generating %u keys like %s, please wait"
8814msgstr "" 8631msgstr ""
8815 8632
8816#: src/util/gnunet-ecc.c:141 8633#: src/util/gnunet-ecc.c:143
8817#, c-format 8634#, c-format
8818msgid "Generating %u keys, please wait" 8635msgid "Generating %u keys, please wait"
8819msgstr "" 8636msgstr ""
8820 8637
8821#: src/util/gnunet-ecc.c:182 8638#: src/util/gnunet-ecc.c:184
8822#, fuzzy, c-format 8639#, fuzzy, c-format
8823msgid "" 8640msgid ""
8824"\n" 8641"\n"
8825"Failed to write to `%s': %s\n" 8642"Failed to write to `%s': %s\n"
8826msgstr "Fel vid %s:%d.\n" 8643msgstr "Fel vid %s:%d.\n"
8827 8644
8828#: src/util/gnunet-ecc.c:192 8645#: src/util/gnunet-ecc.c:194
8829#, fuzzy, c-format 8646#, fuzzy, c-format
8830msgid "" 8647msgid ""
8831"\n" 8648"\n"
8832"Finished!\n" 8649"Finished!\n"
8833msgstr "Slutför" 8650msgstr "Slutför"
8834 8651
8835#: src/util/gnunet-ecc.c:195 8652#: src/util/gnunet-ecc.c:197
8836#, c-format 8653#, c-format
8837msgid "" 8654msgid ""
8838"\n" 8655"\n"
8839"Error, %u keys not generated\n" 8656"Error, %u keys not generated\n"
8840msgstr "" 8657msgstr ""
8841 8658
8842#: src/util/gnunet-ecc.c:288 8659#: src/util/gnunet-ecc.c:290
8843#, fuzzy, c-format 8660#, fuzzy, c-format
8844msgid "Hostkeys file `%s' not found\n" 8661msgid "Hostkeys file `%s' not found\n"
8845msgstr "\"%s\" misslyckades: tabell hittades inte!\n" 8662msgstr "\"%s\" misslyckades: tabell hittades inte!\n"
8846 8663
8847#: src/util/gnunet-ecc.c:303 8664#: src/util/gnunet-ecc.c:305
8848#, fuzzy, c-format 8665#, fuzzy, c-format
8849msgid "Hostkeys file `%s' is empty\n" 8666msgid "Hostkeys file `%s' is empty\n"
8850msgstr "antal meddelanden att använda per iteration" 8667msgstr "antal meddelanden att använda per iteration"
8851 8668
8852#: src/util/gnunet-ecc.c:332 8669#: src/util/gnunet-ecc.c:334
8853#, fuzzy, c-format 8670#, fuzzy, c-format
8854msgid "Could not read hostkey file: %s\n" 8671msgid "Could not read hostkey file: %s\n"
8855msgstr "Kunde inte skapa värdnyckel!\n" 8672msgstr "Kunde inte skapa värdnyckel!\n"
8856 8673
8857#: src/util/gnunet-ecc.c:389 8674#: src/util/gnunet-ecc.c:391
8858msgid "No hostkey file specified on command line\n" 8675msgid "No hostkey file specified on command line\n"
8859msgstr "" 8676msgstr ""
8860 8677
8861#: src/util/gnunet-ecc.c:454 8678#: src/util/gnunet-ecc.c:456
8862msgid "list keys included in a file (for testing)" 8679msgid "list keys included in a file (for testing)"
8863msgstr "" 8680msgstr ""
8864 8681
8865#: src/util/gnunet-ecc.c:459 8682#: src/util/gnunet-ecc.c:461
8866msgid "number of keys to list included in a file (for testing)" 8683msgid "number of keys to list included in a file (for testing)"
8867msgstr "" 8684msgstr ""
8868 8685
8869#: src/util/gnunet-ecc.c:464 8686#: src/util/gnunet-ecc.c:466
8870msgid "create COUNT public-private key pairs (for testing)" 8687msgid "create COUNT public-private key pairs (for testing)"
8871msgstr "" 8688msgstr ""
8872 8689
8873#: src/util/gnunet-ecc.c:468 8690#: src/util/gnunet-ecc.c:470
8874msgid "print the public key in ASCII format" 8691msgid "print the public key in ASCII format"
8875msgstr "" 8692msgstr ""
8876 8693
8877#: src/util/gnunet-ecc.c:472 8694#: src/util/gnunet-ecc.c:474
8878msgid "print the private key in ASCII format" 8695msgid "print the private key in ASCII format"
8879msgstr "" 8696msgstr ""
8880 8697
8881#: src/util/gnunet-ecc.c:476 8698#: src/util/gnunet-ecc.c:478
8882msgid "print the public key in HEX format" 8699msgid "print the public key in HEX format"
8883msgstr "" 8700msgstr ""
8884 8701
8885#: src/util/gnunet-ecc.c:480 8702#: src/util/gnunet-ecc.c:482
8886msgid "print examples of ECC operations (used for compatibility testing)" 8703msgid "print examples of ECC operations (used for compatibility testing)"
8887msgstr "" 8704msgstr ""
8888 8705
8889#: src/util/gnunet-ecc.c:496 8706#: src/util/gnunet-ecc.c:498
8890#, fuzzy 8707#, fuzzy
8891msgid "Manipulate GNUnet private ECC key files" 8708msgid "Manipulate GNUnet private ECC key files"
8892msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" 8709msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
8893 8710
8894#: src/util/gnunet-resolver.c:166 8711#: src/util/gnunet-resolver.c:168
8895msgid "perform a reverse lookup" 8712msgid "perform a reverse lookup"
8896msgstr "" 8713msgstr ""
8897 8714
8898#: src/util/gnunet-resolver.c:177 8715#: src/util/gnunet-resolver.c:179
8899msgid "Use build-in GNUnet stub resolver" 8716msgid "Use build-in GNUnet stub resolver"
8900msgstr "" 8717msgstr ""
8901 8718
8902#: src/util/gnunet-scrypt.c:240 8719#: src/util/gnunet-scrypt.c:242
8903#, fuzzy, c-format 8720#, fuzzy, c-format
8904msgid "Loading hostkey from `%s' failed.\n" 8721msgid "Loading hostkey from `%s' failed.\n"
8905msgstr "Tolkning av HTTP-svar för URL \"%s\" misslyckades.\n" 8722msgstr "Tolkning av HTTP-svar för URL \"%s\" misslyckades.\n"
8906 8723
8907#: src/util/gnunet-scrypt.c:315 8724#: src/util/gnunet-scrypt.c:317
8908msgid "number of bits to require for the proof of work" 8725msgid "number of bits to require for the proof of work"
8909msgstr "" 8726msgstr ""
8910 8727
8911#: src/util/gnunet-scrypt.c:320 8728#: src/util/gnunet-scrypt.c:322
8912msgid "file with private key, otherwise default is used" 8729msgid "file with private key, otherwise default is used"
8913msgstr "" 8730msgstr ""
8914 8731
8915#: src/util/gnunet-scrypt.c:325 8732#: src/util/gnunet-scrypt.c:327
8916msgid "file with proof of work, otherwise default is used" 8733msgid "file with proof of work, otherwise default is used"
8917msgstr "" 8734msgstr ""
8918 8735
8919#: src/util/gnunet-scrypt.c:330 8736#: src/util/gnunet-scrypt.c:332
8920msgid "time to wait between calculations" 8737msgid "time to wait between calculations"
8921msgstr "" 8738msgstr ""
8922 8739
8923#: src/util/gnunet-scrypt.c:343 8740#: src/util/gnunet-scrypt.c:345
8924#, fuzzy 8741#, fuzzy
8925msgid "Manipulate GNUnet proof of work files" 8742msgid "Manipulate GNUnet proof of work files"
8926msgstr "skriv ut ett värde från konfigurationsfilen till standard ut" 8743msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
@@ -8929,116 +8746,131 @@ msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
8929msgid "No DNS server available. DNS resolution will not be possible.\n" 8746msgid "No DNS server available. DNS resolution will not be possible.\n"
8930msgstr "" 8747msgstr ""
8931 8748
8932#: src/util/gnunet-uri.c:83 8749#: src/util/gnunet-uri.c:85
8933#, c-format 8750#, c-format
8934msgid "No URI specified on command line\n" 8751msgid "No URI specified on command line\n"
8935msgstr "" 8752msgstr ""
8936 8753
8937#: src/util/gnunet-uri.c:89 8754#: src/util/gnunet-uri.c:91
8938#, fuzzy, c-format 8755#, fuzzy, c-format
8939msgid "Invalid URI: does not start with `%s'\n" 8756msgid "Invalid URI: does not start with `%s'\n"
8940msgstr "Ogiltig nätverksnotation (slutar inte med \";\": \"%s\")\n" 8757msgstr "Ogiltig nätverksnotation (slutar inte med \";\": \"%s\")\n"
8941 8758
8942#: src/util/gnunet-uri.c:96 8759#: src/util/gnunet-uri.c:98
8943#, c-format 8760#, c-format
8944msgid "Invalid URI: fails to specify subsystem\n" 8761msgid "Invalid URI: fails to specify subsystem\n"
8945msgstr "" 8762msgstr ""
8946 8763
8947#: src/util/gnunet-uri.c:106 8764#: src/util/gnunet-uri.c:108
8948#, c-format 8765#, c-format
8949msgid "No handler known for subsystem `%s'\n" 8766msgid "No handler known for subsystem `%s'\n"
8950msgstr "" 8767msgstr ""
8951 8768
8952#: src/util/gnunet-uri.c:168 8769#: src/util/gnunet-uri.c:170
8953msgid "Perform default-actions for GNUnet URIs" 8770msgid "Perform default-actions for GNUnet URIs"
8954msgstr "" 8771msgstr ""
8955 8772
8956#: src/util/helper.c:333 8773#: src/util/helper.c:335
8957#, fuzzy, c-format 8774#, fuzzy, c-format
8958msgid "Error reading from `%s': %s\n" 8775msgid "Error reading from `%s': %s\n"
8959msgstr "Fel vid skapandet av användare" 8776msgstr "Fel vid skapandet av användare"
8960 8777
8961#: src/util/helper.c:384 8778#: src/util/helper.c:386
8962#, fuzzy, c-format 8779#, fuzzy, c-format
8963msgid "Failed to parse inbound message from helper `%s'\n" 8780msgid "Failed to parse inbound message from helper `%s'\n"
8964msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 8781msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
8965 8782
8966#: src/util/helper.c:604 8783#: src/util/helper.c:606
8967#, fuzzy, c-format 8784#, fuzzy, c-format
8968msgid "Error writing to `%s': %s\n" 8785msgid "Error writing to `%s': %s\n"
8969msgstr "Fel vid skapandet av användare" 8786msgstr "Fel vid skapandet av användare"
8970 8787
8971#: src/util/network.c:134 8788#: src/util/network.c:136
8972#, c-format 8789#, c-format
8973msgid "Unable to shorten unix path `%s' while keeping name unique\n" 8790msgid "Unable to shorten unix path `%s' while keeping name unique\n"
8974msgstr "" 8791msgstr ""
8975 8792
8976#: src/util/network.c:1793 src/util/network.c:1977 8793#: src/util/network.c:1794 src/util/network.c:1978
8977#, c-format 8794#, c-format
8978msgid "" 8795msgid ""
8979"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n" 8796"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
8980msgstr "" 8797msgstr ""
8981 8798
8982#: src/util/os_installation.c:507 8799#: src/util/os_installation.c:509
8983#, c-format 8800#, c-format
8984msgid "" 8801msgid ""
8985"Could not determine installation path for %s. Set `%s' environment " 8802"Could not determine installation path for %s. Set `%s' environment "
8986"variable.\n" 8803"variable.\n"
8987msgstr "" 8804msgstr ""
8988 8805
8989#: src/util/os_installation.c:879 8806#: src/util/os_installation.c:881
8990#, fuzzy, c-format 8807#, fuzzy, c-format
8991msgid "Could not find binary `%s' in PATH!\n" 8808msgid "Could not find binary `%s' in PATH!\n"
8992msgstr "Kunde inte hitta motpart \"%s\" i routingtabell!\n" 8809msgstr "Kunde inte hitta motpart \"%s\" i routingtabell!\n"
8993 8810
8994#: src/util/os_installation.c:920 8811#: src/util/os_installation.c:922
8995#, c-format 8812#, c-format
8996msgid "Binary `%s' exists, but is not SUID\n" 8813msgid "Binary `%s' exists, but is not SUID\n"
8997msgstr "" 8814msgstr ""
8998 8815
8999# drive = hard drive ? 8816# drive = hard drive ?
9000#: src/util/os_installation.c:951 8817#: src/util/os_installation.c:953
9001#, fuzzy, c-format 8818#, fuzzy, c-format
9002msgid "CreateProcess failed for binary %s (%d).\n" 8819msgid "CreateProcess failed for binary %s (%d).\n"
9003msgstr "\"%s\" misslyckades för enhet %s: %u\n" 8820msgstr "\"%s\" misslyckades för enhet %s: %u\n"
9004 8821
9005#: src/util/os_installation.c:961 8822#: src/util/os_installation.c:963
9006#, c-format 8823#, c-format
9007msgid "GetExitCodeProcess failed for binary %s (%d).\n" 8824msgid "GetExitCodeProcess failed for binary %s (%d).\n"
9008msgstr "" 8825msgstr ""
9009 8826
9010#: src/util/plugin.c:84 8827#: src/util/plugin.c:86
9011#, c-format 8828#, c-format
9012msgid "Initialization of plugin mechanism failed: %s!\n" 8829msgid "Initialization of plugin mechanism failed: %s!\n"
9013msgstr "Initiering av insticksmekanism misslyckades: %s!\n" 8830msgstr "Initiering av insticksmekanism misslyckades: %s!\n"
9014 8831
9015#: src/util/plugin.c:149 8832#: src/util/plugin.c:151
9016#, fuzzy, c-format 8833#, fuzzy, c-format
9017msgid "`%s' failed to resolve method '%s' with error: %s\n" 8834msgid "`%s' failed to resolve method '%s' with error: %s\n"
9018msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n" 8835msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
9019 8836
9020#: src/util/plugin.c:224 8837#: src/util/plugin.c:226
9021#, fuzzy, c-format 8838#, fuzzy, c-format
9022msgid "`%s' failed for library `%s' with error: %s\n" 8839msgid "`%s' failed for library `%s' with error: %s\n"
9023msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n" 8840msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
9024 8841
9025#: src/util/plugin.c:383 8842#: src/util/plugin.c:385
9026#, fuzzy 8843#, fuzzy
9027msgid "Could not determine plugin installation path.\n" 8844msgid "Could not determine plugin installation path.\n"
9028msgstr "Kunde inte fastställa min publika IPv6-adress.\n" 8845msgstr "Kunde inte fastställa min publika IPv6-adress.\n"
9029 8846
9030#: src/util/regex.c:132 8847#: src/util/program.c:283
8848#, fuzzy, c-format
8849msgid "Unreadable or malformed configuration file `%s', exit ...\n"
8850msgstr "Kunde inte spara konfigurationsfil \"%s\":"
8851
8852#: src/util/program.c:301
8853#, fuzzy, c-format
8854msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
8855msgstr "Kunde inte spara konfigurationsfil \"%s\":"
8856
8857#: src/util/program.c:318
8858#, fuzzy
8859msgid "Unreadable or malformed configuration, exit ...\n"
8860msgstr "Kunde inte spara konfigurationsfil \"%s\":"
8861
8862#: src/util/regex.c:134
9031#, c-format 8863#, c-format
9032msgid "Bad mask: %d\n" 8864msgid "Bad mask: %d\n"
9033msgstr "" 8865msgstr ""
9034 8866
9035#: src/util/resolver_api.c:216 8867#: src/util/resolver_api.c:218
9036#, c-format 8868#, c-format
9037msgid "" 8869msgid ""
9038"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n" 8870"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n"
9039msgstr "" 8871msgstr ""
9040 8872
9041#: src/util/resolver_api.c:237 8873#: src/util/resolver_api.c:239
9042#, fuzzy, c-format 8874#, fuzzy, c-format
9043msgid "" 8875msgid ""
9044"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS " 8876"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS "
@@ -9047,375 +8879,490 @@ msgstr ""
9047"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s" 8879"Du måste ange ett positivt nummer för \"%s\" i konfigurationen i sektion \"%s"
9048"\".\n" 8880"\".\n"
9049 8881
9050#: src/util/resolver_api.c:873 8882#: src/util/resolver_api.c:875
9051#, fuzzy, c-format 8883#, fuzzy, c-format
9052msgid "Timeout trying to resolve hostname `%s'.\n" 8884msgid "Timeout trying to resolve hostname `%s'.\n"
9053msgstr "Misslyckades att läsa kompislista från \"%s\"\n" 8885msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
9054 8886
9055#: src/util/resolver_api.c:886 8887#: src/util/resolver_api.c:888
9056#, c-format 8888#, c-format
9057msgid "Timeout trying to resolve IP address `%s'.\n" 8889msgid "Timeout trying to resolve IP address `%s'.\n"
9058msgstr "" 8890msgstr ""
9059 8891
9060#: src/util/resolver_api.c:1071 8892#: src/util/resolver_api.c:1073
9061msgid "Resolver not configured correctly.\n" 8893msgid "Resolver not configured correctly.\n"
9062msgstr "" 8894msgstr ""
9063 8895
9064#: src/util/resolver_api.c:1158 src/util/resolver_api.c:1181 8896#: src/util/resolver_api.c:1160 src/util/resolver_api.c:1183
9065#: src/util/resolver_api.c:1195 8897#: src/util/resolver_api.c:1197
9066#, fuzzy, c-format 8898#, fuzzy, c-format
9067msgid "Could not resolve our FQDN: %s\n" 8899msgid "Could not resolve our FQDN: %s\n"
9068msgstr "Kunde inte slå upp \"%s\": %s\n" 8900msgstr "Kunde inte slå upp \"%s\": %s\n"
9069 8901
9070#: src/util/service.c:1303 8902#: src/util/service.c:674
9071msgid ""
9072"Could not bind to any of the ports I was supposed to, refusing to run!\n"
9073msgstr ""
9074
9075#: src/util/service.c:2123
9076#, c-format 8903#, c-format
9077msgid "" 8904msgid ""
9078"Processing code for message of type %u did not call " 8905"Processing code for message of type %u did not call "
9079"`GNUNET_SERVICE_client_continue' after %s\n" 8906"`GNUNET_SERVICE_client_continue' after %s\n"
9080msgstr "" 8907msgstr ""
9081 8908
9082#: src/util/signal.c:87 8909#: src/util/service.c:1862
8910msgid ""
8911"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8912msgstr ""
8913
8914#: src/util/signal.c:89
9083#, fuzzy, c-format 8915#, fuzzy, c-format
9084msgid "signal (%d, %p) returned %d.\n" 8916msgid "signal (%d, %p) returned %d.\n"
9085msgstr "Anrop till \"%s\" returnerade %d.\n" 8917msgstr "Anrop till \"%s\" returnerade %d.\n"
9086 8918
9087#: src/util/socks.c:595 8919#: src/util/socks.c:597
9088#, c-format 8920#, c-format
9089msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n" 8921msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
9090msgstr "" 8922msgstr ""
9091 8923
9092#: src/util/socks.c:614 8924#: src/util/socks.c:616
9093#, c-format 8925#, c-format
9094msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n" 8926msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
9095msgstr "" 8927msgstr ""
9096 8928
9097#: src/util/strings.c:174 8929#: src/util/strings.c:176
9098msgid "b" 8930msgid "b"
9099msgstr "b" 8931msgstr "b"
9100 8932
9101#: src/util/strings.c:471 8933#: src/util/strings.c:475
9102#, c-format 8934#, c-format
9103msgid "Character sets requested were `%s'->`%s'\n" 8935msgid "Character sets requested were `%s'->`%s'\n"
9104msgstr "" 8936msgstr ""
9105 8937
9106#: src/util/strings.c:598 8938#: src/util/strings.c:602
9107msgid "Failed to expand `$HOME': environment variable `HOME' not set" 8939msgid "Failed to expand `$HOME': environment variable `HOME' not set"
9108msgstr "" 8940msgstr ""
9109 8941
9110#: src/util/strings.c:702 8942#: src/util/strings.c:706
9111msgid "µs" 8943msgid "µs"
9112msgstr "" 8944msgstr ""
9113 8945
9114#: src/util/strings.c:706 8946#: src/util/strings.c:710
9115msgid "forever" 8947msgid "forever"
9116msgstr "" 8948msgstr ""
9117 8949
9118#: src/util/strings.c:708 8950#: src/util/strings.c:712
9119msgid "0 ms" 8951msgid "0 ms"
9120msgstr "" 8952msgstr ""
9121 8953
9122#: src/util/strings.c:714 8954#: src/util/strings.c:718
9123msgid "ms" 8955msgid "ms"
9124msgstr "ms" 8956msgstr "ms"
9125 8957
9126#: src/util/strings.c:720 8958#: src/util/strings.c:724
9127msgid "s" 8959msgid "s"
9128msgstr "s" 8960msgstr "s"
9129 8961
9130#: src/util/strings.c:726 8962#: src/util/strings.c:730
9131msgid "m" 8963msgid "m"
9132msgstr "m" 8964msgstr "m"
9133 8965
9134#: src/util/strings.c:732 8966#: src/util/strings.c:736
9135msgid "h" 8967msgid "h"
9136msgstr "h" 8968msgstr "h"
9137 8969
9138#: src/util/strings.c:739 8970#: src/util/strings.c:743
9139#, fuzzy 8971#, fuzzy
9140msgid "day" 8972msgid "day"
9141msgstr " dagar" 8973msgstr " dagar"
9142 8974
9143#: src/util/strings.c:741 8975#: src/util/strings.c:745
9144#, fuzzy 8976#, fuzzy
9145msgid "days" 8977msgid "days"
9146msgstr " dagar" 8978msgstr " dagar"
9147 8979
9148#: src/util/strings.c:770 8980#: src/util/strings.c:774
9149msgid "end of time" 8981msgid "end of time"
9150msgstr "" 8982msgstr ""
9151 8983
9152#: src/util/strings.c:1272 8984#: src/util/strings.c:1277
9153msgid "IPv6 address did not start with `['\n" 8985msgid "IPv6 address did not start with `['\n"
9154msgstr "" 8986msgstr ""
9155 8987
9156#: src/util/strings.c:1280 8988#: src/util/strings.c:1285
9157msgid "IPv6 address did contain ':' to separate port number\n" 8989msgid "IPv6 address did contain ':' to separate port number\n"
9158msgstr "" 8990msgstr ""
9159 8991
9160#: src/util/strings.c:1286 8992#: src/util/strings.c:1291
9161msgid "IPv6 address did contain ']' before ':' to separate port number\n" 8993msgid "IPv6 address did contain ']' before ':' to separate port number\n"
9162msgstr "" 8994msgstr ""
9163 8995
9164#: src/util/strings.c:1293 8996#: src/util/strings.c:1301
9165msgid "IPv6 address did contain a valid port number after the last ':'\n" 8997msgid "IPv6 address did contain a valid port number after the last ':'\n"
9166msgstr "" 8998msgstr ""
9167 8999
9168#: src/util/strings.c:1302 9000#: src/util/strings.c:1310
9169#, fuzzy, c-format 9001#, fuzzy, c-format
9170msgid "Invalid IPv6 address `%s': %s\n" 9002msgid "Invalid IPv6 address `%s': %s\n"
9171msgstr "Ogiltigt svar på \"%s\".\n" 9003msgstr "Ogiltigt svar på \"%s\".\n"
9172 9004
9173#: src/util/strings.c:1574 src/util/strings.c:1590 9005#: src/util/strings.c:1586 src/util/strings.c:1602
9174msgid "Port not in range\n" 9006msgid "Port not in range\n"
9175msgstr "" 9007msgstr ""
9176 9008
9177#: src/util/strings.c:1599 9009#: src/util/strings.c:1611
9178#, fuzzy, c-format 9010#, fuzzy, c-format
9179msgid "Malformed port policy `%s'\n" 9011msgid "Malformed port policy `%s'\n"
9180msgstr "Misslyckades att starta samling.\n" 9012msgstr "Misslyckades att starta samling.\n"
9181 9013
9182#: src/util/strings.c:1682 src/util/strings.c:1713 src/util/strings.c:1761 9014#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
9183#: src/util/strings.c:1782 9015#: src/util/strings.c:1798
9184#, c-format 9016#, c-format
9185msgid "Invalid format for IP: `%s'\n" 9017msgid "Invalid format for IP: `%s'\n"
9186msgstr "Ogiltigt format för IP: \"%s\"\n" 9018msgstr "Ogiltigt format för IP: \"%s\"\n"
9187 9019
9188#: src/util/strings.c:1739 9020#: src/util/strings.c:1754
9189#, c-format 9021#, c-format
9190msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)." 9022msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
9191msgstr "Ogiltig nätverksnotation (\"/%d\" är inte giltig i IPv4 CIDR)." 9023msgstr "Ogiltig nätverksnotation (\"/%d\" är inte giltig i IPv4 CIDR)."
9192 9024
9193#: src/util/strings.c:1791 9025#: src/util/strings.c:1807
9194#, fuzzy, c-format 9026#, fuzzy, c-format
9195msgid "Invalid format: `%s'\n" 9027msgid "Invalid format: `%s'\n"
9196msgstr "Ogiltigt format för IP: \"%s\"\n" 9028msgstr "Ogiltigt format för IP: \"%s\"\n"
9197 9029
9198#: src/util/strings.c:1843 9030#: src/util/strings.c:1860
9199#, c-format 9031#, c-format
9200msgid "Invalid network notation (does not end with ';': `%s')\n" 9032msgid "Invalid network notation (does not end with ';': `%s')\n"
9201msgstr "Ogiltig nätverksnotation (slutar inte med \";\": \"%s\")\n" 9033msgstr "Ogiltig nätverksnotation (slutar inte med \";\": \"%s\")\n"
9202 9034
9203#: src/util/strings.c:1893 9035#: src/util/strings.c:1914
9204#, fuzzy, c-format 9036#, fuzzy, c-format
9205msgid "Wrong format `%s' for netmask\n" 9037msgid "Wrong format `%s' for netmask\n"
9206msgstr "Fel format \"%s\" för nätmask: %s\n" 9038msgstr "Fel format \"%s\" för nätmask: %s\n"
9207 9039
9208#: src/util/strings.c:1924 9040#: src/util/strings.c:1945
9209#, fuzzy, c-format 9041#, fuzzy, c-format
9210msgid "Wrong format `%s' for network\n" 9042msgid "Wrong format `%s' for network\n"
9211msgstr "Fel format \"%s\" för nätverk: %s\n" 9043msgstr "Fel format \"%s\" för nätverk: %s\n"
9212 9044
9213#: src/vpn/gnunet-service-vpn.c:538 src/vpn/gnunet-service-vpn.c:1805 9045#: src/util/time.c:828 src/util/time.c:860
9046#, c-format
9047msgid "Failed to map `%s', cannot assure monotonic time!\n"
9048msgstr ""
9049
9050#: src/util/time.c:866
9051#, c-format
9052msgid ""
9053"Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
9054msgstr ""
9055
9056#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
9214#, fuzzy 9057#, fuzzy
9215msgid "# Active channels" 9058msgid "# Active channels"
9216msgstr "Nätverksanslutning" 9059msgstr "Nätverksanslutning"
9217 9060
9218#: src/vpn/gnunet-service-vpn.c:597 9061#: src/vpn/gnunet-service-vpn.c:599
9219#, fuzzy 9062#, fuzzy
9220msgid "# Messages dropped in cadet queue (overflow)" 9063msgid "# Messages dropped in cadet queue (overflow)"
9221msgstr "# byte kastade via UDP (utgående)" 9064msgstr "# byte kastade via UDP (utgående)"
9222 9065
9223#: src/vpn/gnunet-service-vpn.c:751 9066#: src/vpn/gnunet-service-vpn.c:753
9224#, fuzzy 9067#, fuzzy
9225msgid "# ICMP packets received from cadet" 9068msgid "# ICMP packets received from cadet"
9226msgstr "Meddelande mottaget från klient är ogiltig.\n" 9069msgstr "Meddelande mottaget från klient är ogiltig.\n"
9227 9070
9228#: src/vpn/gnunet-service-vpn.c:1094 9071#: src/vpn/gnunet-service-vpn.c:1096
9229#, fuzzy 9072#, fuzzy
9230msgid "# UDP packets received from cadet" 9073msgid "# UDP packets received from cadet"
9231msgstr "Meddelande mottaget från klient är ogiltig.\n" 9074msgstr "Meddelande mottaget från klient är ogiltig.\n"
9232 9075
9233#: src/vpn/gnunet-service-vpn.c:1253 9076#: src/vpn/gnunet-service-vpn.c:1255
9234#, fuzzy 9077#, fuzzy
9235msgid "# TCP packets received from cadet" 9078msgid "# TCP packets received from cadet"
9236msgstr "Meddelande mottaget från klient är ogiltig.\n" 9079msgstr "Meddelande mottaget från klient är ogiltig.\n"
9237 9080
9238#: src/vpn/gnunet-service-vpn.c:1465 9081#: src/vpn/gnunet-service-vpn.c:1467
9239#, fuzzy 9082#, fuzzy
9240msgid "# Cadet channels created" 9083msgid "# Cadet channels created"
9241msgstr "# PING-meddelanden skapade" 9084msgstr "# PING-meddelanden skapade"
9242 9085
9243#: src/vpn/gnunet-service-vpn.c:1685 9086#: src/vpn/gnunet-service-vpn.c:1687
9244#, c-format 9087#, c-format
9245msgid "Protocol %u not supported, dropping\n" 9088msgid "Protocol %u not supported, dropping\n"
9246msgstr "" 9089msgstr ""
9247 9090
9248#: src/vpn/gnunet-service-vpn.c:1824 9091#: src/vpn/gnunet-service-vpn.c:1826
9249#, fuzzy 9092#, fuzzy
9250msgid "# Packets dropped (channel not yet online)" 9093msgid "# Packets dropped (channel not yet online)"
9251msgstr "# byte kastade via UDP (utgående)" 9094msgstr "# byte kastade via UDP (utgående)"
9252 9095
9253#: src/vpn/gnunet-service-vpn.c:2004 9096#: src/vpn/gnunet-service-vpn.c:2006
9254msgid "# ICMPv4 packets dropped (not allowed)" 9097msgid "# ICMPv4 packets dropped (not allowed)"
9255msgstr "" 9098msgstr ""
9256 9099
9257#: src/vpn/gnunet-service-vpn.c:2025 9100#: src/vpn/gnunet-service-vpn.c:2027
9258msgid "# ICMPv6 packets dropped (not allowed)" 9101msgid "# ICMPv6 packets dropped (not allowed)"
9259msgstr "" 9102msgstr ""
9260 9103
9261#: src/vpn/gnunet-service-vpn.c:2233 9104#: src/vpn/gnunet-service-vpn.c:2235
9262#, fuzzy 9105#, fuzzy
9263msgid "# Packets received from TUN interface" 9106msgid "# Packets received from TUN interface"
9264msgstr "Meddelande mottaget från klient är ogiltig.\n" 9107msgstr "Meddelande mottaget från klient är ogiltig.\n"
9265 9108
9266#: src/vpn/gnunet-service-vpn.c:2266 src/vpn/gnunet-service-vpn.c:2302 9109#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
9267#, c-format 9110#, c-format
9268msgid "Packet received for unmapped destination `%s' (dropping it)\n" 9111msgid "Packet received for unmapped destination `%s' (dropping it)\n"
9269msgstr "" 9112msgstr ""
9270 9113
9271#: src/vpn/gnunet-service-vpn.c:2312 9114#: src/vpn/gnunet-service-vpn.c:2314
9272msgid "Received IPv4 packet with options (dropping it)\n" 9115msgid "Received IPv4 packet with options (dropping it)\n"
9273msgstr "" 9116msgstr ""
9274 9117
9275#: src/vpn/gnunet-service-vpn.c:2326 9118#: src/vpn/gnunet-service-vpn.c:2328
9276#, c-format 9119#, c-format
9277msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" 9120msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
9278msgstr "" 9121msgstr ""
9279 9122
9280#: src/vpn/gnunet-service-vpn.c:2365 9123#: src/vpn/gnunet-service-vpn.c:2367
9281msgid "Failed to find unallocated IPv4 address in VPN's range\n" 9124msgid "Failed to find unallocated IPv4 address in VPN's range\n"
9282msgstr "" 9125msgstr ""
9283 9126
9284#: src/vpn/gnunet-service-vpn.c:2420 9127#: src/vpn/gnunet-service-vpn.c:2422
9285msgid "Failed to find unallocated IPv6 address in VPN's range\n" 9128msgid "Failed to find unallocated IPv6 address in VPN's range\n"
9286msgstr "" 9129msgstr ""
9287 9130
9288#: src/vpn/gnunet-service-vpn.c:2462 src/vpn/gnunet-service-vpn.c:2684 9131#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
9289#, fuzzy 9132#, fuzzy
9290msgid "# Active destinations" 9133msgid "# Active destinations"
9291msgstr "Nätverksanslutning" 9134msgstr "Nätverksanslutning"
9292 9135
9293#: src/vpn/gnunet-service-vpn.c:2733 9136#: src/vpn/gnunet-service-vpn.c:2735
9294msgid "Failed to allocate IP address for new destination\n" 9137msgid "Failed to allocate IP address for new destination\n"
9295msgstr "" 9138msgstr ""
9296 9139
9297#: src/vpn/gnunet-service-vpn.c:2996 9140#: src/vpn/gnunet-service-vpn.c:2998
9298#, fuzzy 9141#, fuzzy
9299msgid "Must specify valid IPv6 address" 9142msgid "Must specify valid IPv6 address"
9300msgstr "\"%s\" är inte tillgänglig." 9143msgstr "\"%s\" är inte tillgänglig."
9301 9144
9302#: src/vpn/gnunet-service-vpn.c:3020 9145#: src/vpn/gnunet-service-vpn.c:3022
9303msgid "Must specify valid IPv6 mask" 9146msgid "Must specify valid IPv6 mask"
9304msgstr "" 9147msgstr ""
9305 9148
9306#: src/vpn/gnunet-service-vpn.c:3028 9149#: src/vpn/gnunet-service-vpn.c:3030
9307msgid "IPv6 support disabled as this system does not support IPv6\n" 9150msgid "IPv6 support disabled as this system does not support IPv6\n"
9308msgstr "" 9151msgstr ""
9309 9152
9310#: src/vpn/gnunet-service-vpn.c:3041 9153#: src/vpn/gnunet-service-vpn.c:3043
9311#, fuzzy 9154#, fuzzy
9312msgid "Must specify valid IPv4 address" 9155msgid "Must specify valid IPv4 address"
9313msgstr "\"%s\" är inte tillgänglig." 9156msgstr "\"%s\" är inte tillgänglig."
9314 9157
9315#: src/vpn/gnunet-service-vpn.c:3054 9158#: src/vpn/gnunet-service-vpn.c:3056
9316msgid "Must specify valid IPv4 mask" 9159msgid "Must specify valid IPv4 mask"
9317msgstr "" 9160msgstr ""
9318 9161
9319#: src/vpn/gnunet-service-vpn.c:3064 9162#: src/vpn/gnunet-service-vpn.c:3066
9320msgid "IPv4 support disabled as this system does not support IPv4\n" 9163msgid "IPv4 support disabled as this system does not support IPv4\n"
9321msgstr "" 9164msgstr ""
9322 9165
9323#: src/vpn/gnunet-vpn.c:145 9166#: src/vpn/gnunet-vpn.c:147
9324#, fuzzy 9167#, fuzzy
9325msgid "Error creating tunnel\n" 9168msgid "Error creating tunnel\n"
9326msgstr "Klar med skapandet av värdnyckel.\n" 9169msgstr "Klar med skapandet av värdnyckel.\n"
9327 9170
9328#: src/vpn/gnunet-vpn.c:189 src/vpn/gnunet-vpn.c:220 9171#: src/vpn/gnunet-vpn.c:191 src/vpn/gnunet-vpn.c:222
9329#, fuzzy, c-format 9172#, fuzzy, c-format
9330msgid "Option `%s' makes no sense with option `%s'.\n" 9173msgid "Option `%s' makes no sense with option `%s'.\n"
9331msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n" 9174msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n"
9332 9175
9333#: src/vpn/gnunet-vpn.c:202 9176#: src/vpn/gnunet-vpn.c:204
9334#, fuzzy, c-format 9177#, fuzzy, c-format
9335msgid "Option `%s' or `%s' is required.\n" 9178msgid "Option `%s' or `%s' is required.\n"
9336msgstr "%s: flagga \"%s\" är tvetydig\n" 9179msgstr "%s: flagga \"%s\" är tvetydig\n"
9337 9180
9338#: src/vpn/gnunet-vpn.c:214 9181#: src/vpn/gnunet-vpn.c:216
9339#, fuzzy, c-format 9182#, fuzzy, c-format
9340msgid "Option `%s' or `%s' is required when using option `%s'.\n" 9183msgid "Option `%s' or `%s' is required when using option `%s'.\n"
9341msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n" 9184msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n"
9342 9185
9343#: src/vpn/gnunet-vpn.c:234 9186#: src/vpn/gnunet-vpn.c:236
9344#, fuzzy, c-format 9187#, fuzzy, c-format
9345msgid "`%s' is not a valid peer identifier.\n" 9188msgid "`%s' is not a valid peer identifier.\n"
9346msgstr "\"%s\" är inte en vanlig fil.\n" 9189msgstr "\"%s\" är inte en vanlig fil.\n"
9347 9190
9348#: src/vpn/gnunet-vpn.c:254 9191#: src/vpn/gnunet-vpn.c:256
9349#, fuzzy, c-format 9192#, fuzzy, c-format
9350msgid "`%s' is not a valid IP address.\n" 9193msgid "`%s' is not a valid IP address.\n"
9351msgstr "\"%s\" är inte tillgänglig." 9194msgstr "\"%s\" är inte tillgänglig."
9352 9195
9353#: src/vpn/gnunet-vpn.c:290 9196#: src/vpn/gnunet-vpn.c:292
9354msgid "request that result should be an IPv4 address" 9197msgid "request that result should be an IPv4 address"
9355msgstr "" 9198msgstr ""
9356 9199
9357#: src/vpn/gnunet-vpn.c:295 9200#: src/vpn/gnunet-vpn.c:297
9358msgid "request that result should be an IPv6 address" 9201msgid "request that result should be an IPv6 address"
9359msgstr "" 9202msgstr ""
9360 9203
9361#: src/vpn/gnunet-vpn.c:301 9204#: src/vpn/gnunet-vpn.c:303
9362msgid "how long should the mapping be valid for new tunnels?" 9205msgid "how long should the mapping be valid for new tunnels?"
9363msgstr "" 9206msgstr ""
9364 9207
9365#: src/vpn/gnunet-vpn.c:307 9208#: src/vpn/gnunet-vpn.c:309
9366msgid "destination IP for the tunnel" 9209msgid "destination IP for the tunnel"
9367msgstr "" 9210msgstr ""
9368 9211
9369#: src/vpn/gnunet-vpn.c:313 9212#: src/vpn/gnunet-vpn.c:315
9370msgid "peer offering the service we would like to access" 9213msgid "peer offering the service we would like to access"
9371msgstr "" 9214msgstr ""
9372 9215
9373#: src/vpn/gnunet-vpn.c:319 9216#: src/vpn/gnunet-vpn.c:321
9374msgid "name of the service we would like to access" 9217msgid "name of the service we would like to access"
9375msgstr "" 9218msgstr ""
9376 9219
9377#: src/vpn/gnunet-vpn.c:324 9220#: src/vpn/gnunet-vpn.c:326
9378#, fuzzy 9221#, fuzzy
9379msgid "service is offered via TCP" 9222msgid "service is offered via TCP"
9380msgstr "# byte mottogs via TCP" 9223msgstr "# byte mottogs via TCP"
9381 9224
9382#: src/vpn/gnunet-vpn.c:329 9225#: src/vpn/gnunet-vpn.c:331
9383#, fuzzy 9226#, fuzzy
9384msgid "service is offered via UDP" 9227msgid "service is offered via UDP"
9385msgstr "# byte mottagna via UDP" 9228msgstr "# byte mottagna via UDP"
9386 9229
9387#: src/vpn/gnunet-vpn.c:342 9230#: src/vpn/gnunet-vpn.c:344
9388msgid "Setup tunnels via VPN." 9231msgid "Setup tunnels via VPN."
9389msgstr "" 9232msgstr ""
9390 9233
9391#: src/zonemaster/gnunet-service-zonemaster.c:836 9234#: src/zonemaster/gnunet-service-zonemaster.c:838
9392#: src/zonemaster/gnunet-service-zonemaster-monitor.c:414 9235#: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
9393#, fuzzy 9236#, fuzzy
9394msgid "Failed to connect to the namestore!\n" 9237msgid "Failed to connect to the namestore!\n"
9395msgstr "Misslyckades att ansluta till gnunetd.\n" 9238msgstr "Misslyckades att ansluta till gnunetd.\n"
9396 9239
9397#: src/include/gnunet_common.h:770 src/include/gnunet_common.h:777 9240#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
9398#: src/include/gnunet_common.h:787 9241#: src/include/gnunet_common.h:789
9399#, fuzzy, c-format 9242#, fuzzy, c-format
9400msgid "Assertion failed at %s:%d. Aborting.\n" 9243msgid "Assertion failed at %s:%d. Aborting.\n"
9401msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 9244msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
9402 9245
9403#: src/include/gnunet_common.h:795 9246#: src/include/gnunet_common.h:797
9404#, fuzzy, c-format 9247#, fuzzy, c-format
9405msgid "Assertion failed at %s:%d.\n" 9248msgid "Assertion failed at %s:%d.\n"
9406msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" 9249msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
9407 9250
9408#: src/include/gnunet_common.h:807 9251#: src/include/gnunet_common.h:809
9409#, c-format 9252#, c-format
9410msgid "External protocol violation detected at %s:%d.\n" 9253msgid "External protocol violation detected at %s:%d.\n"
9411msgstr "" 9254msgstr ""
9412 9255
9413#: src/include/gnunet_common.h:834 src/include/gnunet_common.h:843 9256#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
9414#, c-format 9257#, c-format
9415msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" 9258msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
9416msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n" 9259msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
9417 9260
9418#, fuzzy 9261#, fuzzy
9262#~ msgid "Invalid tunnel owner `%s'\n"
9263#~ msgstr "Ogiltigt format för IP: \"%s\"\n"
9264
9265#, fuzzy
9266#~ msgid "Provide information about a particular tunnel"
9267#~ msgstr "Skriv ut information om GNUnets motparter."
9268
9269#, fuzzy
9270#~ msgid "Failed to store membership information!\n"
9271#~ msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
9272
9273#, fuzzy
9274#~ msgid "Failed to test membership!\n"
9275#~ msgstr "Kunde inte skapa värdnyckel!\n"
9276
9277#, fuzzy
9278#~ msgid "Dropping invalid fragment\n"
9279#~ msgstr "Ogiltigt argument: \"%s\"\n"
9280
9281#, fuzzy
9282#~ msgid "Failed to store fragment\n"
9283#~ msgstr "Misslyckades att starta samling.\n"
9284
9285#, fuzzy
9286#~ msgid "Failed to get fragment!\n"
9287#~ msgstr "Kunde inte skapa värdnyckel!\n"
9288
9289#, fuzzy
9290#~ msgid "Failed to get message!\n"
9291#~ msgstr "Kunde inte skapa värdnyckel!\n"
9292
9293#, fuzzy
9294#~ msgid "Failed to get message fragment!\n"
9295#~ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
9296
9297#, fuzzy
9298#~ msgid "Failed to get master counters!\n"
9299#~ msgstr "Kunde inte skapa värdnyckel!\n"
9300
9301#, fuzzy
9302#~ msgid "Failed to begin modifying state: %d\n"
9303#~ msgstr "Misslyckades att starta samling.\n"
9304
9305#, fuzzy
9306#~ msgid "Failed to modify state: %d\n"
9307#~ msgstr "Misslyckades att starta samling.\n"
9308
9309#, fuzzy
9310#~ msgid "Failed to end modifying state!\n"
9311#~ msgstr "Misslyckades att starta samling.\n"
9312
9313#, fuzzy
9314#~ msgid "Failed to begin synchronizing state!\n"
9315#~ msgstr "Kunde inte skapa värdnyckel!\n"
9316
9317#, fuzzy
9318#~ msgid "Failed to end synchronizing state!\n"
9319#~ msgstr "Kunde inte skapa värdnyckel!\n"
9320
9321#, fuzzy
9322#~ msgid "Failed to reset state!\n"
9323#~ msgstr "Kunde inte skapa värdnyckel!\n"
9324
9325#, fuzzy
9326#~ msgid "Failed to get state variable!\n"
9327#~ msgstr "Kunde inte skapa värdnyckel!\n"
9328
9329#, fuzzy
9330#~ msgid "Unable to initialize Mysql.\n"
9331#~ msgstr "Kunde inte initiera SQLite.\n"
9332
9333#, fuzzy
9334#~ msgid "Failed to run SQL statement `%s'\n"
9335#~ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
9336
9337#, fuzzy
9338#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
9339#~ msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
9340
9341#, fuzzy
9342#~ msgid "--place missing or invalid.\n"
9343#~ msgstr "Ogiltigt argument: \"%s\"\n"
9344
9345#, fuzzy
9346#~ msgid "name or public key of ego"
9347#~ msgstr "Ogiltigt argument: \"%s\"\n"
9348
9349#, fuzzy
9350#~ msgid "wait for incoming messages"
9351#~ msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
9352
9353#, fuzzy
9354#~ msgid "GNS name"
9355#~ msgstr "Visa _namn"
9356
9357#, fuzzy
9358#~ msgid "method name"
9359#~ msgstr "Visa _namn"
9360
9361#, fuzzy
9362#~ msgid "number of messages to replay from history"
9363#~ msgstr "antal meddelanden att använda per iteration"
9364
9365#, fuzzy
9419#~ msgid "Could not resolve `%s' (%s): %s\n" 9366#~ msgid "Could not resolve `%s' (%s): %s\n"
9420#~ msgstr "Kunde inte slå upp \"%s\": %s\n" 9367#~ msgstr "Kunde inte slå upp \"%s\": %s\n"
9421 9368
@@ -11711,9 +11658,6 @@ msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
11711#~ msgid "allow SIZE bytes of memory for the local table" 11658#~ msgid "allow SIZE bytes of memory for the local table"
11712#~ msgstr "tillåt STORLEK byte av minne för lokaltabellen" 11659#~ msgstr "tillåt STORLEK byte av minne för lokaltabellen"
11713 11660
11714#~ msgid "Superflous arguments (ignored).\n"
11715#~ msgstr "Onödiga argument (ignorerade).\n"
11716
11717#~ msgid "Call to `%s' with value '%.*s' (%d bytes).\n" 11661#~ msgid "Call to `%s' with value '%.*s' (%d bytes).\n"
11718#~ msgstr "Anrop till \"%s\" med värde \"%.*s\" (%d byte).\n" 11662#~ msgstr "Anrop till \"%s\" med värde \"%.*s\" (%d byte).\n"
11719 11663
diff --git a/po/vi.po b/po/vi.po
index 85131f055..5f30f6f8f 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@ msgid ""
8msgstr "" 8msgstr ""
9"Project-Id-Version: gnunet 0.8.0a\n" 9"Project-Id-Version: gnunet 0.8.0a\n"
10"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" 10"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
11"POT-Creation-Date: 2018-10-20 11:13+0200\n" 11"POT-Creation-Date: 2019-02-13 00:37+0100\n"
12"PO-Revision-Date: 2008-09-10 22:05+0930\n" 12"PO-Revision-Date: 2008-09-10 22:05+0930\n"
13"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" 13"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
14"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" 14"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -19,1048 +19,1042 @@ msgstr ""
19"Plural-Forms: nplurals=1; plural=0;\n" 19"Plural-Forms: nplurals=1; plural=0;\n"
20"X-Generator: LocFactoryEditor 1.7b3\n" 20"X-Generator: LocFactoryEditor 1.7b3\n"
21 21
22#: src/arm/gnunet-arm.c:154 22#: src/arm/gnunet-arm.c:156
23#, fuzzy, c-format 23#, fuzzy, c-format
24msgid "Failed to remove configuration file %s\n" 24msgid "Failed to remove configuration file %s\n"
25msgstr "Không thể lưu tập tin cấu hình « %s »:" 25msgstr "Không thể lưu tập tin cấu hình « %s »:"
26 26
27#: src/arm/gnunet-arm.c:160 27#: src/arm/gnunet-arm.c:162
28#, fuzzy, c-format 28#, fuzzy, c-format
29msgid "Failed to remove servicehome directory %s\n" 29msgid "Failed to remove servicehome directory %s\n"
30msgstr "Lỗi truy cập đến thư mục nhà GNUnet « %s »\n" 30msgstr "Lỗi truy cập đến thư mục nhà GNUnet « %s »\n"
31 31
32#: src/arm/gnunet-arm.c:220 src/testbed/gnunet-service-testbed_peers.c:1137 32#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
33msgid "Message was sent successfully" 33msgid "Message was sent successfully"
34msgstr "" 34msgstr ""
35 35
36#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139 36#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
37#, fuzzy 37#, fuzzy
38msgid "We disconnected from ARM before we could send a request" 38msgid "We disconnected from ARM before we could send a request"
39msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 39msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
40 40
41#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141 41#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
42#, fuzzy 42#, fuzzy
43msgid "Unknown request status" 43msgid "Unknown request status"
44msgstr "Không rõ người dùng « %s »\n" 44msgstr "Không rõ người dùng « %s »\n"
45 45
46#: src/arm/gnunet-arm.c:240 46#: src/arm/gnunet-arm.c:242
47#, fuzzy 47#, fuzzy
48msgid "is stopped" 48msgid "is stopped"
49msgstr "# các byte trong kho dữ liệu" 49msgstr "# các byte trong kho dữ liệu"
50 50
51#: src/arm/gnunet-arm.c:242 51#: src/arm/gnunet-arm.c:244
52#, fuzzy 52#, fuzzy
53msgid "is starting" 53msgid "is starting"
54msgstr "« %s » đang đăng ký trình điều khiển %d\n" 54msgstr "« %s » đang đăng ký trình điều khiển %d\n"
55 55
56#: src/arm/gnunet-arm.c:244 56#: src/arm/gnunet-arm.c:246
57#, fuzzy 57#, fuzzy
58msgid "is stopping" 58msgid "is stopping"
59msgstr "# các byte trong kho dữ liệu" 59msgstr "# các byte trong kho dữ liệu"
60 60
61#: src/arm/gnunet-arm.c:246 61#: src/arm/gnunet-arm.c:248
62#, fuzzy 62#, fuzzy
63msgid "is starting already" 63msgid "is starting already"
64msgstr "« %s » đang đăng ký trình điều khiển %d\n" 64msgstr "« %s » đang đăng ký trình điều khiển %d\n"
65 65
66#: src/arm/gnunet-arm.c:248 66#: src/arm/gnunet-arm.c:250
67#, fuzzy 67#, fuzzy
68msgid "is stopping already" 68msgid "is stopping already"
69msgstr "« %s » đang đăng ký trình điều khiển %d\n" 69msgstr "« %s » đang đăng ký trình điều khiển %d\n"
70 70
71#: src/arm/gnunet-arm.c:250 71#: src/arm/gnunet-arm.c:252
72#, fuzzy 72#, fuzzy
73msgid "is started already" 73msgid "is started already"
74msgstr "« %s » đang đăng ký trình điều khiển %d\n" 74msgstr "« %s » đang đăng ký trình điều khiển %d\n"
75 75
76#: src/arm/gnunet-arm.c:252 76#: src/arm/gnunet-arm.c:254
77#, fuzzy 77#, fuzzy
78msgid "is stopped already" 78msgid "is stopped already"
79msgstr "« %s » đang đăng ký trình điều khiển %d\n" 79msgstr "« %s » đang đăng ký trình điều khiển %d\n"
80 80
81#: src/arm/gnunet-arm.c:254 81#: src/arm/gnunet-arm.c:256
82#, fuzzy 82#, fuzzy
83msgid "service is not known to ARM" 83msgid "service is not known to ARM"
84msgstr "Không gian tên « %s » có đánh giá %d.\n" 84msgstr "Không gian tên « %s » có đánh giá %d.\n"
85 85
86#: src/arm/gnunet-arm.c:256 86#: src/arm/gnunet-arm.c:258
87#, fuzzy 87#, fuzzy
88msgid "service failed to start" 88msgid "service failed to start"
89msgstr "Lỗi bắt đầu thu thập.\n" 89msgstr "Lỗi bắt đầu thu thập.\n"
90 90
91#: src/arm/gnunet-arm.c:258 91#: src/arm/gnunet-arm.c:260
92#, fuzzy 92#, fuzzy
93msgid "service cannot be manipulated because ARM is shutting down" 93msgid "service cannot be manipulated because ARM is shutting down"
94msgstr "« %s » đang tắt.\n" 94msgstr "« %s » đang tắt.\n"
95 95
96#: src/arm/gnunet-arm.c:260 96#: src/arm/gnunet-arm.c:262
97#, fuzzy 97#, fuzzy
98msgid "Unknown result code." 98msgid "Unknown result code."
99msgstr "Không rõ người dùng « %s »\n" 99msgstr "Không rõ người dùng « %s »\n"
100 100
101#: src/arm/gnunet-arm.c:292 101#: src/arm/gnunet-arm.c:295
102msgid "Fatal error initializing ARM API.\n" 102msgid "Fatal error initializing ARM API.\n"
103msgstr "" 103msgstr ""
104 104
105#: src/arm/gnunet-arm.c:320 src/arm/gnunet-arm.c:329 105#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
106#, fuzzy, c-format 106#, fuzzy, c-format
107msgid "Failed to start the ARM service: %s\n" 107msgid "Failed to start the ARM service: %s\n"
108msgstr "Lỗi bắt đầu thu thập.\n" 108msgstr "Lỗi bắt đầu thu thập.\n"
109 109
110#: src/arm/gnunet-arm.c:363 110#: src/arm/gnunet-arm.c:368
111#, fuzzy, c-format 111#, fuzzy, c-format
112msgid "Failed to send a stop request to the ARM service: %s\n" 112msgid "Failed to send a stop request to the ARM service: %s\n"
113msgstr "Lỗi kết nối đến gnunetd.\n" 113msgstr "Lỗi kết nối đến gnunetd.\n"
114 114
115#: src/arm/gnunet-arm.c:374 115#: src/arm/gnunet-arm.c:379
116#, fuzzy, c-format 116#, fuzzy, c-format
117msgid "Failed to stop the ARM service: %s\n" 117msgid "Failed to stop the ARM service: %s\n"
118msgstr "Lỗi vào phòng « %s »\n" 118msgstr "Lỗi vào phòng « %s »\n"
119 119
120#: src/arm/gnunet-arm.c:413 120#: src/arm/gnunet-arm.c:419
121#, fuzzy, c-format 121#, fuzzy, c-format
122msgid "Failed to send a request to start the `%s' service: %s\n" 122msgid "Failed to send a request to start the `%s' service: %s\n"
123msgstr "Lỗi kết nối đến gnunetd.\n" 123msgstr "Lỗi kết nối đến gnunetd.\n"
124 124
125#: src/arm/gnunet-arm.c:423 125#: src/arm/gnunet-arm.c:429
126#, fuzzy, c-format 126#, fuzzy, c-format
127msgid "Failed to start the `%s' service: %s\n" 127msgid "Failed to start the `%s' service: %s\n"
128msgstr "Lỗi bắt đầu thu thập.\n" 128msgstr "Lỗi bắt đầu thu thập.\n"
129 129
130#: src/arm/gnunet-arm.c:460 130#: src/arm/gnunet-arm.c:467
131#, fuzzy, c-format 131#, fuzzy, c-format
132msgid "Failed to send a request to kill the `%s' service: %%s\n" 132msgid "Failed to send a request to kill the `%s' service: %%s\n"
133msgstr "Lỗi kết nối đến gnunetd.\n" 133msgstr "Lỗi kết nối đến gnunetd.\n"
134 134
135#: src/arm/gnunet-arm.c:471 135#: src/arm/gnunet-arm.c:478
136#, fuzzy, c-format 136#, fuzzy, c-format
137msgid "Failed to kill the `%s' service: %s\n" 137msgid "Failed to kill the `%s' service: %s\n"
138msgstr "Lỗi chạy %s: %s %d\n" 138msgstr "Lỗi chạy %s: %s %d\n"
139 139
140#: src/arm/gnunet-arm.c:511 140#: src/arm/gnunet-arm.c:519
141#, fuzzy, c-format 141#, fuzzy, c-format
142msgid "Failed to request a list of services: %s\n" 142msgid "Failed to request a list of services: %s\n"
143msgstr "Lỗi bắt đầu thu thập.\n" 143msgstr "Lỗi bắt đầu thu thập.\n"
144 144
145#: src/arm/gnunet-arm.c:520 145#: src/arm/gnunet-arm.c:528
146#, fuzzy 146#, fuzzy
147msgid "Error communicating with ARM. ARM not running?\n" 147msgid "Error communicating with ARM. ARM not running?\n"
148msgstr "Cổng để liên lạc với giao diện người dùng GNUnet" 148msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
149 149
150#: src/arm/gnunet-arm.c:526 150#: src/arm/gnunet-arm.c:534
151#, fuzzy 151#, fuzzy
152msgid "Running services:\n" 152msgid "Running services:\n"
153msgstr "Đang nạp và khởi động dùng « %s ».\n" 153msgstr "Đang nạp và khởi động dùng « %s ».\n"
154 154
155#: src/arm/gnunet-arm.c:614 155#: src/arm/gnunet-arm.c:623
156#, c-format 156#, c-format
157msgid "Now only monitoring, press CTRL-C to stop.\n" 157msgid "Now only monitoring, press CTRL-C to stop.\n"
158msgstr "" 158msgstr ""
159 159
160#: src/arm/gnunet-arm.c:646 160#: src/arm/gnunet-arm.c:656
161#, c-format 161#, c-format
162msgid "Stopped %s.\n" 162msgid "Stopped %s.\n"
163msgstr "" 163msgstr ""
164 164
165#: src/arm/gnunet-arm.c:649 165#: src/arm/gnunet-arm.c:659
166#, fuzzy, c-format 166#, fuzzy, c-format
167msgid "Starting %s...\n" 167msgid "Starting %s...\n"
168msgstr "Đang bắt đầu tài về « %s »\n" 168msgstr "Đang bắt đầu tài về « %s »\n"
169 169
170#: src/arm/gnunet-arm.c:652 170#: src/arm/gnunet-arm.c:662
171#, c-format 171#, c-format
172msgid "Stopping %s...\n" 172msgid "Stopping %s...\n"
173msgstr "" 173msgstr ""
174 174
175#: src/arm/gnunet-arm.c:666 175#: src/arm/gnunet-arm.c:676
176#, fuzzy, c-format 176#, fuzzy, c-format
177msgid "Unknown status %u for service %s.\n" 177msgid "Unknown status %u for service %s.\n"
178msgstr "Không rõ người dùng « %s »\n" 178msgstr "Không rõ người dùng « %s »\n"
179 179
180#: src/arm/gnunet-arm.c:767 180#: src/arm/gnunet-arm.c:766
181#, fuzzy 181#, fuzzy
182msgid "stop all GNUnet services" 182msgid "stop all GNUnet services"
183msgstr "hủy cài đặt dịch vụ GNUnet" 183msgstr "hủy cài đặt dịch vụ GNUnet"
184 184
185#: src/arm/gnunet-arm.c:773 185#: src/arm/gnunet-arm.c:771
186msgid "start a particular service" 186msgid "start a particular service"
187msgstr "" 187msgstr ""
188 188
189#: src/arm/gnunet-arm.c:779 189#: src/arm/gnunet-arm.c:776
190msgid "stop a particular service" 190msgid "stop a particular service"
191msgstr "" 191msgstr ""
192 192
193#: src/arm/gnunet-arm.c:784 193#: src/arm/gnunet-arm.c:780
194#, fuzzy 194#, fuzzy
195msgid "start all GNUnet default services" 195msgid "start all GNUnet default services"
196msgstr "hủy cài đặt dịch vụ GNUnet" 196msgstr "hủy cài đặt dịch vụ GNUnet"
197 197
198#: src/arm/gnunet-arm.c:789 198#: src/arm/gnunet-arm.c:784
199#, fuzzy 199#, fuzzy
200msgid "stop and start all GNUnet default services" 200msgid "stop and start all GNUnet default services"
201msgstr "hủy cài đặt dịch vụ GNUnet" 201msgstr "hủy cài đặt dịch vụ GNUnet"
202 202
203#: src/arm/gnunet-arm.c:793 203#: src/arm/gnunet-arm.c:788
204msgid "delete config file and directory on exit" 204msgid "delete config file and directory on exit"
205msgstr "" 205msgstr ""
206 206
207#: src/arm/gnunet-arm.c:798 207#: src/arm/gnunet-arm.c:792
208msgid "monitor ARM activities" 208msgid "monitor ARM activities"
209msgstr "" 209msgstr ""
210 210
211#: src/arm/gnunet-arm.c:803 211#: src/arm/gnunet-arm.c:796
212msgid "don't print status messages" 212msgid "don't print status messages"
213msgstr "" 213msgstr ""
214 214
215#: src/arm/gnunet-arm.c:809 215#: src/arm/gnunet-arm.c:801
216msgid "exit with error status if operation does not finish after DELAY" 216msgid "exit with error status if operation does not finish after DELAY"
217msgstr "" 217msgstr ""
218 218
219#: src/arm/gnunet-arm.c:814 219#: src/arm/gnunet-arm.c:805
220#, fuzzy 220#, fuzzy
221msgid "list currently running services" 221msgid "list currently running services"
222msgstr "Đang nạp và khởi động dùng « %s ».\n" 222msgstr "Đang nạp và khởi động dùng « %s ».\n"
223 223
224#: src/arm/gnunet-arm.c:819 224#: src/arm/gnunet-arm.c:809
225msgid "don't let gnunet-service-arm inherit standard output" 225msgid "don't let gnunet-service-arm inherit standard output"
226msgstr "" 226msgstr ""
227 227
228#: src/arm/gnunet-arm.c:824 228#: src/arm/gnunet-arm.c:813
229msgid "don't let gnunet-service-arm inherit standard error" 229msgid "don't let gnunet-service-arm inherit standard error"
230msgstr "" 230msgstr ""
231 231
232#: src/arm/gnunet-arm.c:837 232#: src/arm/gnunet-arm.c:828
233msgid "Control services and the Automated Restart Manager (ARM)" 233msgid "Control services and the Automated Restart Manager (ARM)"
234msgstr "" 234msgstr ""
235 235
236#: src/arm/gnunet-service-arm.c:386 src/transport/plugin_transport_tcp.c:1118 236#: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
237#: src/transport/plugin_transport_xt.c:1118 237#: src/transport/plugin_transport_xt.c:1120
238#: src/transport/tcp_service_legacy.c:555 src/util/service.c:610 238#: src/transport/tcp_service_legacy.c:557 src/util/service.c:1167
239#, c-format 239#, c-format
240msgid "" 240msgid ""
241"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n" 241"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
242msgstr "" 242msgstr ""
243 243
244#: src/arm/gnunet-service-arm.c:410 src/arm/gnunet-service-arm.c:416 244#: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
245#: src/transport/plugin_transport_tcp.c:1137 245#: src/transport/plugin_transport_tcp.c:1139
246#: src/transport/plugin_transport_tcp.c:1143 246#: src/transport/plugin_transport_tcp.c:1145
247#: src/transport/plugin_transport_tcp.c:3823 247#: src/transport/plugin_transport_tcp.c:3829
248#: src/transport/plugin_transport_xt.c:1137 248#: src/transport/plugin_transport_xt.c:1139
249#: src/transport/plugin_transport_xt.c:1143 249#: src/transport/plugin_transport_xt.c:1145
250#: src/transport/plugin_transport_xt.c:3831 250#: src/transport/plugin_transport_xt.c:3833
251#: src/transport/tcp_service_legacy.c:574 251#: src/transport/tcp_service_legacy.c:576
252#: src/transport/tcp_service_legacy.c:580 src/util/service.c:635 252#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1192
253#: src/util/service.c:641 253#: src/util/service.c:1198
254#, c-format 254#, c-format
255msgid "Require valid port number for service `%s' in configuration!\n" 255msgid "Require valid port number for service `%s' in configuration!\n"
256msgstr "" 256msgstr ""
257 257
258#: src/arm/gnunet-service-arm.c:455 src/transport/plugin_transport_tcp.c:1174 258#: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
259#: src/transport/plugin_transport_xt.c:1174 259#: src/transport/plugin_transport_xt.c:1176
260#: src/transport/tcp_service_legacy.c:611 src/util/client.c:504 260#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
261#: src/util/service.c:680 261#: src/util/service.c:1237
262#, c-format 262#, c-format
263msgid "UNIXPATH `%s' too long, maximum length is %llu\n" 263msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
264msgstr "" 264msgstr ""
265 265
266#: src/arm/gnunet-service-arm.c:460 src/transport/plugin_transport_tcp.c:1178 266#: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
267#: src/transport/plugin_transport_xt.c:1178 267#: src/transport/plugin_transport_xt.c:1180
268#: src/transport/tcp_service_legacy.c:615 src/util/client.c:509 268#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
269#: src/util/service.c:685 269#: src/util/service.c:1242
270#, fuzzy, c-format 270#, fuzzy, c-format
271msgid "Using `%s' instead\n" 271msgid "Using `%s' instead\n"
272msgstr "%s: tùy chọn « %s » là mơ hồ\n" 272msgstr "%s: tùy chọn « %s » là mơ hồ\n"
273 273
274#: src/arm/gnunet-service-arm.c:493 src/transport/plugin_transport_tcp.c:1209 274#: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
275#: src/transport/plugin_transport_xt.c:1209 275#: src/transport/plugin_transport_xt.c:1211
276#: src/transport/tcp_service_legacy.c:646 src/util/service.c:721 276#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1278
277#, c-format 277#, c-format
278msgid "" 278msgid ""
279"Disabling UNIX domain socket support for service `%s', failed to create UNIX " 279"Disabling UNIX domain socket support for service `%s', failed to create UNIX "
280"domain socket: %s\n" 280"domain socket: %s\n"
281msgstr "" 281msgstr ""
282 282
283#: src/arm/gnunet-service-arm.c:515 src/transport/plugin_transport_tcp.c:1226 283#: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
284#: src/transport/plugin_transport_xt.c:1226 284#: src/transport/plugin_transport_xt.c:1228
285#: src/transport/tcp_service_legacy.c:663 src/util/service.c:739 285#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1296
286#, c-format 286#, c-format
287msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n" 287msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
288msgstr "" 288msgstr ""
289 289
290#: src/arm/gnunet-service-arm.c:554 290#: src/arm/gnunet-service-arm.c:556
291#: src/transport/plugin_transport_http_server.c:2682 291#: src/transport/plugin_transport_http_server.c:2688
292#: src/transport/plugin_transport_tcp.c:1257 292#: src/transport/plugin_transport_tcp.c:1259
293#: src/transport/plugin_transport_xt.c:1257 293#: src/transport/plugin_transport_xt.c:1259
294#: src/transport/tcp_service_legacy.c:694 src/util/service.c:780 294#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1337
295#, fuzzy, c-format 295#, fuzzy, c-format
296msgid "Failed to resolve `%s': %s\n" 296msgid "Failed to resolve `%s': %s\n"
297msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 297msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
298 298
299#: src/arm/gnunet-service-arm.c:573 299#: src/arm/gnunet-service-arm.c:575
300#: src/transport/plugin_transport_http_server.c:2700 300#: src/transport/plugin_transport_http_server.c:2706
301#: src/transport/plugin_transport_tcp.c:1276 301#: src/transport/plugin_transport_tcp.c:1278
302#: src/transport/plugin_transport_xt.c:1276 302#: src/transport/plugin_transport_xt.c:1278
303#: src/transport/tcp_service_legacy.c:713 src/util/service.c:800 303#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1357
304#, fuzzy, c-format 304#, fuzzy, c-format
305msgid "Failed to find %saddress for `%s'.\n" 305msgid "Failed to find %saddress for `%s'.\n"
306msgstr "Lỗi đóng kết đến cổng %s %d.\n" 306msgstr "Lỗi đóng kết đến cổng %s %d.\n"
307 307
308#: src/arm/gnunet-service-arm.c:984 308#: src/arm/gnunet-service-arm.c:986
309#, fuzzy, c-format 309#, fuzzy, c-format
310msgid "Failed to start service `%s'\n" 310msgid "Failed to start service `%s'\n"
311msgstr "Lỗi bắt đầu thu thập.\n" 311msgstr "Lỗi bắt đầu thu thập.\n"
312 312
313#: src/arm/gnunet-service-arm.c:995 313#: src/arm/gnunet-service-arm.c:997
314#, fuzzy, c-format 314#, fuzzy, c-format
315msgid "Starting service `%s'\n" 315msgid "Starting service `%s'\n"
316msgstr "Đang bắt đầu tài về « %s »\n" 316msgstr "Đang bắt đầu tài về « %s »\n"
317 317
318#: src/arm/gnunet-service-arm.c:1107 318#: src/arm/gnunet-service-arm.c:1109
319#, fuzzy, c-format 319#, fuzzy, c-format
320msgid "Unable to create socket for service `%s': %s\n" 320msgid "Unable to create socket for service `%s': %s\n"
321msgstr "Không thể tạo tài khoản người dùng:" 321msgstr "Không thể tạo tài khoản người dùng:"
322 322
323#: src/arm/gnunet-service-arm.c:1142 323#: src/arm/gnunet-service-arm.c:1144
324#, c-format 324#, c-format
325msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n" 325msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n"
326msgstr "" 326msgstr ""
327 327
328#: src/arm/gnunet-service-arm.c:1185 328#: src/arm/gnunet-service-arm.c:1187
329#, c-format 329#, c-format
330msgid "ARM now monitors connections to service `%s' at `%s'\n" 330msgid "ARM now monitors connections to service `%s' at `%s'\n"
331msgstr "" 331msgstr ""
332 332
333#: src/arm/gnunet-service-arm.c:1364 333#: src/arm/gnunet-service-arm.c:1346
334#, fuzzy, c-format 334#, fuzzy, c-format
335msgid "Preparing to stop `%s'\n" 335msgid "Preparing to stop `%s'\n"
336msgstr "Đang bắt đầu tài lên « %s ».\n" 336msgstr "Đang bắt đầu tài lên « %s ».\n"
337 337
338#: src/arm/gnunet-service-arm.c:1669 338#: src/arm/gnunet-service-arm.c:1651
339#, fuzzy, c-format 339#, fuzzy, c-format
340msgid "Restarting service `%s'.\n" 340msgid "Restarting service `%s'.\n"
341msgstr "Đang nạp và khởi động dùng « %s ».\n" 341msgstr "Đang nạp và khởi động dùng « %s ».\n"
342 342
343#: src/arm/gnunet-service-arm.c:1830 343#: src/arm/gnunet-service-arm.c:1812
344msgid "exit" 344msgid "exit"
345msgstr "" 345msgstr ""
346 346
347#: src/arm/gnunet-service-arm.c:1835 347#: src/arm/gnunet-service-arm.c:1817
348msgid "signal" 348msgid "signal"
349msgstr "" 349msgstr ""
350 350
351#: src/arm/gnunet-service-arm.c:1840 351#: src/arm/gnunet-service-arm.c:1822
352#, fuzzy 352#, fuzzy
353msgid "unknown" 353msgid "unknown"
354msgstr "Lỗi không rõ" 354msgstr "Lỗi không rõ"
355 355
356#: src/arm/gnunet-service-arm.c:1846 356#: src/arm/gnunet-service-arm.c:1828
357#, fuzzy, c-format 357#, fuzzy, c-format
358msgid "Service `%s' took %s to terminate\n" 358msgid "Service `%s' took %s to terminate\n"
359msgstr "Dịch vụ đã bị xoá.\n" 359msgstr "Dịch vụ đã bị xoá.\n"
360 360
361#: src/arm/gnunet-service-arm.c:1872 361#: src/arm/gnunet-service-arm.c:1854
362#, c-format 362#, c-format
363msgid "Service `%s' terminated normally, will restart at any time\n" 363msgid "Service `%s' terminated normally, will restart at any time\n"
364msgstr "" 364msgstr ""
365 365
366#: src/arm/gnunet-service-arm.c:1888 366#: src/arm/gnunet-service-arm.c:1870
367#, c-format 367#, c-format
368msgid "Service `%s' terminated with status %s/%d, will restart in %s\n" 368msgid "Service `%s' terminated with status %s/%d, will restart in %s\n"
369msgstr "" 369msgstr ""
370 370
371#: src/arm/mockup-service.c:40 371#: src/arm/mockup-service.c:42
372msgid "Initiating shutdown as requested by client.\n" 372msgid "Initiating shutdown as requested by client.\n"
373msgstr "" 373msgstr ""
374 374
375#: src/ats/gnunet-ats-solver-eval.c:2779 src/ats/gnunet-ats-solver-eval.c:2820 375#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
376#, c-format 376#, c-format
377msgid "" 377msgid ""
378"Could not load quota for network `%s': `%s', assigning default bandwidth " 378"Could not load quota for network `%s': `%s', assigning default bandwidth "
379"%llu\n" 379"%llu\n"
380msgstr "" 380msgstr ""
381 381
382#: src/ats/gnunet-ats-solver-eval.c:2797 382#: src/ats/gnunet-ats-solver-eval.c:2799
383#, c-format 383#, c-format
384msgid "" 384msgid ""
385"No outbound quota configured for network `%s', assigning default bandwidth " 385"No outbound quota configured for network `%s', assigning default bandwidth "
386"%llu\n" 386"%llu\n"
387msgstr "" 387msgstr ""
388 388
389#: src/ats/gnunet-ats-solver-eval.c:2838 389#: src/ats/gnunet-ats-solver-eval.c:2840
390#, c-format 390#, c-format
391msgid "" 391msgid ""
392"No outbound quota configure for network `%s', assigning default bandwidth " 392"No outbound quota configure for network `%s', assigning default bandwidth "
393"%llu\n" 393"%llu\n"
394msgstr "" 394msgstr ""
395 395
396#: src/ats/gnunet-ats-solver-eval.c:3292 src/ats-tests/gnunet-solver-eval.c:937 396#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
397msgid "solver to use" 397msgid "solver to use"
398msgstr "" 398msgstr ""
399 399
400#: src/ats/gnunet-ats-solver-eval.c:3297 src/ats-tests/gnunet-solver-eval.c:943 400#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
401#: src/ats-tests/gnunet-solver-eval.c:948 401#: src/ats-tests/gnunet-solver-eval.c:950
402msgid "experiment to use" 402msgid "experiment to use"
403msgstr "" 403msgstr ""
404 404
405#: src/ats/gnunet-ats-solver-eval.c:3304 405#: src/ats/gnunet-ats-solver-eval.c:3306
406#, fuzzy 406#, fuzzy
407msgid "print logging" 407msgid "print logging"
408msgstr "Theo dõi" 408msgstr "Theo dõi"
409 409
410#: src/ats/gnunet-ats-solver-eval.c:3309 410#: src/ats/gnunet-ats-solver-eval.c:3311
411msgid "save logging to disk" 411msgid "save logging to disk"
412msgstr "" 412msgstr ""
413 413
414#: src/ats/gnunet-ats-solver-eval.c:3314 414#: src/ats/gnunet-ats-solver-eval.c:3316
415msgid "disable normalization" 415msgid "disable normalization"
416msgstr "" 416msgstr ""
417 417
418#: src/ats/gnunet-service-ats_plugins.c:302 418#: src/ats/gnunet-service-ats-new.c:756
419#: src/ats/gnunet-service-ats_plugins.c:451
420#, fuzzy, c-format
421msgid "Failed to initialize solver `%s'!\n"
422msgstr "Không thể sơ khởi SQLite: %s.\n"
423
424#: src/ats/gnunet-service-ats_plugins.c:304
419#, c-format 425#, c-format
420msgid "" 426msgid ""
421"Could not load %s quota for network `%s': `%s', assigning default bandwidth " 427"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
422"%llu\n" 428"%llu\n"
423msgstr "" 429msgstr ""
424 430
425#: src/ats/gnunet-service-ats_plugins.c:312 431#: src/ats/gnunet-service-ats_plugins.c:314
426#, c-format 432#, c-format
427msgid "%s quota configured for network `%s' is %llu\n" 433msgid "%s quota configured for network `%s' is %llu\n"
428msgstr "" 434msgstr ""
429 435
430#: src/ats/gnunet-service-ats_plugins.c:357 436#: src/ats/gnunet-service-ats_plugins.c:359
431#, c-format 437#, c-format
432msgid "" 438msgid ""
433"No %s-quota configured for network `%s', assigning default bandwidth %llu\n" 439"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
434msgstr "" 440msgstr ""
435 441
436#: src/ats/gnunet-service-ats_plugins.c:449 442#: src/ats/plugin_ats2_common.c:90
437#, fuzzy, c-format 443#, c-format
438msgid "Failed to initialize solver `%s'!\n" 444msgid ""
439msgstr "Không thể sơ khởi SQLite: %s.\n" 445"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
446"%llu\n"
447msgstr ""
440 448
441#: src/ats/plugin_ats_mlp.c:1272 449#: src/ats/plugin_ats_mlp.c:1274
442msgid "Problem size too large, cannot allocate memory!\n" 450msgid "Problem size too large, cannot allocate memory!\n"
443msgstr "" 451msgstr ""
444 452
445#: src/ats/plugin_ats_mlp.c:1868 453#: src/ats/plugin_ats_mlp.c:1870
446#, fuzzy, c-format 454#, fuzzy, c-format
447msgid "Adding address for peer `%s' multiple times\n" 455msgid "Adding address for peer `%s' multiple times\n"
448msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" 456msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n"
449 457
450#: src/ats/plugin_ats_mlp.c:1912 458#: src/ats/plugin_ats_mlp.c:1914
451#, fuzzy, c-format 459#, fuzzy, c-format
452msgid "Updating address property for peer `%s' %p not added before\n" 460msgid "Updating address property for peer `%s' %p not added before\n"
453msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" 461msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n"
454 462
455#: src/ats/plugin_ats_mlp.c:2474 463#: src/ats/plugin_ats_mlp.c:2476
456msgid "" 464msgid ""
457"MLP solver is not optimizing for anything, changing to feasibility check\n" 465"MLP solver is not optimizing for anything, changing to feasibility check\n"
458msgstr "" 466msgstr ""
459 467
460#: src/ats/plugin_ats_mlp.c:2514 src/ats/plugin_ats_mlp.c:2531 468#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
461#: src/ats/plugin_ats_mlp.c:2563 src/ats/plugin_ats_mlp.c:2581 469#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
462#: src/ats/plugin_ats_mlp.c:2600 src/ats/plugin_ats_proportional.c:1139 470#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
463#: src/ats/plugin_ats_ril.c:2610 src/ats/plugin_ats_ril.c:2627 471#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
464#: src/ats/plugin_ats_ril.c:2644 src/ats/plugin_ats_ril.c:2661 472#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
465#: src/ats/plugin_ats_ril.c:2678 src/ats/plugin_ats_ril.c:2695 473#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
466#: src/ats/plugin_ats_ril.c:2712 src/ats/plugin_ats_ril.c:2729 474#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
467#, fuzzy, c-format 475#, fuzzy, c-format
468msgid "Invalid %s configuration %f \n" 476msgid "Invalid %s configuration %f \n"
469msgstr "Không thể lưu tập tin cấu hình « %s »:" 477msgstr "Không thể lưu tập tin cấu hình « %s »:"
470 478
471#: src/ats/plugin_ats_mlp.c:2669 479#: src/ats/plugin_ats_mlp.c:2671
472#, c-format 480#, c-format
473msgid "" 481msgid ""
474"Adjusting inconsistent outbound quota configuration for network `%s', is " 482"Adjusting inconsistent outbound quota configuration for network `%s', is "
475"%llu must be at least %llu\n" 483"%llu must be at least %llu\n"
476msgstr "" 484msgstr ""
477 485
478#: src/ats/plugin_ats_mlp.c:2678 486#: src/ats/plugin_ats_mlp.c:2680
479#, c-format 487#, c-format
480msgid "" 488msgid ""
481"Adjusting inconsistent inbound quota configuration for network `%s', is %llu " 489"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
482"must be at least %llu\n" 490"must be at least %llu\n"
483msgstr "" 491msgstr ""
484 492
485#: src/ats/plugin_ats_mlp.c:2688 493#: src/ats/plugin_ats_mlp.c:2690
486#, c-format 494#, c-format
487msgid "" 495msgid ""
488"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" 496"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
489msgstr "" 497msgstr ""
490 498
491#: src/ats/plugin_ats_mlp.c:2697 499#: src/ats/plugin_ats_mlp.c:2699
492#, c-format 500#, c-format
493msgid "" 501msgid ""
494"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" 502"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
495msgstr "" 503msgstr ""
496 504
497#: src/ats/plugin_ats_proportional.c:1162 505#: src/ats/plugin_ats_proportional.c:1164
498#, fuzzy, c-format 506#, fuzzy, c-format
499msgid "Invalid %s configuration %f\n" 507msgid "Invalid %s configuration %f\n"
500msgstr "Không thể lưu tập tin cấu hình « %s »:" 508msgstr "Không thể lưu tập tin cấu hình « %s »:"
501 509
502#: src/ats-tests/ats-testing.c:420 510#: src/ats-tests/ats-testing.c:422
503#, c-format 511#, c-format
504msgid "Connected master [%u] with slave [%u]\n" 512msgid "Connected master [%u] with slave [%u]\n"
505msgstr "" 513msgstr ""
506 514
507#: src/ats-tests/ats-testing.c:427 515#: src/ats-tests/ats-testing.c:429
508#, fuzzy, c-format 516#, fuzzy, c-format
509msgid "Failed to connect master peer [%u] with slave [%u]\n" 517msgid "Failed to connect master peer [%u] with slave [%u]\n"
510msgstr "Lỗi kết nối đến gnunetd.\n" 518msgstr "Lỗi kết nối đến gnunetd.\n"
511 519
512#: src/ats-tests/ats-testing-log.c:835 520#: src/ats-tests/ats-testing-log.c:837
513#, fuzzy 521#, fuzzy
514msgid "Stop logging\n" 522msgid "Stop logging\n"
515msgstr "Theo dõi" 523msgstr "Theo dõi"
516 524
517#: src/ats-tests/ats-testing-log.c:890 525#: src/ats-tests/ats-testing-log.c:892
518#, fuzzy, c-format 526#, fuzzy, c-format
519msgid "Start logging `%s'\n" 527msgid "Start logging `%s'\n"
520msgstr "Đang bắt đầu tài về « %s »\n" 528msgstr "Đang bắt đầu tài về « %s »\n"
521 529
522#: src/ats-tests/gnunet-ats-sim.c:88 530#: src/ats-tests/gnunet-ats-sim.c:90
523#, c-format 531#, c-format
524msgid "" 532msgid ""
525"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. " 533"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. "
526"= %u KiB/s\n" 534"= %u KiB/s\n"
527msgstr "" 535msgstr ""
528 536
529#: src/ats-tool/gnunet-ats.c:305 537#: src/ats-tool/gnunet-ats.c:307
530#, c-format 538#, c-format
531msgid "%u address resolutions had a timeout\n" 539msgid "%u address resolutions had a timeout\n"
532msgstr "" 540msgstr ""
533 541
534#: src/ats-tool/gnunet-ats.c:309 542#: src/ats-tool/gnunet-ats.c:311
535#, c-format 543#, c-format
536msgid "ATS returned stat_results for %u addresses\n" 544msgid "ATS returned stat_results for %u addresses\n"
537msgstr "" 545msgstr ""
538 546
539#: src/ats-tool/gnunet-ats.c:393 547#: src/ats-tool/gnunet-ats.c:395
540#, fuzzy, c-format 548#, fuzzy, c-format
541msgid "" 549msgid ""
542"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/" 550"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/"
543"s, %s\n" 551"s, %s\n"
544msgstr "Đồng đẳng « %s » có mức tin cậy %8u và địa chỉ « %s »\n" 552msgstr "Đồng đẳng « %s » có mức tin cậy %8u và địa chỉ « %s »\n"
545 553
546#: src/ats-tool/gnunet-ats.c:400 554#: src/ats-tool/gnunet-ats.c:402
547msgid "active " 555msgid "active "
548msgstr "" 556msgstr ""
549 557
550#: src/ats-tool/gnunet-ats.c:400 558#: src/ats-tool/gnunet-ats.c:402
551msgid "inactive " 559msgid "inactive "
552msgstr "" 560msgstr ""
553 561
554#: src/ats-tool/gnunet-ats.c:510 562#: src/ats-tool/gnunet-ats.c:512
555#, fuzzy, c-format 563#, fuzzy, c-format
556msgid "Removed address of peer `%s' with plugin `%s'\n" 564msgid "Removed address of peer `%s' with plugin `%s'\n"
557msgstr "Đã nạp truyền tải « %s »\n" 565msgstr "Đã nạp truyền tải « %s »\n"
558 566
559#: src/ats-tool/gnunet-ats.c:703 567#: src/ats-tool/gnunet-ats.c:705
560#, c-format 568#, c-format
561msgid "Quota for network `%11s' (in/out): %10s / %10s\n" 569msgid "Quota for network `%11s' (in/out): %10s / %10s\n"
562msgstr "" 570msgstr ""
563 571
564#: src/ats-tool/gnunet-ats.c:746 src/ats-tool/gnunet-ats.c:759 572#: src/ats-tool/gnunet-ats.c:748 src/ats-tool/gnunet-ats.c:761
565#, fuzzy, c-format 573#, fuzzy, c-format
566msgid "Failed to parse peer identity `%s'\n" 574msgid "Failed to parse peer identity `%s'\n"
567msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 575msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
568 576
569#: src/ats-tool/gnunet-ats.c:771 577#: src/ats-tool/gnunet-ats.c:773
570#, c-format 578#, c-format
571msgid "Please select one operation: %s or %s or %s or %s or %s\n" 579msgid "Please select one operation: %s or %s or %s or %s or %s\n"
572msgstr "" 580msgstr ""
573 581
574#: src/ats-tool/gnunet-ats.c:793 src/ats-tool/gnunet-ats.c:818 582#: src/ats-tool/gnunet-ats.c:795 src/ats-tool/gnunet-ats.c:820
575#: src/ats-tool/gnunet-ats.c:849 src/ats-tool/gnunet-ats.c:894 583#: src/ats-tool/gnunet-ats.c:851 src/ats-tool/gnunet-ats.c:896
576#, fuzzy 584#, fuzzy
577msgid "Cannot connect to ATS service, exiting...\n" 585msgid "Cannot connect to ATS service, exiting...\n"
578msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 586msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
579 587
580#: src/ats-tool/gnunet-ats.c:804 src/ats-tool/gnunet-ats.c:830 588#: src/ats-tool/gnunet-ats.c:806 src/ats-tool/gnunet-ats.c:832
581#, fuzzy 589#, fuzzy
582msgid "Cannot issue request to ATS service, exiting...\n" 590msgid "Cannot issue request to ATS service, exiting...\n"
583msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 591msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
584 592
585#: src/ats-tool/gnunet-ats.c:860 593#: src/ats-tool/gnunet-ats.c:862
586#, fuzzy 594#, fuzzy
587msgid "No preference type given!\n" 595msgid "No preference type given!\n"
588msgstr "In ra thông tin về các đồng đẳng GNUnet." 596msgstr "In ra thông tin về các đồng đẳng GNUnet."
589 597
590#: src/ats-tool/gnunet-ats.c:867 598#: src/ats-tool/gnunet-ats.c:869
591#, fuzzy 599#, fuzzy
592msgid "No peer given!\n" 600msgid "No peer given!\n"
593msgstr "chưa đưa ra tên" 601msgstr "chưa đưa ra tên"
594 602
595#: src/ats-tool/gnunet-ats.c:885 603#: src/ats-tool/gnunet-ats.c:887
596msgid "Valid type required\n" 604msgid "Valid type required\n"
597msgstr "" 605msgstr ""
598 606
599#: src/ats-tool/gnunet-ats.c:948 607#: src/ats-tool/gnunet-ats.c:950
600msgid "get list of active addresses currently used" 608msgid "get list of active addresses currently used"
601msgstr "" 609msgstr ""
602 610
603#: src/ats-tool/gnunet-ats.c:952 611#: src/ats-tool/gnunet-ats.c:954
604msgid "get list of all active addresses" 612msgid "get list of all active addresses"
605msgstr "" 613msgstr ""
606 614
607#: src/ats-tool/gnunet-ats.c:958 615#: src/ats-tool/gnunet-ats.c:960
608#, fuzzy 616#, fuzzy
609msgid "connect to PEER" 617msgid "connect to PEER"
610msgstr "Lỗi kết nối đến gnunetd.\n" 618msgstr "Lỗi kết nối đến gnunetd.\n"
611 619
612#: src/ats-tool/gnunet-ats.c:962 620#: src/ats-tool/gnunet-ats.c:964
613#, fuzzy 621#, fuzzy
614msgid "do not resolve IP addresses to hostnames" 622msgid "do not resolve IP addresses to hostnames"
615msgstr "không quyết định các tên máy" 623msgstr "không quyết định các tên máy"
616 624
617#: src/ats-tool/gnunet-ats.c:967 625#: src/ats-tool/gnunet-ats.c:969
618msgid "monitor mode" 626msgid "monitor mode"
619msgstr "" 627msgstr ""
620 628
621#: src/ats-tool/gnunet-ats.c:972 629#: src/ats-tool/gnunet-ats.c:974
622#, fuzzy 630#, fuzzy
623msgid "set preference for the given peer" 631msgid "set preference for the given peer"
624msgstr "In ra thông tin về các đồng đẳng GNUnet." 632msgstr "In ra thông tin về các đồng đẳng GNUnet."
625 633
626#: src/ats-tool/gnunet-ats.c:977 634#: src/ats-tool/gnunet-ats.c:979
627msgid "print all configured quotas" 635msgid "print all configured quotas"
628msgstr "" 636msgstr ""
629 637
630#: src/ats-tool/gnunet-ats.c:982 638#: src/ats-tool/gnunet-ats.c:984
631msgid "peer id" 639msgid "peer id"
632msgstr "" 640msgstr ""
633 641
634#: src/ats-tool/gnunet-ats.c:988 642#: src/ats-tool/gnunet-ats.c:990
635msgid "preference type to set: latency | bandwidth" 643msgid "preference type to set: latency | bandwidth"
636msgstr "" 644msgstr ""
637 645
638#: src/ats-tool/gnunet-ats.c:994 646#: src/ats-tool/gnunet-ats.c:996
639msgid "preference value" 647msgid "preference value"
640msgstr "" 648msgstr ""
641 649
642#: src/ats-tool/gnunet-ats.c:999 650#: src/ats-tool/gnunet-ats.c:1001
643msgid "verbose output (include ATS address properties)" 651msgid "verbose output (include ATS address properties)"
644msgstr "" 652msgstr ""
645 653
646#: src/ats-tool/gnunet-ats.c:1009 654#: src/ats-tool/gnunet-ats.c:1011
647#, fuzzy 655#, fuzzy
648msgid "Print information about ATS state" 656msgid "Print information about ATS state"
649msgstr "In ra thông tin về các đồng đẳng GNUnet." 657msgstr "In ra thông tin về các đồng đẳng GNUnet."
650 658
651#: src/auction/gnunet-auction-create.c:161 659#: src/auction/gnunet-auction-create.c:163
652msgid "description of the item to be sold" 660msgid "description of the item to be sold"
653msgstr "" 661msgstr ""
654 662
655#: src/auction/gnunet-auction-create.c:167 663#: src/auction/gnunet-auction-create.c:169
656msgid "mapping of possible prices" 664msgid "mapping of possible prices"
657msgstr "" 665msgstr ""
658 666
659#: src/auction/gnunet-auction-create.c:173 667#: src/auction/gnunet-auction-create.c:175
660msgid "max duration per round" 668msgid "max duration per round"
661msgstr "" 669msgstr ""
662 670
663#: src/auction/gnunet-auction-create.c:179 671#: src/auction/gnunet-auction-create.c:181
664msgid "duration until auction starts" 672msgid "duration until auction starts"
665msgstr "" 673msgstr ""
666 674
667#: src/auction/gnunet-auction-create.c:184 675#: src/auction/gnunet-auction-create.c:186
668msgid "" 676msgid ""
669"number of items to sell\n" 677"number of items to sell\n"
670"0 for first price auction\n" 678"0 for first price auction\n"
671">0 for vickrey/M+1st price auction" 679">0 for vickrey/M+1st price auction"
672msgstr "" 680msgstr ""
673 681
674#: src/auction/gnunet-auction-create.c:191 682#: src/auction/gnunet-auction-create.c:193
675#, fuzzy 683#, fuzzy
676msgid "public auction outcome" 684msgid "public auction outcome"
677msgstr "Ứng dụng bị hủy bỏ." 685msgstr "Ứng dụng bị hủy bỏ."
678 686
679#: src/auction/gnunet-auction-create.c:196 687#: src/auction/gnunet-auction-create.c:198
680msgid "keep running in foreground until auction completes" 688msgid "keep running in foreground until auction completes"
681msgstr "" 689msgstr ""
682 690
683#: src/auction/gnunet-auction-create.c:207 691#: src/auction/gnunet-auction-create.c:209
684msgid "create a new auction and start listening for bidders" 692msgid "create a new auction and start listening for bidders"
685msgstr "" 693msgstr ""
686 694
687#: src/auction/gnunet-auction-info.c:74 src/auction/gnunet-auction-join.c:74 695#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
688#: src/conversation/gnunet-conversation-test.c:252 696#: src/conversation/gnunet-conversation-test.c:254
689#: src/revocation/gnunet-revocation.c:560 src/template/gnunet-template.c:74 697#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
690msgid "help text" 698msgid "help text"
691msgstr "" 699msgstr ""
692 700
693#: src/cadet/gnunet-cadet.c:705 701#: src/cadet/gnunet-cadet.c:631
694#, fuzzy, c-format 702#, fuzzy, c-format
695msgid "Invalid peer ID `%s'\n" 703msgid "Invalid peer ID `%s'\n"
696msgstr "Dữ liệu nhập không hợp lệ.\n" 704msgstr "Dữ liệu nhập không hợp lệ.\n"
697 705
698#: src/cadet/gnunet-cadet.c:744 706#: src/cadet/gnunet-cadet.c:718
699#, fuzzy, c-format
700msgid "Invalid tunnel owner `%s'\n"
701msgstr "Địa chỉ IP định dạng sai: %s\n"
702
703#: src/cadet/gnunet-cadet.c:817
704msgid "Extra arguments are not applicable in combination with this option.\n" 707msgid "Extra arguments are not applicable in combination with this option.\n"
705msgstr "" 708msgstr ""
706 709
707#: src/cadet/gnunet-cadet.c:908 710#: src/cadet/gnunet-cadet.c:795
708#, fuzzy, c-format 711#, fuzzy, c-format
709msgid "Invalid target `%s'\n" 712msgid "Invalid target `%s'\n"
710msgstr "Đối số không hợp lệ cho « %s ».\n" 713msgstr "Đối số không hợp lệ cho « %s ».\n"
711 714
712#: src/cadet/gnunet-cadet.c:945 715#: src/cadet/gnunet-cadet.c:832
713#, fuzzy 716#, fuzzy
714msgid "No action requested\n" 717msgid "No action requested\n"
715msgstr "Thu thập bị dừng.\n" 718msgstr "Thu thập bị dừng.\n"
716 719
717#: src/cadet/gnunet-cadet.c:970 720#: src/cadet/gnunet-cadet.c:857
718#, fuzzy 721#, fuzzy
719msgid "Provide information about a particular connection" 722msgid "Provide information about a particular connection"
720msgstr "In ra thông tin về các đồng đẳng GNUnet." 723msgstr "In ra thông tin về các đồng đẳng GNUnet."
721 724
722#: src/cadet/gnunet-cadet.c:975 725#: src/cadet/gnunet-cadet.c:861
723msgid "Activate echo mode" 726msgid "Activate echo mode"
724msgstr "" 727msgstr ""
725 728
726#: src/cadet/gnunet-cadet.c:980 729#: src/cadet/gnunet-cadet.c:866
727msgid "Dump debug information to STDERR"
728msgstr ""
729
730#: src/cadet/gnunet-cadet.c:986
731msgid "Listen for connections using a shared secret among sender and recipient" 730msgid "Listen for connections using a shared secret among sender and recipient"
732msgstr "" 731msgstr ""
733 732
734#: src/cadet/gnunet-cadet.c:993 733#: src/cadet/gnunet-cadet.c:871
735#, fuzzy 734#, fuzzy
736msgid "Provide information about a patricular peer" 735msgid "Provide information about a patricular peer"
737msgstr "In ra thông tin về các đồng đẳng GNUnet." 736msgstr "In ra thông tin về các đồng đẳng GNUnet."
738 737
739#: src/cadet/gnunet-cadet.c:999 738#: src/cadet/gnunet-cadet.c:875
740#, fuzzy 739#, fuzzy
741msgid "Provide information about all peers" 740msgid "Provide information about all peers"
742msgstr "In ra thông tin về các đồng đẳng GNUnet." 741msgstr "In ra thông tin về các đồng đẳng GNUnet."
743 742
744#: src/cadet/gnunet-cadet.c:1005 743#: src/cadet/gnunet-cadet.c:879
745#, fuzzy
746msgid "Provide information about a particular tunnel"
747msgstr "In ra thông tin về các đồng đẳng GNUnet."
748
749#: src/cadet/gnunet-cadet.c:1011
750#, fuzzy 744#, fuzzy
751msgid "Provide information about all tunnels" 745msgid "Provide information about all tunnels"
752msgstr "In ra thông tin về các đồng đẳng GNUnet." 746msgstr "In ra thông tin về các đồng đẳng GNUnet."
753 747
754#: src/consensus/gnunet-consensus-profiler.c:521 748#: src/consensus/gnunet-consensus-profiler.c:523
755#: src/secretsharing/gnunet-secretsharing-profiler.c:608 749#: src/secretsharing/gnunet-secretsharing-profiler.c:610
756#, fuzzy 750#, fuzzy
757msgid "number of peers in consensus" 751msgid "number of peers in consensus"
758msgstr "số lần lặp lại" 752msgstr "số lần lặp lại"
759 753
760#: src/consensus/gnunet-consensus-profiler.c:527 754#: src/consensus/gnunet-consensus-profiler.c:529
761msgid "" 755msgid ""
762"how many peers (random selection without replacement) receive one value?" 756"how many peers (random selection without replacement) receive one value?"
763msgstr "" 757msgstr ""
764 758
765#: src/consensus/gnunet-consensus-profiler.c:533 759#: src/consensus/gnunet-consensus-profiler.c:535
766#: src/set/gnunet-set-profiler.c:431 src/set/gnunet-set-profiler.c:437 760#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
767#: src/set/gnunet-set-profiler.c:460 761#: src/set/gnunet-set-profiler.c:462
768#, fuzzy 762#, fuzzy
769msgid "number of values" 763msgid "number of values"
770msgstr "số lần lặp lại" 764msgstr "số lần lặp lại"
771 765
772#: src/consensus/gnunet-consensus-profiler.c:539 766#: src/consensus/gnunet-consensus-profiler.c:541
773#, fuzzy 767#, fuzzy
774msgid "consensus timeout" 768msgid "consensus timeout"
775msgstr "# các khoá phiên chạy được chấp nhận" 769msgstr "# các khoá phiên chạy được chấp nhận"
776 770
777#: src/consensus/gnunet-consensus-profiler.c:546 771#: src/consensus/gnunet-consensus-profiler.c:548
778msgid "delay until consensus starts" 772msgid "delay until consensus starts"
779msgstr "" 773msgstr ""
780 774
781#: src/consensus/gnunet-consensus-profiler.c:552 775#: src/consensus/gnunet-consensus-profiler.c:554
782#: src/set/gnunet-set-profiler.c:478 776#: src/set/gnunet-set-profiler.c:480
783msgid "write statistics to file" 777msgid "write statistics to file"
784msgstr "" 778msgstr ""
785 779
786#: src/consensus/gnunet-consensus-profiler.c:557 780#: src/consensus/gnunet-consensus-profiler.c:559
787msgid "distribute elements to a static subset of good peers" 781msgid "distribute elements to a static subset of good peers"
788msgstr "" 782msgstr ""
789 783
790#: src/consensus/gnunet-consensus-profiler.c:562 784#: src/consensus/gnunet-consensus-profiler.c:564
791msgid "be more verbose (print received values)" 785msgid "be more verbose (print received values)"
792msgstr "" 786msgstr ""
793 787
794#: src/conversation/conversation_api.c:513 788#: src/conversation/conversation_api.c:515
795#: src/conversation/conversation_api_call.c:492 789#: src/conversation/conversation_api_call.c:494
796msgid "Connection to conversation service lost, trying to reconnect\n" 790msgid "Connection to conversation service lost, trying to reconnect\n"
797msgstr "" 791msgstr ""
798 792
799#: src/conversation/gnunet-conversation.c:275 793#: src/conversation/gnunet-conversation.c:277
800#, c-format 794#, c-format
801msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" 795msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
802msgstr "" 796msgstr ""
803 797
804#: src/conversation/gnunet-conversation.c:300 798#: src/conversation/gnunet-conversation.c:302
805#, c-format 799#, c-format
806msgid "Call from `%s' terminated\n" 800msgid "Call from `%s' terminated\n"
807msgstr "" 801msgstr ""
808 802
809#: src/conversation/gnunet-conversation.c:335 803#: src/conversation/gnunet-conversation.c:337
810#, c-format 804#, c-format
811msgid "Call from `%s' suspended by other user\n" 805msgid "Call from `%s' suspended by other user\n"
812msgstr "" 806msgstr ""
813 807
814#: src/conversation/gnunet-conversation.c:340 808#: src/conversation/gnunet-conversation.c:342
815#, c-format 809#, c-format
816msgid "Call from `%s' resumed by other user\n" 810msgid "Call from `%s' resumed by other user\n"
817msgstr "" 811msgstr ""
818 812
819#: src/conversation/gnunet-conversation.c:358 813#: src/conversation/gnunet-conversation.c:360
820#, c-format 814#, c-format
821msgid "Ego `%s' no longer available, phone is now down.\n" 815msgid "Ego `%s' no longer available, phone is now down.\n"
822msgstr "" 816msgstr ""
823 817
824#: src/conversation/gnunet-conversation.c:373 818#: src/conversation/gnunet-conversation.c:375
825#, fuzzy 819#, fuzzy
826msgid "Failed to setup phone (internal error)\n" 820msgid "Failed to setup phone (internal error)\n"
827msgstr "Lỗi lấy thông kê về truyền tải.\n" 821msgstr "Lỗi lấy thông kê về truyền tải.\n"
828 822
829#: src/conversation/gnunet-conversation.c:385 823#: src/conversation/gnunet-conversation.c:387
830#, c-format 824#, c-format
831msgid "Phone active at `%s'. Type `/help' for a list of available commands\n" 825msgid "Phone active at `%s'. Type `/help' for a list of available commands\n"
832msgstr "" 826msgstr ""
833 827
834#: src/conversation/gnunet-conversation.c:409 828#: src/conversation/gnunet-conversation.c:411
835#, c-format 829#, c-format
836msgid "Resolved address of `%s'. Now ringing other party.\n" 830msgid "Resolved address of `%s'. Now ringing other party.\n"
837msgstr "" 831msgstr ""
838 832
839#: src/conversation/gnunet-conversation.c:416 833#: src/conversation/gnunet-conversation.c:418
840#, fuzzy, c-format 834#, fuzzy, c-format
841msgid "Connection established to `%s'\n" 835msgid "Connection established to `%s'\n"
842msgstr "%s bị lỗi tại %s:%d: « %s »\n" 836msgstr "%s bị lỗi tại %s:%d: « %s »\n"
843 837
844#: src/conversation/gnunet-conversation.c:423 838#: src/conversation/gnunet-conversation.c:425
845#, fuzzy, c-format 839#, fuzzy, c-format
846msgid "Failed to resolve `%s'\n" 840msgid "Failed to resolve `%s'\n"
847msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 841msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
848 842
849#: src/conversation/gnunet-conversation.c:431 843#: src/conversation/gnunet-conversation.c:433
850#, c-format 844#, c-format
851msgid "Call to `%s' terminated\n" 845msgid "Call to `%s' terminated\n"
852msgstr "" 846msgstr ""
853 847
854#: src/conversation/gnunet-conversation.c:440 848#: src/conversation/gnunet-conversation.c:442
855#, c-format 849#, c-format
856msgid "Connection to `%s' suspended (by other user)\n" 850msgid "Connection to `%s' suspended (by other user)\n"
857msgstr "" 851msgstr ""
858 852
859#: src/conversation/gnunet-conversation.c:446 853#: src/conversation/gnunet-conversation.c:448
860#, c-format 854#, c-format
861msgid "Connection to `%s' resumed (by other user)\n" 855msgid "Connection to `%s' resumed (by other user)\n"
862msgstr "" 856msgstr ""
863 857
864#: src/conversation/gnunet-conversation.c:451 858#: src/conversation/gnunet-conversation.c:453
865msgid "Error with the call, restarting it\n" 859msgid "Error with the call, restarting it\n"
866msgstr "" 860msgstr ""
867 861
868#: src/conversation/gnunet-conversation.c:522 862#: src/conversation/gnunet-conversation.c:524
869#, fuzzy, c-format 863#, fuzzy, c-format
870msgid "Unknown command `%s'\n" 864msgid "Unknown command `%s'\n"
871msgstr "Không rõ câu lệnh « %s ».\n" 865msgstr "Không rõ câu lệnh « %s ».\n"
872 866
873#: src/conversation/gnunet-conversation.c:538 867#: src/conversation/gnunet-conversation.c:540
874#: src/conversation/gnunet-conversation.c:552 868#: src/conversation/gnunet-conversation.c:554
875#, c-format 869#, c-format
876msgid "Ego `%s' not available\n" 870msgid "Ego `%s' not available\n"
877msgstr "" 871msgstr ""
878 872
879#: src/conversation/gnunet-conversation.c:545 873#: src/conversation/gnunet-conversation.c:547
880#: src/conversation/gnunet-conversation.c:601 874#: src/conversation/gnunet-conversation.c:603
881msgid "You are calling someone else already, hang up first!\n" 875msgid "You are calling someone else already, hang up first!\n"
882msgstr "" 876msgstr ""
883 877
884#: src/conversation/gnunet-conversation.c:560 878#: src/conversation/gnunet-conversation.c:562
885#: src/conversation/gnunet-conversation.c:614 879#: src/conversation/gnunet-conversation.c:616
886#, c-format 880#, c-format
887msgid "You are answering call from `%s', hang up or suspend that call first!\n" 881msgid "You are answering call from `%s', hang up or suspend that call first!\n"
888msgstr "" 882msgstr ""
889 883
890#: src/conversation/gnunet-conversation.c:570 884#: src/conversation/gnunet-conversation.c:572
891msgid "Call recipient missing.\n" 885msgid "Call recipient missing.\n"
892msgstr "" 886msgstr ""
893 887
894#: src/conversation/gnunet-conversation.c:625 888#: src/conversation/gnunet-conversation.c:627
895msgid "There is no incoming call to accept here!\n" 889msgid "There is no incoming call to accept here!\n"
896msgstr "" 890msgstr ""
897 891
898#: src/conversation/gnunet-conversation.c:642 892#: src/conversation/gnunet-conversation.c:644
899#, c-format 893#, c-format
900msgid "There is no incoming call `%s' to accept right now!\n" 894msgid "There is no incoming call `%s' to accept right now!\n"
901msgstr "" 895msgstr ""
902 896
903#: src/conversation/gnunet-conversation.c:673 897#: src/conversation/gnunet-conversation.c:675
904msgid "We currently do not have an address.\n" 898msgid "We currently do not have an address.\n"
905msgstr "" 899msgstr ""
906 900
907#: src/conversation/gnunet-conversation.c:697 901#: src/conversation/gnunet-conversation.c:699
908#, c-format 902#, c-format
909msgid "We are currently trying to locate the private key for the ego `%s'.\n" 903msgid "We are currently trying to locate the private key for the ego `%s'.\n"
910msgstr "" 904msgstr ""
911 905
912#: src/conversation/gnunet-conversation.c:702 906#: src/conversation/gnunet-conversation.c:704
913#, c-format 907#, c-format
914msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n" 908msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n"
915msgstr "" 909msgstr ""
916 910
917#: src/conversation/gnunet-conversation.c:708 911#: src/conversation/gnunet-conversation.c:710
918#: src/conversation/gnunet-conversation.c:732 912#: src/conversation/gnunet-conversation.c:734
919#, c-format 913#, c-format
920msgid "You are having a conversation with `%s'.\n" 914msgid "You are having a conversation with `%s'.\n"
921msgstr "" 915msgstr ""
922 916
923#: src/conversation/gnunet-conversation.c:713 917#: src/conversation/gnunet-conversation.c:715
924msgid "" 918msgid ""
925"We had an internal error setting up our phone line. You can still make " 919"We had an internal error setting up our phone line. You can still make "
926"calls.\n" 920"calls.\n"
927msgstr "" 921msgstr ""
928 922
929#: src/conversation/gnunet-conversation.c:722 923#: src/conversation/gnunet-conversation.c:724
930#, fuzzy, c-format 924#, fuzzy, c-format
931msgid "We are trying to find the network address to call `%s'.\n" 925msgid "We are trying to find the network address to call `%s'.\n"
932msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n" 926msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n"
933 927
934#: src/conversation/gnunet-conversation.c:727 928#: src/conversation/gnunet-conversation.c:729
935#, c-format 929#, c-format
936msgid "We are calling `%s', their phone should be ringing.\n" 930msgid "We are calling `%s', their phone should be ringing.\n"
937msgstr "" 931msgstr ""
938 932
939#: src/conversation/gnunet-conversation.c:746 933#: src/conversation/gnunet-conversation.c:748
940msgid "Calls waiting:\n" 934msgid "Calls waiting:\n"
941msgstr "" 935msgstr ""
942 936
943#: src/conversation/gnunet-conversation.c:752 937#: src/conversation/gnunet-conversation.c:754
944#, fuzzy, c-format 938#, fuzzy, c-format
945msgid "#%u: `%s'\n" 939msgid "#%u: `%s'\n"
946msgstr "Tôi là đồng đẳng « %s ».\n" 940msgstr "Tôi là đồng đẳng « %s ».\n"
947 941
948#: src/conversation/gnunet-conversation.c:781 942#: src/conversation/gnunet-conversation.c:783
949#: src/conversation/gnunet-conversation.c:796 943#: src/conversation/gnunet-conversation.c:798
950msgid "There is no call that could be suspended right now.\n" 944msgid "There is no call that could be suspended right now.\n"
951msgstr "" 945msgstr ""
952 946
953#: src/conversation/gnunet-conversation.c:829 947#: src/conversation/gnunet-conversation.c:831
954#: src/conversation/gnunet-conversation.c:845 948#: src/conversation/gnunet-conversation.c:847
955msgid "There is no call that could be resumed right now.\n" 949msgid "There is no call that could be resumed right now.\n"
956msgstr "" 950msgstr ""
957 951
958#: src/conversation/gnunet-conversation.c:852 952#: src/conversation/gnunet-conversation.c:854
959#, c-format 953#, c-format
960msgid "Already talking with `%s', cannot resume a call right now.\n" 954msgid "Already talking with `%s', cannot resume a call right now.\n"
961msgstr "" 955msgstr ""
962 956
963#: src/conversation/gnunet-conversation.c:861 957#: src/conversation/gnunet-conversation.c:863
964msgid "There is no incoming call to resume here!\n" 958msgid "There is no incoming call to resume here!\n"
965msgstr "" 959msgstr ""
966 960
967#: src/conversation/gnunet-conversation.c:878 961#: src/conversation/gnunet-conversation.c:880
968#, c-format 962#, c-format
969msgid "There is no incoming call `%s' to resume right now!\n" 963msgid "There is no incoming call `%s' to resume right now!\n"
970msgstr "" 964msgstr ""
971 965
972#: src/conversation/gnunet-conversation.c:913 966#: src/conversation/gnunet-conversation.c:915
973msgid "There is no call that could be cancelled right now.\n" 967msgid "There is no call that could be cancelled right now.\n"
974msgstr "" 968msgstr ""
975 969
976#: src/conversation/gnunet-conversation.c:921 970#: src/conversation/gnunet-conversation.c:923
977msgid "There is no incoming call to refuse here!\n" 971msgid "There is no incoming call to refuse here!\n"
978msgstr "" 972msgstr ""
979 973
980#: src/conversation/gnunet-conversation.c:938 974#: src/conversation/gnunet-conversation.c:940
981#, c-format 975#, c-format
982msgid "There is no incoming call `%s' to refuse right now!\n" 976msgid "There is no incoming call `%s' to refuse right now!\n"
983msgstr "" 977msgstr ""
984 978
985#: src/conversation/gnunet-conversation.c:964 979#: src/conversation/gnunet-conversation.c:966
986msgid "Use `/address' to find out which address this phone should have in GNS" 980msgid "Use `/address' to find out which address this phone should have in GNS"
987msgstr "" 981msgstr ""
988 982
989#: src/conversation/gnunet-conversation.c:966 983#: src/conversation/gnunet-conversation.c:968
990msgid "Use `/call USER.gnu' to call USER" 984msgid "Use `/call USER.gnu' to call USER"
991msgstr "" 985msgstr ""
992 986
993#: src/conversation/gnunet-conversation.c:968 987#: src/conversation/gnunet-conversation.c:970
994msgid "Use `/accept #NUM' to accept incoming call #NUM" 988msgid "Use `/accept #NUM' to accept incoming call #NUM"
995msgstr "" 989msgstr ""
996 990
997#: src/conversation/gnunet-conversation.c:970 991#: src/conversation/gnunet-conversation.c:972
998msgid "Use `/suspend' to suspend the active call" 992msgid "Use `/suspend' to suspend the active call"
999msgstr "" 993msgstr ""
1000 994
1001#: src/conversation/gnunet-conversation.c:972 995#: src/conversation/gnunet-conversation.c:974
1002msgid "" 996msgid ""
1003"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming " 997"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming "
1004"calls, no argument is needed to resume the current outgoing call." 998"calls, no argument is needed to resume the current outgoing call."
1005msgstr "" 999msgstr ""
1006 1000
1007#: src/conversation/gnunet-conversation.c:974 1001#: src/conversation/gnunet-conversation.c:976
1008msgid "Use `/cancel' to reject or terminate a call" 1002msgid "Use `/cancel' to reject or terminate a call"
1009msgstr "" 1003msgstr ""
1010 1004
1011#: src/conversation/gnunet-conversation.c:976 1005#: src/conversation/gnunet-conversation.c:978
1012msgid "Use `/status' to print status information" 1006msgid "Use `/status' to print status information"
1013msgstr "" 1007msgstr ""
1014 1008
1015#: src/conversation/gnunet-conversation.c:978 1009#: src/conversation/gnunet-conversation.c:980
1016#, fuzzy 1010#, fuzzy
1017msgid "Use `/quit' to terminate gnunet-conversation" 1011msgid "Use `/quit' to terminate gnunet-conversation"
1018msgstr "Gõ chuỗi « /quit » để thoát khỏi trình gnunet-chat" 1012msgstr "Gõ chuỗi « /quit » để thoát khỏi trình gnunet-chat"
1019 1013
1020#: src/conversation/gnunet-conversation.c:980 1014#: src/conversation/gnunet-conversation.c:982
1021msgid "Use `/help command' to get help for a specific command" 1015msgid "Use `/help command' to get help for a specific command"
1022msgstr "Gõ chuỗi « /help LỆNH » để xem trợ giúp về lệnh đó" 1016msgstr "Gõ chuỗi « /help LỆNH » để xem trợ giúp về lệnh đó"
1023 1017
1024#: src/conversation/gnunet-conversation.c:1196 1018#: src/conversation/gnunet-conversation.c:1198
1025#, fuzzy, c-format 1019#, fuzzy, c-format
1026msgid "Name of our ego changed to `%s'\n" 1020msgid "Name of our ego changed to `%s'\n"
1027msgstr "Không thể tạo miền tên.\n" 1021msgstr "Không thể tạo miền tên.\n"
1028 1022
1029#: src/conversation/gnunet-conversation.c:1209 1023#: src/conversation/gnunet-conversation.c:1211
1030#, fuzzy, c-format 1024#, fuzzy, c-format
1031msgid "Our ego `%s' was deleted!\n" 1025msgid "Our ego `%s' was deleted!\n"
1032msgstr "Biệt hiệu « %s » bị xoá.\n" 1026msgstr "Biệt hiệu « %s » bị xoá.\n"
1033 1027
1034#: src/conversation/gnunet-conversation.c:1247 1028#: src/conversation/gnunet-conversation.c:1249
1035#, fuzzy 1029#, fuzzy
1036msgid "You must specify the NAME of an ego to use\n" 1030msgid "You must specify the NAME of an ego to use\n"
1037msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n" 1031msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
1038 1032
1039#: src/conversation/gnunet-conversation.c:1271 1033#: src/conversation/gnunet-conversation.c:1273
1040#, fuzzy 1034#, fuzzy
1041msgid "Failed to start gnunet-helper-w32-console\n" 1035msgid "Failed to start gnunet-helper-w32-console\n"
1042msgstr "Lỗi bắt đầu thu thập.\n" 1036msgstr "Lỗi bắt đầu thu thập.\n"
1043 1037
1044#: src/conversation/gnunet-conversation.c:1300 1038#: src/conversation/gnunet-conversation.c:1302
1045msgid "sets the NAME of the ego to use for the caller ID" 1039msgid "sets the NAME of the ego to use for the caller ID"
1046msgstr "" 1040msgstr ""
1047 1041
1048#: src/conversation/gnunet-conversation.c:1305 1042#: src/conversation/gnunet-conversation.c:1307
1049msgid "sets the LINE to use for the phone" 1043msgid "sets the LINE to use for the phone"
1050msgstr "" 1044msgstr ""
1051 1045
1052#: src/conversation/gnunet-conversation.c:1334 1046#: src/conversation/gnunet-conversation.c:1336
1053msgid "Enables having a conversation with other GNUnet users." 1047msgid "Enables having a conversation with other GNUnet users."
1054msgstr "" 1048msgstr ""
1055 1049
1056#: src/conversation/gnunet-conversation-test.c:118 1050#: src/conversation/gnunet-conversation-test.c:120
1057#, c-format 1051#, c-format
1058msgid "" 1052msgid ""
1059"\n" 1053"\n"
1060"End of transmission. Have a GNU day.\n" 1054"End of transmission. Have a GNU day.\n"
1061msgstr "" 1055msgstr ""
1062 1056
1063#: src/conversation/gnunet-conversation-test.c:143 1057#: src/conversation/gnunet-conversation-test.c:145
1064#, c-format 1058#, c-format
1065msgid "" 1059msgid ""
1066"\n" 1060"\n"
@@ -1068,1921 +1062,1917 @@ msgid ""
1068"settings are working..." 1062"settings are working..."
1069msgstr "" 1063msgstr ""
1070 1064
1071#: src/conversation/gnunet-conversation-test.c:214 1065#: src/conversation/gnunet-conversation-test.c:216
1072#, c-format 1066#, c-format
1073msgid "" 1067msgid ""
1074"We will now be recording you for %s. After that time, the recording will be " 1068"We will now be recording you for %s. After that time, the recording will be "
1075"played back to you..." 1069"played back to you..."
1076msgstr "" 1070msgstr ""
1077 1071
1078#: src/conversation/gnunet_gst.c:620 1072#: src/conversation/gnunet_gst.c:622
1079#: src/conversation/gnunet-helper-audio-playback-gst.c:359 1073#: src/conversation/gnunet-helper-audio-playback-gst.c:361
1080#, c-format 1074#, c-format
1081msgid "Read error from STDIN: %d %s\n" 1075msgid "Read error from STDIN: %d %s\n"
1082msgstr "" 1076msgstr ""
1083 1077
1084#: src/conversation/gnunet-helper-audio-playback.c:323 1078#: src/conversation/gnunet-helper-audio-playback.c:325
1085#, fuzzy, c-format 1079#, fuzzy, c-format
1086msgid "pa_stream_write() failed: %s\n" 1080msgid "pa_stream_write() failed: %s\n"
1087msgstr "SMTP: « %s » bị lỗi: %s\n" 1081msgstr "SMTP: « %s » bị lỗi: %s\n"
1088 1082
1089#: src/conversation/gnunet-helper-audio-playback.c:625 1083#: src/conversation/gnunet-helper-audio-playback.c:627
1090msgid "gnunet-helper-audio-playback - Got signal, exiting\n" 1084msgid "gnunet-helper-audio-playback - Got signal, exiting\n"
1091msgstr "" 1085msgstr ""
1092 1086
1093#: src/conversation/gnunet-helper-audio-playback.c:651 1087#: src/conversation/gnunet-helper-audio-playback.c:653
1094#: src/conversation/gnunet-helper-audio-record.c:561 1088#: src/conversation/gnunet-helper-audio-record.c:563
1095#, fuzzy 1089#, fuzzy
1096msgid "Connection established.\n" 1090msgid "Connection established.\n"
1097msgstr "Thu thập bị dừng.\n" 1091msgstr "Thu thập bị dừng.\n"
1098 1092
1099#: src/conversation/gnunet-helper-audio-playback.c:656 1093#: src/conversation/gnunet-helper-audio-playback.c:658
1100#: src/conversation/gnunet-helper-audio-record.c:566 1094#: src/conversation/gnunet-helper-audio-record.c:568
1101#, fuzzy, c-format 1095#, fuzzy, c-format
1102msgid "pa_stream_new() failed: %s\n" 1096msgid "pa_stream_new() failed: %s\n"
1103msgstr "SMTP: « %s » bị lỗi: %s\n" 1097msgstr "SMTP: « %s » bị lỗi: %s\n"
1104 1098
1105#: src/conversation/gnunet-helper-audio-playback.c:670 1099#: src/conversation/gnunet-helper-audio-playback.c:672
1106#, c-format 1100#, c-format
1107msgid "pa_stream_connect_playback() failed: %s\n" 1101msgid "pa_stream_connect_playback() failed: %s\n"
1108msgstr "" 1102msgstr ""
1109 1103
1110#: src/conversation/gnunet-helper-audio-playback.c:683 1104#: src/conversation/gnunet-helper-audio-playback.c:685
1111#: src/conversation/gnunet-helper-audio-record.c:592 1105#: src/conversation/gnunet-helper-audio-record.c:594
1112#, fuzzy, c-format 1106#, fuzzy, c-format
1113msgid "Connection failure: %s\n" 1107msgid "Connection failure: %s\n"
1114msgstr "%s bị lỗi tại %s:%d: « %s »\n" 1108msgstr "%s bị lỗi tại %s:%d: « %s »\n"
1115 1109
1116#: src/conversation/gnunet-helper-audio-playback.c:704 1110#: src/conversation/gnunet-helper-audio-playback.c:706
1117#: src/conversation/gnunet-helper-audio-record.c:615 1111#: src/conversation/gnunet-helper-audio-record.c:617
1118msgid "Wrong Spec\n" 1112msgid "Wrong Spec\n"
1119msgstr "" 1113msgstr ""
1120 1114
1121#: src/conversation/gnunet-helper-audio-playback.c:710 1115#: src/conversation/gnunet-helper-audio-playback.c:712
1122#: src/conversation/gnunet-helper-audio-record.c:621 1116#: src/conversation/gnunet-helper-audio-record.c:623
1123#, fuzzy 1117#, fuzzy
1124msgid "pa_mainloop_new() failed.\n" 1118msgid "pa_mainloop_new() failed.\n"
1125msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" 1119msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
1126 1120
1127#: src/conversation/gnunet-helper-audio-playback.c:724 1121#: src/conversation/gnunet-helper-audio-playback.c:726
1128#: src/conversation/gnunet-helper-audio-record.c:636 1122#: src/conversation/gnunet-helper-audio-record.c:638
1129#, fuzzy 1123#, fuzzy
1130msgid "pa_context_new() failed.\n" 1124msgid "pa_context_new() failed.\n"
1131msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" 1125msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
1132 1126
1133#: src/conversation/gnunet-helper-audio-playback.c:731 1127#: src/conversation/gnunet-helper-audio-playback.c:733
1134#: src/conversation/gnunet-helper-audio-record.c:642 1128#: src/conversation/gnunet-helper-audio-record.c:644
1135#, fuzzy, c-format 1129#, fuzzy, c-format
1136msgid "pa_context_connect() failed: %s\n" 1130msgid "pa_context_connect() failed: %s\n"
1137msgstr "# của các đồng đẳng đã kết nối" 1131msgstr "# của các đồng đẳng đã kết nối"
1138 1132
1139#: src/conversation/gnunet-helper-audio-playback.c:737 1133#: src/conversation/gnunet-helper-audio-playback.c:739
1140#: src/conversation/gnunet-helper-audio-record.c:648 1134#: src/conversation/gnunet-helper-audio-record.c:650
1141#, fuzzy 1135#, fuzzy
1142msgid "pa_mainloop_run() failed.\n" 1136msgid "pa_mainloop_run() failed.\n"
1143msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" 1137msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
1144 1138
1145#: src/conversation/gnunet-helper-audio-playback.c:816 1139#: src/conversation/gnunet-helper-audio-playback.c:818
1146#, c-format 1140#, c-format
1147msgid "Read error from STDIN: %s\n" 1141msgid "Read error from STDIN: %s\n"
1148msgstr "" 1142msgstr ""
1149 1143
1150#: src/conversation/gnunet-helper-audio-record.c:351 1144#: src/conversation/gnunet-helper-audio-record.c:353
1151#, fuzzy, c-format 1145#, fuzzy, c-format
1152msgid "opus_encode_float() failed: %s. Aborting\n" 1146msgid "opus_encode_float() failed: %s. Aborting\n"
1153msgstr "# của các đồng đẳng đã kết nối" 1147msgstr "# của các đồng đẳng đã kết nối"
1154 1148
1155#: src/conversation/gnunet-helper-audio-record.c:430 1149#: src/conversation/gnunet-helper-audio-record.c:432
1156#, fuzzy, c-format 1150#, fuzzy, c-format
1157msgid "pa_stream_peek() failed: %s\n" 1151msgid "pa_stream_peek() failed: %s\n"
1158msgstr "SMTP: « %s » bị lỗi: %s\n" 1152msgstr "SMTP: « %s » bị lỗi: %s\n"
1159 1153
1160#: src/conversation/gnunet-helper-audio-record.c:472 1154#: src/conversation/gnunet-helper-audio-record.c:474
1161msgid "Got signal, exiting.\n" 1155msgid "Got signal, exiting.\n"
1162msgstr "" 1156msgstr ""
1163 1157
1164#: src/conversation/gnunet-helper-audio-record.c:498 1158#: src/conversation/gnunet-helper-audio-record.c:500
1165#, fuzzy 1159#, fuzzy
1166msgid "Stream successfully created.\n" 1160msgid "Stream successfully created.\n"
1167msgstr "Không đủ quyền cho « %s ».\n" 1161msgstr "Không đủ quyền cho « %s ».\n"
1168 1162
1169#: src/conversation/gnunet-helper-audio-record.c:503 1163#: src/conversation/gnunet-helper-audio-record.c:505
1170#, fuzzy, c-format 1164#, fuzzy, c-format
1171msgid "pa_stream_get_buffer_attr() failed: %s\n" 1165msgid "pa_stream_get_buffer_attr() failed: %s\n"
1172msgstr "SMTP: « %s » bị lỗi: %s\n" 1166msgstr "SMTP: « %s » bị lỗi: %s\n"
1173 1167
1174#: src/conversation/gnunet-helper-audio-record.c:511 1168#: src/conversation/gnunet-helper-audio-record.c:513
1175#, c-format 1169#, c-format
1176msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" 1170msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
1177msgstr "" 1171msgstr ""
1178 1172
1179#: src/conversation/gnunet-helper-audio-record.c:515 1173#: src/conversation/gnunet-helper-audio-record.c:517
1180#, c-format 1174#, c-format
1181msgid "Using sample spec '%s', channel map '%s'.\n" 1175msgid "Using sample spec '%s', channel map '%s'.\n"
1182msgstr "" 1176msgstr ""
1183 1177
1184#: src/conversation/gnunet-helper-audio-record.c:522 1178#: src/conversation/gnunet-helper-audio-record.c:524
1185#, fuzzy, c-format 1179#, fuzzy, c-format
1186msgid "Connected to device %s (%u, %ssuspended).\n" 1180msgid "Connected to device %s (%u, %ssuspended).\n"
1187msgstr "« %s » được kết nối tới « %s ».\n" 1181msgstr "« %s » được kết nối tới « %s ».\n"
1188 1182
1189#: src/conversation/gnunet-helper-audio-record.c:531 1183#: src/conversation/gnunet-helper-audio-record.c:533
1190#, c-format 1184#, c-format
1191msgid "Stream error: %s\n" 1185msgid "Stream error: %s\n"
1192msgstr "" 1186msgstr ""
1193 1187
1194#: src/conversation/gnunet-helper-audio-record.c:579 1188#: src/conversation/gnunet-helper-audio-record.c:581
1195#, fuzzy, c-format 1189#, fuzzy, c-format
1196msgid "pa_stream_connect_record() failed: %s\n" 1190msgid "pa_stream_connect_record() failed: %s\n"
1197msgstr "Gặp lỗi khi tải lên tập tin: %s\n" 1191msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
1198 1192
1199#: src/conversation/gnunet-helper-audio-record.c:693 1193#: src/conversation/gnunet-helper-audio-record.c:695
1200#, fuzzy 1194#, fuzzy
1201msgid "ogg_stream_init() failed.\n" 1195msgid "ogg_stream_init() failed.\n"
1202msgstr "SMTP: « %s » bị lỗi: %s\n" 1196msgstr "SMTP: « %s » bị lỗi: %s\n"
1203 1197
1204#: src/conversation/gnunet-helper-audio-record.c:738 1198#: src/conversation/gnunet-helper-audio-record.c:740
1205#, fuzzy, c-format 1199#, fuzzy, c-format
1206msgid "Failed to allocate %u bytes for second packet\n" 1200msgid "Failed to allocate %u bytes for second packet\n"
1207msgstr "Lỗi tạo thư mục tạm thời." 1201msgstr "Lỗi tạo thư mục tạm thời."
1208 1202
1209#: src/conversation/gnunet-service-conversation.c:1303 1203#: src/conversation/gnunet-service-conversation.c:1305
1210#, fuzzy, c-format 1204#, fuzzy, c-format
1211msgid "Could not open line, port %s already in use!\n" 1205msgid "Could not open line, port %s already in use!\n"
1212msgstr "Không thể kết nối tới %s:%u: %s\n" 1206msgstr "Không thể kết nối tới %s:%u: %s\n"
1213 1207
1214#: src/conversation/microphone.c:119 1208#: src/conversation/microphone.c:121
1215#, fuzzy 1209#, fuzzy
1216msgid "Could not start record audio helper\n" 1210msgid "Could not start record audio helper\n"
1217msgstr "Không thể truy cập đến thông tin về không gian tên.\n" 1211msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
1218 1212
1219#: src/conversation/plugin_gnsrecord_conversation.c:70 1213#: src/conversation/plugin_gnsrecord_conversation.c:72
1220#, c-format 1214#, c-format
1221msgid "PHONE version %u not supported\n" 1215msgid "PHONE version %u not supported\n"
1222msgstr "" 1216msgstr ""
1223 1217
1224#: src/conversation/plugin_gnsrecord_conversation.c:133 1218#: src/conversation/plugin_gnsrecord_conversation.c:135
1225#: src/conversation/plugin_gnsrecord_conversation.c:147 1219#: src/conversation/plugin_gnsrecord_conversation.c:149
1226#, fuzzy, c-format 1220#, fuzzy, c-format
1227msgid "Unable to parse PHONE record `%s'\n" 1221msgid "Unable to parse PHONE record `%s'\n"
1228msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 1222msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
1229 1223
1230#: src/conversation/speaker.c:73 1224#: src/conversation/speaker.c:75
1231#, fuzzy 1225#, fuzzy
1232msgid "Could not start playback audio helper.\n" 1226msgid "Could not start playback audio helper.\n"
1233msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" 1227msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
1234 1228
1235#: src/core/gnunet-core.c:88 1229#: src/core/gnunet-core.c:90
1236#, fuzzy 1230#, fuzzy
1237msgid "fresh connection" 1231msgid "fresh connection"
1238msgstr "# của các đồng đẳng đã kết nối" 1232msgstr "# của các đồng đẳng đã kết nối"
1239 1233
1240#: src/core/gnunet-core.c:91 1234#: src/core/gnunet-core.c:93
1241msgid "key sent" 1235msgid "key sent"
1242msgstr "" 1236msgstr ""
1243 1237
1244#: src/core/gnunet-core.c:94 1238#: src/core/gnunet-core.c:96
1245#, fuzzy 1239#, fuzzy
1246msgid "key received" 1240msgid "key received"
1247msgstr "# các khoá phiên chạy bị từ chối" 1241msgstr "# các khoá phiên chạy bị từ chối"
1248 1242
1249#: src/core/gnunet-core.c:97 1243#: src/core/gnunet-core.c:99
1250#, fuzzy 1244#, fuzzy
1251msgid "connection established" 1245msgid "connection established"
1252msgstr "Thu thập bị dừng.\n" 1246msgstr "Thu thập bị dừng.\n"
1253 1247
1254#: src/core/gnunet-core.c:100 1248#: src/core/gnunet-core.c:102
1255msgid "rekeying" 1249msgid "rekeying"
1256msgstr "" 1250msgstr ""
1257 1251
1258#: src/core/gnunet-core.c:103 1252#: src/core/gnunet-core.c:105
1259#, fuzzy 1253#, fuzzy
1260msgid "disconnected" 1254msgid "disconnected"
1261msgstr "« %.*s » được kết nối tới « %.*s ».\n" 1255msgstr "« %.*s » được kết nối tới « %.*s ».\n"
1262 1256
1263#: src/core/gnunet-core.c:110 1257#: src/core/gnunet-core.c:112
1264msgid "Connection to CORE service lost (reconnecting)" 1258msgid "Connection to CORE service lost (reconnecting)"
1265msgstr "" 1259msgstr ""
1266 1260
1267#: src/core/gnunet-core.c:113 1261#: src/core/gnunet-core.c:115
1268#, fuzzy 1262#, fuzzy
1269msgid "unknown state" 1263msgid "unknown state"
1270msgstr "Lỗi không rõ" 1264msgstr "Lỗi không rõ"
1271 1265
1272#: src/core/gnunet-core.c:118 1266#: src/core/gnunet-core.c:120
1273#, c-format 1267#, c-format
1274msgid "%24s: %-30s %4s (timeout in %6s)\n" 1268msgid "%24s: %-30s %4s (timeout in %6s)\n"
1275msgstr "" 1269msgstr ""
1276 1270
1277#: src/core/gnunet-core.c:142 src/peerinfo-tool/gnunet-peerinfo.c:726 1271#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
1278#, fuzzy, c-format 1272#, fuzzy, c-format
1279msgid "Invalid command line argument `%s'\n" 1273msgid "Invalid command line argument `%s'\n"
1280msgstr "Đối số không hợp lệ cho « %s ».\n" 1274msgstr "Đối số không hợp lệ cho « %s ».\n"
1281 1275
1282#: src/core/gnunet-core.c:153 1276#: src/core/gnunet-core.c:155
1283#, fuzzy 1277#, fuzzy
1284msgid "Failed to connect to CORE service!\n" 1278msgid "Failed to connect to CORE service!\n"
1285msgstr "Lỗi kết nối đến gnunetd.\n" 1279msgstr "Lỗi kết nối đến gnunetd.\n"
1286 1280
1287#: src/core/gnunet-core.c:175 src/transport/gnunet-transport.c:1447 1281#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
1288#, fuzzy 1282#, fuzzy
1289msgid "provide information about all current connections (continuously)" 1283msgid "provide information about all current connections (continuously)"
1290msgstr "In ra thông tin về các đồng đẳng GNUnet." 1284msgstr "In ra thông tin về các đồng đẳng GNUnet."
1291 1285
1292#: src/core/gnunet-core.c:184 1286#: src/core/gnunet-core.c:186
1293#, fuzzy 1287#, fuzzy
1294msgid "Print information about connected peers." 1288msgid "Print information about connected peers."
1295msgstr "In ra thông tin về các đồng đẳng GNUnet." 1289msgstr "In ra thông tin về các đồng đẳng GNUnet."
1296 1290
1297#: src/core/gnunet-service-core.c:345 1291#: src/core/gnunet-service-core.c:347
1298#, fuzzy 1292#, fuzzy
1299msgid "# send requests dropped (disconnected)" 1293msgid "# send requests dropped (disconnected)"
1300msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 1294msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
1301 1295
1302#: src/core/gnunet-service-core.c:369 1296#: src/core/gnunet-service-core.c:371
1303msgid "# dequeuing CAR (duplicate request)" 1297msgid "# dequeuing CAR (duplicate request)"
1304msgstr "" 1298msgstr ""
1305 1299
1306#: src/core/gnunet-service-core.c:441 1300#: src/core/gnunet-service-core.c:443
1307#, fuzzy, c-format 1301#, fuzzy, c-format
1308msgid "# bytes of messages of type %u received" 1302msgid "# bytes of messages of type %u received"
1309msgstr "# các byte nhiễu được nhận" 1303msgstr "# các byte nhiễu được nhận"
1310 1304
1311#: src/core/gnunet-service-core.c:539 1305#: src/core/gnunet-service-core.c:541
1312#, fuzzy 1306#, fuzzy
1313msgid "# messages discarded (session disconnected)" 1307msgid "# messages discarded (session disconnected)"
1314msgstr "# các thông báo được chắp liền" 1308msgstr "# các thông báo được chắp liền"
1315 1309
1316#: src/core/gnunet-service-core.c:877 1310#: src/core/gnunet-service-core.c:879
1317#, fuzzy, c-format 1311#, fuzzy, c-format
1318msgid "# messages of type %u discarded (client busy)" 1312msgid "# messages of type %u discarded (client busy)"
1319msgstr "# các byte nhiễu được nhận" 1313msgstr "# các byte nhiễu được nhận"
1320 1314
1321#: src/core/gnunet-service-core.c:986 1315#: src/core/gnunet-service-core.c:988
1322#, fuzzy 1316#, fuzzy
1323msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" 1317msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n"
1324msgstr "Lưu cấu hình ngay bây giờ không?" 1318msgstr "Lưu cấu hình ngay bây giờ không?"
1325 1319
1326#: src/core/gnunet-service-core.c:1007 1320#: src/core/gnunet-service-core.c:1009
1327#, fuzzy, c-format 1321#, fuzzy, c-format
1328msgid "Core service of `%s' ready.\n" 1322msgid "Core service of `%s' ready.\n"
1329msgstr "Không gian tên « %s » có đánh giá %d.\n" 1323msgstr "Không gian tên « %s » có đánh giá %d.\n"
1330 1324
1331#: src/core/gnunet-service-core_kx.c:615 1325#: src/core/gnunet-service-core_kx.c:617
1332msgid "# bytes encrypted" 1326msgid "# bytes encrypted"
1333msgstr "# các byte đã mã hoá" 1327msgstr "# các byte đã mã hoá"
1334 1328
1335#: src/core/gnunet-service-core_kx.c:675 1329#: src/core/gnunet-service-core_kx.c:677
1336msgid "# bytes decrypted" 1330msgid "# bytes decrypted"
1337msgstr "# các byte đã giải mã" 1331msgstr "# các byte đã giải mã"
1338 1332
1339#: src/core/gnunet-service-core_kx.c:777 1333#: src/core/gnunet-service-core_kx.c:779
1340#, fuzzy 1334#, fuzzy
1341msgid "# PAYLOAD dropped (out of order)" 1335msgid "# PAYLOAD dropped (out of order)"
1342msgstr "# các byte loại bỏ bởi UDP (đi ra)" 1336msgstr "# các byte loại bỏ bởi UDP (đi ra)"
1343 1337
1344#: src/core/gnunet-service-core_kx.c:827 1338#: src/core/gnunet-service-core_kx.c:829
1345msgid "# key exchanges initiated" 1339msgid "# key exchanges initiated"
1346msgstr "" 1340msgstr ""
1347 1341
1348#: src/core/gnunet-service-core_kx.c:889 1342#: src/core/gnunet-service-core_kx.c:891
1349msgid "# key exchanges stopped" 1343msgid "# key exchanges stopped"
1350msgstr "" 1344msgstr ""
1351 1345
1352#: src/core/gnunet-service-core_kx.c:923 1346#: src/core/gnunet-service-core_kx.c:925
1353#, fuzzy 1347#, fuzzy
1354msgid "# PING messages transmitted" 1348msgid "# PING messages transmitted"
1355msgstr "# các thông báo PING được tạo" 1349msgstr "# các thông báo PING được tạo"
1356 1350
1357#: src/core/gnunet-service-core_kx.c:990 1351#: src/core/gnunet-service-core_kx.c:992
1358msgid "# old ephemeral keys ignored" 1352msgid "# old ephemeral keys ignored"
1359msgstr "" 1353msgstr ""
1360 1354
1361#: src/core/gnunet-service-core_kx.c:1003 1355#: src/core/gnunet-service-core_kx.c:1005
1362#, fuzzy 1356#, fuzzy
1363msgid "# duplicate ephemeral keys ignored" 1357msgid "# duplicate ephemeral keys ignored"
1364msgstr "# các thông báo phát hiện dht được nhận" 1358msgstr "# các thông báo phát hiện dht được nhận"
1365 1359
1366#: src/core/gnunet-service-core_kx.c:1038 1360#: src/core/gnunet-service-core_kx.c:1040
1367#, fuzzy 1361#, fuzzy
1368msgid "# EPHEMERAL_KEYs rejected (bad signature)" 1362msgid "# EPHEMERAL_KEYs rejected (bad signature)"
1369msgstr "# các thông báo được chắp liền" 1363msgstr "# các thông báo được chắp liền"
1370 1364
1371#: src/core/gnunet-service-core_kx.c:1052 1365#: src/core/gnunet-service-core_kx.c:1054
1372#, c-format 1366#, c-format
1373msgid "" 1367msgid ""
1374"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match " 1368"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
1375"our system time (%llu not in [%llu,%llu]).\n" 1369"our system time (%llu not in [%llu,%llu]).\n"
1376msgstr "" 1370msgstr ""
1377 1371
1378#: src/core/gnunet-service-core_kx.c:1058 1372#: src/core/gnunet-service-core_kx.c:1060
1379#, fuzzy 1373#, fuzzy
1380msgid "# EPHEMERAL_KEY messages rejected due to time" 1374msgid "# EPHEMERAL_KEY messages rejected due to time"
1381msgstr "# các thông báo được chắp liền" 1375msgstr "# các thông báo được chắp liền"
1382 1376
1383#: src/core/gnunet-service-core_kx.c:1078 1377#: src/core/gnunet-service-core_kx.c:1080
1384#, fuzzy 1378#, fuzzy
1385msgid "# valid ephemeral keys received" 1379msgid "# valid ephemeral keys received"
1386msgstr "# các thông báo phát hiện dht được nhận" 1380msgstr "# các thông báo phát hiện dht được nhận"
1387 1381
1388#: src/core/gnunet-service-core_kx.c:1178 1382#: src/core/gnunet-service-core_kx.c:1180
1389#: src/transport/gnunet-service-transport_validation.c:1126 1383#: src/transport/gnunet-service-transport_validation.c:1128
1390#, fuzzy 1384#, fuzzy
1391msgid "# PING messages received" 1385msgid "# PING messages received"
1392msgstr "# các thông báo PING được tạo" 1386msgstr "# các thông báo PING được tạo"
1393 1387
1394#: src/core/gnunet-service-core_kx.c:1187 1388#: src/core/gnunet-service-core_kx.c:1189
1395#, fuzzy 1389#, fuzzy
1396msgid "# PING messages dropped (out of order)" 1390msgid "# PING messages dropped (out of order)"
1397msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 1391msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
1398 1392
1399#: src/core/gnunet-service-core_kx.c:1246 1393#: src/core/gnunet-service-core_kx.c:1248
1400#, fuzzy 1394#, fuzzy
1401msgid "# PONG messages created" 1395msgid "# PONG messages created"
1402msgstr "# các thông báo PING được tạo" 1396msgstr "# các thông báo PING được tạo"
1403 1397
1404#: src/core/gnunet-service-core_kx.c:1272 1398#: src/core/gnunet-service-core_kx.c:1274
1405#, fuzzy 1399#, fuzzy
1406msgid "# sessions terminated by timeout" 1400msgid "# sessions terminated by timeout"
1407msgstr "# các byte loại đi bởi TCP (đi ra)" 1401msgstr "# các byte loại đi bởi TCP (đi ra)"
1408 1402
1409#: src/core/gnunet-service-core_kx.c:1285 1403#: src/core/gnunet-service-core_kx.c:1287
1410#, fuzzy 1404#, fuzzy
1411msgid "# keepalive messages sent" 1405msgid "# keepalive messages sent"
1412msgstr "# các thông báo PING nhập thô được gửi" 1406msgstr "# các thông báo PING nhập thô được gửi"
1413 1407
1414#: src/core/gnunet-service-core_kx.c:1349 1408#: src/core/gnunet-service-core_kx.c:1351
1415#: src/transport/gnunet-service-transport_validation.c:1459 1409#: src/transport/gnunet-service-transport_validation.c:1461
1416#, fuzzy 1410#, fuzzy
1417msgid "# PONG messages received" 1411msgid "# PONG messages received"
1418msgstr "# các thông báo PONG đã mật mã được nhận" 1412msgstr "# các thông báo PONG đã mật mã được nhận"
1419 1413
1420#: src/core/gnunet-service-core_kx.c:1356 1414#: src/core/gnunet-service-core_kx.c:1358
1421#, fuzzy 1415#, fuzzy
1422msgid "# PONG messages dropped (connection down)" 1416msgid "# PONG messages dropped (connection down)"
1423msgstr "# các thông báo PONG đã mật mã được nhận" 1417msgstr "# các thông báo PONG đã mật mã được nhận"
1424 1418
1425#: src/core/gnunet-service-core_kx.c:1361 1419#: src/core/gnunet-service-core_kx.c:1363
1426#, fuzzy 1420#, fuzzy
1427msgid "# PONG messages dropped (out of order)" 1421msgid "# PONG messages dropped (out of order)"
1428msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 1422msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
1429 1423
1430#: src/core/gnunet-service-core_kx.c:1396 1424#: src/core/gnunet-service-core_kx.c:1398
1431#, fuzzy 1425#, fuzzy
1432msgid "# PONG messages decrypted" 1426msgid "# PONG messages decrypted"
1433msgstr "# các thông báo PING được tạo" 1427msgstr "# các thông báo PING được tạo"
1434 1428
1435#: src/core/gnunet-service-core_kx.c:1434 1429#: src/core/gnunet-service-core_kx.c:1436
1436#, fuzzy 1430#, fuzzy
1437msgid "# session keys confirmed via PONG" 1431msgid "# session keys confirmed via PONG"
1438msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG" 1432msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG"
1439 1433
1440#: src/core/gnunet-service-core_kx.c:1445 1434#: src/core/gnunet-service-core_kx.c:1447
1441#, fuzzy 1435#, fuzzy
1442msgid "# timeouts prevented via PONG" 1436msgid "# timeouts prevented via PONG"
1443msgstr "# các byte đã nhận qua TCP" 1437msgstr "# các byte đã nhận qua TCP"
1444 1438
1445#: src/core/gnunet-service-core_kx.c:1452 1439#: src/core/gnunet-service-core_kx.c:1454
1446#, fuzzy 1440#, fuzzy
1447msgid "# rekey operations confirmed via PONG" 1441msgid "# rekey operations confirmed via PONG"
1448msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG" 1442msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG"
1449 1443
1450#: src/core/gnunet-service-core_kx.c:1640 1444#: src/core/gnunet-service-core_kx.c:1642
1451#, fuzzy 1445#, fuzzy
1452msgid "# DATA message dropped (out of order)" 1446msgid "# DATA message dropped (out of order)"
1453msgstr "# các byte loại bỏ bởi UDP (đi ra)" 1447msgstr "# các byte loại bỏ bởi UDP (đi ra)"
1454 1448
1455#: src/core/gnunet-service-core_kx.c:1648 1449#: src/core/gnunet-service-core_kx.c:1650
1456#, c-format 1450#, c-format
1457msgid "" 1451msgid ""
1458"Session to peer `%s' went down due to key expiration (should not happen)\n" 1452"Session to peer `%s' went down due to key expiration (should not happen)\n"
1459msgstr "" 1453msgstr ""
1460 1454
1461#: src/core/gnunet-service-core_kx.c:1651 1455#: src/core/gnunet-service-core_kx.c:1653
1462#, fuzzy 1456#, fuzzy
1463msgid "# sessions terminated by key expiration" 1457msgid "# sessions terminated by key expiration"
1464msgstr "# các byte loại đi bởi TCP (đi ra)" 1458msgstr "# các byte loại đi bởi TCP (đi ra)"
1465 1459
1466#: src/core/gnunet-service-core_kx.c:1740 1460#: src/core/gnunet-service-core_kx.c:1742
1467#: src/core/gnunet-service-core_kx.c:1766 1461#: src/core/gnunet-service-core_kx.c:1768
1468#, fuzzy 1462#, fuzzy
1469msgid "# bytes dropped (duplicates)" 1463msgid "# bytes dropped (duplicates)"
1470msgstr "# các byte loại bỏ bởi UDP (đi ra)" 1464msgstr "# các byte loại bỏ bởi UDP (đi ra)"
1471 1465
1472#: src/core/gnunet-service-core_kx.c:1753 1466#: src/core/gnunet-service-core_kx.c:1755
1473#, fuzzy 1467#, fuzzy
1474msgid "# bytes dropped (out of sequence)" 1468msgid "# bytes dropped (out of sequence)"
1475msgstr "# các byte loại bỏ bởi UDP (đi ra)" 1469msgstr "# các byte loại bỏ bởi UDP (đi ra)"
1476 1470
1477#: src/core/gnunet-service-core_kx.c:1795 1471#: src/core/gnunet-service-core_kx.c:1797
1478#, fuzzy 1472#, fuzzy
1479msgid "# bytes dropped (ancient message)" 1473msgid "# bytes dropped (ancient message)"
1480msgstr "# các byte loại bỏ bởi UDP (đi ra)" 1474msgstr "# các byte loại bỏ bởi UDP (đi ra)"
1481 1475
1482#: src/core/gnunet-service-core_kx.c:1803 1476#: src/core/gnunet-service-core_kx.c:1805
1483#, fuzzy 1477#, fuzzy
1484msgid "# bytes of payload decrypted" 1478msgid "# bytes of payload decrypted"
1485msgstr "# các byte đã giải mã" 1479msgstr "# các byte đã giải mã"
1486 1480
1487#: src/core/gnunet-service-core_sessions.c:258 1481#: src/core/gnunet-service-core_sessions.c:260
1488#: src/core/gnunet-service-core_sessions.c:348 1482#: src/core/gnunet-service-core_sessions.c:350
1489#: src/dht/gnunet-service-dht_neighbours.c:739 1483#: src/dht/gnunet-service-dht_neighbours.c:741
1490#: src/dht/gnunet-service-dht_neighbours.c:802 1484#: src/dht/gnunet-service-dht_neighbours.c:804
1491#: src/fs/gnunet-service-fs_cp.c:613 src/fs/gnunet-service-fs_cp.c:1520 1485#: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
1492#: src/topology/gnunet-daemon-topology.c:615 1486#: src/topology/gnunet-daemon-topology.c:617
1493#: src/topology/gnunet-daemon-topology.c:717 1487#: src/topology/gnunet-daemon-topology.c:719
1494#: src/transport/gnunet-service-transport_neighbours.c:719 1488#: src/transport/gnunet-service-transport_neighbours.c:720
1495#: src/transport/gnunet-service-transport_neighbours.c:727 1489#: src/transport/gnunet-service-transport_neighbours.c:728
1496#, fuzzy 1490#, fuzzy
1497msgid "# peers connected" 1491msgid "# peers connected"
1498msgstr "# của các đồng đẳng đã kết nối" 1492msgstr "# của các đồng đẳng đã kết nối"
1499 1493
1500#: src/core/gnunet-service-core_sessions.c:294 1494#: src/core/gnunet-service-core_sessions.c:296
1501#, fuzzy 1495#, fuzzy
1502msgid "# type map refreshes sent" 1496msgid "# type map refreshes sent"
1503msgstr "# tổng số yêu cầu lỗ hổng được gửi" 1497msgstr "# tổng số yêu cầu lỗ hổng được gửi"
1504 1498
1505#: src/core/gnunet-service-core_sessions.c:414 1499#: src/core/gnunet-service-core_sessions.c:416
1506#, fuzzy 1500#, fuzzy
1507msgid "# outdated typemap confirmations received" 1501msgid "# outdated typemap confirmations received"
1508msgstr "Lỗi lưu cấu hình." 1502msgstr "Lỗi lưu cấu hình."
1509 1503
1510#: src/core/gnunet-service-core_sessions.c:431 1504#: src/core/gnunet-service-core_sessions.c:433
1511#, fuzzy 1505#, fuzzy
1512msgid "# valid typemap confirmations received" 1506msgid "# valid typemap confirmations received"
1513msgstr "Lỗi lưu cấu hình." 1507msgstr "Lỗi lưu cấu hình."
1514 1508
1515#: src/core/gnunet-service-core_typemap.c:167 1509#: src/core/gnunet-service-core_typemap.c:169
1516#: src/core/gnunet-service-core_typemap.c:179 1510#: src/core/gnunet-service-core_typemap.c:181
1517#, fuzzy 1511#, fuzzy
1518msgid "# type maps received" 1512msgid "# type maps received"
1519msgstr "# các thông báo phát hiện dht được nhận" 1513msgstr "# các thông báo phát hiện dht được nhận"
1520 1514
1521#: src/core/gnunet-service-core_typemap.c:210 1515#: src/core/gnunet-service-core_typemap.c:212
1522msgid "# updates to my type map" 1516msgid "# updates to my type map"
1523msgstr "" 1517msgstr ""
1524 1518
1525#: src/credential/credential_misc.c:86 1519#: src/credential/credential_misc.c:88
1526#, fuzzy, c-format 1520#, fuzzy, c-format
1527msgid "Unable to parse CRED record string `%s'\n" 1521msgid "Unable to parse CRED record string `%s'\n"
1528msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 1522msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
1529 1523
1530#: src/credential/gnunet-credential.c:262 src/namestore/gnunet-namestore.c:887 1524#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
1531#, c-format 1525#, c-format
1532msgid "Ego `%s' not known to identity service\n" 1526msgid "Ego `%s' not known to identity service\n"
1533msgstr "" 1527msgstr ""
1534 1528
1535#: src/credential/gnunet-credential.c:278 1529#: src/credential/gnunet-credential.c:280
1536#: src/credential/gnunet-credential.c:432 1530#: src/credential/gnunet-credential.c:434
1537#, fuzzy, c-format 1531#, fuzzy, c-format
1538msgid "Issuer public key `%s' is not well-formed\n" 1532msgid "Issuer public key `%s' is not well-formed\n"
1539msgstr "Đối số không hợp lệ cho « %s ».\n" 1533msgstr "Đối số không hợp lệ cho « %s ».\n"
1540 1534
1541#: src/credential/gnunet-credential.c:359 1535#: src/credential/gnunet-credential.c:361
1542#: src/credential/gnunet-credential.c:421 1536#: src/credential/gnunet-credential.c:423
1543#, fuzzy, c-format 1537#, fuzzy, c-format
1544msgid "Issuer public key not well-formed\n" 1538msgid "Issuer public key not well-formed\n"
1545msgstr "Đối số không hợp lệ cho « %s ».\n" 1539msgstr "Đối số không hợp lệ cho « %s ».\n"
1546 1540
1547#: src/credential/gnunet-credential.c:370 1541#: src/credential/gnunet-credential.c:372
1548#: src/credential/gnunet-credential.c:442 1542#: src/credential/gnunet-credential.c:444
1549#, fuzzy, c-format 1543#, fuzzy, c-format
1550msgid "Failed to connect to CREDENTIAL\n" 1544msgid "Failed to connect to CREDENTIAL\n"
1551msgstr "Lỗi kết nối đến gnunetd.\n" 1545msgstr "Lỗi kết nối đến gnunetd.\n"
1552 1546
1553#: src/credential/gnunet-credential.c:377 1547#: src/credential/gnunet-credential.c:379
1554#, c-format 1548#, c-format
1555msgid "You must provide issuer the attribute\n" 1549msgid "You must provide issuer the attribute\n"
1556msgstr "" 1550msgstr ""
1557 1551
1558#: src/credential/gnunet-credential.c:385 1552#: src/credential/gnunet-credential.c:387
1559#, c-format 1553#, c-format
1560msgid "ego required\n" 1554msgid "ego required\n"
1561msgstr "" 1555msgstr ""
1562 1556
1563#: src/credential/gnunet-credential.c:401 1557#: src/credential/gnunet-credential.c:403
1564#, c-format 1558#, c-format
1565msgid "Subject public key needed\n" 1559msgid "Subject public key needed\n"
1566msgstr "" 1560msgstr ""
1567 1561
1568#: src/credential/gnunet-credential.c:412 1562#: src/credential/gnunet-credential.c:414
1569#, fuzzy, c-format 1563#, fuzzy, c-format
1570msgid "Subject public key `%s' is not well-formed\n" 1564msgid "Subject public key `%s' is not well-formed\n"
1571msgstr "Đối số không hợp lệ cho « %s ».\n" 1565msgstr "Đối số không hợp lệ cho « %s ».\n"
1572 1566
1573#: src/credential/gnunet-credential.c:449 1567#: src/credential/gnunet-credential.c:451
1574#, c-format 1568#, c-format
1575msgid "You must provide issuer and subject attributes\n" 1569msgid "You must provide issuer and subject attributes\n"
1576msgstr "" 1570msgstr ""
1577 1571
1578#: src/credential/gnunet-credential.c:502 1572#: src/credential/gnunet-credential.c:504
1579#, c-format 1573#, c-format
1580msgid "Issuer ego required\n" 1574msgid "Issuer ego required\n"
1581msgstr "" 1575msgstr ""
1582 1576
1583#: src/credential/gnunet-credential.c:514 1577#: src/credential/gnunet-credential.c:516
1584#, c-format 1578#, c-format
1585msgid "Please specify name to lookup, subject key and issuer key!\n" 1579msgid "Please specify name to lookup, subject key and issuer key!\n"
1586msgstr "" 1580msgstr ""
1587 1581
1588#: src/credential/gnunet-credential.c:534 1582#: src/credential/gnunet-credential.c:536
1589msgid "create credential" 1583msgid "create credential"
1590msgstr "" 1584msgstr ""
1591 1585
1592#: src/credential/gnunet-credential.c:538 1586#: src/credential/gnunet-credential.c:540
1593msgid "verify credential against attribute" 1587msgid "verify credential against attribute"
1594msgstr "" 1588msgstr ""
1595 1589
1596#: src/credential/gnunet-credential.c:543 1590#: src/credential/gnunet-credential.c:545
1597#, fuzzy 1591#, fuzzy
1598msgid "The public key of the subject to lookup the credential for" 1592msgid "The public key of the subject to lookup the credential for"
1599msgstr "xác định mức ưu tiên của nội dung" 1593msgstr "xác định mức ưu tiên của nội dung"
1600 1594
1601#: src/credential/gnunet-credential.c:548 1595#: src/credential/gnunet-credential.c:550
1602msgid "The name of the credential presented by the subject" 1596msgid "The name of the credential presented by the subject"
1603msgstr "" 1597msgstr ""
1604 1598
1605#: src/credential/gnunet-credential.c:553 1599#: src/credential/gnunet-credential.c:555
1606#, fuzzy 1600#, fuzzy
1607msgid "The public key of the authority to verify the credential against" 1601msgid "The public key of the authority to verify the credential against"
1608msgstr "xác định mức ưu tiên của nội dung" 1602msgstr "xác định mức ưu tiên của nội dung"
1609 1603
1610#: src/credential/gnunet-credential.c:558 1604#: src/credential/gnunet-credential.c:560
1611#, fuzzy 1605#, fuzzy
1612msgid "The ego to use" 1606msgid "The ego to use"
1613msgstr "kích cỡ tin nhắn" 1607msgstr "kích cỡ tin nhắn"
1614 1608
1615#: src/credential/gnunet-credential.c:563 1609#: src/credential/gnunet-credential.c:565
1616msgid "The issuer attribute to verify against or to issue" 1610msgid "The issuer attribute to verify against or to issue"
1617msgstr "" 1611msgstr ""
1618 1612
1619#: src/credential/gnunet-credential.c:568 1613#: src/credential/gnunet-credential.c:570
1620msgid "The time to live for the credential" 1614msgid "The time to live for the credential"
1621msgstr "" 1615msgstr ""
1622 1616
1623#: src/credential/gnunet-credential.c:572 1617#: src/credential/gnunet-credential.c:574
1624msgid "collect credentials" 1618msgid "collect credentials"
1625msgstr "" 1619msgstr ""
1626 1620
1627#: src/credential/gnunet-credential.c:586 1621#: src/credential/gnunet-credential.c:588
1628#, fuzzy 1622#, fuzzy
1629msgid "GNUnet credential resolver tool" 1623msgid "GNUnet credential resolver tool"
1630msgstr "Bản ghi lỗi GNUnet" 1624msgstr "Bản ghi lỗi GNUnet"
1631 1625
1632#: src/credential/gnunet-service-credential.c:1136 src/gns/gnunet-gns.c:183 1626#: src/credential/gnunet-service-credential.c:1138 src/gns/gnunet-gns.c:185
1633#: src/gns/gnunet-gns-helper-service-w32.c:725 1627#: src/gns/gnunet-gns-helper-service-w32.c:727
1634#, fuzzy, c-format 1628#, fuzzy, c-format
1635msgid "Failed to connect to GNS\n" 1629msgid "Failed to connect to GNS\n"
1636msgstr "Lỗi kết nối đến gnunetd.\n" 1630msgstr "Lỗi kết nối đến gnunetd.\n"
1637 1631
1638#: src/credential/gnunet-service-credential.c:1142 1632#: src/credential/gnunet-service-credential.c:1144
1639#: src/namestore/gnunet-namestore.c:913 1633#: src/namestore/gnunet-namestore.c:1019
1640#: src/namestore/gnunet-namestore-fcfsd.c:1136 1634#: src/namestore/gnunet-namestore-fcfsd.c:1138
1641#, fuzzy, c-format 1635#, fuzzy, c-format
1642msgid "Failed to connect to namestore\n" 1636msgid "Failed to connect to namestore\n"
1643msgstr "Không kết nối được đến trình nền gnunetd." 1637msgstr "Không kết nối được đến trình nền gnunetd."
1644 1638
1645#: src/credential/plugin_gnsrecord_credential.c:184 1639#: src/credential/plugin_gnsrecord_credential.c:186
1646#, fuzzy, c-format 1640#, fuzzy, c-format
1647msgid "Unable to parse ATTR record string `%s'\n" 1641msgid "Unable to parse ATTR record string `%s'\n"
1648msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 1642msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
1649 1643
1650#: src/datacache/datacache.c:117 src/datacache/datacache.c:309 1644#: src/datacache/datacache.c:119 src/datacache/datacache.c:311
1651#: src/datastore/gnunet-service-datastore.c:755 1645#: src/datastore/gnunet-service-datastore.c:757
1652#, fuzzy 1646#, fuzzy
1653msgid "# bytes stored" 1647msgid "# bytes stored"
1654msgstr "# các byte trong kho dữ liệu" 1648msgstr "# các byte trong kho dữ liệu"
1655 1649
1656#: src/datacache/datacache.c:121 src/datacache/datacache.c:313 1650#: src/datacache/datacache.c:123 src/datacache/datacache.c:315
1657#, fuzzy 1651#, fuzzy
1658msgid "# items stored" 1652msgid "# items stored"
1659msgstr "# các byte trong kho dữ liệu" 1653msgstr "# các byte trong kho dữ liệu"
1660 1654
1661#: src/datacache/datacache.c:204 1655#: src/datacache/datacache.c:206
1662#, c-format 1656#, c-format
1663msgid "Loading `%s' datacache plugin\n" 1657msgid "Loading `%s' datacache plugin\n"
1664msgstr "" 1658msgstr ""
1665 1659
1666#: src/datacache/datacache.c:215 1660#: src/datacache/datacache.c:217
1667#, fuzzy, c-format 1661#, fuzzy, c-format
1668msgid "Failed to load datacache plugin for `%s'\n" 1662msgid "Failed to load datacache plugin for `%s'\n"
1669msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" 1663msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
1670 1664
1671#: src/datacache/datacache.c:343 1665#: src/datacache/datacache.c:345
1672#, fuzzy 1666#, fuzzy
1673msgid "# requests received" 1667msgid "# requests received"
1674msgstr "# các yêu cầu get (lấy) dht được nhận" 1668msgstr "# các yêu cầu get (lấy) dht được nhận"
1675 1669
1676#: src/datacache/datacache.c:353 1670#: src/datacache/datacache.c:355
1677msgid "# requests filtered by bloom filter" 1671msgid "# requests filtered by bloom filter"
1678msgstr "# các yêu cầu được lọc theo bộ lọc bloom" 1672msgstr "# các yêu cầu được lọc theo bộ lọc bloom"
1679 1673
1680#: src/datacache/datacache.c:383 1674#: src/datacache/datacache.c:385
1681#, fuzzy 1675#, fuzzy
1682msgid "# requests for random value received" 1676msgid "# requests for random value received"
1683msgstr "# tổng số yêu cầu lỗ hổng được nhận" 1677msgstr "# tổng số yêu cầu lỗ hổng được nhận"
1684 1678
1685#: src/datacache/datacache.c:415 1679#: src/datacache/datacache.c:417
1686#, fuzzy 1680#, fuzzy
1687msgid "# proximity search requests received" 1681msgid "# proximity search requests received"
1688msgstr "# các yêu cầu khách lỗ hổng được nhận" 1682msgstr "# các yêu cầu khách lỗ hổng được nhận"
1689 1683
1690#: src/datacache/plugin_datacache_heap.c:551 1684#: src/datacache/plugin_datacache_heap.c:553
1691#, fuzzy 1685#, fuzzy
1692msgid "Heap datacache running\n" 1686msgid "Heap datacache running\n"
1693msgstr "kho dữ liệu sqlite" 1687msgstr "kho dữ liệu sqlite"
1694 1688
1695#: src/datacache/plugin_datacache_sqlite.c:116 1689#: src/datacache/plugin_datacache_sqlite.c:118
1696#: src/datacache/plugin_datacache_sqlite.c:125 1690#: src/datacache/plugin_datacache_sqlite.c:127
1697#: src/datastore/plugin_datastore_mysql.c:890 1691#: src/datastore/plugin_datastore_mysql.c:892
1698#: src/datastore/plugin_datastore_sqlite.c:56 1692#: src/datastore/plugin_datastore_sqlite.c:58
1699#: src/datastore/plugin_datastore_sqlite.c:64 src/my/my.c:79 src/my/my.c:91 1693#: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
1700#: src/mysql/mysql.c:40 src/mysql/mysql.c:47 1694#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
1701#: src/namecache/plugin_namecache_sqlite.c:50 1695#: src/namecache/plugin_namecache_sqlite.c:52
1702#: src/namestore/plugin_namestore_sqlite.c:51 1696#: src/namestore/plugin_namestore_sqlite.c:53
1703#: src/peerstore/plugin_peerstore_sqlite.c:50 1697#: src/peerstore/plugin_peerstore_sqlite.c:52
1704#: src/psycstore/plugin_psycstore_mysql.c:60 1698#: src/reclaim/plugin_reclaim_sqlite.c:52
1705#: src/reclaim/plugin_reclaim_sqlite.c:50 1699#: src/testbed/generate-underlay-topology.c:47
1706#: src/testbed/generate-underlay-topology.c:45 1700#: src/testbed/gnunet-daemon-latency-logger.c:52
1707#: src/testbed/gnunet-daemon-latency-logger.c:50 1701#: src/testbed/gnunet-daemon-testbed-underlay.c:56
1708#: src/testbed/gnunet-daemon-testbed-underlay.c:54 1702#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
1709#: src/testbed/testbed_api_hosts.c:67 src/util/crypto_ecc.c:51 1703#: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
1710#: src/util/crypto_ecc_setup.c:39 src/util/crypto_mpi.c:37 1704#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
1711#: src/include/gnunet_common.h:816 src/include/gnunet_common.h:825 1705#: src/scalarproduct/scalarproduct.h:35
1712#: src/scalarproduct/scalarproduct.h:33
1713#, c-format 1706#, c-format
1714msgid "`%s' failed at %s:%d with error: %s\n" 1707msgid "`%s' failed at %s:%d with error: %s\n"
1715msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n" 1708msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
1716 1709
1717#: src/datacache/plugin_datacache_sqlite.c:861 1710#: src/datacache/plugin_datacache_sqlite.c:863
1718#: src/datastore/plugin_datastore_sqlite.c:506 1711#: src/datastore/plugin_datastore_sqlite.c:508
1719#: src/namecache/plugin_namecache_sqlite.c:327 1712#: src/namecache/plugin_namecache_sqlite.c:229
1720#: src/namestore/plugin_namestore_sqlite.c:262 1713#: src/namestore/plugin_namestore_sqlite.c:265
1721#: src/reclaim/plugin_reclaim_sqlite.c:334 1714#: src/reclaim/plugin_reclaim_sqlite.c:336
1722msgid "Tried to close sqlite without finalizing all prepared statements.\n" 1715msgid "Tried to close sqlite without finalizing all prepared statements.\n"
1723msgstr "" 1716msgstr ""
1724 1717
1725#: src/datastore/datastore_api.c:346 1718#: src/datastore/datastore_api.c:348
1726#, fuzzy 1719#, fuzzy
1727msgid "DATASTORE disconnected" 1720msgid "DATASTORE disconnected"
1728msgstr "« %.*s » được kết nối tới « %.*s ».\n" 1721msgstr "« %.*s » được kết nối tới « %.*s ».\n"
1729 1722
1730#: src/datastore/datastore_api.c:466 1723#: src/datastore/datastore_api.c:468
1731#, fuzzy 1724#, fuzzy
1732msgid "Disconnected from DATASTORE" 1725msgid "Disconnected from DATASTORE"
1733msgstr "« %.*s » được kết nối tới « %.*s ».\n" 1726msgstr "« %.*s » được kết nối tới « %.*s ».\n"
1734 1727
1735#: src/datastore/datastore_api.c:567 1728#: src/datastore/datastore_api.c:569
1736msgid "# queue overflows" 1729msgid "# queue overflows"
1737msgstr "" 1730msgstr ""
1738 1731
1739#: src/datastore/datastore_api.c:597 1732#: src/datastore/datastore_api.c:599
1740#, fuzzy 1733#, fuzzy
1741msgid "# queue entries created" 1734msgid "# queue entries created"
1742msgstr "# các truy vấn lỗ hổng được định tuyến" 1735msgstr "# các truy vấn lỗ hổng được định tuyến"
1743 1736
1744#: src/datastore/datastore_api.c:758 1737#: src/datastore/datastore_api.c:760
1745#, fuzzy 1738#, fuzzy
1746msgid "# status messages received" 1739msgid "# status messages received"
1747msgstr "# các thông báo phát hiện dht được nhận" 1740msgstr "# các thông báo phát hiện dht được nhận"
1748 1741
1749#: src/datastore/datastore_api.c:812 1742#: src/datastore/datastore_api.c:814
1750#, fuzzy 1743#, fuzzy
1751msgid "# Results received" 1744msgid "# Results received"
1752msgstr "# các kết quả dht được nhận" 1745msgstr "# các kết quả dht được nhận"
1753 1746
1754#: src/datastore/datastore_api.c:918 1747#: src/datastore/datastore_api.c:920
1755#, fuzzy 1748#, fuzzy
1756msgid "# datastore connections (re)created" 1749msgid "# datastore connections (re)created"
1757msgstr "# các kết nối dht" 1750msgstr "# các kết nối dht"
1758 1751
1759#: src/datastore/datastore_api.c:1032 1752#: src/datastore/datastore_api.c:1034
1760#, fuzzy 1753#, fuzzy
1761msgid "# PUT requests executed" 1754msgid "# PUT requests executed"
1762msgstr "# các yêu cầu dht được định tuyến" 1755msgstr "# các yêu cầu dht được định tuyến"
1763 1756
1764#: src/datastore/datastore_api.c:1093 1757#: src/datastore/datastore_api.c:1095
1765#, fuzzy 1758#, fuzzy
1766msgid "# RESERVE requests executed" 1759msgid "# RESERVE requests executed"
1767msgstr "# các yêu cầu dht được định tuyến" 1760msgstr "# các yêu cầu dht được định tuyến"
1768 1761
1769#: src/datastore/datastore_api.c:1158 1762#: src/datastore/datastore_api.c:1160
1770msgid "# RELEASE RESERVE requests executed" 1763msgid "# RELEASE RESERVE requests executed"
1771msgstr "" 1764msgstr ""
1772 1765
1773#: src/datastore/datastore_api.c:1236 1766#: src/datastore/datastore_api.c:1238
1774#, fuzzy 1767#, fuzzy
1775msgid "# REMOVE requests executed" 1768msgid "# REMOVE requests executed"
1776msgstr "# các yêu cầu dht được định tuyến" 1769msgstr "# các yêu cầu dht được định tuyến"
1777 1770
1778#: src/datastore/datastore_api.c:1296 1771#: src/datastore/datastore_api.c:1298
1779msgid "# GET REPLICATION requests executed" 1772msgid "# GET REPLICATION requests executed"
1780msgstr "" 1773msgstr ""
1781 1774
1782#: src/datastore/datastore_api.c:1358 1775#: src/datastore/datastore_api.c:1360
1783msgid "# GET ZERO ANONYMITY requests executed" 1776msgid "# GET ZERO ANONYMITY requests executed"
1784msgstr "" 1777msgstr ""
1785 1778
1786#: src/datastore/datastore_api.c:1439 1779#: src/datastore/datastore_api.c:1441
1787#, fuzzy 1780#, fuzzy
1788msgid "# GET requests executed" 1781msgid "# GET requests executed"
1789msgstr "# các yêu cầu dht được định tuyến" 1782msgstr "# các yêu cầu dht được định tuyến"
1790 1783
1791#: src/datastore/gnunet-datastore.c:187 1784#: src/datastore/gnunet-datastore.c:189
1792#, c-format 1785#, c-format
1793msgid "Dumped %<PRIu64> records\n" 1786msgid "Dumped %<PRIu64> records\n"
1794msgstr "" 1787msgstr ""
1795 1788
1796#: src/datastore/gnunet-datastore.c:215 src/datastore/gnunet-datastore.c:227 1789#: src/datastore/gnunet-datastore.c:217 src/datastore/gnunet-datastore.c:229
1797#, c-format 1790#, c-format
1798msgid "Short write to file: %zd bytes expecting %zd\n" 1791msgid "Short write to file: %zd bytes expecting %zd\n"
1799msgstr "" 1792msgstr ""
1800 1793
1801#: src/datastore/gnunet-datastore.c:259 1794#: src/datastore/gnunet-datastore.c:261
1802#, fuzzy 1795#, fuzzy
1803msgid "Error queueing datastore GET operation\n" 1796msgid "Error queueing datastore GET operation\n"
1804msgstr "Gặp lỗi khi tạo người dùng" 1797msgstr "Gặp lỗi khi tạo người dùng"
1805 1798
1806#: src/datastore/gnunet-datastore.c:285 src/datastore/gnunet-datastore.c:410 1799#: src/datastore/gnunet-datastore.c:287 src/datastore/gnunet-datastore.c:412
1807#, fuzzy, c-format 1800#, fuzzy, c-format
1808msgid "Unable to open dump file: %s\n" 1801msgid "Unable to open dump file: %s\n"
1809msgstr "Không thể tạo miền tên.\n" 1802msgstr "Không thể tạo miền tên.\n"
1810 1803
1811#: src/datastore/gnunet-datastore.c:324 1804#: src/datastore/gnunet-datastore.c:326
1812#, fuzzy, c-format 1805#, fuzzy, c-format
1813msgid "Failed to store item: %s, aborting\n" 1806msgid "Failed to store item: %s, aborting\n"
1814msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 1807msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
1815 1808
1816#: src/datastore/gnunet-datastore.c:338 1809#: src/datastore/gnunet-datastore.c:340
1817#, c-format 1810#, c-format
1818msgid "Inserted %<PRIu64> records\n" 1811msgid "Inserted %<PRIu64> records\n"
1819msgstr "" 1812msgstr ""
1820 1813
1821#: src/datastore/gnunet-datastore.c:347 src/datastore/gnunet-datastore.c:361 1814#: src/datastore/gnunet-datastore.c:349 src/datastore/gnunet-datastore.c:363
1822#, c-format 1815#, c-format
1823msgid "Short read from file: %zd bytes expecting %zd\n" 1816msgid "Short read from file: %zd bytes expecting %zd\n"
1824msgstr "" 1817msgstr ""
1825 1818
1826#: src/datastore/gnunet-datastore.c:387 1819#: src/datastore/gnunet-datastore.c:389
1827#, fuzzy 1820#, fuzzy
1828msgid "Error queueing datastore PUT operation\n" 1821msgid "Error queueing datastore PUT operation\n"
1829msgstr "Gặp lỗi khi tạo người dùng" 1822msgstr "Gặp lỗi khi tạo người dùng"
1830 1823
1831#: src/datastore/gnunet-datastore.c:430 1824#: src/datastore/gnunet-datastore.c:432
1832msgid "Input file is not of a supported format\n" 1825msgid "Input file is not of a supported format\n"
1833msgstr "" 1826msgstr ""
1834 1827
1835#: src/datastore/gnunet-datastore.c:456 1828#: src/datastore/gnunet-datastore.c:458
1836#, fuzzy 1829#, fuzzy
1837msgid "Failed connecting to the datastore.\n" 1830msgid "Failed connecting to the datastore.\n"
1838msgstr "Không kết nối được đến trình nền gnunetd." 1831msgstr "Không kết nối được đến trình nền gnunetd."
1839 1832
1840#: src/datastore/gnunet-datastore.c:468 1833#: src/datastore/gnunet-datastore.c:470
1841#, c-format 1834#, c-format
1842msgid "Please choose at least one operation: %s, %s\n" 1835msgid "Please choose at least one operation: %s, %s\n"
1843msgstr "" 1836msgstr ""
1844 1837
1845#: src/datastore/gnunet-datastore.c:491 1838#: src/datastore/gnunet-datastore.c:493
1846#, fuzzy 1839#, fuzzy
1847msgid "Dump all records from the datastore" 1840msgid "Dump all records from the datastore"
1848msgstr "" 1841msgstr ""
1849"\n" 1842"\n"
1850"Không nhận được đáp ứng từ gnunetd.\n" 1843"Không nhận được đáp ứng từ gnunetd.\n"
1851 1844
1852#: src/datastore/gnunet-datastore.c:495 1845#: src/datastore/gnunet-datastore.c:497
1853#, fuzzy 1846#, fuzzy
1854msgid "Insert records into the datastore" 1847msgid "Insert records into the datastore"
1855msgstr "# các byte trong kho dữ liệu" 1848msgstr "# các byte trong kho dữ liệu"
1856 1849
1857#: src/datastore/gnunet-datastore.c:500 1850#: src/datastore/gnunet-datastore.c:502
1858msgid "File to dump or insert" 1851msgid "File to dump or insert"
1859msgstr "" 1852msgstr ""
1860 1853
1861#: src/datastore/gnunet-datastore.c:509 1854#: src/datastore/gnunet-datastore.c:511
1862#, fuzzy 1855#, fuzzy
1863msgid "Manipulate GNUnet datastore" 1856msgid "Manipulate GNUnet datastore"
1864msgstr "cập nhật một giá trị trong tập tin cấu hình" 1857msgstr "cập nhật một giá trị trong tập tin cấu hình"
1865 1858
1866#: src/datastore/gnunet-service-datastore.c:336 1859#: src/datastore/gnunet-service-datastore.c:338
1867#, fuzzy 1860#, fuzzy
1868msgid "# bytes expired" 1861msgid "# bytes expired"
1869msgstr "# các byte được nhận" 1862msgstr "# các byte được nhận"
1870 1863
1871#: src/datastore/gnunet-service-datastore.c:418 1864#: src/datastore/gnunet-service-datastore.c:420
1872msgid "# bytes purged (low-priority)" 1865msgid "# bytes purged (low-priority)"
1873msgstr "" 1866msgstr ""
1874 1867
1875#: src/datastore/gnunet-service-datastore.c:560 1868#: src/datastore/gnunet-service-datastore.c:562
1876msgid "# results found" 1869msgid "# results found"
1877msgstr "" 1870msgstr ""
1878 1871
1879#: src/datastore/gnunet-service-datastore.c:601 1872#: src/datastore/gnunet-service-datastore.c:603
1880#, c-format 1873#, c-format
1881msgid "" 1874msgid ""
1882"Insufficient space (%llu bytes are available) to satisfy RESERVE request for " 1875"Insufficient space (%llu bytes are available) to satisfy RESERVE request for "
1883"%llu bytes\n" 1876"%llu bytes\n"
1884msgstr "" 1877msgstr ""
1885 1878
1886#: src/datastore/gnunet-service-datastore.c:612 1879#: src/datastore/gnunet-service-datastore.c:614
1887#, c-format 1880#, c-format
1888msgid "" 1881msgid ""
1889"The requested amount (%llu bytes) is larger than the cache size (%llu " 1882"The requested amount (%llu bytes) is larger than the cache size (%llu "
1890"bytes)\n" 1883"bytes)\n"
1891msgstr "" 1884msgstr ""
1892 1885
1893#: src/datastore/gnunet-service-datastore.c:618 1886#: src/datastore/gnunet-service-datastore.c:620
1894msgid "" 1887msgid ""
1895"Insufficient space to satisfy request and requested amount is larger than " 1888"Insufficient space to satisfy request and requested amount is larger than "
1896"cache size" 1889"cache size"
1897msgstr "" 1890msgstr ""
1898 1891
1899#: src/datastore/gnunet-service-datastore.c:625 1892#: src/datastore/gnunet-service-datastore.c:627
1900msgid "Insufficient space to satisfy request" 1893msgid "Insufficient space to satisfy request"
1901msgstr "" 1894msgstr ""
1902 1895
1903#: src/datastore/gnunet-service-datastore.c:632 1896#: src/datastore/gnunet-service-datastore.c:634
1904#: src/datastore/gnunet-service-datastore.c:687 1897#: src/datastore/gnunet-service-datastore.c:689
1905#: src/datastore/gnunet-service-datastore.c:835 1898#: src/datastore/gnunet-service-datastore.c:837
1906#: src/datastore/gnunet-service-datastore.c:1467 1899#: src/datastore/gnunet-service-datastore.c:1469
1907msgid "# reserved" 1900msgid "# reserved"
1908msgstr "" 1901msgstr ""
1909 1902
1910#: src/datastore/gnunet-service-datastore.c:705 1903#: src/datastore/gnunet-service-datastore.c:707
1911msgid "Could not find matching reservation" 1904msgid "Could not find matching reservation"
1912msgstr "" 1905msgstr ""
1913 1906
1914#: src/datastore/gnunet-service-datastore.c:771 1907#: src/datastore/gnunet-service-datastore.c:773
1915#, c-format 1908#, c-format
1916msgid "Need %llu bytes more space (%llu allowed, using %llu)\n" 1909msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
1917msgstr "" 1910msgstr ""
1918 1911
1919#: src/datastore/gnunet-service-datastore.c:874 1912#: src/datastore/gnunet-service-datastore.c:876
1920#, fuzzy 1913#, fuzzy
1921msgid "# GET requests received" 1914msgid "# GET requests received"
1922msgstr "# các yêu cầu get (lấy) dht được nhận" 1915msgstr "# các yêu cầu get (lấy) dht được nhận"
1923 1916
1924#: src/datastore/gnunet-service-datastore.c:905 1917#: src/datastore/gnunet-service-datastore.c:907
1925#, fuzzy 1918#, fuzzy
1926msgid "# GET KEY requests received" 1919msgid "# GET KEY requests received"
1927msgstr "# các yêu cầu get (lấy) dht được nhận" 1920msgstr "# các yêu cầu get (lấy) dht được nhận"
1928 1921
1929#: src/datastore/gnunet-service-datastore.c:918 1922#: src/datastore/gnunet-service-datastore.c:920
1930#, fuzzy 1923#, fuzzy
1931msgid "# requests filtered by bloomfilter" 1924msgid "# requests filtered by bloomfilter"
1932msgstr "# các yêu cầu được lọc theo bộ lọc bloom" 1925msgstr "# các yêu cầu được lọc theo bộ lọc bloom"
1933 1926
1934#: src/datastore/gnunet-service-datastore.c:954 1927#: src/datastore/gnunet-service-datastore.c:956
1935#, fuzzy 1928#, fuzzy
1936msgid "# GET REPLICATION requests received" 1929msgid "# GET REPLICATION requests received"
1937msgstr "# các yêu cầu get (lấy) dht được nhận" 1930msgstr "# các yêu cầu get (lấy) dht được nhận"
1938 1931
1939#: src/datastore/gnunet-service-datastore.c:987 1932#: src/datastore/gnunet-service-datastore.c:989
1940#, fuzzy 1933#, fuzzy
1941msgid "# GET ZERO ANONYMITY requests received" 1934msgid "# GET ZERO ANONYMITY requests received"
1942msgstr "# các yêu cầu get (lấy) dht được nhận" 1935msgstr "# các yêu cầu get (lấy) dht được nhận"
1943 1936
1944#: src/datastore/gnunet-service-datastore.c:1034 1937#: src/datastore/gnunet-service-datastore.c:1036
1945msgid "Content not found" 1938msgid "Content not found"
1946msgstr "" 1939msgstr ""
1947 1940
1948#: src/datastore/gnunet-service-datastore.c:1041 1941#: src/datastore/gnunet-service-datastore.c:1043
1949msgid "# bytes removed (explicit request)" 1942msgid "# bytes removed (explicit request)"
1950msgstr "" 1943msgstr ""
1951 1944
1952#: src/datastore/gnunet-service-datastore.c:1086 1945#: src/datastore/gnunet-service-datastore.c:1088
1953#, fuzzy 1946#, fuzzy
1954msgid "# REMOVE requests received" 1947msgid "# REMOVE requests received"
1955msgstr "# các yêu cầu get (lấy) dht được nhận" 1948msgstr "# các yêu cầu get (lấy) dht được nhận"
1956 1949
1957#: src/datastore/gnunet-service-datastore.c:1135 1950#: src/datastore/gnunet-service-datastore.c:1137
1958#, c-format 1951#, c-format
1959msgid "" 1952msgid ""
1960"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n" 1953"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
1961msgstr "" 1954msgstr ""
1962 1955
1963#: src/datastore/gnunet-service-datastore.c:1141 1956#: src/datastore/gnunet-service-datastore.c:1143
1964#: src/datastore/gnunet-service-datastore.c:1316 1957#: src/datastore/gnunet-service-datastore.c:1318
1965#, c-format 1958#, c-format
1966msgid "New payload: %lld\n" 1959msgid "New payload: %lld\n"
1967msgstr "" 1960msgstr ""
1968 1961
1969#: src/datastore/gnunet-service-datastore.c:1195 1962#: src/datastore/gnunet-service-datastore.c:1197
1970#, c-format 1963#, c-format
1971msgid "Loading `%s' datastore plugin\n" 1964msgid "Loading `%s' datastore plugin\n"
1972msgstr "" 1965msgstr ""
1973 1966
1974#: src/datastore/gnunet-service-datastore.c:1207 1967#: src/datastore/gnunet-service-datastore.c:1209
1975#, fuzzy, c-format 1968#, fuzzy, c-format
1976msgid "Failed to load datastore plugin for `%s'\n" 1969msgid "Failed to load datastore plugin for `%s'\n"
1977msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" 1970msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
1978 1971
1979#: src/datastore/gnunet-service-datastore.c:1267 1972#: src/datastore/gnunet-service-datastore.c:1269
1980msgid "Bloomfilter construction complete.\n" 1973msgid "Bloomfilter construction complete.\n"
1981msgstr "" 1974msgstr ""
1982 1975
1983#: src/datastore/gnunet-service-datastore.c:1323 1976#: src/datastore/gnunet-service-datastore.c:1325
1984msgid "Rebuilding bloomfilter. Please be patient.\n" 1977msgid "Rebuilding bloomfilter. Please be patient.\n"
1985msgstr "" 1978msgstr ""
1986 1979
1987#: src/datastore/gnunet-service-datastore.c:1334 1980#: src/datastore/gnunet-service-datastore.c:1336
1988msgid "Plugin does not support get_keys function. Please fix!\n" 1981msgid "Plugin does not support get_keys function. Please fix!\n"
1989msgstr "" 1982msgstr ""
1990 1983
1991#: src/datastore/gnunet-service-datastore.c:1504 1984#: src/datastore/gnunet-service-datastore.c:1506
1992#, fuzzy, c-format 1985#, fuzzy, c-format
1993msgid "# bytes used in file-sharing datastore `%s'" 1986msgid "# bytes used in file-sharing datastore `%s'"
1994msgstr "# các byte được phép trong kho dữ liệu" 1987msgstr "# các byte được phép trong kho dữ liệu"
1995 1988
1996#: src/datastore/gnunet-service-datastore.c:1520 1989#: src/datastore/gnunet-service-datastore.c:1522
1997msgid "# quota" 1990msgid "# quota"
1998msgstr "" 1991msgstr ""
1999 1992
2000#: src/datastore/gnunet-service-datastore.c:1525 1993#: src/datastore/gnunet-service-datastore.c:1527
2001msgid "# cache size" 1994msgid "# cache size"
2002msgstr "" 1995msgstr ""
2003 1996
2004#: src/datastore/gnunet-service-datastore.c:1541 1997#: src/datastore/gnunet-service-datastore.c:1543
2005#, c-format 1998#, c-format
2006msgid "Could not use specified filename `%s' for bloomfilter.\n" 1999msgid "Could not use specified filename `%s' for bloomfilter.\n"
2007msgstr "" 2000msgstr ""
2008 2001
2009#: src/datastore/gnunet-service-datastore.c:1559 2002#: src/datastore/gnunet-service-datastore.c:1561
2010#: src/datastore/gnunet-service-datastore.c:1575 2003#: src/datastore/gnunet-service-datastore.c:1577
2011#, fuzzy, c-format 2004#, fuzzy, c-format
2012msgid "Failed to remove bogus bloomfilter file `%s'\n" 2005msgid "Failed to remove bogus bloomfilter file `%s'\n"
2013msgstr "Không thể lưu tập tin cấu hình « %s »:" 2006msgstr "Không thể lưu tập tin cấu hình « %s »:"
2014 2007
2015#: src/datastore/gnunet-service-datastore.c:1607 2008#: src/datastore/gnunet-service-datastore.c:1609
2016#, fuzzy 2009#, fuzzy
2017msgid "Failed to initialize bloomfilter.\n" 2010msgid "Failed to initialize bloomfilter.\n"
2018msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 2011msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
2019 2012
2020#: src/datastore/plugin_datastore_heap.c:891 2013#: src/datastore/plugin_datastore_heap.c:893
2021#, fuzzy 2014#, fuzzy
2022msgid "Heap database running\n" 2015msgid "Heap database running\n"
2023msgstr "kho dữ liệu sqlite" 2016msgstr "kho dữ liệu sqlite"
2024 2017
2025#: src/datastore/plugin_datastore_mysql.c:369 2018#: src/datastore/plugin_datastore_mysql.c:371
2026#: src/datastore/plugin_datastore_mysql.c:421 2019#: src/datastore/plugin_datastore_mysql.c:423
2027#: src/datastore/plugin_datastore_mysql.c:1073 2020#: src/datastore/plugin_datastore_mysql.c:1075
2028msgid "MySQL statement run failure" 2021msgid "MySQL statement run failure"
2029msgstr "" 2022msgstr ""
2030 2023
2031#: src/datastore/plugin_datastore_mysql.c:408 2024#: src/datastore/plugin_datastore_mysql.c:410
2032#: src/datastore/plugin_datastore_sqlite.c:676 2025#: src/datastore/plugin_datastore_sqlite.c:678
2033#, fuzzy 2026#, fuzzy
2034msgid "Data too large" 2027msgid "Data too large"
2035msgstr "số lần lặp lại" 2028msgstr "số lần lặp lại"
2036 2029
2037#: src/datastore/plugin_datastore_mysql.c:846 2030#: src/datastore/plugin_datastore_mysql.c:848
2038#, fuzzy, c-format 2031#, fuzzy, c-format
2039msgid "`%s' for `%s' failed at %s:%d with error: %s\n" 2032msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
2040msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n" 2033msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
2041 2034
2042#: src/datastore/plugin_datastore_mysql.c:1178 2035#: src/datastore/plugin_datastore_mysql.c:1180
2043#: src/psycstore/plugin_psycstore_mysql.c:1934
2044msgid "Mysql database running\n" 2036msgid "Mysql database running\n"
2045msgstr "" 2037msgstr ""
2046 2038
2047#: src/datastore/plugin_datastore_postgres.c:274 2039#: src/datastore/plugin_datastore_postgres.c:276
2048#: src/datastore/plugin_datastore_postgres.c:891 2040#: src/datastore/plugin_datastore_postgres.c:893
2049msgid "Postgress exec failure" 2041msgid "Postgress exec failure"
2050msgstr "" 2042msgstr ""
2051 2043
2052#: src/datastore/plugin_datastore_postgres.c:852 2044#: src/datastore/plugin_datastore_postgres.c:854
2053#, fuzzy 2045#, fuzzy
2054msgid "Failed to drop table from database.\n" 2046msgid "Failed to drop table from database.\n"
2055msgstr "" 2047msgstr ""
2056"\n" 2048"\n"
2057"Không nhận được đáp ứng từ gnunetd.\n" 2049"Không nhận được đáp ứng từ gnunetd.\n"
2058 2050
2059#: src/datastore/plugin_datastore_postgres.c:950 2051#: src/datastore/plugin_datastore_postgres.c:952
2060#: src/psycstore/plugin_psycstore_postgres.c:1504
2061msgid "Postgres database running\n" 2052msgid "Postgres database running\n"
2062msgstr "" 2053msgstr ""
2063 2054
2064#: src/datastore/plugin_datastore_sqlite.c:64 2055#: src/datastore/plugin_datastore_sqlite.c:66
2065#: src/testbed/generate-underlay-topology.c:48 2056#: src/testbed/generate-underlay-topology.c:50
2066#: src/testbed/gnunet-daemon-latency-logger.c:53 2057#: src/testbed/gnunet-daemon-latency-logger.c:55
2067#: src/testbed/gnunet-daemon-testbed-underlay.c:57 2058#: src/testbed/gnunet-daemon-testbed-underlay.c:59
2068#, fuzzy, c-format 2059#, fuzzy, c-format
2069msgid "`%s' failed at %s:%u with error: %s" 2060msgid "`%s' failed at %s:%u with error: %s"
2070msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s" 2061msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s"
2071 2062
2072#: src/datastore/plugin_datastore_sqlite.c:269 2063#: src/datastore/plugin_datastore_sqlite.c:271
2073#: src/namecache/plugin_namecache_sqlite.c:207 2064#: src/namecache/plugin_namecache_sqlite.c:173
2074#: src/namestore/plugin_namestore_sqlite.c:203 2065#: src/namestore/plugin_namestore_sqlite.c:206
2075#: src/peerstore/plugin_peerstore_sqlite.c:533 2066#: src/peerstore/plugin_peerstore_sqlite.c:535
2076#: src/psycstore/plugin_psycstore_sqlite.c:323 2067#: src/reclaim/plugin_reclaim_sqlite.c:212
2077#: src/reclaim/plugin_reclaim_sqlite.c:210
2078#, c-format 2068#, c-format
2079msgid "Unable to initialize SQLite: %s.\n" 2069msgid "Unable to initialize SQLite: %s.\n"
2080msgstr "Không thể sơ khởi SQLite: %s.\n" 2070msgstr "Không thể sơ khởi SQLite: %s.\n"
2081 2071
2082#: src/datastore/plugin_datastore_sqlite.c:627 2072#: src/datastore/plugin_datastore_sqlite.c:629
2083msgid "sqlite bind failure" 2073msgid "sqlite bind failure"
2084msgstr "" 2074msgstr ""
2085 2075
2086#: src/datastore/plugin_datastore_sqlite.c:1325 2076#: src/datastore/plugin_datastore_sqlite.c:1327
2087msgid "sqlite version to old to determine size, assuming zero\n" 2077msgid "sqlite version to old to determine size, assuming zero\n"
2088msgstr "" 2078msgstr ""
2089 2079
2090#: src/datastore/plugin_datastore_sqlite.c:1359 2080#: src/datastore/plugin_datastore_sqlite.c:1361
2091#, c-format 2081#, c-format
2092msgid "" 2082msgid ""
2093"Using sqlite page utilization to estimate payload (%llu pages of size %llu " 2083"Using sqlite page utilization to estimate payload (%llu pages of size %llu "
2094"bytes)\n" 2084"bytes)\n"
2095msgstr "" 2085msgstr ""
2096 2086
2097#: src/datastore/plugin_datastore_sqlite.c:1403 2087#: src/datastore/plugin_datastore_sqlite.c:1405
2098#: src/namecache/plugin_namecache_sqlite.c:638 2088#: src/namecache/plugin_namecache_sqlite.c:557
2099#: src/namestore/plugin_namestore_sqlite.c:753 2089#: src/namestore/plugin_namestore_sqlite.c:750
2100#: src/reclaim/plugin_reclaim_sqlite.c:709 2090#: src/reclaim/plugin_reclaim_sqlite.c:711
2101#, fuzzy 2091#, fuzzy
2102msgid "Sqlite database running\n" 2092msgid "Sqlite database running\n"
2103msgstr "kho dữ liệu sqlite" 2093msgstr "kho dữ liệu sqlite"
2104 2094
2105#: src/datastore/plugin_datastore_template.c:251 2095#: src/datastore/plugin_datastore_template.c:253
2106msgid "Template database running\n" 2096msgid "Template database running\n"
2107msgstr "" 2097msgstr ""
2108 2098
2109#: src/dht/gnunet-dht-get.c:156 2099#: src/dht/gnunet-dht-get.c:158
2110#, c-format 2100#, c-format
2111msgid "" 2101msgid ""
2112"Result %d, type %d:\n" 2102"Result %d, type %d:\n"
2113"%.*s\n" 2103"%.*s\n"
2114msgstr "" 2104msgstr ""
2115 2105
2116#: src/dht/gnunet-dht-get.c:157 2106#: src/dht/gnunet-dht-get.c:159
2117#, c-format 2107#, c-format
2118msgid "Result %d, type %d:\n" 2108msgid "Result %d, type %d:\n"
2119msgstr "" 2109msgstr ""
2120 2110
2121#: src/dht/gnunet-dht-get.c:202 2111#: src/dht/gnunet-dht-get.c:204
2122msgid "Must provide key for DHT GET!\n" 2112msgid "Must provide key for DHT GET!\n"
2123msgstr "" 2113msgstr ""
2124 2114
2125#: src/dht/gnunet-dht-get.c:208 src/dht/gnunet-dht-monitor.c:255 2115#: src/dht/gnunet-dht-get.c:210 src/dht/gnunet-dht-monitor.c:257
2126#, fuzzy 2116#, fuzzy
2127msgid "Failed to connect to DHT service!\n" 2117msgid "Failed to connect to DHT service!\n"
2128msgstr "Lỗi kết nối đến gnunetd.\n" 2118msgstr "Lỗi kết nối đến gnunetd.\n"
2129 2119
2130#: src/dht/gnunet-dht-get.c:217 2120#: src/dht/gnunet-dht-get.c:219
2131msgid "Issueing DHT GET with key" 2121msgid "Issuing DHT GET with key"
2132msgstr "" 2122msgstr ""
2133 2123
2134#: src/dht/gnunet-dht-get.c:246 src/dht/gnunet-dht-monitor.c:305 2124#: src/dht/gnunet-dht-get.c:248 src/dht/gnunet-dht-monitor.c:307
2135#: src/dht/gnunet-dht-put.c:196 2125#: src/dht/gnunet-dht-put.c:198
2136msgid "the query key" 2126msgid "the query key"
2137msgstr "" 2127msgstr ""
2138 2128
2139#: src/dht/gnunet-dht-get.c:251 2129#: src/dht/gnunet-dht-get.c:253
2140msgid "how many parallel requests (replicas) to create" 2130msgid "how many parallel requests (replicas) to create"
2141msgstr "" 2131msgstr ""
2142 2132
2143#: src/dht/gnunet-dht-get.c:256 src/dht/gnunet-dht-monitor.c:311 2133#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
2144msgid "the type of data to look for" 2134msgid "the type of data to look for"
2145msgstr "" 2135msgstr ""
2146 2136
2147#: src/dht/gnunet-dht-get.c:261 2137#: src/dht/gnunet-dht-get.c:263
2148msgid "how long to execute this query before giving up?" 2138msgid "how long to execute this query before giving up?"
2149msgstr "" 2139msgstr ""
2150 2140
2151#: src/dht/gnunet-dht-get.c:265 src/dht/gnunet-dht-put.c:200 2141#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
2152msgid "use DHT's demultiplex everywhere option" 2142msgid "use DHT's demultiplex everywhere option"
2153msgstr "" 2143msgstr ""
2154 2144
2155#: src/dht/gnunet-dht-get.c:278 2145#: src/dht/gnunet-dht-get.c:280
2156msgid "Issue a GET request to the GNUnet DHT, prints results." 2146msgid "Issue a GET request to the GNUnet DHT, prints results."
2157msgstr "" 2147msgstr ""
2158 2148
2159#: src/dht/gnunet-dht-monitor.c:317 2149#: src/dht/gnunet-dht-monitor.c:319
2160msgid "how long should the monitor command run" 2150msgid "how long should the monitor command run"
2161msgstr "" 2151msgstr ""
2162 2152
2163#: src/dht/gnunet-dht-monitor.c:322 src/fs/gnunet-download.c:370 2153#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
2164#: src/nse/gnunet-nse-profiler.c:876 2154#: src/nse/gnunet-nse-profiler.c:878
2165msgid "be verbose (print progress information)" 2155msgid "be verbose (print progress information)"
2166msgstr "" 2156msgstr ""
2167 2157
2168#: src/dht/gnunet-dht-monitor.c:335 2158#: src/dht/gnunet-dht-monitor.c:337
2169msgid "Prints all packets that go through the DHT." 2159msgid "Prints all packets that go through the DHT."
2170msgstr "" 2160msgstr ""
2171 2161
2172#: src/dht/gnunet_dht_profiler.c:914 src/testbed/gnunet-testbed-profiler.c:251 2162#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
2173#, fuzzy, c-format 2163#, fuzzy, c-format
2174msgid "Exiting as the number of peers is %u\n" 2164msgid "Exiting as the number of peers is %u\n"
2175msgstr "tăng sổ tối đa các kết nối TCP/IP" 2165msgstr "tăng sổ tối đa các kết nối TCP/IP"
2176 2166
2177#: src/dht/gnunet_dht_profiler.c:947 src/rps/gnunet-rps-profiler.c:2764 2167#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
2178#, fuzzy 2168#, fuzzy
2179msgid "number of peers to start" 2169msgid "number of peers to start"
2180msgstr "số lần lặp lại" 2170msgstr "số lần lặp lại"
2181 2171
2182#: src/dht/gnunet_dht_profiler.c:952 2172#: src/dht/gnunet_dht_profiler.c:954
2183msgid "number of PUTs to perform per peer" 2173msgid "number of PUTs to perform per peer"
2184msgstr "" 2174msgstr ""
2185 2175
2186#: src/dht/gnunet_dht_profiler.c:957 src/nse/gnunet-nse-profiler.c:858 2176#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
2187#: src/testbed/gnunet-testbed-profiler.c:302 2177#: src/testbed/gnunet-testbed-profiler.c:304
2188msgid "name of the file with the login information for the testbed" 2178msgid "name of the file with the login information for the testbed"
2189msgstr "" 2179msgstr ""
2190 2180
2191#: src/dht/gnunet_dht_profiler.c:962 2181#: src/dht/gnunet_dht_profiler.c:964
2192msgid "delay between rounds for collecting statistics (default: 30 sec)" 2182msgid "delay between rounds for collecting statistics (default: 30 sec)"
2193msgstr "" 2183msgstr ""
2194 2184
2195#: src/dht/gnunet_dht_profiler.c:967 2185#: src/dht/gnunet_dht_profiler.c:969
2196msgid "delay to start doing PUTs (default: 1 sec)" 2186msgid "delay to start doing PUTs (default: 1 sec)"
2197msgstr "" 2187msgstr ""
2198 2188
2199#: src/dht/gnunet_dht_profiler.c:972 2189#: src/dht/gnunet_dht_profiler.c:974
2200msgid "delay to start doing GETs (default: 5 min)" 2190msgid "delay to start doing GETs (default: 5 min)"
2201msgstr "" 2191msgstr ""
2202 2192
2203#: src/dht/gnunet_dht_profiler.c:977 2193#: src/dht/gnunet_dht_profiler.c:979
2204msgid "replication degree for DHT PUTs" 2194msgid "replication degree for DHT PUTs"
2205msgstr "" 2195msgstr ""
2206 2196
2207#: src/dht/gnunet_dht_profiler.c:982 2197#: src/dht/gnunet_dht_profiler.c:984
2208msgid "chance that a peer is selected at random for PUTs" 2198msgid "chance that a peer is selected at random for PUTs"
2209msgstr "" 2199msgstr ""
2210 2200
2211#: src/dht/gnunet_dht_profiler.c:987 2201#: src/dht/gnunet_dht_profiler.c:989
2212msgid "timeout for DHT PUT and GET requests (default: 1 min)" 2202msgid "timeout for DHT PUT and GET requests (default: 1 min)"
2213msgstr "" 2203msgstr ""
2214 2204
2215#: src/dht/gnunet_dht_profiler.c:1007 2205#: src/dht/gnunet_dht_profiler.c:1009
2216#, fuzzy 2206#, fuzzy
2217msgid "Measure quality and performance of the DHT service." 2207msgid "Measure quality and performance of the DHT service."
2218msgstr "Không thể truy cập đến dịch vụ" 2208msgstr "Không thể truy cập đến dịch vụ"
2219 2209
2220#: src/dht/gnunet-dht-put.c:132 2210#: src/dht/gnunet-dht-put.c:134
2221msgid "Must provide KEY and DATA for DHT put!\n" 2211msgid "Must provide KEY and DATA for DHT put!\n"
2222msgstr "" 2212msgstr ""
2223 2213
2224#: src/dht/gnunet-dht-put.c:140 2214#: src/dht/gnunet-dht-put.c:142
2225#, fuzzy 2215#, fuzzy
2226msgid "Could not connect to DHT service!\n" 2216msgid "Could not connect to DHT service!\n"
2227msgstr "Không thể kết nối tới %s:%u: %s\n" 2217msgstr "Không thể kết nối tới %s:%u: %s\n"
2228 2218
2229#: src/dht/gnunet-dht-put.c:151 2219#: src/dht/gnunet-dht-put.c:153
2230#, c-format 2220#, c-format
2231msgid "Issuing put request for `%s' with data `%s'!\n" 2221msgid "Issuing put request for `%s' with data `%s'!\n"
2232msgstr "" 2222msgstr ""
2233 2223
2234#: src/dht/gnunet-dht-put.c:186 2224#: src/dht/gnunet-dht-put.c:188
2235msgid "the data to insert under the key" 2225msgid "the data to insert under the key"
2236msgstr "" 2226msgstr ""
2237 2227
2238#: src/dht/gnunet-dht-put.c:191 2228#: src/dht/gnunet-dht-put.c:193
2239msgid "how long to store this entry in the dht (in seconds)" 2229msgid "how long to store this entry in the dht (in seconds)"
2240msgstr "" 2230msgstr ""
2241 2231
2242#: src/dht/gnunet-dht-put.c:205 2232#: src/dht/gnunet-dht-put.c:207
2243msgid "how many replicas to create" 2233msgid "how many replicas to create"
2244msgstr "" 2234msgstr ""
2245 2235
2246#: src/dht/gnunet-dht-put.c:209 2236#: src/dht/gnunet-dht-put.c:211
2247msgid "use DHT's record route option" 2237msgid "use DHT's record route option"
2248msgstr "" 2238msgstr ""
2249 2239
2250#: src/dht/gnunet-dht-put.c:214 2240#: src/dht/gnunet-dht-put.c:216
2251msgid "the type to insert data as" 2241msgid "the type to insert data as"
2252msgstr "" 2242msgstr ""
2253 2243
2254#: src/dht/gnunet-dht-put.c:231 2244#: src/dht/gnunet-dht-put.c:233
2255msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY." 2245msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY."
2256msgstr "" 2246msgstr ""
2257 2247
2258#: src/dht/gnunet-service-dht_clients.c:367 2248#: src/dht/gnunet-service-dht_clients.c:369
2259#, fuzzy 2249#, fuzzy
2260msgid "# GET requests from clients injected" 2250msgid "# GET requests from clients injected"
2261msgstr "# các yêu cầu get (lấy) dht được nhận" 2251msgstr "# các yêu cầu get (lấy) dht được nhận"
2262 2252
2263#: src/dht/gnunet-service-dht_clients.c:481 2253#: src/dht/gnunet-service-dht_clients.c:483
2264#, fuzzy 2254#, fuzzy
2265msgid "# PUT requests received from clients" 2255msgid "# PUT requests received from clients"
2266msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" 2256msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
2267 2257
2268#: src/dht/gnunet-service-dht_clients.c:614 2258#: src/dht/gnunet-service-dht_clients.c:616
2269#, fuzzy 2259#, fuzzy
2270msgid "# GET requests received from clients" 2260msgid "# GET requests received from clients"
2271msgstr "# các yêu cầu get (lấy) dht được nhận" 2261msgstr "# các yêu cầu get (lấy) dht được nhận"
2272 2262
2273#: src/dht/gnunet-service-dht_clients.c:840 2263#: src/dht/gnunet-service-dht_clients.c:842
2274#, fuzzy 2264#, fuzzy
2275msgid "# GET STOP requests received from clients" 2265msgid "# GET STOP requests received from clients"
2276msgstr "# các yêu cầu get (lấy) dht được nhận" 2266msgstr "# các yêu cầu get (lấy) dht được nhận"
2277 2267
2278#: src/dht/gnunet-service-dht_clients.c:1025 2268#: src/dht/gnunet-service-dht_clients.c:1027
2279msgid "# Key match, type mismatches in REPLY to CLIENT" 2269msgid "# Key match, type mismatches in REPLY to CLIENT"
2280msgstr "" 2270msgstr ""
2281 2271
2282#: src/dht/gnunet-service-dht_clients.c:1040 2272#: src/dht/gnunet-service-dht_clients.c:1042
2283msgid "# Duplicate REPLIES to CLIENT request dropped" 2273msgid "# Duplicate REPLIES to CLIENT request dropped"
2284msgstr "" 2274msgstr ""
2285 2275
2286#: src/dht/gnunet-service-dht_clients.c:1086 2276#: src/dht/gnunet-service-dht_clients.c:1088
2287#, c-format 2277#, c-format
2288msgid "Unsupported block type (%u) in request!\n" 2278msgid "Unsupported block type (%u) in request!\n"
2289msgstr "" 2279msgstr ""
2290 2280
2291#: src/dht/gnunet-service-dht_clients.c:1093 2281#: src/dht/gnunet-service-dht_clients.c:1095
2292msgid "# RESULTS queued for clients" 2282msgid "# RESULTS queued for clients"
2293msgstr "" 2283msgstr ""
2294 2284
2295#: src/dht/gnunet-service-dht_clients.c:1171 2285#: src/dht/gnunet-service-dht_clients.c:1173
2296msgid "# REPLIES ignored for CLIENTS (no match)" 2286msgid "# REPLIES ignored for CLIENTS (no match)"
2297msgstr "" 2287msgstr ""
2298 2288
2299#: src/dht/gnunet-service-dht_datacache.c:71 2289#: src/dht/gnunet-service-dht_datacache.c:73
2300#, fuzzy, c-format 2290#, fuzzy, c-format
2301msgid "%s request received, but have no datacache!\n" 2291msgid "%s request received, but have no datacache!\n"
2302msgstr "# các byte kiểu %d được nhận" 2292msgstr "# các byte kiểu %d được nhận"
2303 2293
2304#: src/dht/gnunet-service-dht_datacache.c:81 2294#: src/dht/gnunet-service-dht_datacache.c:83
2305msgid "# ITEMS stored in datacache" 2295msgid "# ITEMS stored in datacache"
2306msgstr "" 2296msgstr ""
2307 2297
2308#: src/dht/gnunet-service-dht_datacache.c:205 2298#: src/dht/gnunet-service-dht_datacache.c:207
2309msgid "# Good RESULTS found in datacache" 2299msgid "# Good RESULTS found in datacache"
2310msgstr "" 2300msgstr ""
2311 2301
2312#: src/dht/gnunet-service-dht_datacache.c:217 2302#: src/dht/gnunet-service-dht_datacache.c:219
2313msgid "# Duplicate RESULTS found in datacache" 2303msgid "# Duplicate RESULTS found in datacache"
2314msgstr "" 2304msgstr ""
2315 2305
2316#: src/dht/gnunet-service-dht_datacache.c:223 2306#: src/dht/gnunet-service-dht_datacache.c:225
2317msgid "# Invalid RESULTS found in datacache" 2307msgid "# Invalid RESULTS found in datacache"
2318msgstr "" 2308msgstr ""
2319 2309
2320#: src/dht/gnunet-service-dht_datacache.c:229 2310#: src/dht/gnunet-service-dht_datacache.c:231
2321msgid "# Irrelevant RESULTS found in datacache" 2311msgid "# Irrelevant RESULTS found in datacache"
2322msgstr "" 2312msgstr ""
2323 2313
2324#: src/dht/gnunet-service-dht_datacache.c:241 2314#: src/dht/gnunet-service-dht_datacache.c:243
2325msgid "# Unsupported RESULTS found in datacache" 2315msgid "# Unsupported RESULTS found in datacache"
2326msgstr "" 2316msgstr ""
2327 2317
2328#: src/dht/gnunet-service-dht_datacache.c:245 2318#: src/dht/gnunet-service-dht_datacache.c:247
2329#, c-format 2319#, c-format
2330msgid "Unsupported block type (%u) in local response!\n" 2320msgid "Unsupported block type (%u) in local response!\n"
2331msgstr "" 2321msgstr ""
2332 2322
2333#: src/dht/gnunet-service-dht_datacache.c:280 2323#: src/dht/gnunet-service-dht_datacache.c:282
2334#, fuzzy 2324#, fuzzy
2335msgid "# GET requests given to datacache" 2325msgid "# GET requests given to datacache"
2336msgstr "# các yêu cầu get (lấy) dht được nhận" 2326msgstr "# các yêu cầu get (lấy) dht được nhận"
2337 2327
2338#: src/dht/gnunet-service-dht_hello.c:84 2328#: src/dht/gnunet-service-dht_hello.c:86
2339#, fuzzy 2329#, fuzzy
2340msgid "# HELLOs obtained from peerinfo" 2330msgid "# HELLOs obtained from peerinfo"
2341msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n" 2331msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n"
2342 2332
2343#: src/dht/gnunet-service-dht_neighbours.c:677 2333#: src/dht/gnunet-service-dht_neighbours.c:679
2344#, fuzzy 2334#, fuzzy
2345msgid "# FIND PEER messages initiated" 2335msgid "# FIND PEER messages initiated"
2346msgstr "# các thông báo PING được tạo" 2336msgstr "# các thông báo PING được tạo"
2347 2337
2348#: src/dht/gnunet-service-dht_neighbours.c:850 2338#: src/dht/gnunet-service-dht_neighbours.c:852
2349#, fuzzy 2339#, fuzzy
2350msgid "# requests TTL-dropped" 2340msgid "# requests TTL-dropped"
2351msgstr "# các yêu cầu get (lấy) dht được nhận" 2341msgstr "# các yêu cầu get (lấy) dht được nhận"
2352 2342
2353#: src/dht/gnunet-service-dht_neighbours.c:1053 2343#: src/dht/gnunet-service-dht_neighbours.c:1055
2354#: src/dht/gnunet-service-dht_neighbours.c:1096 2344#: src/dht/gnunet-service-dht_neighbours.c:1098
2355msgid "# Peers excluded from routing due to Bloomfilter" 2345msgid "# Peers excluded from routing due to Bloomfilter"
2356msgstr "" 2346msgstr ""
2357 2347
2358#: src/dht/gnunet-service-dht_neighbours.c:1070 2348#: src/dht/gnunet-service-dht_neighbours.c:1072
2359#: src/dht/gnunet-service-dht_neighbours.c:1112 2349#: src/dht/gnunet-service-dht_neighbours.c:1114
2360#, fuzzy 2350#, fuzzy
2361msgid "# Peer selection failed" 2351msgid "# Peer selection failed"
2362msgstr "# các cuộc gọi HTTP select (lựa chọn)" 2352msgstr "# các cuộc gọi HTTP select (lựa chọn)"
2363 2353
2364#: src/dht/gnunet-service-dht_neighbours.c:1269 2354#: src/dht/gnunet-service-dht_neighbours.c:1271
2365#, fuzzy 2355#, fuzzy
2366msgid "# PUT requests routed" 2356msgid "# PUT requests routed"
2367msgstr "# các yêu cầu dht được định tuyến" 2357msgstr "# các yêu cầu dht được định tuyến"
2368 2358
2369#: src/dht/gnunet-service-dht_neighbours.c:1302 2359#: src/dht/gnunet-service-dht_neighbours.c:1304
2370#, fuzzy 2360#, fuzzy
2371msgid "# PUT messages queued for transmission" 2361msgid "# PUT messages queued for transmission"
2372msgstr "# các thông báo PING được tạo" 2362msgstr "# các thông báo PING được tạo"
2373 2363
2374#: src/dht/gnunet-service-dht_neighbours.c:1313 2364#: src/dht/gnunet-service-dht_neighbours.c:1315
2375#: src/dht/gnunet-service-dht_neighbours.c:1453 2365#: src/dht/gnunet-service-dht_neighbours.c:1455
2376#: src/dht/gnunet-service-dht_neighbours.c:1556 2366#: src/dht/gnunet-service-dht_neighbours.c:1558
2377#, fuzzy 2367#, fuzzy
2378msgid "# P2P messages dropped due to full queue" 2368msgid "# P2P messages dropped due to full queue"
2379msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 2369msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
2380 2370
2381#: src/dht/gnunet-service-dht_neighbours.c:1398 2371#: src/dht/gnunet-service-dht_neighbours.c:1400
2382#, fuzzy 2372#, fuzzy
2383msgid "# GET requests routed" 2373msgid "# GET requests routed"
2384msgstr "# các yêu cầu dht được định tuyến" 2374msgstr "# các yêu cầu dht được định tuyến"
2385 2375
2386#: src/dht/gnunet-service-dht_neighbours.c:1441 2376#: src/dht/gnunet-service-dht_neighbours.c:1443
2387#, fuzzy 2377#, fuzzy
2388msgid "# GET messages queued for transmission" 2378msgid "# GET messages queued for transmission"
2389msgstr "# các thông báo PING được tạo" 2379msgstr "# các thông báo PING được tạo"
2390 2380
2391#: src/dht/gnunet-service-dht_neighbours.c:1571 2381#: src/dht/gnunet-service-dht_neighbours.c:1573
2392#, fuzzy 2382#, fuzzy
2393msgid "# RESULT messages queued for transmission" 2383msgid "# RESULT messages queued for transmission"
2394msgstr "# các thông báo PING được tạo" 2384msgstr "# các thông báo PING được tạo"
2395 2385
2396#: src/dht/gnunet-service-dht_neighbours.c:1674 2386#: src/dht/gnunet-service-dht_neighbours.c:1676
2397msgid "# Expired PUTs discarded" 2387msgid "# Expired PUTs discarded"
2398msgstr "" 2388msgstr ""
2399 2389
2400#: src/dht/gnunet-service-dht_neighbours.c:1682 2390#: src/dht/gnunet-service-dht_neighbours.c:1684
2401#, fuzzy 2391#, fuzzy
2402msgid "# P2P PUT requests received" 2392msgid "# P2P PUT requests received"
2403msgstr "# các yêu cầu get (lấy) dht được nhận" 2393msgstr "# các yêu cầu get (lấy) dht được nhận"
2404 2394
2405#: src/dht/gnunet-service-dht_neighbours.c:1686 2395#: src/dht/gnunet-service-dht_neighbours.c:1688
2406#, fuzzy 2396#, fuzzy
2407msgid "# P2P PUT bytes received" 2397msgid "# P2P PUT bytes received"
2408msgstr "# các yêu cầu get (lấy) dht được nhận" 2398msgstr "# các yêu cầu get (lấy) dht được nhận"
2409 2399
2410#: src/dht/gnunet-service-dht_neighbours.c:1912 2400#: src/dht/gnunet-service-dht_neighbours.c:1914
2411#, fuzzy 2401#, fuzzy
2412msgid "# FIND PEER requests ignored due to Bloomfilter" 2402msgid "# FIND PEER requests ignored due to Bloomfilter"
2413msgstr "# các yêu cầu được lọc theo bộ lọc bloom" 2403msgstr "# các yêu cầu được lọc theo bộ lọc bloom"
2414 2404
2415#: src/dht/gnunet-service-dht_neighbours.c:1920 2405#: src/dht/gnunet-service-dht_neighbours.c:1922
2416msgid "# FIND PEER requests ignored due to lack of HELLO" 2406msgid "# FIND PEER requests ignored due to lack of HELLO"
2417msgstr "" 2407msgstr ""
2418 2408
2419#: src/dht/gnunet-service-dht_neighbours.c:2082 2409#: src/dht/gnunet-service-dht_neighbours.c:2084
2420#, fuzzy 2410#, fuzzy
2421msgid "# P2P GET requests received" 2411msgid "# P2P GET requests received"
2422msgstr "# các yêu cầu get (lấy) dht được nhận" 2412msgstr "# các yêu cầu get (lấy) dht được nhận"
2423 2413
2424#: src/dht/gnunet-service-dht_neighbours.c:2086 2414#: src/dht/gnunet-service-dht_neighbours.c:2088
2425#, fuzzy 2415#, fuzzy
2426msgid "# P2P GET bytes received" 2416msgid "# P2P GET bytes received"
2427msgstr "# các yêu cầu get (lấy) dht được nhận" 2417msgstr "# các yêu cầu get (lấy) dht được nhận"
2428 2418
2429#: src/dht/gnunet-service-dht_neighbours.c:2151 2419#: src/dht/gnunet-service-dht_neighbours.c:2153
2430#, fuzzy 2420#, fuzzy
2431msgid "# P2P FIND PEER requests processed" 2421msgid "# P2P FIND PEER requests processed"
2432msgstr "# các yêu cầu get (lấy) dht được nhận" 2422msgstr "# các yêu cầu get (lấy) dht được nhận"
2433 2423
2434#: src/dht/gnunet-service-dht_neighbours.c:2172 2424#: src/dht/gnunet-service-dht_neighbours.c:2174
2435#, fuzzy 2425#, fuzzy
2436msgid "# P2P GET requests ONLY routed" 2426msgid "# P2P GET requests ONLY routed"
2437msgstr "# các yêu cầu dht được định tuyến" 2427msgstr "# các yêu cầu dht được định tuyến"
2438 2428
2439#: src/dht/gnunet-service-dht_neighbours.c:2349 2429#: src/dht/gnunet-service-dht_neighbours.c:2351
2440msgid "# Expired results discarded" 2430msgid "# Expired results discarded"
2441msgstr "" 2431msgstr ""
2442 2432
2443#: src/dht/gnunet-service-dht_neighbours.c:2365 2433#: src/dht/gnunet-service-dht_neighbours.c:2367
2444#, fuzzy 2434#, fuzzy
2445msgid "# P2P RESULTS received" 2435msgid "# P2P RESULTS received"
2446msgstr "# Tín hiệu HTTP PUT được nhận" 2436msgstr "# Tín hiệu HTTP PUT được nhận"
2447 2437
2448#: src/dht/gnunet-service-dht_neighbours.c:2369 2438#: src/dht/gnunet-service-dht_neighbours.c:2371
2449#, fuzzy 2439#, fuzzy
2450msgid "# P2P RESULT bytes received" 2440msgid "# P2P RESULT bytes received"
2451msgstr "# Tín hiệu HTTP PUT được nhận" 2441msgstr "# Tín hiệu HTTP PUT được nhận"
2452 2442
2453#: src/dht/gnunet-service-dht_nse.c:57 2443#: src/dht/gnunet-service-dht_nse.c:59
2454#, fuzzy 2444#, fuzzy
2455msgid "# Network size estimates received" 2445msgid "# Network size estimates received"
2456msgstr "# các yêu cầu get (lấy) dht được nhận" 2446msgstr "# các yêu cầu get (lấy) dht được nhận"
2457 2447
2458#: src/dht/gnunet-service-dht_routing.c:221 2448#: src/dht/gnunet-service-dht_routing.c:223
2459msgid "# Good REPLIES matched against routing table" 2449msgid "# Good REPLIES matched against routing table"
2460msgstr "" 2450msgstr ""
2461 2451
2462#: src/dht/gnunet-service-dht_routing.c:235 2452#: src/dht/gnunet-service-dht_routing.c:237
2463msgid "# Duplicate REPLIES matched against routing table" 2453msgid "# Duplicate REPLIES matched against routing table"
2464msgstr "" 2454msgstr ""
2465 2455
2466#: src/dht/gnunet-service-dht_routing.c:241 2456#: src/dht/gnunet-service-dht_routing.c:243
2467msgid "# Invalid REPLIES matched against routing table" 2457msgid "# Invalid REPLIES matched against routing table"
2468msgstr "" 2458msgstr ""
2469 2459
2470#: src/dht/gnunet-service-dht_routing.c:247 2460#: src/dht/gnunet-service-dht_routing.c:249
2471msgid "# Irrelevant REPLIES matched against routing table" 2461msgid "# Irrelevant REPLIES matched against routing table"
2472msgstr "" 2462msgstr ""
2473 2463
2474#: src/dht/gnunet-service-dht_routing.c:259 2464#: src/dht/gnunet-service-dht_routing.c:261
2475msgid "# Unsupported REPLIES matched against routing table" 2465msgid "# Unsupported REPLIES matched against routing table"
2476msgstr "" 2466msgstr ""
2477 2467
2478#: src/dht/gnunet-service-dht_routing.c:337 2468#: src/dht/gnunet-service-dht_routing.c:339
2479msgid "# Entries removed from routing table" 2469msgid "# Entries removed from routing table"
2480msgstr "" 2470msgstr ""
2481 2471
2482#: src/dht/gnunet-service-dht_routing.c:413 2472#: src/dht/gnunet-service-dht_routing.c:415
2483msgid "# Entries added to routing table" 2473msgid "# Entries added to routing table"
2484msgstr "" 2474msgstr ""
2485 2475
2486#: src/dht/gnunet-service-dht_routing.c:435 2476#: src/dht/gnunet-service-dht_routing.c:437
2487#, fuzzy 2477#, fuzzy
2488msgid "# DHT requests combined" 2478msgid "# DHT requests combined"
2489msgstr "# các yêu cầu get (lấy) dht được nhận" 2479msgstr "# các yêu cầu get (lấy) dht được nhận"
2490 2480
2491#: src/dht/plugin_block_dht.c:187 2481#: src/dht/plugin_block_dht.c:189
2492#, fuzzy, c-format 2482#, fuzzy, c-format
2493msgid "Block not of type %u\n" 2483msgid "Block not of type %u\n"
2494msgstr "Không biết truyền tải nào kiểu %d.\n" 2484msgstr "Không biết truyền tải nào kiểu %d.\n"
2495 2485
2496#: src/dht/plugin_block_dht.c:196 2486#: src/dht/plugin_block_dht.c:198
2497msgid "Size mismatch for block\n" 2487msgid "Size mismatch for block\n"
2498msgstr "" 2488msgstr ""
2499 2489
2500#: src/dht/plugin_block_dht.c:207 2490#: src/dht/plugin_block_dht.c:209
2501#, c-format 2491#, c-format
2502msgid "Block of type %u is malformed\n" 2492msgid "Block of type %u is malformed\n"
2503msgstr "" 2493msgstr ""
2504 2494
2505#: src/dns/gnunet-dns-monitor.c:351 src/dns/gnunet-dns-monitor.c:356 2495#: src/dns/gnunet-dns-monitor.c:353 src/dns/gnunet-dns-monitor.c:358
2506msgid "only monitor DNS queries" 2496msgid "only monitor DNS queries"
2507msgstr "" 2497msgstr ""
2508 2498
2509#: src/dns/gnunet-dns-monitor.c:368 2499#: src/dns/gnunet-dns-monitor.c:370
2510msgid "Monitor DNS queries." 2500msgid "Monitor DNS queries."
2511msgstr "" 2501msgstr ""
2512 2502
2513#: src/dns/gnunet-dns-redirector.c:235 2503#: src/dns/gnunet-dns-redirector.c:237
2514msgid "set A records" 2504msgid "set A records"
2515msgstr "" 2505msgstr ""
2516 2506
2517#: src/dns/gnunet-dns-redirector.c:241 2507#: src/dns/gnunet-dns-redirector.c:243
2518msgid "set AAAA records" 2508msgid "set AAAA records"
2519msgstr "" 2509msgstr ""
2520 2510
2521#: src/dns/gnunet-dns-redirector.c:254 2511#: src/dns/gnunet-dns-redirector.c:256
2522msgid "Change DNS replies to point elsewhere." 2512msgid "Change DNS replies to point elsewhere."
2523msgstr "" 2513msgstr ""
2524 2514
2525#: src/dns/gnunet-service-dns.c:460 2515#: src/dns/gnunet-service-dns.c:462
2526msgid "# DNS requests answered via TUN interface" 2516msgid "# DNS requests answered via TUN interface"
2527msgstr "" 2517msgstr ""
2528 2518
2529#: src/dns/gnunet-service-dns.c:608 2519#: src/dns/gnunet-service-dns.c:610
2530msgid "# DNS exit failed (failed to open socket)" 2520msgid "# DNS exit failed (failed to open socket)"
2531msgstr "" 2521msgstr ""
2532 2522
2533#: src/dns/gnunet-service-dns.c:738 2523#: src/dns/gnunet-service-dns.c:740
2534msgid "# External DNS response discarded (no matching request)" 2524msgid "# External DNS response discarded (no matching request)"
2535msgstr "" 2525msgstr ""
2536 2526
2537#: src/dns/gnunet-service-dns.c:813 2527#: src/dns/gnunet-service-dns.c:815
2538msgid "# Client response discarded (no matching request)" 2528msgid "# Client response discarded (no matching request)"
2539msgstr "" 2529msgstr ""
2540 2530
2541#: src/dns/gnunet-service-dns.c:928 2531#: src/dns/gnunet-service-dns.c:930
2542msgid "Received malformed IPv4-UDP packet on TUN interface.\n" 2532msgid "Received malformed IPv4-UDP packet on TUN interface.\n"
2543msgstr "" 2533msgstr ""
2544 2534
2545#: src/dns/gnunet-service-dns.c:944 2535#: src/dns/gnunet-service-dns.c:946
2546msgid "Received malformed IPv6-UDP packet on TUN interface.\n" 2536msgid "Received malformed IPv6-UDP packet on TUN interface.\n"
2547msgstr "" 2537msgstr ""
2548 2538
2549#: src/dns/gnunet-service-dns.c:953 2539#: src/dns/gnunet-service-dns.c:955
2550#, c-format 2540#, c-format
2551msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n" 2541msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n"
2552msgstr "" 2542msgstr ""
2553 2543
2554#: src/dns/gnunet-service-dns.c:963 2544#: src/dns/gnunet-service-dns.c:965
2555msgid "DNS interceptor got non-DNS packet (dropped)\n" 2545msgid "DNS interceptor got non-DNS packet (dropped)\n"
2556msgstr "" 2546msgstr ""
2557 2547
2558#: src/dns/gnunet-service-dns.c:965 2548#: src/dns/gnunet-service-dns.c:967
2559msgid "# Non-DNS UDP packet received via TUN interface" 2549msgid "# Non-DNS UDP packet received via TUN interface"
2560msgstr "" 2550msgstr ""
2561 2551
2562#: src/dns/gnunet-service-dns.c:1032 2552#: src/dns/gnunet-service-dns.c:1034
2563#, fuzzy 2553#, fuzzy
2564msgid "# DNS requests received via TUN interface" 2554msgid "# DNS requests received via TUN interface"
2565msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" 2555msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
2566 2556
2567#: src/dns/gnunet-service-dns.c:1080 src/exit/gnunet-daemon-exit.c:3563 2557#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
2568#, fuzzy 2558#, fuzzy
2569msgid "need a valid IPv4 or IPv6 address\n" 2559msgid "need a valid IPv4 or IPv6 address\n"
2570msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n" 2560msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
2571 2561
2572#: src/dns/gnunet-service-dns.c:1090 2562#: src/dns/gnunet-service-dns.c:1092
2573#, c-format 2563#, c-format
2574msgid "`%s' must be installed SUID, will not run DNS interceptor\n" 2564msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
2575msgstr "" 2565msgstr ""
2576 2566
2577#: src/dv/gnunet-dv.c:173 2567#: src/dv/gnunet-dv.c:175
2578#, fuzzy 2568#, fuzzy
2579msgid "Print information about DV state" 2569msgid "Print information about DV state"
2580msgstr "In ra thông tin về các đồng đẳng GNUnet." 2570msgstr "In ra thông tin về các đồng đẳng GNUnet."
2581 2571
2582#: src/exit/gnunet-daemon-exit.c:958 2572#: src/exit/gnunet-daemon-exit.c:960
2583#, fuzzy 2573#, fuzzy
2584msgid "# TCP packets sent via TUN" 2574msgid "# TCP packets sent via TUN"
2585msgstr "# các byte đã gửi qua UDP" 2575msgstr "# các byte đã gửi qua UDP"
2586 2576
2587#: src/exit/gnunet-daemon-exit.c:1059 2577#: src/exit/gnunet-daemon-exit.c:1061
2588#, fuzzy 2578#, fuzzy
2589msgid "# ICMP packets sent via TUN" 2579msgid "# ICMP packets sent via TUN"
2590msgstr "# các byte đã gửi qua UDP" 2580msgstr "# các byte đã gửi qua UDP"
2591 2581
2592#: src/exit/gnunet-daemon-exit.c:1338 2582#: src/exit/gnunet-daemon-exit.c:1340
2593#, fuzzy 2583#, fuzzy
2594msgid "# UDP packets sent via TUN" 2584msgid "# UDP packets sent via TUN"
2595msgstr "# các byte đã gửi qua UDP" 2585msgstr "# các byte đã gửi qua UDP"
2596 2586
2597#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570 2587#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
2598#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699 2588#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
2599#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951 2589#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
2600#: src/exit/gnunet-daemon-exit.c:2205 2590#: src/exit/gnunet-daemon-exit.c:2207
2601#, fuzzy 2591#, fuzzy
2602msgid "# Bytes received from CADET" 2592msgid "# Bytes received from CADET"
2603msgstr "# các byte đã nhận qua HTTP" 2593msgstr "# các byte đã nhận qua HTTP"
2604 2594
2605#: src/exit/gnunet-daemon-exit.c:1465 2595#: src/exit/gnunet-daemon-exit.c:1467
2606#, fuzzy 2596#, fuzzy
2607msgid "# UDP IP-exit requests received via cadet" 2597msgid "# UDP IP-exit requests received via cadet"
2608msgstr "# các yêu cầu get (lấy) dht được nhận" 2598msgstr "# các yêu cầu get (lấy) dht được nhận"
2609 2599
2610#: src/exit/gnunet-daemon-exit.c:1573 2600#: src/exit/gnunet-daemon-exit.c:1575
2611#, fuzzy 2601#, fuzzy
2612msgid "# UDP service requests received via cadet" 2602msgid "# UDP service requests received via cadet"
2613msgstr "# các yêu cầu get (lấy) dht được nhận" 2603msgstr "# các yêu cầu get (lấy) dht được nhận"
2614 2604
2615#: src/exit/gnunet-daemon-exit.c:1613 2605#: src/exit/gnunet-daemon-exit.c:1615
2616#, fuzzy 2606#, fuzzy
2617msgid "# TCP service creation requests received via cadet" 2607msgid "# TCP service creation requests received via cadet"
2618msgstr "# các yêu cầu danh sách máy được nhận" 2608msgstr "# các yêu cầu danh sách máy được nhận"
2619 2609
2620#: src/exit/gnunet-daemon-exit.c:1702 2610#: src/exit/gnunet-daemon-exit.c:1704
2621#, fuzzy 2611#, fuzzy
2622msgid "# TCP IP-exit creation requests received via cadet" 2612msgid "# TCP IP-exit creation requests received via cadet"
2623msgstr "# các yêu cầu danh sách máy được nhận" 2613msgstr "# các yêu cầu danh sách máy được nhận"
2624 2614
2625#: src/exit/gnunet-daemon-exit.c:1786 2615#: src/exit/gnunet-daemon-exit.c:1788
2626#, fuzzy 2616#, fuzzy
2627msgid "# TCP DATA requests dropped (no session)" 2617msgid "# TCP DATA requests dropped (no session)"
2628msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 2618msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
2629 2619
2630#: src/exit/gnunet-daemon-exit.c:1823 2620#: src/exit/gnunet-daemon-exit.c:1825
2631#, fuzzy 2621#, fuzzy
2632msgid "# TCP data requests received via cadet" 2622msgid "# TCP data requests received via cadet"
2633msgstr "# các yêu cầu get (lấy) dht được nhận" 2623msgstr "# các yêu cầu get (lấy) dht được nhận"
2634 2624
2635#: src/exit/gnunet-daemon-exit.c:1954 2625#: src/exit/gnunet-daemon-exit.c:1956
2636#, fuzzy 2626#, fuzzy
2637msgid "# ICMP IP-exit requests received via cadet" 2627msgid "# ICMP IP-exit requests received via cadet"
2638msgstr "# các yêu cầu get (lấy) dht được nhận" 2628msgstr "# các yêu cầu get (lấy) dht được nhận"
2639 2629
2640#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277 2630#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
2641#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:826 2631#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
2642#: src/vpn/gnunet-service-vpn.c:989 src/vpn/gnunet-service-vpn.c:2103 2632#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
2643msgid "# ICMPv4 packets dropped (type not allowed)" 2633msgid "# ICMPv4 packets dropped (type not allowed)"
2644msgstr "" 2634msgstr ""
2645 2635
2646#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336 2636#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
2647#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885 2637#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
2648#: src/vpn/gnunet-service-vpn.c:1022 src/vpn/gnunet-service-vpn.c:2156 2638#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
2649msgid "# ICMPv6 packets dropped (type not allowed)" 2639msgid "# ICMPv6 packets dropped (type not allowed)"
2650msgstr "" 2640msgstr ""
2651 2641
2652#: src/exit/gnunet-daemon-exit.c:2208 2642#: src/exit/gnunet-daemon-exit.c:2210
2653#, fuzzy 2643#, fuzzy
2654msgid "# ICMP service requests received via cadet" 2644msgid "# ICMP service requests received via cadet"
2655msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" 2645msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
2656 2646
2657#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:983 2647#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
2658#: src/vpn/gnunet-service-vpn.c:2094 2648#: src/vpn/gnunet-service-vpn.c:2096
2659msgid "# ICMPv4 packets dropped (impossible PT to v6)" 2649msgid "# ICMPv4 packets dropped (impossible PT to v6)"
2660msgstr "" 2650msgstr ""
2661 2651
2662#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:873 2652#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
2663#: src/vpn/gnunet-service-vpn.c:2128 src/vpn/gnunet-service-vpn.c:2139 2653#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
2664msgid "# ICMPv6 packets dropped (impossible PT to v4)" 2654msgid "# ICMPv6 packets dropped (impossible PT to v4)"
2665msgstr "" 2655msgstr ""
2666 2656
2667#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066 2657#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
2668#, fuzzy 2658#, fuzzy
2669msgid "# Inbound CADET channels created" 2659msgid "# Inbound CADET channels created"
2670msgstr "# các truy vấn lỗ hổng được định tuyến" 2660msgstr "# các truy vấn lỗ hổng được định tuyến"
2671 2661
2672#: src/exit/gnunet-daemon-exit.c:2520 2662#: src/exit/gnunet-daemon-exit.c:2522
2673#, c-format 2663#, c-format
2674msgid "Got duplicate service records for `%s:%u'\n" 2664msgid "Got duplicate service records for `%s:%u'\n"
2675msgstr "" 2665msgstr ""
2676 2666
2677#: src/exit/gnunet-daemon-exit.c:2539 2667#: src/exit/gnunet-daemon-exit.c:2541
2678#, fuzzy 2668#, fuzzy
2679msgid "# Messages transmitted via cadet channels" 2669msgid "# Messages transmitted via cadet channels"
2680msgstr "# các byte được gửi" 2670msgstr "# các byte được gửi"
2681 2671
2682#: src/exit/gnunet-daemon-exit.c:2717 2672#: src/exit/gnunet-daemon-exit.c:2719
2683msgid "# ICMP packets dropped (not allowed)" 2673msgid "# ICMP packets dropped (not allowed)"
2684msgstr "" 2674msgstr ""
2685 2675
2686#: src/exit/gnunet-daemon-exit.c:2725 2676#: src/exit/gnunet-daemon-exit.c:2727
2687msgid "ICMP Packet dropped, have no matching connection information\n" 2677msgid "ICMP Packet dropped, have no matching connection information\n"
2688msgstr "" 2678msgstr ""
2689 2679
2690#: src/exit/gnunet-daemon-exit.c:2799 2680#: src/exit/gnunet-daemon-exit.c:2801
2691msgid "UDP Packet dropped, have no matching connection information\n" 2681msgid "UDP Packet dropped, have no matching connection information\n"
2692msgstr "" 2682msgstr ""
2693 2683
2694#: src/exit/gnunet-daemon-exit.c:2871 2684#: src/exit/gnunet-daemon-exit.c:2873
2695msgid "TCP Packet dropped, have no matching connection information\n" 2685msgid "TCP Packet dropped, have no matching connection information\n"
2696msgstr "" 2686msgstr ""
2697 2687
2698#: src/exit/gnunet-daemon-exit.c:2919 2688#: src/exit/gnunet-daemon-exit.c:2921
2699#, fuzzy 2689#, fuzzy
2700msgid "# Packets received from TUN" 2690msgid "# Packets received from TUN"
2701msgstr "# các byte đã nhận qua HTTP" 2691msgstr "# các byte đã nhận qua HTTP"
2702 2692
2703#: src/exit/gnunet-daemon-exit.c:2933 2693#: src/exit/gnunet-daemon-exit.c:2935
2704#, fuzzy 2694#, fuzzy
2705msgid "# Bytes received from TUN" 2695msgid "# Bytes received from TUN"
2706msgstr "# các byte đã nhận qua HTTP" 2696msgstr "# các byte đã nhận qua HTTP"
2707 2697
2708#: src/exit/gnunet-daemon-exit.c:2959 2698#: src/exit/gnunet-daemon-exit.c:2961
2709msgid "IPv4 packet options received. Ignored.\n" 2699msgid "IPv4 packet options received. Ignored.\n"
2710msgstr "" 2700msgstr ""
2711 2701
2712#: src/exit/gnunet-daemon-exit.c:2986 2702#: src/exit/gnunet-daemon-exit.c:2988
2713#, c-format 2703#, c-format
2714msgid "IPv4 packet with unsupported next header %u received. Ignored.\n" 2704msgid "IPv4 packet with unsupported next header %u received. Ignored.\n"
2715msgstr "" 2705msgstr ""
2716 2706
2717#: src/exit/gnunet-daemon-exit.c:3032 2707#: src/exit/gnunet-daemon-exit.c:3034
2718#, c-format 2708#, c-format
2719msgid "IPv6 packet with unsupported next header %d received. Ignored.\n" 2709msgid "IPv6 packet with unsupported next header %d received. Ignored.\n"
2720msgstr "" 2710msgstr ""
2721 2711
2722#: src/exit/gnunet-daemon-exit.c:3040 2712#: src/exit/gnunet-daemon-exit.c:3042
2723#, c-format 2713#, c-format
2724msgid "Packet from unknown protocol %u received. Ignored.\n" 2714msgid "Packet from unknown protocol %u received. Ignored.\n"
2725msgstr "" 2715msgstr ""
2726 2716
2727#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253 2717#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
2728#, fuzzy, c-format 2718#, fuzzy, c-format
2729msgid "Option `%s' for domain `%s' is not formatted correctly!\n" 2719msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
2730msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n" 2720msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n"
2731 2721
2732#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275 2722#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
2733#, c-format 2723#, c-format
2734msgid "`%s' is not a valid port number (for domain `%s')!" 2724msgid "`%s' is not a valid port number (for domain `%s')!"
2735msgstr "" 2725msgstr ""
2736 2726
2737#: src/exit/gnunet-daemon-exit.c:3316 2727#: src/exit/gnunet-daemon-exit.c:3318
2738#, c-format 2728#, c-format
2739msgid "No addresses found for hostname `%s' of service `%s'!\n" 2729msgid "No addresses found for hostname `%s' of service `%s'!\n"
2740msgstr "" 2730msgstr ""
2741 2731
2742#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343 2732#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
2743#, c-format 2733#, c-format
2744msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n" 2734msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
2745msgstr "" 2735msgstr ""
2746 2736
2747#: src/exit/gnunet-daemon-exit.c:3355 2737#: src/exit/gnunet-daemon-exit.c:3357
2748#, c-format 2738#, c-format
2749msgid "No IP addresses found for hostname `%s' of service `%s'!\n" 2739msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
2750msgstr "" 2740msgstr ""
2751 2741
2752#: src/exit/gnunet-daemon-exit.c:3499 2742#: src/exit/gnunet-daemon-exit.c:3501
2753msgid "" 2743msgid ""
2754"This system does not support IPv4, will disable IPv4 functions despite them " 2744"This system does not support IPv4, will disable IPv4 functions despite them "
2755"being enabled in the configuration\n" 2745"being enabled in the configuration\n"
2756msgstr "" 2746msgstr ""
2757 2747
2758#: src/exit/gnunet-daemon-exit.c:3507 2748#: src/exit/gnunet-daemon-exit.c:3509
2759msgid "" 2749msgid ""
2760"This system does not support IPv6, will disable IPv6 functions despite them " 2750"This system does not support IPv6, will disable IPv6 functions despite them "
2761"being enabled in the configuration\n" 2751"being enabled in the configuration\n"
2762msgstr "" 2752msgstr ""
2763 2753
2764#: src/exit/gnunet-daemon-exit.c:3514 2754#: src/exit/gnunet-daemon-exit.c:3516
2765msgid "" 2755msgid ""
2766"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use " 2756"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
2767"ENABLE_IPv4=YES\n" 2757"ENABLE_IPv4=YES\n"
2768msgstr "" 2758msgstr ""
2769 2759
2770#: src/exit/gnunet-daemon-exit.c:3520 2760#: src/exit/gnunet-daemon-exit.c:3522
2771msgid "" 2761msgid ""
2772"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use " 2762"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
2773"ENABLE_IPv6=YES\n" 2763"ENABLE_IPv6=YES\n"
2774msgstr "" 2764msgstr ""
2775 2765
2776#: src/exit/gnunet-daemon-exit.c:3688 2766#: src/exit/gnunet-daemon-exit.c:3690
2777msgid "Must be a number" 2767msgid "Must be a number"
2778msgstr "" 2768msgstr ""
2779 2769
2780#: src/exit/gnunet-daemon-exit.c:3803 2770#: src/exit/gnunet-daemon-exit.c:3805
2781#, c-format 2771#, c-format
2782msgid "`%s' must be installed SUID, EXIT will not work\n" 2772msgid "`%s' must be installed SUID, EXIT will not work\n"
2783msgstr "" 2773msgstr ""
2784 2774
2785#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202 2775#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
2786msgid "No useful service enabled. Exiting.\n" 2776msgid "No useful service enabled. Exiting.\n"
2787msgstr "" 2777msgstr ""
2788 2778
2789#: src/exit/gnunet-daemon-exit.c:3964 2779#: src/exit/gnunet-daemon-exit.c:3966
2790msgid "Daemon to run to provide an IP exit node for the VPN" 2780msgid "Daemon to run to provide an IP exit node for the VPN"
2791msgstr "" 2781msgstr ""
2792 2782
2793#: src/fragmentation/defragmentation.c:273 2783#: src/fragmentation/defragmentation.c:275
2794msgid "# acknowledgements sent for fragment" 2784msgid "# acknowledgements sent for fragment"
2795msgstr "" 2785msgstr ""
2796 2786
2797#: src/fragmentation/defragmentation.c:466 2787#: src/fragmentation/defragmentation.c:468
2798#: src/transport/plugin_transport_wlan.c:1552 2788#: src/transport/plugin_transport_wlan.c:1554
2799#, fuzzy 2789#, fuzzy
2800msgid "# fragments received" 2790msgid "# fragments received"
2801msgstr "# các mảnh bị loại bỏ" 2791msgstr "# các mảnh bị loại bỏ"
2802 2792
2803#: src/fragmentation/defragmentation.c:536 2793#: src/fragmentation/defragmentation.c:538
2804#, fuzzy 2794#, fuzzy
2805msgid "# duplicate fragments received" 2795msgid "# duplicate fragments received"
2806msgstr "# các kết quả dht được nhận" 2796msgstr "# các kết quả dht được nhận"
2807 2797
2808#: src/fragmentation/defragmentation.c:554 2798#: src/fragmentation/defragmentation.c:556
2809msgid "# messages defragmented" 2799msgid "# messages defragmented"
2810msgstr "# các thông báo được chắp liền" 2800msgstr "# các thông báo được chắp liền"
2811 2801
2812#: src/fragmentation/fragmentation.c:238 2802#: src/fragmentation/fragmentation.c:240
2813#, fuzzy 2803#, fuzzy
2814msgid "# fragments transmitted" 2804msgid "# fragments transmitted"
2815msgstr "# Các tự quảng cáo được truyền" 2805msgstr "# Các tự quảng cáo được truyền"
2816 2806
2817#: src/fragmentation/fragmentation.c:243 2807#: src/fragmentation/fragmentation.c:245
2818#, fuzzy 2808#, fuzzy
2819msgid "# fragments retransmitted" 2809msgid "# fragments retransmitted"
2820msgstr "# Các tự quảng cáo được truyền" 2810msgstr "# Các tự quảng cáo được truyền"
2821 2811
2822#: src/fragmentation/fragmentation.c:276 2812#: src/fragmentation/fragmentation.c:278
2823#, fuzzy 2813#, fuzzy
2824msgid "# fragments wrap arounds" 2814msgid "# fragments wrap arounds"
2825msgstr "# Các tự quảng cáo được truyền" 2815msgstr "# Các tự quảng cáo được truyền"
2826 2816
2827#: src/fragmentation/fragmentation.c:323 2817#: src/fragmentation/fragmentation.c:325
2828msgid "# messages fragmented" 2818msgid "# messages fragmented"
2829msgstr "# các thông báo bị tế phân" 2819msgstr "# các thông báo bị tế phân"
2830 2820
2831#: src/fragmentation/fragmentation.c:329 2821#: src/fragmentation/fragmentation.c:331
2832msgid "# total size of fragmented messages" 2822msgid "# total size of fragmented messages"
2833msgstr "" 2823msgstr ""
2834 2824
2835#: src/fragmentation/fragmentation.c:454 2825#: src/fragmentation/fragmentation.c:456
2836#, fuzzy 2826#, fuzzy
2837msgid "# fragment acknowledgements received" 2827msgid "# fragment acknowledgements received"
2838msgstr "# Các quảng cáo đồng đẳng được nhận" 2828msgstr "# Các quảng cáo đồng đẳng được nhận"
2839 2829
2840#: src/fragmentation/fragmentation.c:461 2830#: src/fragmentation/fragmentation.c:463
2841msgid "# bits removed from fragmentation ACKs" 2831msgid "# bits removed from fragmentation ACKs"
2842msgstr "" 2832msgstr ""
2843 2833
2844#: src/fragmentation/fragmentation.c:485 2834#: src/fragmentation/fragmentation.c:487
2845#, fuzzy 2835#, fuzzy
2846msgid "# fragmentation transmissions completed" 2836msgid "# fragmentation transmissions completed"
2847msgstr "# các sự truyền PONG bị lỗi" 2837msgstr "# các sự truyền PONG bị lỗi"
2848 2838
2849#: src/fs/fs_api.c:497 2839#: src/fs/fs_api.c:499
2850#, fuzzy, c-format 2840#, fuzzy, c-format
2851msgid "Could not open file `%s': %s" 2841msgid "Could not open file `%s': %s"
2852msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n" 2842msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
2853 2843
2854#: src/fs/fs_api.c:508 2844#: src/fs/fs_api.c:510
2855#, fuzzy, c-format 2845#, fuzzy, c-format
2856msgid "Could not read file `%s': %s" 2846msgid "Could not read file `%s': %s"
2857msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n" 2847msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
2858 2848
2859#: src/fs/fs_api.c:516 2849#: src/fs/fs_api.c:518
2860#, c-format 2850#, c-format
2861msgid "Short read reading from file `%s'!" 2851msgid "Short read reading from file `%s'!"
2862msgstr "" 2852msgstr ""
2863 2853
2864#: src/fs/fs_api.c:1124 2854#: src/fs/fs_api.c:1126
2865#, fuzzy, c-format 2855#, fuzzy, c-format
2866msgid "Failed to resume publishing information `%s': %s\n" 2856msgid "Failed to resume publishing information `%s': %s\n"
2867msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 2857msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
2868 2858
2869#: src/fs/fs_api.c:1644 2859#: src/fs/fs_api.c:1646
2870#, c-format 2860#, c-format
2871msgid "Failure while resuming publishing operation `%s': %s\n" 2861msgid "Failure while resuming publishing operation `%s': %s\n"
2872msgstr "" 2862msgstr ""
2873 2863
2874#: src/fs/fs_api.c:1660 2864#: src/fs/fs_api.c:1662
2875#, fuzzy, c-format 2865#, fuzzy, c-format
2876msgid "Failed to resume publishing operation `%s': %s\n" 2866msgid "Failed to resume publishing operation `%s': %s\n"
2877msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 2867msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
2878 2868
2879#: src/fs/fs_api.c:2320 2869#: src/fs/fs_api.c:2322
2880#, c-format 2870#, c-format
2881msgid "Failure while resuming unindexing operation `%s': %s\n" 2871msgid "Failure while resuming unindexing operation `%s': %s\n"
2882msgstr "" 2872msgstr ""
2883 2873
2884#: src/fs/fs_api.c:2330 2874#: src/fs/fs_api.c:2332
2885#, fuzzy, c-format 2875#, fuzzy, c-format
2886msgid "Failed to resume unindexing operation `%s': %s\n" 2876msgid "Failed to resume unindexing operation `%s': %s\n"
2887msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 2877msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
2888 2878
2889#: src/fs/fs_api.c:2458 src/fs/fs_api.c:2704 2879#: src/fs/fs_api.c:2460 src/fs/fs_api.c:2706
2890#, fuzzy, c-format 2880#, fuzzy, c-format
2891msgid "Failed to resume sub-download `%s': %s\n" 2881msgid "Failed to resume sub-download `%s': %s\n"
2892msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 2882msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
2893 2883
2894#: src/fs/fs_api.c:2476 2884#: src/fs/fs_api.c:2478
2895#, fuzzy, c-format 2885#, fuzzy, c-format
2896msgid "Failed to resume sub-search `%s': %s\n" 2886msgid "Failed to resume sub-search `%s': %s\n"
2897msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 2887msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
2898 2888
2899#: src/fs/fs_api.c:2491 src/fs/fs_api.c:2510 src/fs/fs_api.c:3014 2889#: src/fs/fs_api.c:2493 src/fs/fs_api.c:2512 src/fs/fs_api.c:3016
2900#, c-format 2890#, c-format
2901msgid "Failure while resuming search operation `%s': %s\n" 2891msgid "Failure while resuming search operation `%s': %s\n"
2902msgstr "" 2892msgstr ""
2903 2893
2904#: src/fs/fs_api.c:2694 2894#: src/fs/fs_api.c:2696
2905#, c-format 2895#, c-format
2906msgid "Failed to resume sub-download `%s': could not open file `%s'\n" 2896msgid "Failed to resume sub-download `%s': could not open file `%s'\n"
2907msgstr "" 2897msgstr ""
2908 2898
2909#: src/fs/fs_api.c:2957 2899#: src/fs/fs_api.c:2959
2910msgid "Could not resume running search, will resume as paused search\n" 2900msgid "Could not resume running search, will resume as paused search\n"
2911msgstr "" 2901msgstr ""
2912 2902
2913#: src/fs/fs_api.c:3052 2903#: src/fs/fs_api.c:3054
2914#, c-format 2904#, c-format
2915msgid "Failure while resuming download operation `%s': %s\n" 2905msgid "Failure while resuming download operation `%s': %s\n"
2916msgstr "" 2906msgstr ""
2917 2907
2918#: src/fs/fs_directory.c:211 2908#: src/fs/fs_directory.c:213
2919#, fuzzy 2909#, fuzzy
2920msgid "MAGIC mismatch. This is not a GNUnet directory.\n" 2910msgid "MAGIC mismatch. This is not a GNUnet directory.\n"
2921msgstr "Lỗi định dạng tập tin (không phải là thư mục GNUnet ?)\n" 2911msgstr "Lỗi định dạng tập tin (không phải là thư mục GNUnet ?)\n"
2922 2912
2923#: src/fs/fs_download.c:308 2913#: src/fs/fs_download.c:310
2924msgid "" 2914msgid ""
2925"Recursive downloads of directories larger than 4 GB are not supported on 32-" 2915"Recursive downloads of directories larger than 4 GB are not supported on 32-"
2926"bit systems\n" 2916"bit systems\n"
2927msgstr "" 2917msgstr ""
2928 2918
2929#: src/fs/fs_download.c:333 2919#: src/fs/fs_download.c:335
2930msgid "Directory too large for system address space\n" 2920msgid "Directory too large for system address space\n"
2931msgstr "" 2921msgstr ""
2932 2922
2933#: src/fs/fs_download.c:345 2923#: src/fs/fs_download.c:347
2934#, fuzzy, c-format 2924#, fuzzy, c-format
2935msgid "" 2925msgid ""
2936"Failed to access full directroy contents of `%s' for recursive download\n" 2926"Failed to access full directroy contents of `%s' for recursive download\n"
2937msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" 2927msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
2938 2928
2939#: src/fs/fs_download.c:532 src/fs/fs_download.c:544 2929#: src/fs/fs_download.c:534 src/fs/fs_download.c:546
2940#, fuzzy, c-format 2930#, fuzzy, c-format
2941msgid "Failed to open file `%s' for writing" 2931msgid "Failed to open file `%s' for writing"
2942msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 2932msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
2943 2933
2944#: src/fs/fs_download.c:954 2934#: src/fs/fs_download.c:956
2945#, fuzzy, c-format 2935#, fuzzy, c-format
2946msgid "Failed to create directory for recursive download of `%s'\n" 2936msgid "Failed to create directory for recursive download of `%s'\n"
2947msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" 2937msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
2948 2938
2949#: src/fs/fs_download.c:1045 2939#: src/fs/fs_download.c:1047
2950#, c-format 2940#, c-format
2951msgid "" 2941msgid ""
2952"Internal error or bogus download URI (expected %u bytes at depth %u and " 2942"Internal error or bogus download URI (expected %u bytes at depth %u and "
2953"offset %llu/%llu, got %u bytes)" 2943"offset %llu/%llu, got %u bytes)"
2954msgstr "" 2944msgstr ""
2955 2945
2956#: src/fs/fs_download.c:1073 2946#: src/fs/fs_download.c:1075
2957msgid "internal error decrypting content" 2947msgid "internal error decrypting content"
2958msgstr "" 2948msgstr ""
2959 2949
2960#: src/fs/fs_download.c:1097 2950#: src/fs/fs_download.c:1099
2961#, fuzzy, c-format 2951#, fuzzy, c-format
2962msgid "Download failed: could not open file `%s': %s" 2952msgid "Download failed: could not open file `%s': %s"
2963msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n" 2953msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
2964 2954
2965#: src/fs/fs_download.c:1109 2955#: src/fs/fs_download.c:1111
2966#, fuzzy, c-format 2956#, fuzzy, c-format
2967msgid "Failed to seek to offset %llu in file `%s': %s" 2957msgid "Failed to seek to offset %llu in file `%s': %s"
2968msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 2958msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
2969 2959
2970#: src/fs/fs_download.c:1118 2960#: src/fs/fs_download.c:1120
2971#, fuzzy, c-format 2961#, fuzzy, c-format
2972msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s" 2962msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s"
2973msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 2963msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
2974 2964
2975#: src/fs/fs_download.c:1218 2965#: src/fs/fs_download.c:1220
2976#, fuzzy 2966#, fuzzy
2977msgid "internal error decoding tree" 2967msgid "internal error decoding tree"
2978msgstr "=\tLỗi đọc thư mục.\n" 2968msgstr "=\tLỗi đọc thư mục.\n"
2979 2969
2980#: src/fs/fs_download.c:1883 2970#: src/fs/fs_download.c:1885
2981#, fuzzy 2971#, fuzzy
2982msgid "Invalid URI" 2972msgid "Invalid URI"
2983msgstr "Dữ liệu nhập không hợp lệ.\n" 2973msgstr "Dữ liệu nhập không hợp lệ.\n"
2984 2974
2985#: src/fs/fs_getopt.c:224 2975#: src/fs/fs_getopt.c:235
2986#, c-format 2976#, c-format
2987msgid "" 2977msgid ""
2988"Unknown metadata type in metadata option `%s'. Using metadata type " 2978"Unknown metadata type in metadata option `%s'. Using metadata type "
@@ -2991,615 +2981,615 @@ msgstr ""
2991"Không rõ kiểu siêu dữ liệu trong tùy chọn siêu dữ liệu « %s ». Đang ùng kiểu " 2981"Không rõ kiểu siêu dữ liệu trong tùy chọn siêu dữ liệu « %s ». Đang ùng kiểu "
2992"siêu dữ liệu « không rõ » (unknown) để thay thế.\n" 2982"siêu dữ liệu « không rõ » (unknown) để thay thế.\n"
2993 2983
2994#: src/fs/fs_list_indexed.c:150 2984#: src/fs/fs_list_indexed.c:152
2995#, fuzzy, c-format 2985#, fuzzy, c-format
2996msgid "Failed to receive response from `%s' service.\n" 2986msgid "Failed to receive response from `%s' service.\n"
2997msgstr "" 2987msgstr ""
2998"\n" 2988"\n"
2999"Không nhận được đáp ứng từ gnunetd.\n" 2989"Không nhận được đáp ứng từ gnunetd.\n"
3000 2990
3001#: src/fs/fs_list_indexed.c:194 2991#: src/fs/fs_list_indexed.c:196
3002#, fuzzy, c-format 2992#, fuzzy, c-format
3003msgid "Failed to not connect to `%s' service.\n" 2993msgid "Failed to not connect to `%s' service.\n"
3004msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 2994msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
3005 2995
3006#: src/fs/fs_misc.c:126 2996#: src/fs/fs_misc.c:128
3007#, c-format 2997#, c-format
3008msgid "Did not find mime type `%s' in extension list.\n" 2998msgid "Did not find mime type `%s' in extension list.\n"
3009msgstr "" 2999msgstr ""
3010 3000
3011#: src/fs/fs_namespace.c:205 3001#: src/fs/fs_namespace.c:207
3012#, fuzzy, c-format 3002#, fuzzy, c-format
3013msgid "Failed to open `%s' for writing: %s\n" 3003msgid "Failed to open `%s' for writing: %s\n"
3014msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 3004msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
3015 3005
3016#: src/fs/fs_namespace.c:230 3006#: src/fs/fs_namespace.c:232
3017#, fuzzy, c-format 3007#, fuzzy, c-format
3018msgid "Failed to write `%s': %s\n" 3008msgid "Failed to write `%s': %s\n"
3019msgstr "Lỗi chạy %s: %s %d\n" 3009msgstr "Lỗi chạy %s: %s %d\n"
3020 3010
3021#: src/fs/fs_namespace.c:322 3011#: src/fs/fs_namespace.c:324
3022#, fuzzy, c-format 3012#, fuzzy, c-format
3023msgid "Failed to read `%s': %s\n" 3013msgid "Failed to read `%s': %s\n"
3024msgstr "Lỗi chạy %s: %s %d\n" 3014msgstr "Lỗi chạy %s: %s %d\n"
3025 3015
3026#: src/fs/fs_namespace.c:468 3016#: src/fs/fs_namespace.c:470
3027#, fuzzy 3017#, fuzzy
3028msgid "Failed to connect to datastore." 3018msgid "Failed to connect to datastore."
3029msgstr "Không kết nối được đến trình nền gnunetd." 3019msgstr "Không kết nối được đến trình nền gnunetd."
3030 3020
3031#: src/fs/fs_publish.c:125 src/fs/fs_publish.c:436 3021#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:438
3032#, fuzzy, c-format 3022#, fuzzy, c-format
3033msgid "Publishing failed: %s" 3023msgid "Publishing failed: %s"
3034msgstr "Gặp lỗi khi tải lên tập tin: %s\n" 3024msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
3035 3025
3036#: src/fs/fs_publish.c:722 src/fs/fs_publish.c:776 src/fs/fs_publish.c:821 3026#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
3037#: src/fs/fs_publish.c:842 src/fs/fs_publish.c:872 src/fs/fs_publish.c:1138 3027#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
3038#, fuzzy, c-format 3028#, fuzzy, c-format
3039msgid "Can not index file `%s': %s. Will try to insert instead.\n" 3029msgid "Can not index file `%s': %s. Will try to insert instead.\n"
3040msgstr "Lỗi đánh chỉ mục tập tin « %s ». Đề nghị: thử chèn tập tin.\n" 3030msgstr "Lỗi đánh chỉ mục tập tin « %s ». Đề nghị: thử chèn tập tin.\n"
3041 3031
3042#: src/fs/fs_publish.c:778 3032#: src/fs/fs_publish.c:780
3043#, fuzzy 3033#, fuzzy
3044msgid "error on index-start request to `fs' service" 3034msgid "error on index-start request to `fs' service"
3045msgstr "Lỗi kết nối đến gnunetd.\n" 3035msgstr "Lỗi kết nối đến gnunetd.\n"
3046 3036
3047#: src/fs/fs_publish.c:823 3037#: src/fs/fs_publish.c:825
3048msgid "failed to compute hash" 3038msgid "failed to compute hash"
3049msgstr "" 3039msgstr ""
3050 3040
3051#: src/fs/fs_publish.c:843 3041#: src/fs/fs_publish.c:845
3052#, fuzzy 3042#, fuzzy
3053msgid "filename too long" 3043msgid "filename too long"
3054msgstr "tên tập tin" 3044msgstr "tên tập tin"
3055 3045
3056#: src/fs/fs_publish.c:874 3046#: src/fs/fs_publish.c:876
3057msgid "could not connect to `fs' service" 3047msgid "could not connect to `fs' service"
3058msgstr "" 3048msgstr ""
3059 3049
3060#: src/fs/fs_publish.c:900 3050#: src/fs/fs_publish.c:902
3061#, fuzzy, c-format 3051#, fuzzy, c-format
3062msgid "Failed to get file identifiers for `%s'\n" 3052msgid "Failed to get file identifiers for `%s'\n"
3063msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 3053msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
3064 3054
3065#: src/fs/fs_publish.c:989 src/fs/fs_publish.c:1025 3055#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
3066msgid "Can not create LOC URI. Will continue with CHK instead.\n" 3056msgid "Can not create LOC URI. Will continue with CHK instead.\n"
3067msgstr "" 3057msgstr ""
3068 3058
3069#: src/fs/fs_publish.c:1092 3059#: src/fs/fs_publish.c:1094
3070#, fuzzy, c-format 3060#, fuzzy, c-format
3071msgid "Recursive upload failed at `%s': %s" 3061msgid "Recursive upload failed at `%s': %s"
3072msgstr "%s bị lỗi tại %s:%d: « %s »\n" 3062msgstr "%s bị lỗi tại %s:%d: « %s »\n"
3073 3063
3074#: src/fs/fs_publish.c:1100 3064#: src/fs/fs_publish.c:1102
3075#, fuzzy, c-format 3065#, fuzzy, c-format
3076msgid "Recursive upload failed: %s" 3066msgid "Recursive upload failed: %s"
3077msgstr "Gặp lỗi khi tải lên tập tin: %s\n" 3067msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
3078 3068
3079#: src/fs/fs_publish.c:1140 3069#: src/fs/fs_publish.c:1142
3080msgid "needs to be an actual file" 3070msgid "needs to be an actual file"
3081msgstr "" 3071msgstr ""
3082 3072
3083#: src/fs/fs_publish.c:1379 3073#: src/fs/fs_publish.c:1381
3084#, fuzzy, c-format 3074#, fuzzy, c-format
3085msgid "Datastore failure: %s" 3075msgid "Datastore failure: %s"
3086msgstr "Kho dữ liệu đầy.\n" 3076msgstr "Kho dữ liệu đầy.\n"
3087 3077
3088#: src/fs/fs_publish.c:1470 3078#: src/fs/fs_publish.c:1472
3089#, c-format 3079#, c-format
3090msgid "Reserving space for %u entries and %llu bytes for publication\n" 3080msgid "Reserving space for %u entries and %llu bytes for publication\n"
3091msgstr "" 3081msgstr ""
3092 3082
3093#: src/fs/fs_publish_ksk.c:218 3083#: src/fs/fs_publish_ksk.c:220
3094#, fuzzy 3084#, fuzzy
3095msgid "Could not connect to datastore." 3085msgid "Could not connect to datastore."
3096msgstr "« %s »: Không thể kết nối.\n" 3086msgstr "« %s »: Không thể kết nối.\n"
3097 3087
3098#: src/fs/fs_publish_ublock.c:239 3088#: src/fs/fs_publish_ublock.c:241
3099#, fuzzy 3089#, fuzzy
3100msgid "Internal error." 3090msgid "Internal error."
3101msgstr "Lỗi VR." 3091msgstr "Lỗi VR."
3102 3092
3103#: src/fs/fs_search.c:820 src/fs/fs_search.c:890 3093#: src/fs/fs_search.c:822 src/fs/fs_search.c:892
3104#, fuzzy, c-format 3094#, fuzzy, c-format
3105msgid "Failed to parse URI `%s': %s\n" 3095msgid "Failed to parse URI `%s': %s\n"
3106msgstr "Tập tin « %s » có URI: %s\n" 3096msgstr "Tập tin « %s » có URI: %s\n"
3107 3097
3108#: src/fs/fs_search.c:977 3098#: src/fs/fs_search.c:979
3109#, c-format 3099#, c-format
3110msgid "Got result with unknown block type `%d', ignoring" 3100msgid "Got result with unknown block type `%d', ignoring"
3111msgstr "" 3101msgstr ""
3112 3102
3113#: src/fs/fs_unindex.c:61 3103#: src/fs/fs_unindex.c:63
3114msgid "Failed to find given position in file" 3104msgid "Failed to find given position in file"
3115msgstr "" 3105msgstr ""
3116 3106
3117#: src/fs/fs_unindex.c:66 3107#: src/fs/fs_unindex.c:68
3118#, fuzzy 3108#, fuzzy
3119msgid "Failed to read file" 3109msgid "Failed to read file"
3120msgstr "Lỗi gửi tin nhẳn.\n" 3110msgstr "Lỗi gửi tin nhẳn.\n"
3121 3111
3122#: src/fs/fs_unindex.c:273 3112#: src/fs/fs_unindex.c:275
3123#, fuzzy 3113#, fuzzy
3124msgid "Error communicating with `fs' service." 3114msgid "Error communicating with `fs' service."
3125msgstr "Cổng để liên lạc với giao diện người dùng GNUnet" 3115msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
3126 3116
3127#: src/fs/fs_unindex.c:324 3117#: src/fs/fs_unindex.c:326
3128#, fuzzy 3118#, fuzzy
3129msgid "Failed to connect to FS service for unindexing." 3119msgid "Failed to connect to FS service for unindexing."
3130msgstr "Không kết nối được đến trình nền gnunetd." 3120msgstr "Không kết nối được đến trình nền gnunetd."
3131 3121
3132#: src/fs/fs_unindex.c:374 src/fs/fs_unindex.c:386 3122#: src/fs/fs_unindex.c:376 src/fs/fs_unindex.c:388
3133#, fuzzy 3123#, fuzzy
3134msgid "Failed to get KSKs from directory scan." 3124msgid "Failed to get KSKs from directory scan."
3135msgstr "Lỗi truy cập đến thư mục nhà GNUnet « %s »\n" 3125msgstr "Lỗi truy cập đến thư mục nhà GNUnet « %s »\n"
3136 3126
3137#: src/fs/fs_unindex.c:382 3127#: src/fs/fs_unindex.c:384
3138#, fuzzy, c-format 3128#, fuzzy, c-format
3139msgid "Internal error scanning `%s'.\n" 3129msgid "Internal error scanning `%s'.\n"
3140msgstr "=\tLỗi đọc thư mục.\n" 3130msgstr "=\tLỗi đọc thư mục.\n"
3141 3131
3142#: src/fs/fs_unindex.c:441 3132#: src/fs/fs_unindex.c:443
3143#, fuzzy, c-format 3133#, fuzzy, c-format
3144msgid "Failed to remove UBlock: %s\n" 3134msgid "Failed to remove UBlock: %s\n"
3145msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 3135msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
3146 3136
3147#: src/fs/fs_unindex.c:586 src/fs/fs_unindex.c:650 3137#: src/fs/fs_unindex.c:588 src/fs/fs_unindex.c:652
3148#, fuzzy 3138#, fuzzy
3149msgid "Failed to connect to `datastore' service." 3139msgid "Failed to connect to `datastore' service."
3150msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 3140msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
3151 3141
3152#: src/fs/fs_unindex.c:663 3142#: src/fs/fs_unindex.c:665
3153#, fuzzy 3143#, fuzzy
3154msgid "Failed to open file for unindexing." 3144msgid "Failed to open file for unindexing."
3155msgstr "Không kết nối được đến trình nền gnunetd." 3145msgstr "Không kết nối được đến trình nền gnunetd."
3156 3146
3157#: src/fs/fs_unindex.c:702 3147#: src/fs/fs_unindex.c:704
3158#, fuzzy 3148#, fuzzy
3159msgid "Failed to compute hash of file." 3149msgid "Failed to compute hash of file."
3160msgstr "Không kết nối được đến trình nền gnunetd." 3150msgstr "Không kết nối được đến trình nền gnunetd."
3161 3151
3162#: src/fs/fs_uri.c:232 3152#: src/fs/fs_uri.c:234
3163#, no-c-format 3153#, no-c-format
3164msgid "Malformed KSK URI (`%' must be followed by HEX number)" 3154msgid "Malformed KSK URI (`%' must be followed by HEX number)"
3165msgstr "" 3155msgstr ""
3166 3156
3167#: src/fs/fs_uri.c:291 3157#: src/fs/fs_uri.c:293
3168msgid "Malformed KSK URI (must not begin or end with `+')" 3158msgid "Malformed KSK URI (must not begin or end with `+')"
3169msgstr "" 3159msgstr ""
3170 3160
3171#: src/fs/fs_uri.c:309 3161#: src/fs/fs_uri.c:311
3172msgid "Malformed KSK URI (`++' not allowed)" 3162msgid "Malformed KSK URI (`++' not allowed)"
3173msgstr "" 3163msgstr ""
3174 3164
3175#: src/fs/fs_uri.c:316 3165#: src/fs/fs_uri.c:318
3176msgid "Malformed KSK URI (quotes not balanced)" 3166msgid "Malformed KSK URI (quotes not balanced)"
3177msgstr "" 3167msgstr ""
3178 3168
3179#: src/fs/fs_uri.c:386 3169#: src/fs/fs_uri.c:388
3180msgid "Malformed SKS URI (wrong syntax)" 3170msgid "Malformed SKS URI (wrong syntax)"
3181msgstr "" 3171msgstr ""
3182 3172
3183#: src/fs/fs_uri.c:427 3173#: src/fs/fs_uri.c:429
3184msgid "Malformed CHK URI (wrong syntax)" 3174msgid "Malformed CHK URI (wrong syntax)"
3185msgstr "" 3175msgstr ""
3186 3176
3187#: src/fs/fs_uri.c:442 3177#: src/fs/fs_uri.c:444
3188msgid "Malformed CHK URI (failed to decode CHK)" 3178msgid "Malformed CHK URI (failed to decode CHK)"
3189msgstr "" 3179msgstr ""
3190 3180
3191#: src/fs/fs_uri.c:521 3181#: src/fs/fs_uri.c:523
3192msgid "LOC URI malformed (wrong syntax)" 3182msgid "LOC URI malformed (wrong syntax)"
3193msgstr "" 3183msgstr ""
3194 3184
3195#: src/fs/fs_uri.c:536 3185#: src/fs/fs_uri.c:538
3196msgid "LOC URI malformed (no CHK)" 3186msgid "LOC URI malformed (no CHK)"
3197msgstr "" 3187msgstr ""
3198 3188
3199#: src/fs/fs_uri.c:546 3189#: src/fs/fs_uri.c:548
3200msgid "LOC URI malformed (missing LOC)" 3190msgid "LOC URI malformed (missing LOC)"
3201msgstr "" 3191msgstr ""
3202 3192
3203#: src/fs/fs_uri.c:554 3193#: src/fs/fs_uri.c:556
3204msgid "LOC URI malformed (wrong syntax for public key)" 3194msgid "LOC URI malformed (wrong syntax for public key)"
3205msgstr "" 3195msgstr ""
3206 3196
3207#: src/fs/fs_uri.c:562 3197#: src/fs/fs_uri.c:564
3208msgid "LOC URI malformed (could not decode public key)" 3198msgid "LOC URI malformed (could not decode public key)"
3209msgstr "" 3199msgstr ""
3210 3200
3211#: src/fs/fs_uri.c:568 3201#: src/fs/fs_uri.c:570
3212msgid "LOC URI malformed (could not find signature)" 3202msgid "LOC URI malformed (could not find signature)"
3213msgstr "" 3203msgstr ""
3214 3204
3215#: src/fs/fs_uri.c:574 3205#: src/fs/fs_uri.c:576
3216msgid "LOC URI malformed (wrong syntax for signature)" 3206msgid "LOC URI malformed (wrong syntax for signature)"
3217msgstr "" 3207msgstr ""
3218 3208
3219#: src/fs/fs_uri.c:583 3209#: src/fs/fs_uri.c:585
3220msgid "LOC URI malformed (could not decode signature)" 3210msgid "LOC URI malformed (could not decode signature)"
3221msgstr "" 3211msgstr ""
3222 3212
3223#: src/fs/fs_uri.c:589 3213#: src/fs/fs_uri.c:591
3224msgid "LOC URI malformed (wrong syntax for expiration time)" 3214msgid "LOC URI malformed (wrong syntax for expiration time)"
3225msgstr "" 3215msgstr ""
3226 3216
3227#: src/fs/fs_uri.c:595 3217#: src/fs/fs_uri.c:597
3228msgid "LOC URI malformed (could not parse expiration time)" 3218msgid "LOC URI malformed (could not parse expiration time)"
3229msgstr "" 3219msgstr ""
3230 3220
3231#: src/fs/fs_uri.c:607 3221#: src/fs/fs_uri.c:609
3232msgid "LOC URI malformed (signature failed validation)" 3222msgid "LOC URI malformed (signature failed validation)"
3233msgstr "" 3223msgstr ""
3234 3224
3235#: src/fs/fs_uri.c:641 3225#: src/fs/fs_uri.c:643
3236#, fuzzy 3226#, fuzzy
3237msgid "invalid argument" 3227msgid "invalid argument"
3238msgstr "Đối số không hợp lệ cho « %s ».\n" 3228msgstr "Đối số không hợp lệ cho « %s ».\n"
3239 3229
3240#: src/fs/fs_uri.c:653 3230#: src/fs/fs_uri.c:655
3241msgid "Unrecognized URI type" 3231msgid "Unrecognized URI type"
3242msgstr "" 3232msgstr ""
3243 3233
3244#: src/fs/fs_uri.c:1057 src/fs/fs_uri.c:1084 3234#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
3245msgid "No keywords specified!\n" 3235msgid "No keywords specified!\n"
3246msgstr "Chưa ghi rõ từ khoá.\n" 3236msgstr "Chưa ghi rõ từ khoá.\n"
3247 3237
3248#: src/fs/fs_uri.c:1090 3238#: src/fs/fs_uri.c:1092
3249msgid "Number of double-quotes not balanced!\n" 3239msgid "Number of double-quotes not balanced!\n"
3250msgstr "Có dấu nháy kép thừa hay thiếu.\n" 3240msgstr "Có dấu nháy kép thừa hay thiếu.\n"
3251 3241
3252#: src/fs/gnunet-auto-share.c:230 3242#: src/fs/gnunet-auto-share.c:232
3253#, fuzzy, c-format 3243#, fuzzy, c-format
3254msgid "Failed to load state: %s\n" 3244msgid "Failed to load state: %s\n"
3255msgstr "Lỗi bắt đầu thu thập.\n" 3245msgstr "Lỗi bắt đầu thu thập.\n"
3256 3246
3257#: src/fs/gnunet-auto-share.c:283 src/fs/gnunet-auto-share.c:293 3247#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
3258#: src/fs/gnunet-auto-share.c:303 3248#: src/fs/gnunet-auto-share.c:305
3259#, fuzzy, c-format 3249#, fuzzy, c-format
3260msgid "Failed to save state to file %s\n" 3250msgid "Failed to save state to file %s\n"
3261msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 3251msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
3262 3252
3263#: src/fs/gnunet-auto-share.c:405 3253#: src/fs/gnunet-auto-share.c:407
3264#, c-format 3254#, c-format
3265msgid "Publication of `%s' done\n" 3255msgid "Publication of `%s' done\n"
3266msgstr "" 3256msgstr ""
3267 3257
3268#: src/fs/gnunet-auto-share.c:492 3258#: src/fs/gnunet-auto-share.c:494
3269#, fuzzy, c-format 3259#, fuzzy, c-format
3270msgid "Publishing `%s'\n" 3260msgid "Publishing `%s'\n"
3271msgstr "Gặp lỗi khi tải lên tập tin: %s\n" 3261msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
3272 3262
3273#: src/fs/gnunet-auto-share.c:502 3263#: src/fs/gnunet-auto-share.c:504
3274#, fuzzy, c-format 3264#, fuzzy, c-format
3275msgid "Failed to run `%s'\n" 3265msgid "Failed to run `%s'\n"
3276msgstr "Lỗi bắt đầu thu thập.\n" 3266msgstr "Lỗi bắt đầu thu thập.\n"
3277 3267
3278#: src/fs/gnunet-auto-share.c:711 3268#: src/fs/gnunet-auto-share.c:713
3279#, fuzzy, c-format 3269#, fuzzy, c-format
3280msgid "" 3270msgid ""
3281"You must specify one and only one directory name for automatic publication.\n" 3271"You must specify one and only one directory name for automatic publication.\n"
3282msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n" 3272msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
3283 3273
3284#: src/fs/gnunet-auto-share.c:765 src/fs/gnunet-publish.c:898 3274#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
3285msgid "set the desired LEVEL of sender-anonymity" 3275msgid "set the desired LEVEL of sender-anonymity"
3286msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người gửi" 3276msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người gửi"
3287 3277
3288#: src/fs/gnunet-auto-share.c:770 src/fs/gnunet-publish.c:902 3278#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
3289msgid "disable adding the creation time to the metadata of the uploaded file" 3279msgid "disable adding the creation time to the metadata of the uploaded file"
3290msgstr "tắt thêm giờ tạo vào siêu dữ liệu của tập tin đã tải lên" 3280msgstr "tắt thêm giờ tạo vào siêu dữ liệu của tập tin đã tải lên"
3291 3281
3292#: src/fs/gnunet-auto-share.c:775 src/fs/gnunet-publish.c:907 3282#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
3293msgid "do not use libextractor to add keywords or metadata" 3283msgid "do not use libextractor to add keywords or metadata"
3294msgstr "" 3284msgstr ""
3295 3285
3296#: src/fs/gnunet-auto-share.c:781 src/fs/gnunet-publish.c:942 3286#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
3297msgid "specify the priority of the content" 3287msgid "specify the priority of the content"
3298msgstr "xác định mức ưu tiên của nội dung" 3288msgstr "xác định mức ưu tiên của nội dung"
3299 3289
3300#: src/fs/gnunet-auto-share.c:787 src/fs/gnunet-publish.c:954 3290#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
3301msgid "set the desired replication LEVEL" 3291msgid "set the desired replication LEVEL"
3302msgstr "" 3292msgstr ""
3303 3293
3304#: src/fs/gnunet-auto-share.c:811 3294#: src/fs/gnunet-auto-share.c:813
3305#, fuzzy 3295#, fuzzy
3306msgid "Automatically publish files from a directory on GNUnet" 3296msgid "Automatically publish files from a directory on GNUnet"
3307msgstr "Tự động chia sẻ một thư mục." 3297msgstr "Tự động chia sẻ một thư mục."
3308 3298
3309#: src/fs/gnunet-daemon-fsprofiler.c:646 3299#: src/fs/gnunet-daemon-fsprofiler.c:648
3310msgid "Daemon to use file-sharing to measure its performance." 3300msgid "Daemon to use file-sharing to measure its performance."
3311msgstr "" 3301msgstr ""
3312 3302
3313#: src/fs/gnunet-directory.c:51 3303#: src/fs/gnunet-directory.c:53
3314#, c-format 3304#, c-format
3315msgid "\t<original file embedded in %u bytes of meta data>\n" 3305msgid "\t<original file embedded in %u bytes of meta data>\n"
3316msgstr "" 3306msgstr ""
3317 3307
3318#: src/fs/gnunet-directory.c:103 3308#: src/fs/gnunet-directory.c:105
3319#, fuzzy, c-format 3309#, fuzzy, c-format
3320msgid "Directory `%s' meta data:\n" 3310msgid "Directory `%s' meta data:\n"
3321msgstr "==> Thư mục « %s »:\n" 3311msgstr "==> Thư mục « %s »:\n"
3322 3312
3323#: src/fs/gnunet-directory.c:106 3313#: src/fs/gnunet-directory.c:108
3324#, fuzzy, c-format 3314#, fuzzy, c-format
3325msgid "Directory `%s' contents:\n" 3315msgid "Directory `%s' contents:\n"
3326msgstr "==> Thư mục « %s »:\n" 3316msgstr "==> Thư mục « %s »:\n"
3327 3317
3328#: src/fs/gnunet-directory.c:141 3318#: src/fs/gnunet-directory.c:143
3329#, fuzzy 3319#, fuzzy
3330msgid "You must specify a filename to inspect.\n" 3320msgid "You must specify a filename to inspect.\n"
3331msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n" 3321msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
3332 3322
3333#: src/fs/gnunet-directory.c:154 3323#: src/fs/gnunet-directory.c:156
3334#, fuzzy, c-format 3324#, fuzzy, c-format
3335msgid "Failed to read directory `%s'\n" 3325msgid "Failed to read directory `%s'\n"
3336msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 3326msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
3337 3327
3338#: src/fs/gnunet-directory.c:163 3328#: src/fs/gnunet-directory.c:165
3339#, fuzzy, c-format 3329#, fuzzy, c-format
3340msgid "`%s' is not a GNUnet directory\n" 3330msgid "`%s' is not a GNUnet directory\n"
3341msgstr "Lỗi định dạng tập tin (không phải là thư mục GNUnet ?)\n" 3331msgstr "Lỗi định dạng tập tin (không phải là thư mục GNUnet ?)\n"
3342 3332
3343#: src/fs/gnunet-directory.c:192 3333#: src/fs/gnunet-directory.c:194
3344#, fuzzy 3334#, fuzzy
3345msgid "Display contents of a GNUnet directory" 3335msgid "Display contents of a GNUnet directory"
3346msgstr "Lỗi định dạng tập tin (không phải là thư mục GNUnet ?)\n" 3336msgstr "Lỗi định dạng tập tin (không phải là thư mục GNUnet ?)\n"
3347 3337
3348#: src/fs/gnunet-download.c:137 3338#: src/fs/gnunet-download.c:139
3349#, fuzzy, c-format 3339#, fuzzy, c-format
3350msgid "Starting download `%s'.\n" 3340msgid "Starting download `%s'.\n"
3351msgstr "Đang bắt đầu tài về « %s »\n" 3341msgstr "Đang bắt đầu tài về « %s »\n"
3352 3342
3353#: src/fs/gnunet-download.c:147 3343#: src/fs/gnunet-download.c:149
3354#, fuzzy 3344#, fuzzy
3355msgid "<unknown time>" 3345msgid "<unknown time>"
3356msgstr "Lỗi không rõ" 3346msgstr "Lỗi không rõ"
3357 3347
3358#: src/fs/gnunet-download.c:156 3348#: src/fs/gnunet-download.c:158
3359#, c-format 3349#, c-format
3360msgid "" 3350msgid ""
3361"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to " 3351"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to "
3362"download\n" 3352"download\n"
3363msgstr "" 3353msgstr ""
3364 3354
3365#: src/fs/gnunet-download.c:182 3355#: src/fs/gnunet-download.c:184
3366#, fuzzy, c-format 3356#, fuzzy, c-format
3367msgid "Error downloading: %s.\n" 3357msgid "Error downloading: %s.\n"
3368msgstr "Gặp lỗi khi tải xuống: %s\n" 3358msgstr "Gặp lỗi khi tải xuống: %s\n"
3369 3359
3370#: src/fs/gnunet-download.c:199 3360#: src/fs/gnunet-download.c:201
3371#, fuzzy, c-format 3361#, fuzzy, c-format
3372msgid "Downloading `%s' done (%s/s).\n" 3362msgid "Downloading `%s' done (%s/s).\n"
3373msgstr "Tiến trình tải lên « %s » đã tiếp tục lại.\n" 3363msgstr "Tiến trình tải lên « %s » đã tiếp tục lại.\n"
3374 3364
3375#: src/fs/gnunet-download.c:214 src/fs/gnunet-publish.c:293 3365#: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
3376#: src/fs/gnunet-search.c:210 src/fs/gnunet-unindex.c:105 3366#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
3377#, fuzzy, c-format 3367#, fuzzy, c-format
3378msgid "Unexpected status: %d\n" 3368msgid "Unexpected status: %d\n"
3379msgstr "Gặp sự kiện bất thường: %d\n" 3369msgstr "Gặp sự kiện bất thường: %d\n"
3380 3370
3381#: src/fs/gnunet-download.c:244 3371#: src/fs/gnunet-download.c:246
3382#, fuzzy 3372#, fuzzy
3383msgid "You need to specify a URI argument.\n" 3373msgid "You need to specify a URI argument.\n"
3384msgstr "KHÔNG cho phép ghi rõ cả hai địa chỉ URI và tên tập tin.\n" 3374msgstr "KHÔNG cho phép ghi rõ cả hai địa chỉ URI và tên tập tin.\n"
3385 3375
3386#: src/fs/gnunet-download.c:251 src/fs/gnunet-publish.c:724 3376#: src/fs/gnunet-download.c:253 src/fs/gnunet-publish.c:727
3387#, fuzzy, c-format 3377#, fuzzy, c-format
3388msgid "Failed to parse URI: %s\n" 3378msgid "Failed to parse URI: %s\n"
3389msgstr "Tập tin « %s » có URI: %s\n" 3379msgstr "Tập tin « %s » có URI: %s\n"
3390 3380
3391#: src/fs/gnunet-download.c:262 3381#: src/fs/gnunet-download.c:264
3392msgid "Only CHK or LOC URIs supported.\n" 3382msgid "Only CHK or LOC URIs supported.\n"
3393msgstr "" 3383msgstr ""
3394 3384
3395#: src/fs/gnunet-download.c:271 3385#: src/fs/gnunet-download.c:273
3396msgid "Target filename must be specified.\n" 3386msgid "Target filename must be specified.\n"
3397msgstr "" 3387msgstr ""
3398 3388
3399#: src/fs/gnunet-download.c:289 src/fs/gnunet-publish.c:868 3389#: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
3400#: src/fs/gnunet-search.c:268 src/fs/gnunet-unindex.c:137 3390#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
3401#, fuzzy, c-format 3391#, fuzzy, c-format
3402msgid "Could not initialize `%s' subsystem.\n" 3392msgid "Could not initialize `%s' subsystem.\n"
3403msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 3393msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
3404 3394
3405#: src/fs/gnunet-download.c:337 src/fs/gnunet-search.c:311 3395#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
3406#, fuzzy 3396#, fuzzy
3407msgid "set the desired LEVEL of receiver-anonymity" 3397msgid "set the desired LEVEL of receiver-anonymity"
3408msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người gửi" 3398msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người gửi"
3409 3399
3410#: src/fs/gnunet-download.c:342 3400#: src/fs/gnunet-download.c:344
3411msgid "delete incomplete downloads (when aborted with CTRL-C)" 3401msgid "delete incomplete downloads (when aborted with CTRL-C)"
3412msgstr "xoá việc tải về không hoàn thành (khi hủy bở dùng CTRL-C)" 3402msgstr "xoá việc tải về không hoàn thành (khi hủy bở dùng CTRL-C)"
3413 3403
3414#: src/fs/gnunet-download.c:347 src/fs/gnunet-search.c:317 3404#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
3415msgid "only search the local peer (no P2P network search)" 3405msgid "only search the local peer (no P2P network search)"
3416msgstr "" 3406msgstr ""
3417 3407
3418#: src/fs/gnunet-download.c:352 3408#: src/fs/gnunet-download.c:354
3419msgid "write the file to FILENAME" 3409msgid "write the file to FILENAME"
3420msgstr "ghi tập tin vào TÊN_TẬP_TIN" 3410msgstr "ghi tập tin vào TÊN_TẬP_TIN"
3421 3411
3422#: src/fs/gnunet-download.c:357 3412#: src/fs/gnunet-download.c:359
3423#, fuzzy 3413#, fuzzy
3424msgid "set the maximum number of parallel downloads that is allowed" 3414msgid "set the maximum number of parallel downloads that is allowed"
3425msgstr "đặt số tối đa các việc tải xuống đồng thời được phép" 3415msgstr "đặt số tối đa các việc tải xuống đồng thời được phép"
3426 3416
3427#: src/fs/gnunet-download.c:362 3417#: src/fs/gnunet-download.c:364
3428#, fuzzy 3418#, fuzzy
3429msgid "set the maximum number of parallel requests for blocks that is allowed" 3419msgid "set the maximum number of parallel requests for blocks that is allowed"
3430msgstr "đặt số tối đa các việc tải xuống đồng thời được phép" 3420msgstr "đặt số tối đa các việc tải xuống đồng thời được phép"
3431 3421
3432#: src/fs/gnunet-download.c:366 3422#: src/fs/gnunet-download.c:368
3433msgid "download a GNUnet directory recursively" 3423msgid "download a GNUnet directory recursively"
3434msgstr "tải xuống đệ quy một thư mục GNUnet" 3424msgstr "tải xuống đệ quy một thư mục GNUnet"
3435 3425
3436#: src/fs/gnunet-download.c:384 3426#: src/fs/gnunet-download.c:386
3437msgid "" 3427msgid ""
3438"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/" 3428"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
3439"chk/...)" 3429"chk/...)"
3440msgstr "" 3430msgstr ""
3441 3431
3442#: src/fs/gnunet-fs.c:117 3432#: src/fs/gnunet-fs.c:119
3443msgid "print a list of all indexed files" 3433msgid "print a list of all indexed files"
3444msgstr "" 3434msgstr ""
3445 3435
3446#: src/fs/gnunet-fs.c:128 3436#: src/fs/gnunet-fs.c:130
3447#, fuzzy 3437#, fuzzy
3448msgid "Special file-sharing operations" 3438msgid "Special file-sharing operations"
3449msgstr "Tùy chọn chia sẻ tập tin" 3439msgstr "Tùy chọn chia sẻ tập tin"
3450 3440
3451#: src/fs/gnunet-fs-profiler.c:209 3441#: src/fs/gnunet-fs-profiler.c:211
3452msgid "run the experiment with COUNT peers" 3442msgid "run the experiment with COUNT peers"
3453msgstr "" 3443msgstr ""
3454 3444
3455#: src/fs/gnunet-fs-profiler.c:215 3445#: src/fs/gnunet-fs-profiler.c:217
3456msgid "specifies name of a file with the HOSTS the testbed should use" 3446msgid "specifies name of a file with the HOSTS the testbed should use"
3457msgstr "" 3447msgstr ""
3458 3448
3459#: src/fs/gnunet-fs-profiler.c:221 3449#: src/fs/gnunet-fs-profiler.c:223
3460msgid "automatically terminate experiment after DELAY" 3450msgid "automatically terminate experiment after DELAY"
3461msgstr "" 3451msgstr ""
3462 3452
3463#: src/fs/gnunet-fs-profiler.c:231 3453#: src/fs/gnunet-fs-profiler.c:233
3464msgid "run a testbed to measure file-sharing performance" 3454msgid "run a testbed to measure file-sharing performance"
3465msgstr "" 3455msgstr ""
3466 3456
3467#: src/fs/gnunet-publish.c:217 src/fs/gnunet-publish.c:229 3457#: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
3468#, c-format 3458#, c-format
3469msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" 3459msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
3470msgstr "" 3460msgstr ""
3471 3461
3472#: src/fs/gnunet-publish.c:237 3462#: src/fs/gnunet-publish.c:239
3473#, fuzzy, c-format 3463#, fuzzy, c-format
3474msgid "Error publishing: %s.\n" 3464msgid "Error publishing: %s.\n"
3475msgstr "Gặp lỗi khi tải xuống: %s\n" 3465msgstr "Gặp lỗi khi tải xuống: %s\n"
3476 3466
3477#: src/fs/gnunet-publish.c:244 3467#: src/fs/gnunet-publish.c:246
3478#, c-format 3468#, c-format
3479msgid "Publishing `%s' done.\n" 3469msgid "Publishing `%s' done.\n"
3480msgstr "" 3470msgstr ""
3481 3471
3482#: src/fs/gnunet-publish.c:249 3472#: src/fs/gnunet-publish.c:251
3483#, fuzzy, c-format 3473#, fuzzy, c-format
3484msgid "URI is `%s'.\n" 3474msgid "URI is `%s'.\n"
3485msgstr "Tôi là đồng đẳng « %s ».\n" 3475msgstr "Tôi là đồng đẳng « %s ».\n"
3486 3476
3487#: src/fs/gnunet-publish.c:257 3477#: src/fs/gnunet-publish.c:259
3488#, fuzzy, c-format 3478#, fuzzy, c-format
3489msgid "Namespace URI is `%s'.\n" 3479msgid "Namespace URI is `%s'.\n"
3490msgstr "Tôi là đồng đẳng « %s ».\n" 3480msgstr "Tôi là đồng đẳng « %s ».\n"
3491 3481
3492#: src/fs/gnunet-publish.c:273 3482#: src/fs/gnunet-publish.c:275
3493#, fuzzy 3483#, fuzzy
3494msgid "Starting cleanup after abort\n" 3484msgid "Starting cleanup after abort\n"
3495msgstr "Hoàn thành khởi chạy « %s ».\n" 3485msgstr "Hoàn thành khởi chạy « %s ».\n"
3496 3486
3497#: src/fs/gnunet-publish.c:280 3487#: src/fs/gnunet-publish.c:282
3498#, fuzzy 3488#, fuzzy
3499msgid "Cleanup after abort completed.\n" 3489msgid "Cleanup after abort completed.\n"
3500msgstr "Hoàn thành khởi chạy « %s ».\n" 3490msgstr "Hoàn thành khởi chạy « %s ».\n"
3501 3491
3502#: src/fs/gnunet-publish.c:286 3492#: src/fs/gnunet-publish.c:288
3503#, fuzzy 3493#, fuzzy
3504msgid "Cleanup after abort failed.\n" 3494msgid "Cleanup after abort failed.\n"
3505msgstr "Hoàn thành khởi chạy « %s ».\n" 3495msgstr "Hoàn thành khởi chạy « %s ».\n"
3506 3496
3507#: src/fs/gnunet-publish.c:428 3497#: src/fs/gnunet-publish.c:430
3508#, fuzzy, c-format 3498#, fuzzy, c-format
3509msgid "Meta data for file `%s' (%s)\n" 3499msgid "Meta data for file `%s' (%s)\n"
3510msgstr "Đang cập nhật dữ liệu cho mô-đun « %s »\n" 3500msgstr "Đang cập nhật dữ liệu cho mô-đun « %s »\n"
3511 3501
3512#: src/fs/gnunet-publish.c:433 3502#: src/fs/gnunet-publish.c:435
3513#, fuzzy, c-format 3503#, fuzzy, c-format
3514msgid "Keywords for file `%s' (%s)\n" 3504msgid "Keywords for file `%s' (%s)\n"
3515msgstr "Từ khoá cho tập tin « %s »:\n" 3505msgstr "Từ khoá cho tập tin « %s »:\n"
3516 3506
3517#: src/fs/gnunet-publish.c:587 3507#: src/fs/gnunet-publish.c:590
3518#, fuzzy 3508#, fuzzy
3519msgid "Could not publish\n" 3509msgid "Could not publish\n"
3520msgstr "Không thể truy cập đến « %s »: %s\n" 3510msgstr "Không thể truy cập đến « %s »: %s\n"
3521 3511
3522#: src/fs/gnunet-publish.c:612 3512#: src/fs/gnunet-publish.c:615
3523#, fuzzy 3513#, fuzzy
3524msgid "Could not start publishing.\n" 3514msgid "Could not start publishing.\n"
3525msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" 3515msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
3526 3516
3527#: src/fs/gnunet-publish.c:646 3517#: src/fs/gnunet-publish.c:649
3528#, fuzzy, c-format 3518#, fuzzy, c-format
3529msgid "Scanning directory `%s'.\n" 3519msgid "Scanning directory `%s'.\n"
3530msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 3520msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
3531 3521
3532#: src/fs/gnunet-publish.c:650 3522#: src/fs/gnunet-publish.c:653
3533#, fuzzy, c-format 3523#, fuzzy, c-format
3534msgid "Scanning file `%s'.\n" 3524msgid "Scanning file `%s'.\n"
3535msgstr "Đang bắt đầu tài về « %s »\n" 3525msgstr "Đang bắt đầu tài về « %s »\n"
3536 3526
3537#: src/fs/gnunet-publish.c:656 3527#: src/fs/gnunet-publish.c:659
3538#, c-format 3528#, c-format
3539msgid "There was trouble processing file `%s', skipping it.\n" 3529msgid "There was trouble processing file `%s', skipping it.\n"
3540msgstr "" 3530msgstr ""
3541 3531
3542#: src/fs/gnunet-publish.c:663 3532#: src/fs/gnunet-publish.c:666
3543msgid "Preprocessing complete.\n" 3533msgid "Preprocessing complete.\n"
3544msgstr "" 3534msgstr ""
3545 3535
3546#: src/fs/gnunet-publish.c:668 3536#: src/fs/gnunet-publish.c:671
3547#, fuzzy, c-format 3537#, fuzzy, c-format
3548msgid "Extracting meta data from file `%s' complete.\n" 3538msgid "Extracting meta data from file `%s' complete.\n"
3549msgstr "Đang cập nhật dữ liệu cho mô-đun « %s »\n" 3539msgstr "Đang cập nhật dữ liệu cho mô-đun « %s »\n"
3550 3540
3551#: src/fs/gnunet-publish.c:675 3541#: src/fs/gnunet-publish.c:678
3552msgid "Meta data extraction has finished.\n" 3542msgid "Meta data extraction has finished.\n"
3553msgstr "" 3543msgstr ""
3554 3544
3555#: src/fs/gnunet-publish.c:684 3545#: src/fs/gnunet-publish.c:687
3556#, fuzzy 3546#, fuzzy
3557msgid "Internal error scanning directory.\n" 3547msgid "Internal error scanning directory.\n"
3558msgstr "=\tLỗi đọc thư mục.\n" 3548msgstr "=\tLỗi đọc thư mục.\n"
3559 3549
3560#: src/fs/gnunet-publish.c:712 3550#: src/fs/gnunet-publish.c:715
3561#, fuzzy, c-format 3551#, fuzzy, c-format
3562msgid "Selected pseudonym `%s' unknown\n" 3552msgid "Selected pseudonym `%s' unknown\n"
3563msgstr "Không gian tên « %s » có đánh giá %d.\n" 3553msgstr "Không gian tên « %s » có đánh giá %d.\n"
3564 3554
3565#: src/fs/gnunet-publish.c:745 3555#: src/fs/gnunet-publish.c:749
3566#, fuzzy, c-format 3556#, fuzzy, c-format
3567msgid "Failed to access `%s': %s\n" 3557msgid "Failed to access `%s': %s\n"
3568msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 3558msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
3569 3559
3570#: src/fs/gnunet-publish.c:759 3560#: src/fs/gnunet-publish.c:763
3571msgid "" 3561msgid ""
3572"Failed to start meta directory scanner. Is gnunet-helper-publish-fs " 3562"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
3573"installed?\n" 3563"installed?\n"
3574msgstr "" 3564msgstr ""
3575 3565
3576#: src/fs/gnunet-publish.c:815 3566#: src/fs/gnunet-publish.c:819
3577#, c-format 3567#, c-format
3578msgid "Cannot extract metadata from a URI!\n" 3568msgid "Cannot extract metadata from a URI!\n"
3579msgstr "Không thể trích siêu dữ liệu ra một địa chỉ URI.\n" 3569msgstr "Không thể trích siêu dữ liệu ra một địa chỉ URI.\n"
3580 3570
3581#: src/fs/gnunet-publish.c:822 3571#: src/fs/gnunet-publish.c:826
3582#, c-format 3572#, c-format
3583msgid "You must specify one and only one filename for insertion.\n" 3573msgid "You must specify one and only one filename for insertion.\n"
3584msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n" 3574msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
3585 3575
3586#: src/fs/gnunet-publish.c:828 3576#: src/fs/gnunet-publish.c:832
3587#, c-format 3577#, c-format
3588msgid "You must NOT specify an URI and a filename.\n" 3578msgid "You must NOT specify an URI and a filename.\n"
3589msgstr "KHÔNG cho phép ghi rõ cả hai địa chỉ URI và tên tập tin.\n" 3579msgstr "KHÔNG cho phép ghi rõ cả hai địa chỉ URI và tên tập tin.\n"
3590 3580
3591#: src/fs/gnunet-publish.c:836 src/vpn/gnunet-vpn.c:208 3581#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:210
3592#, c-format 3582#, c-format
3593msgid "Option `%s' is required when using option `%s'.\n" 3583msgid "Option `%s' is required when using option `%s'.\n"
3594msgstr "Tùy chọn « %s » cần thiết khi dùng tùy chọn « %s ».\n" 3584msgstr "Tùy chọn « %s » cần thiết khi dùng tùy chọn « %s ».\n"
3595 3585
3596#: src/fs/gnunet-publish.c:847 src/fs/gnunet-publish.c:855 3586#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
3597#: src/transport/gnunet-transport.c:1280 src/transport/gnunet-transport.c:1307 3587#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
3598#, c-format 3588#, c-format
3599msgid "Option `%s' makes no sense without option `%s'.\n" 3589msgid "Option `%s' makes no sense without option `%s'.\n"
3600msgstr "Tùy chọn « %s » không có nghĩa khi không có tùy chọn « %s ».\n" 3590msgstr "Tùy chọn « %s » không có nghĩa khi không có tùy chọn « %s ».\n"
3601 3591
3602#: src/fs/gnunet-publish.c:911 3592#: src/fs/gnunet-publish.c:916
3603msgid "" 3593msgid ""
3604"print list of extracted keywords that would be used, but do not perform " 3594"print list of extracted keywords that would be used, but do not perform "
3605"upload" 3595"upload"
@@ -3607,7 +3597,7 @@ msgstr ""
3607"in ra danh sách các từ khóa đã giải phóng cần sử dụng, nhưng không thực hiện " 3597"in ra danh sách các từ khóa đã giải phóng cần sử dụng, nhưng không thực hiện "
3608"tải lên" 3598"tải lên"
3609 3599
3610#: src/fs/gnunet-publish.c:917 3600#: src/fs/gnunet-publish.c:922
3611msgid "" 3601msgid ""
3612"add an additional keyword for the top-level file or directory (this option " 3602"add an additional keyword for the top-level file or directory (this option "
3613"can be specified multiple times)" 3603"can be specified multiple times)"
@@ -3615,11 +3605,11 @@ msgstr ""
3615"thêm một từ khoá bổ sung cho tập tin hoặc thư mục ở cấp đầu (có thể chỉ ra " 3605"thêm một từ khoá bổ sung cho tập tin hoặc thư mục ở cấp đầu (có thể chỉ ra "
3616"tùy chọn này nhiều lần)" 3606"tùy chọn này nhiều lần)"
3617 3607
3618#: src/fs/gnunet-publish.c:923 3608#: src/fs/gnunet-publish.c:928
3619msgid "set the meta-data for the given TYPE to the given VALUE" 3609msgid "set the meta-data for the given TYPE to the given VALUE"
3620msgstr "đặt siêu dữ liệu cho KIỂU đưa ra thành GIÁ_TRỊ chỉ ra" 3610msgstr "đặt siêu dữ liệu cho KIỂU đưa ra thành GIÁ_TRỊ chỉ ra"
3621 3611
3622#: src/fs/gnunet-publish.c:928 3612#: src/fs/gnunet-publish.c:932
3623msgid "" 3613msgid ""
3624"do not index, perform full insertion (stores entire file in encrypted form " 3614"do not index, perform full insertion (stores entire file in encrypted form "
3625"in GNUnet database)" 3615"in GNUnet database)"
@@ -3627,7 +3617,7 @@ msgstr ""
3627"không đánh chỉ mục, thực hiện việc chèn đầy đủ (chứa toàn bộ tập tin ở dạng " 3617"không đánh chỉ mục, thực hiện việc chèn đầy đủ (chứa toàn bộ tập tin ở dạng "
3628"mã hóa trong cơ sở dữ liệu GNUnet)" 3618"mã hóa trong cơ sở dữ liệu GNUnet)"
3629 3619
3630#: src/fs/gnunet-publish.c:935 3620#: src/fs/gnunet-publish.c:938
3631msgid "" 3621msgid ""
3632"specify ID of an updated version to be published in the future (for " 3622"specify ID of an updated version to be published in the future (for "
3633"namespace insertions only)" 3623"namespace insertions only)"
@@ -3635,12 +3625,12 @@ msgstr ""
3635"chỉ ra mã số của một phiên bản đã cập nhật để công bố trong tương lai (chỉ " 3625"chỉ ra mã số của một phiên bản đã cập nhật để công bố trong tương lai (chỉ "
3636"cho sự chèn không gian tên)" 3626"cho sự chèn không gian tên)"
3637 3627
3638#: src/fs/gnunet-publish.c:948 3628#: src/fs/gnunet-publish.c:949
3639msgid "publish the files under the pseudonym NAME (place file into namespace)" 3629msgid "publish the files under the pseudonym NAME (place file into namespace)"
3640msgstr "" 3630msgstr ""
3641"công bố các tập tin dưới biệt hiệu TÊN (đặt tập tin vào không gian tên)" 3631"công bố các tập tin dưới biệt hiệu TÊN (đặt tập tin vào không gian tên)"
3642 3632
3643#: src/fs/gnunet-publish.c:958 3633#: src/fs/gnunet-publish.c:959
3644#, fuzzy 3634#, fuzzy
3645msgid "" 3635msgid ""
3646"only simulate the process but do not do any actual publishing (useful to " 3636"only simulate the process but do not do any actual publishing (useful to "
@@ -3648,7 +3638,7 @@ msgid ""
3648msgstr "" 3638msgstr ""
3649"chỉ mô phỏng tiến trình, không thật công bố (có ích để tính địa chỉ URI)" 3639"chỉ mô phỏng tiến trình, không thật công bố (có ích để tính địa chỉ URI)"
3650 3640
3651#: src/fs/gnunet-publish.c:964 3641#: src/fs/gnunet-publish.c:965
3652msgid "" 3642msgid ""
3653"set the ID of this version of the publication (for namespace insertions only)" 3643"set the ID of this version of the publication (for namespace insertions only)"
3654msgstr "" 3644msgstr ""
@@ -3662,31 +3652,31 @@ msgstr ""
3662"Địa chỉ URI cần công bố (có thể được dùng thay vào gửi một tập tin để thêm " 3652"Địa chỉ URI cần công bố (có thể được dùng thay vào gửi một tập tin để thêm "
3663"từ khoá vào tập tin có địa chỉ URI tương ứng)" 3653"từ khoá vào tập tin có địa chỉ URI tương ứng)"
3664 3654
3665#: src/fs/gnunet-publish.c:987 3655#: src/fs/gnunet-publish.c:989
3666msgid "Publish a file or directory on GNUnet" 3656msgid "Publish a file or directory on GNUnet"
3667msgstr "" 3657msgstr ""
3668 3658
3669#: src/fs/gnunet-search.c:125 3659#: src/fs/gnunet-search.c:127
3670#, c-format 3660#, c-format
3671msgid "Failed to write directory with search results to `%s'\n" 3661msgid "Failed to write directory with search results to `%s'\n"
3672msgstr "" 3662msgstr ""
3673 3663
3674#: src/fs/gnunet-search.c:202 3664#: src/fs/gnunet-search.c:207
3675#, fuzzy, c-format 3665#, fuzzy, c-format
3676msgid "Error searching: %s.\n" 3666msgid "Error searching: %s.\n"
3677msgstr "Gặp lỗi khi tải xuống: %s\n" 3667msgstr "Gặp lỗi khi tải xuống: %s\n"
3678 3668
3679#: src/fs/gnunet-search.c:258 3669#: src/fs/gnunet-search.c:263
3680#, fuzzy 3670#, fuzzy
3681msgid "Could not create keyword URI from arguments.\n" 3671msgid "Could not create keyword URI from arguments.\n"
3682msgstr "Không thể tạo miền tên.\n" 3672msgstr "Không thể tạo miền tên.\n"
3683 3673
3684#: src/fs/gnunet-search.c:282 3674#: src/fs/gnunet-search.c:287
3685#, fuzzy 3675#, fuzzy
3686msgid "Could not start searching.\n" 3676msgid "Could not start searching.\n"
3687msgstr "Không thể tạo miền tên.\n" 3677msgstr "Không thể tạo miền tên.\n"
3688 3678
3689#: src/fs/gnunet-search.c:323 3679#: src/fs/gnunet-search.c:324
3690msgid "write search results to file starting with PREFIX" 3680msgid "write search results to file starting with PREFIX"
3691msgstr "" 3681msgstr ""
3692 3682
@@ -3694,7 +3684,7 @@ msgstr ""
3694msgid "automatically terminate search after DELAY" 3684msgid "automatically terminate search after DELAY"
3695msgstr "" 3685msgstr ""
3696 3686
3697#: src/fs/gnunet-search.c:338 3687#: src/fs/gnunet-search.c:335
3698msgid "automatically terminate search after VALUE results are found" 3688msgid "automatically terminate search after VALUE results are found"
3699msgstr "" 3689msgstr ""
3700 3690
@@ -3703,1960 +3693,2003 @@ msgstr ""
3703msgid "Search GNUnet for files that were published on GNUnet" 3693msgid "Search GNUnet for files that were published on GNUnet"
3704msgstr "Không hiển thị kết quả tìm kiếm cho tập tin được chúng ta tải lên" 3694msgstr "Không hiển thị kết quả tìm kiếm cho tập tin được chúng ta tải lên"
3705 3695
3706#: src/fs/gnunet-service-fs.c:375 src/fs/gnunet-service-fs.c:880 3696#: src/fs/gnunet-service-fs.c:377 src/fs/gnunet-service-fs.c:882
3707#, fuzzy 3697#, fuzzy
3708msgid "# client searches active" 3698msgid "# client searches active"
3709msgstr "# các yêu cầu khách lỗ hổng được nhận" 3699msgstr "# các yêu cầu khách lỗ hổng được nhận"
3710 3700
3711#: src/fs/gnunet-service-fs.c:434 3701#: src/fs/gnunet-service-fs.c:436
3712#, fuzzy 3702#, fuzzy
3713msgid "# replies received for local clients" 3703msgid "# replies received for local clients"
3714msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" 3704msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
3715 3705
3716#: src/fs/gnunet-service-fs.c:603 3706#: src/fs/gnunet-service-fs.c:605
3717msgid "# running average P2P latency (ms)" 3707msgid "# running average P2P latency (ms)"
3718msgstr "" 3708msgstr ""
3719 3709
3720#: src/fs/gnunet-service-fs.c:655 src/fs/gnunet-service-fs_cp.c:562 3710#: src/fs/gnunet-service-fs.c:657 src/fs/gnunet-service-fs_cp.c:564
3721#, fuzzy 3711#, fuzzy
3722msgid "# Loopback routes suppressed" 3712msgid "# Loopback routes suppressed"
3723msgstr "# tổng số định tuyến lỗ hổng thành công" 3713msgstr "# tổng số định tuyến lỗ hổng thành công"
3724 3714
3725#: src/fs/gnunet-service-fs.c:834 3715#: src/fs/gnunet-service-fs.c:836
3726#, fuzzy 3716#, fuzzy
3727msgid "# client searches received" 3717msgid "# client searches received"
3728msgstr "# các yêu cầu khách lỗ hổng được nhận" 3718msgstr "# các yêu cầu khách lỗ hổng được nhận"
3729 3719
3730#: src/fs/gnunet-service-fs.c:873 3720#: src/fs/gnunet-service-fs.c:875
3731msgid "# client searches updated (merged content seen list)" 3721msgid "# client searches updated (merged content seen list)"
3732msgstr "" 3722msgstr ""
3733 3723
3734#: src/fs/gnunet-service-fs.c:1044 3724#: src/fs/gnunet-service-fs.c:1040
3735#, c-format 3725#, c-format
3736msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n" 3726msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n"
3737msgstr "" 3727msgstr ""
3738 3728
3739#: src/fs/gnunet-service-fs.c:1284 3729#: src/fs/gnunet-service-fs.c:1280
3740#, fuzzy 3730#, fuzzy
3741msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n" 3731msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n"
3742msgstr "Lưu cấu hình ngay bây giờ không?" 3732msgstr "Lưu cấu hình ngay bây giờ không?"
3743 3733
3744#: src/fs/gnunet-service-fs.c:1309 src/hostlist/gnunet-daemon-hostlist.c:353 3734#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
3745#: src/topology/gnunet-daemon-topology.c:1200 3735#: src/topology/gnunet-daemon-topology.c:1202
3746#, fuzzy, c-format 3736#, fuzzy, c-format
3747msgid "Failed to connect to `%s' service.\n" 3737msgid "Failed to connect to `%s' service.\n"
3748msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 3738msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
3749 3739
3750#: src/fs/gnunet-service-fs_cadet_client.c:368 3740#: src/fs/gnunet-service-fs_cadet_client.c:370
3751#, fuzzy 3741#, fuzzy
3752msgid "# replies received via cadet" 3742msgid "# replies received via cadet"
3753msgstr "# các byte kiểu %d được nhận" 3743msgstr "# các byte kiểu %d được nhận"
3754 3744
3755#: src/fs/gnunet-service-fs_cadet_client.c:382 3745#: src/fs/gnunet-service-fs_cadet_client.c:384
3756#, fuzzy 3746#, fuzzy
3757msgid "# replies received via cadet dropped" 3747msgid "# replies received via cadet dropped"
3758msgstr "# các byte kiểu %d được nhận" 3748msgstr "# các byte kiểu %d được nhận"
3759 3749
3760#: src/fs/gnunet-service-fs_cadet_server.c:263 3750#: src/fs/gnunet-service-fs_cadet_server.c:265
3761#, fuzzy 3751#, fuzzy
3762msgid "# queries received via CADET not answered" 3752msgid "# queries received via CADET not answered"
3763msgstr "# các byte đã nhận qua TCP" 3753msgstr "# các byte đã nhận qua TCP"
3764 3754
3765#: src/fs/gnunet-service-fs_cadet_server.c:318 3755#: src/fs/gnunet-service-fs_cadet_server.c:320
3766#, fuzzy 3756#, fuzzy
3767msgid "# Blocks transferred via cadet" 3757msgid "# Blocks transferred via cadet"
3768msgstr "# các byte được gửi" 3758msgstr "# các byte được gửi"
3769 3759
3770#: src/fs/gnunet-service-fs_cadet_server.c:344 3760#: src/fs/gnunet-service-fs_cadet_server.c:346
3771#, fuzzy 3761#, fuzzy
3772msgid "# queries received via cadet" 3762msgid "# queries received via cadet"
3773msgstr "# các byte đã nhận qua TCP" 3763msgstr "# các byte đã nhận qua TCP"
3774 3764
3775#: src/fs/gnunet-service-fs_cadet_server.c:386 3765#: src/fs/gnunet-service-fs_cadet_server.c:388
3776#, fuzzy 3766#, fuzzy
3777msgid "# cadet client connections rejected" 3767msgid "# cadet client connections rejected"
3778msgstr "# các kết nối dht" 3768msgstr "# các kết nối dht"
3779 3769
3780#: src/fs/gnunet-service-fs_cadet_server.c:393 3770#: src/fs/gnunet-service-fs_cadet_server.c:395
3781#: src/fs/gnunet-service-fs_cadet_server.c:433 3771#: src/fs/gnunet-service-fs_cadet_server.c:435
3782#, fuzzy 3772#, fuzzy
3783msgid "# cadet connections active" 3773msgid "# cadet connections active"
3784msgstr "# các kết nối dht" 3774msgstr "# các kết nối dht"
3785 3775
3786#: src/fs/gnunet-service-fs_cp.c:684 3776#: src/fs/gnunet-service-fs_cp.c:685
3787#, fuzzy 3777#, fuzzy
3788msgid "# migration stop messages received" 3778msgid "# migration stop messages received"
3789msgstr "# các thông báo phát hiện dht được nhận" 3779msgstr "# các thông báo phát hiện dht được nhận"
3790 3780
3791#: src/fs/gnunet-service-fs_cp.c:688 3781#: src/fs/gnunet-service-fs_cp.c:689
3792#, c-format 3782#, c-format
3793msgid "Migration of content to peer `%s' blocked for %s\n" 3783msgid "Migration of content to peer `%s' blocked for %s\n"
3794msgstr "" 3784msgstr ""
3795 3785
3796#: src/fs/gnunet-service-fs_cp.c:721 src/fs/gnunet-service-fs_cp.c:1343 3786#: src/fs/gnunet-service-fs_cp.c:722 src/fs/gnunet-service-fs_cp.c:1344
3797msgid "# P2P searches active" 3787msgid "# P2P searches active"
3798msgstr "" 3788msgstr ""
3799 3789
3800#: src/fs/gnunet-service-fs_cp.c:816 3790#: src/fs/gnunet-service-fs_cp.c:817
3801msgid "# artificial delays introduced (ms)" 3791msgid "# artificial delays introduced (ms)"
3802msgstr "" 3792msgstr ""
3803 3793
3804#: src/fs/gnunet-service-fs_cp.c:873 3794#: src/fs/gnunet-service-fs_cp.c:874
3805#, fuzzy 3795#, fuzzy
3806msgid "# replies dropped due to type mismatch" 3796msgid "# replies dropped due to type mismatch"
3807msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 3797msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
3808 3798
3809#: src/fs/gnunet-service-fs_cp.c:881 3799#: src/fs/gnunet-service-fs_cp.c:882
3810#, fuzzy 3800#, fuzzy
3811msgid "# replies received for other peers" 3801msgid "# replies received for other peers"
3812msgstr "# các byte kiểu %d được nhận" 3802msgstr "# các byte kiểu %d được nhận"
3813 3803
3814#: src/fs/gnunet-service-fs_cp.c:895 3804#: src/fs/gnunet-service-fs_cp.c:896
3815msgid "# replies dropped due to insufficient cover traffic" 3805msgid "# replies dropped due to insufficient cover traffic"
3816msgstr "" 3806msgstr ""
3817 3807
3818#: src/fs/gnunet-service-fs_cp.c:942 3808#: src/fs/gnunet-service-fs_cp.c:943
3819msgid "# P2P searches destroyed due to ultimate reply" 3809msgid "# P2P searches destroyed due to ultimate reply"
3820msgstr "" 3810msgstr ""
3821 3811
3822#: src/fs/gnunet-service-fs_cp.c:1013 3812#: src/fs/gnunet-service-fs_cp.c:1014
3823#, fuzzy 3813#, fuzzy
3824msgid "# requests done for free (low load)" 3814msgid "# requests done for free (low load)"
3825msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 3815msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
3826 3816
3827#: src/fs/gnunet-service-fs_cp.c:1038 3817#: src/fs/gnunet-service-fs_cp.c:1039
3828msgid "# request dropped, priority insufficient" 3818msgid "# request dropped, priority insufficient"
3829msgstr "" 3819msgstr ""
3830 3820
3831#: src/fs/gnunet-service-fs_cp.c:1048 3821#: src/fs/gnunet-service-fs_cp.c:1049
3832#, fuzzy 3822#, fuzzy
3833msgid "# requests done for a price (normal load)" 3823msgid "# requests done for a price (normal load)"
3834msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 3824msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
3835 3825
3836#: src/fs/gnunet-service-fs_cp.c:1146 3826#: src/fs/gnunet-service-fs_cp.c:1147
3837#, fuzzy 3827#, fuzzy
3838msgid "# requests dropped due to higher-TTL request" 3828msgid "# requests dropped due to higher-TTL request"
3839msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 3829msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
3840 3830
3841#: src/fs/gnunet-service-fs_cp.c:1203 3831#: src/fs/gnunet-service-fs_cp.c:1204
3842msgid "# GET requests received (from other peers)" 3832msgid "# GET requests received (from other peers)"
3843msgstr "" 3833msgstr ""
3844 3834
3845#: src/fs/gnunet-service-fs_cp.c:1226 3835#: src/fs/gnunet-service-fs_cp.c:1227
3846#, fuzzy 3836#, fuzzy
3847msgid "# requests dropped due to missing reverse route" 3837msgid "# requests dropped due to missing reverse route"
3848msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 3838msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
3849 3839
3850#: src/fs/gnunet-service-fs_cp.c:1239 3840#: src/fs/gnunet-service-fs_cp.c:1240
3851#, fuzzy 3841#, fuzzy
3852msgid "# requests dropped due to full reply queue" 3842msgid "# requests dropped due to full reply queue"
3853msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 3843msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
3854 3844
3855#: src/fs/gnunet-service-fs_cp.c:1295 3845#: src/fs/gnunet-service-fs_cp.c:1296
3856#, fuzzy 3846#, fuzzy
3857msgid "# requests dropped due TTL underflow" 3847msgid "# requests dropped due TTL underflow"
3858msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 3848msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
3859 3849
3860#: src/fs/gnunet-service-fs_cp.c:1339 3850#: src/fs/gnunet-service-fs_cp.c:1340
3861#, fuzzy 3851#, fuzzy
3862msgid "# P2P query messages received and processed" 3852msgid "# P2P query messages received and processed"
3863msgstr "# các thông báo phát hiện dht được nhận" 3853msgstr "# các thông báo phát hiện dht được nhận"
3864 3854
3865#: src/fs/gnunet-service-fs_cp.c:1706 3855#: src/fs/gnunet-service-fs_cp.c:1707
3866#, fuzzy 3856#, fuzzy
3867msgid "# migration stop messages sent" 3857msgid "# migration stop messages sent"
3868msgstr "# các thông báo phát hiện dht được nhận" 3858msgstr "# các thông báo phát hiện dht được nhận"
3869 3859
3870#: src/fs/gnunet-service-fs_indexing.c:132 3860#: src/fs/gnunet-service-fs_indexing.c:134
3871#: src/fs/gnunet-service-fs_indexing.c:193 3861#: src/fs/gnunet-service-fs_indexing.c:195
3872#, fuzzy, c-format 3862#, fuzzy, c-format
3873msgid "Could not open `%s'.\n" 3863msgid "Could not open `%s'.\n"
3874msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n" 3864msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
3875 3865
3876#: src/fs/gnunet-service-fs_indexing.c:149 3866#: src/fs/gnunet-service-fs_indexing.c:151
3877#, fuzzy, c-format 3867#, fuzzy, c-format
3878msgid "Error writing `%s'.\n" 3868msgid "Error writing `%s'.\n"
3879msgstr "Gặp lỗi khi tạo người dùng" 3869msgstr "Gặp lỗi khi tạo người dùng"
3880 3870
3881#: src/fs/gnunet-service-fs_indexing.c:251 3871#: src/fs/gnunet-service-fs_indexing.c:253
3882#, fuzzy, c-format 3872#, fuzzy, c-format
3883msgid "Failed to delete bogus block: %s\n" 3873msgid "Failed to delete bogus block: %s\n"
3884msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 3874msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
3885 3875
3886#: src/fs/gnunet-service-fs_indexing.c:329 3876#: src/fs/gnunet-service-fs_indexing.c:331
3887msgid "# index blocks removed: original file inaccessible" 3877msgid "# index blocks removed: original file inaccessible"
3888msgstr "" 3878msgstr ""
3889 3879
3890#: src/fs/gnunet-service-fs_indexing.c:355 3880#: src/fs/gnunet-service-fs_indexing.c:357
3891#, fuzzy, c-format 3881#, fuzzy, c-format
3892msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n" 3882msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n"
3893msgstr "Không thể giải quyết « %s » (%s): %s\n" 3883msgstr "Không thể giải quyết « %s » (%s): %s\n"
3894 3884
3895#: src/fs/gnunet-service-fs_indexing.c:359 3885#: src/fs/gnunet-service-fs_indexing.c:361
3896msgid "not indexed" 3886msgid "not indexed"
3897msgstr "" 3887msgstr ""
3898 3888
3899#: src/fs/gnunet-service-fs_indexing.c:392 3889#: src/fs/gnunet-service-fs_indexing.c:394
3900#, fuzzy, c-format 3890#, fuzzy, c-format
3901msgid "Indexed file `%s' changed at offset %llu\n" 3891msgid "Indexed file `%s' changed at offset %llu\n"
3902msgstr "Đánh chỉ mục dữ liệu của tập tin « %s » bị lỗi tại vị tri %llu.\n" 3892msgstr "Đánh chỉ mục dữ liệu của tập tin « %s » bị lỗi tại vị tri %llu.\n"
3903 3893
3904#: src/fs/gnunet-service-fs_indexing.c:516 3894#: src/fs/gnunet-service-fs_indexing.c:518
3905#, c-format 3895#, c-format
3906msgid "" 3896msgid ""
3907"Index request received for file `%s' is already indexed as `%s'. Permitting " 3897"Index request received for file `%s' is already indexed as `%s'. Permitting "
3908"anyway.\n" 3898"anyway.\n"
3909msgstr "" 3899msgstr ""
3910 3900
3911#: src/fs/gnunet-service-fs_pe.c:263 3901#: src/fs/gnunet-service-fs_pe.c:265
3912#, fuzzy 3902#, fuzzy
3913msgid "# average retransmission delay (ms)" 3903msgid "# average retransmission delay (ms)"
3914msgstr "# thời gian trung bình còn kết nối (theo miligiây)" 3904msgstr "# thời gian trung bình còn kết nối (theo miligiây)"
3915 3905
3916#: src/fs/gnunet-service-fs_pe.c:425 3906#: src/fs/gnunet-service-fs_pe.c:427
3917msgid "# delay heap timeout (ms)" 3907msgid "# delay heap timeout (ms)"
3918msgstr "" 3908msgstr ""
3919 3909
3920#: src/fs/gnunet-service-fs_pe.c:436 3910#: src/fs/gnunet-service-fs_pe.c:438
3921#, fuzzy 3911#, fuzzy
3922msgid "# query plans executed" 3912msgid "# query plans executed"
3923msgstr "# các yêu cầu dht được định tuyến" 3913msgstr "# các yêu cầu dht được định tuyến"
3924 3914
3925#: src/fs/gnunet-service-fs_pe.c:464 3915#: src/fs/gnunet-service-fs_pe.c:466
3926#, fuzzy 3916#, fuzzy
3927msgid "# query messages sent to other peers" 3917msgid "# query messages sent to other peers"
3928msgstr "# các byte thông báo gửi đi bị loại bỏ" 3918msgstr "# các byte thông báo gửi đi bị loại bỏ"
3929 3919
3930#: src/fs/gnunet-service-fs_pe.c:534 3920#: src/fs/gnunet-service-fs_pe.c:536
3931#, fuzzy 3921#, fuzzy
3932msgid "# requests merged" 3922msgid "# requests merged"
3933msgstr "# các yêu cầu get (lấy) dht được nhận" 3923msgstr "# các yêu cầu get (lấy) dht được nhận"
3934 3924
3935#: src/fs/gnunet-service-fs_pe.c:544 3925#: src/fs/gnunet-service-fs_pe.c:546
3936#, fuzzy 3926#, fuzzy
3937msgid "# requests refreshed" 3927msgid "# requests refreshed"
3938msgstr "# các yêu cầu get (lấy) dht được nhận" 3928msgstr "# các yêu cầu get (lấy) dht được nhận"
3939 3929
3940#: src/fs/gnunet-service-fs_pe.c:604 src/fs/gnunet-service-fs_pe.c:707 3930#: src/fs/gnunet-service-fs_pe.c:606 src/fs/gnunet-service-fs_pe.c:709
3941#: src/fs/gnunet-service-fs_pe.c:786 3931#: src/fs/gnunet-service-fs_pe.c:788
3942msgid "# query plan entries" 3932msgid "# query plan entries"
3943msgstr "" 3933msgstr ""
3944 3934
3945#: src/fs/gnunet-service-fs_pr.c:328 3935#: src/fs/gnunet-service-fs_pr.c:330
3946#, fuzzy 3936#, fuzzy
3947msgid "# Pending requests created" 3937msgid "# Pending requests created"
3948msgstr "# các yêu cầu get (lấy) dht được nhận" 3938msgstr "# các yêu cầu get (lấy) dht được nhận"
3949 3939
3950#: src/fs/gnunet-service-fs_pr.c:428 src/fs/gnunet-service-fs_pr.c:675 3940#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
3951#, fuzzy 3941#, fuzzy
3952msgid "# Pending requests active" 3942msgid "# Pending requests active"
3953msgstr "# các yêu cầu get (lấy) dht được nhận" 3943msgstr "# các yêu cầu get (lấy) dht được nhận"
3954 3944
3955#: src/fs/gnunet-service-fs_pr.c:856 3945#: src/fs/gnunet-service-fs_pr.c:858
3956#, fuzzy 3946#, fuzzy
3957msgid "# replies received and matched" 3947msgid "# replies received and matched"
3958msgstr "# các byte kiểu %d được nhận" 3948msgstr "# các byte kiểu %d được nhận"
3959 3949
3960#: src/fs/gnunet-service-fs_pr.c:892 3950#: src/fs/gnunet-service-fs_pr.c:894
3961msgid "# duplicate replies discarded (bloomfilter)" 3951msgid "# duplicate replies discarded (bloomfilter)"
3962msgstr "" 3952msgstr ""
3963 3953
3964#: src/fs/gnunet-service-fs_pr.c:901 3954#: src/fs/gnunet-service-fs_pr.c:903
3965msgid "# irrelevant replies discarded" 3955msgid "# irrelevant replies discarded"
3966msgstr "" 3956msgstr ""
3967 3957
3968#: src/fs/gnunet-service-fs_pr.c:916 3958#: src/fs/gnunet-service-fs_pr.c:918
3969#, c-format 3959#, c-format
3970msgid "Unsupported block type %u\n" 3960msgid "Unsupported block type %u\n"
3971msgstr "" 3961msgstr ""
3972 3962
3973#: src/fs/gnunet-service-fs_pr.c:933 3963#: src/fs/gnunet-service-fs_pr.c:935
3974#, fuzzy 3964#, fuzzy
3975msgid "# results found locally" 3965msgid "# results found locally"
3976msgstr "# nội dung lỗ hổng được tìm cục bộ" 3966msgstr "# nội dung lỗ hổng được tìm cục bộ"
3977 3967
3978#: src/fs/gnunet-service-fs_pr.c:1063 3968#: src/fs/gnunet-service-fs_pr.c:1065
3979msgid "# Datastore `PUT' failures" 3969msgid "# Datastore `PUT' failures"
3980msgstr "" 3970msgstr ""
3981 3971
3982#: src/fs/gnunet-service-fs_pr.c:1091 3972#: src/fs/gnunet-service-fs_pr.c:1093
3983#, fuzzy 3973#, fuzzy
3984msgid "# storage requests dropped due to high load" 3974msgid "# storage requests dropped due to high load"
3985msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 3975msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
3986 3976
3987#: src/fs/gnunet-service-fs_pr.c:1129 3977#: src/fs/gnunet-service-fs_pr.c:1131
3988#, fuzzy 3978#, fuzzy
3989msgid "# Replies received from DHT" 3979msgid "# Replies received from DHT"
3990msgstr "# các byte đã nhận qua HTTP" 3980msgstr "# các byte đã nhận qua HTTP"
3991 3981
3992#: src/fs/gnunet-service-fs_pr.c:1260 3982#: src/fs/gnunet-service-fs_pr.c:1262
3993#, fuzzy 3983#, fuzzy
3994msgid "# Replies received from CADET" 3984msgid "# Replies received from CADET"
3995msgstr "# các byte đã nhận qua HTTP" 3985msgstr "# các byte đã nhận qua HTTP"
3996 3986
3997#: src/fs/gnunet-service-fs_pr.c:1312 3987#: src/fs/gnunet-service-fs_pr.c:1314
3998#, c-format 3988#, c-format
3999msgid "Datastore lookup already took %s!\n" 3989msgid "Datastore lookup already took %s!\n"
4000msgstr "" 3990msgstr ""
4001 3991
4002#: src/fs/gnunet-service-fs_pr.c:1333 3992#: src/fs/gnunet-service-fs_pr.c:1335
4003#, c-format 3993#, c-format
4004msgid "On-demand lookup already took %s!\n" 3994msgid "On-demand lookup already took %s!\n"
4005msgstr "" 3995msgstr ""
4006 3996
4007#: src/fs/gnunet-service-fs_pr.c:1393 3997#: src/fs/gnunet-service-fs_pr.c:1395
4008msgid "# requested DBLOCK or IBLOCK not found" 3998msgid "# requested DBLOCK or IBLOCK not found"
4009msgstr "" 3999msgstr ""
4010 4000
4011#: src/fs/gnunet-service-fs_pr.c:1452 4001#: src/fs/gnunet-service-fs_pr.c:1454
4012msgid "# Datastore lookups concluded (error queueing)" 4002msgid "# Datastore lookups concluded (error queueing)"
4013msgstr "" 4003msgstr ""
4014 4004
4015#: src/fs/gnunet-service-fs_pr.c:1507 4005#: src/fs/gnunet-service-fs_pr.c:1509
4016msgid "# Datastore lookups concluded (no results)" 4006msgid "# Datastore lookups concluded (no results)"
4017msgstr "" 4007msgstr ""
4018 4008
4019#: src/fs/gnunet-service-fs_pr.c:1522 4009#: src/fs/gnunet-service-fs_pr.c:1524
4020msgid "# Datastore lookups concluded (seen all)" 4010msgid "# Datastore lookups concluded (seen all)"
4021msgstr "" 4011msgstr ""
4022 4012
4023#: src/fs/gnunet-service-fs_pr.c:1546 4013#: src/fs/gnunet-service-fs_pr.c:1548
4024msgid "# Datastore lookups aborted (more than MAX_RESULTS)" 4014msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
4025msgstr "" 4015msgstr ""
4026 4016
4027#: src/fs/gnunet-service-fs_pr.c:1560 4017#: src/fs/gnunet-service-fs_pr.c:1562
4028msgid "# on-demand blocks matched requests" 4018msgid "# on-demand blocks matched requests"
4029msgstr "" 4019msgstr ""
4030 4020
4031#: src/fs/gnunet-service-fs_pr.c:1581 4021#: src/fs/gnunet-service-fs_pr.c:1583
4032msgid "# on-demand lookups performed successfully" 4022msgid "# on-demand lookups performed successfully"
4033msgstr "" 4023msgstr ""
4034 4024
4035#: src/fs/gnunet-service-fs_pr.c:1586 4025#: src/fs/gnunet-service-fs_pr.c:1588
4036msgid "# on-demand lookups failed" 4026msgid "# on-demand lookups failed"
4037msgstr "" 4027msgstr ""
4038 4028
4039#: src/fs/gnunet-service-fs_pr.c:1624 4029#: src/fs/gnunet-service-fs_pr.c:1626
4040msgid "# Datastore lookups concluded (found last result)" 4030msgid "# Datastore lookups concluded (found last result)"
4041msgstr "" 4031msgstr ""
4042 4032
4043#: src/fs/gnunet-service-fs_pr.c:1637 4033#: src/fs/gnunet-service-fs_pr.c:1639
4044msgid "# Datastore lookups concluded (load too high)" 4034msgid "# Datastore lookups concluded (load too high)"
4045msgstr "" 4035msgstr ""
4046 4036
4047#: src/fs/gnunet-service-fs_pr.c:1691 4037#: src/fs/gnunet-service-fs_pr.c:1693
4048msgid "# Datastore lookups initiated" 4038msgid "# Datastore lookups initiated"
4049msgstr "" 4039msgstr ""
4050 4040
4051#: src/fs/gnunet-service-fs_pr.c:1747 4041#: src/fs/gnunet-service-fs_pr.c:1749
4052#, fuzzy 4042#, fuzzy
4053msgid "# GAP PUT messages received" 4043msgid "# GAP PUT messages received"
4054msgstr "# các thông báo PONG đã mật mã được nhận" 4044msgstr "# các thông báo PONG đã mật mã được nhận"
4055 4045
4056#: src/fs/gnunet-service-fs_push.c:644 4046#: src/fs/gnunet-service-fs_push.c:646
4057msgid "time required, content pushing disabled" 4047msgid "time required, content pushing disabled"
4058msgstr "" 4048msgstr ""
4059 4049
4060#: src/fs/gnunet-unindex.c:87 4050#: src/fs/gnunet-unindex.c:89
4061#, fuzzy, c-format 4051#, fuzzy, c-format
4062msgid "Unindexing at %llu/%llu (%s remaining)\n" 4052msgid "Unindexing at %llu/%llu (%s remaining)\n"
4063msgstr "Lỗi bỏ chỉ mục (không đưa ra lý do)." 4053msgstr "Lỗi bỏ chỉ mục (không đưa ra lý do)."
4064 4054
4065#: src/fs/gnunet-unindex.c:93 4055#: src/fs/gnunet-unindex.c:95
4066#, fuzzy, c-format 4056#, fuzzy, c-format
4067msgid "Error unindexing: %s.\n" 4057msgid "Error unindexing: %s.\n"
4068msgstr "" 4058msgstr ""
4069"\n" 4059"\n"
4070"Gặp lỗi khi bỏ chỉ mục tập tin: %s\n" 4060"Gặp lỗi khi bỏ chỉ mục tập tin: %s\n"
4071 4061
4072#: src/fs/gnunet-unindex.c:98 4062#: src/fs/gnunet-unindex.c:100
4073#, fuzzy 4063#, fuzzy
4074msgid "Unindexing done.\n" 4064msgid "Unindexing done.\n"
4075msgstr "Bỏ chỉ mục tập tin." 4065msgstr "Bỏ chỉ mục tập tin."
4076 4066
4077#: src/fs/gnunet-unindex.c:127 4067#: src/fs/gnunet-unindex.c:129
4078#, fuzzy, c-format 4068#, fuzzy, c-format
4079msgid "You must specify one and only one filename for unindexing.\n" 4069msgid "You must specify one and only one filename for unindexing.\n"
4080msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n" 4070msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
4081 4071
4082#: src/fs/gnunet-unindex.c:144 4072#: src/fs/gnunet-unindex.c:146
4083#, fuzzy 4073#, fuzzy
4084msgid "Could not start unindex operation.\n" 4074msgid "Could not start unindex operation.\n"
4085msgstr "Không thể truy cập đến thông tin về không gian tên.\n" 4075msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
4086 4076
4087#: src/fs/gnunet-unindex.c:176 4077#: src/fs/gnunet-unindex.c:178
4088msgid "Unindex a file that was previously indexed with gnunet-publish." 4078msgid "Unindex a file that was previously indexed with gnunet-publish."
4089msgstr "" 4079msgstr ""
4090 4080
4091#: src/gns/gns_tld_api.c:274 4081#: src/gns/gns_tld_api.c:348
4092msgid "Expected a base32-encoded public zone key\n" 4082msgid "Expected a base32-encoded public zone key\n"
4093msgstr "" 4083msgstr ""
4094 4084
4095#: src/gns/gnunet-bcd.c:125 4085#: src/gns/gnunet-bcd.c:127
4096#, fuzzy, c-format 4086#, fuzzy, c-format
4097msgid "Refusing `%s' request to HTTP server\n" 4087msgid "Refusing `%s' request to HTTP server\n"
4098msgstr "trình phục vụ danh sách máy HTTP hợp nhất" 4088msgstr "trình phục vụ danh sách máy HTTP hợp nhất"
4099 4089
4100#: src/gns/gnunet-bcd.c:355 4090#: src/gns/gnunet-bcd.c:357
4101#, c-format 4091#, c-format
4102msgid "Invalid port number %u. Exiting.\n" 4092msgid "Invalid port number %u. Exiting.\n"
4103msgstr "" 4093msgstr ""
4104 4094
4105#: src/gns/gnunet-bcd.c:360 4095#: src/gns/gnunet-bcd.c:362
4106#, fuzzy, c-format 4096#, fuzzy, c-format
4107msgid "Businesscard HTTP server starts on %u\n" 4097msgid "Businesscard HTTP server starts on %u\n"
4108msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất" 4098msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất"
4109 4099
4110#: src/gns/gnunet-bcd.c:374 4100#: src/gns/gnunet-bcd.c:376
4111#, fuzzy, c-format 4101#, fuzzy, c-format
4112msgid "Could not start businesscard HTTP server on port %u\n" 4102msgid "Could not start businesscard HTTP server on port %u\n"
4113msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất" 4103msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất"
4114 4104
4115#: src/gns/gnunet-bcd.c:521 4105#: src/gns/gnunet-bcd.c:523
4116msgid "Run HTTP serve on port PORT (default is 8888)" 4106msgid "Run HTTP serve on port PORT (default is 8888)"
4117msgstr "" 4107msgstr ""
4118 4108
4119#: src/gns/gnunet-bcd.c:534 4109#: src/gns/gnunet-bcd.c:536
4120msgid "GNUnet HTTP server to create business cards" 4110msgid "GNUnet HTTP server to create business cards"
4121msgstr "" 4111msgstr ""
4122 4112
4123#: src/gns/gnunet-dns2gns.c:201 4113#: src/gns/gnunet-dns2gns.c:203
4124#, fuzzy 4114#, fuzzy
4125msgid "Failed to pack DNS response into UDP packet!\n" 4115msgid "Failed to pack DNS response into UDP packet!\n"
4126msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 4116msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
4127 4117
4128#: src/gns/gnunet-dns2gns.c:403 4118#: src/gns/gnunet-dns2gns.c:405
4129#, c-format 4119#, c-format
4130msgid "Cannot parse DNS request from %s\n" 4120msgid "Cannot parse DNS request from %s\n"
4131msgstr "" 4121msgstr ""
4132 4122
4133#: src/gns/gnunet-dns2gns.c:419 4123#: src/gns/gnunet-dns2gns.c:421
4134#, fuzzy, c-format 4124#, fuzzy, c-format
4135msgid "Received malformed DNS request from %s\n" 4125msgid "Received malformed DNS request from %s\n"
4136msgstr "Nhận yêu cầu định tuyến\n" 4126msgstr "Nhận yêu cầu định tuyến\n"
4137 4127
4138#: src/gns/gnunet-dns2gns.c:427 4128#: src/gns/gnunet-dns2gns.c:429
4139#, fuzzy, c-format 4129#, fuzzy, c-format
4140msgid "Received unsupported DNS request from %s\n" 4130msgid "Received unsupported DNS request from %s\n"
4141msgstr "Nhận yêu cầu định tuyến\n" 4131msgstr "Nhận yêu cầu định tuyến\n"
4142 4132
4143#: src/gns/gnunet-dns2gns.c:586 4133#: src/gns/gnunet-dns2gns.c:588
4144#, fuzzy 4134#, fuzzy
4145msgid "No DNS server specified!\n" 4135msgid "No DNS server specified!\n"
4146msgstr "Chưa ghi rõ từ khoá.\n" 4136msgstr "Chưa ghi rõ từ khoá.\n"
4147 4137
4148#: src/gns/gnunet-dns2gns.c:686 4138#: src/gns/gnunet-dns2gns.c:688
4149msgid "IP of recursive DNS resolver to use (required)" 4139msgid "IP of recursive DNS resolver to use (required)"
4150msgstr "" 4140msgstr ""
4151 4141
4152#: src/gns/gnunet-dns2gns.c:691 4142#: src/gns/gnunet-dns2gns.c:693
4153msgid "UDP port to listen on for inbound DNS requests; default: 2853" 4143msgid "UDP port to listen on for inbound DNS requests; default: 2853"
4154msgstr "" 4144msgstr ""
4155 4145
4156#: src/gns/gnunet-dns2gns.c:708 4146#: src/gns/gnunet-dns2gns.c:710
4157msgid "GNUnet DNS-to-GNS proxy (a DNS server)" 4147msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
4158msgstr "" 4148msgstr ""
4159 4149
4160#: src/gns/gnunet-gns-benchmark.c:580 4150#: src/gns/gnunet-gns-benchmark.c:582
4161msgid "how long to wait between queries" 4151msgid "how long to wait between queries"
4162msgstr "" 4152msgstr ""
4163 4153
4164#: src/gns/gnunet-gns-benchmark.c:585 4154#: src/gns/gnunet-gns-benchmark.c:587
4165msgid "how long to wait for an answer" 4155msgid "how long to wait for an answer"
4166msgstr "" 4156msgstr ""
4167 4157
4168#: src/gns/gnunet-gns-benchmark.c:589 4158#: src/gns/gnunet-gns-benchmark.c:591
4169msgid "look for GNS2DNS records instead of ANY" 4159msgid "look for GNS2DNS records instead of ANY"
4170msgstr "" 4160msgstr ""
4171 4161
4172#: src/gns/gnunet-gns.c:197 4162#: src/gns/gnunet-gns.c:199
4173#, c-format 4163#, c-format
4174msgid "Invalid typename specified, assuming `ANY'\n" 4164msgid "Invalid typename specified, assuming `ANY'\n"
4175msgstr "" 4165msgstr ""
4176 4166
4177#: src/gns/gnunet-gns.c:231 4167#: src/gns/gnunet-gns.c:233
4178msgid "Lookup a record for the given name" 4168msgid "Lookup a record for the given name"
4179msgstr "" 4169msgstr ""
4180 4170
4181#: src/gns/gnunet-gns.c:236 4171#: src/gns/gnunet-gns.c:238
4182#, fuzzy 4172#, fuzzy
4183msgid "Specify the type of the record to lookup" 4173msgid "Specify the type of the record to lookup"
4184msgstr "xác định mức ưu tiên của nội dung" 4174msgstr "xác định mức ưu tiên của nội dung"
4185 4175
4186#: src/gns/gnunet-gns.c:240 4176#: src/gns/gnunet-gns.c:242
4187msgid "No unneeded output" 4177msgid "No unneeded output"
4188msgstr "" 4178msgstr ""
4189 4179
4190#: src/gns/gnunet-gns.c:256 4180#: src/gns/gnunet-gns.c:258
4191#, fuzzy 4181#, fuzzy
4192msgid "GNUnet GNS resolver tool" 4182msgid "GNUnet GNS resolver tool"
4193msgstr "Bản ghi lỗi GNUnet" 4183msgstr "Bản ghi lỗi GNUnet"
4194 4184
4195#: src/gns/gnunet-gns-helper-service-w32.c:600 4185#: src/gns/gnunet-gns-helper-service-w32.c:602
4196msgid "Not ready to process requests, lacking ego data\n" 4186msgid "Not ready to process requests, lacking ego data\n"
4197msgstr "" 4187msgstr ""
4198 4188
4199#: src/gns/gnunet-gns-helper-service-w32.c:699 4189#: src/gns/gnunet-gns-helper-service-w32.c:701
4200msgid "" 4190msgid ""
4201"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-" 4191"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-"
4202"gns-import.sh?\n" 4192"gns-import.sh?\n"
4203msgstr "" 4193msgstr ""
4204 4194
4205#: src/gns/gnunet-gns-helper-service-w32.c:737 4195#: src/gns/gnunet-gns-helper-service-w32.c:739
4206#, fuzzy, c-format 4196#, fuzzy, c-format
4207msgid "Failed to connect to identity service\n" 4197msgid "Failed to connect to identity service\n"
4208msgstr "Lỗi kết nối đến gnunetd.\n" 4198msgstr "Lỗi kết nối đến gnunetd.\n"
4209 4199
4210#: src/gns/gnunet-gns-import.c:450 4200#: src/gns/gnunet-gns-import.c:452
4211msgid "This program will import some GNS authorities into your GNS namestore." 4201msgid "This program will import some GNS authorities into your GNS namestore."
4212msgstr "" 4202msgstr ""
4213 4203
4214#: src/gns/gnunet-gns-proxy.c:110 4204#: src/gns/gnunet-gns-proxy.c:118
4215#: src/hostlist/gnunet-daemon-hostlist_client.c:533 4205#: src/hostlist/gnunet-daemon-hostlist_client.c:535
4216#: src/hostlist/gnunet-daemon-hostlist_client.c:751 4206#: src/hostlist/gnunet-daemon-hostlist_client.c:753
4217#: src/hostlist/gnunet-daemon-hostlist_client.c:757 4207#: src/hostlist/gnunet-daemon-hostlist_client.c:759
4218#: src/hostlist/gnunet-daemon-hostlist_client.c:809 4208#: src/hostlist/gnunet-daemon-hostlist_client.c:811
4219#: src/hostlist/gnunet-daemon-hostlist_client.c:818 4209#: src/hostlist/gnunet-daemon-hostlist_client.c:820
4220#: src/hostlist/gnunet-daemon-hostlist_client.c:929 4210#: src/hostlist/gnunet-daemon-hostlist_client.c:931
4221#: src/hostlist/gnunet-daemon-hostlist_client.c:1024 4211#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
4222#: src/hostlist/gnunet-daemon-hostlist_client.c:1029 4212#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
4223#: src/transport/plugin_transport_http_client.c:596 4213#: src/transport/plugin_transport_http_client.c:598
4224#: src/transport/plugin_transport_http_client.c:614 4214#: src/transport/plugin_transport_http_client.c:616
4225#, c-format 4215#, c-format
4226msgid "%s failed at %s:%d: `%s'\n" 4216msgid "%s failed at %s:%d: `%s'\n"
4227msgstr "%s bị lỗi tại %s:%d: « %s »\n" 4217msgstr "%s bị lỗi tại %s:%d: « %s »\n"
4228 4218
4229#: src/gns/gnunet-gns-proxy.c:960 4219#: src/gns/gnunet-gns-proxy.c:980
4230#, fuzzy, c-format 4220#, fuzzy, c-format
4231msgid "Unsupported CURL TLS backend %d\n" 4221msgid "Unsupported CURL TLS backend %d\n"
4232msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" 4222msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
4233 4223
4234#: src/gns/gnunet-gns-proxy.c:985 4224#: src/gns/gnunet-gns-proxy.c:1005
4235#, fuzzy, c-format 4225#, fuzzy, c-format
4236msgid "Failed to fetch CN from cert: %s\n" 4226msgid "Failed to fetch CN from cert: %s\n"
4237msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 4227msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
4238 4228
4239#: src/gns/gnunet-gns-proxy.c:1008 4229#: src/gns/gnunet-gns-proxy.c:1026
4240#, fuzzy, c-format 4230#, fuzzy, c-format
4241msgid "Failed to initialize DANE: %s\n" 4231msgid "Failed to initialize DANE: %s\n"
4242msgstr "Không thể sơ khởi SQLite: %s.\n" 4232msgstr "Không thể sơ khởi SQLite: %s.\n"
4243 4233
4244#: src/gns/gnunet-gns-proxy.c:1021 4234#: src/gns/gnunet-gns-proxy.c:1041
4245#, fuzzy, c-format 4235#, fuzzy, c-format
4246msgid "Failed to parse DANE record: %s\n" 4236msgid "Failed to parse DANE record: %s\n"
4247msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 4237msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
4248 4238
4249#: src/gns/gnunet-gns-proxy.c:1036 4239#: src/gns/gnunet-gns-proxy.c:1056
4250#, fuzzy, c-format 4240#, fuzzy, c-format
4251msgid "Failed to verify TLS connection using DANE: %s\n" 4241msgid "Failed to verify TLS connection using DANE: %s\n"
4252msgstr "Không thể lưu tập tin cấu hình « %s »:" 4242msgstr "Không thể lưu tập tin cấu hình « %s »:"
4253 4243
4254#: src/gns/gnunet-gns-proxy.c:1046 4244#: src/gns/gnunet-gns-proxy.c:1066
4255#, c-format 4245#, c-format
4256msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" 4246msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
4257msgstr "" 4247msgstr ""
4258 4248
4259#: src/gns/gnunet-gns-proxy.c:1070 4249#: src/gns/gnunet-gns-proxy.c:1090
4260#, c-format 4250#, c-format
4261msgid "TLS certificate subject name (%s) does not match `%s': %d\n" 4251msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
4262msgstr "" 4252msgstr ""
4263 4253
4264#: src/gns/gnunet-gns-proxy.c:1200 4254#: src/gns/gnunet-gns-proxy.c:1221
4265#, c-format 4255#, c-format
4266msgid "Cookie domain `%s' supplied by server is invalid\n" 4256msgid "Cookie domain `%s' supplied by server is invalid\n"
4267msgstr "" 4257msgstr ""
4268 4258
4269#: src/gns/gnunet-gns-proxy.c:2062 4259#: src/gns/gnunet-gns-proxy.c:2121
4270#, fuzzy, c-format 4260#, fuzzy, c-format
4271msgid "Unsupported HTTP method `%s'\n" 4261msgid "Unsupported HTTP method `%s'\n"
4272msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" 4262msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
4273 4263
4274#: src/gns/gnunet-gns-proxy.c:2583 4264#: src/gns/gnunet-gns-proxy.c:2642
4275#, fuzzy, c-format 4265#, fuzzy, c-format
4276msgid "Unable to import private key from file `%s'\n" 4266msgid "Unable to import private key from file `%s'\n"
4277msgstr "Không thể tạo tài khoản người dùng:" 4267msgstr "Không thể tạo tài khoản người dùng:"
4278 4268
4279#: src/gns/gnunet-gns-proxy.c:2615 4269#: src/gns/gnunet-gns-proxy.c:2674
4280#, fuzzy, c-format 4270#, fuzzy, c-format
4281msgid "Unable to import certificate from `%s'\n" 4271msgid "Unable to import certificate from `%s'\n"
4282msgstr "Không thể lưu tập tin cấu hình « %s »:" 4272msgstr "Không thể lưu tập tin cấu hình « %s »:"
4283 4273
4284#: src/gns/gnunet-gns-proxy.c:2814 4274#: src/gns/gnunet-gns-proxy.c:2875
4285#, fuzzy, c-format 4275#, fuzzy, c-format
4286msgid "Failed to start HTTPS server for `%s'\n" 4276msgid "Failed to start HTTPS server for `%s'\n"
4287msgstr "Lỗi bắt đầu thu thập.\n" 4277msgstr "Lỗi bắt đầu thu thập.\n"
4288 4278
4289#: src/gns/gnunet-gns-proxy.c:2839 src/rest/gnunet-rest-server.c:656 4279#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
4290#, fuzzy 4280#, fuzzy
4291msgid "Failed to pass client to MHD\n" 4281msgid "Failed to pass client to MHD\n"
4292msgstr "Lỗi kết nối đến gnunetd.\n" 4282msgstr "Lỗi kết nối đến gnunetd.\n"
4293 4283
4294#: src/gns/gnunet-gns-proxy.c:3169 4284#: src/gns/gnunet-gns-proxy.c:3233
4295#, fuzzy, c-format 4285#, fuzzy, c-format
4296msgid "Unsupported socks version %d\n" 4286msgid "Unsupported socks version %d\n"
4297msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" 4287msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
4298 4288
4299#: src/gns/gnunet-gns-proxy.c:3198 4289#: src/gns/gnunet-gns-proxy.c:3262
4300#, fuzzy, c-format 4290#, fuzzy, c-format
4301msgid "Unsupported socks command %d\n" 4291msgid "Unsupported socks command %d\n"
4302msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" 4292msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
4303 4293
4304#: src/gns/gnunet-gns-proxy.c:3280 4294#: src/gns/gnunet-gns-proxy.c:3345
4305#, fuzzy, c-format 4295#, fuzzy, c-format
4306msgid "Unsupported socks address type %d\n" 4296msgid "Unsupported socks address type %d\n"
4307msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" 4297msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
4308 4298
4309#: src/gns/gnunet-gns-proxy.c:3570 4299#: src/gns/gnunet-gns-proxy.c:3635
4310#, fuzzy, c-format 4300#, fuzzy, c-format
4311msgid "Failed to load X.509 key and certificate from `%s'\n" 4301msgid "Failed to load X.509 key and certificate from `%s'\n"
4312msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4302msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4313 4303
4314#: src/gns/gnunet-gns-proxy.c:3698 4304#: src/gns/gnunet-gns-proxy.c:3763
4315msgid "listen on specified port (default: 7777)" 4305msgid "listen on specified port (default: 7777)"
4316msgstr "" 4306msgstr ""
4317 4307
4318#: src/gns/gnunet-gns-proxy.c:3703 4308#: src/gns/gnunet-gns-proxy.c:3768
4319msgid "pem file to use as CA" 4309msgid "pem file to use as CA"
4320msgstr "" 4310msgstr ""
4321 4311
4322#: src/gns/gnunet-gns-proxy.c:3707 4312#: src/gns/gnunet-gns-proxy.c:3772
4323msgid "disable use of IPv6" 4313msgid "disable use of IPv6"
4324msgstr "" 4314msgstr ""
4325 4315
4326#: src/gns/gnunet-gns-proxy.c:3733 4316#: src/gns/gnunet-gns-proxy.c:3798
4327msgid "GNUnet GNS proxy" 4317msgid "GNUnet GNS proxy"
4328msgstr "" 4318msgstr ""
4329 4319
4330#: src/gns/gnunet-service-gns.c:511 4320#: src/gns/gnunet-service-gns.c:506
4331#, fuzzy 4321#, fuzzy
4332msgid "Properly base32-encoded public key required" 4322msgid "Properly base32-encoded public key required"
4333msgstr "Đối số không hợp lệ cho « %s ».\n" 4323msgstr "Đối số không hợp lệ cho « %s ».\n"
4334 4324
4335#: src/gns/gnunet-service-gns.c:547 4325#: src/gns/gnunet-service-gns.c:542
4336#, fuzzy 4326#, fuzzy
4337msgid "Failed to connect to the namecache!\n" 4327msgid "Failed to connect to the namecache!\n"
4338msgstr "Không kết nối được đến trình nền gnunetd." 4328msgstr "Không kết nối được đến trình nền gnunetd."
4339 4329
4340#: src/gns/gnunet-service-gns.c:566 4330#: src/gns/gnunet-service-gns.c:561
4341#: src/zonemaster/gnunet-service-zonemaster.c:873 4331#: src/zonemaster/gnunet-service-zonemaster.c:875
4342#: src/zonemaster/gnunet-service-zonemaster-monitor.c:438 4332#: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
4343#, fuzzy 4333#, fuzzy
4344msgid "Could not connect to DHT!\n" 4334msgid "Could not connect to DHT!\n"
4345msgstr "Không thể kết nối tới %s:%u: %s\n" 4335msgstr "Không thể kết nối tới %s:%u: %s\n"
4346 4336
4347#: src/gns/gnunet-service-gns_interceptor.c:257 4337#: src/gns/gnunet-service-gns_interceptor.c:259
4348#, fuzzy 4338#, fuzzy
4349msgid "Error converting GNS response to DNS response!\n" 4339msgid "Error converting GNS response to DNS response!\n"
4350msgstr "Gặp lỗi khi chuyển đổi các đối số sang URI.\n" 4340msgstr "Gặp lỗi khi chuyển đổi các đối số sang URI.\n"
4351 4341
4352#: src/gns/gnunet-service-gns_interceptor.c:364 4342#: src/gns/gnunet-service-gns_interceptor.c:366
4353#, fuzzy 4343#, fuzzy
4354msgid "Failed to connect to the DNS service!\n" 4344msgid "Failed to connect to the DNS service!\n"
4355msgstr "Lỗi kết nối đến gnunetd.\n" 4345msgstr "Lỗi kết nối đến gnunetd.\n"
4356 4346
4357#: src/gns/gnunet-service-gns_resolver.c:717 4347#: src/gns/gnunet-service-gns_resolver.c:700
4358#, c-format 4348#, c-format
4359msgid "Protocol `%s' unknown, skipping labels.\n" 4349msgid "Protocol `%s' unknown, skipping labels.\n"
4360msgstr "" 4350msgstr ""
4361 4351
4362#: src/gns/gnunet-service-gns_resolver.c:728 4352#: src/gns/gnunet-service-gns_resolver.c:711
4363#, c-format 4353#, c-format
4364msgid "Service `%s' unknown for protocol `%s', skipping labels.\n" 4354msgid "Service `%s' unknown for protocol `%s', skipping labels.\n"
4365msgstr "" 4355msgstr ""
4366 4356
4367#: src/gns/gnunet-service-gns_resolver.c:931 4357#: src/gns/gnunet-service-gns_resolver.c:914
4368#, fuzzy 4358#, fuzzy
4369msgid "Failed to parse DNS response\n" 4359msgid "Failed to parse DNS response\n"
4370msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 4360msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
4371 4361
4372#: src/gns/gnunet-service-gns_resolver.c:1112 4362#: src/gns/gnunet-service-gns_resolver.c:1095
4373#, c-format 4363#, c-format
4374msgid "Skipping record of unsupported type %d\n" 4364msgid "Skipping record of unsupported type %d\n"
4375msgstr "" 4365msgstr ""
4376 4366
4377#: src/gns/gnunet-service-gns_resolver.c:1382 4367#: src/gns/gnunet-service-gns_resolver.c:1365
4378#, c-format 4368#, c-format
4379msgid "VPN returned empty result for `%s'\n" 4369msgid "VPN returned empty result for `%s'\n"
4380msgstr "" 4370msgstr ""
4381 4371
4382#: src/gns/gnunet-service-gns_resolver.c:1823 4372#: src/gns/gnunet-service-gns_resolver.c:1806
4383#, c-format 4373#, c-format
4384msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" 4374msgid "GNS lookup resulted in DNS name that is too long (`%s')\n"
4385msgstr "" 4375msgstr ""
4386 4376
4387#: src/gns/gnunet-service-gns_resolver.c:1866 4377#: src/gns/gnunet-service-gns_resolver.c:1849
4388#, fuzzy, c-format 4378#, fuzzy, c-format
4389msgid "GNS lookup failed (zero records found for `%s')\n" 4379msgid "GNS lookup failed (zero records found for `%s')\n"
4390msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n" 4380msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n"
4391 4381
4392#: src/gns/gnunet-service-gns_resolver.c:2281 4382#: src/gns/gnunet-service-gns_resolver.c:2264
4393msgid "GNS lookup recursion failed (no delegation record found)\n" 4383msgid "GNS lookup recursion failed (no delegation record found)\n"
4394msgstr "" 4384msgstr ""
4395 4385
4396#: src/gns/gnunet-service-gns_resolver.c:2304 4386#: src/gns/gnunet-service-gns_resolver.c:2287
4397#, fuzzy, c-format 4387#, fuzzy, c-format
4398msgid "Failed to cache GNS resolution: %s\n" 4388msgid "Failed to cache GNS resolution: %s\n"
4399msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 4389msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
4400 4390
4401#: src/gns/gnunet-service-gns_resolver.c:2467 4391#: src/gns/gnunet-service-gns_resolver.c:2450
4402#, c-format 4392#, c-format
4403msgid "GNS namecache returned empty result for `%s'\n" 4393msgid "GNS namecache returned empty result for `%s'\n"
4404msgstr "" 4394msgstr ""
4405 4395
4406#: src/gns/gnunet-service-gns_resolver.c:2602 4396#: src/gns/gnunet-service-gns_resolver.c:2585
4407#, c-format 4397#, c-format
4408msgid "Zone %s was revoked, resolution fails\n" 4398msgid "Zone %s was revoked, resolution fails\n"
4409msgstr "" 4399msgstr ""
4410 4400
4411#: src/gns/plugin_gnsrecord_gns.c:179 4401#: src/gns/plugin_gnsrecord_gns.c:181
4412#, fuzzy, c-format 4402#, fuzzy, c-format
4413msgid "Unable to parse PKEY record `%s'\n" 4403msgid "Unable to parse PKEY record `%s'\n"
4414msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4404msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4415 4405
4416#: src/gns/plugin_gnsrecord_gns.c:210 4406#: src/gns/plugin_gnsrecord_gns.c:212
4417#, fuzzy, c-format 4407#, fuzzy, c-format
4418msgid "Unable to parse GNS2DNS record `%s'\n" 4408msgid "Unable to parse GNS2DNS record `%s'\n"
4419msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4409msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4420 4410
4421#: src/gns/plugin_gnsrecord_gns.c:231 4411#: src/gns/plugin_gnsrecord_gns.c:233
4422#, fuzzy, c-format 4412#, fuzzy, c-format
4423msgid "Failed to serialize GNS2DNS record with value `%s'\n" 4413msgid "Failed to serialize GNS2DNS record with value `%s'\n"
4424msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 4414msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
4425 4415
4426#: src/gns/plugin_gnsrecord_gns.c:256 4416#: src/gns/plugin_gnsrecord_gns.c:258
4427#, fuzzy, c-format 4417#, fuzzy, c-format
4428msgid "Unable to parse VPN record string `%s'\n" 4418msgid "Unable to parse VPN record string `%s'\n"
4429msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4419msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4430 4420
4431#: src/gns/plugin_gnsrecord_gns.c:292 4421#: src/gns/plugin_gnsrecord_gns.c:294
4432#, fuzzy, c-format 4422#, fuzzy, c-format
4433msgid "Unable to parse BOX record string `%s'\n" 4423msgid "Unable to parse BOX record string `%s'\n"
4434msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4424msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4435 4425
4436#: src/gnsrecord/plugin_gnsrecord_dns.c:357 4426#: src/gnsrecord/plugin_gnsrecord_dns.c:359
4437#, fuzzy, c-format 4427#, fuzzy, c-format
4438msgid "Unable to parse IPv4 address `%s'\n" 4428msgid "Unable to parse IPv4 address `%s'\n"
4439msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n" 4429msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
4440 4430
4441#: src/gnsrecord/plugin_gnsrecord_dns.c:378 4431#: src/gnsrecord/plugin_gnsrecord_dns.c:380
4442#, fuzzy, c-format 4432#, fuzzy, c-format
4443msgid "Failed to serialize NS record with value `%s'\n" 4433msgid "Failed to serialize NS record with value `%s'\n"
4444msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 4434msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
4445 4435
4446#: src/gnsrecord/plugin_gnsrecord_dns.c:400 4436#: src/gnsrecord/plugin_gnsrecord_dns.c:402
4447#, fuzzy, c-format 4437#, fuzzy, c-format
4448msgid "Failed to serialize CNAME record with value `%s'\n" 4438msgid "Failed to serialize CNAME record with value `%s'\n"
4449msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 4439msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
4450 4440
4451#: src/gnsrecord/plugin_gnsrecord_dns.c:485 4441#: src/gnsrecord/plugin_gnsrecord_dns.c:487
4452#, fuzzy, c-format 4442#, fuzzy, c-format
4453msgid "Failed to serialize CERT record with %u bytes\n" 4443msgid "Failed to serialize CERT record with %u bytes\n"
4454msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 4444msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
4455 4445
4456#: src/gnsrecord/plugin_gnsrecord_dns.c:521 4446#: src/gnsrecord/plugin_gnsrecord_dns.c:523
4457#, fuzzy, c-format 4447#, fuzzy, c-format
4458msgid "Unable to parse SOA record `%s'\n" 4448msgid "Unable to parse SOA record `%s'\n"
4459msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4449msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4460 4450
4461#: src/gnsrecord/plugin_gnsrecord_dns.c:540 4451#: src/gnsrecord/plugin_gnsrecord_dns.c:542
4462#, fuzzy, c-format 4452#, fuzzy, c-format
4463msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n" 4453msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
4464msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 4454msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
4465 4455
4466#: src/gnsrecord/plugin_gnsrecord_dns.c:563 4456#: src/gnsrecord/plugin_gnsrecord_dns.c:565
4467#, fuzzy, c-format 4457#, fuzzy, c-format
4468msgid "Failed to serialize PTR record with value `%s'\n" 4458msgid "Failed to serialize PTR record with value `%s'\n"
4469msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 4459msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
4470 4460
4471#: src/gnsrecord/plugin_gnsrecord_dns.c:586 4461#: src/gnsrecord/plugin_gnsrecord_dns.c:588
4472#, fuzzy, c-format 4462#, fuzzy, c-format
4473msgid "Unable to parse MX record `%s'\n" 4463msgid "Unable to parse MX record `%s'\n"
4474msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4464msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4475 4465
4476#: src/gnsrecord/plugin_gnsrecord_dns.c:601 4466#: src/gnsrecord/plugin_gnsrecord_dns.c:603
4477#, fuzzy, c-format 4467#, fuzzy, c-format
4478msgid "Failed to serialize MX record with hostname `%s'\n" 4468msgid "Failed to serialize MX record with hostname `%s'\n"
4479msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 4469msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
4480 4470
4481#: src/gnsrecord/plugin_gnsrecord_dns.c:628 4471#: src/gnsrecord/plugin_gnsrecord_dns.c:630
4482#, fuzzy, c-format 4472#, fuzzy, c-format
4483msgid "Unable to parse SRV record `%s'\n" 4473msgid "Unable to parse SRV record `%s'\n"
4484msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4474msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4485 4475
4486#: src/gnsrecord/plugin_gnsrecord_dns.c:644 4476#: src/gnsrecord/plugin_gnsrecord_dns.c:646
4487#, fuzzy, c-format 4477#, fuzzy, c-format
4488msgid "Failed to serialize SRV record with target `%s'\n" 4478msgid "Failed to serialize SRV record with target `%s'\n"
4489msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 4479msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
4490 4480
4491#: src/gnsrecord/plugin_gnsrecord_dns.c:661 4481#: src/gnsrecord/plugin_gnsrecord_dns.c:663
4492#, fuzzy, c-format 4482#, fuzzy, c-format
4493msgid "Unable to parse IPv6 address `%s'\n" 4483msgid "Unable to parse IPv6 address `%s'\n"
4494msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n" 4484msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
4495 4485
4496#: src/gnsrecord/plugin_gnsrecord_dns.c:685 4486#: src/gnsrecord/plugin_gnsrecord_dns.c:687
4497#: src/gnsrecord/plugin_gnsrecord_dns.c:701 4487#: src/gnsrecord/plugin_gnsrecord_dns.c:703
4498#, fuzzy, c-format 4488#, fuzzy, c-format
4499msgid "Unable to parse TLSA record string `%s'\n" 4489msgid "Unable to parse TLSA record string `%s'\n"
4500msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4490msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4501 4491
4502#: src/hello/gnunet-hello.c:124 4492#: src/hello/gnunet-hello.c:126
4503msgid "Call with name of HELLO file to modify.\n" 4493msgid "Call with name of HELLO file to modify.\n"
4504msgstr "" 4494msgstr ""
4505 4495
4506#: src/hello/gnunet-hello.c:130 4496#: src/hello/gnunet-hello.c:132
4507#, fuzzy, c-format 4497#, fuzzy, c-format
4508msgid "Error accessing file `%s': %s\n" 4498msgid "Error accessing file `%s': %s\n"
4509msgstr "Gặp lỗi khi tạo người dùng" 4499msgstr "Gặp lỗi khi tạo người dùng"
4510 4500
4511#: src/hello/gnunet-hello.c:138 4501#: src/hello/gnunet-hello.c:140
4512#, c-format 4502#, c-format
4513msgid "File `%s' is too big to be a HELLO\n" 4503msgid "File `%s' is too big to be a HELLO\n"
4514msgstr "" 4504msgstr ""
4515 4505
4516#: src/hello/gnunet-hello.c:145 4506#: src/hello/gnunet-hello.c:147
4517#, c-format 4507#, c-format
4518msgid "File `%s' is too small to be a HELLO\n" 4508msgid "File `%s' is too small to be a HELLO\n"
4519msgstr "" 4509msgstr ""
4520 4510
4521#: src/hello/gnunet-hello.c:155 src/hello/gnunet-hello.c:196 4511#: src/hello/gnunet-hello.c:157 src/hello/gnunet-hello.c:198
4522#, fuzzy, c-format 4512#, fuzzy, c-format
4523msgid "Error opening file `%s': %s\n" 4513msgid "Error opening file `%s': %s\n"
4524msgstr "Gặp lỗi khi tạo người dùng" 4514msgstr "Gặp lỗi khi tạo người dùng"
4525 4515
4526#: src/hello/gnunet-hello.c:172 4516#: src/hello/gnunet-hello.c:174
4527#, fuzzy, c-format 4517#, fuzzy, c-format
4528msgid "Did not find well-formed HELLO in file `%s'\n" 4518msgid "Did not find well-formed HELLO in file `%s'\n"
4529msgstr "Không tìm thấy tập tin nào trong thư mục « %s »\n" 4519msgstr "Không tìm thấy tập tin nào trong thư mục « %s »\n"
4530 4520
4531#: src/hello/gnunet-hello.c:208 4521#: src/hello/gnunet-hello.c:210
4532#, fuzzy, c-format 4522#, fuzzy, c-format
4533msgid "Error writing HELLO to file `%s': %s\n" 4523msgid "Error writing HELLO to file `%s': %s\n"
4534msgstr "Gặp lỗi khi tạo người dùng" 4524msgstr "Gặp lỗi khi tạo người dùng"
4535 4525
4536#: src/hello/gnunet-hello.c:217 4526#: src/hello/gnunet-hello.c:219
4537#, c-format 4527#, c-format
4538msgid "Modified %u addresses, wrote %u bytes\n" 4528msgid "Modified %u addresses, wrote %u bytes\n"
4539msgstr "" 4529msgstr ""
4540 4530
4541#: src/hello/hello.c:1108 4531#: src/hello/hello.c:1110
4542#, fuzzy 4532#, fuzzy
4543msgid "Failed to parse HELLO message: missing expiration time\n" 4533msgid "Failed to parse HELLO message: missing expiration time\n"
4544msgstr "Lỗi lưu cấu hình." 4534msgstr "Lỗi lưu cấu hình."
4545 4535
4546#: src/hello/hello.c:1117 4536#: src/hello/hello.c:1119
4547#, fuzzy 4537#, fuzzy
4548msgid "Failed to parse HELLO message: invalid expiration time\n" 4538msgid "Failed to parse HELLO message: invalid expiration time\n"
4549msgstr "Lỗi lưu cấu hình." 4539msgstr "Lỗi lưu cấu hình."
4550 4540
4551#: src/hello/hello.c:1127 4541#: src/hello/hello.c:1129
4552#, fuzzy 4542#, fuzzy
4553msgid "Failed to parse HELLO message: malformed\n" 4543msgid "Failed to parse HELLO message: malformed\n"
4554msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4544msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4555 4545
4556#: src/hello/hello.c:1138 4546#: src/hello/hello.c:1140
4557#, fuzzy 4547#, fuzzy
4558msgid "Failed to parse HELLO message: missing transport plugin\n" 4548msgid "Failed to parse HELLO message: missing transport plugin\n"
4559msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" 4549msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
4560 4550
4561#: src/hello/hello.c:1156 4551#: src/hello/hello.c:1158
4562#, c-format 4552#, c-format
4563msgid "Plugin `%s' not found, skipping address\n" 4553msgid "Plugin `%s' not found, skipping address\n"
4564msgstr "" 4554msgstr ""
4565 4555
4566#: src/hello/hello.c:1164 4556#: src/hello/hello.c:1166
4567#, c-format 4557#, c-format
4568msgid "Plugin `%s' does not support URIs yet\n" 4558msgid "Plugin `%s' does not support URIs yet\n"
4569msgstr "" 4559msgstr ""
4570 4560
4571#: src/hello/hello.c:1179 4561#: src/hello/hello.c:1181
4572#, fuzzy, c-format 4562#, fuzzy, c-format
4573msgid "Failed to parse `%s' as an address for plugin `%s'\n" 4563msgid "Failed to parse `%s' as an address for plugin `%s'\n"
4574msgstr "Lỗi đóng kết đến cổng %s %d.\n" 4564msgstr "Lỗi đóng kết đến cổng %s %d.\n"
4575 4565
4576#: src/hostlist/gnunet-daemon-hostlist.c:314 4566#: src/hostlist/gnunet-daemon-hostlist.c:316
4577msgid "" 4567msgid ""
4578"None of the functions for the hostlist daemon were enabled. I have no " 4568"None of the functions for the hostlist daemon were enabled. I have no "
4579"reason to run!\n" 4569"reason to run!\n"
4580msgstr "" 4570msgstr ""
4581 4571
4582#: src/hostlist/gnunet-daemon-hostlist.c:374 4572#: src/hostlist/gnunet-daemon-hostlist.c:376
4583#, fuzzy 4573#, fuzzy
4584msgid "advertise our hostlist to other peers" 4574msgid "advertise our hostlist to other peers"
4585msgstr "Tắt quảng cáo máy này cho đồng đẳng khác" 4575msgstr "Tắt quảng cáo máy này cho đồng đẳng khác"
4586 4576
4587#: src/hostlist/gnunet-daemon-hostlist.c:379 4577#: src/hostlist/gnunet-daemon-hostlist.c:381
4588msgid "" 4578msgid ""
4589"bootstrap using hostlists (it is highly recommended that you always use this " 4579"bootstrap using hostlists (it is highly recommended that you always use this "
4590"option)" 4580"option)"
4591msgstr "" 4581msgstr ""
4592 4582
4593#: src/hostlist/gnunet-daemon-hostlist.c:383 4583#: src/hostlist/gnunet-daemon-hostlist.c:385
4594#, fuzzy 4584#, fuzzy
4595msgid "enable learning about hostlist servers from other peers" 4585msgid "enable learning about hostlist servers from other peers"
4596msgstr "Tắt quảng cáo máy này cho đồng đẳng khác" 4586msgstr "Tắt quảng cáo máy này cho đồng đẳng khác"
4597 4587
4598#: src/hostlist/gnunet-daemon-hostlist.c:388 4588#: src/hostlist/gnunet-daemon-hostlist.c:390
4599#, fuzzy 4589#, fuzzy
4600msgid "provide a hostlist server" 4590msgid "provide a hostlist server"
4601msgstr "trình phục vụ danh sách máy HTTP hợp nhất" 4591msgstr "trình phục vụ danh sách máy HTTP hợp nhất"
4602 4592
4603#: src/hostlist/gnunet-daemon-hostlist.c:404 4593#: src/hostlist/gnunet-daemon-hostlist.c:406
4604msgid "GNUnet hostlist server and client" 4594msgid "GNUnet hostlist server and client"
4605msgstr "" 4595msgstr ""
4606 4596
4607#: src/hostlist/gnunet-daemon-hostlist_client.c:347 4597#: src/hostlist/gnunet-daemon-hostlist_client.c:349
4608#, fuzzy 4598#, fuzzy
4609msgid "# bytes downloaded from hostlist servers" 4599msgid "# bytes downloaded from hostlist servers"
4610msgstr "trình phục vụ danh sách máy HTTP hợp nhất" 4600msgstr "trình phục vụ danh sách máy HTTP hợp nhất"
4611 4601
4612#: src/hostlist/gnunet-daemon-hostlist_client.c:368 4602#: src/hostlist/gnunet-daemon-hostlist_client.c:370
4613#: src/hostlist/gnunet-daemon-hostlist_client.c:401 4603#: src/hostlist/gnunet-daemon-hostlist_client.c:403
4614#, fuzzy 4604#, fuzzy
4615msgid "# invalid HELLOs downloaded from hostlist servers" 4605msgid "# invalid HELLOs downloaded from hostlist servers"
4616msgstr "# các HELLO tải xuống qua HTTP" 4606msgstr "# các HELLO tải xuống qua HTTP"
4617 4607
4618#: src/hostlist/gnunet-daemon-hostlist_client.c:371 4608#: src/hostlist/gnunet-daemon-hostlist_client.c:373
4619#: src/hostlist/gnunet-daemon-hostlist_client.c:404 4609#: src/hostlist/gnunet-daemon-hostlist_client.c:406
4620#, fuzzy, c-format 4610#, fuzzy, c-format
4621msgid "Invalid `%s' message received from hostlist at `%s'\n" 4611msgid "Invalid `%s' message received from hostlist at `%s'\n"
4622msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n" 4612msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n"
4623 4613
4624#: src/hostlist/gnunet-daemon-hostlist_client.c:389 4614#: src/hostlist/gnunet-daemon-hostlist_client.c:391
4625#, fuzzy 4615#, fuzzy
4626msgid "# valid HELLOs downloaded from hostlist servers" 4616msgid "# valid HELLOs downloaded from hostlist servers"
4627msgstr "# các HELLO tải xuống qua HTTP" 4617msgstr "# các HELLO tải xuống qua HTTP"
4628 4618
4629#: src/hostlist/gnunet-daemon-hostlist_client.c:659 4619#: src/hostlist/gnunet-daemon-hostlist_client.c:661
4630#: src/hostlist/gnunet-daemon-hostlist_client.c:1405 4620#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
4631msgid "# advertised hostlist URIs" 4621msgid "# advertised hostlist URIs"
4632msgstr "" 4622msgstr ""
4633 4623
4634#: src/hostlist/gnunet-daemon-hostlist_client.c:689 4624#: src/hostlist/gnunet-daemon-hostlist_client.c:691
4635#, c-format 4625#, c-format
4636msgid "# advertised URI `%s' downloaded" 4626msgid "# advertised URI `%s' downloaded"
4637msgstr "" 4627msgstr ""
4638 4628
4639#: src/hostlist/gnunet-daemon-hostlist_client.c:732 4629#: src/hostlist/gnunet-daemon-hostlist_client.c:734
4640#, c-format 4630#, c-format
4641msgid "" 4631msgid ""
4642"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI " 4632"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
4643"gets dismissed.\n" 4633"gets dismissed.\n"
4644msgstr "" 4634msgstr ""
4645 4635
4646#: src/hostlist/gnunet-daemon-hostlist_client.c:860 4636#: src/hostlist/gnunet-daemon-hostlist_client.c:862
4647#, fuzzy, c-format 4637#, fuzzy, c-format
4648msgid "Timeout trying to download hostlist from `%s'\n" 4638msgid "Timeout trying to download hostlist from `%s'\n"
4649msgstr "Đang thử tải danh sách các máy xuống « %s »\n" 4639msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
4650 4640
4651#: src/hostlist/gnunet-daemon-hostlist_client.c:874 4641#: src/hostlist/gnunet-daemon-hostlist_client.c:876
4652#, c-format 4642#, c-format
4653msgid "Download limit of %u bytes exceeded, stopping download\n" 4643msgid "Download limit of %u bytes exceeded, stopping download\n"
4654msgstr "" 4644msgstr ""
4655 4645
4656#: src/hostlist/gnunet-daemon-hostlist_client.c:894 4646#: src/hostlist/gnunet-daemon-hostlist_client.c:896
4657#, fuzzy, c-format 4647#, fuzzy, c-format
4658msgid "Download of hostlist from `%s' failed: `%s'\n" 4648msgid "Download of hostlist from `%s' failed: `%s'\n"
4659msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n" 4649msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n"
4660 4650
4661#: src/hostlist/gnunet-daemon-hostlist_client.c:900 4651#: src/hostlist/gnunet-daemon-hostlist_client.c:902
4662#, fuzzy, c-format 4652#, fuzzy, c-format
4663msgid "Download of hostlist `%s' completed.\n" 4653msgid "Download of hostlist `%s' completed.\n"
4664msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n" 4654msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n"
4665 4655
4666#: src/hostlist/gnunet-daemon-hostlist_client.c:908 4656#: src/hostlist/gnunet-daemon-hostlist_client.c:910
4667#, c-format 4657#, c-format
4668msgid "Adding successfully tested hostlist `%s' datastore.\n" 4658msgid "Adding successfully tested hostlist `%s' datastore.\n"
4669msgstr "" 4659msgstr ""
4670 4660
4671#: src/hostlist/gnunet-daemon-hostlist_client.c:961 4661#: src/hostlist/gnunet-daemon-hostlist_client.c:963
4672#, fuzzy, c-format 4662#, fuzzy, c-format
4673msgid "Bootstrapping using hostlist at `%s'.\n" 4663msgid "Bootstrapping using hostlist at `%s'.\n"
4674msgstr "Đang nạp và khởi động dùng « %s ».\n" 4664msgstr "Đang nạp và khởi động dùng « %s ».\n"
4675 4665
4676#: src/hostlist/gnunet-daemon-hostlist_client.c:969 4666#: src/hostlist/gnunet-daemon-hostlist_client.c:971
4677msgid "# hostlist downloads initiated" 4667msgid "# hostlist downloads initiated"
4678msgstr "" 4668msgstr ""
4679 4669
4680#: src/hostlist/gnunet-daemon-hostlist_client.c:1096 4670#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
4681#: src/hostlist/gnunet-daemon-hostlist_client.c:1663 4671#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
4682msgid "# milliseconds between hostlist downloads" 4672msgid "# milliseconds between hostlist downloads"
4683msgstr "" 4673msgstr ""
4684 4674
4685#: src/hostlist/gnunet-daemon-hostlist_client.c:1105 4675#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
4686#, c-format 4676#, c-format
4687msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n" 4677msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n"
4688msgstr "" 4678msgstr ""
4689 4679
4690#: src/hostlist/gnunet-daemon-hostlist_client.c:1164 4680#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
4691#: src/hostlist/gnunet-daemon-hostlist_client.c:1185 4681#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
4692#, fuzzy 4682#, fuzzy
4693msgid "# active connections" 4683msgid "# active connections"
4694msgstr "# các kết nối dht" 4684msgstr "# các kết nối dht"
4695 4685
4696#: src/hostlist/gnunet-daemon-hostlist_client.c:1351 4686#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
4697#, fuzzy, c-format 4687#, fuzzy, c-format
4698msgid "Loading saved hostlist entries from file `%s' \n" 4688msgid "Loading saved hostlist entries from file `%s' \n"
4699msgstr "Đang thử tải danh sách các máy xuống « %s »\n" 4689msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
4700 4690
4701#: src/hostlist/gnunet-daemon-hostlist_client.c:1356 4691#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
4702#, fuzzy, c-format 4692#, fuzzy, c-format
4703msgid "Hostlist file `%s' does not exist\n" 4693msgid "Hostlist file `%s' does not exist\n"
4704msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 4694msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
4705 4695
4706#: src/hostlist/gnunet-daemon-hostlist_client.c:1365 4696#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
4707#, fuzzy, c-format 4697#, fuzzy, c-format
4708msgid "Could not open file `%s' for reading to load hostlists: %s\n" 4698msgid "Could not open file `%s' for reading to load hostlists: %s\n"
4709msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n" 4699msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
4710 4700
4711#: src/hostlist/gnunet-daemon-hostlist_client.c:1399 4701#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
4712#, c-format 4702#, c-format
4713msgid "%u hostlist URIs loaded from file\n" 4703msgid "%u hostlist URIs loaded from file\n"
4714msgstr "" 4704msgstr ""
4715 4705
4716#: src/hostlist/gnunet-daemon-hostlist_client.c:1402 4706#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
4717#, fuzzy 4707#, fuzzy
4718msgid "# hostlist URIs read from file" 4708msgid "# hostlist URIs read from file"
4719msgstr "# các byte danh sách máy được trả về" 4709msgstr "# các byte danh sách máy được trả về"
4720 4710
4721#: src/hostlist/gnunet-daemon-hostlist_client.c:1448 4711#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
4722#, fuzzy, c-format 4712#, fuzzy, c-format
4723msgid "Could not open file `%s' for writing to save hostlists: %s\n" 4713msgid "Could not open file `%s' for writing to save hostlists: %s\n"
4724msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n" 4714msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
4725 4715
4726#: src/hostlist/gnunet-daemon-hostlist_client.c:1455 4716#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
4727#, fuzzy, c-format 4717#, fuzzy, c-format
4728msgid "Writing %u hostlist URIs to `%s'\n" 4718msgid "Writing %u hostlist URIs to `%s'\n"
4729msgstr "Đang thử tải danh sách các máy xuống « %s »\n" 4719msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
4730 4720
4731#: src/hostlist/gnunet-daemon-hostlist_client.c:1479 4721#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
4732#: src/hostlist/gnunet-daemon-hostlist_client.c:1496 4722#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
4733#, c-format 4723#, c-format
4734msgid "Error writing hostlist URIs to file `%s'\n" 4724msgid "Error writing hostlist URIs to file `%s'\n"
4735msgstr "" 4725msgstr ""
4736 4726
4737#: src/hostlist/gnunet-daemon-hostlist_client.c:1491 4727#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
4738#, fuzzy 4728#, fuzzy
4739msgid "# hostlist URIs written to file" 4729msgid "# hostlist URIs written to file"
4740msgstr "# các byte danh sách máy được trả về" 4730msgstr "# các byte danh sách máy được trả về"
4741 4731
4742#: src/hostlist/gnunet-daemon-hostlist_client.c:1593 4732#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
4743#: src/transport/plugin_transport_http_client.c:2272 4733#: src/transport/plugin_transport_http_client.c:2274
4744#, c-format 4734#, c-format
4745msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n" 4735msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
4746msgstr "" 4736msgstr ""
4747 4737
4748#: src/hostlist/gnunet-daemon-hostlist_client.c:1622 4738#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
4749msgid "Learning is enabled on this peer\n" 4739msgid "Learning is enabled on this peer\n"
4750msgstr "" 4740msgstr ""
4751 4741
4752#: src/hostlist/gnunet-daemon-hostlist_client.c:1636 4742#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
4753msgid "Learning is not enabled on this peer\n" 4743msgid "Learning is not enabled on this peer\n"
4754msgstr "" 4744msgstr ""
4755 4745
4756#: src/hostlist/gnunet-daemon-hostlist_client.c:1649 4746#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
4757#, c-format 4747#, c-format
4758msgid "" 4748msgid ""
4759"Since learning is not enabled on this peer, hostlist file `%s' was removed\n" 4749"Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
4760msgstr "" 4750msgstr ""
4761 4751
4762#: src/hostlist/gnunet-daemon-hostlist_server.c:174 4752#: src/hostlist/gnunet-daemon-hostlist_server.c:176
4763#, fuzzy 4753#, fuzzy
4764msgid "bytes in hostlist" 4754msgid "bytes in hostlist"
4765msgstr "# các byte trong kho dữ liệu" 4755msgstr "# các byte trong kho dữ liệu"
4766 4756
4767#: src/hostlist/gnunet-daemon-hostlist_server.c:199 4757#: src/hostlist/gnunet-daemon-hostlist_server.c:201
4768msgid "expired addresses encountered" 4758msgid "expired addresses encountered"
4769msgstr "" 4759msgstr ""
4770 4760
4771#: src/hostlist/gnunet-daemon-hostlist_server.c:235 4761#: src/hostlist/gnunet-daemon-hostlist_server.c:237
4772#: src/hostlist/gnunet-daemon-hostlist_server.c:529 4762#: src/hostlist/gnunet-daemon-hostlist_server.c:531
4773#: src/peerinfo-tool/gnunet-peerinfo.c:383 4763#: src/peerinfo-tool/gnunet-peerinfo.c:385
4774#: src/peerinfo-tool/gnunet-peerinfo.c:532 4764#: src/peerinfo-tool/gnunet-peerinfo.c:534
4775#: src/topology/gnunet-daemon-topology.c:860 4765#: src/topology/gnunet-daemon-topology.c:862
4776#, fuzzy, c-format 4766#, fuzzy, c-format
4777msgid "Error in communication with PEERINFO service: %s\n" 4767msgid "Error in communication with PEERINFO service: %s\n"
4778msgstr "Cổng để liên lạc với giao diện người dùng GNUnet" 4768msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
4779 4769
4780#: src/hostlist/gnunet-daemon-hostlist_server.c:259 4770#: src/hostlist/gnunet-daemon-hostlist_server.c:261
4781msgid "HELLOs without addresses encountered (ignored)" 4771msgid "HELLOs without addresses encountered (ignored)"
4782msgstr "" 4772msgstr ""
4783 4773
4784#: src/hostlist/gnunet-daemon-hostlist_server.c:276 4774#: src/hostlist/gnunet-daemon-hostlist_server.c:278
4785msgid "bytes not included in hostlist (size limit)" 4775msgid "bytes not included in hostlist (size limit)"
4786msgstr "" 4776msgstr ""
4787 4777
4788#: src/hostlist/gnunet-daemon-hostlist_server.c:380 4778#: src/hostlist/gnunet-daemon-hostlist_server.c:382
4789#, fuzzy, c-format 4779#, fuzzy, c-format
4790msgid "Refusing `%s' request to hostlist server\n" 4780msgid "Refusing `%s' request to hostlist server\n"
4791msgstr "trình phục vụ danh sách máy HTTP hợp nhất" 4781msgstr "trình phục vụ danh sách máy HTTP hợp nhất"
4792 4782
4793#: src/hostlist/gnunet-daemon-hostlist_server.c:383 4783#: src/hostlist/gnunet-daemon-hostlist_server.c:385
4794#, fuzzy 4784#, fuzzy
4795msgid "hostlist requests refused (not HTTP GET)" 4785msgid "hostlist requests refused (not HTTP GET)"
4796msgstr "# các yêu cầu danh sách máy được nhận" 4786msgstr "# các yêu cầu danh sách máy được nhận"
4797 4787
4798#: src/hostlist/gnunet-daemon-hostlist_server.c:395 4788#: src/hostlist/gnunet-daemon-hostlist_server.c:397
4799#, c-format 4789#, c-format
4800msgid "Refusing `%s' request with %llu bytes of upload data\n" 4790msgid "Refusing `%s' request with %llu bytes of upload data\n"
4801msgstr "" 4791msgstr ""
4802 4792
4803#: src/hostlist/gnunet-daemon-hostlist_server.c:399 4793#: src/hostlist/gnunet-daemon-hostlist_server.c:401
4804#, fuzzy 4794#, fuzzy
4805msgid "hostlist requests refused (upload data)" 4795msgid "hostlist requests refused (upload data)"
4806msgstr "# các yêu cầu danh sách máy được nhận" 4796msgstr "# các yêu cầu danh sách máy được nhận"
4807 4797
4808#: src/hostlist/gnunet-daemon-hostlist_server.c:406 4798#: src/hostlist/gnunet-daemon-hostlist_server.c:408
4809msgid "Could not handle hostlist request since I do not have a response yet\n" 4799msgid "Could not handle hostlist request since I do not have a response yet\n"
4810msgstr "" 4800msgstr ""
4811 4801
4812#: src/hostlist/gnunet-daemon-hostlist_server.c:409 4802#: src/hostlist/gnunet-daemon-hostlist_server.c:411
4813#, fuzzy 4803#, fuzzy
4814msgid "hostlist requests refused (not ready)" 4804msgid "hostlist requests refused (not ready)"
4815msgstr "# các yêu cầu danh sách máy được nhận" 4805msgstr "# các yêu cầu danh sách máy được nhận"
4816 4806
4817#: src/hostlist/gnunet-daemon-hostlist_server.c:414 4807#: src/hostlist/gnunet-daemon-hostlist_server.c:416
4818#, fuzzy 4808#, fuzzy
4819msgid "Received request for our hostlist\n" 4809msgid "Received request for our hostlist\n"
4820msgstr "Nhận yêu cầu định tuyến\n" 4810msgstr "Nhận yêu cầu định tuyến\n"
4821 4811
4822#: src/hostlist/gnunet-daemon-hostlist_server.c:416 4812#: src/hostlist/gnunet-daemon-hostlist_server.c:418
4823#, fuzzy 4813#, fuzzy
4824msgid "hostlist requests processed" 4814msgid "hostlist requests processed"
4825msgstr "# các yêu cầu danh sách máy được nhận" 4815msgstr "# các yêu cầu danh sách máy được nhận"
4826 4816
4827#: src/hostlist/gnunet-daemon-hostlist_server.c:464 4817#: src/hostlist/gnunet-daemon-hostlist_server.c:466
4828#, fuzzy 4818#, fuzzy
4829msgid "# hostlist advertisements send" 4819msgid "# hostlist advertisements send"
4830msgstr "# Các quảng cáo ngoại được chuyển tiếp" 4820msgstr "# Các quảng cáo ngoại được chuyển tiếp"
4831 4821
4832#: src/hostlist/gnunet-daemon-hostlist_server.c:677 4822#: src/hostlist/gnunet-daemon-hostlist_server.c:679
4833#: src/transport/gnunet-service-transport.c:2813 4823#: src/transport/gnunet-service-transport.c:2814
4834#, fuzzy 4824#, fuzzy
4835msgid "Could not access PEERINFO service. Exiting.\n" 4825msgid "Could not access PEERINFO service. Exiting.\n"
4836msgstr "Không thể truy cập đến thông tin về không gian tên.\n" 4826msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
4837 4827
4838#: src/hostlist/gnunet-daemon-hostlist_server.c:689 4828#: src/hostlist/gnunet-daemon-hostlist_server.c:691
4839#, c-format 4829#, c-format
4840msgid "Invalid port number %llu. Exiting.\n" 4830msgid "Invalid port number %llu. Exiting.\n"
4841msgstr "" 4831msgstr ""
4842 4832
4843#: src/hostlist/gnunet-daemon-hostlist_server.c:701 4833#: src/hostlist/gnunet-daemon-hostlist_server.c:703
4844#, c-format 4834#, c-format
4845msgid "Hostlist service starts on %s:%llu\n" 4835msgid "Hostlist service starts on %s:%llu\n"
4846msgstr "" 4836msgstr ""
4847 4837
4848#: src/hostlist/gnunet-daemon-hostlist_server.c:716 4838#: src/hostlist/gnunet-daemon-hostlist_server.c:718
4849#, fuzzy, c-format 4839#, fuzzy, c-format
4850msgid "Address to obtain hostlist: `%s'\n" 4840msgid "Address to obtain hostlist: `%s'\n"
4851msgstr "Đang thử tải danh sách các máy xuống « %s »\n" 4841msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
4852 4842
4853#: src/hostlist/gnunet-daemon-hostlist_server.c:729 4843#: src/hostlist/gnunet-daemon-hostlist_server.c:731
4854#, fuzzy 4844#, fuzzy
4855msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4845msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4856msgstr "« %s » không sẵn sàng.\n" 4846msgstr "« %s » không sẵn sàng.\n"
4857 4847
4858#: src/hostlist/gnunet-daemon-hostlist_server.c:746 4848#: src/hostlist/gnunet-daemon-hostlist_server.c:748
4859#, fuzzy 4849#, fuzzy
4860msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n" 4850msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
4861msgstr "« %s » không sẵn sàng.\n" 4851msgstr "« %s » không sẵn sàng.\n"
4862 4852
4863#: src/hostlist/gnunet-daemon-hostlist_server.c:767 4853#: src/hostlist/gnunet-daemon-hostlist_server.c:769
4864#, fuzzy, c-format 4854#, fuzzy, c-format
4865msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4855msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4866msgstr "« %s » không sẵn sàng.\n" 4856msgstr "« %s » không sẵn sàng.\n"
4867 4857
4868#: src/hostlist/gnunet-daemon-hostlist_server.c:787 4858#: src/hostlist/gnunet-daemon-hostlist_server.c:789
4869#, fuzzy, c-format 4859#, fuzzy, c-format
4870msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n" 4860msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
4871msgstr "« %s » không sẵn sàng.\n" 4861msgstr "« %s » không sẵn sàng.\n"
4872 4862
4873#: src/hostlist/gnunet-daemon-hostlist_server.c:827 4863#: src/hostlist/gnunet-daemon-hostlist_server.c:829
4874#, fuzzy, c-format 4864#, fuzzy, c-format
4875msgid "Could not start hostlist HTTP server on port %u\n" 4865msgid "Could not start hostlist HTTP server on port %u\n"
4876msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất" 4866msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất"
4877 4867
4878#: src/identity/gnunet-identity.c:177 4868#: src/identity/gnunet-identity.c:179
4879#, fuzzy, c-format 4869#, fuzzy, c-format
4880msgid "Failed to create ego: %s\n" 4870msgid "Failed to create ego: %s\n"
4881msgstr "Không thể tạo miền tên.\n" 4871msgstr "Không thể tạo miền tên.\n"
4882 4872
4883#: src/identity/gnunet-identity.c:199 4873#: src/identity/gnunet-identity.c:201
4884#, fuzzy, c-format 4874#, fuzzy, c-format
4885msgid "Failed to set default ego: %s\n" 4875msgid "Failed to set default ego: %s\n"
4886msgstr "Không thể tạo miền tên.\n" 4876msgstr "Không thể tạo miền tên.\n"
4887 4877
4888#: src/identity/gnunet-identity.c:354 4878#: src/identity/gnunet-identity.c:356
4889msgid "create ego NAME" 4879msgid "create ego NAME"
4890msgstr "" 4880msgstr ""
4891 4881
4892#: src/identity/gnunet-identity.c:360 4882#: src/identity/gnunet-identity.c:362
4893msgid "delete ego NAME " 4883msgid "delete ego NAME "
4894msgstr "" 4884msgstr ""
4895 4885
4896#: src/identity/gnunet-identity.c:365 4886#: src/identity/gnunet-identity.c:367
4897msgid "display all egos" 4887msgid "display all egos"
4898msgstr "" 4888msgstr ""
4899 4889
4900#: src/identity/gnunet-identity.c:371 4890#: src/identity/gnunet-identity.c:373
4901msgid "" 4891msgid ""
4902"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)" 4892"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
4903msgstr "" 4893msgstr ""
4904 4894
4905#: src/identity/gnunet-identity.c:376 4895#: src/identity/gnunet-identity.c:378
4906msgid "run in monitor mode egos" 4896msgid "run in monitor mode egos"
4907msgstr "" 4897msgstr ""
4908 4898
4909#: src/identity/gnunet-identity.c:382 4899#: src/identity/gnunet-identity.c:384
4910msgid "" 4900msgid ""
4911"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)" 4901"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
4912msgstr "" 4902msgstr ""
4913 4903
4914#: src/identity/gnunet-identity.c:396 4904#: src/identity/gnunet-identity.c:398
4915msgid "Maintain egos" 4905msgid "Maintain egos"
4916msgstr "" 4906msgstr ""
4917 4907
4918#: src/identity/gnunet-service-identity.c:389 4908#: src/identity/gnunet-service-identity.c:391
4919msgid "no default known" 4909msgid "no default known"
4920msgstr "" 4910msgstr ""
4921 4911
4922#: src/identity/gnunet-service-identity.c:414 4912#: src/identity/gnunet-service-identity.c:416
4923msgid "default configured, but ego unknown (internal error)" 4913msgid "default configured, but ego unknown (internal error)"
4924msgstr "" 4914msgstr ""
4925 4915
4926#: src/identity/gnunet-service-identity.c:505 4916#: src/identity/gnunet-service-identity.c:507
4927#: src/identity/gnunet-service-identity.c:788 4917#: src/identity/gnunet-service-identity.c:790
4928#: src/identity/gnunet-service-identity.c:916 4918#: src/identity/gnunet-service-identity.c:918
4929#, fuzzy, c-format 4919#, fuzzy, c-format
4930msgid "Failed to write subsystem default identifier map to `%s'.\n" 4920msgid "Failed to write subsystem default identifier map to `%s'.\n"
4931msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4921msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4932 4922
4933#: src/identity/gnunet-service-identity.c:513 4923#: src/identity/gnunet-service-identity.c:515
4934msgid "Unknown ego specified for service (internal error)" 4924msgid "Unknown ego specified for service (internal error)"
4935msgstr "" 4925msgstr ""
4936 4926
4937#: src/identity/gnunet-service-identity.c:608 4927#: src/identity/gnunet-service-identity.c:610
4938msgid "identifier already in use for another ego" 4928msgid "identifier already in use for another ego"
4939msgstr "" 4929msgstr ""
4940 4930
4941#: src/identity/gnunet-service-identity.c:763 4931#: src/identity/gnunet-service-identity.c:765
4942msgid "target name already exists" 4932msgid "target name already exists"
4943msgstr "" 4933msgstr ""
4944 4934
4945#: src/identity/gnunet-service-identity.c:806 4935#: src/identity/gnunet-service-identity.c:808
4946#: src/identity/gnunet-service-identity.c:934 4936#: src/identity/gnunet-service-identity.c:936
4947msgid "no matching ego found" 4937msgid "no matching ego found"
4948msgstr "" 4938msgstr ""
4949 4939
4950#: src/identity/gnunet-service-identity.c:969 4940#: src/identity/gnunet-service-identity.c:971
4951#, fuzzy, c-format 4941#, fuzzy, c-format
4952msgid "Failed to parse ego information in `%s'\n" 4942msgid "Failed to parse ego information in `%s'\n"
4953msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4943msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4954 4944
4955#: src/identity/gnunet-service-identity.c:1027 4945#: src/identity/gnunet-service-identity.c:1029
4956#, fuzzy, c-format 4946#, fuzzy, c-format
4957msgid "Failed to parse subsystem identity configuration file `%s'\n" 4947msgid "Failed to parse subsystem identity configuration file `%s'\n"
4958msgstr "Không thể lưu tập tin cấu hình « %s »:" 4948msgstr "Không thể lưu tập tin cấu hình « %s »:"
4959 4949
4960#: src/identity/gnunet-service-identity.c:1037 4950#: src/identity/gnunet-service-identity.c:1039
4961#, fuzzy, c-format 4951#, fuzzy, c-format
4962msgid "Failed to create directory `%s' for storing egos\n" 4952msgid "Failed to create directory `%s' for storing egos\n"
4963msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4953msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4964 4954
4965#: src/json/json.c:121 4955#: src/json/json.c:123
4966#, fuzzy, c-format 4956#, fuzzy, c-format
4967msgid "Failed to parse JSON in option `%s': %s (%s)\n" 4957msgid "Failed to parse JSON in option `%s': %s (%s)\n"
4968msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 4958msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
4969 4959
4970#: src/multicast/gnunet-multicast.c:46 src/multicast/gnunet-multicast.c:70 4960#: src/my/my.c:196 src/my/my.c:215
4971msgid "This command doesn't do anything yet."
4972msgstr ""
4973
4974#: src/my/my.c:194 src/my/my.c:213
4975#, fuzzy, c-format 4961#, fuzzy, c-format
4976msgid "%s failed at %s:%d with error: %s\n" 4962msgid "%s failed at %s:%d with error: %s\n"
4977msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n" 4963msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
4978 4964
4979#: src/mysql/mysql.c:178 4965#: src/mysql/mysql.c:180
4980#, c-format 4966#, c-format
4981msgid "Trying to use file `%s' for MySQL configuration.\n" 4967msgid "Trying to use file `%s' for MySQL configuration.\n"
4982msgstr "Đang thử dùng tập tin « %s » cho cấu hình MySQL.\n" 4968msgstr "Đang thử dùng tập tin « %s » cho cấu hình MySQL.\n"
4983 4969
4984#: src/mysql/mysql.c:185 4970#: src/mysql/mysql.c:187
4985#, fuzzy, c-format 4971#, fuzzy, c-format
4986msgid "Could not access file `%s': %s\n" 4972msgid "Could not access file `%s': %s\n"
4987msgstr "Không thể truy cập đến « %s »: %s\n" 4973msgstr "Không thể truy cập đến « %s »: %s\n"
4988 4974
4989#: src/namecache/gnunet-namecache.c:105 4975#: src/namecache/gnunet-namecache.c:107
4990#, fuzzy, c-format 4976#, fuzzy, c-format
4991msgid "No records found for `%s'" 4977msgid "No records found for `%s'"
4992msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n" 4978msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n"
4993 4979
4994#: src/namecache/gnunet-namecache.c:120 src/namestore/gnunet-namestore.c:424 4980#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
4995#, c-format 4981#, c-format
4996msgid "\tCorrupt or unsupported record of type %u\n" 4982msgid "\tCorrupt or unsupported record of type %u\n"
4997msgstr "" 4983msgstr ""
4998 4984
4999#: src/namecache/gnunet-namecache.c:181 4985#: src/namecache/gnunet-namecache.c:183
5000#, fuzzy, c-format 4986#, fuzzy, c-format
5001msgid "You must specify which zone should be accessed\n" 4987msgid "You must specify which zone should be accessed\n"
5002msgstr "chỉ ra TRUYỀN_TẢI nào cần được thử nghiệm" 4988msgstr "chỉ ra TRUYỀN_TẢI nào cần được thử nghiệm"
5003 4989
5004#: src/namecache/gnunet-namecache.c:191 4990#: src/namecache/gnunet-namecache.c:193
5005#, fuzzy, c-format 4991#, fuzzy, c-format
5006msgid "Invalid public key for zone `%s'\n" 4992msgid "Invalid public key for zone `%s'\n"
5007msgstr "Đối số không hợp lệ cho « %s ».\n" 4993msgstr "Đối số không hợp lệ cho « %s ».\n"
5008 4994
5009#: src/namecache/gnunet-namecache.c:199 4995#: src/namecache/gnunet-namecache.c:201
5010#, fuzzy, c-format 4996#, fuzzy, c-format
5011msgid "You must specify a name\n" 4997msgid "You must specify a name\n"
5012msgstr "Phải ghi rõ tên hiệu\n" 4998msgstr "Phải ghi rõ tên hiệu\n"
5013 4999
5014#: src/namecache/gnunet-namecache.c:230 src/namestore/gnunet-namestore.c:1290 5000#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
5015msgid "name of the record to add/delete/display" 5001msgid "name of the record to add/delete/display"
5016msgstr "" 5002msgstr ""
5017 5003
5018#: src/namecache/gnunet-namecache.c:236 5004#: src/namecache/gnunet-namecache.c:238
5019#, fuzzy 5005#, fuzzy
5020msgid "spezifies the public key of the zone to look in" 5006msgid "spezifies the public key of the zone to look in"
5021msgstr "xác định mức ưu tiên của nội dung" 5007msgstr "xác định mức ưu tiên của nội dung"
5022 5008
5023#: src/namecache/gnunet-namecache.c:248 src/namestore/gnunet-namestore.c:1342 5009#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
5024#, fuzzy 5010#, fuzzy
5025msgid "GNUnet zone manipulation tool" 5011msgid "GNUnet zone manipulation tool"
5026msgstr "Cấu hình GNUnet" 5012msgstr "Cấu hình GNUnet"
5027 5013
5028#: src/namecache/namecache_api.c:294 5014#: src/namecache/namecache_api.c:296
5029msgid "Namecache failed to cache block" 5015msgid "Namecache failed to cache block"
5030msgstr "" 5016msgstr ""
5031 5017
5032#: src/namecache/namecache_api.c:381 5018#: src/namecache/namecache_api.c:383
5033#, fuzzy 5019#, fuzzy
5034msgid "Error communicating with namecache service" 5020msgid "Error communicating with namecache service"
5035msgstr "Cổng để liên lạc với giao diện người dùng GNUnet" 5021msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
5036 5022
5037#: src/namecache/plugin_namecache_flat.c:119 5023#: src/namecache/plugin_namecache_flat.c:121
5038#: src/namecache/plugin_namecache_flat.c:253 5024#: src/namecache/plugin_namecache_flat.c:255
5039#: src/namestore/plugin_namestore_heap.c:146 5025#: src/namestore/plugin_namestore_heap.c:148
5040#: src/namestore/plugin_namestore_heap.c:393 5026#: src/namestore/plugin_namestore_heap.c:395
5041#: src/peerstore/plugin_peerstore_flat.c:377 5027#: src/peerstore/plugin_peerstore_flat.c:379
5042#: src/peerstore/plugin_peerstore_flat.c:536 5028#: src/peerstore/plugin_peerstore_flat.c:538
5043#, fuzzy, c-format 5029#, fuzzy, c-format
5044msgid "Unable to initialize file: %s.\n" 5030msgid "Unable to initialize file: %s.\n"
5045msgstr "Không thể sơ khởi SQLite: %s.\n" 5031msgstr "Không thể sơ khởi SQLite: %s.\n"
5046 5032
5047#: src/namecache/plugin_namecache_flat.c:130 5033#: src/namecache/plugin_namecache_flat.c:132
5048#: src/namestore/plugin_namestore_heap.c:157 5034#: src/namestore/plugin_namestore_heap.c:159
5049#: src/peerstore/plugin_peerstore_flat.c:392 5035#: src/peerstore/plugin_peerstore_flat.c:394
5050#, fuzzy, c-format 5036#, fuzzy, c-format
5051msgid "Unable to get filesize: %s.\n" 5037msgid "Unable to get filesize: %s.\n"
5052msgstr "Không thể tạo miền tên.\n" 5038msgstr "Không thể tạo miền tên.\n"
5053 5039
5054#: src/namecache/plugin_namecache_flat.c:149 5040#: src/namecache/plugin_namecache_flat.c:151
5055#: src/namestore/plugin_namestore_heap.c:170 5041#: src/namestore/plugin_namestore_heap.c:172
5056#: src/peerstore/plugin_peerstore_flat.c:404 5042#: src/peerstore/plugin_peerstore_flat.c:406
5057#, fuzzy, c-format 5043#, fuzzy, c-format
5058msgid "Unable to read file: %s.\n" 5044msgid "Unable to read file: %s.\n"
5059msgstr "Không thể tạo miền tên.\n" 5045msgstr "Không thể tạo miền tên.\n"
5060 5046
5061#: src/namecache/plugin_namecache_flat.c:408 5047#: src/namecache/plugin_namecache_flat.c:410
5062#, fuzzy 5048#, fuzzy
5063msgid "flat plugin running\n" 5049msgid "flat plugin running\n"
5064msgstr "kho dữ liệu sqlite" 5050msgstr "kho dữ liệu sqlite"
5065 5051
5066#: src/namestore/gnunet-namestore.c:311 5052#: src/namecache/plugin_namecache_sqlite.c:183
5053#: src/namecache/plugin_namecache_sqlite.c:197
5054#: src/namestore/plugin_namestore_sqlite.c:219
5055#: src/namestore/plugin_namestore_sqlite.c:230
5056#, fuzzy, c-format
5057msgid "Failed to setup database at `%s'\n"
5058msgstr "Lỗi chạy %s: %s %d\n"
5059
5060#: src/namestore/gnunet-namestore.c:341
5067#, fuzzy, c-format 5061#, fuzzy, c-format
5068msgid "Adding record failed: %s\n" 5062msgid "Adding record failed: %s\n"
5069msgstr "Gặp lỗi khi tải lên tập tin: %s\n" 5063msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
5070 5064
5071#: src/namestore/gnunet-namestore.c:341 5065#: src/namestore/gnunet-namestore.c:371
5072#, fuzzy, c-format 5066#, fuzzy, c-format
5073msgid "Deleting record failed, record does not exist%s%s\n" 5067msgid "Deleting record failed, record does not exist%s%s\n"
5074msgstr "Gặp lỗi khi tải lên tập tin: %s\n" 5068msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
5075 5069
5076#: src/namestore/gnunet-namestore.c:348 5070#: src/namestore/gnunet-namestore.c:378
5077#, fuzzy, c-format 5071#, fuzzy, c-format
5078msgid "Deleting record failed%s%s\n" 5072msgid "Deleting record failed%s%s\n"
5079msgstr "Gặp lỗi khi tải lên tập tin: %s\n" 5073msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
5080 5074
5081#: src/namestore/gnunet-namestore.c:628 src/namestore/gnunet-namestore.c:636 5075#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
5082#, c-format 5076#, c-format
5083msgid "A %s record exists already under `%s', no other records can be added.\n" 5077msgid "A %s record exists already under `%s', no other records can be added.\n"
5084msgstr "" 5078msgstr ""
5085 5079
5086#: src/namestore/gnunet-namestore.c:650 src/namestore/gnunet-namestore.c:662 5080#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
5087#, c-format 5081#, c-format
5088msgid "Records already exist under `%s', cannot add `%s' record.\n" 5082msgid "Records already exist under `%s', cannot add `%s' record.\n"
5089msgstr "" 5083msgstr ""
5090 5084
5091#: src/namestore/gnunet-namestore.c:675 5085#: src/namestore/gnunet-namestore.c:707
5092#, c-format 5086#, c-format
5093msgid "" 5087msgid ""
5094"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n" 5088"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
5095msgstr "" 5089msgstr ""
5096 5090
5097#: src/namestore/gnunet-namestore.c:809 5091#: src/namestore/gnunet-namestore.c:837
5098#, c-format 5092#, c-format
5099msgid "There are no records under label `%s' that could be deleted.\n" 5093msgid "There are no records under label `%s' that could be deleted.\n"
5100msgstr "" 5094msgstr ""
5101 5095
5102#: src/namestore/gnunet-namestore.c:850 5096#: src/namestore/gnunet-namestore.c:878
5103#, c-format 5097#, c-format
5104msgid "" 5098msgid ""
5105"There are no records under label `%s' that match the request for deletion.\n" 5099"There are no records under label `%s' that match the request for deletion.\n"
5106msgstr "" 5100msgstr ""
5107 5101
5108#: src/namestore/gnunet-namestore.c:902 5102#: src/namestore/gnunet-namestore.c:965
5103#, fuzzy, c-format
5104msgid "Failed to replace records: %s\n"
5105msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
5106
5107#: src/namestore/gnunet-namestore.c:1009
5109#, fuzzy, c-format 5108#, fuzzy, c-format
5110msgid "No options given\n" 5109msgid "No options given\n"
5111msgstr "chưa đưa ra tên" 5110msgstr "chưa đưa ra tên"
5112 5111
5113#: src/namestore/gnunet-namestore.c:921 src/namestore/gnunet-namestore.c:930 5112#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
5114#: src/namestore/gnunet-namestore.c:949 src/namestore/gnunet-namestore.c:972 5113#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
5115#: src/namestore/gnunet-namestore.c:1026 5114#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
5116#, fuzzy, c-format 5115#, fuzzy, c-format
5117msgid "Missing option `%s' for operation `%s'\n" 5116msgid "Missing option `%s' for operation `%s'\n"
5118msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n" 5117msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n"
5119 5118
5120#: src/namestore/gnunet-namestore.c:922 src/namestore/gnunet-namestore.c:931 5119#: src/namestore/gnunet-namestore.c:1033
5121#: src/namestore/gnunet-namestore.c:950 src/namestore/gnunet-namestore.c:974 5120msgid "replace"
5121msgstr ""
5122
5123#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
5124#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
5122msgid "add" 5125msgid "add"
5123msgstr "" 5126msgstr ""
5124 5127
5125#: src/namestore/gnunet-namestore.c:940 5128#: src/namestore/gnunet-namestore.c:1084
5126#, fuzzy, c-format 5129#, fuzzy, c-format
5127msgid "Unsupported type `%s'\n" 5130msgid "Unsupported type `%s'\n"
5128msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" 5131msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
5129 5132
5130#: src/namestore/gnunet-namestore.c:962 5133#: src/namestore/gnunet-namestore.c:1106
5131#, c-format 5134#, c-format
5132msgid "Value `%s' invalid for record type `%s'\n" 5135msgid "Value `%s' invalid for record type `%s'\n"
5133msgstr "" 5136msgstr ""
5134 5137
5135#: src/namestore/gnunet-namestore.c:1007 5138#: src/namestore/gnunet-namestore.c:1129
5136#, fuzzy, c-format 5139#, fuzzy, c-format
5137msgid "Invalid time format `%s'\n" 5140msgid "Invalid time format `%s'\n"
5138msgstr "Địa chỉ IP định dạng sai: %s\n" 5141msgstr "Địa chỉ IP định dạng sai: %s\n"
5139 5142
5140#: src/namestore/gnunet-namestore.c:1027 5143#: src/namestore/gnunet-namestore.c:1149
5141msgid "del" 5144msgid "del"
5142msgstr "" 5145msgstr ""
5143 5146
5144#: src/namestore/gnunet-namestore.c:1070 5147#: src/namestore/gnunet-namestore.c:1192
5145#, fuzzy, c-format 5148#, fuzzy, c-format
5146msgid "Invalid public key for reverse lookup `%s'\n" 5149msgid "Invalid public key for reverse lookup `%s'\n"
5147msgstr "Đối số không hợp lệ cho « %s ».\n" 5150msgstr "Đối số không hợp lệ cho « %s ».\n"
5148 5151
5149#: src/namestore/gnunet-namestore.c:1099 5152#: src/namestore/gnunet-namestore.c:1221
5150#: src/peerinfo-tool/gnunet-peerinfo.c:773 5153#: src/peerinfo-tool/gnunet-peerinfo.c:775
5151#, fuzzy, c-format 5154#, fuzzy, c-format
5152msgid "Invalid URI `%s'\n" 5155msgid "Invalid URI `%s'\n"
5153msgstr "Dữ liệu nhập không hợp lệ.\n" 5156msgstr "Dữ liệu nhập không hợp lệ.\n"
5154 5157
5155#: src/namestore/gnunet-namestore.c:1134 5158#: src/namestore/gnunet-namestore.c:1249
5156#, fuzzy, c-format 5159#, fuzzy, c-format
5157msgid "Invalid nick `%s'\n" 5160msgid "Invalid nick `%s'\n"
5158msgstr "Dữ liệu nhập không hợp lệ.\n" 5161msgstr "Dữ liệu nhập không hợp lệ.\n"
5159 5162
5160#: src/namestore/gnunet-namestore.c:1174 5163#: src/namestore/gnunet-namestore.c:1289
5161#, c-format 5164#, c-format
5162msgid "No default ego configured in identity service\n" 5165msgid "No default ego configured in identity service\n"
5163msgstr "" 5166msgstr ""
5164 5167
5165#: src/namestore/gnunet-namestore.c:1238 5168#: src/namestore/gnunet-namestore.c:1341
5169#, c-format
5170msgid "Superfluous command line arguments (starting with `%s') ignored\n"
5171msgstr ""
5172
5173#: src/namestore/gnunet-namestore.c:1357
5166#, fuzzy, c-format 5174#, fuzzy, c-format
5167msgid "Cannot connect to identity service\n" 5175msgid "Cannot connect to identity service\n"
5168msgstr "Không thể kết nối tới %s:%u: %s\n" 5176msgstr "Không thể kết nối tới %s:%u: %s\n"
5169 5177
5170#: src/namestore/gnunet-namestore.c:1263 5178#: src/namestore/gnunet-namestore.c:1407
5179msgid "Empty record line argument is not allowed.\n"
5180msgstr ""
5181
5182#: src/namestore/gnunet-namestore.c:1423
5183#, c-format
5184msgid "Invalid expiration time `%s' (must be without unit)\n"
5185msgstr ""
5186
5187#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
5188#: src/namestore/gnunet-namestore.c:1470
5189#, fuzzy, c-format
5190msgid "Missing entries in record line `%s'.\n"
5191msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
5192
5193#: src/namestore/gnunet-namestore.c:1444
5194#, fuzzy, c-format
5195msgid "Unknown record type `%s'\n"
5196msgstr "Không rõ câu lệnh « %s ».\n"
5197
5198#: src/namestore/gnunet-namestore.c:1484
5199#, fuzzy, c-format
5200msgid "Invalid record data for type %s: `%s'.\n"
5201msgstr "Địa chỉ IP định dạng sai: %s\n"
5202
5203#: src/namestore/gnunet-namestore.c:1548
5171msgid "add record" 5204msgid "add record"
5172msgstr "" 5205msgstr ""
5173 5206
5174#: src/namestore/gnunet-namestore.c:1267 5207#: src/namestore/gnunet-namestore.c:1552
5175msgid "delete record" 5208msgid "delete record"
5176msgstr "" 5209msgstr ""
5177 5210
5178#: src/namestore/gnunet-namestore.c:1271 5211#: src/namestore/gnunet-namestore.c:1556
5179msgid "display records" 5212msgid "display records"
5180msgstr "" 5213msgstr ""
5181 5214
5182#: src/namestore/gnunet-namestore.c:1276 5215#: src/namestore/gnunet-namestore.c:1561
5183msgid "" 5216msgid ""
5184"expiration time for record to use (for adding only), \"never\" is possible" 5217"expiration time for record to use (for adding only), \"never\" is possible"
5185msgstr "" 5218msgstr ""
5186 5219
5187#: src/namestore/gnunet-namestore.c:1281 5220#: src/namestore/gnunet-namestore.c:1566
5188#, fuzzy 5221#, fuzzy
5189msgid "set the desired nick name for the zone" 5222msgid "set the desired nick name for the zone"
5190msgstr "In ra thông tin về các đồng đẳng GNUnet." 5223msgstr "In ra thông tin về các đồng đẳng GNUnet."
5191 5224
5192#: src/namestore/gnunet-namestore.c:1285 5225#: src/namestore/gnunet-namestore.c:1570
5193#, fuzzy 5226#, fuzzy
5194msgid "monitor changes in the namestore" 5227msgid "monitor changes in the namestore"
5195msgstr "Không kết nối được đến trình nền gnunetd." 5228msgstr "Không kết nối được đến trình nền gnunetd."
5196 5229
5197#: src/namestore/gnunet-namestore.c:1295 5230#: src/namestore/gnunet-namestore.c:1580
5198#, fuzzy 5231#, fuzzy
5199msgid "determine our name for the given PKEY" 5232msgid "determine our name for the given PKEY"
5200msgstr "In ra thông tin về các đồng đẳng GNUnet." 5233msgstr "In ra thông tin về các đồng đẳng GNUnet."
5201 5234
5202#: src/namestore/gnunet-namestore.c:1300 5235#: src/namestore/gnunet-namestore.c:1585
5236msgid ""
5237"set record set to values given by (possibly multiple) RECORDLINES; can be "
5238"specified multiple times"
5239msgstr ""
5240
5241#: src/namestore/gnunet-namestore.c:1590
5203msgid "type of the record to add/delete/display" 5242msgid "type of the record to add/delete/display"
5204msgstr "" 5243msgstr ""
5205 5244
5206#: src/namestore/gnunet-namestore.c:1305 5245#: src/namestore/gnunet-namestore.c:1595
5207msgid "URI to import into our zone" 5246msgid "URI to import into our zone"
5208msgstr "" 5247msgstr ""
5209 5248
5210#: src/namestore/gnunet-namestore.c:1310 5249#: src/namestore/gnunet-namestore.c:1600
5211msgid "value of the record to add/delete" 5250msgid "value of the record to add/delete"
5212msgstr "" 5251msgstr ""
5213 5252
5214#: src/namestore/gnunet-namestore.c:1314 5253#: src/namestore/gnunet-namestore.c:1604
5215msgid "create or list public record" 5254msgid "create or list public record"
5216msgstr "" 5255msgstr ""
5217 5256
5218#: src/namestore/gnunet-namestore.c:1318 5257#: src/namestore/gnunet-namestore.c:1608
5219msgid "" 5258msgid ""
5220"create shadow record (only valid if all other records of the same type have " 5259"create shadow record (only valid if all other records of the same type have "
5221"expired" 5260"expired"
5222msgstr "" 5261msgstr ""
5223 5262
5224#: src/namestore/gnunet-namestore.c:1323 5263#: src/namestore/gnunet-namestore.c:1613
5225msgid "name of the ego controlling the zone" 5264msgid "name of the ego controlling the zone"
5226msgstr "" 5265msgstr ""
5227 5266
5228#: src/namestore/gnunet-namestore-fcfsd.c:547 5267#: src/namestore/gnunet-namestore-fcfsd.c:549
5229#, fuzzy, c-format 5268#, fuzzy, c-format
5230msgid "Unsupported form value `%s'\n" 5269msgid "Unsupported form value `%s'\n"
5231msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n" 5270msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
5232 5271
5233#: src/namestore/gnunet-namestore-fcfsd.c:574 5272#: src/namestore/gnunet-namestore-fcfsd.c:576
5234#, fuzzy, c-format 5273#, fuzzy, c-format
5235msgid "Failed to create record for domain `%s': %s\n" 5274msgid "Failed to create record for domain `%s': %s\n"
5236msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 5275msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
5237 5276
5238#: src/namestore/gnunet-namestore-fcfsd.c:595 5277#: src/namestore/gnunet-namestore-fcfsd.c:597
5239msgid "Error when mapping zone to name\n" 5278msgid "Error when mapping zone to name\n"
5240msgstr "" 5279msgstr ""
5241 5280
5242#: src/namestore/gnunet-namestore-fcfsd.c:627 5281#: src/namestore/gnunet-namestore-fcfsd.c:629
5243#, c-format 5282#, c-format
5244msgid "Found existing name `%s' for the given key\n" 5283msgid "Found existing name `%s' for the given key\n"
5245msgstr "" 5284msgstr ""
5246 5285
5247#: src/namestore/gnunet-namestore-fcfsd.c:687 5286#: src/namestore/gnunet-namestore-fcfsd.c:689
5248#, c-format 5287#, c-format
5249msgid "Found %u existing records for domain `%s'\n" 5288msgid "Found %u existing records for domain `%s'\n"
5250msgstr "" 5289msgstr ""
5251 5290
5252#: src/namestore/gnunet-namestore-fcfsd.c:775 5291#: src/namestore/gnunet-namestore-fcfsd.c:777
5253#, fuzzy, c-format 5292#, fuzzy, c-format
5254msgid "Failed to create page for `%s'\n" 5293msgid "Failed to create page for `%s'\n"
5255msgstr "Không thể tạo miền tên.\n" 5294msgstr "Không thể tạo miền tên.\n"
5256 5295
5257#: src/namestore/gnunet-namestore-fcfsd.c:794 5296#: src/namestore/gnunet-namestore-fcfsd.c:796
5258#, fuzzy, c-format 5297#, fuzzy, c-format
5259msgid "Failed to setup post processor for `%s'\n" 5298msgid "Failed to setup post processor for `%s'\n"
5260msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" 5299msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
5261 5300
5262#: src/namestore/gnunet-namestore-fcfsd.c:830 5301#: src/namestore/gnunet-namestore-fcfsd.c:832
5263msgid "Domain name must not contain `.'\n" 5302msgid "Domain name must not contain `.'\n"
5264msgstr "" 5303msgstr ""
5265 5304
5266#: src/namestore/gnunet-namestore-fcfsd.c:839 5305#: src/namestore/gnunet-namestore-fcfsd.c:841
5267msgid "Domain name must not contain `+'\n" 5306msgid "Domain name must not contain `+'\n"
5268msgstr "" 5307msgstr ""
5269 5308
5270#: src/namestore/gnunet-namestore-fcfsd.c:1069 5309#: src/namestore/gnunet-namestore-fcfsd.c:1071
5271msgid "No ego configured for `fcfsd` subsystem\n" 5310msgid "No ego configured for `fcfsd` subsystem\n"
5272msgstr "" 5311msgstr ""
5273 5312
5274#: src/namestore/gnunet-namestore-fcfsd.c:1097 5313#: src/namestore/gnunet-namestore-fcfsd.c:1099
5275#, fuzzy 5314#, fuzzy
5276msgid "Failed to start HTTP server\n" 5315msgid "Failed to start HTTP server\n"
5277msgstr "Lỗi bắt đầu thu thập.\n" 5316msgstr "Lỗi bắt đầu thu thập.\n"
5278 5317
5279#: src/namestore/gnunet-namestore-fcfsd.c:1145 5318#: src/namestore/gnunet-namestore-fcfsd.c:1147
5280#, fuzzy 5319#, fuzzy
5281msgid "Failed to connect to identity\n" 5320msgid "Failed to connect to identity\n"
5282msgstr "Lỗi kết nối đến gnunetd.\n" 5321msgstr "Lỗi kết nối đến gnunetd.\n"
5283 5322
5284#: src/namestore/gnunet-namestore-fcfsd.c:1171 5323#: src/namestore/gnunet-namestore-fcfsd.c:1173
5285msgid "name of the zone that is to be managed by FCFSD" 5324msgid "name of the zone that is to be managed by FCFSD"
5286msgstr "" 5325msgstr ""
5287 5326
5288#: src/namestore/gnunet-namestore-fcfsd.c:1190 5327#: src/namestore/gnunet-namestore-fcfsd.c:1192
5289msgid "GNU Name System First Come First Serve name registration service" 5328msgid "GNU Name System First Come First Serve name registration service"
5290msgstr "" 5329msgstr ""
5291 5330
5292#: src/namestore/gnunet-service-namestore.c:749 5331#: src/namestore/gnunet-service-namestore.c:900
5293#, fuzzy, c-format 5332#, fuzzy, c-format
5294msgid "Failed to replicate block in namecache: %s\n" 5333msgid "Failed to replicate block in namecache: %s\n"
5295msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" 5334msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
5296 5335
5297#: src/namestore/gnunet-zoneimport.c:2036 5336#: src/namestore/gnunet-zoneimport.c:2038
5298msgid "size to use for the main hash map" 5337msgid "size to use for the main hash map"
5299msgstr "" 5338msgstr ""
5300 5339
5301#: src/namestore/gnunet-zoneimport.c:2041 5340#: src/namestore/gnunet-zoneimport.c:2043
5302msgid "minimum expiration time we assume for imported records" 5341msgid "minimum expiration time we assume for imported records"
5303msgstr "" 5342msgstr ""
5304 5343
5305#: src/namestore/namestore_api.c:389 5344#: src/namestore/namestore_api.c:391
5306msgid "Namestore failed to store record\n" 5345msgid "Namestore failed to store record\n"
5307msgstr "" 5346msgstr ""
5308 5347
5309#: src/namestore/plugin_namestore_heap.c:776 5348#: src/namestore/plugin_namestore_heap.c:778
5310#, fuzzy 5349#, fuzzy
5311msgid "heap file database running\n" 5350msgid "heap file database running\n"
5312msgstr "kho dữ liệu sqlite" 5351msgstr "kho dữ liệu sqlite"
5313 5352
5314#: src/namestore/plugin_namestore_sqlite.c:216 5353#: src/nat-auto/gnunet-nat-auto.c:193
5315#: src/namestore/plugin_namestore_sqlite.c:227
5316#, fuzzy, c-format
5317msgid "Failed to setup database at `%s'\n"
5318msgstr "Lỗi chạy %s: %s %d\n"
5319
5320#: src/nat-auto/gnunet-nat-auto.c:191
5321#, fuzzy 5354#, fuzzy
5322msgid "Suggested configuration changes:\n" 5355msgid "Suggested configuration changes:\n"
5323msgstr "" 5356msgstr ""
5324"\n" 5357"\n"
5325"CHƯA lưu các thay đổi trong cấu hình.\n" 5358"CHƯA lưu các thay đổi trong cấu hình.\n"
5326 5359
5327#: src/nat-auto/gnunet-nat-auto.c:217 5360#: src/nat-auto/gnunet-nat-auto.c:219
5328#, fuzzy, c-format 5361#, fuzzy, c-format
5329msgid "Failed to write configuration to `%s'\n" 5362msgid "Failed to write configuration to `%s'\n"
5330msgstr "Lỗi lưu cấu hình." 5363msgstr "Lỗi lưu cấu hình."
5331 5364
5332#: src/nat-auto/gnunet-nat-auto.c:224 5365#: src/nat-auto/gnunet-nat-auto.c:226
5333#, fuzzy, c-format 5366#, fuzzy, c-format
5334msgid "Wrote updated configuration to `%s'\n" 5367msgid "Wrote updated configuration to `%s'\n"
5335msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 5368msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
5336 5369
5337#: src/nat-auto/gnunet-nat-auto.c:343 5370#: src/nat-auto/gnunet-nat-auto.c:345
5338#, fuzzy 5371#, fuzzy
5339msgid "run autoconfiguration" 5372msgid "run autoconfiguration"
5340msgstr "Cấu hình hạn ngạch" 5373msgstr "Cấu hình hạn ngạch"
5341 5374
5342#: src/nat-auto/gnunet-nat-auto.c:349 5375#: src/nat-auto/gnunet-nat-auto.c:351
5343msgid "section name providing the configuration for the adapter" 5376msgid "section name providing the configuration for the adapter"
5344msgstr "" 5377msgstr ""
5345 5378
5346#: src/nat-auto/gnunet-nat-auto.c:354 src/nat/gnunet-nat.c:451 5379#: src/nat-auto/gnunet-nat-auto.c:356 src/nat/gnunet-nat.c:459
5347msgid "use TCP" 5380msgid "use TCP"
5348msgstr "" 5381msgstr ""
5349 5382
5350#: src/nat-auto/gnunet-nat-auto.c:359 src/nat/gnunet-nat.c:456 5383#: src/nat-auto/gnunet-nat-auto.c:361 src/nat/gnunet-nat.c:464
5351msgid "use UDP" 5384msgid "use UDP"
5352msgstr "" 5385msgstr ""
5353 5386
5354#: src/nat-auto/gnunet-nat-auto.c:364 5387#: src/nat-auto/gnunet-nat-auto.c:366
5355msgid "write configuration file (for autoconfiguration)" 5388msgid "write configuration file (for autoconfiguration)"
5356msgstr "" 5389msgstr ""
5357 5390
5358#: src/nat-auto/gnunet-nat-auto.c:376 5391#: src/nat-auto/gnunet-nat-auto.c:378
5359#, fuzzy 5392#, fuzzy
5360msgid "GNUnet NAT traversal autoconfiguration" 5393msgid "GNUnet NAT traversal autoconfiguration"
5361msgstr "Cấu hình GNUnet" 5394msgstr "Cấu hình GNUnet"
5362 5395
5363#: src/nat-auto/gnunet-nat-auto_legacy.c:401 5396#: src/nat-auto/gnunet-nat-auto_legacy.c:403
5364#: src/nat-auto/gnunet-service-nat-auto_legacy.c:679 5397#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
5365#: src/nat-auto/nat_auto_api_test.c:403 5398#: src/nat-auto/nat_auto_api_test.c:409
5366#, fuzzy 5399#, fuzzy
5367msgid "Failed to connect to `gnunet-nat-server'\n" 5400msgid "Failed to connect to `gnunet-nat-server'\n"
5368msgstr "Lỗi kết nối đến gnunetd.\n" 5401msgstr "Lỗi kết nối đến gnunetd.\n"
5369 5402
5370#: src/nat-auto/gnunet-nat-auto_legacy.c:516 5403#: src/nat-auto/gnunet-nat-auto_legacy.c:518
5371#, c-format 5404#, c-format
5372msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n" 5405msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
5373msgstr "" 5406msgstr ""
5374 5407
5375#: src/nat-auto/gnunet-nat-auto_legacy.c:566 5408#: src/nat-auto/gnunet-nat-auto_legacy.c:568
5376#: src/nat-auto/nat_auto_api_test.c:569 5409#: src/nat-auto/nat_auto_api_test.c:575
5377#, fuzzy 5410#, fuzzy
5378msgid "NAT test failed to start NAT library\n" 5411msgid "NAT test failed to start NAT library\n"
5379msgstr "Lỗi bắt đầu thu thập.\n" 5412msgstr "Lỗi bắt đầu thu thập.\n"
5380 5413
5381#: src/nat-auto/gnunet-service-nat-auto.c:340 5414#: src/nat-auto/gnunet-service-nat-auto.c:342
5382msgid "UPnP client `upnpc` command not found, disabling UPnP\n" 5415msgid "UPnP client `upnpc` command not found, disabling UPnP\n"
5383msgstr "" 5416msgstr ""
5384 5417
5385#: src/nat-auto/gnunet-service-nat-auto_legacy.c:383 5418#: src/nat-auto/gnunet-service-nat-auto_legacy.c:385
5386msgid "NAT traversal with ICMP Server succeeded.\n" 5419msgid "NAT traversal with ICMP Server succeeded.\n"
5387msgstr "" 5420msgstr ""
5388 5421
5389#: src/nat-auto/gnunet-service-nat-auto_legacy.c:384 5422#: src/nat-auto/gnunet-service-nat-auto_legacy.c:386
5390msgid "NAT traversal with ICMP Server failed.\n" 5423msgid "NAT traversal with ICMP Server failed.\n"
5391msgstr "" 5424msgstr ""
5392 5425
5393#: src/nat-auto/gnunet-service-nat-auto_legacy.c:403 5426#: src/nat-auto/gnunet-service-nat-auto_legacy.c:405
5394#, fuzzy 5427#, fuzzy
5395msgid "Testing connection reversal with ICMP server.\n" 5428msgid "Testing connection reversal with ICMP server.\n"
5396msgstr "Cổng để liên lạc với giao diện người dùng GNUnet" 5429msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
5397 5430
5398#: src/nat-auto/gnunet-service-nat-auto_legacy.c:435 5431#: src/nat-auto/gnunet-service-nat-auto_legacy.c:437
5399#, c-format 5432#, c-format
5400msgid "Detected external IP `%s'\n" 5433msgid "Detected external IP `%s'\n"
5401msgstr "" 5434msgstr ""
5402 5435
5403#: src/nat-auto/gnunet-service-nat-auto_legacy.c:570 5436#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
5404msgid "This system has a global IPv6 address, setting IPv6 to supported.\n" 5437msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
5405msgstr "" 5438msgstr ""
5406 5439
5407#: src/nat-auto/gnunet-service-nat-auto_legacy.c:588 5440#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
5408#, fuzzy, c-format 5441#, fuzzy, c-format
5409msgid "Detected internal network address `%s'.\n" 5442msgid "Detected internal network address `%s'.\n"
5410msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n" 5443msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n"
5411 5444
5412#: src/nat-auto/gnunet-service-nat-auto_legacy.c:722 5445#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
5413msgid "upnpc found, enabling its use\n" 5446msgid "upnpc found, enabling its use\n"
5414msgstr "" 5447msgstr ""
5415 5448
5416#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723 5449#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
5417msgid "upnpc not found\n" 5450msgid "upnpc not found\n"
5418msgstr "" 5451msgstr ""
5419 5452
5420#: src/nat-auto/gnunet-service-nat-auto_legacy.c:760 5453#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
5421msgid "test_icmp_server not possible, as we have no public IPv4 address\n" 5454msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
5422msgstr "" 5455msgstr ""
5423 5456
5424#: src/nat-auto/gnunet-service-nat-auto_legacy.c:772 5457#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
5425#: src/nat-auto/gnunet-service-nat-auto_legacy.c:832 5458#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
5426msgid "test_icmp_server not possible, as we are not behind NAT\n" 5459msgid "test_icmp_server not possible, as we are not behind NAT\n"
5427msgstr "" 5460msgstr ""
5428 5461
5429#: src/nat-auto/gnunet-service-nat-auto_legacy.c:784 5462#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
5430#: src/nat-auto/gnunet-service-nat-auto_legacy.c:844 5463#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
5431msgid "No working gnunet-helper-nat-server found\n" 5464msgid "No working gnunet-helper-nat-server found\n"
5432msgstr "" 5465msgstr ""
5433 5466
5434#: src/nat-auto/gnunet-service-nat-auto_legacy.c:821 5467#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
5435msgid "test_icmp_client not possible, as we have no internal IPv4 address\n" 5468msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
5436msgstr "" 5469msgstr ""
5437 5470
5438#: src/nat-auto/nat_auto_api.c:74 5471#: src/nat-auto/nat_auto_api.c:76
5439msgid "Operation Successful" 5472msgid "Operation Successful"
5440msgstr "" 5473msgstr ""
5441 5474
5442#: src/nat-auto/nat_auto_api.c:76 5475#: src/nat-auto/nat_auto_api.c:78
5443msgid "IPC failure" 5476msgid "IPC failure"
5444msgstr "" 5477msgstr ""
5445 5478
5446#: src/nat-auto/nat_auto_api.c:78 5479#: src/nat-auto/nat_auto_api.c:80
5447msgid "Failure in network subsystem, check permissions." 5480msgid "Failure in network subsystem, check permissions."
5448msgstr "" 5481msgstr ""
5449 5482
5450#: src/nat-auto/nat_auto_api.c:80 5483#: src/nat-auto/nat_auto_api.c:82
5451msgid "Encountered timeout while performing operation" 5484msgid "Encountered timeout while performing operation"
5452msgstr "" 5485msgstr ""
5453 5486
5454#: src/nat-auto/nat_auto_api.c:82 5487#: src/nat-auto/nat_auto_api.c:84
5455msgid "detected that we are offline" 5488msgid "detected that we are offline"
5456msgstr "" 5489msgstr ""
5457 5490
5458#: src/nat-auto/nat_auto_api.c:84 5491#: src/nat-auto/nat_auto_api.c:86
5459msgid "`upnpc` command not found" 5492msgid "`upnpc` command not found"
5460msgstr "" 5493msgstr ""
5461 5494
5462#: src/nat-auto/nat_auto_api.c:86 5495#: src/nat-auto/nat_auto_api.c:88
5463#, fuzzy 5496#, fuzzy
5464msgid "Failed to run `upnpc` command" 5497msgid "Failed to run `upnpc` command"
5465msgstr "Lỗi bắt đầu thu thập.\n" 5498msgstr "Lỗi bắt đầu thu thập.\n"
5466 5499
5467#: src/nat-auto/nat_auto_api.c:88 5500#: src/nat-auto/nat_auto_api.c:90
5468msgid "`upnpc' command took too long, process killed" 5501msgid "`upnpc' command took too long, process killed"
5469msgstr "" 5502msgstr ""
5470 5503
5471#: src/nat-auto/nat_auto_api.c:90 5504#: src/nat-auto/nat_auto_api.c:92
5472msgid "`upnpc' command failed to establish port mapping" 5505msgid "`upnpc' command failed to establish port mapping"
5473msgstr "" 5506msgstr ""
5474 5507
5475#: src/nat-auto/nat_auto_api.c:92 5508#: src/nat-auto/nat_auto_api.c:94
5476msgid "`external-ip' command not found" 5509msgid "`external-ip' command not found"
5477msgstr "" 5510msgstr ""
5478 5511
5479#: src/nat-auto/nat_auto_api.c:94 5512#: src/nat-auto/nat_auto_api.c:96
5480#, fuzzy 5513#, fuzzy
5481msgid "Failed to run `external-ip` command" 5514msgid "Failed to run `external-ip` command"
5482msgstr "Lỗi bắt đầu thu thập.\n" 5515msgstr "Lỗi bắt đầu thu thập.\n"
5483 5516
5484#: src/nat-auto/nat_auto_api.c:96 5517#: src/nat-auto/nat_auto_api.c:98
5485msgid "`external-ip' command output invalid" 5518msgid "`external-ip' command output invalid"
5486msgstr "" 5519msgstr ""
5487 5520
5488#: src/nat-auto/nat_auto_api.c:98 5521#: src/nat-auto/nat_auto_api.c:100
5489msgid "no valid address was returned by `external-ip'" 5522msgid "no valid address was returned by `external-ip'"
5490msgstr "" 5523msgstr ""
5491 5524
5492#: src/nat-auto/nat_auto_api.c:100 5525#: src/nat-auto/nat_auto_api.c:102
5493#, fuzzy 5526#, fuzzy
5494msgid "Could not determine interface with internal/local network address" 5527msgid "Could not determine interface with internal/local network address"
5495msgstr "Không thể truy cập đến thông tin về không gian tên.\n" 5528msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
5496 5529
5497#: src/nat-auto/nat_auto_api.c:102 5530#: src/nat-auto/nat_auto_api.c:104
5498msgid "No functioning gnunet-helper-nat-server installation found" 5531msgid "No functioning gnunet-helper-nat-server installation found"
5499msgstr "" 5532msgstr ""
5500 5533
5501#: src/nat-auto/nat_auto_api.c:104 5534#: src/nat-auto/nat_auto_api.c:106
5502msgid "NAT test could not be initialized" 5535msgid "NAT test could not be initialized"
5503msgstr "" 5536msgstr ""
5504 5537
5505#: src/nat-auto/nat_auto_api.c:106 5538#: src/nat-auto/nat_auto_api.c:108
5506msgid "NAT test timeout reached" 5539msgid "NAT test timeout reached"
5507msgstr "" 5540msgstr ""
5508 5541
5509#: src/nat-auto/nat_auto_api.c:108 5542#: src/nat-auto/nat_auto_api.c:110
5510msgid "could not register NAT" 5543msgid "could not register NAT"
5511msgstr "" 5544msgstr ""
5512 5545
5513#: src/nat-auto/nat_auto_api.c:110 5546#: src/nat-auto/nat_auto_api.c:112
5514msgid "No working gnunet-helper-nat-client installation found" 5547msgid "No working gnunet-helper-nat-client installation found"
5515msgstr "" 5548msgstr ""
5516 5549
5517#: src/nat-auto/nat_auto_api_test.c:475 5550#: src/nat-auto/nat_auto_api_test.c:481
5518#, fuzzy, c-format 5551#, fuzzy, c-format
5519msgid "Failed to find valid PORT in section `%s'\n" 5552msgid "Failed to find valid PORT in section `%s'\n"
5520msgstr "Lỗi đóng kết đến cổng %s %d.\n" 5553msgstr "Lỗi đóng kết đến cổng %s %d.\n"
5521 5554
5522#: src/nat-auto/nat_auto_api_test.c:520 5555#: src/nat-auto/nat_auto_api_test.c:526
5523#, fuzzy, c-format 5556#, fuzzy, c-format
5524msgid "Failed to create socket bound to `%s' for NAT test: %s\n" 5557msgid "Failed to create socket bound to `%s' for NAT test: %s\n"
5525msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 5558msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
5526 5559
5527#: src/nat/gnunet-nat.c:429 5560#: src/nat/gnunet-nat.c:437
5528msgid "which IP and port are we locally using to bind/listen to" 5561msgid "which IP and port are we locally using to bind/listen to"
5529msgstr "" 5562msgstr ""
5530 5563
5531#: src/nat/gnunet-nat.c:435 5564#: src/nat/gnunet-nat.c:443
5532msgid "which remote IP and port should be asked for connection reversal" 5565msgid "which remote IP and port should be asked for connection reversal"
5533msgstr "" 5566msgstr ""
5534 5567
5535#: src/nat/gnunet-nat.c:441 5568#: src/nat/gnunet-nat.c:449
5536msgid "" 5569msgid ""
5537"name of configuration section to find additional options, such as manual " 5570"name of configuration section to find additional options, such as manual "
5538"host punching data" 5571"host punching data"
5539msgstr "" 5572msgstr ""
5540 5573
5541#: src/nat/gnunet-nat.c:446 5574#: src/nat/gnunet-nat.c:454
5542msgid "enable STUN processing" 5575msgid "enable STUN processing"
5543msgstr "" 5576msgstr ""
5544 5577
5545#: src/nat/gnunet-nat.c:461 5578#: src/nat/gnunet-nat.c:469
5546msgid "watch for connection reversal requests" 5579msgid "watch for connection reversal requests"
5547msgstr "" 5580msgstr ""
5548 5581
5549#: src/nat/gnunet-nat.c:473 5582#: src/nat/gnunet-nat.c:481
5550msgid "GNUnet NAT traversal autoconfigure daemon" 5583msgid "GNUnet NAT traversal autoconfigure daemon"
5551msgstr "" 5584msgstr ""
5552 5585
5553#: src/nat/gnunet-service-nat.c:1337 5586#: src/nat/gnunet-service-nat.c:1339
5554#, c-format 5587#, c-format
5555msgid "Malformed punched hole specification `%s' (lacks port)\n" 5588msgid "Malformed punched hole specification `%s' (lacks port)\n"
5556msgstr "" 5589msgstr ""
5557 5590
5558#: src/nat/gnunet-service-nat.c:1347 5591#: src/nat/gnunet-service-nat.c:1349
5559#, c-format 5592#, c-format
5560msgid "Invalid port number in punched hole specification `%s' (lacks port)\n" 5593msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
5561msgstr "" 5594msgstr ""
5562 5595
5563#: src/nat/gnunet-service-nat.c:1363 5596#: src/nat/gnunet-service-nat.c:1365
5564#, c-format 5597#, c-format
5565msgid "Malformed punched hole specification `%s' (lacks `]')\n" 5598msgid "Malformed punched hole specification `%s' (lacks `]')\n"
5566msgstr "" 5599msgstr ""
5567 5600
5568#: src/nat/gnunet-service-nat.c:1374 5601#: src/nat/gnunet-service-nat.c:1376
5569#, c-format 5602#, c-format
5570msgid "Malformed punched hole specification `%s' (IPv6 address invalid)" 5603msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
5571msgstr "" 5604msgstr ""
5572 5605
5573#: src/nat/gnunet-service-nat.c:1839 5606#: src/nat/gnunet-service-nat.c:1841
5574#, fuzzy 5607#, fuzzy
5575msgid "Connection reversal request failed\n" 5608msgid "Connection reversal request failed\n"
5576msgstr "Thu thập bị dừng.\n" 5609msgstr "Thu thập bị dừng.\n"
5577 5610
5578#: src/nat/gnunet-service-nat.c:1912 5611#: src/nat/gnunet-service-nat.c:1914
5579msgid "" 5612msgid ""
5580"UPnP enabled in configuration, but UPnP client `upnpc` command not found, " 5613"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
5581"disabling UPnP\n" 5614"disabling UPnP\n"
5582msgstr "" 5615msgstr ""
5583 5616
5584#: src/nat/gnunet-service-nat_helper.c:184 5617#: src/nat/gnunet-service-nat_helper.c:186
5585#, c-format 5618#, c-format
5586msgid "gnunet-helper-nat-server generated malformed address `%s'\n" 5619msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
5587msgstr "" 5620msgstr ""
5588 5621
5589#: src/nat/gnunet-service-nat_helper.c:271 5622#: src/nat/gnunet-service-nat_helper.c:273
5590#, fuzzy, c-format 5623#, fuzzy, c-format
5591msgid "Failed to start %s\n" 5624msgid "Failed to start %s\n"
5592msgstr "Lỗi bắt đầu thu thập.\n" 5625msgstr "Lỗi bắt đầu thu thập.\n"
5593 5626
5594#: src/nat/gnunet-service-nat_mini.c:194 5627#: src/nat/gnunet-service-nat_mini.c:196
5595msgid "`external-ip' command not found\n" 5628msgid "`external-ip' command not found\n"
5596msgstr "" 5629msgstr ""
5597 5630
5598#: src/nat/gnunet-service-nat_mini.c:654 5631#: src/nat/gnunet-service-nat_mini.c:656
5599msgid "`upnpc' command not found\n" 5632msgid "`upnpc' command not found\n"
5600msgstr "" 5633msgstr ""
5601 5634
5602#: src/nse/gnunet-nse.c:120 5635#: src/nse/gnunet-nse.c:122
5603#, fuzzy 5636#, fuzzy
5604msgid "Show network size estimates from NSE service." 5637msgid "Show network size estimates from NSE service."
5605msgstr "# các yêu cầu get (lấy) dht được nhận" 5638msgstr "# các yêu cầu get (lấy) dht được nhận"
5606 5639
5607#: src/nse/gnunet-nse-profiler.c:847 5640#: src/nse/gnunet-nse-profiler.c:849
5608#, fuzzy 5641#, fuzzy
5609msgid "limit to the number of connections to NSE services, 0 for none" 5642msgid "limit to the number of connections to NSE services, 0 for none"
5610msgstr "Không kết nối được đến trình nền gnunetd." 5643msgstr "Không kết nối được đến trình nền gnunetd."
5611 5644
5612#: src/nse/gnunet-nse-profiler.c:852 5645#: src/nse/gnunet-nse-profiler.c:854
5613msgid "name of the file for writing connection information and statistics" 5646msgid "name of the file for writing connection information and statistics"
5614msgstr "" 5647msgstr ""
5615 5648
5616#: src/nse/gnunet-nse-profiler.c:864 5649#: src/nse/gnunet-nse-profiler.c:866
5617msgid "name of the file for writing the main results" 5650msgid "name of the file for writing the main results"
5618msgstr "" 5651msgstr ""
5619 5652
5620#: src/nse/gnunet-nse-profiler.c:871 5653#: src/nse/gnunet-nse-profiler.c:873
5621msgid "Number of peers to run in each round, separated by commas" 5654msgid "Number of peers to run in each round, separated by commas"
5622msgstr "" 5655msgstr ""
5623 5656
5624#: src/nse/gnunet-nse-profiler.c:882 5657#: src/nse/gnunet-nse-profiler.c:884
5625msgid "delay between rounds" 5658msgid "delay between rounds"
5626msgstr "" 5659msgstr ""
5627 5660
5628#: src/nse/gnunet-nse-profiler.c:891 5661#: src/nse/gnunet-nse-profiler.c:893
5629#, fuzzy 5662#, fuzzy
5630msgid "Measure quality and performance of the NSE service." 5663msgid "Measure quality and performance of the NSE service."
5631msgstr "Không thể truy cập đến dịch vụ" 5664msgstr "Không thể truy cập đến dịch vụ"
5632 5665
5633#: src/nse/gnunet-service-nse.c:1532 5666#: src/nse/gnunet-service-nse.c:1534
5634#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:274 5667#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
5635#, fuzzy 5668#, fuzzy
5636msgid "Value is too large.\n" 5669msgid "Value is too large.\n"
5637msgstr "Giá trị không nằm trong phạm vi được phép." 5670msgstr "Giá trị không nằm trong phạm vi được phép."
5638 5671
5639#: src/peerinfo/gnunet-service-peerinfo.c:176 5672#: src/peerinfo/gnunet-service-peerinfo.c:178
5640#, fuzzy, c-format 5673#, fuzzy, c-format
5641msgid "Removing expired address of transport `%s'\n" 5674msgid "Removing expired address of transport `%s'\n"
5642msgstr "Đã nạp truyền tải « %s »\n" 5675msgstr "Đã nạp truyền tải « %s »\n"
5643 5676
5644#: src/peerinfo/gnunet-service-peerinfo.c:311 5677#: src/peerinfo/gnunet-service-peerinfo.c:313
5645#, fuzzy, c-format 5678#, fuzzy, c-format
5646msgid "Failed to parse HELLO in file `%s': %s\n" 5679msgid "Failed to parse HELLO in file `%s': %s\n"
5647msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 5680msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
5648 5681
5649#: src/peerinfo/gnunet-service-peerinfo.c:332 5682#: src/peerinfo/gnunet-service-peerinfo.c:334
5650#: src/peerinfo/gnunet-service-peerinfo.c:363 5683#: src/peerinfo/gnunet-service-peerinfo.c:365
5651#, fuzzy, c-format 5684#, fuzzy, c-format
5652msgid "Failed to parse HELLO in file `%s'\n" 5685msgid "Failed to parse HELLO in file `%s'\n"
5653msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 5686msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
5654 5687
5655#: src/peerinfo/gnunet-service-peerinfo.c:447 5688#: src/peerinfo/gnunet-service-peerinfo.c:449
5656msgid "# peers known" 5689msgid "# peers known"
5657msgstr "" 5690msgstr ""
5658 5691
5659#: src/peerinfo/gnunet-service-peerinfo.c:490 5692#: src/peerinfo/gnunet-service-peerinfo.c:492
5660#, c-format 5693#, c-format
5661msgid "" 5694msgid ""
5662"File `%s' in directory `%s' does not match naming convention. Removed.\n" 5695"File `%s' in directory `%s' does not match naming convention. Removed.\n"
@@ -5664,1139 +5697,900 @@ msgstr ""
5664"Tập tin « %s » trong thư mục « %s » không tùy theo quy ước đặt tên. Bị gỡ " 5697"Tập tin « %s » trong thư mục « %s » không tùy theo quy ước đặt tên. Bị gỡ "
5665"bỏ.\n" 5698"bỏ.\n"
5666 5699
5667#: src/peerinfo/gnunet-service-peerinfo.c:657 5700#: src/peerinfo/gnunet-service-peerinfo.c:659
5668#, fuzzy, c-format 5701#, fuzzy, c-format
5669msgid "Scanning directory `%s'\n" 5702msgid "Scanning directory `%s'\n"
5670msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 5703msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
5671 5704
5672#: src/peerinfo/gnunet-service-peerinfo.c:665 5705#: src/peerinfo/gnunet-service-peerinfo.c:667
5673#, c-format 5706#, c-format
5674msgid "Still no peers found in `%s'!\n" 5707msgid "Still no peers found in `%s'!\n"
5675msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n" 5708msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n"
5676 5709
5677#: src/peerinfo/gnunet-service-peerinfo.c:1098 5710#: src/peerinfo/gnunet-service-peerinfo.c:1100
5678#, fuzzy, c-format 5711#, fuzzy, c-format
5679msgid "Cleaning up directory `%s'\n" 5712msgid "Cleaning up directory `%s'\n"
5680msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 5713msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
5681 5714
5682#: src/peerinfo/gnunet-service-peerinfo.c:1436 5715#: src/peerinfo/gnunet-service-peerinfo.c:1438
5683#, c-format 5716#, c-format
5684msgid "Importing HELLOs from `%s'\n" 5717msgid "Importing HELLOs from `%s'\n"
5685msgstr "" 5718msgstr ""
5686 5719
5687#: src/peerinfo/gnunet-service-peerinfo.c:1449 5720#: src/peerinfo/gnunet-service-peerinfo.c:1451
5688msgid "Skipping import of included HELLOs\n" 5721msgid "Skipping import of included HELLOs\n"
5689msgstr "" 5722msgstr ""
5690 5723
5691#: src/peerinfo/peerinfo_api.c:218 5724#: src/peerinfo/peerinfo_api.c:220
5692#, fuzzy 5725#, fuzzy
5693msgid "Failed to receive response from `PEERINFO' service." 5726msgid "Failed to receive response from `PEERINFO' service."
5694msgstr "" 5727msgstr ""
5695"\n" 5728"\n"
5696"Không nhận được đáp ứng từ gnunetd.\n" 5729"Không nhận được đáp ứng từ gnunetd.\n"
5697 5730
5698#: src/peerinfo-tool/gnunet-peerinfo.c:237 5731#: src/peerinfo-tool/gnunet-peerinfo.c:239
5699#, fuzzy, c-format 5732#, fuzzy, c-format
5700msgid "%sPeer `%s'\n" 5733msgid "%sPeer `%s'\n"
5701msgstr "Tôi là đồng đẳng « %s ».\n" 5734msgstr "Tôi là đồng đẳng « %s ».\n"
5702 5735
5703#: src/peerinfo-tool/gnunet-peerinfo.c:244 5736#: src/peerinfo-tool/gnunet-peerinfo.c:246
5704#, c-format 5737#, c-format
5705msgid "\tExpires: %s \t %s\n" 5738msgid "\tExpires: %s \t %s\n"
5706msgstr "" 5739msgstr ""
5707 5740
5708#: src/peerinfo-tool/gnunet-peerinfo.c:297 5741#: src/peerinfo-tool/gnunet-peerinfo.c:299
5709#: src/rest-plugins/plugin_rest_peerinfo.c:499 5742#: src/rest-plugins/plugin_rest_peerinfo.c:501
5710#, fuzzy, c-format 5743#, fuzzy, c-format
5711msgid "Failure: Cannot convert address to string for peer `%s'\n" 5744msgid "Failure: Cannot convert address to string for peer `%s'\n"
5712msgstr "Lỗi đóng kết đến cổng %s %d.\n" 5745msgstr "Lỗi đóng kết đến cổng %s %d.\n"
5713 5746
5714#: src/peerinfo-tool/gnunet-peerinfo.c:464 5747#: src/peerinfo-tool/gnunet-peerinfo.c:466
5715#, c-format 5748#, c-format
5716msgid "Failure: Received invalid %s\n" 5749msgid "Failure: Received invalid %s\n"
5717msgstr "" 5750msgstr ""
5718 5751
5719#: src/peerinfo-tool/gnunet-peerinfo.c:478 5752#: src/peerinfo-tool/gnunet-peerinfo.c:480
5720#, fuzzy, c-format 5753#, fuzzy, c-format
5721msgid "Failed to write HELLO with %u bytes to file `%s'\n" 5754msgid "Failed to write HELLO with %u bytes to file `%s'\n"
5722msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 5755msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
5723 5756
5724#: src/peerinfo-tool/gnunet-peerinfo.c:497 5757#: src/peerinfo-tool/gnunet-peerinfo.c:499
5725#, c-format 5758#, c-format
5726msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n" 5759msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
5727msgstr "" 5760msgstr ""
5728 5761
5729#: src/peerinfo-tool/gnunet-peerinfo.c:797 5762#: src/peerinfo-tool/gnunet-peerinfo.c:799
5730#, c-format 5763#, c-format
5731msgid "I am peer `%s'.\n" 5764msgid "I am peer `%s'.\n"
5732msgstr "Tôi là đồng đẳng « %s ».\n" 5765msgstr "Tôi là đồng đẳng « %s ».\n"
5733 5766
5734#: src/peerinfo-tool/gnunet-peerinfo.c:841 5767#: src/peerinfo-tool/gnunet-peerinfo.c:843
5735msgid "don't resolve host names" 5768msgid "don't resolve host names"
5736msgstr "không quyết định các tên máy" 5769msgstr "không quyết định các tên máy"
5737 5770
5738#: src/peerinfo-tool/gnunet-peerinfo.c:846 5771#: src/peerinfo-tool/gnunet-peerinfo.c:848
5739msgid "output only the identity strings" 5772msgid "output only the identity strings"
5740msgstr "chỉ xuất những chuỗi nhận diện" 5773msgstr "chỉ xuất những chuỗi nhận diện"
5741 5774
5742#: src/peerinfo-tool/gnunet-peerinfo.c:850 5775#: src/peerinfo-tool/gnunet-peerinfo.c:852
5743msgid "include friend-only information" 5776msgid "include friend-only information"
5744msgstr "" 5777msgstr ""
5745 5778
5746#: src/peerinfo-tool/gnunet-peerinfo.c:855 5779#: src/peerinfo-tool/gnunet-peerinfo.c:857
5747msgid "output our own identity only" 5780msgid "output our own identity only"
5748msgstr "chỉ xuất nhận diện mình" 5781msgstr "chỉ xuất nhận diện mình"
5749 5782
5750#: src/peerinfo-tool/gnunet-peerinfo.c:860 5783#: src/peerinfo-tool/gnunet-peerinfo.c:862
5751#, fuzzy 5784#, fuzzy
5752msgid "list all known peers" 5785msgid "list all known peers"
5753msgstr "liệt kê mọi bộ tiếp hợp mạng" 5786msgstr "liệt kê mọi bộ tiếp hợp mạng"
5754 5787
5755#: src/peerinfo-tool/gnunet-peerinfo.c:866 5788#: src/peerinfo-tool/gnunet-peerinfo.c:868
5756msgid "dump hello to file" 5789msgid "dump hello to file"
5757msgstr "" 5790msgstr ""
5758 5791
5759#: src/peerinfo-tool/gnunet-peerinfo.c:871 5792#: src/peerinfo-tool/gnunet-peerinfo.c:873
5760msgid "also output HELLO uri(s)" 5793msgid "also output HELLO uri(s)"
5761msgstr "" 5794msgstr ""
5762 5795
5763#: src/peerinfo-tool/gnunet-peerinfo.c:877 5796#: src/peerinfo-tool/gnunet-peerinfo.c:879
5764msgid "add given HELLO uri to the database" 5797msgid "add given HELLO uri to the database"
5765msgstr "" 5798msgstr ""
5766 5799
5767#: src/peerinfo-tool/gnunet-peerinfo.c:895 5800#: src/peerinfo-tool/gnunet-peerinfo.c:897
5768#, fuzzy 5801#, fuzzy
5769msgid "Print information about peers." 5802msgid "Print information about peers."
5770msgstr "In ra thông tin về các đồng đẳng GNUnet." 5803msgstr "In ra thông tin về các đồng đẳng GNUnet."
5771 5804
5772#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:103 5805#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
5773#: src/transport/gnunet-service-transport_plugins.c:166 5806#: src/transport/gnunet-service-transport_plugins.c:168
5774#, fuzzy, c-format 5807#, fuzzy, c-format
5775msgid "Starting transport plugins `%s'\n" 5808msgid "Starting transport plugins `%s'\n"
5776msgstr "Đang nạp các truyền tải « %s »\n" 5809msgstr "Đang nạp các truyền tải « %s »\n"
5777 5810
5778#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:107 5811#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
5779#: src/transport/gnunet-service-transport_plugins.c:171 5812#: src/transport/gnunet-service-transport_plugins.c:173
5780#, fuzzy, c-format 5813#, fuzzy, c-format
5781msgid "Loading `%s' transport plugin\n" 5814msgid "Loading `%s' transport plugin\n"
5782msgstr "Đang nạp các truyền tải « %s »\n" 5815msgstr "Đang nạp các truyền tải « %s »\n"
5783 5816
5784#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:127 5817#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
5785#: src/transport/gnunet-service-transport_plugins.c:206 5818#: src/transport/gnunet-service-transport_plugins.c:208
5786#, fuzzy, c-format 5819#, fuzzy, c-format
5787msgid "Failed to load transport plugin for `%s'\n" 5820msgid "Failed to load transport plugin for `%s'\n"
5788msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" 5821msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
5789 5822
5790#: src/peerstore/gnunet-peerstore.c:89 5823#: src/peerstore/gnunet-peerstore.c:91
5791msgid "peerstore" 5824msgid "peerstore"
5792msgstr "" 5825msgstr ""
5793 5826
5794#: src/peerstore/gnunet-service-peerstore.c:596 5827#: src/peerstore/gnunet-service-peerstore.c:598
5795#, fuzzy, c-format 5828#, fuzzy, c-format
5796msgid "Could not load database backend `%s'\n" 5829msgid "Could not load database backend `%s'\n"
5797msgstr "Không thể đọc danh sách bạn bè « %s »\n" 5830msgstr "Không thể đọc danh sách bạn bè « %s »\n"
5798 5831
5799#: src/peerstore/peerstore_api.c:348 5832#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
5800msgid "timeout"
5801msgstr ""
5802
5803#: src/peerstore/peerstore_api.c:564 src/peerstore/peerstore_api.c:613
5804#, fuzzy 5833#, fuzzy
5805msgid "Unexpected iteration response, this should not happen.\n" 5834msgid "Unexpected iteration response, this should not happen.\n"
5806msgstr "Định dạng kết xuất không rõ, điều này không nên xảy ra.\n" 5835msgstr "Định dạng kết xuất không rõ, điều này không nên xảy ra.\n"
5807 5836
5808#: src/peerstore/peerstore_api.c:627 5837#: src/peerstore/peerstore_api.c:595
5809#, fuzzy 5838#, fuzzy
5810msgid "Received a malformed response from service." 5839msgid "Received a malformed response from service."
5811msgstr "Nhận yêu cầu định tuyến\n" 5840msgstr "Nhận yêu cầu định tuyến\n"
5812 5841
5813#: src/peerstore/peerstore_api.c:776 5842#: src/peerstore/peerstore_api.c:731
5814msgid "Received a watch result for a non existing watch.\n" 5843msgid "Received a watch result for a non existing watch.\n"
5815msgstr "" 5844msgstr ""
5816 5845
5817#: src/peerstore/plugin_peerstore_sqlite.c:451 5846#: src/peerstore/plugin_peerstore_sqlite.c:453
5818#: src/psycstore/plugin_psycstore_sqlite.c:280
5819#, fuzzy, c-format 5847#, fuzzy, c-format
5820msgid "" 5848msgid ""
5821"Error executing SQL query: %s\n" 5849"Error executing SQL query: %s\n"
5822" %s\n" 5850" %s\n"
5823msgstr "Gặp lỗi khi tạo người dùng" 5851msgstr "Gặp lỗi khi tạo người dùng"
5824 5852
5825#: src/peerstore/plugin_peerstore_sqlite.c:486 5853#: src/peerstore/plugin_peerstore_sqlite.c:488
5826#: src/psycstore/plugin_psycstore_mysql.c:248
5827#: src/psycstore/plugin_psycstore_sqlite.c:257
5828#, fuzzy, c-format 5854#, fuzzy, c-format
5829msgid "" 5855msgid ""
5830"Error preparing SQL query: %s\n" 5856"Error preparing SQL query: %s\n"
5831" %s\n" 5857" %s\n"
5832msgstr "Gặp lỗi khi tạo người dùng" 5858msgstr "Gặp lỗi khi tạo người dùng"
5833 5859
5834#: src/peerstore/plugin_peerstore_sqlite.c:568 5860#: src/peerstore/plugin_peerstore_sqlite.c:570
5835#, fuzzy, c-format 5861#, fuzzy, c-format
5836msgid "Unable to create indices: %s.\n" 5862msgid "Unable to create indices: %s.\n"
5837msgstr "Không thể tạo miền tên.\n" 5863msgstr "Không thể tạo miền tên.\n"
5838 5864
5839#: src/pq/pq_prepare.c:82 5865#: src/pq/pq_prepare.c:84
5840#, fuzzy, c-format 5866#, fuzzy, c-format
5841msgid "PQprepare (`%s' as `%s') failed with error: %s\n" 5867msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
5842msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n" 5868msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
5843 5869
5844#: src/psycstore/gnunet-service-psycstore.c:247 5870#: src/pt/gnunet-daemon-pt.c:423
5845#, fuzzy
5846msgid "Failed to store membership information!\n"
5847msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
5848
5849#: src/psycstore/gnunet-service-psycstore.c:269
5850#, fuzzy
5851msgid "Failed to test membership!\n"
5852msgstr "Lỗi lấy thông kê về truyền tải.\n"
5853
5854#: src/psycstore/gnunet-service-psycstore.c:298
5855#, fuzzy
5856msgid "Dropping invalid fragment\n"
5857msgstr "Đối số không hợp lệ cho « %s ».\n"
5858
5859#: src/psycstore/gnunet-service-psycstore.c:309
5860#, fuzzy
5861msgid "Failed to store fragment\n"
5862msgstr "Lỗi bắt đầu thu thập.\n"
5863
5864#: src/psycstore/gnunet-service-psycstore.c:366
5865#, fuzzy
5866msgid "Failed to get fragment!\n"
5867msgstr "Lỗi lấy thông kê về truyền tải.\n"
5868
5869#: src/psycstore/gnunet-service-psycstore.c:432
5870#, fuzzy
5871msgid "Failed to get message!\n"
5872msgstr "Lỗi lấy thông kê về truyền tải.\n"
5873
5874#: src/psycstore/gnunet-service-psycstore.c:462
5875#, fuzzy
5876msgid "Failed to get message fragment!\n"
5877msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
5878
5879#: src/psycstore/gnunet-service-psycstore.c:492
5880#, fuzzy
5881msgid "Failed to get master counters!\n"
5882msgstr "Lỗi lấy thông kê về truyền tải.\n"
5883
5884#: src/psycstore/gnunet-service-psycstore.c:673
5885#, fuzzy, c-format
5886msgid "Failed to begin modifying state: %d\n"
5887msgstr "Lỗi bắt đầu thu thập.\n"
5888
5889#: src/psycstore/gnunet-service-psycstore.c:683
5890#, fuzzy, c-format
5891msgid "Failed to modify state: %d\n"
5892msgstr "Lỗi bắt đầu thu thập.\n"
5893
5894#: src/psycstore/gnunet-service-psycstore.c:691
5895#, fuzzy
5896msgid "Failed to end modifying state!\n"
5897msgstr "Lỗi bắt đầu thu thập.\n"
5898
5899#: src/psycstore/gnunet-service-psycstore.c:728
5900msgid "Tried to set invalid state variable name!\n"
5901msgstr ""
5902
5903#: src/psycstore/gnunet-service-psycstore.c:742
5904#, fuzzy
5905msgid "Failed to begin synchronizing state!\n"
5906msgstr "Lỗi lấy thông kê về truyền tải.\n"
5907
5908#: src/psycstore/gnunet-service-psycstore.c:759
5909#, fuzzy
5910msgid "Failed to end synchronizing state!\n"
5911msgstr "Lỗi lấy thông kê về truyền tải.\n"
5912
5913#: src/psycstore/gnunet-service-psycstore.c:777
5914#: src/psycstore/gnunet-service-psycstore.c:793
5915#, fuzzy
5916msgid "Failed to reset state!\n"
5917msgstr "Lỗi lấy thông kê về truyền tải.\n"
5918
5919#: src/psycstore/gnunet-service-psycstore.c:822
5920#: src/psycstore/gnunet-service-psycstore.c:879
5921msgid "Tried to get invalid state variable name!\n"
5922msgstr ""
5923
5924#: src/psycstore/gnunet-service-psycstore.c:849
5925#: src/psycstore/gnunet-service-psycstore.c:894
5926#, fuzzy
5927msgid "Failed to get state variable!\n"
5928msgstr "Lỗi lấy thông kê về truyền tải.\n"
5929
5930#: src/psycstore/plugin_psycstore_mysql.c:279
5931#, fuzzy
5932msgid "Unable to initialize Mysql.\n"
5933msgstr "Không thể sơ khởi SQLite: %s.\n"
5934
5935#: src/psycstore/plugin_psycstore_mysql.c:289
5936#, fuzzy, c-format
5937msgid "Failed to run SQL statement `%s'\n"
5938msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
5939
5940#: src/psycstore/plugin_psycstore_sqlite.c:59
5941#, fuzzy, c-format
5942msgid "`%s' failed at %s:%d with error: %s (%d)\n"
5943msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
5944
5945#: src/psycstore/plugin_psycstore_sqlite.c:1922
5946#, fuzzy
5947msgid "SQLite database running\n"
5948msgstr "kho dữ liệu sqlite"
5949
5950#: src/pt/gnunet-daemon-pt.c:421
5951msgid "Failed to pack DNS request. Dropping.\n" 5871msgid "Failed to pack DNS request. Dropping.\n"
5952msgstr "" 5872msgstr ""
5953 5873
5954#: src/pt/gnunet-daemon-pt.c:427 5874#: src/pt/gnunet-daemon-pt.c:429
5955#, fuzzy 5875#, fuzzy
5956msgid "# DNS requests mapped to VPN" 5876msgid "# DNS requests mapped to VPN"
5957msgstr "# các yêu cầu get (lấy) dht được nhận" 5877msgstr "# các yêu cầu get (lấy) dht được nhận"
5958 5878
5959#: src/pt/gnunet-daemon-pt.c:481 5879#: src/pt/gnunet-daemon-pt.c:483
5960msgid "# DNS records modified" 5880msgid "# DNS records modified"
5961msgstr "" 5881msgstr ""
5962 5882
5963#: src/pt/gnunet-daemon-pt.c:665 5883#: src/pt/gnunet-daemon-pt.c:667
5964#, fuzzy 5884#, fuzzy
5965msgid "# DNS replies intercepted" 5885msgid "# DNS replies intercepted"
5966msgstr "# các đáp ứng dht được định tuyến" 5886msgstr "# các đáp ứng dht được định tuyến"
5967 5887
5968#: src/pt/gnunet-daemon-pt.c:672 5888#: src/pt/gnunet-daemon-pt.c:674
5969msgid "Failed to parse DNS request. Dropping.\n" 5889msgid "Failed to parse DNS request. Dropping.\n"
5970msgstr "" 5890msgstr ""
5971 5891
5972#: src/pt/gnunet-daemon-pt.c:710 5892#: src/pt/gnunet-daemon-pt.c:712
5973#, fuzzy 5893#, fuzzy
5974msgid "# DNS requests dropped (timeout)" 5894msgid "# DNS requests dropped (timeout)"
5975msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 5895msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
5976 5896
5977#: src/pt/gnunet-daemon-pt.c:766 5897#: src/pt/gnunet-daemon-pt.c:768
5978#, fuzzy 5898#, fuzzy
5979msgid "# DNS requests intercepted" 5899msgid "# DNS requests intercepted"
5980msgstr "# các yêu cầu get (lấy) dht được nhận" 5900msgstr "# các yêu cầu get (lấy) dht được nhận"
5981 5901
5982#: src/pt/gnunet-daemon-pt.c:771 5902#: src/pt/gnunet-daemon-pt.c:773
5983#, fuzzy 5903#, fuzzy
5984msgid "# DNS requests dropped (DNS cadet channel down)" 5904msgid "# DNS requests dropped (DNS cadet channel down)"
5985msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 5905msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
5986 5906
5987#: src/pt/gnunet-daemon-pt.c:779 5907#: src/pt/gnunet-daemon-pt.c:781
5988#, fuzzy 5908#, fuzzy
5989msgid "# DNS requests dropped (malformed)" 5909msgid "# DNS requests dropped (malformed)"
5990msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 5910msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
5991 5911
5992#: src/pt/gnunet-daemon-pt.c:874 5912#: src/pt/gnunet-daemon-pt.c:876
5993#, fuzzy 5913#, fuzzy
5994msgid "# DNS replies received" 5914msgid "# DNS replies received"
5995msgstr "# các yêu cầu get (lấy) dht được nhận" 5915msgstr "# các yêu cầu get (lấy) dht được nhận"
5996 5916
5997#: src/pt/gnunet-daemon-pt.c:891 5917#: src/pt/gnunet-daemon-pt.c:893
5998#, fuzzy 5918#, fuzzy
5999msgid "# DNS replies dropped (too late?)" 5919msgid "# DNS replies dropped (too late?)"
6000msgstr "# các đáp ứng dht được định tuyến" 5920msgstr "# các đáp ứng dht được định tuyến"
6001 5921
6002#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226 5922#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
6003#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251 5923#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
6004#: src/pt/gnunet-daemon-pt.c:1260 5924#: src/pt/gnunet-daemon-pt.c:1262
6005#, fuzzy, c-format 5925#, fuzzy, c-format
6006msgid "Failed to connect to %s service. Exiting.\n" 5926msgid "Failed to connect to %s service. Exiting.\n"
6007msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 5927msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
6008 5928
6009#: src/pt/gnunet-daemon-pt.c:1305 5929#: src/pt/gnunet-daemon-pt.c:1307
6010msgid "Daemon to run to perform IP protocol translation to GNUnet" 5930msgid "Daemon to run to perform IP protocol translation to GNUnet"
6011msgstr "" 5931msgstr ""
6012 5932
6013#: src/reclaim/gnunet-reclaim.c:465 5933#: src/reclaim/gnunet-reclaim.c:467
6014#, fuzzy, c-format 5934#, fuzzy, c-format
6015msgid "Ego is required\n" 5935msgid "Ego is required\n"
6016msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n" 5936msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n"
6017 5937
6018#: src/reclaim/gnunet-reclaim.c:473 5938#: src/reclaim/gnunet-reclaim.c:475
6019#, c-format 5939#, c-format
6020msgid "Attribute value missing!\n" 5940msgid "Attribute value missing!\n"
6021msgstr "" 5941msgstr ""
6022 5942
6023#: src/reclaim/gnunet-reclaim.c:481 5943#: src/reclaim/gnunet-reclaim.c:483
6024#, fuzzy, c-format 5944#, fuzzy, c-format
6025msgid "Requesting party key is required!\n" 5945msgid "Requesting party key is required!\n"
6026msgstr "đặt tên hiệu cần dùng (cần thiết)" 5946msgstr "đặt tên hiệu cần dùng (cần thiết)"
6027 5947
6028#: src/reclaim/gnunet-reclaim.c:504 5948#: src/reclaim/gnunet-reclaim.c:506
6029msgid "Add attribute" 5949msgid "Add attribute"
6030msgstr "" 5950msgstr ""
6031 5951
6032#: src/reclaim/gnunet-reclaim.c:510 5952#: src/reclaim/gnunet-reclaim.c:512
6033msgid "Attribute value" 5953msgid "Attribute value"
6034msgstr "" 5954msgstr ""
6035 5955
6036#: src/reclaim/gnunet-reclaim.c:515 5956#: src/reclaim/gnunet-reclaim.c:517
6037msgid "Ego" 5957msgid "Ego"
6038msgstr "" 5958msgstr ""
6039 5959
6040#: src/reclaim/gnunet-reclaim.c:520 5960#: src/reclaim/gnunet-reclaim.c:522
6041msgid "Audience (relying party)" 5961msgid "Audience (relying party)"
6042msgstr "" 5962msgstr ""
6043 5963
6044#: src/reclaim/gnunet-reclaim.c:524 5964#: src/reclaim/gnunet-reclaim.c:526
6045msgid "List attributes for Ego" 5965msgid "List attributes for Ego"
6046msgstr "" 5966msgstr ""
6047 5967
6048#: src/reclaim/gnunet-reclaim.c:529 5968#: src/reclaim/gnunet-reclaim.c:531
6049msgid "Issue a ticket" 5969msgid "Issue a ticket"
6050msgstr "" 5970msgstr ""
6051 5971
6052#: src/reclaim/gnunet-reclaim.c:534 5972#: src/reclaim/gnunet-reclaim.c:536
6053msgid "Consume a ticket" 5973msgid "Consume a ticket"
6054msgstr "" 5974msgstr ""
6055 5975
6056#: src/reclaim/gnunet-reclaim.c:539 5976#: src/reclaim/gnunet-reclaim.c:541
6057msgid "Revoke a ticket" 5977msgid "Revoke a ticket"
6058msgstr "" 5978msgstr ""
6059 5979
6060#: src/reclaim/gnunet-reclaim.c:544 5980#: src/reclaim/gnunet-reclaim.c:546
6061msgid "Type of attribute" 5981msgid "Type of attribute"
6062msgstr "" 5982msgstr ""
6063 5983
6064#: src/reclaim/gnunet-reclaim.c:549 5984#: src/reclaim/gnunet-reclaim.c:551
6065msgid "Expiration interval of the attribute" 5985msgid "Expiration interval of the attribute"
6066msgstr "" 5986msgstr ""
6067 5987
6068#: src/reclaim/reclaim_api.c:434 5988#: src/reclaim/reclaim_api.c:436
6069#, fuzzy 5989#, fuzzy
6070msgid "failed to store record\n" 5990msgid "failed to store record\n"
6071msgstr "Lỗi bắt đầu thu thập.\n" 5991msgstr "Lỗi bắt đầu thu thập.\n"
6072 5992
6073#: src/regex/gnunet-daemon-regexprofiler.c:265 5993#: src/regex/gnunet-daemon-regexprofiler.c:267
6074#, fuzzy, c-format 5994#, fuzzy, c-format
6075msgid "%s service is lacking key configuration settings (%s). Exiting.\n" 5995msgid "%s service is lacking key configuration settings (%s). Exiting.\n"
6076msgstr "Lưu cấu hình ngay bây giờ không?" 5996msgstr "Lưu cấu hình ngay bây giờ không?"
6077 5997
6078#: src/regex/gnunet-daemon-regexprofiler.c:378 5998#: src/regex/gnunet-daemon-regexprofiler.c:380
6079msgid "Daemon to announce regular expressions for the peer using cadet." 5999msgid "Daemon to announce regular expressions for the peer using cadet."
6080msgstr "" 6000msgstr ""
6081 6001
6082#: src/regex/gnunet-regex-profiler.c:1384 6002#: src/regex/gnunet-regex-profiler.c:1386
6083#, fuzzy 6003#, fuzzy
6084msgid "No configuration file given. Exiting\n" 6004msgid "No configuration file given. Exiting\n"
6085msgstr "dùng tập tin cấu hình TÊN_TẬP_TIN" 6005msgstr "dùng tập tin cấu hình TÊN_TẬP_TIN"
6086 6006
6087#: src/regex/gnunet-regex-profiler.c:1425 6007#: src/regex/gnunet-regex-profiler.c:1427
6088#: src/regex/gnunet-regex-simulation-profiler.c:628 6008#: src/regex/gnunet-regex-simulation-profiler.c:630
6089#, c-format 6009#, c-format
6090msgid "No policy directory specified on command line. Exiting.\n" 6010msgid "No policy directory specified on command line. Exiting.\n"
6091msgstr "" 6011msgstr ""
6092 6012
6093#: src/regex/gnunet-regex-profiler.c:1431 6013#: src/regex/gnunet-regex-profiler.c:1433
6094#: src/regex/gnunet-regex-simulation-profiler.c:636 6014#: src/regex/gnunet-regex-simulation-profiler.c:638
6095#, c-format 6015#, c-format
6096msgid "Specified policies directory does not exist. Exiting.\n" 6016msgid "Specified policies directory does not exist. Exiting.\n"
6097msgstr "" 6017msgstr ""
6098 6018
6099#: src/regex/gnunet-regex-profiler.c:1438 6019#: src/regex/gnunet-regex-profiler.c:1440
6100#, fuzzy, c-format 6020#, fuzzy, c-format
6101msgid "No files found in `%s'\n" 6021msgid "No files found in `%s'\n"
6102msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n" 6022msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n"
6103 6023
6104#: src/regex/gnunet-regex-profiler.c:1447 6024#: src/regex/gnunet-regex-profiler.c:1449
6105msgid "No search strings file given. Exiting.\n" 6025msgid "No search strings file given. Exiting.\n"
6106msgstr "" 6026msgstr ""
6107 6027
6108#: src/regex/gnunet-regex-profiler.c:1467 6028#: src/regex/gnunet-regex-profiler.c:1469
6109#, fuzzy 6029#, fuzzy
6110msgid "Error loading search strings. Exiting.\n" 6030msgid "Error loading search strings. Exiting.\n"
6111msgstr "Gặp lỗi khi tải xuống: %s\n" 6031msgstr "Gặp lỗi khi tải xuống: %s\n"
6112 6032
6113#: src/regex/gnunet-regex-profiler.c:1555 6033#: src/regex/gnunet-regex-profiler.c:1557
6114#, fuzzy 6034#, fuzzy
6115msgid "name of the file for writing statistics" 6035msgid "name of the file for writing statistics"
6116msgstr "Lỗi lấy thông kê về truyền tải.\n" 6036msgstr "Lỗi lấy thông kê về truyền tải.\n"
6117 6037
6118#: src/regex/gnunet-regex-profiler.c:1561 6038#: src/regex/gnunet-regex-profiler.c:1563
6119msgid "wait TIMEOUT before ending the experiment" 6039msgid "wait TIMEOUT before ending the experiment"
6120msgstr "" 6040msgstr ""
6121 6041
6122#: src/regex/gnunet-regex-profiler.c:1567 6042#: src/regex/gnunet-regex-profiler.c:1569
6123msgid "directory with policy files" 6043msgid "directory with policy files"
6124msgstr "" 6044msgstr ""
6125 6045
6126#: src/regex/gnunet-regex-profiler.c:1574 6046#: src/regex/gnunet-regex-profiler.c:1576
6127#, fuzzy 6047#, fuzzy
6128msgid "name of file with input strings" 6048msgid "name of file with input strings"
6129msgstr "Lỗi lấy thông kê về truyền tải.\n" 6049msgstr "Lỗi lấy thông kê về truyền tải.\n"
6130 6050
6131#: src/regex/gnunet-regex-profiler.c:1580 6051#: src/regex/gnunet-regex-profiler.c:1582
6132#, fuzzy 6052#, fuzzy
6133msgid "name of file with hosts' names" 6053msgid "name of file with hosts' names"
6134msgstr "Lỗi lấy thông kê về truyền tải.\n" 6054msgstr "Lỗi lấy thông kê về truyền tải.\n"
6135 6055
6136#: src/regex/gnunet-regex-profiler.c:1593 6056#: src/regex/gnunet-regex-profiler.c:1595
6137msgid "Profiler for regex" 6057msgid "Profiler for regex"
6138msgstr "" 6058msgstr ""
6139 6059
6140#: src/regex/gnunet-regex-simulation-profiler.c:697 6060#: src/regex/gnunet-regex-simulation-profiler.c:699
6141msgid "name of the table to write DFAs" 6061msgid "name of the table to write DFAs"
6142msgstr "" 6062msgstr ""
6143 6063
6144#: src/regex/gnunet-regex-simulation-profiler.c:703 6064#: src/regex/gnunet-regex-simulation-profiler.c:705
6145msgid "maximum path compression length" 6065msgid "maximum path compression length"
6146msgstr "" 6066msgstr ""
6147 6067
6148#: src/regex/gnunet-regex-simulation-profiler.c:717 6068#: src/regex/gnunet-regex-simulation-profiler.c:719
6149msgid "Profiler for regex library" 6069msgid "Profiler for regex library"
6150msgstr "" 6070msgstr ""
6151 6071
6152#: src/regex/regex_api_announce.c:150 6072#: src/regex/regex_api_announce.c:152
6153#, fuzzy, c-format 6073#, fuzzy, c-format
6154msgid "Regex `%s' is too long!\n" 6074msgid "Regex `%s' is too long!\n"
6155msgstr "« %s » không phải là một tập tin.\n" 6075msgstr "« %s » không phải là một tập tin.\n"
6156 6076
6157#: src/regex/regex_api_search.c:210 6077#: src/regex/regex_api_search.c:212
6158#, fuzzy, c-format 6078#, fuzzy, c-format
6159msgid "Search string `%s' is too long!\n" 6079msgid "Search string `%s' is too long!\n"
6160msgstr "« %s » không phải là một tập tin.\n" 6080msgstr "« %s » không phải là một tập tin.\n"
6161 6081
6162#: src/rest/gnunet-rest-server.c:925 6082#: src/rest/gnunet-rest-server.c:927
6163msgid "listen on specified port (default: 7776)" 6083msgid "listen on specified port (default: 7776)"
6164msgstr "" 6084msgstr ""
6165 6085
6166#: src/rest/gnunet-rest-server.c:942 6086#: src/rest/gnunet-rest-server.c:944
6167#, fuzzy 6087#, fuzzy
6168msgid "GNUnet REST server" 6088msgid "GNUnet REST server"
6169msgstr "Bản ghi lỗi GNUnet" 6089msgstr "Bản ghi lỗi GNUnet"
6170 6090
6171#: src/rest-plugins/plugin_rest_copying.c:207 6091#: src/rest-plugins/plugin_rest_copying.c:209
6172#, fuzzy 6092#, fuzzy
6173msgid "COPYING REST API initialized\n" 6093msgid "COPYING REST API initialized\n"
6174msgstr "Lỗi sơ khởi lõi.\n" 6094msgstr "Lỗi sơ khởi lõi.\n"
6175 6095
6176#: src/rest-plugins/plugin_rest_credential.c:1126 6096#: src/rest-plugins/plugin_rest_credential.c:1128
6177#, fuzzy 6097#, fuzzy
6178msgid "GNS REST API initialized\n" 6098msgid "GNS REST API initialized\n"
6179msgstr "Lỗi sơ khởi lõi.\n" 6099msgstr "Lỗi sơ khởi lõi.\n"
6180 6100
6181#: src/rest-plugins/plugin_rest_gns.c:450 6101#: src/rest-plugins/plugin_rest_gns.c:452
6182#, fuzzy 6102#, fuzzy
6183msgid "Gns REST API initialized\n" 6103msgid "Gns REST API initialized\n"
6184msgstr "Lỗi sơ khởi lõi.\n" 6104msgstr "Lỗi sơ khởi lõi.\n"
6185 6105
6186#: src/rest-plugins/plugin_rest_identity.c:1295 6106#: src/rest-plugins/plugin_rest_identity.c:1297
6187#, fuzzy 6107#, fuzzy
6188msgid "Identity REST API initialized\n" 6108msgid "Identity REST API initialized\n"
6189msgstr "Lỗi sơ khởi lõi.\n" 6109msgstr "Lỗi sơ khởi lõi.\n"
6190 6110
6191#: src/rest-plugins/plugin_rest_namestore.c:1077 6111#: src/rest-plugins/plugin_rest_namestore.c:1079
6192#, fuzzy 6112#, fuzzy
6193msgid "Namestore REST API initialized\n" 6113msgid "Namestore REST API initialized\n"
6194msgstr "Lỗi sơ khởi lõi.\n" 6114msgstr "Lỗi sơ khởi lõi.\n"
6195 6115
6196#: src/rest-plugins/plugin_rest_openid_connect.c:2135 6116#: src/rest-plugins/plugin_rest_openid_connect.c:2245
6197#: src/rest-plugins/plugin_rest_reclaim.c:1079 6117#: src/rest-plugins/plugin_rest_reclaim.c:1079
6198#, fuzzy 6118#, fuzzy
6199msgid "Identity Provider REST API initialized\n" 6119msgid "Identity Provider REST API initialized\n"
6200msgstr "Lỗi sơ khởi lõi.\n" 6120msgstr "Lỗi sơ khởi lõi.\n"
6201 6121
6202#: src/rest-plugins/plugin_rest_peerinfo.c:794 6122#: src/rest-plugins/plugin_rest_peerinfo.c:796
6203#, fuzzy 6123#, fuzzy
6204msgid "Peerinfo REST API initialized\n" 6124msgid "Peerinfo REST API initialized\n"
6205msgstr "Lỗi sơ khởi lõi.\n" 6125msgstr "Lỗi sơ khởi lõi.\n"
6206 6126
6207#: src/revocation/gnunet-revocation.c:127 6127#: src/revocation/gnunet-revocation.c:129
6208#, fuzzy, c-format 6128#, fuzzy, c-format
6209msgid "Key `%s' is valid\n" 6129msgid "Key `%s' is valid\n"
6210msgstr "Định dạng của biệt hiệu « %s » là không hợp lệ.\n" 6130msgstr "Định dạng của biệt hiệu « %s » là không hợp lệ.\n"
6211 6131
6212#: src/revocation/gnunet-revocation.c:132 6132#: src/revocation/gnunet-revocation.c:134
6213#, fuzzy, c-format 6133#, fuzzy, c-format
6214msgid "Key `%s' has been revoked\n" 6134msgid "Key `%s' has been revoked\n"
6215msgstr "Dịch vụ đã bị xoá.\n" 6135msgstr "Dịch vụ đã bị xoá.\n"
6216 6136
6217#: src/revocation/gnunet-revocation.c:138 6137#: src/revocation/gnunet-revocation.c:140
6218#, fuzzy 6138#, fuzzy
6219msgid "Internal error\n" 6139msgid "Internal error\n"
6220msgstr "Lỗi VR." 6140msgstr "Lỗi VR."
6221 6141
6222#: src/revocation/gnunet-revocation.c:164 6142#: src/revocation/gnunet-revocation.c:166
6223#, c-format 6143#, c-format
6224msgid "Key for ego `%s' is still valid, revocation failed (!)\n" 6144msgid "Key for ego `%s' is still valid, revocation failed (!)\n"
6225msgstr "" 6145msgstr ""
6226 6146
6227#: src/revocation/gnunet-revocation.c:169 6147#: src/revocation/gnunet-revocation.c:171
6228#, fuzzy 6148#, fuzzy
6229msgid "Revocation failed (!)\n" 6149msgid "Revocation failed (!)\n"
6230msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" 6150msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
6231 6151
6232#: src/revocation/gnunet-revocation.c:174 6152#: src/revocation/gnunet-revocation.c:176
6233#, c-format 6153#, c-format
6234msgid "Key for ego `%s' has been successfully revoked\n" 6154msgid "Key for ego `%s' has been successfully revoked\n"
6235msgstr "" 6155msgstr ""
6236 6156
6237#: src/revocation/gnunet-revocation.c:179 6157#: src/revocation/gnunet-revocation.c:181
6238msgid "Revocation successful.\n" 6158msgid "Revocation successful.\n"
6239msgstr "" 6159msgstr ""
6240 6160
6241#: src/revocation/gnunet-revocation.c:184 6161#: src/revocation/gnunet-revocation.c:186
6242msgid "Internal error, key revocation might have failed\n" 6162msgid "Internal error, key revocation might have failed\n"
6243msgstr "" 6163msgstr ""
6244 6164
6245#: src/revocation/gnunet-revocation.c:321 6165#: src/revocation/gnunet-revocation.c:323
6246#, c-format 6166#, c-format
6247msgid "Revocation certificate for `%s' stored in `%s'\n" 6167msgid "Revocation certificate for `%s' stored in `%s'\n"
6248msgstr "" 6168msgstr ""
6249 6169
6250#: src/revocation/gnunet-revocation.c:350 6170#: src/revocation/gnunet-revocation.c:352
6251#, fuzzy, c-format 6171#, fuzzy, c-format
6252msgid "Ego `%s' not found.\n" 6172msgid "Ego `%s' not found.\n"
6253msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 6173msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
6254 6174
6255#: src/revocation/gnunet-revocation.c:371 6175#: src/revocation/gnunet-revocation.c:373
6256#, c-format 6176#, c-format
6257msgid "Error: revocation certificate in `%s' is not for `%s'\n" 6177msgid "Error: revocation certificate in `%s' is not for `%s'\n"
6258msgstr "" 6178msgstr ""
6259 6179
6260#: src/revocation/gnunet-revocation.c:391 6180#: src/revocation/gnunet-revocation.c:393
6261msgid "Revocation certificate ready\n" 6181msgid "Revocation certificate ready\n"
6262msgstr "" 6182msgstr ""
6263 6183
6264#: src/revocation/gnunet-revocation.c:401 6184#: src/revocation/gnunet-revocation.c:403
6265msgid "Revocation certificate not ready, calculating proof of work\n" 6185msgid "Revocation certificate not ready, calculating proof of work\n"
6266msgstr "" 6186msgstr ""
6267 6187
6268#: src/revocation/gnunet-revocation.c:435 src/social/gnunet-social.c:1178 6188#: src/revocation/gnunet-revocation.c:437
6269#, fuzzy, c-format 6189#, fuzzy, c-format
6270msgid "Public key `%s' malformed\n" 6190msgid "Public key `%s' malformed\n"
6271msgstr "Đối số không hợp lệ cho « %s ».\n" 6191msgstr "Đối số không hợp lệ cho « %s ».\n"
6272 6192
6273#: src/revocation/gnunet-revocation.c:448 6193#: src/revocation/gnunet-revocation.c:450
6274msgid "" 6194msgid ""
6275"Testing and revoking at the same time is not allowed, only executing test.\n" 6195"Testing and revoking at the same time is not allowed, only executing test.\n"
6276msgstr "" 6196msgstr ""
6277 6197
6278#: src/revocation/gnunet-revocation.c:468 6198#: src/revocation/gnunet-revocation.c:470
6279#, fuzzy 6199#, fuzzy
6280msgid "No filename to store revocation certificate given.\n" 6200msgid "No filename to store revocation certificate given.\n"
6281msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 6201msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
6282 6202
6283#: src/revocation/gnunet-revocation.c:489 6203#: src/revocation/gnunet-revocation.c:491
6284#, fuzzy, c-format 6204#, fuzzy, c-format
6285msgid "Failed to read revocation certificate from `%s'\n" 6205msgid "Failed to read revocation certificate from `%s'\n"
6286msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 6206msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
6287 6207
6288#: src/revocation/gnunet-revocation.c:514 6208#: src/revocation/gnunet-revocation.c:516
6289#, fuzzy 6209#, fuzzy
6290msgid "No action specified. Nothing to do.\n" 6210msgid "No action specified. Nothing to do.\n"
6291msgstr "Chưa xác định giao diện nên dùng mặc định.\n" 6211msgstr "Chưa xác định giao diện nên dùng mặc định.\n"
6292 6212
6293#: src/revocation/gnunet-revocation.c:533 6213#: src/revocation/gnunet-revocation.c:535
6294msgid "use NAME for the name of the revocation file" 6214msgid "use NAME for the name of the revocation file"
6295msgstr "" 6215msgstr ""
6296 6216
6297#: src/revocation/gnunet-revocation.c:539 6217#: src/revocation/gnunet-revocation.c:541
6298msgid "" 6218msgid ""
6299"revoke the private key associated for the the private key associated with " 6219"revoke the private key associated for the the private key associated with "
6300"the ego NAME " 6220"the ego NAME "
6301msgstr "" 6221msgstr ""
6302 6222
6303#: src/revocation/gnunet-revocation.c:544 6223#: src/revocation/gnunet-revocation.c:546
6304msgid "actually perform revocation, otherwise we just do the precomputation" 6224msgid "actually perform revocation, otherwise we just do the precomputation"
6305msgstr "" 6225msgstr ""
6306 6226
6307#: src/revocation/gnunet-revocation.c:550 6227#: src/revocation/gnunet-revocation.c:552
6308msgid "test if the public key KEY has been revoked" 6228msgid "test if the public key KEY has been revoked"
6309msgstr "" 6229msgstr ""
6310 6230
6311#: src/revocation/gnunet-service-revocation.c:457 6231#: src/revocation/gnunet-service-revocation.c:459
6312#, fuzzy 6232#, fuzzy
6313msgid "# unsupported revocations received via set union" 6233msgid "# unsupported revocations received via set union"
6314msgstr "# các yêu cầu danh sách máy được nhận" 6234msgstr "# các yêu cầu danh sách máy được nhận"
6315 6235
6316#: src/revocation/gnunet-service-revocation.c:466 6236#: src/revocation/gnunet-service-revocation.c:468
6317#, fuzzy 6237#, fuzzy
6318msgid "# revocation messages received via set union" 6238msgid "# revocation messages received via set union"
6319msgstr "# các thông báo PONG đã mật mã được nhận" 6239msgstr "# các thông báo PONG đã mật mã được nhận"
6320 6240
6321#: src/revocation/gnunet-service-revocation.c:471 6241#: src/revocation/gnunet-service-revocation.c:473
6322#, c-format 6242#, c-format
6323msgid "Error computing revocation set union with %s\n" 6243msgid "Error computing revocation set union with %s\n"
6324msgstr "" 6244msgstr ""
6325 6245
6326#: src/revocation/gnunet-service-revocation.c:475 6246#: src/revocation/gnunet-service-revocation.c:477
6327#, fuzzy 6247#, fuzzy
6328msgid "# revocation set unions failed" 6248msgid "# revocation set unions failed"
6329msgstr "# các khoá phiên chạy được chấp nhận" 6249msgstr "# các khoá phiên chạy được chấp nhận"
6330 6250
6331#: src/revocation/gnunet-service-revocation.c:484 6251#: src/revocation/gnunet-service-revocation.c:486
6332#, fuzzy 6252#, fuzzy
6333msgid "# revocation set unions completed" 6253msgid "# revocation set unions completed"
6334msgstr "# các sự truyền PONG bị lỗi" 6254msgstr "# các sự truyền PONG bị lỗi"
6335 6255
6336#: src/revocation/gnunet-service-revocation.c:523 6256#: src/revocation/gnunet-service-revocation.c:525
6337msgid "SET service crashed, terminating revocation service\n" 6257msgid "SET service crashed, terminating revocation service\n"
6338msgstr "" 6258msgstr ""
6339 6259
6340#: src/revocation/gnunet-service-revocation.c:865 6260#: src/revocation/gnunet-service-revocation.c:867
6341#, fuzzy 6261#, fuzzy
6342msgid "Could not open revocation database file!" 6262msgid "Could not open revocation database file!"
6343msgstr "« %s »: Không thể kết nối.\n" 6263msgstr "« %s »: Không thể kết nối.\n"
6344 6264
6345#: src/rps/gnunet-rps.c:258 6265#: src/rps/gnunet-rps.c:260
6346msgid "Seed a PeerID" 6266msgid "Seed a PeerID"
6347msgstr "" 6267msgstr ""
6348 6268
6349#: src/rps/gnunet-rps.c:262 6269#: src/rps/gnunet-rps.c:264
6350msgid "Get updates of view (0 for infinite updates)" 6270msgid "Get updates of view (0 for infinite updates)"
6351msgstr "" 6271msgstr ""
6352 6272
6353#: src/rps/gnunet-rps.c:266 6273#: src/rps/gnunet-rps.c:268
6354msgid "Get peers from biased stream" 6274msgid "Get peers from biased stream"
6355msgstr "" 6275msgstr ""
6356 6276
6357#: src/rps/gnunet-rps-profiler.c:2770 6277#: src/rps/gnunet-rps-profiler.c:2959
6358msgid "duration of the profiling" 6278msgid "duration of the profiling"
6359msgstr "" 6279msgstr ""
6360 6280
6361#: src/rps/gnunet-rps-profiler.c:2776 6281#: src/rps/gnunet-rps-profiler.c:2965
6362#, fuzzy 6282#, fuzzy
6363msgid "timeout for the profiling" 6283msgid "timeout for the profiling"
6364msgstr "xác định mức ưu tiên của nội dung" 6284msgstr "xác định mức ưu tiên của nội dung"
6365 6285
6366#: src/rps/gnunet-rps-profiler.c:2782 6286#: src/rps/gnunet-rps-profiler.c:2971
6367#, fuzzy 6287#, fuzzy
6368msgid "number of PeerIDs to request" 6288msgid "number of PeerIDs to request"
6369msgstr "số lần lặp lại" 6289msgstr "số lần lặp lại"
6370 6290
6371#: src/rps/gnunet-rps-profiler.c:2797 6291#: src/rps/gnunet-rps-profiler.c:2986
6372#, fuzzy 6292#, fuzzy
6373msgid "Measure quality and performance of the RPS service." 6293msgid "Measure quality and performance of the RPS service."
6374msgstr "Không thể truy cập đến dịch vụ" 6294msgstr "Không thể truy cập đến dịch vụ"
6375 6295
6376#: src/scalarproduct/gnunet-scalarproduct.c:218 6296#: src/scalarproduct/gnunet-scalarproduct.c:220
6377#, fuzzy 6297#, fuzzy
6378msgid "You must specify at least one message ID to check!\n" 6298msgid "You must specify at least one message ID to check!\n"
6379msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n" 6299msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
6380 6300
6381#: src/scalarproduct/gnunet-scalarproduct.c:225 6301#: src/scalarproduct/gnunet-scalarproduct.c:227
6382msgid "This program needs a session identifier for comparing vectors.\n" 6302msgid "This program needs a session identifier for comparing vectors.\n"
6383msgstr "" 6303msgstr ""
6384 6304
6385#: src/scalarproduct/gnunet-scalarproduct.c:238 6305#: src/scalarproduct/gnunet-scalarproduct.c:240
6386#, c-format 6306#, c-format
6387msgid "" 6307msgid ""
6388"Tried to set initiator mode, as peer ID was given. However, `%s' is not a " 6308"Tried to set initiator mode, as peer ID was given. However, `%s' is not a "
6389"valid peer identifier.\n" 6309"valid peer identifier.\n"
6390msgstr "" 6310msgstr ""
6391 6311
6392#: src/scalarproduct/gnunet-scalarproduct.c:256 6312#: src/scalarproduct/gnunet-scalarproduct.c:258
6393msgid "Need elements to compute the scalarproduct, got none.\n" 6313msgid "Need elements to compute the scalarproduct, got none.\n"
6394msgstr "" 6314msgstr ""
6395 6315
6396#: src/scalarproduct/gnunet-scalarproduct.c:278 6316#: src/scalarproduct/gnunet-scalarproduct.c:280
6397#, fuzzy, c-format 6317#, fuzzy, c-format
6398msgid "Malformed input, could not parse `%s'\n" 6318msgid "Malformed input, could not parse `%s'\n"
6399msgstr "Lỗi bắt đầu thu thập.\n" 6319msgstr "Lỗi bắt đầu thu thập.\n"
6400 6320
6401#: src/scalarproduct/gnunet-scalarproduct.c:296 6321#: src/scalarproduct/gnunet-scalarproduct.c:298
6402#, fuzzy, c-format 6322#, fuzzy, c-format
6403msgid "Could not convert `%s' to int64_t.\n" 6323msgid "Could not convert `%s' to int64_t.\n"
6404msgstr "Không thể kết nối tới %s:%u: %s\n" 6324msgstr "Không thể kết nối tới %s:%u: %s\n"
6405 6325
6406#: src/scalarproduct/gnunet-scalarproduct.c:323 6326#: src/scalarproduct/gnunet-scalarproduct.c:325
6407#, c-format 6327#, c-format
6408msgid "Failed to initiate computation, were all keys unique?\n" 6328msgid "Failed to initiate computation, were all keys unique?\n"
6409msgstr "" 6329msgstr ""
6410 6330
6411#: src/scalarproduct/gnunet-scalarproduct.c:349 6331#: src/scalarproduct/gnunet-scalarproduct.c:351
6412#: src/scalarproduct/gnunet-scalarproduct.c:355 6332#: src/scalarproduct/gnunet-scalarproduct.c:357
6413msgid "" 6333msgid ""
6414"A comma separated list of elements to compare as vector with our remote peer." 6334"A comma separated list of elements to compare as vector with our remote peer."
6415msgstr "" 6335msgstr ""
6416 6336
6417#: src/scalarproduct/gnunet-scalarproduct.c:361 6337#: src/scalarproduct/gnunet-scalarproduct.c:363
6418msgid "" 6338msgid ""
6419"[Optional] peer to calculate our scalarproduct with. If this parameter is " 6339"[Optional] peer to calculate our scalarproduct with. If this parameter is "
6420"not given, the service will wait for a remote peer to compute the request." 6340"not given, the service will wait for a remote peer to compute the request."
6421msgstr "" 6341msgstr ""
6422 6342
6423#: src/scalarproduct/gnunet-scalarproduct.c:367 6343#: src/scalarproduct/gnunet-scalarproduct.c:369
6424msgid "Transaction ID shared with peer." 6344msgid "Transaction ID shared with peer."
6425msgstr "" 6345msgstr ""
6426 6346
6427#: src/scalarproduct/gnunet-scalarproduct.c:377 6347#: src/scalarproduct/gnunet-scalarproduct.c:379
6428msgid "Calculate the Vectorproduct with a GNUnet peer." 6348msgid "Calculate the Vectorproduct with a GNUnet peer."
6429msgstr "" 6349msgstr ""
6430 6350
6431#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1399 6351#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
6432#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1343 6352#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
6433#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1170 6353#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
6434#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1061 6354#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
6435#, fuzzy 6355#, fuzzy
6436msgid "Connect to CADET failed\n" 6356msgid "Connect to CADET failed\n"
6437msgstr " Không kết nối được (lỗi ?)\n" 6357msgstr " Không kết nối được (lỗi ?)\n"
6438 6358
6439#: src/scalarproduct/scalarproduct_api.c:183 6359#: src/scalarproduct/scalarproduct_api.c:185
6440msgid "Keys given to SCALARPRODUCT not unique!\n" 6360msgid "Keys given to SCALARPRODUCT not unique!\n"
6441msgstr "" 6361msgstr ""
6442 6362
6443#: src/secretsharing/gnunet-secretsharing-profiler.c:614 6363#: src/secretsharing/gnunet-secretsharing-profiler.c:616
6444msgid "dkg start delay" 6364msgid "dkg start delay"
6445msgstr "" 6365msgstr ""
6446 6366
6447#: src/secretsharing/gnunet-secretsharing-profiler.c:620 6367#: src/secretsharing/gnunet-secretsharing-profiler.c:622
6448msgid "dkg timeout" 6368msgid "dkg timeout"
6449msgstr "" 6369msgstr ""
6450 6370
6451#: src/secretsharing/gnunet-secretsharing-profiler.c:626 6371#: src/secretsharing/gnunet-secretsharing-profiler.c:628
6452msgid "threshold" 6372msgid "threshold"
6453msgstr "" 6373msgstr ""
6454 6374
6455#: src/secretsharing/gnunet-secretsharing-profiler.c:631 6375#: src/secretsharing/gnunet-secretsharing-profiler.c:633
6456msgid "also profile decryption" 6376msgid "also profile decryption"
6457msgstr "" 6377msgstr ""
6458 6378
6459#: src/set/gnunet-service-set.c:2004 6379#: src/set/gnunet-service-set.c:2005
6460#, fuzzy 6380#, fuzzy
6461msgid "Could not connect to CADET service\n" 6381msgid "Could not connect to CADET service\n"
6462msgstr "Không thể kết nối tới %s:%u: %s\n" 6382msgstr "Không thể kết nối tới %s:%u: %s\n"
6463 6383
6464#: src/set/gnunet-set-ibf-profiler.c:250 6384#: src/set/gnunet-set-ibf-profiler.c:252
6465#, fuzzy 6385#, fuzzy
6466msgid "number of element in set A-B" 6386msgid "number of element in set A-B"
6467msgstr "số lần lặp lại" 6387msgstr "số lần lặp lại"
6468 6388
6469#: src/set/gnunet-set-ibf-profiler.c:256 6389#: src/set/gnunet-set-ibf-profiler.c:258
6470#, fuzzy 6390#, fuzzy
6471msgid "number of element in set B-A" 6391msgid "number of element in set B-A"
6472msgstr "số lần lặp lại" 6392msgstr "số lần lặp lại"
6473 6393
6474#: src/set/gnunet-set-ibf-profiler.c:262 6394#: src/set/gnunet-set-ibf-profiler.c:264
6475msgid "number of common elements in A and B" 6395msgid "number of common elements in A and B"
6476msgstr "" 6396msgstr ""
6477 6397
6478#: src/set/gnunet-set-ibf-profiler.c:268 6398#: src/set/gnunet-set-ibf-profiler.c:270
6479msgid "hash num" 6399msgid "hash num"
6480msgstr "" 6400msgstr ""
6481 6401
6482#: src/set/gnunet-set-ibf-profiler.c:274 6402#: src/set/gnunet-set-ibf-profiler.c:276
6483msgid "ibf size" 6403msgid "ibf size"
6484msgstr "" 6404msgstr ""
6485 6405
6486#: src/set/gnunet-set-profiler.c:442 6406#: src/set/gnunet-set-profiler.c:444
6487msgid "use byzantine mode" 6407msgid "use byzantine mode"
6488msgstr "" 6408msgstr ""
6489 6409
6490#: src/set/gnunet-set-profiler.c:448 6410#: src/set/gnunet-set-profiler.c:450
6491msgid "force sending full set" 6411msgid "force sending full set"
6492msgstr "" 6412msgstr ""
6493 6413
6494#: src/set/gnunet-set-profiler.c:454 6414#: src/set/gnunet-set-profiler.c:456
6495msgid "number delta operation" 6415msgid "number delta operation"
6496msgstr "" 6416msgstr ""
6497 6417
6498#: src/set/gnunet-set-profiler.c:466 6418#: src/set/gnunet-set-profiler.c:468
6499msgid "operation to execute" 6419msgid "operation to execute"
6500msgstr "" 6420msgstr ""
6501 6421
6502#: src/set/gnunet-set-profiler.c:472 6422#: src/set/gnunet-set-profiler.c:474
6503msgid "element size" 6423msgid "element size"
6504msgstr "" 6424msgstr ""
6505 6425
6506#: src/social/gnunet-social.c:1164 6426#: src/sq/sq.c:54
6507#, fuzzy
6508msgid "--place missing or invalid.\n"
6509msgstr "Đối số không hợp lệ cho « %s ».\n"
6510
6511#: src/social/gnunet-social.c:1215
6512msgid "assign --name in state to --data"
6513msgstr ""
6514
6515#: src/social/gnunet-social.c:1220
6516msgid "say good-bye and leave somebody else's place"
6517msgstr ""
6518
6519#: src/social/gnunet-social.c:1225
6520msgid "create a place"
6521msgstr ""
6522
6523#: src/social/gnunet-social.c:1230
6524msgid "destroy a place we were hosting"
6525msgstr ""
6526
6527#: src/social/gnunet-social.c:1235
6528msgid "enter somebody else's place"
6529msgstr ""
6530
6531#: src/social/gnunet-social.c:1241
6532msgid "find state matching name prefix"
6533msgstr ""
6534
6535#: src/social/gnunet-social.c:1246
6536msgid "replay history of messages up to the given --limit"
6537msgstr ""
6538
6539#: src/social/gnunet-social.c:1251
6540msgid "reconnect to a previously created place"
6541msgstr ""
6542
6543#: src/social/gnunet-social.c:1256
6544msgid "publish something to a place we are hosting"
6545msgstr ""
6546
6547#: src/social/gnunet-social.c:1261
6548msgid "reconnect to a previously entered place"
6549msgstr ""
6550
6551#: src/social/gnunet-social.c:1266
6552msgid "search for state matching exact name"
6553msgstr ""
6554
6555#: src/social/gnunet-social.c:1271
6556msgid "submit something to somebody's place"
6557msgstr ""
6558
6559#: src/social/gnunet-social.c:1276
6560msgid "list of egos and subscribed places"
6561msgstr ""
6562
6563#: src/social/gnunet-social.c:1281
6564msgid "extract and replay history between message IDs --start and --until"
6565msgstr ""
6566
6567#: src/social/gnunet-social.c:1290
6568msgid "application ID to use when connecting"
6569msgstr ""
6570
6571#: src/social/gnunet-social.c:1296
6572msgid "message body or state value"
6573msgstr ""
6574
6575#: src/social/gnunet-social.c:1302
6576#, fuzzy
6577msgid "name or public key of ego"
6578msgstr "Đối số không hợp lệ cho « %s ».\n"
6579
6580#: src/social/gnunet-social.c:1307
6581#, fuzzy
6582msgid "wait for incoming messages"
6583msgstr "Lỗi gửi tin nhẳn.\n"
6584
6585#: src/social/gnunet-social.c:1313
6586msgid "GNS name"
6587msgstr ""
6588
6589#: src/social/gnunet-social.c:1319
6590msgid "peer ID for --guest-enter"
6591msgstr ""
6592
6593#: src/social/gnunet-social.c:1325
6594msgid "name (key) to query from state"
6595msgstr ""
6596
6597#: src/social/gnunet-social.c:1331
6598msgid "method name"
6599msgstr ""
6600
6601#: src/social/gnunet-social.c:1337
6602#, fuzzy
6603msgid "number of messages to replay from history"
6604msgstr "số tin nhắn cần dùng mỗi lần lặp"
6605
6606#: src/social/gnunet-social.c:1343
6607msgid "key address of place"
6608msgstr ""
6609
6610#: src/social/gnunet-social.c:1349
6611msgid "start message ID for history replay"
6612msgstr ""
6613
6614#: src/social/gnunet-social.c:1354
6615msgid "respond to entry requests by admitting all guests"
6616msgstr ""
6617
6618#: src/social/gnunet-social.c:1360
6619msgid "end message ID for history replay"
6620msgstr ""
6621
6622#: src/social/gnunet-social.c:1365
6623msgid "respond to entry requests by refusing all guests"
6624msgstr ""
6625
6626#: src/social/gnunet-social.c:1375
6627msgid ""
6628"gnunet-social - Interact with the social service: enter/leave, send/receive "
6629"messages, access history and state.\n"
6630msgstr ""
6631
6632#: src/sq/sq.c:52
6633#, c-format 6427#, c-format
6634msgid "Failure to bind %u-th SQL parameter\n" 6428msgid "Failure to bind %u-th SQL parameter\n"
6635msgstr "" 6429msgstr ""
6636 6430
6637#: src/sq/sq.c:59 6431#: src/sq/sq.c:61
6638msgid "Failure in sqlite3_reset (!)\n" 6432msgid "Failure in sqlite3_reset (!)\n"
6639msgstr "" 6433msgstr ""
6640 6434
6641#: src/sq/sq.c:137 6435#: src/sq/sq.c:139
6642#, fuzzy, c-format 6436#, fuzzy, c-format
6643msgid "Failed to reset sqlite statement with error: %s\n" 6437msgid "Failed to reset sqlite statement with error: %s\n"
6644msgstr "« %s » không giải quyết được phương pháp « %s », với lỗi: %s\n" 6438msgstr "« %s » không giải quyết được phương pháp « %s », với lỗi: %s\n"
6645 6439
6646#: src/statistics/gnunet-service-statistics.c:336 6440#: src/statistics/gnunet-service-statistics.c:338
6647#, fuzzy, c-format 6441#, fuzzy, c-format
6648msgid "Wrote %llu bytes of statistics to `%s'\n" 6442msgid "Wrote %llu bytes of statistics to `%s'\n"
6649msgstr "Đã tải %llu byte xuống « %s ».\n" 6443msgstr "Đã tải %llu byte xuống « %s ».\n"
6650 6444
6651#: src/statistics/gnunet-service-statistics.c:1084 6445#: src/statistics/gnunet-service-statistics.c:1086
6652#, fuzzy, c-format 6446#, fuzzy, c-format
6653msgid "Loading %llu bytes of statistics from `%s'\n" 6447msgid "Loading %llu bytes of statistics from `%s'\n"
6654msgstr "Đã tải %llu byte xuống « %s ».\n" 6448msgstr "Đã tải %llu byte xuống « %s ».\n"
6655 6449
6656#: src/statistics/gnunet-statistics.c:407 6450#: src/statistics/gnunet-statistics.c:409
6657#: src/statistics/gnunet-statistics.c:448 6451#: src/statistics/gnunet-statistics.c:450
6658#, fuzzy 6452#, fuzzy
6659msgid "Failed to obtain statistics.\n" 6453msgid "Failed to obtain statistics.\n"
6660msgstr "Lỗi lấy thông kê về truyền tải.\n" 6454msgstr "Lỗi lấy thông kê về truyền tải.\n"
6661 6455
6662#: src/statistics/gnunet-statistics.c:410 6456#: src/statistics/gnunet-statistics.c:412
6663#: src/statistics/gnunet-statistics.c:451 6457#: src/statistics/gnunet-statistics.c:453
6664#, fuzzy, c-format 6458#, fuzzy, c-format
6665msgid "Failed to obtain statistics from host `%s:%llu'\n" 6459msgid "Failed to obtain statistics from host `%s:%llu'\n"
6666msgstr "Lỗi lấy thông kê về truyền tải.\n" 6460msgstr "Lỗi lấy thông kê về truyền tải.\n"
6667 6461
6668#: src/statistics/gnunet-statistics.c:526 6462#: src/statistics/gnunet-statistics.c:528
6669msgid "Missing argument: subsystem \n" 6463msgid "Missing argument: subsystem \n"
6670msgstr "" 6464msgstr ""
6671 6465
6672#: src/statistics/gnunet-statistics.c:534 6466#: src/statistics/gnunet-statistics.c:536
6673msgid "Missing argument: name\n" 6467msgid "Missing argument: name\n"
6674msgstr "" 6468msgstr ""
6675 6469
6676#: src/statistics/gnunet-statistics.c:577 6470#: src/statistics/gnunet-statistics.c:579
6677#, fuzzy, c-format 6471#, fuzzy, c-format
6678msgid "No subsystem or name given\n" 6472msgid "No subsystem or name given\n"
6679msgstr "chưa đưa ra tên" 6473msgstr "chưa đưa ra tên"
6680 6474
6681#: src/statistics/gnunet-statistics.c:592 6475#: src/statistics/gnunet-statistics.c:594
6682#, fuzzy, c-format 6476#, fuzzy, c-format
6683msgid "Failed to initialize watch routine\n" 6477msgid "Failed to initialize watch routine\n"
6684msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 6478msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
6685 6479
6686#: src/statistics/gnunet-statistics.c:727 6480#: src/statistics/gnunet-statistics.c:729
6687#, fuzzy, c-format 6481#, fuzzy, c-format
6688msgid "Invalid argument `%s'\n" 6482msgid "Invalid argument `%s'\n"
6689msgstr "Đối số không hợp lệ cho « %s ».\n" 6483msgstr "Đối số không hợp lệ cho « %s ».\n"
6690 6484
6691#: src/statistics/gnunet-statistics.c:745 6485#: src/statistics/gnunet-statistics.c:747
6692#, fuzzy, c-format 6486#, fuzzy, c-format
6693msgid "A port is required to connect to host `%s'\n" 6487msgid "A port is required to connect to host `%s'\n"
6694msgstr "Không thể kết nối tới %s:%u: %s\n" 6488msgstr "Không thể kết nối tới %s:%u: %s\n"
6695 6489
6696#: src/statistics/gnunet-statistics.c:753 6490#: src/statistics/gnunet-statistics.c:755
6697#, c-format 6491#, c-format
6698msgid "A port has to be between 1 and 65535 to connect to host `%s'\n" 6492msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
6699msgstr "" 6493msgstr ""
6700 6494
6701#: src/statistics/gnunet-statistics.c:784 6495#: src/statistics/gnunet-statistics.c:786
6702#, c-format 6496#, c-format
6703msgid "Not able to watch testbed nodes (yet - feel free to implement)\n" 6497msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
6704msgstr "" 6498msgstr ""
6705 6499
6706#: src/statistics/gnunet-statistics.c:817 6500#: src/statistics/gnunet-statistics.c:819
6707msgid "limit output to statistics for the given NAME" 6501msgid "limit output to statistics for the given NAME"
6708msgstr "" 6502msgstr ""
6709 6503
6710#: src/statistics/gnunet-statistics.c:822 6504#: src/statistics/gnunet-statistics.c:824
6711msgid "make the value being set persistent" 6505msgid "make the value being set persistent"
6712msgstr "" 6506msgstr ""
6713 6507
6714#: src/statistics/gnunet-statistics.c:828 6508#: src/statistics/gnunet-statistics.c:830
6715msgid "limit output to the given SUBSYSTEM" 6509msgid "limit output to the given SUBSYSTEM"
6716msgstr "" 6510msgstr ""
6717 6511
6718#: src/statistics/gnunet-statistics.c:834 6512#: src/statistics/gnunet-statistics.c:836
6719msgid "use as csv separator" 6513msgid "use as csv separator"
6720msgstr "" 6514msgstr ""
6721 6515
6722#: src/statistics/gnunet-statistics.c:840 6516#: src/statistics/gnunet-statistics.c:842
6723msgid "path to the folder containing the testbed data" 6517msgid "path to the folder containing the testbed data"
6724msgstr "" 6518msgstr ""
6725 6519
6726#: src/statistics/gnunet-statistics.c:845 6520#: src/statistics/gnunet-statistics.c:847
6727msgid "just print the statistics value" 6521msgid "just print the statistics value"
6728msgstr "" 6522msgstr ""
6729 6523
6730#: src/statistics/gnunet-statistics.c:850 6524#: src/statistics/gnunet-statistics.c:852
6731msgid "watch value continuously" 6525msgid "watch value continuously"
6732msgstr "" 6526msgstr ""
6733 6527
6734#: src/statistics/gnunet-statistics.c:856 6528#: src/statistics/gnunet-statistics.c:858
6735msgid "connect to remote host" 6529msgid "connect to remote host"
6736msgstr "" 6530msgstr ""
6737 6531
6738#: src/statistics/gnunet-statistics.c:862 6532#: src/statistics/gnunet-statistics.c:864
6739msgid "port for remote host" 6533msgid "port for remote host"
6740msgstr "" 6534msgstr ""
6741 6535
6742#: src/statistics/gnunet-statistics.c:879 6536#: src/statistics/gnunet-statistics.c:881
6743msgid "Print statistics about GNUnet operations." 6537msgid "Print statistics about GNUnet operations."
6744msgstr "In ra thống kê về các thao tác GNUnet." 6538msgstr "In ra thống kê về các thao tác GNUnet."
6745 6539
6746#: src/statistics/statistics_api.c:751 6540#: src/statistics/statistics_api.c:753
6747#, fuzzy 6541#, fuzzy
6748msgid "Could not save some persistent statistics\n" 6542msgid "Could not save some persistent statistics\n"
6749msgstr "Không thể tạo miền tên.\n" 6543msgstr "Không thể tạo miền tên.\n"
6750 6544
6751#: src/testbed/generate-underlay-topology.c:223 6545#: src/testbed/generate-underlay-topology.c:225
6752#, fuzzy 6546#, fuzzy
6753msgid "Need at least 2 arguments\n" 6547msgid "Need at least 2 arguments\n"
6754msgstr "KHÔNG cho phép ghi rõ cả hai địa chỉ URI và tên tập tin.\n" 6548msgstr "KHÔNG cho phép ghi rõ cả hai địa chỉ URI và tên tập tin.\n"
6755 6549
6756#: src/testbed/generate-underlay-topology.c:228 6550#: src/testbed/generate-underlay-topology.c:230
6757msgid "Database filename missing\n" 6551msgid "Database filename missing\n"
6758msgstr "" 6552msgstr ""
6759 6553
6760#: src/testbed/generate-underlay-topology.c:235 6554#: src/testbed/generate-underlay-topology.c:237
6761msgid "Topology string missing\n" 6555msgid "Topology string missing\n"
6762msgstr "" 6556msgstr ""
6763 6557
6764#: src/testbed/generate-underlay-topology.c:240 6558#: src/testbed/generate-underlay-topology.c:242
6765#, fuzzy, c-format 6559#, fuzzy, c-format
6766msgid "Invalid topology: %s\n" 6560msgid "Invalid topology: %s\n"
6767msgstr "Đối số không hợp lệ cho « %s ».\n" 6561msgstr "Đối số không hợp lệ cho « %s ».\n"
6768 6562
6769#: src/testbed/generate-underlay-topology.c:253 6563#: src/testbed/generate-underlay-topology.c:255
6770#, c-format 6564#, c-format
6771msgid "An argument is missing for given topology `%s'\n" 6565msgid "An argument is missing for given topology `%s'\n"
6772msgstr "" 6566msgstr ""
6773 6567
6774#: src/testbed/generate-underlay-topology.c:259 6568#: src/testbed/generate-underlay-topology.c:261
6775#, fuzzy, c-format 6569#, fuzzy, c-format
6776msgid "Invalid argument `%s' given as topology argument\n" 6570msgid "Invalid argument `%s' given as topology argument\n"
6777msgstr "Đối số không hợp lệ cho « %s ».\n" 6571msgstr "Đối số không hợp lệ cho « %s ».\n"
6778 6572
6779#: src/testbed/generate-underlay-topology.c:267 6573#: src/testbed/generate-underlay-topology.c:269
6780#, c-format 6574#, c-format
6781msgid "Filename argument missing for topology `%s'\n" 6575msgid "Filename argument missing for topology `%s'\n"
6782msgstr "" 6576msgstr ""
6783 6577
6784#: src/testbed/generate-underlay-topology.c:281 6578#: src/testbed/generate-underlay-topology.c:283
6785#, c-format 6579#, c-format
6786msgid "Second argument for topology `%s' is missing\n" 6580msgid "Second argument for topology `%s' is missing\n"
6787msgstr "" 6581msgstr ""
6788 6582
6789#: src/testbed/generate-underlay-topology.c:287 6583#: src/testbed/generate-underlay-topology.c:289
6790#, fuzzy, c-format 6584#, fuzzy, c-format
6791msgid "Invalid argument `%s'; expecting unsigned int\n" 6585msgid "Invalid argument `%s'; expecting unsigned int\n"
6792msgstr "Đối số không hợp lệ cho « %s ».\n" 6586msgstr "Đối số không hợp lệ cho « %s ».\n"
6793 6587
6794#: src/testbed/generate-underlay-topology.c:340 6588#: src/testbed/generate-underlay-topology.c:342
6795#: src/testbed/gnunet-testbed-profiler.c:281 6589#: src/testbed/gnunet-testbed-profiler.c:283
6796msgid "create COUNT number of peers" 6590msgid "create COUNT number of peers"
6797msgstr "" 6591msgstr ""
6798 6592
6799#: src/testbed/generate-underlay-topology.c:350 6593#: src/testbed/generate-underlay-topology.c:352
6800msgid "" 6594msgid ""
6801"Generates SQLite3 database representing a given underlay topology.\n" 6595"Generates SQLite3 database representing a given underlay topology.\n"
6802"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n" 6596"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n"
@@ -6820,83 +6614,83 @@ msgid ""
6820"content/topology-file-format\n" 6614"content/topology-file-format\n"
6821msgstr "" 6615msgstr ""
6822 6616
6823#: src/testbed/gnunet-daemon-latency-logger.c:313 6617#: src/testbed/gnunet-daemon-latency-logger.c:315
6824msgid "Daemon to log latency values of connections to neighbours" 6618msgid "Daemon to log latency values of connections to neighbours"
6825msgstr "" 6619msgstr ""
6826 6620
6827#: src/testbed/gnunet-daemon-testbed-blacklist.c:247 6621#: src/testbed/gnunet-daemon-testbed-blacklist.c:249
6828msgid "" 6622msgid ""
6829"Daemon to restrict incoming transport layer connections during testbed " 6623"Daemon to restrict incoming transport layer connections during testbed "
6830"deployments" 6624"deployments"
6831msgstr "" 6625msgstr ""
6832 6626
6833#: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 6627#: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
6834#: src/testing/testing.c:286 src/util/gnunet-ecc.c:310 6628#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
6835#, c-format 6629#, c-format
6836msgid "Incorrect hostkey file format: %s\n" 6630msgid "Incorrect hostkey file format: %s\n"
6837msgstr "" 6631msgstr ""
6838 6632
6839#: src/testbed/gnunet-daemon-testbed-underlay.c:469 6633#: src/testbed/gnunet-daemon-testbed-underlay.c:471
6840msgid "Daemon to restrict underlay network in testbed deployments" 6634msgid "Daemon to restrict underlay network in testbed deployments"
6841msgstr "" 6635msgstr ""
6842 6636
6843#: src/testbed/gnunet-service-testbed_cpustatus.c:726 6637#: src/testbed/gnunet-service-testbed_cpustatus.c:728
6844#, c-format 6638#, c-format
6845msgid "" 6639msgid ""
6846"Cannot open %s for writing load statistics. Not logging load statistics\n" 6640"Cannot open %s for writing load statistics. Not logging load statistics\n"
6847msgstr "" 6641msgstr ""
6848 6642
6849#: src/testbed/gnunet-service-testbed_peers.c:1157 6643#: src/testbed/gnunet-service-testbed_peers.c:1159
6850#, fuzzy, c-format 6644#, fuzzy, c-format
6851msgid "%s is stopped" 6645msgid "%s is stopped"
6852msgstr "# các byte trong kho dữ liệu" 6646msgstr "# các byte trong kho dữ liệu"
6853 6647
6854#: src/testbed/gnunet-service-testbed_peers.c:1159 6648#: src/testbed/gnunet-service-testbed_peers.c:1161
6855#, c-format 6649#, c-format
6856msgid "%s is starting" 6650msgid "%s is starting"
6857msgstr "" 6651msgstr ""
6858 6652
6859#: src/testbed/gnunet-service-testbed_peers.c:1161 6653#: src/testbed/gnunet-service-testbed_peers.c:1163
6860#, c-format 6654#, c-format
6861msgid "%s is stopping" 6655msgid "%s is stopping"
6862msgstr "" 6656msgstr ""
6863 6657
6864#: src/testbed/gnunet-service-testbed_peers.c:1163 6658#: src/testbed/gnunet-service-testbed_peers.c:1165
6865#, fuzzy, c-format 6659#, fuzzy, c-format
6866msgid "%s is starting already" 6660msgid "%s is starting already"
6867msgstr "« %s » đang đăng ký trình điều khiển %d\n" 6661msgstr "« %s » đang đăng ký trình điều khiển %d\n"
6868 6662
6869#: src/testbed/gnunet-service-testbed_peers.c:1165 6663#: src/testbed/gnunet-service-testbed_peers.c:1167
6870#, c-format 6664#, c-format
6871msgid "%s is stopping already" 6665msgid "%s is stopping already"
6872msgstr "" 6666msgstr ""
6873 6667
6874#: src/testbed/gnunet-service-testbed_peers.c:1167 6668#: src/testbed/gnunet-service-testbed_peers.c:1169
6875#, c-format 6669#, c-format
6876msgid "%s is started already" 6670msgid "%s is started already"
6877msgstr "" 6671msgstr ""
6878 6672
6879#: src/testbed/gnunet-service-testbed_peers.c:1169 6673#: src/testbed/gnunet-service-testbed_peers.c:1171
6880#, c-format 6674#, c-format
6881msgid "%s is stopped already" 6675msgid "%s is stopped already"
6882msgstr "" 6676msgstr ""
6883 6677
6884#: src/testbed/gnunet-service-testbed_peers.c:1171 6678#: src/testbed/gnunet-service-testbed_peers.c:1173
6885#, fuzzy, c-format 6679#, fuzzy, c-format
6886msgid "%s service is not known to ARM" 6680msgid "%s service is not known to ARM"
6887msgstr "Không gian tên « %s » có đánh giá %d.\n" 6681msgstr "Không gian tên « %s » có đánh giá %d.\n"
6888 6682
6889#: src/testbed/gnunet-service-testbed_peers.c:1173 6683#: src/testbed/gnunet-service-testbed_peers.c:1175
6890#, fuzzy, c-format 6684#, fuzzy, c-format
6891msgid "%s service failed to start" 6685msgid "%s service failed to start"
6892msgstr "Lỗi bắt đầu thu thập.\n" 6686msgstr "Lỗi bắt đầu thu thập.\n"
6893 6687
6894#: src/testbed/gnunet-service-testbed_peers.c:1175 6688#: src/testbed/gnunet-service-testbed_peers.c:1177
6895#, fuzzy, c-format 6689#, fuzzy, c-format
6896msgid "%s service can't be started because ARM is shutting down" 6690msgid "%s service can't be started because ARM is shutting down"
6897msgstr "« %s » đang tắt.\n" 6691msgstr "« %s » đang tắt.\n"
6898 6692
6899#: src/testbed/gnunet-service-testbed_peers.c:1177 6693#: src/testbed/gnunet-service-testbed_peers.c:1179
6900#, c-format 6694#, c-format
6901msgid "%.s Unknown result code." 6695msgid "%.s Unknown result code."
6902msgstr "" 6696msgstr ""
@@ -6911,176 +6705,176 @@ msgstr "Đang đợi các đồng đẳng kết nối"
6911msgid "Spawning process `%s'\n" 6705msgid "Spawning process `%s'\n"
6912msgstr "Đang bắt đầu tài về « %s »\n" 6706msgstr "Đang bắt đầu tài về « %s »\n"
6913 6707
6914#: src/testbed/gnunet-testbed-profiler.c:287 6708#: src/testbed/gnunet-testbed-profiler.c:289
6915msgid "tolerate COUNT number of continious timeout failures" 6709msgid "tolerate COUNT number of continious timeout failures"
6916msgstr "" 6710msgstr ""
6917 6711
6918#: src/testbed/gnunet-testbed-profiler.c:292 6712#: src/testbed/gnunet-testbed-profiler.c:294
6919msgid "" 6713msgid ""
6920"run profiler in non-interactive mode where upon testbed setup the profiler " 6714"run profiler in non-interactive mode where upon testbed setup the profiler "
6921"does not wait for a keystroke but continues to run until a termination " 6715"does not wait for a keystroke but continues to run until a termination "
6922"signal is received" 6716"signal is received"
6923msgstr "" 6717msgstr ""
6924 6718
6925#: src/testbed/testbed_api.c:408 6719#: src/testbed/testbed_api.c:410
6926#, fuzzy, c-format 6720#, fuzzy, c-format
6927msgid "Adding host %u failed with error: %s\n" 6721msgid "Adding host %u failed with error: %s\n"
6928msgstr "« %s » thất bại với mã lỗi %d: %s\n" 6722msgstr "« %s » thất bại với mã lỗi %d: %s\n"
6929 6723
6930#: src/testbed/testbed_api_hosts.c:411 6724#: src/testbed/testbed_api_hosts.c:413
6931#, fuzzy, c-format 6725#, fuzzy, c-format
6932msgid "Hosts file %s not found\n" 6726msgid "Hosts file %s not found\n"
6933msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 6727msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
6934 6728
6935#: src/testbed/testbed_api_hosts.c:419 6729#: src/testbed/testbed_api_hosts.c:421
6936#, fuzzy, c-format 6730#, fuzzy, c-format
6937msgid "Hosts file %s has no data\n" 6731msgid "Hosts file %s has no data\n"
6938msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 6732msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
6939 6733
6940#: src/testbed/testbed_api_hosts.c:426 6734#: src/testbed/testbed_api_hosts.c:428
6941#, fuzzy, c-format 6735#, fuzzy, c-format
6942msgid "Hosts file %s cannot be read\n" 6736msgid "Hosts file %s cannot be read\n"
6943msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 6737msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
6944 6738
6945#: src/testbed/testbed_api_hosts.c:567 6739#: src/testbed/testbed_api_hosts.c:569
6946#, c-format 6740#, c-format
6947msgid "The function %s is only available when compiled with (--with-ll)\n" 6741msgid "The function %s is only available when compiled with (--with-ll)\n"
6948msgstr "" 6742msgstr ""
6949 6743
6950#: src/testbed/testbed_api_testbed.c:816 6744#: src/testbed/testbed_api_testbed.c:818
6951msgid "Linking controllers failed. Exiting" 6745msgid "Linking controllers failed. Exiting"
6952msgstr "" 6746msgstr ""
6953 6747
6954#: src/testbed/testbed_api_testbed.c:984 6748#: src/testbed/testbed_api_testbed.c:986
6955#, c-format 6749#, c-format
6956msgid "Host registration failed for a host. Error: %s\n" 6750msgid "Host registration failed for a host. Error: %s\n"
6957msgstr "" 6751msgstr ""
6958 6752
6959#: src/testbed/testbed_api_testbed.c:1050 6753#: src/testbed/testbed_api_testbed.c:1052
6960msgid "Controller crash detected. Shutting down.\n" 6754msgid "Controller crash detected. Shutting down.\n"
6961msgstr "" 6755msgstr ""
6962 6756
6963#: src/testbed/testbed_api_testbed.c:1139 6757#: src/testbed/testbed_api_testbed.c:1141
6964#, c-format 6758#, c-format
6965msgid "Host %s cannot start testbed\n" 6759msgid "Host %s cannot start testbed\n"
6966msgstr "" 6760msgstr ""
6967 6761
6968#: src/testbed/testbed_api_testbed.c:1143 6762#: src/testbed/testbed_api_testbed.c:1145
6969msgid "Testbed cannot be started on localhost\n" 6763msgid "Testbed cannot be started on localhost\n"
6970msgstr "" 6764msgstr ""
6971 6765
6972#: src/testbed/testbed_api_testbed.c:1181 6766#: src/testbed/testbed_api_testbed.c:1183
6973msgid "Cannot start the master controller" 6767msgid "Cannot start the master controller"
6974msgstr "" 6768msgstr ""
6975 6769
6976#: src/testbed/testbed_api_testbed.c:1199 6770#: src/testbed/testbed_api_testbed.c:1201
6977msgid "Shutting down testbed due to timeout while setup.\n" 6771msgid "Shutting down testbed due to timeout while setup.\n"
6978msgstr "" 6772msgstr ""
6979 6773
6980#: src/testbed/testbed_api_testbed.c:1259 6774#: src/testbed/testbed_api_testbed.c:1261
6981msgid "No hosts loaded from LoadLeveler. Need at least one host\n" 6775msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
6982msgstr "" 6776msgstr ""
6983 6777
6984#: src/testbed/testbed_api_testbed.c:1271 6778#: src/testbed/testbed_api_testbed.c:1273
6985msgid "No hosts loaded. Need at least one host\n" 6779msgid "No hosts loaded. Need at least one host\n"
6986msgstr "" 6780msgstr ""
6987 6781
6988#: src/testbed/testbed_api_testbed.c:1295 6782#: src/testbed/testbed_api_testbed.c:1297
6989msgid "Specified topology must be supported by testbed" 6783msgid "Specified topology must be supported by testbed"
6990msgstr "" 6784msgstr ""
6991 6785
6992#: src/testbed/testbed_api_testbed.c:1345 6786#: src/testbed/testbed_api_testbed.c:1347
6993#, c-format 6787#, c-format
6994msgid "" 6788msgid ""
6995"Maximum number of edges a peer can have in a scale free topology cannot be " 6789"Maximum number of edges a peer can have in a scale free topology cannot be "
6996"more than %u. Given `%s = %llu'" 6790"more than %u. Given `%s = %llu'"
6997msgstr "" 6791msgstr ""
6998 6792
6999#: src/testbed/testbed_api_testbed.c:1361 6793#: src/testbed/testbed_api_testbed.c:1363
7000#, c-format 6794#, c-format
7001msgid "" 6795msgid ""
7002"The number of edges that can established when adding a new node to scale " 6796"The number of edges that can established when adding a new node to scale "
7003"free topology cannot be more than %u. Given `%s = %llu'" 6797"free topology cannot be more than %u. Given `%s = %llu'"
7004msgstr "" 6798msgstr ""
7005 6799
7006#: src/testbed/testbed_api_topology.c:1026 6800#: src/testbed/testbed_api_topology.c:1028
7007#, fuzzy, c-format 6801#, fuzzy, c-format
7008msgid "Topology file %s not found\n" 6802msgid "Topology file %s not found\n"
7009msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 6803msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
7010 6804
7011#: src/testbed/testbed_api_topology.c:1034 6805#: src/testbed/testbed_api_topology.c:1036
7012#, fuzzy, c-format 6806#, fuzzy, c-format
7013msgid "Topology file %s has no data\n" 6807msgid "Topology file %s has no data\n"
7014msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 6808msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
7015 6809
7016#: src/testbed/testbed_api_topology.c:1042 6810#: src/testbed/testbed_api_topology.c:1044
7017#, fuzzy, c-format 6811#, fuzzy, c-format
7018msgid "Topology file %s cannot be read\n" 6812msgid "Topology file %s cannot be read\n"
7019msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 6813msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
7020 6814
7021#: src/testbed/testbed_api_topology.c:1064 6815#: src/testbed/testbed_api_topology.c:1066
7022#, fuzzy, c-format 6816#, fuzzy, c-format
7023msgid "Failed to read peer index from toology file: %s" 6817msgid "Failed to read peer index from toology file: %s"
7024msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 6818msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
7025 6819
7026#: src/testbed/testbed_api_topology.c:1073 6820#: src/testbed/testbed_api_topology.c:1075
7027#: src/testbed/testbed_api_topology.c:1097 6821#: src/testbed/testbed_api_topology.c:1099
7028#, c-format 6822#, c-format
7029msgid "Value in given topology file: %s out of range\n" 6823msgid "Value in given topology file: %s out of range\n"
7030msgstr "" 6824msgstr ""
7031 6825
7032#: src/testbed/testbed_api_topology.c:1079 6826#: src/testbed/testbed_api_topology.c:1081
7033#: src/testbed/testbed_api_topology.c:1103 6827#: src/testbed/testbed_api_topology.c:1105
7034#, fuzzy, c-format 6828#, fuzzy, c-format
7035msgid "Failed to read peer index from topology file: %s" 6829msgid "Failed to read peer index from topology file: %s"
7036msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 6830msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
7037 6831
7038#: src/testbed/testbed_api_topology.c:1085 6832#: src/testbed/testbed_api_topology.c:1087
7039#: src/testbed/testbed_api_topology.c:1109 6833#: src/testbed/testbed_api_topology.c:1111
7040msgid "Topology file needs more peers than given ones\n" 6834msgid "Topology file needs more peers than given ones\n"
7041msgstr "" 6835msgstr ""
7042 6836
7043#: src/testbed/testbed_api_topology.c:1143 6837#: src/testbed/testbed_api_topology.c:1145
7044#, fuzzy, c-format 6838#, fuzzy, c-format
7045msgid "Ignoring to connect peer %u to peer %u\n" 6839msgid "Ignoring to connect peer %u to peer %u\n"
7046msgstr "đang kết nối đồng đẳng %s:%d tới đồng đẳng %s:%d\n" 6840msgstr "đang kết nối đồng đẳng %s:%d tới đồng đẳng %s:%d\n"
7047 6841
7048#: src/testing/gnunet-testing.c:171 6842#: src/testing/gnunet-testing.c:173
7049#, fuzzy, c-format 6843#, fuzzy, c-format
7050msgid "Could not extract hostkey %u (offset too large?)\n" 6844msgid "Could not extract hostkey %u (offset too large?)\n"
7051msgstr "Không thể đọc danh sách bạn bè « %s »\n" 6845msgstr "Không thể đọc danh sách bạn bè « %s »\n"
7052 6846
7053#: src/testing/gnunet-testing.c:251 6847#: src/testing/gnunet-testing.c:253
7054#, c-format 6848#, c-format
7055msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n" 6849msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n"
7056msgstr "" 6850msgstr ""
7057 6851
7058#: src/testing/gnunet-testing.c:352 6852#: src/testing/gnunet-testing.c:354
7059#, fuzzy 6853#, fuzzy
7060msgid "create unique configuration files" 6854msgid "create unique configuration files"
7061msgstr "cập nhật một giá trị trong tập tin cấu hình" 6855msgstr "cập nhật một giá trị trong tập tin cấu hình"
7062 6856
7063#: src/testing/gnunet-testing.c:357 6857#: src/testing/gnunet-testing.c:359
7064msgid "extract hostkey file from pre-computed hostkey list" 6858msgid "extract hostkey file from pre-computed hostkey list"
7065msgstr "" 6859msgstr ""
7066 6860
7067#: src/testing/gnunet-testing.c:363 6861#: src/testing/gnunet-testing.c:365
7068#, fuzzy 6862#, fuzzy
7069msgid "" 6863msgid ""
7070"number of unique configuration files to create, or number of the hostkey to " 6864"number of unique configuration files to create, or number of the hostkey to "
7071"extract" 6865"extract"
7072msgstr "in ra đầu ra tiêu chuẩn một giá trị từ tập tin cấu hình" 6866msgstr "in ra đầu ra tiêu chuẩn một giá trị từ tập tin cấu hình"
7073 6867
7074#: src/testing/gnunet-testing.c:370 6868#: src/testing/gnunet-testing.c:372
7075#, fuzzy 6869#, fuzzy
7076msgid "configuration template" 6870msgid "configuration template"
7077msgstr "Cấu hình đã được lưu." 6871msgstr "Cấu hình đã được lưu."
7078 6872
7079#: src/testing/gnunet-testing.c:376 6873#: src/testing/gnunet-testing.c:378
7080msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)" 6874msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)"
7081msgstr "" 6875msgstr ""
7082 6876
7083#: src/testing/gnunet-testing.c:389 6877#: src/testing/gnunet-testing.c:391
7084msgid "Command line tool to access the testing library" 6878msgid "Command line tool to access the testing library"
7085msgstr "" 6879msgstr ""
7086 6880
@@ -7088,1465 +6882,1489 @@ msgstr ""
7088msgid "list COUNT number of keys" 6882msgid "list COUNT number of keys"
7089msgstr "" 6883msgstr ""
7090 6884
7091#: src/testing/testing.c:270 6885#: src/testing/testing.c:272
7092#, c-format 6886#, c-format
7093msgid "Hostkeys file not found: %s\n" 6887msgid "Hostkeys file not found: %s\n"
7094msgstr "" 6888msgstr ""
7095 6889
7096#: src/testing/testing.c:713 6890#: src/testing/testing.c:715
7097#, fuzzy, c-format 6891#, fuzzy, c-format
7098msgid "Key number %u does not exist\n" 6892msgid "Key number %u does not exist\n"
7099msgstr "đặt số trình nền cần khởi chạy" 6893msgstr "đặt số trình nền cần khởi chạy"
7100 6894
7101#: src/testing/testing.c:1157 6895#: src/testing/testing.c:1159
7102#, c-format 6896#, c-format
7103msgid "" 6897msgid ""
7104"You attempted to create a testbed with more than %u hosts. Please " 6898"You attempted to create a testbed with more than %u hosts. Please "
7105"precompute more hostkeys first.\n" 6899"precompute more hostkeys first.\n"
7106msgstr "" 6900msgstr ""
7107 6901
7108#: src/testing/testing.c:1166 6902#: src/testing/testing.c:1168
7109#, fuzzy, c-format 6903#, fuzzy, c-format
7110msgid "Failed to initialize hostkey for peer %u\n" 6904msgid "Failed to initialize hostkey for peer %u\n"
7111msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 6905msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
7112 6906
7113#: src/testing/testing.c:1176 6907#: src/testing/testing.c:1178
7114msgid "PRIVATE_KEY option in PEER section missing in configuration\n" 6908msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
7115msgstr "" 6909msgstr ""
7116 6910
7117#: src/testing/testing.c:1189 6911#: src/testing/testing.c:1191
7118#, fuzzy 6912#, fuzzy
7119msgid "Failed to create configuration for peer (not enough free ports?)\n" 6913msgid "Failed to create configuration for peer (not enough free ports?)\n"
7120msgstr "Không thể truy cập đến thông tin về không gian tên.\n" 6914msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
7121 6915
7122#: src/testing/testing.c:1203 6916#: src/testing/testing.c:1205
7123#, fuzzy, c-format 6917#, fuzzy, c-format
7124msgid "Cannot open hostkey file `%s': %s\n" 6918msgid "Cannot open hostkey file `%s': %s\n"
7125msgstr "Không thể đọc danh sách bạn bè « %s »\n" 6919msgstr "Không thể đọc danh sách bạn bè « %s »\n"
7126 6920
7127#: src/testing/testing.c:1215 6921#: src/testing/testing.c:1217
7128#, fuzzy, c-format 6922#, fuzzy, c-format
7129msgid "Failed to write hostkey file for peer %u: %s\n" 6923msgid "Failed to write hostkey file for peer %u: %s\n"
7130msgstr "Lỗi tạo thư mục tạm thời." 6924msgstr "Lỗi tạo thư mục tạm thời."
7131 6925
7132#: src/testing/testing.c:1240 6926#: src/testing/testing.c:1242
7133#, fuzzy, c-format 6927#, fuzzy, c-format
7134msgid "Failed to write configuration file `%s' for peer %u: %s\n" 6928msgid "Failed to write configuration file `%s' for peer %u: %s\n"
7135msgstr "Không thể lưu tập tin cấu hình « %s »:" 6929msgstr "Không thể lưu tập tin cấu hình « %s »:"
7136 6930
7137#: src/testing/testing.c:1342 6931#: src/testing/testing.c:1344
7138#, fuzzy, c-format 6932#, fuzzy, c-format
7139msgid "Failed to start `%s': %s\n" 6933msgid "Failed to start `%s': %s\n"
7140msgstr "Lỗi chạy %s: %s %d\n" 6934msgstr "Lỗi chạy %s: %s %d\n"
7141 6935
7142#: src/testing/testing.c:1645 6936#: src/testing/testing.c:1647
7143#, fuzzy, c-format 6937#, fuzzy, c-format
7144msgid "Failed to load configuration from %s\n" 6938msgid "Failed to load configuration from %s\n"
7145msgstr "Không thể lưu tập tin cấu hình « %s »:" 6939msgstr "Không thể lưu tập tin cấu hình « %s »:"
7146 6940
7147#: src/topology/friends.c:124 6941#: src/topology/friends.c:126
7148#, fuzzy, c-format 6942#, fuzzy, c-format
7149msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n" 6943msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n"
7150msgstr "" 6944msgstr ""
7151"Lỗi cú pháp trong sự xác định địa hình học, đang bỏ qua các byte « %s ».\n" 6945"Lỗi cú pháp trong sự xác định địa hình học, đang bỏ qua các byte « %s ».\n"
7152 6946
7153#: src/topology/friends.c:178 6947#: src/topology/friends.c:180
7154#, c-format 6948#, c-format
7155msgid "Directory for file `%s' does not seem to be writable.\n" 6949msgid "Directory for file `%s' does not seem to be writable.\n"
7156msgstr "" 6950msgstr ""
7157 6951
7158#: src/topology/gnunet-daemon-topology.c:228 6952#: src/topology/gnunet-daemon-topology.c:230
7159msgid "# peers blacklisted" 6953msgid "# peers blacklisted"
7160msgstr "" 6954msgstr ""
7161 6955
7162#: src/topology/gnunet-daemon-topology.c:342 6956#: src/topology/gnunet-daemon-topology.c:344
7163#, fuzzy 6957#, fuzzy
7164msgid "# connect requests issued to ATS" 6958msgid "# connect requests issued to ATS"
7165msgstr "# các yêu cầu máy/trình khách lỗ hổng được phun vào" 6959msgstr "# các yêu cầu máy/trình khách lỗ hổng được phun vào"
7166 6960
7167#: src/topology/gnunet-daemon-topology.c:536 6961#: src/topology/gnunet-daemon-topology.c:538
7168#, fuzzy 6962#, fuzzy
7169msgid "# HELLO messages gossipped" 6963msgid "# HELLO messages gossipped"
7170msgstr "# các thông báo gửi đi bị loại bỏ" 6964msgstr "# các thông báo gửi đi bị loại bỏ"
7171 6965
7172#: src/topology/gnunet-daemon-topology.c:638 6966#: src/topology/gnunet-daemon-topology.c:640
7173#: src/topology/gnunet-daemon-topology.c:724 6967#: src/topology/gnunet-daemon-topology.c:726
7174#, fuzzy 6968#, fuzzy
7175msgid "# friends connected" 6969msgid "# friends connected"
7176msgstr "# của các đồng đẳng đã kết nối" 6970msgstr "# của các đồng đẳng đã kết nối"
7177 6971
7178#: src/topology/gnunet-daemon-topology.c:921 6972#: src/topology/gnunet-daemon-topology.c:923
7179msgid "Failed to connect to core service, can not manage topology!\n" 6973msgid "Failed to connect to core service, can not manage topology!\n"
7180msgstr "" 6974msgstr ""
7181 6975
7182#: src/topology/gnunet-daemon-topology.c:954 6976#: src/topology/gnunet-daemon-topology.c:956
7183#, c-format 6977#, c-format
7184msgid "Found myself `%s' in friend list (useless, ignored)\n" 6978msgid "Found myself `%s' in friend list (useless, ignored)\n"
7185msgstr "" 6979msgstr ""
7186 6980
7187#: src/topology/gnunet-daemon-topology.c:961 6981#: src/topology/gnunet-daemon-topology.c:963
7188#, fuzzy, c-format 6982#, fuzzy, c-format
7189msgid "Found friend `%s' in configuration\n" 6983msgid "Found friend `%s' in configuration\n"
7190msgstr "" 6984msgstr ""
7191"\n" 6985"\n"
7192"Kết thúc cấu hình.\n" 6986"Kết thúc cấu hình.\n"
7193 6987
7194#: src/topology/gnunet-daemon-topology.c:983 6988#: src/topology/gnunet-daemon-topology.c:985
7195msgid "Encountered errors parsing friends list!\n" 6989msgid "Encountered errors parsing friends list!\n"
7196msgstr "" 6990msgstr ""
7197 6991
7198#: src/topology/gnunet-daemon-topology.c:986 6992#: src/topology/gnunet-daemon-topology.c:988
7199#, fuzzy 6993#, fuzzy
7200msgid "# friends in configuration" 6994msgid "# friends in configuration"
7201msgstr "" 6995msgstr ""
7202"\n" 6996"\n"
7203"Kết thúc cấu hình.\n" 6997"Kết thúc cấu hình.\n"
7204 6998
7205#: src/topology/gnunet-daemon-topology.c:993 6999#: src/topology/gnunet-daemon-topology.c:995
7206msgid "" 7000msgid ""
7207"Fewer friends specified than required by minimum friend count. Will only " 7001"Fewer friends specified than required by minimum friend count. Will only "
7208"connect to friends.\n" 7002"connect to friends.\n"
7209msgstr "" 7003msgstr ""
7210"Xác định quá ít bạn bè (dưới số tối thiểu). Sẽ chỉ kết nối tới bạn bè.\n" 7004"Xác định quá ít bạn bè (dưới số tối thiểu). Sẽ chỉ kết nối tới bạn bè.\n"
7211 7005
7212#: src/topology/gnunet-daemon-topology.c:999 7006#: src/topology/gnunet-daemon-topology.c:1001
7213msgid "" 7007msgid ""
7214"More friendly connections required than target total number of connections.\n" 7008"More friendly connections required than target total number of connections.\n"
7215msgstr "Cần thiết nhiều kết nối bạn bè hơn tổng số kết nối đích.\n" 7009msgstr "Cần thiết nhiều kết nối bạn bè hơn tổng số kết nối đích.\n"
7216 7010
7217#: src/topology/gnunet-daemon-topology.c:1052 7011#: src/topology/gnunet-daemon-topology.c:1054
7218#: src/transport/plugin_transport_wlan.c:1515 7012#: src/transport/plugin_transport_wlan.c:1517
7219#, fuzzy 7013#, fuzzy
7220msgid "# HELLO messages received" 7014msgid "# HELLO messages received"
7221msgstr "# các thông báo PONG đã mật mã được nhận" 7015msgstr "# các thông báo PONG đã mật mã được nhận"
7222 7016
7223#: src/topology/gnunet-daemon-topology.c:1230 7017#: src/topology/gnunet-daemon-topology.c:1233
7224msgid "GNUnet topology control" 7018msgid "GNUnet topology control"
7225msgstr "" 7019msgstr ""
7226 7020
7227#: src/transport/gnunet-service-transport_ats.c:139 7021#: src/transport/gnunet-communicator-tcp.c:2329
7022#: src/transport/gnunet-communicator-udp.c:2883
7023#: src/transport/gnunet-service-tng.c:4679
7024#: src/transport/gnunet-service-transport.c:2782
7025#, fuzzy
7026msgid "Transport service is lacking key configuration settings. Exiting.\n"
7027msgstr "Lưu cấu hình ngay bây giờ không?"
7028
7029#: src/transport/gnunet-communicator-tcp.c:2393
7030msgid "GNUnet TCP communicator"
7031msgstr ""
7032
7033#: src/transport/gnunet-communicator-udp.c:2954
7034msgid "GNUnet UDP communicator"
7035msgstr ""
7036
7037#: src/transport/gnunet-communicator-unix.c:802
7038#, fuzzy
7039msgid ""
7040"Maximum number of UNIX connections exceeded, dropping incoming message\n"
7041msgstr "tăng sổ tối đa các kết nối TCP/IP"
7042
7043#: src/transport/gnunet-communicator-unix.c:1073
7044#: src/transport/plugin_transport_unix.c:1403
7045#, fuzzy, c-format
7046msgid "Cannot create path to `%s'\n"
7047msgstr "Không thể tạo miền tên.\n"
7048
7049#: src/transport/gnunet-communicator-unix.c:1162
7050msgid "GNUnet UNIX domain socket communicator"
7051msgstr ""
7052
7053#: src/transport/gnunet-service-transport_ats.c:141
7228msgid "# Addresses given to ATS" 7054msgid "# Addresses given to ATS"
7229msgstr "" 7055msgstr ""
7230 7056
7231#: src/transport/gnunet-service-transport.c:446 7057#: src/transport/gnunet-service-transport.c:448
7232#, fuzzy 7058#, fuzzy
7233msgid "# messages dropped due to slow client" 7059msgid "# messages dropped due to slow client"
7234msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 7060msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
7235 7061
7236#: src/transport/gnunet-service-transport.c:816 7062#: src/transport/gnunet-service-transport.c:817
7237msgid "# bytes payload dropped (other peer was not connected)" 7063msgid "# bytes payload dropped (other peer was not connected)"
7238msgstr "" 7064msgstr ""
7239 7065
7240#: src/transport/gnunet-service-transport.c:1549 7066#: src/transport/gnunet-service-transport.c:1550
7241#, fuzzy 7067#, fuzzy
7242msgid "# bytes payload discarded due to not connected peer" 7068msgid "# bytes payload discarded due to not connected peer"
7243msgstr "# Các quảng cáo đồng đẳng bị hủy do trọng tải" 7069msgstr "# Các quảng cáo đồng đẳng bị hủy do trọng tải"
7244 7070
7245#: src/transport/gnunet-service-transport.c:1709 7071#: src/transport/gnunet-service-transport.c:1710
7246#, fuzzy 7072#, fuzzy
7247msgid "# bytes total received" 7073msgid "# bytes total received"
7248msgstr "# tổng số nội dung lỗ hổng được nhận" 7074msgstr "# tổng số nội dung lỗ hổng được nhận"
7249 7075
7250#: src/transport/gnunet-service-transport.c:1806 7076#: src/transport/gnunet-service-transport.c:1807
7251#, fuzzy 7077#, fuzzy
7252msgid "# bytes payload received" 7078msgid "# bytes payload received"
7253msgstr "# các byte đã giải mã" 7079msgstr "# các byte đã giải mã"
7254 7080
7255#: src/transport/gnunet-service-transport.c:2123 7081#: src/transport/gnunet-service-transport.c:2124
7256#: src/transport/gnunet-service-transport.c:2595 7082#: src/transport/gnunet-service-transport.c:2596
7257msgid "# disconnects due to blacklist" 7083msgid "# disconnects due to blacklist"
7258msgstr "" 7084msgstr ""
7259 7085
7260#: src/transport/gnunet-service-transport.c:2599 7086#: src/transport/gnunet-service-transport.c:2600
7261#, fuzzy, c-format 7087#, fuzzy, c-format
7262msgid "Disallowing connection to peer `%s' on transport %s\n" 7088msgid "Disallowing connection to peer `%s' on transport %s\n"
7263msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" 7089msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
7264 7090
7265#: src/transport/gnunet-service-transport.c:2707 7091#: src/transport/gnunet-service-transport.c:2708
7266#, fuzzy, c-format 7092#, fuzzy, c-format
7267msgid "Adding blacklisting entry for peer `%s'\n" 7093msgid "Adding blacklisting entry for peer `%s'\n"
7268msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n" 7094msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n"
7269 7095
7270#: src/transport/gnunet-service-transport.c:2716 7096#: src/transport/gnunet-service-transport.c:2717
7271#, c-format 7097#, c-format
7272msgid "Adding blacklisting entry for peer `%s':`%s'\n" 7098msgid "Adding blacklisting entry for peer `%s':`%s'\n"
7273msgstr "" 7099msgstr ""
7274 7100
7275#: src/transport/gnunet-service-transport.c:2781 7101#: src/transport/gnunet-service-transport_hello.c:195
7276#, fuzzy
7277msgid "Transport service is lacking key configuration settings. Exiting.\n"
7278msgstr "Lưu cấu hình ngay bây giờ không?"
7279
7280#: src/transport/gnunet-service-transport_hello.c:193
7281msgid "# refreshed my HELLO" 7102msgid "# refreshed my HELLO"
7282msgstr "" 7103msgstr ""
7283 7104
7284#: src/transport/gnunet-service-transport_neighbours.c:804 7105#: src/transport/gnunet-service-transport_neighbours.c:805
7285#, fuzzy 7106#, fuzzy
7286msgid "# session creation failed" 7107msgid "# session creation failed"
7287msgstr "# các khoá phiên chạy được chấp nhận" 7108msgstr "# các khoá phiên chạy được chấp nhận"
7288 7109
7289#: src/transport/gnunet-service-transport_neighbours.c:1051 7110#: src/transport/gnunet-service-transport_neighbours.c:1052
7290#, fuzzy 7111#, fuzzy
7291msgid "# DISCONNECT messages sent" 7112msgid "# DISCONNECT messages sent"
7292msgstr "# các thông báo PONG đã mật mã được nhận" 7113msgstr "# các thông báo PONG đã mật mã được nhận"
7293 7114
7294#: src/transport/gnunet-service-transport_neighbours.c:1174 7115#: src/transport/gnunet-service-transport_neighbours.c:1175
7295msgid "# disconnects due to quota of 0" 7116msgid "# disconnects due to quota of 0"
7296msgstr "" 7117msgstr ""
7297 7118
7298#: src/transport/gnunet-service-transport_neighbours.c:1322 7119#: src/transport/gnunet-service-transport_neighbours.c:1323
7299#: src/transport/gnunet-service-transport_neighbours.c:1783 7120#: src/transport/gnunet-service-transport_neighbours.c:1784
7300#, fuzzy 7121#, fuzzy
7301msgid "# bytes in message queue for other peers" 7122msgid "# bytes in message queue for other peers"
7302msgstr "# các byte thông báo gửi đi bị loại bỏ" 7123msgstr "# các byte thông báo gửi đi bị loại bỏ"
7303 7124
7304#: src/transport/gnunet-service-transport_neighbours.c:1327 7125#: src/transport/gnunet-service-transport_neighbours.c:1328
7305#, fuzzy 7126#, fuzzy
7306msgid "# messages transmitted to other peers" 7127msgid "# messages transmitted to other peers"
7307msgstr "# các byte kiểu %d được gửi " 7128msgstr "# các byte kiểu %d được gửi "
7308 7129
7309#: src/transport/gnunet-service-transport_neighbours.c:1333 7130#: src/transport/gnunet-service-transport_neighbours.c:1334
7310#, fuzzy 7131#, fuzzy
7311msgid "# transmission failures for messages to other peers" 7132msgid "# transmission failures for messages to other peers"
7312msgstr "# các byte thông báo gửi đi bị loại bỏ" 7133msgstr "# các byte thông báo gửi đi bị loại bỏ"
7313 7134
7314#: src/transport/gnunet-service-transport_neighbours.c:1393 7135#: src/transport/gnunet-service-transport_neighbours.c:1394
7315msgid "# messages timed out while in transport queue" 7136msgid "# messages timed out while in transport queue"
7316msgstr "" 7137msgstr ""
7317 7138
7318#: src/transport/gnunet-service-transport_neighbours.c:1477 7139#: src/transport/gnunet-service-transport_neighbours.c:1478
7319msgid "# KEEPALIVES sent" 7140msgid "# KEEPALIVES sent"
7320msgstr "" 7141msgstr ""
7321 7142
7322#: src/transport/gnunet-service-transport_neighbours.c:1513 7143#: src/transport/gnunet-service-transport_neighbours.c:1514
7323#, fuzzy 7144#, fuzzy
7324msgid "# KEEPALIVE messages discarded (peer unknown)" 7145msgid "# KEEPALIVE messages discarded (peer unknown)"
7325msgstr "# các thông báo được chắp liền" 7146msgstr "# các thông báo được chắp liền"
7326 7147
7327#: src/transport/gnunet-service-transport_neighbours.c:1521 7148#: src/transport/gnunet-service-transport_neighbours.c:1522
7328#, fuzzy 7149#, fuzzy
7329msgid "# KEEPALIVE messages discarded (no session)" 7150msgid "# KEEPALIVE messages discarded (no session)"
7330msgstr "# các thông báo được chắp liền" 7151msgstr "# các thông báo được chắp liền"
7331 7152
7332#: src/transport/gnunet-service-transport_neighbours.c:1531 7153#: src/transport/gnunet-service-transport_neighbours.c:1532
7333msgid "# KEEPALIVES received in good order" 7154msgid "# KEEPALIVES received in good order"
7334msgstr "" 7155msgstr ""
7335 7156
7336#: src/transport/gnunet-service-transport_neighbours.c:1576 7157#: src/transport/gnunet-service-transport_neighbours.c:1577
7337#, fuzzy 7158#, fuzzy
7338msgid "# KEEPALIVE_RESPONSEs discarded (not connected)" 7159msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
7339msgstr "# các thông báo được chắp liền" 7160msgstr "# các thông báo được chắp liền"
7340 7161
7341#: src/transport/gnunet-service-transport_neighbours.c:1585 7162#: src/transport/gnunet-service-transport_neighbours.c:1586
7342#, fuzzy 7163#, fuzzy
7343msgid "# KEEPALIVE_RESPONSEs discarded (not expected)" 7164msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
7344msgstr "# các thông báo được chắp liền" 7165msgstr "# các thông báo được chắp liền"
7345 7166
7346#: src/transport/gnunet-service-transport_neighbours.c:1593 7167#: src/transport/gnunet-service-transport_neighbours.c:1594
7347#, fuzzy 7168#, fuzzy
7348msgid "# KEEPALIVE_RESPONSEs discarded (address changed)" 7169msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
7349msgstr "# các thông báo được chắp liền" 7170msgstr "# các thông báo được chắp liền"
7350 7171
7351#: src/transport/gnunet-service-transport_neighbours.c:1602 7172#: src/transport/gnunet-service-transport_neighbours.c:1603
7352#, fuzzy 7173#, fuzzy
7353msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)" 7174msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
7354msgstr "# các thông báo được chắp liền" 7175msgstr "# các thông báo được chắp liền"
7355 7176
7356#: src/transport/gnunet-service-transport_neighbours.c:1607 7177#: src/transport/gnunet-service-transport_neighbours.c:1608
7357#, fuzzy 7178#, fuzzy
7358msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)" 7179msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
7359msgstr "# các thông báo được chắp liền" 7180msgstr "# các thông báo được chắp liền"
7360 7181
7361#: src/transport/gnunet-service-transport_neighbours.c:1613 7182#: src/transport/gnunet-service-transport_neighbours.c:1614
7362#, fuzzy 7183#, fuzzy
7363msgid "# KEEPALIVE_RESPONSEs received (OK)" 7184msgid "# KEEPALIVE_RESPONSEs received (OK)"
7364msgstr "# các thông báo được chắp liền" 7185msgstr "# các thông báo được chắp liền"
7365 7186
7366#: src/transport/gnunet-service-transport_neighbours.c:1680 7187#: src/transport/gnunet-service-transport_neighbours.c:1681
7367#, fuzzy 7188#, fuzzy
7368msgid "# messages discarded due to lack of neighbour record" 7189msgid "# messages discarded due to lack of neighbour record"
7369msgstr "# các thông báo được chắp liền" 7190msgstr "# các thông báo được chắp liền"
7370 7191
7371#: src/transport/gnunet-service-transport_neighbours.c:1714 7192#: src/transport/gnunet-service-transport_neighbours.c:1715
7372#, fuzzy 7193#, fuzzy
7373msgid "# bandwidth quota violations by other peers" 7194msgid "# bandwidth quota violations by other peers"
7374msgstr "theo dõi gnunetd sử dụng dải thông" 7195msgstr "theo dõi gnunetd sử dụng dải thông"
7375 7196
7376#: src/transport/gnunet-service-transport_neighbours.c:1729 7197#: src/transport/gnunet-service-transport_neighbours.c:1730
7377msgid "# ms throttling suggested" 7198msgid "# ms throttling suggested"
7378msgstr "" 7199msgstr ""
7379 7200
7380#: src/transport/gnunet-service-transport_neighbours.c:1852 7201#: src/transport/gnunet-service-transport_neighbours.c:1853
7381#, fuzzy, c-format 7202#, fuzzy, c-format
7382msgid "Failed to send SYN message to peer `%s'\n" 7203msgid "Failed to send SYN message to peer `%s'\n"
7383msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 7204msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
7384 7205
7385#: src/transport/gnunet-service-transport_neighbours.c:1872 7206#: src/transport/gnunet-service-transport_neighbours.c:1873
7386#, fuzzy 7207#, fuzzy
7387msgid "# Failed attempts to switch addresses (failed to send SYN CONT)" 7208msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
7388msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 7209msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
7389 7210
7390#: src/transport/gnunet-service-transport_neighbours.c:1911 7211#: src/transport/gnunet-service-transport_neighbours.c:1912
7391#, fuzzy 7212#, fuzzy
7392msgid "# SYN messages sent" 7213msgid "# SYN messages sent"
7393msgstr "# các thông báo PONG đã mật mã được nhận" 7214msgstr "# các thông báo PONG đã mật mã được nhận"
7394 7215
7395#: src/transport/gnunet-service-transport_neighbours.c:1928 7216#: src/transport/gnunet-service-transport_neighbours.c:1929
7396#, fuzzy, c-format 7217#, fuzzy, c-format
7397msgid "Failed to transmit SYN message to %s\n" 7218msgid "Failed to transmit SYN message to %s\n"
7398msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 7219msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
7399 7220
7400#: src/transport/gnunet-service-transport_neighbours.c:1958 7221#: src/transport/gnunet-service-transport_neighbours.c:1959
7401#, fuzzy 7222#, fuzzy
7402msgid "# Failed attempts to switch addresses (failed to send SYN)" 7223msgid "# Failed attempts to switch addresses (failed to send SYN)"
7403msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 7224msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
7404 7225
7405#: src/transport/gnunet-service-transport_neighbours.c:2026 7226#: src/transport/gnunet-service-transport_neighbours.c:2027
7406#, fuzzy, c-format 7227#, fuzzy, c-format
7407msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n" 7228msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
7408msgstr "Lỗi kết nối đến gnunetd.\n" 7229msgstr "Lỗi kết nối đến gnunetd.\n"
7409 7230
7410#: src/transport/gnunet-service-transport_neighbours.c:2080 7231#: src/transport/gnunet-service-transport_neighbours.c:2081
7411#, fuzzy 7232#, fuzzy
7412msgid "# SYN_ACK messages sent" 7233msgid "# SYN_ACK messages sent"
7413msgstr "# các thông báo PONG đã mật mã được nhận" 7234msgstr "# các thông báo PONG đã mật mã được nhận"
7414 7235
7415#: src/transport/gnunet-service-transport_neighbours.c:2097 7236#: src/transport/gnunet-service-transport_neighbours.c:2098
7416#, fuzzy, c-format 7237#, fuzzy, c-format
7417msgid "Failed to transmit SYN_ACK message to %s\n" 7238msgid "Failed to transmit SYN_ACK message to %s\n"
7418msgstr "Lỗi sơ khởi dịch vụ « %s ».\n" 7239msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
7419 7240
7420#: src/transport/gnunet-service-transport_neighbours.c:2260 7241#: src/transport/gnunet-service-transport_neighbours.c:2261
7421#, fuzzy 7242#, fuzzy
7422msgid "# SYN messages received" 7243msgid "# SYN messages received"
7423msgstr "# các thông báo PING được tạo" 7244msgstr "# các thông báo PING được tạo"
7424 7245
7425#: src/transport/gnunet-service-transport_neighbours.c:2265 7246#: src/transport/gnunet-service-transport_neighbours.c:2266
7426#, c-format 7247#, c-format
7427msgid "SYN request from peer `%s' ignored due impending shutdown\n" 7248msgid "SYN request from peer `%s' ignored due impending shutdown\n"
7428msgstr "" 7249msgstr ""
7429 7250
7430#: src/transport/gnunet-service-transport_neighbours.c:2652 7251#: src/transport/gnunet-service-transport_neighbours.c:2653
7431msgid "# Attempts to switch addresses" 7252msgid "# Attempts to switch addresses"
7432msgstr "" 7253msgstr ""
7433 7254
7434#: src/transport/gnunet-service-transport_neighbours.c:3137 7255#: src/transport/gnunet-service-transport_neighbours.c:3138
7435#, fuzzy 7256#, fuzzy
7436msgid "# SYN_ACK messages received" 7257msgid "# SYN_ACK messages received"
7437msgstr "# các thông báo PONG đã mật mã được nhận" 7258msgstr "# các thông báo PONG đã mật mã được nhận"
7438 7259
7439#: src/transport/gnunet-service-transport_neighbours.c:3145 7260#: src/transport/gnunet-service-transport_neighbours.c:3146
7440#, fuzzy 7261#, fuzzy
7441msgid "# unexpected SYN_ACK messages (no peer)" 7262msgid "# unexpected SYN_ACK messages (no peer)"
7442msgstr "gửi ĐẾM thông báo" 7263msgstr "gửi ĐẾM thông báo"
7443 7264
7444#: src/transport/gnunet-service-transport_neighbours.c:3163 7265#: src/transport/gnunet-service-transport_neighbours.c:3164
7445#: src/transport/gnunet-service-transport_neighbours.c:3187 7266#: src/transport/gnunet-service-transport_neighbours.c:3188
7446#, fuzzy 7267#, fuzzy
7447msgid "# unexpected SYN_ACK messages (not ready)" 7268msgid "# unexpected SYN_ACK messages (not ready)"
7448msgstr "gửi ĐẾM thông báo" 7269msgstr "gửi ĐẾM thông báo"
7449 7270
7450#: src/transport/gnunet-service-transport_neighbours.c:3199 7271#: src/transport/gnunet-service-transport_neighbours.c:3200
7451#, fuzzy 7272#, fuzzy
7452msgid "# unexpected SYN_ACK messages (waiting on ATS)" 7273msgid "# unexpected SYN_ACK messages (waiting on ATS)"
7453msgstr "gửi ĐẾM thông báo" 7274msgstr "gửi ĐẾM thông báo"
7454 7275
7455#: src/transport/gnunet-service-transport_neighbours.c:3224 7276#: src/transport/gnunet-service-transport_neighbours.c:3225
7456msgid "# Successful attempts to switch addresses" 7277msgid "# Successful attempts to switch addresses"
7457msgstr "" 7278msgstr ""
7458 7279
7459#: src/transport/gnunet-service-transport_neighbours.c:3237 7280#: src/transport/gnunet-service-transport_neighbours.c:3238
7460#, fuzzy 7281#, fuzzy
7461msgid "# unexpected SYN_ACK messages (disconnecting)" 7282msgid "# unexpected SYN_ACK messages (disconnecting)"
7462msgstr "gửi ĐẾM thông báo" 7283msgstr "gửi ĐẾM thông báo"
7463 7284
7464#: src/transport/gnunet-service-transport_neighbours.c:3410 7285#: src/transport/gnunet-service-transport_neighbours.c:3411
7465#, fuzzy 7286#, fuzzy
7466msgid "# ACK messages received" 7287msgid "# ACK messages received"
7467msgstr "# các thông báo PONG đã mật mã được nhận" 7288msgstr "# các thông báo PONG đã mật mã được nhận"
7468 7289
7469#: src/transport/gnunet-service-transport_neighbours.c:3446 7290#: src/transport/gnunet-service-transport_neighbours.c:3447
7470#, fuzzy 7291#, fuzzy
7471msgid "# unexpected ACK messages" 7292msgid "# unexpected ACK messages"
7472msgstr "# các thông báo PONG đã mật mã được gửi" 7293msgstr "# các thông báo PONG đã mật mã được gửi"
7473 7294
7474#: src/transport/gnunet-service-transport_neighbours.c:3534 7295#: src/transport/gnunet-service-transport_neighbours.c:3535
7475#, fuzzy 7296#, fuzzy
7476msgid "# quota messages ignored (malformed)" 7297msgid "# quota messages ignored (malformed)"
7477msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 7298msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
7478 7299
7479#: src/transport/gnunet-service-transport_neighbours.c:3541 7300#: src/transport/gnunet-service-transport_neighbours.c:3542
7480#, fuzzy 7301#, fuzzy
7481msgid "# QUOTA messages received" 7302msgid "# QUOTA messages received"
7482msgstr "# các thông báo PONG đã mật mã được nhận" 7303msgstr "# các thông báo PONG đã mật mã được nhận"
7483 7304
7484#: src/transport/gnunet-service-transport_neighbours.c:3581 7305#: src/transport/gnunet-service-transport_neighbours.c:3582
7485msgid "# disconnect messages ignored (malformed)" 7306msgid "# disconnect messages ignored (malformed)"
7486msgstr "" 7307msgstr ""
7487 7308
7488#: src/transport/gnunet-service-transport_neighbours.c:3588 7309#: src/transport/gnunet-service-transport_neighbours.c:3589
7489#, fuzzy 7310#, fuzzy
7490msgid "# DISCONNECT messages received" 7311msgid "# DISCONNECT messages received"
7491msgstr "# các thông báo PONG đã mật mã được nhận" 7312msgstr "# các thông báo PONG đã mật mã được nhận"
7492 7313
7493#: src/transport/gnunet-service-transport_neighbours.c:3599 7314#: src/transport/gnunet-service-transport_neighbours.c:3600
7494msgid "# disconnect messages ignored (timestamp)" 7315msgid "# disconnect messages ignored (timestamp)"
7495msgstr "" 7316msgstr ""
7496 7317
7497#: src/transport/gnunet-service-transport_neighbours.c:3734 7318#: src/transport/gnunet-service-transport_neighbours.c:3735
7498#, fuzzy 7319#, fuzzy
7499msgid "# disconnected from peer upon explicit request" 7320msgid "# disconnected from peer upon explicit request"
7500msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" 7321msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
7501 7322
7502#: src/transport/gnunet-service-transport_plugins.c:156 7323#: src/transport/gnunet-service-transport_plugins.c:158
7503msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n" 7324msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n"
7504msgstr "" 7325msgstr ""
7505 7326
7506#: src/transport/gnunet-service-transport_plugins.c:221 7327#: src/transport/gnunet-service-transport_plugins.c:223
7507#: src/transport/gnunet-service-transport_plugins.c:229 7328#: src/transport/gnunet-service-transport_plugins.c:231
7508#: src/transport/gnunet-service-transport_plugins.c:237 7329#: src/transport/gnunet-service-transport_plugins.c:239
7509#: src/transport/gnunet-service-transport_plugins.c:245 7330#: src/transport/gnunet-service-transport_plugins.c:247
7510#: src/transport/gnunet-service-transport_plugins.c:253 7331#: src/transport/gnunet-service-transport_plugins.c:255
7511#: src/transport/gnunet-service-transport_plugins.c:261 7332#: src/transport/gnunet-service-transport_plugins.c:263
7512#: src/transport/gnunet-service-transport_plugins.c:269 7333#: src/transport/gnunet-service-transport_plugins.c:271
7513#: src/transport/gnunet-service-transport_plugins.c:277 7334#: src/transport/gnunet-service-transport_plugins.c:279
7514#: src/transport/gnunet-service-transport_plugins.c:285 7335#: src/transport/gnunet-service-transport_plugins.c:287
7515#: src/transport/gnunet-service-transport_plugins.c:293 7336#: src/transport/gnunet-service-transport_plugins.c:295
7516#: src/transport/gnunet-service-transport_plugins.c:301 7337#: src/transport/gnunet-service-transport_plugins.c:303
7517#, fuzzy, c-format 7338#, fuzzy, c-format
7518msgid "Missing function `%s' in transport plugin for `%s'\n" 7339msgid "Missing function `%s' in transport plugin for `%s'\n"
7519msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" 7340msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
7520 7341
7521#: src/transport/gnunet-service-transport_plugins.c:308 7342#: src/transport/gnunet-service-transport_plugins.c:310
7522#, fuzzy, c-format 7343#, fuzzy, c-format
7523msgid "Did not load plugin `%s' due to missing functions\n" 7344msgid "Did not load plugin `%s' due to missing functions\n"
7524msgstr "Lỗi nạp phần bổ sung « %s » tại %s:%d. Đang hủy nạp phần bổ sung.\n" 7345msgstr "Lỗi nạp phần bổ sung « %s » tại %s:%d. Đang hủy nạp phần bổ sung.\n"
7525 7346
7526#: src/transport/gnunet-service-transport_validation.c:386 7347#: src/transport/gnunet-service-transport_validation.c:388
7527msgid "# Addresses in validation map" 7348msgid "# Addresses in validation map"
7528msgstr "" 7349msgstr ""
7529 7350
7530#: src/transport/gnunet-service-transport_validation.c:489 7351#: src/transport/gnunet-service-transport_validation.c:491
7531#: src/transport/gnunet-service-transport_validation.c:675 7352#: src/transport/gnunet-service-transport_validation.c:677
7532#: src/transport/gnunet-service-transport_validation.c:995 7353#: src/transport/gnunet-service-transport_validation.c:997
7533#: src/transport/gnunet-service-transport_validation.c:1607 7354#: src/transport/gnunet-service-transport_validation.c:1609
7534#, fuzzy 7355#, fuzzy
7535msgid "# validations running" 7356msgid "# validations running"
7536msgstr "kho dữ liệu sqlite" 7357msgstr "kho dữ liệu sqlite"
7537 7358
7538#: src/transport/gnunet-service-transport_validation.c:530 7359#: src/transport/gnunet-service-transport_validation.c:532
7539#, fuzzy 7360#, fuzzy
7540msgid "# address records discarded (timeout)" 7361msgid "# address records discarded (timeout)"
7541msgstr "# các byte loại đi bởi TCP (đi ra)" 7362msgstr "# các byte loại đi bởi TCP (đi ra)"
7542 7363
7543#: src/transport/gnunet-service-transport_validation.c:578 7364#: src/transport/gnunet-service-transport_validation.c:580
7544msgid "# address records discarded (blacklist)" 7365msgid "# address records discarded (blacklist)"
7545msgstr "" 7366msgstr ""
7546 7367
7547#: src/transport/gnunet-service-transport_validation.c:666 7368#: src/transport/gnunet-service-transport_validation.c:668
7548msgid "# PINGs for address validation sent" 7369msgid "# PINGs for address validation sent"
7549msgstr "" 7370msgstr ""
7550 7371
7551#: src/transport/gnunet-service-transport_validation.c:746 7372#: src/transport/gnunet-service-transport_validation.c:748
7552msgid "# validations delayed by global throttle" 7373msgid "# validations delayed by global throttle"
7553msgstr "" 7374msgstr ""
7554 7375
7555#: src/transport/gnunet-service-transport_validation.c:783 7376#: src/transport/gnunet-service-transport_validation.c:785
7556msgid "# address revalidations started" 7377msgid "# address revalidations started"
7557msgstr "" 7378msgstr ""
7558 7379
7559#: src/transport/gnunet-service-transport_validation.c:1121 7380#: src/transport/gnunet-service-transport_validation.c:1123
7560#, fuzzy 7381#, fuzzy
7561msgid "# PING message for different peer received" 7382msgid "# PING message for different peer received"
7562msgstr "# các thông báo PING được tạo" 7383msgstr "# các thông báo PING được tạo"
7563 7384
7564#: src/transport/gnunet-service-transport_validation.c:1172 7385#: src/transport/gnunet-service-transport_validation.c:1174
7565#, c-format 7386#, c-format
7566msgid "Plugin `%s' not available, cannot confirm having this address\n" 7387msgid "Plugin `%s' not available, cannot confirm having this address\n"
7567msgstr "" 7388msgstr ""
7568 7389
7569#: src/transport/gnunet-service-transport_validation.c:1185 7390#: src/transport/gnunet-service-transport_validation.c:1187
7570msgid "# failed address checks during validation" 7391msgid "# failed address checks during validation"
7571msgstr "" 7392msgstr ""
7572 7393
7573#: src/transport/gnunet-service-transport_validation.c:1188 7394#: src/transport/gnunet-service-transport_validation.c:1190
7574#, c-format 7395#, c-format
7575msgid "Address `%s' is not one of my addresses, not confirming PING\n" 7396msgid "Address `%s' is not one of my addresses, not confirming PING\n"
7576msgstr "" 7397msgstr ""
7577 7398
7578#: src/transport/gnunet-service-transport_validation.c:1196 7399#: src/transport/gnunet-service-transport_validation.c:1198
7579msgid "# successful address checks during validation" 7400msgid "# successful address checks during validation"
7580msgstr "" 7401msgstr ""
7581 7402
7582#: src/transport/gnunet-service-transport_validation.c:1209 7403#: src/transport/gnunet-service-transport_validation.c:1211
7583#, c-format 7404#, c-format
7584msgid "" 7405msgid ""
7585"Not confirming PING from peer `%s' with address `%s' since I cannot confirm " 7406"Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
7586"having this address.\n" 7407"having this address.\n"
7587msgstr "" 7408msgstr ""
7588 7409
7589#: src/transport/gnunet-service-transport_validation.c:1264 7410#: src/transport/gnunet-service-transport_validation.c:1266
7590#, fuzzy, c-format 7411#, fuzzy, c-format
7591msgid "Failed to create PONG signature for peer `%s'\n" 7412msgid "Failed to create PONG signature for peer `%s'\n"
7592msgstr "Không thể tạo miền tên.\n" 7413msgstr "Không thể tạo miền tên.\n"
7593 7414
7594#: src/transport/gnunet-service-transport_validation.c:1315 7415#: src/transport/gnunet-service-transport_validation.c:1317
7595msgid "# PONGs unicast via reliable transport" 7416msgid "# PONGs unicast via reliable transport"
7596msgstr "" 7417msgstr ""
7597 7418
7598#: src/transport/gnunet-service-transport_validation.c:1324 7419#: src/transport/gnunet-service-transport_validation.c:1326
7599msgid "# PONGs multicast to all available addresses" 7420msgid "# PONGs multicast to all available addresses"
7600msgstr "" 7421msgstr ""
7601 7422
7602#: src/transport/gnunet-service-transport_validation.c:1497 7423#: src/transport/gnunet-service-transport_validation.c:1499
7603msgid "# PONGs dropped, no matching pending validation" 7424msgid "# PONGs dropped, no matching pending validation"
7604msgstr "" 7425msgstr ""
7605 7426
7606#: src/transport/gnunet-service-transport_validation.c:1515 7427#: src/transport/gnunet-service-transport_validation.c:1517
7607msgid "# PONGs dropped, signature expired" 7428msgid "# PONGs dropped, signature expired"
7608msgstr "" 7429msgstr ""
7609 7430
7610#: src/transport/gnunet-service-transport_validation.c:1570 7431#: src/transport/gnunet-service-transport_validation.c:1572
7611msgid "# validations succeeded" 7432msgid "# validations succeeded"
7612msgstr "" 7433msgstr ""
7613 7434
7614#: src/transport/gnunet-service-transport_validation.c:1625 7435#: src/transport/gnunet-service-transport_validation.c:1627
7615#, fuzzy 7436#, fuzzy
7616msgid "# HELLOs given to peerinfo" 7437msgid "# HELLOs given to peerinfo"
7617msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n" 7438msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n"
7618 7439
7619#: src/transport/gnunet-transport.c:411 7440#: src/transport/gnunet-transport.c:413
7620#, fuzzy, c-format 7441#, fuzzy, c-format
7621msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" 7442msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
7622msgstr "Đang thử tải danh sách các máy xuống « %s »\n" 7443msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
7623 7444
7624#: src/transport/gnunet-transport.c:421 7445#: src/transport/gnunet-transport.c:423
7625#, fuzzy, c-format 7446#, fuzzy, c-format
7626msgid "Received %llu bytes/s (%llu bytes in %s)\n" 7447msgid "Received %llu bytes/s (%llu bytes in %s)\n"
7627msgstr "Nhận yêu cầu định tuyến\n" 7448msgstr "Nhận yêu cầu định tuyến\n"
7628 7449
7629#: src/transport/gnunet-transport.c:465 7450#: src/transport/gnunet-transport.c:467
7630#, fuzzy, c-format 7451#, fuzzy, c-format
7631msgid "Failed to connect to `%s'\n" 7452msgid "Failed to connect to `%s'\n"
7632msgstr "Lỗi kết nối đến gnunetd.\n" 7453msgstr "Lỗi kết nối đến gnunetd.\n"
7633 7454
7634#: src/transport/gnunet-transport.c:478 7455#: src/transport/gnunet-transport.c:480
7635#, fuzzy, c-format 7456#, fuzzy, c-format
7636msgid "Failed to resolve address for peer `%s'\n" 7457msgid "Failed to resolve address for peer `%s'\n"
7637msgstr "Lỗi đóng kết đến cổng %s %d.\n" 7458msgstr "Lỗi đóng kết đến cổng %s %d.\n"
7638 7459
7639#: src/transport/gnunet-transport.c:492 7460#: src/transport/gnunet-transport.c:494
7640#, fuzzy 7461#, fuzzy
7641msgid "Failed to list connections, timeout occurred\n" 7462msgid "Failed to list connections, timeout occurred\n"
7642msgstr "Không kết nối được đến trình nền gnunetd." 7463msgstr "Không kết nối được đến trình nền gnunetd."
7643 7464
7644#: src/transport/gnunet-transport.c:525 7465#: src/transport/gnunet-transport.c:527
7645#, fuzzy, c-format 7466#, fuzzy, c-format
7646msgid "Transmitting %u bytes\n" 7467msgid "Transmitting %u bytes\n"
7647msgstr "Đang thử tải danh sách các máy xuống « %s »\n" 7468msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
7648 7469
7649#: src/transport/gnunet-transport.c:559 7470#: src/transport/gnunet-transport.c:561
7650#, c-format 7471#, c-format
7651msgid "" 7472msgid ""
7652"Successfully connected to `%s', starting to send benchmark data in %u Kb " 7473"Successfully connected to `%s', starting to send benchmark data in %u Kb "
7653"blocks\n" 7474"blocks\n"
7654msgstr "" 7475msgstr ""
7655 7476
7656#: src/transport/gnunet-transport.c:590 7477#: src/transport/gnunet-transport.c:592
7657#, fuzzy, c-format 7478#, fuzzy, c-format
7658msgid "Disconnected from peer `%s' while benchmarking\n" 7479msgid "Disconnected from peer `%s' while benchmarking\n"
7659msgstr "« %.*s » được kết nối tới « %.*s ».\n" 7480msgstr "« %.*s » được kết nối tới « %.*s ».\n"
7660 7481
7661#: src/transport/gnunet-transport.c:614 src/transport/gnunet-transport.c:643 7482#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
7662#, c-format 7483#, c-format
7663msgid "%24s: %-17s %4s (%u connections in total)\n" 7484msgid "%24s: %-17s %4s (%u connections in total)\n"
7664msgstr "" 7485msgstr ""
7665 7486
7666#: src/transport/gnunet-transport.c:616 7487#: src/transport/gnunet-transport.c:618
7667#, fuzzy 7488#, fuzzy
7668msgid "Connected to" 7489msgid "Connected to"
7669msgstr "« %s » được kết nối tới « %s ».\n" 7490msgstr "« %s » được kết nối tới « %s ».\n"
7670 7491
7671#: src/transport/gnunet-transport.c:645 7492#: src/transport/gnunet-transport.c:647
7672#, fuzzy 7493#, fuzzy
7673msgid "Disconnected from" 7494msgid "Disconnected from"
7674msgstr "« %.*s » được kết nối tới « %.*s ».\n" 7495msgstr "« %.*s » được kết nối tới « %.*s ».\n"
7675 7496
7676#: src/transport/gnunet-transport.c:680 7497#: src/transport/gnunet-transport.c:682
7677#, fuzzy, c-format 7498#, fuzzy, c-format
7678msgid "Received %u bytes\n" 7499msgid "Received %u bytes\n"
7679msgstr "Nhận yêu cầu định tuyến\n" 7500msgstr "Nhận yêu cầu định tuyến\n"
7680 7501
7681#: src/transport/gnunet-transport.c:717 7502#: src/transport/gnunet-transport.c:719
7682#, c-format 7503#, c-format
7683msgid "Peer `%s': %s %s in state `%s' until %s\n" 7504msgid "Peer `%s': %s %s in state `%s' until %s\n"
7684msgstr "" 7505msgstr ""
7685 7506
7686#: src/transport/gnunet-transport.c:729 7507#: src/transport/gnunet-transport.c:731
7687#, fuzzy, c-format 7508#, fuzzy, c-format
7688msgid "Peer `%s': %s %s\n" 7509msgid "Peer `%s': %s %s\n"
7689msgstr "Tôi là đồng đẳng « %s ».\n" 7510msgstr "Tôi là đồng đẳng « %s ».\n"
7690 7511
7691#: src/transport/gnunet-transport.c:1142 7512#: src/transport/gnunet-transport.c:1144
7692#, fuzzy 7513#, fuzzy
7693msgid "Monitor disconnected from transport service. Reconnecting.\n" 7514msgid "Monitor disconnected from transport service. Reconnecting.\n"
7694msgstr "Lỗi kết nối đến gnunetd.\n" 7515msgstr "Lỗi kết nối đến gnunetd.\n"
7695 7516
7696#: src/transport/gnunet-transport.c:1249 7517#: src/transport/gnunet-transport.c:1251
7697#, c-format 7518#, c-format
7698msgid "" 7519msgid ""
7699"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, " 7520"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
7700"%s, %s %s\n" 7521"%s, %s %s\n"
7701msgstr "" 7522msgstr ""
7702 7523
7703#: src/transport/gnunet-transport.c:1262 7524#: src/transport/gnunet-transport.c:1264
7704#, c-format 7525#, c-format
7705msgid "" 7526msgid ""
7706"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n" 7527"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
7707msgstr "" 7528msgstr ""
7708 7529
7709#: src/transport/gnunet-transport.c:1292 7530#: src/transport/gnunet-transport.c:1294
7710#, fuzzy 7531#, fuzzy
7711msgid "Failed to connect to transport service for disconnection\n" 7532msgid "Failed to connect to transport service for disconnection\n"
7712msgstr "Lỗi kết nối đến gnunetd.\n" 7533msgstr "Lỗi kết nối đến gnunetd.\n"
7713 7534
7714#: src/transport/gnunet-transport.c:1298 7535#: src/transport/gnunet-transport.c:1300
7715msgid "Blacklisting request in place, stop with CTRL-C\n" 7536msgid "Blacklisting request in place, stop with CTRL-C\n"
7716msgstr "" 7537msgstr ""
7717 7538
7718#: src/transport/gnunet-transport.c:1323 src/transport/gnunet-transport.c:1353 7539#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
7719#: src/transport/gnunet-transport.c:1406 7540#: src/transport/gnunet-transport.c:1408
7720#, fuzzy 7541#, fuzzy
7721msgid "Failed to connect to transport service\n" 7542msgid "Failed to connect to transport service\n"
7722msgstr "Lỗi kết nối đến gnunetd.\n" 7543msgstr "Lỗi kết nối đến gnunetd.\n"
7723 7544
7724#: src/transport/gnunet-transport.c:1360 7545#: src/transport/gnunet-transport.c:1362
7725msgid "Starting to receive benchmark data\n" 7546msgid "Starting to receive benchmark data\n"
7726msgstr "" 7547msgstr ""
7727 7548
7728#: src/transport/gnunet-transport.c:1431 7549#: src/transport/gnunet-transport.c:1433
7729#, fuzzy 7550#, fuzzy
7730msgid "print information for all peers (instead of only connected peers)" 7551msgid "print information for all peers (instead of only connected peers)"
7731msgstr "In ra thông tin về các đồng đẳng GNUnet." 7552msgstr "In ra thông tin về các đồng đẳng GNUnet."
7732 7553
7733#: src/transport/gnunet-transport.c:1435 7554#: src/transport/gnunet-transport.c:1437
7734msgid "measure how fast we are receiving data from all peers (until CTRL-C)" 7555msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
7735msgstr "" 7556msgstr ""
7736 7557
7737#: src/transport/gnunet-transport.c:1439 7558#: src/transport/gnunet-transport.c:1441
7738#, fuzzy 7559#, fuzzy
7739msgid "disconnect from a peer" 7560msgid "disconnect from a peer"
7740msgstr "Lỗi kết nối đến gnunetd.\n" 7561msgstr "Lỗi kết nối đến gnunetd.\n"
7741 7562
7742#: src/transport/gnunet-transport.c:1443 7563#: src/transport/gnunet-transport.c:1445
7743#, fuzzy 7564#, fuzzy
7744msgid "provide information about all current connections (once)" 7565msgid "provide information about all current connections (once)"
7745msgstr "In ra thông tin về các đồng đẳng GNUnet." 7566msgstr "In ra thông tin về các đồng đẳng GNUnet."
7746 7567
7747#: src/transport/gnunet-transport.c:1451 7568#: src/transport/gnunet-transport.c:1453
7748#, fuzzy 7569#, fuzzy
7749msgid "" 7570msgid ""
7750"provide information about all connects and disconnect events (continuously)" 7571"provide information about all connects and disconnect events (continuously)"
7751msgstr "In ra thông tin về các đồng đẳng GNUnet." 7572msgstr "In ra thông tin về các đồng đẳng GNUnet."
7752 7573
7753#: src/transport/gnunet-transport.c:1455 7574#: src/transport/gnunet-transport.c:1457
7754#, fuzzy 7575#, fuzzy
7755msgid "do not resolve hostnames" 7576msgid "do not resolve hostnames"
7756msgstr "không quyết định các tên máy" 7577msgstr "không quyết định các tên máy"
7757 7578
7758#: src/transport/gnunet-transport.c:1460 7579#: src/transport/gnunet-transport.c:1462
7759#: src/transport/gnunet-transport-profiler.c:639 7580#: src/transport/gnunet-transport-profiler.c:641
7760msgid "peer identity" 7581msgid "peer identity"
7761msgstr "" 7582msgstr ""
7762 7583
7763#: src/transport/gnunet-transport.c:1464 7584#: src/transport/gnunet-transport.c:1466
7764msgid "monitor plugin sessions" 7585msgid "monitor plugin sessions"
7765msgstr "" 7586msgstr ""
7766 7587
7767#: src/transport/gnunet-transport.c:1469 7588#: src/transport/gnunet-transport.c:1471
7768msgid "send data for benchmarking to the other peer (until CTRL-C)" 7589msgid "send data for benchmarking to the other peer (until CTRL-C)"
7769msgstr "" 7590msgstr ""
7770 7591
7771#: src/transport/gnunet-transport.c:1480 7592#: src/transport/gnunet-transport.c:1482
7772#: src/transport/gnunet-transport-profiler.c:650 7593#: src/transport/gnunet-transport-profiler.c:652
7773#, fuzzy 7594#, fuzzy
7774msgid "Direct access to transport service." 7595msgid "Direct access to transport service."
7775msgstr "Lỗi kết nối đến gnunetd.\n" 7596msgstr "Lỗi kết nối đến gnunetd.\n"
7776 7597
7777#: src/transport/gnunet-transport-profiler.c:217 7598#: src/transport/gnunet-transport-profiler.c:219
7778#, c-format 7599#, c-format
7779msgid "%llu B in %llu ms == %.2f KB/s!\n" 7600msgid "%llu B in %llu ms == %.2f KB/s!\n"
7780msgstr "" 7601msgstr ""
7781 7602
7782#: src/transport/gnunet-transport-profiler.c:615 7603#: src/transport/gnunet-transport-profiler.c:617
7783msgid "send data to peer" 7604msgid "send data to peer"
7784msgstr "" 7605msgstr ""
7785 7606
7786#: src/transport/gnunet-transport-profiler.c:619 7607#: src/transport/gnunet-transport-profiler.c:621
7787#, fuzzy 7608#, fuzzy
7788msgid "receive data from peer" 7609msgid "receive data from peer"
7789msgstr "Yêu cầu cấp %d từ đồng đẳng %d\n" 7610msgstr "Yêu cầu cấp %d từ đồng đẳng %d\n"
7790 7611
7791#: src/transport/gnunet-transport-profiler.c:624 7612#: src/transport/gnunet-transport-profiler.c:626
7792#, fuzzy 7613#, fuzzy
7793msgid "iterations" 7614msgid "iterations"
7794msgstr "Tùy chọn chung" 7615msgstr "Tùy chọn chung"
7795 7616
7796#: src/transport/gnunet-transport-profiler.c:629 7617#: src/transport/gnunet-transport-profiler.c:631
7797#, fuzzy 7618#, fuzzy
7798msgid "number of messages to send" 7619msgid "number of messages to send"
7799msgstr "số tin nhắn cần dùng mỗi lần lặp" 7620msgstr "số tin nhắn cần dùng mỗi lần lặp"
7800 7621
7801#: src/transport/gnunet-transport-profiler.c:634 7622#: src/transport/gnunet-transport-profiler.c:636
7802#, fuzzy 7623#, fuzzy
7803msgid "message size to use" 7624msgid "message size to use"
7804msgstr "kích cỡ tin nhắn" 7625msgstr "kích cỡ tin nhắn"
7805 7626
7806#: src/transport/plugin_transport_http_client.c:1472 7627#: src/transport/plugin_transport_http_client.c:1474
7807#: src/transport/plugin_transport_http_server.c:2310 7628#: src/transport/plugin_transport_http_server.c:2312
7808#: src/transport/plugin_transport_http_server.c:3524 7629#: src/transport/plugin_transport_http_server.c:3530
7809#: src/transport/plugin_transport_tcp.c:3889 7630#: src/transport/plugin_transport_tcp.c:3895
7810#: src/transport/plugin_transport_tcp.c:3896 7631#: src/transport/plugin_transport_tcp.c:3902
7811#: src/transport/plugin_transport_xt.c:3897 7632#: src/transport/plugin_transport_xt.c:3899
7812#: src/transport/plugin_transport_xt.c:3904 7633#: src/transport/plugin_transport_xt.c:3906
7813msgid "TCP_STEALTH not supported on this platform.\n" 7634msgid "TCP_STEALTH not supported on this platform.\n"
7814msgstr "" 7635msgstr ""
7815 7636
7816#: src/transport/plugin_transport_http_client.c:2113 7637#: src/transport/plugin_transport_http_client.c:2115
7817#, c-format 7638#, c-format
7818msgid "Could not initialize curl multi handle, failed to start %s plugin!\n" 7639msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
7819msgstr "" 7640msgstr ""
7820 7641
7821#: src/transport/plugin_transport_http_client.c:2162 7642#: src/transport/plugin_transport_http_client.c:2164
7822#: src/transport/plugin_transport_http_server.c:3239 7643#: src/transport/plugin_transport_http_server.c:3245
7823#, fuzzy, c-format 7644#, fuzzy, c-format
7824msgid "Shutting down plugin `%s'\n" 7645msgid "Shutting down plugin `%s'\n"
7825msgstr "Đang nạp các truyền tải « %s »\n" 7646msgstr "Đang nạp các truyền tải « %s »\n"
7826 7647
7827#: src/transport/plugin_transport_http_client.c:2179 7648#: src/transport/plugin_transport_http_client.c:2181
7828#: src/transport/plugin_transport_http_server.c:3309 7649#: src/transport/plugin_transport_http_server.c:3315
7829#, fuzzy, c-format 7650#, fuzzy, c-format
7830msgid "Shutdown for plugin `%s' complete\n" 7651msgid "Shutdown for plugin `%s' complete\n"
7831msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n" 7652msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n"
7832 7653
7833#: src/transport/plugin_transport_http_client.c:2213 7654#: src/transport/plugin_transport_http_client.c:2215
7834#, fuzzy, c-format 7655#, fuzzy, c-format
7835msgid "Maximum number of requests is %u\n" 7656msgid "Maximum number of requests is %u\n"
7836msgstr "tăng sổ tối đa các kết nối TCP/IP" 7657msgstr "tăng sổ tối đa các kết nối TCP/IP"
7837 7658
7838#: src/transport/plugin_transport_http_server.c:1754 7659#: src/transport/plugin_transport_http_server.c:1756
7839#, c-format 7660#, c-format
7840msgid "" 7661msgid ""
7841"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data " 7662"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data "
7842"size %u\n" 7663"size %u\n"
7843msgstr "" 7664msgstr ""
7844 7665
7845#: src/transport/plugin_transport_http_server.c:2026 7666#: src/transport/plugin_transport_http_server.c:2028
7846#, c-format 7667#, c-format
7847msgid "Accepting connection (%u of %u) from `%s'\n" 7668msgid "Accepting connection (%u of %u) from `%s'\n"
7848msgstr "" 7669msgstr ""
7849 7670
7850#: src/transport/plugin_transport_http_server.c:2034 7671#: src/transport/plugin_transport_http_server.c:2036
7851#, c-format 7672#, c-format
7852msgid "" 7673msgid ""
7853"Server reached maximum number connections (%u), rejecting new connection\n" 7674"Server reached maximum number connections (%u), rejecting new connection\n"
7854msgstr "" 7675msgstr ""
7855 7676
7856#: src/transport/plugin_transport_http_server.c:2184 7677#: src/transport/plugin_transport_http_server.c:2186
7857msgid "" 7678msgid ""
7858"Could not create a new TLS certificate, program `gnunet-transport-" 7679"Could not create a new TLS certificate, program `gnunet-transport-"
7859"certificate-creation' could not be started!\n" 7680"certificate-creation' could not be started!\n"
7860msgstr "" 7681msgstr ""
7861 7682
7862#: src/transport/plugin_transport_http_server.c:2207 7683#: src/transport/plugin_transport_http_server.c:2209
7863#, c-format 7684#, c-format
7864msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n" 7685msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n"
7865msgstr "" 7686msgstr ""
7866 7687
7867#: src/transport/plugin_transport_http_server.c:2336 7688#: src/transport/plugin_transport_http_server.c:2338
7868msgid "Could not load or create server certificate! Loading plugin failed!\n" 7689msgid "Could not load or create server certificate! Loading plugin failed!\n"
7869msgstr "" 7690msgstr ""
7870 7691
7871#: src/transport/plugin_transport_http_server.c:2648 7692#: src/transport/plugin_transport_http_server.c:2654
7872#, fuzzy 7693#, fuzzy
7873msgid "Require valid port number for service in configuration!\n" 7694msgid "Require valid port number for service in configuration!\n"
7874msgstr "Lỗi lưu cấu hình." 7695msgstr "Lỗi lưu cấu hình."
7875 7696
7876#: src/transport/plugin_transport_http_server.c:2813 7697#: src/transport/plugin_transport_http_server.c:2819
7877#, c-format 7698#, c-format
7878msgid "Found %u addresses to report to NAT service\n" 7699msgid "Found %u addresses to report to NAT service\n"
7879msgstr "" 7700msgstr ""
7880 7701
7881#: src/transport/plugin_transport_http_server.c:2899 7702#: src/transport/plugin_transport_http_server.c:2905
7882#: src/transport/plugin_transport_udp.c:3621 7703#: src/transport/plugin_transport_udp.c:3627
7883#: src/transport/plugin_transport_xu.c:2047 7704#: src/transport/plugin_transport_xu.c:2049
7884msgid "Disabling IPv6 since it is not supported on this system!\n" 7705msgid "Disabling IPv6 since it is not supported on this system!\n"
7885msgstr "" 7706msgstr ""
7886 7707
7887#: src/transport/plugin_transport_http_server.c:3005 7708#: src/transport/plugin_transport_http_server.c:3011
7888#, c-format 7709#, c-format
7889msgid "IPv4 support is %s\n" 7710msgid "IPv4 support is %s\n"
7890msgstr "" 7711msgstr ""
7891 7712
7892#: src/transport/plugin_transport_http_server.c:3020 7713#: src/transport/plugin_transport_http_server.c:3026
7893#, c-format 7714#, c-format
7894msgid "IPv6 support is %s\n" 7715msgid "IPv6 support is %s\n"
7895msgstr "" 7716msgstr ""
7896 7717
7897#: src/transport/plugin_transport_http_server.c:3026 7718#: src/transport/plugin_transport_http_server.c:3032
7898msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n" 7719msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n"
7899msgstr "" 7720msgstr ""
7900 7721
7901#: src/transport/plugin_transport_http_server.c:3037 7722#: src/transport/plugin_transport_http_server.c:3043
7902#, fuzzy 7723#, fuzzy
7903msgid "Port is required! Fix in configuration\n" 7724msgid "Port is required! Fix in configuration\n"
7904msgstr "" 7725msgstr ""
7905"\n" 7726"\n"
7906"Kết thúc cấu hình.\n" 7727"Kết thúc cấu hình.\n"
7907 7728
7908#: src/transport/plugin_transport_http_server.c:3043 7729#: src/transport/plugin_transport_http_server.c:3049
7909#, fuzzy, c-format 7730#, fuzzy, c-format
7910msgid "Using port %u\n" 7731msgid "Using port %u\n"
7911msgstr "Đang thử nghiệm (các) truyền tải %s\n" 7732msgstr "Đang thử nghiệm (các) truyền tải %s\n"
7912 7733
7913#: src/transport/plugin_transport_http_server.c:3062 7734#: src/transport/plugin_transport_http_server.c:3068
7914#, fuzzy, c-format 7735#, fuzzy, c-format
7915msgid "Specific IPv4 address `%s' in configuration file is invalid!\n" 7736msgid "Specific IPv4 address `%s' in configuration file is invalid!\n"
7916msgstr "Đang thử dùng tập tin « %s » cho cấu hình MySQL.\n" 7737msgstr "Đang thử dùng tập tin « %s » cho cấu hình MySQL.\n"
7917 7738
7918#: src/transport/plugin_transport_http_server.c:3097 7739#: src/transport/plugin_transport_http_server.c:3103
7919#, fuzzy, c-format 7740#, fuzzy, c-format
7920msgid "Specific IPv6 address `%s' in configuration file is invalid!\n" 7741msgid "Specific IPv6 address `%s' in configuration file is invalid!\n"
7921msgstr "Đang thử dùng tập tin « %s » cho cấu hình MySQL.\n" 7742msgstr "Đang thử dùng tập tin « %s » cho cấu hình MySQL.\n"
7922 7743
7923#: src/transport/plugin_transport_http_server.c:3172 7744#: src/transport/plugin_transport_http_server.c:3178
7924#, fuzzy, c-format 7745#, fuzzy, c-format
7925msgid "Using external hostname `%s'\n" 7746msgid "Using external hostname `%s'\n"
7926msgstr "Đang bắt đầu tài về « %s »\n" 7747msgstr "Đang bắt đầu tài về « %s »\n"
7927 7748
7928#: src/transport/plugin_transport_http_server.c:3193 7749#: src/transport/plugin_transport_http_server.c:3199
7929#, fuzzy, c-format 7750#, fuzzy, c-format
7930msgid "Notifying transport only about hostname `%s'\n" 7751msgid "Notifying transport only about hostname `%s'\n"
7931msgstr "không quyết định các tên máy" 7752msgstr "không quyết định các tên máy"
7932 7753
7933#: src/transport/plugin_transport_http_server.c:3210 7754#: src/transport/plugin_transport_http_server.c:3216
7934#, fuzzy, c-format 7755#, fuzzy, c-format
7935msgid "Maximum number of connections is %u\n" 7756msgid "Maximum number of connections is %u\n"
7936msgstr "tăng sổ tối đa các kết nối TCP/IP" 7757msgstr "tăng sổ tối đa các kết nối TCP/IP"
7937 7758
7938#: src/transport/plugin_transport_http_server.c:3536 7759#: src/transport/plugin_transport_http_server.c:3542
7939#, fuzzy 7760#, fuzzy
7940msgid "Unable to compile URL regex\n" 7761msgid "Unable to compile URL regex\n"
7941msgstr "Không thể sơ khởi SQLite: %s.\n" 7762msgstr "Không thể sơ khởi SQLite: %s.\n"
7942 7763
7943#: src/transport/plugin_transport_smtp.c:221 7764#: src/transport/plugin_transport_smtp.c:223
7944#, c-format 7765#, c-format
7945msgid "Received malformed message via %s. Ignored.\n" 7766msgid "Received malformed message via %s. Ignored.\n"
7946msgstr "Nhận được thông báo dạng sai qua %s. Bị bỏ qua.\n" 7767msgstr "Nhận được thông báo dạng sai qua %s. Bị bỏ qua.\n"
7947 7768
7948#: src/transport/plugin_transport_smtp.c:308 7769#: src/transport/plugin_transport_smtp.c:310
7949msgid "SMTP filter string to invalid, lacks ': '\n" 7770msgid "SMTP filter string to invalid, lacks ': '\n"
7950msgstr "Chuỗi lọc vào SMTP không hợp lệ, còn thiếu « : »\n" 7771msgstr "Chuỗi lọc vào SMTP không hợp lệ, còn thiếu « : »\n"
7951 7772
7952#: src/transport/plugin_transport_smtp.c:317 7773#: src/transport/plugin_transport_smtp.c:319
7953#, c-format 7774#, c-format
7954msgid "SMTP filter string to long, capped to `%s'\n" 7775msgid "SMTP filter string to long, capped to `%s'\n"
7955msgstr "Chuỗi lọc vào SMTP quá dài, tối đa « %s »\n" 7776msgstr "Chuỗi lọc vào SMTP quá dài, tối đa « %s »\n"
7956 7777
7957#: src/transport/plugin_transport_smtp.c:412 7778#: src/transport/plugin_transport_smtp.c:414
7958#: src/transport/plugin_transport_smtp.c:422 7779#: src/transport/plugin_transport_smtp.c:424
7959#: src/transport/plugin_transport_smtp.c:435 7780#: src/transport/plugin_transport_smtp.c:437
7960#: src/transport/plugin_transport_smtp.c:454 7781#: src/transport/plugin_transport_smtp.c:456
7961#: src/transport/plugin_transport_smtp.c:477 7782#: src/transport/plugin_transport_smtp.c:479
7962#: src/transport/plugin_transport_smtp.c:485 7783#: src/transport/plugin_transport_smtp.c:487
7963#: src/transport/plugin_transport_smtp.c:498 7784#: src/transport/plugin_transport_smtp.c:500
7964#: src/transport/plugin_transport_smtp.c:509 7785#: src/transport/plugin_transport_smtp.c:511
7965#, c-format 7786#, c-format
7966msgid "SMTP: `%s' failed: %s.\n" 7787msgid "SMTP: `%s' failed: %s.\n"
7967msgstr "SMTP: « %s » bị lỗi: %s\n" 7788msgstr "SMTP: « %s » bị lỗi: %s\n"
7968 7789
7969#: src/transport/plugin_transport_smtp.c:650 7790#: src/transport/plugin_transport_smtp.c:652
7970msgid "No email-address specified, can not start SMTP transport.\n" 7791msgid "No email-address specified, can not start SMTP transport.\n"
7971msgstr "Chưa ghi rõ địa chỉ thư điện tử nên không tạo được truyền tải SMTP.\n" 7792msgstr "Chưa ghi rõ địa chỉ thư điện tử nên không tạo được truyền tải SMTP.\n"
7972 7793
7973#: src/transport/plugin_transport_smtp.c:662 7794#: src/transport/plugin_transport_smtp.c:664
7974msgid "# bytes received via SMTP" 7795msgid "# bytes received via SMTP"
7975msgstr "# các byte đã nhận qua SMTP" 7796msgstr "# các byte đã nhận qua SMTP"
7976 7797
7977#: src/transport/plugin_transport_smtp.c:663 7798#: src/transport/plugin_transport_smtp.c:665
7978msgid "# bytes sent via SMTP" 7799msgid "# bytes sent via SMTP"
7979msgstr "# các byte đã gửi qua SMTP" 7800msgstr "# các byte đã gửi qua SMTP"
7980 7801
7981#: src/transport/plugin_transport_smtp.c:665 7802#: src/transport/plugin_transport_smtp.c:667
7982msgid "# bytes dropped by SMTP (outgoing)" 7803msgid "# bytes dropped by SMTP (outgoing)"
7983msgstr "# các byte loại đi bởi SMTP (đi ra)" 7804msgstr "# các byte loại đi bởi SMTP (đi ra)"
7984 7805
7985#: src/transport/plugin_transport_tcp.c:1545 7806#: src/transport/plugin_transport_tcp.c:1551
7986#: src/transport/plugin_transport_tcp.c:2871 7807#: src/transport/plugin_transport_tcp.c:2877
7987#: src/transport/plugin_transport_xt.c:1551 7808#: src/transport/plugin_transport_xt.c:1553
7988#: src/transport/plugin_transport_xt.c:2877 7809#: src/transport/plugin_transport_xt.c:2879
7989#, fuzzy, c-format 7810#, fuzzy, c-format
7990msgid "Unexpected address length: %u bytes\n" 7811msgid "Unexpected address length: %u bytes\n"
7991msgstr "Gặp sự kiện bất thường: %d\n" 7812msgstr "Gặp sự kiện bất thường: %d\n"
7992 7813
7993#: src/transport/plugin_transport_tcp.c:1728 7814#: src/transport/plugin_transport_tcp.c:1734
7994#: src/transport/plugin_transport_tcp.c:1952 7815#: src/transport/plugin_transport_tcp.c:1958
7995#: src/transport/plugin_transport_tcp.c:3135 7816#: src/transport/plugin_transport_tcp.c:3141
7996#: src/transport/plugin_transport_tcp.c:4012 7817#: src/transport/plugin_transport_tcp.c:4018
7997#: src/transport/plugin_transport_xt.c:1734 7818#: src/transport/plugin_transport_xt.c:1736
7998#: src/transport/plugin_transport_xt.c:1958 7819#: src/transport/plugin_transport_xt.c:1960
7999#: src/transport/plugin_transport_xt.c:3141 7820#: src/transport/plugin_transport_xt.c:3143
8000#, fuzzy 7821#, fuzzy
8001msgid "# TCP sessions active" 7822msgid "# TCP sessions active"
8002msgstr "# các khoá phiên chạy được chấp nhận" 7823msgstr "# các khoá phiên chạy được chấp nhận"
8003 7824
8004#: src/transport/plugin_transport_tcp.c:1770 7825#: src/transport/plugin_transport_tcp.c:1776
8005#: src/transport/plugin_transport_tcp.c:1934 7826#: src/transport/plugin_transport_tcp.c:1940
8006#: src/transport/plugin_transport_tcp.c:2058 7827#: src/transport/plugin_transport_tcp.c:2064
8007#: src/transport/plugin_transport_tcp.c:2131 7828#: src/transport/plugin_transport_tcp.c:2137
8008#: src/transport/plugin_transport_tcp.c:2231 7829#: src/transport/plugin_transport_tcp.c:2237
8009#: src/transport/plugin_transport_tcp.c:2256 7830#: src/transport/plugin_transport_tcp.c:2262
8010#: src/transport/plugin_transport_xt.c:1776 7831#: src/transport/plugin_transport_xt.c:1778
8011#: src/transport/plugin_transport_xt.c:1940 7832#: src/transport/plugin_transport_xt.c:1942
8012#: src/transport/plugin_transport_xt.c:2064 7833#: src/transport/plugin_transport_xt.c:2066
8013#: src/transport/plugin_transport_xt.c:2137 7834#: src/transport/plugin_transport_xt.c:2139
8014#: src/transport/plugin_transport_xt.c:2237 7835#: src/transport/plugin_transport_xt.c:2239
8015#: src/transport/plugin_transport_xt.c:2262 7836#: src/transport/plugin_transport_xt.c:2264
8016#, fuzzy 7837#, fuzzy
8017msgid "# bytes currently in TCP buffers" 7838msgid "# bytes currently in TCP buffers"
8018msgstr "# các byte đã gừi qua TCP" 7839msgstr "# các byte đã gừi qua TCP"
8019 7840
8020#: src/transport/plugin_transport_tcp.c:1773 7841#: src/transport/plugin_transport_tcp.c:1779
8021#: src/transport/plugin_transport_xt.c:1779 7842#: src/transport/plugin_transport_xt.c:1781
8022#, fuzzy 7843#, fuzzy
8023msgid "# bytes discarded by TCP (disconnect)" 7844msgid "# bytes discarded by TCP (disconnect)"
8024msgstr "# các byte loại đi bởi TCP (đi ra)" 7845msgstr "# các byte loại đi bởi TCP (đi ra)"
8025 7846
8026#: src/transport/plugin_transport_tcp.c:2061 7847#: src/transport/plugin_transport_tcp.c:2067
8027#: src/transport/plugin_transport_xt.c:2067 7848#: src/transport/plugin_transport_xt.c:2069
8028#, fuzzy 7849#, fuzzy
8029msgid "# bytes discarded by TCP (timeout)" 7850msgid "# bytes discarded by TCP (timeout)"
8030msgstr "# các byte loại đi bởi TCP (đi ra)" 7851msgstr "# các byte loại đi bởi TCP (đi ra)"
8031 7852
8032#: src/transport/plugin_transport_tcp.c:2135 7853#: src/transport/plugin_transport_tcp.c:2141
8033#: src/transport/plugin_transport_xt.c:2141 7854#: src/transport/plugin_transport_xt.c:2143
8034#, fuzzy 7855#, fuzzy
8035msgid "# bytes transmitted via TCP" 7856msgid "# bytes transmitted via TCP"
8036msgstr "# các byte được gửi" 7857msgstr "# các byte được gửi"
8037 7858
8038#: src/transport/plugin_transport_tcp.c:2533 7859#: src/transport/plugin_transport_tcp.c:2539
8039#: src/transport/plugin_transport_xt.c:2539 7860#: src/transport/plugin_transport_xt.c:2541
8040msgid "# requests to create session with invalid address" 7861msgid "# requests to create session with invalid address"
8041msgstr "" 7862msgstr ""
8042 7863
8043#: src/transport/plugin_transport_tcp.c:2709 7864#: src/transport/plugin_transport_tcp.c:2715
8044#: src/transport/plugin_transport_xt.c:2715 7865#: src/transport/plugin_transport_xt.c:2717
8045msgid "# transport-service disconnect requests for TCP" 7866msgid "# transport-service disconnect requests for TCP"
8046msgstr "" 7867msgstr ""
8047 7868
8048#: src/transport/plugin_transport_tcp.c:3201 7869#: src/transport/plugin_transport_tcp.c:3207
8049#: src/transport/plugin_transport_xt.c:3207 7870#: src/transport/plugin_transport_xt.c:3209
8050#, fuzzy 7871#, fuzzy
8051msgid "# TCP WELCOME messages received" 7872msgid "# TCP WELCOME messages received"
8052msgstr "# các thông báo PONG đã mật mã được nhận" 7873msgstr "# các thông báo PONG đã mật mã được nhận"
8053 7874
8054#: src/transport/plugin_transport_tcp.c:3407 7875#: src/transport/plugin_transport_tcp.c:3413
8055#: src/transport/plugin_transport_xt.c:3413 7876#: src/transport/plugin_transport_xt.c:3415
8056msgid "# bytes received via TCP" 7877msgid "# bytes received via TCP"
8057msgstr "# các byte đã nhận qua TCP" 7878msgstr "# các byte đã nhận qua TCP"
8058 7879
8059#: src/transport/plugin_transport_tcp.c:3458 7880#: src/transport/plugin_transport_tcp.c:3464
8060#: src/transport/plugin_transport_tcp.c:3516 7881#: src/transport/plugin_transport_tcp.c:3522
8061#: src/transport/plugin_transport_xt.c:3464 7882#: src/transport/plugin_transport_xt.c:3466
8062#: src/transport/plugin_transport_xt.c:3522 7883#: src/transport/plugin_transport_xt.c:3524
8063#, fuzzy 7884#, fuzzy
8064msgid "# TCP server connections active" 7885msgid "# TCP server connections active"
8065msgstr "# các kết nối dht" 7886msgstr "# các kết nối dht"
8066 7887
8067#: src/transport/plugin_transport_tcp.c:3462 7888#: src/transport/plugin_transport_tcp.c:3468
8068#: src/transport/plugin_transport_xt.c:3468 7889#: src/transport/plugin_transport_xt.c:3470
8069#, fuzzy 7890#, fuzzy
8070msgid "# TCP server connect events" 7891msgid "# TCP server connect events"
8071msgstr "# của các đồng đẳng đã kết nối" 7892msgstr "# của các đồng đẳng đã kết nối"
8072 7893
8073#: src/transport/plugin_transport_tcp.c:3468 7894#: src/transport/plugin_transport_tcp.c:3474
8074#: src/transport/plugin_transport_xt.c:3474 7895#: src/transport/plugin_transport_xt.c:3476
8075msgid "TCP connection limit reached, suspending server\n" 7896msgid "TCP connection limit reached, suspending server\n"
8076msgstr "" 7897msgstr ""
8077 7898
8078#: src/transport/plugin_transport_tcp.c:3470 7899#: src/transport/plugin_transport_tcp.c:3476
8079#: src/transport/plugin_transport_xt.c:3476 7900#: src/transport/plugin_transport_xt.c:3478
8080msgid "# TCP service suspended" 7901msgid "# TCP service suspended"
8081msgstr "" 7902msgstr ""
8082 7903
8083#: src/transport/plugin_transport_tcp.c:3510 7904#: src/transport/plugin_transport_tcp.c:3516
8084#: src/transport/plugin_transport_xt.c:3516 7905#: src/transport/plugin_transport_xt.c:3518
8085msgid "# TCP service resumed" 7906msgid "# TCP service resumed"
8086msgstr "" 7907msgstr ""
8087 7908
8088#: src/transport/plugin_transport_tcp.c:3520 7909#: src/transport/plugin_transport_tcp.c:3526
8089#: src/transport/plugin_transport_xt.c:3526 7910#: src/transport/plugin_transport_xt.c:3528
8090msgid "# network-level TCP disconnect events" 7911msgid "# network-level TCP disconnect events"
8091msgstr "" 7912msgstr ""
8092 7913
8093#: src/transport/plugin_transport_tcp.c:3839 7914#: src/transport/plugin_transport_tcp.c:3845
8094#: src/transport/plugin_transport_xt.c:3847 7915#: src/transport/plugin_transport_xt.c:3849
8095#, fuzzy 7916#, fuzzy
8096msgid "Failed to start service.\n" 7917msgid "Failed to start service.\n"
8097msgstr "Lỗi bắt đầu thu thập.\n" 7918msgstr "Lỗi bắt đầu thu thập.\n"
8098 7919
8099#: src/transport/plugin_transport_tcp.c:4000 7920#: src/transport/plugin_transport_tcp.c:4006
8100#, c-format 7921#, c-format
8101msgid "TCP transport listening on port %llu\n" 7922msgid "TCP transport listening on port %llu\n"
8102msgstr "" 7923msgstr ""
8103 7924
8104#: src/transport/plugin_transport_tcp.c:4004 7925#: src/transport/plugin_transport_tcp.c:4010
8105msgid "TCP transport not listening on any port (client only)\n" 7926msgid "TCP transport not listening on any port (client only)\n"
8106msgstr "" 7927msgstr ""
8107 7928
8108#: src/transport/plugin_transport_tcp.c:4008 7929#: src/transport/plugin_transport_tcp.c:4014
8109#, c-format 7930#, c-format
8110msgid "TCP transport advertises itself as being on port %llu\n" 7931msgid "TCP transport advertises itself as being on port %llu\n"
8111msgstr "" 7932msgstr ""
8112 7933
8113#: src/transport/plugin_transport_udp_broadcasting.c:166 7934#: src/transport/plugin_transport_udp_broadcasting.c:168
8114#, fuzzy 7935#, fuzzy
8115msgid "# Multicast HELLO beacons received via UDP" 7936msgid "# Multicast HELLO beacons received via UDP"
8116msgstr "# các thông báo PONG đã mật mã được nhận" 7937msgstr "# các thông báo PONG đã mật mã được nhận"
8117 7938
8118#: src/transport/plugin_transport_udp_broadcasting.c:546 7939#: src/transport/plugin_transport_udp_broadcasting.c:548
8119msgid "" 7940msgid ""
8120"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" 7941"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
8121msgstr "" 7942msgstr ""
8122 7943
8123#: src/transport/plugin_transport_udp_broadcasting.c:563 7944#: src/transport/plugin_transport_udp_broadcasting.c:565
8124#, c-format 7945#, c-format
8125msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" 7946msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
8126msgstr "" 7947msgstr ""
8127 7948
8128#: src/transport/plugin_transport_udp.c:3365 7949#: src/transport/plugin_transport_udp.c:3371
8129#, c-format 7950#, c-format
8130msgid "" 7951msgid ""
8131"UDP could not transmit message to `%s': Network seems down, please check " 7952"UDP could not transmit message to `%s': Network seems down, please check "
8132"your network configuration\n" 7953"your network configuration\n"
8133msgstr "" 7954msgstr ""
8134 7955
8135#: src/transport/plugin_transport_udp.c:3379 7956#: src/transport/plugin_transport_udp.c:3385
8136msgid "" 7957msgid ""
8137"UDP could not transmit IPv6 message! Please check your network configuration " 7958"UDP could not transmit IPv6 message! Please check your network configuration "
8138"and disable IPv6 if your connection does not have a global IPv6 address\n" 7959"and disable IPv6 if your connection does not have a global IPv6 address\n"
8139msgstr "" 7960msgstr ""
8140 7961
8141#: src/transport/plugin_transport_udp.c:3697 7962#: src/transport/plugin_transport_udp.c:3703
8142#: src/transport/plugin_transport_udp.c:3796 7963#: src/transport/plugin_transport_udp.c:3802
8143#, fuzzy, c-format 7964#, fuzzy, c-format
8144msgid "Failed to bind UDP socket to %s: %s\n" 7965msgid "Failed to bind UDP socket to %s: %s\n"
8145msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 7966msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8146 7967
8147#: src/transport/plugin_transport_udp.c:3715 7968#: src/transport/plugin_transport_udp.c:3721
8148#: src/transport/plugin_transport_xu.c:2141 7969#: src/transport/plugin_transport_xu.c:2143
8149msgid "Disabling IPv4 since it is not supported on this system!\n" 7970msgid "Disabling IPv4 since it is not supported on this system!\n"
8150msgstr "" 7971msgstr ""
8151 7972
8152#: src/transport/plugin_transport_udp.c:3806 7973#: src/transport/plugin_transport_udp.c:3812
8153#, fuzzy 7974#, fuzzy
8154msgid "Failed to open UDP sockets\n" 7975msgid "Failed to open UDP sockets\n"
8155msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 7976msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8156 7977
8157#: src/transport/plugin_transport_udp.c:3877 7978#: src/transport/plugin_transport_udp.c:3883
8158#: src/transport/plugin_transport_udp.c:3891 7979#: src/transport/plugin_transport_udp.c:3897
8159#: src/transport/plugin_transport_xu.c:2299 7980#: src/transport/plugin_transport_xu.c:2301
8160#: src/transport/plugin_transport_xu.c:2313 7981#: src/transport/plugin_transport_xu.c:2315
8161msgid "must be in [0,65535]" 7982msgid "must be in [0,65535]"
8162msgstr "" 7983msgstr ""
8163 7984
8164#: src/transport/plugin_transport_udp.c:3923 7985#: src/transport/plugin_transport_udp.c:3929
8165#: src/transport/plugin_transport_xu.c:2345 7986#: src/transport/plugin_transport_xu.c:2347
8166#, fuzzy 7987#, fuzzy
8167msgid "must be valid IPv4 address" 7988msgid "must be valid IPv4 address"
8168msgstr "« %s » không sẵn sàng.\n" 7989msgstr "« %s » không sẵn sàng.\n"
8169 7990
8170#: src/transport/plugin_transport_udp.c:3950 7991#: src/transport/plugin_transport_udp.c:3956
8171#: src/transport/plugin_transport_xu.c:2372 7992#: src/transport/plugin_transport_xu.c:2374
8172#, fuzzy 7993#, fuzzy
8173msgid "must be valid IPv6 address" 7994msgid "must be valid IPv6 address"
8174msgstr "« %s » không sẵn sàng.\n" 7995msgstr "« %s » không sẵn sàng.\n"
8175 7996
8176#: src/transport/plugin_transport_udp.c:4014 7997#: src/transport/plugin_transport_udp.c:4020
8177#, fuzzy 7998#, fuzzy
8178msgid "Failed to create UDP network sockets\n" 7999msgid "Failed to create UDP network sockets\n"
8179msgstr "Không thể tạo miền tên.\n" 8000msgstr "Không thể tạo miền tên.\n"
8180 8001
8181#: src/transport/plugin_transport_unix.c:1401 8002#: src/transport/plugin_transport_unix.c:1416
8182#, fuzzy, c-format
8183msgid "Cannot create path to `%s'\n"
8184msgstr "Không thể tạo miền tên.\n"
8185
8186#: src/transport/plugin_transport_unix.c:1414
8187#, fuzzy, c-format 8003#, fuzzy, c-format
8188msgid "Cannot bind to `%s'\n" 8004msgid "Cannot bind to `%s'\n"
8189msgstr "Không thể tạo mẫu duy nhất đại diện cho « %s ».\n" 8005msgstr "Không thể tạo mẫu duy nhất đại diện cho « %s ».\n"
8190 8006
8191#: src/transport/plugin_transport_unix.c:1814 8007#: src/transport/plugin_transport_unix.c:1816
8192#, fuzzy 8008#, fuzzy
8193msgid "Failed to open UNIX listen socket\n" 8009msgid "Failed to open UNIX listen socket\n"
8194msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 8010msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8195 8011
8196#: src/transport/plugin_transport_wlan.c:766 8012#: src/transport/plugin_transport_wlan.c:768
8197msgid "# ACKs sent" 8013msgid "# ACKs sent"
8198msgstr "" 8014msgstr ""
8199 8015
8200#: src/transport/plugin_transport_wlan.c:786 8016#: src/transport/plugin_transport_wlan.c:788
8201#, fuzzy 8017#, fuzzy
8202msgid "# Messages defragmented" 8018msgid "# Messages defragmented"
8203msgstr "# các thông báo được chắp liền" 8019msgstr "# các thông báo được chắp liền"
8204 8020
8205#: src/transport/plugin_transport_wlan.c:827 8021#: src/transport/plugin_transport_wlan.c:829
8206#: src/transport/plugin_transport_wlan.c:912 8022#: src/transport/plugin_transport_wlan.c:914
8207#, fuzzy 8023#, fuzzy
8208msgid "# Sessions allocated" 8024msgid "# Sessions allocated"
8209msgstr "# các khoá phiên chạy được chấp nhận" 8025msgstr "# các khoá phiên chạy được chấp nhận"
8210 8026
8211#: src/transport/plugin_transport_wlan.c:1033 8027#: src/transport/plugin_transport_wlan.c:1035
8212#, fuzzy 8028#, fuzzy
8213msgid "# message fragments sent" 8029msgid "# message fragments sent"
8214msgstr "# các thông báo bị tế phân" 8030msgstr "# các thông báo bị tế phân"
8215 8031
8216#: src/transport/plugin_transport_wlan.c:1062 8032#: src/transport/plugin_transport_wlan.c:1064
8217#, fuzzy 8033#, fuzzy
8218msgid "# messages pending (with fragmentation)" 8034msgid "# messages pending (with fragmentation)"
8219msgstr "# các thông báo được chắp liền" 8035msgstr "# các thông báo được chắp liền"
8220 8036
8221#: src/transport/plugin_transport_wlan.c:1191 8037#: src/transport/plugin_transport_wlan.c:1193
8222#: src/transport/plugin_transport_wlan.c:1282 8038#: src/transport/plugin_transport_wlan.c:1284
8223#: src/transport/plugin_transport_wlan.c:2303 8039#: src/transport/plugin_transport_wlan.c:2305
8224#, fuzzy 8040#, fuzzy
8225msgid "# MAC endpoints allocated" 8041msgid "# MAC endpoints allocated"
8226msgstr "# các yêu cầu get (lấy) dht được nhận" 8042msgstr "# các yêu cầu get (lấy) dht được nhận"
8227 8043
8228#: src/transport/plugin_transport_wlan.c:1565 8044#: src/transport/plugin_transport_wlan.c:1567
8229#, fuzzy 8045#, fuzzy
8230msgid "# ACKs received" 8046msgid "# ACKs received"
8231msgstr "# các byte đã nhận qua TCP" 8047msgstr "# các byte đã nhận qua TCP"
8232 8048
8233#: src/transport/plugin_transport_wlan.c:1634 8049#: src/transport/plugin_transport_wlan.c:1636
8234#, fuzzy 8050#, fuzzy
8235msgid "# DATA messages discarded due to CRC32 error" 8051msgid "# DATA messages discarded due to CRC32 error"
8236msgstr "# các thông báo được chắp liền" 8052msgstr "# các thông báo được chắp liền"
8237 8053
8238#: src/transport/plugin_transport_wlan.c:1738 8054#: src/transport/plugin_transport_wlan.c:1740
8239#, fuzzy 8055#, fuzzy
8240msgid "# HELLO beacons sent" 8056msgid "# HELLO beacons sent"
8241msgstr "# các byte đã gửi qua UDP" 8057msgstr "# các byte đã gửi qua UDP"
8242 8058
8243#: src/transport/plugin_transport_wlan.c:1854 8059#: src/transport/plugin_transport_wlan.c:1856
8244#, fuzzy 8060#, fuzzy
8245msgid "# DATA messages received" 8061msgid "# DATA messages received"
8246msgstr "# các thông báo PONG đã mật mã được nhận" 8062msgstr "# các thông báo PONG đã mật mã được nhận"
8247 8063
8248#: src/transport/plugin_transport_wlan.c:1888 8064#: src/transport/plugin_transport_wlan.c:1890
8249#, fuzzy 8065#, fuzzy
8250msgid "# DATA messages processed" 8066msgid "# DATA messages processed"
8251msgstr "# các thông báo PONG đã mật mã được nhận" 8067msgstr "# các thông báo PONG đã mật mã được nhận"
8252 8068
8253#: src/transport/plugin_transport_wlan.c:2278 8069#: src/transport/plugin_transport_wlan.c:2280
8254#, c-format 8070#, c-format
8255msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n" 8071msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n"
8256msgstr "" 8072msgstr ""
8257 8073
8258#: src/transport/plugin_transport_wlan.c:2300 8074#: src/transport/plugin_transport_wlan.c:2302
8259#, fuzzy 8075#, fuzzy
8260msgid "# sessions allocated" 8076msgid "# sessions allocated"
8261msgstr "# các khoá phiên chạy được chấp nhận" 8077msgstr "# các khoá phiên chạy được chấp nhận"
8262 8078
8263#: src/transport/plugin_transport_xt.c:4008 8079#: src/transport/plugin_transport_xt.c:4010
8264#, c-format 8080#, c-format
8265msgid "XT transport listening on port %llu\n" 8081msgid "XT transport listening on port %llu\n"
8266msgstr "" 8082msgstr ""
8267 8083
8268#: src/transport/plugin_transport_xt.c:4012 8084#: src/transport/plugin_transport_xt.c:4014
8269msgid "XT transport not listening on any port (client only)\n" 8085msgid "XT transport not listening on any port (client only)\n"
8270msgstr "" 8086msgstr ""
8271 8087
8272#: src/transport/plugin_transport_xt.c:4016 8088#: src/transport/plugin_transport_xt.c:4018
8273#, c-format 8089#, c-format
8274msgid "XT transport advertises itself as being on port %llu\n" 8090msgid "XT transport advertises itself as being on port %llu\n"
8275msgstr "" 8091msgstr ""
8276 8092
8277#: src/transport/plugin_transport_xt.c:4020 8093#: src/transport/plugin_transport_xt.c:4022
8278#, fuzzy 8094#, fuzzy
8279msgid "# XT sessions active" 8095msgid "# XT sessions active"
8280msgstr "# các khoá phiên chạy được chấp nhận" 8096msgstr "# các khoá phiên chạy được chấp nhận"
8281 8097
8282#: src/transport/plugin_transport_xu.c:1235 8098#: src/transport/plugin_transport_xu.c:1237
8283#, c-format 8099#, c-format
8284msgid "" 8100msgid ""
8285"XU could not transmit message to `%s': Network seems down, please check your " 8101"XU could not transmit message to `%s': Network seems down, please check your "
8286"network configuration\n" 8102"network configuration\n"
8287msgstr "" 8103msgstr ""
8288 8104
8289#: src/transport/plugin_transport_xu.c:1249 8105#: src/transport/plugin_transport_xu.c:1251
8290msgid "" 8106msgid ""
8291"XU could not transmit IPv6 message! Please check your network configuration " 8107"XU could not transmit IPv6 message! Please check your network configuration "
8292"and disable IPv6 if your connection does not have a global IPv6 address\n" 8108"and disable IPv6 if your connection does not have a global IPv6 address\n"
8293msgstr "" 8109msgstr ""
8294 8110
8295#: src/transport/plugin_transport_xu.c:2123 8111#: src/transport/plugin_transport_xu.c:2125
8296#: src/transport/plugin_transport_xu.c:2222 8112#: src/transport/plugin_transport_xu.c:2224
8297#, fuzzy, c-format 8113#, fuzzy, c-format
8298msgid "Failed to bind XU socket to %s: %s\n" 8114msgid "Failed to bind XU socket to %s: %s\n"
8299msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 8115msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8300 8116
8301#: src/transport/plugin_transport_xu.c:2232 8117#: src/transport/plugin_transport_xu.c:2234
8302#, fuzzy 8118#, fuzzy
8303msgid "Failed to open XU sockets\n" 8119msgid "Failed to open XU sockets\n"
8304msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 8120msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8305 8121
8306#: src/transport/plugin_transport_xu.c:2396 8122#: src/transport/plugin_transport_xu.c:2398
8307#, fuzzy 8123#, fuzzy
8308msgid "Failed to create XU network sockets\n" 8124msgid "Failed to create XU network sockets\n"
8309msgstr "Không thể tạo miền tên.\n" 8125msgstr "Không thể tạo miền tên.\n"
8310 8126
8311#: src/transport/tcp_connection_legacy.c:450 8127#: src/transport/tcp_connection_legacy.c:452
8312#, fuzzy, c-format 8128#, fuzzy, c-format
8313msgid "Access denied to `%s'\n" 8129msgid "Access denied to `%s'\n"
8314msgstr "Không đủ quyền cho « %s ».\n" 8130msgstr "Không đủ quyền cho « %s ».\n"
8315 8131
8316#: src/transport/tcp_connection_legacy.c:467 8132#: src/transport/tcp_connection_legacy.c:469
8317#, c-format 8133#, c-format
8318msgid "Accepting connection from `%s': %p\n" 8134msgid "Accepting connection from `%s': %p\n"
8319msgstr "" 8135msgstr ""
8320 8136
8321#: src/transport/tcp_server_legacy.c:472 src/util/service.c:1109 8137#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1666
8322#, fuzzy, c-format 8138#, fuzzy, c-format
8323msgid "`%s' failed for port %d (%s).\n" 8139msgid "`%s' failed for port %d (%s).\n"
8324msgstr "« %s » thất bại cho ổ đĩa « %s »: %u\n" 8140msgstr "« %s » thất bại cho ổ đĩa « %s »: %u\n"
8325 8141
8326#: src/transport/tcp_server_legacy.c:482 src/util/service.c:1119 8142#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1676
8327#, fuzzy, c-format 8143#, fuzzy, c-format
8328msgid "`%s' failed for port %d (%s): address already in use\n" 8144msgid "`%s' failed for port %d (%s): address already in use\n"
8329msgstr "« %s » bị lỗi cho cổng %d. Trình gnunetd có chạy chưa?\n" 8145msgstr "« %s » bị lỗi cho cổng %d. Trình gnunetd có chạy chưa?\n"
8330 8146
8331#: src/transport/tcp_server_legacy.c:488 src/util/service.c:1125 8147#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1682
8332#, fuzzy, c-format 8148#, fuzzy, c-format
8333msgid "`%s' failed for `%s': address already in use\n" 8149msgid "`%s' failed for `%s': address already in use\n"
8334msgstr "« %s » bị lỗi cho cổng %d. Trình gnunetd có chạy chưa?\n" 8150msgstr "« %s » bị lỗi cho cổng %d. Trình gnunetd có chạy chưa?\n"
8335 8151
8336#: src/transport/tcp_server_legacy.c:888 8152#: src/transport/tcp_server_legacy.c:890
8337#, c-format 8153#, c-format
8338msgid "" 8154msgid ""
8339"Processing code for message of type %u did not call " 8155"Processing code for message of type %u did not call "
8340"`GNUNET_SERVER_receive_done' after %s\n" 8156"`GNUNET_SERVER_receive_done' after %s\n"
8341msgstr "" 8157msgstr ""
8342 8158
8343#: src/transport/tcp_service_legacy.c:337 src/util/service.c:2378 8159#: src/transport/tcp_service_legacy.c:339 src/util/service.c:870
8344#, fuzzy, c-format 8160#, fuzzy, c-format
8345msgid "Unknown address family %d\n" 8161msgid "Unknown address family %d\n"
8346msgstr "\tKhông rõ miền tên « %s »\n" 8162msgstr "\tKhông rõ miền tên « %s »\n"
8347 8163
8348#: src/transport/tcp_service_legacy.c:344 8164#: src/transport/tcp_service_legacy.c:346
8349#, c-format 8165#, c-format
8350msgid "Access from `%s' denied to service `%s'\n" 8166msgid "Access from `%s' denied to service `%s'\n"
8351msgstr "" 8167msgstr ""
8352 8168
8353#: src/transport/tcp_service_legacy.c:400 src/util/service.c:437 8169#: src/transport/tcp_service_legacy.c:402 src/util/service.c:994
8354#, c-format 8170#, c-format
8355msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n" 8171msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
8356msgstr "" 8172msgstr ""
8357 8173
8358#: src/transport/tcp_service_legacy.c:438 src/util/service.c:480 8174#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1037
8359#, c-format 8175#, c-format
8360msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n" 8176msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
8361msgstr "" 8177msgstr ""
8362 8178
8363#: src/transport/tcp_service_legacy.c:902 src/util/service.c:1040 8179#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1597
8364msgid "Could not access a pre-bound socket, will try to bind myself\n" 8180msgid "Could not access a pre-bound socket, will try to bind myself\n"
8365msgstr "" 8181msgstr ""
8366 8182
8367#: src/transport/tcp_service_legacy.c:951 8183#: src/transport/tcp_service_legacy.c:953
8368#: src/transport/tcp_service_legacy.c:969 src/util/service.c:1192 8184#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1750
8369#, c-format 8185#, c-format
8370msgid "Specified value for `%s' of service `%s' is invalid\n" 8186msgid "Specified value for `%s' of service `%s' is invalid\n"
8371msgstr "" 8187msgstr ""
8372 8188
8373#: src/transport/tcp_service_legacy.c:994 src/util/service.c:1224 8189#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1783
8374#, c-format 8190#, c-format
8375msgid "Could not access pre-bound socket %u, will try to bind myself\n" 8191msgid "Could not access pre-bound socket %u, will try to bind myself\n"
8376msgstr "" 8192msgstr ""
8377 8193
8378#: src/transport/tcp_service_legacy.c:1159 8194#: src/transport/tcp_service_legacy.c:1161
8379#, fuzzy, c-format 8195#, fuzzy, c-format
8380msgid "Failed to start `%s' at `%s'\n" 8196msgid "Failed to start `%s' at `%s'\n"
8381msgstr "Lỗi chạy %s: %s %d\n" 8197msgstr "Lỗi chạy %s: %s %d\n"
8382 8198
8383#: src/transport/tcp_service_legacy.c:1200 8199#: src/transport/tcp_service_legacy.c:1202
8384#, fuzzy, c-format 8200#, fuzzy, c-format
8385msgid "Service `%s' runs at %s\n" 8201msgid "Service `%s' runs at %s\n"
8386msgstr "Đồng đẳng « %s » có mức tin cậy %8u\n" 8202msgstr "Đồng đẳng « %s » có mức tin cậy %8u\n"
8387 8203
8388#: src/transport/tcp_service_legacy.c:1249 src/util/service.c:1498 8204#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2057
8389msgid "Service process failed to initialize\n" 8205msgid "Service process failed to initialize\n"
8390msgstr "" 8206msgstr ""
8391 8207
8392#: src/transport/tcp_service_legacy.c:1253 src/util/service.c:1502 8208#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2061
8393msgid "Service process could not initialize server function\n" 8209msgid "Service process could not initialize server function\n"
8394msgstr "" 8210msgstr ""
8395 8211
8396#: src/transport/tcp_service_legacy.c:1257 src/util/service.c:1506 8212#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2065
8397msgid "Service process failed to report status\n" 8213msgid "Service process failed to report status\n"
8398msgstr "" 8214msgstr ""
8399 8215
8400#: src/transport/tcp_service_legacy.c:1311 src/util/disk.c:1521 8216#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
8401#: src/util/service.c:1376 8217#: src/util/service.c:1935
8402#, c-format 8218#, c-format
8403msgid "Cannot obtain information about user `%s': %s\n" 8219msgid "Cannot obtain information about user `%s': %s\n"
8404msgstr "Không thể lấy thông tin về người dùng « %s »: %s\n" 8220msgstr "Không thể lấy thông tin về người dùng « %s »: %s\n"
8405 8221
8406#: src/transport/tcp_service_legacy.c:1312 src/util/service.c:1378 8222#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1937
8407msgid "No such user" 8223msgid "No such user"
8408msgstr "Không có người dùng như vậy" 8224msgstr "Không có người dùng như vậy"
8409 8225
8410#: src/transport/tcp_service_legacy.c:1325 src/util/service.c:1397 8226#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1956
8411#, c-format 8227#, c-format
8412msgid "Cannot change user/group to `%s': %s\n" 8228msgid "Cannot change user/group to `%s': %s\n"
8413msgstr "Không thể thay đổi người dùng/nhóm thành « %s »: %s\n" 8229msgstr "Không thể thay đổi người dùng/nhóm thành « %s »: %s\n"
8414 8230
8415#: src/transport/tcp_service_legacy.c:1396 src/util/service.c:1757 8231#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2318
8416msgid "do daemonize (detach from terminal)" 8232msgid "do daemonize (detach from terminal)"
8417msgstr "" 8233msgstr ""
8418 8234
8419#: src/transport/tcp_service_legacy.c:1446 src/util/program.c:277 8235#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:2382
8420#: src/util/service.c:1820 8236#: src/util/service.c:2397
8421#, fuzzy, c-format 8237#, fuzzy, c-format
8422msgid "Malformed configuration file `%s', exit ...\n" 8238msgid "Malformed configuration file `%s', exit ...\n"
8423msgstr "Không thể lưu tập tin cấu hình « %s »:" 8239msgstr "Không thể lưu tập tin cấu hình « %s »:"
8424 8240
8425#: src/transport/tcp_service_legacy.c:1456 src/util/program.c:297 8241#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2409
8426#: src/util/service.c:1831
8427#, fuzzy 8242#, fuzzy
8428msgid "Malformed configuration, exit ...\n" 8243msgid "Malformed configuration, exit ...\n"
8429msgstr "Không thể lưu tập tin cấu hình « %s »:" 8244msgstr "Không thể lưu tập tin cấu hình « %s »:"
8430 8245
8431#: src/transport/tcp_service_legacy.c:1461 src/util/program.c:290 8246#: src/transport/tcp_service_legacy.c:1463
8432#: src/util/service.c:1837
8433#, fuzzy, c-format 8247#, fuzzy, c-format
8434msgid "Could not access configuration file `%s'\n" 8248msgid "Could not access configuration file `%s'\n"
8435msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 8249msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
8436 8250
8437#: src/util/bio.c:179 src/util/bio.c:187 8251#: src/transport/transport_api2_communication.c:764
8252msgid "Dropped backchanel message: handler not provided by communicator\n"
8253msgstr ""
8254
8255#: src/util/bio.c:181 src/util/bio.c:189
8438#, fuzzy, c-format 8256#, fuzzy, c-format
8439msgid "Error reading `%s': %s" 8257msgid "Error reading `%s': %s"
8440msgstr "Gặp lỗi khi tạo người dùng" 8258msgstr "Gặp lỗi khi tạo người dùng"
8441 8259
8442#: src/util/bio.c:189 8260#: src/util/bio.c:191
8443msgid "End of file" 8261msgid "End of file"
8444msgstr "" 8262msgstr ""
8445 8263
8446#: src/util/bio.c:246 8264#: src/util/bio.c:248
8447#, c-format 8265#, c-format
8448msgid "Error reading length of string `%s'" 8266msgid "Error reading length of string `%s'"
8449msgstr "" 8267msgstr ""
8450 8268
8451#: src/util/bio.c:256 8269#: src/util/bio.c:258
8452#, c-format 8270#, c-format
8453msgid "String `%s' longer than allowed (%u > %u)" 8271msgid "String `%s' longer than allowed (%u > %u)"
8454msgstr "" 8272msgstr ""
8455 8273
8456#: src/util/bio.c:304 8274#: src/util/bio.c:306
8457#, c-format 8275#, c-format
8458msgid "Serialized metadata `%s' larger than allowed (%u>%u)" 8276msgid "Serialized metadata `%s' larger than allowed (%u>%u)"
8459msgstr "" 8277msgstr ""
8460 8278
8461#: src/util/bio.c:326 8279#: src/util/bio.c:328
8462#, c-format 8280#, c-format
8463msgid "Metadata `%s' failed to deserialize" 8281msgid "Metadata `%s' failed to deserialize"
8464msgstr "" 8282msgstr ""
8465 8283
8466#: src/util/client.c:732 8284#: src/util/client.c:734
8467msgid "not a valid filename" 8285msgid "not a valid filename"
8468msgstr "" 8286msgstr ""
8469 8287
8470#: src/util/client.c:923 8288#: src/util/client.c:925
8471#, c-format 8289#, c-format
8472msgid "Need a non-empty hostname for service `%s'.\n" 8290msgid "Need a non-empty hostname for service `%s'.\n"
8473msgstr "" 8291msgstr ""
8474 8292
8475#: src/util/common_logging.c:257 src/util/common_logging.c:1159 8293#: src/util/common_logging.c:259 src/util/common_logging.c:1162
8476msgid "DEBUG" 8294msgid "DEBUG"
8477msgstr "GỠ LỖI" 8295msgstr "GỠ LỖI"
8478 8296
8479#: src/util/common_logging.c:259 src/util/common_logging.c:1157 8297#: src/util/common_logging.c:261 src/util/common_logging.c:1160
8480msgid "INFO" 8298msgid "INFO"
8481msgstr "TIN" 8299msgstr "TIN"
8482 8300
8483#: src/util/common_logging.c:261 src/util/common_logging.c:1155 8301#: src/util/common_logging.c:263 src/util/common_logging.c:1158
8484msgid "MESSAGE" 8302msgid "MESSAGE"
8485msgstr "" 8303msgstr ""
8486 8304
8487#: src/util/common_logging.c:263 src/util/common_logging.c:1153 8305#: src/util/common_logging.c:265 src/util/common_logging.c:1156
8488msgid "WARNING" 8306msgid "WARNING"
8489msgstr "CẢNH BÁO" 8307msgstr "CẢNH BÁO"
8490 8308
8491#: src/util/common_logging.c:265 src/util/common_logging.c:1151 8309#: src/util/common_logging.c:267 src/util/common_logging.c:1154
8492msgid "ERROR" 8310msgid "ERROR"
8493msgstr "LỖI" 8311msgstr "LỖI"
8494 8312
8495#: src/util/common_logging.c:267 src/util/common_logging.c:1161 8313#: src/util/common_logging.c:269 src/util/common_logging.c:1164
8496msgid "NONE" 8314msgid "NONE"
8497msgstr "" 8315msgstr ""
8498 8316
8499#: src/util/common_logging.c:631 src/util/common_logging.c:661 8317#: src/util/common_logging.c:633 src/util/common_logging.c:663
8500#, c-format 8318#, c-format
8501msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n" 8319msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
8502msgstr "" 8320msgstr ""
8503 8321
8504#: src/util/common_logging.c:895 8322#: src/util/common_logging.c:898
8505#, fuzzy, c-format 8323#, fuzzy, c-format
8506msgid "Message `%.*s' repeated %u times in the last %s\n" 8324msgid "Message `%.*s' repeated %u times in the last %s\n"
8507msgstr "Thông điệp « %.*s » đã lặp lại %u lần trong %llu giây trước\n" 8325msgstr "Thông điệp « %.*s » đã lặp lại %u lần trong %llu giây trước\n"
8508 8326
8509#: src/util/common_logging.c:1162 8327#: src/util/common_logging.c:1165
8510msgid "INVALID" 8328msgid "INVALID"
8511msgstr "" 8329msgstr ""
8512 8330
8513#: src/util/common_logging.c:1455 8331#: src/util/common_logging.c:1458
8514msgid "unknown address" 8332msgid "unknown address"
8515msgstr "" 8333msgstr ""
8516 8334
8517#: src/util/common_logging.c:1497 8335#: src/util/common_logging.c:1500
8518msgid "invalid address" 8336msgid "invalid address"
8519msgstr "" 8337msgstr ""
8520 8338
8521#: src/util/common_logging.c:1515 8339#: src/util/common_logging.c:1518
8522#, fuzzy, c-format 8340#, fuzzy, c-format
8523msgid "Configuration fails to specify option `%s' in section `%s'!\n" 8341msgid "Configuration fails to specify option `%s' in section `%s'!\n"
8524msgstr "" 8342msgstr ""
8525"Cấu hình không thỏa mãn các ràng buộc của tập tin đặc tả cấu hình « %s ».\n" 8343"Cấu hình không thỏa mãn các ràng buộc của tập tin đặc tả cấu hình « %s ».\n"
8526 8344
8527#: src/util/common_logging.c:1536 8345#: src/util/common_logging.c:1539
8528#, fuzzy, c-format 8346#, fuzzy, c-format
8529msgid "" 8347msgid ""
8530"Configuration specifies invalid value for option `%s' in section `%s': %s\n" 8348"Configuration specifies invalid value for option `%s' in section `%s': %s\n"
8531msgstr "" 8349msgstr ""
8532"Cấu hình không thỏa mãn các ràng buộc của tập tin đặc tả cấu hình « %s ».\n" 8350"Cấu hình không thỏa mãn các ràng buộc của tập tin đặc tả cấu hình « %s ».\n"
8533 8351
8534#: src/util/configuration.c:294 8352#: src/util/configuration.c:331
8535#, fuzzy, c-format 8353#, fuzzy, c-format
8536msgid "Syntax error while deserializing in line %u\n" 8354msgid "Syntax error while deserializing in line %u\n"
8537msgstr "Gặp lỗi cú pháp trong tập tin cấu hình « %s » tại dòng %d.\n" 8355msgstr "Gặp lỗi cú pháp trong tập tin cấu hình « %s » tại dòng %d.\n"
8538 8356
8539#: src/util/configuration.c:361 8357#: src/util/configuration.c:398
8540#, fuzzy, c-format 8358#, fuzzy, c-format
8541msgid "Error while reading file `%s'\n" 8359msgid "Error while reading file `%s'\n"
8542msgstr "Gặp lỗi khi tải xuống: %s\n" 8360msgstr "Gặp lỗi khi tải xuống: %s\n"
8543 8361
8544#: src/util/configuration.c:970 8362#: src/util/configuration.c:1016
8545#, fuzzy 8363#, fuzzy
8546msgid "Not a valid relative time specification" 8364msgid "Not a valid relative time specification"
8547msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n" 8365msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n"
8548 8366
8549#: src/util/configuration.c:1059 8367#: src/util/configuration.c:1105
8550#, c-format 8368#, c-format
8551msgid "" 8369msgid ""
8552"Configuration value '%s' for '%s' in section '%s' is not in set of legal " 8370"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
@@ -8555,126 +8373,126 @@ msgstr ""
8555"Giá trị cấu hình « %s » cho « %s » trong phần « %s » không phải nằm trong " 8373"Giá trị cấu hình « %s » cho « %s » trong phần « %s » không phải nằm trong "
8556"tập hợp các sự chọn được phép\n" 8374"tập hợp các sự chọn được phép\n"
8557 8375
8558#: src/util/configuration.c:1178 8376#: src/util/configuration.c:1224
8559#, c-format 8377#, c-format
8560msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n" 8378msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n"
8561msgstr "" 8379msgstr ""
8562 8380
8563#: src/util/configuration.c:1211 8381#: src/util/configuration.c:1257
8564#, fuzzy, c-format 8382#, fuzzy, c-format
8565msgid "Missing closing `%s' in option `%s'\n" 8383msgid "Missing closing `%s' in option `%s'\n"
8566msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n" 8384msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n"
8567 8385
8568#: src/util/configuration.c:1279 8386#: src/util/configuration.c:1325
8569#, c-format 8387#, c-format
8570msgid "" 8388msgid ""
8571"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined " 8389"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined "
8572"as an environmental variable\n" 8390"as an environmental variable\n"
8573msgstr "" 8391msgstr ""
8574 8392
8575#: src/util/container_bloomfilter.c:530 8393#: src/util/container_bloomfilter.c:532
8576#, c-format 8394#, c-format
8577msgid "" 8395msgid ""
8578"Size of file on disk is incorrect for this Bloom filter (want %llu, have " 8396"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
8579"%llu)\n" 8397"%llu)\n"
8580msgstr "" 8398msgstr ""
8581 8399
8582#: src/util/crypto_ecc.c:860 8400#: src/util/crypto_ecc.c:862
8583#, fuzzy, c-format 8401#, fuzzy, c-format
8584msgid "ECC signing failed at %s:%d: %s\n" 8402msgid "ECC signing failed at %s:%d: %s\n"
8585msgstr "%s bị lỗi tại %s:%d: « %s »\n" 8403msgstr "%s bị lỗi tại %s:%d: « %s »\n"
8586 8404
8587#: src/util/crypto_ecc.c:915 8405#: src/util/crypto_ecc.c:917
8588#, fuzzy, c-format 8406#, fuzzy, c-format
8589msgid "EdDSA signing failed at %s:%d: %s\n" 8407msgid "EdDSA signing failed at %s:%d: %s\n"
8590msgstr "%s bị lỗi tại %s:%d: « %s »\n" 8408msgstr "%s bị lỗi tại %s:%d: « %s »\n"
8591 8409
8592#: src/util/crypto_ecc.c:994 8410#: src/util/crypto_ecc.c:996
8593#, fuzzy, c-format 8411#, fuzzy, c-format
8594msgid "ECDSA signature verification failed at %s:%d: %s\n" 8412msgid "ECDSA signature verification failed at %s:%d: %s\n"
8595msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" 8413msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
8596 8414
8597#: src/util/crypto_ecc.c:1055 8415#: src/util/crypto_ecc.c:1057
8598#, fuzzy, c-format 8416#, fuzzy, c-format
8599msgid "EdDSA signature verification failed at %s:%d: %s\n" 8417msgid "EdDSA signature verification failed at %s:%d: %s\n"
8600msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" 8418msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
8601 8419
8602#: src/util/crypto_ecc_setup.c:121 src/util/crypto_ecc_setup.c:160 8420#: src/util/crypto_ecc_setup.c:123 src/util/crypto_ecc_setup.c:162
8603#: src/util/crypto_ecc_setup.c:303 src/util/crypto_ecc_setup.c:350 8421#: src/util/crypto_ecc_setup.c:305 src/util/crypto_ecc_setup.c:352
8604#, fuzzy, c-format 8422#, fuzzy, c-format
8605msgid "Could not acquire lock on file `%s': %s...\n" 8423msgid "Could not acquire lock on file `%s': %s...\n"
8606msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n" 8424msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
8607 8425
8608#: src/util/crypto_ecc_setup.c:127 src/util/crypto_ecc_setup.c:309 8426#: src/util/crypto_ecc_setup.c:129 src/util/crypto_ecc_setup.c:311
8609#, fuzzy 8427#, fuzzy
8610msgid "Creating a new private key. This may take a while.\n" 8428msgid "Creating a new private key. This may take a while.\n"
8611msgstr "Đang tạo khoá máy mới (có thể hơi lâu).\n" 8429msgstr "Đang tạo khoá máy mới (có thể hơi lâu).\n"
8612 8430
8613#: src/util/crypto_ecc_setup.c:164 src/util/crypto_ecc_setup.c:354 8431#: src/util/crypto_ecc_setup.c:166 src/util/crypto_ecc_setup.c:356
8614msgid "This may be ok if someone is currently generating a private key.\n" 8432msgid "This may be ok if someone is currently generating a private key.\n"
8615msgstr "" 8433msgstr ""
8616 8434
8617#: src/util/crypto_ecc_setup.c:194 src/util/crypto_ecc_setup.c:396 8435#: src/util/crypto_ecc_setup.c:196 src/util/crypto_ecc_setup.c:398
8618#, c-format 8436#, c-format
8619msgid "" 8437msgid ""
8620"When trying to read key file `%s' I found %u bytes but I need at least %u.\n" 8438"When trying to read key file `%s' I found %u bytes but I need at least %u.\n"
8621msgstr "" 8439msgstr ""
8622 8440
8623#: src/util/crypto_ecc_setup.c:199 src/util/crypto_ecc_setup.c:400 8441#: src/util/crypto_ecc_setup.c:201 src/util/crypto_ecc_setup.c:402
8624msgid "This may be ok if someone is currently generating a key.\n" 8442msgid "This may be ok if someone is currently generating a key.\n"
8625msgstr "" 8443msgstr ""
8626 8444
8627#: src/util/crypto_ecc_setup.c:466 8445#: src/util/crypto_ecc_setup.c:468
8628#, fuzzy 8446#, fuzzy
8629msgid "Could not load peer's private key\n" 8447msgid "Could not load peer's private key\n"
8630msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" 8448msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
8631 8449
8632#: src/util/crypto_random.c:304 8450#: src/util/crypto_random.c:306
8633#, c-format 8451#, c-format
8634msgid "libgcrypt has not the expected version (version %s is required).\n" 8452msgid "libgcrypt has not the expected version (version %s is required).\n"
8635msgstr "libgcrypt không có phiên bản mong đợi (yêu cầu phiên bản %s).\n" 8453msgstr "libgcrypt không có phiên bản mong đợi (yêu cầu phiên bản %s).\n"
8636 8454
8637#: src/util/crypto_rsa.c:848 8455#: src/util/crypto_rsa.c:850
8638#, fuzzy, c-format 8456#, fuzzy, c-format
8639msgid "RSA signing failed at %s:%d: %s\n" 8457msgid "RSA signing failed at %s:%d: %s\n"
8640msgstr "%s bị lỗi tại %s:%d: « %s »\n" 8458msgstr "%s bị lỗi tại %s:%d: « %s »\n"
8641 8459
8642#: src/util/crypto_rsa.c:1187 8460#: src/util/crypto_rsa.c:1189
8643#, c-format 8461#, c-format
8644msgid "RSA signature verification failed at %s:%d: %s\n" 8462msgid "RSA signature verification failed at %s:%d: %s\n"
8645msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" 8463msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
8646 8464
8647#: src/util/disk.c:1251 8465#: src/util/disk.c:1255
8648#, c-format 8466#, c-format
8649msgid "Expected `%s' to be a directory!\n" 8467msgid "Expected `%s' to be a directory!\n"
8650msgstr "Mong đợi « %s » là một thư mục.\n" 8468msgstr "Mong đợi « %s » là một thư mục.\n"
8651 8469
8652#: src/util/dnsparser.c:250 8470#: src/util/dnsparser.c:264
8653#, fuzzy, c-format 8471#, fuzzy, c-format
8654msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n" 8472msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
8655msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 8473msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8656 8474
8657#: src/util/dnsparser.c:940 8475#: src/util/dnsparser.c:954
8658#, fuzzy, c-format 8476#, fuzzy, c-format
8659msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n" 8477msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
8660msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 8478msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8661 8479
8662#: src/util/dnsstub.c:229 8480#: src/util/dnsstub.c:231
8663#, fuzzy, c-format 8481#, fuzzy, c-format
8664msgid "Could not bind to any port: %s\n" 8482msgid "Could not bind to any port: %s\n"
8665msgstr "Không tìm thấy địa chỉ IP của máy « %s »: %s\n" 8483msgstr "Không tìm thấy địa chỉ IP của máy « %s »: %s\n"
8666 8484
8667#: src/util/dnsstub.c:360 8485#: src/util/dnsstub.c:362
8668#, c-format 8486#, c-format
8669msgid "Received DNS response that is too small (%u bytes)" 8487msgid "Received DNS response that is too small (%u bytes)"
8670msgstr "" 8488msgstr ""
8671 8489
8672#: src/util/dnsstub.c:507 8490#: src/util/dnsstub.c:509
8673#, fuzzy, c-format 8491#, fuzzy, c-format
8674msgid "Failed to send DNS request to %s: %s\n" 8492msgid "Failed to send DNS request to %s: %s\n"
8675msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 8493msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8676 8494
8677#: src/util/dnsstub.c:513 8495#: src/util/dnsstub.c:515
8678#, fuzzy, c-format 8496#, fuzzy, c-format
8679msgid "Sent DNS request to %s\n" 8497msgid "Sent DNS request to %s\n"
8680msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 8498msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
@@ -8745,11 +8563,11 @@ msgstr ""
8745msgid "Missing mandatory option `%s'.\n" 8563msgid "Missing mandatory option `%s'.\n"
8746msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n" 8564msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n"
8747 8565
8748#: src/util/getopt_helpers.c:68 8566#: src/util/getopt_helpers.c:70
8749msgid "print the version number" 8567msgid "print the version number"
8750msgstr "hiển thị số thứ tự phiên bản" 8568msgstr "hiển thị số thứ tự phiên bản"
8751 8569
8752#: src/util/getopt_helpers.c:113 8570#: src/util/getopt_helpers.c:116
8753#, c-format 8571#, c-format
8754msgid "" 8572msgid ""
8755"Arguments mandatory for long options are also mandatory for short options.\n" 8573"Arguments mandatory for long options are also mandatory for short options.\n"
@@ -8757,227 +8575,227 @@ msgstr ""
8757"Mọi đối số bắt buộc phải sử dụng với tùy chọn dài cũng bắt buộc với tùy chọn " 8575"Mọi đối số bắt buộc phải sử dụng với tùy chọn dài cũng bắt buộc với tùy chọn "
8758"ngắn.\n" 8576"ngắn.\n"
8759 8577
8760#: src/util/getopt_helpers.c:201 8578#: src/util/getopt_helpers.c:204
8761msgid "print this help" 8579msgid "print this help"
8762msgstr "hiển thị trợ giúp này" 8580msgstr "hiển thị trợ giúp này"
8763 8581
8764#: src/util/getopt_helpers.c:279 8582#: src/util/getopt_helpers.c:282
8765msgid "be verbose" 8583msgid "be verbose"
8766msgstr "xuất chi tiết" 8584msgstr "xuất chi tiết"
8767 8585
8768#: src/util/getopt_helpers.c:420 8586#: src/util/getopt_helpers.c:423
8769msgid "configure logging to use LOGLEVEL" 8587msgid "configure logging to use LOGLEVEL"
8770msgstr "cấu hình chức năng ghi sự kiện để dùng CẤP_GHI_LƯU" 8588msgstr "cấu hình chức năng ghi sự kiện để dùng CẤP_GHI_LƯU"
8771 8589
8772#: src/util/getopt_helpers.c:500 8590#: src/util/getopt_helpers.c:503
8773#, fuzzy 8591#, fuzzy
8774msgid "configure logging to write logs to FILENAME" 8592msgid "configure logging to write logs to FILENAME"
8775msgstr "cấu hình chức năng ghi sự kiện để dùng CẤP_GHI_LƯU" 8593msgstr "cấu hình chức năng ghi sự kiện để dùng CẤP_GHI_LƯU"
8776 8594
8777#: src/util/getopt_helpers.c:522 8595#: src/util/getopt_helpers.c:525
8778#, fuzzy 8596#, fuzzy
8779msgid "use configuration file FILENAME" 8597msgid "use configuration file FILENAME"
8780msgstr "cập nhật một giá trị trong tập tin cấu hình" 8598msgstr "cập nhật một giá trị trong tập tin cấu hình"
8781 8599
8782#: src/util/getopt_helpers.c:559 src/util/getopt_helpers.c:763 8600#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
8783#: src/util/getopt_helpers.c:830 8601#: src/util/getopt_helpers.c:839
8784#, c-format 8602#, c-format
8785msgid "You must pass a number to the `%s' option.\n" 8603msgid "You must pass a number to the `%s' option.\n"
8786msgstr "Phải gửi một con số cho tùy chọn « %s ».\n" 8604msgstr "Phải gửi một con số cho tùy chọn « %s ».\n"
8787 8605
8788#: src/util/getopt_helpers.c:624 8606#: src/util/getopt_helpers.c:629
8789#, fuzzy, c-format 8607#, fuzzy, c-format
8790msgid "You must pass relative time to the `%s' option.\n" 8608msgid "You must pass relative time to the `%s' option.\n"
8791msgstr "Phải gửi một con số cho tùy chọn « %s ».\n" 8609msgstr "Phải gửi một con số cho tùy chọn « %s ».\n"
8792 8610
8793#: src/util/getopt_helpers.c:690 8611#: src/util/getopt_helpers.c:695
8794#, fuzzy, c-format 8612#, fuzzy, c-format
8795msgid "You must pass absolute time to the `%s' option.\n" 8613msgid "You must pass absolute time to the `%s' option.\n"
8796msgstr "Phải gửi một con số cho tùy chọn « %s ».\n" 8614msgstr "Phải gửi một con số cho tùy chọn « %s ».\n"
8797 8615
8798#: src/util/getopt_helpers.c:754 8616#: src/util/getopt_helpers.c:760
8799#, c-format 8617#, c-format
8800msgid "Your input for the '%s' option has to be a non negative number \n" 8618msgid "Your input for the '%s' option has to be a non negative number \n"
8801msgstr "" 8619msgstr ""
8802 8620
8803#: src/util/getopt_helpers.c:837 8621#: src/util/getopt_helpers.c:846
8804#, fuzzy, c-format 8622#, fuzzy, c-format
8805msgid "You must pass a number below %u to the `%s' option.\n" 8623msgid "You must pass a number below %u to the `%s' option.\n"
8806msgstr "Phải gửi một con số cho tùy chọn « %s ».\n" 8624msgstr "Phải gửi một con số cho tùy chọn « %s ».\n"
8807 8625
8808#: src/util/getopt_helpers.c:923 8626#: src/util/getopt_helpers.c:932
8809#, c-format 8627#, c-format
8810msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n" 8628msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
8811msgstr "" 8629msgstr ""
8812 8630
8813#: src/util/gnunet-config.c:157 8631#: src/util/gnunet-config.c:160
8814#, fuzzy, c-format 8632#, fuzzy, c-format
8815msgid "failed to load configuration defaults" 8633msgid "failed to load configuration defaults"
8816msgstr "Không thể lưu tập tin cấu hình « %s »:" 8634msgstr "Không thể lưu tập tin cấu hình « %s »:"
8817 8635
8818#: src/util/gnunet-config.c:170 8636#: src/util/gnunet-config.c:173
8819#, fuzzy, c-format 8637#, fuzzy, c-format
8820msgid "--section argument is required\n" 8638msgid "%s or %s argument is required\n"
8821msgstr "đặt tên hiệu cần dùng (cần thiết)" 8639msgstr "đặt tên hiệu cần dùng (cần thiết)"
8822 8640
8823#: src/util/gnunet-config.c:173 8641#: src/util/gnunet-config.c:181
8824#, c-format 8642#, c-format
8825msgid "The following sections are available:\n" 8643msgid "The following sections are available:\n"
8826msgstr "" 8644msgstr ""
8827 8645
8828#: src/util/gnunet-config.c:224 8646#: src/util/gnunet-config.c:232
8829#, c-format 8647#, c-format
8830msgid "--option argument required to set value\n" 8648msgid "--option argument required to set value\n"
8831msgstr "" 8649msgstr ""
8832 8650
8833#: src/util/gnunet-config.c:263 8651#: src/util/gnunet-config.c:286
8834msgid "obtain option of value as a filename (with $-expansion)" 8652msgid "obtain option of value as a filename (with $-expansion)"
8835msgstr "" 8653msgstr ""
8836 8654
8837#: src/util/gnunet-config.c:268 8655#: src/util/gnunet-config.c:291
8838msgid "name of the section to access" 8656msgid "name of the section to access"
8839msgstr "" 8657msgstr ""
8840 8658
8841#: src/util/gnunet-config.c:273 8659#: src/util/gnunet-config.c:296
8842msgid "name of the option to access" 8660msgid "name of the option to access"
8843msgstr "" 8661msgstr ""
8844 8662
8845#: src/util/gnunet-config.c:278 8663#: src/util/gnunet-config.c:301
8846msgid "value to set" 8664msgid "value to set"
8847msgstr "" 8665msgstr ""
8848 8666
8849#: src/util/gnunet-config.c:282 8667#: src/util/gnunet-config.c:305
8850#, fuzzy 8668#, fuzzy
8851msgid "print available configuration sections" 8669msgid "print available configuration sections"
8852msgstr "Lưu cấu hình ngay bây giờ không?" 8670msgstr "Lưu cấu hình ngay bây giờ không?"
8853 8671
8854#: src/util/gnunet-config.c:286 8672#: src/util/gnunet-config.c:309
8855msgid "write configuration file that only contains delta to defaults" 8673msgid "write configuration file that only contains delta to defaults"
8856msgstr "" 8674msgstr ""
8857 8675
8858#: src/util/gnunet-config.c:299 8676#: src/util/gnunet-config.c:322
8859#, fuzzy 8677#, fuzzy
8860msgid "Manipulate GNUnet configuration files" 8678msgid "Manipulate GNUnet configuration files"
8861msgstr "cập nhật một giá trị trong tập tin cấu hình" 8679msgstr "cập nhật một giá trị trong tập tin cấu hình"
8862 8680
8863#: src/util/gnunet-ecc.c:92 8681#: src/util/gnunet-ecc.c:94
8864#, fuzzy, c-format 8682#, fuzzy, c-format
8865msgid "Failed to open `%s': %s\n" 8683msgid "Failed to open `%s': %s\n"
8866msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" 8684msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
8867 8685
8868#: src/util/gnunet-ecc.c:128 8686#: src/util/gnunet-ecc.c:130
8869#, c-format 8687#, c-format
8870msgid "Generating %u keys like %s, please wait" 8688msgid "Generating %u keys like %s, please wait"
8871msgstr "" 8689msgstr ""
8872 8690
8873#: src/util/gnunet-ecc.c:141 8691#: src/util/gnunet-ecc.c:143
8874#, c-format 8692#, c-format
8875msgid "Generating %u keys, please wait" 8693msgid "Generating %u keys, please wait"
8876msgstr "" 8694msgstr ""
8877 8695
8878#: src/util/gnunet-ecc.c:182 8696#: src/util/gnunet-ecc.c:184
8879#, fuzzy, c-format 8697#, fuzzy, c-format
8880msgid "" 8698msgid ""
8881"\n" 8699"\n"
8882"Failed to write to `%s': %s\n" 8700"Failed to write to `%s': %s\n"
8883msgstr "Lỗi chạy %s: %s %d\n" 8701msgstr "Lỗi chạy %s: %s %d\n"
8884 8702
8885#: src/util/gnunet-ecc.c:192 8703#: src/util/gnunet-ecc.c:194
8886#, c-format 8704#, c-format
8887msgid "" 8705msgid ""
8888"\n" 8706"\n"
8889"Finished!\n" 8707"Finished!\n"
8890msgstr "" 8708msgstr ""
8891 8709
8892#: src/util/gnunet-ecc.c:195 8710#: src/util/gnunet-ecc.c:197
8893#, c-format 8711#, c-format
8894msgid "" 8712msgid ""
8895"\n" 8713"\n"
8896"Error, %u keys not generated\n" 8714"Error, %u keys not generated\n"
8897msgstr "" 8715msgstr ""
8898 8716
8899#: src/util/gnunet-ecc.c:288 8717#: src/util/gnunet-ecc.c:290
8900#, fuzzy, c-format 8718#, fuzzy, c-format
8901msgid "Hostkeys file `%s' not found\n" 8719msgid "Hostkeys file `%s' not found\n"
8902msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n" 8720msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
8903 8721
8904#: src/util/gnunet-ecc.c:303 8722#: src/util/gnunet-ecc.c:305
8905#, fuzzy, c-format 8723#, fuzzy, c-format
8906msgid "Hostkeys file `%s' is empty\n" 8724msgid "Hostkeys file `%s' is empty\n"
8907msgstr "Định dạng của tập tin « %s » là không hợp lệ.\n" 8725msgstr "Định dạng của tập tin « %s » là không hợp lệ.\n"
8908 8726
8909#: src/util/gnunet-ecc.c:332 8727#: src/util/gnunet-ecc.c:334
8910#, fuzzy, c-format 8728#, fuzzy, c-format
8911msgid "Could not read hostkey file: %s\n" 8729msgid "Could not read hostkey file: %s\n"
8912msgstr "Không thể đọc danh sách bạn bè « %s »\n" 8730msgstr "Không thể đọc danh sách bạn bè « %s »\n"
8913 8731
8914#: src/util/gnunet-ecc.c:389 8732#: src/util/gnunet-ecc.c:391
8915msgid "No hostkey file specified on command line\n" 8733msgid "No hostkey file specified on command line\n"
8916msgstr "" 8734msgstr ""
8917 8735
8918#: src/util/gnunet-ecc.c:454 8736#: src/util/gnunet-ecc.c:456
8919msgid "list keys included in a file (for testing)" 8737msgid "list keys included in a file (for testing)"
8920msgstr "" 8738msgstr ""
8921 8739
8922#: src/util/gnunet-ecc.c:459 8740#: src/util/gnunet-ecc.c:461
8923msgid "number of keys to list included in a file (for testing)" 8741msgid "number of keys to list included in a file (for testing)"
8924msgstr "" 8742msgstr ""
8925 8743
8926#: src/util/gnunet-ecc.c:464 8744#: src/util/gnunet-ecc.c:466
8927msgid "create COUNT public-private key pairs (for testing)" 8745msgid "create COUNT public-private key pairs (for testing)"
8928msgstr "" 8746msgstr ""
8929 8747
8930#: src/util/gnunet-ecc.c:468 8748#: src/util/gnunet-ecc.c:470
8931msgid "print the public key in ASCII format" 8749msgid "print the public key in ASCII format"
8932msgstr "" 8750msgstr ""
8933 8751
8934#: src/util/gnunet-ecc.c:472 8752#: src/util/gnunet-ecc.c:474
8935msgid "print the private key in ASCII format" 8753msgid "print the private key in ASCII format"
8936msgstr "" 8754msgstr ""
8937 8755
8938#: src/util/gnunet-ecc.c:476 8756#: src/util/gnunet-ecc.c:478
8939msgid "print the public key in HEX format" 8757msgid "print the public key in HEX format"
8940msgstr "" 8758msgstr ""
8941 8759
8942#: src/util/gnunet-ecc.c:480 8760#: src/util/gnunet-ecc.c:482
8943msgid "print examples of ECC operations (used for compatibility testing)" 8761msgid "print examples of ECC operations (used for compatibility testing)"
8944msgstr "" 8762msgstr ""
8945 8763
8946#: src/util/gnunet-ecc.c:496 8764#: src/util/gnunet-ecc.c:498
8947#, fuzzy 8765#, fuzzy
8948msgid "Manipulate GNUnet private ECC key files" 8766msgid "Manipulate GNUnet private ECC key files"
8949msgstr "cập nhật một giá trị trong tập tin cấu hình" 8767msgstr "cập nhật một giá trị trong tập tin cấu hình"
8950 8768
8951#: src/util/gnunet-resolver.c:166 8769#: src/util/gnunet-resolver.c:168
8952msgid "perform a reverse lookup" 8770msgid "perform a reverse lookup"
8953msgstr "" 8771msgstr ""
8954 8772
8955#: src/util/gnunet-resolver.c:177 8773#: src/util/gnunet-resolver.c:179
8956msgid "Use build-in GNUnet stub resolver" 8774msgid "Use build-in GNUnet stub resolver"
8957msgstr "" 8775msgstr ""
8958 8776
8959#: src/util/gnunet-scrypt.c:240 8777#: src/util/gnunet-scrypt.c:242
8960#, c-format 8778#, c-format
8961msgid "Loading hostkey from `%s' failed.\n" 8779msgid "Loading hostkey from `%s' failed.\n"
8962msgstr "" 8780msgstr ""
8963 8781
8964#: src/util/gnunet-scrypt.c:315 8782#: src/util/gnunet-scrypt.c:317
8965msgid "number of bits to require for the proof of work" 8783msgid "number of bits to require for the proof of work"
8966msgstr "" 8784msgstr ""
8967 8785
8968#: src/util/gnunet-scrypt.c:320 8786#: src/util/gnunet-scrypt.c:322
8969msgid "file with private key, otherwise default is used" 8787msgid "file with private key, otherwise default is used"
8970msgstr "" 8788msgstr ""
8971 8789
8972#: src/util/gnunet-scrypt.c:325 8790#: src/util/gnunet-scrypt.c:327
8973msgid "file with proof of work, otherwise default is used" 8791msgid "file with proof of work, otherwise default is used"
8974msgstr "" 8792msgstr ""
8975 8793
8976#: src/util/gnunet-scrypt.c:330 8794#: src/util/gnunet-scrypt.c:332
8977msgid "time to wait between calculations" 8795msgid "time to wait between calculations"
8978msgstr "" 8796msgstr ""
8979 8797
8980#: src/util/gnunet-scrypt.c:343 8798#: src/util/gnunet-scrypt.c:345
8981#, fuzzy 8799#, fuzzy
8982msgid "Manipulate GNUnet proof of work files" 8800msgid "Manipulate GNUnet proof of work files"
8983msgstr "cập nhật một giá trị trong tập tin cấu hình" 8801msgstr "cập nhật một giá trị trong tập tin cấu hình"
@@ -8986,490 +8804,616 @@ msgstr "cập nhật một giá trị trong tập tin cấu hình"
8986msgid "No DNS server available. DNS resolution will not be possible.\n" 8804msgid "No DNS server available. DNS resolution will not be possible.\n"
8987msgstr "" 8805msgstr ""
8988 8806
8989#: src/util/gnunet-uri.c:83 8807#: src/util/gnunet-uri.c:85
8990#, c-format 8808#, c-format
8991msgid "No URI specified on command line\n" 8809msgid "No URI specified on command line\n"
8992msgstr "" 8810msgstr ""
8993 8811
8994#: src/util/gnunet-uri.c:89 8812#: src/util/gnunet-uri.c:91
8995#, fuzzy, c-format 8813#, fuzzy, c-format
8996msgid "Invalid URI: does not start with `%s'\n" 8814msgid "Invalid URI: does not start with `%s'\n"
8997msgstr "Ký hiệu mạng sai (không kết thúc với « ; »: « %s »)\n" 8815msgstr "Ký hiệu mạng sai (không kết thúc với « ; »: « %s »)\n"
8998 8816
8999#: src/util/gnunet-uri.c:96 8817#: src/util/gnunet-uri.c:98
9000#, c-format 8818#, c-format
9001msgid "Invalid URI: fails to specify subsystem\n" 8819msgid "Invalid URI: fails to specify subsystem\n"
9002msgstr "" 8820msgstr ""
9003 8821
9004#: src/util/gnunet-uri.c:106 8822#: src/util/gnunet-uri.c:108
9005#, c-format 8823#, c-format
9006msgid "No handler known for subsystem `%s'\n" 8824msgid "No handler known for subsystem `%s'\n"
9007msgstr "" 8825msgstr ""
9008 8826
9009#: src/util/gnunet-uri.c:168 8827#: src/util/gnunet-uri.c:170
9010msgid "Perform default-actions for GNUnet URIs" 8828msgid "Perform default-actions for GNUnet URIs"
9011msgstr "" 8829msgstr ""
9012 8830
9013#: src/util/helper.c:333 8831#: src/util/helper.c:335
9014#, fuzzy, c-format 8832#, fuzzy, c-format
9015msgid "Error reading from `%s': %s\n" 8833msgid "Error reading from `%s': %s\n"
9016msgstr "Gặp lỗi khi tạo người dùng" 8834msgstr "Gặp lỗi khi tạo người dùng"
9017 8835
9018#: src/util/helper.c:384 8836#: src/util/helper.c:386
9019#, fuzzy, c-format 8837#, fuzzy, c-format
9020msgid "Failed to parse inbound message from helper `%s'\n" 8838msgid "Failed to parse inbound message from helper `%s'\n"
9021msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" 8839msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
9022 8840
9023#: src/util/helper.c:604 8841#: src/util/helper.c:606
9024#, fuzzy, c-format 8842#, fuzzy, c-format
9025msgid "Error writing to `%s': %s\n" 8843msgid "Error writing to `%s': %s\n"
9026msgstr "Gặp lỗi khi tạo người dùng" 8844msgstr "Gặp lỗi khi tạo người dùng"
9027 8845
9028#: src/util/network.c:134 8846#: src/util/network.c:136
9029#, c-format 8847#, c-format
9030msgid "Unable to shorten unix path `%s' while keeping name unique\n" 8848msgid "Unable to shorten unix path `%s' while keeping name unique\n"
9031msgstr "" 8849msgstr ""
9032 8850
9033#: src/util/network.c:1793 src/util/network.c:1977 8851#: src/util/network.c:1794 src/util/network.c:1978
9034#, c-format 8852#, c-format
9035msgid "" 8853msgid ""
9036"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n" 8854"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
9037msgstr "" 8855msgstr ""
9038 8856
9039#: src/util/os_installation.c:507 8857#: src/util/os_installation.c:509
9040#, c-format 8858#, c-format
9041msgid "" 8859msgid ""
9042"Could not determine installation path for %s. Set `%s' environment " 8860"Could not determine installation path for %s. Set `%s' environment "
9043"variable.\n" 8861"variable.\n"
9044msgstr "" 8862msgstr ""
9045 8863
9046#: src/util/os_installation.c:879 8864#: src/util/os_installation.c:881
9047#, fuzzy, c-format 8865#, fuzzy, c-format
9048msgid "Could not find binary `%s' in PATH!\n" 8866msgid "Could not find binary `%s' in PATH!\n"
9049msgstr "Không thể đọc danh sách bạn bè « %s »\n" 8867msgstr "Không thể đọc danh sách bạn bè « %s »\n"
9050 8868
9051#: src/util/os_installation.c:920 8869#: src/util/os_installation.c:922
9052#, c-format 8870#, c-format
9053msgid "Binary `%s' exists, but is not SUID\n" 8871msgid "Binary `%s' exists, but is not SUID\n"
9054msgstr "" 8872msgstr ""
9055 8873
9056#: src/util/os_installation.c:951 8874#: src/util/os_installation.c:953
9057#, fuzzy, c-format 8875#, fuzzy, c-format
9058msgid "CreateProcess failed for binary %s (%d).\n" 8876msgid "CreateProcess failed for binary %s (%d).\n"
9059msgstr "« %s » thất bại cho ổ đĩa « %s »: %u\n" 8877msgstr "« %s » thất bại cho ổ đĩa « %s »: %u\n"
9060 8878
9061#: src/util/os_installation.c:961 8879#: src/util/os_installation.c:963
9062#, c-format 8880#, c-format
9063msgid "GetExitCodeProcess failed for binary %s (%d).\n" 8881msgid "GetExitCodeProcess failed for binary %s (%d).\n"
9064msgstr "" 8882msgstr ""
9065 8883
9066#: src/util/plugin.c:84 8884#: src/util/plugin.c:86
9067#, c-format 8885#, c-format
9068msgid "Initialization of plugin mechanism failed: %s!\n" 8886msgid "Initialization of plugin mechanism failed: %s!\n"
9069msgstr "Lỗi sơ khởi cơ chế phần bổ sung: %s\n" 8887msgstr "Lỗi sơ khởi cơ chế phần bổ sung: %s\n"
9070 8888
9071#: src/util/plugin.c:149 8889#: src/util/plugin.c:151
9072#, c-format 8890#, c-format
9073msgid "`%s' failed to resolve method '%s' with error: %s\n" 8891msgid "`%s' failed to resolve method '%s' with error: %s\n"
9074msgstr "« %s » không giải quyết được phương pháp « %s », với lỗi: %s\n" 8892msgstr "« %s » không giải quyết được phương pháp « %s », với lỗi: %s\n"
9075 8893
9076#: src/util/plugin.c:224 8894#: src/util/plugin.c:226
9077#, c-format 8895#, c-format
9078msgid "`%s' failed for library `%s' with error: %s\n" 8896msgid "`%s' failed for library `%s' with error: %s\n"
9079msgstr "« %s » thất bại cho thư viện « %s » với lỗi: %s\n" 8897msgstr "« %s » thất bại cho thư viện « %s » với lỗi: %s\n"
9080 8898
9081#: src/util/plugin.c:383 8899#: src/util/plugin.c:385
9082#, fuzzy 8900#, fuzzy
9083msgid "Could not determine plugin installation path.\n" 8901msgid "Could not determine plugin installation path.\n"
9084msgstr "Không thể truy cập đến thông tin về không gian tên.\n" 8902msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
9085 8903
9086#: src/util/regex.c:132 8904#: src/util/program.c:283
8905#, fuzzy, c-format
8906msgid "Unreadable or malformed configuration file `%s', exit ...\n"
8907msgstr "Không thể lưu tập tin cấu hình « %s »:"
8908
8909#: src/util/program.c:301
8910#, fuzzy, c-format
8911msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
8912msgstr "Không thể lưu tập tin cấu hình « %s »:"
8913
8914#: src/util/program.c:318
8915#, fuzzy
8916msgid "Unreadable or malformed configuration, exit ...\n"
8917msgstr "Không thể lưu tập tin cấu hình « %s »:"
8918
8919#: src/util/regex.c:134
9087#, c-format 8920#, c-format
9088msgid "Bad mask: %d\n" 8921msgid "Bad mask: %d\n"
9089msgstr "" 8922msgstr ""
9090 8923
9091#: src/util/resolver_api.c:216 8924#: src/util/resolver_api.c:218
9092#, c-format 8925#, c-format
9093msgid "" 8926msgid ""
9094"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n" 8927"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n"
9095msgstr "" 8928msgstr ""
9096 8929
9097#: src/util/resolver_api.c:237 8930#: src/util/resolver_api.c:239
9098#, c-format 8931#, c-format
9099msgid "" 8932msgid ""
9100"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS " 8933"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS "
9101"resolution will be unavailable.\n" 8934"resolution will be unavailable.\n"
9102msgstr "" 8935msgstr ""
9103 8936
9104#: src/util/resolver_api.c:873 8937#: src/util/resolver_api.c:875
9105#, fuzzy, c-format 8938#, fuzzy, c-format
9106msgid "Timeout trying to resolve hostname `%s'.\n" 8939msgid "Timeout trying to resolve hostname `%s'.\n"
9107msgstr "không quyết định các tên máy" 8940msgstr "không quyết định các tên máy"
9108 8941
9109#: src/util/resolver_api.c:886 8942#: src/util/resolver_api.c:888
9110#, fuzzy, c-format 8943#, fuzzy, c-format
9111msgid "Timeout trying to resolve IP address `%s'.\n" 8944msgid "Timeout trying to resolve IP address `%s'.\n"
9112msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n" 8945msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n"
9113 8946
9114#: src/util/resolver_api.c:1071 8947#: src/util/resolver_api.c:1073
9115msgid "Resolver not configured correctly.\n" 8948msgid "Resolver not configured correctly.\n"
9116msgstr "" 8949msgstr ""
9117 8950
9118#: src/util/resolver_api.c:1158 src/util/resolver_api.c:1181 8951#: src/util/resolver_api.c:1160 src/util/resolver_api.c:1183
9119#: src/util/resolver_api.c:1195 8952#: src/util/resolver_api.c:1197
9120#, fuzzy, c-format 8953#, fuzzy, c-format
9121msgid "Could not resolve our FQDN: %s\n" 8954msgid "Could not resolve our FQDN: %s\n"
9122msgstr "Không thể giải quyết « %s » (%s): %s\n" 8955msgstr "Không thể giải quyết « %s » (%s): %s\n"
9123 8956
9124#: src/util/service.c:1303 8957#: src/util/service.c:674
9125msgid ""
9126"Could not bind to any of the ports I was supposed to, refusing to run!\n"
9127msgstr ""
9128
9129#: src/util/service.c:2123
9130#, c-format 8958#, c-format
9131msgid "" 8959msgid ""
9132"Processing code for message of type %u did not call " 8960"Processing code for message of type %u did not call "
9133"`GNUNET_SERVICE_client_continue' after %s\n" 8961"`GNUNET_SERVICE_client_continue' after %s\n"
9134msgstr "" 8962msgstr ""
9135 8963
9136#: src/util/signal.c:87 8964#: src/util/service.c:1862
8965msgid ""
8966"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8967msgstr ""
8968
8969#: src/util/signal.c:89
9137#, c-format 8970#, c-format
9138msgid "signal (%d, %p) returned %d.\n" 8971msgid "signal (%d, %p) returned %d.\n"
9139msgstr "" 8972msgstr ""
9140 8973
9141#: src/util/socks.c:595 8974#: src/util/socks.c:597
9142#, c-format 8975#, c-format
9143msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n" 8976msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
9144msgstr "" 8977msgstr ""
9145 8978
9146#: src/util/socks.c:614 8979#: src/util/socks.c:616
9147#, c-format 8980#, c-format
9148msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n" 8981msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
9149msgstr "" 8982msgstr ""
9150 8983
9151#: src/util/strings.c:174 8984#: src/util/strings.c:176
9152msgid "b" 8985msgid "b"
9153msgstr "b" 8986msgstr "b"
9154 8987
9155#: src/util/strings.c:471 8988#: src/util/strings.c:475
9156#, c-format 8989#, c-format
9157msgid "Character sets requested were `%s'->`%s'\n" 8990msgid "Character sets requested were `%s'->`%s'\n"
9158msgstr "" 8991msgstr ""
9159 8992
9160#: src/util/strings.c:598 8993#: src/util/strings.c:602
9161msgid "Failed to expand `$HOME': environment variable `HOME' not set" 8994msgid "Failed to expand `$HOME': environment variable `HOME' not set"
9162msgstr "" 8995msgstr ""
9163"Lỗi mở rộng biến môi trường « $HOME »: chưa đặt biến môi trường « HOME »" 8996"Lỗi mở rộng biến môi trường « $HOME »: chưa đặt biến môi trường « HOME »"
9164 8997
9165#: src/util/strings.c:702 8998#: src/util/strings.c:706
9166msgid "µs" 8999msgid "µs"
9167msgstr "" 9000msgstr ""
9168 9001
9169#: src/util/strings.c:706 9002#: src/util/strings.c:710
9170msgid "forever" 9003msgid "forever"
9171msgstr "" 9004msgstr ""
9172 9005
9173#: src/util/strings.c:708 9006#: src/util/strings.c:712
9174msgid "0 ms" 9007msgid "0 ms"
9175msgstr "" 9008msgstr ""
9176 9009
9177#: src/util/strings.c:714 9010#: src/util/strings.c:718
9178msgid "ms" 9011msgid "ms"
9179msgstr "mg" 9012msgstr "mg"
9180 9013
9181#: src/util/strings.c:720 9014#: src/util/strings.c:724
9182msgid "s" 9015msgid "s"
9183msgstr "g" 9016msgstr "g"
9184 9017
9185#: src/util/strings.c:726 9018#: src/util/strings.c:730
9186msgid "m" 9019msgid "m"
9187msgstr "p" 9020msgstr "p"
9188 9021
9189#: src/util/strings.c:732 9022#: src/util/strings.c:736
9190msgid "h" 9023msgid "h"
9191msgstr "g" 9024msgstr "g"
9192 9025
9193#: src/util/strings.c:739 9026#: src/util/strings.c:743
9194#, fuzzy 9027#, fuzzy
9195msgid "day" 9028msgid "day"
9196msgstr " ngày" 9029msgstr " ngày"
9197 9030
9198#: src/util/strings.c:741 9031#: src/util/strings.c:745
9199#, fuzzy 9032#, fuzzy
9200msgid "days" 9033msgid "days"
9201msgstr " ngày" 9034msgstr " ngày"
9202 9035
9203#: src/util/strings.c:770 9036#: src/util/strings.c:774
9204msgid "end of time" 9037msgid "end of time"
9205msgstr "" 9038msgstr ""
9206 9039
9207#: src/util/strings.c:1272 9040#: src/util/strings.c:1277
9208msgid "IPv6 address did not start with `['\n" 9041msgid "IPv6 address did not start with `['\n"
9209msgstr "" 9042msgstr ""
9210 9043
9211#: src/util/strings.c:1280 9044#: src/util/strings.c:1285
9212msgid "IPv6 address did contain ':' to separate port number\n" 9045msgid "IPv6 address did contain ':' to separate port number\n"
9213msgstr "" 9046msgstr ""
9214 9047
9215#: src/util/strings.c:1286 9048#: src/util/strings.c:1291
9216msgid "IPv6 address did contain ']' before ':' to separate port number\n" 9049msgid "IPv6 address did contain ']' before ':' to separate port number\n"
9217msgstr "" 9050msgstr ""
9218 9051
9219#: src/util/strings.c:1293 9052#: src/util/strings.c:1301
9220msgid "IPv6 address did contain a valid port number after the last ':'\n" 9053msgid "IPv6 address did contain a valid port number after the last ':'\n"
9221msgstr "" 9054msgstr ""
9222 9055
9223#: src/util/strings.c:1302 9056#: src/util/strings.c:1310
9224#, fuzzy, c-format 9057#, fuzzy, c-format
9225msgid "Invalid IPv6 address `%s': %s\n" 9058msgid "Invalid IPv6 address `%s': %s\n"
9226msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n" 9059msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
9227 9060
9228#: src/util/strings.c:1574 src/util/strings.c:1590 9061#: src/util/strings.c:1586 src/util/strings.c:1602
9229msgid "Port not in range\n" 9062msgid "Port not in range\n"
9230msgstr "" 9063msgstr ""
9231 9064
9232#: src/util/strings.c:1599 9065#: src/util/strings.c:1611
9233#, fuzzy, c-format 9066#, fuzzy, c-format
9234msgid "Malformed port policy `%s'\n" 9067msgid "Malformed port policy `%s'\n"
9235msgstr "Lỗi bắt đầu thu thập.\n" 9068msgstr "Lỗi bắt đầu thu thập.\n"
9236 9069
9237#: src/util/strings.c:1682 src/util/strings.c:1713 src/util/strings.c:1761 9070#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
9238#: src/util/strings.c:1782 9071#: src/util/strings.c:1798
9239#, c-format 9072#, c-format
9240msgid "Invalid format for IP: `%s'\n" 9073msgid "Invalid format for IP: `%s'\n"
9241msgstr "Địa chỉ IP định dạng sai: %s\n" 9074msgstr "Địa chỉ IP định dạng sai: %s\n"
9242 9075
9243#: src/util/strings.c:1739 9076#: src/util/strings.c:1754
9244#, c-format 9077#, c-format
9245msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)." 9078msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
9246msgstr "Ký hiệu mạng sai (« /%d » không hợp lệ trong CIDR IPv4)." 9079msgstr "Ký hiệu mạng sai (« /%d » không hợp lệ trong CIDR IPv4)."
9247 9080
9248#: src/util/strings.c:1791 9081#: src/util/strings.c:1807
9249#, fuzzy, c-format 9082#, fuzzy, c-format
9250msgid "Invalid format: `%s'\n" 9083msgid "Invalid format: `%s'\n"
9251msgstr "Địa chỉ IP định dạng sai: %s\n" 9084msgstr "Địa chỉ IP định dạng sai: %s\n"
9252 9085
9253#: src/util/strings.c:1843 9086#: src/util/strings.c:1860
9254#, c-format 9087#, c-format
9255msgid "Invalid network notation (does not end with ';': `%s')\n" 9088msgid "Invalid network notation (does not end with ';': `%s')\n"
9256msgstr "Ký hiệu mạng sai (không kết thúc với « ; »: « %s »)\n" 9089msgstr "Ký hiệu mạng sai (không kết thúc với « ; »: « %s »)\n"
9257 9090
9258#: src/util/strings.c:1893 9091#: src/util/strings.c:1914
9259#, fuzzy, c-format 9092#, fuzzy, c-format
9260msgid "Wrong format `%s' for netmask\n" 9093msgid "Wrong format `%s' for netmask\n"
9261msgstr "Mặt nạ mạng có định dạng sai « %s »: %s\n" 9094msgstr "Mặt nạ mạng có định dạng sai « %s »: %s\n"
9262 9095
9263#: src/util/strings.c:1924 9096#: src/util/strings.c:1945
9264#, fuzzy, c-format 9097#, fuzzy, c-format
9265msgid "Wrong format `%s' for network\n" 9098msgid "Wrong format `%s' for network\n"
9266msgstr "Mạng có định dạng sai « %s »: %s\n" 9099msgstr "Mạng có định dạng sai « %s »: %s\n"
9267 9100
9268#: src/vpn/gnunet-service-vpn.c:538 src/vpn/gnunet-service-vpn.c:1805 9101#: src/util/time.c:828 src/util/time.c:860
9102#, c-format
9103msgid "Failed to map `%s', cannot assure monotonic time!\n"
9104msgstr ""
9105
9106#: src/util/time.c:866
9107#, c-format
9108msgid ""
9109"Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
9110msgstr ""
9111
9112#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
9269#, fuzzy 9113#, fuzzy
9270msgid "# Active channels" 9114msgid "# Active channels"
9271msgstr "# các kết nối dht" 9115msgstr "# các kết nối dht"
9272 9116
9273#: src/vpn/gnunet-service-vpn.c:597 9117#: src/vpn/gnunet-service-vpn.c:599
9274#, fuzzy 9118#, fuzzy
9275msgid "# Messages dropped in cadet queue (overflow)" 9119msgid "# Messages dropped in cadet queue (overflow)"
9276msgstr "# các byte loại bỏ bởi UDP (đi ra)" 9120msgstr "# các byte loại bỏ bởi UDP (đi ra)"
9277 9121
9278#: src/vpn/gnunet-service-vpn.c:751 9122#: src/vpn/gnunet-service-vpn.c:753
9279#, fuzzy 9123#, fuzzy
9280msgid "# ICMP packets received from cadet" 9124msgid "# ICMP packets received from cadet"
9281msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" 9125msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
9282 9126
9283#: src/vpn/gnunet-service-vpn.c:1094 9127#: src/vpn/gnunet-service-vpn.c:1096
9284#, fuzzy 9128#, fuzzy
9285msgid "# UDP packets received from cadet" 9129msgid "# UDP packets received from cadet"
9286msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" 9130msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
9287 9131
9288#: src/vpn/gnunet-service-vpn.c:1253 9132#: src/vpn/gnunet-service-vpn.c:1255
9289#, fuzzy 9133#, fuzzy
9290msgid "# TCP packets received from cadet" 9134msgid "# TCP packets received from cadet"
9291msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" 9135msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
9292 9136
9293#: src/vpn/gnunet-service-vpn.c:1465 9137#: src/vpn/gnunet-service-vpn.c:1467
9294#, fuzzy 9138#, fuzzy
9295msgid "# Cadet channels created" 9139msgid "# Cadet channels created"
9296msgstr "# các truy vấn lỗ hổng được định tuyến" 9140msgstr "# các truy vấn lỗ hổng được định tuyến"
9297 9141
9298#: src/vpn/gnunet-service-vpn.c:1685 9142#: src/vpn/gnunet-service-vpn.c:1687
9299#, c-format 9143#, c-format
9300msgid "Protocol %u not supported, dropping\n" 9144msgid "Protocol %u not supported, dropping\n"
9301msgstr "" 9145msgstr ""
9302 9146
9303#: src/vpn/gnunet-service-vpn.c:1824 9147#: src/vpn/gnunet-service-vpn.c:1826
9304#, fuzzy 9148#, fuzzy
9305msgid "# Packets dropped (channel not yet online)" 9149msgid "# Packets dropped (channel not yet online)"
9306msgstr "# các byte loại bỏ bởi UDP (đi ra)" 9150msgstr "# các byte loại bỏ bởi UDP (đi ra)"
9307 9151
9308#: src/vpn/gnunet-service-vpn.c:2004 9152#: src/vpn/gnunet-service-vpn.c:2006
9309msgid "# ICMPv4 packets dropped (not allowed)" 9153msgid "# ICMPv4 packets dropped (not allowed)"
9310msgstr "" 9154msgstr ""
9311 9155
9312#: src/vpn/gnunet-service-vpn.c:2025 9156#: src/vpn/gnunet-service-vpn.c:2027
9313msgid "# ICMPv6 packets dropped (not allowed)" 9157msgid "# ICMPv6 packets dropped (not allowed)"
9314msgstr "" 9158msgstr ""
9315 9159
9316#: src/vpn/gnunet-service-vpn.c:2233 9160#: src/vpn/gnunet-service-vpn.c:2235
9317#, fuzzy 9161#, fuzzy
9318msgid "# Packets received from TUN interface" 9162msgid "# Packets received from TUN interface"
9319msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách" 9163msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
9320 9164
9321#: src/vpn/gnunet-service-vpn.c:2266 src/vpn/gnunet-service-vpn.c:2302 9165#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
9322#, c-format 9166#, c-format
9323msgid "Packet received for unmapped destination `%s' (dropping it)\n" 9167msgid "Packet received for unmapped destination `%s' (dropping it)\n"
9324msgstr "" 9168msgstr ""
9325 9169
9326#: src/vpn/gnunet-service-vpn.c:2312 9170#: src/vpn/gnunet-service-vpn.c:2314
9327msgid "Received IPv4 packet with options (dropping it)\n" 9171msgid "Received IPv4 packet with options (dropping it)\n"
9328msgstr "" 9172msgstr ""
9329 9173
9330#: src/vpn/gnunet-service-vpn.c:2326 9174#: src/vpn/gnunet-service-vpn.c:2328
9331#, c-format 9175#, c-format
9332msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" 9176msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
9333msgstr "" 9177msgstr ""
9334 9178
9335#: src/vpn/gnunet-service-vpn.c:2365 9179#: src/vpn/gnunet-service-vpn.c:2367
9336msgid "Failed to find unallocated IPv4 address in VPN's range\n" 9180msgid "Failed to find unallocated IPv4 address in VPN's range\n"
9337msgstr "" 9181msgstr ""
9338 9182
9339#: src/vpn/gnunet-service-vpn.c:2420 9183#: src/vpn/gnunet-service-vpn.c:2422
9340msgid "Failed to find unallocated IPv6 address in VPN's range\n" 9184msgid "Failed to find unallocated IPv6 address in VPN's range\n"
9341msgstr "" 9185msgstr ""
9342 9186
9343#: src/vpn/gnunet-service-vpn.c:2462 src/vpn/gnunet-service-vpn.c:2684 9187#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
9344#, fuzzy 9188#, fuzzy
9345msgid "# Active destinations" 9189msgid "# Active destinations"
9346msgstr "# các kết nối dht" 9190msgstr "# các kết nối dht"
9347 9191
9348#: src/vpn/gnunet-service-vpn.c:2733 9192#: src/vpn/gnunet-service-vpn.c:2735
9349msgid "Failed to allocate IP address for new destination\n" 9193msgid "Failed to allocate IP address for new destination\n"
9350msgstr "" 9194msgstr ""
9351 9195
9352#: src/vpn/gnunet-service-vpn.c:2996 9196#: src/vpn/gnunet-service-vpn.c:2998
9353#, fuzzy 9197#, fuzzy
9354msgid "Must specify valid IPv6 address" 9198msgid "Must specify valid IPv6 address"
9355msgstr "« %s » không sẵn sàng.\n" 9199msgstr "« %s » không sẵn sàng.\n"
9356 9200
9357#: src/vpn/gnunet-service-vpn.c:3020 9201#: src/vpn/gnunet-service-vpn.c:3022
9358msgid "Must specify valid IPv6 mask" 9202msgid "Must specify valid IPv6 mask"
9359msgstr "" 9203msgstr ""
9360 9204
9361#: src/vpn/gnunet-service-vpn.c:3028 9205#: src/vpn/gnunet-service-vpn.c:3030
9362msgid "IPv6 support disabled as this system does not support IPv6\n" 9206msgid "IPv6 support disabled as this system does not support IPv6\n"
9363msgstr "" 9207msgstr ""
9364 9208
9365#: src/vpn/gnunet-service-vpn.c:3041 9209#: src/vpn/gnunet-service-vpn.c:3043
9366#, fuzzy 9210#, fuzzy
9367msgid "Must specify valid IPv4 address" 9211msgid "Must specify valid IPv4 address"
9368msgstr "« %s » không sẵn sàng.\n" 9212msgstr "« %s » không sẵn sàng.\n"
9369 9213
9370#: src/vpn/gnunet-service-vpn.c:3054 9214#: src/vpn/gnunet-service-vpn.c:3056
9371msgid "Must specify valid IPv4 mask" 9215msgid "Must specify valid IPv4 mask"
9372msgstr "" 9216msgstr ""
9373 9217
9374#: src/vpn/gnunet-service-vpn.c:3064 9218#: src/vpn/gnunet-service-vpn.c:3066
9375msgid "IPv4 support disabled as this system does not support IPv4\n" 9219msgid "IPv4 support disabled as this system does not support IPv4\n"
9376msgstr "" 9220msgstr ""
9377 9221
9378#: src/vpn/gnunet-vpn.c:145 9222#: src/vpn/gnunet-vpn.c:147
9379#, fuzzy 9223#, fuzzy
9380msgid "Error creating tunnel\n" 9224msgid "Error creating tunnel\n"
9381msgstr "Hoàn thành tạo khoá.\n" 9225msgstr "Hoàn thành tạo khoá.\n"
9382 9226
9383#: src/vpn/gnunet-vpn.c:189 src/vpn/gnunet-vpn.c:220 9227#: src/vpn/gnunet-vpn.c:191 src/vpn/gnunet-vpn.c:222
9384#, fuzzy, c-format 9228#, fuzzy, c-format
9385msgid "Option `%s' makes no sense with option `%s'.\n" 9229msgid "Option `%s' makes no sense with option `%s'.\n"
9386msgstr "Tùy chọn « %s » không có nghĩa khi không có tùy chọn « %s ».\n" 9230msgstr "Tùy chọn « %s » không có nghĩa khi không có tùy chọn « %s ».\n"
9387 9231
9388#: src/vpn/gnunet-vpn.c:202 9232#: src/vpn/gnunet-vpn.c:204
9389#, fuzzy, c-format 9233#, fuzzy, c-format
9390msgid "Option `%s' or `%s' is required.\n" 9234msgid "Option `%s' or `%s' is required.\n"
9391msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n" 9235msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n"
9392 9236
9393#: src/vpn/gnunet-vpn.c:214 9237#: src/vpn/gnunet-vpn.c:216
9394#, fuzzy, c-format 9238#, fuzzy, c-format
9395msgid "Option `%s' or `%s' is required when using option `%s'.\n" 9239msgid "Option `%s' or `%s' is required when using option `%s'.\n"
9396msgstr "Tùy chọn « %s » cần thiết khi dùng tùy chọn « %s ».\n" 9240msgstr "Tùy chọn « %s » cần thiết khi dùng tùy chọn « %s ».\n"
9397 9241
9398#: src/vpn/gnunet-vpn.c:234 9242#: src/vpn/gnunet-vpn.c:236
9399#, fuzzy, c-format 9243#, fuzzy, c-format
9400msgid "`%s' is not a valid peer identifier.\n" 9244msgid "`%s' is not a valid peer identifier.\n"
9401msgstr "« %s » không sẵn sàng.\n" 9245msgstr "« %s » không sẵn sàng.\n"
9402 9246
9403#: src/vpn/gnunet-vpn.c:254 9247#: src/vpn/gnunet-vpn.c:256
9404#, fuzzy, c-format 9248#, fuzzy, c-format
9405msgid "`%s' is not a valid IP address.\n" 9249msgid "`%s' is not a valid IP address.\n"
9406msgstr "« %s » không sẵn sàng.\n" 9250msgstr "« %s » không sẵn sàng.\n"
9407 9251
9408#: src/vpn/gnunet-vpn.c:290 9252#: src/vpn/gnunet-vpn.c:292
9409msgid "request that result should be an IPv4 address" 9253msgid "request that result should be an IPv4 address"
9410msgstr "" 9254msgstr ""
9411 9255
9412#: src/vpn/gnunet-vpn.c:295 9256#: src/vpn/gnunet-vpn.c:297
9413msgid "request that result should be an IPv6 address" 9257msgid "request that result should be an IPv6 address"
9414msgstr "" 9258msgstr ""
9415 9259
9416#: src/vpn/gnunet-vpn.c:301 9260#: src/vpn/gnunet-vpn.c:303
9417msgid "how long should the mapping be valid for new tunnels?" 9261msgid "how long should the mapping be valid for new tunnels?"
9418msgstr "" 9262msgstr ""
9419 9263
9420#: src/vpn/gnunet-vpn.c:307 9264#: src/vpn/gnunet-vpn.c:309
9421msgid "destination IP for the tunnel" 9265msgid "destination IP for the tunnel"
9422msgstr "" 9266msgstr ""
9423 9267
9424#: src/vpn/gnunet-vpn.c:313 9268#: src/vpn/gnunet-vpn.c:315
9425msgid "peer offering the service we would like to access" 9269msgid "peer offering the service we would like to access"
9426msgstr "" 9270msgstr ""
9427 9271
9428#: src/vpn/gnunet-vpn.c:319 9272#: src/vpn/gnunet-vpn.c:321
9429msgid "name of the service we would like to access" 9273msgid "name of the service we would like to access"
9430msgstr "" 9274msgstr ""
9431 9275
9432#: src/vpn/gnunet-vpn.c:324 9276#: src/vpn/gnunet-vpn.c:326
9433#, fuzzy 9277#, fuzzy
9434msgid "service is offered via TCP" 9278msgid "service is offered via TCP"
9435msgstr "# các byte đã nhận qua TCP" 9279msgstr "# các byte đã nhận qua TCP"
9436 9280
9437#: src/vpn/gnunet-vpn.c:329 9281#: src/vpn/gnunet-vpn.c:331
9438#, fuzzy 9282#, fuzzy
9439msgid "service is offered via UDP" 9283msgid "service is offered via UDP"
9440msgstr "# các byte đã nhận qua UDP" 9284msgstr "# các byte đã nhận qua UDP"
9441 9285
9442#: src/vpn/gnunet-vpn.c:342 9286#: src/vpn/gnunet-vpn.c:344
9443msgid "Setup tunnels via VPN." 9287msgid "Setup tunnels via VPN."
9444msgstr "" 9288msgstr ""
9445 9289
9446#: src/zonemaster/gnunet-service-zonemaster.c:836 9290#: src/zonemaster/gnunet-service-zonemaster.c:838
9447#: src/zonemaster/gnunet-service-zonemaster-monitor.c:414 9291#: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
9448#, fuzzy 9292#, fuzzy
9449msgid "Failed to connect to the namestore!\n" 9293msgid "Failed to connect to the namestore!\n"
9450msgstr "Không kết nối được đến trình nền gnunetd." 9294msgstr "Không kết nối được đến trình nền gnunetd."
9451 9295
9452#: src/include/gnunet_common.h:770 src/include/gnunet_common.h:777 9296#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
9453#: src/include/gnunet_common.h:787 9297#: src/include/gnunet_common.h:789
9454#, fuzzy, c-format 9298#, fuzzy, c-format
9455msgid "Assertion failed at %s:%d. Aborting.\n" 9299msgid "Assertion failed at %s:%d. Aborting.\n"
9456msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" 9300msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
9457 9301
9458#: src/include/gnunet_common.h:795 9302#: src/include/gnunet_common.h:797
9459#, fuzzy, c-format 9303#, fuzzy, c-format
9460msgid "Assertion failed at %s:%d.\n" 9304msgid "Assertion failed at %s:%d.\n"
9461msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" 9305msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
9462 9306
9463#: src/include/gnunet_common.h:807 9307#: src/include/gnunet_common.h:809
9464#, fuzzy, c-format 9308#, fuzzy, c-format
9465msgid "External protocol violation detected at %s:%d.\n" 9309msgid "External protocol violation detected at %s:%d.\n"
9466msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n" 9310msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
9467 9311
9468#: src/include/gnunet_common.h:834 src/include/gnunet_common.h:843 9312#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
9469#, c-format 9313#, c-format
9470msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" 9314msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
9471msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s\n" 9315msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s\n"
9472 9316
9317#, fuzzy
9318#~ msgid "Invalid tunnel owner `%s'\n"
9319#~ msgstr "Địa chỉ IP định dạng sai: %s\n"
9320
9321#, fuzzy
9322#~ msgid "Provide information about a particular tunnel"
9323#~ msgstr "In ra thông tin về các đồng đẳng GNUnet."
9324
9325#, fuzzy
9326#~ msgid "Failed to store membership information!\n"
9327#~ msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
9328
9329#, fuzzy
9330#~ msgid "Failed to test membership!\n"
9331#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
9332
9333#, fuzzy
9334#~ msgid "Dropping invalid fragment\n"
9335#~ msgstr "Đối số không hợp lệ cho « %s ».\n"
9336
9337#, fuzzy
9338#~ msgid "Failed to store fragment\n"
9339#~ msgstr "Lỗi bắt đầu thu thập.\n"
9340
9341#, fuzzy
9342#~ msgid "Failed to get fragment!\n"
9343#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
9344
9345#, fuzzy
9346#~ msgid "Failed to get message!\n"
9347#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
9348
9349#, fuzzy
9350#~ msgid "Failed to get message fragment!\n"
9351#~ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
9352
9353#, fuzzy
9354#~ msgid "Failed to get master counters!\n"
9355#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
9356
9357#, fuzzy
9358#~ msgid "Failed to begin modifying state: %d\n"
9359#~ msgstr "Lỗi bắt đầu thu thập.\n"
9360
9361#, fuzzy
9362#~ msgid "Failed to modify state: %d\n"
9363#~ msgstr "Lỗi bắt đầu thu thập.\n"
9364
9365#, fuzzy
9366#~ msgid "Failed to end modifying state!\n"
9367#~ msgstr "Lỗi bắt đầu thu thập.\n"
9368
9369#, fuzzy
9370#~ msgid "Failed to begin synchronizing state!\n"
9371#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
9372
9373#, fuzzy
9374#~ msgid "Failed to end synchronizing state!\n"
9375#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
9376
9377#, fuzzy
9378#~ msgid "Failed to reset state!\n"
9379#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
9380
9381#, fuzzy
9382#~ msgid "Failed to get state variable!\n"
9383#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
9384
9385#, fuzzy
9386#~ msgid "Unable to initialize Mysql.\n"
9387#~ msgstr "Không thể sơ khởi SQLite: %s.\n"
9388
9389#, fuzzy
9390#~ msgid "Failed to run SQL statement `%s'\n"
9391#~ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
9392
9393#, fuzzy
9394#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
9395#~ msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
9396
9397#, fuzzy
9398#~ msgid "SQLite database running\n"
9399#~ msgstr "kho dữ liệu sqlite"
9400
9401#, fuzzy
9402#~ msgid "--place missing or invalid.\n"
9403#~ msgstr "Đối số không hợp lệ cho « %s ».\n"
9404
9405#, fuzzy
9406#~ msgid "name or public key of ego"
9407#~ msgstr "Đối số không hợp lệ cho « %s ».\n"
9408
9409#, fuzzy
9410#~ msgid "wait for incoming messages"
9411#~ msgstr "Lỗi gửi tin nhẳn.\n"
9412
9413#, fuzzy
9414#~ msgid "number of messages to replay from history"
9415#~ msgstr "số tin nhắn cần dùng mỗi lần lặp"
9416
9473#~ msgid "Could not resolve `%s' (%s): %s\n" 9417#~ msgid "Could not resolve `%s' (%s): %s\n"
9474#~ msgstr "Không thể giải quyết « %s » (%s): %s\n" 9418#~ msgstr "Không thể giải quyết « %s » (%s): %s\n"
9475 9419
diff --git a/po/zh_CN.po b/po/zh_CN.po
index d881d0591..5f4fc20f6 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,7 +7,7 @@ msgid ""
7msgstr "" 7msgstr ""
8"Project-Id-Version: gnunet-0.8.1\n" 8"Project-Id-Version: gnunet-0.8.1\n"
9"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" 9"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
10"POT-Creation-Date: 2018-10-20 11:13+0200\n" 10"POT-Creation-Date: 2019-02-13 00:37+0100\n"
11"PO-Revision-Date: 2011-07-09 12:12+0800\n" 11"PO-Revision-Date: 2011-07-09 12:12+0800\n"
12"Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n" 12"Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n"
13"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" 13"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -16,1032 +16,1026 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n" 16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n" 17"Content-Transfer-Encoding: 8bit\n"
18 18
19#: src/arm/gnunet-arm.c:154 19#: src/arm/gnunet-arm.c:156
20#, fuzzy, c-format 20#, fuzzy, c-format
21msgid "Failed to remove configuration file %s\n" 21msgid "Failed to remove configuration file %s\n"
22msgstr "解析配置文件“%s”失败\n" 22msgstr "解析配置文件“%s”失败\n"
23 23
24#: src/arm/gnunet-arm.c:160 24#: src/arm/gnunet-arm.c:162
25#, c-format 25#, c-format
26msgid "Failed to remove servicehome directory %s\n" 26msgid "Failed to remove servicehome directory %s\n"
27msgstr "" 27msgstr ""
28 28
29#: src/arm/gnunet-arm.c:220 src/testbed/gnunet-service-testbed_peers.c:1137 29#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
30msgid "Message was sent successfully" 30msgid "Message was sent successfully"
31msgstr "" 31msgstr ""
32 32
33#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139 33#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
34msgid "We disconnected from ARM before we could send a request" 34msgid "We disconnected from ARM before we could send a request"
35msgstr "" 35msgstr ""
36 36
37#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141 37#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
38#, fuzzy 38#, fuzzy
39msgid "Unknown request status" 39msgid "Unknown request status"
40msgstr "未知的用户“%s”\n" 40msgstr "未知的用户“%s”\n"
41 41
42#: src/arm/gnunet-arm.c:240 42#: src/arm/gnunet-arm.c:242
43#, fuzzy 43#, fuzzy
44msgid "is stopped" 44msgid "is stopped"
45msgstr "服务已删除。\n" 45msgstr "服务已删除。\n"
46 46
47#: src/arm/gnunet-arm.c:242 47#: src/arm/gnunet-arm.c:244
48msgid "is starting" 48msgid "is starting"
49msgstr "" 49msgstr ""
50 50
51#: src/arm/gnunet-arm.c:244 51#: src/arm/gnunet-arm.c:246
52msgid "is stopping" 52msgid "is stopping"
53msgstr "" 53msgstr ""
54 54
55#: src/arm/gnunet-arm.c:246 55#: src/arm/gnunet-arm.c:248
56msgid "is starting already" 56msgid "is starting already"
57msgstr "" 57msgstr ""
58 58
59#: src/arm/gnunet-arm.c:248 59#: src/arm/gnunet-arm.c:250
60msgid "is stopping already" 60msgid "is stopping already"
61msgstr "" 61msgstr ""
62 62
63#: src/arm/gnunet-arm.c:250 63#: src/arm/gnunet-arm.c:252
64msgid "is started already" 64msgid "is started already"
65msgstr "" 65msgstr ""
66 66
67#: src/arm/gnunet-arm.c:252 67#: src/arm/gnunet-arm.c:254
68msgid "is stopped already" 68msgid "is stopped already"
69msgstr "" 69msgstr ""
70 70
71#: src/arm/gnunet-arm.c:254 71#: src/arm/gnunet-arm.c:256
72#, fuzzy 72#, fuzzy
73msgid "service is not known to ARM" 73msgid "service is not known to ARM"
74msgstr "服务已删除。\n" 74msgstr "服务已删除。\n"
75 75
76#: src/arm/gnunet-arm.c:256 76#: src/arm/gnunet-arm.c:258
77#, fuzzy 77#, fuzzy
78msgid "service failed to start" 78msgid "service failed to start"
79msgstr "运行 %s失败:%s %d\n" 79msgstr "运行 %s失败:%s %d\n"
80 80
81#: src/arm/gnunet-arm.c:258 81#: src/arm/gnunet-arm.c:260
82msgid "service cannot be manipulated because ARM is shutting down" 82msgid "service cannot be manipulated because ARM is shutting down"
83msgstr "" 83msgstr ""
84 84
85#: src/arm/gnunet-arm.c:260 85#: src/arm/gnunet-arm.c:262
86#, fuzzy 86#, fuzzy
87msgid "Unknown result code." 87msgid "Unknown result code."
88msgstr "未知的用户“%s”\n" 88msgstr "未知的用户“%s”\n"
89 89
90#: src/arm/gnunet-arm.c:292 90#: src/arm/gnunet-arm.c:295
91msgid "Fatal error initializing ARM API.\n" 91msgid "Fatal error initializing ARM API.\n"
92msgstr "" 92msgstr ""
93 93
94#: src/arm/gnunet-arm.c:320 src/arm/gnunet-arm.c:329 94#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
95#, fuzzy, c-format 95#, fuzzy, c-format
96msgid "Failed to start the ARM service: %s\n" 96msgid "Failed to start the ARM service: %s\n"
97msgstr "解析配置文件“%s”失败\n" 97msgstr "解析配置文件“%s”失败\n"
98 98
99#: src/arm/gnunet-arm.c:363 99#: src/arm/gnunet-arm.c:368
100#, fuzzy, c-format 100#, fuzzy, c-format
101msgid "Failed to send a stop request to the ARM service: %s\n" 101msgid "Failed to send a stop request to the ARM service: %s\n"
102msgstr "初始化“%s”服务失败。\n" 102msgstr "初始化“%s”服务失败。\n"
103 103
104#: src/arm/gnunet-arm.c:374 104#: src/arm/gnunet-arm.c:379
105#, fuzzy, c-format 105#, fuzzy, c-format
106msgid "Failed to stop the ARM service: %s\n" 106msgid "Failed to stop the ARM service: %s\n"
107msgstr "打开日志文件“%s”失败:%s\n" 107msgstr "打开日志文件“%s”失败:%s\n"
108 108
109#: src/arm/gnunet-arm.c:413 109#: src/arm/gnunet-arm.c:419
110#, fuzzy, c-format 110#, fuzzy, c-format
111msgid "Failed to send a request to start the `%s' service: %s\n" 111msgid "Failed to send a request to start the `%s' service: %s\n"
112msgstr "初始化“%s”服务失败。\n" 112msgstr "初始化“%s”服务失败。\n"
113 113
114#: src/arm/gnunet-arm.c:423 114#: src/arm/gnunet-arm.c:429
115#, fuzzy, c-format 115#, fuzzy, c-format
116msgid "Failed to start the `%s' service: %s\n" 116msgid "Failed to start the `%s' service: %s\n"
117msgstr "解析配置文件“%s”失败\n" 117msgstr "解析配置文件“%s”失败\n"
118 118
119#: src/arm/gnunet-arm.c:460 119#: src/arm/gnunet-arm.c:467
120#, fuzzy, c-format 120#, fuzzy, c-format
121msgid "Failed to send a request to kill the `%s' service: %%s\n" 121msgid "Failed to send a request to kill the `%s' service: %%s\n"
122msgstr "初始化“%s”服务失败。\n" 122msgstr "初始化“%s”服务失败。\n"
123 123
124#: src/arm/gnunet-arm.c:471 124#: src/arm/gnunet-arm.c:478
125#, fuzzy, c-format 125#, fuzzy, c-format
126msgid "Failed to kill the `%s' service: %s\n" 126msgid "Failed to kill the `%s' service: %s\n"
127msgstr "运行 %s失败:%s %d\n" 127msgstr "运行 %s失败:%s %d\n"
128 128
129#: src/arm/gnunet-arm.c:511 129#: src/arm/gnunet-arm.c:519
130#, fuzzy, c-format 130#, fuzzy, c-format
131msgid "Failed to request a list of services: %s\n" 131msgid "Failed to request a list of services: %s\n"
132msgstr "解析配置文件“%s”失败\n" 132msgstr "解析配置文件“%s”失败\n"
133 133
134#: src/arm/gnunet-arm.c:520 134#: src/arm/gnunet-arm.c:528
135#, fuzzy 135#, fuzzy
136msgid "Error communicating with ARM. ARM not running?\n" 136msgid "Error communicating with ARM. ARM not running?\n"
137msgstr "连接 %s:%u 出错。守护程序在运行吗?\n" 137msgstr "连接 %s:%u 出错。守护程序在运行吗?\n"
138 138
139#: src/arm/gnunet-arm.c:526 139#: src/arm/gnunet-arm.c:534
140msgid "Running services:\n" 140msgid "Running services:\n"
141msgstr "" 141msgstr ""
142 142
143#: src/arm/gnunet-arm.c:614 143#: src/arm/gnunet-arm.c:623
144#, c-format 144#, c-format
145msgid "Now only monitoring, press CTRL-C to stop.\n" 145msgid "Now only monitoring, press CTRL-C to stop.\n"
146msgstr "" 146msgstr ""
147 147
148#: src/arm/gnunet-arm.c:646 148#: src/arm/gnunet-arm.c:656
149#, c-format 149#, c-format
150msgid "Stopped %s.\n" 150msgid "Stopped %s.\n"
151msgstr "" 151msgstr ""
152 152
153#: src/arm/gnunet-arm.c:649 153#: src/arm/gnunet-arm.c:659
154#, fuzzy, c-format 154#, fuzzy, c-format
155msgid "Starting %s...\n" 155msgid "Starting %s...\n"
156msgstr "未知的命令“%s”。\n" 156msgstr "未知的命令“%s”。\n"
157 157
158#: src/arm/gnunet-arm.c:652 158#: src/arm/gnunet-arm.c:662
159#, c-format 159#, c-format
160msgid "Stopping %s...\n" 160msgid "Stopping %s...\n"
161msgstr "" 161msgstr ""
162 162
163#: src/arm/gnunet-arm.c:666 163#: src/arm/gnunet-arm.c:676
164#, fuzzy, c-format 164#, fuzzy, c-format
165msgid "Unknown status %u for service %s.\n" 165msgid "Unknown status %u for service %s.\n"
166msgstr "未知的用户“%s”\n" 166msgstr "未知的用户“%s”\n"
167 167
168#: src/arm/gnunet-arm.c:767 168#: src/arm/gnunet-arm.c:766
169#, fuzzy 169#, fuzzy
170msgid "stop all GNUnet services" 170msgid "stop all GNUnet services"
171msgstr "卸载 GNUnet 服务" 171msgstr "卸载 GNUnet 服务"
172 172
173#: src/arm/gnunet-arm.c:773 173#: src/arm/gnunet-arm.c:771
174msgid "start a particular service" 174msgid "start a particular service"
175msgstr "" 175msgstr ""
176 176
177#: src/arm/gnunet-arm.c:779 177#: src/arm/gnunet-arm.c:776
178msgid "stop a particular service" 178msgid "stop a particular service"
179msgstr "" 179msgstr ""
180 180
181#: src/arm/gnunet-arm.c:784 181#: src/arm/gnunet-arm.c:780
182#, fuzzy 182#, fuzzy
183msgid "start all GNUnet default services" 183msgid "start all GNUnet default services"
184msgstr "卸载 GNUnet 服务" 184msgstr "卸载 GNUnet 服务"
185 185
186#: src/arm/gnunet-arm.c:789 186#: src/arm/gnunet-arm.c:784
187#, fuzzy 187#, fuzzy
188msgid "stop and start all GNUnet default services" 188msgid "stop and start all GNUnet default services"
189msgstr "卸载 GNUnet 服务" 189msgstr "卸载 GNUnet 服务"
190 190
191#: src/arm/gnunet-arm.c:793 191#: src/arm/gnunet-arm.c:788
192msgid "delete config file and directory on exit" 192msgid "delete config file and directory on exit"
193msgstr "" 193msgstr ""
194 194
195#: src/arm/gnunet-arm.c:798 195#: src/arm/gnunet-arm.c:792
196msgid "monitor ARM activities" 196msgid "monitor ARM activities"
197msgstr "" 197msgstr ""
198 198
199#: src/arm/gnunet-arm.c:803 199#: src/arm/gnunet-arm.c:796
200msgid "don't print status messages" 200msgid "don't print status messages"
201msgstr "" 201msgstr ""
202 202
203#: src/arm/gnunet-arm.c:809 203#: src/arm/gnunet-arm.c:801
204msgid "exit with error status if operation does not finish after DELAY" 204msgid "exit with error status if operation does not finish after DELAY"
205msgstr "" 205msgstr ""
206 206
207#: src/arm/gnunet-arm.c:814 207#: src/arm/gnunet-arm.c:805
208msgid "list currently running services" 208msgid "list currently running services"
209msgstr "" 209msgstr ""
210 210
211#: src/arm/gnunet-arm.c:819 211#: src/arm/gnunet-arm.c:809
212msgid "don't let gnunet-service-arm inherit standard output" 212msgid "don't let gnunet-service-arm inherit standard output"
213msgstr "" 213msgstr ""
214 214
215#: src/arm/gnunet-arm.c:824 215#: src/arm/gnunet-arm.c:813
216msgid "don't let gnunet-service-arm inherit standard error" 216msgid "don't let gnunet-service-arm inherit standard error"
217msgstr "" 217msgstr ""
218 218
219#: src/arm/gnunet-arm.c:837 219#: src/arm/gnunet-arm.c:828
220msgid "Control services and the Automated Restart Manager (ARM)" 220msgid "Control services and the Automated Restart Manager (ARM)"
221msgstr "" 221msgstr ""
222 222
223#: src/arm/gnunet-service-arm.c:386 src/transport/plugin_transport_tcp.c:1118 223#: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
224#: src/transport/plugin_transport_xt.c:1118 224#: src/transport/plugin_transport_xt.c:1120
225#: src/transport/tcp_service_legacy.c:555 src/util/service.c:610 225#: src/transport/tcp_service_legacy.c:557 src/util/service.c:1167
226#, c-format 226#, c-format
227msgid "" 227msgid ""
228"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n" 228"Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
229msgstr "" 229msgstr ""
230 230
231#: src/arm/gnunet-service-arm.c:410 src/arm/gnunet-service-arm.c:416 231#: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
232#: src/transport/plugin_transport_tcp.c:1137 232#: src/transport/plugin_transport_tcp.c:1139
233#: src/transport/plugin_transport_tcp.c:1143 233#: src/transport/plugin_transport_tcp.c:1145
234#: src/transport/plugin_transport_tcp.c:3823 234#: src/transport/plugin_transport_tcp.c:3829
235#: src/transport/plugin_transport_xt.c:1137 235#: src/transport/plugin_transport_xt.c:1139
236#: src/transport/plugin_transport_xt.c:1143 236#: src/transport/plugin_transport_xt.c:1145
237#: src/transport/plugin_transport_xt.c:3831 237#: src/transport/plugin_transport_xt.c:3833
238#: src/transport/tcp_service_legacy.c:574 238#: src/transport/tcp_service_legacy.c:576
239#: src/transport/tcp_service_legacy.c:580 src/util/service.c:635 239#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1192
240#: src/util/service.c:641 240#: src/util/service.c:1198
241#, c-format 241#, c-format
242msgid "Require valid port number for service `%s' in configuration!\n" 242msgid "Require valid port number for service `%s' in configuration!\n"
243msgstr "" 243msgstr ""
244 244
245#: src/arm/gnunet-service-arm.c:455 src/transport/plugin_transport_tcp.c:1174 245#: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
246#: src/transport/plugin_transport_xt.c:1174 246#: src/transport/plugin_transport_xt.c:1176
247#: src/transport/tcp_service_legacy.c:611 src/util/client.c:504 247#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
248#: src/util/service.c:680 248#: src/util/service.c:1237
249#, c-format 249#, c-format
250msgid "UNIXPATH `%s' too long, maximum length is %llu\n" 250msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
251msgstr "" 251msgstr ""
252 252
253#: src/arm/gnunet-service-arm.c:460 src/transport/plugin_transport_tcp.c:1178 253#: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
254#: src/transport/plugin_transport_xt.c:1178 254#: src/transport/plugin_transport_xt.c:1180
255#: src/transport/tcp_service_legacy.c:615 src/util/client.c:509 255#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
256#: src/util/service.c:685 256#: src/util/service.c:1242
257#, fuzzy, c-format 257#, fuzzy, c-format
258msgid "Using `%s' instead\n" 258msgid "Using `%s' instead\n"
259msgstr "%s:选项“%s”有歧义\n" 259msgstr "%s:选项“%s”有歧义\n"
260 260
261#: src/arm/gnunet-service-arm.c:493 src/transport/plugin_transport_tcp.c:1209 261#: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
262#: src/transport/plugin_transport_xt.c:1209 262#: src/transport/plugin_transport_xt.c:1211
263#: src/transport/tcp_service_legacy.c:646 src/util/service.c:721 263#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1278
264#, c-format 264#, c-format
265msgid "" 265msgid ""
266"Disabling UNIX domain socket support for service `%s', failed to create UNIX " 266"Disabling UNIX domain socket support for service `%s', failed to create UNIX "
267"domain socket: %s\n" 267"domain socket: %s\n"
268msgstr "" 268msgstr ""
269 269
270#: src/arm/gnunet-service-arm.c:515 src/transport/plugin_transport_tcp.c:1226 270#: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
271#: src/transport/plugin_transport_xt.c:1226 271#: src/transport/plugin_transport_xt.c:1228
272#: src/transport/tcp_service_legacy.c:663 src/util/service.c:739 272#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1296
273#, c-format 273#, c-format
274msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n" 274msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
275msgstr "" 275msgstr ""
276 276
277#: src/arm/gnunet-service-arm.c:554 277#: src/arm/gnunet-service-arm.c:556
278#: src/transport/plugin_transport_http_server.c:2682 278#: src/transport/plugin_transport_http_server.c:2688
279#: src/transport/plugin_transport_tcp.c:1257 279#: src/transport/plugin_transport_tcp.c:1259
280#: src/transport/plugin_transport_xt.c:1257 280#: src/transport/plugin_transport_xt.c:1259
281#: src/transport/tcp_service_legacy.c:694 src/util/service.c:780 281#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1337
282#, fuzzy, c-format 282#, fuzzy, c-format
283msgid "Failed to resolve `%s': %s\n" 283msgid "Failed to resolve `%s': %s\n"
284msgstr "打开日志文件“%s”失败:%s\n" 284msgstr "打开日志文件“%s”失败:%s\n"
285 285
286#: src/arm/gnunet-service-arm.c:573 286#: src/arm/gnunet-service-arm.c:575
287#: src/transport/plugin_transport_http_server.c:2700 287#: src/transport/plugin_transport_http_server.c:2706
288#: src/transport/plugin_transport_tcp.c:1276 288#: src/transport/plugin_transport_tcp.c:1278
289#: src/transport/plugin_transport_xt.c:1276 289#: src/transport/plugin_transport_xt.c:1278
290#: src/transport/tcp_service_legacy.c:713 src/util/service.c:800 290#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1357
291#, fuzzy, c-format 291#, fuzzy, c-format
292msgid "Failed to find %saddress for `%s'.\n" 292msgid "Failed to find %saddress for `%s'.\n"
293msgstr "找不到接口“%s”的一个 IP 地址。\n" 293msgstr "找不到接口“%s”的一个 IP 地址。\n"
294 294
295#: src/arm/gnunet-service-arm.c:984 295#: src/arm/gnunet-service-arm.c:986
296#, fuzzy, c-format 296#, fuzzy, c-format
297msgid "Failed to start service `%s'\n" 297msgid "Failed to start service `%s'\n"
298msgstr "解析配置文件“%s”失败\n" 298msgstr "解析配置文件“%s”失败\n"
299 299
300#: src/arm/gnunet-service-arm.c:995 300#: src/arm/gnunet-service-arm.c:997
301#, c-format 301#, c-format
302msgid "Starting service `%s'\n" 302msgid "Starting service `%s'\n"
303msgstr "" 303msgstr ""
304 304
305#: src/arm/gnunet-service-arm.c:1107 305#: src/arm/gnunet-service-arm.c:1109
306#, fuzzy, c-format 306#, fuzzy, c-format
307msgid "Unable to create socket for service `%s': %s\n" 307msgid "Unable to create socket for service `%s': %s\n"
308msgstr "无法创建用户账户:" 308msgstr "无法创建用户账户:"
309 309
310#: src/arm/gnunet-service-arm.c:1142 310#: src/arm/gnunet-service-arm.c:1144
311#, c-format 311#, c-format
312msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n" 312msgid "Unable to bind listening socket for service `%s' to address `%s': %s\n"
313msgstr "" 313msgstr ""
314 314
315#: src/arm/gnunet-service-arm.c:1185 315#: src/arm/gnunet-service-arm.c:1187
316#, c-format 316#, c-format
317msgid "ARM now monitors connections to service `%s' at `%s'\n" 317msgid "ARM now monitors connections to service `%s' at `%s'\n"
318msgstr "" 318msgstr ""
319 319
320#: src/arm/gnunet-service-arm.c:1364 320#: src/arm/gnunet-service-arm.c:1346
321#, c-format 321#, c-format
322msgid "Preparing to stop `%s'\n" 322msgid "Preparing to stop `%s'\n"
323msgstr "" 323msgstr ""
324 324
325#: src/arm/gnunet-service-arm.c:1669 325#: src/arm/gnunet-service-arm.c:1651
326#, c-format 326#, c-format
327msgid "Restarting service `%s'.\n" 327msgid "Restarting service `%s'.\n"
328msgstr "" 328msgstr ""
329 329
330#: src/arm/gnunet-service-arm.c:1830 330#: src/arm/gnunet-service-arm.c:1812
331msgid "exit" 331msgid "exit"
332msgstr "" 332msgstr ""
333 333
334#: src/arm/gnunet-service-arm.c:1835 334#: src/arm/gnunet-service-arm.c:1817
335msgid "signal" 335msgid "signal"
336msgstr "" 336msgstr ""
337 337
338#: src/arm/gnunet-service-arm.c:1840 338#: src/arm/gnunet-service-arm.c:1822
339#, fuzzy 339#, fuzzy
340msgid "unknown" 340msgid "unknown"
341msgstr "未知错误" 341msgstr "未知错误"
342 342
343#: src/arm/gnunet-service-arm.c:1846 343#: src/arm/gnunet-service-arm.c:1828
344#, fuzzy, c-format 344#, fuzzy, c-format
345msgid "Service `%s' took %s to terminate\n" 345msgid "Service `%s' took %s to terminate\n"
346msgstr "服务已删除。\n" 346msgstr "服务已删除。\n"
347 347
348#: src/arm/gnunet-service-arm.c:1872 348#: src/arm/gnunet-service-arm.c:1854
349#, c-format 349#, c-format
350msgid "Service `%s' terminated normally, will restart at any time\n" 350msgid "Service `%s' terminated normally, will restart at any time\n"
351msgstr "" 351msgstr ""
352 352
353#: src/arm/gnunet-service-arm.c:1888 353#: src/arm/gnunet-service-arm.c:1870
354#, c-format 354#, c-format
355msgid "Service `%s' terminated with status %s/%d, will restart in %s\n" 355msgid "Service `%s' terminated with status %s/%d, will restart in %s\n"
356msgstr "" 356msgstr ""
357 357
358#: src/arm/mockup-service.c:40 358#: src/arm/mockup-service.c:42
359msgid "Initiating shutdown as requested by client.\n" 359msgid "Initiating shutdown as requested by client.\n"
360msgstr "" 360msgstr ""
361 361
362#: src/ats/gnunet-ats-solver-eval.c:2779 src/ats/gnunet-ats-solver-eval.c:2820 362#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
363#, c-format 363#, c-format
364msgid "" 364msgid ""
365"Could not load quota for network `%s': `%s', assigning default bandwidth " 365"Could not load quota for network `%s': `%s', assigning default bandwidth "
366"%llu\n" 366"%llu\n"
367msgstr "" 367msgstr ""
368 368
369#: src/ats/gnunet-ats-solver-eval.c:2797 369#: src/ats/gnunet-ats-solver-eval.c:2799
370#, c-format 370#, c-format
371msgid "" 371msgid ""
372"No outbound quota configured for network `%s', assigning default bandwidth " 372"No outbound quota configured for network `%s', assigning default bandwidth "
373"%llu\n" 373"%llu\n"
374msgstr "" 374msgstr ""
375 375
376#: src/ats/gnunet-ats-solver-eval.c:2838 376#: src/ats/gnunet-ats-solver-eval.c:2840
377#, c-format 377#, c-format
378msgid "" 378msgid ""
379"No outbound quota configure for network `%s', assigning default bandwidth " 379"No outbound quota configure for network `%s', assigning default bandwidth "
380"%llu\n" 380"%llu\n"
381msgstr "" 381msgstr ""
382 382
383#: src/ats/gnunet-ats-solver-eval.c:3292 src/ats-tests/gnunet-solver-eval.c:937 383#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
384msgid "solver to use" 384msgid "solver to use"
385msgstr "" 385msgstr ""
386 386
387#: src/ats/gnunet-ats-solver-eval.c:3297 src/ats-tests/gnunet-solver-eval.c:943 387#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
388#: src/ats-tests/gnunet-solver-eval.c:948 388#: src/ats-tests/gnunet-solver-eval.c:950
389msgid "experiment to use" 389msgid "experiment to use"
390msgstr "" 390msgstr ""
391 391
392#: src/ats/gnunet-ats-solver-eval.c:3304 392#: src/ats/gnunet-ats-solver-eval.c:3306
393#, fuzzy 393#, fuzzy
394msgid "print logging" 394msgid "print logging"
395msgstr "未知的命令“%s”。\n" 395msgstr "未知的命令“%s”。\n"
396 396
397#: src/ats/gnunet-ats-solver-eval.c:3309 397#: src/ats/gnunet-ats-solver-eval.c:3311
398msgid "save logging to disk" 398msgid "save logging to disk"
399msgstr "" 399msgstr ""
400 400
401#: src/ats/gnunet-ats-solver-eval.c:3314 401#: src/ats/gnunet-ats-solver-eval.c:3316
402msgid "disable normalization" 402msgid "disable normalization"
403msgstr "" 403msgstr ""
404 404
405#: src/ats/gnunet-service-ats_plugins.c:302 405#: src/ats/gnunet-service-ats-new.c:756
406#: src/ats/gnunet-service-ats_plugins.c:451
407#, fuzzy, c-format
408msgid "Failed to initialize solver `%s'!\n"
409msgstr "无法初始化 SQLite:%s。\n"
410
411#: src/ats/gnunet-service-ats_plugins.c:304
406#, c-format 412#, c-format
407msgid "" 413msgid ""
408"Could not load %s quota for network `%s': `%s', assigning default bandwidth " 414"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
409"%llu\n" 415"%llu\n"
410msgstr "" 416msgstr ""
411 417
412#: src/ats/gnunet-service-ats_plugins.c:312 418#: src/ats/gnunet-service-ats_plugins.c:314
413#, c-format 419#, c-format
414msgid "%s quota configured for network `%s' is %llu\n" 420msgid "%s quota configured for network `%s' is %llu\n"
415msgstr "" 421msgstr ""
416 422
417#: src/ats/gnunet-service-ats_plugins.c:357 423#: src/ats/gnunet-service-ats_plugins.c:359
418#, c-format 424#, c-format
419msgid "" 425msgid ""
420"No %s-quota configured for network `%s', assigning default bandwidth %llu\n" 426"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
421msgstr "" 427msgstr ""
422 428
423#: src/ats/gnunet-service-ats_plugins.c:449 429#: src/ats/plugin_ats2_common.c:90
424#, fuzzy, c-format 430#, c-format
425msgid "Failed to initialize solver `%s'!\n" 431msgid ""
426msgstr "无法初始化 SQLite:%s。\n" 432"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
433"%llu\n"
434msgstr ""
427 435
428#: src/ats/plugin_ats_mlp.c:1272 436#: src/ats/plugin_ats_mlp.c:1274
429msgid "Problem size too large, cannot allocate memory!\n" 437msgid "Problem size too large, cannot allocate memory!\n"
430msgstr "" 438msgstr ""
431 439
432#: src/ats/plugin_ats_mlp.c:1868 440#: src/ats/plugin_ats_mlp.c:1870
433#, c-format 441#, c-format
434msgid "Adding address for peer `%s' multiple times\n" 442msgid "Adding address for peer `%s' multiple times\n"
435msgstr "" 443msgstr ""
436 444
437#: src/ats/plugin_ats_mlp.c:1912 445#: src/ats/plugin_ats_mlp.c:1914
438#, c-format 446#, c-format
439msgid "Updating address property for peer `%s' %p not added before\n" 447msgid "Updating address property for peer `%s' %p not added before\n"
440msgstr "" 448msgstr ""
441 449
442#: src/ats/plugin_ats_mlp.c:2474 450#: src/ats/plugin_ats_mlp.c:2476
443msgid "" 451msgid ""
444"MLP solver is not optimizing for anything, changing to feasibility check\n" 452"MLP solver is not optimizing for anything, changing to feasibility check\n"
445msgstr "" 453msgstr ""
446 454
447#: src/ats/plugin_ats_mlp.c:2514 src/ats/plugin_ats_mlp.c:2531 455#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
448#: src/ats/plugin_ats_mlp.c:2563 src/ats/plugin_ats_mlp.c:2581 456#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
449#: src/ats/plugin_ats_mlp.c:2600 src/ats/plugin_ats_proportional.c:1139 457#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
450#: src/ats/plugin_ats_ril.c:2610 src/ats/plugin_ats_ril.c:2627 458#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
451#: src/ats/plugin_ats_ril.c:2644 src/ats/plugin_ats_ril.c:2661 459#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
452#: src/ats/plugin_ats_ril.c:2678 src/ats/plugin_ats_ril.c:2695 460#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
453#: src/ats/plugin_ats_ril.c:2712 src/ats/plugin_ats_ril.c:2729 461#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
454#, fuzzy, c-format 462#, fuzzy, c-format
455msgid "Invalid %s configuration %f \n" 463msgid "Invalid %s configuration %f \n"
456msgstr "解析配置文件“%s”失败\n" 464msgstr "解析配置文件“%s”失败\n"
457 465
458#: src/ats/plugin_ats_mlp.c:2669 466#: src/ats/plugin_ats_mlp.c:2671
459#, c-format 467#, c-format
460msgid "" 468msgid ""
461"Adjusting inconsistent outbound quota configuration for network `%s', is " 469"Adjusting inconsistent outbound quota configuration for network `%s', is "
462"%llu must be at least %llu\n" 470"%llu must be at least %llu\n"
463msgstr "" 471msgstr ""
464 472
465#: src/ats/plugin_ats_mlp.c:2678 473#: src/ats/plugin_ats_mlp.c:2680
466#, c-format 474#, c-format
467msgid "" 475msgid ""
468"Adjusting inconsistent inbound quota configuration for network `%s', is %llu " 476"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
469"must be at least %llu\n" 477"must be at least %llu\n"
470msgstr "" 478msgstr ""
471 479
472#: src/ats/plugin_ats_mlp.c:2688 480#: src/ats/plugin_ats_mlp.c:2690
473#, c-format 481#, c-format
474msgid "" 482msgid ""
475"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n" 483"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
476msgstr "" 484msgstr ""
477 485
478#: src/ats/plugin_ats_mlp.c:2697 486#: src/ats/plugin_ats_mlp.c:2699
479#, c-format 487#, c-format
480msgid "" 488msgid ""
481"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n" 489"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
482msgstr "" 490msgstr ""
483 491
484#: src/ats/plugin_ats_proportional.c:1162 492#: src/ats/plugin_ats_proportional.c:1164
485#, fuzzy, c-format 493#, fuzzy, c-format
486msgid "Invalid %s configuration %f\n" 494msgid "Invalid %s configuration %f\n"
487msgstr "解析配置文件“%s”失败\n" 495msgstr "解析配置文件“%s”失败\n"
488 496
489#: src/ats-tests/ats-testing.c:420 497#: src/ats-tests/ats-testing.c:422
490#, c-format 498#, c-format
491msgid "Connected master [%u] with slave [%u]\n" 499msgid "Connected master [%u] with slave [%u]\n"
492msgstr "" 500msgstr ""
493 501
494#: src/ats-tests/ats-testing.c:427 502#: src/ats-tests/ats-testing.c:429
495#, fuzzy, c-format 503#, fuzzy, c-format
496msgid "Failed to connect master peer [%u] with slave [%u]\n" 504msgid "Failed to connect master peer [%u] with slave [%u]\n"
497msgstr "初始化“%s”服务失败。\n" 505msgstr "初始化“%s”服务失败。\n"
498 506
499#: src/ats-tests/ats-testing-log.c:835 507#: src/ats-tests/ats-testing-log.c:837
500msgid "Stop logging\n" 508msgid "Stop logging\n"
501msgstr "" 509msgstr ""
502 510
503#: src/ats-tests/ats-testing-log.c:890 511#: src/ats-tests/ats-testing-log.c:892
504#, fuzzy, c-format 512#, fuzzy, c-format
505msgid "Start logging `%s'\n" 513msgid "Start logging `%s'\n"
506msgstr "未知的命令“%s”。\n" 514msgstr "未知的命令“%s”。\n"
507 515
508#: src/ats-tests/gnunet-ats-sim.c:88 516#: src/ats-tests/gnunet-ats-sim.c:90
509#, c-format 517#, c-format
510msgid "" 518msgid ""
511"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. " 519"Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. "
512"= %u KiB/s\n" 520"= %u KiB/s\n"
513msgstr "" 521msgstr ""
514 522
515#: src/ats-tool/gnunet-ats.c:305 523#: src/ats-tool/gnunet-ats.c:307
516#, c-format 524#, c-format
517msgid "%u address resolutions had a timeout\n" 525msgid "%u address resolutions had a timeout\n"
518msgstr "" 526msgstr ""
519 527
520#: src/ats-tool/gnunet-ats.c:309 528#: src/ats-tool/gnunet-ats.c:311
521#, c-format 529#, c-format
522msgid "ATS returned stat_results for %u addresses\n" 530msgid "ATS returned stat_results for %u addresses\n"
523msgstr "" 531msgstr ""
524 532
525#: src/ats-tool/gnunet-ats.c:393 533#: src/ats-tool/gnunet-ats.c:395
526#, c-format 534#, c-format
527msgid "" 535msgid ""
528"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/" 536"Peer `%s' plugin `%s', address `%s', `%s' bw out: %u Bytes/s, bw in %u Bytes/"
529"s, %s\n" 537"s, %s\n"
530msgstr "" 538msgstr ""
531 539
532#: src/ats-tool/gnunet-ats.c:400 540#: src/ats-tool/gnunet-ats.c:402
533msgid "active " 541msgid "active "
534msgstr "" 542msgstr ""
535 543
536#: src/ats-tool/gnunet-ats.c:400 544#: src/ats-tool/gnunet-ats.c:402
537msgid "inactive " 545msgid "inactive "
538msgstr "" 546msgstr ""
539 547
540#: src/ats-tool/gnunet-ats.c:510 548#: src/ats-tool/gnunet-ats.c:512
541#, c-format 549#, c-format
542msgid "Removed address of peer `%s' with plugin `%s'\n" 550msgid "Removed address of peer `%s' with plugin `%s'\n"
543msgstr "" 551msgstr ""
544 552
545#: src/ats-tool/gnunet-ats.c:703 553#: src/ats-tool/gnunet-ats.c:705
546#, c-format 554#, c-format
547msgid "Quota for network `%11s' (in/out): %10s / %10s\n" 555msgid "Quota for network `%11s' (in/out): %10s / %10s\n"
548msgstr "" 556msgstr ""
549 557
550#: src/ats-tool/gnunet-ats.c:746 src/ats-tool/gnunet-ats.c:759 558#: src/ats-tool/gnunet-ats.c:748 src/ats-tool/gnunet-ats.c:761
551#, fuzzy, c-format 559#, fuzzy, c-format
552msgid "Failed to parse peer identity `%s'\n" 560msgid "Failed to parse peer identity `%s'\n"
553msgstr "解析配置文件“%s”失败\n" 561msgstr "解析配置文件“%s”失败\n"
554 562
555#: src/ats-tool/gnunet-ats.c:771 563#: src/ats-tool/gnunet-ats.c:773
556#, c-format 564#, c-format
557msgid "Please select one operation: %s or %s or %s or %s or %s\n" 565msgid "Please select one operation: %s or %s or %s or %s or %s\n"
558msgstr "" 566msgstr ""
559 567
560#: src/ats-tool/gnunet-ats.c:793 src/ats-tool/gnunet-ats.c:818 568#: src/ats-tool/gnunet-ats.c:795 src/ats-tool/gnunet-ats.c:820
561#: src/ats-tool/gnunet-ats.c:849 src/ats-tool/gnunet-ats.c:894 569#: src/ats-tool/gnunet-ats.c:851 src/ats-tool/gnunet-ats.c:896
562#, fuzzy 570#, fuzzy
563msgid "Cannot connect to ATS service, exiting...\n" 571msgid "Cannot connect to ATS service, exiting...\n"
564msgstr "初始化“%s”服务失败。\n" 572msgstr "初始化“%s”服务失败。\n"
565 573
566#: src/ats-tool/gnunet-ats.c:804 src/ats-tool/gnunet-ats.c:830 574#: src/ats-tool/gnunet-ats.c:806 src/ats-tool/gnunet-ats.c:832
567#, fuzzy 575#, fuzzy
568msgid "Cannot issue request to ATS service, exiting...\n" 576msgid "Cannot issue request to ATS service, exiting...\n"
569msgstr "初始化“%s”服务失败。\n" 577msgstr "初始化“%s”服务失败。\n"
570 578
571#: src/ats-tool/gnunet-ats.c:860 579#: src/ats-tool/gnunet-ats.c:862
572#, fuzzy 580#, fuzzy
573msgid "No preference type given!\n" 581msgid "No preference type given!\n"
574msgstr "无法获取有关用户“%s”的信息:%s\n" 582msgstr "无法获取有关用户“%s”的信息:%s\n"
575 583
576#: src/ats-tool/gnunet-ats.c:867 584#: src/ats-tool/gnunet-ats.c:869
577msgid "No peer given!\n" 585msgid "No peer given!\n"
578msgstr "" 586msgstr ""
579 587
580#: src/ats-tool/gnunet-ats.c:885 588#: src/ats-tool/gnunet-ats.c:887
581msgid "Valid type required\n" 589msgid "Valid type required\n"
582msgstr "" 590msgstr ""
583 591
584#: src/ats-tool/gnunet-ats.c:948 592#: src/ats-tool/gnunet-ats.c:950
585msgid "get list of active addresses currently used" 593msgid "get list of active addresses currently used"
586msgstr "" 594msgstr ""
587 595
588#: src/ats-tool/gnunet-ats.c:952 596#: src/ats-tool/gnunet-ats.c:954
589msgid "get list of all active addresses" 597msgid "get list of all active addresses"
590msgstr "" 598msgstr ""
591 599
592#: src/ats-tool/gnunet-ats.c:958 600#: src/ats-tool/gnunet-ats.c:960
593#, fuzzy 601#, fuzzy
594msgid "connect to PEER" 602msgid "connect to PEER"
595msgstr "初始化“%s”服务失败。\n" 603msgstr "初始化“%s”服务失败。\n"
596 604
597#: src/ats-tool/gnunet-ats.c:962 605#: src/ats-tool/gnunet-ats.c:964
598#, fuzzy 606#, fuzzy
599msgid "do not resolve IP addresses to hostnames" 607msgid "do not resolve IP addresses to hostnames"
600msgstr "GNUnet 现在使用 IP 地址 %s。\n" 608msgstr "GNUnet 现在使用 IP 地址 %s。\n"
601 609
602#: src/ats-tool/gnunet-ats.c:967 610#: src/ats-tool/gnunet-ats.c:969
603msgid "monitor mode" 611msgid "monitor mode"
604msgstr "" 612msgstr ""
605 613
606#: src/ats-tool/gnunet-ats.c:972 614#: src/ats-tool/gnunet-ats.c:974
607#, fuzzy 615#, fuzzy
608msgid "set preference for the given peer" 616msgid "set preference for the given peer"
609msgstr "无法获取有关用户“%s”的信息:%s\n" 617msgstr "无法获取有关用户“%s”的信息:%s\n"
610 618
611#: src/ats-tool/gnunet-ats.c:977 619#: src/ats-tool/gnunet-ats.c:979
612msgid "print all configured quotas" 620msgid "print all configured quotas"
613msgstr "" 621msgstr ""
614 622
615#: src/ats-tool/gnunet-ats.c:982 623#: src/ats-tool/gnunet-ats.c:984
616msgid "peer id" 624msgid "peer id"
617msgstr "" 625msgstr ""
618 626
619#: src/ats-tool/gnunet-ats.c:988 627#: src/ats-tool/gnunet-ats.c:990
620msgid "preference type to set: latency | bandwidth" 628msgid "preference type to set: latency | bandwidth"
621msgstr "" 629msgstr ""
622 630
623#: src/ats-tool/gnunet-ats.c:994 631#: src/ats-tool/gnunet-ats.c:996
624msgid "preference value" 632msgid "preference value"
625msgstr "" 633msgstr ""
626 634
627#: src/ats-tool/gnunet-ats.c:999 635#: src/ats-tool/gnunet-ats.c:1001
628msgid "verbose output (include ATS address properties)" 636msgid "verbose output (include ATS address properties)"
629msgstr "" 637msgstr ""
630 638
631#: src/ats-tool/gnunet-ats.c:1009 639#: src/ats-tool/gnunet-ats.c:1011
632#, fuzzy 640#, fuzzy
633msgid "Print information about ATS state" 641msgid "Print information about ATS state"
634msgstr "无法获取有关用户“%s”的信息:%s\n" 642msgstr "无法获取有关用户“%s”的信息:%s\n"
635 643
636#: src/auction/gnunet-auction-create.c:161 644#: src/auction/gnunet-auction-create.c:163
637msgid "description of the item to be sold" 645msgid "description of the item to be sold"
638msgstr "" 646msgstr ""
639 647
640#: src/auction/gnunet-auction-create.c:167 648#: src/auction/gnunet-auction-create.c:169
641msgid "mapping of possible prices" 649msgid "mapping of possible prices"
642msgstr "" 650msgstr ""
643 651
644#: src/auction/gnunet-auction-create.c:173 652#: src/auction/gnunet-auction-create.c:175
645msgid "max duration per round" 653msgid "max duration per round"
646msgstr "" 654msgstr ""
647 655
648#: src/auction/gnunet-auction-create.c:179 656#: src/auction/gnunet-auction-create.c:181
649msgid "duration until auction starts" 657msgid "duration until auction starts"
650msgstr "" 658msgstr ""
651 659
652#: src/auction/gnunet-auction-create.c:184 660#: src/auction/gnunet-auction-create.c:186
653msgid "" 661msgid ""
654"number of items to sell\n" 662"number of items to sell\n"
655"0 for first price auction\n" 663"0 for first price auction\n"
656">0 for vickrey/M+1st price auction" 664">0 for vickrey/M+1st price auction"
657msgstr "" 665msgstr ""
658 666
659#: src/auction/gnunet-auction-create.c:191 667#: src/auction/gnunet-auction-create.c:193
660msgid "public auction outcome" 668msgid "public auction outcome"
661msgstr "" 669msgstr ""
662 670
663#: src/auction/gnunet-auction-create.c:196 671#: src/auction/gnunet-auction-create.c:198
664msgid "keep running in foreground until auction completes" 672msgid "keep running in foreground until auction completes"
665msgstr "" 673msgstr ""
666 674
667#: src/auction/gnunet-auction-create.c:207 675#: src/auction/gnunet-auction-create.c:209
668msgid "create a new auction and start listening for bidders" 676msgid "create a new auction and start listening for bidders"
669msgstr "" 677msgstr ""
670 678
671#: src/auction/gnunet-auction-info.c:74 src/auction/gnunet-auction-join.c:74 679#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
672#: src/conversation/gnunet-conversation-test.c:252 680#: src/conversation/gnunet-conversation-test.c:254
673#: src/revocation/gnunet-revocation.c:560 src/template/gnunet-template.c:74 681#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
674msgid "help text" 682msgid "help text"
675msgstr "" 683msgstr ""
676 684
677#: src/cadet/gnunet-cadet.c:705 685#: src/cadet/gnunet-cadet.c:631
678#, fuzzy, c-format 686#, fuzzy, c-format
679msgid "Invalid peer ID `%s'\n" 687msgid "Invalid peer ID `%s'\n"
680msgstr "无效条目。\n" 688msgstr "无效条目。\n"
681 689
682#: src/cadet/gnunet-cadet.c:744 690#: src/cadet/gnunet-cadet.c:718
683#, fuzzy, c-format
684msgid "Invalid tunnel owner `%s'\n"
685msgstr "IP 格式无效:“%s”\n"
686
687#: src/cadet/gnunet-cadet.c:817
688msgid "Extra arguments are not applicable in combination with this option.\n" 691msgid "Extra arguments are not applicable in combination with this option.\n"
689msgstr "" 692msgstr ""
690 693
691#: src/cadet/gnunet-cadet.c:908 694#: src/cadet/gnunet-cadet.c:795
692#, fuzzy, c-format 695#, fuzzy, c-format
693msgid "Invalid target `%s'\n" 696msgid "Invalid target `%s'\n"
694msgstr "“%s”的参数无效。\n" 697msgstr "“%s”的参数无效。\n"
695 698
696#: src/cadet/gnunet-cadet.c:945 699#: src/cadet/gnunet-cadet.c:832
697msgid "No action requested\n" 700msgid "No action requested\n"
698msgstr "" 701msgstr ""
699 702
700#: src/cadet/gnunet-cadet.c:970 703#: src/cadet/gnunet-cadet.c:857
701#, fuzzy 704#, fuzzy
702msgid "Provide information about a particular connection" 705msgid "Provide information about a particular connection"
703msgstr "无法获取有关用户“%s”的信息:%s\n" 706msgstr "无法获取有关用户“%s”的信息:%s\n"
704 707
705#: src/cadet/gnunet-cadet.c:975 708#: src/cadet/gnunet-cadet.c:861
706msgid "Activate echo mode" 709msgid "Activate echo mode"
707msgstr "" 710msgstr ""
708 711
709#: src/cadet/gnunet-cadet.c:980 712#: src/cadet/gnunet-cadet.c:866
710msgid "Dump debug information to STDERR"
711msgstr ""
712
713#: src/cadet/gnunet-cadet.c:986
714msgid "Listen for connections using a shared secret among sender and recipient" 713msgid "Listen for connections using a shared secret among sender and recipient"
715msgstr "" 714msgstr ""
716 715
717#: src/cadet/gnunet-cadet.c:993 716#: src/cadet/gnunet-cadet.c:871
718#, fuzzy 717#, fuzzy
719msgid "Provide information about a patricular peer" 718msgid "Provide information about a patricular peer"
720msgstr "无法获取有关用户“%s”的信息:%s\n" 719msgstr "无法获取有关用户“%s”的信息:%s\n"
721 720
722#: src/cadet/gnunet-cadet.c:999 721#: src/cadet/gnunet-cadet.c:875
723#, fuzzy 722#, fuzzy
724msgid "Provide information about all peers" 723msgid "Provide information about all peers"
725msgstr "无法获取有关用户“%s”的信息:%s\n" 724msgstr "无法获取有关用户“%s”的信息:%s\n"
726 725
727#: src/cadet/gnunet-cadet.c:1005 726#: src/cadet/gnunet-cadet.c:879
728#, fuzzy
729msgid "Provide information about a particular tunnel"
730msgstr "无法获取有关用户“%s”的信息:%s\n"
731
732#: src/cadet/gnunet-cadet.c:1011
733#, fuzzy 727#, fuzzy
734msgid "Provide information about all tunnels" 728msgid "Provide information about all tunnels"
735msgstr "无法获取有关用户“%s”的信息:%s\n" 729msgstr "无法获取有关用户“%s”的信息:%s\n"
736 730
737#: src/consensus/gnunet-consensus-profiler.c:521 731#: src/consensus/gnunet-consensus-profiler.c:523
738#: src/secretsharing/gnunet-secretsharing-profiler.c:608 732#: src/secretsharing/gnunet-secretsharing-profiler.c:610
739#, fuzzy 733#, fuzzy
740msgid "number of peers in consensus" 734msgid "number of peers in consensus"
741msgstr "迭代次数" 735msgstr "迭代次数"
742 736
743#: src/consensus/gnunet-consensus-profiler.c:527 737#: src/consensus/gnunet-consensus-profiler.c:529
744msgid "" 738msgid ""
745"how many peers (random selection without replacement) receive one value?" 739"how many peers (random selection without replacement) receive one value?"
746msgstr "" 740msgstr ""
747 741
748#: src/consensus/gnunet-consensus-profiler.c:533 742#: src/consensus/gnunet-consensus-profiler.c:535
749#: src/set/gnunet-set-profiler.c:431 src/set/gnunet-set-profiler.c:437 743#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
750#: src/set/gnunet-set-profiler.c:460 744#: src/set/gnunet-set-profiler.c:462
751#, fuzzy 745#, fuzzy
752msgid "number of values" 746msgid "number of values"
753msgstr "迭代次数" 747msgstr "迭代次数"
754 748
755#: src/consensus/gnunet-consensus-profiler.c:539 749#: src/consensus/gnunet-consensus-profiler.c:541
756msgid "consensus timeout" 750msgid "consensus timeout"
757msgstr "" 751msgstr ""
758 752
759#: src/consensus/gnunet-consensus-profiler.c:546 753#: src/consensus/gnunet-consensus-profiler.c:548
760msgid "delay until consensus starts" 754msgid "delay until consensus starts"
761msgstr "" 755msgstr ""
762 756
763#: src/consensus/gnunet-consensus-profiler.c:552 757#: src/consensus/gnunet-consensus-profiler.c:554
764#: src/set/gnunet-set-profiler.c:478 758#: src/set/gnunet-set-profiler.c:480
765msgid "write statistics to file" 759msgid "write statistics to file"
766msgstr "" 760msgstr ""
767 761
768#: src/consensus/gnunet-consensus-profiler.c:557 762#: src/consensus/gnunet-consensus-profiler.c:559
769msgid "distribute elements to a static subset of good peers" 763msgid "distribute elements to a static subset of good peers"
770msgstr "" 764msgstr ""
771 765
772#: src/consensus/gnunet-consensus-profiler.c:562 766#: src/consensus/gnunet-consensus-profiler.c:564
773msgid "be more verbose (print received values)" 767msgid "be more verbose (print received values)"
774msgstr "" 768msgstr ""
775 769
776#: src/conversation/conversation_api.c:513 770#: src/conversation/conversation_api.c:515
777#: src/conversation/conversation_api_call.c:492 771#: src/conversation/conversation_api_call.c:494
778msgid "Connection to conversation service lost, trying to reconnect\n" 772msgid "Connection to conversation service lost, trying to reconnect\n"
779msgstr "" 773msgstr ""
780 774
781#: src/conversation/gnunet-conversation.c:275 775#: src/conversation/gnunet-conversation.c:277
782#, c-format 776#, c-format
783msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n" 777msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
784msgstr "" 778msgstr ""
785 779
786#: src/conversation/gnunet-conversation.c:300 780#: src/conversation/gnunet-conversation.c:302
787#, c-format 781#, c-format
788msgid "Call from `%s' terminated\n" 782msgid "Call from `%s' terminated\n"
789msgstr "" 783msgstr ""
790 784
791#: src/conversation/gnunet-conversation.c:335 785#: src/conversation/gnunet-conversation.c:337
792#, c-format 786#, c-format
793msgid "Call from `%s' suspended by other user\n" 787msgid "Call from `%s' suspended by other user\n"
794msgstr "" 788msgstr ""
795 789
796#: src/conversation/gnunet-conversation.c:340 790#: src/conversation/gnunet-conversation.c:342
797#, c-format 791#, c-format
798msgid "Call from `%s' resumed by other user\n" 792msgid "Call from `%s' resumed by other user\n"
799msgstr "" 793msgstr ""
800 794
801#: src/conversation/gnunet-conversation.c:358 795#: src/conversation/gnunet-conversation.c:360
802#, c-format 796#, c-format
803msgid "Ego `%s' no longer available, phone is now down.\n" 797msgid "Ego `%s' no longer available, phone is now down.\n"
804msgstr "" 798msgstr ""
805 799
806#: src/conversation/gnunet-conversation.c:373 800#: src/conversation/gnunet-conversation.c:375
807#, fuzzy 801#, fuzzy
808msgid "Failed to setup phone (internal error)\n" 802msgid "Failed to setup phone (internal error)\n"
809msgstr "发送消息失败。\n" 803msgstr "发送消息失败。\n"
810 804
811#: src/conversation/gnunet-conversation.c:385 805#: src/conversation/gnunet-conversation.c:387
812#, c-format 806#, c-format
813msgid "Phone active at `%s'. Type `/help' for a list of available commands\n" 807msgid "Phone active at `%s'. Type `/help' for a list of available commands\n"
814msgstr "" 808msgstr ""
815 809
816#: src/conversation/gnunet-conversation.c:409 810#: src/conversation/gnunet-conversation.c:411
817#, c-format 811#, c-format
818msgid "Resolved address of `%s'. Now ringing other party.\n" 812msgid "Resolved address of `%s'. Now ringing other party.\n"
819msgstr "" 813msgstr ""
820 814
821#: src/conversation/gnunet-conversation.c:416 815#: src/conversation/gnunet-conversation.c:418
822#, fuzzy, c-format 816#, fuzzy, c-format
823msgid "Connection established to `%s'\n" 817msgid "Connection established to `%s'\n"
824msgstr "找不到接口“%s”的一个 IP 地址。\n" 818msgstr "找不到接口“%s”的一个 IP 地址。\n"
825 819
826#: src/conversation/gnunet-conversation.c:423 820#: src/conversation/gnunet-conversation.c:425
827#, fuzzy, c-format 821#, fuzzy, c-format
828msgid "Failed to resolve `%s'\n" 822msgid "Failed to resolve `%s'\n"
829msgstr "打开日志文件“%s”失败:%s\n" 823msgstr "打开日志文件“%s”失败:%s\n"
830 824
831#: src/conversation/gnunet-conversation.c:431 825#: src/conversation/gnunet-conversation.c:433
832#, c-format 826#, c-format
833msgid "Call to `%s' terminated\n" 827msgid "Call to `%s' terminated\n"
834msgstr "" 828msgstr ""
835 829
836#: src/conversation/gnunet-conversation.c:440 830#: src/conversation/gnunet-conversation.c:442
837#, c-format 831#, c-format
838msgid "Connection to `%s' suspended (by other user)\n" 832msgid "Connection to `%s' suspended (by other user)\n"
839msgstr "" 833msgstr ""
840 834
841#: src/conversation/gnunet-conversation.c:446 835#: src/conversation/gnunet-conversation.c:448
842#, c-format 836#, c-format
843msgid "Connection to `%s' resumed (by other user)\n" 837msgid "Connection to `%s' resumed (by other user)\n"
844msgstr "" 838msgstr ""
845 839
846#: src/conversation/gnunet-conversation.c:451 840#: src/conversation/gnunet-conversation.c:453
847msgid "Error with the call, restarting it\n" 841msgid "Error with the call, restarting it\n"
848msgstr "" 842msgstr ""
849 843
850#: src/conversation/gnunet-conversation.c:522 844#: src/conversation/gnunet-conversation.c:524
851#, fuzzy, c-format 845#, fuzzy, c-format
852msgid "Unknown command `%s'\n" 846msgid "Unknown command `%s'\n"
853msgstr "未知的命令“%s”。\n" 847msgstr "未知的命令“%s”。\n"
854 848
855#: src/conversation/gnunet-conversation.c:538 849#: src/conversation/gnunet-conversation.c:540
856#: src/conversation/gnunet-conversation.c:552 850#: src/conversation/gnunet-conversation.c:554
857#, c-format 851#, c-format
858msgid "Ego `%s' not available\n" 852msgid "Ego `%s' not available\n"
859msgstr "" 853msgstr ""
860 854
861#: src/conversation/gnunet-conversation.c:545 855#: src/conversation/gnunet-conversation.c:547
862#: src/conversation/gnunet-conversation.c:601 856#: src/conversation/gnunet-conversation.c:603
863msgid "You are calling someone else already, hang up first!\n" 857msgid "You are calling someone else already, hang up first!\n"
864msgstr "" 858msgstr ""
865 859
866#: src/conversation/gnunet-conversation.c:560 860#: src/conversation/gnunet-conversation.c:562
867#: src/conversation/gnunet-conversation.c:614 861#: src/conversation/gnunet-conversation.c:616
868#, c-format 862#, c-format
869msgid "You are answering call from `%s', hang up or suspend that call first!\n" 863msgid "You are answering call from `%s', hang up or suspend that call first!\n"
870msgstr "" 864msgstr ""
871 865
872#: src/conversation/gnunet-conversation.c:570 866#: src/conversation/gnunet-conversation.c:572
873msgid "Call recipient missing.\n" 867msgid "Call recipient missing.\n"
874msgstr "" 868msgstr ""
875 869
876#: src/conversation/gnunet-conversation.c:625 870#: src/conversation/gnunet-conversation.c:627
877msgid "There is no incoming call to accept here!\n" 871msgid "There is no incoming call to accept here!\n"
878msgstr "" 872msgstr ""
879 873
880#: src/conversation/gnunet-conversation.c:642 874#: src/conversation/gnunet-conversation.c:644
881#, c-format 875#, c-format
882msgid "There is no incoming call `%s' to accept right now!\n" 876msgid "There is no incoming call `%s' to accept right now!\n"
883msgstr "" 877msgstr ""
884 878
885#: src/conversation/gnunet-conversation.c:673 879#: src/conversation/gnunet-conversation.c:675
886msgid "We currently do not have an address.\n" 880msgid "We currently do not have an address.\n"
887msgstr "" 881msgstr ""
888 882
889#: src/conversation/gnunet-conversation.c:697 883#: src/conversation/gnunet-conversation.c:699
890#, c-format 884#, c-format
891msgid "We are currently trying to locate the private key for the ego `%s'.\n" 885msgid "We are currently trying to locate the private key for the ego `%s'.\n"
892msgstr "" 886msgstr ""
893 887
894#: src/conversation/gnunet-conversation.c:702 888#: src/conversation/gnunet-conversation.c:704
895#, c-format 889#, c-format
896msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n" 890msgid "We are listening for incoming calls for ego `%s' on line `%s'.\n"
897msgstr "" 891msgstr ""
898 892
899#: src/conversation/gnunet-conversation.c:708 893#: src/conversation/gnunet-conversation.c:710
900#: src/conversation/gnunet-conversation.c:732 894#: src/conversation/gnunet-conversation.c:734
901#, c-format 895#, c-format
902msgid "You are having a conversation with `%s'.\n" 896msgid "You are having a conversation with `%s'.\n"
903msgstr "" 897msgstr ""
904 898
905#: src/conversation/gnunet-conversation.c:713 899#: src/conversation/gnunet-conversation.c:715
906msgid "" 900msgid ""
907"We had an internal error setting up our phone line. You can still make " 901"We had an internal error setting up our phone line. You can still make "
908"calls.\n" 902"calls.\n"
909msgstr "" 903msgstr ""
910 904
911#: src/conversation/gnunet-conversation.c:722 905#: src/conversation/gnunet-conversation.c:724
912#, fuzzy, c-format 906#, fuzzy, c-format
913msgid "We are trying to find the network address to call `%s'.\n" 907msgid "We are trying to find the network address to call `%s'.\n"
914msgstr "GNUnet 现在使用 IP 地址 %s。\n" 908msgstr "GNUnet 现在使用 IP 地址 %s。\n"
915 909
916#: src/conversation/gnunet-conversation.c:727 910#: src/conversation/gnunet-conversation.c:729
917#, c-format 911#, c-format
918msgid "We are calling `%s', their phone should be ringing.\n" 912msgid "We are calling `%s', their phone should be ringing.\n"
919msgstr "" 913msgstr ""
920 914
921#: src/conversation/gnunet-conversation.c:746 915#: src/conversation/gnunet-conversation.c:748
922msgid "Calls waiting:\n" 916msgid "Calls waiting:\n"
923msgstr "" 917msgstr ""
924 918
925#: src/conversation/gnunet-conversation.c:752 919#: src/conversation/gnunet-conversation.c:754
926#, fuzzy, c-format 920#, fuzzy, c-format
927msgid "#%u: `%s'\n" 921msgid "#%u: `%s'\n"
928msgstr "运行 %s失败:%s %d\n" 922msgstr "运行 %s失败:%s %d\n"
929 923
930#: src/conversation/gnunet-conversation.c:781 924#: src/conversation/gnunet-conversation.c:783
931#: src/conversation/gnunet-conversation.c:796 925#: src/conversation/gnunet-conversation.c:798
932msgid "There is no call that could be suspended right now.\n" 926msgid "There is no call that could be suspended right now.\n"
933msgstr "" 927msgstr ""
934 928
935#: src/conversation/gnunet-conversation.c:829 929#: src/conversation/gnunet-conversation.c:831
936#: src/conversation/gnunet-conversation.c:845 930#: src/conversation/gnunet-conversation.c:847
937msgid "There is no call that could be resumed right now.\n" 931msgid "There is no call that could be resumed right now.\n"
938msgstr "" 932msgstr ""
939 933
940#: src/conversation/gnunet-conversation.c:852 934#: src/conversation/gnunet-conversation.c:854
941#, c-format 935#, c-format
942msgid "Already talking with `%s', cannot resume a call right now.\n" 936msgid "Already talking with `%s', cannot resume a call right now.\n"
943msgstr "" 937msgstr ""
944 938
945#: src/conversation/gnunet-conversation.c:861 939#: src/conversation/gnunet-conversation.c:863
946msgid "There is no incoming call to resume here!\n" 940msgid "There is no incoming call to resume here!\n"
947msgstr "" 941msgstr ""
948 942
949#: src/conversation/gnunet-conversation.c:878 943#: src/conversation/gnunet-conversation.c:880
950#, c-format 944#, c-format
951msgid "There is no incoming call `%s' to resume right now!\n" 945msgid "There is no incoming call `%s' to resume right now!\n"
952msgstr "" 946msgstr ""
953 947
954#: src/conversation/gnunet-conversation.c:913 948#: src/conversation/gnunet-conversation.c:915
955msgid "There is no call that could be cancelled right now.\n" 949msgid "There is no call that could be cancelled right now.\n"
956msgstr "" 950msgstr ""
957 951
958#: src/conversation/gnunet-conversation.c:921 952#: src/conversation/gnunet-conversation.c:923
959msgid "There is no incoming call to refuse here!\n" 953msgid "There is no incoming call to refuse here!\n"
960msgstr "" 954msgstr ""
961 955
962#: src/conversation/gnunet-conversation.c:938 956#: src/conversation/gnunet-conversation.c:940
963#, c-format 957#, c-format
964msgid "There is no incoming call `%s' to refuse right now!\n" 958msgid "There is no incoming call `%s' to refuse right now!\n"
965msgstr "" 959msgstr ""
966 960
967#: src/conversation/gnunet-conversation.c:964 961#: src/conversation/gnunet-conversation.c:966
968msgid "Use `/address' to find out which address this phone should have in GNS" 962msgid "Use `/address' to find out which address this phone should have in GNS"
969msgstr "" 963msgstr ""
970 964
971#: src/conversation/gnunet-conversation.c:966 965#: src/conversation/gnunet-conversation.c:968
972msgid "Use `/call USER.gnu' to call USER" 966msgid "Use `/call USER.gnu' to call USER"
973msgstr "" 967msgstr ""
974 968
975#: src/conversation/gnunet-conversation.c:968 969#: src/conversation/gnunet-conversation.c:970
976msgid "Use `/accept #NUM' to accept incoming call #NUM" 970msgid "Use `/accept #NUM' to accept incoming call #NUM"
977msgstr "" 971msgstr ""
978 972
979#: src/conversation/gnunet-conversation.c:970 973#: src/conversation/gnunet-conversation.c:972
980msgid "Use `/suspend' to suspend the active call" 974msgid "Use `/suspend' to suspend the active call"
981msgstr "" 975msgstr ""
982 976
983#: src/conversation/gnunet-conversation.c:972 977#: src/conversation/gnunet-conversation.c:974
984msgid "" 978msgid ""
985"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming " 979"Use `/resume [#NUM]' to resume a call, #NUM is needed to resume incoming "
986"calls, no argument is needed to resume the current outgoing call." 980"calls, no argument is needed to resume the current outgoing call."
987msgstr "" 981msgstr ""
988 982
989#: src/conversation/gnunet-conversation.c:974 983#: src/conversation/gnunet-conversation.c:976
990msgid "Use `/cancel' to reject or terminate a call" 984msgid "Use `/cancel' to reject or terminate a call"
991msgstr "" 985msgstr ""
992 986
993#: src/conversation/gnunet-conversation.c:976 987#: src/conversation/gnunet-conversation.c:978
994msgid "Use `/status' to print status information" 988msgid "Use `/status' to print status information"
995msgstr "" 989msgstr ""
996 990
997#: src/conversation/gnunet-conversation.c:978 991#: src/conversation/gnunet-conversation.c:980
998msgid "Use `/quit' to terminate gnunet-conversation" 992msgid "Use `/quit' to terminate gnunet-conversation"
999msgstr "" 993msgstr ""
1000 994
1001#: src/conversation/gnunet-conversation.c:980 995#: src/conversation/gnunet-conversation.c:982
1002msgid "Use `/help command' to get help for a specific command" 996msgid "Use `/help command' to get help for a specific command"
1003msgstr "" 997msgstr ""
1004 998
1005#: src/conversation/gnunet-conversation.c:1196 999#: src/conversation/gnunet-conversation.c:1198
1006#, fuzzy, c-format 1000#, fuzzy, c-format
1007msgid "Name of our ego changed to `%s'\n" 1001msgid "Name of our ego changed to `%s'\n"
1008msgstr "发送消息失败。\n" 1002msgstr "发送消息失败。\n"
1009 1003
1010#: src/conversation/gnunet-conversation.c:1209 1004#: src/conversation/gnunet-conversation.c:1211
1011#, c-format 1005#, c-format
1012msgid "Our ego `%s' was deleted!\n" 1006msgid "Our ego `%s' was deleted!\n"
1013msgstr "" 1007msgstr ""
1014 1008
1015#: src/conversation/gnunet-conversation.c:1247 1009#: src/conversation/gnunet-conversation.c:1249
1016#, fuzzy 1010#, fuzzy
1017msgid "You must specify the NAME of an ego to use\n" 1011msgid "You must specify the NAME of an ego to use\n"
1018msgstr "您必须指定一个昵称\n" 1012msgstr "您必须指定一个昵称\n"
1019 1013
1020#: src/conversation/gnunet-conversation.c:1271 1014#: src/conversation/gnunet-conversation.c:1273
1021#, fuzzy 1015#, fuzzy
1022msgid "Failed to start gnunet-helper-w32-console\n" 1016msgid "Failed to start gnunet-helper-w32-console\n"
1023msgstr "初始化“%s”服务失败。\n" 1017msgstr "初始化“%s”服务失败。\n"
1024 1018
1025#: src/conversation/gnunet-conversation.c:1300 1019#: src/conversation/gnunet-conversation.c:1302
1026msgid "sets the NAME of the ego to use for the caller ID" 1020msgid "sets the NAME of the ego to use for the caller ID"
1027msgstr "" 1021msgstr ""
1028 1022
1029#: src/conversation/gnunet-conversation.c:1305 1023#: src/conversation/gnunet-conversation.c:1307
1030msgid "sets the LINE to use for the phone" 1024msgid "sets the LINE to use for the phone"
1031msgstr "" 1025msgstr ""
1032 1026
1033#: src/conversation/gnunet-conversation.c:1334 1027#: src/conversation/gnunet-conversation.c:1336
1034msgid "Enables having a conversation with other GNUnet users." 1028msgid "Enables having a conversation with other GNUnet users."
1035msgstr "" 1029msgstr ""
1036 1030
1037#: src/conversation/gnunet-conversation-test.c:118 1031#: src/conversation/gnunet-conversation-test.c:120
1038#, c-format 1032#, c-format
1039msgid "" 1033msgid ""
1040"\n" 1034"\n"
1041"End of transmission. Have a GNU day.\n" 1035"End of transmission. Have a GNU day.\n"
1042msgstr "" 1036msgstr ""
1043 1037
1044#: src/conversation/gnunet-conversation-test.c:143 1038#: src/conversation/gnunet-conversation-test.c:145
1045#, c-format 1039#, c-format
1046msgid "" 1040msgid ""
1047"\n" 1041"\n"
@@ -1049,2453 +1043,2449 @@ msgid ""
1049"settings are working..." 1043"settings are working..."
1050msgstr "" 1044msgstr ""
1051 1045
1052#: src/conversation/gnunet-conversation-test.c:214 1046#: src/conversation/gnunet-conversation-test.c:216
1053#, c-format 1047#, c-format
1054msgid "" 1048msgid ""
1055"We will now be recording you for %s. After that time, the recording will be " 1049"We will now be recording you for %s. After that time, the recording will be "
1056"played back to you..." 1050"played back to you..."
1057msgstr "" 1051msgstr ""
1058 1052
1059#: src/conversation/gnunet_gst.c:620 1053#: src/conversation/gnunet_gst.c:622
1060#: src/conversation/gnunet-helper-audio-playback-gst.c:359 1054#: src/conversation/gnunet-helper-audio-playback-gst.c:361
1061#, c-format 1055#, c-format
1062msgid "Read error from STDIN: %d %s\n" 1056msgid "Read error from STDIN: %d %s\n"
1063msgstr "" 1057msgstr ""
1064 1058
1065#: src/conversation/gnunet-helper-audio-playback.c:323 1059#: src/conversation/gnunet-helper-audio-playback.c:325
1066#, fuzzy, c-format 1060#, fuzzy, c-format
1067msgid "pa_stream_write() failed: %s\n" 1061msgid "pa_stream_write() failed: %s\n"
1068msgstr "“%s”说:%s\n" 1062msgstr "“%s”说:%s\n"
1069 1063
1070#: src/conversation/gnunet-helper-audio-playback.c:625 1064#: src/conversation/gnunet-helper-audio-playback.c:627
1071msgid "gnunet-helper-audio-playback - Got signal, exiting\n" 1065msgid "gnunet-helper-audio-playback - Got signal, exiting\n"
1072msgstr "" 1066msgstr ""
1073 1067
1074#: src/conversation/gnunet-helper-audio-playback.c:651 1068#: src/conversation/gnunet-helper-audio-playback.c:653
1075#: src/conversation/gnunet-helper-audio-record.c:561 1069#: src/conversation/gnunet-helper-audio-record.c:563
1076msgid "Connection established.\n" 1070msgid "Connection established.\n"
1077msgstr "" 1071msgstr ""
1078 1072
1079#: src/conversation/gnunet-helper-audio-playback.c:656 1073#: src/conversation/gnunet-helper-audio-playback.c:658
1080#: src/conversation/gnunet-helper-audio-record.c:566 1074#: src/conversation/gnunet-helper-audio-record.c:568
1081#, fuzzy, c-format 1075#, fuzzy, c-format
1082msgid "pa_stream_new() failed: %s\n" 1076msgid "pa_stream_new() failed: %s\n"
1083msgstr "“%s”说:%s\n" 1077msgstr "“%s”说:%s\n"
1084 1078
1085#: src/conversation/gnunet-helper-audio-playback.c:670 1079#: src/conversation/gnunet-helper-audio-playback.c:672
1086#, c-format 1080#, c-format
1087msgid "pa_stream_connect_playback() failed: %s\n" 1081msgid "pa_stream_connect_playback() failed: %s\n"
1088msgstr "" 1082msgstr ""
1089 1083
1090#: src/conversation/gnunet-helper-audio-playback.c:683 1084#: src/conversation/gnunet-helper-audio-playback.c:685
1091#: src/conversation/gnunet-helper-audio-record.c:592 1085#: src/conversation/gnunet-helper-audio-record.c:594
1092#, fuzzy, c-format 1086#, fuzzy, c-format
1093msgid "Connection failure: %s\n" 1087msgid "Connection failure: %s\n"
1094msgstr "“%s”已连接到“%s”。\n" 1088msgstr "“%s”已连接到“%s”。\n"
1095 1089
1096#: src/conversation/gnunet-helper-audio-playback.c:704 1090#: src/conversation/gnunet-helper-audio-playback.c:706
1097#: src/conversation/gnunet-helper-audio-record.c:615 1091#: src/conversation/gnunet-helper-audio-record.c:617
1098msgid "Wrong Spec\n" 1092msgid "Wrong Spec\n"
1099msgstr "" 1093msgstr ""
1100 1094
1101#: src/conversation/gnunet-helper-audio-playback.c:710 1095#: src/conversation/gnunet-helper-audio-playback.c:712
1102#: src/conversation/gnunet-helper-audio-record.c:621 1096#: src/conversation/gnunet-helper-audio-record.c:623
1103msgid "pa_mainloop_new() failed.\n" 1097msgid "pa_mainloop_new() failed.\n"
1104msgstr "" 1098msgstr ""
1105 1099
1106#: src/conversation/gnunet-helper-audio-playback.c:724 1100#: src/conversation/gnunet-helper-audio-playback.c:726
1107#: src/conversation/gnunet-helper-audio-record.c:636 1101#: src/conversation/gnunet-helper-audio-record.c:638
1108msgid "pa_context_new() failed.\n" 1102msgid "pa_context_new() failed.\n"
1109msgstr "" 1103msgstr ""
1110 1104
1111#: src/conversation/gnunet-helper-audio-playback.c:731 1105#: src/conversation/gnunet-helper-audio-playback.c:733
1112#: src/conversation/gnunet-helper-audio-record.c:642 1106#: src/conversation/gnunet-helper-audio-record.c:644
1113#, fuzzy, c-format 1107#, fuzzy, c-format
1114msgid "pa_context_connect() failed: %s\n" 1108msgid "pa_context_connect() failed: %s\n"
1115msgstr "“%s”说:%s\n" 1109msgstr "“%s”说:%s\n"
1116 1110
1117#: src/conversation/gnunet-helper-audio-playback.c:737 1111#: src/conversation/gnunet-helper-audio-playback.c:739
1118#: src/conversation/gnunet-helper-audio-record.c:648 1112#: src/conversation/gnunet-helper-audio-record.c:650
1119msgid "pa_mainloop_run() failed.\n" 1113msgid "pa_mainloop_run() failed.\n"
1120msgstr "" 1114msgstr ""
1121 1115
1122#: src/conversation/gnunet-helper-audio-playback.c:816 1116#: src/conversation/gnunet-helper-audio-playback.c:818
1123#, c-format 1117#, c-format
1124msgid "Read error from STDIN: %s\n" 1118msgid "Read error from STDIN: %s\n"
1125msgstr "" 1119msgstr ""
1126 1120
1127#: src/conversation/gnunet-helper-audio-record.c:351 1121#: src/conversation/gnunet-helper-audio-record.c:353
1128#, fuzzy, c-format 1122#, fuzzy, c-format
1129msgid "opus_encode_float() failed: %s. Aborting\n" 1123msgid "opus_encode_float() failed: %s. Aborting\n"
1130msgstr "“%s”说:%s\n" 1124msgstr "“%s”说:%s\n"
1131 1125
1132#: src/conversation/gnunet-helper-audio-record.c:430 1126#: src/conversation/gnunet-helper-audio-record.c:432
1133#, fuzzy, c-format 1127#, fuzzy, c-format
1134msgid "pa_stream_peek() failed: %s\n" 1128msgid "pa_stream_peek() failed: %s\n"
1135msgstr "“%s”说:%s\n" 1129msgstr "“%s”说:%s\n"
1136 1130
1137#: src/conversation/gnunet-helper-audio-record.c:472 1131#: src/conversation/gnunet-helper-audio-record.c:474
1138msgid "Got signal, exiting.\n" 1132msgid "Got signal, exiting.\n"
1139msgstr "" 1133msgstr ""
1140 1134
1141#: src/conversation/gnunet-helper-audio-record.c:498 1135#: src/conversation/gnunet-helper-audio-record.c:500
1142#, fuzzy 1136#, fuzzy
1143msgid "Stream successfully created.\n" 1137msgid "Stream successfully created.\n"
1144msgstr "“%s”已连接到“%s”。\n" 1138msgstr "“%s”已连接到“%s”。\n"
1145 1139
1146#: src/conversation/gnunet-helper-audio-record.c:503 1140#: src/conversation/gnunet-helper-audio-record.c:505
1147#, fuzzy, c-format 1141#, fuzzy, c-format
1148msgid "pa_stream_get_buffer_attr() failed: %s\n" 1142msgid "pa_stream_get_buffer_attr() failed: %s\n"
1149msgstr "“%s”说:%s\n" 1143msgstr "“%s”说:%s\n"
1150 1144
1151#: src/conversation/gnunet-helper-audio-record.c:511 1145#: src/conversation/gnunet-helper-audio-record.c:513
1152#, c-format 1146#, c-format
1153msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" 1147msgid "Buffer metrics: maxlength=%u, fragsize=%u\n"
1154msgstr "" 1148msgstr ""
1155 1149
1156#: src/conversation/gnunet-helper-audio-record.c:515 1150#: src/conversation/gnunet-helper-audio-record.c:517
1157#, c-format 1151#, c-format
1158msgid "Using sample spec '%s', channel map '%s'.\n" 1152msgid "Using sample spec '%s', channel map '%s'.\n"
1159msgstr "" 1153msgstr ""
1160 1154
1161#: src/conversation/gnunet-helper-audio-record.c:522 1155#: src/conversation/gnunet-helper-audio-record.c:524
1162#, fuzzy, c-format 1156#, fuzzy, c-format
1163msgid "Connected to device %s (%u, %ssuspended).\n" 1157msgid "Connected to device %s (%u, %ssuspended).\n"
1164msgstr "“%s”已连接到“%s”。\n" 1158msgstr "“%s”已连接到“%s”。\n"
1165 1159
1166#: src/conversation/gnunet-helper-audio-record.c:531 1160#: src/conversation/gnunet-helper-audio-record.c:533
1167#, c-format 1161#, c-format
1168msgid "Stream error: %s\n" 1162msgid "Stream error: %s\n"
1169msgstr "" 1163msgstr ""
1170 1164
1171#: src/conversation/gnunet-helper-audio-record.c:579 1165#: src/conversation/gnunet-helper-audio-record.c:581
1172#, fuzzy, c-format 1166#, fuzzy, c-format
1173msgid "pa_stream_connect_record() failed: %s\n" 1167msgid "pa_stream_connect_record() failed: %s\n"
1174msgstr "“%s”说:%s\n" 1168msgstr "“%s”说:%s\n"
1175 1169
1176#: src/conversation/gnunet-helper-audio-record.c:693 1170#: src/conversation/gnunet-helper-audio-record.c:695
1177#, fuzzy 1171#, fuzzy
1178msgid "ogg_stream_init() failed.\n" 1172msgid "ogg_stream_init() failed.\n"
1179msgstr "“%s”说:%s\n" 1173msgstr "“%s”说:%s\n"
1180 1174
1181#: src/conversation/gnunet-helper-audio-record.c:738 1175#: src/conversation/gnunet-helper-audio-record.c:740
1182#, fuzzy, c-format 1176#, fuzzy, c-format
1183msgid "Failed to allocate %u bytes for second packet\n" 1177msgid "Failed to allocate %u bytes for second packet\n"
1184msgstr "初始化“%s”服务失败。\n" 1178msgstr "初始化“%s”服务失败。\n"
1185 1179
1186#: src/conversation/gnunet-service-conversation.c:1303 1180#: src/conversation/gnunet-service-conversation.c:1305
1187#, fuzzy, c-format 1181#, fuzzy, c-format
1188msgid "Could not open line, port %s already in use!\n" 1182msgid "Could not open line, port %s already in use!\n"
1189msgstr "无法连接到 %s:%u:%s\n" 1183msgstr "无法连接到 %s:%u:%s\n"
1190 1184
1191#: src/conversation/microphone.c:119 1185#: src/conversation/microphone.c:121
1192#, fuzzy 1186#, fuzzy
1193msgid "Could not start record audio helper\n" 1187msgid "Could not start record audio helper\n"
1194msgstr "找不到主机“%s”的 IP:%s\n" 1188msgstr "找不到主机“%s”的 IP:%s\n"
1195 1189
1196#: src/conversation/plugin_gnsrecord_conversation.c:70 1190#: src/conversation/plugin_gnsrecord_conversation.c:72
1197#, c-format 1191#, c-format
1198msgid "PHONE version %u not supported\n" 1192msgid "PHONE version %u not supported\n"
1199msgstr "" 1193msgstr ""
1200 1194
1201#: src/conversation/plugin_gnsrecord_conversation.c:133 1195#: src/conversation/plugin_gnsrecord_conversation.c:135
1202#: src/conversation/plugin_gnsrecord_conversation.c:147 1196#: src/conversation/plugin_gnsrecord_conversation.c:149
1203#, fuzzy, c-format 1197#, fuzzy, c-format
1204msgid "Unable to parse PHONE record `%s'\n" 1198msgid "Unable to parse PHONE record `%s'\n"
1205msgstr "解析配置文件“%s”失败\n" 1199msgstr "解析配置文件“%s”失败\n"
1206 1200
1207#: src/conversation/speaker.c:73 1201#: src/conversation/speaker.c:75
1208msgid "Could not start playback audio helper.\n" 1202msgid "Could not start playback audio helper.\n"
1209msgstr "" 1203msgstr ""
1210 1204
1211#: src/core/gnunet-core.c:88 1205#: src/core/gnunet-core.c:90
1212#, fuzzy 1206#, fuzzy
1213msgid "fresh connection" 1207msgid "fresh connection"
1214msgstr "" 1208msgstr ""
1215"\n" 1209"\n"
1216"按任意键继续\n" 1210"按任意键继续\n"
1217 1211
1218#: src/core/gnunet-core.c:91 1212#: src/core/gnunet-core.c:93
1219msgid "key sent" 1213msgid "key sent"
1220msgstr "" 1214msgstr ""
1221 1215
1222#: src/core/gnunet-core.c:94 1216#: src/core/gnunet-core.c:96
1223msgid "key received" 1217msgid "key received"
1224msgstr "" 1218msgstr ""
1225 1219
1226#: src/core/gnunet-core.c:97 1220#: src/core/gnunet-core.c:99
1227#, fuzzy 1221#, fuzzy
1228msgid "connection established" 1222msgid "connection established"
1229msgstr "找不到接口“%s”的一个 IP 地址。\n" 1223msgstr "找不到接口“%s”的一个 IP 地址。\n"
1230 1224
1231#: src/core/gnunet-core.c:100 1225#: src/core/gnunet-core.c:102
1232msgid "rekeying" 1226msgid "rekeying"
1233msgstr "" 1227msgstr ""
1234 1228
1235#: src/core/gnunet-core.c:103 1229#: src/core/gnunet-core.c:105
1236#, fuzzy 1230#, fuzzy
1237msgid "disconnected" 1231msgid "disconnected"
1238msgstr "“%s”已连接到“%s”。\n" 1232msgstr "“%s”已连接到“%s”。\n"
1239 1233
1240#: src/core/gnunet-core.c:110 1234#: src/core/gnunet-core.c:112
1241msgid "Connection to CORE service lost (reconnecting)" 1235msgid "Connection to CORE service lost (reconnecting)"
1242msgstr "" 1236msgstr ""
1243 1237
1244#: src/core/gnunet-core.c:113 1238#: src/core/gnunet-core.c:115
1245#, fuzzy 1239#, fuzzy
1246msgid "unknown state" 1240msgid "unknown state"
1247msgstr "未知错误" 1241msgstr "未知错误"
1248 1242
1249#: src/core/gnunet-core.c:118 1243#: src/core/gnunet-core.c:120
1250#, c-format 1244#, c-format
1251msgid "%24s: %-30s %4s (timeout in %6s)\n" 1245msgid "%24s: %-30s %4s (timeout in %6s)\n"
1252msgstr "" 1246msgstr ""
1253 1247
1254#: src/core/gnunet-core.c:142 src/peerinfo-tool/gnunet-peerinfo.c:726 1248#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
1255#, fuzzy, c-format 1249#, fuzzy, c-format
1256msgid "Invalid command line argument `%s'\n" 1250msgid "Invalid command line argument `%s'\n"
1257msgstr "“%s”的参数无效。\n" 1251msgstr "“%s”的参数无效。\n"
1258 1252
1259#: src/core/gnunet-core.c:153 1253#: src/core/gnunet-core.c:155
1260#, fuzzy 1254#, fuzzy
1261msgid "Failed to connect to CORE service!\n" 1255msgid "Failed to connect to CORE service!\n"
1262msgstr "初始化“%s”服务失败。\n" 1256msgstr "初始化“%s”服务失败。\n"
1263 1257
1264#: src/core/gnunet-core.c:175 src/transport/gnunet-transport.c:1447 1258#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
1265msgid "provide information about all current connections (continuously)" 1259msgid "provide information about all current connections (continuously)"
1266msgstr "" 1260msgstr ""
1267 1261
1268#: src/core/gnunet-core.c:184 1262#: src/core/gnunet-core.c:186
1269msgid "Print information about connected peers." 1263msgid "Print information about connected peers."
1270msgstr "" 1264msgstr ""
1271 1265
1272#: src/core/gnunet-service-core.c:345 1266#: src/core/gnunet-service-core.c:347
1273msgid "# send requests dropped (disconnected)" 1267msgid "# send requests dropped (disconnected)"
1274msgstr "" 1268msgstr ""
1275 1269
1276#: src/core/gnunet-service-core.c:369 1270#: src/core/gnunet-service-core.c:371
1277msgid "# dequeuing CAR (duplicate request)" 1271msgid "# dequeuing CAR (duplicate request)"
1278msgstr "" 1272msgstr ""
1279 1273
1280#: src/core/gnunet-service-core.c:441 1274#: src/core/gnunet-service-core.c:443
1281#, c-format 1275#, c-format
1282msgid "# bytes of messages of type %u received" 1276msgid "# bytes of messages of type %u received"
1283msgstr "" 1277msgstr ""
1284 1278
1285#: src/core/gnunet-service-core.c:539 1279#: src/core/gnunet-service-core.c:541
1286msgid "# messages discarded (session disconnected)" 1280msgid "# messages discarded (session disconnected)"
1287msgstr "" 1281msgstr ""
1288 1282
1289#: src/core/gnunet-service-core.c:877 1283#: src/core/gnunet-service-core.c:879
1290#, c-format 1284#, c-format
1291msgid "# messages of type %u discarded (client busy)" 1285msgid "# messages of type %u discarded (client busy)"
1292msgstr "" 1286msgstr ""
1293 1287
1294#: src/core/gnunet-service-core.c:986 1288#: src/core/gnunet-service-core.c:988
1295#, fuzzy 1289#, fuzzy
1296msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n" 1290msgid "Core service is lacking HOSTKEY configuration setting. Exiting.\n"
1297msgstr "立即保存配置?" 1291msgstr "立即保存配置?"
1298 1292
1299#: src/core/gnunet-service-core.c:1007 1293#: src/core/gnunet-service-core.c:1009
1300#, fuzzy, c-format 1294#, fuzzy, c-format
1301msgid "Core service of `%s' ready.\n" 1295msgid "Core service of `%s' ready.\n"
1302msgstr "服务已删除。\n" 1296msgstr "服务已删除。\n"
1303 1297
1304#: src/core/gnunet-service-core_kx.c:615 1298#: src/core/gnunet-service-core_kx.c:617
1305msgid "# bytes encrypted" 1299msgid "# bytes encrypted"
1306msgstr "" 1300msgstr ""
1307 1301
1308#: src/core/gnunet-service-core_kx.c:675 1302#: src/core/gnunet-service-core_kx.c:677
1309msgid "# bytes decrypted" 1303msgid "# bytes decrypted"
1310msgstr "" 1304msgstr ""
1311 1305
1312#: src/core/gnunet-service-core_kx.c:777 1306#: src/core/gnunet-service-core_kx.c:779
1313msgid "# PAYLOAD dropped (out of order)" 1307msgid "# PAYLOAD dropped (out of order)"
1314msgstr "" 1308msgstr ""
1315 1309
1316#: src/core/gnunet-service-core_kx.c:827 1310#: src/core/gnunet-service-core_kx.c:829
1317msgid "# key exchanges initiated" 1311msgid "# key exchanges initiated"
1318msgstr "" 1312msgstr ""
1319 1313
1320#: src/core/gnunet-service-core_kx.c:889 1314#: src/core/gnunet-service-core_kx.c:891
1321msgid "# key exchanges stopped" 1315msgid "# key exchanges stopped"
1322msgstr "" 1316msgstr ""
1323 1317
1324#: src/core/gnunet-service-core_kx.c:923 1318#: src/core/gnunet-service-core_kx.c:925
1325#, fuzzy 1319#, fuzzy
1326msgid "# PING messages transmitted" 1320msgid "# PING messages transmitted"
1327msgstr "消息尺寸" 1321msgstr "消息尺寸"
1328 1322
1329#: src/core/gnunet-service-core_kx.c:990 1323#: src/core/gnunet-service-core_kx.c:992
1330msgid "# old ephemeral keys ignored" 1324msgid "# old ephemeral keys ignored"
1331msgstr "" 1325msgstr ""
1332 1326
1333#: src/core/gnunet-service-core_kx.c:1003 1327#: src/core/gnunet-service-core_kx.c:1005
1334msgid "# duplicate ephemeral keys ignored" 1328msgid "# duplicate ephemeral keys ignored"
1335msgstr "" 1329msgstr ""
1336 1330
1337#: src/core/gnunet-service-core_kx.c:1038 1331#: src/core/gnunet-service-core_kx.c:1040
1338msgid "# EPHEMERAL_KEYs rejected (bad signature)" 1332msgid "# EPHEMERAL_KEYs rejected (bad signature)"
1339msgstr "" 1333msgstr ""
1340 1334
1341#: src/core/gnunet-service-core_kx.c:1052 1335#: src/core/gnunet-service-core_kx.c:1054
1342#, c-format 1336#, c-format
1343msgid "" 1337msgid ""
1344"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match " 1338"EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
1345"our system time (%llu not in [%llu,%llu]).\n" 1339"our system time (%llu not in [%llu,%llu]).\n"
1346msgstr "" 1340msgstr ""
1347 1341
1348#: src/core/gnunet-service-core_kx.c:1058 1342#: src/core/gnunet-service-core_kx.c:1060
1349msgid "# EPHEMERAL_KEY messages rejected due to time" 1343msgid "# EPHEMERAL_KEY messages rejected due to time"
1350msgstr "" 1344msgstr ""
1351 1345
1352#: src/core/gnunet-service-core_kx.c:1078 1346#: src/core/gnunet-service-core_kx.c:1080
1353#, fuzzy 1347#, fuzzy
1354msgid "# valid ephemeral keys received" 1348msgid "# valid ephemeral keys received"
1355msgstr "保存配置失败。" 1349msgstr "保存配置失败。"
1356 1350
1357#: src/core/gnunet-service-core_kx.c:1178 1351#: src/core/gnunet-service-core_kx.c:1180
1358#: src/transport/gnunet-service-transport_validation.c:1126 1352#: src/transport/gnunet-service-transport_validation.c:1128
1359msgid "# PING messages received" 1353msgid "# PING messages received"
1360msgstr "" 1354msgstr ""
1361 1355
1362#: src/core/gnunet-service-core_kx.c:1187 1356#: src/core/gnunet-service-core_kx.c:1189
1363msgid "# PING messages dropped (out of order)" 1357msgid "# PING messages dropped (out of order)"
1364msgstr "" 1358msgstr ""
1365 1359
1366#: src/core/gnunet-service-core_kx.c:1246 1360#: src/core/gnunet-service-core_kx.c:1248
1367msgid "# PONG messages created" 1361msgid "# PONG messages created"
1368msgstr "" 1362msgstr ""
1369 1363
1370#: src/core/gnunet-service-core_kx.c:1272 1364#: src/core/gnunet-service-core_kx.c:1274
1371msgid "# sessions terminated by timeout" 1365msgid "# sessions terminated by timeout"
1372msgstr "" 1366msgstr ""
1373 1367
1374#: src/core/gnunet-service-core_kx.c:1285 1368#: src/core/gnunet-service-core_kx.c:1287
1375msgid "# keepalive messages sent" 1369msgid "# keepalive messages sent"
1376msgstr "" 1370msgstr ""
1377 1371
1378#: src/core/gnunet-service-core_kx.c:1349 1372#: src/core/gnunet-service-core_kx.c:1351
1379#: src/transport/gnunet-service-transport_validation.c:1459 1373#: src/transport/gnunet-service-transport_validation.c:1461
1380msgid "# PONG messages received" 1374msgid "# PONG messages received"
1381msgstr "" 1375msgstr ""
1382 1376
1383#: src/core/gnunet-service-core_kx.c:1356 1377#: src/core/gnunet-service-core_kx.c:1358
1384msgid "# PONG messages dropped (connection down)" 1378msgid "# PONG messages dropped (connection down)"
1385msgstr "" 1379msgstr ""
1386 1380
1387#: src/core/gnunet-service-core_kx.c:1361 1381#: src/core/gnunet-service-core_kx.c:1363
1388msgid "# PONG messages dropped (out of order)" 1382msgid "# PONG messages dropped (out of order)"
1389msgstr "" 1383msgstr ""
1390 1384
1391#: src/core/gnunet-service-core_kx.c:1396 1385#: src/core/gnunet-service-core_kx.c:1398
1392msgid "# PONG messages decrypted" 1386msgid "# PONG messages decrypted"
1393msgstr "" 1387msgstr ""
1394 1388
1395#: src/core/gnunet-service-core_kx.c:1434 1389#: src/core/gnunet-service-core_kx.c:1436
1396msgid "# session keys confirmed via PONG" 1390msgid "# session keys confirmed via PONG"
1397msgstr "" 1391msgstr ""
1398 1392
1399#: src/core/gnunet-service-core_kx.c:1445 1393#: src/core/gnunet-service-core_kx.c:1447
1400msgid "# timeouts prevented via PONG" 1394msgid "# timeouts prevented via PONG"
1401msgstr "" 1395msgstr ""
1402 1396
1403#: src/core/gnunet-service-core_kx.c:1452 1397#: src/core/gnunet-service-core_kx.c:1454
1404msgid "# rekey operations confirmed via PONG" 1398msgid "# rekey operations confirmed via PONG"
1405msgstr "" 1399msgstr ""
1406 1400
1407#: src/core/gnunet-service-core_kx.c:1640 1401#: src/core/gnunet-service-core_kx.c:1642
1408msgid "# DATA message dropped (out of order)" 1402msgid "# DATA message dropped (out of order)"
1409msgstr "" 1403msgstr ""
1410 1404
1411#: src/core/gnunet-service-core_kx.c:1648 1405#: src/core/gnunet-service-core_kx.c:1650
1412#, c-format 1406#, c-format
1413msgid "" 1407msgid ""
1414"Session to peer `%s' went down due to key expiration (should not happen)\n" 1408"Session to peer `%s' went down due to key expiration (should not happen)\n"
1415msgstr "" 1409msgstr ""
1416 1410
1417#: src/core/gnunet-service-core_kx.c:1651 1411#: src/core/gnunet-service-core_kx.c:1653
1418msgid "# sessions terminated by key expiration" 1412msgid "# sessions terminated by key expiration"
1419msgstr "" 1413msgstr ""
1420 1414
1421#: src/core/gnunet-service-core_kx.c:1740 1415#: src/core/gnunet-service-core_kx.c:1742
1422#: src/core/gnunet-service-core_kx.c:1766 1416#: src/core/gnunet-service-core_kx.c:1768
1423msgid "# bytes dropped (duplicates)" 1417msgid "# bytes dropped (duplicates)"
1424msgstr "" 1418msgstr ""
1425 1419
1426#: src/core/gnunet-service-core_kx.c:1753 1420#: src/core/gnunet-service-core_kx.c:1755
1427msgid "# bytes dropped (out of sequence)" 1421msgid "# bytes dropped (out of sequence)"
1428msgstr "" 1422msgstr ""
1429 1423
1430#: src/core/gnunet-service-core_kx.c:1795 1424#: src/core/gnunet-service-core_kx.c:1797
1431msgid "# bytes dropped (ancient message)" 1425msgid "# bytes dropped (ancient message)"
1432msgstr "" 1426msgstr ""
1433 1427
1434#: src/core/gnunet-service-core_kx.c:1803 1428#: src/core/gnunet-service-core_kx.c:1805
1435msgid "# bytes of payload decrypted" 1429msgid "# bytes of payload decrypted"
1436msgstr "" 1430msgstr ""
1437 1431
1438#: src/core/gnunet-service-core_sessions.c:258 1432#: src/core/gnunet-service-core_sessions.c:260
1439#: src/core/gnunet-service-core_sessions.c:348 1433#: src/core/gnunet-service-core_sessions.c:350
1440#: src/dht/gnunet-service-dht_neighbours.c:739 1434#: src/dht/gnunet-service-dht_neighbours.c:741
1441#: src/dht/gnunet-service-dht_neighbours.c:802 1435#: src/dht/gnunet-service-dht_neighbours.c:804
1442#: src/fs/gnunet-service-fs_cp.c:613 src/fs/gnunet-service-fs_cp.c:1520 1436#: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
1443#: src/topology/gnunet-daemon-topology.c:615 1437#: src/topology/gnunet-daemon-topology.c:617
1444#: src/topology/gnunet-daemon-topology.c:717 1438#: src/topology/gnunet-daemon-topology.c:719
1445#: src/transport/gnunet-service-transport_neighbours.c:719 1439#: src/transport/gnunet-service-transport_neighbours.c:720
1446#: src/transport/gnunet-service-transport_neighbours.c:727 1440#: src/transport/gnunet-service-transport_neighbours.c:728
1447msgid "# peers connected" 1441msgid "# peers connected"
1448msgstr "" 1442msgstr ""
1449 1443
1450#: src/core/gnunet-service-core_sessions.c:294 1444#: src/core/gnunet-service-core_sessions.c:296
1451msgid "# type map refreshes sent" 1445msgid "# type map refreshes sent"
1452msgstr "" 1446msgstr ""
1453 1447
1454#: src/core/gnunet-service-core_sessions.c:414 1448#: src/core/gnunet-service-core_sessions.c:416
1455#, fuzzy 1449#, fuzzy
1456msgid "# outdated typemap confirmations received" 1450msgid "# outdated typemap confirmations received"
1457msgstr "保存配置失败。" 1451msgstr "保存配置失败。"
1458 1452
1459#: src/core/gnunet-service-core_sessions.c:431 1453#: src/core/gnunet-service-core_sessions.c:433
1460#, fuzzy 1454#, fuzzy
1461msgid "# valid typemap confirmations received" 1455msgid "# valid typemap confirmations received"
1462msgstr "保存配置失败。" 1456msgstr "保存配置失败。"
1463 1457
1464#: src/core/gnunet-service-core_typemap.c:167 1458#: src/core/gnunet-service-core_typemap.c:169
1465#: src/core/gnunet-service-core_typemap.c:179 1459#: src/core/gnunet-service-core_typemap.c:181
1466msgid "# type maps received" 1460msgid "# type maps received"
1467msgstr "" 1461msgstr ""
1468 1462
1469#: src/core/gnunet-service-core_typemap.c:210 1463#: src/core/gnunet-service-core_typemap.c:212
1470msgid "# updates to my type map" 1464msgid "# updates to my type map"
1471msgstr "" 1465msgstr ""
1472 1466
1473#: src/credential/credential_misc.c:86 1467#: src/credential/credential_misc.c:88
1474#, fuzzy, c-format 1468#, fuzzy, c-format
1475msgid "Unable to parse CRED record string `%s'\n" 1469msgid "Unable to parse CRED record string `%s'\n"
1476msgstr "解析配置文件“%s”失败\n" 1470msgstr "解析配置文件“%s”失败\n"
1477 1471
1478#: src/credential/gnunet-credential.c:262 src/namestore/gnunet-namestore.c:887 1472#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
1479#, c-format 1473#, c-format
1480msgid "Ego `%s' not known to identity service\n" 1474msgid "Ego `%s' not known to identity service\n"
1481msgstr "" 1475msgstr ""
1482 1476
1483#: src/credential/gnunet-credential.c:278 1477#: src/credential/gnunet-credential.c:280
1484#: src/credential/gnunet-credential.c:432 1478#: src/credential/gnunet-credential.c:434
1485#, fuzzy, c-format 1479#, fuzzy, c-format
1486msgid "Issuer public key `%s' is not well-formed\n" 1480msgid "Issuer public key `%s' is not well-formed\n"
1487msgstr "“%s”的参数无效。\n" 1481msgstr "“%s”的参数无效。\n"
1488 1482
1489#: src/credential/gnunet-credential.c:359 1483#: src/credential/gnunet-credential.c:361
1490#: src/credential/gnunet-credential.c:421 1484#: src/credential/gnunet-credential.c:423
1491#, fuzzy, c-format 1485#, fuzzy, c-format
1492msgid "Issuer public key not well-formed\n" 1486msgid "Issuer public key not well-formed\n"
1493msgstr "“%s”的参数无效。\n" 1487msgstr "“%s”的参数无效。\n"
1494 1488
1495#: src/credential/gnunet-credential.c:370 1489#: src/credential/gnunet-credential.c:372
1496#: src/credential/gnunet-credential.c:442 1490#: src/credential/gnunet-credential.c:444
1497#, fuzzy, c-format 1491#, fuzzy, c-format
1498msgid "Failed to connect to CREDENTIAL\n" 1492msgid "Failed to connect to CREDENTIAL\n"
1499msgstr "初始化“%s”服务失败。\n" 1493msgstr "初始化“%s”服务失败。\n"
1500 1494
1501#: src/credential/gnunet-credential.c:377 1495#: src/credential/gnunet-credential.c:379
1502#, c-format 1496#, c-format
1503msgid "You must provide issuer the attribute\n" 1497msgid "You must provide issuer the attribute\n"
1504msgstr "" 1498msgstr ""
1505 1499
1506#: src/credential/gnunet-credential.c:385 1500#: src/credential/gnunet-credential.c:387
1507#, c-format 1501#, c-format
1508msgid "ego required\n" 1502msgid "ego required\n"
1509msgstr "" 1503msgstr ""
1510 1504
1511#: src/credential/gnunet-credential.c:401 1505#: src/credential/gnunet-credential.c:403
1512#, c-format 1506#, c-format
1513msgid "Subject public key needed\n" 1507msgid "Subject public key needed\n"
1514msgstr "" 1508msgstr ""
1515 1509
1516#: src/credential/gnunet-credential.c:412 1510#: src/credential/gnunet-credential.c:414
1517#, fuzzy, c-format 1511#, fuzzy, c-format
1518msgid "Subject public key `%s' is not well-formed\n" 1512msgid "Subject public key `%s' is not well-formed\n"
1519msgstr "“%s”的参数无效。\n" 1513msgstr "“%s”的参数无效。\n"
1520 1514
1521#: src/credential/gnunet-credential.c:449 1515#: src/credential/gnunet-credential.c:451
1522#, c-format 1516#, c-format
1523msgid "You must provide issuer and subject attributes\n" 1517msgid "You must provide issuer and subject attributes\n"
1524msgstr "" 1518msgstr ""
1525 1519
1526#: src/credential/gnunet-credential.c:502 1520#: src/credential/gnunet-credential.c:504
1527#, c-format 1521#, c-format
1528msgid "Issuer ego required\n" 1522msgid "Issuer ego required\n"
1529msgstr "" 1523msgstr ""
1530 1524
1531#: src/credential/gnunet-credential.c:514 1525#: src/credential/gnunet-credential.c:516
1532#, c-format 1526#, c-format
1533msgid "Please specify name to lookup, subject key and issuer key!\n" 1527msgid "Please specify name to lookup, subject key and issuer key!\n"
1534msgstr "" 1528msgstr ""
1535 1529
1536#: src/credential/gnunet-credential.c:534 1530#: src/credential/gnunet-credential.c:536
1537msgid "create credential" 1531msgid "create credential"
1538msgstr "" 1532msgstr ""
1539 1533
1540#: src/credential/gnunet-credential.c:538 1534#: src/credential/gnunet-credential.c:540
1541msgid "verify credential against attribute" 1535msgid "verify credential against attribute"
1542msgstr "" 1536msgstr ""
1543 1537
1544#: src/credential/gnunet-credential.c:543 1538#: src/credential/gnunet-credential.c:545
1545msgid "The public key of the subject to lookup the credential for" 1539msgid "The public key of the subject to lookup the credential for"
1546msgstr "" 1540msgstr ""
1547 1541
1548#: src/credential/gnunet-credential.c:548 1542#: src/credential/gnunet-credential.c:550
1549msgid "The name of the credential presented by the subject" 1543msgid "The name of the credential presented by the subject"
1550msgstr "" 1544msgstr ""
1551 1545
1552#: src/credential/gnunet-credential.c:553 1546#: src/credential/gnunet-credential.c:555
1553msgid "The public key of the authority to verify the credential against" 1547msgid "The public key of the authority to verify the credential against"
1554msgstr "" 1548msgstr ""
1555 1549
1556#: src/credential/gnunet-credential.c:558 1550#: src/credential/gnunet-credential.c:560
1557#, fuzzy 1551#, fuzzy
1558msgid "The ego to use" 1552msgid "The ego to use"
1559msgstr "消息尺寸" 1553msgstr "消息尺寸"
1560 1554
1561#: src/credential/gnunet-credential.c:563 1555#: src/credential/gnunet-credential.c:565
1562msgid "The issuer attribute to verify against or to issue" 1556msgid "The issuer attribute to verify against or to issue"
1563msgstr "" 1557msgstr ""
1564 1558
1565#: src/credential/gnunet-credential.c:568 1559#: src/credential/gnunet-credential.c:570
1566msgid "The time to live for the credential" 1560msgid "The time to live for the credential"
1567msgstr "" 1561msgstr ""
1568 1562
1569#: src/credential/gnunet-credential.c:572 1563#: src/credential/gnunet-credential.c:574
1570msgid "collect credentials" 1564msgid "collect credentials"
1571msgstr "" 1565msgstr ""
1572 1566
1573#: src/credential/gnunet-credential.c:586 1567#: src/credential/gnunet-credential.c:588
1574#, fuzzy 1568#, fuzzy
1575msgid "GNUnet credential resolver tool" 1569msgid "GNUnet credential resolver tool"
1576msgstr "GNUnet 错误日志" 1570msgstr "GNUnet 错误日志"
1577 1571
1578#: src/credential/gnunet-service-credential.c:1136 src/gns/gnunet-gns.c:183 1572#: src/credential/gnunet-service-credential.c:1138 src/gns/gnunet-gns.c:185
1579#: src/gns/gnunet-gns-helper-service-w32.c:725 1573#: src/gns/gnunet-gns-helper-service-w32.c:727
1580#, fuzzy, c-format 1574#, fuzzy, c-format
1581msgid "Failed to connect to GNS\n" 1575msgid "Failed to connect to GNS\n"
1582msgstr "初始化“%s”服务失败。\n" 1576msgstr "初始化“%s”服务失败。\n"
1583 1577
1584#: src/credential/gnunet-service-credential.c:1142 1578#: src/credential/gnunet-service-credential.c:1144
1585#: src/namestore/gnunet-namestore.c:913 1579#: src/namestore/gnunet-namestore.c:1019
1586#: src/namestore/gnunet-namestore-fcfsd.c:1136 1580#: src/namestore/gnunet-namestore-fcfsd.c:1138
1587#, fuzzy, c-format 1581#, fuzzy, c-format
1588msgid "Failed to connect to namestore\n" 1582msgid "Failed to connect to namestore\n"
1589msgstr "初始化“%s”服务失败。\n" 1583msgstr "初始化“%s”服务失败。\n"
1590 1584
1591#: src/credential/plugin_gnsrecord_credential.c:184 1585#: src/credential/plugin_gnsrecord_credential.c:186
1592#, fuzzy, c-format 1586#, fuzzy, c-format
1593msgid "Unable to parse ATTR record string `%s'\n" 1587msgid "Unable to parse ATTR record string `%s'\n"
1594msgstr "解析配置文件“%s”失败\n" 1588msgstr "解析配置文件“%s”失败\n"
1595 1589
1596#: src/datacache/datacache.c:117 src/datacache/datacache.c:309 1590#: src/datacache/datacache.c:119 src/datacache/datacache.c:311
1597#: src/datastore/gnunet-service-datastore.c:755 1591#: src/datastore/gnunet-service-datastore.c:757
1598msgid "# bytes stored" 1592msgid "# bytes stored"
1599msgstr "" 1593msgstr ""
1600 1594
1601#: src/datacache/datacache.c:121 src/datacache/datacache.c:313 1595#: src/datacache/datacache.c:123 src/datacache/datacache.c:315
1602msgid "# items stored" 1596msgid "# items stored"
1603msgstr "" 1597msgstr ""
1604 1598
1605#: src/datacache/datacache.c:204 1599#: src/datacache/datacache.c:206
1606#, c-format 1600#, c-format
1607msgid "Loading `%s' datacache plugin\n" 1601msgid "Loading `%s' datacache plugin\n"
1608msgstr "" 1602msgstr ""
1609 1603
1610#: src/datacache/datacache.c:215 1604#: src/datacache/datacache.c:217
1611#, c-format 1605#, c-format
1612msgid "Failed to load datacache plugin for `%s'\n" 1606msgid "Failed to load datacache plugin for `%s'\n"
1613msgstr "" 1607msgstr ""
1614 1608
1615#: src/datacache/datacache.c:343 1609#: src/datacache/datacache.c:345
1616msgid "# requests received" 1610msgid "# requests received"
1617msgstr "" 1611msgstr ""
1618 1612
1619#: src/datacache/datacache.c:353 1613#: src/datacache/datacache.c:355
1620msgid "# requests filtered by bloom filter" 1614msgid "# requests filtered by bloom filter"
1621msgstr "" 1615msgstr ""
1622 1616
1623#: src/datacache/datacache.c:383 1617#: src/datacache/datacache.c:385
1624msgid "# requests for random value received" 1618msgid "# requests for random value received"
1625msgstr "" 1619msgstr ""
1626 1620
1627#: src/datacache/datacache.c:415 1621#: src/datacache/datacache.c:417
1628msgid "# proximity search requests received" 1622msgid "# proximity search requests received"
1629msgstr "" 1623msgstr ""
1630 1624
1631#: src/datacache/plugin_datacache_heap.c:551 1625#: src/datacache/plugin_datacache_heap.c:553
1632#, fuzzy 1626#, fuzzy
1633msgid "Heap datacache running\n" 1627msgid "Heap datacache running\n"
1634msgstr "sqlite 数据仓库" 1628msgstr "sqlite 数据仓库"
1635 1629
1636#: src/datacache/plugin_datacache_sqlite.c:116 1630#: src/datacache/plugin_datacache_sqlite.c:118
1637#: src/datacache/plugin_datacache_sqlite.c:125 1631#: src/datacache/plugin_datacache_sqlite.c:127
1638#: src/datastore/plugin_datastore_mysql.c:890 1632#: src/datastore/plugin_datastore_mysql.c:892
1639#: src/datastore/plugin_datastore_sqlite.c:56 1633#: src/datastore/plugin_datastore_sqlite.c:58
1640#: src/datastore/plugin_datastore_sqlite.c:64 src/my/my.c:79 src/my/my.c:91 1634#: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
1641#: src/mysql/mysql.c:40 src/mysql/mysql.c:47 1635#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
1642#: src/namecache/plugin_namecache_sqlite.c:50 1636#: src/namecache/plugin_namecache_sqlite.c:52
1643#: src/namestore/plugin_namestore_sqlite.c:51 1637#: src/namestore/plugin_namestore_sqlite.c:53
1644#: src/peerstore/plugin_peerstore_sqlite.c:50 1638#: src/peerstore/plugin_peerstore_sqlite.c:52
1645#: src/psycstore/plugin_psycstore_mysql.c:60 1639#: src/reclaim/plugin_reclaim_sqlite.c:52
1646#: src/reclaim/plugin_reclaim_sqlite.c:50 1640#: src/testbed/generate-underlay-topology.c:47
1647#: src/testbed/generate-underlay-topology.c:45 1641#: src/testbed/gnunet-daemon-latency-logger.c:52
1648#: src/testbed/gnunet-daemon-latency-logger.c:50 1642#: src/testbed/gnunet-daemon-testbed-underlay.c:56
1649#: src/testbed/gnunet-daemon-testbed-underlay.c:54 1643#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
1650#: src/testbed/testbed_api_hosts.c:67 src/util/crypto_ecc.c:51 1644#: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
1651#: src/util/crypto_ecc_setup.c:39 src/util/crypto_mpi.c:37 1645#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
1652#: src/include/gnunet_common.h:816 src/include/gnunet_common.h:825 1646#: src/scalarproduct/scalarproduct.h:35
1653#: src/scalarproduct/scalarproduct.h:33
1654#, fuzzy, c-format 1647#, fuzzy, c-format
1655msgid "`%s' failed at %s:%d with error: %s\n" 1648msgid "`%s' failed at %s:%d with error: %s\n"
1656msgstr "“%s”于 %s:%d 处失败,错误为:%s\n" 1649msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
1657 1650
1658#: src/datacache/plugin_datacache_sqlite.c:861 1651#: src/datacache/plugin_datacache_sqlite.c:863
1659#: src/datastore/plugin_datastore_sqlite.c:506 1652#: src/datastore/plugin_datastore_sqlite.c:508
1660#: src/namecache/plugin_namecache_sqlite.c:327 1653#: src/namecache/plugin_namecache_sqlite.c:229
1661#: src/namestore/plugin_namestore_sqlite.c:262 1654#: src/namestore/plugin_namestore_sqlite.c:265
1662#: src/reclaim/plugin_reclaim_sqlite.c:334 1655#: src/reclaim/plugin_reclaim_sqlite.c:336
1663msgid "Tried to close sqlite without finalizing all prepared statements.\n" 1656msgid "Tried to close sqlite without finalizing all prepared statements.\n"
1664msgstr "" 1657msgstr ""
1665 1658
1666#: src/datastore/datastore_api.c:346 1659#: src/datastore/datastore_api.c:348
1667#, fuzzy 1660#, fuzzy
1668msgid "DATASTORE disconnected" 1661msgid "DATASTORE disconnected"
1669msgstr "“%s”已连接到“%s”。\n" 1662msgstr "“%s”已连接到“%s”。\n"
1670 1663
1671#: src/datastore/datastore_api.c:466 1664#: src/datastore/datastore_api.c:468
1672#, fuzzy 1665#, fuzzy
1673msgid "Disconnected from DATASTORE" 1666msgid "Disconnected from DATASTORE"
1674msgstr "“%s”已连接到“%s”。\n" 1667msgstr "“%s”已连接到“%s”。\n"
1675 1668
1676#: src/datastore/datastore_api.c:567 1669#: src/datastore/datastore_api.c:569
1677msgid "# queue overflows" 1670msgid "# queue overflows"
1678msgstr "" 1671msgstr ""
1679 1672
1680#: src/datastore/datastore_api.c:597 1673#: src/datastore/datastore_api.c:599
1681msgid "# queue entries created" 1674msgid "# queue entries created"
1682msgstr "" 1675msgstr ""
1683 1676
1684#: src/datastore/datastore_api.c:758 1677#: src/datastore/datastore_api.c:760
1685msgid "# status messages received" 1678msgid "# status messages received"
1686msgstr "" 1679msgstr ""
1687 1680
1688#: src/datastore/datastore_api.c:812 1681#: src/datastore/datastore_api.c:814
1689msgid "# Results received" 1682msgid "# Results received"
1690msgstr "" 1683msgstr ""
1691 1684
1692#: src/datastore/datastore_api.c:918 1685#: src/datastore/datastore_api.c:920
1693msgid "# datastore connections (re)created" 1686msgid "# datastore connections (re)created"
1694msgstr "" 1687msgstr ""
1695 1688
1696#: src/datastore/datastore_api.c:1032 1689#: src/datastore/datastore_api.c:1034
1697msgid "# PUT requests executed" 1690msgid "# PUT requests executed"
1698msgstr "" 1691msgstr ""
1699 1692
1700#: src/datastore/datastore_api.c:1093 1693#: src/datastore/datastore_api.c:1095
1701msgid "# RESERVE requests executed" 1694msgid "# RESERVE requests executed"
1702msgstr "" 1695msgstr ""
1703 1696
1704#: src/datastore/datastore_api.c:1158 1697#: src/datastore/datastore_api.c:1160
1705msgid "# RELEASE RESERVE requests executed" 1698msgid "# RELEASE RESERVE requests executed"
1706msgstr "" 1699msgstr ""
1707 1700
1708#: src/datastore/datastore_api.c:1236 1701#: src/datastore/datastore_api.c:1238
1709msgid "# REMOVE requests executed" 1702msgid "# REMOVE requests executed"
1710msgstr "" 1703msgstr ""
1711 1704
1712#: src/datastore/datastore_api.c:1296 1705#: src/datastore/datastore_api.c:1298
1713msgid "# GET REPLICATION requests executed" 1706msgid "# GET REPLICATION requests executed"
1714msgstr "" 1707msgstr ""
1715 1708
1716#: src/datastore/datastore_api.c:1358 1709#: src/datastore/datastore_api.c:1360
1717msgid "# GET ZERO ANONYMITY requests executed" 1710msgid "# GET ZERO ANONYMITY requests executed"
1718msgstr "" 1711msgstr ""
1719 1712
1720#: src/datastore/datastore_api.c:1439 1713#: src/datastore/datastore_api.c:1441
1721msgid "# GET requests executed" 1714msgid "# GET requests executed"
1722msgstr "" 1715msgstr ""
1723 1716
1724#: src/datastore/gnunet-datastore.c:187 1717#: src/datastore/gnunet-datastore.c:189
1725#, c-format 1718#, c-format
1726msgid "Dumped %<PRIu64> records\n" 1719msgid "Dumped %<PRIu64> records\n"
1727msgstr "" 1720msgstr ""
1728 1721
1729#: src/datastore/gnunet-datastore.c:215 src/datastore/gnunet-datastore.c:227 1722#: src/datastore/gnunet-datastore.c:217 src/datastore/gnunet-datastore.c:229
1730#, c-format 1723#, c-format
1731msgid "Short write to file: %zd bytes expecting %zd\n" 1724msgid "Short write to file: %zd bytes expecting %zd\n"
1732msgstr "" 1725msgstr ""
1733 1726
1734#: src/datastore/gnunet-datastore.c:259 1727#: src/datastore/gnunet-datastore.c:261
1735#, fuzzy 1728#, fuzzy
1736msgid "Error queueing datastore GET operation\n" 1729msgid "Error queueing datastore GET operation\n"
1737msgstr "创建用户出错" 1730msgstr "创建用户出错"
1738 1731
1739#: src/datastore/gnunet-datastore.c:285 src/datastore/gnunet-datastore.c:410 1732#: src/datastore/gnunet-datastore.c:287 src/datastore/gnunet-datastore.c:412
1740#, fuzzy, c-format 1733#, fuzzy, c-format
1741msgid "Unable to open dump file: %s\n" 1734msgid "Unable to open dump file: %s\n"
1742msgstr "发送消息失败。\n" 1735msgstr "发送消息失败。\n"
1743 1736
1744#: src/datastore/gnunet-datastore.c:324 1737#: src/datastore/gnunet-datastore.c:326
1745#, fuzzy, c-format 1738#, fuzzy, c-format
1746msgid "Failed to store item: %s, aborting\n" 1739msgid "Failed to store item: %s, aborting\n"
1747msgstr "打开日志文件“%s”失败:%s\n" 1740msgstr "打开日志文件“%s”失败:%s\n"
1748 1741
1749#: src/datastore/gnunet-datastore.c:338 1742#: src/datastore/gnunet-datastore.c:340
1750#, c-format 1743#, c-format
1751msgid "Inserted %<PRIu64> records\n" 1744msgid "Inserted %<PRIu64> records\n"
1752msgstr "" 1745msgstr ""
1753 1746
1754#: src/datastore/gnunet-datastore.c:347 src/datastore/gnunet-datastore.c:361 1747#: src/datastore/gnunet-datastore.c:349 src/datastore/gnunet-datastore.c:363
1755#, c-format 1748#, c-format
1756msgid "Short read from file: %zd bytes expecting %zd\n" 1749msgid "Short read from file: %zd bytes expecting %zd\n"
1757msgstr "" 1750msgstr ""
1758 1751
1759#: src/datastore/gnunet-datastore.c:387 1752#: src/datastore/gnunet-datastore.c:389
1760#, fuzzy 1753#, fuzzy
1761msgid "Error queueing datastore PUT operation\n" 1754msgid "Error queueing datastore PUT operation\n"
1762msgstr "创建用户出错" 1755msgstr "创建用户出错"
1763 1756
1764#: src/datastore/gnunet-datastore.c:430 1757#: src/datastore/gnunet-datastore.c:432
1765msgid "Input file is not of a supported format\n" 1758msgid "Input file is not of a supported format\n"
1766msgstr "" 1759msgstr ""
1767 1760
1768#: src/datastore/gnunet-datastore.c:456 1761#: src/datastore/gnunet-datastore.c:458
1769#, fuzzy 1762#, fuzzy
1770msgid "Failed connecting to the datastore.\n" 1763msgid "Failed connecting to the datastore.\n"
1771msgstr "初始化“%s”服务失败。\n" 1764msgstr "初始化“%s”服务失败。\n"
1772 1765
1773#: src/datastore/gnunet-datastore.c:468 1766#: src/datastore/gnunet-datastore.c:470
1774#, c-format 1767#, c-format
1775msgid "Please choose at least one operation: %s, %s\n" 1768msgid "Please choose at least one operation: %s, %s\n"
1776msgstr "" 1769msgstr ""
1777 1770
1778#: src/datastore/gnunet-datastore.c:491 1771#: src/datastore/gnunet-datastore.c:493
1779#, fuzzy 1772#, fuzzy
1780msgid "Dump all records from the datastore" 1773msgid "Dump all records from the datastore"
1781msgstr "发送消息失败。\n" 1774msgstr "发送消息失败。\n"
1782 1775
1783#: src/datastore/gnunet-datastore.c:495 1776#: src/datastore/gnunet-datastore.c:497
1784msgid "Insert records into the datastore" 1777msgid "Insert records into the datastore"
1785msgstr "" 1778msgstr ""
1786 1779
1787#: src/datastore/gnunet-datastore.c:500 1780#: src/datastore/gnunet-datastore.c:502
1788msgid "File to dump or insert" 1781msgid "File to dump or insert"
1789msgstr "" 1782msgstr ""
1790 1783
1791#: src/datastore/gnunet-datastore.c:509 1784#: src/datastore/gnunet-datastore.c:511
1792#, fuzzy 1785#, fuzzy
1793msgid "Manipulate GNUnet datastore" 1786msgid "Manipulate GNUnet datastore"
1794msgstr "更改配置文件中的一个值" 1787msgstr "更改配置文件中的一个值"
1795 1788
1796#: src/datastore/gnunet-service-datastore.c:336 1789#: src/datastore/gnunet-service-datastore.c:338
1797msgid "# bytes expired" 1790msgid "# bytes expired"
1798msgstr "" 1791msgstr ""
1799 1792
1800#: src/datastore/gnunet-service-datastore.c:418 1793#: src/datastore/gnunet-service-datastore.c:420
1801msgid "# bytes purged (low-priority)" 1794msgid "# bytes purged (low-priority)"
1802msgstr "" 1795msgstr ""
1803 1796
1804#: src/datastore/gnunet-service-datastore.c:560 1797#: src/datastore/gnunet-service-datastore.c:562
1805msgid "# results found" 1798msgid "# results found"
1806msgstr "" 1799msgstr ""
1807 1800
1808#: src/datastore/gnunet-service-datastore.c:601 1801#: src/datastore/gnunet-service-datastore.c:603
1809#, c-format 1802#, c-format
1810msgid "" 1803msgid ""
1811"Insufficient space (%llu bytes are available) to satisfy RESERVE request for " 1804"Insufficient space (%llu bytes are available) to satisfy RESERVE request for "
1812"%llu bytes\n" 1805"%llu bytes\n"
1813msgstr "" 1806msgstr ""
1814 1807
1815#: src/datastore/gnunet-service-datastore.c:612 1808#: src/datastore/gnunet-service-datastore.c:614
1816#, c-format 1809#, c-format
1817msgid "" 1810msgid ""
1818"The requested amount (%llu bytes) is larger than the cache size (%llu " 1811"The requested amount (%llu bytes) is larger than the cache size (%llu "
1819"bytes)\n" 1812"bytes)\n"
1820msgstr "" 1813msgstr ""
1821 1814
1822#: src/datastore/gnunet-service-datastore.c:618 1815#: src/datastore/gnunet-service-datastore.c:620
1823msgid "" 1816msgid ""
1824"Insufficient space to satisfy request and requested amount is larger than " 1817"Insufficient space to satisfy request and requested amount is larger than "
1825"cache size" 1818"cache size"
1826msgstr "" 1819msgstr ""
1827 1820
1828#: src/datastore/gnunet-service-datastore.c:625 1821#: src/datastore/gnunet-service-datastore.c:627
1829msgid "Insufficient space to satisfy request" 1822msgid "Insufficient space to satisfy request"
1830msgstr "" 1823msgstr ""
1831 1824
1832#: src/datastore/gnunet-service-datastore.c:632 1825#: src/datastore/gnunet-service-datastore.c:634
1833#: src/datastore/gnunet-service-datastore.c:687 1826#: src/datastore/gnunet-service-datastore.c:689
1834#: src/datastore/gnunet-service-datastore.c:835 1827#: src/datastore/gnunet-service-datastore.c:837
1835#: src/datastore/gnunet-service-datastore.c:1467 1828#: src/datastore/gnunet-service-datastore.c:1469
1836msgid "# reserved" 1829msgid "# reserved"
1837msgstr "" 1830msgstr ""
1838 1831
1839#: src/datastore/gnunet-service-datastore.c:705 1832#: src/datastore/gnunet-service-datastore.c:707
1840msgid "Could not find matching reservation" 1833msgid "Could not find matching reservation"
1841msgstr "" 1834msgstr ""
1842 1835
1843#: src/datastore/gnunet-service-datastore.c:771 1836#: src/datastore/gnunet-service-datastore.c:773
1844#, c-format 1837#, c-format
1845msgid "Need %llu bytes more space (%llu allowed, using %llu)\n" 1838msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
1846msgstr "" 1839msgstr ""
1847 1840
1848#: src/datastore/gnunet-service-datastore.c:874 1841#: src/datastore/gnunet-service-datastore.c:876
1849msgid "# GET requests received" 1842msgid "# GET requests received"
1850msgstr "" 1843msgstr ""
1851 1844
1852#: src/datastore/gnunet-service-datastore.c:905 1845#: src/datastore/gnunet-service-datastore.c:907
1853msgid "# GET KEY requests received" 1846msgid "# GET KEY requests received"
1854msgstr "" 1847msgstr ""
1855 1848
1856#: src/datastore/gnunet-service-datastore.c:918 1849#: src/datastore/gnunet-service-datastore.c:920
1857msgid "# requests filtered by bloomfilter" 1850msgid "# requests filtered by bloomfilter"
1858msgstr "" 1851msgstr ""
1859 1852
1860#: src/datastore/gnunet-service-datastore.c:954 1853#: src/datastore/gnunet-service-datastore.c:956
1861msgid "# GET REPLICATION requests received" 1854msgid "# GET REPLICATION requests received"
1862msgstr "" 1855msgstr ""
1863 1856
1864#: src/datastore/gnunet-service-datastore.c:987 1857#: src/datastore/gnunet-service-datastore.c:989
1865msgid "# GET ZERO ANONYMITY requests received" 1858msgid "# GET ZERO ANONYMITY requests received"
1866msgstr "" 1859msgstr ""
1867 1860
1868#: src/datastore/gnunet-service-datastore.c:1034 1861#: src/datastore/gnunet-service-datastore.c:1036
1869msgid "Content not found" 1862msgid "Content not found"
1870msgstr "" 1863msgstr ""
1871 1864
1872#: src/datastore/gnunet-service-datastore.c:1041 1865#: src/datastore/gnunet-service-datastore.c:1043
1873msgid "# bytes removed (explicit request)" 1866msgid "# bytes removed (explicit request)"
1874msgstr "" 1867msgstr ""
1875 1868
1876#: src/datastore/gnunet-service-datastore.c:1086 1869#: src/datastore/gnunet-service-datastore.c:1088
1877msgid "# REMOVE requests received" 1870msgid "# REMOVE requests received"
1878msgstr "" 1871msgstr ""
1879 1872
1880#: src/datastore/gnunet-service-datastore.c:1135 1873#: src/datastore/gnunet-service-datastore.c:1137
1881#, c-format 1874#, c-format
1882msgid "" 1875msgid ""
1883"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n" 1876"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
1884msgstr "" 1877msgstr ""
1885 1878
1886#: src/datastore/gnunet-service-datastore.c:1141 1879#: src/datastore/gnunet-service-datastore.c:1143
1887#: src/datastore/gnunet-service-datastore.c:1316 1880#: src/datastore/gnunet-service-datastore.c:1318
1888#, c-format 1881#, c-format
1889msgid "New payload: %lld\n" 1882msgid "New payload: %lld\n"
1890msgstr "" 1883msgstr ""
1891 1884
1892#: src/datastore/gnunet-service-datastore.c:1195 1885#: src/datastore/gnunet-service-datastore.c:1197
1893#, c-format 1886#, c-format
1894msgid "Loading `%s' datastore plugin\n" 1887msgid "Loading `%s' datastore plugin\n"
1895msgstr "" 1888msgstr ""
1896 1889
1897#: src/datastore/gnunet-service-datastore.c:1207 1890#: src/datastore/gnunet-service-datastore.c:1209
1898#, fuzzy, c-format 1891#, fuzzy, c-format
1899msgid "Failed to load datastore plugin for `%s'\n" 1892msgid "Failed to load datastore plugin for `%s'\n"
1900msgstr "解析配置文件“%s”失败\n" 1893msgstr "解析配置文件“%s”失败\n"
1901 1894
1902#: src/datastore/gnunet-service-datastore.c:1267 1895#: src/datastore/gnunet-service-datastore.c:1269
1903msgid "Bloomfilter construction complete.\n" 1896msgid "Bloomfilter construction complete.\n"
1904msgstr "" 1897msgstr ""
1905 1898
1906#: src/datastore/gnunet-service-datastore.c:1323 1899#: src/datastore/gnunet-service-datastore.c:1325
1907msgid "Rebuilding bloomfilter. Please be patient.\n" 1900msgid "Rebuilding bloomfilter. Please be patient.\n"
1908msgstr "" 1901msgstr ""
1909 1902
1910#: src/datastore/gnunet-service-datastore.c:1334 1903#: src/datastore/gnunet-service-datastore.c:1336
1911msgid "Plugin does not support get_keys function. Please fix!\n" 1904msgid "Plugin does not support get_keys function. Please fix!\n"
1912msgstr "" 1905msgstr ""
1913 1906
1914#: src/datastore/gnunet-service-datastore.c:1504 1907#: src/datastore/gnunet-service-datastore.c:1506
1915#, c-format 1908#, c-format
1916msgid "# bytes used in file-sharing datastore `%s'" 1909msgid "# bytes used in file-sharing datastore `%s'"
1917msgstr "" 1910msgstr ""
1918 1911
1919#: src/datastore/gnunet-service-datastore.c:1520 1912#: src/datastore/gnunet-service-datastore.c:1522
1920msgid "# quota" 1913msgid "# quota"
1921msgstr "" 1914msgstr ""
1922 1915
1923#: src/datastore/gnunet-service-datastore.c:1525 1916#: src/datastore/gnunet-service-datastore.c:1527
1924msgid "# cache size" 1917msgid "# cache size"
1925msgstr "" 1918msgstr ""
1926 1919
1927#: src/datastore/gnunet-service-datastore.c:1541 1920#: src/datastore/gnunet-service-datastore.c:1543
1928#, c-format 1921#, c-format
1929msgid "Could not use specified filename `%s' for bloomfilter.\n" 1922msgid "Could not use specified filename `%s' for bloomfilter.\n"
1930msgstr "" 1923msgstr ""
1931 1924
1932#: src/datastore/gnunet-service-datastore.c:1559 1925#: src/datastore/gnunet-service-datastore.c:1561
1933#: src/datastore/gnunet-service-datastore.c:1575 1926#: src/datastore/gnunet-service-datastore.c:1577
1934#, fuzzy, c-format 1927#, fuzzy, c-format
1935msgid "Failed to remove bogus bloomfilter file `%s'\n" 1928msgid "Failed to remove bogus bloomfilter file `%s'\n"
1936msgstr "解析配置文件“%s”失败\n" 1929msgstr "解析配置文件“%s”失败\n"
1937 1930
1938#: src/datastore/gnunet-service-datastore.c:1607 1931#: src/datastore/gnunet-service-datastore.c:1609
1939#, fuzzy 1932#, fuzzy
1940msgid "Failed to initialize bloomfilter.\n" 1933msgid "Failed to initialize bloomfilter.\n"
1941msgstr "初始化“%s”服务失败。\n" 1934msgstr "初始化“%s”服务失败。\n"
1942 1935
1943#: src/datastore/plugin_datastore_heap.c:891 1936#: src/datastore/plugin_datastore_heap.c:893
1944#, fuzzy 1937#, fuzzy
1945msgid "Heap database running\n" 1938msgid "Heap database running\n"
1946msgstr "sqlite 数据仓库" 1939msgstr "sqlite 数据仓库"
1947 1940
1948#: src/datastore/plugin_datastore_mysql.c:369 1941#: src/datastore/plugin_datastore_mysql.c:371
1949#: src/datastore/plugin_datastore_mysql.c:421 1942#: src/datastore/plugin_datastore_mysql.c:423
1950#: src/datastore/plugin_datastore_mysql.c:1073 1943#: src/datastore/plugin_datastore_mysql.c:1075
1951msgid "MySQL statement run failure" 1944msgid "MySQL statement run failure"
1952msgstr "" 1945msgstr ""
1953 1946
1954#: src/datastore/plugin_datastore_mysql.c:408 1947#: src/datastore/plugin_datastore_mysql.c:410
1955#: src/datastore/plugin_datastore_sqlite.c:676 1948#: src/datastore/plugin_datastore_sqlite.c:678
1956#, fuzzy 1949#, fuzzy
1957msgid "Data too large" 1950msgid "Data too large"
1958msgstr "迭代次数" 1951msgstr "迭代次数"
1959 1952
1960#: src/datastore/plugin_datastore_mysql.c:846 1953#: src/datastore/plugin_datastore_mysql.c:848
1961#, fuzzy, c-format 1954#, fuzzy, c-format
1962msgid "`%s' for `%s' failed at %s:%d with error: %s\n" 1955msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
1963msgstr "“%s”于 %s:%d 处失败,错误为:%s\n" 1956msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
1964 1957
1965#: src/datastore/plugin_datastore_mysql.c:1178 1958#: src/datastore/plugin_datastore_mysql.c:1180
1966#: src/psycstore/plugin_psycstore_mysql.c:1934
1967msgid "Mysql database running\n" 1959msgid "Mysql database running\n"
1968msgstr "" 1960msgstr ""
1969 1961
1970#: src/datastore/plugin_datastore_postgres.c:274 1962#: src/datastore/plugin_datastore_postgres.c:276
1971#: src/datastore/plugin_datastore_postgres.c:891 1963#: src/datastore/plugin_datastore_postgres.c:893
1972msgid "Postgress exec failure" 1964msgid "Postgress exec failure"
1973msgstr "" 1965msgstr ""
1974 1966
1975#: src/datastore/plugin_datastore_postgres.c:852 1967#: src/datastore/plugin_datastore_postgres.c:854
1976#, fuzzy 1968#, fuzzy
1977msgid "Failed to drop table from database.\n" 1969msgid "Failed to drop table from database.\n"
1978msgstr "发送消息失败。\n" 1970msgstr "发送消息失败。\n"
1979 1971
1980#: src/datastore/plugin_datastore_postgres.c:950 1972#: src/datastore/plugin_datastore_postgres.c:952
1981#: src/psycstore/plugin_psycstore_postgres.c:1504
1982msgid "Postgres database running\n" 1973msgid "Postgres database running\n"
1983msgstr "" 1974msgstr ""
1984 1975
1985#: src/datastore/plugin_datastore_sqlite.c:64 1976#: src/datastore/plugin_datastore_sqlite.c:66
1986#: src/testbed/generate-underlay-topology.c:48 1977#: src/testbed/generate-underlay-topology.c:50
1987#: src/testbed/gnunet-daemon-latency-logger.c:53 1978#: src/testbed/gnunet-daemon-latency-logger.c:55
1988#: src/testbed/gnunet-daemon-testbed-underlay.c:57 1979#: src/testbed/gnunet-daemon-testbed-underlay.c:59
1989#, fuzzy, c-format 1980#, fuzzy, c-format
1990msgid "`%s' failed at %s:%u with error: %s" 1981msgid "`%s' failed at %s:%u with error: %s"
1991msgstr "“%s”于 %s:%d 处失败,错误为:%s\n" 1982msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
1992 1983
1993#: src/datastore/plugin_datastore_sqlite.c:269 1984#: src/datastore/plugin_datastore_sqlite.c:271
1994#: src/namecache/plugin_namecache_sqlite.c:207 1985#: src/namecache/plugin_namecache_sqlite.c:173
1995#: src/namestore/plugin_namestore_sqlite.c:203 1986#: src/namestore/plugin_namestore_sqlite.c:206
1996#: src/peerstore/plugin_peerstore_sqlite.c:533 1987#: src/peerstore/plugin_peerstore_sqlite.c:535
1997#: src/psycstore/plugin_psycstore_sqlite.c:323 1988#: src/reclaim/plugin_reclaim_sqlite.c:212
1998#: src/reclaim/plugin_reclaim_sqlite.c:210
1999#, c-format 1989#, c-format
2000msgid "Unable to initialize SQLite: %s.\n" 1990msgid "Unable to initialize SQLite: %s.\n"
2001msgstr "无法初始化 SQLite:%s。\n" 1991msgstr "无法初始化 SQLite:%s。\n"
2002 1992
2003#: src/datastore/plugin_datastore_sqlite.c:627 1993#: src/datastore/plugin_datastore_sqlite.c:629
2004msgid "sqlite bind failure" 1994msgid "sqlite bind failure"
2005msgstr "" 1995msgstr ""
2006 1996
2007#: src/datastore/plugin_datastore_sqlite.c:1325 1997#: src/datastore/plugin_datastore_sqlite.c:1327
2008msgid "sqlite version to old to determine size, assuming zero\n" 1998msgid "sqlite version to old to determine size, assuming zero\n"
2009msgstr "" 1999msgstr ""
2010 2000
2011#: src/datastore/plugin_datastore_sqlite.c:1359 2001#: src/datastore/plugin_datastore_sqlite.c:1361
2012#, c-format 2002#, c-format
2013msgid "" 2003msgid ""
2014"Using sqlite page utilization to estimate payload (%llu pages of size %llu " 2004"Using sqlite page utilization to estimate payload (%llu pages of size %llu "
2015"bytes)\n" 2005"bytes)\n"
2016msgstr "" 2006msgstr ""
2017 2007
2018#: src/datastore/plugin_datastore_sqlite.c:1403 2008#: src/datastore/plugin_datastore_sqlite.c:1405
2019#: src/namecache/plugin_namecache_sqlite.c:638 2009#: src/namecache/plugin_namecache_sqlite.c:557
2020#: src/namestore/plugin_namestore_sqlite.c:753 2010#: src/namestore/plugin_namestore_sqlite.c:750
2021#: src/reclaim/plugin_reclaim_sqlite.c:709 2011#: src/reclaim/plugin_reclaim_sqlite.c:711
2022#, fuzzy 2012#, fuzzy
2023msgid "Sqlite database running\n" 2013msgid "Sqlite database running\n"
2024msgstr "sqlite 数据仓库" 2014msgstr "sqlite 数据仓库"
2025 2015
2026#: src/datastore/plugin_datastore_template.c:251 2016#: src/datastore/plugin_datastore_template.c:253
2027msgid "Template database running\n" 2017msgid "Template database running\n"
2028msgstr "" 2018msgstr ""
2029 2019
2030#: src/dht/gnunet-dht-get.c:156 2020#: src/dht/gnunet-dht-get.c:158
2031#, c-format 2021#, c-format
2032msgid "" 2022msgid ""
2033"Result %d, type %d:\n" 2023"Result %d, type %d:\n"
2034"%.*s\n" 2024"%.*s\n"
2035msgstr "" 2025msgstr ""
2036 2026
2037#: src/dht/gnunet-dht-get.c:157 2027#: src/dht/gnunet-dht-get.c:159
2038#, c-format 2028#, c-format
2039msgid "Result %d, type %d:\n" 2029msgid "Result %d, type %d:\n"
2040msgstr "" 2030msgstr ""
2041 2031
2042#: src/dht/gnunet-dht-get.c:202 2032#: src/dht/gnunet-dht-get.c:204
2043msgid "Must provide key for DHT GET!\n" 2033msgid "Must provide key for DHT GET!\n"
2044msgstr "" 2034msgstr ""
2045 2035
2046#: src/dht/gnunet-dht-get.c:208 src/dht/gnunet-dht-monitor.c:255 2036#: src/dht/gnunet-dht-get.c:210 src/dht/gnunet-dht-monitor.c:257
2047#, fuzzy 2037#, fuzzy
2048msgid "Failed to connect to DHT service!\n" 2038msgid "Failed to connect to DHT service!\n"
2049msgstr "初始化“%s”服务失败。\n" 2039msgstr "初始化“%s”服务失败。\n"
2050 2040
2051#: src/dht/gnunet-dht-get.c:217 2041#: src/dht/gnunet-dht-get.c:219
2052msgid "Issueing DHT GET with key" 2042msgid "Issuing DHT GET with key"
2053msgstr "" 2043msgstr ""
2054 2044
2055#: src/dht/gnunet-dht-get.c:246 src/dht/gnunet-dht-monitor.c:305 2045#: src/dht/gnunet-dht-get.c:248 src/dht/gnunet-dht-monitor.c:307
2056#: src/dht/gnunet-dht-put.c:196 2046#: src/dht/gnunet-dht-put.c:198
2057msgid "the query key" 2047msgid "the query key"
2058msgstr "" 2048msgstr ""
2059 2049
2060#: src/dht/gnunet-dht-get.c:251 2050#: src/dht/gnunet-dht-get.c:253
2061msgid "how many parallel requests (replicas) to create" 2051msgid "how many parallel requests (replicas) to create"
2062msgstr "" 2052msgstr ""
2063 2053
2064#: src/dht/gnunet-dht-get.c:256 src/dht/gnunet-dht-monitor.c:311 2054#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
2065msgid "the type of data to look for" 2055msgid "the type of data to look for"
2066msgstr "" 2056msgstr ""
2067 2057
2068#: src/dht/gnunet-dht-get.c:261 2058#: src/dht/gnunet-dht-get.c:263
2069msgid "how long to execute this query before giving up?" 2059msgid "how long to execute this query before giving up?"
2070msgstr "" 2060msgstr ""
2071 2061
2072#: src/dht/gnunet-dht-get.c:265 src/dht/gnunet-dht-put.c:200 2062#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
2073msgid "use DHT's demultiplex everywhere option" 2063msgid "use DHT's demultiplex everywhere option"
2074msgstr "" 2064msgstr ""
2075 2065
2076#: src/dht/gnunet-dht-get.c:278 2066#: src/dht/gnunet-dht-get.c:280
2077msgid "Issue a GET request to the GNUnet DHT, prints results." 2067msgid "Issue a GET request to the GNUnet DHT, prints results."
2078msgstr "" 2068msgstr ""
2079 2069
2080#: src/dht/gnunet-dht-monitor.c:317 2070#: src/dht/gnunet-dht-monitor.c:319
2081msgid "how long should the monitor command run" 2071msgid "how long should the monitor command run"
2082msgstr "" 2072msgstr ""
2083 2073
2084#: src/dht/gnunet-dht-monitor.c:322 src/fs/gnunet-download.c:370 2074#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
2085#: src/nse/gnunet-nse-profiler.c:876 2075#: src/nse/gnunet-nse-profiler.c:878
2086msgid "be verbose (print progress information)" 2076msgid "be verbose (print progress information)"
2087msgstr "" 2077msgstr ""
2088 2078
2089#: src/dht/gnunet-dht-monitor.c:335 2079#: src/dht/gnunet-dht-monitor.c:337
2090msgid "Prints all packets that go through the DHT." 2080msgid "Prints all packets that go through the DHT."
2091msgstr "" 2081msgstr ""
2092 2082
2093#: src/dht/gnunet_dht_profiler.c:914 src/testbed/gnunet-testbed-profiler.c:251 2083#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
2094#, fuzzy, c-format 2084#, fuzzy, c-format
2095msgid "Exiting as the number of peers is %u\n" 2085msgid "Exiting as the number of peers is %u\n"
2096msgstr "增加 TCP/IP 的最大连接数" 2086msgstr "增加 TCP/IP 的最大连接数"
2097 2087
2098#: src/dht/gnunet_dht_profiler.c:947 src/rps/gnunet-rps-profiler.c:2764 2088#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
2099#, fuzzy 2089#, fuzzy
2100msgid "number of peers to start" 2090msgid "number of peers to start"
2101msgstr "迭代次数" 2091msgstr "迭代次数"
2102 2092
2103#: src/dht/gnunet_dht_profiler.c:952 2093#: src/dht/gnunet_dht_profiler.c:954
2104msgid "number of PUTs to perform per peer" 2094msgid "number of PUTs to perform per peer"
2105msgstr "" 2095msgstr ""
2106 2096
2107#: src/dht/gnunet_dht_profiler.c:957 src/nse/gnunet-nse-profiler.c:858 2097#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
2108#: src/testbed/gnunet-testbed-profiler.c:302 2098#: src/testbed/gnunet-testbed-profiler.c:304
2109msgid "name of the file with the login information for the testbed" 2099msgid "name of the file with the login information for the testbed"
2110msgstr "" 2100msgstr ""
2111 2101
2112#: src/dht/gnunet_dht_profiler.c:962 2102#: src/dht/gnunet_dht_profiler.c:964
2113msgid "delay between rounds for collecting statistics (default: 30 sec)" 2103msgid "delay between rounds for collecting statistics (default: 30 sec)"
2114msgstr "" 2104msgstr ""
2115 2105
2116#: src/dht/gnunet_dht_profiler.c:967 2106#: src/dht/gnunet_dht_profiler.c:969
2117msgid "delay to start doing PUTs (default: 1 sec)" 2107msgid "delay to start doing PUTs (default: 1 sec)"
2118msgstr "" 2108msgstr ""
2119 2109
2120#: src/dht/gnunet_dht_profiler.c:972 2110#: src/dht/gnunet_dht_profiler.c:974
2121msgid "delay to start doing GETs (default: 5 min)" 2111msgid "delay to start doing GETs (default: 5 min)"
2122msgstr "" 2112msgstr ""
2123 2113
2124#: src/dht/gnunet_dht_profiler.c:977 2114#: src/dht/gnunet_dht_profiler.c:979
2125msgid "replication degree for DHT PUTs" 2115msgid "replication degree for DHT PUTs"
2126msgstr "" 2116msgstr ""
2127 2117
2128#: src/dht/gnunet_dht_profiler.c:982 2118#: src/dht/gnunet_dht_profiler.c:984
2129msgid "chance that a peer is selected at random for PUTs" 2119msgid "chance that a peer is selected at random for PUTs"
2130msgstr "" 2120msgstr ""
2131 2121
2132#: src/dht/gnunet_dht_profiler.c:987 2122#: src/dht/gnunet_dht_profiler.c:989
2133msgid "timeout for DHT PUT and GET requests (default: 1 min)" 2123msgid "timeout for DHT PUT and GET requests (default: 1 min)"
2134msgstr "" 2124msgstr ""
2135 2125
2136#: src/dht/gnunet_dht_profiler.c:1007 2126#: src/dht/gnunet_dht_profiler.c:1009
2137#, fuzzy 2127#, fuzzy
2138msgid "Measure quality and performance of the DHT service." 2128msgid "Measure quality and performance of the DHT service."
2139msgstr "无法访问该服务" 2129msgstr "无法访问该服务"
2140 2130
2141#: src/dht/gnunet-dht-put.c:132 2131#: src/dht/gnunet-dht-put.c:134
2142msgid "Must provide KEY and DATA for DHT put!\n" 2132msgid "Must provide KEY and DATA for DHT put!\n"
2143msgstr "" 2133msgstr ""
2144 2134
2145#: src/dht/gnunet-dht-put.c:140 2135#: src/dht/gnunet-dht-put.c:142
2146#, fuzzy 2136#, fuzzy
2147msgid "Could not connect to DHT service!\n" 2137msgid "Could not connect to DHT service!\n"
2148msgstr "无法连接到 %s:%u:%s\n" 2138msgstr "无法连接到 %s:%u:%s\n"
2149 2139
2150#: src/dht/gnunet-dht-put.c:151 2140#: src/dht/gnunet-dht-put.c:153
2151#, c-format 2141#, c-format
2152msgid "Issuing put request for `%s' with data `%s'!\n" 2142msgid "Issuing put request for `%s' with data `%s'!\n"
2153msgstr "" 2143msgstr ""
2154 2144
2155#: src/dht/gnunet-dht-put.c:186 2145#: src/dht/gnunet-dht-put.c:188
2156msgid "the data to insert under the key" 2146msgid "the data to insert under the key"
2157msgstr "" 2147msgstr ""
2158 2148
2159#: src/dht/gnunet-dht-put.c:191 2149#: src/dht/gnunet-dht-put.c:193
2160msgid "how long to store this entry in the dht (in seconds)" 2150msgid "how long to store this entry in the dht (in seconds)"
2161msgstr "" 2151msgstr ""
2162 2152
2163#: src/dht/gnunet-dht-put.c:205 2153#: src/dht/gnunet-dht-put.c:207
2164msgid "how many replicas to create" 2154msgid "how many replicas to create"
2165msgstr "" 2155msgstr ""
2166 2156
2167#: src/dht/gnunet-dht-put.c:209 2157#: src/dht/gnunet-dht-put.c:211
2168msgid "use DHT's record route option" 2158msgid "use DHT's record route option"
2169msgstr "" 2159msgstr ""
2170 2160
2171#: src/dht/gnunet-dht-put.c:214 2161#: src/dht/gnunet-dht-put.c:216
2172msgid "the type to insert data as" 2162msgid "the type to insert data as"
2173msgstr "" 2163msgstr ""
2174 2164
2175#: src/dht/gnunet-dht-put.c:231 2165#: src/dht/gnunet-dht-put.c:233
2176msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY." 2166msgid "Issue a PUT request to the GNUnet DHT insert DATA under KEY."
2177msgstr "" 2167msgstr ""
2178 2168
2179#: src/dht/gnunet-service-dht_clients.c:367 2169#: src/dht/gnunet-service-dht_clients.c:369
2180msgid "# GET requests from clients injected" 2170msgid "# GET requests from clients injected"
2181msgstr "" 2171msgstr ""
2182 2172
2183#: src/dht/gnunet-service-dht_clients.c:481 2173#: src/dht/gnunet-service-dht_clients.c:483
2184msgid "# PUT requests received from clients" 2174msgid "# PUT requests received from clients"
2185msgstr "" 2175msgstr ""
2186 2176
2187#: src/dht/gnunet-service-dht_clients.c:614 2177#: src/dht/gnunet-service-dht_clients.c:616
2188msgid "# GET requests received from clients" 2178msgid "# GET requests received from clients"
2189msgstr "" 2179msgstr ""
2190 2180
2191#: src/dht/gnunet-service-dht_clients.c:840 2181#: src/dht/gnunet-service-dht_clients.c:842
2192msgid "# GET STOP requests received from clients" 2182msgid "# GET STOP requests received from clients"
2193msgstr "" 2183msgstr ""
2194 2184
2195#: src/dht/gnunet-service-dht_clients.c:1025 2185#: src/dht/gnunet-service-dht_clients.c:1027
2196msgid "# Key match, type mismatches in REPLY to CLIENT" 2186msgid "# Key match, type mismatches in REPLY to CLIENT"
2197msgstr "" 2187msgstr ""
2198 2188
2199#: src/dht/gnunet-service-dht_clients.c:1040 2189#: src/dht/gnunet-service-dht_clients.c:1042
2200msgid "# Duplicate REPLIES to CLIENT request dropped" 2190msgid "# Duplicate REPLIES to CLIENT request dropped"
2201msgstr "" 2191msgstr ""
2202 2192
2203#: src/dht/gnunet-service-dht_clients.c:1086 2193#: src/dht/gnunet-service-dht_clients.c:1088
2204#, c-format 2194#, c-format
2205msgid "Unsupported block type (%u) in request!\n" 2195msgid "Unsupported block type (%u) in request!\n"
2206msgstr "" 2196msgstr ""
2207 2197
2208#: src/dht/gnunet-service-dht_clients.c:1093 2198#: src/dht/gnunet-service-dht_clients.c:1095
2209msgid "# RESULTS queued for clients" 2199msgid "# RESULTS queued for clients"
2210msgstr "" 2200msgstr ""
2211 2201
2212#: src/dht/gnunet-service-dht_clients.c:1171 2202#: src/dht/gnunet-service-dht_clients.c:1173
2213msgid "# REPLIES ignored for CLIENTS (no match)" 2203msgid "# REPLIES ignored for CLIENTS (no match)"
2214msgstr "" 2204msgstr ""
2215 2205
2216#: src/dht/gnunet-service-dht_datacache.c:71 2206#: src/dht/gnunet-service-dht_datacache.c:73
2217#, c-format 2207#, c-format
2218msgid "%s request received, but have no datacache!\n" 2208msgid "%s request received, but have no datacache!\n"
2219msgstr "" 2209msgstr ""
2220 2210
2221#: src/dht/gnunet-service-dht_datacache.c:81 2211#: src/dht/gnunet-service-dht_datacache.c:83
2222msgid "# ITEMS stored in datacache" 2212msgid "# ITEMS stored in datacache"
2223msgstr "" 2213msgstr ""
2224 2214
2225#: src/dht/gnunet-service-dht_datacache.c:205 2215#: src/dht/gnunet-service-dht_datacache.c:207
2226msgid "# Good RESULTS found in datacache" 2216msgid "# Good RESULTS found in datacache"
2227msgstr "" 2217msgstr ""
2228 2218
2229#: src/dht/gnunet-service-dht_datacache.c:217 2219#: src/dht/gnunet-service-dht_datacache.c:219
2230msgid "# Duplicate RESULTS found in datacache" 2220msgid "# Duplicate RESULTS found in datacache"
2231msgstr "" 2221msgstr ""
2232 2222
2233#: src/dht/gnunet-service-dht_datacache.c:223 2223#: src/dht/gnunet-service-dht_datacache.c:225
2234msgid "# Invalid RESULTS found in datacache" 2224msgid "# Invalid RESULTS found in datacache"
2235msgstr "" 2225msgstr ""
2236 2226
2237#: src/dht/gnunet-service-dht_datacache.c:229 2227#: src/dht/gnunet-service-dht_datacache.c:231
2238msgid "# Irrelevant RESULTS found in datacache" 2228msgid "# Irrelevant RESULTS found in datacache"
2239msgstr "" 2229msgstr ""
2240 2230
2241#: src/dht/gnunet-service-dht_datacache.c:241 2231#: src/dht/gnunet-service-dht_datacache.c:243
2242msgid "# Unsupported RESULTS found in datacache" 2232msgid "# Unsupported RESULTS found in datacache"
2243msgstr "" 2233msgstr ""
2244 2234
2245#: src/dht/gnunet-service-dht_datacache.c:245 2235#: src/dht/gnunet-service-dht_datacache.c:247
2246#, c-format 2236#, c-format
2247msgid "Unsupported block type (%u) in local response!\n" 2237msgid "Unsupported block type (%u) in local response!\n"
2248msgstr "" 2238msgstr ""
2249 2239
2250#: src/dht/gnunet-service-dht_datacache.c:280 2240#: src/dht/gnunet-service-dht_datacache.c:282
2251msgid "# GET requests given to datacache" 2241msgid "# GET requests given to datacache"
2252msgstr "" 2242msgstr ""
2253 2243
2254#: src/dht/gnunet-service-dht_hello.c:84 2244#: src/dht/gnunet-service-dht_hello.c:86
2255msgid "# HELLOs obtained from peerinfo" 2245msgid "# HELLOs obtained from peerinfo"
2256msgstr "" 2246msgstr ""
2257 2247
2258#: src/dht/gnunet-service-dht_neighbours.c:677 2248#: src/dht/gnunet-service-dht_neighbours.c:679
2259msgid "# FIND PEER messages initiated" 2249msgid "# FIND PEER messages initiated"
2260msgstr "" 2250msgstr ""
2261 2251
2262#: src/dht/gnunet-service-dht_neighbours.c:850 2252#: src/dht/gnunet-service-dht_neighbours.c:852
2263msgid "# requests TTL-dropped" 2253msgid "# requests TTL-dropped"
2264msgstr "" 2254msgstr ""
2265 2255
2266#: src/dht/gnunet-service-dht_neighbours.c:1053 2256#: src/dht/gnunet-service-dht_neighbours.c:1055
2267#: src/dht/gnunet-service-dht_neighbours.c:1096 2257#: src/dht/gnunet-service-dht_neighbours.c:1098
2268msgid "# Peers excluded from routing due to Bloomfilter" 2258msgid "# Peers excluded from routing due to Bloomfilter"
2269msgstr "" 2259msgstr ""
2270 2260
2271#: src/dht/gnunet-service-dht_neighbours.c:1070 2261#: src/dht/gnunet-service-dht_neighbours.c:1072
2272#: src/dht/gnunet-service-dht_neighbours.c:1112 2262#: src/dht/gnunet-service-dht_neighbours.c:1114
2273msgid "# Peer selection failed" 2263msgid "# Peer selection failed"
2274msgstr "" 2264msgstr ""
2275 2265
2276#: src/dht/gnunet-service-dht_neighbours.c:1269 2266#: src/dht/gnunet-service-dht_neighbours.c:1271
2277msgid "# PUT requests routed" 2267msgid "# PUT requests routed"
2278msgstr "" 2268msgstr ""
2279 2269
2280#: src/dht/gnunet-service-dht_neighbours.c:1302 2270#: src/dht/gnunet-service-dht_neighbours.c:1304
2281msgid "# PUT messages queued for transmission" 2271msgid "# PUT messages queued for transmission"
2282msgstr "" 2272msgstr ""
2283 2273
2284#: src/dht/gnunet-service-dht_neighbours.c:1313 2274#: src/dht/gnunet-service-dht_neighbours.c:1315
2285#: src/dht/gnunet-service-dht_neighbours.c:1453 2275#: src/dht/gnunet-service-dht_neighbours.c:1455
2286#: src/dht/gnunet-service-dht_neighbours.c:1556 2276#: src/dht/gnunet-service-dht_neighbours.c:1558
2287msgid "# P2P messages dropped due to full queue" 2277msgid "# P2P messages dropped due to full queue"
2288msgstr "" 2278msgstr ""
2289 2279
2290#: src/dht/gnunet-service-dht_neighbours.c:1398 2280#: src/dht/gnunet-service-dht_neighbours.c:1400
2291msgid "# GET requests routed" 2281msgid "# GET requests routed"
2292msgstr "" 2282msgstr ""
2293 2283
2294#: src/dht/gnunet-service-dht_neighbours.c:1441 2284#: src/dht/gnunet-service-dht_neighbours.c:1443
2295msgid "# GET messages queued for transmission" 2285msgid "# GET messages queued for transmission"
2296msgstr "" 2286msgstr ""
2297 2287
2298#: src/dht/gnunet-service-dht_neighbours.c:1571 2288#: src/dht/gnunet-service-dht_neighbours.c:1573
2299msgid "# RESULT messages queued for transmission" 2289msgid "# RESULT messages queued for transmission"
2300msgstr "" 2290msgstr ""
2301 2291
2302#: src/dht/gnunet-service-dht_neighbours.c:1674 2292#: src/dht/gnunet-service-dht_neighbours.c:1676
2303msgid "# Expired PUTs discarded" 2293msgid "# Expired PUTs discarded"
2304msgstr "" 2294msgstr ""
2305 2295
2306#: src/dht/gnunet-service-dht_neighbours.c:1682 2296#: src/dht/gnunet-service-dht_neighbours.c:1684
2307msgid "# P2P PUT requests received" 2297msgid "# P2P PUT requests received"
2308msgstr "" 2298msgstr ""
2309 2299
2310#: src/dht/gnunet-service-dht_neighbours.c:1686 2300#: src/dht/gnunet-service-dht_neighbours.c:1688
2311msgid "# P2P PUT bytes received" 2301msgid "# P2P PUT bytes received"
2312msgstr "" 2302msgstr ""
2313 2303
2314#: src/dht/gnunet-service-dht_neighbours.c:1912 2304#: src/dht/gnunet-service-dht_neighbours.c:1914
2315msgid "# FIND PEER requests ignored due to Bloomfilter" 2305msgid "# FIND PEER requests ignored due to Bloomfilter"
2316msgstr "" 2306msgstr ""
2317 2307
2318#: src/dht/gnunet-service-dht_neighbours.c:1920 2308#: src/dht/gnunet-service-dht_neighbours.c:1922
2319msgid "# FIND PEER requests ignored due to lack of HELLO" 2309msgid "# FIND PEER requests ignored due to lack of HELLO"
2320msgstr "" 2310msgstr ""
2321 2311
2322#: src/dht/gnunet-service-dht_neighbours.c:2082 2312#: src/dht/gnunet-service-dht_neighbours.c:2084
2323msgid "# P2P GET requests received" 2313msgid "# P2P GET requests received"
2324msgstr "" 2314msgstr ""
2325 2315
2326#: src/dht/gnunet-service-dht_neighbours.c:2086 2316#: src/dht/gnunet-service-dht_neighbours.c:2088
2327msgid "# P2P GET bytes received" 2317msgid "# P2P GET bytes received"
2328msgstr "" 2318msgstr ""
2329 2319
2330#: src/dht/gnunet-service-dht_neighbours.c:2151 2320#: src/dht/gnunet-service-dht_neighbours.c:2153
2331msgid "# P2P FIND PEER requests processed" 2321msgid "# P2P FIND PEER requests processed"
2332msgstr "" 2322msgstr ""
2333 2323
2334#: src/dht/gnunet-service-dht_neighbours.c:2172 2324#: src/dht/gnunet-service-dht_neighbours.c:2174
2335msgid "# P2P GET requests ONLY routed" 2325msgid "# P2P GET requests ONLY routed"
2336msgstr "" 2326msgstr ""
2337 2327
2338#: src/dht/gnunet-service-dht_neighbours.c:2349 2328#: src/dht/gnunet-service-dht_neighbours.c:2351
2339msgid "# Expired results discarded" 2329msgid "# Expired results discarded"
2340msgstr "" 2330msgstr ""
2341 2331
2342#: src/dht/gnunet-service-dht_neighbours.c:2365 2332#: src/dht/gnunet-service-dht_neighbours.c:2367
2343msgid "# P2P RESULTS received" 2333msgid "# P2P RESULTS received"
2344msgstr "" 2334msgstr ""
2345 2335
2346#: src/dht/gnunet-service-dht_neighbours.c:2369 2336#: src/dht/gnunet-service-dht_neighbours.c:2371
2347msgid "# P2P RESULT bytes received" 2337msgid "# P2P RESULT bytes received"
2348msgstr "" 2338msgstr ""
2349 2339
2350#: src/dht/gnunet-service-dht_nse.c:57 2340#: src/dht/gnunet-service-dht_nse.c:59
2351msgid "# Network size estimates received" 2341msgid "# Network size estimates received"
2352msgstr "" 2342msgstr ""
2353 2343
2354#: src/dht/gnunet-service-dht_routing.c:221 2344#: src/dht/gnunet-service-dht_routing.c:223
2355msgid "# Good REPLIES matched against routing table" 2345msgid "# Good REPLIES matched against routing table"
2356msgstr "" 2346msgstr ""
2357 2347
2358#: src/dht/gnunet-service-dht_routing.c:235 2348#: src/dht/gnunet-service-dht_routing.c:237
2359msgid "# Duplicate REPLIES matched against routing table" 2349msgid "# Duplicate REPLIES matched against routing table"
2360msgstr "" 2350msgstr ""
2361 2351
2362#: src/dht/gnunet-service-dht_routing.c:241 2352#: src/dht/gnunet-service-dht_routing.c:243
2363msgid "# Invalid REPLIES matched against routing table" 2353msgid "# Invalid REPLIES matched against routing table"
2364msgstr "" 2354msgstr ""
2365 2355
2366#: src/dht/gnunet-service-dht_routing.c:247 2356#: src/dht/gnunet-service-dht_routing.c:249
2367msgid "# Irrelevant REPLIES matched against routing table" 2357msgid "# Irrelevant REPLIES matched against routing table"
2368msgstr "" 2358msgstr ""
2369 2359
2370#: src/dht/gnunet-service-dht_routing.c:259 2360#: src/dht/gnunet-service-dht_routing.c:261
2371msgid "# Unsupported REPLIES matched against routing table" 2361msgid "# Unsupported REPLIES matched against routing table"
2372msgstr "" 2362msgstr ""
2373 2363
2374#: src/dht/gnunet-service-dht_routing.c:337 2364#: src/dht/gnunet-service-dht_routing.c:339
2375msgid "# Entries removed from routing table" 2365msgid "# Entries removed from routing table"
2376msgstr "" 2366msgstr ""
2377 2367
2378#: src/dht/gnunet-service-dht_routing.c:413 2368#: src/dht/gnunet-service-dht_routing.c:415
2379msgid "# Entries added to routing table" 2369msgid "# Entries added to routing table"
2380msgstr "" 2370msgstr ""
2381 2371
2382#: src/dht/gnunet-service-dht_routing.c:435 2372#: src/dht/gnunet-service-dht_routing.c:437
2383msgid "# DHT requests combined" 2373msgid "# DHT requests combined"
2384msgstr "" 2374msgstr ""
2385 2375
2386#: src/dht/plugin_block_dht.c:187 2376#: src/dht/plugin_block_dht.c:189
2387#, c-format 2377#, c-format
2388msgid "Block not of type %u\n" 2378msgid "Block not of type %u\n"
2389msgstr "" 2379msgstr ""
2390 2380
2391#: src/dht/plugin_block_dht.c:196 2381#: src/dht/plugin_block_dht.c:198
2392msgid "Size mismatch for block\n" 2382msgid "Size mismatch for block\n"
2393msgstr "" 2383msgstr ""
2394 2384
2395#: src/dht/plugin_block_dht.c:207 2385#: src/dht/plugin_block_dht.c:209
2396#, c-format 2386#, c-format
2397msgid "Block of type %u is malformed\n" 2387msgid "Block of type %u is malformed\n"
2398msgstr "" 2388msgstr ""
2399 2389
2400#: src/dns/gnunet-dns-monitor.c:351 src/dns/gnunet-dns-monitor.c:356 2390#: src/dns/gnunet-dns-monitor.c:353 src/dns/gnunet-dns-monitor.c:358
2401msgid "only monitor DNS queries" 2391msgid "only monitor DNS queries"
2402msgstr "" 2392msgstr ""
2403 2393
2404#: src/dns/gnunet-dns-monitor.c:368 2394#: src/dns/gnunet-dns-monitor.c:370
2405msgid "Monitor DNS queries." 2395msgid "Monitor DNS queries."
2406msgstr "" 2396msgstr ""
2407 2397
2408#: src/dns/gnunet-dns-redirector.c:235 2398#: src/dns/gnunet-dns-redirector.c:237
2409msgid "set A records" 2399msgid "set A records"
2410msgstr "" 2400msgstr ""
2411 2401
2412#: src/dns/gnunet-dns-redirector.c:241 2402#: src/dns/gnunet-dns-redirector.c:243
2413msgid "set AAAA records" 2403msgid "set AAAA records"
2414msgstr "" 2404msgstr ""
2415 2405
2416#: src/dns/gnunet-dns-redirector.c:254 2406#: src/dns/gnunet-dns-redirector.c:256
2417msgid "Change DNS replies to point elsewhere." 2407msgid "Change DNS replies to point elsewhere."
2418msgstr "" 2408msgstr ""
2419 2409
2420#: src/dns/gnunet-service-dns.c:460 2410#: src/dns/gnunet-service-dns.c:462
2421msgid "# DNS requests answered via TUN interface" 2411msgid "# DNS requests answered via TUN interface"
2422msgstr "" 2412msgstr ""
2423 2413
2424#: src/dns/gnunet-service-dns.c:608 2414#: src/dns/gnunet-service-dns.c:610
2425msgid "# DNS exit failed (failed to open socket)" 2415msgid "# DNS exit failed (failed to open socket)"
2426msgstr "" 2416msgstr ""
2427 2417
2428#: src/dns/gnunet-service-dns.c:738 2418#: src/dns/gnunet-service-dns.c:740
2429msgid "# External DNS response discarded (no matching request)" 2419msgid "# External DNS response discarded (no matching request)"
2430msgstr "" 2420msgstr ""
2431 2421
2432#: src/dns/gnunet-service-dns.c:813 2422#: src/dns/gnunet-service-dns.c:815
2433msgid "# Client response discarded (no matching request)" 2423msgid "# Client response discarded (no matching request)"
2434msgstr "" 2424msgstr ""
2435 2425
2436#: src/dns/gnunet-service-dns.c:928 2426#: src/dns/gnunet-service-dns.c:930
2437msgid "Received malformed IPv4-UDP packet on TUN interface.\n" 2427msgid "Received malformed IPv4-UDP packet on TUN interface.\n"
2438msgstr "" 2428msgstr ""
2439 2429
2440#: src/dns/gnunet-service-dns.c:944 2430#: src/dns/gnunet-service-dns.c:946
2441msgid "Received malformed IPv6-UDP packet on TUN interface.\n" 2431msgid "Received malformed IPv6-UDP packet on TUN interface.\n"
2442msgstr "" 2432msgstr ""
2443 2433
2444#: src/dns/gnunet-service-dns.c:953 2434#: src/dns/gnunet-service-dns.c:955
2445#, c-format 2435#, c-format
2446msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n" 2436msgid "Got non-IP packet with %u bytes and protocol %u from TUN\n"
2447msgstr "" 2437msgstr ""
2448 2438
2449#: src/dns/gnunet-service-dns.c:963 2439#: src/dns/gnunet-service-dns.c:965
2450msgid "DNS interceptor got non-DNS packet (dropped)\n" 2440msgid "DNS interceptor got non-DNS packet (dropped)\n"
2451msgstr "" 2441msgstr ""
2452 2442
2453#: src/dns/gnunet-service-dns.c:965 2443#: src/dns/gnunet-service-dns.c:967
2454msgid "# Non-DNS UDP packet received via TUN interface" 2444msgid "# Non-DNS UDP packet received via TUN interface"
2455msgstr "" 2445msgstr ""
2456 2446
2457#: src/dns/gnunet-service-dns.c:1032 2447#: src/dns/gnunet-service-dns.c:1034
2458msgid "# DNS requests received via TUN interface" 2448msgid "# DNS requests received via TUN interface"
2459msgstr "" 2449msgstr ""
2460 2450
2461#: src/dns/gnunet-service-dns.c:1080 src/exit/gnunet-daemon-exit.c:3563 2451#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
2462#, fuzzy 2452#, fuzzy
2463msgid "need a valid IPv4 or IPv6 address\n" 2453msgid "need a valid IPv4 or IPv6 address\n"
2464msgstr "无效的进程优先级“%s”\n" 2454msgstr "无效的进程优先级“%s”\n"
2465 2455
2466#: src/dns/gnunet-service-dns.c:1090 2456#: src/dns/gnunet-service-dns.c:1092
2467#, c-format 2457#, c-format
2468msgid "`%s' must be installed SUID, will not run DNS interceptor\n" 2458msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
2469msgstr "" 2459msgstr ""
2470 2460
2471#: src/dv/gnunet-dv.c:173 2461#: src/dv/gnunet-dv.c:175
2472#, fuzzy 2462#, fuzzy
2473msgid "Print information about DV state" 2463msgid "Print information about DV state"
2474msgstr "无法获取有关用户“%s”的信息:%s\n" 2464msgstr "无法获取有关用户“%s”的信息:%s\n"
2475 2465
2476#: src/exit/gnunet-daemon-exit.c:958 2466#: src/exit/gnunet-daemon-exit.c:960
2477msgid "# TCP packets sent via TUN" 2467msgid "# TCP packets sent via TUN"
2478msgstr "" 2468msgstr ""
2479 2469
2480#: src/exit/gnunet-daemon-exit.c:1059 2470#: src/exit/gnunet-daemon-exit.c:1061
2481msgid "# ICMP packets sent via TUN" 2471msgid "# ICMP packets sent via TUN"
2482msgstr "" 2472msgstr ""
2483 2473
2484#: src/exit/gnunet-daemon-exit.c:1338 2474#: src/exit/gnunet-daemon-exit.c:1340
2485msgid "# UDP packets sent via TUN" 2475msgid "# UDP packets sent via TUN"
2486msgstr "" 2476msgstr ""
2487 2477
2488#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570 2478#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
2489#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699 2479#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
2490#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951 2480#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
2491#: src/exit/gnunet-daemon-exit.c:2205 2481#: src/exit/gnunet-daemon-exit.c:2207
2492msgid "# Bytes received from CADET" 2482msgid "# Bytes received from CADET"
2493msgstr "" 2483msgstr ""
2494 2484
2495#: src/exit/gnunet-daemon-exit.c:1465 2485#: src/exit/gnunet-daemon-exit.c:1467
2496msgid "# UDP IP-exit requests received via cadet" 2486msgid "# UDP IP-exit requests received via cadet"
2497msgstr "" 2487msgstr ""
2498 2488
2499#: src/exit/gnunet-daemon-exit.c:1573 2489#: src/exit/gnunet-daemon-exit.c:1575
2500msgid "# UDP service requests received via cadet" 2490msgid "# UDP service requests received via cadet"
2501msgstr "" 2491msgstr ""
2502 2492
2503#: src/exit/gnunet-daemon-exit.c:1613 2493#: src/exit/gnunet-daemon-exit.c:1615
2504msgid "# TCP service creation requests received via cadet" 2494msgid "# TCP service creation requests received via cadet"
2505msgstr "" 2495msgstr ""
2506 2496
2507#: src/exit/gnunet-daemon-exit.c:1702 2497#: src/exit/gnunet-daemon-exit.c:1704
2508msgid "# TCP IP-exit creation requests received via cadet" 2498msgid "# TCP IP-exit creation requests received via cadet"
2509msgstr "" 2499msgstr ""
2510 2500
2511#: src/exit/gnunet-daemon-exit.c:1786 2501#: src/exit/gnunet-daemon-exit.c:1788
2512msgid "# TCP DATA requests dropped (no session)" 2502msgid "# TCP DATA requests dropped (no session)"
2513msgstr "" 2503msgstr ""
2514 2504
2515#: src/exit/gnunet-daemon-exit.c:1823 2505#: src/exit/gnunet-daemon-exit.c:1825
2516msgid "# TCP data requests received via cadet" 2506msgid "# TCP data requests received via cadet"
2517msgstr "" 2507msgstr ""
2518 2508
2519#: src/exit/gnunet-daemon-exit.c:1954 2509#: src/exit/gnunet-daemon-exit.c:1956
2520msgid "# ICMP IP-exit requests received via cadet" 2510msgid "# ICMP IP-exit requests received via cadet"
2521msgstr "" 2511msgstr ""
2522 2512
2523#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277 2513#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
2524#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:826 2514#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
2525#: src/vpn/gnunet-service-vpn.c:989 src/vpn/gnunet-service-vpn.c:2103 2515#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
2526msgid "# ICMPv4 packets dropped (type not allowed)" 2516msgid "# ICMPv4 packets dropped (type not allowed)"
2527msgstr "" 2517msgstr ""
2528 2518
2529#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336 2519#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
2530#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885 2520#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
2531#: src/vpn/gnunet-service-vpn.c:1022 src/vpn/gnunet-service-vpn.c:2156 2521#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
2532msgid "# ICMPv6 packets dropped (type not allowed)" 2522msgid "# ICMPv6 packets dropped (type not allowed)"
2533msgstr "" 2523msgstr ""
2534 2524
2535#: src/exit/gnunet-daemon-exit.c:2208 2525#: src/exit/gnunet-daemon-exit.c:2210
2536msgid "# ICMP service requests received via cadet" 2526msgid "# ICMP service requests received via cadet"
2537msgstr "" 2527msgstr ""
2538 2528
2539#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:983 2529#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
2540#: src/vpn/gnunet-service-vpn.c:2094 2530#: src/vpn/gnunet-service-vpn.c:2096
2541msgid "# ICMPv4 packets dropped (impossible PT to v6)" 2531msgid "# ICMPv4 packets dropped (impossible PT to v6)"
2542msgstr "" 2532msgstr ""
2543 2533
2544#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:873 2534#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
2545#: src/vpn/gnunet-service-vpn.c:2128 src/vpn/gnunet-service-vpn.c:2139 2535#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
2546msgid "# ICMPv6 packets dropped (impossible PT to v4)" 2536msgid "# ICMPv6 packets dropped (impossible PT to v4)"
2547msgstr "" 2537msgstr ""
2548 2538
2549#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066 2539#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
2550#, fuzzy 2540#, fuzzy
2551msgid "# Inbound CADET channels created" 2541msgid "# Inbound CADET channels created"
2552msgstr "" 2542msgstr ""
2553"\n" 2543"\n"
2554"按任意键继续\n" 2544"按任意键继续\n"
2555 2545
2556#: src/exit/gnunet-daemon-exit.c:2520 2546#: src/exit/gnunet-daemon-exit.c:2522
2557#, c-format 2547#, c-format
2558msgid "Got duplicate service records for `%s:%u'\n" 2548msgid "Got duplicate service records for `%s:%u'\n"
2559msgstr "" 2549msgstr ""
2560 2550
2561#: src/exit/gnunet-daemon-exit.c:2539 2551#: src/exit/gnunet-daemon-exit.c:2541
2562#, fuzzy 2552#, fuzzy
2563msgid "# Messages transmitted via cadet channels" 2553msgid "# Messages transmitted via cadet channels"
2564msgstr "" 2554msgstr ""
2565"\n" 2555"\n"
2566"按任意键继续\n" 2556"按任意键继续\n"
2567 2557
2568#: src/exit/gnunet-daemon-exit.c:2717 2558#: src/exit/gnunet-daemon-exit.c:2719
2569msgid "# ICMP packets dropped (not allowed)" 2559msgid "# ICMP packets dropped (not allowed)"
2570msgstr "" 2560msgstr ""
2571 2561
2572#: src/exit/gnunet-daemon-exit.c:2725 2562#: src/exit/gnunet-daemon-exit.c:2727
2573msgid "ICMP Packet dropped, have no matching connection information\n" 2563msgid "ICMP Packet dropped, have no matching connection information\n"
2574msgstr "" 2564msgstr ""
2575 2565
2576#: src/exit/gnunet-daemon-exit.c:2799 2566#: src/exit/gnunet-daemon-exit.c:2801
2577msgid "UDP Packet dropped, have no matching connection information\n" 2567msgid "UDP Packet dropped, have no matching connection information\n"
2578msgstr "" 2568msgstr ""
2579 2569
2580#: src/exit/gnunet-daemon-exit.c:2871 2570#: src/exit/gnunet-daemon-exit.c:2873
2581msgid "TCP Packet dropped, have no matching connection information\n" 2571msgid "TCP Packet dropped, have no matching connection information\n"
2582msgstr "" 2572msgstr ""
2583 2573
2584#: src/exit/gnunet-daemon-exit.c:2919 2574#: src/exit/gnunet-daemon-exit.c:2921
2585msgid "# Packets received from TUN" 2575msgid "# Packets received from TUN"
2586msgstr "" 2576msgstr ""
2587 2577
2588#: src/exit/gnunet-daemon-exit.c:2933 2578#: src/exit/gnunet-daemon-exit.c:2935
2589msgid "# Bytes received from TUN" 2579msgid "# Bytes received from TUN"
2590msgstr "" 2580msgstr ""
2591 2581
2592#: src/exit/gnunet-daemon-exit.c:2959 2582#: src/exit/gnunet-daemon-exit.c:2961
2593msgid "IPv4 packet options received. Ignored.\n" 2583msgid "IPv4 packet options received. Ignored.\n"
2594msgstr "" 2584msgstr ""
2595 2585
2596#: src/exit/gnunet-daemon-exit.c:2986 2586#: src/exit/gnunet-daemon-exit.c:2988
2597#, c-format 2587#, c-format
2598msgid "IPv4 packet with unsupported next header %u received. Ignored.\n" 2588msgid "IPv4 packet with unsupported next header %u received. Ignored.\n"
2599msgstr "" 2589msgstr ""
2600 2590
2601#: src/exit/gnunet-daemon-exit.c:3032 2591#: src/exit/gnunet-daemon-exit.c:3034
2602#, c-format 2592#, c-format
2603msgid "IPv6 packet with unsupported next header %d received. Ignored.\n" 2593msgid "IPv6 packet with unsupported next header %d received. Ignored.\n"
2604msgstr "" 2594msgstr ""
2605 2595
2606#: src/exit/gnunet-daemon-exit.c:3040 2596#: src/exit/gnunet-daemon-exit.c:3042
2607#, c-format 2597#, c-format
2608msgid "Packet from unknown protocol %u received. Ignored.\n" 2598msgid "Packet from unknown protocol %u received. Ignored.\n"
2609msgstr "" 2599msgstr ""
2610 2600
2611#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253 2601#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
2612#, fuzzy, c-format 2602#, fuzzy, c-format
2613msgid "Option `%s' for domain `%s' is not formatted correctly!\n" 2603msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
2614msgstr "%s:选项“%s”有歧义\n" 2604msgstr "%s:选项“%s”有歧义\n"
2615 2605
2616#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275 2606#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
2617#, c-format 2607#, c-format
2618msgid "`%s' is not a valid port number (for domain `%s')!" 2608msgid "`%s' is not a valid port number (for domain `%s')!"
2619msgstr "" 2609msgstr ""
2620 2610
2621#: src/exit/gnunet-daemon-exit.c:3316 2611#: src/exit/gnunet-daemon-exit.c:3318
2622#, c-format 2612#, c-format
2623msgid "No addresses found for hostname `%s' of service `%s'!\n" 2613msgid "No addresses found for hostname `%s' of service `%s'!\n"
2624msgstr "" 2614msgstr ""
2625 2615
2626#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343 2616#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
2627#, c-format 2617#, c-format
2628msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n" 2618msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
2629msgstr "" 2619msgstr ""
2630 2620
2631#: src/exit/gnunet-daemon-exit.c:3355 2621#: src/exit/gnunet-daemon-exit.c:3357
2632#, c-format 2622#, c-format
2633msgid "No IP addresses found for hostname `%s' of service `%s'!\n" 2623msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
2634msgstr "" 2624msgstr ""
2635 2625
2636#: src/exit/gnunet-daemon-exit.c:3499 2626#: src/exit/gnunet-daemon-exit.c:3501
2637msgid "" 2627msgid ""
2638"This system does not support IPv4, will disable IPv4 functions despite them " 2628"This system does not support IPv4, will disable IPv4 functions despite them "
2639"being enabled in the configuration\n" 2629"being enabled in the configuration\n"
2640msgstr "" 2630msgstr ""
2641 2631
2642#: src/exit/gnunet-daemon-exit.c:3507 2632#: src/exit/gnunet-daemon-exit.c:3509
2643msgid "" 2633msgid ""
2644"This system does not support IPv6, will disable IPv6 functions despite them " 2634"This system does not support IPv6, will disable IPv6 functions despite them "
2645"being enabled in the configuration\n" 2635"being enabled in the configuration\n"
2646msgstr "" 2636msgstr ""
2647 2637
2648#: src/exit/gnunet-daemon-exit.c:3514 2638#: src/exit/gnunet-daemon-exit.c:3516
2649msgid "" 2639msgid ""
2650"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use " 2640"Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
2651"ENABLE_IPv4=YES\n" 2641"ENABLE_IPv4=YES\n"
2652msgstr "" 2642msgstr ""
2653 2643
2654#: src/exit/gnunet-daemon-exit.c:3520 2644#: src/exit/gnunet-daemon-exit.c:3522
2655msgid "" 2645msgid ""
2656"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use " 2646"Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
2657"ENABLE_IPv6=YES\n" 2647"ENABLE_IPv6=YES\n"
2658msgstr "" 2648msgstr ""
2659 2649
2660#: src/exit/gnunet-daemon-exit.c:3688 2650#: src/exit/gnunet-daemon-exit.c:3690
2661msgid "Must be a number" 2651msgid "Must be a number"
2662msgstr "" 2652msgstr ""
2663 2653
2664#: src/exit/gnunet-daemon-exit.c:3803 2654#: src/exit/gnunet-daemon-exit.c:3805
2665#, c-format 2655#, c-format
2666msgid "`%s' must be installed SUID, EXIT will not work\n" 2656msgid "`%s' must be installed SUID, EXIT will not work\n"
2667msgstr "" 2657msgstr ""
2668 2658
2669#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202 2659#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
2670msgid "No useful service enabled. Exiting.\n" 2660msgid "No useful service enabled. Exiting.\n"
2671msgstr "" 2661msgstr ""
2672 2662
2673#: src/exit/gnunet-daemon-exit.c:3964 2663#: src/exit/gnunet-daemon-exit.c:3966
2674msgid "Daemon to run to provide an IP exit node for the VPN" 2664msgid "Daemon to run to provide an IP exit node for the VPN"
2675msgstr "" 2665msgstr ""
2676 2666
2677#: src/fragmentation/defragmentation.c:273 2667#: src/fragmentation/defragmentation.c:275
2678msgid "# acknowledgements sent for fragment" 2668msgid "# acknowledgements sent for fragment"
2679msgstr "" 2669msgstr ""
2680 2670
2681#: src/fragmentation/defragmentation.c:466 2671#: src/fragmentation/defragmentation.c:468
2682#: src/transport/plugin_transport_wlan.c:1552 2672#: src/transport/plugin_transport_wlan.c:1554
2683msgid "# fragments received" 2673msgid "# fragments received"
2684msgstr "" 2674msgstr ""
2685 2675
2686#: src/fragmentation/defragmentation.c:536 2676#: src/fragmentation/defragmentation.c:538
2687msgid "# duplicate fragments received" 2677msgid "# duplicate fragments received"
2688msgstr "" 2678msgstr ""
2689 2679
2690#: src/fragmentation/defragmentation.c:554 2680#: src/fragmentation/defragmentation.c:556
2691msgid "# messages defragmented" 2681msgid "# messages defragmented"
2692msgstr "" 2682msgstr ""
2693 2683
2694#: src/fragmentation/fragmentation.c:238 2684#: src/fragmentation/fragmentation.c:240
2695msgid "# fragments transmitted" 2685msgid "# fragments transmitted"
2696msgstr "" 2686msgstr ""
2697 2687
2698#: src/fragmentation/fragmentation.c:243 2688#: src/fragmentation/fragmentation.c:245
2699msgid "# fragments retransmitted" 2689msgid "# fragments retransmitted"
2700msgstr "" 2690msgstr ""
2701 2691
2702#: src/fragmentation/fragmentation.c:276 2692#: src/fragmentation/fragmentation.c:278
2703msgid "# fragments wrap arounds" 2693msgid "# fragments wrap arounds"
2704msgstr "" 2694msgstr ""
2705 2695
2706#: src/fragmentation/fragmentation.c:323 2696#: src/fragmentation/fragmentation.c:325
2707msgid "# messages fragmented" 2697msgid "# messages fragmented"
2708msgstr "" 2698msgstr ""
2709 2699
2710#: src/fragmentation/fragmentation.c:329 2700#: src/fragmentation/fragmentation.c:331
2711msgid "# total size of fragmented messages" 2701msgid "# total size of fragmented messages"
2712msgstr "" 2702msgstr ""
2713 2703
2714#: src/fragmentation/fragmentation.c:454 2704#: src/fragmentation/fragmentation.c:456
2715msgid "# fragment acknowledgements received" 2705msgid "# fragment acknowledgements received"
2716msgstr "" 2706msgstr ""
2717 2707
2718#: src/fragmentation/fragmentation.c:461 2708#: src/fragmentation/fragmentation.c:463
2719msgid "# bits removed from fragmentation ACKs" 2709msgid "# bits removed from fragmentation ACKs"
2720msgstr "" 2710msgstr ""
2721 2711
2722#: src/fragmentation/fragmentation.c:485 2712#: src/fragmentation/fragmentation.c:487
2723msgid "# fragmentation transmissions completed" 2713msgid "# fragmentation transmissions completed"
2724msgstr "" 2714msgstr ""
2725 2715
2726#: src/fs/fs_api.c:497 2716#: src/fs/fs_api.c:499
2727#, fuzzy, c-format 2717#, fuzzy, c-format
2728msgid "Could not open file `%s': %s" 2718msgid "Could not open file `%s': %s"
2729msgstr "打开日志文件“%s”失败:%s\n" 2719msgstr "打开日志文件“%s”失败:%s\n"
2730 2720
2731#: src/fs/fs_api.c:508 2721#: src/fs/fs_api.c:510
2732#, fuzzy, c-format 2722#, fuzzy, c-format
2733msgid "Could not read file `%s': %s" 2723msgid "Could not read file `%s': %s"
2734msgstr "无法解析“%s”(%s):%s\n" 2724msgstr "无法解析“%s”(%s):%s\n"
2735 2725
2736#: src/fs/fs_api.c:516 2726#: src/fs/fs_api.c:518
2737#, c-format 2727#, c-format
2738msgid "Short read reading from file `%s'!" 2728msgid "Short read reading from file `%s'!"
2739msgstr "" 2729msgstr ""
2740 2730
2741#: src/fs/fs_api.c:1124 2731#: src/fs/fs_api.c:1126
2742#, fuzzy, c-format 2732#, fuzzy, c-format
2743msgid "Failed to resume publishing information `%s': %s\n" 2733msgid "Failed to resume publishing information `%s': %s\n"
2744msgstr "打开日志文件“%s”失败:%s\n" 2734msgstr "打开日志文件“%s”失败:%s\n"
2745 2735
2746#: src/fs/fs_api.c:1644 2736#: src/fs/fs_api.c:1646
2747#, c-format 2737#, c-format
2748msgid "Failure while resuming publishing operation `%s': %s\n" 2738msgid "Failure while resuming publishing operation `%s': %s\n"
2749msgstr "" 2739msgstr ""
2750 2740
2751#: src/fs/fs_api.c:1660 2741#: src/fs/fs_api.c:1662
2752#, fuzzy, c-format 2742#, fuzzy, c-format
2753msgid "Failed to resume publishing operation `%s': %s\n" 2743msgid "Failed to resume publishing operation `%s': %s\n"
2754msgstr "解析配置文件“%s”失败\n" 2744msgstr "解析配置文件“%s”失败\n"
2755 2745
2756#: src/fs/fs_api.c:2320 2746#: src/fs/fs_api.c:2322
2757#, c-format 2747#, c-format
2758msgid "Failure while resuming unindexing operation `%s': %s\n" 2748msgid "Failure while resuming unindexing operation `%s': %s\n"
2759msgstr "" 2749msgstr ""
2760 2750
2761#: src/fs/fs_api.c:2330 2751#: src/fs/fs_api.c:2332
2762#, fuzzy, c-format 2752#, fuzzy, c-format
2763msgid "Failed to resume unindexing operation `%s': %s\n" 2753msgid "Failed to resume unindexing operation `%s': %s\n"
2764msgstr "解析配置文件“%s”失败\n" 2754msgstr "解析配置文件“%s”失败\n"
2765 2755
2766#: src/fs/fs_api.c:2458 src/fs/fs_api.c:2704 2756#: src/fs/fs_api.c:2460 src/fs/fs_api.c:2706
2767#, fuzzy, c-format 2757#, fuzzy, c-format
2768msgid "Failed to resume sub-download `%s': %s\n" 2758msgid "Failed to resume sub-download `%s': %s\n"
2769msgstr "打开日志文件“%s”失败:%s\n" 2759msgstr "打开日志文件“%s”失败:%s\n"
2770 2760
2771#: src/fs/fs_api.c:2476 2761#: src/fs/fs_api.c:2478
2772#, fuzzy, c-format 2762#, fuzzy, c-format
2773msgid "Failed to resume sub-search `%s': %s\n" 2763msgid "Failed to resume sub-search `%s': %s\n"
2774msgstr "打开日志文件“%s”失败:%s\n" 2764msgstr "打开日志文件“%s”失败:%s\n"
2775 2765
2776#: src/fs/fs_api.c:2491 src/fs/fs_api.c:2510 src/fs/fs_api.c:3014 2766#: src/fs/fs_api.c:2493 src/fs/fs_api.c:2512 src/fs/fs_api.c:3016
2777#, c-format 2767#, c-format
2778msgid "Failure while resuming search operation `%s': %s\n" 2768msgid "Failure while resuming search operation `%s': %s\n"
2779msgstr "" 2769msgstr ""
2780 2770
2781#: src/fs/fs_api.c:2694 2771#: src/fs/fs_api.c:2696
2782#, fuzzy, c-format 2772#, fuzzy, c-format
2783msgid "Failed to resume sub-download `%s': could not open file `%s'\n" 2773msgid "Failed to resume sub-download `%s': could not open file `%s'\n"
2784msgstr "解析配置文件“%s”失败\n" 2774msgstr "解析配置文件“%s”失败\n"
2785 2775
2786#: src/fs/fs_api.c:2957 2776#: src/fs/fs_api.c:2959
2787msgid "Could not resume running search, will resume as paused search\n" 2777msgid "Could not resume running search, will resume as paused search\n"
2788msgstr "" 2778msgstr ""
2789 2779
2790#: src/fs/fs_api.c:3052 2780#: src/fs/fs_api.c:3054
2791#, c-format 2781#, c-format
2792msgid "Failure while resuming download operation `%s': %s\n" 2782msgid "Failure while resuming download operation `%s': %s\n"
2793msgstr "" 2783msgstr ""
2794 2784
2795#: src/fs/fs_directory.c:211 2785#: src/fs/fs_directory.c:213
2796msgid "MAGIC mismatch. This is not a GNUnet directory.\n" 2786msgid "MAGIC mismatch. This is not a GNUnet directory.\n"
2797msgstr "" 2787msgstr ""
2798 2788
2799#: src/fs/fs_download.c:308 2789#: src/fs/fs_download.c:310
2800msgid "" 2790msgid ""
2801"Recursive downloads of directories larger than 4 GB are not supported on 32-" 2791"Recursive downloads of directories larger than 4 GB are not supported on 32-"
2802"bit systems\n" 2792"bit systems\n"
2803msgstr "" 2793msgstr ""
2804 2794
2805#: src/fs/fs_download.c:333 2795#: src/fs/fs_download.c:335
2806msgid "Directory too large for system address space\n" 2796msgid "Directory too large for system address space\n"
2807msgstr "" 2797msgstr ""
2808 2798
2809#: src/fs/fs_download.c:345 2799#: src/fs/fs_download.c:347
2810#, c-format 2800#, c-format
2811msgid "" 2801msgid ""
2812"Failed to access full directroy contents of `%s' for recursive download\n" 2802"Failed to access full directroy contents of `%s' for recursive download\n"
2813msgstr "" 2803msgstr ""
2814 2804
2815#: src/fs/fs_download.c:532 src/fs/fs_download.c:544 2805#: src/fs/fs_download.c:534 src/fs/fs_download.c:546
2816#, fuzzy, c-format 2806#, fuzzy, c-format
2817msgid "Failed to open file `%s' for writing" 2807msgid "Failed to open file `%s' for writing"
2818msgstr "打开日志文件“%s”失败:%s\n" 2808msgstr "打开日志文件“%s”失败:%s\n"
2819 2809
2820#: src/fs/fs_download.c:954 2810#: src/fs/fs_download.c:956
2821#, c-format 2811#, c-format
2822msgid "Failed to create directory for recursive download of `%s'\n" 2812msgid "Failed to create directory for recursive download of `%s'\n"
2823msgstr "" 2813msgstr ""
2824 2814
2825#: src/fs/fs_download.c:1045 2815#: src/fs/fs_download.c:1047
2826#, c-format 2816#, c-format
2827msgid "" 2817msgid ""
2828"Internal error or bogus download URI (expected %u bytes at depth %u and " 2818"Internal error or bogus download URI (expected %u bytes at depth %u and "
2829"offset %llu/%llu, got %u bytes)" 2819"offset %llu/%llu, got %u bytes)"
2830msgstr "" 2820msgstr ""
2831 2821
2832#: src/fs/fs_download.c:1073 2822#: src/fs/fs_download.c:1075
2833msgid "internal error decrypting content" 2823msgid "internal error decrypting content"
2834msgstr "" 2824msgstr ""
2835 2825
2836#: src/fs/fs_download.c:1097 2826#: src/fs/fs_download.c:1099
2837#, fuzzy, c-format 2827#, fuzzy, c-format
2838msgid "Download failed: could not open file `%s': %s" 2828msgid "Download failed: could not open file `%s': %s"
2839msgstr "打开日志文件“%s”失败:%s\n" 2829msgstr "打开日志文件“%s”失败:%s\n"
2840 2830
2841#: src/fs/fs_download.c:1109 2831#: src/fs/fs_download.c:1111
2842#, fuzzy, c-format 2832#, fuzzy, c-format
2843msgid "Failed to seek to offset %llu in file `%s': %s" 2833msgid "Failed to seek to offset %llu in file `%s': %s"
2844msgstr "打开日志文件“%s”失败:%s\n" 2834msgstr "打开日志文件“%s”失败:%s\n"
2845 2835
2846#: src/fs/fs_download.c:1118 2836#: src/fs/fs_download.c:1120
2847#, fuzzy, c-format 2837#, fuzzy, c-format
2848msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s" 2838msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s"
2849msgstr "解析配置文件“%s”失败\n" 2839msgstr "解析配置文件“%s”失败\n"
2850 2840
2851#: src/fs/fs_download.c:1218 2841#: src/fs/fs_download.c:1220
2852#, fuzzy 2842#, fuzzy
2853msgid "internal error decoding tree" 2843msgid "internal error decoding tree"
2854msgstr "未知错误。\n" 2844msgstr "未知错误。\n"
2855 2845
2856#: src/fs/fs_download.c:1883 2846#: src/fs/fs_download.c:1885
2857#, fuzzy 2847#, fuzzy
2858msgid "Invalid URI" 2848msgid "Invalid URI"
2859msgstr "无效条目。\n" 2849msgstr "无效条目。\n"
2860 2850
2861#: src/fs/fs_getopt.c:224 2851#: src/fs/fs_getopt.c:235
2862#, c-format 2852#, c-format
2863msgid "" 2853msgid ""
2864"Unknown metadata type in metadata option `%s'. Using metadata type " 2854"Unknown metadata type in metadata option `%s'. Using metadata type "
2865"`unknown' instead.\n" 2855"`unknown' instead.\n"
2866msgstr "" 2856msgstr ""
2867 2857
2868#: src/fs/fs_list_indexed.c:150 2858#: src/fs/fs_list_indexed.c:152
2869#, fuzzy, c-format 2859#, fuzzy, c-format
2870msgid "Failed to receive response from `%s' service.\n" 2860msgid "Failed to receive response from `%s' service.\n"
2871msgstr "“%s”的参数无效。\n" 2861msgstr "“%s”的参数无效。\n"
2872 2862
2873#: src/fs/fs_list_indexed.c:194 2863#: src/fs/fs_list_indexed.c:196
2874#, fuzzy, c-format 2864#, fuzzy, c-format
2875msgid "Failed to not connect to `%s' service.\n" 2865msgid "Failed to not connect to `%s' service.\n"
2876msgstr "初始化“%s”服务失败。\n" 2866msgstr "初始化“%s”服务失败。\n"
2877 2867
2878#: src/fs/fs_misc.c:126 2868#: src/fs/fs_misc.c:128
2879#, c-format 2869#, c-format
2880msgid "Did not find mime type `%s' in extension list.\n" 2870msgid "Did not find mime type `%s' in extension list.\n"
2881msgstr "" 2871msgstr ""
2882 2872
2883#: src/fs/fs_namespace.c:205 2873#: src/fs/fs_namespace.c:207
2884#, fuzzy, c-format 2874#, fuzzy, c-format
2885msgid "Failed to open `%s' for writing: %s\n" 2875msgid "Failed to open `%s' for writing: %s\n"
2886msgstr "打开日志文件“%s”失败:%s\n" 2876msgstr "打开日志文件“%s”失败:%s\n"
2887 2877
2888#: src/fs/fs_namespace.c:230 2878#: src/fs/fs_namespace.c:232
2889#, fuzzy, c-format 2879#, fuzzy, c-format
2890msgid "Failed to write `%s': %s\n" 2880msgid "Failed to write `%s': %s\n"
2891msgstr "运行 %s失败:%s %d\n" 2881msgstr "运行 %s失败:%s %d\n"
2892 2882
2893#: src/fs/fs_namespace.c:322 2883#: src/fs/fs_namespace.c:324
2894#, fuzzy, c-format 2884#, fuzzy, c-format
2895msgid "Failed to read `%s': %s\n" 2885msgid "Failed to read `%s': %s\n"
2896msgstr "运行 %s失败:%s %d\n" 2886msgstr "运行 %s失败:%s %d\n"
2897 2887
2898#: src/fs/fs_namespace.c:468 2888#: src/fs/fs_namespace.c:470
2899msgid "Failed to connect to datastore." 2889msgid "Failed to connect to datastore."
2900msgstr "" 2890msgstr ""
2901 2891
2902#: src/fs/fs_publish.c:125 src/fs/fs_publish.c:436 2892#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:438
2903#, c-format 2893#, c-format
2904msgid "Publishing failed: %s" 2894msgid "Publishing failed: %s"
2905msgstr "" 2895msgstr ""
2906 2896
2907#: src/fs/fs_publish.c:722 src/fs/fs_publish.c:776 src/fs/fs_publish.c:821 2897#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
2908#: src/fs/fs_publish.c:842 src/fs/fs_publish.c:872 src/fs/fs_publish.c:1138 2898#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
2909#, c-format 2899#, c-format
2910msgid "Can not index file `%s': %s. Will try to insert instead.\n" 2900msgid "Can not index file `%s': %s. Will try to insert instead.\n"
2911msgstr "" 2901msgstr ""
2912 2902
2913#: src/fs/fs_publish.c:778 2903#: src/fs/fs_publish.c:780
2914#, fuzzy 2904#, fuzzy
2915msgid "error on index-start request to `fs' service" 2905msgid "error on index-start request to `fs' service"
2916msgstr "初始化“%s”服务失败。\n" 2906msgstr "初始化“%s”服务失败。\n"
2917 2907
2918#: src/fs/fs_publish.c:823 2908#: src/fs/fs_publish.c:825
2919msgid "failed to compute hash" 2909msgid "failed to compute hash"
2920msgstr "" 2910msgstr ""
2921 2911
2922#: src/fs/fs_publish.c:843 2912#: src/fs/fs_publish.c:845
2923msgid "filename too long" 2913msgid "filename too long"
2924msgstr "" 2914msgstr ""
2925 2915
2926#: src/fs/fs_publish.c:874 2916#: src/fs/fs_publish.c:876
2927msgid "could not connect to `fs' service" 2917msgid "could not connect to `fs' service"
2928msgstr "" 2918msgstr ""
2929 2919
2930#: src/fs/fs_publish.c:900 2920#: src/fs/fs_publish.c:902
2931#, fuzzy, c-format 2921#, fuzzy, c-format
2932msgid "Failed to get file identifiers for `%s'\n" 2922msgid "Failed to get file identifiers for `%s'\n"
2933msgstr "解析配置文件“%s”失败\n" 2923msgstr "解析配置文件“%s”失败\n"
2934 2924
2935#: src/fs/fs_publish.c:989 src/fs/fs_publish.c:1025 2925#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
2936msgid "Can not create LOC URI. Will continue with CHK instead.\n" 2926msgid "Can not create LOC URI. Will continue with CHK instead.\n"
2937msgstr "" 2927msgstr ""
2938 2928
2939#: src/fs/fs_publish.c:1092 2929#: src/fs/fs_publish.c:1094
2940#, c-format 2930#, c-format
2941msgid "Recursive upload failed at `%s': %s" 2931msgid "Recursive upload failed at `%s': %s"
2942msgstr "" 2932msgstr ""
2943 2933
2944#: src/fs/fs_publish.c:1100 2934#: src/fs/fs_publish.c:1102
2945#, c-format 2935#, c-format
2946msgid "Recursive upload failed: %s" 2936msgid "Recursive upload failed: %s"
2947msgstr "" 2937msgstr ""
2948 2938
2949#: src/fs/fs_publish.c:1140 2939#: src/fs/fs_publish.c:1142
2950msgid "needs to be an actual file" 2940msgid "needs to be an actual file"
2951msgstr "" 2941msgstr ""
2952 2942
2953#: src/fs/fs_publish.c:1379 2943#: src/fs/fs_publish.c:1381
2954#, fuzzy, c-format 2944#, fuzzy, c-format
2955msgid "Datastore failure: %s" 2945msgid "Datastore failure: %s"
2956msgstr "“%s”已连接到“%s”。\n" 2946msgstr "“%s”已连接到“%s”。\n"
2957 2947
2958#: src/fs/fs_publish.c:1470 2948#: src/fs/fs_publish.c:1472
2959#, c-format 2949#, c-format
2960msgid "Reserving space for %u entries and %llu bytes for publication\n" 2950msgid "Reserving space for %u entries and %llu bytes for publication\n"
2961msgstr "" 2951msgstr ""
2962 2952
2963#: src/fs/fs_publish_ksk.c:218 2953#: src/fs/fs_publish_ksk.c:220
2964msgid "Could not connect to datastore." 2954msgid "Could not connect to datastore."
2965msgstr "" 2955msgstr ""
2966 2956
2967#: src/fs/fs_publish_ublock.c:239 2957#: src/fs/fs_publish_ublock.c:241
2968#, fuzzy 2958#, fuzzy
2969msgid "Internal error." 2959msgid "Internal error."
2970msgstr "未知错误。\n" 2960msgstr "未知错误。\n"
2971 2961
2972#: src/fs/fs_search.c:820 src/fs/fs_search.c:890 2962#: src/fs/fs_search.c:822 src/fs/fs_search.c:892
2973#, fuzzy, c-format 2963#, fuzzy, c-format
2974msgid "Failed to parse URI `%s': %s\n" 2964msgid "Failed to parse URI `%s': %s\n"
2975msgstr "运行 %s失败:%s %d\n" 2965msgstr "运行 %s失败:%s %d\n"
2976 2966
2977#: src/fs/fs_search.c:977 2967#: src/fs/fs_search.c:979
2978#, c-format 2968#, c-format
2979msgid "Got result with unknown block type `%d', ignoring" 2969msgid "Got result with unknown block type `%d', ignoring"
2980msgstr "" 2970msgstr ""
2981 2971
2982#: src/fs/fs_unindex.c:61 2972#: src/fs/fs_unindex.c:63
2983msgid "Failed to find given position in file" 2973msgid "Failed to find given position in file"
2984msgstr "" 2974msgstr ""
2985 2975
2986#: src/fs/fs_unindex.c:66 2976#: src/fs/fs_unindex.c:68
2987#, fuzzy 2977#, fuzzy
2988msgid "Failed to read file" 2978msgid "Failed to read file"
2989msgstr "发送消息失败。\n" 2979msgstr "发送消息失败。\n"
2990 2980
2991#: src/fs/fs_unindex.c:273 2981#: src/fs/fs_unindex.c:275
2992#, fuzzy 2982#, fuzzy
2993msgid "Error communicating with `fs' service." 2983msgid "Error communicating with `fs' service."
2994msgstr "连接 %s:%u 出错。守护程序在运行吗?\n" 2984msgstr "连接 %s:%u 出错。守护程序在运行吗?\n"
2995 2985
2996#: src/fs/fs_unindex.c:324 2986#: src/fs/fs_unindex.c:326
2997msgid "Failed to connect to FS service for unindexing." 2987msgid "Failed to connect to FS service for unindexing."
2998msgstr "" 2988msgstr ""
2999 2989
3000#: src/fs/fs_unindex.c:374 src/fs/fs_unindex.c:386 2990#: src/fs/fs_unindex.c:376 src/fs/fs_unindex.c:388
3001#, fuzzy 2991#, fuzzy
3002msgid "Failed to get KSKs from directory scan." 2992msgid "Failed to get KSKs from directory scan."
3003msgstr "解析配置文件“%s”失败\n" 2993msgstr "解析配置文件“%s”失败\n"
3004 2994
3005#: src/fs/fs_unindex.c:382 2995#: src/fs/fs_unindex.c:384
3006#, fuzzy, c-format 2996#, fuzzy, c-format
3007msgid "Internal error scanning `%s'.\n" 2997msgid "Internal error scanning `%s'.\n"
3008msgstr "未知错误。\n" 2998msgstr "未知错误。\n"
3009 2999
3010#: src/fs/fs_unindex.c:441 3000#: src/fs/fs_unindex.c:443
3011#, fuzzy, c-format 3001#, fuzzy, c-format
3012msgid "Failed to remove UBlock: %s\n" 3002msgid "Failed to remove UBlock: %s\n"
3013msgstr "打开日志文件“%s”失败:%s\n" 3003msgstr "打开日志文件“%s”失败:%s\n"
3014 3004
3015#: src/fs/fs_unindex.c:586 src/fs/fs_unindex.c:650 3005#: src/fs/fs_unindex.c:588 src/fs/fs_unindex.c:652
3016#, fuzzy 3006#, fuzzy
3017msgid "Failed to connect to `datastore' service." 3007msgid "Failed to connect to `datastore' service."
3018msgstr "初始化“%s”服务失败。\n" 3008msgstr "初始化“%s”服务失败。\n"
3019 3009
3020#: src/fs/fs_unindex.c:663 3010#: src/fs/fs_unindex.c:665
3021#, fuzzy 3011#, fuzzy
3022msgid "Failed to open file for unindexing." 3012msgid "Failed to open file for unindexing."
3023msgstr "打开日志文件“%s”失败:%s\n" 3013msgstr "打开日志文件“%s”失败:%s\n"
3024 3014
3025#: src/fs/fs_unindex.c:702 3015#: src/fs/fs_unindex.c:704
3026msgid "Failed to compute hash of file." 3016msgid "Failed to compute hash of file."
3027msgstr "" 3017msgstr ""
3028 3018
3029#: src/fs/fs_uri.c:232 3019#: src/fs/fs_uri.c:234
3030#, no-c-format 3020#, no-c-format
3031msgid "Malformed KSK URI (`%' must be followed by HEX number)" 3021msgid "Malformed KSK URI (`%' must be followed by HEX number)"
3032msgstr "" 3022msgstr ""
3033 3023
3034#: src/fs/fs_uri.c:291 3024#: src/fs/fs_uri.c:293
3035msgid "Malformed KSK URI (must not begin or end with `+')" 3025msgid "Malformed KSK URI (must not begin or end with `+')"
3036msgstr "" 3026msgstr ""
3037 3027
3038#: src/fs/fs_uri.c:309 3028#: src/fs/fs_uri.c:311
3039msgid "Malformed KSK URI (`++' not allowed)" 3029msgid "Malformed KSK URI (`++' not allowed)"
3040msgstr "" 3030msgstr ""
3041 3031
3042#: src/fs/fs_uri.c:316 3032#: src/fs/fs_uri.c:318
3043msgid "Malformed KSK URI (quotes not balanced)" 3033msgid "Malformed KSK URI (quotes not balanced)"
3044msgstr "" 3034msgstr ""
3045 3035
3046#: src/fs/fs_uri.c:386 3036#: src/fs/fs_uri.c:388
3047msgid "Malformed SKS URI (wrong syntax)" 3037msgid "Malformed SKS URI (wrong syntax)"
3048msgstr "" 3038msgstr ""
3049 3039
3050#: src/fs/fs_uri.c:427 3040#: src/fs/fs_uri.c:429
3051msgid "Malformed CHK URI (wrong syntax)" 3041msgid "Malformed CHK URI (wrong syntax)"
3052msgstr "" 3042msgstr ""
3053 3043
3054#: src/fs/fs_uri.c:442 3044#: src/fs/fs_uri.c:444
3055msgid "Malformed CHK URI (failed to decode CHK)" 3045msgid "Malformed CHK URI (failed to decode CHK)"
3056msgstr "" 3046msgstr ""
3057 3047
3058#: src/fs/fs_uri.c:521 3048#: src/fs/fs_uri.c:523
3059msgid "LOC URI malformed (wrong syntax)" 3049msgid "LOC URI malformed (wrong syntax)"
3060msgstr "" 3050msgstr ""
3061 3051
3062#: src/fs/fs_uri.c:536 3052#: src/fs/fs_uri.c:538
3063msgid "LOC URI malformed (no CHK)" 3053msgid "LOC URI malformed (no CHK)"
3064msgstr "" 3054msgstr ""
3065 3055
3066#: src/fs/fs_uri.c:546 3056#: src/fs/fs_uri.c:548
3067msgid "LOC URI malformed (missing LOC)" 3057msgid "LOC URI malformed (missing LOC)"
3068msgstr "" 3058msgstr ""
3069 3059
3070#: src/fs/fs_uri.c:554 3060#: src/fs/fs_uri.c:556
3071msgid "LOC URI malformed (wrong syntax for public key)" 3061msgid "LOC URI malformed (wrong syntax for public key)"
3072msgstr "" 3062msgstr ""
3073 3063
3074#: src/fs/fs_uri.c:562 3064#: src/fs/fs_uri.c:564
3075msgid "LOC URI malformed (could not decode public key)" 3065msgid "LOC URI malformed (could not decode public key)"
3076msgstr "" 3066msgstr ""
3077 3067
3078#: src/fs/fs_uri.c:568 3068#: src/fs/fs_uri.c:570
3079msgid "LOC URI malformed (could not find signature)" 3069msgid "LOC URI malformed (could not find signature)"
3080msgstr "" 3070msgstr ""
3081 3071
3082#: src/fs/fs_uri.c:574 3072#: src/fs/fs_uri.c:576
3083msgid "LOC URI malformed (wrong syntax for signature)" 3073msgid "LOC URI malformed (wrong syntax for signature)"
3084msgstr "" 3074msgstr ""
3085 3075
3086#: src/fs/fs_uri.c:583 3076#: src/fs/fs_uri.c:585
3087msgid "LOC URI malformed (could not decode signature)" 3077msgid "LOC URI malformed (could not decode signature)"
3088msgstr "" 3078msgstr ""
3089 3079
3090#: src/fs/fs_uri.c:589 3080#: src/fs/fs_uri.c:591
3091msgid "LOC URI malformed (wrong syntax for expiration time)" 3081msgid "LOC URI malformed (wrong syntax for expiration time)"
3092msgstr "" 3082msgstr ""
3093 3083
3094#: src/fs/fs_uri.c:595 3084#: src/fs/fs_uri.c:597
3095msgid "LOC URI malformed (could not parse expiration time)" 3085msgid "LOC URI malformed (could not parse expiration time)"
3096msgstr "" 3086msgstr ""
3097 3087
3098#: src/fs/fs_uri.c:607 3088#: src/fs/fs_uri.c:609
3099msgid "LOC URI malformed (signature failed validation)" 3089msgid "LOC URI malformed (signature failed validation)"
3100msgstr "" 3090msgstr ""
3101 3091
3102#: src/fs/fs_uri.c:641 3092#: src/fs/fs_uri.c:643
3103#, fuzzy 3093#, fuzzy
3104msgid "invalid argument" 3094msgid "invalid argument"
3105msgstr "“%s”的参数无效。\n" 3095msgstr "“%s”的参数无效。\n"
3106 3096
3107#: src/fs/fs_uri.c:653 3097#: src/fs/fs_uri.c:655
3108msgid "Unrecognized URI type" 3098msgid "Unrecognized URI type"
3109msgstr "" 3099msgstr ""
3110 3100
3111#: src/fs/fs_uri.c:1057 src/fs/fs_uri.c:1084 3101#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
3112msgid "No keywords specified!\n" 3102msgid "No keywords specified!\n"
3113msgstr "" 3103msgstr ""
3114 3104
3115#: src/fs/fs_uri.c:1090 3105#: src/fs/fs_uri.c:1092
3116msgid "Number of double-quotes not balanced!\n" 3106msgid "Number of double-quotes not balanced!\n"
3117msgstr "" 3107msgstr ""
3118 3108
3119#: src/fs/gnunet-auto-share.c:230 3109#: src/fs/gnunet-auto-share.c:232
3120#, fuzzy, c-format 3110#, fuzzy, c-format
3121msgid "Failed to load state: %s\n" 3111msgid "Failed to load state: %s\n"
3122msgstr "运行 %s失败:%s %d\n" 3112msgstr "运行 %s失败:%s %d\n"
3123 3113
3124#: src/fs/gnunet-auto-share.c:283 src/fs/gnunet-auto-share.c:293 3114#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
3125#: src/fs/gnunet-auto-share.c:303 3115#: src/fs/gnunet-auto-share.c:305
3126#, fuzzy, c-format 3116#, fuzzy, c-format
3127msgid "Failed to save state to file %s\n" 3117msgid "Failed to save state to file %s\n"
3128msgstr "解析配置文件“%s”失败\n" 3118msgstr "解析配置文件“%s”失败\n"
3129 3119
3130#: src/fs/gnunet-auto-share.c:405 3120#: src/fs/gnunet-auto-share.c:407
3131#, c-format 3121#, c-format
3132msgid "Publication of `%s' done\n" 3122msgid "Publication of `%s' done\n"
3133msgstr "" 3123msgstr ""
3134 3124
3135#: src/fs/gnunet-auto-share.c:492 3125#: src/fs/gnunet-auto-share.c:494
3136#, c-format 3126#, c-format
3137msgid "Publishing `%s'\n" 3127msgid "Publishing `%s'\n"
3138msgstr "" 3128msgstr ""
3139 3129
3140#: src/fs/gnunet-auto-share.c:502 3130#: src/fs/gnunet-auto-share.c:504
3141#, fuzzy, c-format 3131#, fuzzy, c-format
3142msgid "Failed to run `%s'\n" 3132msgid "Failed to run `%s'\n"
3143msgstr "运行 %s失败:%s %d\n" 3133msgstr "运行 %s失败:%s %d\n"
3144 3134
3145#: src/fs/gnunet-auto-share.c:711 3135#: src/fs/gnunet-auto-share.c:713
3146#, c-format 3136#, c-format
3147msgid "" 3137msgid ""
3148"You must specify one and only one directory name for automatic publication.\n" 3138"You must specify one and only one directory name for automatic publication.\n"
3149msgstr "" 3139msgstr ""
3150 3140
3151#: src/fs/gnunet-auto-share.c:765 src/fs/gnunet-publish.c:898 3141#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
3152msgid "set the desired LEVEL of sender-anonymity" 3142msgid "set the desired LEVEL of sender-anonymity"
3153msgstr "" 3143msgstr ""
3154 3144
3155#: src/fs/gnunet-auto-share.c:770 src/fs/gnunet-publish.c:902 3145#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
3156msgid "disable adding the creation time to the metadata of the uploaded file" 3146msgid "disable adding the creation time to the metadata of the uploaded file"
3157msgstr "" 3147msgstr ""
3158 3148
3159#: src/fs/gnunet-auto-share.c:775 src/fs/gnunet-publish.c:907 3149#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
3160msgid "do not use libextractor to add keywords or metadata" 3150msgid "do not use libextractor to add keywords or metadata"
3161msgstr "" 3151msgstr ""
3162 3152
3163#: src/fs/gnunet-auto-share.c:781 src/fs/gnunet-publish.c:942 3153#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
3164msgid "specify the priority of the content" 3154msgid "specify the priority of the content"
3165msgstr "" 3155msgstr ""
3166 3156
3167#: src/fs/gnunet-auto-share.c:787 src/fs/gnunet-publish.c:954 3157#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
3168msgid "set the desired replication LEVEL" 3158msgid "set the desired replication LEVEL"
3169msgstr "" 3159msgstr ""
3170 3160
3171#: src/fs/gnunet-auto-share.c:811 3161#: src/fs/gnunet-auto-share.c:813
3172msgid "Automatically publish files from a directory on GNUnet" 3162msgid "Automatically publish files from a directory on GNUnet"
3173msgstr "" 3163msgstr ""
3174 3164
3175#: src/fs/gnunet-daemon-fsprofiler.c:646 3165#: src/fs/gnunet-daemon-fsprofiler.c:648
3176msgid "Daemon to use file-sharing to measure its performance." 3166msgid "Daemon to use file-sharing to measure its performance."
3177msgstr "" 3167msgstr ""
3178 3168
3179#: src/fs/gnunet-directory.c:51 3169#: src/fs/gnunet-directory.c:53
3180#, c-format 3170#, c-format
3181msgid "\t<original file embedded in %u bytes of meta data>\n" 3171msgid "\t<original file embedded in %u bytes of meta data>\n"
3182msgstr "" 3172msgstr ""
3183 3173
3184#: src/fs/gnunet-directory.c:103 3174#: src/fs/gnunet-directory.c:105
3185#, c-format 3175#, c-format
3186msgid "Directory `%s' meta data:\n" 3176msgid "Directory `%s' meta data:\n"
3187msgstr "" 3177msgstr ""
3188 3178
3189#: src/fs/gnunet-directory.c:106 3179#: src/fs/gnunet-directory.c:108
3190#, c-format 3180#, c-format
3191msgid "Directory `%s' contents:\n" 3181msgid "Directory `%s' contents:\n"
3192msgstr "" 3182msgstr ""
3193 3183
3194#: src/fs/gnunet-directory.c:141 3184#: src/fs/gnunet-directory.c:143
3195#, fuzzy 3185#, fuzzy
3196msgid "You must specify a filename to inspect.\n" 3186msgid "You must specify a filename to inspect.\n"
3197msgstr "您必须指定一个昵称\n" 3187msgstr "您必须指定一个昵称\n"
3198 3188
3199#: src/fs/gnunet-directory.c:154 3189#: src/fs/gnunet-directory.c:156
3200#, fuzzy, c-format 3190#, fuzzy, c-format
3201msgid "Failed to read directory `%s'\n" 3191msgid "Failed to read directory `%s'\n"
3202msgstr "解析配置文件“%s”失败\n" 3192msgstr "解析配置文件“%s”失败\n"
3203 3193
3204#: src/fs/gnunet-directory.c:163 3194#: src/fs/gnunet-directory.c:165
3205#, fuzzy, c-format 3195#, fuzzy, c-format
3206msgid "`%s' is not a GNUnet directory\n" 3196msgid "`%s' is not a GNUnet directory\n"
3207msgstr "更改 GNUnet 目录的权限出错" 3197msgstr "更改 GNUnet 目录的权限出错"
3208 3198
3209#: src/fs/gnunet-directory.c:192 3199#: src/fs/gnunet-directory.c:194
3210#, fuzzy 3200#, fuzzy
3211msgid "Display contents of a GNUnet directory" 3201msgid "Display contents of a GNUnet directory"
3212msgstr "更改 GNUnet 目录的权限出错" 3202msgstr "更改 GNUnet 目录的权限出错"
3213 3203
3214#: src/fs/gnunet-download.c:137 3204#: src/fs/gnunet-download.c:139
3215#, fuzzy, c-format 3205#, fuzzy, c-format
3216msgid "Starting download `%s'.\n" 3206msgid "Starting download `%s'.\n"
3217msgstr "未知的命令“%s”。\n" 3207msgstr "未知的命令“%s”。\n"
3218 3208
3219#: src/fs/gnunet-download.c:147 3209#: src/fs/gnunet-download.c:149
3220#, fuzzy 3210#, fuzzy
3221msgid "<unknown time>" 3211msgid "<unknown time>"
3222msgstr "未知错误" 3212msgstr "未知错误"
3223 3213
3224#: src/fs/gnunet-download.c:156 3214#: src/fs/gnunet-download.c:158
3225#, c-format 3215#, c-format
3226msgid "" 3216msgid ""
3227"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to " 3217"Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block took %s to "
3228"download\n" 3218"download\n"
3229msgstr "" 3219msgstr ""
3230 3220
3231#: src/fs/gnunet-download.c:182 3221#: src/fs/gnunet-download.c:184
3232#, c-format 3222#, c-format
3233msgid "Error downloading: %s.\n" 3223msgid "Error downloading: %s.\n"
3234msgstr "" 3224msgstr ""
3235 3225
3236#: src/fs/gnunet-download.c:199 3226#: src/fs/gnunet-download.c:201
3237#, c-format 3227#, c-format
3238msgid "Downloading `%s' done (%s/s).\n" 3228msgid "Downloading `%s' done (%s/s).\n"
3239msgstr "" 3229msgstr ""
3240 3230
3241#: src/fs/gnunet-download.c:214 src/fs/gnunet-publish.c:293 3231#: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
3242#: src/fs/gnunet-search.c:210 src/fs/gnunet-unindex.c:105 3232#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
3243#, c-format 3233#, c-format
3244msgid "Unexpected status: %d\n" 3234msgid "Unexpected status: %d\n"
3245msgstr "" 3235msgstr ""
3246 3236
3247#: src/fs/gnunet-download.c:244 3237#: src/fs/gnunet-download.c:246
3248#, fuzzy 3238#, fuzzy
3249msgid "You need to specify a URI argument.\n" 3239msgid "You need to specify a URI argument.\n"
3250msgstr "您必须指定一个昵称\n" 3240msgstr "您必须指定一个昵称\n"
3251 3241
3252#: src/fs/gnunet-download.c:251 src/fs/gnunet-publish.c:724 3242#: src/fs/gnunet-download.c:253 src/fs/gnunet-publish.c:727
3253#, fuzzy, c-format 3243#, fuzzy, c-format
3254msgid "Failed to parse URI: %s\n" 3244msgid "Failed to parse URI: %s\n"
3255msgstr "运行 %s失败:%s %d\n" 3245msgstr "运行 %s失败:%s %d\n"
3256 3246
3257#: src/fs/gnunet-download.c:262 3247#: src/fs/gnunet-download.c:264
3258msgid "Only CHK or LOC URIs supported.\n" 3248msgid "Only CHK or LOC URIs supported.\n"
3259msgstr "" 3249msgstr ""
3260 3250
3261#: src/fs/gnunet-download.c:271 3251#: src/fs/gnunet-download.c:273
3262msgid "Target filename must be specified.\n" 3252msgid "Target filename must be specified.\n"
3263msgstr "" 3253msgstr ""
3264 3254
3265#: src/fs/gnunet-download.c:289 src/fs/gnunet-publish.c:868 3255#: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
3266#: src/fs/gnunet-search.c:268 src/fs/gnunet-unindex.c:137 3256#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
3267#, fuzzy, c-format 3257#, fuzzy, c-format
3268msgid "Could not initialize `%s' subsystem.\n" 3258msgid "Could not initialize `%s' subsystem.\n"
3269msgstr "初始化“%s”服务失败。\n" 3259msgstr "初始化“%s”服务失败。\n"
3270 3260
3271#: src/fs/gnunet-download.c:337 src/fs/gnunet-search.c:311 3261#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
3272msgid "set the desired LEVEL of receiver-anonymity" 3262msgid "set the desired LEVEL of receiver-anonymity"
3273msgstr "" 3263msgstr ""
3274 3264
3275#: src/fs/gnunet-download.c:342 3265#: src/fs/gnunet-download.c:344
3276msgid "delete incomplete downloads (when aborted with CTRL-C)" 3266msgid "delete incomplete downloads (when aborted with CTRL-C)"
3277msgstr "" 3267msgstr ""
3278 3268
3279#: src/fs/gnunet-download.c:347 src/fs/gnunet-search.c:317 3269#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
3280msgid "only search the local peer (no P2P network search)" 3270msgid "only search the local peer (no P2P network search)"
3281msgstr "" 3271msgstr ""
3282 3272
3283#: src/fs/gnunet-download.c:352 3273#: src/fs/gnunet-download.c:354
3284msgid "write the file to FILENAME" 3274msgid "write the file to FILENAME"
3285msgstr "" 3275msgstr ""
3286 3276
3287#: src/fs/gnunet-download.c:357 3277#: src/fs/gnunet-download.c:359
3288msgid "set the maximum number of parallel downloads that is allowed" 3278msgid "set the maximum number of parallel downloads that is allowed"
3289msgstr "" 3279msgstr ""
3290 3280
3291#: src/fs/gnunet-download.c:362 3281#: src/fs/gnunet-download.c:364
3292msgid "set the maximum number of parallel requests for blocks that is allowed" 3282msgid "set the maximum number of parallel requests for blocks that is allowed"
3293msgstr "" 3283msgstr ""
3294 3284
3295#: src/fs/gnunet-download.c:366 3285#: src/fs/gnunet-download.c:368
3296msgid "download a GNUnet directory recursively" 3286msgid "download a GNUnet directory recursively"
3297msgstr "" 3287msgstr ""
3298 3288
3299#: src/fs/gnunet-download.c:384 3289#: src/fs/gnunet-download.c:386
3300msgid "" 3290msgid ""
3301"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/" 3291"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
3302"chk/...)" 3292"chk/...)"
3303msgstr "" 3293msgstr ""
3304 3294
3305#: src/fs/gnunet-fs.c:117 3295#: src/fs/gnunet-fs.c:119
3306msgid "print a list of all indexed files" 3296msgid "print a list of all indexed files"
3307msgstr "" 3297msgstr ""
3308 3298
3309#: src/fs/gnunet-fs.c:128 3299#: src/fs/gnunet-fs.c:130
3310msgid "Special file-sharing operations" 3300msgid "Special file-sharing operations"
3311msgstr "" 3301msgstr ""
3312 3302
3313#: src/fs/gnunet-fs-profiler.c:209 3303#: src/fs/gnunet-fs-profiler.c:211
3314msgid "run the experiment with COUNT peers" 3304msgid "run the experiment with COUNT peers"
3315msgstr "" 3305msgstr ""
3316 3306
3317#: src/fs/gnunet-fs-profiler.c:215 3307#: src/fs/gnunet-fs-profiler.c:217
3318msgid "specifies name of a file with the HOSTS the testbed should use" 3308msgid "specifies name of a file with the HOSTS the testbed should use"
3319msgstr "" 3309msgstr ""
3320 3310
3321#: src/fs/gnunet-fs-profiler.c:221 3311#: src/fs/gnunet-fs-profiler.c:223
3322msgid "automatically terminate experiment after DELAY" 3312msgid "automatically terminate experiment after DELAY"
3323msgstr "" 3313msgstr ""
3324 3314
3325#: src/fs/gnunet-fs-profiler.c:231 3315#: src/fs/gnunet-fs-profiler.c:233
3326msgid "run a testbed to measure file-sharing performance" 3316msgid "run a testbed to measure file-sharing performance"
3327msgstr "" 3317msgstr ""
3328 3318
3329#: src/fs/gnunet-publish.c:217 src/fs/gnunet-publish.c:229 3319#: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
3330#, c-format 3320#, c-format
3331msgid "Publishing `%s' at %llu/%llu (%s remaining)\n" 3321msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
3332msgstr "" 3322msgstr ""
3333 3323
3334#: src/fs/gnunet-publish.c:237 3324#: src/fs/gnunet-publish.c:239
3335#, c-format 3325#, c-format
3336msgid "Error publishing: %s.\n" 3326msgid "Error publishing: %s.\n"
3337msgstr "" 3327msgstr ""
3338 3328
3339#: src/fs/gnunet-publish.c:244 3329#: src/fs/gnunet-publish.c:246
3340#, c-format 3330#, c-format
3341msgid "Publishing `%s' done.\n" 3331msgid "Publishing `%s' done.\n"
3342msgstr "" 3332msgstr ""
3343 3333
3344#: src/fs/gnunet-publish.c:249 3334#: src/fs/gnunet-publish.c:251
3345#, c-format 3335#, c-format
3346msgid "URI is `%s'.\n" 3336msgid "URI is `%s'.\n"
3347msgstr "" 3337msgstr ""
3348 3338
3349#: src/fs/gnunet-publish.c:257 3339#: src/fs/gnunet-publish.c:259
3350#, c-format 3340#, c-format
3351msgid "Namespace URI is `%s'.\n" 3341msgid "Namespace URI is `%s'.\n"
3352msgstr "" 3342msgstr ""
3353 3343
3354#: src/fs/gnunet-publish.c:273 3344#: src/fs/gnunet-publish.c:275
3355msgid "Starting cleanup after abort\n" 3345msgid "Starting cleanup after abort\n"
3356msgstr "" 3346msgstr ""
3357 3347
3358#: src/fs/gnunet-publish.c:280 3348#: src/fs/gnunet-publish.c:282
3359msgid "Cleanup after abort completed.\n" 3349msgid "Cleanup after abort completed.\n"
3360msgstr "" 3350msgstr ""
3361 3351
3362#: src/fs/gnunet-publish.c:286 3352#: src/fs/gnunet-publish.c:288
3363msgid "Cleanup after abort failed.\n" 3353msgid "Cleanup after abort failed.\n"
3364msgstr "" 3354msgstr ""
3365 3355
3366#: src/fs/gnunet-publish.c:428 3356#: src/fs/gnunet-publish.c:430
3367#, fuzzy, c-format 3357#, fuzzy, c-format
3368msgid "Meta data for file `%s' (%s)\n" 3358msgid "Meta data for file `%s' (%s)\n"
3369msgstr "打开日志文件“%s”失败:%s\n" 3359msgstr "打开日志文件“%s”失败:%s\n"
3370 3360
3371#: src/fs/gnunet-publish.c:433 3361#: src/fs/gnunet-publish.c:435
3372#, fuzzy, c-format 3362#, fuzzy, c-format
3373msgid "Keywords for file `%s' (%s)\n" 3363msgid "Keywords for file `%s' (%s)\n"
3374msgstr "无法解析“%s”(%s):%s\n" 3364msgstr "无法解析“%s”(%s):%s\n"
3375 3365
3376#: src/fs/gnunet-publish.c:587 3366#: src/fs/gnunet-publish.c:590
3377#, fuzzy 3367#, fuzzy
3378msgid "Could not publish\n" 3368msgid "Could not publish\n"
3379msgstr "无法解析“%s”(%s):%s\n" 3369msgstr "无法解析“%s”(%s):%s\n"
3380 3370
3381#: src/fs/gnunet-publish.c:612 3371#: src/fs/gnunet-publish.c:615
3382msgid "Could not start publishing.\n" 3372msgid "Could not start publishing.\n"
3383msgstr "" 3373msgstr ""
3384 3374
3385#: src/fs/gnunet-publish.c:646 3375#: src/fs/gnunet-publish.c:649
3386#, fuzzy, c-format 3376#, fuzzy, c-format
3387msgid "Scanning directory `%s'.\n" 3377msgid "Scanning directory `%s'.\n"
3388msgstr "解析配置文件“%s”失败\n" 3378msgstr "解析配置文件“%s”失败\n"
3389 3379
3390#: src/fs/gnunet-publish.c:650 3380#: src/fs/gnunet-publish.c:653
3391#, fuzzy, c-format 3381#, fuzzy, c-format
3392msgid "Scanning file `%s'.\n" 3382msgid "Scanning file `%s'.\n"
3393msgstr "未知的命令“%s”。\n" 3383msgstr "未知的命令“%s”。\n"
3394 3384
3395#: src/fs/gnunet-publish.c:656 3385#: src/fs/gnunet-publish.c:659
3396#, c-format 3386#, c-format
3397msgid "There was trouble processing file `%s', skipping it.\n" 3387msgid "There was trouble processing file `%s', skipping it.\n"
3398msgstr "" 3388msgstr ""
3399 3389
3400#: src/fs/gnunet-publish.c:663 3390#: src/fs/gnunet-publish.c:666
3401msgid "Preprocessing complete.\n" 3391msgid "Preprocessing complete.\n"
3402msgstr "" 3392msgstr ""
3403 3393
3404#: src/fs/gnunet-publish.c:668 3394#: src/fs/gnunet-publish.c:671
3405#, fuzzy, c-format 3395#, fuzzy, c-format
3406msgid "Extracting meta data from file `%s' complete.\n" 3396msgid "Extracting meta data from file `%s' complete.\n"
3407msgstr "打开日志文件“%s”失败:%s\n" 3397msgstr "打开日志文件“%s”失败:%s\n"
3408 3398
3409#: src/fs/gnunet-publish.c:675 3399#: src/fs/gnunet-publish.c:678
3410msgid "Meta data extraction has finished.\n" 3400msgid "Meta data extraction has finished.\n"
3411msgstr "" 3401msgstr ""
3412 3402
3413#: src/fs/gnunet-publish.c:684 3403#: src/fs/gnunet-publish.c:687
3414#, fuzzy 3404#, fuzzy
3415msgid "Internal error scanning directory.\n" 3405msgid "Internal error scanning directory.\n"
3416msgstr "未知错误。\n" 3406msgstr "未知错误。\n"
3417 3407
3418#: src/fs/gnunet-publish.c:712 3408#: src/fs/gnunet-publish.c:715
3419#, c-format 3409#, c-format
3420msgid "Selected pseudonym `%s' unknown\n" 3410msgid "Selected pseudonym `%s' unknown\n"
3421msgstr "" 3411msgstr ""
3422 3412
3423#: src/fs/gnunet-publish.c:745 3413#: src/fs/gnunet-publish.c:749
3424#, fuzzy, c-format 3414#, fuzzy, c-format
3425msgid "Failed to access `%s': %s\n" 3415msgid "Failed to access `%s': %s\n"
3426msgstr "打开日志文件“%s”失败:%s\n" 3416msgstr "打开日志文件“%s”失败:%s\n"
3427 3417
3428#: src/fs/gnunet-publish.c:759 3418#: src/fs/gnunet-publish.c:763
3429msgid "" 3419msgid ""
3430"Failed to start meta directory scanner. Is gnunet-helper-publish-fs " 3420"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
3431"installed?\n" 3421"installed?\n"
3432msgstr "" 3422msgstr ""
3433 3423
3434#: src/fs/gnunet-publish.c:815 3424#: src/fs/gnunet-publish.c:819
3435#, c-format 3425#, c-format
3436msgid "Cannot extract metadata from a URI!\n" 3426msgid "Cannot extract metadata from a URI!\n"
3437msgstr "" 3427msgstr ""
3438 3428
3439#: src/fs/gnunet-publish.c:822 3429#: src/fs/gnunet-publish.c:826
3440#, c-format 3430#, c-format
3441msgid "You must specify one and only one filename for insertion.\n" 3431msgid "You must specify one and only one filename for insertion.\n"
3442msgstr "" 3432msgstr ""
3443 3433
3444#: src/fs/gnunet-publish.c:828 3434#: src/fs/gnunet-publish.c:832
3445#, c-format 3435#, c-format
3446msgid "You must NOT specify an URI and a filename.\n" 3436msgid "You must NOT specify an URI and a filename.\n"
3447msgstr "" 3437msgstr ""
3448 3438
3449#: src/fs/gnunet-publish.c:836 src/vpn/gnunet-vpn.c:208 3439#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:210
3450#, c-format 3440#, c-format
3451msgid "Option `%s' is required when using option `%s'.\n" 3441msgid "Option `%s' is required when using option `%s'.\n"
3452msgstr "" 3442msgstr ""
3453 3443
3454#: src/fs/gnunet-publish.c:847 src/fs/gnunet-publish.c:855 3444#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
3455#: src/transport/gnunet-transport.c:1280 src/transport/gnunet-transport.c:1307 3445#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
3456#, c-format 3446#, c-format
3457msgid "Option `%s' makes no sense without option `%s'.\n" 3447msgid "Option `%s' makes no sense without option `%s'.\n"
3458msgstr "" 3448msgstr ""
3459 3449
3460#: src/fs/gnunet-publish.c:911 3450#: src/fs/gnunet-publish.c:916
3461msgid "" 3451msgid ""
3462"print list of extracted keywords that would be used, but do not perform " 3452"print list of extracted keywords that would be used, but do not perform "
3463"upload" 3453"upload"
3464msgstr "" 3454msgstr ""
3465 3455
3466#: src/fs/gnunet-publish.c:917 3456#: src/fs/gnunet-publish.c:922
3467msgid "" 3457msgid ""
3468"add an additional keyword for the top-level file or directory (this option " 3458"add an additional keyword for the top-level file or directory (this option "
3469"can be specified multiple times)" 3459"can be specified multiple times)"
3470msgstr "" 3460msgstr ""
3471 3461
3472#: src/fs/gnunet-publish.c:923 3462#: src/fs/gnunet-publish.c:928
3473msgid "set the meta-data for the given TYPE to the given VALUE" 3463msgid "set the meta-data for the given TYPE to the given VALUE"
3474msgstr "" 3464msgstr ""
3475 3465
3476#: src/fs/gnunet-publish.c:928 3466#: src/fs/gnunet-publish.c:932
3477msgid "" 3467msgid ""
3478"do not index, perform full insertion (stores entire file in encrypted form " 3468"do not index, perform full insertion (stores entire file in encrypted form "
3479"in GNUnet database)" 3469"in GNUnet database)"
3480msgstr "" 3470msgstr ""
3481 3471
3482#: src/fs/gnunet-publish.c:935 3472#: src/fs/gnunet-publish.c:938
3483msgid "" 3473msgid ""
3484"specify ID of an updated version to be published in the future (for " 3474"specify ID of an updated version to be published in the future (for "
3485"namespace insertions only)" 3475"namespace insertions only)"
3486msgstr "" 3476msgstr ""
3487 3477
3488#: src/fs/gnunet-publish.c:948 3478#: src/fs/gnunet-publish.c:949
3489msgid "publish the files under the pseudonym NAME (place file into namespace)" 3479msgid "publish the files under the pseudonym NAME (place file into namespace)"
3490msgstr "" 3480msgstr ""
3491 3481
3492#: src/fs/gnunet-publish.c:958 3482#: src/fs/gnunet-publish.c:959
3493msgid "" 3483msgid ""
3494"only simulate the process but do not do any actual publishing (useful to " 3484"only simulate the process but do not do any actual publishing (useful to "
3495"compute URIs)" 3485"compute URIs)"
3496msgstr "" 3486msgstr ""
3497 3487
3498#: src/fs/gnunet-publish.c:964 3488#: src/fs/gnunet-publish.c:965
3499msgid "" 3489msgid ""
3500"set the ID of this version of the publication (for namespace insertions only)" 3490"set the ID of this version of the publication (for namespace insertions only)"
3501msgstr "" 3491msgstr ""
@@ -3506,29 +3496,29 @@ msgid ""
3506"to the file with the respective URI)" 3496"to the file with the respective URI)"
3507msgstr "" 3497msgstr ""
3508 3498
3509#: src/fs/gnunet-publish.c:987 3499#: src/fs/gnunet-publish.c:989
3510msgid "Publish a file or directory on GNUnet" 3500msgid "Publish a file or directory on GNUnet"
3511msgstr "" 3501msgstr ""
3512 3502
3513#: src/fs/gnunet-search.c:125 3503#: src/fs/gnunet-search.c:127
3514#, c-format 3504#, c-format
3515msgid "Failed to write directory with search results to `%s'\n" 3505msgid "Failed to write directory with search results to `%s'\n"
3516msgstr "" 3506msgstr ""
3517 3507
3518#: src/fs/gnunet-search.c:202 3508#: src/fs/gnunet-search.c:207
3519#, fuzzy, c-format 3509#, fuzzy, c-format
3520msgid "Error searching: %s.\n" 3510msgid "Error searching: %s.\n"
3521msgstr "创建用户出错" 3511msgstr "创建用户出错"
3522 3512
3523#: src/fs/gnunet-search.c:258 3513#: src/fs/gnunet-search.c:263
3524msgid "Could not create keyword URI from arguments.\n" 3514msgid "Could not create keyword URI from arguments.\n"
3525msgstr "" 3515msgstr ""
3526 3516
3527#: src/fs/gnunet-search.c:282 3517#: src/fs/gnunet-search.c:287
3528msgid "Could not start searching.\n" 3518msgid "Could not start searching.\n"
3529msgstr "" 3519msgstr ""
3530 3520
3531#: src/fs/gnunet-search.c:323 3521#: src/fs/gnunet-search.c:324
3532msgid "write search results to file starting with PREFIX" 3522msgid "write search results to file starting with PREFIX"
3533msgstr "" 3523msgstr ""
3534 3524
@@ -3536,7 +3526,7 @@ msgstr ""
3536msgid "automatically terminate search after DELAY" 3526msgid "automatically terminate search after DELAY"
3537msgstr "" 3527msgstr ""
3538 3528
3539#: src/fs/gnunet-search.c:338 3529#: src/fs/gnunet-search.c:335
3540msgid "automatically terminate search after VALUE results are found" 3530msgid "automatically terminate search after VALUE results are found"
3541msgstr "" 3531msgstr ""
3542 3532
@@ -3544,3016 +3534,2820 @@ msgstr ""
3544msgid "Search GNUnet for files that were published on GNUnet" 3534msgid "Search GNUnet for files that were published on GNUnet"
3545msgstr "" 3535msgstr ""
3546 3536
3547#: src/fs/gnunet-service-fs.c:375 src/fs/gnunet-service-fs.c:880 3537#: src/fs/gnunet-service-fs.c:377 src/fs/gnunet-service-fs.c:882
3548msgid "# client searches active" 3538msgid "# client searches active"
3549msgstr "" 3539msgstr ""
3550 3540
3551#: src/fs/gnunet-service-fs.c:434 3541#: src/fs/gnunet-service-fs.c:436
3552msgid "# replies received for local clients" 3542msgid "# replies received for local clients"
3553msgstr "" 3543msgstr ""
3554 3544
3555#: src/fs/gnunet-service-fs.c:603 3545#: src/fs/gnunet-service-fs.c:605
3556msgid "# running average P2P latency (ms)" 3546msgid "# running average P2P latency (ms)"
3557msgstr "" 3547msgstr ""
3558 3548
3559#: src/fs/gnunet-service-fs.c:655 src/fs/gnunet-service-fs_cp.c:562 3549#: src/fs/gnunet-service-fs.c:657 src/fs/gnunet-service-fs_cp.c:564
3560msgid "# Loopback routes suppressed" 3550msgid "# Loopback routes suppressed"
3561msgstr "" 3551msgstr ""
3562 3552
3563#: src/fs/gnunet-service-fs.c:834 3553#: src/fs/gnunet-service-fs.c:836
3564msgid "# client searches received" 3554msgid "# client searches received"
3565msgstr "" 3555msgstr ""
3566 3556
3567#: src/fs/gnunet-service-fs.c:873 3557#: src/fs/gnunet-service-fs.c:875
3568msgid "# client searches updated (merged content seen list)" 3558msgid "# client searches updated (merged content seen list)"
3569msgstr "" 3559msgstr ""
3570 3560
3571#: src/fs/gnunet-service-fs.c:1044 3561#: src/fs/gnunet-service-fs.c:1040
3572#, c-format 3562#, c-format
3573msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n" 3563msgid "Hash mismatch trying to index file `%s' which does not have hash `%s'\n"
3574msgstr "" 3564msgstr ""
3575 3565
3576#: src/fs/gnunet-service-fs.c:1284 3566#: src/fs/gnunet-service-fs.c:1280
3577#, fuzzy 3567#, fuzzy
3578msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n" 3568msgid "FS service is lacking HOSTKEY configuration setting. Exiting.\n"
3579msgstr "立即保存配置?" 3569msgstr "立即保存配置?"
3580 3570
3581#: src/fs/gnunet-service-fs.c:1309 src/hostlist/gnunet-daemon-hostlist.c:353 3571#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
3582#: src/topology/gnunet-daemon-topology.c:1200 3572#: src/topology/gnunet-daemon-topology.c:1202
3583#, fuzzy, c-format 3573#, fuzzy, c-format
3584msgid "Failed to connect to `%s' service.\n" 3574msgid "Failed to connect to `%s' service.\n"
3585msgstr "初始化“%s”服务失败。\n" 3575msgstr "初始化“%s”服务失败。\n"
3586 3576
3587#: src/fs/gnunet-service-fs_cadet_client.c:368 3577#: src/fs/gnunet-service-fs_cadet_client.c:370
3588msgid "# replies received via cadet" 3578msgid "# replies received via cadet"
3589msgstr "" 3579msgstr ""
3590 3580
3591#: src/fs/gnunet-service-fs_cadet_client.c:382 3581#: src/fs/gnunet-service-fs_cadet_client.c:384
3592msgid "# replies received via cadet dropped" 3582msgid "# replies received via cadet dropped"
3593msgstr "" 3583msgstr ""
3594 3584
3595#: src/fs/gnunet-service-fs_cadet_server.c:263 3585#: src/fs/gnunet-service-fs_cadet_server.c:265
3596msgid "# queries received via CADET not answered" 3586msgid "# queries received via CADET not answered"
3597msgstr "" 3587msgstr ""
3598 3588
3599#: src/fs/gnunet-service-fs_cadet_server.c:318 3589#: src/fs/gnunet-service-fs_cadet_server.c:320
3600msgid "# Blocks transferred via cadet" 3590msgid "# Blocks transferred via cadet"
3601msgstr "" 3591msgstr ""
3602 3592
3603#: src/fs/gnunet-service-fs_cadet_server.c:344 3593#: src/fs/gnunet-service-fs_cadet_server.c:346
3604msgid "# queries received via cadet" 3594msgid "# queries received via cadet"
3605msgstr "" 3595msgstr ""
3606 3596
3607#: src/fs/gnunet-service-fs_cadet_server.c:386 3597#: src/fs/gnunet-service-fs_cadet_server.c:388
3608#, fuzzy 3598#, fuzzy
3609msgid "# cadet client connections rejected" 3599msgid "# cadet client connections rejected"
3610msgstr "" 3600msgstr ""
3611"\n" 3601"\n"
3612"按任意键继续\n" 3602"按任意键继续\n"
3613 3603
3614#: src/fs/gnunet-service-fs_cadet_server.c:393 3604#: src/fs/gnunet-service-fs_cadet_server.c:395
3615#: src/fs/gnunet-service-fs_cadet_server.c:433 3605#: src/fs/gnunet-service-fs_cadet_server.c:435
3616#, fuzzy 3606#, fuzzy
3617msgid "# cadet connections active" 3607msgid "# cadet connections active"
3618msgstr "" 3608msgstr ""
3619"\n" 3609"\n"
3620"按任意键继续\n" 3610"按任意键继续\n"
3621 3611
3622#: src/fs/gnunet-service-fs_cp.c:684 3612#: src/fs/gnunet-service-fs_cp.c:685
3623msgid "# migration stop messages received" 3613msgid "# migration stop messages received"
3624msgstr "" 3614msgstr ""
3625 3615
3626#: src/fs/gnunet-service-fs_cp.c:688 3616#: src/fs/gnunet-service-fs_cp.c:689
3627#, c-format 3617#, c-format
3628msgid "Migration of content to peer `%s' blocked for %s\n" 3618msgid "Migration of content to peer `%s' blocked for %s\n"
3629msgstr "" 3619msgstr ""
3630 3620
3631#: src/fs/gnunet-service-fs_cp.c:721 src/fs/gnunet-service-fs_cp.c:1343 3621#: src/fs/gnunet-service-fs_cp.c:722 src/fs/gnunet-service-fs_cp.c:1344
3632msgid "# P2P searches active" 3622msgid "# P2P searches active"
3633msgstr "" 3623msgstr ""
3634 3624
3635#: src/fs/gnunet-service-fs_cp.c:816 3625#: src/fs/gnunet-service-fs_cp.c:817
3636msgid "# artificial delays introduced (ms)" 3626msgid "# artificial delays introduced (ms)"
3637msgstr "" 3627msgstr ""
3638 3628
3639#: src/fs/gnunet-service-fs_cp.c:873 3629#: src/fs/gnunet-service-fs_cp.c:874
3640msgid "# replies dropped due to type mismatch" 3630msgid "# replies dropped due to type mismatch"
3641msgstr "" 3631msgstr ""
3642 3632
3643#: src/fs/gnunet-service-fs_cp.c:881 3633#: src/fs/gnunet-service-fs_cp.c:882
3644msgid "# replies received for other peers" 3634msgid "# replies received for other peers"
3645msgstr "" 3635msgstr ""
3646 3636
3647#: src/fs/gnunet-service-fs_cp.c:895 3637#: src/fs/gnunet-service-fs_cp.c:896
3648msgid "# replies dropped due to insufficient cover traffic" 3638msgid "# replies dropped due to insufficient cover traffic"
3649msgstr "" 3639msgstr ""
3650 3640
3651#: src/fs/gnunet-service-fs_cp.c:942 3641#: src/fs/gnunet-service-fs_cp.c:943
3652msgid "# P2P searches destroyed due to ultimate reply" 3642msgid "# P2P searches destroyed due to ultimate reply"
3653msgstr "" 3643msgstr ""
3654 3644
3655#: src/fs/gnunet-service-fs_cp.c:1013 3645#: src/fs/gnunet-service-fs_cp.c:1014
3656msgid "# requests done for free (low load)" 3646msgid "# requests done for free (low load)"
3657msgstr "" 3647msgstr ""
3658 3648
3659#: src/fs/gnunet-service-fs_cp.c:1038 3649#: src/fs/gnunet-service-fs_cp.c:1039
3660msgid "# request dropped, priority insufficient" 3650msgid "# request dropped, priority insufficient"
3661msgstr "" 3651msgstr ""
3662 3652
3663#: src/fs/gnunet-service-fs_cp.c:1048 3653#: src/fs/gnunet-service-fs_cp.c:1049
3664msgid "# requests done for a price (normal load)" 3654msgid "# requests done for a price (normal load)"
3665msgstr "" 3655msgstr ""
3666 3656
3667#: src/fs/gnunet-service-fs_cp.c:1146 3657#: src/fs/gnunet-service-fs_cp.c:1147
3668msgid "# requests dropped due to higher-TTL request" 3658msgid "# requests dropped due to higher-TTL request"
3669msgstr "" 3659msgstr ""
3670 3660
3671#: src/fs/gnunet-service-fs_cp.c:1203 3661#: src/fs/gnunet-service-fs_cp.c:1204
3672msgid "# GET requests received (from other peers)" 3662msgid "# GET requests received (from other peers)"
3673msgstr "" 3663msgstr ""
3674 3664
3675#: src/fs/gnunet-service-fs_cp.c:1226 3665#: src/fs/gnunet-service-fs_cp.c:1227
3676msgid "# requests dropped due to missing reverse route" 3666msgid "# requests dropped due to missing reverse route"
3677msgstr "" 3667msgstr ""
3678 3668
3679#: src/fs/gnunet-service-fs_cp.c:1239 3669#: src/fs/gnunet-service-fs_cp.c:1240
3680msgid "# requests dropped due to full reply queue" 3670msgid "# requests dropped due to full reply queue"
3681msgstr "" 3671msgstr ""
3682 3672
3683#: src/fs/gnunet-service-fs_cp.c:1295 3673#: src/fs/gnunet-service-fs_cp.c:1296
3684msgid "# requests dropped due TTL underflow" 3674msgid "# requests dropped due TTL underflow"
3685msgstr "" 3675msgstr ""
3686 3676
3687#: src/fs/gnunet-service-fs_cp.c:1339 3677#: src/fs/gnunet-service-fs_cp.c:1340
3688msgid "# P2P query messages received and processed" 3678msgid "# P2P query messages received and processed"
3689msgstr "" 3679msgstr ""
3690 3680
3691#: src/fs/gnunet-service-fs_cp.c:1706 3681#: src/fs/gnunet-service-fs_cp.c:1707
3692msgid "# migration stop messages sent" 3682msgid "# migration stop messages sent"
3693msgstr "" 3683msgstr ""
3694 3684
3695#: src/fs/gnunet-service-fs_indexing.c:132 3685#: src/fs/gnunet-service-fs_indexing.c:134
3696#: src/fs/gnunet-service-fs_indexing.c:193 3686#: src/fs/gnunet-service-fs_indexing.c:195
3697#, fuzzy, c-format 3687#, fuzzy, c-format
3698msgid "Could not open `%s'.\n" 3688msgid "Could not open `%s'.\n"
3699msgstr "无法解析“%s”(%s):%s\n" 3689msgstr "无法解析“%s”(%s):%s\n"
3700 3690
3701#: src/fs/gnunet-service-fs_indexing.c:149 3691#: src/fs/gnunet-service-fs_indexing.c:151
3702#, fuzzy, c-format 3692#, fuzzy, c-format
3703msgid "Error writing `%s'.\n" 3693msgid "Error writing `%s'.\n"
3704msgstr "创建用户出错" 3694msgstr "创建用户出错"
3705 3695
3706#: src/fs/gnunet-service-fs_indexing.c:251 3696#: src/fs/gnunet-service-fs_indexing.c:253
3707#, fuzzy, c-format 3697#, fuzzy, c-format
3708msgid "Failed to delete bogus block: %s\n" 3698msgid "Failed to delete bogus block: %s\n"
3709msgstr "打开日志文件“%s”失败:%s\n" 3699msgstr "打开日志文件“%s”失败:%s\n"
3710 3700
3711#: src/fs/gnunet-service-fs_indexing.c:329 3701#: src/fs/gnunet-service-fs_indexing.c:331
3712msgid "# index blocks removed: original file inaccessible" 3702msgid "# index blocks removed: original file inaccessible"
3713msgstr "" 3703msgstr ""
3714 3704
3715#: src/fs/gnunet-service-fs_indexing.c:355 3705#: src/fs/gnunet-service-fs_indexing.c:357
3716#, fuzzy, c-format 3706#, fuzzy, c-format
3717msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n" 3707msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n"
3718msgstr "无法解析“%s”(%s):%s\n" 3708msgstr "无法解析“%s”(%s):%s\n"
3719 3709
3720#: src/fs/gnunet-service-fs_indexing.c:359 3710#: src/fs/gnunet-service-fs_indexing.c:361
3721msgid "not indexed" 3711msgid "not indexed"
3722msgstr "" 3712msgstr ""
3723 3713
3724#: src/fs/gnunet-service-fs_indexing.c:392 3714#: src/fs/gnunet-service-fs_indexing.c:394
3725#, c-format 3715#, c-format
3726msgid "Indexed file `%s' changed at offset %llu\n" 3716msgid "Indexed file `%s' changed at offset %llu\n"
3727msgstr "" 3717msgstr ""
3728 3718
3729#: src/fs/gnunet-service-fs_indexing.c:516 3719#: src/fs/gnunet-service-fs_indexing.c:518
3730#, c-format 3720#, c-format
3731msgid "" 3721msgid ""
3732"Index request received for file `%s' is already indexed as `%s'. Permitting " 3722"Index request received for file `%s' is already indexed as `%s'. Permitting "
3733"anyway.\n" 3723"anyway.\n"
3734msgstr "" 3724msgstr ""
3735 3725
3736#: src/fs/gnunet-service-fs_pe.c:263 3726#: src/fs/gnunet-service-fs_pe.c:265
3737msgid "# average retransmission delay (ms)" 3727msgid "# average retransmission delay (ms)"
3738msgstr "" 3728msgstr ""
3739 3729
3740#: src/fs/gnunet-service-fs_pe.c:425 3730#: src/fs/gnunet-service-fs_pe.c:427
3741msgid "# delay heap timeout (ms)" 3731msgid "# delay heap timeout (ms)"
3742msgstr "" 3732msgstr ""
3743 3733
3744#: src/fs/gnunet-service-fs_pe.c:436 3734#: src/fs/gnunet-service-fs_pe.c:438
3745msgid "# query plans executed" 3735msgid "# query plans executed"
3746msgstr "" 3736msgstr ""
3747 3737
3748#: src/fs/gnunet-service-fs_pe.c:464 3738#: src/fs/gnunet-service-fs_pe.c:466
3749msgid "# query messages sent to other peers" 3739msgid "# query messages sent to other peers"
3750msgstr "" 3740msgstr ""
3751 3741
3752#: src/fs/gnunet-service-fs_pe.c:534 3742#: src/fs/gnunet-service-fs_pe.c:536
3753msgid "# requests merged" 3743msgid "# requests merged"
3754msgstr "" 3744msgstr ""
3755 3745
3756#: src/fs/gnunet-service-fs_pe.c:544 3746#: src/fs/gnunet-service-fs_pe.c:546
3757msgid "# requests refreshed" 3747msgid "# requests refreshed"
3758msgstr "" 3748msgstr ""
3759 3749
3760#: src/fs/gnunet-service-fs_pe.c:604 src/fs/gnunet-service-fs_pe.c:707 3750#: src/fs/gnunet-service-fs_pe.c:606 src/fs/gnunet-service-fs_pe.c:709
3761#: src/fs/gnunet-service-fs_pe.c:786 3751#: src/fs/gnunet-service-fs_pe.c:788
3762msgid "# query plan entries" 3752msgid "# query plan entries"
3763msgstr "" 3753msgstr ""
3764 3754
3765#: src/fs/gnunet-service-fs_pr.c:328 3755#: src/fs/gnunet-service-fs_pr.c:330
3766msgid "# Pending requests created" 3756msgid "# Pending requests created"
3767msgstr "" 3757msgstr ""
3768 3758
3769#: src/fs/gnunet-service-fs_pr.c:428 src/fs/gnunet-service-fs_pr.c:675 3759#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
3770msgid "# Pending requests active" 3760msgid "# Pending requests active"
3771msgstr "" 3761msgstr ""
3772 3762
3773#: src/fs/gnunet-service-fs_pr.c:856 3763#: src/fs/gnunet-service-fs_pr.c:858
3774msgid "# replies received and matched" 3764msgid "# replies received and matched"
3775msgstr "" 3765msgstr ""
3776 3766
3777#: src/fs/gnunet-service-fs_pr.c:892 3767#: src/fs/gnunet-service-fs_pr.c:894
3778msgid "# duplicate replies discarded (bloomfilter)" 3768msgid "# duplicate replies discarded (bloomfilter)"
3779msgstr "" 3769msgstr ""
3780 3770
3781#: src/fs/gnunet-service-fs_pr.c:901 3771#: src/fs/gnunet-service-fs_pr.c:903
3782msgid "# irrelevant replies discarded" 3772msgid "# irrelevant replies discarded"
3783msgstr "" 3773msgstr ""
3784 3774
3785#: src/fs/gnunet-service-fs_pr.c:916 3775#: src/fs/gnunet-service-fs_pr.c:918
3786#, c-format 3776#, c-format
3787msgid "Unsupported block type %u\n" 3777msgid "Unsupported block type %u\n"
3788msgstr "" 3778msgstr ""
3789 3779
3790#: src/fs/gnunet-service-fs_pr.c:933 3780#: src/fs/gnunet-service-fs_pr.c:935
3791msgid "# results found locally" 3781msgid "# results found locally"
3792msgstr "" 3782msgstr ""
3793 3783
3794#: src/fs/gnunet-service-fs_pr.c:1063 3784#: src/fs/gnunet-service-fs_pr.c:1065
3795msgid "# Datastore `PUT' failures" 3785msgid "# Datastore `PUT' failures"
3796msgstr "" 3786msgstr ""
3797 3787
3798#: src/fs/gnunet-service-fs_pr.c:1091 3788#: src/fs/gnunet-service-fs_pr.c:1093
3799msgid "# storage requests dropped due to high load" 3789msgid "# storage requests dropped due to high load"
3800msgstr "" 3790msgstr ""
3801 3791
3802#: src/fs/gnunet-service-fs_pr.c:1129 3792#: src/fs/gnunet-service-fs_pr.c:1131
3803msgid "# Replies received from DHT" 3793msgid "# Replies received from DHT"
3804msgstr "" 3794msgstr ""
3805 3795
3806#: src/fs/gnunet-service-fs_pr.c:1260 3796#: src/fs/gnunet-service-fs_pr.c:1262
3807msgid "# Replies received from CADET" 3797msgid "# Replies received from CADET"
3808msgstr "" 3798msgstr ""
3809 3799
3810#: src/fs/gnunet-service-fs_pr.c:1312 3800#: src/fs/gnunet-service-fs_pr.c:1314
3811#, c-format 3801#, c-format
3812msgid "Datastore lookup already took %s!\n" 3802msgid "Datastore lookup already took %s!\n"
3813msgstr "" 3803msgstr ""
3814 3804
3815#: src/fs/gnunet-service-fs_pr.c:1333 3805#: src/fs/gnunet-service-fs_pr.c:1335
3816#, c-format 3806#, c-format
3817msgid "On-demand lookup already took %s!\n" 3807msgid "On-demand lookup already took %s!\n"
3818msgstr "" 3808msgstr ""
3819 3809
3820#: src/fs/gnunet-service-fs_pr.c:1393 3810#: src/fs/gnunet-service-fs_pr.c:1395
3821msgid "# requested DBLOCK or IBLOCK not found" 3811msgid "# requested DBLOCK or IBLOCK not found"
3822msgstr "" 3812msgstr ""
3823 3813
3824#: src/fs/gnunet-service-fs_pr.c:1452 3814#: src/fs/gnunet-service-fs_pr.c:1454
3825msgid "# Datastore lookups concluded (error queueing)" 3815msgid "# Datastore lookups concluded (error queueing)"
3826msgstr "" 3816msgstr ""
3827 3817
3828#: src/fs/gnunet-service-fs_pr.c:1507 3818#: src/fs/gnunet-service-fs_pr.c:1509
3829msgid "# Datastore lookups concluded (no results)" 3819msgid "# Datastore lookups concluded (no results)"
3830msgstr "" 3820msgstr ""
3831 3821
3832#: src/fs/gnunet-service-fs_pr.c:1522 3822#: src/fs/gnunet-service-fs_pr.c:1524
3833msgid "# Datastore lookups concluded (seen all)" 3823msgid "# Datastore lookups concluded (seen all)"
3834msgstr "" 3824msgstr ""
3835 3825
3836#: src/fs/gnunet-service-fs_pr.c:1546 3826#: src/fs/gnunet-service-fs_pr.c:1548
3837msgid "# Datastore lookups aborted (more than MAX_RESULTS)" 3827msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
3838msgstr "" 3828msgstr ""
3839 3829
3840#: src/fs/gnunet-service-fs_pr.c:1560 3830#: src/fs/gnunet-service-fs_pr.c:1562
3841msgid "# on-demand blocks matched requests" 3831msgid "# on-demand blocks matched requests"
3842msgstr "" 3832msgstr ""
3843 3833
3844#: src/fs/gnunet-service-fs_pr.c:1581 3834#: src/fs/gnunet-service-fs_pr.c:1583
3845msgid "# on-demand lookups performed successfully" 3835msgid "# on-demand lookups performed successfully"
3846msgstr "" 3836msgstr ""
3847 3837
3848#: src/fs/gnunet-service-fs_pr.c:1586 3838#: src/fs/gnunet-service-fs_pr.c:1588
3849msgid "# on-demand lookups failed" 3839msgid "# on-demand lookups failed"
3850msgstr "" 3840msgstr ""
3851 3841
3852#: src/fs/gnunet-service-fs_pr.c:1624 3842#: src/fs/gnunet-service-fs_pr.c:1626
3853msgid "# Datastore lookups concluded (found last result)" 3843msgid "# Datastore lookups concluded (found last result)"
3854msgstr "" 3844msgstr ""
3855 3845
3856#: src/fs/gnunet-service-fs_pr.c:1637 3846#: src/fs/gnunet-service-fs_pr.c:1639
3857msgid "# Datastore lookups concluded (load too high)" 3847msgid "# Datastore lookups concluded (load too high)"
3858msgstr "" 3848msgstr ""
3859 3849
3860#: src/fs/gnunet-service-fs_pr.c:1691 3850#: src/fs/gnunet-service-fs_pr.c:1693
3861msgid "# Datastore lookups initiated" 3851msgid "# Datastore lookups initiated"
3862msgstr "" 3852msgstr ""
3863 3853
3864#: src/fs/gnunet-service-fs_pr.c:1747 3854#: src/fs/gnunet-service-fs_pr.c:1749
3865msgid "# GAP PUT messages received" 3855msgid "# GAP PUT messages received"
3866msgstr "" 3856msgstr ""
3867 3857
3868#: src/fs/gnunet-service-fs_push.c:644 3858#: src/fs/gnunet-service-fs_push.c:646
3869msgid "time required, content pushing disabled" 3859msgid "time required, content pushing disabled"
3870msgstr "" 3860msgstr ""
3871 3861
3872#: src/fs/gnunet-unindex.c:87 3862#: src/fs/gnunet-unindex.c:89
3873#, c-format 3863#, c-format
3874msgid "Unindexing at %llu/%llu (%s remaining)\n" 3864msgid "Unindexing at %llu/%llu (%s remaining)\n"
3875msgstr "" 3865msgstr ""
3876 3866
3877#: src/fs/gnunet-unindex.c:93 3867#: src/fs/gnunet-unindex.c:95
3878#, c-format 3868#, c-format
3879msgid "Error unindexing: %s.\n" 3869msgid "Error unindexing: %s.\n"
3880msgstr "" 3870msgstr ""
3881 3871
3882#: src/fs/gnunet-unindex.c:98 3872#: src/fs/gnunet-unindex.c:100
3883msgid "Unindexing done.\n" 3873msgid "Unindexing done.\n"
3884msgstr "" 3874msgstr ""
3885 3875
3886#: src/fs/gnunet-unindex.c:127 3876#: src/fs/gnunet-unindex.c:129
3887#, c-format 3877#, c-format
3888msgid "You must specify one and only one filename for unindexing.\n" 3878msgid "You must specify one and only one filename for unindexing.\n"
3889msgstr "" 3879msgstr ""
3890 3880
3891#: src/fs/gnunet-unindex.c:144 3881#: src/fs/gnunet-unindex.c:146
3892msgid "Could not start unindex operation.\n" 3882msgid "Could not start unindex operation.\n"
3893msgstr "" 3883msgstr ""
3894 3884
3895#: src/fs/gnunet-unindex.c:176 3885#: src/fs/gnunet-unindex.c:178
3896msgid "Unindex a file that was previously indexed with gnunet-publish." 3886msgid "Unindex a file that was previously indexed with gnunet-publish."
3897msgstr "" 3887msgstr ""
3898 3888
3899#: src/gns/gns_tld_api.c:274 3889#: src/gns/gns_tld_api.c:348
3900msgid "Expected a base32-encoded public zone key\n" 3890msgid "Expected a base32-encoded public zone key\n"
3901msgstr "" 3891msgstr ""
3902 3892
3903#: src/gns/gnunet-bcd.c:125 3893#: src/gns/gnunet-bcd.c:127
3904#, c-format 3894#, c-format
3905msgid "Refusing `%s' request to HTTP server\n" 3895msgid "Refusing `%s' request to HTTP server\n"
3906msgstr "" 3896msgstr ""
3907 3897
3908#: src/gns/gnunet-bcd.c:355 3898#: src/gns/gnunet-bcd.c:357
3909#, c-format 3899#, c-format
3910msgid "Invalid port number %u. Exiting.\n" 3900msgid "Invalid port number %u. Exiting.\n"
3911msgstr "" 3901msgstr ""
3912 3902
3913#: src/gns/gnunet-bcd.c:360 3903#: src/gns/gnunet-bcd.c:362
3914#, fuzzy, c-format 3904#, fuzzy, c-format
3915msgid "Businesscard HTTP server starts on %u\n" 3905msgid "Businesscard HTTP server starts on %u\n"
3916msgstr "初始化“%s”服务失败。\n" 3906msgstr "初始化“%s”服务失败。\n"
3917 3907
3918#: src/gns/gnunet-bcd.c:374 3908#: src/gns/gnunet-bcd.c:376
3919#, fuzzy, c-format 3909#, fuzzy, c-format
3920msgid "Could not start businesscard HTTP server on port %u\n" 3910msgid "Could not start businesscard HTTP server on port %u\n"
3921msgstr "初始化“%s”服务失败。\n" 3911msgstr "初始化“%s”服务失败。\n"
3922 3912
3923#: src/gns/gnunet-bcd.c:521 3913#: src/gns/gnunet-bcd.c:523
3924msgid "Run HTTP serve on port PORT (default is 8888)" 3914msgid "Run HTTP serve on port PORT (default is 8888)"
3925msgstr "" 3915msgstr ""
3926 3916
3927#: src/gns/gnunet-bcd.c:534 3917#: src/gns/gnunet-bcd.c:536
3928msgid "GNUnet HTTP server to create business cards" 3918msgid "GNUnet HTTP server to create business cards"
3929msgstr "" 3919msgstr ""
3930 3920
3931#: src/gns/gnunet-dns2gns.c:201 3921#: src/gns/gnunet-dns2gns.c:203
3932#, fuzzy 3922#, fuzzy
3933msgid "Failed to pack DNS response into UDP packet!\n" 3923msgid "Failed to pack DNS response into UDP packet!\n"
3934msgstr "打开日志文件“%s”失败:%s\n" 3924msgstr "打开日志文件“%s”失败:%s\n"
3935 3925
3936#: src/gns/gnunet-dns2gns.c:403 3926#: src/gns/gnunet-dns2gns.c:405
3937#, c-format 3927#, c-format
3938msgid "Cannot parse DNS request from %s\n" 3928msgid "Cannot parse DNS request from %s\n"
3939msgstr "" 3929msgstr ""
3940 3930
3941#: src/gns/gnunet-dns2gns.c:419 3931#: src/gns/gnunet-dns2gns.c:421
3942#, c-format 3932#, c-format
3943msgid "Received malformed DNS request from %s\n" 3933msgid "Received malformed DNS request from %s\n"
3944msgstr "" 3934msgstr ""
3945 3935
3946#: src/gns/gnunet-dns2gns.c:427 3936#: src/gns/gnunet-dns2gns.c:429
3947#, c-format 3937#, c-format
3948msgid "Received unsupported DNS request from %s\n" 3938msgid "Received unsupported DNS request from %s\n"
3949msgstr "" 3939msgstr ""
3950 3940
3951#: src/gns/gnunet-dns2gns.c:586 3941#: src/gns/gnunet-dns2gns.c:588
3952msgid "No DNS server specified!\n" 3942msgid "No DNS server specified!\n"
3953msgstr "" 3943msgstr ""
3954 3944
3955#: src/gns/gnunet-dns2gns.c:686 3945#: src/gns/gnunet-dns2gns.c:688
3956msgid "IP of recursive DNS resolver to use (required)" 3946msgid "IP of recursive DNS resolver to use (required)"
3957msgstr "" 3947msgstr ""
3958 3948
3959#: src/gns/gnunet-dns2gns.c:691 3949#: src/gns/gnunet-dns2gns.c:693
3960msgid "UDP port to listen on for inbound DNS requests; default: 2853" 3950msgid "UDP port to listen on for inbound DNS requests; default: 2853"
3961msgstr "" 3951msgstr ""
3962 3952
3963#: src/gns/gnunet-dns2gns.c:708 3953#: src/gns/gnunet-dns2gns.c:710
3964msgid "GNUnet DNS-to-GNS proxy (a DNS server)" 3954msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
3965msgstr "" 3955msgstr ""
3966 3956
3967#: src/gns/gnunet-gns-benchmark.c:580 3957#: src/gns/gnunet-gns-benchmark.c:582
3968msgid "how long to wait between queries" 3958msgid "how long to wait between queries"
3969msgstr "" 3959msgstr ""
3970 3960
3971#: src/gns/gnunet-gns-benchmark.c:585 3961#: src/gns/gnunet-gns-benchmark.c:587
3972msgid "how long to wait for an answer" 3962msgid "how long to wait for an answer"
3973msgstr "" 3963msgstr ""
3974 3964
3975#: src/gns/gnunet-gns-benchmark.c:589 3965#: src/gns/gnunet-gns-benchmark.c:591
3976msgid "look for GNS2DNS records instead of ANY" 3966msgid "look for GNS2DNS records instead of ANY"
3977msgstr "" 3967msgstr ""
3978 3968
3979#: src/gns/gnunet-gns.c:197 3969#: src/gns/gnunet-gns.c:199
3980#, c-format 3970#, c-format
3981msgid "Invalid typename specified, assuming `ANY'\n" 3971msgid "Invalid typename specified, assuming `ANY'\n"
3982msgstr "" 3972msgstr ""
3983 3973
3984#: src/gns/gnunet-gns.c:231 3974#: src/gns/gnunet-gns.c:233
3985msgid "Lookup a record for the given name" 3975msgid "Lookup a record for the given name"
3986msgstr "" 3976msgstr ""
3987 3977
3988#: src/gns/gnunet-gns.c:236 3978#: src/gns/gnunet-gns.c:238
3989msgid "Specify the type of the record to lookup" 3979msgid "Specify the type of the record to lookup"
3990msgstr "" 3980msgstr ""
3991 3981
3992#: src/gns/gnunet-gns.c:240 3982#: src/gns/gnunet-gns.c:242
3993msgid "No unneeded output" 3983msgid "No unneeded output"
3994msgstr "" 3984msgstr ""
3995 3985
3996#: src/gns/gnunet-gns.c:256 3986#: src/gns/gnunet-gns.c:258
3997#, fuzzy 3987#, fuzzy
3998msgid "GNUnet GNS resolver tool" 3988msgid "GNUnet GNS resolver tool"
3999msgstr "GNUnet 错误日志" 3989msgstr "GNUnet 错误日志"
4000 3990
4001#: src/gns/gnunet-gns-helper-service-w32.c:600 3991#: src/gns/gnunet-gns-helper-service-w32.c:602
4002msgid "Not ready to process requests, lacking ego data\n" 3992msgid "Not ready to process requests, lacking ego data\n"
4003msgstr "" 3993msgstr ""
4004 3994
4005#: src/gns/gnunet-gns-helper-service-w32.c:699 3995#: src/gns/gnunet-gns-helper-service-w32.c:701
4006msgid "" 3996msgid ""
4007"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-" 3997"Ego for `gns-master' not found, cannot perform lookup. Did you run gnunet-"
4008"gns-import.sh?\n" 3998"gns-import.sh?\n"
4009msgstr "" 3999msgstr ""
4010 4000
4011#: src/gns/gnunet-gns-helper-service-w32.c:737 4001#: src/gns/gnunet-gns-helper-service-w32.c:739
4012#, fuzzy, c-format 4002#, fuzzy, c-format
4013msgid "Failed to connect to identity service\n" 4003msgid "Failed to connect to identity service\n"
4014msgstr "初始化“%s”服务失败。\n" 4004msgstr "初始化“%s”服务失败。\n"
4015 4005
4016#: src/gns/gnunet-gns-import.c:450 4006#: src/gns/gnunet-gns-import.c:452
4017msgid "This program will import some GNS authorities into your GNS namestore." 4007msgid "This program will import some GNS authorities into your GNS namestore."
4018msgstr "" 4008msgstr ""
4019 4009
4020#: src/gns/gnunet-gns-proxy.c:110 4010#: src/gns/gnunet-gns-proxy.c:118
4021#: src/hostlist/gnunet-daemon-hostlist_client.c:533 4011#: src/hostlist/gnunet-daemon-hostlist_client.c:535
4022#: src/hostlist/gnunet-daemon-hostlist_client.c:751 4012#: src/hostlist/gnunet-daemon-hostlist_client.c:753
4023#: src/hostlist/gnunet-daemon-hostlist_client.c:757 4013#: src/hostlist/gnunet-daemon-hostlist_client.c:759
4024#: src/hostlist/gnunet-daemon-hostlist_client.c:809 4014#: src/hostlist/gnunet-daemon-hostlist_client.c:811
4025#: src/hostlist/gnunet-daemon-hostlist_client.c:818 4015#: src/hostlist/gnunet-daemon-hostlist_client.c:820
4026#: src/hostlist/gnunet-daemon-hostlist_client.c:929 4016#: src/hostlist/gnunet-daemon-hostlist_client.c:931
4027#: src/hostlist/gnunet-daemon-hostlist_client.c:1024 4017#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
4028#: src/hostlist/gnunet-daemon-hostlist_client.c:1029 4018#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
4029#: src/transport/plugin_transport_http_client.c:596 4019#: src/transport/plugin_transport_http_client.c:598
4030#: src/transport/plugin_transport_http_client.c:614 4020#: src/transport/plugin_transport_http_client.c:616
4031#, c-format 4021#, c-format
4032msgid "%s failed at %s:%d: `%s'\n" 4022msgid "%s failed at %s:%d: `%s'\n"
4033msgstr "" 4023msgstr ""
4034 4024
4035#: src/gns/gnunet-gns-proxy.c:960 4025#: src/gns/gnunet-gns-proxy.c:980
4036#, fuzzy, c-format 4026#, fuzzy, c-format
4037msgid "Unsupported CURL TLS backend %d\n" 4027msgid "Unsupported CURL TLS backend %d\n"
4038msgstr "未知的命令“%s”。\n" 4028msgstr "未知的命令“%s”。\n"
4039 4029
4040#: src/gns/gnunet-gns-proxy.c:985 4030#: src/gns/gnunet-gns-proxy.c:1005
4041#, fuzzy, c-format 4031#, fuzzy, c-format
4042msgid "Failed to fetch CN from cert: %s\n" 4032msgid "Failed to fetch CN from cert: %s\n"
4043msgstr "打开日志文件“%s”失败:%s\n" 4033msgstr "打开日志文件“%s”失败:%s\n"
4044 4034
4045#: src/gns/gnunet-gns-proxy.c:1008 4035#: src/gns/gnunet-gns-proxy.c:1026
4046#, fuzzy, c-format 4036#, fuzzy, c-format
4047msgid "Failed to initialize DANE: %s\n" 4037msgid "Failed to initialize DANE: %s\n"
4048msgstr "无法初始化 SQLite:%s。\n" 4038msgstr "无法初始化 SQLite:%s。\n"
4049 4039
4050#: src/gns/gnunet-gns-proxy.c:1021 4040#: src/gns/gnunet-gns-proxy.c:1041
4051#, fuzzy, c-format 4041#, fuzzy, c-format
4052msgid "Failed to parse DANE record: %s\n" 4042msgid "Failed to parse DANE record: %s\n"
4053msgstr "打开日志文件“%s”失败:%s\n" 4043msgstr "打开日志文件“%s”失败:%s\n"
4054 4044
4055#: src/gns/gnunet-gns-proxy.c:1036 4045#: src/gns/gnunet-gns-proxy.c:1056
4056#, fuzzy, c-format 4046#, fuzzy, c-format
4057msgid "Failed to verify TLS connection using DANE: %s\n" 4047msgid "Failed to verify TLS connection using DANE: %s\n"
4058msgstr "解析配置文件“%s”失败\n" 4048msgstr "解析配置文件“%s”失败\n"
4059 4049
4060#: src/gns/gnunet-gns-proxy.c:1046 4050#: src/gns/gnunet-gns-proxy.c:1066
4061#, c-format 4051#, c-format
4062msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n" 4052msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
4063msgstr "" 4053msgstr ""
4064 4054
4065#: src/gns/gnunet-gns-proxy.c:1070 4055#: src/gns/gnunet-gns-proxy.c:1090
4066#, c-format 4056#, c-format
4067msgid "TLS certificate subject name (%s) does not match `%s': %d\n" 4057msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
4068msgstr "" 4058msgstr ""
4069 4059
4070#: src/gns/gnunet-gns-proxy.c:1200 4060#: src/gns/gnunet-gns-proxy.c:1221
4071#, c-format 4061#, c-format
4072msgid "Cookie domain `%s' supplied by server is invalid\n" 4062msgid "Cookie domain `%s' supplied by server is invalid\n"
4073msgstr "" 4063msgstr ""
4074 4064
4075#: src/gns/gnunet-gns-proxy.c:2062 4065#: src/gns/gnunet-gns-proxy.c:2121
4076#, fuzzy, c-format 4066#, fuzzy, c-format
4077msgid "Unsupported HTTP method `%s'\n" 4067msgid "Unsupported HTTP method `%s'\n"
4078msgstr "未知的命令“%s”。\n" 4068msgstr "未知的命令“%s”。\n"
4079 4069
4080#: src/gns/gnunet-gns-proxy.c:2583 4070#: src/gns/gnunet-gns-proxy.c:2642
4081#, fuzzy, c-format 4071#, fuzzy, c-format
4082msgid "Unable to import private key from file `%s'\n" 4072msgid "Unable to import private key from file `%s'\n"
4083msgstr "无法创建用户账户:" 4073msgstr "无法创建用户账户:"
4084 4074
4085#: src/gns/gnunet-gns-proxy.c:2615 4075#: src/gns/gnunet-gns-proxy.c:2674
4086#, fuzzy, c-format 4076#, fuzzy, c-format
4087msgid "Unable to import certificate from `%s'\n" 4077msgid "Unable to import certificate from `%s'\n"
4088msgstr "无法保存配置文件“%s”:" 4078msgstr "无法保存配置文件“%s”:"
4089 4079
4090#: src/gns/gnunet-gns-proxy.c:2814 4080#: src/gns/gnunet-gns-proxy.c:2875
4091#, fuzzy, c-format 4081#, fuzzy, c-format
4092msgid "Failed to start HTTPS server for `%s'\n" 4082msgid "Failed to start HTTPS server for `%s'\n"
4093msgstr "初始化“%s”服务失败。\n" 4083msgstr "初始化“%s”服务失败。\n"
4094 4084
4095#: src/gns/gnunet-gns-proxy.c:2839 src/rest/gnunet-rest-server.c:656 4085#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
4096#, fuzzy 4086#, fuzzy
4097msgid "Failed to pass client to MHD\n" 4087msgid "Failed to pass client to MHD\n"
4098msgstr "初始化“%s”服务失败。\n" 4088msgstr "初始化“%s”服务失败。\n"
4099 4089
4100#: src/gns/gnunet-gns-proxy.c:3169 4090#: src/gns/gnunet-gns-proxy.c:3233
4101#, fuzzy, c-format 4091#, fuzzy, c-format
4102msgid "Unsupported socks version %d\n" 4092msgid "Unsupported socks version %d\n"
4103msgstr "未知的命令“%s”。\n" 4093msgstr "未知的命令“%s”。\n"
4104 4094
4105#: src/gns/gnunet-gns-proxy.c:3198 4095#: src/gns/gnunet-gns-proxy.c:3262
4106#, fuzzy, c-format 4096#, fuzzy, c-format
4107msgid "Unsupported socks command %d\n" 4097msgid "Unsupported socks command %d\n"
4108msgstr "未知的命令“%s”。\n" 4098msgstr "未知的命令“%s”。\n"
4109 4099
4110#: src/gns/gnunet-gns-proxy.c:3280 4100#: src/gns/gnunet-gns-proxy.c:3345
4111#, fuzzy, c-format 4101#, fuzzy, c-format
4112msgid "Unsupported socks address type %d\n" 4102msgid "Unsupported socks address type %d\n"
4113msgstr "未知的命令“%s”。\n" 4103msgstr "未知的命令“%s”。\n"
4114 4104
4115#: src/gns/gnunet-gns-proxy.c:3570 4105#: src/gns/gnunet-gns-proxy.c:3635
4116#, fuzzy, c-format 4106#, fuzzy, c-format
4117msgid "Failed to load X.509 key and certificate from `%s'\n" 4107msgid "Failed to load X.509 key and certificate from `%s'\n"
4118msgstr "解析配置文件“%s”失败\n" 4108msgstr "解析配置文件“%s”失败\n"
4119 4109
4120#: src/gns/gnunet-gns-proxy.c:3698 4110#: src/gns/gnunet-gns-proxy.c:3763
4121msgid "listen on specified port (default: 7777)" 4111msgid "listen on specified port (default: 7777)"
4122msgstr "" 4112msgstr ""
4123 4113
4124#: src/gns/gnunet-gns-proxy.c:3703 4114#: src/gns/gnunet-gns-proxy.c:3768
4125msgid "pem file to use as CA" 4115msgid "pem file to use as CA"
4126msgstr "" 4116msgstr ""
4127 4117
4128#: src/gns/gnunet-gns-proxy.c:3707 4118#: src/gns/gnunet-gns-proxy.c:3772
4129msgid "disable use of IPv6" 4119msgid "disable use of IPv6"
4130msgstr "" 4120msgstr ""
4131 4121
4132#: src/gns/gnunet-gns-proxy.c:3733 4122#: src/gns/gnunet-gns-proxy.c:3798
4133msgid "GNUnet GNS proxy" 4123msgid "GNUnet GNS proxy"
4134msgstr "" 4124msgstr ""
4135 4125
4136#: src/gns/gnunet-service-gns.c:511 4126#: src/gns/gnunet-service-gns.c:506
4137#, fuzzy 4127#, fuzzy
4138msgid "Properly base32-encoded public key required" 4128msgid "Properly base32-encoded public key required"
4139msgstr "“%s”的参数无效。\n" 4129msgstr "“%s”的参数无效。\n"
4140 4130
4141#: src/gns/gnunet-service-gns.c:547 4131#: src/gns/gnunet-service-gns.c:542
4142#, fuzzy 4132#, fuzzy
4143msgid "Failed to connect to the namecache!\n" 4133msgid "Failed to connect to the namecache!\n"
4144msgstr "初始化“%s”服务失败。\n" 4134msgstr "初始化“%s”服务失败。\n"
4145 4135
4146#: src/gns/gnunet-service-gns.c:566 4136#: src/gns/gnunet-service-gns.c:561
4147#: src/zonemaster/gnunet-service-zonemaster.c:873 4137#: src/zonemaster/gnunet-service-zonemaster.c:875
4148#: src/zonemaster/gnunet-service-zonemaster-monitor.c:438 4138#: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
4149#, fuzzy 4139#, fuzzy
4150msgid "Could not connect to DHT!\n" 4140msgid "Could not connect to DHT!\n"
4151msgstr "无法连接到 %s:%u:%s\n" 4141msgstr "无法连接到 %s:%u:%s\n"
4152 4142
4153#: src/gns/gnunet-service-gns_interceptor.c:257 4143#: src/gns/gnunet-service-gns_interceptor.c:259
4154msgid "Error converting GNS response to DNS response!\n" 4144msgid "Error converting GNS response to DNS response!\n"
4155msgstr "" 4145msgstr ""
4156 4146
4157#: src/gns/gnunet-service-gns_interceptor.c:364 4147#: src/gns/gnunet-service-gns_interceptor.c:366
4158#, fuzzy 4148#, fuzzy
4159msgid "Failed to connect to the DNS service!\n" 4149msgid "Failed to connect to the DNS service!\n"
4160msgstr "初始化“%s”服务失败。\n" 4150msgstr "初始化“%s”服务失败。\n"
4161 4151
4162#: src/gns/gnunet-service-gns_resolver.c:717 4152#: src/gns/gnunet-service-gns_resolver.c:700
4163#, c-format 4153#, c-format
4164msgid "Protocol `%s' unknown, skipping labels.\n" 4154msgid "Protocol `%s' unknown, skipping labels.\n"
4165msgstr "" 4155msgstr ""
4166 4156
4167#: src/gns/gnunet-service-gns_resolver.c:728 4157#: src/gns/gnunet-service-gns_resolver.c:711
4168#, c-format 4158#, c-format
4169msgid "Service `%s' unknown for protocol `%s', skipping labels.\n" 4159msgid "Service `%s' unknown for protocol `%s', skipping labels.\n"
4170msgstr "" 4160msgstr ""
4171 4161
4172#: src/gns/gnunet-service-gns_resolver.c:931 4162#: src/gns/gnunet-service-gns_resolver.c:914
4173#, fuzzy 4163#, fuzzy
4174msgid "Failed to parse DNS response\n" 4164msgid "Failed to parse DNS response\n"
4175msgstr "打开日志文件“%s”失败:%s\n" 4165msgstr "打开日志文件“%s”失败:%s\n"
4176 4166
4177#: src/gns/gnunet-service-gns_resolver.c:1112 4167#: src/gns/gnunet-service-gns_resolver.c:1095
4178#, c-format 4168#, c-format
4179msgid "Skipping record of unsupported type %d\n" 4169msgid "Skipping record of unsupported type %d\n"
4180msgstr "" 4170msgstr ""
4181 4171
4182#: src/gns/gnunet-service-gns_resolver.c:1382 4172#: src/gns/gnunet-service-gns_resolver.c:1365
4183#, c-format 4173#, c-format
4184msgid "VPN returned empty result for `%s'\n" 4174msgid "VPN returned empty result for `%s'\n"
4185msgstr "" 4175msgstr ""
4186 4176
4187#: src/gns/gnunet-service-gns_resolver.c:1823 4177#: src/gns/gnunet-service-gns_resolver.c:1806
4188#, c-format 4178#, c-format
4189msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" 4179msgid "GNS lookup resulted in DNS name that is too long (`%s')\n"
4190msgstr "" 4180msgstr ""
4191 4181
4192#: src/gns/gnunet-service-gns_resolver.c:1866 4182#: src/gns/gnunet-service-gns_resolver.c:1849
4193#, fuzzy, c-format 4183#, fuzzy, c-format
4194msgid "GNS lookup failed (zero records found for `%s')\n" 4184msgid "GNS lookup failed (zero records found for `%s')\n"
4195msgstr "运行 %s失败:%s %d\n" 4185msgstr "运行 %s失败:%s %d\n"
4196 4186
4197#: src/gns/gnunet-service-gns_resolver.c:2281 4187#: src/gns/gnunet-service-gns_resolver.c:2264
4198msgid "GNS lookup recursion failed (no delegation record found)\n" 4188msgid "GNS lookup recursion failed (no delegation record found)\n"
4199msgstr "" 4189msgstr ""
4200 4190
4201#: src/gns/gnunet-service-gns_resolver.c:2304 4191#: src/gns/gnunet-service-gns_resolver.c:2287
4202#, fuzzy, c-format 4192#, fuzzy, c-format
4203msgid "Failed to cache GNS resolution: %s\n" 4193msgid "Failed to cache GNS resolution: %s\n"
4204msgstr "打开日志文件“%s”失败:%s\n" 4194msgstr "打开日志文件“%s”失败:%s\n"
4205 4195
4206#: src/gns/gnunet-service-gns_resolver.c:2467 4196#: src/gns/gnunet-service-gns_resolver.c:2450
4207#, c-format 4197#, c-format
4208msgid "GNS namecache returned empty result for `%s'\n" 4198msgid "GNS namecache returned empty result for `%s'\n"
4209msgstr "" 4199msgstr ""
4210 4200
4211#: src/gns/gnunet-service-gns_resolver.c:2602 4201#: src/gns/gnunet-service-gns_resolver.c:2585
4212#, c-format 4202#, c-format
4213msgid "Zone %s was revoked, resolution fails\n" 4203msgid "Zone %s was revoked, resolution fails\n"
4214msgstr "" 4204msgstr ""
4215 4205
4216#: src/gns/plugin_gnsrecord_gns.c:179 4206#: src/gns/plugin_gnsrecord_gns.c:181
4217#, fuzzy, c-format 4207#, fuzzy, c-format
4218msgid "Unable to parse PKEY record `%s'\n" 4208msgid "Unable to parse PKEY record `%s'\n"
4219msgstr "解析配置文件“%s”失败\n" 4209msgstr "解析配置文件“%s”失败\n"
4220 4210
4221#: src/gns/plugin_gnsrecord_gns.c:210 4211#: src/gns/plugin_gnsrecord_gns.c:212
4222#, fuzzy, c-format 4212#, fuzzy, c-format
4223msgid "Unable to parse GNS2DNS record `%s'\n" 4213msgid "Unable to parse GNS2DNS record `%s'\n"
4224msgstr "解析配置文件“%s”失败\n" 4214msgstr "解析配置文件“%s”失败\n"
4225 4215
4226#: src/gns/plugin_gnsrecord_gns.c:231 4216#: src/gns/plugin_gnsrecord_gns.c:233
4227#, fuzzy, c-format 4217#, fuzzy, c-format
4228msgid "Failed to serialize GNS2DNS record with value `%s'\n" 4218msgid "Failed to serialize GNS2DNS record with value `%s'\n"
4229msgstr "解析配置文件“%s”失败\n" 4219msgstr "解析配置文件“%s”失败\n"
4230 4220
4231#: src/gns/plugin_gnsrecord_gns.c:256 4221#: src/gns/plugin_gnsrecord_gns.c:258
4232#, fuzzy, c-format 4222#, fuzzy, c-format
4233msgid "Unable to parse VPN record string `%s'\n" 4223msgid "Unable to parse VPN record string `%s'\n"
4234msgstr "解析配置文件“%s”失败\n" 4224msgstr "解析配置文件“%s”失败\n"
4235 4225
4236#: src/gns/plugin_gnsrecord_gns.c:292 4226#: src/gns/plugin_gnsrecord_gns.c:294
4237#, fuzzy, c-format 4227#, fuzzy, c-format
4238msgid "Unable to parse BOX record string `%s'\n" 4228msgid "Unable to parse BOX record string `%s'\n"
4239msgstr "解析配置文件“%s”失败\n" 4229msgstr "解析配置文件“%s”失败\n"
4240 4230
4241#: src/gnsrecord/plugin_gnsrecord_dns.c:357 4231#: src/gnsrecord/plugin_gnsrecord_dns.c:359
4242#, fuzzy, c-format 4232#, fuzzy, c-format
4243msgid "Unable to parse IPv4 address `%s'\n" 4233msgid "Unable to parse IPv4 address `%s'\n"
4244msgstr "无效的进程优先级“%s”\n" 4234msgstr "无效的进程优先级“%s”\n"
4245 4235
4246#: src/gnsrecord/plugin_gnsrecord_dns.c:378 4236#: src/gnsrecord/plugin_gnsrecord_dns.c:380
4247#, fuzzy, c-format 4237#, fuzzy, c-format
4248msgid "Failed to serialize NS record with value `%s'\n" 4238msgid "Failed to serialize NS record with value `%s'\n"
4249msgstr "解析配置文件“%s”失败\n" 4239msgstr "解析配置文件“%s”失败\n"
4250 4240
4251#: src/gnsrecord/plugin_gnsrecord_dns.c:400 4241#: src/gnsrecord/plugin_gnsrecord_dns.c:402
4252#, fuzzy, c-format 4242#, fuzzy, c-format
4253msgid "Failed to serialize CNAME record with value `%s'\n" 4243msgid "Failed to serialize CNAME record with value `%s'\n"
4254msgstr "解析配置文件“%s”失败\n" 4244msgstr "解析配置文件“%s”失败\n"
4255 4245
4256#: src/gnsrecord/plugin_gnsrecord_dns.c:485 4246#: src/gnsrecord/plugin_gnsrecord_dns.c:487
4257#, fuzzy, c-format 4247#, fuzzy, c-format
4258msgid "Failed to serialize CERT record with %u bytes\n" 4248msgid "Failed to serialize CERT record with %u bytes\n"
4259msgstr "解析配置文件“%s”失败\n" 4249msgstr "解析配置文件“%s”失败\n"
4260 4250
4261#: src/gnsrecord/plugin_gnsrecord_dns.c:521 4251#: src/gnsrecord/plugin_gnsrecord_dns.c:523
4262#, fuzzy, c-format 4252#, fuzzy, c-format
4263msgid "Unable to parse SOA record `%s'\n" 4253msgid "Unable to parse SOA record `%s'\n"
4264msgstr "解析配置文件“%s”失败\n" 4254msgstr "解析配置文件“%s”失败\n"
4265 4255
4266#: src/gnsrecord/plugin_gnsrecord_dns.c:540 4256#: src/gnsrecord/plugin_gnsrecord_dns.c:542
4267#, fuzzy, c-format 4257#, fuzzy, c-format
4268msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n" 4258msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
4269msgstr "解析配置文件“%s”失败\n" 4259msgstr "解析配置文件“%s”失败\n"
4270 4260
4271#: src/gnsrecord/plugin_gnsrecord_dns.c:563 4261#: src/gnsrecord/plugin_gnsrecord_dns.c:565
4272#, fuzzy, c-format 4262#, fuzzy, c-format
4273msgid "Failed to serialize PTR record with value `%s'\n" 4263msgid "Failed to serialize PTR record with value `%s'\n"
4274msgstr "解析配置文件“%s”失败\n" 4264msgstr "解析配置文件“%s”失败\n"
4275 4265
4276#: src/gnsrecord/plugin_gnsrecord_dns.c:586 4266#: src/gnsrecord/plugin_gnsrecord_dns.c:588
4277#, fuzzy, c-format 4267#, fuzzy, c-format
4278msgid "Unable to parse MX record `%s'\n" 4268msgid "Unable to parse MX record `%s'\n"
4279msgstr "解析配置文件“%s”失败\n" 4269msgstr "解析配置文件“%s”失败\n"
4280 4270
4281#: src/gnsrecord/plugin_gnsrecord_dns.c:601 4271#: src/gnsrecord/plugin_gnsrecord_dns.c:603
4282#, fuzzy, c-format 4272#, fuzzy, c-format
4283msgid "Failed to serialize MX record with hostname `%s'\n" 4273msgid "Failed to serialize MX record with hostname `%s'\n"
4284msgstr "解析配置文件“%s”失败\n" 4274msgstr "解析配置文件“%s”失败\n"
4285 4275
4286#: src/gnsrecord/plugin_gnsrecord_dns.c:628 4276#: src/gnsrecord/plugin_gnsrecord_dns.c:630
4287#, fuzzy, c-format 4277#, fuzzy, c-format
4288msgid "Unable to parse SRV record `%s'\n" 4278msgid "Unable to parse SRV record `%s'\n"
4289msgstr "解析配置文件“%s”失败\n" 4279msgstr "解析配置文件“%s”失败\n"
4290 4280
4291#: src/gnsrecord/plugin_gnsrecord_dns.c:644 4281#: src/gnsrecord/plugin_gnsrecord_dns.c:646
4292#, fuzzy, c-format 4282#, fuzzy, c-format
4293msgid "Failed to serialize SRV record with target `%s'\n" 4283msgid "Failed to serialize SRV record with target `%s'\n"
4294msgstr "解析配置文件“%s”失败\n" 4284msgstr "解析配置文件“%s”失败\n"
4295 4285
4296#: src/gnsrecord/plugin_gnsrecord_dns.c:661 4286#: src/gnsrecord/plugin_gnsrecord_dns.c:663
4297#, fuzzy, c-format 4287#, fuzzy, c-format
4298msgid "Unable to parse IPv6 address `%s'\n" 4288msgid "Unable to parse IPv6 address `%s'\n"
4299msgstr "无效的进程优先级“%s”\n" 4289msgstr "无效的进程优先级“%s”\n"
4300 4290
4301#: src/gnsrecord/plugin_gnsrecord_dns.c:685 4291#: src/gnsrecord/plugin_gnsrecord_dns.c:687
4302#: src/gnsrecord/plugin_gnsrecord_dns.c:701 4292#: src/gnsrecord/plugin_gnsrecord_dns.c:703
4303#, fuzzy, c-format 4293#, fuzzy, c-format
4304msgid "Unable to parse TLSA record string `%s'\n" 4294msgid "Unable to parse TLSA record string `%s'\n"
4305msgstr "解析配置文件“%s”失败\n" 4295msgstr "解析配置文件“%s”失败\n"
4306 4296
4307#: src/hello/gnunet-hello.c:124 4297#: src/hello/gnunet-hello.c:126
4308msgid "Call with name of HELLO file to modify.\n" 4298msgid "Call with name of HELLO file to modify.\n"
4309msgstr "" 4299msgstr ""
4310 4300
4311#: src/hello/gnunet-hello.c:130 4301#: src/hello/gnunet-hello.c:132
4312#, fuzzy, c-format 4302#, fuzzy, c-format
4313msgid "Error accessing file `%s': %s\n" 4303msgid "Error accessing file `%s': %s\n"
4314msgstr "创建用户出错" 4304msgstr "创建用户出错"
4315 4305
4316#: src/hello/gnunet-hello.c:138 4306#: src/hello/gnunet-hello.c:140
4317#, c-format 4307#, c-format
4318msgid "File `%s' is too big to be a HELLO\n" 4308msgid "File `%s' is too big to be a HELLO\n"
4319msgstr "" 4309msgstr ""
4320 4310
4321#: src/hello/gnunet-hello.c:145 4311#: src/hello/gnunet-hello.c:147
4322#, c-format 4312#, c-format
4323msgid "File `%s' is too small to be a HELLO\n" 4313msgid "File `%s' is too small to be a HELLO\n"
4324msgstr "" 4314msgstr ""
4325 4315
4326#: src/hello/gnunet-hello.c:155 src/hello/gnunet-hello.c:196 4316#: src/hello/gnunet-hello.c:157 src/hello/gnunet-hello.c:198
4327#, fuzzy, c-format 4317#, fuzzy, c-format
4328msgid "Error opening file `%s': %s\n" 4318msgid "Error opening file `%s': %s\n"
4329msgstr "创建用户出错" 4319msgstr "创建用户出错"
4330 4320
4331#: src/hello/gnunet-hello.c:172 4321#: src/hello/gnunet-hello.c:174
4332#, c-format 4322#, c-format
4333msgid "Did not find well-formed HELLO in file `%s'\n" 4323msgid "Did not find well-formed HELLO in file `%s'\n"
4334msgstr "" 4324msgstr ""
4335 4325
4336#: src/hello/gnunet-hello.c:208 4326#: src/hello/gnunet-hello.c:210
4337#, fuzzy, c-format 4327#, fuzzy, c-format
4338msgid "Error writing HELLO to file `%s': %s\n" 4328msgid "Error writing HELLO to file `%s': %s\n"
4339msgstr "创建用户出错" 4329msgstr "创建用户出错"
4340 4330
4341#: src/hello/gnunet-hello.c:217 4331#: src/hello/gnunet-hello.c:219
4342#, c-format 4332#, c-format
4343msgid "Modified %u addresses, wrote %u bytes\n" 4333msgid "Modified %u addresses, wrote %u bytes\n"
4344msgstr "" 4334msgstr ""
4345 4335
4346#: src/hello/hello.c:1108 4336#: src/hello/hello.c:1110
4347#, fuzzy 4337#, fuzzy
4348msgid "Failed to parse HELLO message: missing expiration time\n" 4338msgid "Failed to parse HELLO message: missing expiration time\n"
4349msgstr "保存配置失败。" 4339msgstr "保存配置失败。"
4350 4340
4351#: src/hello/hello.c:1117 4341#: src/hello/hello.c:1119
4352#, fuzzy 4342#, fuzzy
4353msgid "Failed to parse HELLO message: invalid expiration time\n" 4343msgid "Failed to parse HELLO message: invalid expiration time\n"
4354msgstr "保存配置失败。" 4344msgstr "保存配置失败。"
4355 4345
4356#: src/hello/hello.c:1127 4346#: src/hello/hello.c:1129
4357#, fuzzy 4347#, fuzzy
4358msgid "Failed to parse HELLO message: malformed\n" 4348msgid "Failed to parse HELLO message: malformed\n"
4359msgstr "打开日志文件“%s”失败:%s\n" 4349msgstr "打开日志文件“%s”失败:%s\n"
4360 4350
4361#: src/hello/hello.c:1138 4351#: src/hello/hello.c:1140
4362msgid "Failed to parse HELLO message: missing transport plugin\n" 4352msgid "Failed to parse HELLO message: missing transport plugin\n"
4363msgstr "" 4353msgstr ""
4364 4354
4365#: src/hello/hello.c:1156 4355#: src/hello/hello.c:1158
4366#, c-format 4356#, c-format
4367msgid "Plugin `%s' not found, skipping address\n" 4357msgid "Plugin `%s' not found, skipping address\n"
4368msgstr "" 4358msgstr ""
4369 4359
4370#: src/hello/hello.c:1164 4360#: src/hello/hello.c:1166
4371#, c-format 4361#, c-format
4372msgid "Plugin `%s' does not support URIs yet\n" 4362msgid "Plugin `%s' does not support URIs yet\n"
4373msgstr "" 4363msgstr ""
4374 4364
4375#: src/hello/hello.c:1179 4365#: src/hello/hello.c:1181
4376#, fuzzy, c-format 4366#, fuzzy, c-format
4377msgid "Failed to parse `%s' as an address for plugin `%s'\n" 4367msgid "Failed to parse `%s' as an address for plugin `%s'\n"
4378msgstr "找不到接口“%s”的一个 IP 地址。\n" 4368msgstr "找不到接口“%s”的一个 IP 地址。\n"
4379 4369
4380#: src/hostlist/gnunet-daemon-hostlist.c:314 4370#: src/hostlist/gnunet-daemon-hostlist.c:316
4381msgid "" 4371msgid ""
4382"None of the functions for the hostlist daemon were enabled. I have no " 4372"None of the functions for the hostlist daemon were enabled. I have no "
4383"reason to run!\n" 4373"reason to run!\n"
4384msgstr "" 4374msgstr ""
4385 4375
4386#: src/hostlist/gnunet-daemon-hostlist.c:374 4376#: src/hostlist/gnunet-daemon-hostlist.c:376
4387msgid "advertise our hostlist to other peers" 4377msgid "advertise our hostlist to other peers"
4388msgstr "" 4378msgstr ""
4389 4379
4390#: src/hostlist/gnunet-daemon-hostlist.c:379 4380#: src/hostlist/gnunet-daemon-hostlist.c:381
4391msgid "" 4381msgid ""
4392"bootstrap using hostlists (it is highly recommended that you always use this " 4382"bootstrap using hostlists (it is highly recommended that you always use this "
4393"option)" 4383"option)"
4394msgstr "" 4384msgstr ""
4395 4385
4396#: src/hostlist/gnunet-daemon-hostlist.c:383 4386#: src/hostlist/gnunet-daemon-hostlist.c:385
4397msgid "enable learning about hostlist servers from other peers" 4387msgid "enable learning about hostlist servers from other peers"
4398msgstr "" 4388msgstr ""
4399 4389
4400#: src/hostlist/gnunet-daemon-hostlist.c:388 4390#: src/hostlist/gnunet-daemon-hostlist.c:390
4401msgid "provide a hostlist server" 4391msgid "provide a hostlist server"
4402msgstr "" 4392msgstr ""
4403 4393
4404#: src/hostlist/gnunet-daemon-hostlist.c:404 4394#: src/hostlist/gnunet-daemon-hostlist.c:406
4405msgid "GNUnet hostlist server and client" 4395msgid "GNUnet hostlist server and client"
4406msgstr "" 4396msgstr ""
4407 4397
4408#: src/hostlist/gnunet-daemon-hostlist_client.c:347 4398#: src/hostlist/gnunet-daemon-hostlist_client.c:349
4409msgid "# bytes downloaded from hostlist servers" 4399msgid "# bytes downloaded from hostlist servers"
4410msgstr "" 4400msgstr ""
4411 4401
4412#: src/hostlist/gnunet-daemon-hostlist_client.c:368 4402#: src/hostlist/gnunet-daemon-hostlist_client.c:370
4413#: src/hostlist/gnunet-daemon-hostlist_client.c:401 4403#: src/hostlist/gnunet-daemon-hostlist_client.c:403
4414msgid "# invalid HELLOs downloaded from hostlist servers" 4404msgid "# invalid HELLOs downloaded from hostlist servers"
4415msgstr "" 4405msgstr ""
4416 4406
4417#: src/hostlist/gnunet-daemon-hostlist_client.c:371 4407#: src/hostlist/gnunet-daemon-hostlist_client.c:373
4418#: src/hostlist/gnunet-daemon-hostlist_client.c:404 4408#: src/hostlist/gnunet-daemon-hostlist_client.c:406
4419#, c-format 4409#, c-format
4420msgid "Invalid `%s' message received from hostlist at `%s'\n" 4410msgid "Invalid `%s' message received from hostlist at `%s'\n"
4421msgstr "" 4411msgstr ""
4422 4412
4423#: src/hostlist/gnunet-daemon-hostlist_client.c:389 4413#: src/hostlist/gnunet-daemon-hostlist_client.c:391
4424msgid "# valid HELLOs downloaded from hostlist servers" 4414msgid "# valid HELLOs downloaded from hostlist servers"
4425msgstr "" 4415msgstr ""
4426 4416
4427#: src/hostlist/gnunet-daemon-hostlist_client.c:659 4417#: src/hostlist/gnunet-daemon-hostlist_client.c:661
4428#: src/hostlist/gnunet-daemon-hostlist_client.c:1405 4418#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
4429msgid "# advertised hostlist URIs" 4419msgid "# advertised hostlist URIs"
4430msgstr "" 4420msgstr ""
4431 4421
4432#: src/hostlist/gnunet-daemon-hostlist_client.c:689 4422#: src/hostlist/gnunet-daemon-hostlist_client.c:691
4433#, c-format 4423#, c-format
4434msgid "# advertised URI `%s' downloaded" 4424msgid "# advertised URI `%s' downloaded"
4435msgstr "" 4425msgstr ""
4436 4426
4437#: src/hostlist/gnunet-daemon-hostlist_client.c:732 4427#: src/hostlist/gnunet-daemon-hostlist_client.c:734
4438#, c-format 4428#, c-format
4439msgid "" 4429msgid ""
4440"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI " 4430"Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
4441"gets dismissed.\n" 4431"gets dismissed.\n"
4442msgstr "" 4432msgstr ""
4443 4433
4444#: src/hostlist/gnunet-daemon-hostlist_client.c:860 4434#: src/hostlist/gnunet-daemon-hostlist_client.c:862
4445#, c-format 4435#, c-format
4446msgid "Timeout trying to download hostlist from `%s'\n" 4436msgid "Timeout trying to download hostlist from `%s'\n"
4447msgstr "" 4437msgstr ""
4448 4438
4449#: src/hostlist/gnunet-daemon-hostlist_client.c:874 4439#: src/hostlist/gnunet-daemon-hostlist_client.c:876
4450#, c-format 4440#, c-format
4451msgid "Download limit of %u bytes exceeded, stopping download\n" 4441msgid "Download limit of %u bytes exceeded, stopping download\n"
4452msgstr "" 4442msgstr ""
4453 4443
4454#: src/hostlist/gnunet-daemon-hostlist_client.c:894 4444#: src/hostlist/gnunet-daemon-hostlist_client.c:896
4455#, fuzzy, c-format 4445#, fuzzy, c-format
4456msgid "Download of hostlist from `%s' failed: `%s'\n" 4446msgid "Download of hostlist from `%s' failed: `%s'\n"
4457msgstr "打开日志文件“%s”失败:%s\n" 4447msgstr "打开日志文件“%s”失败:%s\n"
4458 4448
4459#: src/hostlist/gnunet-daemon-hostlist_client.c:900 4449#: src/hostlist/gnunet-daemon-hostlist_client.c:902
4460#, c-format 4450#, c-format
4461msgid "Download of hostlist `%s' completed.\n" 4451msgid "Download of hostlist `%s' completed.\n"
4462msgstr "" 4452msgstr ""
4463 4453
4464#: src/hostlist/gnunet-daemon-hostlist_client.c:908 4454#: src/hostlist/gnunet-daemon-hostlist_client.c:910
4465#, c-format 4455#, c-format
4466msgid "Adding successfully tested hostlist `%s' datastore.\n" 4456msgid "Adding successfully tested hostlist `%s' datastore.\n"
4467msgstr "" 4457msgstr ""
4468 4458
4469#: src/hostlist/gnunet-daemon-hostlist_client.c:961 4459#: src/hostlist/gnunet-daemon-hostlist_client.c:963
4470#, c-format 4460#, c-format
4471msgid "Bootstrapping using hostlist at `%s'.\n" 4461msgid "Bootstrapping using hostlist at `%s'.\n"
4472msgstr "" 4462msgstr ""
4473 4463
4474#: src/hostlist/gnunet-daemon-hostlist_client.c:969 4464#: src/hostlist/gnunet-daemon-hostlist_client.c:971
4475msgid "# hostlist downloads initiated" 4465msgid "# hostlist downloads initiated"
4476msgstr "" 4466msgstr ""
4477 4467
4478#: src/hostlist/gnunet-daemon-hostlist_client.c:1096 4468#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
4479#: src/hostlist/gnunet-daemon-hostlist_client.c:1663 4469#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
4480msgid "# milliseconds between hostlist downloads" 4470msgid "# milliseconds between hostlist downloads"
4481msgstr "" 4471msgstr ""
4482 4472
4483#: src/hostlist/gnunet-daemon-hostlist_client.c:1105 4473#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
4484#, c-format 4474#, c-format
4485msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n" 4475msgid "Have %u/%u connections. Will consider downloading hostlist in %s\n"
4486msgstr "" 4476msgstr ""
4487 4477
4488#: src/hostlist/gnunet-daemon-hostlist_client.c:1164 4478#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
4489#: src/hostlist/gnunet-daemon-hostlist_client.c:1185 4479#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
4490msgid "# active connections" 4480msgid "# active connections"
4491msgstr "" 4481msgstr ""
4492 4482
4493#: src/hostlist/gnunet-daemon-hostlist_client.c:1351 4483#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
4494#, c-format 4484#, c-format
4495msgid "Loading saved hostlist entries from file `%s' \n" 4485msgid "Loading saved hostlist entries from file `%s' \n"
4496msgstr "" 4486msgstr ""
4497 4487
4498#: src/hostlist/gnunet-daemon-hostlist_client.c:1356 4488#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
4499#, c-format 4489#, c-format
4500msgid "Hostlist file `%s' does not exist\n" 4490msgid "Hostlist file `%s' does not exist\n"
4501msgstr "" 4491msgstr ""
4502 4492
4503#: src/hostlist/gnunet-daemon-hostlist_client.c:1365 4493#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
4504#, fuzzy, c-format 4494#, fuzzy, c-format
4505msgid "Could not open file `%s' for reading to load hostlists: %s\n" 4495msgid "Could not open file `%s' for reading to load hostlists: %s\n"
4506msgstr "无法解析“%s”来确定已方的 IP 地址:%s\n" 4496msgstr "无法解析“%s”来确定已方的 IP 地址:%s\n"
4507 4497
4508#: src/hostlist/gnunet-daemon-hostlist_client.c:1399 4498#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
4509#, c-format 4499#, c-format
4510msgid "%u hostlist URIs loaded from file\n" 4500msgid "%u hostlist URIs loaded from file\n"
4511msgstr "" 4501msgstr ""
4512 4502
4513#: src/hostlist/gnunet-daemon-hostlist_client.c:1402 4503#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
4514msgid "# hostlist URIs read from file" 4504msgid "# hostlist URIs read from file"
4515msgstr "" 4505msgstr ""
4516 4506
4517#: src/hostlist/gnunet-daemon-hostlist_client.c:1448 4507#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
4518#, fuzzy, c-format 4508#, fuzzy, c-format
4519msgid "Could not open file `%s' for writing to save hostlists: %s\n" 4509msgid "Could not open file `%s' for writing to save hostlists: %s\n"
4520msgstr "无法解析“%s”来确定已方的 IP 地址:%s\n" 4510msgstr "无法解析“%s”来确定已方的 IP 地址:%s\n"
4521 4511
4522#: src/hostlist/gnunet-daemon-hostlist_client.c:1455 4512#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
4523#, c-format 4513#, c-format
4524msgid "Writing %u hostlist URIs to `%s'\n" 4514msgid "Writing %u hostlist URIs to `%s'\n"
4525msgstr "" 4515msgstr ""
4526 4516
4527#: src/hostlist/gnunet-daemon-hostlist_client.c:1479 4517#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
4528#: src/hostlist/gnunet-daemon-hostlist_client.c:1496 4518#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
4529#, c-format 4519#, c-format
4530msgid "Error writing hostlist URIs to file `%s'\n" 4520msgid "Error writing hostlist URIs to file `%s'\n"
4531msgstr "" 4521msgstr ""
4532 4522
4533#: src/hostlist/gnunet-daemon-hostlist_client.c:1491 4523#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
4534msgid "# hostlist URIs written to file" 4524msgid "# hostlist URIs written to file"
4535msgstr "" 4525msgstr ""
4536 4526
4537#: src/hostlist/gnunet-daemon-hostlist_client.c:1593 4527#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
4538#: src/transport/plugin_transport_http_client.c:2272 4528#: src/transport/plugin_transport_http_client.c:2274
4539#, c-format 4529#, c-format
4540msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n" 4530msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
4541msgstr "" 4531msgstr ""
4542 4532
4543#: src/hostlist/gnunet-daemon-hostlist_client.c:1622 4533#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
4544msgid "Learning is enabled on this peer\n" 4534msgid "Learning is enabled on this peer\n"
4545msgstr "" 4535msgstr ""
4546 4536
4547#: src/hostlist/gnunet-daemon-hostlist_client.c:1636 4537#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
4548msgid "Learning is not enabled on this peer\n" 4538msgid "Learning is not enabled on this peer\n"
4549msgstr "" 4539msgstr ""
4550 4540
4551#: src/hostlist/gnunet-daemon-hostlist_client.c:1649 4541#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
4552#, c-format 4542#, c-format
4553msgid "" 4543msgid ""
4554"Since learning is not enabled on this peer, hostlist file `%s' was removed\n" 4544"Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
4555msgstr "" 4545msgstr ""
4556 4546
4557#: src/hostlist/gnunet-daemon-hostlist_server.c:174 4547#: src/hostlist/gnunet-daemon-hostlist_server.c:176
4558msgid "bytes in hostlist" 4548msgid "bytes in hostlist"
4559msgstr "" 4549msgstr ""
4560 4550
4561#: src/hostlist/gnunet-daemon-hostlist_server.c:199 4551#: src/hostlist/gnunet-daemon-hostlist_server.c:201
4562msgid "expired addresses encountered" 4552msgid "expired addresses encountered"
4563msgstr "" 4553msgstr ""
4564 4554
4565#: src/hostlist/gnunet-daemon-hostlist_server.c:235 4555#: src/hostlist/gnunet-daemon-hostlist_server.c:237
4566#: src/hostlist/gnunet-daemon-hostlist_server.c:529 4556#: src/hostlist/gnunet-daemon-hostlist_server.c:531
4567#: src/peerinfo-tool/gnunet-peerinfo.c:383 4557#: src/peerinfo-tool/gnunet-peerinfo.c:385
4568#: src/peerinfo-tool/gnunet-peerinfo.c:532 4558#: src/peerinfo-tool/gnunet-peerinfo.c:534
4569#: src/topology/gnunet-daemon-topology.c:860 4559#: src/topology/gnunet-daemon-topology.c:862
4570#, c-format 4560#, c-format
4571msgid "Error in communication with PEERINFO service: %s\n" 4561msgid "Error in communication with PEERINFO service: %s\n"
4572msgstr "" 4562msgstr ""
4573 4563
4574#: src/hostlist/gnunet-daemon-hostlist_server.c:259 4564#: src/hostlist/gnunet-daemon-hostlist_server.c:261
4575msgid "HELLOs without addresses encountered (ignored)" 4565msgid "HELLOs without addresses encountered (ignored)"
4576msgstr "" 4566msgstr ""
4577 4567
4578#: src/hostlist/gnunet-daemon-hostlist_server.c:276 4568#: src/hostlist/gnunet-daemon-hostlist_server.c:278
4579msgid "bytes not included in hostlist (size limit)" 4569msgid "bytes not included in hostlist (size limit)"
4580msgstr "" 4570msgstr ""
4581 4571
4582#: src/hostlist/gnunet-daemon-hostlist_server.c:380 4572#: src/hostlist/gnunet-daemon-hostlist_server.c:382
4583#, c-format 4573#, c-format
4584msgid "Refusing `%s' request to hostlist server\n" 4574msgid "Refusing `%s' request to hostlist server\n"
4585msgstr "" 4575msgstr ""
4586 4576
4587#: src/hostlist/gnunet-daemon-hostlist_server.c:383 4577#: src/hostlist/gnunet-daemon-hostlist_server.c:385
4588msgid "hostlist requests refused (not HTTP GET)" 4578msgid "hostlist requests refused (not HTTP GET)"
4589msgstr "" 4579msgstr ""
4590 4580
4591#: src/hostlist/gnunet-daemon-hostlist_server.c:395 4581#: src/hostlist/gnunet-daemon-hostlist_server.c:397
4592#, c-format 4582#, c-format
4593msgid "Refusing `%s' request with %llu bytes of upload data\n" 4583msgid "Refusing `%s' request with %llu bytes of upload data\n"
4594msgstr "" 4584msgstr ""
4595 4585
4596#: src/hostlist/gnunet-daemon-hostlist_server.c:399 4586#: src/hostlist/gnunet-daemon-hostlist_server.c:401
4597msgid "hostlist requests refused (upload data)" 4587msgid "hostlist requests refused (upload data)"
4598msgstr "" 4588msgstr ""
4599 4589
4600#: src/hostlist/gnunet-daemon-hostlist_server.c:406 4590#: src/hostlist/gnunet-daemon-hostlist_server.c:408
4601msgid "Could not handle hostlist request since I do not have a response yet\n" 4591msgid "Could not handle hostlist request since I do not have a response yet\n"
4602msgstr "" 4592msgstr ""
4603 4593
4604#: src/hostlist/gnunet-daemon-hostlist_server.c:409 4594#: src/hostlist/gnunet-daemon-hostlist_server.c:411
4605msgid "hostlist requests refused (not ready)" 4595msgid "hostlist requests refused (not ready)"
4606msgstr "" 4596msgstr ""
4607 4597
4608#: src/hostlist/gnunet-daemon-hostlist_server.c:414 4598#: src/hostlist/gnunet-daemon-hostlist_server.c:416
4609msgid "Received request for our hostlist\n" 4599msgid "Received request for our hostlist\n"
4610msgstr "" 4600msgstr ""
4611 4601
4612#: src/hostlist/gnunet-daemon-hostlist_server.c:416 4602#: src/hostlist/gnunet-daemon-hostlist_server.c:418
4613msgid "hostlist requests processed" 4603msgid "hostlist requests processed"
4614msgstr "" 4604msgstr ""
4615 4605
4616#: src/hostlist/gnunet-daemon-hostlist_server.c:464 4606#: src/hostlist/gnunet-daemon-hostlist_server.c:466
4617msgid "# hostlist advertisements send" 4607msgid "# hostlist advertisements send"
4618msgstr "" 4608msgstr ""
4619 4609
4620#: src/hostlist/gnunet-daemon-hostlist_server.c:677 4610#: src/hostlist/gnunet-daemon-hostlist_server.c:679
4621#: src/transport/gnunet-service-transport.c:2813 4611#: src/transport/gnunet-service-transport.c:2814
4622msgid "Could not access PEERINFO service. Exiting.\n" 4612msgid "Could not access PEERINFO service. Exiting.\n"
4623msgstr "" 4613msgstr ""
4624 4614
4625#: src/hostlist/gnunet-daemon-hostlist_server.c:689 4615#: src/hostlist/gnunet-daemon-hostlist_server.c:691
4626#, c-format 4616#, c-format
4627msgid "Invalid port number %llu. Exiting.\n" 4617msgid "Invalid port number %llu. Exiting.\n"
4628msgstr "" 4618msgstr ""
4629 4619
4630#: src/hostlist/gnunet-daemon-hostlist_server.c:701 4620#: src/hostlist/gnunet-daemon-hostlist_server.c:703
4631#, c-format 4621#, c-format
4632msgid "Hostlist service starts on %s:%llu\n" 4622msgid "Hostlist service starts on %s:%llu\n"
4633msgstr "" 4623msgstr ""
4634 4624
4635#: src/hostlist/gnunet-daemon-hostlist_server.c:716 4625#: src/hostlist/gnunet-daemon-hostlist_server.c:718
4636#, c-format 4626#, c-format
4637msgid "Address to obtain hostlist: `%s'\n" 4627msgid "Address to obtain hostlist: `%s'\n"
4638msgstr "" 4628msgstr ""
4639 4629
4640#: src/hostlist/gnunet-daemon-hostlist_server.c:729 4630#: src/hostlist/gnunet-daemon-hostlist_server.c:731
4641#, fuzzy 4631#, fuzzy
4642msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4632msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4643msgstr "“%s”不可用。\n" 4633msgstr "“%s”不可用。\n"
4644 4634
4645#: src/hostlist/gnunet-daemon-hostlist_server.c:746 4635#: src/hostlist/gnunet-daemon-hostlist_server.c:748
4646#, fuzzy 4636#, fuzzy
4647msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n" 4637msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
4648msgstr "“%s”不可用。\n" 4638msgstr "“%s”不可用。\n"
4649 4639
4650#: src/hostlist/gnunet-daemon-hostlist_server.c:767 4640#: src/hostlist/gnunet-daemon-hostlist_server.c:769
4651#, fuzzy, c-format 4641#, fuzzy, c-format
4652msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n" 4642msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
4653msgstr "“%s”不可用。\n" 4643msgstr "“%s”不可用。\n"
4654 4644
4655#: src/hostlist/gnunet-daemon-hostlist_server.c:787 4645#: src/hostlist/gnunet-daemon-hostlist_server.c:789
4656#, fuzzy, c-format 4646#, fuzzy, c-format
4657msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n" 4647msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
4658msgstr "“%s”不可用。\n" 4648msgstr "“%s”不可用。\n"
4659 4649
4660#: src/hostlist/gnunet-daemon-hostlist_server.c:827 4650#: src/hostlist/gnunet-daemon-hostlist_server.c:829
4661#, c-format 4651#, c-format
4662msgid "Could not start hostlist HTTP server on port %u\n" 4652msgid "Could not start hostlist HTTP server on port %u\n"
4663msgstr "" 4653msgstr ""
4664 4654
4665#: src/identity/gnunet-identity.c:177 4655#: src/identity/gnunet-identity.c:179
4666#, fuzzy, c-format 4656#, fuzzy, c-format
4667msgid "Failed to create ego: %s\n" 4657msgid "Failed to create ego: %s\n"
4668msgstr "发送消息失败。\n" 4658msgstr "发送消息失败。\n"
4669 4659
4670#: src/identity/gnunet-identity.c:199 4660#: src/identity/gnunet-identity.c:201
4671#, fuzzy, c-format 4661#, fuzzy, c-format
4672msgid "Failed to set default ego: %s\n" 4662msgid "Failed to set default ego: %s\n"
4673msgstr "发送消息失败。\n" 4663msgstr "发送消息失败。\n"
4674 4664
4675#: src/identity/gnunet-identity.c:354 4665#: src/identity/gnunet-identity.c:356
4676msgid "create ego NAME" 4666msgid "create ego NAME"
4677msgstr "" 4667msgstr ""
4678 4668
4679#: src/identity/gnunet-identity.c:360 4669#: src/identity/gnunet-identity.c:362
4680msgid "delete ego NAME " 4670msgid "delete ego NAME "
4681msgstr "" 4671msgstr ""
4682 4672
4683#: src/identity/gnunet-identity.c:365 4673#: src/identity/gnunet-identity.c:367
4684msgid "display all egos" 4674msgid "display all egos"
4685msgstr "" 4675msgstr ""
4686 4676
4687#: src/identity/gnunet-identity.c:371 4677#: src/identity/gnunet-identity.c:373
4688msgid "" 4678msgid ""
4689"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)" 4679"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
4690msgstr "" 4680msgstr ""
4691 4681
4692#: src/identity/gnunet-identity.c:376 4682#: src/identity/gnunet-identity.c:378
4693msgid "run in monitor mode egos" 4683msgid "run in monitor mode egos"
4694msgstr "" 4684msgstr ""
4695 4685
4696#: src/identity/gnunet-identity.c:382 4686#: src/identity/gnunet-identity.c:384
4697msgid "" 4687msgid ""
4698"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)" 4688"set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
4699msgstr "" 4689msgstr ""
4700 4690
4701#: src/identity/gnunet-identity.c:396 4691#: src/identity/gnunet-identity.c:398
4702msgid "Maintain egos" 4692msgid "Maintain egos"
4703msgstr "" 4693msgstr ""
4704 4694
4705#: src/identity/gnunet-service-identity.c:389 4695#: src/identity/gnunet-service-identity.c:391
4706msgid "no default known" 4696msgid "no default known"
4707msgstr "" 4697msgstr ""
4708 4698
4709#: src/identity/gnunet-service-identity.c:414 4699#: src/identity/gnunet-service-identity.c:416
4710msgid "default configured, but ego unknown (internal error)" 4700msgid "default configured, but ego unknown (internal error)"
4711msgstr "" 4701msgstr ""
4712 4702
4713#: src/identity/gnunet-service-identity.c:505 4703#: src/identity/gnunet-service-identity.c:507
4714#: src/identity/gnunet-service-identity.c:788 4704#: src/identity/gnunet-service-identity.c:790
4715#: src/identity/gnunet-service-identity.c:916 4705#: src/identity/gnunet-service-identity.c:918
4716#, fuzzy, c-format 4706#, fuzzy, c-format
4717msgid "Failed to write subsystem default identifier map to `%s'.\n" 4707msgid "Failed to write subsystem default identifier map to `%s'.\n"
4718msgstr "解析配置文件“%s”失败\n" 4708msgstr "解析配置文件“%s”失败\n"
4719 4709
4720#: src/identity/gnunet-service-identity.c:513 4710#: src/identity/gnunet-service-identity.c:515
4721msgid "Unknown ego specified for service (internal error)" 4711msgid "Unknown ego specified for service (internal error)"
4722msgstr "" 4712msgstr ""
4723 4713
4724#: src/identity/gnunet-service-identity.c:608 4714#: src/identity/gnunet-service-identity.c:610
4725msgid "identifier already in use for another ego" 4715msgid "identifier already in use for another ego"
4726msgstr "" 4716msgstr ""
4727 4717
4728#: src/identity/gnunet-service-identity.c:763 4718#: src/identity/gnunet-service-identity.c:765
4729msgid "target name already exists" 4719msgid "target name already exists"
4730msgstr "" 4720msgstr ""
4731 4721
4732#: src/identity/gnunet-service-identity.c:806 4722#: src/identity/gnunet-service-identity.c:808
4733#: src/identity/gnunet-service-identity.c:934 4723#: src/identity/gnunet-service-identity.c:936
4734msgid "no matching ego found" 4724msgid "no matching ego found"
4735msgstr "" 4725msgstr ""
4736 4726
4737#: src/identity/gnunet-service-identity.c:969 4727#: src/identity/gnunet-service-identity.c:971
4738#, fuzzy, c-format 4728#, fuzzy, c-format
4739msgid "Failed to parse ego information in `%s'\n" 4729msgid "Failed to parse ego information in `%s'\n"
4740msgstr "解析配置文件“%s”失败\n" 4730msgstr "解析配置文件“%s”失败\n"
4741 4731
4742#: src/identity/gnunet-service-identity.c:1027 4732#: src/identity/gnunet-service-identity.c:1029
4743#, fuzzy, c-format 4733#, fuzzy, c-format
4744msgid "Failed to parse subsystem identity configuration file `%s'\n" 4734msgid "Failed to parse subsystem identity configuration file `%s'\n"
4745msgstr "解析配置文件“%s”失败\n" 4735msgstr "解析配置文件“%s”失败\n"
4746 4736
4747#: src/identity/gnunet-service-identity.c:1037 4737#: src/identity/gnunet-service-identity.c:1039
4748#, fuzzy, c-format 4738#, fuzzy, c-format
4749msgid "Failed to create directory `%s' for storing egos\n" 4739msgid "Failed to create directory `%s' for storing egos\n"
4750msgstr "解析配置文件“%s”失败\n" 4740msgstr "解析配置文件“%s”失败\n"
4751 4741
4752#: src/json/json.c:121 4742#: src/json/json.c:123
4753#, fuzzy, c-format 4743#, fuzzy, c-format
4754msgid "Failed to parse JSON in option `%s': %s (%s)\n" 4744msgid "Failed to parse JSON in option `%s': %s (%s)\n"
4755msgstr "解析配置文件“%s”失败\n" 4745msgstr "解析配置文件“%s”失败\n"
4756 4746
4757#: src/multicast/gnunet-multicast.c:46 src/multicast/gnunet-multicast.c:70 4747#: src/my/my.c:196 src/my/my.c:215
4758msgid "This command doesn't do anything yet."
4759msgstr ""
4760
4761#: src/my/my.c:194 src/my/my.c:213
4762#, fuzzy, c-format 4748#, fuzzy, c-format
4763msgid "%s failed at %s:%d with error: %s\n" 4749msgid "%s failed at %s:%d with error: %s\n"
4764msgstr "“%s”于 %s:%d 处失败,错误为:%s\n" 4750msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
4765 4751
4766#: src/mysql/mysql.c:178 4752#: src/mysql/mysql.c:180
4767#, c-format 4753#, c-format
4768msgid "Trying to use file `%s' for MySQL configuration.\n" 4754msgid "Trying to use file `%s' for MySQL configuration.\n"
4769msgstr "" 4755msgstr ""
4770 4756
4771#: src/mysql/mysql.c:185 4757#: src/mysql/mysql.c:187
4772#, fuzzy, c-format 4758#, fuzzy, c-format
4773msgid "Could not access file `%s': %s\n" 4759msgid "Could not access file `%s': %s\n"
4774msgstr "无法解析“%s”(%s):%s\n" 4760msgstr "无法解析“%s”(%s):%s\n"
4775 4761
4776#: src/namecache/gnunet-namecache.c:105 4762#: src/namecache/gnunet-namecache.c:107
4777#, fuzzy, c-format 4763#, fuzzy, c-format
4778msgid "No records found for `%s'" 4764msgid "No records found for `%s'"
4779msgstr "运行 %s失败:%s %d\n" 4765msgstr "运行 %s失败:%s %d\n"
4780 4766
4781#: src/namecache/gnunet-namecache.c:120 src/namestore/gnunet-namestore.c:424 4767#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
4782#, c-format 4768#, c-format
4783msgid "\tCorrupt or unsupported record of type %u\n" 4769msgid "\tCorrupt or unsupported record of type %u\n"
4784msgstr "" 4770msgstr ""
4785 4771
4786#: src/namecache/gnunet-namecache.c:181 4772#: src/namecache/gnunet-namecache.c:183
4787#, fuzzy, c-format 4773#, fuzzy, c-format
4788msgid "You must specify which zone should be accessed\n" 4774msgid "You must specify which zone should be accessed\n"
4789msgstr "您必须指定一个昵称\n" 4775msgstr "您必须指定一个昵称\n"
4790 4776
4791#: src/namecache/gnunet-namecache.c:191 4777#: src/namecache/gnunet-namecache.c:193
4792#, fuzzy, c-format 4778#, fuzzy, c-format
4793msgid "Invalid public key for zone `%s'\n" 4779msgid "Invalid public key for zone `%s'\n"
4794msgstr "“%s”的参数无效。\n" 4780msgstr "“%s”的参数无效。\n"
4795 4781
4796#: src/namecache/gnunet-namecache.c:199 4782#: src/namecache/gnunet-namecache.c:201
4797#, fuzzy, c-format 4783#, fuzzy, c-format
4798msgid "You must specify a name\n" 4784msgid "You must specify a name\n"
4799msgstr "您必须指定一个接收方!\n" 4785msgstr "您必须指定一个接收方!\n"
4800 4786
4801#: src/namecache/gnunet-namecache.c:230 src/namestore/gnunet-namestore.c:1290 4787#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
4802msgid "name of the record to add/delete/display" 4788msgid "name of the record to add/delete/display"
4803msgstr "" 4789msgstr ""
4804 4790
4805#: src/namecache/gnunet-namecache.c:236 4791#: src/namecache/gnunet-namecache.c:238
4806msgid "spezifies the public key of the zone to look in" 4792msgid "spezifies the public key of the zone to look in"
4807msgstr "" 4793msgstr ""
4808 4794
4809#: src/namecache/gnunet-namecache.c:248 src/namestore/gnunet-namestore.c:1342 4795#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
4810#, fuzzy 4796#, fuzzy
4811msgid "GNUnet zone manipulation tool" 4797msgid "GNUnet zone manipulation tool"
4812msgstr "GNUnet 配置" 4798msgstr "GNUnet 配置"
4813 4799
4814#: src/namecache/namecache_api.c:294 4800#: src/namecache/namecache_api.c:296
4815msgid "Namecache failed to cache block" 4801msgid "Namecache failed to cache block"
4816msgstr "" 4802msgstr ""
4817 4803
4818#: src/namecache/namecache_api.c:381 4804#: src/namecache/namecache_api.c:383
4819#, fuzzy 4805#, fuzzy
4820msgid "Error communicating with namecache service" 4806msgid "Error communicating with namecache service"
4821msgstr "连接 %s:%u 出错。守护程序在运行吗?\n" 4807msgstr "连接 %s:%u 出错。守护程序在运行吗?\n"
4822 4808
4823#: src/namecache/plugin_namecache_flat.c:119 4809#: src/namecache/plugin_namecache_flat.c:121
4824#: src/namecache/plugin_namecache_flat.c:253 4810#: src/namecache/plugin_namecache_flat.c:255
4825#: src/namestore/plugin_namestore_heap.c:146 4811#: src/namestore/plugin_namestore_heap.c:148
4826#: src/namestore/plugin_namestore_heap.c:393 4812#: src/namestore/plugin_namestore_heap.c:395
4827#: src/peerstore/plugin_peerstore_flat.c:377 4813#: src/peerstore/plugin_peerstore_flat.c:379
4828#: src/peerstore/plugin_peerstore_flat.c:536 4814#: src/peerstore/plugin_peerstore_flat.c:538
4829#, fuzzy, c-format 4815#, fuzzy, c-format
4830msgid "Unable to initialize file: %s.\n" 4816msgid "Unable to initialize file: %s.\n"
4831msgstr "无法初始化 SQLite:%s。\n" 4817msgstr "无法初始化 SQLite:%s。\n"
4832 4818
4833#: src/namecache/plugin_namecache_flat.c:130 4819#: src/namecache/plugin_namecache_flat.c:132
4834#: src/namestore/plugin_namestore_heap.c:157 4820#: src/namestore/plugin_namestore_heap.c:159
4835#: src/peerstore/plugin_peerstore_flat.c:392 4821#: src/peerstore/plugin_peerstore_flat.c:394
4836#, fuzzy, c-format 4822#, fuzzy, c-format
4837msgid "Unable to get filesize: %s.\n" 4823msgid "Unable to get filesize: %s.\n"
4838msgstr "发送消息失败。\n" 4824msgstr "发送消息失败。\n"
4839 4825
4840#: src/namecache/plugin_namecache_flat.c:149 4826#: src/namecache/plugin_namecache_flat.c:151
4841#: src/namestore/plugin_namestore_heap.c:170 4827#: src/namestore/plugin_namestore_heap.c:172
4842#: src/peerstore/plugin_peerstore_flat.c:404 4828#: src/peerstore/plugin_peerstore_flat.c:406
4843#, fuzzy, c-format 4829#, fuzzy, c-format
4844msgid "Unable to read file: %s.\n" 4830msgid "Unable to read file: %s.\n"
4845msgstr "发送消息失败。\n" 4831msgstr "发送消息失败。\n"
4846 4832
4847#: src/namecache/plugin_namecache_flat.c:408 4833#: src/namecache/plugin_namecache_flat.c:410
4848#, fuzzy 4834#, fuzzy
4849msgid "flat plugin running\n" 4835msgid "flat plugin running\n"
4850msgstr "sqlite 数据仓库" 4836msgstr "sqlite 数据仓库"
4851 4837
4852#: src/namestore/gnunet-namestore.c:311 4838#: src/namecache/plugin_namecache_sqlite.c:183
4839#: src/namecache/plugin_namecache_sqlite.c:197
4840#: src/namestore/plugin_namestore_sqlite.c:219
4841#: src/namestore/plugin_namestore_sqlite.c:230
4842#, fuzzy, c-format
4843msgid "Failed to setup database at `%s'\n"
4844msgstr "运行 %s失败:%s %d\n"
4845
4846#: src/namestore/gnunet-namestore.c:341
4853#, c-format 4847#, c-format
4854msgid "Adding record failed: %s\n" 4848msgid "Adding record failed: %s\n"
4855msgstr "" 4849msgstr ""
4856 4850
4857#: src/namestore/gnunet-namestore.c:341 4851#: src/namestore/gnunet-namestore.c:371
4858#, c-format 4852#, c-format
4859msgid "Deleting record failed, record does not exist%s%s\n" 4853msgid "Deleting record failed, record does not exist%s%s\n"
4860msgstr "" 4854msgstr ""
4861 4855
4862#: src/namestore/gnunet-namestore.c:348 4856#: src/namestore/gnunet-namestore.c:378
4863#, c-format 4857#, c-format
4864msgid "Deleting record failed%s%s\n" 4858msgid "Deleting record failed%s%s\n"
4865msgstr "" 4859msgstr ""
4866 4860
4867#: src/namestore/gnunet-namestore.c:628 src/namestore/gnunet-namestore.c:636 4861#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
4868#, c-format 4862#, c-format
4869msgid "A %s record exists already under `%s', no other records can be added.\n" 4863msgid "A %s record exists already under `%s', no other records can be added.\n"
4870msgstr "" 4864msgstr ""
4871 4865
4872#: src/namestore/gnunet-namestore.c:650 src/namestore/gnunet-namestore.c:662 4866#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
4873#, c-format 4867#, c-format
4874msgid "Records already exist under `%s', cannot add `%s' record.\n" 4868msgid "Records already exist under `%s', cannot add `%s' record.\n"
4875msgstr "" 4869msgstr ""
4876 4870
4877#: src/namestore/gnunet-namestore.c:675 4871#: src/namestore/gnunet-namestore.c:707
4878#, c-format 4872#, c-format
4879msgid "" 4873msgid ""
4880"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n" 4874"Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
4881msgstr "" 4875msgstr ""
4882 4876
4883#: src/namestore/gnunet-namestore.c:809 4877#: src/namestore/gnunet-namestore.c:837
4884#, c-format 4878#, c-format
4885msgid "There are no records under label `%s' that could be deleted.\n" 4879msgid "There are no records under label `%s' that could be deleted.\n"
4886msgstr "" 4880msgstr ""
4887 4881
4888#: src/namestore/gnunet-namestore.c:850 4882#: src/namestore/gnunet-namestore.c:878
4889#, c-format 4883#, c-format
4890msgid "" 4884msgid ""
4891"There are no records under label `%s' that match the request for deletion.\n" 4885"There are no records under label `%s' that match the request for deletion.\n"
4892msgstr "" 4886msgstr ""
4893 4887
4894#: src/namestore/gnunet-namestore.c:902 4888#: src/namestore/gnunet-namestore.c:965
4889#, fuzzy, c-format
4890msgid "Failed to replace records: %s\n"
4891msgstr "打开日志文件“%s”失败:%s\n"
4892
4893#: src/namestore/gnunet-namestore.c:1009
4895#, c-format 4894#, c-format
4896msgid "No options given\n" 4895msgid "No options given\n"
4897msgstr "" 4896msgstr ""
4898 4897
4899#: src/namestore/gnunet-namestore.c:921 src/namestore/gnunet-namestore.c:930 4898#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
4900#: src/namestore/gnunet-namestore.c:949 src/namestore/gnunet-namestore.c:972 4899#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
4901#: src/namestore/gnunet-namestore.c:1026 4900#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
4902#, fuzzy, c-format 4901#, fuzzy, c-format
4903msgid "Missing option `%s' for operation `%s'\n" 4902msgid "Missing option `%s' for operation `%s'\n"
4904msgstr "配置文件“%s”已写入。\n" 4903msgstr "配置文件“%s”已写入。\n"
4905 4904
4906#: src/namestore/gnunet-namestore.c:922 src/namestore/gnunet-namestore.c:931 4905#: src/namestore/gnunet-namestore.c:1033
4907#: src/namestore/gnunet-namestore.c:950 src/namestore/gnunet-namestore.c:974 4906msgid "replace"
4907msgstr ""
4908
4909#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
4910#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
4908msgid "add" 4911msgid "add"
4909msgstr "" 4912msgstr ""
4910 4913
4911#: src/namestore/gnunet-namestore.c:940 4914#: src/namestore/gnunet-namestore.c:1084
4912#, fuzzy, c-format 4915#, fuzzy, c-format
4913msgid "Unsupported type `%s'\n" 4916msgid "Unsupported type `%s'\n"
4914msgstr "未知的命令“%s”。\n" 4917msgstr "未知的命令“%s”。\n"
4915 4918
4916#: src/namestore/gnunet-namestore.c:962 4919#: src/namestore/gnunet-namestore.c:1106
4917#, c-format 4920#, c-format
4918msgid "Value `%s' invalid for record type `%s'\n" 4921msgid "Value `%s' invalid for record type `%s'\n"
4919msgstr "" 4922msgstr ""
4920 4923
4921#: src/namestore/gnunet-namestore.c:1007 4924#: src/namestore/gnunet-namestore.c:1129
4922#, fuzzy, c-format 4925#, fuzzy, c-format
4923msgid "Invalid time format `%s'\n" 4926msgid "Invalid time format `%s'\n"
4924msgstr "IP 格式无效:“%s”\n" 4927msgstr "IP 格式无效:“%s”\n"
4925 4928
4926#: src/namestore/gnunet-namestore.c:1027 4929#: src/namestore/gnunet-namestore.c:1149
4927msgid "del" 4930msgid "del"
4928msgstr "" 4931msgstr ""
4929 4932
4930#: src/namestore/gnunet-namestore.c:1070 4933#: src/namestore/gnunet-namestore.c:1192
4931#, fuzzy, c-format 4934#, fuzzy, c-format
4932msgid "Invalid public key for reverse lookup `%s'\n" 4935msgid "Invalid public key for reverse lookup `%s'\n"
4933msgstr "“%s”的参数无效。\n" 4936msgstr "“%s”的参数无效。\n"
4934 4937
4935#: src/namestore/gnunet-namestore.c:1099 4938#: src/namestore/gnunet-namestore.c:1221
4936#: src/peerinfo-tool/gnunet-peerinfo.c:773 4939#: src/peerinfo-tool/gnunet-peerinfo.c:775
4937#, fuzzy, c-format 4940#, fuzzy, c-format
4938msgid "Invalid URI `%s'\n" 4941msgid "Invalid URI `%s'\n"
4939msgstr "无效条目。\n" 4942msgstr "无效条目。\n"
4940 4943
4941#: src/namestore/gnunet-namestore.c:1134 4944#: src/namestore/gnunet-namestore.c:1249
4942#, fuzzy, c-format 4945#, fuzzy, c-format
4943msgid "Invalid nick `%s'\n" 4946msgid "Invalid nick `%s'\n"
4944msgstr "无效条目。\n" 4947msgstr "无效条目。\n"
4945 4948
4946#: src/namestore/gnunet-namestore.c:1174 4949#: src/namestore/gnunet-namestore.c:1289
4947#, c-format 4950#, c-format
4948msgid "No default ego configured in identity service\n" 4951msgid "No default ego configured in identity service\n"
4949msgstr "" 4952msgstr ""
4950 4953
4951#: src/namestore/gnunet-namestore.c:1238 4954#: src/namestore/gnunet-namestore.c:1341
4955#, c-format
4956msgid "Superfluous command line arguments (starting with `%s') ignored\n"
4957msgstr ""
4958
4959#: src/namestore/gnunet-namestore.c:1357
4952#, fuzzy, c-format 4960#, fuzzy, c-format
4953msgid "Cannot connect to identity service\n" 4961msgid "Cannot connect to identity service\n"
4954msgstr "无法连接到 %s:%u:%s\n" 4962msgstr "无法连接到 %s:%u:%s\n"
4955 4963
4956#: src/namestore/gnunet-namestore.c:1263 4964#: src/namestore/gnunet-namestore.c:1407
4965msgid "Empty record line argument is not allowed.\n"
4966msgstr ""
4967
4968#: src/namestore/gnunet-namestore.c:1423
4969#, c-format
4970msgid "Invalid expiration time `%s' (must be without unit)\n"
4971msgstr ""
4972
4973#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
4974#: src/namestore/gnunet-namestore.c:1470
4975#, fuzzy, c-format
4976msgid "Missing entries in record line `%s'.\n"
4977msgstr "解析配置文件“%s”失败\n"
4978
4979#: src/namestore/gnunet-namestore.c:1444
4980#, fuzzy, c-format
4981msgid "Unknown record type `%s'\n"
4982msgstr "未知的命令“%s”。\n"
4983
4984#: src/namestore/gnunet-namestore.c:1484
4985#, fuzzy, c-format
4986msgid "Invalid record data for type %s: `%s'.\n"
4987msgstr "IP 格式无效:“%s”\n"
4988
4989#: src/namestore/gnunet-namestore.c:1548
4957msgid "add record" 4990msgid "add record"
4958msgstr "" 4991msgstr ""
4959 4992
4960#: src/namestore/gnunet-namestore.c:1267 4993#: src/namestore/gnunet-namestore.c:1552
4961msgid "delete record" 4994msgid "delete record"
4962msgstr "" 4995msgstr ""
4963 4996
4964#: src/namestore/gnunet-namestore.c:1271 4997#: src/namestore/gnunet-namestore.c:1556
4965msgid "display records" 4998msgid "display records"
4966msgstr "" 4999msgstr ""
4967 5000
4968#: src/namestore/gnunet-namestore.c:1276 5001#: src/namestore/gnunet-namestore.c:1561
4969msgid "" 5002msgid ""
4970"expiration time for record to use (for adding only), \"never\" is possible" 5003"expiration time for record to use (for adding only), \"never\" is possible"
4971msgstr "" 5004msgstr ""
4972 5005
4973#: src/namestore/gnunet-namestore.c:1281 5006#: src/namestore/gnunet-namestore.c:1566
4974#, fuzzy 5007#, fuzzy
4975msgid "set the desired nick name for the zone" 5008msgid "set the desired nick name for the zone"
4976msgstr "无法获取有关用户“%s”的信息:%s\n" 5009msgstr "无法获取有关用户“%s”的信息:%s\n"
4977 5010
4978#: src/namestore/gnunet-namestore.c:1285 5011#: src/namestore/gnunet-namestore.c:1570
4979#, fuzzy 5012#, fuzzy
4980msgid "monitor changes in the namestore" 5013msgid "monitor changes in the namestore"
4981msgstr "初始化“%s”服务失败。\n" 5014msgstr "初始化“%s”服务失败。\n"
4982 5015
4983#: src/namestore/gnunet-namestore.c:1295 5016#: src/namestore/gnunet-namestore.c:1580
4984#, fuzzy 5017#, fuzzy
4985msgid "determine our name for the given PKEY" 5018msgid "determine our name for the given PKEY"
4986msgstr "无法获取有关用户“%s”的信息:%s\n" 5019msgstr "无法获取有关用户“%s”的信息:%s\n"
4987 5020
4988#: src/namestore/gnunet-namestore.c:1300 5021#: src/namestore/gnunet-namestore.c:1585
5022msgid ""
5023"set record set to values given by (possibly multiple) RECORDLINES; can be "
5024"specified multiple times"
5025msgstr ""
5026
5027#: src/namestore/gnunet-namestore.c:1590
4989msgid "type of the record to add/delete/display" 5028msgid "type of the record to add/delete/display"
4990msgstr "" 5029msgstr ""
4991 5030
4992#: src/namestore/gnunet-namestore.c:1305 5031#: src/namestore/gnunet-namestore.c:1595
4993msgid "URI to import into our zone" 5032msgid "URI to import into our zone"
4994msgstr "" 5033msgstr ""
4995 5034
4996#: src/namestore/gnunet-namestore.c:1310 5035#: src/namestore/gnunet-namestore.c:1600
4997msgid "value of the record to add/delete" 5036msgid "value of the record to add/delete"
4998msgstr "" 5037msgstr ""
4999 5038
5000#: src/namestore/gnunet-namestore.c:1314 5039#: src/namestore/gnunet-namestore.c:1604
5001msgid "create or list public record" 5040msgid "create or list public record"
5002msgstr "" 5041msgstr ""
5003 5042
5004#: src/namestore/gnunet-namestore.c:1318 5043#: src/namestore/gnunet-namestore.c:1608
5005msgid "" 5044msgid ""
5006"create shadow record (only valid if all other records of the same type have " 5045"create shadow record (only valid if all other records of the same type have "
5007"expired" 5046"expired"
5008msgstr "" 5047msgstr ""
5009 5048
5010#: src/namestore/gnunet-namestore.c:1323 5049#: src/namestore/gnunet-namestore.c:1613
5011msgid "name of the ego controlling the zone" 5050msgid "name of the ego controlling the zone"
5012msgstr "" 5051msgstr ""
5013 5052
5014#: src/namestore/gnunet-namestore-fcfsd.c:547 5053#: src/namestore/gnunet-namestore-fcfsd.c:549
5015#, fuzzy, c-format 5054#, fuzzy, c-format
5016msgid "Unsupported form value `%s'\n" 5055msgid "Unsupported form value `%s'\n"
5017msgstr "未知的命令“%s”。\n" 5056msgstr "未知的命令“%s”。\n"
5018 5057
5019#: src/namestore/gnunet-namestore-fcfsd.c:574 5058#: src/namestore/gnunet-namestore-fcfsd.c:576
5020#, fuzzy, c-format 5059#, fuzzy, c-format
5021msgid "Failed to create record for domain `%s': %s\n" 5060msgid "Failed to create record for domain `%s': %s\n"
5022msgstr "解析配置文件“%s”失败\n" 5061msgstr "解析配置文件“%s”失败\n"
5023 5062
5024#: src/namestore/gnunet-namestore-fcfsd.c:595 5063#: src/namestore/gnunet-namestore-fcfsd.c:597
5025msgid "Error when mapping zone to name\n" 5064msgid "Error when mapping zone to name\n"
5026msgstr "" 5065msgstr ""
5027 5066
5028#: src/namestore/gnunet-namestore-fcfsd.c:627 5067#: src/namestore/gnunet-namestore-fcfsd.c:629
5029#, c-format 5068#, c-format
5030msgid "Found existing name `%s' for the given key\n" 5069msgid "Found existing name `%s' for the given key\n"
5031msgstr "" 5070msgstr ""
5032 5071
5033#: src/namestore/gnunet-namestore-fcfsd.c:687 5072#: src/namestore/gnunet-namestore-fcfsd.c:689
5034#, c-format 5073#, c-format
5035msgid "Found %u existing records for domain `%s'\n" 5074msgid "Found %u existing records for domain `%s'\n"
5036msgstr "" 5075msgstr ""
5037 5076
5038#: src/namestore/gnunet-namestore-fcfsd.c:775 5077#: src/namestore/gnunet-namestore-fcfsd.c:777
5039#, fuzzy, c-format 5078#, fuzzy, c-format
5040msgid "Failed to create page for `%s'\n" 5079msgid "Failed to create page for `%s'\n"
5041msgstr "发送消息失败。\n" 5080msgstr "发送消息失败。\n"
5042 5081
5043#: src/namestore/gnunet-namestore-fcfsd.c:794 5082#: src/namestore/gnunet-namestore-fcfsd.c:796
5044#, fuzzy, c-format 5083#, fuzzy, c-format
5045msgid "Failed to setup post processor for `%s'\n" 5084msgid "Failed to setup post processor for `%s'\n"
5046msgstr "解析配置文件“%s”失败\n" 5085msgstr "解析配置文件“%s”失败\n"
5047 5086
5048#: src/namestore/gnunet-namestore-fcfsd.c:830 5087#: src/namestore/gnunet-namestore-fcfsd.c:832
5049msgid "Domain name must not contain `.'\n" 5088msgid "Domain name must not contain `.'\n"
5050msgstr "" 5089msgstr ""
5051 5090
5052#: src/namestore/gnunet-namestore-fcfsd.c:839 5091#: src/namestore/gnunet-namestore-fcfsd.c:841
5053msgid "Domain name must not contain `+'\n" 5092msgid "Domain name must not contain `+'\n"
5054msgstr "" 5093msgstr ""
5055 5094
5056#: src/namestore/gnunet-namestore-fcfsd.c:1069 5095#: src/namestore/gnunet-namestore-fcfsd.c:1071
5057msgid "No ego configured for `fcfsd` subsystem\n" 5096msgid "No ego configured for `fcfsd` subsystem\n"
5058msgstr "" 5097msgstr ""
5059 5098
5060#: src/namestore/gnunet-namestore-fcfsd.c:1097 5099#: src/namestore/gnunet-namestore-fcfsd.c:1099
5061#, fuzzy 5100#, fuzzy
5062msgid "Failed to start HTTP server\n" 5101msgid "Failed to start HTTP server\n"
5063msgstr "初始化“%s”服务失败。\n" 5102msgstr "初始化“%s”服务失败。\n"
5064 5103
5065#: src/namestore/gnunet-namestore-fcfsd.c:1145 5104#: src/namestore/gnunet-namestore-fcfsd.c:1147
5066#, fuzzy 5105#, fuzzy
5067msgid "Failed to connect to identity\n" 5106msgid "Failed to connect to identity\n"
5068msgstr "初始化“%s”服务失败。\n" 5107msgstr "初始化“%s”服务失败。\n"
5069 5108
5070#: src/namestore/gnunet-namestore-fcfsd.c:1171 5109#: src/namestore/gnunet-namestore-fcfsd.c:1173
5071msgid "name of the zone that is to be managed by FCFSD" 5110msgid "name of the zone that is to be managed by FCFSD"
5072msgstr "" 5111msgstr ""
5073 5112
5074#: src/namestore/gnunet-namestore-fcfsd.c:1190 5113#: src/namestore/gnunet-namestore-fcfsd.c:1192
5075msgid "GNU Name System First Come First Serve name registration service" 5114msgid "GNU Name System First Come First Serve name registration service"
5076msgstr "" 5115msgstr ""
5077 5116
5078#: src/namestore/gnunet-service-namestore.c:749 5117#: src/namestore/gnunet-service-namestore.c:900
5079#, fuzzy, c-format 5118#, fuzzy, c-format
5080msgid "Failed to replicate block in namecache: %s\n" 5119msgid "Failed to replicate block in namecache: %s\n"
5081msgstr "发送消息失败。\n" 5120msgstr "发送消息失败。\n"
5082 5121
5083#: src/namestore/gnunet-zoneimport.c:2036 5122#: src/namestore/gnunet-zoneimport.c:2038
5084msgid "size to use for the main hash map" 5123msgid "size to use for the main hash map"
5085msgstr "" 5124msgstr ""
5086 5125
5087#: src/namestore/gnunet-zoneimport.c:2041 5126#: src/namestore/gnunet-zoneimport.c:2043
5088msgid "minimum expiration time we assume for imported records" 5127msgid "minimum expiration time we assume for imported records"
5089msgstr "" 5128msgstr ""
5090 5129
5091#: src/namestore/namestore_api.c:389 5130#: src/namestore/namestore_api.c:391
5092msgid "Namestore failed to store record\n" 5131msgid "Namestore failed to store record\n"
5093msgstr "" 5132msgstr ""
5094 5133
5095#: src/namestore/plugin_namestore_heap.c:776 5134#: src/namestore/plugin_namestore_heap.c:778
5096#, fuzzy 5135#, fuzzy
5097msgid "heap file database running\n" 5136msgid "heap file database running\n"
5098msgstr "sqlite 数据仓库" 5137msgstr "sqlite 数据仓库"
5099 5138
5100#: src/namestore/plugin_namestore_sqlite.c:216 5139#: src/nat-auto/gnunet-nat-auto.c:193
5101#: src/namestore/plugin_namestore_sqlite.c:227
5102#, fuzzy, c-format
5103msgid "Failed to setup database at `%s'\n"
5104msgstr "运行 %s失败:%s %d\n"
5105
5106#: src/nat-auto/gnunet-nat-auto.c:191
5107#, fuzzy 5140#, fuzzy
5108msgid "Suggested configuration changes:\n" 5141msgid "Suggested configuration changes:\n"
5109msgstr "" 5142msgstr ""
5110"\n" 5143"\n"
5111"您的配置更改没有保存。\n" 5144"您的配置更改没有保存。\n"
5112 5145
5113#: src/nat-auto/gnunet-nat-auto.c:217 5146#: src/nat-auto/gnunet-nat-auto.c:219
5114#, fuzzy, c-format 5147#, fuzzy, c-format
5115msgid "Failed to write configuration to `%s'\n" 5148msgid "Failed to write configuration to `%s'\n"
5116msgstr "保存配置失败。" 5149msgstr "保存配置失败。"
5117 5150
5118#: src/nat-auto/gnunet-nat-auto.c:224 5151#: src/nat-auto/gnunet-nat-auto.c:226
5119#, fuzzy, c-format 5152#, fuzzy, c-format
5120msgid "Wrote updated configuration to `%s'\n" 5153msgid "Wrote updated configuration to `%s'\n"
5121msgstr "找不到接口“%s”的一个 IP 地址。\n" 5154msgstr "找不到接口“%s”的一个 IP 地址。\n"
5122 5155
5123#: src/nat-auto/gnunet-nat-auto.c:343 5156#: src/nat-auto/gnunet-nat-auto.c:345
5124#, fuzzy 5157#, fuzzy
5125msgid "run autoconfiguration" 5158msgid "run autoconfiguration"
5126msgstr "配额配置" 5159msgstr "配额配置"
5127 5160
5128#: src/nat-auto/gnunet-nat-auto.c:349 5161#: src/nat-auto/gnunet-nat-auto.c:351
5129msgid "section name providing the configuration for the adapter" 5162msgid "section name providing the configuration for the adapter"
5130msgstr "" 5163msgstr ""
5131 5164
5132#: src/nat-auto/gnunet-nat-auto.c:354 src/nat/gnunet-nat.c:451 5165#: src/nat-auto/gnunet-nat-auto.c:356 src/nat/gnunet-nat.c:459
5133msgid "use TCP" 5166msgid "use TCP"
5134msgstr "" 5167msgstr ""
5135 5168
5136#: src/nat-auto/gnunet-nat-auto.c:359 src/nat/gnunet-nat.c:456 5169#: src/nat-auto/gnunet-nat-auto.c:361 src/nat/gnunet-nat.c:464
5137msgid "use UDP" 5170msgid "use UDP"
5138msgstr "" 5171msgstr ""
5139 5172
5140#: src/nat-auto/gnunet-nat-auto.c:364 5173#: src/nat-auto/gnunet-nat-auto.c:366
5141msgid "write configuration file (for autoconfiguration)" 5174msgid "write configuration file (for autoconfiguration)"
5142msgstr "" 5175msgstr ""
5143 5176
5144#: src/nat-auto/gnunet-nat-auto.c:376 5177#: src/nat-auto/gnunet-nat-auto.c:378
5145#, fuzzy 5178#, fuzzy
5146msgid "GNUnet NAT traversal autoconfiguration" 5179msgid "GNUnet NAT traversal autoconfiguration"
5147msgstr "GNUnet 配置" 5180msgstr "GNUnet 配置"
5148 5181
5149#: src/nat-auto/gnunet-nat-auto_legacy.c:401 5182#: src/nat-auto/gnunet-nat-auto_legacy.c:403
5150#: src/nat-auto/gnunet-service-nat-auto_legacy.c:679 5183#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
5151#: src/nat-auto/nat_auto_api_test.c:403 5184#: src/nat-auto/nat_auto_api_test.c:409
5152msgid "Failed to connect to `gnunet-nat-server'\n" 5185msgid "Failed to connect to `gnunet-nat-server'\n"
5153msgstr "" 5186msgstr ""
5154 5187
5155#: src/nat-auto/gnunet-nat-auto_legacy.c:516 5188#: src/nat-auto/gnunet-nat-auto_legacy.c:518
5156#, c-format 5189#, c-format
5157msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n" 5190msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
5158msgstr "" 5191msgstr ""
5159 5192
5160#: src/nat-auto/gnunet-nat-auto_legacy.c:566 5193#: src/nat-auto/gnunet-nat-auto_legacy.c:568
5161#: src/nat-auto/nat_auto_api_test.c:569 5194#: src/nat-auto/nat_auto_api_test.c:575
5162#, fuzzy 5195#, fuzzy
5163msgid "NAT test failed to start NAT library\n" 5196msgid "NAT test failed to start NAT library\n"
5164msgstr "初始化“%s”服务失败。\n" 5197msgstr "初始化“%s”服务失败。\n"
5165 5198
5166#: src/nat-auto/gnunet-service-nat-auto.c:340 5199#: src/nat-auto/gnunet-service-nat-auto.c:342
5167msgid "UPnP client `upnpc` command not found, disabling UPnP\n" 5200msgid "UPnP client `upnpc` command not found, disabling UPnP\n"
5168msgstr "" 5201msgstr ""
5169 5202
5170#: src/nat-auto/gnunet-service-nat-auto_legacy.c:383 5203#: src/nat-auto/gnunet-service-nat-auto_legacy.c:385
5171msgid "NAT traversal with ICMP Server succeeded.\n" 5204msgid "NAT traversal with ICMP Server succeeded.\n"
5172msgstr "" 5205msgstr ""
5173 5206
5174#: src/nat-auto/gnunet-service-nat-auto_legacy.c:384 5207#: src/nat-auto/gnunet-service-nat-auto_legacy.c:386
5175msgid "NAT traversal with ICMP Server failed.\n" 5208msgid "NAT traversal with ICMP Server failed.\n"
5176msgstr "" 5209msgstr ""
5177 5210
5178#: src/nat-auto/gnunet-service-nat-auto_legacy.c:403 5211#: src/nat-auto/gnunet-service-nat-auto_legacy.c:405
5179msgid "Testing connection reversal with ICMP server.\n" 5212msgid "Testing connection reversal with ICMP server.\n"
5180msgstr "" 5213msgstr ""
5181 5214
5182#: src/nat-auto/gnunet-service-nat-auto_legacy.c:435 5215#: src/nat-auto/gnunet-service-nat-auto_legacy.c:437
5183#, c-format 5216#, c-format
5184msgid "Detected external IP `%s'\n" 5217msgid "Detected external IP `%s'\n"
5185msgstr "" 5218msgstr ""
5186 5219
5187#: src/nat-auto/gnunet-service-nat-auto_legacy.c:570 5220#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
5188msgid "This system has a global IPv6 address, setting IPv6 to supported.\n" 5221msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
5189msgstr "" 5222msgstr ""
5190 5223
5191#: src/nat-auto/gnunet-service-nat-auto_legacy.c:588 5224#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
5192#, fuzzy, c-format 5225#, fuzzy, c-format
5193msgid "Detected internal network address `%s'.\n" 5226msgid "Detected internal network address `%s'.\n"
5194msgstr "GNUnet 现在使用 IP 地址 %s。\n" 5227msgstr "GNUnet 现在使用 IP 地址 %s。\n"
5195 5228
5196#: src/nat-auto/gnunet-service-nat-auto_legacy.c:722 5229#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
5197msgid "upnpc found, enabling its use\n" 5230msgid "upnpc found, enabling its use\n"
5198msgstr "" 5231msgstr ""
5199 5232
5200#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723 5233#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
5201msgid "upnpc not found\n" 5234msgid "upnpc not found\n"
5202msgstr "" 5235msgstr ""
5203 5236
5204#: src/nat-auto/gnunet-service-nat-auto_legacy.c:760 5237#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
5205msgid "test_icmp_server not possible, as we have no public IPv4 address\n" 5238msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
5206msgstr "" 5239msgstr ""
5207 5240
5208#: src/nat-auto/gnunet-service-nat-auto_legacy.c:772 5241#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
5209#: src/nat-auto/gnunet-service-nat-auto_legacy.c:832 5242#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
5210msgid "test_icmp_server not possible, as we are not behind NAT\n" 5243msgid "test_icmp_server not possible, as we are not behind NAT\n"
5211msgstr "" 5244msgstr ""
5212 5245
5213#: src/nat-auto/gnunet-service-nat-auto_legacy.c:784 5246#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
5214#: src/nat-auto/gnunet-service-nat-auto_legacy.c:844 5247#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
5215msgid "No working gnunet-helper-nat-server found\n" 5248msgid "No working gnunet-helper-nat-server found\n"
5216msgstr "" 5249msgstr ""
5217 5250
5218#: src/nat-auto/gnunet-service-nat-auto_legacy.c:821 5251#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
5219msgid "test_icmp_client not possible, as we have no internal IPv4 address\n" 5252msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
5220msgstr "" 5253msgstr ""
5221 5254
5222#: src/nat-auto/nat_auto_api.c:74 5255#: src/nat-auto/nat_auto_api.c:76
5223msgid "Operation Successful" 5256msgid "Operation Successful"
5224msgstr "" 5257msgstr ""
5225 5258
5226#: src/nat-auto/nat_auto_api.c:76 5259#: src/nat-auto/nat_auto_api.c:78
5227msgid "IPC failure" 5260msgid "IPC failure"
5228msgstr "" 5261msgstr ""
5229 5262
5230#: src/nat-auto/nat_auto_api.c:78 5263#: src/nat-auto/nat_auto_api.c:80
5231msgid "Failure in network subsystem, check permissions." 5264msgid "Failure in network subsystem, check permissions."
5232msgstr "" 5265msgstr ""
5233 5266
5234#: src/nat-auto/nat_auto_api.c:80 5267#: src/nat-auto/nat_auto_api.c:82
5235msgid "Encountered timeout while performing operation" 5268msgid "Encountered timeout while performing operation"
5236msgstr "" 5269msgstr ""
5237 5270
5238#: src/nat-auto/nat_auto_api.c:82 5271#: src/nat-auto/nat_auto_api.c:84
5239msgid "detected that we are offline" 5272msgid "detected that we are offline"
5240msgstr "" 5273msgstr ""
5241 5274
5242#: src/nat-auto/nat_auto_api.c:84 5275#: src/nat-auto/nat_auto_api.c:86
5243msgid "`upnpc` command not found" 5276msgid "`upnpc` command not found"
5244msgstr "" 5277msgstr ""
5245 5278
5246#: src/nat-auto/nat_auto_api.c:86 5279#: src/nat-auto/nat_auto_api.c:88
5247#, fuzzy 5280#, fuzzy
5248msgid "Failed to run `upnpc` command" 5281msgid "Failed to run `upnpc` command"
5249msgstr "运行 %s失败:%s %d\n" 5282msgstr "运行 %s失败:%s %d\n"
5250 5283
5251#: src/nat-auto/nat_auto_api.c:88 5284#: src/nat-auto/nat_auto_api.c:90
5252msgid "`upnpc' command took too long, process killed" 5285msgid "`upnpc' command took too long, process killed"
5253msgstr "" 5286msgstr ""
5254 5287
5255#: src/nat-auto/nat_auto_api.c:90 5288#: src/nat-auto/nat_auto_api.c:92
5256msgid "`upnpc' command failed to establish port mapping" 5289msgid "`upnpc' command failed to establish port mapping"
5257msgstr "" 5290msgstr ""
5258 5291
5259#: src/nat-auto/nat_auto_api.c:92 5292#: src/nat-auto/nat_auto_api.c:94
5260msgid "`external-ip' command not found" 5293msgid "`external-ip' command not found"
5261msgstr "" 5294msgstr ""
5262 5295
5263#: src/nat-auto/nat_auto_api.c:94 5296#: src/nat-auto/nat_auto_api.c:96
5264#, fuzzy 5297#, fuzzy
5265msgid "Failed to run `external-ip` command" 5298msgid "Failed to run `external-ip` command"
5266msgstr "运行 %s失败:%s %d\n" 5299msgstr "运行 %s失败:%s %d\n"
5267 5300
5268#: src/nat-auto/nat_auto_api.c:96 5301#: src/nat-auto/nat_auto_api.c:98
5269msgid "`external-ip' command output invalid" 5302msgid "`external-ip' command output invalid"
5270msgstr "" 5303msgstr ""
5271 5304
5272#: src/nat-auto/nat_auto_api.c:98 5305#: src/nat-auto/nat_auto_api.c:100
5273msgid "no valid address was returned by `external-ip'" 5306msgid "no valid address was returned by `external-ip'"
5274msgstr "" 5307msgstr ""
5275 5308
5276#: src/nat-auto/nat_auto_api.c:100 5309#: src/nat-auto/nat_auto_api.c:102
5277#, fuzzy 5310#, fuzzy
5278msgid "Could not determine interface with internal/local network address" 5311msgid "Could not determine interface with internal/local network address"
5279msgstr "无法确定用户界面定义文件。" 5312msgstr "无法确定用户界面定义文件。"
5280 5313
5281#: src/nat-auto/nat_auto_api.c:102 5314#: src/nat-auto/nat_auto_api.c:104
5282msgid "No functioning gnunet-helper-nat-server installation found" 5315msgid "No functioning gnunet-helper-nat-server installation found"
5283msgstr "" 5316msgstr ""
5284 5317
5285#: src/nat-auto/nat_auto_api.c:104 5318#: src/nat-auto/nat_auto_api.c:106
5286msgid "NAT test could not be initialized" 5319msgid "NAT test could not be initialized"
5287msgstr "" 5320msgstr ""
5288 5321
5289#: src/nat-auto/nat_auto_api.c:106 5322#: src/nat-auto/nat_auto_api.c:108
5290msgid "NAT test timeout reached" 5323msgid "NAT test timeout reached"
5291msgstr "" 5324msgstr ""
5292 5325
5293#: src/nat-auto/nat_auto_api.c:108 5326#: src/nat-auto/nat_auto_api.c:110
5294msgid "could not register NAT" 5327msgid "could not register NAT"
5295msgstr "" 5328msgstr ""
5296 5329
5297#: src/nat-auto/nat_auto_api.c:110 5330#: src/nat-auto/nat_auto_api.c:112
5298msgid "No working gnunet-helper-nat-client installation found" 5331msgid "No working gnunet-helper-nat-client installation found"
5299msgstr "" 5332msgstr ""
5300 5333
5301#: src/nat-auto/nat_auto_api_test.c:475 5334#: src/nat-auto/nat_auto_api_test.c:481
5302#, fuzzy, c-format 5335#, fuzzy, c-format
5303msgid "Failed to find valid PORT in section `%s'\n" 5336msgid "Failed to find valid PORT in section `%s'\n"
5304msgstr "解析配置文件“%s”失败\n" 5337msgstr "解析配置文件“%s”失败\n"
5305 5338
5306#: src/nat-auto/nat_auto_api_test.c:520 5339#: src/nat-auto/nat_auto_api_test.c:526
5307#, fuzzy, c-format 5340#, fuzzy, c-format
5308msgid "Failed to create socket bound to `%s' for NAT test: %s\n" 5341msgid "Failed to create socket bound to `%s' for NAT test: %s\n"
5309msgstr "解析配置文件“%s”失败\n" 5342msgstr "解析配置文件“%s”失败\n"
5310 5343
5311#: src/nat/gnunet-nat.c:429 5344#: src/nat/gnunet-nat.c:437
5312msgid "which IP and port are we locally using to bind/listen to" 5345msgid "which IP and port are we locally using to bind/listen to"
5313msgstr "" 5346msgstr ""
5314 5347
5315#: src/nat/gnunet-nat.c:435 5348#: src/nat/gnunet-nat.c:443
5316msgid "which remote IP and port should be asked for connection reversal" 5349msgid "which remote IP and port should be asked for connection reversal"
5317msgstr "" 5350msgstr ""
5318 5351
5319#: src/nat/gnunet-nat.c:441 5352#: src/nat/gnunet-nat.c:449
5320msgid "" 5353msgid ""
5321"name of configuration section to find additional options, such as manual " 5354"name of configuration section to find additional options, such as manual "
5322"host punching data" 5355"host punching data"
5323msgstr "" 5356msgstr ""
5324 5357
5325#: src/nat/gnunet-nat.c:446 5358#: src/nat/gnunet-nat.c:454
5326msgid "enable STUN processing" 5359msgid "enable STUN processing"
5327msgstr "" 5360msgstr ""
5328 5361
5329#: src/nat/gnunet-nat.c:461 5362#: src/nat/gnunet-nat.c:469
5330msgid "watch for connection reversal requests" 5363msgid "watch for connection reversal requests"
5331msgstr "" 5364msgstr ""
5332 5365
5333#: src/nat/gnunet-nat.c:473 5366#: src/nat/gnunet-nat.c:481
5334msgid "GNUnet NAT traversal autoconfigure daemon" 5367msgid "GNUnet NAT traversal autoconfigure daemon"
5335msgstr "" 5368msgstr ""
5336 5369
5337#: src/nat/gnunet-service-nat.c:1337 5370#: src/nat/gnunet-service-nat.c:1339
5338#, c-format 5371#, c-format
5339msgid "Malformed punched hole specification `%s' (lacks port)\n" 5372msgid "Malformed punched hole specification `%s' (lacks port)\n"
5340msgstr "" 5373msgstr ""
5341 5374
5342#: src/nat/gnunet-service-nat.c:1347 5375#: src/nat/gnunet-service-nat.c:1349
5343#, c-format 5376#, c-format
5344msgid "Invalid port number in punched hole specification `%s' (lacks port)\n" 5377msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
5345msgstr "" 5378msgstr ""
5346 5379
5347#: src/nat/gnunet-service-nat.c:1363 5380#: src/nat/gnunet-service-nat.c:1365
5348#, c-format 5381#, c-format
5349msgid "Malformed punched hole specification `%s' (lacks `]')\n" 5382msgid "Malformed punched hole specification `%s' (lacks `]')\n"
5350msgstr "" 5383msgstr ""
5351 5384
5352#: src/nat/gnunet-service-nat.c:1374 5385#: src/nat/gnunet-service-nat.c:1376
5353#, c-format 5386#, c-format
5354msgid "Malformed punched hole specification `%s' (IPv6 address invalid)" 5387msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
5355msgstr "" 5388msgstr ""
5356 5389
5357#: src/nat/gnunet-service-nat.c:1839 5390#: src/nat/gnunet-service-nat.c:1841
5358msgid "Connection reversal request failed\n" 5391msgid "Connection reversal request failed\n"
5359msgstr "" 5392msgstr ""
5360 5393
5361#: src/nat/gnunet-service-nat.c:1912 5394#: src/nat/gnunet-service-nat.c:1914
5362msgid "" 5395msgid ""
5363"UPnP enabled in configuration, but UPnP client `upnpc` command not found, " 5396"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
5364"disabling UPnP\n" 5397"disabling UPnP\n"
5365msgstr "" 5398msgstr ""
5366 5399
5367#: src/nat/gnunet-service-nat_helper.c:184 5400#: src/nat/gnunet-service-nat_helper.c:186
5368#, c-format 5401#, c-format
5369msgid "gnunet-helper-nat-server generated malformed address `%s'\n" 5402msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
5370msgstr "" 5403msgstr ""
5371 5404
5372#: src/nat/gnunet-service-nat_helper.c:271 5405#: src/nat/gnunet-service-nat_helper.c:273
5373#, fuzzy, c-format 5406#, fuzzy, c-format
5374msgid "Failed to start %s\n" 5407msgid "Failed to start %s\n"
5375msgstr "运行 %s失败:%s %d\n" 5408msgstr "运行 %s失败:%s %d\n"
5376 5409
5377#: src/nat/gnunet-service-nat_mini.c:194 5410#: src/nat/gnunet-service-nat_mini.c:196
5378msgid "`external-ip' command not found\n" 5411msgid "`external-ip' command not found\n"
5379msgstr "" 5412msgstr ""
5380 5413
5381#: src/nat/gnunet-service-nat_mini.c:654 5414#: src/nat/gnunet-service-nat_mini.c:656
5382msgid "`upnpc' command not found\n" 5415msgid "`upnpc' command not found\n"
5383msgstr "" 5416msgstr ""
5384 5417
5385#: src/nse/gnunet-nse.c:120 5418#: src/nse/gnunet-nse.c:122
5386msgid "Show network size estimates from NSE service." 5419msgid "Show network size estimates from NSE service."
5387msgstr "" 5420msgstr ""
5388 5421
5389#: src/nse/gnunet-nse-profiler.c:847 5422#: src/nse/gnunet-nse-profiler.c:849
5390msgid "limit to the number of connections to NSE services, 0 for none" 5423msgid "limit to the number of connections to NSE services, 0 for none"
5391msgstr "" 5424msgstr ""
5392 5425
5393#: src/nse/gnunet-nse-profiler.c:852 5426#: src/nse/gnunet-nse-profiler.c:854
5394msgid "name of the file for writing connection information and statistics" 5427msgid "name of the file for writing connection information and statistics"
5395msgstr "" 5428msgstr ""
5396 5429
5397#: src/nse/gnunet-nse-profiler.c:864 5430#: src/nse/gnunet-nse-profiler.c:866
5398msgid "name of the file for writing the main results" 5431msgid "name of the file for writing the main results"
5399msgstr "" 5432msgstr ""
5400 5433
5401#: src/nse/gnunet-nse-profiler.c:871 5434#: src/nse/gnunet-nse-profiler.c:873
5402msgid "Number of peers to run in each round, separated by commas" 5435msgid "Number of peers to run in each round, separated by commas"
5403msgstr "" 5436msgstr ""
5404 5437
5405#: src/nse/gnunet-nse-profiler.c:882 5438#: src/nse/gnunet-nse-profiler.c:884
5406msgid "delay between rounds" 5439msgid "delay between rounds"
5407msgstr "" 5440msgstr ""
5408 5441
5409#: src/nse/gnunet-nse-profiler.c:891 5442#: src/nse/gnunet-nse-profiler.c:893
5410#, fuzzy 5443#, fuzzy
5411msgid "Measure quality and performance of the NSE service." 5444msgid "Measure quality and performance of the NSE service."
5412msgstr "无法访问该服务" 5445msgstr "无法访问该服务"
5413 5446
5414#: src/nse/gnunet-service-nse.c:1532 5447#: src/nse/gnunet-service-nse.c:1534
5415#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:274 5448#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
5416#, fuzzy 5449#, fuzzy
5417msgid "Value is too large.\n" 5450msgid "Value is too large.\n"
5418msgstr "值不在合法范围内。" 5451msgstr "值不在合法范围内。"
5419 5452
5420#: src/peerinfo/gnunet-service-peerinfo.c:176 5453#: src/peerinfo/gnunet-service-peerinfo.c:178
5421#, c-format 5454#, c-format
5422msgid "Removing expired address of transport `%s'\n" 5455msgid "Removing expired address of transport `%s'\n"
5423msgstr "" 5456msgstr ""
5424 5457
5425#: src/peerinfo/gnunet-service-peerinfo.c:311 5458#: src/peerinfo/gnunet-service-peerinfo.c:313
5426#, fuzzy, c-format 5459#, fuzzy, c-format
5427msgid "Failed to parse HELLO in file `%s': %s\n" 5460msgid "Failed to parse HELLO in file `%s': %s\n"
5428msgstr "解析配置文件“%s”失败\n" 5461msgstr "解析配置文件“%s”失败\n"
5429 5462
5430#: src/peerinfo/gnunet-service-peerinfo.c:332 5463#: src/peerinfo/gnunet-service-peerinfo.c:334
5431#: src/peerinfo/gnunet-service-peerinfo.c:363 5464#: src/peerinfo/gnunet-service-peerinfo.c:365
5432#, fuzzy, c-format 5465#, fuzzy, c-format
5433msgid "Failed to parse HELLO in file `%s'\n" 5466msgid "Failed to parse HELLO in file `%s'\n"
5434msgstr "解析配置文件“%s”失败\n" 5467msgstr "解析配置文件“%s”失败\n"
5435 5468
5436#: src/peerinfo/gnunet-service-peerinfo.c:447 5469#: src/peerinfo/gnunet-service-peerinfo.c:449
5437msgid "# peers known" 5470msgid "# peers known"
5438msgstr "" 5471msgstr ""
5439 5472
5440#: src/peerinfo/gnunet-service-peerinfo.c:490 5473#: src/peerinfo/gnunet-service-peerinfo.c:492
5441#, c-format 5474#, c-format
5442msgid "" 5475msgid ""
5443"File `%s' in directory `%s' does not match naming convention. Removed.\n" 5476"File `%s' in directory `%s' does not match naming convention. Removed.\n"
5444msgstr "" 5477msgstr ""
5445 5478
5446#: src/peerinfo/gnunet-service-peerinfo.c:657 5479#: src/peerinfo/gnunet-service-peerinfo.c:659
5447#, fuzzy, c-format 5480#, fuzzy, c-format
5448msgid "Scanning directory `%s'\n" 5481msgid "Scanning directory `%s'\n"
5449msgstr "解析配置文件“%s”失败\n" 5482msgstr "解析配置文件“%s”失败\n"
5450 5483
5451#: src/peerinfo/gnunet-service-peerinfo.c:665 5484#: src/peerinfo/gnunet-service-peerinfo.c:667
5452#, c-format 5485#, c-format
5453msgid "Still no peers found in `%s'!\n" 5486msgid "Still no peers found in `%s'!\n"
5454msgstr "" 5487msgstr ""
5455 5488
5456#: src/peerinfo/gnunet-service-peerinfo.c:1098 5489#: src/peerinfo/gnunet-service-peerinfo.c:1100
5457#, fuzzy, c-format 5490#, fuzzy, c-format
5458msgid "Cleaning up directory `%s'\n" 5491msgid "Cleaning up directory `%s'\n"
5459msgstr "解析配置文件“%s”失败\n" 5492msgstr "解析配置文件“%s”失败\n"
5460 5493
5461#: src/peerinfo/gnunet-service-peerinfo.c:1436 5494#: src/peerinfo/gnunet-service-peerinfo.c:1438
5462#, c-format 5495#, c-format
5463msgid "Importing HELLOs from `%s'\n" 5496msgid "Importing HELLOs from `%s'\n"
5464msgstr "" 5497msgstr ""
5465 5498
5466#: src/peerinfo/gnunet-service-peerinfo.c:1449 5499#: src/peerinfo/gnunet-service-peerinfo.c:1451
5467msgid "Skipping import of included HELLOs\n" 5500msgid "Skipping import of included HELLOs\n"
5468msgstr "" 5501msgstr ""
5469 5502
5470#: src/peerinfo/peerinfo_api.c:218 5503#: src/peerinfo/peerinfo_api.c:220
5471msgid "Failed to receive response from `PEERINFO' service." 5504msgid "Failed to receive response from `PEERINFO' service."
5472msgstr "" 5505msgstr ""
5473 5506
5474#: src/peerinfo-tool/gnunet-peerinfo.c:237 5507#: src/peerinfo-tool/gnunet-peerinfo.c:239
5475#, fuzzy, c-format 5508#, fuzzy, c-format
5476msgid "%sPeer `%s'\n" 5509msgid "%sPeer `%s'\n"
5477msgstr "运行 %s失败:%s %d\n" 5510msgstr "运行 %s失败:%s %d\n"
5478 5511
5479#: src/peerinfo-tool/gnunet-peerinfo.c:244 5512#: src/peerinfo-tool/gnunet-peerinfo.c:246
5480#, c-format 5513#, c-format
5481msgid "\tExpires: %s \t %s\n" 5514msgid "\tExpires: %s \t %s\n"
5482msgstr "" 5515msgstr ""
5483 5516
5484#: src/peerinfo-tool/gnunet-peerinfo.c:297 5517#: src/peerinfo-tool/gnunet-peerinfo.c:299
5485#: src/rest-plugins/plugin_rest_peerinfo.c:499 5518#: src/rest-plugins/plugin_rest_peerinfo.c:501
5486#, fuzzy, c-format 5519#, fuzzy, c-format
5487msgid "Failure: Cannot convert address to string for peer `%s'\n" 5520msgid "Failure: Cannot convert address to string for peer `%s'\n"
5488msgstr "找不到接口“%s”的一个 IP 地址。\n" 5521msgstr "找不到接口“%s”的一个 IP 地址。\n"
5489 5522
5490#: src/peerinfo-tool/gnunet-peerinfo.c:464 5523#: src/peerinfo-tool/gnunet-peerinfo.c:466
5491#, c-format 5524#, c-format
5492msgid "Failure: Received invalid %s\n" 5525msgid "Failure: Received invalid %s\n"
5493msgstr "" 5526msgstr ""
5494 5527
5495#: src/peerinfo-tool/gnunet-peerinfo.c:478 5528#: src/peerinfo-tool/gnunet-peerinfo.c:480
5496#, fuzzy, c-format 5529#, fuzzy, c-format
5497msgid "Failed to write HELLO with %u bytes to file `%s'\n" 5530msgid "Failed to write HELLO with %u bytes to file `%s'\n"
5498msgstr "解析配置文件“%s”失败\n" 5531msgstr "解析配置文件“%s”失败\n"
5499 5532
5500#: src/peerinfo-tool/gnunet-peerinfo.c:497 5533#: src/peerinfo-tool/gnunet-peerinfo.c:499
5501#, c-format 5534#, c-format
5502msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n" 5535msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
5503msgstr "" 5536msgstr ""
5504 5537
5505#: src/peerinfo-tool/gnunet-peerinfo.c:797 5538#: src/peerinfo-tool/gnunet-peerinfo.c:799
5506#, c-format 5539#, c-format
5507msgid "I am peer `%s'.\n" 5540msgid "I am peer `%s'.\n"
5508msgstr "" 5541msgstr ""
5509 5542
5510#: src/peerinfo-tool/gnunet-peerinfo.c:841 5543#: src/peerinfo-tool/gnunet-peerinfo.c:843
5511msgid "don't resolve host names" 5544msgid "don't resolve host names"
5512msgstr "" 5545msgstr ""
5513 5546
5514#: src/peerinfo-tool/gnunet-peerinfo.c:846 5547#: src/peerinfo-tool/gnunet-peerinfo.c:848
5515msgid "output only the identity strings" 5548msgid "output only the identity strings"
5516msgstr "" 5549msgstr ""
5517 5550
5518#: src/peerinfo-tool/gnunet-peerinfo.c:850 5551#: src/peerinfo-tool/gnunet-peerinfo.c:852
5519msgid "include friend-only information" 5552msgid "include friend-only information"
5520msgstr "" 5553msgstr ""
5521 5554
5522#: src/peerinfo-tool/gnunet-peerinfo.c:855 5555#: src/peerinfo-tool/gnunet-peerinfo.c:857
5523msgid "output our own identity only" 5556msgid "output our own identity only"
5524msgstr "" 5557msgstr ""
5525 5558
5526#: src/peerinfo-tool/gnunet-peerinfo.c:860 5559#: src/peerinfo-tool/gnunet-peerinfo.c:862
5527#, fuzzy 5560#, fuzzy
5528msgid "list all known peers" 5561msgid "list all known peers"
5529msgstr "列出所有网络适配器" 5562msgstr "列出所有网络适配器"
5530 5563
5531#: src/peerinfo-tool/gnunet-peerinfo.c:866 5564#: src/peerinfo-tool/gnunet-peerinfo.c:868
5532msgid "dump hello to file" 5565msgid "dump hello to file"
5533msgstr "" 5566msgstr ""
5534 5567
5535#: src/peerinfo-tool/gnunet-peerinfo.c:871 5568#: src/peerinfo-tool/gnunet-peerinfo.c:873
5536msgid "also output HELLO uri(s)" 5569msgid "also output HELLO uri(s)"
5537msgstr "" 5570msgstr ""
5538 5571
5539#: src/peerinfo-tool/gnunet-peerinfo.c:877 5572#: src/peerinfo-tool/gnunet-peerinfo.c:879
5540msgid "add given HELLO uri to the database" 5573msgid "add given HELLO uri to the database"
5541msgstr "" 5574msgstr ""
5542 5575
5543#: src/peerinfo-tool/gnunet-peerinfo.c:895 5576#: src/peerinfo-tool/gnunet-peerinfo.c:897
5544#, fuzzy 5577#, fuzzy
5545msgid "Print information about peers." 5578msgid "Print information about peers."
5546msgstr "无法获取有关用户“%s”的信息:%s\n" 5579msgstr "无法获取有关用户“%s”的信息:%s\n"
5547 5580
5548#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:103 5581#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
5549#: src/transport/gnunet-service-transport_plugins.c:166 5582#: src/transport/gnunet-service-transport_plugins.c:168
5550#, c-format 5583#, c-format
5551msgid "Starting transport plugins `%s'\n" 5584msgid "Starting transport plugins `%s'\n"
5552msgstr "" 5585msgstr ""
5553 5586
5554#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:107 5587#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
5555#: src/transport/gnunet-service-transport_plugins.c:171 5588#: src/transport/gnunet-service-transport_plugins.c:173
5556#, c-format 5589#, c-format
5557msgid "Loading `%s' transport plugin\n" 5590msgid "Loading `%s' transport plugin\n"
5558msgstr "" 5591msgstr ""
5559 5592
5560#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:127 5593#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
5561#: src/transport/gnunet-service-transport_plugins.c:206 5594#: src/transport/gnunet-service-transport_plugins.c:208
5562#, fuzzy, c-format 5595#, fuzzy, c-format
5563msgid "Failed to load transport plugin for `%s'\n" 5596msgid "Failed to load transport plugin for `%s'\n"
5564msgstr "解析配置文件“%s”失败\n" 5597msgstr "解析配置文件“%s”失败\n"
5565 5598
5566#: src/peerstore/gnunet-peerstore.c:89 5599#: src/peerstore/gnunet-peerstore.c:91
5567msgid "peerstore" 5600msgid "peerstore"
5568msgstr "" 5601msgstr ""
5569 5602
5570#: src/peerstore/gnunet-service-peerstore.c:596 5603#: src/peerstore/gnunet-service-peerstore.c:598
5571#, fuzzy, c-format 5604#, fuzzy, c-format
5572msgid "Could not load database backend `%s'\n" 5605msgid "Could not load database backend `%s'\n"
5573msgstr "无法解析“%s”(%s):%s\n" 5606msgstr "无法解析“%s”(%s):%s\n"
5574 5607
5575#: src/peerstore/peerstore_api.c:348 5608#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
5576msgid "timeout"
5577msgstr ""
5578
5579#: src/peerstore/peerstore_api.c:564 src/peerstore/peerstore_api.c:613
5580#, fuzzy 5609#, fuzzy
5581msgid "Unexpected iteration response, this should not happen.\n" 5610msgid "Unexpected iteration response, this should not happen.\n"
5582msgstr "输出格式未知,不应出现这种情况。\n" 5611msgstr "输出格式未知,不应出现这种情况。\n"
5583 5612
5584#: src/peerstore/peerstore_api.c:627 5613#: src/peerstore/peerstore_api.c:595
5585#, fuzzy 5614#, fuzzy
5586msgid "Received a malformed response from service." 5615msgid "Received a malformed response from service."
5587msgstr "“%s”的参数无效。\n" 5616msgstr "“%s”的参数无效。\n"
5588 5617
5589#: src/peerstore/peerstore_api.c:776 5618#: src/peerstore/peerstore_api.c:731
5590msgid "Received a watch result for a non existing watch.\n" 5619msgid "Received a watch result for a non existing watch.\n"
5591msgstr "" 5620msgstr ""
5592 5621
5593#: src/peerstore/plugin_peerstore_sqlite.c:451 5622#: src/peerstore/plugin_peerstore_sqlite.c:453
5594#: src/psycstore/plugin_psycstore_sqlite.c:280
5595#, fuzzy, c-format 5623#, fuzzy, c-format
5596msgid "" 5624msgid ""
5597"Error executing SQL query: %s\n" 5625"Error executing SQL query: %s\n"
5598" %s\n" 5626" %s\n"
5599msgstr "创建用户出错" 5627msgstr "创建用户出错"
5600 5628
5601#: src/peerstore/plugin_peerstore_sqlite.c:486 5629#: src/peerstore/plugin_peerstore_sqlite.c:488
5602#: src/psycstore/plugin_psycstore_mysql.c:248
5603#: src/psycstore/plugin_psycstore_sqlite.c:257
5604#, fuzzy, c-format 5630#, fuzzy, c-format
5605msgid "" 5631msgid ""
5606"Error preparing SQL query: %s\n" 5632"Error preparing SQL query: %s\n"
5607" %s\n" 5633" %s\n"
5608msgstr "创建用户出错" 5634msgstr "创建用户出错"
5609 5635
5610#: src/peerstore/plugin_peerstore_sqlite.c:568 5636#: src/peerstore/plugin_peerstore_sqlite.c:570
5611#, fuzzy, c-format 5637#, fuzzy, c-format
5612msgid "Unable to create indices: %s.\n" 5638msgid "Unable to create indices: %s.\n"
5613msgstr "发送消息失败。\n" 5639msgstr "发送消息失败。\n"
5614 5640
5615#: src/pq/pq_prepare.c:82 5641#: src/pq/pq_prepare.c:84
5616#, fuzzy, c-format 5642#, fuzzy, c-format
5617msgid "PQprepare (`%s' as `%s') failed with error: %s\n" 5643msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
5618msgstr "“%s”于 %s:%d 处失败,错误为:%s\n" 5644msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
5619 5645
5620#: src/psycstore/gnunet-service-psycstore.c:247 5646#: src/pt/gnunet-daemon-pt.c:423
5621#, fuzzy
5622msgid "Failed to store membership information!\n"
5623msgstr "打开日志文件“%s”失败:%s\n"
5624
5625#: src/psycstore/gnunet-service-psycstore.c:269
5626#, fuzzy
5627msgid "Failed to test membership!\n"
5628msgstr "发送消息失败。\n"
5629
5630#: src/psycstore/gnunet-service-psycstore.c:298
5631#, fuzzy
5632msgid "Dropping invalid fragment\n"
5633msgstr "“%s”的参数无效。\n"
5634
5635#: src/psycstore/gnunet-service-psycstore.c:309
5636#, fuzzy
5637msgid "Failed to store fragment\n"
5638msgstr "运行 %s失败:%s %d\n"
5639
5640#: src/psycstore/gnunet-service-psycstore.c:366
5641#, fuzzy
5642msgid "Failed to get fragment!\n"
5643msgstr "发送消息失败。\n"
5644
5645#: src/psycstore/gnunet-service-psycstore.c:432
5646#, fuzzy
5647msgid "Failed to get message!\n"
5648msgstr "发送消息失败。\n"
5649
5650#: src/psycstore/gnunet-service-psycstore.c:462
5651#, fuzzy
5652msgid "Failed to get message fragment!\n"
5653msgstr "打开日志文件“%s”失败:%s\n"
5654
5655#: src/psycstore/gnunet-service-psycstore.c:492
5656#, fuzzy
5657msgid "Failed to get master counters!\n"
5658msgstr "发送消息失败。\n"
5659
5660#: src/psycstore/gnunet-service-psycstore.c:673
5661#, fuzzy, c-format
5662msgid "Failed to begin modifying state: %d\n"
5663msgstr "运行 %s失败:%s %d\n"
5664
5665#: src/psycstore/gnunet-service-psycstore.c:683
5666#, fuzzy, c-format
5667msgid "Failed to modify state: %d\n"
5668msgstr "运行 %s失败:%s %d\n"
5669
5670#: src/psycstore/gnunet-service-psycstore.c:691
5671#, fuzzy
5672msgid "Failed to end modifying state!\n"
5673msgstr "运行 %s失败:%s %d\n"
5674
5675#: src/psycstore/gnunet-service-psycstore.c:728
5676msgid "Tried to set invalid state variable name!\n"
5677msgstr ""
5678
5679#: src/psycstore/gnunet-service-psycstore.c:742
5680#, fuzzy
5681msgid "Failed to begin synchronizing state!\n"
5682msgstr "发送消息失败。\n"
5683
5684#: src/psycstore/gnunet-service-psycstore.c:759
5685#, fuzzy
5686msgid "Failed to end synchronizing state!\n"
5687msgstr "发送消息失败。\n"
5688
5689#: src/psycstore/gnunet-service-psycstore.c:777
5690#: src/psycstore/gnunet-service-psycstore.c:793
5691#, fuzzy
5692msgid "Failed to reset state!\n"
5693msgstr "发送消息失败。\n"
5694
5695#: src/psycstore/gnunet-service-psycstore.c:822
5696#: src/psycstore/gnunet-service-psycstore.c:879
5697msgid "Tried to get invalid state variable name!\n"
5698msgstr ""
5699
5700#: src/psycstore/gnunet-service-psycstore.c:849
5701#: src/psycstore/gnunet-service-psycstore.c:894
5702#, fuzzy
5703msgid "Failed to get state variable!\n"
5704msgstr "发送消息失败。\n"
5705
5706#: src/psycstore/plugin_psycstore_mysql.c:279
5707#, fuzzy
5708msgid "Unable to initialize Mysql.\n"
5709msgstr "无法初始化 SQLite:%s。\n"
5710
5711#: src/psycstore/plugin_psycstore_mysql.c:289
5712#, fuzzy, c-format
5713msgid "Failed to run SQL statement `%s'\n"
5714msgstr "解析配置文件“%s”失败\n"
5715
5716#: src/psycstore/plugin_psycstore_sqlite.c:59
5717#, fuzzy, c-format
5718msgid "`%s' failed at %s:%d with error: %s (%d)\n"
5719msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
5720
5721#: src/psycstore/plugin_psycstore_sqlite.c:1922
5722#, fuzzy
5723msgid "SQLite database running\n"
5724msgstr "sqlite 数据仓库"
5725
5726#: src/pt/gnunet-daemon-pt.c:421
5727msgid "Failed to pack DNS request. Dropping.\n" 5647msgid "Failed to pack DNS request. Dropping.\n"
5728msgstr "" 5648msgstr ""
5729 5649
5730#: src/pt/gnunet-daemon-pt.c:427 5650#: src/pt/gnunet-daemon-pt.c:429
5731msgid "# DNS requests mapped to VPN" 5651msgid "# DNS requests mapped to VPN"
5732msgstr "" 5652msgstr ""
5733 5653
5734#: src/pt/gnunet-daemon-pt.c:481 5654#: src/pt/gnunet-daemon-pt.c:483
5735msgid "# DNS records modified" 5655msgid "# DNS records modified"
5736msgstr "" 5656msgstr ""
5737 5657
5738#: src/pt/gnunet-daemon-pt.c:665 5658#: src/pt/gnunet-daemon-pt.c:667
5739msgid "# DNS replies intercepted" 5659msgid "# DNS replies intercepted"
5740msgstr "" 5660msgstr ""
5741 5661
5742#: src/pt/gnunet-daemon-pt.c:672 5662#: src/pt/gnunet-daemon-pt.c:674
5743msgid "Failed to parse DNS request. Dropping.\n" 5663msgid "Failed to parse DNS request. Dropping.\n"
5744msgstr "" 5664msgstr ""
5745 5665
5746#: src/pt/gnunet-daemon-pt.c:710 5666#: src/pt/gnunet-daemon-pt.c:712
5747msgid "# DNS requests dropped (timeout)" 5667msgid "# DNS requests dropped (timeout)"
5748msgstr "" 5668msgstr ""
5749 5669
5750#: src/pt/gnunet-daemon-pt.c:766 5670#: src/pt/gnunet-daemon-pt.c:768
5751msgid "# DNS requests intercepted" 5671msgid "# DNS requests intercepted"
5752msgstr "" 5672msgstr ""
5753 5673
5754#: src/pt/gnunet-daemon-pt.c:771 5674#: src/pt/gnunet-daemon-pt.c:773
5755msgid "# DNS requests dropped (DNS cadet channel down)" 5675msgid "# DNS requests dropped (DNS cadet channel down)"
5756msgstr "" 5676msgstr ""
5757 5677
5758#: src/pt/gnunet-daemon-pt.c:779 5678#: src/pt/gnunet-daemon-pt.c:781
5759msgid "# DNS requests dropped (malformed)" 5679msgid "# DNS requests dropped (malformed)"
5760msgstr "" 5680msgstr ""
5761 5681
5762#: src/pt/gnunet-daemon-pt.c:874 5682#: src/pt/gnunet-daemon-pt.c:876
5763msgid "# DNS replies received" 5683msgid "# DNS replies received"
5764msgstr "" 5684msgstr ""
5765 5685
5766#: src/pt/gnunet-daemon-pt.c:891 5686#: src/pt/gnunet-daemon-pt.c:893
5767msgid "# DNS replies dropped (too late?)" 5687msgid "# DNS replies dropped (too late?)"
5768msgstr "" 5688msgstr ""
5769 5689
5770#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226 5690#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
5771#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251 5691#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
5772#: src/pt/gnunet-daemon-pt.c:1260 5692#: src/pt/gnunet-daemon-pt.c:1262
5773#, fuzzy, c-format 5693#, fuzzy, c-format
5774msgid "Failed to connect to %s service. Exiting.\n" 5694msgid "Failed to connect to %s service. Exiting.\n"
5775msgstr "初始化“%s”服务失败。\n" 5695msgstr "初始化“%s”服务失败。\n"
5776 5696
5777#: src/pt/gnunet-daemon-pt.c:1305 5697#: src/pt/gnunet-daemon-pt.c:1307
5778msgid "Daemon to run to perform IP protocol translation to GNUnet" 5698msgid "Daemon to run to perform IP protocol translation to GNUnet"
5779msgstr "" 5699msgstr ""
5780 5700
5781#: src/reclaim/gnunet-reclaim.c:465 5701#: src/reclaim/gnunet-reclaim.c:467
5782#, fuzzy, c-format 5702#, fuzzy, c-format
5783msgid "Ego is required\n" 5703msgid "Ego is required\n"
5784msgstr "%s:选项“%s”有歧义\n" 5704msgstr "%s:选项“%s”有歧义\n"
5785 5705
5786#: src/reclaim/gnunet-reclaim.c:473 5706#: src/reclaim/gnunet-reclaim.c:475
5787#, c-format 5707#, c-format
5788msgid "Attribute value missing!\n" 5708msgid "Attribute value missing!\n"
5789msgstr "" 5709msgstr ""
5790 5710
5791#: src/reclaim/gnunet-reclaim.c:481 5711#: src/reclaim/gnunet-reclaim.c:483
5792#, fuzzy, c-format 5712#, fuzzy, c-format
5793msgid "Requesting party key is required!\n" 5713msgid "Requesting party key is required!\n"
5794msgstr "设置要使用的昵称(必须)" 5714msgstr "设置要使用的昵称(必须)"
5795 5715
5796#: src/reclaim/gnunet-reclaim.c:504 5716#: src/reclaim/gnunet-reclaim.c:506
5797msgid "Add attribute" 5717msgid "Add attribute"
5798msgstr "" 5718msgstr ""
5799 5719
5800#: src/reclaim/gnunet-reclaim.c:510 5720#: src/reclaim/gnunet-reclaim.c:512
5801msgid "Attribute value" 5721msgid "Attribute value"
5802msgstr "" 5722msgstr ""
5803 5723
5804#: src/reclaim/gnunet-reclaim.c:515 5724#: src/reclaim/gnunet-reclaim.c:517
5805msgid "Ego" 5725msgid "Ego"
5806msgstr "" 5726msgstr ""
5807 5727
5808#: src/reclaim/gnunet-reclaim.c:520 5728#: src/reclaim/gnunet-reclaim.c:522
5809msgid "Audience (relying party)" 5729msgid "Audience (relying party)"
5810msgstr "" 5730msgstr ""
5811 5731
5812#: src/reclaim/gnunet-reclaim.c:524 5732#: src/reclaim/gnunet-reclaim.c:526
5813msgid "List attributes for Ego" 5733msgid "List attributes for Ego"
5814msgstr "" 5734msgstr ""
5815 5735
5816#: src/reclaim/gnunet-reclaim.c:529 5736#: src/reclaim/gnunet-reclaim.c:531
5817msgid "Issue a ticket" 5737msgid "Issue a ticket"
5818msgstr "" 5738msgstr ""
5819 5739
5820#: src/reclaim/gnunet-reclaim.c:534 5740#: src/reclaim/gnunet-reclaim.c:536
5821msgid "Consume a ticket" 5741msgid "Consume a ticket"
5822msgstr "" 5742msgstr ""
5823 5743
5824#: src/reclaim/gnunet-reclaim.c:539 5744#: src/reclaim/gnunet-reclaim.c:541
5825msgid "Revoke a ticket" 5745msgid "Revoke a ticket"
5826msgstr "" 5746msgstr ""
5827 5747
5828#: src/reclaim/gnunet-reclaim.c:544 5748#: src/reclaim/gnunet-reclaim.c:546
5829msgid "Type of attribute" 5749msgid "Type of attribute"
5830msgstr "" 5750msgstr ""
5831 5751
5832#: src/reclaim/gnunet-reclaim.c:549 5752#: src/reclaim/gnunet-reclaim.c:551
5833msgid "Expiration interval of the attribute" 5753msgid "Expiration interval of the attribute"
5834msgstr "" 5754msgstr ""
5835 5755
5836#: src/reclaim/reclaim_api.c:434 5756#: src/reclaim/reclaim_api.c:436
5837#, fuzzy 5757#, fuzzy
5838msgid "failed to store record\n" 5758msgid "failed to store record\n"
5839msgstr "运行 %s失败:%s %d\n" 5759msgstr "运行 %s失败:%s %d\n"
5840 5760
5841#: src/regex/gnunet-daemon-regexprofiler.c:265 5761#: src/regex/gnunet-daemon-regexprofiler.c:267
5842#, fuzzy, c-format 5762#, fuzzy, c-format
5843msgid "%s service is lacking key configuration settings (%s). Exiting.\n" 5763msgid "%s service is lacking key configuration settings (%s). Exiting.\n"
5844msgstr "立即保存配置?" 5764msgstr "立即保存配置?"
5845 5765
5846#: src/regex/gnunet-daemon-regexprofiler.c:378 5766#: src/regex/gnunet-daemon-regexprofiler.c:380
5847msgid "Daemon to announce regular expressions for the peer using cadet." 5767msgid "Daemon to announce regular expressions for the peer using cadet."
5848msgstr "" 5768msgstr ""
5849 5769
5850#: src/regex/gnunet-regex-profiler.c:1384 5770#: src/regex/gnunet-regex-profiler.c:1386
5851msgid "No configuration file given. Exiting\n" 5771msgid "No configuration file given. Exiting\n"
5852msgstr "" 5772msgstr ""
5853 5773
5854#: src/regex/gnunet-regex-profiler.c:1425 5774#: src/regex/gnunet-regex-profiler.c:1427
5855#: src/regex/gnunet-regex-simulation-profiler.c:628 5775#: src/regex/gnunet-regex-simulation-profiler.c:630
5856#, c-format 5776#, c-format
5857msgid "No policy directory specified on command line. Exiting.\n" 5777msgid "No policy directory specified on command line. Exiting.\n"
5858msgstr "" 5778msgstr ""
5859 5779
5860#: src/regex/gnunet-regex-profiler.c:1431 5780#: src/regex/gnunet-regex-profiler.c:1433
5861#: src/regex/gnunet-regex-simulation-profiler.c:636 5781#: src/regex/gnunet-regex-simulation-profiler.c:638
5862#, c-format 5782#, c-format
5863msgid "Specified policies directory does not exist. Exiting.\n" 5783msgid "Specified policies directory does not exist. Exiting.\n"
5864msgstr "" 5784msgstr ""
5865 5785
5866#: src/regex/gnunet-regex-profiler.c:1438 5786#: src/regex/gnunet-regex-profiler.c:1440
5867#, fuzzy, c-format 5787#, fuzzy, c-format
5868msgid "No files found in `%s'\n" 5788msgid "No files found in `%s'\n"
5869msgstr "运行 %s失败:%s %d\n" 5789msgstr "运行 %s失败:%s %d\n"
5870 5790
5871#: src/regex/gnunet-regex-profiler.c:1447 5791#: src/regex/gnunet-regex-profiler.c:1449
5872msgid "No search strings file given. Exiting.\n" 5792msgid "No search strings file given. Exiting.\n"
5873msgstr "" 5793msgstr ""
5874 5794
5875#: src/regex/gnunet-regex-profiler.c:1467 5795#: src/regex/gnunet-regex-profiler.c:1469
5876#, fuzzy 5796#, fuzzy
5877msgid "Error loading search strings. Exiting.\n" 5797msgid "Error loading search strings. Exiting.\n"
5878msgstr "创建用户出错" 5798msgstr "创建用户出错"
5879 5799
5880#: src/regex/gnunet-regex-profiler.c:1555 5800#: src/regex/gnunet-regex-profiler.c:1557
5881#, fuzzy 5801#, fuzzy
5882msgid "name of the file for writing statistics" 5802msgid "name of the file for writing statistics"
5883msgstr "初始化“%s”服务失败。\n" 5803msgstr "初始化“%s”服务失败。\n"
5884 5804
5885#: src/regex/gnunet-regex-profiler.c:1561 5805#: src/regex/gnunet-regex-profiler.c:1563
5886msgid "wait TIMEOUT before ending the experiment" 5806msgid "wait TIMEOUT before ending the experiment"
5887msgstr "" 5807msgstr ""
5888 5808
5889#: src/regex/gnunet-regex-profiler.c:1567 5809#: src/regex/gnunet-regex-profiler.c:1569
5890msgid "directory with policy files" 5810msgid "directory with policy files"
5891msgstr "" 5811msgstr ""
5892 5812
5893#: src/regex/gnunet-regex-profiler.c:1574 5813#: src/regex/gnunet-regex-profiler.c:1576
5894#, fuzzy 5814#, fuzzy
5895msgid "name of file with input strings" 5815msgid "name of file with input strings"
5896msgstr "初始化“%s”服务失败。\n" 5816msgstr "初始化“%s”服务失败。\n"
5897 5817
5898#: src/regex/gnunet-regex-profiler.c:1580 5818#: src/regex/gnunet-regex-profiler.c:1582
5899#, fuzzy 5819#, fuzzy
5900msgid "name of file with hosts' names" 5820msgid "name of file with hosts' names"
5901msgstr "初始化“%s”服务失败。\n" 5821msgstr "初始化“%s”服务失败。\n"
5902 5822
5903#: src/regex/gnunet-regex-profiler.c:1593 5823#: src/regex/gnunet-regex-profiler.c:1595
5904msgid "Profiler for regex" 5824msgid "Profiler for regex"
5905msgstr "" 5825msgstr ""
5906 5826
5907#: src/regex/gnunet-regex-simulation-profiler.c:697 5827#: src/regex/gnunet-regex-simulation-profiler.c:699
5908msgid "name of the table to write DFAs" 5828msgid "name of the table to write DFAs"
5909msgstr "" 5829msgstr ""
5910 5830
5911#: src/regex/gnunet-regex-simulation-profiler.c:703 5831#: src/regex/gnunet-regex-simulation-profiler.c:705
5912msgid "maximum path compression length" 5832msgid "maximum path compression length"
5913msgstr "" 5833msgstr ""
5914 5834
5915#: src/regex/gnunet-regex-simulation-profiler.c:717 5835#: src/regex/gnunet-regex-simulation-profiler.c:719
5916msgid "Profiler for regex library" 5836msgid "Profiler for regex library"
5917msgstr "" 5837msgstr ""
5918 5838
5919#: src/regex/regex_api_announce.c:150 5839#: src/regex/regex_api_announce.c:152
5920#, fuzzy, c-format 5840#, fuzzy, c-format
5921msgid "Regex `%s' is too long!\n" 5841msgid "Regex `%s' is too long!\n"
5922msgstr "服务已删除。\n" 5842msgstr "服务已删除。\n"
5923 5843
5924#: src/regex/regex_api_search.c:210 5844#: src/regex/regex_api_search.c:212
5925#, fuzzy, c-format 5845#, fuzzy, c-format
5926msgid "Search string `%s' is too long!\n" 5846msgid "Search string `%s' is too long!\n"
5927msgstr "服务已删除。\n" 5847msgstr "服务已删除。\n"
5928 5848
5929#: src/rest/gnunet-rest-server.c:925 5849#: src/rest/gnunet-rest-server.c:927
5930msgid "listen on specified port (default: 7776)" 5850msgid "listen on specified port (default: 7776)"
5931msgstr "" 5851msgstr ""
5932 5852
5933#: src/rest/gnunet-rest-server.c:942 5853#: src/rest/gnunet-rest-server.c:944
5934#, fuzzy 5854#, fuzzy
5935msgid "GNUnet REST server" 5855msgid "GNUnet REST server"
5936msgstr "GNUnet 错误日志" 5856msgstr "GNUnet 错误日志"
5937 5857
5938#: src/rest-plugins/plugin_rest_copying.c:207 5858#: src/rest-plugins/plugin_rest_copying.c:209
5939msgid "COPYING REST API initialized\n" 5859msgid "COPYING REST API initialized\n"
5940msgstr "" 5860msgstr ""
5941 5861
5942#: src/rest-plugins/plugin_rest_credential.c:1126 5862#: src/rest-plugins/plugin_rest_credential.c:1128
5943msgid "GNS REST API initialized\n" 5863msgid "GNS REST API initialized\n"
5944msgstr "" 5864msgstr ""
5945 5865
5946#: src/rest-plugins/plugin_rest_gns.c:450 5866#: src/rest-plugins/plugin_rest_gns.c:452
5947msgid "Gns REST API initialized\n" 5867msgid "Gns REST API initialized\n"
5948msgstr "" 5868msgstr ""
5949 5869
5950#: src/rest-plugins/plugin_rest_identity.c:1295 5870#: src/rest-plugins/plugin_rest_identity.c:1297
5951msgid "Identity REST API initialized\n" 5871msgid "Identity REST API initialized\n"
5952msgstr "" 5872msgstr ""
5953 5873
5954#: src/rest-plugins/plugin_rest_namestore.c:1077 5874#: src/rest-plugins/plugin_rest_namestore.c:1079
5955msgid "Namestore REST API initialized\n" 5875msgid "Namestore REST API initialized\n"
5956msgstr "" 5876msgstr ""
5957 5877
5958#: src/rest-plugins/plugin_rest_openid_connect.c:2135 5878#: src/rest-plugins/plugin_rest_openid_connect.c:2245
5959#: src/rest-plugins/plugin_rest_reclaim.c:1079 5879#: src/rest-plugins/plugin_rest_reclaim.c:1079
5960msgid "Identity Provider REST API initialized\n" 5880msgid "Identity Provider REST API initialized\n"
5961msgstr "" 5881msgstr ""
5962 5882
5963#: src/rest-plugins/plugin_rest_peerinfo.c:794 5883#: src/rest-plugins/plugin_rest_peerinfo.c:796
5964msgid "Peerinfo REST API initialized\n" 5884msgid "Peerinfo REST API initialized\n"
5965msgstr "" 5885msgstr ""
5966 5886
5967#: src/revocation/gnunet-revocation.c:127 5887#: src/revocation/gnunet-revocation.c:129
5968#, c-format 5888#, c-format
5969msgid "Key `%s' is valid\n" 5889msgid "Key `%s' is valid\n"
5970msgstr "" 5890msgstr ""
5971 5891
5972#: src/revocation/gnunet-revocation.c:132 5892#: src/revocation/gnunet-revocation.c:134
5973#, fuzzy, c-format 5893#, fuzzy, c-format
5974msgid "Key `%s' has been revoked\n" 5894msgid "Key `%s' has been revoked\n"
5975msgstr "服务已删除。\n" 5895msgstr "服务已删除。\n"
5976 5896
5977#: src/revocation/gnunet-revocation.c:138 5897#: src/revocation/gnunet-revocation.c:140
5978#, fuzzy 5898#, fuzzy
5979msgid "Internal error\n" 5899msgid "Internal error\n"
5980msgstr "未知错误。\n" 5900msgstr "未知错误。\n"
5981 5901
5982#: src/revocation/gnunet-revocation.c:164 5902#: src/revocation/gnunet-revocation.c:166
5983#, c-format 5903#, c-format
5984msgid "Key for ego `%s' is still valid, revocation failed (!)\n" 5904msgid "Key for ego `%s' is still valid, revocation failed (!)\n"
5985msgstr "" 5905msgstr ""
5986 5906
5987#: src/revocation/gnunet-revocation.c:169 5907#: src/revocation/gnunet-revocation.c:171
5988msgid "Revocation failed (!)\n" 5908msgid "Revocation failed (!)\n"
5989msgstr "" 5909msgstr ""
5990 5910
5991#: src/revocation/gnunet-revocation.c:174 5911#: src/revocation/gnunet-revocation.c:176
5992#, c-format 5912#, c-format
5993msgid "Key for ego `%s' has been successfully revoked\n" 5913msgid "Key for ego `%s' has been successfully revoked\n"
5994msgstr "" 5914msgstr ""
5995 5915
5996#: src/revocation/gnunet-revocation.c:179 5916#: src/revocation/gnunet-revocation.c:181
5997msgid "Revocation successful.\n" 5917msgid "Revocation successful.\n"
5998msgstr "" 5918msgstr ""
5999 5919
6000#: src/revocation/gnunet-revocation.c:184 5920#: src/revocation/gnunet-revocation.c:186
6001msgid "Internal error, key revocation might have failed\n" 5921msgid "Internal error, key revocation might have failed\n"
6002msgstr "" 5922msgstr ""
6003 5923
6004#: src/revocation/gnunet-revocation.c:321 5924#: src/revocation/gnunet-revocation.c:323
6005#, c-format 5925#, c-format
6006msgid "Revocation certificate for `%s' stored in `%s'\n" 5926msgid "Revocation certificate for `%s' stored in `%s'\n"
6007msgstr "" 5927msgstr ""
6008 5928
6009#: src/revocation/gnunet-revocation.c:350 5929#: src/revocation/gnunet-revocation.c:352
6010#, c-format 5930#, c-format
6011msgid "Ego `%s' not found.\n" 5931msgid "Ego `%s' not found.\n"
6012msgstr "" 5932msgstr ""
6013 5933
6014#: src/revocation/gnunet-revocation.c:371 5934#: src/revocation/gnunet-revocation.c:373
6015#, c-format 5935#, c-format
6016msgid "Error: revocation certificate in `%s' is not for `%s'\n" 5936msgid "Error: revocation certificate in `%s' is not for `%s'\n"
6017msgstr "" 5937msgstr ""
6018 5938
6019#: src/revocation/gnunet-revocation.c:391 5939#: src/revocation/gnunet-revocation.c:393
6020msgid "Revocation certificate ready\n" 5940msgid "Revocation certificate ready\n"
6021msgstr "" 5941msgstr ""
6022 5942
6023#: src/revocation/gnunet-revocation.c:401 5943#: src/revocation/gnunet-revocation.c:403
6024msgid "Revocation certificate not ready, calculating proof of work\n" 5944msgid "Revocation certificate not ready, calculating proof of work\n"
6025msgstr "" 5945msgstr ""
6026 5946
6027#: src/revocation/gnunet-revocation.c:435 src/social/gnunet-social.c:1178 5947#: src/revocation/gnunet-revocation.c:437
6028#, fuzzy, c-format 5948#, fuzzy, c-format
6029msgid "Public key `%s' malformed\n" 5949msgid "Public key `%s' malformed\n"
6030msgstr "“%s”的参数无效。\n" 5950msgstr "“%s”的参数无效。\n"
6031 5951
6032#: src/revocation/gnunet-revocation.c:448 5952#: src/revocation/gnunet-revocation.c:450
6033msgid "" 5953msgid ""
6034"Testing and revoking at the same time is not allowed, only executing test.\n" 5954"Testing and revoking at the same time is not allowed, only executing test.\n"
6035msgstr "" 5955msgstr ""
6036 5956
6037#: src/revocation/gnunet-revocation.c:468 5957#: src/revocation/gnunet-revocation.c:470
6038#, fuzzy 5958#, fuzzy
6039msgid "No filename to store revocation certificate given.\n" 5959msgid "No filename to store revocation certificate given.\n"
6040msgstr "解析配置文件“%s”失败\n" 5960msgstr "解析配置文件“%s”失败\n"
6041 5961
6042#: src/revocation/gnunet-revocation.c:489 5962#: src/revocation/gnunet-revocation.c:491
6043#, fuzzy, c-format 5963#, fuzzy, c-format
6044msgid "Failed to read revocation certificate from `%s'\n" 5964msgid "Failed to read revocation certificate from `%s'\n"
6045msgstr "解析配置文件“%s”失败\n" 5965msgstr "解析配置文件“%s”失败\n"
6046 5966
6047#: src/revocation/gnunet-revocation.c:514 5967#: src/revocation/gnunet-revocation.c:516
6048#, fuzzy 5968#, fuzzy
6049msgid "No action specified. Nothing to do.\n" 5969msgid "No action specified. Nothing to do.\n"
6050msgstr "没有指定接口,将使用默认。\n" 5970msgstr "没有指定接口,将使用默认。\n"
6051 5971
6052#: src/revocation/gnunet-revocation.c:533 5972#: src/revocation/gnunet-revocation.c:535
6053msgid "use NAME for the name of the revocation file" 5973msgid "use NAME for the name of the revocation file"
6054msgstr "" 5974msgstr ""
6055 5975
6056#: src/revocation/gnunet-revocation.c:539 5976#: src/revocation/gnunet-revocation.c:541
6057msgid "" 5977msgid ""
6058"revoke the private key associated for the the private key associated with " 5978"revoke the private key associated for the the private key associated with "
6059"the ego NAME " 5979"the ego NAME "
6060msgstr "" 5980msgstr ""
6061 5981
6062#: src/revocation/gnunet-revocation.c:544 5982#: src/revocation/gnunet-revocation.c:546
6063msgid "actually perform revocation, otherwise we just do the precomputation" 5983msgid "actually perform revocation, otherwise we just do the precomputation"
6064msgstr "" 5984msgstr ""
6065 5985
6066#: src/revocation/gnunet-revocation.c:550 5986#: src/revocation/gnunet-revocation.c:552
6067msgid "test if the public key KEY has been revoked" 5987msgid "test if the public key KEY has been revoked"
6068msgstr "" 5988msgstr ""
6069 5989
6070#: src/revocation/gnunet-service-revocation.c:457 5990#: src/revocation/gnunet-service-revocation.c:459
6071msgid "# unsupported revocations received via set union" 5991msgid "# unsupported revocations received via set union"
6072msgstr "" 5992msgstr ""
6073 5993
6074#: src/revocation/gnunet-service-revocation.c:466 5994#: src/revocation/gnunet-service-revocation.c:468
6075msgid "# revocation messages received via set union" 5995msgid "# revocation messages received via set union"
6076msgstr "" 5996msgstr ""
6077 5997
6078#: src/revocation/gnunet-service-revocation.c:471 5998#: src/revocation/gnunet-service-revocation.c:473
6079#, c-format 5999#, c-format
6080msgid "Error computing revocation set union with %s\n" 6000msgid "Error computing revocation set union with %s\n"
6081msgstr "" 6001msgstr ""
6082 6002
6083#: src/revocation/gnunet-service-revocation.c:475 6003#: src/revocation/gnunet-service-revocation.c:477
6084#, fuzzy 6004#, fuzzy
6085msgid "# revocation set unions failed" 6005msgid "# revocation set unions failed"
6086msgstr "" 6006msgstr ""
6087"\n" 6007"\n"
6088"按任意键继续\n" 6008"按任意键继续\n"
6089 6009
6090#: src/revocation/gnunet-service-revocation.c:484 6010#: src/revocation/gnunet-service-revocation.c:486
6091msgid "# revocation set unions completed" 6011msgid "# revocation set unions completed"
6092msgstr "" 6012msgstr ""
6093 6013
6094#: src/revocation/gnunet-service-revocation.c:523 6014#: src/revocation/gnunet-service-revocation.c:525
6095msgid "SET service crashed, terminating revocation service\n" 6015msgid "SET service crashed, terminating revocation service\n"
6096msgstr "" 6016msgstr ""
6097 6017
6098#: src/revocation/gnunet-service-revocation.c:865 6018#: src/revocation/gnunet-service-revocation.c:867
6099#, fuzzy 6019#, fuzzy
6100msgid "Could not open revocation database file!" 6020msgid "Could not open revocation database file!"
6101msgstr "无法连接到 %s:%u:%s\n" 6021msgstr "无法连接到 %s:%u:%s\n"
6102 6022
6103#: src/rps/gnunet-rps.c:258 6023#: src/rps/gnunet-rps.c:260
6104msgid "Seed a PeerID" 6024msgid "Seed a PeerID"
6105msgstr "" 6025msgstr ""
6106 6026
6107#: src/rps/gnunet-rps.c:262 6027#: src/rps/gnunet-rps.c:264
6108msgid "Get updates of view (0 for infinite updates)" 6028msgid "Get updates of view (0 for infinite updates)"
6109msgstr "" 6029msgstr ""
6110 6030
6111#: src/rps/gnunet-rps.c:266 6031#: src/rps/gnunet-rps.c:268
6112msgid "Get peers from biased stream" 6032msgid "Get peers from biased stream"
6113msgstr "" 6033msgstr ""
6114 6034
6115#: src/rps/gnunet-rps-profiler.c:2770 6035#: src/rps/gnunet-rps-profiler.c:2959
6116msgid "duration of the profiling" 6036msgid "duration of the profiling"
6117msgstr "" 6037msgstr ""
6118 6038
6119#: src/rps/gnunet-rps-profiler.c:2776 6039#: src/rps/gnunet-rps-profiler.c:2965
6120msgid "timeout for the profiling" 6040msgid "timeout for the profiling"
6121msgstr "" 6041msgstr ""
6122 6042
6123#: src/rps/gnunet-rps-profiler.c:2782 6043#: src/rps/gnunet-rps-profiler.c:2971
6124#, fuzzy 6044#, fuzzy
6125msgid "number of PeerIDs to request" 6045msgid "number of PeerIDs to request"
6126msgstr "迭代次数" 6046msgstr "迭代次数"
6127 6047
6128#: src/rps/gnunet-rps-profiler.c:2797 6048#: src/rps/gnunet-rps-profiler.c:2986
6129#, fuzzy 6049#, fuzzy
6130msgid "Measure quality and performance of the RPS service." 6050msgid "Measure quality and performance of the RPS service."
6131msgstr "无法访问该服务" 6051msgstr "无法访问该服务"
6132 6052
6133#: src/scalarproduct/gnunet-scalarproduct.c:218 6053#: src/scalarproduct/gnunet-scalarproduct.c:220
6134#, fuzzy 6054#, fuzzy
6135msgid "You must specify at least one message ID to check!\n" 6055msgid "You must specify at least one message ID to check!\n"
6136msgstr "您必须指定一个昵称\n" 6056msgstr "您必须指定一个昵称\n"
6137 6057
6138#: src/scalarproduct/gnunet-scalarproduct.c:225 6058#: src/scalarproduct/gnunet-scalarproduct.c:227
6139msgid "This program needs a session identifier for comparing vectors.\n" 6059msgid "This program needs a session identifier for comparing vectors.\n"
6140msgstr "" 6060msgstr ""
6141 6061
6142#: src/scalarproduct/gnunet-scalarproduct.c:238 6062#: src/scalarproduct/gnunet-scalarproduct.c:240
6143#, c-format 6063#, c-format
6144msgid "" 6064msgid ""
6145"Tried to set initiator mode, as peer ID was given. However, `%s' is not a " 6065"Tried to set initiator mode, as peer ID was given. However, `%s' is not a "
6146"valid peer identifier.\n" 6066"valid peer identifier.\n"
6147msgstr "" 6067msgstr ""
6148 6068
6149#: src/scalarproduct/gnunet-scalarproduct.c:256 6069#: src/scalarproduct/gnunet-scalarproduct.c:258
6150msgid "Need elements to compute the scalarproduct, got none.\n" 6070msgid "Need elements to compute the scalarproduct, got none.\n"
6151msgstr "" 6071msgstr ""
6152 6072
6153#: src/scalarproduct/gnunet-scalarproduct.c:278 6073#: src/scalarproduct/gnunet-scalarproduct.c:280
6154#, fuzzy, c-format 6074#, fuzzy, c-format
6155msgid "Malformed input, could not parse `%s'\n" 6075msgid "Malformed input, could not parse `%s'\n"
6156msgstr "解析配置文件“%s”失败\n" 6076msgstr "解析配置文件“%s”失败\n"
6157 6077
6158#: src/scalarproduct/gnunet-scalarproduct.c:296 6078#: src/scalarproduct/gnunet-scalarproduct.c:298
6159#, fuzzy, c-format 6079#, fuzzy, c-format
6160msgid "Could not convert `%s' to int64_t.\n" 6080msgid "Could not convert `%s' to int64_t.\n"
6161msgstr "无法连接到 %s:%u:%s\n" 6081msgstr "无法连接到 %s:%u:%s\n"
6162 6082
6163#: src/scalarproduct/gnunet-scalarproduct.c:323 6083#: src/scalarproduct/gnunet-scalarproduct.c:325
6164#, c-format 6084#, c-format
6165msgid "Failed to initiate computation, were all keys unique?\n" 6085msgid "Failed to initiate computation, were all keys unique?\n"
6166msgstr "" 6086msgstr ""
6167 6087
6168#: src/scalarproduct/gnunet-scalarproduct.c:349 6088#: src/scalarproduct/gnunet-scalarproduct.c:351
6169#: src/scalarproduct/gnunet-scalarproduct.c:355 6089#: src/scalarproduct/gnunet-scalarproduct.c:357
6170msgid "" 6090msgid ""
6171"A comma separated list of elements to compare as vector with our remote peer." 6091"A comma separated list of elements to compare as vector with our remote peer."
6172msgstr "" 6092msgstr ""
6173 6093
6174#: src/scalarproduct/gnunet-scalarproduct.c:361 6094#: src/scalarproduct/gnunet-scalarproduct.c:363
6175msgid "" 6095msgid ""
6176"[Optional] peer to calculate our scalarproduct with. If this parameter is " 6096"[Optional] peer to calculate our scalarproduct with. If this parameter is "
6177"not given, the service will wait for a remote peer to compute the request." 6097"not given, the service will wait for a remote peer to compute the request."
6178msgstr "" 6098msgstr ""
6179 6099
6180#: src/scalarproduct/gnunet-scalarproduct.c:367 6100#: src/scalarproduct/gnunet-scalarproduct.c:369
6181msgid "Transaction ID shared with peer." 6101msgid "Transaction ID shared with peer."
6182msgstr "" 6102msgstr ""
6183 6103
6184#: src/scalarproduct/gnunet-scalarproduct.c:377 6104#: src/scalarproduct/gnunet-scalarproduct.c:379
6185msgid "Calculate the Vectorproduct with a GNUnet peer." 6105msgid "Calculate the Vectorproduct with a GNUnet peer."
6186msgstr "" 6106msgstr ""
6187 6107
6188#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1399 6108#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
6189#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1343 6109#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
6190#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1170 6110#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
6191#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1061 6111#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
6192#, fuzzy 6112#, fuzzy
6193msgid "Connect to CADET failed\n" 6113msgid "Connect to CADET failed\n"
6194msgstr "“%s”已连接到“%s”。\n" 6114msgstr "“%s”已连接到“%s”。\n"
6195 6115
6196#: src/scalarproduct/scalarproduct_api.c:183 6116#: src/scalarproduct/scalarproduct_api.c:185
6197msgid "Keys given to SCALARPRODUCT not unique!\n" 6117msgid "Keys given to SCALARPRODUCT not unique!\n"
6198msgstr "" 6118msgstr ""
6199 6119
6200#: src/secretsharing/gnunet-secretsharing-profiler.c:614 6120#: src/secretsharing/gnunet-secretsharing-profiler.c:616
6201msgid "dkg start delay" 6121msgid "dkg start delay"
6202msgstr "" 6122msgstr ""
6203 6123
6204#: src/secretsharing/gnunet-secretsharing-profiler.c:620 6124#: src/secretsharing/gnunet-secretsharing-profiler.c:622
6205msgid "dkg timeout" 6125msgid "dkg timeout"
6206msgstr "" 6126msgstr ""
6207 6127
6208#: src/secretsharing/gnunet-secretsharing-profiler.c:626 6128#: src/secretsharing/gnunet-secretsharing-profiler.c:628
6209msgid "threshold" 6129msgid "threshold"
6210msgstr "" 6130msgstr ""
6211 6131
6212#: src/secretsharing/gnunet-secretsharing-profiler.c:631 6132#: src/secretsharing/gnunet-secretsharing-profiler.c:633
6213msgid "also profile decryption" 6133msgid "also profile decryption"
6214msgstr "" 6134msgstr ""
6215 6135
6216#: src/set/gnunet-service-set.c:2004 6136#: src/set/gnunet-service-set.c:2005
6217#, fuzzy 6137#, fuzzy
6218msgid "Could not connect to CADET service\n" 6138msgid "Could not connect to CADET service\n"
6219msgstr "无法连接到 %s:%u:%s\n" 6139msgstr "无法连接到 %s:%u:%s\n"
6220 6140
6221#: src/set/gnunet-set-ibf-profiler.c:250 6141#: src/set/gnunet-set-ibf-profiler.c:252
6222#, fuzzy 6142#, fuzzy
6223msgid "number of element in set A-B" 6143msgid "number of element in set A-B"
6224msgstr "迭代次数" 6144msgstr "迭代次数"
6225 6145
6226#: src/set/gnunet-set-ibf-profiler.c:256 6146#: src/set/gnunet-set-ibf-profiler.c:258
6227#, fuzzy 6147#, fuzzy
6228msgid "number of element in set B-A" 6148msgid "number of element in set B-A"
6229msgstr "迭代次数" 6149msgstr "迭代次数"
6230 6150
6231#: src/set/gnunet-set-ibf-profiler.c:262 6151#: src/set/gnunet-set-ibf-profiler.c:264
6232msgid "number of common elements in A and B" 6152msgid "number of common elements in A and B"
6233msgstr "" 6153msgstr ""
6234 6154
6235#: src/set/gnunet-set-ibf-profiler.c:268 6155#: src/set/gnunet-set-ibf-profiler.c:270
6236msgid "hash num" 6156msgid "hash num"
6237msgstr "" 6157msgstr ""
6238 6158
6239#: src/set/gnunet-set-ibf-profiler.c:274 6159#: src/set/gnunet-set-ibf-profiler.c:276
6240msgid "ibf size" 6160msgid "ibf size"
6241msgstr "" 6161msgstr ""
6242 6162
6243#: src/set/gnunet-set-profiler.c:442 6163#: src/set/gnunet-set-profiler.c:444
6244msgid "use byzantine mode" 6164msgid "use byzantine mode"
6245msgstr "" 6165msgstr ""
6246 6166
6247#: src/set/gnunet-set-profiler.c:448 6167#: src/set/gnunet-set-profiler.c:450
6248msgid "force sending full set" 6168msgid "force sending full set"
6249msgstr "" 6169msgstr ""
6250 6170
6251#: src/set/gnunet-set-profiler.c:454 6171#: src/set/gnunet-set-profiler.c:456
6252msgid "number delta operation" 6172msgid "number delta operation"
6253msgstr "" 6173msgstr ""
6254 6174
6255#: src/set/gnunet-set-profiler.c:466 6175#: src/set/gnunet-set-profiler.c:468
6256msgid "operation to execute" 6176msgid "operation to execute"
6257msgstr "" 6177msgstr ""
6258 6178
6259#: src/set/gnunet-set-profiler.c:472 6179#: src/set/gnunet-set-profiler.c:474
6260msgid "element size" 6180msgid "element size"
6261msgstr "" 6181msgstr ""
6262 6182
6263#: src/social/gnunet-social.c:1164 6183#: src/sq/sq.c:54
6264#, fuzzy
6265msgid "--place missing or invalid.\n"
6266msgstr "“%s”的参数无效。\n"
6267
6268#: src/social/gnunet-social.c:1215
6269msgid "assign --name in state to --data"
6270msgstr ""
6271
6272#: src/social/gnunet-social.c:1220
6273msgid "say good-bye and leave somebody else's place"
6274msgstr ""
6275
6276#: src/social/gnunet-social.c:1225
6277msgid "create a place"
6278msgstr ""
6279
6280#: src/social/gnunet-social.c:1230
6281msgid "destroy a place we were hosting"
6282msgstr ""
6283
6284#: src/social/gnunet-social.c:1235
6285msgid "enter somebody else's place"
6286msgstr ""
6287
6288#: src/social/gnunet-social.c:1241
6289msgid "find state matching name prefix"
6290msgstr ""
6291
6292#: src/social/gnunet-social.c:1246
6293msgid "replay history of messages up to the given --limit"
6294msgstr ""
6295
6296#: src/social/gnunet-social.c:1251
6297msgid "reconnect to a previously created place"
6298msgstr ""
6299
6300#: src/social/gnunet-social.c:1256
6301msgid "publish something to a place we are hosting"
6302msgstr ""
6303
6304#: src/social/gnunet-social.c:1261
6305msgid "reconnect to a previously entered place"
6306msgstr ""
6307
6308#: src/social/gnunet-social.c:1266
6309msgid "search for state matching exact name"
6310msgstr ""
6311
6312#: src/social/gnunet-social.c:1271
6313msgid "submit something to somebody's place"
6314msgstr ""
6315
6316#: src/social/gnunet-social.c:1276
6317msgid "list of egos and subscribed places"
6318msgstr ""
6319
6320#: src/social/gnunet-social.c:1281
6321msgid "extract and replay history between message IDs --start and --until"
6322msgstr ""
6323
6324#: src/social/gnunet-social.c:1290
6325msgid "application ID to use when connecting"
6326msgstr ""
6327
6328#: src/social/gnunet-social.c:1296
6329msgid "message body or state value"
6330msgstr ""
6331
6332#: src/social/gnunet-social.c:1302
6333#, fuzzy
6334msgid "name or public key of ego"
6335msgstr "“%s”的参数无效。\n"
6336
6337#: src/social/gnunet-social.c:1307
6338#, fuzzy
6339msgid "wait for incoming messages"
6340msgstr "发送消息失败。\n"
6341
6342#: src/social/gnunet-social.c:1313
6343msgid "GNS name"
6344msgstr ""
6345
6346#: src/social/gnunet-social.c:1319
6347msgid "peer ID for --guest-enter"
6348msgstr ""
6349
6350#: src/social/gnunet-social.c:1325
6351msgid "name (key) to query from state"
6352msgstr ""
6353
6354#: src/social/gnunet-social.c:1331
6355msgid "method name"
6356msgstr ""
6357
6358#: src/social/gnunet-social.c:1337
6359#, fuzzy
6360msgid "number of messages to replay from history"
6361msgstr "每次迭代所使用的消息数量"
6362
6363#: src/social/gnunet-social.c:1343
6364msgid "key address of place"
6365msgstr ""
6366
6367#: src/social/gnunet-social.c:1349
6368msgid "start message ID for history replay"
6369msgstr ""
6370
6371#: src/social/gnunet-social.c:1354
6372msgid "respond to entry requests by admitting all guests"
6373msgstr ""
6374
6375#: src/social/gnunet-social.c:1360
6376msgid "end message ID for history replay"
6377msgstr ""
6378
6379#: src/social/gnunet-social.c:1365
6380msgid "respond to entry requests by refusing all guests"
6381msgstr ""
6382
6383#: src/social/gnunet-social.c:1375
6384msgid ""
6385"gnunet-social - Interact with the social service: enter/leave, send/receive "
6386"messages, access history and state.\n"
6387msgstr ""
6388
6389#: src/sq/sq.c:52
6390#, c-format 6184#, c-format
6391msgid "Failure to bind %u-th SQL parameter\n" 6185msgid "Failure to bind %u-th SQL parameter\n"
6392msgstr "" 6186msgstr ""
6393 6187
6394#: src/sq/sq.c:59 6188#: src/sq/sq.c:61
6395msgid "Failure in sqlite3_reset (!)\n" 6189msgid "Failure in sqlite3_reset (!)\n"
6396msgstr "" 6190msgstr ""
6397 6191
6398#: src/sq/sq.c:137 6192#: src/sq/sq.c:139
6399#, fuzzy, c-format 6193#, fuzzy, c-format
6400msgid "Failed to reset sqlite statement with error: %s\n" 6194msgid "Failed to reset sqlite statement with error: %s\n"
6401msgstr "解析配置文件“%s”失败\n" 6195msgstr "解析配置文件“%s”失败\n"
6402 6196
6403#: src/statistics/gnunet-service-statistics.c:336 6197#: src/statistics/gnunet-service-statistics.c:338
6404#, c-format 6198#, c-format
6405msgid "Wrote %llu bytes of statistics to `%s'\n" 6199msgid "Wrote %llu bytes of statistics to `%s'\n"
6406msgstr "" 6200msgstr ""
6407 6201
6408#: src/statistics/gnunet-service-statistics.c:1084 6202#: src/statistics/gnunet-service-statistics.c:1086
6409#, c-format 6203#, c-format
6410msgid "Loading %llu bytes of statistics from `%s'\n" 6204msgid "Loading %llu bytes of statistics from `%s'\n"
6411msgstr "" 6205msgstr ""
6412 6206
6413#: src/statistics/gnunet-statistics.c:407 6207#: src/statistics/gnunet-statistics.c:409
6414#: src/statistics/gnunet-statistics.c:448 6208#: src/statistics/gnunet-statistics.c:450
6415#, fuzzy 6209#, fuzzy
6416msgid "Failed to obtain statistics.\n" 6210msgid "Failed to obtain statistics.\n"
6417msgstr "初始化“%s”服务失败。\n" 6211msgstr "初始化“%s”服务失败。\n"
6418 6212
6419#: src/statistics/gnunet-statistics.c:410 6213#: src/statistics/gnunet-statistics.c:412
6420#: src/statistics/gnunet-statistics.c:451 6214#: src/statistics/gnunet-statistics.c:453
6421#, fuzzy, c-format 6215#, fuzzy, c-format
6422msgid "Failed to obtain statistics from host `%s:%llu'\n" 6216msgid "Failed to obtain statistics from host `%s:%llu'\n"
6423msgstr "初始化“%s”服务失败。\n" 6217msgstr "初始化“%s”服务失败。\n"
6424 6218
6425#: src/statistics/gnunet-statistics.c:526 6219#: src/statistics/gnunet-statistics.c:528
6426msgid "Missing argument: subsystem \n" 6220msgid "Missing argument: subsystem \n"
6427msgstr "" 6221msgstr ""
6428 6222
6429#: src/statistics/gnunet-statistics.c:534 6223#: src/statistics/gnunet-statistics.c:536
6430msgid "Missing argument: name\n" 6224msgid "Missing argument: name\n"
6431msgstr "" 6225msgstr ""
6432 6226
6433#: src/statistics/gnunet-statistics.c:577 6227#: src/statistics/gnunet-statistics.c:579
6434#, c-format 6228#, c-format
6435msgid "No subsystem or name given\n" 6229msgid "No subsystem or name given\n"
6436msgstr "" 6230msgstr ""
6437 6231
6438#: src/statistics/gnunet-statistics.c:592 6232#: src/statistics/gnunet-statistics.c:594
6439#, fuzzy, c-format 6233#, fuzzy, c-format
6440msgid "Failed to initialize watch routine\n" 6234msgid "Failed to initialize watch routine\n"
6441msgstr "初始化“%s”服务失败。\n" 6235msgstr "初始化“%s”服务失败。\n"
6442 6236
6443#: src/statistics/gnunet-statistics.c:727 6237#: src/statistics/gnunet-statistics.c:729
6444#, fuzzy, c-format 6238#, fuzzy, c-format
6445msgid "Invalid argument `%s'\n" 6239msgid "Invalid argument `%s'\n"
6446msgstr "“%s”的参数无效。\n" 6240msgstr "“%s”的参数无效。\n"
6447 6241
6448#: src/statistics/gnunet-statistics.c:745 6242#: src/statistics/gnunet-statistics.c:747
6449#, fuzzy, c-format 6243#, fuzzy, c-format
6450msgid "A port is required to connect to host `%s'\n" 6244msgid "A port is required to connect to host `%s'\n"
6451msgstr "无法连接到 %s:%u:%s\n" 6245msgstr "无法连接到 %s:%u:%s\n"
6452 6246
6453#: src/statistics/gnunet-statistics.c:753 6247#: src/statistics/gnunet-statistics.c:755
6454#, c-format 6248#, c-format
6455msgid "A port has to be between 1 and 65535 to connect to host `%s'\n" 6249msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
6456msgstr "" 6250msgstr ""
6457 6251
6458#: src/statistics/gnunet-statistics.c:784 6252#: src/statistics/gnunet-statistics.c:786
6459#, c-format 6253#, c-format
6460msgid "Not able to watch testbed nodes (yet - feel free to implement)\n" 6254msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
6461msgstr "" 6255msgstr ""
6462 6256
6463#: src/statistics/gnunet-statistics.c:817 6257#: src/statistics/gnunet-statistics.c:819
6464msgid "limit output to statistics for the given NAME" 6258msgid "limit output to statistics for the given NAME"
6465msgstr "" 6259msgstr ""
6466 6260
6467#: src/statistics/gnunet-statistics.c:822 6261#: src/statistics/gnunet-statistics.c:824
6468msgid "make the value being set persistent" 6262msgid "make the value being set persistent"
6469msgstr "" 6263msgstr ""
6470 6264
6471#: src/statistics/gnunet-statistics.c:828 6265#: src/statistics/gnunet-statistics.c:830
6472msgid "limit output to the given SUBSYSTEM" 6266msgid "limit output to the given SUBSYSTEM"
6473msgstr "" 6267msgstr ""
6474 6268
6475#: src/statistics/gnunet-statistics.c:834 6269#: src/statistics/gnunet-statistics.c:836
6476msgid "use as csv separator" 6270msgid "use as csv separator"
6477msgstr "" 6271msgstr ""
6478 6272
6479#: src/statistics/gnunet-statistics.c:840 6273#: src/statistics/gnunet-statistics.c:842
6480msgid "path to the folder containing the testbed data" 6274msgid "path to the folder containing the testbed data"
6481msgstr "" 6275msgstr ""
6482 6276
6483#: src/statistics/gnunet-statistics.c:845 6277#: src/statistics/gnunet-statistics.c:847
6484msgid "just print the statistics value" 6278msgid "just print the statistics value"
6485msgstr "" 6279msgstr ""
6486 6280
6487#: src/statistics/gnunet-statistics.c:850 6281#: src/statistics/gnunet-statistics.c:852
6488msgid "watch value continuously" 6282msgid "watch value continuously"
6489msgstr "" 6283msgstr ""
6490 6284
6491#: src/statistics/gnunet-statistics.c:856 6285#: src/statistics/gnunet-statistics.c:858
6492msgid "connect to remote host" 6286msgid "connect to remote host"
6493msgstr "" 6287msgstr ""
6494 6288
6495#: src/statistics/gnunet-statistics.c:862 6289#: src/statistics/gnunet-statistics.c:864
6496msgid "port for remote host" 6290msgid "port for remote host"
6497msgstr "" 6291msgstr ""
6498 6292
6499#: src/statistics/gnunet-statistics.c:879 6293#: src/statistics/gnunet-statistics.c:881
6500msgid "Print statistics about GNUnet operations." 6294msgid "Print statistics about GNUnet operations."
6501msgstr "" 6295msgstr ""
6502 6296
6503#: src/statistics/statistics_api.c:751 6297#: src/statistics/statistics_api.c:753
6504#, fuzzy 6298#, fuzzy
6505msgid "Could not save some persistent statistics\n" 6299msgid "Could not save some persistent statistics\n"
6506msgstr "初始化“%s”服务失败。\n" 6300msgstr "初始化“%s”服务失败。\n"
6507 6301
6508#: src/testbed/generate-underlay-topology.c:223 6302#: src/testbed/generate-underlay-topology.c:225
6509#, fuzzy 6303#, fuzzy
6510msgid "Need at least 2 arguments\n" 6304msgid "Need at least 2 arguments\n"
6511msgstr "您必须指定一个昵称\n" 6305msgstr "您必须指定一个昵称\n"
6512 6306
6513#: src/testbed/generate-underlay-topology.c:228 6307#: src/testbed/generate-underlay-topology.c:230
6514msgid "Database filename missing\n" 6308msgid "Database filename missing\n"
6515msgstr "" 6309msgstr ""
6516 6310
6517#: src/testbed/generate-underlay-topology.c:235 6311#: src/testbed/generate-underlay-topology.c:237
6518msgid "Topology string missing\n" 6312msgid "Topology string missing\n"
6519msgstr "" 6313msgstr ""
6520 6314
6521#: src/testbed/generate-underlay-topology.c:240 6315#: src/testbed/generate-underlay-topology.c:242
6522#, fuzzy, c-format 6316#, fuzzy, c-format
6523msgid "Invalid topology: %s\n" 6317msgid "Invalid topology: %s\n"
6524msgstr "“%s”的参数无效。\n" 6318msgstr "“%s”的参数无效。\n"
6525 6319
6526#: src/testbed/generate-underlay-topology.c:253 6320#: src/testbed/generate-underlay-topology.c:255
6527#, c-format 6321#, c-format
6528msgid "An argument is missing for given topology `%s'\n" 6322msgid "An argument is missing for given topology `%s'\n"
6529msgstr "" 6323msgstr ""
6530 6324
6531#: src/testbed/generate-underlay-topology.c:259 6325#: src/testbed/generate-underlay-topology.c:261
6532#, fuzzy, c-format 6326#, fuzzy, c-format
6533msgid "Invalid argument `%s' given as topology argument\n" 6327msgid "Invalid argument `%s' given as topology argument\n"
6534msgstr "“%s”的参数无效。\n" 6328msgstr "“%s”的参数无效。\n"
6535 6329
6536#: src/testbed/generate-underlay-topology.c:267 6330#: src/testbed/generate-underlay-topology.c:269
6537#, c-format 6331#, c-format
6538msgid "Filename argument missing for topology `%s'\n" 6332msgid "Filename argument missing for topology `%s'\n"
6539msgstr "" 6333msgstr ""
6540 6334
6541#: src/testbed/generate-underlay-topology.c:281 6335#: src/testbed/generate-underlay-topology.c:283
6542#, c-format 6336#, c-format
6543msgid "Second argument for topology `%s' is missing\n" 6337msgid "Second argument for topology `%s' is missing\n"
6544msgstr "" 6338msgstr ""
6545 6339
6546#: src/testbed/generate-underlay-topology.c:287 6340#: src/testbed/generate-underlay-topology.c:289
6547#, fuzzy, c-format 6341#, fuzzy, c-format
6548msgid "Invalid argument `%s'; expecting unsigned int\n" 6342msgid "Invalid argument `%s'; expecting unsigned int\n"
6549msgstr "“%s”的参数无效。\n" 6343msgstr "“%s”的参数无效。\n"
6550 6344
6551#: src/testbed/generate-underlay-topology.c:340 6345#: src/testbed/generate-underlay-topology.c:342
6552#: src/testbed/gnunet-testbed-profiler.c:281 6346#: src/testbed/gnunet-testbed-profiler.c:283
6553msgid "create COUNT number of peers" 6347msgid "create COUNT number of peers"
6554msgstr "" 6348msgstr ""
6555 6349
6556#: src/testbed/generate-underlay-topology.c:350 6350#: src/testbed/generate-underlay-topology.c:352
6557msgid "" 6351msgid ""
6558"Generates SQLite3 database representing a given underlay topology.\n" 6352"Generates SQLite3 database representing a given underlay topology.\n"
6559"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n" 6353"Usage: gnunet-underlay-topology [OPTIONS] db-filename TOPO [TOPOOPTS]\n"
@@ -6577,83 +6371,83 @@ msgid ""
6577"content/topology-file-format\n" 6371"content/topology-file-format\n"
6578msgstr "" 6372msgstr ""
6579 6373
6580#: src/testbed/gnunet-daemon-latency-logger.c:313 6374#: src/testbed/gnunet-daemon-latency-logger.c:315
6581msgid "Daemon to log latency values of connections to neighbours" 6375msgid "Daemon to log latency values of connections to neighbours"
6582msgstr "" 6376msgstr ""
6583 6377
6584#: src/testbed/gnunet-daemon-testbed-blacklist.c:247 6378#: src/testbed/gnunet-daemon-testbed-blacklist.c:249
6585msgid "" 6379msgid ""
6586"Daemon to restrict incoming transport layer connections during testbed " 6380"Daemon to restrict incoming transport layer connections during testbed "
6587"deployments" 6381"deployments"
6588msgstr "" 6382msgstr ""
6589 6383
6590#: src/testbed/gnunet-daemon-testbed-underlay.c:231 src/testing/list-keys.c:46 6384#: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
6591#: src/testing/testing.c:286 src/util/gnunet-ecc.c:310 6385#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
6592#, c-format 6386#, c-format
6593msgid "Incorrect hostkey file format: %s\n" 6387msgid "Incorrect hostkey file format: %s\n"
6594msgstr "" 6388msgstr ""
6595 6389
6596#: src/testbed/gnunet-daemon-testbed-underlay.c:469 6390#: src/testbed/gnunet-daemon-testbed-underlay.c:471
6597msgid "Daemon to restrict underlay network in testbed deployments" 6391msgid "Daemon to restrict underlay network in testbed deployments"
6598msgstr "" 6392msgstr ""
6599 6393
6600#: src/testbed/gnunet-service-testbed_cpustatus.c:726 6394#: src/testbed/gnunet-service-testbed_cpustatus.c:728
6601#, c-format 6395#, c-format
6602msgid "" 6396msgid ""
6603"Cannot open %s for writing load statistics. Not logging load statistics\n" 6397"Cannot open %s for writing load statistics. Not logging load statistics\n"
6604msgstr "" 6398msgstr ""
6605 6399
6606#: src/testbed/gnunet-service-testbed_peers.c:1157 6400#: src/testbed/gnunet-service-testbed_peers.c:1159
6607#, c-format 6401#, c-format
6608msgid "%s is stopped" 6402msgid "%s is stopped"
6609msgstr "" 6403msgstr ""
6610 6404
6611#: src/testbed/gnunet-service-testbed_peers.c:1159 6405#: src/testbed/gnunet-service-testbed_peers.c:1161
6612#, c-format 6406#, c-format
6613msgid "%s is starting" 6407msgid "%s is starting"
6614msgstr "" 6408msgstr ""
6615 6409
6616#: src/testbed/gnunet-service-testbed_peers.c:1161 6410#: src/testbed/gnunet-service-testbed_peers.c:1163
6617#, c-format 6411#, c-format
6618msgid "%s is stopping" 6412msgid "%s is stopping"
6619msgstr "" 6413msgstr ""
6620 6414
6621#: src/testbed/gnunet-service-testbed_peers.c:1163 6415#: src/testbed/gnunet-service-testbed_peers.c:1165
6622#, c-format 6416#, c-format
6623msgid "%s is starting already" 6417msgid "%s is starting already"
6624msgstr "" 6418msgstr ""
6625 6419
6626#: src/testbed/gnunet-service-testbed_peers.c:1165 6420#: src/testbed/gnunet-service-testbed_peers.c:1167
6627#, c-format 6421#, c-format
6628msgid "%s is stopping already" 6422msgid "%s is stopping already"
6629msgstr "" 6423msgstr ""
6630 6424
6631#: src/testbed/gnunet-service-testbed_peers.c:1167 6425#: src/testbed/gnunet-service-testbed_peers.c:1169
6632#, c-format 6426#, c-format
6633msgid "%s is started already" 6427msgid "%s is started already"
6634msgstr "" 6428msgstr ""
6635 6429
6636#: src/testbed/gnunet-service-testbed_peers.c:1169 6430#: src/testbed/gnunet-service-testbed_peers.c:1171
6637#, c-format 6431#, c-format
6638msgid "%s is stopped already" 6432msgid "%s is stopped already"
6639msgstr "" 6433msgstr ""
6640 6434
6641#: src/testbed/gnunet-service-testbed_peers.c:1171 6435#: src/testbed/gnunet-service-testbed_peers.c:1173
6642#, fuzzy, c-format 6436#, fuzzy, c-format
6643msgid "%s service is not known to ARM" 6437msgid "%s service is not known to ARM"
6644msgstr "服务已删除。\n" 6438msgstr "服务已删除。\n"
6645 6439
6646#: src/testbed/gnunet-service-testbed_peers.c:1173 6440#: src/testbed/gnunet-service-testbed_peers.c:1175
6647#, fuzzy, c-format 6441#, fuzzy, c-format
6648msgid "%s service failed to start" 6442msgid "%s service failed to start"
6649msgstr "运行 %s失败:%s %d\n" 6443msgstr "运行 %s失败:%s %d\n"
6650 6444
6651#: src/testbed/gnunet-service-testbed_peers.c:1175 6445#: src/testbed/gnunet-service-testbed_peers.c:1177
6652#, c-format 6446#, c-format
6653msgid "%s service can't be started because ARM is shutting down" 6447msgid "%s service can't be started because ARM is shutting down"
6654msgstr "" 6448msgstr ""
6655 6449
6656#: src/testbed/gnunet-service-testbed_peers.c:1177 6450#: src/testbed/gnunet-service-testbed_peers.c:1179
6657#, c-format 6451#, c-format
6658msgid "%.s Unknown result code." 6452msgid "%.s Unknown result code."
6659msgstr "" 6453msgstr ""
@@ -6667,176 +6461,176 @@ msgstr ""
6667msgid "Spawning process `%s'\n" 6461msgid "Spawning process `%s'\n"
6668msgstr "卸载 GNUnet 服务" 6462msgstr "卸载 GNUnet 服务"
6669 6463
6670#: src/testbed/gnunet-testbed-profiler.c:287 6464#: src/testbed/gnunet-testbed-profiler.c:289
6671msgid "tolerate COUNT number of continious timeout failures" 6465msgid "tolerate COUNT number of continious timeout failures"
6672msgstr "" 6466msgstr ""
6673 6467
6674#: src/testbed/gnunet-testbed-profiler.c:292 6468#: src/testbed/gnunet-testbed-profiler.c:294
6675msgid "" 6469msgid ""
6676"run profiler in non-interactive mode where upon testbed setup the profiler " 6470"run profiler in non-interactive mode where upon testbed setup the profiler "
6677"does not wait for a keystroke but continues to run until a termination " 6471"does not wait for a keystroke but continues to run until a termination "
6678"signal is received" 6472"signal is received"
6679msgstr "" 6473msgstr ""
6680 6474
6681#: src/testbed/testbed_api.c:408 6475#: src/testbed/testbed_api.c:410
6682#, fuzzy, c-format 6476#, fuzzy, c-format
6683msgid "Adding host %u failed with error: %s\n" 6477msgid "Adding host %u failed with error: %s\n"
6684msgstr "“%s”以错误码 %d 失败:%s\n" 6478msgstr "“%s”以错误码 %d 失败:%s\n"
6685 6479
6686#: src/testbed/testbed_api_hosts.c:411 6480#: src/testbed/testbed_api_hosts.c:413
6687#, c-format 6481#, c-format
6688msgid "Hosts file %s not found\n" 6482msgid "Hosts file %s not found\n"
6689msgstr "" 6483msgstr ""
6690 6484
6691#: src/testbed/testbed_api_hosts.c:419 6485#: src/testbed/testbed_api_hosts.c:421
6692#, c-format 6486#, c-format
6693msgid "Hosts file %s has no data\n" 6487msgid "Hosts file %s has no data\n"
6694msgstr "" 6488msgstr ""
6695 6489
6696#: src/testbed/testbed_api_hosts.c:426 6490#: src/testbed/testbed_api_hosts.c:428
6697#, c-format 6491#, c-format
6698msgid "Hosts file %s cannot be read\n" 6492msgid "Hosts file %s cannot be read\n"
6699msgstr "" 6493msgstr ""
6700 6494
6701#: src/testbed/testbed_api_hosts.c:567 6495#: src/testbed/testbed_api_hosts.c:569
6702#, c-format 6496#, c-format
6703msgid "The function %s is only available when compiled with (--with-ll)\n" 6497msgid "The function %s is only available when compiled with (--with-ll)\n"
6704msgstr "" 6498msgstr ""
6705 6499
6706#: src/testbed/testbed_api_testbed.c:816 6500#: src/testbed/testbed_api_testbed.c:818
6707msgid "Linking controllers failed. Exiting" 6501msgid "Linking controllers failed. Exiting"
6708msgstr "" 6502msgstr ""
6709 6503
6710#: src/testbed/testbed_api_testbed.c:984 6504#: src/testbed/testbed_api_testbed.c:986
6711#, c-format 6505#, c-format
6712msgid "Host registration failed for a host. Error: %s\n" 6506msgid "Host registration failed for a host. Error: %s\n"
6713msgstr "" 6507msgstr ""
6714 6508
6715#: src/testbed/testbed_api_testbed.c:1050 6509#: src/testbed/testbed_api_testbed.c:1052
6716msgid "Controller crash detected. Shutting down.\n" 6510msgid "Controller crash detected. Shutting down.\n"
6717msgstr "" 6511msgstr ""
6718 6512
6719#: src/testbed/testbed_api_testbed.c:1139 6513#: src/testbed/testbed_api_testbed.c:1141
6720#, c-format 6514#, c-format
6721msgid "Host %s cannot start testbed\n" 6515msgid "Host %s cannot start testbed\n"
6722msgstr "" 6516msgstr ""
6723 6517
6724#: src/testbed/testbed_api_testbed.c:1143 6518#: src/testbed/testbed_api_testbed.c:1145
6725msgid "Testbed cannot be started on localhost\n" 6519msgid "Testbed cannot be started on localhost\n"
6726msgstr "" 6520msgstr ""
6727 6521
6728#: src/testbed/testbed_api_testbed.c:1181 6522#: src/testbed/testbed_api_testbed.c:1183
6729msgid "Cannot start the master controller" 6523msgid "Cannot start the master controller"
6730msgstr "" 6524msgstr ""
6731 6525
6732#: src/testbed/testbed_api_testbed.c:1199 6526#: src/testbed/testbed_api_testbed.c:1201
6733msgid "Shutting down testbed due to timeout while setup.\n" 6527msgid "Shutting down testbed due to timeout while setup.\n"
6734msgstr "" 6528msgstr ""
6735 6529
6736#: src/testbed/testbed_api_testbed.c:1259 6530#: src/testbed/testbed_api_testbed.c:1261
6737msgid "No hosts loaded from LoadLeveler. Need at least one host\n" 6531msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
6738msgstr "" 6532msgstr ""
6739 6533
6740#: src/testbed/testbed_api_testbed.c:1271 6534#: src/testbed/testbed_api_testbed.c:1273
6741msgid "No hosts loaded. Need at least one host\n" 6535msgid "No hosts loaded. Need at least one host\n"
6742msgstr "" 6536msgstr ""
6743 6537
6744#: src/testbed/testbed_api_testbed.c:1295 6538#: src/testbed/testbed_api_testbed.c:1297
6745msgid "Specified topology must be supported by testbed" 6539msgid "Specified topology must be supported by testbed"
6746msgstr "" 6540msgstr ""
6747 6541
6748#: src/testbed/testbed_api_testbed.c:1345 6542#: src/testbed/testbed_api_testbed.c:1347
6749#, c-format 6543#, c-format
6750msgid "" 6544msgid ""
6751"Maximum number of edges a peer can have in a scale free topology cannot be " 6545"Maximum number of edges a peer can have in a scale free topology cannot be "
6752"more than %u. Given `%s = %llu'" 6546"more than %u. Given `%s = %llu'"
6753msgstr "" 6547msgstr ""
6754 6548
6755#: src/testbed/testbed_api_testbed.c:1361 6549#: src/testbed/testbed_api_testbed.c:1363
6756#, c-format 6550#, c-format
6757msgid "" 6551msgid ""
6758"The number of edges that can established when adding a new node to scale " 6552"The number of edges that can established when adding a new node to scale "
6759"free topology cannot be more than %u. Given `%s = %llu'" 6553"free topology cannot be more than %u. Given `%s = %llu'"
6760msgstr "" 6554msgstr ""
6761 6555
6762#: src/testbed/testbed_api_topology.c:1026 6556#: src/testbed/testbed_api_topology.c:1028
6763#, c-format 6557#, c-format
6764msgid "Topology file %s not found\n" 6558msgid "Topology file %s not found\n"
6765msgstr "" 6559msgstr ""
6766 6560
6767#: src/testbed/testbed_api_topology.c:1034 6561#: src/testbed/testbed_api_topology.c:1036
6768#, c-format 6562#, c-format
6769msgid "Topology file %s has no data\n" 6563msgid "Topology file %s has no data\n"
6770msgstr "" 6564msgstr ""
6771 6565
6772#: src/testbed/testbed_api_topology.c:1042 6566#: src/testbed/testbed_api_topology.c:1044
6773#, c-format 6567#, c-format
6774msgid "Topology file %s cannot be read\n" 6568msgid "Topology file %s cannot be read\n"
6775msgstr "" 6569msgstr ""
6776 6570
6777#: src/testbed/testbed_api_topology.c:1064 6571#: src/testbed/testbed_api_topology.c:1066
6778#, fuzzy, c-format 6572#, fuzzy, c-format
6779msgid "Failed to read peer index from toology file: %s" 6573msgid "Failed to read peer index from toology file: %s"
6780msgstr "解析配置文件“%s”失败\n" 6574msgstr "解析配置文件“%s”失败\n"
6781 6575
6782#: src/testbed/testbed_api_topology.c:1073 6576#: src/testbed/testbed_api_topology.c:1075
6783#: src/testbed/testbed_api_topology.c:1097 6577#: src/testbed/testbed_api_topology.c:1099
6784#, c-format 6578#, c-format
6785msgid "Value in given topology file: %s out of range\n" 6579msgid "Value in given topology file: %s out of range\n"
6786msgstr "" 6580msgstr ""
6787 6581
6788#: src/testbed/testbed_api_topology.c:1079 6582#: src/testbed/testbed_api_topology.c:1081
6789#: src/testbed/testbed_api_topology.c:1103 6583#: src/testbed/testbed_api_topology.c:1105
6790#, fuzzy, c-format 6584#, fuzzy, c-format
6791msgid "Failed to read peer index from topology file: %s" 6585msgid "Failed to read peer index from topology file: %s"
6792msgstr "解析配置文件“%s”失败\n" 6586msgstr "解析配置文件“%s”失败\n"
6793 6587
6794#: src/testbed/testbed_api_topology.c:1085 6588#: src/testbed/testbed_api_topology.c:1087
6795#: src/testbed/testbed_api_topology.c:1109 6589#: src/testbed/testbed_api_topology.c:1111
6796msgid "Topology file needs more peers than given ones\n" 6590msgid "Topology file needs more peers than given ones\n"
6797msgstr "" 6591msgstr ""
6798 6592
6799#: src/testbed/testbed_api_topology.c:1143 6593#: src/testbed/testbed_api_topology.c:1145
6800#, fuzzy, c-format 6594#, fuzzy, c-format
6801msgid "Ignoring to connect peer %u to peer %u\n" 6595msgid "Ignoring to connect peer %u to peer %u\n"
6802msgstr "无法连接到 %s:%u:%s\n" 6596msgstr "无法连接到 %s:%u:%s\n"
6803 6597
6804#: src/testing/gnunet-testing.c:171 6598#: src/testing/gnunet-testing.c:173
6805#, fuzzy, c-format 6599#, fuzzy, c-format
6806msgid "Could not extract hostkey %u (offset too large?)\n" 6600msgid "Could not extract hostkey %u (offset too large?)\n"
6807msgstr "找不到接口“%s”的一个 IP 地址。\n" 6601msgstr "找不到接口“%s”的一个 IP 地址。\n"
6808 6602
6809#: src/testing/gnunet-testing.c:251 6603#: src/testing/gnunet-testing.c:253
6810#, c-format 6604#, c-format
6811msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n" 6605msgid "Unknown command, use 'q' to quit or 'r' to restart peer\n"
6812msgstr "" 6606msgstr ""
6813 6607
6814#: src/testing/gnunet-testing.c:352 6608#: src/testing/gnunet-testing.c:354
6815#, fuzzy 6609#, fuzzy
6816msgid "create unique configuration files" 6610msgid "create unique configuration files"
6817msgstr "更改配置文件中的一个值" 6611msgstr "更改配置文件中的一个值"
6818 6612
6819#: src/testing/gnunet-testing.c:357 6613#: src/testing/gnunet-testing.c:359
6820msgid "extract hostkey file from pre-computed hostkey list" 6614msgid "extract hostkey file from pre-computed hostkey list"
6821msgstr "" 6615msgstr ""
6822 6616
6823#: src/testing/gnunet-testing.c:363 6617#: src/testing/gnunet-testing.c:365
6824#, fuzzy 6618#, fuzzy
6825msgid "" 6619msgid ""
6826"number of unique configuration files to create, or number of the hostkey to " 6620"number of unique configuration files to create, or number of the hostkey to "
6827"extract" 6621"extract"
6828msgstr "打印配置文件中的一个值到标准输出" 6622msgstr "打印配置文件中的一个值到标准输出"
6829 6623
6830#: src/testing/gnunet-testing.c:370 6624#: src/testing/gnunet-testing.c:372
6831#, fuzzy 6625#, fuzzy
6832msgid "configuration template" 6626msgid "configuration template"
6833msgstr "配置已保存" 6627msgstr "配置已保存"
6834 6628
6835#: src/testing/gnunet-testing.c:376 6629#: src/testing/gnunet-testing.c:378
6836msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)" 6630msgid "run the given service, wait on stdin for 'r' (restart) or 'q' (quit)"
6837msgstr "" 6631msgstr ""
6838 6632
6839#: src/testing/gnunet-testing.c:389 6633#: src/testing/gnunet-testing.c:391
6840msgid "Command line tool to access the testing library" 6634msgid "Command line tool to access the testing library"
6841msgstr "" 6635msgstr ""
6842 6636
@@ -6844,1532 +6638,1556 @@ msgstr ""
6844msgid "list COUNT number of keys" 6638msgid "list COUNT number of keys"
6845msgstr "" 6639msgstr ""
6846 6640
6847#: src/testing/testing.c:270 6641#: src/testing/testing.c:272
6848#, c-format 6642#, c-format
6849msgid "Hostkeys file not found: %s\n" 6643msgid "Hostkeys file not found: %s\n"
6850msgstr "" 6644msgstr ""
6851 6645
6852#: src/testing/testing.c:713 6646#: src/testing/testing.c:715
6853#, c-format 6647#, c-format
6854msgid "Key number %u does not exist\n" 6648msgid "Key number %u does not exist\n"
6855msgstr "" 6649msgstr ""
6856 6650
6857#: src/testing/testing.c:1157 6651#: src/testing/testing.c:1159
6858#, c-format 6652#, c-format
6859msgid "" 6653msgid ""
6860"You attempted to create a testbed with more than %u hosts. Please " 6654"You attempted to create a testbed with more than %u hosts. Please "
6861"precompute more hostkeys first.\n" 6655"precompute more hostkeys first.\n"
6862msgstr "" 6656msgstr ""
6863 6657
6864#: src/testing/testing.c:1166 6658#: src/testing/testing.c:1168
6865#, fuzzy, c-format 6659#, fuzzy, c-format
6866msgid "Failed to initialize hostkey for peer %u\n" 6660msgid "Failed to initialize hostkey for peer %u\n"
6867msgstr "初始化“%s”服务失败。\n" 6661msgstr "初始化“%s”服务失败。\n"
6868 6662
6869#: src/testing/testing.c:1176 6663#: src/testing/testing.c:1178
6870msgid "PRIVATE_KEY option in PEER section missing in configuration\n" 6664msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
6871msgstr "" 6665msgstr ""
6872 6666
6873#: src/testing/testing.c:1189 6667#: src/testing/testing.c:1191
6874#, fuzzy 6668#, fuzzy
6875msgid "Failed to create configuration for peer (not enough free ports?)\n" 6669msgid "Failed to create configuration for peer (not enough free ports?)\n"
6876msgstr "解析配置文件“%s”失败\n" 6670msgstr "解析配置文件“%s”失败\n"
6877 6671
6878#: src/testing/testing.c:1203 6672#: src/testing/testing.c:1205
6879#, fuzzy, c-format 6673#, fuzzy, c-format
6880msgid "Cannot open hostkey file `%s': %s\n" 6674msgid "Cannot open hostkey file `%s': %s\n"
6881msgstr "找不到接口“%s”的一个 IP 地址。\n" 6675msgstr "找不到接口“%s”的一个 IP 地址。\n"
6882 6676
6883#: src/testing/testing.c:1215 6677#: src/testing/testing.c:1217
6884#, fuzzy, c-format 6678#, fuzzy, c-format
6885msgid "Failed to write hostkey file for peer %u: %s\n" 6679msgid "Failed to write hostkey file for peer %u: %s\n"
6886msgstr "发送消息失败。\n" 6680msgstr "发送消息失败。\n"
6887 6681
6888#: src/testing/testing.c:1240 6682#: src/testing/testing.c:1242
6889#, fuzzy, c-format 6683#, fuzzy, c-format
6890msgid "Failed to write configuration file `%s' for peer %u: %s\n" 6684msgid "Failed to write configuration file `%s' for peer %u: %s\n"
6891msgstr "解析配置文件“%s”失败\n" 6685msgstr "解析配置文件“%s”失败\n"
6892 6686
6893#: src/testing/testing.c:1342 6687#: src/testing/testing.c:1344
6894#, fuzzy, c-format 6688#, fuzzy, c-format
6895msgid "Failed to start `%s': %s\n" 6689msgid "Failed to start `%s': %s\n"
6896msgstr "运行 %s失败:%s %d\n" 6690msgstr "运行 %s失败:%s %d\n"
6897 6691
6898#: src/testing/testing.c:1645 6692#: src/testing/testing.c:1647
6899#, fuzzy, c-format 6693#, fuzzy, c-format
6900msgid "Failed to load configuration from %s\n" 6694msgid "Failed to load configuration from %s\n"
6901msgstr "解析配置文件“%s”失败\n" 6695msgstr "解析配置文件“%s”失败\n"
6902 6696
6903#: src/topology/friends.c:124 6697#: src/topology/friends.c:126
6904#, fuzzy, c-format 6698#, fuzzy, c-format
6905msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n" 6699msgid "Syntax error in FRIENDS file at offset %llu, skipping bytes `%.*s'.\n"
6906msgstr "配置文件“%s”第 %d 行有语法错误。\n" 6700msgstr "配置文件“%s”第 %d 行有语法错误。\n"
6907 6701
6908#: src/topology/friends.c:178 6702#: src/topology/friends.c:180
6909#, c-format 6703#, c-format
6910msgid "Directory for file `%s' does not seem to be writable.\n" 6704msgid "Directory for file `%s' does not seem to be writable.\n"
6911msgstr "" 6705msgstr ""
6912 6706
6913#: src/topology/gnunet-daemon-topology.c:228 6707#: src/topology/gnunet-daemon-topology.c:230
6914msgid "# peers blacklisted" 6708msgid "# peers blacklisted"
6915msgstr "" 6709msgstr ""
6916 6710
6917#: src/topology/gnunet-daemon-topology.c:342 6711#: src/topology/gnunet-daemon-topology.c:344
6918msgid "# connect requests issued to ATS" 6712msgid "# connect requests issued to ATS"
6919msgstr "" 6713msgstr ""
6920 6714
6921#: src/topology/gnunet-daemon-topology.c:536 6715#: src/topology/gnunet-daemon-topology.c:538
6922msgid "# HELLO messages gossipped" 6716msgid "# HELLO messages gossipped"
6923msgstr "" 6717msgstr ""
6924 6718
6925#: src/topology/gnunet-daemon-topology.c:638 6719#: src/topology/gnunet-daemon-topology.c:640
6926#: src/topology/gnunet-daemon-topology.c:724 6720#: src/topology/gnunet-daemon-topology.c:726
6927msgid "# friends connected" 6721msgid "# friends connected"
6928msgstr "" 6722msgstr ""
6929 6723
6930#: src/topology/gnunet-daemon-topology.c:921 6724#: src/topology/gnunet-daemon-topology.c:923
6931msgid "Failed to connect to core service, can not manage topology!\n" 6725msgid "Failed to connect to core service, can not manage topology!\n"
6932msgstr "" 6726msgstr ""
6933 6727
6934#: src/topology/gnunet-daemon-topology.c:954 6728#: src/topology/gnunet-daemon-topology.c:956
6935#, c-format 6729#, c-format
6936msgid "Found myself `%s' in friend list (useless, ignored)\n" 6730msgid "Found myself `%s' in friend list (useless, ignored)\n"
6937msgstr "" 6731msgstr ""
6938 6732
6939#: src/topology/gnunet-daemon-topology.c:961 6733#: src/topology/gnunet-daemon-topology.c:963
6940#, fuzzy, c-format 6734#, fuzzy, c-format
6941msgid "Found friend `%s' in configuration\n" 6735msgid "Found friend `%s' in configuration\n"
6942msgstr "" 6736msgstr ""
6943"\n" 6737"\n"
6944"结束配置。\n" 6738"结束配置。\n"
6945 6739
6946#: src/topology/gnunet-daemon-topology.c:983 6740#: src/topology/gnunet-daemon-topology.c:985
6947msgid "Encountered errors parsing friends list!\n" 6741msgid "Encountered errors parsing friends list!\n"
6948msgstr "" 6742msgstr ""
6949 6743
6950#: src/topology/gnunet-daemon-topology.c:986 6744#: src/topology/gnunet-daemon-topology.c:988
6951#, fuzzy 6745#, fuzzy
6952msgid "# friends in configuration" 6746msgid "# friends in configuration"
6953msgstr "" 6747msgstr ""
6954"\n" 6748"\n"
6955"结束配置。\n" 6749"结束配置。\n"
6956 6750
6957#: src/topology/gnunet-daemon-topology.c:993 6751#: src/topology/gnunet-daemon-topology.c:995
6958msgid "" 6752msgid ""
6959"Fewer friends specified than required by minimum friend count. Will only " 6753"Fewer friends specified than required by minimum friend count. Will only "
6960"connect to friends.\n" 6754"connect to friends.\n"
6961msgstr "" 6755msgstr ""
6962 6756
6963#: src/topology/gnunet-daemon-topology.c:999 6757#: src/topology/gnunet-daemon-topology.c:1001
6964msgid "" 6758msgid ""
6965"More friendly connections required than target total number of connections.\n" 6759"More friendly connections required than target total number of connections.\n"
6966msgstr "" 6760msgstr ""
6967 6761
6968#: src/topology/gnunet-daemon-topology.c:1052 6762#: src/topology/gnunet-daemon-topology.c:1054
6969#: src/transport/plugin_transport_wlan.c:1515 6763#: src/transport/plugin_transport_wlan.c:1517
6970msgid "# HELLO messages received" 6764msgid "# HELLO messages received"
6971msgstr "" 6765msgstr ""
6972 6766
6973#: src/topology/gnunet-daemon-topology.c:1230 6767#: src/topology/gnunet-daemon-topology.c:1233
6974msgid "GNUnet topology control" 6768msgid "GNUnet topology control"
6975msgstr "" 6769msgstr ""
6976 6770
6977#: src/transport/gnunet-service-transport_ats.c:139 6771#: src/transport/gnunet-communicator-tcp.c:2329
6772#: src/transport/gnunet-communicator-udp.c:2883
6773#: src/transport/gnunet-service-tng.c:4679
6774#: src/transport/gnunet-service-transport.c:2782
6775#, fuzzy
6776msgid "Transport service is lacking key configuration settings. Exiting.\n"
6777msgstr "立即保存配置?"
6778
6779#: src/transport/gnunet-communicator-tcp.c:2393
6780msgid "GNUnet TCP communicator"
6781msgstr ""
6782
6783#: src/transport/gnunet-communicator-udp.c:2954
6784msgid "GNUnet UDP communicator"
6785msgstr ""
6786
6787#: src/transport/gnunet-communicator-unix.c:802
6788#, fuzzy
6789msgid ""
6790"Maximum number of UNIX connections exceeded, dropping incoming message\n"
6791msgstr "增加 TCP/IP 的最大连接数"
6792
6793#: src/transport/gnunet-communicator-unix.c:1073
6794#: src/transport/plugin_transport_unix.c:1403
6795#, fuzzy, c-format
6796msgid "Cannot create path to `%s'\n"
6797msgstr "发送消息失败。\n"
6798
6799#: src/transport/gnunet-communicator-unix.c:1162
6800msgid "GNUnet UNIX domain socket communicator"
6801msgstr ""
6802
6803#: src/transport/gnunet-service-transport_ats.c:141
6978msgid "# Addresses given to ATS" 6804msgid "# Addresses given to ATS"
6979msgstr "" 6805msgstr ""
6980 6806
6981#: src/transport/gnunet-service-transport.c:446 6807#: src/transport/gnunet-service-transport.c:448
6982msgid "# messages dropped due to slow client" 6808msgid "# messages dropped due to slow client"
6983msgstr "" 6809msgstr ""
6984 6810
6985#: src/transport/gnunet-service-transport.c:816 6811#: src/transport/gnunet-service-transport.c:817
6986msgid "# bytes payload dropped (other peer was not connected)" 6812msgid "# bytes payload dropped (other peer was not connected)"
6987msgstr "" 6813msgstr ""
6988 6814
6989#: src/transport/gnunet-service-transport.c:1549 6815#: src/transport/gnunet-service-transport.c:1550
6990msgid "# bytes payload discarded due to not connected peer" 6816msgid "# bytes payload discarded due to not connected peer"
6991msgstr "" 6817msgstr ""
6992 6818
6993#: src/transport/gnunet-service-transport.c:1709 6819#: src/transport/gnunet-service-transport.c:1710
6994msgid "# bytes total received" 6820msgid "# bytes total received"
6995msgstr "" 6821msgstr ""
6996 6822
6997#: src/transport/gnunet-service-transport.c:1806 6823#: src/transport/gnunet-service-transport.c:1807
6998msgid "# bytes payload received" 6824msgid "# bytes payload received"
6999msgstr "" 6825msgstr ""
7000 6826
7001#: src/transport/gnunet-service-transport.c:2123 6827#: src/transport/gnunet-service-transport.c:2124
7002#: src/transport/gnunet-service-transport.c:2595 6828#: src/transport/gnunet-service-transport.c:2596
7003msgid "# disconnects due to blacklist" 6829msgid "# disconnects due to blacklist"
7004msgstr "" 6830msgstr ""
7005 6831
7006#: src/transport/gnunet-service-transport.c:2599 6832#: src/transport/gnunet-service-transport.c:2600
7007#, fuzzy, c-format 6833#, fuzzy, c-format
7008msgid "Disallowing connection to peer `%s' on transport %s\n" 6834msgid "Disallowing connection to peer `%s' on transport %s\n"
7009msgstr "解析配置文件“%s”失败\n" 6835msgstr "解析配置文件“%s”失败\n"
7010 6836
7011#: src/transport/gnunet-service-transport.c:2707 6837#: src/transport/gnunet-service-transport.c:2708
7012#, fuzzy, c-format 6838#, fuzzy, c-format
7013msgid "Adding blacklisting entry for peer `%s'\n" 6839msgid "Adding blacklisting entry for peer `%s'\n"
7014msgstr "卸载 GNUnet 服务" 6840msgstr "卸载 GNUnet 服务"
7015 6841
7016#: src/transport/gnunet-service-transport.c:2716 6842#: src/transport/gnunet-service-transport.c:2717
7017#, c-format 6843#, c-format
7018msgid "Adding blacklisting entry for peer `%s':`%s'\n" 6844msgid "Adding blacklisting entry for peer `%s':`%s'\n"
7019msgstr "" 6845msgstr ""
7020 6846
7021#: src/transport/gnunet-service-transport.c:2781 6847#: src/transport/gnunet-service-transport_hello.c:195
7022#, fuzzy
7023msgid "Transport service is lacking key configuration settings. Exiting.\n"
7024msgstr "立即保存配置?"
7025
7026#: src/transport/gnunet-service-transport_hello.c:193
7027msgid "# refreshed my HELLO" 6848msgid "# refreshed my HELLO"
7028msgstr "" 6849msgstr ""
7029 6850
7030#: src/transport/gnunet-service-transport_neighbours.c:804 6851#: src/transport/gnunet-service-transport_neighbours.c:805
7031msgid "# session creation failed" 6852msgid "# session creation failed"
7032msgstr "" 6853msgstr ""
7033 6854
7034#: src/transport/gnunet-service-transport_neighbours.c:1051 6855#: src/transport/gnunet-service-transport_neighbours.c:1052
7035msgid "# DISCONNECT messages sent" 6856msgid "# DISCONNECT messages sent"
7036msgstr "" 6857msgstr ""
7037 6858
7038#: src/transport/gnunet-service-transport_neighbours.c:1174 6859#: src/transport/gnunet-service-transport_neighbours.c:1175
7039msgid "# disconnects due to quota of 0" 6860msgid "# disconnects due to quota of 0"
7040msgstr "" 6861msgstr ""
7041 6862
7042#: src/transport/gnunet-service-transport_neighbours.c:1322 6863#: src/transport/gnunet-service-transport_neighbours.c:1323
7043#: src/transport/gnunet-service-transport_neighbours.c:1783 6864#: src/transport/gnunet-service-transport_neighbours.c:1784
7044msgid "# bytes in message queue for other peers" 6865msgid "# bytes in message queue for other peers"
7045msgstr "" 6866msgstr ""
7046 6867
7047#: src/transport/gnunet-service-transport_neighbours.c:1327 6868#: src/transport/gnunet-service-transport_neighbours.c:1328
7048msgid "# messages transmitted to other peers" 6869msgid "# messages transmitted to other peers"
7049msgstr "" 6870msgstr ""
7050 6871
7051#: src/transport/gnunet-service-transport_neighbours.c:1333 6872#: src/transport/gnunet-service-transport_neighbours.c:1334
7052msgid "# transmission failures for messages to other peers" 6873msgid "# transmission failures for messages to other peers"
7053msgstr "" 6874msgstr ""
7054 6875
7055#: src/transport/gnunet-service-transport_neighbours.c:1393 6876#: src/transport/gnunet-service-transport_neighbours.c:1394
7056msgid "# messages timed out while in transport queue" 6877msgid "# messages timed out while in transport queue"
7057msgstr "" 6878msgstr ""
7058 6879
7059#: src/transport/gnunet-service-transport_neighbours.c:1477 6880#: src/transport/gnunet-service-transport_neighbours.c:1478
7060msgid "# KEEPALIVES sent" 6881msgid "# KEEPALIVES sent"
7061msgstr "" 6882msgstr ""
7062 6883
7063#: src/transport/gnunet-service-transport_neighbours.c:1513 6884#: src/transport/gnunet-service-transport_neighbours.c:1514
7064msgid "# KEEPALIVE messages discarded (peer unknown)" 6885msgid "# KEEPALIVE messages discarded (peer unknown)"
7065msgstr "" 6886msgstr ""
7066 6887
7067#: src/transport/gnunet-service-transport_neighbours.c:1521 6888#: src/transport/gnunet-service-transport_neighbours.c:1522
7068msgid "# KEEPALIVE messages discarded (no session)" 6889msgid "# KEEPALIVE messages discarded (no session)"
7069msgstr "" 6890msgstr ""
7070 6891
7071#: src/transport/gnunet-service-transport_neighbours.c:1531 6892#: src/transport/gnunet-service-transport_neighbours.c:1532
7072msgid "# KEEPALIVES received in good order" 6893msgid "# KEEPALIVES received in good order"
7073msgstr "" 6894msgstr ""
7074 6895
7075#: src/transport/gnunet-service-transport_neighbours.c:1576 6896#: src/transport/gnunet-service-transport_neighbours.c:1577
7076msgid "# KEEPALIVE_RESPONSEs discarded (not connected)" 6897msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
7077msgstr "" 6898msgstr ""
7078 6899
7079#: src/transport/gnunet-service-transport_neighbours.c:1585 6900#: src/transport/gnunet-service-transport_neighbours.c:1586
7080msgid "# KEEPALIVE_RESPONSEs discarded (not expected)" 6901msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
7081msgstr "" 6902msgstr ""
7082 6903
7083#: src/transport/gnunet-service-transport_neighbours.c:1593 6904#: src/transport/gnunet-service-transport_neighbours.c:1594
7084msgid "# KEEPALIVE_RESPONSEs discarded (address changed)" 6905msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
7085msgstr "" 6906msgstr ""
7086 6907
7087#: src/transport/gnunet-service-transport_neighbours.c:1602 6908#: src/transport/gnunet-service-transport_neighbours.c:1603
7088msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)" 6909msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
7089msgstr "" 6910msgstr ""
7090 6911
7091#: src/transport/gnunet-service-transport_neighbours.c:1607 6912#: src/transport/gnunet-service-transport_neighbours.c:1608
7092msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)" 6913msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
7093msgstr "" 6914msgstr ""
7094 6915
7095#: src/transport/gnunet-service-transport_neighbours.c:1613 6916#: src/transport/gnunet-service-transport_neighbours.c:1614
7096msgid "# KEEPALIVE_RESPONSEs received (OK)" 6917msgid "# KEEPALIVE_RESPONSEs received (OK)"
7097msgstr "" 6918msgstr ""
7098 6919
7099#: src/transport/gnunet-service-transport_neighbours.c:1680 6920#: src/transport/gnunet-service-transport_neighbours.c:1681
7100msgid "# messages discarded due to lack of neighbour record" 6921msgid "# messages discarded due to lack of neighbour record"
7101msgstr "" 6922msgstr ""
7102 6923
7103#: src/transport/gnunet-service-transport_neighbours.c:1714 6924#: src/transport/gnunet-service-transport_neighbours.c:1715
7104msgid "# bandwidth quota violations by other peers" 6925msgid "# bandwidth quota violations by other peers"
7105msgstr "" 6926msgstr ""
7106 6927
7107#: src/transport/gnunet-service-transport_neighbours.c:1729 6928#: src/transport/gnunet-service-transport_neighbours.c:1730
7108msgid "# ms throttling suggested" 6929msgid "# ms throttling suggested"
7109msgstr "" 6930msgstr ""
7110 6931
7111#: src/transport/gnunet-service-transport_neighbours.c:1852 6932#: src/transport/gnunet-service-transport_neighbours.c:1853
7112#, fuzzy, c-format 6933#, fuzzy, c-format
7113msgid "Failed to send SYN message to peer `%s'\n" 6934msgid "Failed to send SYN message to peer `%s'\n"
7114msgstr "打开日志文件“%s”失败:%s\n" 6935msgstr "打开日志文件“%s”失败:%s\n"
7115 6936
7116#: src/transport/gnunet-service-transport_neighbours.c:1872 6937#: src/transport/gnunet-service-transport_neighbours.c:1873
7117#, fuzzy 6938#, fuzzy
7118msgid "# Failed attempts to switch addresses (failed to send SYN CONT)" 6939msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
7119msgstr "打开日志文件“%s”失败:%s\n" 6940msgstr "打开日志文件“%s”失败:%s\n"
7120 6941
7121#: src/transport/gnunet-service-transport_neighbours.c:1911 6942#: src/transport/gnunet-service-transport_neighbours.c:1912
7122#, fuzzy 6943#, fuzzy
7123msgid "# SYN messages sent" 6944msgid "# SYN messages sent"
7124msgstr "消息尺寸" 6945msgstr "消息尺寸"
7125 6946
7126#: src/transport/gnunet-service-transport_neighbours.c:1928 6947#: src/transport/gnunet-service-transport_neighbours.c:1929
7127#, fuzzy, c-format 6948#, fuzzy, c-format
7128msgid "Failed to transmit SYN message to %s\n" 6949msgid "Failed to transmit SYN message to %s\n"
7129msgstr "解析配置文件“%s”失败\n" 6950msgstr "解析配置文件“%s”失败\n"
7130 6951
7131#: src/transport/gnunet-service-transport_neighbours.c:1958 6952#: src/transport/gnunet-service-transport_neighbours.c:1959
7132#, fuzzy 6953#, fuzzy
7133msgid "# Failed attempts to switch addresses (failed to send SYN)" 6954msgid "# Failed attempts to switch addresses (failed to send SYN)"
7134msgstr "打开日志文件“%s”失败:%s\n" 6955msgstr "打开日志文件“%s”失败:%s\n"
7135 6956
7136#: src/transport/gnunet-service-transport_neighbours.c:2026 6957#: src/transport/gnunet-service-transport_neighbours.c:2027
7137#, fuzzy, c-format 6958#, fuzzy, c-format
7138msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n" 6959msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
7139msgstr "初始化“%s”服务失败。\n" 6960msgstr "初始化“%s”服务失败。\n"
7140 6961
7141#: src/transport/gnunet-service-transport_neighbours.c:2080 6962#: src/transport/gnunet-service-transport_neighbours.c:2081
7142msgid "# SYN_ACK messages sent" 6963msgid "# SYN_ACK messages sent"
7143msgstr "" 6964msgstr ""
7144 6965
7145#: src/transport/gnunet-service-transport_neighbours.c:2097 6966#: src/transport/gnunet-service-transport_neighbours.c:2098
7146#, fuzzy, c-format 6967#, fuzzy, c-format
7147msgid "Failed to transmit SYN_ACK message to %s\n" 6968msgid "Failed to transmit SYN_ACK message to %s\n"
7148msgstr "解析配置文件“%s”失败\n" 6969msgstr "解析配置文件“%s”失败\n"
7149 6970
7150#: src/transport/gnunet-service-transport_neighbours.c:2260 6971#: src/transport/gnunet-service-transport_neighbours.c:2261
7151msgid "# SYN messages received" 6972msgid "# SYN messages received"
7152msgstr "" 6973msgstr ""
7153 6974
7154#: src/transport/gnunet-service-transport_neighbours.c:2265 6975#: src/transport/gnunet-service-transport_neighbours.c:2266
7155#, c-format 6976#, c-format
7156msgid "SYN request from peer `%s' ignored due impending shutdown\n" 6977msgid "SYN request from peer `%s' ignored due impending shutdown\n"
7157msgstr "" 6978msgstr ""
7158 6979
7159#: src/transport/gnunet-service-transport_neighbours.c:2652 6980#: src/transport/gnunet-service-transport_neighbours.c:2653
7160msgid "# Attempts to switch addresses" 6981msgid "# Attempts to switch addresses"
7161msgstr "" 6982msgstr ""
7162 6983
7163#: src/transport/gnunet-service-transport_neighbours.c:3137 6984#: src/transport/gnunet-service-transport_neighbours.c:3138
7164msgid "# SYN_ACK messages received" 6985msgid "# SYN_ACK messages received"
7165msgstr "" 6986msgstr ""
7166 6987
7167#: src/transport/gnunet-service-transport_neighbours.c:3145 6988#: src/transport/gnunet-service-transport_neighbours.c:3146
7168msgid "# unexpected SYN_ACK messages (no peer)" 6989msgid "# unexpected SYN_ACK messages (no peer)"
7169msgstr "" 6990msgstr ""
7170 6991
7171#: src/transport/gnunet-service-transport_neighbours.c:3163 6992#: src/transport/gnunet-service-transport_neighbours.c:3164
7172#: src/transport/gnunet-service-transport_neighbours.c:3187 6993#: src/transport/gnunet-service-transport_neighbours.c:3188
7173msgid "# unexpected SYN_ACK messages (not ready)" 6994msgid "# unexpected SYN_ACK messages (not ready)"
7174msgstr "" 6995msgstr ""
7175 6996
7176#: src/transport/gnunet-service-transport_neighbours.c:3199 6997#: src/transport/gnunet-service-transport_neighbours.c:3200
7177msgid "# unexpected SYN_ACK messages (waiting on ATS)" 6998msgid "# unexpected SYN_ACK messages (waiting on ATS)"
7178msgstr "" 6999msgstr ""
7179 7000
7180#: src/transport/gnunet-service-transport_neighbours.c:3224 7001#: src/transport/gnunet-service-transport_neighbours.c:3225
7181msgid "# Successful attempts to switch addresses" 7002msgid "# Successful attempts to switch addresses"
7182msgstr "" 7003msgstr ""
7183 7004
7184#: src/transport/gnunet-service-transport_neighbours.c:3237 7005#: src/transport/gnunet-service-transport_neighbours.c:3238
7185msgid "# unexpected SYN_ACK messages (disconnecting)" 7006msgid "# unexpected SYN_ACK messages (disconnecting)"
7186msgstr "" 7007msgstr ""
7187 7008
7188#: src/transport/gnunet-service-transport_neighbours.c:3410 7009#: src/transport/gnunet-service-transport_neighbours.c:3411
7189msgid "# ACK messages received" 7010msgid "# ACK messages received"
7190msgstr "" 7011msgstr ""
7191 7012
7192#: src/transport/gnunet-service-transport_neighbours.c:3446 7013#: src/transport/gnunet-service-transport_neighbours.c:3447
7193msgid "# unexpected ACK messages" 7014msgid "# unexpected ACK messages"
7194msgstr "" 7015msgstr ""
7195 7016
7196#: src/transport/gnunet-service-transport_neighbours.c:3534 7017#: src/transport/gnunet-service-transport_neighbours.c:3535
7197msgid "# quota messages ignored (malformed)" 7018msgid "# quota messages ignored (malformed)"
7198msgstr "" 7019msgstr ""
7199 7020
7200#: src/transport/gnunet-service-transport_neighbours.c:3541 7021#: src/transport/gnunet-service-transport_neighbours.c:3542
7201msgid "# QUOTA messages received" 7022msgid "# QUOTA messages received"
7202msgstr "" 7023msgstr ""
7203 7024
7204#: src/transport/gnunet-service-transport_neighbours.c:3581 7025#: src/transport/gnunet-service-transport_neighbours.c:3582
7205msgid "# disconnect messages ignored (malformed)" 7026msgid "# disconnect messages ignored (malformed)"
7206msgstr "" 7027msgstr ""
7207 7028
7208#: src/transport/gnunet-service-transport_neighbours.c:3588 7029#: src/transport/gnunet-service-transport_neighbours.c:3589
7209msgid "# DISCONNECT messages received" 7030msgid "# DISCONNECT messages received"
7210msgstr "" 7031msgstr ""
7211 7032
7212#: src/transport/gnunet-service-transport_neighbours.c:3599 7033#: src/transport/gnunet-service-transport_neighbours.c:3600
7213msgid "# disconnect messages ignored (timestamp)" 7034msgid "# disconnect messages ignored (timestamp)"
7214msgstr "" 7035msgstr ""
7215 7036
7216#: src/transport/gnunet-service-transport_neighbours.c:3734 7037#: src/transport/gnunet-service-transport_neighbours.c:3735
7217msgid "# disconnected from peer upon explicit request" 7038msgid "# disconnected from peer upon explicit request"
7218msgstr "" 7039msgstr ""
7219 7040
7220#: src/transport/gnunet-service-transport_plugins.c:156 7041#: src/transport/gnunet-service-transport_plugins.c:158
7221msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n" 7042msgid "Transport service is lacking NEIGHBOUR_LIMIT option.\n"
7222msgstr "" 7043msgstr ""
7223 7044
7224#: src/transport/gnunet-service-transport_plugins.c:221 7045#: src/transport/gnunet-service-transport_plugins.c:223
7225#: src/transport/gnunet-service-transport_plugins.c:229 7046#: src/transport/gnunet-service-transport_plugins.c:231
7226#: src/transport/gnunet-service-transport_plugins.c:237 7047#: src/transport/gnunet-service-transport_plugins.c:239
7227#: src/transport/gnunet-service-transport_plugins.c:245 7048#: src/transport/gnunet-service-transport_plugins.c:247
7228#: src/transport/gnunet-service-transport_plugins.c:253 7049#: src/transport/gnunet-service-transport_plugins.c:255
7229#: src/transport/gnunet-service-transport_plugins.c:261 7050#: src/transport/gnunet-service-transport_plugins.c:263
7230#: src/transport/gnunet-service-transport_plugins.c:269 7051#: src/transport/gnunet-service-transport_plugins.c:271
7231#: src/transport/gnunet-service-transport_plugins.c:277 7052#: src/transport/gnunet-service-transport_plugins.c:279
7232#: src/transport/gnunet-service-transport_plugins.c:285 7053#: src/transport/gnunet-service-transport_plugins.c:287
7233#: src/transport/gnunet-service-transport_plugins.c:293 7054#: src/transport/gnunet-service-transport_plugins.c:295
7234#: src/transport/gnunet-service-transport_plugins.c:301 7055#: src/transport/gnunet-service-transport_plugins.c:303
7235#, fuzzy, c-format 7056#, fuzzy, c-format
7236msgid "Missing function `%s' in transport plugin for `%s'\n" 7057msgid "Missing function `%s' in transport plugin for `%s'\n"
7237msgstr "解析配置文件“%s”失败\n" 7058msgstr "解析配置文件“%s”失败\n"
7238 7059
7239#: src/transport/gnunet-service-transport_plugins.c:308 7060#: src/transport/gnunet-service-transport_plugins.c:310
7240#, c-format 7061#, c-format
7241msgid "Did not load plugin `%s' due to missing functions\n" 7062msgid "Did not load plugin `%s' due to missing functions\n"
7242msgstr "" 7063msgstr ""
7243 7064
7244#: src/transport/gnunet-service-transport_validation.c:386 7065#: src/transport/gnunet-service-transport_validation.c:388
7245msgid "# Addresses in validation map" 7066msgid "# Addresses in validation map"
7246msgstr "" 7067msgstr ""
7247 7068
7248#: src/transport/gnunet-service-transport_validation.c:489 7069#: src/transport/gnunet-service-transport_validation.c:491
7249#: src/transport/gnunet-service-transport_validation.c:675 7070#: src/transport/gnunet-service-transport_validation.c:677
7250#: src/transport/gnunet-service-transport_validation.c:995 7071#: src/transport/gnunet-service-transport_validation.c:997
7251#: src/transport/gnunet-service-transport_validation.c:1607 7072#: src/transport/gnunet-service-transport_validation.c:1609
7252#, fuzzy 7073#, fuzzy
7253msgid "# validations running" 7074msgid "# validations running"
7254msgstr "sqlite 数据仓库" 7075msgstr "sqlite 数据仓库"
7255 7076
7256#: src/transport/gnunet-service-transport_validation.c:530 7077#: src/transport/gnunet-service-transport_validation.c:532
7257msgid "# address records discarded (timeout)" 7078msgid "# address records discarded (timeout)"
7258msgstr "" 7079msgstr ""
7259 7080
7260#: src/transport/gnunet-service-transport_validation.c:578 7081#: src/transport/gnunet-service-transport_validation.c:580
7261msgid "# address records discarded (blacklist)" 7082msgid "# address records discarded (blacklist)"
7262msgstr "" 7083msgstr ""
7263 7084
7264#: src/transport/gnunet-service-transport_validation.c:666 7085#: src/transport/gnunet-service-transport_validation.c:668
7265msgid "# PINGs for address validation sent" 7086msgid "# PINGs for address validation sent"
7266msgstr "" 7087msgstr ""
7267 7088
7268#: src/transport/gnunet-service-transport_validation.c:746 7089#: src/transport/gnunet-service-transport_validation.c:748
7269msgid "# validations delayed by global throttle" 7090msgid "# validations delayed by global throttle"
7270msgstr "" 7091msgstr ""
7271 7092
7272#: src/transport/gnunet-service-transport_validation.c:783 7093#: src/transport/gnunet-service-transport_validation.c:785
7273msgid "# address revalidations started" 7094msgid "# address revalidations started"
7274msgstr "" 7095msgstr ""
7275 7096
7276#: src/transport/gnunet-service-transport_validation.c:1121 7097#: src/transport/gnunet-service-transport_validation.c:1123
7277msgid "# PING message for different peer received" 7098msgid "# PING message for different peer received"
7278msgstr "" 7099msgstr ""
7279 7100
7280#: src/transport/gnunet-service-transport_validation.c:1172 7101#: src/transport/gnunet-service-transport_validation.c:1174
7281#, c-format 7102#, c-format
7282msgid "Plugin `%s' not available, cannot confirm having this address\n" 7103msgid "Plugin `%s' not available, cannot confirm having this address\n"
7283msgstr "" 7104msgstr ""
7284 7105
7285#: src/transport/gnunet-service-transport_validation.c:1185 7106#: src/transport/gnunet-service-transport_validation.c:1187
7286msgid "# failed address checks during validation" 7107msgid "# failed address checks during validation"
7287msgstr "" 7108msgstr ""
7288 7109
7289#: src/transport/gnunet-service-transport_validation.c:1188 7110#: src/transport/gnunet-service-transport_validation.c:1190
7290#, c-format 7111#, c-format
7291msgid "Address `%s' is not one of my addresses, not confirming PING\n" 7112msgid "Address `%s' is not one of my addresses, not confirming PING\n"
7292msgstr "" 7113msgstr ""
7293 7114
7294#: src/transport/gnunet-service-transport_validation.c:1196 7115#: src/transport/gnunet-service-transport_validation.c:1198
7295msgid "# successful address checks during validation" 7116msgid "# successful address checks during validation"
7296msgstr "" 7117msgstr ""
7297 7118
7298#: src/transport/gnunet-service-transport_validation.c:1209 7119#: src/transport/gnunet-service-transport_validation.c:1211
7299#, c-format 7120#, c-format
7300msgid "" 7121msgid ""
7301"Not confirming PING from peer `%s' with address `%s' since I cannot confirm " 7122"Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
7302"having this address.\n" 7123"having this address.\n"
7303msgstr "" 7124msgstr ""
7304 7125
7305#: src/transport/gnunet-service-transport_validation.c:1264 7126#: src/transport/gnunet-service-transport_validation.c:1266
7306#, fuzzy, c-format 7127#, fuzzy, c-format
7307msgid "Failed to create PONG signature for peer `%s'\n" 7128msgid "Failed to create PONG signature for peer `%s'\n"
7308msgstr "发送消息失败。\n" 7129msgstr "发送消息失败。\n"
7309 7130
7310#: src/transport/gnunet-service-transport_validation.c:1315 7131#: src/transport/gnunet-service-transport_validation.c:1317
7311msgid "# PONGs unicast via reliable transport" 7132msgid "# PONGs unicast via reliable transport"
7312msgstr "" 7133msgstr ""
7313 7134
7314#: src/transport/gnunet-service-transport_validation.c:1324 7135#: src/transport/gnunet-service-transport_validation.c:1326
7315msgid "# PONGs multicast to all available addresses" 7136msgid "# PONGs multicast to all available addresses"
7316msgstr "" 7137msgstr ""
7317 7138
7318#: src/transport/gnunet-service-transport_validation.c:1497 7139#: src/transport/gnunet-service-transport_validation.c:1499
7319msgid "# PONGs dropped, no matching pending validation" 7140msgid "# PONGs dropped, no matching pending validation"
7320msgstr "" 7141msgstr ""
7321 7142
7322#: src/transport/gnunet-service-transport_validation.c:1515 7143#: src/transport/gnunet-service-transport_validation.c:1517
7323msgid "# PONGs dropped, signature expired" 7144msgid "# PONGs dropped, signature expired"
7324msgstr "" 7145msgstr ""
7325 7146
7326#: src/transport/gnunet-service-transport_validation.c:1570 7147#: src/transport/gnunet-service-transport_validation.c:1572
7327msgid "# validations succeeded" 7148msgid "# validations succeeded"
7328msgstr "" 7149msgstr ""
7329 7150
7330#: src/transport/gnunet-service-transport_validation.c:1625 7151#: src/transport/gnunet-service-transport_validation.c:1627
7331msgid "# HELLOs given to peerinfo" 7152msgid "# HELLOs given to peerinfo"
7332msgstr "" 7153msgstr ""
7333 7154
7334#: src/transport/gnunet-transport.c:411 7155#: src/transport/gnunet-transport.c:413
7335#, c-format 7156#, c-format
7336msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n" 7157msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
7337msgstr "" 7158msgstr ""
7338 7159
7339#: src/transport/gnunet-transport.c:421 7160#: src/transport/gnunet-transport.c:423
7340#, c-format 7161#, c-format
7341msgid "Received %llu bytes/s (%llu bytes in %s)\n" 7162msgid "Received %llu bytes/s (%llu bytes in %s)\n"
7342msgstr "" 7163msgstr ""
7343 7164
7344#: src/transport/gnunet-transport.c:465 7165#: src/transport/gnunet-transport.c:467
7345#, fuzzy, c-format 7166#, fuzzy, c-format
7346msgid "Failed to connect to `%s'\n" 7167msgid "Failed to connect to `%s'\n"
7347msgstr "初始化“%s”服务失败。\n" 7168msgstr "初始化“%s”服务失败。\n"
7348 7169
7349#: src/transport/gnunet-transport.c:478 7170#: src/transport/gnunet-transport.c:480
7350#, fuzzy, c-format 7171#, fuzzy, c-format
7351msgid "Failed to resolve address for peer `%s'\n" 7172msgid "Failed to resolve address for peer `%s'\n"
7352msgstr "找不到接口“%s”的一个 IP 地址。\n" 7173msgstr "找不到接口“%s”的一个 IP 地址。\n"
7353 7174
7354#: src/transport/gnunet-transport.c:492 7175#: src/transport/gnunet-transport.c:494
7355#, fuzzy 7176#, fuzzy
7356msgid "Failed to list connections, timeout occurred\n" 7177msgid "Failed to list connections, timeout occurred\n"
7357msgstr "初始化“%s”服务失败。\n" 7178msgstr "初始化“%s”服务失败。\n"
7358 7179
7359#: src/transport/gnunet-transport.c:525 7180#: src/transport/gnunet-transport.c:527
7360#, c-format 7181#, c-format
7361msgid "Transmitting %u bytes\n" 7182msgid "Transmitting %u bytes\n"
7362msgstr "" 7183msgstr ""
7363 7184
7364#: src/transport/gnunet-transport.c:559 7185#: src/transport/gnunet-transport.c:561
7365#, c-format 7186#, c-format
7366msgid "" 7187msgid ""
7367"Successfully connected to `%s', starting to send benchmark data in %u Kb " 7188"Successfully connected to `%s', starting to send benchmark data in %u Kb "
7368"blocks\n" 7189"blocks\n"
7369msgstr "" 7190msgstr ""
7370 7191
7371#: src/transport/gnunet-transport.c:590 7192#: src/transport/gnunet-transport.c:592
7372#, fuzzy, c-format 7193#, fuzzy, c-format
7373msgid "Disconnected from peer `%s' while benchmarking\n" 7194msgid "Disconnected from peer `%s' while benchmarking\n"
7374msgstr "“%s”已连接到“%s”。\n" 7195msgstr "“%s”已连接到“%s”。\n"
7375 7196
7376#: src/transport/gnunet-transport.c:614 src/transport/gnunet-transport.c:643 7197#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
7377#, c-format 7198#, c-format
7378msgid "%24s: %-17s %4s (%u connections in total)\n" 7199msgid "%24s: %-17s %4s (%u connections in total)\n"
7379msgstr "" 7200msgstr ""
7380 7201
7381#: src/transport/gnunet-transport.c:616 7202#: src/transport/gnunet-transport.c:618
7382#, fuzzy 7203#, fuzzy
7383msgid "Connected to" 7204msgid "Connected to"
7384msgstr "“%s”已连接到“%s”。\n" 7205msgstr "“%s”已连接到“%s”。\n"
7385 7206
7386#: src/transport/gnunet-transport.c:645 7207#: src/transport/gnunet-transport.c:647
7387#, fuzzy 7208#, fuzzy
7388msgid "Disconnected from" 7209msgid "Disconnected from"
7389msgstr "“%s”已连接到“%s”。\n" 7210msgstr "“%s”已连接到“%s”。\n"
7390 7211
7391#: src/transport/gnunet-transport.c:680 7212#: src/transport/gnunet-transport.c:682
7392#, c-format 7213#, c-format
7393msgid "Received %u bytes\n" 7214msgid "Received %u bytes\n"
7394msgstr "" 7215msgstr ""
7395 7216
7396#: src/transport/gnunet-transport.c:717 7217#: src/transport/gnunet-transport.c:719
7397#, c-format 7218#, c-format
7398msgid "Peer `%s': %s %s in state `%s' until %s\n" 7219msgid "Peer `%s': %s %s in state `%s' until %s\n"
7399msgstr "" 7220msgstr ""
7400 7221
7401#: src/transport/gnunet-transport.c:729 7222#: src/transport/gnunet-transport.c:731
7402#, fuzzy, c-format 7223#, fuzzy, c-format
7403msgid "Peer `%s': %s %s\n" 7224msgid "Peer `%s': %s %s\n"
7404msgstr "运行 %s失败:%s %d\n" 7225msgstr "运行 %s失败:%s %d\n"
7405 7226
7406#: src/transport/gnunet-transport.c:1142 7227#: src/transport/gnunet-transport.c:1144
7407#, fuzzy 7228#, fuzzy
7408msgid "Monitor disconnected from transport service. Reconnecting.\n" 7229msgid "Monitor disconnected from transport service. Reconnecting.\n"
7409msgstr "初始化“%s”服务失败。\n" 7230msgstr "初始化“%s”服务失败。\n"
7410 7231
7411#: src/transport/gnunet-transport.c:1249 7232#: src/transport/gnunet-transport.c:1251
7412#, c-format 7233#, c-format
7413msgid "" 7234msgid ""
7414"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, " 7235"Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
7415"%s, %s %s\n" 7236"%s, %s %s\n"
7416msgstr "" 7237msgstr ""
7417 7238
7418#: src/transport/gnunet-transport.c:1262 7239#: src/transport/gnunet-transport.c:1264
7419#, c-format 7240#, c-format
7420msgid "" 7241msgid ""
7421"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n" 7242"No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
7422msgstr "" 7243msgstr ""
7423 7244
7424#: src/transport/gnunet-transport.c:1292 7245#: src/transport/gnunet-transport.c:1294
7425#, fuzzy 7246#, fuzzy
7426msgid "Failed to connect to transport service for disconnection\n" 7247msgid "Failed to connect to transport service for disconnection\n"
7427msgstr "初始化“%s”服务失败。\n" 7248msgstr "初始化“%s”服务失败。\n"
7428 7249
7429#: src/transport/gnunet-transport.c:1298 7250#: src/transport/gnunet-transport.c:1300
7430msgid "Blacklisting request in place, stop with CTRL-C\n" 7251msgid "Blacklisting request in place, stop with CTRL-C\n"
7431msgstr "" 7252msgstr ""
7432 7253
7433#: src/transport/gnunet-transport.c:1323 src/transport/gnunet-transport.c:1353 7254#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
7434#: src/transport/gnunet-transport.c:1406 7255#: src/transport/gnunet-transport.c:1408
7435#, fuzzy 7256#, fuzzy
7436msgid "Failed to connect to transport service\n" 7257msgid "Failed to connect to transport service\n"
7437msgstr "初始化“%s”服务失败。\n" 7258msgstr "初始化“%s”服务失败。\n"
7438 7259
7439#: src/transport/gnunet-transport.c:1360 7260#: src/transport/gnunet-transport.c:1362
7440msgid "Starting to receive benchmark data\n" 7261msgid "Starting to receive benchmark data\n"
7441msgstr "" 7262msgstr ""
7442 7263
7443#: src/transport/gnunet-transport.c:1431 7264#: src/transport/gnunet-transport.c:1433
7444#, fuzzy 7265#, fuzzy
7445msgid "print information for all peers (instead of only connected peers)" 7266msgid "print information for all peers (instead of only connected peers)"
7446msgstr "无法获取有关用户“%s”的信息:%s\n" 7267msgstr "无法获取有关用户“%s”的信息:%s\n"
7447 7268
7448#: src/transport/gnunet-transport.c:1435 7269#: src/transport/gnunet-transport.c:1437
7449msgid "measure how fast we are receiving data from all peers (until CTRL-C)" 7270msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
7450msgstr "" 7271msgstr ""
7451 7272
7452#: src/transport/gnunet-transport.c:1439 7273#: src/transport/gnunet-transport.c:1441
7453#, fuzzy 7274#, fuzzy
7454msgid "disconnect from a peer" 7275msgid "disconnect from a peer"
7455msgstr "初始化“%s”服务失败。\n" 7276msgstr "初始化“%s”服务失败。\n"
7456 7277
7457#: src/transport/gnunet-transport.c:1443 7278#: src/transport/gnunet-transport.c:1445
7458msgid "provide information about all current connections (once)" 7279msgid "provide information about all current connections (once)"
7459msgstr "" 7280msgstr ""
7460 7281
7461#: src/transport/gnunet-transport.c:1451 7282#: src/transport/gnunet-transport.c:1453
7462msgid "" 7283msgid ""
7463"provide information about all connects and disconnect events (continuously)" 7284"provide information about all connects and disconnect events (continuously)"
7464msgstr "" 7285msgstr ""
7465 7286
7466#: src/transport/gnunet-transport.c:1455 7287#: src/transport/gnunet-transport.c:1457
7467msgid "do not resolve hostnames" 7288msgid "do not resolve hostnames"
7468msgstr "" 7289msgstr ""
7469 7290
7470#: src/transport/gnunet-transport.c:1460 7291#: src/transport/gnunet-transport.c:1462
7471#: src/transport/gnunet-transport-profiler.c:639 7292#: src/transport/gnunet-transport-profiler.c:641
7472msgid "peer identity" 7293msgid "peer identity"
7473msgstr "" 7294msgstr ""
7474 7295
7475#: src/transport/gnunet-transport.c:1464 7296#: src/transport/gnunet-transport.c:1466
7476msgid "monitor plugin sessions" 7297msgid "monitor plugin sessions"
7477msgstr "" 7298msgstr ""
7478 7299
7479#: src/transport/gnunet-transport.c:1469 7300#: src/transport/gnunet-transport.c:1471
7480msgid "send data for benchmarking to the other peer (until CTRL-C)" 7301msgid "send data for benchmarking to the other peer (until CTRL-C)"
7481msgstr "" 7302msgstr ""
7482 7303
7483#: src/transport/gnunet-transport.c:1480 7304#: src/transport/gnunet-transport.c:1482
7484#: src/transport/gnunet-transport-profiler.c:650 7305#: src/transport/gnunet-transport-profiler.c:652
7485#, fuzzy 7306#, fuzzy
7486msgid "Direct access to transport service." 7307msgid "Direct access to transport service."
7487msgstr "初始化“%s”服务失败。\n" 7308msgstr "初始化“%s”服务失败。\n"
7488 7309
7489#: src/transport/gnunet-transport-profiler.c:217 7310#: src/transport/gnunet-transport-profiler.c:219
7490#, c-format 7311#, c-format
7491msgid "%llu B in %llu ms == %.2f KB/s!\n" 7312msgid "%llu B in %llu ms == %.2f KB/s!\n"
7492msgstr "" 7313msgstr ""
7493 7314
7494#: src/transport/gnunet-transport-profiler.c:615 7315#: src/transport/gnunet-transport-profiler.c:617
7495msgid "send data to peer" 7316msgid "send data to peer"
7496msgstr "" 7317msgstr ""
7497 7318
7498#: src/transport/gnunet-transport-profiler.c:619 7319#: src/transport/gnunet-transport-profiler.c:621
7499msgid "receive data from peer" 7320msgid "receive data from peer"
7500msgstr "" 7321msgstr ""
7501 7322
7502#: src/transport/gnunet-transport-profiler.c:624 7323#: src/transport/gnunet-transport-profiler.c:626
7503msgid "iterations" 7324msgid "iterations"
7504msgstr "" 7325msgstr ""
7505 7326
7506#: src/transport/gnunet-transport-profiler.c:629 7327#: src/transport/gnunet-transport-profiler.c:631
7507#, fuzzy 7328#, fuzzy
7508msgid "number of messages to send" 7329msgid "number of messages to send"
7509msgstr "每次迭代所使用的消息数量" 7330msgstr "每次迭代所使用的消息数量"
7510 7331
7511#: src/transport/gnunet-transport-profiler.c:634 7332#: src/transport/gnunet-transport-profiler.c:636
7512#, fuzzy 7333#, fuzzy
7513msgid "message size to use" 7334msgid "message size to use"
7514msgstr "消息尺寸" 7335msgstr "消息尺寸"
7515 7336
7516#: src/transport/plugin_transport_http_client.c:1472 7337#: src/transport/plugin_transport_http_client.c:1474
7517#: src/transport/plugin_transport_http_server.c:2310 7338#: src/transport/plugin_transport_http_server.c:2312
7518#: src/transport/plugin_transport_http_server.c:3524 7339#: src/transport/plugin_transport_http_server.c:3530
7519#: src/transport/plugin_transport_tcp.c:3889 7340#: src/transport/plugin_transport_tcp.c:3895
7520#: src/transport/plugin_transport_tcp.c:3896 7341#: src/transport/plugin_transport_tcp.c:3902
7521#: src/transport/plugin_transport_xt.c:3897 7342#: src/transport/plugin_transport_xt.c:3899
7522#: src/transport/plugin_transport_xt.c:3904 7343#: src/transport/plugin_transport_xt.c:3906
7523msgid "TCP_STEALTH not supported on this platform.\n" 7344msgid "TCP_STEALTH not supported on this platform.\n"
7524msgstr "" 7345msgstr ""
7525 7346
7526#: src/transport/plugin_transport_http_client.c:2113 7347#: src/transport/plugin_transport_http_client.c:2115
7527#, c-format 7348#, c-format
7528msgid "Could not initialize curl multi handle, failed to start %s plugin!\n" 7349msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
7529msgstr "" 7350msgstr ""
7530 7351
7531#: src/transport/plugin_transport_http_client.c:2162 7352#: src/transport/plugin_transport_http_client.c:2164
7532#: src/transport/plugin_transport_http_server.c:3239 7353#: src/transport/plugin_transport_http_server.c:3245
7533#, fuzzy, c-format 7354#, fuzzy, c-format
7534msgid "Shutting down plugin `%s'\n" 7355msgid "Shutting down plugin `%s'\n"
7535msgstr "未知的命令“%s”。\n" 7356msgstr "未知的命令“%s”。\n"
7536 7357
7537#: src/transport/plugin_transport_http_client.c:2179 7358#: src/transport/plugin_transport_http_client.c:2181
7538#: src/transport/plugin_transport_http_server.c:3309 7359#: src/transport/plugin_transport_http_server.c:3315
7539#, c-format 7360#, c-format
7540msgid "Shutdown for plugin `%s' complete\n" 7361msgid "Shutdown for plugin `%s' complete\n"
7541msgstr "" 7362msgstr ""
7542 7363
7543#: src/transport/plugin_transport_http_client.c:2213 7364#: src/transport/plugin_transport_http_client.c:2215
7544#, fuzzy, c-format 7365#, fuzzy, c-format
7545msgid "Maximum number of requests is %u\n" 7366msgid "Maximum number of requests is %u\n"
7546msgstr "增加 TCP/IP 的最大连接数" 7367msgstr "增加 TCP/IP 的最大连接数"
7547 7368
7548#: src/transport/plugin_transport_http_server.c:1754 7369#: src/transport/plugin_transport_http_server.c:1756
7549#, c-format 7370#, c-format
7550msgid "" 7371msgid ""
7551"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data " 7372"Access from connection %p (%u of %u) for `%s' `%s' url `%s' with upload data "
7552"size %u\n" 7373"size %u\n"
7553msgstr "" 7374msgstr ""
7554 7375
7555#: src/transport/plugin_transport_http_server.c:2026 7376#: src/transport/plugin_transport_http_server.c:2028
7556#, c-format 7377#, c-format
7557msgid "Accepting connection (%u of %u) from `%s'\n" 7378msgid "Accepting connection (%u of %u) from `%s'\n"
7558msgstr "" 7379msgstr ""
7559 7380
7560#: src/transport/plugin_transport_http_server.c:2034 7381#: src/transport/plugin_transport_http_server.c:2036
7561#, c-format 7382#, c-format
7562msgid "" 7383msgid ""
7563"Server reached maximum number connections (%u), rejecting new connection\n" 7384"Server reached maximum number connections (%u), rejecting new connection\n"
7564msgstr "" 7385msgstr ""
7565 7386
7566#: src/transport/plugin_transport_http_server.c:2184 7387#: src/transport/plugin_transport_http_server.c:2186
7567msgid "" 7388msgid ""
7568"Could not create a new TLS certificate, program `gnunet-transport-" 7389"Could not create a new TLS certificate, program `gnunet-transport-"
7569"certificate-creation' could not be started!\n" 7390"certificate-creation' could not be started!\n"
7570msgstr "" 7391msgstr ""
7571 7392
7572#: src/transport/plugin_transport_http_server.c:2207 7393#: src/transport/plugin_transport_http_server.c:2209
7573#, c-format 7394#, c-format
7574msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n" 7395msgid "No usable TLS certificate found and creating one at `%s/%s' failed!\n"
7575msgstr "" 7396msgstr ""
7576 7397
7577#: src/transport/plugin_transport_http_server.c:2336 7398#: src/transport/plugin_transport_http_server.c:2338
7578msgid "Could not load or create server certificate! Loading plugin failed!\n" 7399msgid "Could not load or create server certificate! Loading plugin failed!\n"
7579msgstr "" 7400msgstr ""
7580 7401
7581#: src/transport/plugin_transport_http_server.c:2648 7402#: src/transport/plugin_transport_http_server.c:2654
7582#, fuzzy 7403#, fuzzy
7583msgid "Require valid port number for service in configuration!\n" 7404msgid "Require valid port number for service in configuration!\n"
7584msgstr "保存配置失败。" 7405msgstr "保存配置失败。"
7585 7406
7586#: src/transport/plugin_transport_http_server.c:2813 7407#: src/transport/plugin_transport_http_server.c:2819
7587#, c-format 7408#, c-format
7588msgid "Found %u addresses to report to NAT service\n" 7409msgid "Found %u addresses to report to NAT service\n"
7589msgstr "" 7410msgstr ""
7590 7411
7591#: src/transport/plugin_transport_http_server.c:2899 7412#: src/transport/plugin_transport_http_server.c:2905
7592#: src/transport/plugin_transport_udp.c:3621 7413#: src/transport/plugin_transport_udp.c:3627
7593#: src/transport/plugin_transport_xu.c:2047 7414#: src/transport/plugin_transport_xu.c:2049
7594msgid "Disabling IPv6 since it is not supported on this system!\n" 7415msgid "Disabling IPv6 since it is not supported on this system!\n"
7595msgstr "" 7416msgstr ""
7596 7417
7597#: src/transport/plugin_transport_http_server.c:3005 7418#: src/transport/plugin_transport_http_server.c:3011
7598#, c-format 7419#, c-format
7599msgid "IPv4 support is %s\n" 7420msgid "IPv4 support is %s\n"
7600msgstr "" 7421msgstr ""
7601 7422
7602#: src/transport/plugin_transport_http_server.c:3020 7423#: src/transport/plugin_transport_http_server.c:3026
7603#, c-format 7424#, c-format
7604msgid "IPv6 support is %s\n" 7425msgid "IPv6 support is %s\n"
7605msgstr "" 7426msgstr ""
7606 7427
7607#: src/transport/plugin_transport_http_server.c:3026 7428#: src/transport/plugin_transport_http_server.c:3032
7608msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n" 7429msgid "Neither IPv4 nor IPv6 are enabled! Fix in configuration\n"
7609msgstr "" 7430msgstr ""
7610 7431
7611#: src/transport/plugin_transport_http_server.c:3037 7432#: src/transport/plugin_transport_http_server.c:3043
7612#, fuzzy 7433#, fuzzy
7613msgid "Port is required! Fix in configuration\n" 7434msgid "Port is required! Fix in configuration\n"
7614msgstr "" 7435msgstr ""
7615"\n" 7436"\n"
7616"结束配置。\n" 7437"结束配置。\n"
7617 7438
7618#: src/transport/plugin_transport_http_server.c:3043 7439#: src/transport/plugin_transport_http_server.c:3049
7619#, c-format 7440#, c-format
7620msgid "Using port %u\n" 7441msgid "Using port %u\n"
7621msgstr "" 7442msgstr ""
7622 7443
7623#: src/transport/plugin_transport_http_server.c:3062 7444#: src/transport/plugin_transport_http_server.c:3068
7624#, c-format 7445#, c-format
7625msgid "Specific IPv4 address `%s' in configuration file is invalid!\n" 7446msgid "Specific IPv4 address `%s' in configuration file is invalid!\n"
7626msgstr "" 7447msgstr ""
7627 7448
7628#: src/transport/plugin_transport_http_server.c:3097 7449#: src/transport/plugin_transport_http_server.c:3103
7629#, c-format 7450#, c-format
7630msgid "Specific IPv6 address `%s' in configuration file is invalid!\n" 7451msgid "Specific IPv6 address `%s' in configuration file is invalid!\n"
7631msgstr "" 7452msgstr ""
7632 7453
7633#: src/transport/plugin_transport_http_server.c:3172 7454#: src/transport/plugin_transport_http_server.c:3178
7634#, fuzzy, c-format 7455#, fuzzy, c-format
7635msgid "Using external hostname `%s'\n" 7456msgid "Using external hostname `%s'\n"
7636msgstr "卸载 GNUnet 服务" 7457msgstr "卸载 GNUnet 服务"
7637 7458
7638#: src/transport/plugin_transport_http_server.c:3193 7459#: src/transport/plugin_transport_http_server.c:3199
7639#, c-format 7460#, c-format
7640msgid "Notifying transport only about hostname `%s'\n" 7461msgid "Notifying transport only about hostname `%s'\n"
7641msgstr "" 7462msgstr ""
7642 7463
7643#: src/transport/plugin_transport_http_server.c:3210 7464#: src/transport/plugin_transport_http_server.c:3216
7644#, fuzzy, c-format 7465#, fuzzy, c-format
7645msgid "Maximum number of connections is %u\n" 7466msgid "Maximum number of connections is %u\n"
7646msgstr "增加 TCP/IP 的最大连接数" 7467msgstr "增加 TCP/IP 的最大连接数"
7647 7468
7648#: src/transport/plugin_transport_http_server.c:3536 7469#: src/transport/plugin_transport_http_server.c:3542
7649#, fuzzy 7470#, fuzzy
7650msgid "Unable to compile URL regex\n" 7471msgid "Unable to compile URL regex\n"
7651msgstr "无法初始化 SQLite:%s。\n" 7472msgstr "无法初始化 SQLite:%s。\n"
7652 7473
7653#: src/transport/plugin_transport_smtp.c:221 7474#: src/transport/plugin_transport_smtp.c:223
7654#, c-format 7475#, c-format
7655msgid "Received malformed message via %s. Ignored.\n" 7476msgid "Received malformed message via %s. Ignored.\n"
7656msgstr "" 7477msgstr ""
7657 7478
7658#: src/transport/plugin_transport_smtp.c:308 7479#: src/transport/plugin_transport_smtp.c:310
7659msgid "SMTP filter string to invalid, lacks ': '\n" 7480msgid "SMTP filter string to invalid, lacks ': '\n"
7660msgstr "" 7481msgstr ""
7661 7482
7662#: src/transport/plugin_transport_smtp.c:317 7483#: src/transport/plugin_transport_smtp.c:319
7663#, c-format 7484#, c-format
7664msgid "SMTP filter string to long, capped to `%s'\n" 7485msgid "SMTP filter string to long, capped to `%s'\n"
7665msgstr "" 7486msgstr ""
7666 7487
7667#: src/transport/plugin_transport_smtp.c:412 7488#: src/transport/plugin_transport_smtp.c:414
7668#: src/transport/plugin_transport_smtp.c:422 7489#: src/transport/plugin_transport_smtp.c:424
7669#: src/transport/plugin_transport_smtp.c:435 7490#: src/transport/plugin_transport_smtp.c:437
7670#: src/transport/plugin_transport_smtp.c:454 7491#: src/transport/plugin_transport_smtp.c:456
7671#: src/transport/plugin_transport_smtp.c:477 7492#: src/transport/plugin_transport_smtp.c:479
7672#: src/transport/plugin_transport_smtp.c:485 7493#: src/transport/plugin_transport_smtp.c:487
7673#: src/transport/plugin_transport_smtp.c:498 7494#: src/transport/plugin_transport_smtp.c:500
7674#: src/transport/plugin_transport_smtp.c:509 7495#: src/transport/plugin_transport_smtp.c:511
7675#, c-format 7496#, c-format
7676msgid "SMTP: `%s' failed: %s.\n" 7497msgid "SMTP: `%s' failed: %s.\n"
7677msgstr "" 7498msgstr ""
7678 7499
7679#: src/transport/plugin_transport_smtp.c:650 7500#: src/transport/plugin_transport_smtp.c:652
7680msgid "No email-address specified, can not start SMTP transport.\n" 7501msgid "No email-address specified, can not start SMTP transport.\n"
7681msgstr "" 7502msgstr ""
7682 7503
7683#: src/transport/plugin_transport_smtp.c:662 7504#: src/transport/plugin_transport_smtp.c:664
7684msgid "# bytes received via SMTP" 7505msgid "# bytes received via SMTP"
7685msgstr "" 7506msgstr ""
7686 7507
7687#: src/transport/plugin_transport_smtp.c:663 7508#: src/transport/plugin_transport_smtp.c:665
7688msgid "# bytes sent via SMTP" 7509msgid "# bytes sent via SMTP"
7689msgstr "" 7510msgstr ""
7690 7511
7691#: src/transport/plugin_transport_smtp.c:665 7512#: src/transport/plugin_transport_smtp.c:667
7692msgid "# bytes dropped by SMTP (outgoing)" 7513msgid "# bytes dropped by SMTP (outgoing)"
7693msgstr "" 7514msgstr ""
7694 7515
7695#: src/transport/plugin_transport_tcp.c:1545 7516#: src/transport/plugin_transport_tcp.c:1551
7696#: src/transport/plugin_transport_tcp.c:2871 7517#: src/transport/plugin_transport_tcp.c:2877
7697#: src/transport/plugin_transport_xt.c:1551 7518#: src/transport/plugin_transport_xt.c:1553
7698#: src/transport/plugin_transport_xt.c:2877 7519#: src/transport/plugin_transport_xt.c:2879
7699#, c-format 7520#, c-format
7700msgid "Unexpected address length: %u bytes\n" 7521msgid "Unexpected address length: %u bytes\n"
7701msgstr "" 7522msgstr ""
7702 7523
7703#: src/transport/plugin_transport_tcp.c:1728 7524#: src/transport/plugin_transport_tcp.c:1734
7704#: src/transport/plugin_transport_tcp.c:1952 7525#: src/transport/plugin_transport_tcp.c:1958
7705#: src/transport/plugin_transport_tcp.c:3135 7526#: src/transport/plugin_transport_tcp.c:3141
7706#: src/transport/plugin_transport_tcp.c:4012 7527#: src/transport/plugin_transport_tcp.c:4018
7707#: src/transport/plugin_transport_xt.c:1734 7528#: src/transport/plugin_transport_xt.c:1736
7708#: src/transport/plugin_transport_xt.c:1958 7529#: src/transport/plugin_transport_xt.c:1960
7709#: src/transport/plugin_transport_xt.c:3141 7530#: src/transport/plugin_transport_xt.c:3143
7710msgid "# TCP sessions active" 7531msgid "# TCP sessions active"
7711msgstr "" 7532msgstr ""
7712 7533
7713#: src/transport/plugin_transport_tcp.c:1770 7534#: src/transport/plugin_transport_tcp.c:1776
7714#: src/transport/plugin_transport_tcp.c:1934 7535#: src/transport/plugin_transport_tcp.c:1940
7715#: src/transport/plugin_transport_tcp.c:2058 7536#: src/transport/plugin_transport_tcp.c:2064
7716#: src/transport/plugin_transport_tcp.c:2131 7537#: src/transport/plugin_transport_tcp.c:2137
7717#: src/transport/plugin_transport_tcp.c:2231 7538#: src/transport/plugin_transport_tcp.c:2237
7718#: src/transport/plugin_transport_tcp.c:2256 7539#: src/transport/plugin_transport_tcp.c:2262
7719#: src/transport/plugin_transport_xt.c:1776 7540#: src/transport/plugin_transport_xt.c:1778
7720#: src/transport/plugin_transport_xt.c:1940 7541#: src/transport/plugin_transport_xt.c:1942
7721#: src/transport/plugin_transport_xt.c:2064 7542#: src/transport/plugin_transport_xt.c:2066
7722#: src/transport/plugin_transport_xt.c:2137 7543#: src/transport/plugin_transport_xt.c:2139
7723#: src/transport/plugin_transport_xt.c:2237 7544#: src/transport/plugin_transport_xt.c:2239
7724#: src/transport/plugin_transport_xt.c:2262 7545#: src/transport/plugin_transport_xt.c:2264
7725msgid "# bytes currently in TCP buffers" 7546msgid "# bytes currently in TCP buffers"
7726msgstr "" 7547msgstr ""
7727 7548
7728#: src/transport/plugin_transport_tcp.c:1773 7549#: src/transport/plugin_transport_tcp.c:1779
7729#: src/transport/plugin_transport_xt.c:1779 7550#: src/transport/plugin_transport_xt.c:1781
7730msgid "# bytes discarded by TCP (disconnect)" 7551msgid "# bytes discarded by TCP (disconnect)"
7731msgstr "" 7552msgstr ""
7732 7553
7733#: src/transport/plugin_transport_tcp.c:2061 7554#: src/transport/plugin_transport_tcp.c:2067
7734#: src/transport/plugin_transport_xt.c:2067 7555#: src/transport/plugin_transport_xt.c:2069
7735msgid "# bytes discarded by TCP (timeout)" 7556msgid "# bytes discarded by TCP (timeout)"
7736msgstr "" 7557msgstr ""
7737 7558
7738#: src/transport/plugin_transport_tcp.c:2135 7559#: src/transport/plugin_transport_tcp.c:2141
7739#: src/transport/plugin_transport_xt.c:2141 7560#: src/transport/plugin_transport_xt.c:2143
7740msgid "# bytes transmitted via TCP" 7561msgid "# bytes transmitted via TCP"
7741msgstr "" 7562msgstr ""
7742 7563
7743#: src/transport/plugin_transport_tcp.c:2533 7564#: src/transport/plugin_transport_tcp.c:2539
7744#: src/transport/plugin_transport_xt.c:2539 7565#: src/transport/plugin_transport_xt.c:2541
7745msgid "# requests to create session with invalid address" 7566msgid "# requests to create session with invalid address"
7746msgstr "" 7567msgstr ""
7747 7568
7748#: src/transport/plugin_transport_tcp.c:2709 7569#: src/transport/plugin_transport_tcp.c:2715
7749#: src/transport/plugin_transport_xt.c:2715 7570#: src/transport/plugin_transport_xt.c:2717
7750msgid "# transport-service disconnect requests for TCP" 7571msgid "# transport-service disconnect requests for TCP"
7751msgstr "" 7572msgstr ""
7752 7573
7753#: src/transport/plugin_transport_tcp.c:3201 7574#: src/transport/plugin_transport_tcp.c:3207
7754#: src/transport/plugin_transport_xt.c:3207 7575#: src/transport/plugin_transport_xt.c:3209
7755msgid "# TCP WELCOME messages received" 7576msgid "# TCP WELCOME messages received"
7756msgstr "" 7577msgstr ""
7757 7578
7758#: src/transport/plugin_transport_tcp.c:3407 7579#: src/transport/plugin_transport_tcp.c:3413
7759#: src/transport/plugin_transport_xt.c:3413 7580#: src/transport/plugin_transport_xt.c:3415
7760msgid "# bytes received via TCP" 7581msgid "# bytes received via TCP"
7761msgstr "" 7582msgstr ""
7762 7583
7763#: src/transport/plugin_transport_tcp.c:3458 7584#: src/transport/plugin_transport_tcp.c:3464
7764#: src/transport/plugin_transport_tcp.c:3516 7585#: src/transport/plugin_transport_tcp.c:3522
7765#: src/transport/plugin_transport_xt.c:3464 7586#: src/transport/plugin_transport_xt.c:3466
7766#: src/transport/plugin_transport_xt.c:3522 7587#: src/transport/plugin_transport_xt.c:3524
7767#, fuzzy 7588#, fuzzy
7768msgid "# TCP server connections active" 7589msgid "# TCP server connections active"
7769msgstr "" 7590msgstr ""
7770"\n" 7591"\n"
7771"按任意键继续\n" 7592"按任意键继续\n"
7772 7593
7773#: src/transport/plugin_transport_tcp.c:3462 7594#: src/transport/plugin_transport_tcp.c:3468
7774#: src/transport/plugin_transport_xt.c:3468 7595#: src/transport/plugin_transport_xt.c:3470
7775#, fuzzy 7596#, fuzzy
7776msgid "# TCP server connect events" 7597msgid "# TCP server connect events"
7777msgstr "" 7598msgstr ""
7778"\n" 7599"\n"
7779"按任意键继续\n" 7600"按任意键继续\n"
7780 7601
7781#: src/transport/plugin_transport_tcp.c:3468 7602#: src/transport/plugin_transport_tcp.c:3474
7782#: src/transport/plugin_transport_xt.c:3474 7603#: src/transport/plugin_transport_xt.c:3476
7783msgid "TCP connection limit reached, suspending server\n" 7604msgid "TCP connection limit reached, suspending server\n"
7784msgstr "" 7605msgstr ""
7785 7606
7786#: src/transport/plugin_transport_tcp.c:3470 7607#: src/transport/plugin_transport_tcp.c:3476
7787#: src/transport/plugin_transport_xt.c:3476 7608#: src/transport/plugin_transport_xt.c:3478
7788msgid "# TCP service suspended" 7609msgid "# TCP service suspended"
7789msgstr "" 7610msgstr ""
7790 7611
7791#: src/transport/plugin_transport_tcp.c:3510 7612#: src/transport/plugin_transport_tcp.c:3516
7792#: src/transport/plugin_transport_xt.c:3516 7613#: src/transport/plugin_transport_xt.c:3518
7793msgid "# TCP service resumed" 7614msgid "# TCP service resumed"
7794msgstr "" 7615msgstr ""
7795 7616
7796#: src/transport/plugin_transport_tcp.c:3520 7617#: src/transport/plugin_transport_tcp.c:3526
7797#: src/transport/plugin_transport_xt.c:3526 7618#: src/transport/plugin_transport_xt.c:3528
7798msgid "# network-level TCP disconnect events" 7619msgid "# network-level TCP disconnect events"
7799msgstr "" 7620msgstr ""
7800 7621
7801#: src/transport/plugin_transport_tcp.c:3839 7622#: src/transport/plugin_transport_tcp.c:3845
7802#: src/transport/plugin_transport_xt.c:3847 7623#: src/transport/plugin_transport_xt.c:3849
7803#, fuzzy 7624#, fuzzy
7804msgid "Failed to start service.\n" 7625msgid "Failed to start service.\n"
7805msgstr "初始化“%s”服务失败。\n" 7626msgstr "初始化“%s”服务失败。\n"
7806 7627
7807#: src/transport/plugin_transport_tcp.c:4000 7628#: src/transport/plugin_transport_tcp.c:4006
7808#, c-format 7629#, c-format
7809msgid "TCP transport listening on port %llu\n" 7630msgid "TCP transport listening on port %llu\n"
7810msgstr "" 7631msgstr ""
7811 7632
7812#: src/transport/plugin_transport_tcp.c:4004 7633#: src/transport/plugin_transport_tcp.c:4010
7813msgid "TCP transport not listening on any port (client only)\n" 7634msgid "TCP transport not listening on any port (client only)\n"
7814msgstr "" 7635msgstr ""
7815 7636
7816#: src/transport/plugin_transport_tcp.c:4008 7637#: src/transport/plugin_transport_tcp.c:4014
7817#, c-format 7638#, c-format
7818msgid "TCP transport advertises itself as being on port %llu\n" 7639msgid "TCP transport advertises itself as being on port %llu\n"
7819msgstr "" 7640msgstr ""
7820 7641
7821#: src/transport/plugin_transport_udp_broadcasting.c:166 7642#: src/transport/plugin_transport_udp_broadcasting.c:168
7822msgid "# Multicast HELLO beacons received via UDP" 7643msgid "# Multicast HELLO beacons received via UDP"
7823msgstr "" 7644msgstr ""
7824 7645
7825#: src/transport/plugin_transport_udp_broadcasting.c:546 7646#: src/transport/plugin_transport_udp_broadcasting.c:548
7826msgid "" 7647msgid ""
7827"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n" 7648"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
7828msgstr "" 7649msgstr ""
7829 7650
7830#: src/transport/plugin_transport_udp_broadcasting.c:563 7651#: src/transport/plugin_transport_udp_broadcasting.c:565
7831#, c-format 7652#, c-format
7832msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n" 7653msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
7833msgstr "" 7654msgstr ""
7834 7655
7835#: src/transport/plugin_transport_udp.c:3365 7656#: src/transport/plugin_transport_udp.c:3371
7836#, c-format 7657#, c-format
7837msgid "" 7658msgid ""
7838"UDP could not transmit message to `%s': Network seems down, please check " 7659"UDP could not transmit message to `%s': Network seems down, please check "
7839"your network configuration\n" 7660"your network configuration\n"
7840msgstr "" 7661msgstr ""
7841 7662
7842#: src/transport/plugin_transport_udp.c:3379 7663#: src/transport/plugin_transport_udp.c:3385
7843msgid "" 7664msgid ""
7844"UDP could not transmit IPv6 message! Please check your network configuration " 7665"UDP could not transmit IPv6 message! Please check your network configuration "
7845"and disable IPv6 if your connection does not have a global IPv6 address\n" 7666"and disable IPv6 if your connection does not have a global IPv6 address\n"
7846msgstr "" 7667msgstr ""
7847 7668
7848#: src/transport/plugin_transport_udp.c:3697 7669#: src/transport/plugin_transport_udp.c:3703
7849#: src/transport/plugin_transport_udp.c:3796 7670#: src/transport/plugin_transport_udp.c:3802
7850#, fuzzy, c-format 7671#, fuzzy, c-format
7851msgid "Failed to bind UDP socket to %s: %s\n" 7672msgid "Failed to bind UDP socket to %s: %s\n"
7852msgstr "打开日志文件“%s”失败:%s\n" 7673msgstr "打开日志文件“%s”失败:%s\n"
7853 7674
7854#: src/transport/plugin_transport_udp.c:3715 7675#: src/transport/plugin_transport_udp.c:3721
7855#: src/transport/plugin_transport_xu.c:2141 7676#: src/transport/plugin_transport_xu.c:2143
7856msgid "Disabling IPv4 since it is not supported on this system!\n" 7677msgid "Disabling IPv4 since it is not supported on this system!\n"
7857msgstr "" 7678msgstr ""
7858 7679
7859#: src/transport/plugin_transport_udp.c:3806 7680#: src/transport/plugin_transport_udp.c:3812
7860#, fuzzy 7681#, fuzzy
7861msgid "Failed to open UDP sockets\n" 7682msgid "Failed to open UDP sockets\n"
7862msgstr "打开日志文件“%s”失败:%s\n" 7683msgstr "打开日志文件“%s”失败:%s\n"
7863 7684
7864#: src/transport/plugin_transport_udp.c:3877 7685#: src/transport/plugin_transport_udp.c:3883
7865#: src/transport/plugin_transport_udp.c:3891 7686#: src/transport/plugin_transport_udp.c:3897
7866#: src/transport/plugin_transport_xu.c:2299 7687#: src/transport/plugin_transport_xu.c:2301
7867#: src/transport/plugin_transport_xu.c:2313 7688#: src/transport/plugin_transport_xu.c:2315
7868msgid "must be in [0,65535]" 7689msgid "must be in [0,65535]"
7869msgstr "" 7690msgstr ""
7870 7691
7871#: src/transport/plugin_transport_udp.c:3923 7692#: src/transport/plugin_transport_udp.c:3929
7872#: src/transport/plugin_transport_xu.c:2345 7693#: src/transport/plugin_transport_xu.c:2347
7873#, fuzzy 7694#, fuzzy
7874msgid "must be valid IPv4 address" 7695msgid "must be valid IPv4 address"
7875msgstr "“%s”不可用。\n" 7696msgstr "“%s”不可用。\n"
7876 7697
7877#: src/transport/plugin_transport_udp.c:3950 7698#: src/transport/plugin_transport_udp.c:3956
7878#: src/transport/plugin_transport_xu.c:2372 7699#: src/transport/plugin_transport_xu.c:2374
7879#, fuzzy 7700#, fuzzy
7880msgid "must be valid IPv6 address" 7701msgid "must be valid IPv6 address"
7881msgstr "“%s”不可用。\n" 7702msgstr "“%s”不可用。\n"
7882 7703
7883#: src/transport/plugin_transport_udp.c:4014 7704#: src/transport/plugin_transport_udp.c:4020
7884#, fuzzy 7705#, fuzzy
7885msgid "Failed to create UDP network sockets\n" 7706msgid "Failed to create UDP network sockets\n"
7886msgstr "发送消息失败。\n" 7707msgstr "发送消息失败。\n"
7887 7708
7888#: src/transport/plugin_transport_unix.c:1401 7709#: src/transport/plugin_transport_unix.c:1416
7889#, fuzzy, c-format
7890msgid "Cannot create path to `%s'\n"
7891msgstr "发送消息失败。\n"
7892
7893#: src/transport/plugin_transport_unix.c:1414
7894#, fuzzy, c-format 7710#, fuzzy, c-format
7895msgid "Cannot bind to `%s'\n" 7711msgid "Cannot bind to `%s'\n"
7896msgstr "发送消息失败。\n" 7712msgstr "发送消息失败。\n"
7897 7713
7898#: src/transport/plugin_transport_unix.c:1814 7714#: src/transport/plugin_transport_unix.c:1816
7899#, fuzzy 7715#, fuzzy
7900msgid "Failed to open UNIX listen socket\n" 7716msgid "Failed to open UNIX listen socket\n"
7901msgstr "打开日志文件“%s”失败:%s\n" 7717msgstr "打开日志文件“%s”失败:%s\n"
7902 7718
7903#: src/transport/plugin_transport_wlan.c:766 7719#: src/transport/plugin_transport_wlan.c:768
7904msgid "# ACKs sent" 7720msgid "# ACKs sent"
7905msgstr "" 7721msgstr ""
7906 7722
7907#: src/transport/plugin_transport_wlan.c:786 7723#: src/transport/plugin_transport_wlan.c:788
7908msgid "# Messages defragmented" 7724msgid "# Messages defragmented"
7909msgstr "" 7725msgstr ""
7910 7726
7911#: src/transport/plugin_transport_wlan.c:827 7727#: src/transport/plugin_transport_wlan.c:829
7912#: src/transport/plugin_transport_wlan.c:912 7728#: src/transport/plugin_transport_wlan.c:914
7913msgid "# Sessions allocated" 7729msgid "# Sessions allocated"
7914msgstr "" 7730msgstr ""
7915 7731
7916#: src/transport/plugin_transport_wlan.c:1033 7732#: src/transport/plugin_transport_wlan.c:1035
7917#, fuzzy 7733#, fuzzy
7918msgid "# message fragments sent" 7734msgid "# message fragments sent"
7919msgstr "打开日志文件“%s”失败:%s\n" 7735msgstr "打开日志文件“%s”失败:%s\n"
7920 7736
7921#: src/transport/plugin_transport_wlan.c:1062 7737#: src/transport/plugin_transport_wlan.c:1064
7922msgid "# messages pending (with fragmentation)" 7738msgid "# messages pending (with fragmentation)"
7923msgstr "" 7739msgstr ""
7924 7740
7925#: src/transport/plugin_transport_wlan.c:1191 7741#: src/transport/plugin_transport_wlan.c:1193
7926#: src/transport/plugin_transport_wlan.c:1282 7742#: src/transport/plugin_transport_wlan.c:1284
7927#: src/transport/plugin_transport_wlan.c:2303 7743#: src/transport/plugin_transport_wlan.c:2305
7928msgid "# MAC endpoints allocated" 7744msgid "# MAC endpoints allocated"
7929msgstr "" 7745msgstr ""
7930 7746
7931#: src/transport/plugin_transport_wlan.c:1565 7747#: src/transport/plugin_transport_wlan.c:1567
7932msgid "# ACKs received" 7748msgid "# ACKs received"
7933msgstr "" 7749msgstr ""
7934 7750
7935#: src/transport/plugin_transport_wlan.c:1634 7751#: src/transport/plugin_transport_wlan.c:1636
7936msgid "# DATA messages discarded due to CRC32 error" 7752msgid "# DATA messages discarded due to CRC32 error"
7937msgstr "" 7753msgstr ""
7938 7754
7939#: src/transport/plugin_transport_wlan.c:1738 7755#: src/transport/plugin_transport_wlan.c:1740
7940msgid "# HELLO beacons sent" 7756msgid "# HELLO beacons sent"
7941msgstr "" 7757msgstr ""
7942 7758
7943#: src/transport/plugin_transport_wlan.c:1854 7759#: src/transport/plugin_transport_wlan.c:1856
7944msgid "# DATA messages received" 7760msgid "# DATA messages received"
7945msgstr "" 7761msgstr ""
7946 7762
7947#: src/transport/plugin_transport_wlan.c:1888 7763#: src/transport/plugin_transport_wlan.c:1890
7948msgid "# DATA messages processed" 7764msgid "# DATA messages processed"
7949msgstr "" 7765msgstr ""
7950 7766
7951#: src/transport/plugin_transport_wlan.c:2278 7767#: src/transport/plugin_transport_wlan.c:2280
7952#, c-format 7768#, c-format
7953msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n" 7769msgid "Helper binary `%s' not SUID, cannot run WLAN transport\n"
7954msgstr "" 7770msgstr ""
7955 7771
7956#: src/transport/plugin_transport_wlan.c:2300 7772#: src/transport/plugin_transport_wlan.c:2302
7957msgid "# sessions allocated" 7773msgid "# sessions allocated"
7958msgstr "" 7774msgstr ""
7959 7775
7960#: src/transport/plugin_transport_xt.c:4008 7776#: src/transport/plugin_transport_xt.c:4010
7961#, c-format 7777#, c-format
7962msgid "XT transport listening on port %llu\n" 7778msgid "XT transport listening on port %llu\n"
7963msgstr "" 7779msgstr ""
7964 7780
7965#: src/transport/plugin_transport_xt.c:4012 7781#: src/transport/plugin_transport_xt.c:4014
7966msgid "XT transport not listening on any port (client only)\n" 7782msgid "XT transport not listening on any port (client only)\n"
7967msgstr "" 7783msgstr ""
7968 7784
7969#: src/transport/plugin_transport_xt.c:4016 7785#: src/transport/plugin_transport_xt.c:4018
7970#, c-format 7786#, c-format
7971msgid "XT transport advertises itself as being on port %llu\n" 7787msgid "XT transport advertises itself as being on port %llu\n"
7972msgstr "" 7788msgstr ""
7973 7789
7974#: src/transport/plugin_transport_xt.c:4020 7790#: src/transport/plugin_transport_xt.c:4022
7975#, fuzzy 7791#, fuzzy
7976msgid "# XT sessions active" 7792msgid "# XT sessions active"
7977msgstr "" 7793msgstr ""
7978"\n" 7794"\n"
7979"按任意键继续\n" 7795"按任意键继续\n"
7980 7796
7981#: src/transport/plugin_transport_xu.c:1235 7797#: src/transport/plugin_transport_xu.c:1237
7982#, c-format 7798#, c-format
7983msgid "" 7799msgid ""
7984"XU could not transmit message to `%s': Network seems down, please check your " 7800"XU could not transmit message to `%s': Network seems down, please check your "
7985"network configuration\n" 7801"network configuration\n"
7986msgstr "" 7802msgstr ""
7987 7803
7988#: src/transport/plugin_transport_xu.c:1249 7804#: src/transport/plugin_transport_xu.c:1251
7989msgid "" 7805msgid ""
7990"XU could not transmit IPv6 message! Please check your network configuration " 7806"XU could not transmit IPv6 message! Please check your network configuration "
7991"and disable IPv6 if your connection does not have a global IPv6 address\n" 7807"and disable IPv6 if your connection does not have a global IPv6 address\n"
7992msgstr "" 7808msgstr ""
7993 7809
7994#: src/transport/plugin_transport_xu.c:2123 7810#: src/transport/plugin_transport_xu.c:2125
7995#: src/transport/plugin_transport_xu.c:2222 7811#: src/transport/plugin_transport_xu.c:2224
7996#, fuzzy, c-format 7812#, fuzzy, c-format
7997msgid "Failed to bind XU socket to %s: %s\n" 7813msgid "Failed to bind XU socket to %s: %s\n"
7998msgstr "打开日志文件“%s”失败:%s\n" 7814msgstr "打开日志文件“%s”失败:%s\n"
7999 7815
8000#: src/transport/plugin_transport_xu.c:2232 7816#: src/transport/plugin_transport_xu.c:2234
8001#, fuzzy 7817#, fuzzy
8002msgid "Failed to open XU sockets\n" 7818msgid "Failed to open XU sockets\n"
8003msgstr "打开日志文件“%s”失败:%s\n" 7819msgstr "打开日志文件“%s”失败:%s\n"
8004 7820
8005#: src/transport/plugin_transport_xu.c:2396 7821#: src/transport/plugin_transport_xu.c:2398
8006#, fuzzy 7822#, fuzzy
8007msgid "Failed to create XU network sockets\n" 7823msgid "Failed to create XU network sockets\n"
8008msgstr "发送消息失败。\n" 7824msgstr "发送消息失败。\n"
8009 7825
8010#: src/transport/tcp_connection_legacy.c:450 7826#: src/transport/tcp_connection_legacy.c:452
8011#, fuzzy, c-format 7827#, fuzzy, c-format
8012msgid "Access denied to `%s'\n" 7828msgid "Access denied to `%s'\n"
8013msgstr "“%s”已连接到“%s”。\n" 7829msgstr "“%s”已连接到“%s”。\n"
8014 7830
8015#: src/transport/tcp_connection_legacy.c:467 7831#: src/transport/tcp_connection_legacy.c:469
8016#, c-format 7832#, c-format
8017msgid "Accepting connection from `%s': %p\n" 7833msgid "Accepting connection from `%s': %p\n"
8018msgstr "" 7834msgstr ""
8019 7835
8020#: src/transport/tcp_server_legacy.c:472 src/util/service.c:1109 7836#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1666
8021#, fuzzy, c-format 7837#, fuzzy, c-format
8022msgid "`%s' failed for port %d (%s).\n" 7838msgid "`%s' failed for port %d (%s).\n"
8023msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 7839msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8024 7840
8025#: src/transport/tcp_server_legacy.c:482 src/util/service.c:1119 7841#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1676
8026#, c-format 7842#, c-format
8027msgid "`%s' failed for port %d (%s): address already in use\n" 7843msgid "`%s' failed for port %d (%s): address already in use\n"
8028msgstr "" 7844msgstr ""
8029 7845
8030#: src/transport/tcp_server_legacy.c:488 src/util/service.c:1125 7846#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1682
8031#, fuzzy, c-format 7847#, fuzzy, c-format
8032msgid "`%s' failed for `%s': address already in use\n" 7848msgid "`%s' failed for `%s': address already in use\n"
8033msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 7849msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8034 7850
8035#: src/transport/tcp_server_legacy.c:888 7851#: src/transport/tcp_server_legacy.c:890
8036#, c-format 7852#, c-format
8037msgid "" 7853msgid ""
8038"Processing code for message of type %u did not call " 7854"Processing code for message of type %u did not call "
8039"`GNUNET_SERVER_receive_done' after %s\n" 7855"`GNUNET_SERVER_receive_done' after %s\n"
8040msgstr "" 7856msgstr ""
8041 7857
8042#: src/transport/tcp_service_legacy.c:337 src/util/service.c:2378 7858#: src/transport/tcp_service_legacy.c:339 src/util/service.c:870
8043#, c-format 7859#, c-format
8044msgid "Unknown address family %d\n" 7860msgid "Unknown address family %d\n"
8045msgstr "" 7861msgstr ""
8046 7862
8047#: src/transport/tcp_service_legacy.c:344 7863#: src/transport/tcp_service_legacy.c:346
8048#, c-format 7864#, c-format
8049msgid "Access from `%s' denied to service `%s'\n" 7865msgid "Access from `%s' denied to service `%s'\n"
8050msgstr "" 7866msgstr ""
8051 7867
8052#: src/transport/tcp_service_legacy.c:400 src/util/service.c:437 7868#: src/transport/tcp_service_legacy.c:402 src/util/service.c:994
8053#, c-format 7869#, c-format
8054msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n" 7870msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
8055msgstr "" 7871msgstr ""
8056 7872
8057#: src/transport/tcp_service_legacy.c:438 src/util/service.c:480 7873#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1037
8058#, c-format 7874#, c-format
8059msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n" 7875msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
8060msgstr "" 7876msgstr ""
8061 7877
8062#: src/transport/tcp_service_legacy.c:902 src/util/service.c:1040 7878#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1597
8063msgid "Could not access a pre-bound socket, will try to bind myself\n" 7879msgid "Could not access a pre-bound socket, will try to bind myself\n"
8064msgstr "" 7880msgstr ""
8065 7881
8066#: src/transport/tcp_service_legacy.c:951 7882#: src/transport/tcp_service_legacy.c:953
8067#: src/transport/tcp_service_legacy.c:969 src/util/service.c:1192 7883#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1750
8068#, c-format 7884#, c-format
8069msgid "Specified value for `%s' of service `%s' is invalid\n" 7885msgid "Specified value for `%s' of service `%s' is invalid\n"
8070msgstr "" 7886msgstr ""
8071 7887
8072#: src/transport/tcp_service_legacy.c:994 src/util/service.c:1224 7888#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1783
8073#, c-format 7889#, c-format
8074msgid "Could not access pre-bound socket %u, will try to bind myself\n" 7890msgid "Could not access pre-bound socket %u, will try to bind myself\n"
8075msgstr "" 7891msgstr ""
8076 7892
8077#: src/transport/tcp_service_legacy.c:1159 7893#: src/transport/tcp_service_legacy.c:1161
8078#, fuzzy, c-format 7894#, fuzzy, c-format
8079msgid "Failed to start `%s' at `%s'\n" 7895msgid "Failed to start `%s' at `%s'\n"
8080msgstr "运行 %s失败:%s %d\n" 7896msgstr "运行 %s失败:%s %d\n"
8081 7897
8082#: src/transport/tcp_service_legacy.c:1200 7898#: src/transport/tcp_service_legacy.c:1202
8083#, c-format 7899#, c-format
8084msgid "Service `%s' runs at %s\n" 7900msgid "Service `%s' runs at %s\n"
8085msgstr "" 7901msgstr ""
8086 7902
8087#: src/transport/tcp_service_legacy.c:1249 src/util/service.c:1498 7903#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2057
8088msgid "Service process failed to initialize\n" 7904msgid "Service process failed to initialize\n"
8089msgstr "" 7905msgstr ""
8090 7906
8091#: src/transport/tcp_service_legacy.c:1253 src/util/service.c:1502 7907#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2061
8092msgid "Service process could not initialize server function\n" 7908msgid "Service process could not initialize server function\n"
8093msgstr "" 7909msgstr ""
8094 7910
8095#: src/transport/tcp_service_legacy.c:1257 src/util/service.c:1506 7911#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2065
8096msgid "Service process failed to report status\n" 7912msgid "Service process failed to report status\n"
8097msgstr "" 7913msgstr ""
8098 7914
8099#: src/transport/tcp_service_legacy.c:1311 src/util/disk.c:1521 7915#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
8100#: src/util/service.c:1376 7916#: src/util/service.c:1935
8101#, c-format 7917#, c-format
8102msgid "Cannot obtain information about user `%s': %s\n" 7918msgid "Cannot obtain information about user `%s': %s\n"
8103msgstr "无法获取有关用户“%s”的信息:%s\n" 7919msgstr "无法获取有关用户“%s”的信息:%s\n"
8104 7920
8105#: src/transport/tcp_service_legacy.c:1312 src/util/service.c:1378 7921#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1937
8106msgid "No such user" 7922msgid "No such user"
8107msgstr "无此用户" 7923msgstr "无此用户"
8108 7924
8109#: src/transport/tcp_service_legacy.c:1325 src/util/service.c:1397 7925#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1956
8110#, c-format 7926#, c-format
8111msgid "Cannot change user/group to `%s': %s\n" 7927msgid "Cannot change user/group to `%s': %s\n"
8112msgstr "无法更改用户/组为“%s”:%s\n" 7928msgstr "无法更改用户/组为“%s”:%s\n"
8113 7929
8114#: src/transport/tcp_service_legacy.c:1396 src/util/service.c:1757 7930#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2318
8115msgid "do daemonize (detach from terminal)" 7931msgid "do daemonize (detach from terminal)"
8116msgstr "" 7932msgstr ""
8117 7933
8118#: src/transport/tcp_service_legacy.c:1446 src/util/program.c:277 7934#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:2382
8119#: src/util/service.c:1820 7935#: src/util/service.c:2397
8120#, fuzzy, c-format 7936#, fuzzy, c-format
8121msgid "Malformed configuration file `%s', exit ...\n" 7937msgid "Malformed configuration file `%s', exit ...\n"
8122msgstr "解析配置文件“%s”失败\n" 7938msgstr "解析配置文件“%s”失败\n"
8123 7939
8124#: src/transport/tcp_service_legacy.c:1456 src/util/program.c:297 7940#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2409
8125#: src/util/service.c:1831
8126#, fuzzy 7941#, fuzzy
8127msgid "Malformed configuration, exit ...\n" 7942msgid "Malformed configuration, exit ...\n"
8128msgstr "解析配置文件“%s”失败\n" 7943msgstr "解析配置文件“%s”失败\n"
8129 7944
8130#: src/transport/tcp_service_legacy.c:1461 src/util/program.c:290 7945#: src/transport/tcp_service_legacy.c:1463
8131#: src/util/service.c:1837
8132#, fuzzy, c-format 7946#, fuzzy, c-format
8133msgid "Could not access configuration file `%s'\n" 7947msgid "Could not access configuration file `%s'\n"
8134msgstr "找不到接口“%s”的一个 IP 地址。\n" 7948msgstr "找不到接口“%s”的一个 IP 地址。\n"
8135 7949
8136#: src/util/bio.c:179 src/util/bio.c:187 7950#: src/transport/transport_api2_communication.c:764
7951msgid "Dropped backchanel message: handler not provided by communicator\n"
7952msgstr ""
7953
7954#: src/util/bio.c:181 src/util/bio.c:189
8137#, fuzzy, c-format 7955#, fuzzy, c-format
8138msgid "Error reading `%s': %s" 7956msgid "Error reading `%s': %s"
8139msgstr "创建用户出错" 7957msgstr "创建用户出错"
8140 7958
8141#: src/util/bio.c:189 7959#: src/util/bio.c:191
8142msgid "End of file" 7960msgid "End of file"
8143msgstr "" 7961msgstr ""
8144 7962
8145#: src/util/bio.c:246 7963#: src/util/bio.c:248
8146#, c-format 7964#, c-format
8147msgid "Error reading length of string `%s'" 7965msgid "Error reading length of string `%s'"
8148msgstr "" 7966msgstr ""
8149 7967
8150#: src/util/bio.c:256 7968#: src/util/bio.c:258
8151#, c-format 7969#, c-format
8152msgid "String `%s' longer than allowed (%u > %u)" 7970msgid "String `%s' longer than allowed (%u > %u)"
8153msgstr "" 7971msgstr ""
8154 7972
8155#: src/util/bio.c:304 7973#: src/util/bio.c:306
8156#, c-format 7974#, c-format
8157msgid "Serialized metadata `%s' larger than allowed (%u>%u)" 7975msgid "Serialized metadata `%s' larger than allowed (%u>%u)"
8158msgstr "" 7976msgstr ""
8159 7977
8160#: src/util/bio.c:326 7978#: src/util/bio.c:328
8161#, c-format 7979#, c-format
8162msgid "Metadata `%s' failed to deserialize" 7980msgid "Metadata `%s' failed to deserialize"
8163msgstr "" 7981msgstr ""
8164 7982
8165#: src/util/client.c:732 7983#: src/util/client.c:734
8166msgid "not a valid filename" 7984msgid "not a valid filename"
8167msgstr "" 7985msgstr ""
8168 7986
8169#: src/util/client.c:923 7987#: src/util/client.c:925
8170#, c-format 7988#, c-format
8171msgid "Need a non-empty hostname for service `%s'.\n" 7989msgid "Need a non-empty hostname for service `%s'.\n"
8172msgstr "" 7990msgstr ""
8173 7991
8174#: src/util/common_logging.c:257 src/util/common_logging.c:1159 7992#: src/util/common_logging.c:259 src/util/common_logging.c:1162
8175msgid "DEBUG" 7993msgid "DEBUG"
8176msgstr "调试" 7994msgstr "调试"
8177 7995
8178#: src/util/common_logging.c:259 src/util/common_logging.c:1157 7996#: src/util/common_logging.c:261 src/util/common_logging.c:1160
8179msgid "INFO" 7997msgid "INFO"
8180msgstr "信息" 7998msgstr "信息"
8181 7999
8182#: src/util/common_logging.c:261 src/util/common_logging.c:1155 8000#: src/util/common_logging.c:263 src/util/common_logging.c:1158
8183msgid "MESSAGE" 8001msgid "MESSAGE"
8184msgstr "" 8002msgstr ""
8185 8003
8186#: src/util/common_logging.c:263 src/util/common_logging.c:1153 8004#: src/util/common_logging.c:265 src/util/common_logging.c:1156
8187msgid "WARNING" 8005msgid "WARNING"
8188msgstr "警告" 8006msgstr "警告"
8189 8007
8190#: src/util/common_logging.c:265 src/util/common_logging.c:1151 8008#: src/util/common_logging.c:267 src/util/common_logging.c:1154
8191msgid "ERROR" 8009msgid "ERROR"
8192msgstr "错误" 8010msgstr "错误"
8193 8011
8194#: src/util/common_logging.c:267 src/util/common_logging.c:1161 8012#: src/util/common_logging.c:269 src/util/common_logging.c:1164
8195msgid "NONE" 8013msgid "NONE"
8196msgstr "" 8014msgstr ""
8197 8015
8198#: src/util/common_logging.c:631 src/util/common_logging.c:661 8016#: src/util/common_logging.c:633 src/util/common_logging.c:663
8199#, c-format 8017#, c-format
8200msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n" 8018msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
8201msgstr "" 8019msgstr ""
8202 8020
8203#: src/util/common_logging.c:895 8021#: src/util/common_logging.c:898
8204#, fuzzy, c-format 8022#, fuzzy, c-format
8205msgid "Message `%.*s' repeated %u times in the last %s\n" 8023msgid "Message `%.*s' repeated %u times in the last %s\n"
8206msgstr "消息“%.*s”重复了 %u 次,在最近 %llu 秒内\n" 8024msgstr "消息“%.*s”重复了 %u 次,在最近 %llu 秒内\n"
8207 8025
8208#: src/util/common_logging.c:1162 8026#: src/util/common_logging.c:1165
8209msgid "INVALID" 8027msgid "INVALID"
8210msgstr "" 8028msgstr ""
8211 8029
8212#: src/util/common_logging.c:1455 8030#: src/util/common_logging.c:1458
8213msgid "unknown address" 8031msgid "unknown address"
8214msgstr "" 8032msgstr ""
8215 8033
8216#: src/util/common_logging.c:1497 8034#: src/util/common_logging.c:1500
8217msgid "invalid address" 8035msgid "invalid address"
8218msgstr "" 8036msgstr ""
8219 8037
8220#: src/util/common_logging.c:1515 8038#: src/util/common_logging.c:1518
8221#, fuzzy, c-format 8039#, fuzzy, c-format
8222msgid "Configuration fails to specify option `%s' in section `%s'!\n" 8040msgid "Configuration fails to specify option `%s' in section `%s'!\n"
8223msgstr "配置不满足配置规范文件“%s”的约束!\n" 8041msgstr "配置不满足配置规范文件“%s”的约束!\n"
8224 8042
8225#: src/util/common_logging.c:1536 8043#: src/util/common_logging.c:1539
8226#, fuzzy, c-format 8044#, fuzzy, c-format
8227msgid "" 8045msgid ""
8228"Configuration specifies invalid value for option `%s' in section `%s': %s\n" 8046"Configuration specifies invalid value for option `%s' in section `%s': %s\n"
8229msgstr "配置不满足配置规范文件“%s”的约束!\n" 8047msgstr "配置不满足配置规范文件“%s”的约束!\n"
8230 8048
8231#: src/util/configuration.c:294 8049#: src/util/configuration.c:331
8232#, fuzzy, c-format 8050#, fuzzy, c-format
8233msgid "Syntax error while deserializing in line %u\n" 8051msgid "Syntax error while deserializing in line %u\n"
8234msgstr "配置文件“%s”第 %d 行有语法错误。\n" 8052msgstr "配置文件“%s”第 %d 行有语法错误。\n"
8235 8053
8236#: src/util/configuration.c:361 8054#: src/util/configuration.c:398
8237#, fuzzy, c-format 8055#, fuzzy, c-format
8238msgid "Error while reading file `%s'\n" 8056msgid "Error while reading file `%s'\n"
8239msgstr "解析 dscl 输出时出错。\n" 8057msgstr "解析 dscl 输出时出错。\n"
8240 8058
8241#: src/util/configuration.c:970 8059#: src/util/configuration.c:1016
8242#, fuzzy 8060#, fuzzy
8243msgid "Not a valid relative time specification" 8061msgid "Not a valid relative time specification"
8244msgstr "配置文件“%s”已写入。\n" 8062msgstr "配置文件“%s”已写入。\n"
8245 8063
8246#: src/util/configuration.c:1059 8064#: src/util/configuration.c:1105
8247#, c-format 8065#, c-format
8248msgid "" 8066msgid ""
8249"Configuration value '%s' for '%s' in section '%s' is not in set of legal " 8067"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
8250"choices\n" 8068"choices\n"
8251msgstr "" 8069msgstr ""
8252 8070
8253#: src/util/configuration.c:1178 8071#: src/util/configuration.c:1224
8254#, c-format 8072#, c-format
8255msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n" 8073msgid "Recursive expansion suspected, aborting $-expansion for term `%s'\n"
8256msgstr "" 8074msgstr ""
8257 8075
8258#: src/util/configuration.c:1211 8076#: src/util/configuration.c:1257
8259#, fuzzy, c-format 8077#, fuzzy, c-format
8260msgid "Missing closing `%s' in option `%s'\n" 8078msgid "Missing closing `%s' in option `%s'\n"
8261msgstr "配置文件“%s”已写入。\n" 8079msgstr "配置文件“%s”已写入。\n"
8262 8080
8263#: src/util/configuration.c:1279 8081#: src/util/configuration.c:1325
8264#, c-format 8082#, c-format
8265msgid "" 8083msgid ""
8266"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined " 8084"Failed to expand `%s' in `%s' as it is neither found in [PATHS] nor defined "
8267"as an environmental variable\n" 8085"as an environmental variable\n"
8268msgstr "" 8086msgstr ""
8269 8087
8270#: src/util/container_bloomfilter.c:530 8088#: src/util/container_bloomfilter.c:532
8271#, c-format 8089#, c-format
8272msgid "" 8090msgid ""
8273"Size of file on disk is incorrect for this Bloom filter (want %llu, have " 8091"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
8274"%llu)\n" 8092"%llu)\n"
8275msgstr "" 8093msgstr ""
8276 8094
8277#: src/util/crypto_ecc.c:860 8095#: src/util/crypto_ecc.c:862
8278#, fuzzy, c-format 8096#, fuzzy, c-format
8279msgid "ECC signing failed at %s:%d: %s\n" 8097msgid "ECC signing failed at %s:%d: %s\n"
8280msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 8098msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8281 8099
8282#: src/util/crypto_ecc.c:915 8100#: src/util/crypto_ecc.c:917
8283#, fuzzy, c-format 8101#, fuzzy, c-format
8284msgid "EdDSA signing failed at %s:%d: %s\n" 8102msgid "EdDSA signing failed at %s:%d: %s\n"
8285msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 8103msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8286 8104
8287#: src/util/crypto_ecc.c:994 8105#: src/util/crypto_ecc.c:996
8288#, fuzzy, c-format 8106#, fuzzy, c-format
8289msgid "ECDSA signature verification failed at %s:%d: %s\n" 8107msgid "ECDSA signature verification failed at %s:%d: %s\n"
8290msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 8108msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8291 8109
8292#: src/util/crypto_ecc.c:1055 8110#: src/util/crypto_ecc.c:1057
8293#, fuzzy, c-format 8111#, fuzzy, c-format
8294msgid "EdDSA signature verification failed at %s:%d: %s\n" 8112msgid "EdDSA signature verification failed at %s:%d: %s\n"
8295msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 8113msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8296 8114
8297#: src/util/crypto_ecc_setup.c:121 src/util/crypto_ecc_setup.c:160 8115#: src/util/crypto_ecc_setup.c:123 src/util/crypto_ecc_setup.c:162
8298#: src/util/crypto_ecc_setup.c:303 src/util/crypto_ecc_setup.c:350 8116#: src/util/crypto_ecc_setup.c:305 src/util/crypto_ecc_setup.c:352
8299#, fuzzy, c-format 8117#, fuzzy, c-format
8300msgid "Could not acquire lock on file `%s': %s...\n" 8118msgid "Could not acquire lock on file `%s': %s...\n"
8301msgstr "无法解析“%s”(%s):%s\n" 8119msgstr "无法解析“%s”(%s):%s\n"
8302 8120
8303#: src/util/crypto_ecc_setup.c:127 src/util/crypto_ecc_setup.c:309 8121#: src/util/crypto_ecc_setup.c:129 src/util/crypto_ecc_setup.c:311
8304#, fuzzy 8122#, fuzzy
8305msgid "Creating a new private key. This may take a while.\n" 8123msgid "Creating a new private key. This may take a while.\n"
8306msgstr "正在启动数据仓库转换(可能需要一段时间)。\n" 8124msgstr "正在启动数据仓库转换(可能需要一段时间)。\n"
8307 8125
8308#: src/util/crypto_ecc_setup.c:164 src/util/crypto_ecc_setup.c:354 8126#: src/util/crypto_ecc_setup.c:166 src/util/crypto_ecc_setup.c:356
8309msgid "This may be ok if someone is currently generating a private key.\n" 8127msgid "This may be ok if someone is currently generating a private key.\n"
8310msgstr "" 8128msgstr ""
8311 8129
8312#: src/util/crypto_ecc_setup.c:194 src/util/crypto_ecc_setup.c:396 8130#: src/util/crypto_ecc_setup.c:196 src/util/crypto_ecc_setup.c:398
8313#, c-format 8131#, c-format
8314msgid "" 8132msgid ""
8315"When trying to read key file `%s' I found %u bytes but I need at least %u.\n" 8133"When trying to read key file `%s' I found %u bytes but I need at least %u.\n"
8316msgstr "" 8134msgstr ""
8317 8135
8318#: src/util/crypto_ecc_setup.c:199 src/util/crypto_ecc_setup.c:400 8136#: src/util/crypto_ecc_setup.c:201 src/util/crypto_ecc_setup.c:402
8319msgid "This may be ok if someone is currently generating a key.\n" 8137msgid "This may be ok if someone is currently generating a key.\n"
8320msgstr "" 8138msgstr ""
8321 8139
8322#: src/util/crypto_ecc_setup.c:466 8140#: src/util/crypto_ecc_setup.c:468
8323#, fuzzy 8141#, fuzzy
8324msgid "Could not load peer's private key\n" 8142msgid "Could not load peer's private key\n"
8325msgstr "找不到接口“%s”的一个 IP 地址。\n" 8143msgstr "找不到接口“%s”的一个 IP 地址。\n"
8326 8144
8327#: src/util/crypto_random.c:304 8145#: src/util/crypto_random.c:306
8328#, c-format 8146#, c-format
8329msgid "libgcrypt has not the expected version (version %s is required).\n" 8147msgid "libgcrypt has not the expected version (version %s is required).\n"
8330msgstr "libgcrypt 的版本不符合预期(要求版本 %s)。\n" 8148msgstr "libgcrypt 的版本不符合预期(要求版本 %s)。\n"
8331 8149
8332#: src/util/crypto_rsa.c:848 8150#: src/util/crypto_rsa.c:850
8333#, fuzzy, c-format 8151#, fuzzy, c-format
8334msgid "RSA signing failed at %s:%d: %s\n" 8152msgid "RSA signing failed at %s:%d: %s\n"
8335msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 8153msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8336 8154
8337#: src/util/crypto_rsa.c:1187 8155#: src/util/crypto_rsa.c:1189
8338#, fuzzy, c-format 8156#, fuzzy, c-format
8339msgid "RSA signature verification failed at %s:%d: %s\n" 8157msgid "RSA signature verification failed at %s:%d: %s\n"
8340msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 8158msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8341 8159
8342#: src/util/disk.c:1251 8160#: src/util/disk.c:1255
8343#, c-format 8161#, c-format
8344msgid "Expected `%s' to be a directory!\n" 8162msgid "Expected `%s' to be a directory!\n"
8345msgstr "“%s”应为目录!\n" 8163msgstr "“%s”应为目录!\n"
8346 8164
8347#: src/util/dnsparser.c:250 8165#: src/util/dnsparser.c:264
8348#, fuzzy, c-format 8166#, fuzzy, c-format
8349msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n" 8167msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
8350msgstr "打开日志文件“%s”失败:%s\n" 8168msgstr "打开日志文件“%s”失败:%s\n"
8351 8169
8352#: src/util/dnsparser.c:940 8170#: src/util/dnsparser.c:954
8353#, fuzzy, c-format 8171#, fuzzy, c-format
8354msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n" 8172msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
8355msgstr "打开日志文件“%s”失败:%s\n" 8173msgstr "打开日志文件“%s”失败:%s\n"
8356 8174
8357#: src/util/dnsstub.c:229 8175#: src/util/dnsstub.c:231
8358#, fuzzy, c-format 8176#, fuzzy, c-format
8359msgid "Could not bind to any port: %s\n" 8177msgid "Could not bind to any port: %s\n"
8360msgstr "找不到主机“%s”的 IP:%s\n" 8178msgstr "找不到主机“%s”的 IP:%s\n"
8361 8179
8362#: src/util/dnsstub.c:360 8180#: src/util/dnsstub.c:362
8363#, c-format 8181#, c-format
8364msgid "Received DNS response that is too small (%u bytes)" 8182msgid "Received DNS response that is too small (%u bytes)"
8365msgstr "" 8183msgstr ""
8366 8184
8367#: src/util/dnsstub.c:507 8185#: src/util/dnsstub.c:509
8368#, fuzzy, c-format 8186#, fuzzy, c-format
8369msgid "Failed to send DNS request to %s: %s\n" 8187msgid "Failed to send DNS request to %s: %s\n"
8370msgstr "打开日志文件“%s”失败:%s\n" 8188msgstr "打开日志文件“%s”失败:%s\n"
8371 8189
8372#: src/util/dnsstub.c:513 8190#: src/util/dnsstub.c:515
8373#, fuzzy, c-format 8191#, fuzzy, c-format
8374msgid "Sent DNS request to %s\n" 8192msgid "Sent DNS request to %s\n"
8375msgstr "打开日志文件“%s”失败:%s\n" 8193msgstr "打开日志文件“%s”失败:%s\n"
@@ -8439,236 +8257,236 @@ msgstr "请使用 --help 获取选项列表。\n"
8439msgid "Missing mandatory option `%s'.\n" 8257msgid "Missing mandatory option `%s'.\n"
8440msgstr "配置文件“%s”已写入。\n" 8258msgstr "配置文件“%s”已写入。\n"
8441 8259
8442#: src/util/getopt_helpers.c:68 8260#: src/util/getopt_helpers.c:70
8443msgid "print the version number" 8261msgid "print the version number"
8444msgstr "" 8262msgstr ""
8445 8263
8446#: src/util/getopt_helpers.c:113 8264#: src/util/getopt_helpers.c:116
8447#, c-format 8265#, c-format
8448msgid "" 8266msgid ""
8449"Arguments mandatory for long options are also mandatory for short options.\n" 8267"Arguments mandatory for long options are also mandatory for short options.\n"
8450msgstr "长选项的必选参数对短选项也是必选的。\n" 8268msgstr "长选项的必选参数对短选项也是必选的。\n"
8451 8269
8452#: src/util/getopt_helpers.c:201 8270#: src/util/getopt_helpers.c:204
8453msgid "print this help" 8271msgid "print this help"
8454msgstr "" 8272msgstr ""
8455 8273
8456#: src/util/getopt_helpers.c:279 8274#: src/util/getopt_helpers.c:282
8457msgid "be verbose" 8275msgid "be verbose"
8458msgstr "" 8276msgstr ""
8459 8277
8460#: src/util/getopt_helpers.c:420 8278#: src/util/getopt_helpers.c:423
8461msgid "configure logging to use LOGLEVEL" 8279msgid "configure logging to use LOGLEVEL"
8462msgstr "" 8280msgstr ""
8463 8281
8464#: src/util/getopt_helpers.c:500 8282#: src/util/getopt_helpers.c:503
8465msgid "configure logging to write logs to FILENAME" 8283msgid "configure logging to write logs to FILENAME"
8466msgstr "" 8284msgstr ""
8467 8285
8468#: src/util/getopt_helpers.c:522 8286#: src/util/getopt_helpers.c:525
8469#, fuzzy 8287#, fuzzy
8470msgid "use configuration file FILENAME" 8288msgid "use configuration file FILENAME"
8471msgstr "更改配置文件中的一个值" 8289msgstr "更改配置文件中的一个值"
8472 8290
8473#: src/util/getopt_helpers.c:559 src/util/getopt_helpers.c:763 8291#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
8474#: src/util/getopt_helpers.c:830 8292#: src/util/getopt_helpers.c:839
8475#, c-format 8293#, c-format
8476msgid "You must pass a number to the `%s' option.\n" 8294msgid "You must pass a number to the `%s' option.\n"
8477msgstr "您必须向“%s”选项传递一个数字。\n" 8295msgstr "您必须向“%s”选项传递一个数字。\n"
8478 8296
8479#: src/util/getopt_helpers.c:624 8297#: src/util/getopt_helpers.c:629
8480#, fuzzy, c-format 8298#, fuzzy, c-format
8481msgid "You must pass relative time to the `%s' option.\n" 8299msgid "You must pass relative time to the `%s' option.\n"
8482msgstr "您必须向“%s”选项传递一个数字。\n" 8300msgstr "您必须向“%s”选项传递一个数字。\n"
8483 8301
8484#: src/util/getopt_helpers.c:690 8302#: src/util/getopt_helpers.c:695
8485#, fuzzy, c-format 8303#, fuzzy, c-format
8486msgid "You must pass absolute time to the `%s' option.\n" 8304msgid "You must pass absolute time to the `%s' option.\n"
8487msgstr "您必须向“%s”选项传递一个数字。\n" 8305msgstr "您必须向“%s”选项传递一个数字。\n"
8488 8306
8489#: src/util/getopt_helpers.c:754 8307#: src/util/getopt_helpers.c:760
8490#, c-format 8308#, c-format
8491msgid "Your input for the '%s' option has to be a non negative number \n" 8309msgid "Your input for the '%s' option has to be a non negative number \n"
8492msgstr "" 8310msgstr ""
8493 8311
8494#: src/util/getopt_helpers.c:837 8312#: src/util/getopt_helpers.c:846
8495#, fuzzy, c-format 8313#, fuzzy, c-format
8496msgid "You must pass a number below %u to the `%s' option.\n" 8314msgid "You must pass a number below %u to the `%s' option.\n"
8497msgstr "您必须向“%s”选项传递一个数字。\n" 8315msgstr "您必须向“%s”选项传递一个数字。\n"
8498 8316
8499#: src/util/getopt_helpers.c:923 8317#: src/util/getopt_helpers.c:932
8500#, c-format 8318#, c-format
8501msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n" 8319msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
8502msgstr "" 8320msgstr ""
8503 8321
8504#: src/util/gnunet-config.c:157 8322#: src/util/gnunet-config.c:160
8505#, fuzzy, c-format 8323#, fuzzy, c-format
8506msgid "failed to load configuration defaults" 8324msgid "failed to load configuration defaults"
8507msgstr "解析配置文件“%s”失败\n" 8325msgstr "解析配置文件“%s”失败\n"
8508 8326
8509#: src/util/gnunet-config.c:170 8327#: src/util/gnunet-config.c:173
8510#, fuzzy, c-format 8328#, fuzzy, c-format
8511msgid "--section argument is required\n" 8329msgid "%s or %s argument is required\n"
8512msgstr "设置要使用的昵称(必须)" 8330msgstr "设置要使用的昵称(必须)"
8513 8331
8514#: src/util/gnunet-config.c:173 8332#: src/util/gnunet-config.c:181
8515#, c-format 8333#, c-format
8516msgid "The following sections are available:\n" 8334msgid "The following sections are available:\n"
8517msgstr "" 8335msgstr ""
8518 8336
8519#: src/util/gnunet-config.c:224 8337#: src/util/gnunet-config.c:232
8520#, c-format 8338#, c-format
8521msgid "--option argument required to set value\n" 8339msgid "--option argument required to set value\n"
8522msgstr "" 8340msgstr ""
8523 8341
8524#: src/util/gnunet-config.c:263 8342#: src/util/gnunet-config.c:286
8525msgid "obtain option of value as a filename (with $-expansion)" 8343msgid "obtain option of value as a filename (with $-expansion)"
8526msgstr "" 8344msgstr ""
8527 8345
8528#: src/util/gnunet-config.c:268 8346#: src/util/gnunet-config.c:291
8529msgid "name of the section to access" 8347msgid "name of the section to access"
8530msgstr "" 8348msgstr ""
8531 8349
8532#: src/util/gnunet-config.c:273 8350#: src/util/gnunet-config.c:296
8533msgid "name of the option to access" 8351msgid "name of the option to access"
8534msgstr "" 8352msgstr ""
8535 8353
8536#: src/util/gnunet-config.c:278 8354#: src/util/gnunet-config.c:301
8537msgid "value to set" 8355msgid "value to set"
8538msgstr "" 8356msgstr ""
8539 8357
8540#: src/util/gnunet-config.c:282 8358#: src/util/gnunet-config.c:305
8541#, fuzzy 8359#, fuzzy
8542msgid "print available configuration sections" 8360msgid "print available configuration sections"
8543msgstr "立即保存配置?" 8361msgstr "立即保存配置?"
8544 8362
8545#: src/util/gnunet-config.c:286 8363#: src/util/gnunet-config.c:309
8546msgid "write configuration file that only contains delta to defaults" 8364msgid "write configuration file that only contains delta to defaults"
8547msgstr "" 8365msgstr ""
8548 8366
8549#: src/util/gnunet-config.c:299 8367#: src/util/gnunet-config.c:322
8550#, fuzzy 8368#, fuzzy
8551msgid "Manipulate GNUnet configuration files" 8369msgid "Manipulate GNUnet configuration files"
8552msgstr "更改配置文件中的一个值" 8370msgstr "更改配置文件中的一个值"
8553 8371
8554#: src/util/gnunet-ecc.c:92 8372#: src/util/gnunet-ecc.c:94
8555#, fuzzy, c-format 8373#, fuzzy, c-format
8556msgid "Failed to open `%s': %s\n" 8374msgid "Failed to open `%s': %s\n"
8557msgstr "打开日志文件“%s”失败:%s\n" 8375msgstr "打开日志文件“%s”失败:%s\n"
8558 8376
8559#: src/util/gnunet-ecc.c:128 8377#: src/util/gnunet-ecc.c:130
8560#, c-format 8378#, c-format
8561msgid "Generating %u keys like %s, please wait" 8379msgid "Generating %u keys like %s, please wait"
8562msgstr "" 8380msgstr ""
8563 8381
8564#: src/util/gnunet-ecc.c:141 8382#: src/util/gnunet-ecc.c:143
8565#, c-format 8383#, c-format
8566msgid "Generating %u keys, please wait" 8384msgid "Generating %u keys, please wait"
8567msgstr "" 8385msgstr ""
8568 8386
8569#: src/util/gnunet-ecc.c:182 8387#: src/util/gnunet-ecc.c:184
8570#, fuzzy, c-format 8388#, fuzzy, c-format
8571msgid "" 8389msgid ""
8572"\n" 8390"\n"
8573"Failed to write to `%s': %s\n" 8391"Failed to write to `%s': %s\n"
8574msgstr "运行 %s失败:%s %d\n" 8392msgstr "运行 %s失败:%s %d\n"
8575 8393
8576#: src/util/gnunet-ecc.c:192 8394#: src/util/gnunet-ecc.c:194
8577#, c-format 8395#, c-format
8578msgid "" 8396msgid ""
8579"\n" 8397"\n"
8580"Finished!\n" 8398"Finished!\n"
8581msgstr "" 8399msgstr ""
8582 8400
8583#: src/util/gnunet-ecc.c:195 8401#: src/util/gnunet-ecc.c:197
8584#, c-format 8402#, c-format
8585msgid "" 8403msgid ""
8586"\n" 8404"\n"
8587"Error, %u keys not generated\n" 8405"Error, %u keys not generated\n"
8588msgstr "" 8406msgstr ""
8589 8407
8590#: src/util/gnunet-ecc.c:288 8408#: src/util/gnunet-ecc.c:290
8591#, c-format 8409#, c-format
8592msgid "Hostkeys file `%s' not found\n" 8410msgid "Hostkeys file `%s' not found\n"
8593msgstr "" 8411msgstr ""
8594 8412
8595#: src/util/gnunet-ecc.c:303 8413#: src/util/gnunet-ecc.c:305
8596#, fuzzy, c-format 8414#, fuzzy, c-format
8597msgid "Hostkeys file `%s' is empty\n" 8415msgid "Hostkeys file `%s' is empty\n"
8598msgstr "找不到接口“%s”的一个 IP 地址。\n" 8416msgstr "找不到接口“%s”的一个 IP 地址。\n"
8599 8417
8600#: src/util/gnunet-ecc.c:332 8418#: src/util/gnunet-ecc.c:334
8601#, fuzzy, c-format 8419#, fuzzy, c-format
8602msgid "Could not read hostkey file: %s\n" 8420msgid "Could not read hostkey file: %s\n"
8603msgstr "找不到接口“%s”的一个 IP 地址。\n" 8421msgstr "找不到接口“%s”的一个 IP 地址。\n"
8604 8422
8605#: src/util/gnunet-ecc.c:389 8423#: src/util/gnunet-ecc.c:391
8606msgid "No hostkey file specified on command line\n" 8424msgid "No hostkey file specified on command line\n"
8607msgstr "" 8425msgstr ""
8608 8426
8609#: src/util/gnunet-ecc.c:454 8427#: src/util/gnunet-ecc.c:456
8610msgid "list keys included in a file (for testing)" 8428msgid "list keys included in a file (for testing)"
8611msgstr "" 8429msgstr ""
8612 8430
8613#: src/util/gnunet-ecc.c:459 8431#: src/util/gnunet-ecc.c:461
8614msgid "number of keys to list included in a file (for testing)" 8432msgid "number of keys to list included in a file (for testing)"
8615msgstr "" 8433msgstr ""
8616 8434
8617#: src/util/gnunet-ecc.c:464 8435#: src/util/gnunet-ecc.c:466
8618msgid "create COUNT public-private key pairs (for testing)" 8436msgid "create COUNT public-private key pairs (for testing)"
8619msgstr "" 8437msgstr ""
8620 8438
8621#: src/util/gnunet-ecc.c:468 8439#: src/util/gnunet-ecc.c:470
8622msgid "print the public key in ASCII format" 8440msgid "print the public key in ASCII format"
8623msgstr "" 8441msgstr ""
8624 8442
8625#: src/util/gnunet-ecc.c:472 8443#: src/util/gnunet-ecc.c:474
8626msgid "print the private key in ASCII format" 8444msgid "print the private key in ASCII format"
8627msgstr "" 8445msgstr ""
8628 8446
8629#: src/util/gnunet-ecc.c:476 8447#: src/util/gnunet-ecc.c:478
8630msgid "print the public key in HEX format" 8448msgid "print the public key in HEX format"
8631msgstr "" 8449msgstr ""
8632 8450
8633#: src/util/gnunet-ecc.c:480 8451#: src/util/gnunet-ecc.c:482
8634msgid "print examples of ECC operations (used for compatibility testing)" 8452msgid "print examples of ECC operations (used for compatibility testing)"
8635msgstr "" 8453msgstr ""
8636 8454
8637#: src/util/gnunet-ecc.c:496 8455#: src/util/gnunet-ecc.c:498
8638#, fuzzy 8456#, fuzzy
8639msgid "Manipulate GNUnet private ECC key files" 8457msgid "Manipulate GNUnet private ECC key files"
8640msgstr "更改配置文件中的一个值" 8458msgstr "更改配置文件中的一个值"
8641 8459
8642#: src/util/gnunet-resolver.c:166 8460#: src/util/gnunet-resolver.c:168
8643msgid "perform a reverse lookup" 8461msgid "perform a reverse lookup"
8644msgstr "" 8462msgstr ""
8645 8463
8646#: src/util/gnunet-resolver.c:177 8464#: src/util/gnunet-resolver.c:179
8647msgid "Use build-in GNUnet stub resolver" 8465msgid "Use build-in GNUnet stub resolver"
8648msgstr "" 8466msgstr ""
8649 8467
8650#: src/util/gnunet-scrypt.c:240 8468#: src/util/gnunet-scrypt.c:242
8651#, c-format 8469#, c-format
8652msgid "Loading hostkey from `%s' failed.\n" 8470msgid "Loading hostkey from `%s' failed.\n"
8653msgstr "" 8471msgstr ""
8654 8472
8655#: src/util/gnunet-scrypt.c:315 8473#: src/util/gnunet-scrypt.c:317
8656msgid "number of bits to require for the proof of work" 8474msgid "number of bits to require for the proof of work"
8657msgstr "" 8475msgstr ""
8658 8476
8659#: src/util/gnunet-scrypt.c:320 8477#: src/util/gnunet-scrypt.c:322
8660msgid "file with private key, otherwise default is used" 8478msgid "file with private key, otherwise default is used"
8661msgstr "" 8479msgstr ""
8662 8480
8663#: src/util/gnunet-scrypt.c:325 8481#: src/util/gnunet-scrypt.c:327
8664msgid "file with proof of work, otherwise default is used" 8482msgid "file with proof of work, otherwise default is used"
8665msgstr "" 8483msgstr ""
8666 8484
8667#: src/util/gnunet-scrypt.c:330 8485#: src/util/gnunet-scrypt.c:332
8668msgid "time to wait between calculations" 8486msgid "time to wait between calculations"
8669msgstr "" 8487msgstr ""
8670 8488
8671#: src/util/gnunet-scrypt.c:343 8489#: src/util/gnunet-scrypt.c:345
8672#, fuzzy 8490#, fuzzy
8673msgid "Manipulate GNUnet proof of work files" 8491msgid "Manipulate GNUnet proof of work files"
8674msgstr "更改配置文件中的一个值" 8492msgstr "更改配置文件中的一个值"
@@ -8677,481 +8495,607 @@ msgstr "更改配置文件中的一个值"
8677msgid "No DNS server available. DNS resolution will not be possible.\n" 8495msgid "No DNS server available. DNS resolution will not be possible.\n"
8678msgstr "" 8496msgstr ""
8679 8497
8680#: src/util/gnunet-uri.c:83 8498#: src/util/gnunet-uri.c:85
8681#, c-format 8499#, c-format
8682msgid "No URI specified on command line\n" 8500msgid "No URI specified on command line\n"
8683msgstr "" 8501msgstr ""
8684 8502
8685#: src/util/gnunet-uri.c:89 8503#: src/util/gnunet-uri.c:91
8686#, fuzzy, c-format 8504#, fuzzy, c-format
8687msgid "Invalid URI: does not start with `%s'\n" 8505msgid "Invalid URI: does not start with `%s'\n"
8688msgstr "无效的网络表示法(没有以“;”结尾:“%s”)\n" 8506msgstr "无效的网络表示法(没有以“;”结尾:“%s”)\n"
8689 8507
8690#: src/util/gnunet-uri.c:96 8508#: src/util/gnunet-uri.c:98
8691#, c-format 8509#, c-format
8692msgid "Invalid URI: fails to specify subsystem\n" 8510msgid "Invalid URI: fails to specify subsystem\n"
8693msgstr "" 8511msgstr ""
8694 8512
8695#: src/util/gnunet-uri.c:106 8513#: src/util/gnunet-uri.c:108
8696#, c-format 8514#, c-format
8697msgid "No handler known for subsystem `%s'\n" 8515msgid "No handler known for subsystem `%s'\n"
8698msgstr "" 8516msgstr ""
8699 8517
8700#: src/util/gnunet-uri.c:168 8518#: src/util/gnunet-uri.c:170
8701msgid "Perform default-actions for GNUnet URIs" 8519msgid "Perform default-actions for GNUnet URIs"
8702msgstr "" 8520msgstr ""
8703 8521
8704#: src/util/helper.c:333 8522#: src/util/helper.c:335
8705#, fuzzy, c-format 8523#, fuzzy, c-format
8706msgid "Error reading from `%s': %s\n" 8524msgid "Error reading from `%s': %s\n"
8707msgstr "创建用户出错" 8525msgstr "创建用户出错"
8708 8526
8709#: src/util/helper.c:384 8527#: src/util/helper.c:386
8710#, fuzzy, c-format 8528#, fuzzy, c-format
8711msgid "Failed to parse inbound message from helper `%s'\n" 8529msgid "Failed to parse inbound message from helper `%s'\n"
8712msgstr "打开日志文件“%s”失败:%s\n" 8530msgstr "打开日志文件“%s”失败:%s\n"
8713 8531
8714#: src/util/helper.c:604 8532#: src/util/helper.c:606
8715#, fuzzy, c-format 8533#, fuzzy, c-format
8716msgid "Error writing to `%s': %s\n" 8534msgid "Error writing to `%s': %s\n"
8717msgstr "创建用户出错" 8535msgstr "创建用户出错"
8718 8536
8719#: src/util/network.c:134 8537#: src/util/network.c:136
8720#, c-format 8538#, c-format
8721msgid "Unable to shorten unix path `%s' while keeping name unique\n" 8539msgid "Unable to shorten unix path `%s' while keeping name unique\n"
8722msgstr "" 8540msgstr ""
8723 8541
8724#: src/util/network.c:1793 src/util/network.c:1977 8542#: src/util/network.c:1794 src/util/network.c:1978
8725#, c-format 8543#, c-format
8726msgid "" 8544msgid ""
8727"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n" 8545"Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
8728msgstr "" 8546msgstr ""
8729 8547
8730#: src/util/os_installation.c:507 8548#: src/util/os_installation.c:509
8731#, fuzzy, c-format 8549#, fuzzy, c-format
8732msgid "" 8550msgid ""
8733"Could not determine installation path for %s. Set `%s' environment " 8551"Could not determine installation path for %s. Set `%s' environment "
8734"variable.\n" 8552"variable.\n"
8735msgstr "无法确定安装路径。请尝试设置“%s”\n" 8553msgstr "无法确定安装路径。请尝试设置“%s”\n"
8736 8554
8737#: src/util/os_installation.c:879 8555#: src/util/os_installation.c:881
8738#, fuzzy, c-format 8556#, fuzzy, c-format
8739msgid "Could not find binary `%s' in PATH!\n" 8557msgid "Could not find binary `%s' in PATH!\n"
8740msgstr "找不到主机“%s”的 IP:%s\n" 8558msgstr "找不到主机“%s”的 IP:%s\n"
8741 8559
8742#: src/util/os_installation.c:920 8560#: src/util/os_installation.c:922
8743#, c-format 8561#, c-format
8744msgid "Binary `%s' exists, but is not SUID\n" 8562msgid "Binary `%s' exists, but is not SUID\n"
8745msgstr "" 8563msgstr ""
8746 8564
8747#: src/util/os_installation.c:951 8565#: src/util/os_installation.c:953
8748#, fuzzy, c-format 8566#, fuzzy, c-format
8749msgid "CreateProcess failed for binary %s (%d).\n" 8567msgid "CreateProcess failed for binary %s (%d).\n"
8750msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 8568msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
8751 8569
8752#: src/util/os_installation.c:961 8570#: src/util/os_installation.c:963
8753#, c-format 8571#, c-format
8754msgid "GetExitCodeProcess failed for binary %s (%d).\n" 8572msgid "GetExitCodeProcess failed for binary %s (%d).\n"
8755msgstr "" 8573msgstr ""
8756 8574
8757#: src/util/plugin.c:84 8575#: src/util/plugin.c:86
8758#, c-format 8576#, c-format
8759msgid "Initialization of plugin mechanism failed: %s!\n" 8577msgid "Initialization of plugin mechanism failed: %s!\n"
8760msgstr "插件机构初始化失败:%s!\n" 8578msgstr "插件机构初始化失败:%s!\n"
8761 8579
8762#: src/util/plugin.c:149 8580#: src/util/plugin.c:151
8763#, c-format 8581#, c-format
8764msgid "`%s' failed to resolve method '%s' with error: %s\n" 8582msgid "`%s' failed to resolve method '%s' with error: %s\n"
8765msgstr "" 8583msgstr ""
8766 8584
8767#: src/util/plugin.c:224 8585#: src/util/plugin.c:226
8768#, c-format 8586#, c-format
8769msgid "`%s' failed for library `%s' with error: %s\n" 8587msgid "`%s' failed for library `%s' with error: %s\n"
8770msgstr "" 8588msgstr ""
8771 8589
8772#: src/util/plugin.c:383 8590#: src/util/plugin.c:385
8773#, fuzzy 8591#, fuzzy
8774msgid "Could not determine plugin installation path.\n" 8592msgid "Could not determine plugin installation path.\n"
8775msgstr "无法确定用户界面定义文件。" 8593msgstr "无法确定用户界面定义文件。"
8776 8594
8777#: src/util/regex.c:132 8595#: src/util/program.c:283
8596#, fuzzy, c-format
8597msgid "Unreadable or malformed configuration file `%s', exit ...\n"
8598msgstr "解析配置文件“%s”失败\n"
8599
8600#: src/util/program.c:301
8601#, fuzzy, c-format
8602msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
8603msgstr "解析配置文件“%s”失败\n"
8604
8605#: src/util/program.c:318
8606#, fuzzy
8607msgid "Unreadable or malformed configuration, exit ...\n"
8608msgstr "解析配置文件“%s”失败\n"
8609
8610#: src/util/regex.c:134
8778#, c-format 8611#, c-format
8779msgid "Bad mask: %d\n" 8612msgid "Bad mask: %d\n"
8780msgstr "" 8613msgstr ""
8781 8614
8782#: src/util/resolver_api.c:216 8615#: src/util/resolver_api.c:218
8783#, c-format 8616#, c-format
8784msgid "" 8617msgid ""
8785"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n" 8618"Missing `%s' for `%s' in configuration, DNS resolution will be unavailable.\n"
8786msgstr "" 8619msgstr ""
8787 8620
8788#: src/util/resolver_api.c:237 8621#: src/util/resolver_api.c:239
8789#, c-format 8622#, c-format
8790msgid "" 8623msgid ""
8791"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS " 8624"Missing `%s' or numeric IP address for `%s' of `%s' in configuration, DNS "
8792"resolution will be unavailable.\n" 8625"resolution will be unavailable.\n"
8793msgstr "" 8626msgstr ""
8794 8627
8795#: src/util/resolver_api.c:873 8628#: src/util/resolver_api.c:875
8796#, c-format 8629#, c-format
8797msgid "Timeout trying to resolve hostname `%s'.\n" 8630msgid "Timeout trying to resolve hostname `%s'.\n"
8798msgstr "" 8631msgstr ""
8799 8632
8800#: src/util/resolver_api.c:886 8633#: src/util/resolver_api.c:888
8801#, fuzzy, c-format 8634#, fuzzy, c-format
8802msgid "Timeout trying to resolve IP address `%s'.\n" 8635msgid "Timeout trying to resolve IP address `%s'.\n"
8803msgstr "GNUnet 现在使用 IP 地址 %s。\n" 8636msgstr "GNUnet 现在使用 IP 地址 %s。\n"
8804 8637
8805#: src/util/resolver_api.c:1071 8638#: src/util/resolver_api.c:1073
8806msgid "Resolver not configured correctly.\n" 8639msgid "Resolver not configured correctly.\n"
8807msgstr "" 8640msgstr ""
8808 8641
8809#: src/util/resolver_api.c:1158 src/util/resolver_api.c:1181 8642#: src/util/resolver_api.c:1160 src/util/resolver_api.c:1183
8810#: src/util/resolver_api.c:1195 8643#: src/util/resolver_api.c:1197
8811#, fuzzy, c-format 8644#, fuzzy, c-format
8812msgid "Could not resolve our FQDN: %s\n" 8645msgid "Could not resolve our FQDN: %s\n"
8813msgstr "无法解析“%s”(%s):%s\n" 8646msgstr "无法解析“%s”(%s):%s\n"
8814 8647
8815#: src/util/service.c:1303 8648#: src/util/service.c:674
8816msgid ""
8817"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8818msgstr ""
8819
8820#: src/util/service.c:2123
8821#, c-format 8649#, c-format
8822msgid "" 8650msgid ""
8823"Processing code for message of type %u did not call " 8651"Processing code for message of type %u did not call "
8824"`GNUNET_SERVICE_client_continue' after %s\n" 8652"`GNUNET_SERVICE_client_continue' after %s\n"
8825msgstr "" 8653msgstr ""
8826 8654
8827#: src/util/signal.c:87 8655#: src/util/service.c:1862
8656msgid ""
8657"Could not bind to any of the ports I was supposed to, refusing to run!\n"
8658msgstr ""
8659
8660#: src/util/signal.c:89
8828#, c-format 8661#, c-format
8829msgid "signal (%d, %p) returned %d.\n" 8662msgid "signal (%d, %p) returned %d.\n"
8830msgstr "" 8663msgstr ""
8831 8664
8832#: src/util/socks.c:595 8665#: src/util/socks.c:597
8833#, c-format 8666#, c-format
8834msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n" 8667msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
8835msgstr "" 8668msgstr ""
8836 8669
8837#: src/util/socks.c:614 8670#: src/util/socks.c:616
8838#, c-format 8671#, c-format
8839msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n" 8672msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
8840msgstr "" 8673msgstr ""
8841 8674
8842#: src/util/strings.c:174 8675#: src/util/strings.c:176
8843msgid "b" 8676msgid "b"
8844msgstr "b" 8677msgstr "b"
8845 8678
8846#: src/util/strings.c:471 8679#: src/util/strings.c:475
8847#, c-format 8680#, c-format
8848msgid "Character sets requested were `%s'->`%s'\n" 8681msgid "Character sets requested were `%s'->`%s'\n"
8849msgstr "" 8682msgstr ""
8850 8683
8851#: src/util/strings.c:598 8684#: src/util/strings.c:602
8852msgid "Failed to expand `$HOME': environment variable `HOME' not set" 8685msgid "Failed to expand `$HOME': environment variable `HOME' not set"
8853msgstr "扩展“$HOME”失败:没有设置环境变量“HOME”" 8686msgstr "扩展“$HOME”失败:没有设置环境变量“HOME”"
8854 8687
8855#: src/util/strings.c:702 8688#: src/util/strings.c:706
8856msgid "µs" 8689msgid "µs"
8857msgstr "" 8690msgstr ""
8858 8691
8859#: src/util/strings.c:706 8692#: src/util/strings.c:710
8860msgid "forever" 8693msgid "forever"
8861msgstr "" 8694msgstr ""
8862 8695
8863#: src/util/strings.c:708 8696#: src/util/strings.c:712
8864msgid "0 ms" 8697msgid "0 ms"
8865msgstr "" 8698msgstr ""
8866 8699
8867#: src/util/strings.c:714 8700#: src/util/strings.c:718
8868msgid "ms" 8701msgid "ms"
8869msgstr "毫秒" 8702msgstr "毫秒"
8870 8703
8871#: src/util/strings.c:720 8704#: src/util/strings.c:724
8872msgid "s" 8705msgid "s"
8873msgstr "秒" 8706msgstr "秒"
8874 8707
8875#: src/util/strings.c:726 8708#: src/util/strings.c:730
8876msgid "m" 8709msgid "m"
8877msgstr "分" 8710msgstr "分"
8878 8711
8879#: src/util/strings.c:732 8712#: src/util/strings.c:736
8880msgid "h" 8713msgid "h"
8881msgstr "时" 8714msgstr "时"
8882 8715
8883#: src/util/strings.c:739 8716#: src/util/strings.c:743
8884#, fuzzy 8717#, fuzzy
8885msgid "day" 8718msgid "day"
8886msgstr " 天" 8719msgstr " 天"
8887 8720
8888#: src/util/strings.c:741 8721#: src/util/strings.c:745
8889#, fuzzy 8722#, fuzzy
8890msgid "days" 8723msgid "days"
8891msgstr " 天" 8724msgstr " 天"
8892 8725
8893#: src/util/strings.c:770 8726#: src/util/strings.c:774
8894msgid "end of time" 8727msgid "end of time"
8895msgstr "" 8728msgstr ""
8896 8729
8897#: src/util/strings.c:1272 8730#: src/util/strings.c:1277
8898msgid "IPv6 address did not start with `['\n" 8731msgid "IPv6 address did not start with `['\n"
8899msgstr "" 8732msgstr ""
8900 8733
8901#: src/util/strings.c:1280 8734#: src/util/strings.c:1285
8902msgid "IPv6 address did contain ':' to separate port number\n" 8735msgid "IPv6 address did contain ':' to separate port number\n"
8903msgstr "" 8736msgstr ""
8904 8737
8905#: src/util/strings.c:1286 8738#: src/util/strings.c:1291
8906msgid "IPv6 address did contain ']' before ':' to separate port number\n" 8739msgid "IPv6 address did contain ']' before ':' to separate port number\n"
8907msgstr "" 8740msgstr ""
8908 8741
8909#: src/util/strings.c:1293 8742#: src/util/strings.c:1301
8910msgid "IPv6 address did contain a valid port number after the last ':'\n" 8743msgid "IPv6 address did contain a valid port number after the last ':'\n"
8911msgstr "" 8744msgstr ""
8912 8745
8913#: src/util/strings.c:1302 8746#: src/util/strings.c:1310
8914#, fuzzy, c-format 8747#, fuzzy, c-format
8915msgid "Invalid IPv6 address `%s': %s\n" 8748msgid "Invalid IPv6 address `%s': %s\n"
8916msgstr "无效的进程优先级“%s”\n" 8749msgstr "无效的进程优先级“%s”\n"
8917 8750
8918#: src/util/strings.c:1574 src/util/strings.c:1590 8751#: src/util/strings.c:1586 src/util/strings.c:1602
8919msgid "Port not in range\n" 8752msgid "Port not in range\n"
8920msgstr "" 8753msgstr ""
8921 8754
8922#: src/util/strings.c:1599 8755#: src/util/strings.c:1611
8923#, fuzzy, c-format 8756#, fuzzy, c-format
8924msgid "Malformed port policy `%s'\n" 8757msgid "Malformed port policy `%s'\n"
8925msgstr "解析配置文件“%s”失败\n" 8758msgstr "解析配置文件“%s”失败\n"
8926 8759
8927#: src/util/strings.c:1682 src/util/strings.c:1713 src/util/strings.c:1761 8760#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
8928#: src/util/strings.c:1782 8761#: src/util/strings.c:1798
8929#, c-format 8762#, c-format
8930msgid "Invalid format for IP: `%s'\n" 8763msgid "Invalid format for IP: `%s'\n"
8931msgstr "IP 格式无效:“%s”\n" 8764msgstr "IP 格式无效:“%s”\n"
8932 8765
8933#: src/util/strings.c:1739 8766#: src/util/strings.c:1754
8934#, c-format 8767#, c-format
8935msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)." 8768msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
8936msgstr "网络表示法无效(“/%d” 在 IPv4 CIDR 中是非法的)。" 8769msgstr "网络表示法无效(“/%d” 在 IPv4 CIDR 中是非法的)。"
8937 8770
8938#: src/util/strings.c:1791 8771#: src/util/strings.c:1807
8939#, fuzzy, c-format 8772#, fuzzy, c-format
8940msgid "Invalid format: `%s'\n" 8773msgid "Invalid format: `%s'\n"
8941msgstr "IP 格式无效:“%s”\n" 8774msgstr "IP 格式无效:“%s”\n"
8942 8775
8943#: src/util/strings.c:1843 8776#: src/util/strings.c:1860
8944#, c-format 8777#, c-format
8945msgid "Invalid network notation (does not end with ';': `%s')\n" 8778msgid "Invalid network notation (does not end with ';': `%s')\n"
8946msgstr "无效的网络表示法(没有以“;”结尾:“%s”)\n" 8779msgstr "无效的网络表示法(没有以“;”结尾:“%s”)\n"
8947 8780
8948#: src/util/strings.c:1893 8781#: src/util/strings.c:1914
8949#, c-format 8782#, c-format
8950msgid "Wrong format `%s' for netmask\n" 8783msgid "Wrong format `%s' for netmask\n"
8951msgstr "网络掩码的格式“%s”错误\n" 8784msgstr "网络掩码的格式“%s”错误\n"
8952 8785
8953#: src/util/strings.c:1924 8786#: src/util/strings.c:1945
8954#, c-format 8787#, c-format
8955msgid "Wrong format `%s' for network\n" 8788msgid "Wrong format `%s' for network\n"
8956msgstr "网络的格式“%s”错误\n" 8789msgstr "网络的格式“%s”错误\n"
8957 8790
8958#: src/vpn/gnunet-service-vpn.c:538 src/vpn/gnunet-service-vpn.c:1805 8791#: src/util/time.c:828 src/util/time.c:860
8792#, c-format
8793msgid "Failed to map `%s', cannot assure monotonic time!\n"
8794msgstr ""
8795
8796#: src/util/time.c:866
8797#, c-format
8798msgid ""
8799"Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
8800msgstr ""
8801
8802#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
8959msgid "# Active channels" 8803msgid "# Active channels"
8960msgstr "" 8804msgstr ""
8961 8805
8962#: src/vpn/gnunet-service-vpn.c:597 8806#: src/vpn/gnunet-service-vpn.c:599
8963msgid "# Messages dropped in cadet queue (overflow)" 8807msgid "# Messages dropped in cadet queue (overflow)"
8964msgstr "" 8808msgstr ""
8965 8809
8966#: src/vpn/gnunet-service-vpn.c:751 8810#: src/vpn/gnunet-service-vpn.c:753
8967msgid "# ICMP packets received from cadet" 8811msgid "# ICMP packets received from cadet"
8968msgstr "" 8812msgstr ""
8969 8813
8970#: src/vpn/gnunet-service-vpn.c:1094 8814#: src/vpn/gnunet-service-vpn.c:1096
8971msgid "# UDP packets received from cadet" 8815msgid "# UDP packets received from cadet"
8972msgstr "" 8816msgstr ""
8973 8817
8974#: src/vpn/gnunet-service-vpn.c:1253 8818#: src/vpn/gnunet-service-vpn.c:1255
8975msgid "# TCP packets received from cadet" 8819msgid "# TCP packets received from cadet"
8976msgstr "" 8820msgstr ""
8977 8821
8978#: src/vpn/gnunet-service-vpn.c:1465 8822#: src/vpn/gnunet-service-vpn.c:1467
8979#, fuzzy 8823#, fuzzy
8980msgid "# Cadet channels created" 8824msgid "# Cadet channels created"
8981msgstr "" 8825msgstr ""
8982"\n" 8826"\n"
8983"按任意键继续\n" 8827"按任意键继续\n"
8984 8828
8985#: src/vpn/gnunet-service-vpn.c:1685 8829#: src/vpn/gnunet-service-vpn.c:1687
8986#, c-format 8830#, c-format
8987msgid "Protocol %u not supported, dropping\n" 8831msgid "Protocol %u not supported, dropping\n"
8988msgstr "" 8832msgstr ""
8989 8833
8990#: src/vpn/gnunet-service-vpn.c:1824 8834#: src/vpn/gnunet-service-vpn.c:1826
8991msgid "# Packets dropped (channel not yet online)" 8835msgid "# Packets dropped (channel not yet online)"
8992msgstr "" 8836msgstr ""
8993 8837
8994#: src/vpn/gnunet-service-vpn.c:2004 8838#: src/vpn/gnunet-service-vpn.c:2006
8995msgid "# ICMPv4 packets dropped (not allowed)" 8839msgid "# ICMPv4 packets dropped (not allowed)"
8996msgstr "" 8840msgstr ""
8997 8841
8998#: src/vpn/gnunet-service-vpn.c:2025 8842#: src/vpn/gnunet-service-vpn.c:2027
8999msgid "# ICMPv6 packets dropped (not allowed)" 8843msgid "# ICMPv6 packets dropped (not allowed)"
9000msgstr "" 8844msgstr ""
9001 8845
9002#: src/vpn/gnunet-service-vpn.c:2233 8846#: src/vpn/gnunet-service-vpn.c:2235
9003msgid "# Packets received from TUN interface" 8847msgid "# Packets received from TUN interface"
9004msgstr "" 8848msgstr ""
9005 8849
9006#: src/vpn/gnunet-service-vpn.c:2266 src/vpn/gnunet-service-vpn.c:2302 8850#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
9007#, c-format 8851#, c-format
9008msgid "Packet received for unmapped destination `%s' (dropping it)\n" 8852msgid "Packet received for unmapped destination `%s' (dropping it)\n"
9009msgstr "" 8853msgstr ""
9010 8854
9011#: src/vpn/gnunet-service-vpn.c:2312 8855#: src/vpn/gnunet-service-vpn.c:2314
9012msgid "Received IPv4 packet with options (dropping it)\n" 8856msgid "Received IPv4 packet with options (dropping it)\n"
9013msgstr "" 8857msgstr ""
9014 8858
9015#: src/vpn/gnunet-service-vpn.c:2326 8859#: src/vpn/gnunet-service-vpn.c:2328
9016#, c-format 8860#, c-format
9017msgid "Received packet of unknown protocol %d from TUN (dropping it)\n" 8861msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
9018msgstr "" 8862msgstr ""
9019 8863
9020#: src/vpn/gnunet-service-vpn.c:2365 8864#: src/vpn/gnunet-service-vpn.c:2367
9021msgid "Failed to find unallocated IPv4 address in VPN's range\n" 8865msgid "Failed to find unallocated IPv4 address in VPN's range\n"
9022msgstr "" 8866msgstr ""
9023 8867
9024#: src/vpn/gnunet-service-vpn.c:2420 8868#: src/vpn/gnunet-service-vpn.c:2422
9025msgid "Failed to find unallocated IPv6 address in VPN's range\n" 8869msgid "Failed to find unallocated IPv6 address in VPN's range\n"
9026msgstr "" 8870msgstr ""
9027 8871
9028#: src/vpn/gnunet-service-vpn.c:2462 src/vpn/gnunet-service-vpn.c:2684 8872#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
9029msgid "# Active destinations" 8873msgid "# Active destinations"
9030msgstr "" 8874msgstr ""
9031 8875
9032#: src/vpn/gnunet-service-vpn.c:2733 8876#: src/vpn/gnunet-service-vpn.c:2735
9033msgid "Failed to allocate IP address for new destination\n" 8877msgid "Failed to allocate IP address for new destination\n"
9034msgstr "" 8878msgstr ""
9035 8879
9036#: src/vpn/gnunet-service-vpn.c:2996 8880#: src/vpn/gnunet-service-vpn.c:2998
9037#, fuzzy 8881#, fuzzy
9038msgid "Must specify valid IPv6 address" 8882msgid "Must specify valid IPv6 address"
9039msgstr "“%s”不可用。\n" 8883msgstr "“%s”不可用。\n"
9040 8884
9041#: src/vpn/gnunet-service-vpn.c:3020 8885#: src/vpn/gnunet-service-vpn.c:3022
9042msgid "Must specify valid IPv6 mask" 8886msgid "Must specify valid IPv6 mask"
9043msgstr "" 8887msgstr ""
9044 8888
9045#: src/vpn/gnunet-service-vpn.c:3028 8889#: src/vpn/gnunet-service-vpn.c:3030
9046msgid "IPv6 support disabled as this system does not support IPv6\n" 8890msgid "IPv6 support disabled as this system does not support IPv6\n"
9047msgstr "" 8891msgstr ""
9048 8892
9049#: src/vpn/gnunet-service-vpn.c:3041 8893#: src/vpn/gnunet-service-vpn.c:3043
9050#, fuzzy 8894#, fuzzy
9051msgid "Must specify valid IPv4 address" 8895msgid "Must specify valid IPv4 address"
9052msgstr "“%s”不可用。\n" 8896msgstr "“%s”不可用。\n"
9053 8897
9054#: src/vpn/gnunet-service-vpn.c:3054 8898#: src/vpn/gnunet-service-vpn.c:3056
9055msgid "Must specify valid IPv4 mask" 8899msgid "Must specify valid IPv4 mask"
9056msgstr "" 8900msgstr ""
9057 8901
9058#: src/vpn/gnunet-service-vpn.c:3064 8902#: src/vpn/gnunet-service-vpn.c:3066
9059msgid "IPv4 support disabled as this system does not support IPv4\n" 8903msgid "IPv4 support disabled as this system does not support IPv4\n"
9060msgstr "" 8904msgstr ""
9061 8905
9062#: src/vpn/gnunet-vpn.c:145 8906#: src/vpn/gnunet-vpn.c:147
9063#, fuzzy 8907#, fuzzy
9064msgid "Error creating tunnel\n" 8908msgid "Error creating tunnel\n"
9065msgstr "创建用户出错" 8909msgstr "创建用户出错"
9066 8910
9067#: src/vpn/gnunet-vpn.c:189 src/vpn/gnunet-vpn.c:220 8911#: src/vpn/gnunet-vpn.c:191 src/vpn/gnunet-vpn.c:222
9068#, c-format 8912#, c-format
9069msgid "Option `%s' makes no sense with option `%s'.\n" 8913msgid "Option `%s' makes no sense with option `%s'.\n"
9070msgstr "" 8914msgstr ""
9071 8915
9072#: src/vpn/gnunet-vpn.c:202 8916#: src/vpn/gnunet-vpn.c:204
9073#, fuzzy, c-format 8917#, fuzzy, c-format
9074msgid "Option `%s' or `%s' is required.\n" 8918msgid "Option `%s' or `%s' is required.\n"
9075msgstr "%s:选项“%s”有歧义\n" 8919msgstr "%s:选项“%s”有歧义\n"
9076 8920
9077#: src/vpn/gnunet-vpn.c:214 8921#: src/vpn/gnunet-vpn.c:216
9078#, c-format 8922#, c-format
9079msgid "Option `%s' or `%s' is required when using option `%s'.\n" 8923msgid "Option `%s' or `%s' is required when using option `%s'.\n"
9080msgstr "" 8924msgstr ""
9081 8925
9082#: src/vpn/gnunet-vpn.c:234 8926#: src/vpn/gnunet-vpn.c:236
9083#, fuzzy, c-format 8927#, fuzzy, c-format
9084msgid "`%s' is not a valid peer identifier.\n" 8928msgid "`%s' is not a valid peer identifier.\n"
9085msgstr "“%s”不可用。\n" 8929msgstr "“%s”不可用。\n"
9086 8930
9087#: src/vpn/gnunet-vpn.c:254 8931#: src/vpn/gnunet-vpn.c:256
9088#, fuzzy, c-format 8932#, fuzzy, c-format
9089msgid "`%s' is not a valid IP address.\n" 8933msgid "`%s' is not a valid IP address.\n"
9090msgstr "“%s”不可用。\n" 8934msgstr "“%s”不可用。\n"
9091 8935
9092#: src/vpn/gnunet-vpn.c:290 8936#: src/vpn/gnunet-vpn.c:292
9093msgid "request that result should be an IPv4 address" 8937msgid "request that result should be an IPv4 address"
9094msgstr "" 8938msgstr ""
9095 8939
9096#: src/vpn/gnunet-vpn.c:295 8940#: src/vpn/gnunet-vpn.c:297
9097msgid "request that result should be an IPv6 address" 8941msgid "request that result should be an IPv6 address"
9098msgstr "" 8942msgstr ""
9099 8943
9100#: src/vpn/gnunet-vpn.c:301 8944#: src/vpn/gnunet-vpn.c:303
9101msgid "how long should the mapping be valid for new tunnels?" 8945msgid "how long should the mapping be valid for new tunnels?"
9102msgstr "" 8946msgstr ""
9103 8947
9104#: src/vpn/gnunet-vpn.c:307 8948#: src/vpn/gnunet-vpn.c:309
9105msgid "destination IP for the tunnel" 8949msgid "destination IP for the tunnel"
9106msgstr "" 8950msgstr ""
9107 8951
9108#: src/vpn/gnunet-vpn.c:313 8952#: src/vpn/gnunet-vpn.c:315
9109msgid "peer offering the service we would like to access" 8953msgid "peer offering the service we would like to access"
9110msgstr "" 8954msgstr ""
9111 8955
9112#: src/vpn/gnunet-vpn.c:319 8956#: src/vpn/gnunet-vpn.c:321
9113msgid "name of the service we would like to access" 8957msgid "name of the service we would like to access"
9114msgstr "" 8958msgstr ""
9115 8959
9116#: src/vpn/gnunet-vpn.c:324 8960#: src/vpn/gnunet-vpn.c:326
9117msgid "service is offered via TCP" 8961msgid "service is offered via TCP"
9118msgstr "" 8962msgstr ""
9119 8963
9120#: src/vpn/gnunet-vpn.c:329 8964#: src/vpn/gnunet-vpn.c:331
9121msgid "service is offered via UDP" 8965msgid "service is offered via UDP"
9122msgstr "" 8966msgstr ""
9123 8967
9124#: src/vpn/gnunet-vpn.c:342 8968#: src/vpn/gnunet-vpn.c:344
9125msgid "Setup tunnels via VPN." 8969msgid "Setup tunnels via VPN."
9126msgstr "" 8970msgstr ""
9127 8971
9128#: src/zonemaster/gnunet-service-zonemaster.c:836 8972#: src/zonemaster/gnunet-service-zonemaster.c:838
9129#: src/zonemaster/gnunet-service-zonemaster-monitor.c:414 8973#: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
9130#, fuzzy 8974#, fuzzy
9131msgid "Failed to connect to the namestore!\n" 8975msgid "Failed to connect to the namestore!\n"
9132msgstr "初始化“%s”服务失败。\n" 8976msgstr "初始化“%s”服务失败。\n"
9133 8977
9134#: src/include/gnunet_common.h:770 src/include/gnunet_common.h:777 8978#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
9135#: src/include/gnunet_common.h:787 8979#: src/include/gnunet_common.h:789
9136#, fuzzy, c-format 8980#, fuzzy, c-format
9137msgid "Assertion failed at %s:%d. Aborting.\n" 8981msgid "Assertion failed at %s:%d. Aborting.\n"
9138msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" 8982msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
9139 8983
9140#: src/include/gnunet_common.h:795 8984#: src/include/gnunet_common.h:797
9141#, c-format 8985#, c-format
9142msgid "Assertion failed at %s:%d.\n" 8986msgid "Assertion failed at %s:%d.\n"
9143msgstr "" 8987msgstr ""
9144 8988
9145#: src/include/gnunet_common.h:807 8989#: src/include/gnunet_common.h:809
9146#, c-format 8990#, c-format
9147msgid "External protocol violation detected at %s:%d.\n" 8991msgid "External protocol violation detected at %s:%d.\n"
9148msgstr "" 8992msgstr ""
9149 8993
9150#: src/include/gnunet_common.h:834 src/include/gnunet_common.h:843 8994#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
9151#, c-format 8995#, c-format
9152msgid "`%s' failed on file `%s' at %s:%d with error: %s\n" 8996msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
9153msgstr "" 8997msgstr ""
9154 8998
8999#, fuzzy
9000#~ msgid "Invalid tunnel owner `%s'\n"
9001#~ msgstr "IP 格式无效:“%s”\n"
9002
9003#, fuzzy
9004#~ msgid "Provide information about a particular tunnel"
9005#~ msgstr "无法获取有关用户“%s”的信息:%s\n"
9006
9007#, fuzzy
9008#~ msgid "Failed to store membership information!\n"
9009#~ msgstr "打开日志文件“%s”失败:%s\n"
9010
9011#, fuzzy
9012#~ msgid "Failed to test membership!\n"
9013#~ msgstr "发送消息失败。\n"
9014
9015#, fuzzy
9016#~ msgid "Dropping invalid fragment\n"
9017#~ msgstr "“%s”的参数无效。\n"
9018
9019#, fuzzy
9020#~ msgid "Failed to store fragment\n"
9021#~ msgstr "运行 %s失败:%s %d\n"
9022
9023#, fuzzy
9024#~ msgid "Failed to get fragment!\n"
9025#~ msgstr "发送消息失败。\n"
9026
9027#, fuzzy
9028#~ msgid "Failed to get message!\n"
9029#~ msgstr "发送消息失败。\n"
9030
9031#, fuzzy
9032#~ msgid "Failed to get message fragment!\n"
9033#~ msgstr "打开日志文件“%s”失败:%s\n"
9034
9035#, fuzzy
9036#~ msgid "Failed to get master counters!\n"
9037#~ msgstr "发送消息失败。\n"
9038
9039#, fuzzy
9040#~ msgid "Failed to begin modifying state: %d\n"
9041#~ msgstr "运行 %s失败:%s %d\n"
9042
9043#, fuzzy
9044#~ msgid "Failed to modify state: %d\n"
9045#~ msgstr "运行 %s失败:%s %d\n"
9046
9047#, fuzzy
9048#~ msgid "Failed to end modifying state!\n"
9049#~ msgstr "运行 %s失败:%s %d\n"
9050
9051#, fuzzy
9052#~ msgid "Failed to begin synchronizing state!\n"
9053#~ msgstr "发送消息失败。\n"
9054
9055#, fuzzy
9056#~ msgid "Failed to end synchronizing state!\n"
9057#~ msgstr "发送消息失败。\n"
9058
9059#, fuzzy
9060#~ msgid "Failed to reset state!\n"
9061#~ msgstr "发送消息失败。\n"
9062
9063#, fuzzy
9064#~ msgid "Failed to get state variable!\n"
9065#~ msgstr "发送消息失败。\n"
9066
9067#, fuzzy
9068#~ msgid "Unable to initialize Mysql.\n"
9069#~ msgstr "无法初始化 SQLite:%s。\n"
9070
9071#, fuzzy
9072#~ msgid "Failed to run SQL statement `%s'\n"
9073#~ msgstr "解析配置文件“%s”失败\n"
9074
9075#, fuzzy
9076#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
9077#~ msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
9078
9079#, fuzzy
9080#~ msgid "SQLite database running\n"
9081#~ msgstr "sqlite 数据仓库"
9082
9083#, fuzzy
9084#~ msgid "--place missing or invalid.\n"
9085#~ msgstr "“%s”的参数无效。\n"
9086
9087#, fuzzy
9088#~ msgid "name or public key of ego"
9089#~ msgstr "“%s”的参数无效。\n"
9090
9091#, fuzzy
9092#~ msgid "wait for incoming messages"
9093#~ msgstr "发送消息失败。\n"
9094
9095#, fuzzy
9096#~ msgid "number of messages to replay from history"
9097#~ msgstr "每次迭代所使用的消息数量"
9098
9155#~ msgid "Could not resolve `%s' (%s): %s\n" 9099#~ msgid "Could not resolve `%s' (%s): %s\n"
9156#~ msgstr "无法解析“%s”(%s):%s\n" 9100#~ msgstr "无法解析“%s”(%s):%s\n"
9157 9101
diff --git a/src/Makefile.am b/src/Makefile.am
index 5fd65141b..03738e4ed 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,13 +11,7 @@ endif
11 11
12if HAVE_EXPERIMENTAL 12if HAVE_EXPERIMENTAL
13 EXP_DIR = \ 13 EXP_DIR = \
14 rps \ 14 rps
15 multicast \
16 psycutil \
17 psycstore \
18 psyc \
19 social
20# dv (FTBFS)
21if HAVE_ABE 15if HAVE_ABE
22if HAVE_JSON 16if HAVE_JSON
23 EXP_DIR += \ 17 EXP_DIR += \
diff --git a/src/arm/arm.conf.in b/src/arm/arm.conf.in
index 64ae35786..dc32f5498 100644
--- a/src/arm/arm.conf.in
+++ b/src/arm/arm.conf.in
@@ -16,7 +16,7 @@ UNIX_MATCH_GID = YES
16# logging with a new log file each day. Note that only the last 3 16# logging with a new log file each day. Note that only the last 3
17# log files are preserved. 17# log files are preserved.
18# GLOBAL_POSTFIX = -l $GNUNET_CACHE_HOME/{}-%Y-%m-%d.log 18# GLOBAL_POSTFIX = -l $GNUNET_CACHE_HOME/{}-%Y-%m-%d.log
19GLOBAL_PREFIX = @MONKEYPREFIX@ 19GLOBAL_PREFIX =
20 20
21# If set to YES, ARM will only start services that are marked as 21# If set to YES, ARM will only start services that are marked as
22# system-level services (and we'll expect a second ARM to be 22# system-level services (and we'll expect a second ARM to be
diff --git a/src/ats-tests/Makefile.am b/src/ats-tests/Makefile.am
index c85645b9d..83f9e1b6a 100644
--- a/src/ats-tests/Makefile.am
+++ b/src/ats-tests/Makefile.am
@@ -60,6 +60,7 @@ libgnunetatstesting_la_SOURCES = \
60libgnunetatstesting_la_LIBADD = \ 60libgnunetatstesting_la_LIBADD = \
61 $(top_builddir)/src/testbed/libgnunettestbed.la \ 61 $(top_builddir)/src/testbed/libgnunettestbed.la \
62 $(top_builddir)/src/core/libgnunetcore.la \ 62 $(top_builddir)/src/core/libgnunetcore.la \
63 $(top_builddir)/src/transport/libgnunettransport.la \
63 $(top_builddir)/src/ats/libgnunetats.la \ 64 $(top_builddir)/src/ats/libgnunetats.la \
64 $(top_builddir)/src/util/libgnunetutil.la \ 65 $(top_builddir)/src/util/libgnunetutil.la \
65 $(GN_LIBINTL) 66 $(GN_LIBINTL)
diff --git a/src/ats/Makefile.am b/src/ats/Makefile.am
index 2a62d71bd..ac8a411eb 100644
--- a/src/ats/Makefile.am
+++ b/src/ats/Makefile.am
@@ -97,6 +97,7 @@ libgnunet_plugin_ats_mlp_la_SOURCES = \
97libgnunet_plugin_ats_mlp_la_LIBADD = \ 97libgnunet_plugin_ats_mlp_la_LIBADD = \
98 libgnunetats.la \ 98 libgnunetats.la \
99 $(top_builddir)/src/statistics/libgnunetstatistics.la \ 99 $(top_builddir)/src/statistics/libgnunetstatistics.la \
100 $(top_builddir)/src/nt/libgnunetnt.la \
100 $(top_builddir)/src/util/libgnunetutil.la 101 $(top_builddir)/src/util/libgnunetutil.la
101libgnunet_plugin_ats_mlp_la_LDFLAGS = \ 102libgnunet_plugin_ats_mlp_la_LDFLAGS = \
102 $(GN_PLUGIN_LDFLAGS) \ 103 $(GN_PLUGIN_LDFLAGS) \
@@ -107,6 +108,7 @@ libgnunet_plugin_ats_ril_la_SOURCES = \
107libgnunet_plugin_ats_ril_la_LIBADD = \ 108libgnunet_plugin_ats_ril_la_LIBADD = \
108 libgnunetats.la \ 109 libgnunetats.la \
109 $(top_builddir)/src/statistics/libgnunetstatistics.la \ 110 $(top_builddir)/src/statistics/libgnunetstatistics.la \
111 $(top_builddir)/src/nt/libgnunetnt.la \
110 $(top_builddir)/src/util/libgnunetutil.la \ 112 $(top_builddir)/src/util/libgnunetutil.la \
111 $(LTLIBINTL) 113 $(LTLIBINTL)
112libgnunet_plugin_ats_ril_la_LDFLAGS = \ 114libgnunet_plugin_ats_ril_la_LDFLAGS = \
@@ -214,6 +216,8 @@ EXTRA_DIST = \
214 ats.h ats2.h \ 216 ats.h ats2.h \
215 plugin_ats2_common.c \ 217 plugin_ats2_common.c \
216 test_delay \ 218 test_delay \
219 test_ats2_lib.conf \
220 test_ats_api.conf \
217 test_ats_api_mlp.conf \ 221 test_ats_api_mlp.conf \
218 test_ats_api_ril.conf \ 222 test_ats_api_ril.conf \
219 test_ats_api_proportional.conf 223 test_ats_api_proportional.conf
diff --git a/src/cadet/cadet.h b/src/cadet/cadet.h
index 51296ae50..f6cc860cc 100644
--- a/src/cadet/cadet.h
+++ b/src/cadet/cadet.h
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -323,9 +323,9 @@ struct GNUNET_CADET_LocalInfoPath
323 struct GNUNET_MessageHeader header; 323 struct GNUNET_MessageHeader header;
324 324
325 /** 325 /**
326 * Zero. 326 * Offset of the peer that was requested.
327 */ 327 */
328 uint32_t reserved GNUNET_PACKED; 328 uint32_t off GNUNET_PACKED;
329}; 329};
330 330
331 331
@@ -338,7 +338,7 @@ struct GNUNET_CADET_LocalInfoPeers
338 * Type: #GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_PEERS 338 * Type: #GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_PEERS
339 */ 339 */
340 struct GNUNET_MessageHeader header; 340 struct GNUNET_MessageHeader header;
341 341
342 /** 342 /**
343 * Number of paths. 343 * Number of paths.
344 */ 344 */
@@ -348,7 +348,7 @@ struct GNUNET_CADET_LocalInfoPeers
348 * Do we have a tunnel toward this peer? 348 * Do we have a tunnel toward this peer?
349 */ 349 */
350 int16_t tunnel GNUNET_PACKED; 350 int16_t tunnel GNUNET_PACKED;
351 351
352 /** 352 /**
353 * Shortest known path. 353 * Shortest known path.
354 */ 354 */
diff --git a/src/cadet/cadet_api_get_path.c b/src/cadet/cadet_api_get_path.c
index 2f35e365e..fcc79c3d5 100644
--- a/src/cadet/cadet_api_get_path.c
+++ b/src/cadet/cadet_api_get_path.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -66,7 +66,7 @@ struct GNUNET_CADET_GetPath
66 * Backoff for reconnect attempts. 66 * Backoff for reconnect attempts.
67 */ 67 */
68 struct GNUNET_TIME_Relative backoff; 68 struct GNUNET_TIME_Relative backoff;
69 69
70 /** 70 /**
71 * Peer we want information about. 71 * Peer we want information about.
72 */ 72 */
@@ -109,7 +109,7 @@ check_get_path (void *cls,
109/** 109/**
110 * Process a local peer info reply, pass info to the user. 110 * Process a local peer info reply, pass info to the user.
111 * 111 *
112 * @param cls Closure 112 * @param cls Closure
113 * @param message Message itself. 113 * @param message Message itself.
114 */ 114 */
115static void 115static void
@@ -118,9 +118,10 @@ handle_get_path (void *cls,
118{ 118{
119 struct GNUNET_CADET_GetPath *gp = cls; 119 struct GNUNET_CADET_GetPath *gp = cls;
120 struct GNUNET_CADET_PeerPathDetail ppd; 120 struct GNUNET_CADET_PeerPathDetail ppd;
121 121
122 ppd.peer = gp->id; 122 ppd.peer = gp->id;
123 ppd.path = (const struct GNUNET_PeerIdentity *) &message[1]; 123 ppd.path = (const struct GNUNET_PeerIdentity *) &message[1];
124 ppd.target_offset = ntohl (message->off);
124 ppd.path_length = (ntohs (message->header.size) - sizeof (*message)) 125 ppd.path_length = (ntohs (message->header.size) - sizeof (*message))
125 / sizeof (struct GNUNET_PeerIdentity); 126 / sizeof (struct GNUNET_PeerIdentity);
126 gp->path_cb (gp->path_cb_cls, 127 gp->path_cb (gp->path_cb_cls,
@@ -131,7 +132,7 @@ handle_get_path (void *cls,
131/** 132/**
132 * Process a local peer info reply, pass info to the user. 133 * Process a local peer info reply, pass info to the user.
133 * 134 *
134 * @param cls Closure 135 * @param cls Closure
135 * @param message Message itself. 136 * @param message Message itself.
136 */ 137 */
137static void 138static void
@@ -177,7 +178,7 @@ error_handler (void *cls,
177 gp); 178 gp);
178} 179}
179 180
180 181
181/** 182/**
182 * Reconnect to the service and try again. 183 * Reconnect to the service and try again.
183 * 184 *
diff --git a/src/cadet/cadet_test_lib.c b/src/cadet/cadet_test_lib.c
index 7d83f496a..db16e4015 100644
--- a/src/cadet/cadet_test_lib.c
+++ b/src/cadet/cadet_test_lib.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -279,7 +279,7 @@ cadet_test_run (void *cls,
279 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 279 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
280 "Some links failed (%u), ending\n", 280 "Some links failed (%u), ending\n",
281 links_failed); 281 links_failed);
282 exit (2); 282 exit (77);
283 } 283 }
284 if (num_peers != ctx->num_peers) 284 if (num_peers != ctx->num_peers)
285 { 285 {
diff --git a/src/cadet/gnunet-cadet.c b/src/cadet/gnunet-cadet.c
index dba517a7b..932d069a1 100644
--- a/src/cadet/gnunet-cadet.c
+++ b/src/cadet/gnunet-cadet.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -103,7 +103,7 @@ static struct GNUNET_CADET_GetPath *gpo;
103 103
104/** 104/**
105 * Active peer listing operation. 105 * Active peer listing operation.
106 */ 106 */
107static struct GNUNET_CADET_PeersLister *plo; 107static struct GNUNET_CADET_PeersLister *plo;
108 108
109/** 109/**
@@ -220,7 +220,7 @@ shutdown_task (void *cls)
220 { 220 {
221 GNUNET_CADET_channel_destroy (ch); 221 GNUNET_CADET_channel_destroy (ch);
222 ch = NULL; 222 ch = NULL;
223 } 223 }
224 if (NULL != gpo) 224 if (NULL != gpo)
225 { 225 {
226 GNUNET_CADET_get_path_cancel (gpo); 226 GNUNET_CADET_get_path_cancel (gpo);
@@ -306,12 +306,12 @@ read_stdio (void *cls)
306 if (GNUNET_NO == echo) 306 if (GNUNET_NO == echo)
307 { 307 {
308 // Use MQ's notification if too much data of stdin is pooring in too fast. 308 // Use MQ's notification if too much data of stdin is pooring in too fast.
309 if (STREAM_BUFFER_SIZE < sent_pkt) 309 if (STREAM_BUFFER_SIZE < sent_pkt)
310 { 310 {
311 GNUNET_MQ_notify_sent (env, mq_cb, cls); 311 GNUNET_MQ_notify_sent (env, mq_cb, cls);
312 sent_pkt = 0; 312 sent_pkt = 0;
313 } 313 }
314 else 314 else
315 { 315 {
316 listen_stdio (); 316 listen_stdio ();
317 } 317 }
@@ -563,7 +563,7 @@ path_callback (void *cls,
563 ppd->path_length); 563 ppd->path_length);
564 for (unsigned int i = 0; i < ppd->path_length; i++) 564 for (unsigned int i = 0; i < ppd->path_length; i++)
565 FPRINTF (stdout, 565 FPRINTF (stdout,
566 "%s ", 566 (i == ppd->target_offset) ? "*%s* " : "%s ",
567 GNUNET_i2s (&ppd->path[i])); 567 GNUNET_i2s (&ppd->path[i]));
568 FPRINTF (stdout, 568 FPRINTF (stdout,
569 "\n"); 569 "\n");
@@ -626,7 +626,7 @@ show_peer (void *cls)
626 GNUNET_CRYPTO_eddsa_public_key_from_string (peer_id, 626 GNUNET_CRYPTO_eddsa_public_key_from_string (peer_id,
627 strlen (peer_id), 627 strlen (peer_id),
628 &pid.public_key)) 628 &pid.public_key))
629 { 629 {
630 fprintf (stderr, 630 fprintf (stderr,
631 _("Invalid peer ID `%s'\n"), 631 _("Invalid peer ID `%s'\n"),
632 peer_id); 632 peer_id);
@@ -859,7 +859,7 @@ main (int argc,
859 GNUNET_GETOPT_option_flag ('e', 859 GNUNET_GETOPT_option_flag ('e',
860 "echo", 860 "echo",
861 gettext_noop ("Activate echo mode"), 861 gettext_noop ("Activate echo mode"),
862 &echo), 862 &echo),
863 GNUNET_GETOPT_option_string ('o', 863 GNUNET_GETOPT_option_string ('o',
864 "open-port", 864 "open-port",
865 "SHARED_SECRET", 865 "SHARED_SECRET",
diff --git a/src/cadet/gnunet-service-cadet.c b/src/cadet/gnunet-service-cadet.c
index d64242943..e29330f99 100644
--- a/src/cadet/gnunet-service-cadet.c
+++ b/src/cadet/gnunet-service-cadet.c
@@ -886,6 +886,13 @@ path_info_iterator (void *cls,
886 path_size = sizeof (struct GNUNET_PeerIdentity) * path_length; 886 path_size = sizeof (struct GNUNET_PeerIdentity) * path_length;
887 if (sizeof (*resp) + path_size > UINT16_MAX) 887 if (sizeof (*resp) + path_size > UINT16_MAX)
888 { 888 {
889 /* try just giving the relevant path */
890 path_length = GNUNET_MIN ((UINT16_MAX - sizeof (*resp)) / sizeof (struct GNUNET_PeerIdentity),
891 off);
892 path_size = sizeof (struct GNUNET_PeerIdentity) * path_length;
893 }
894 if (sizeof (*resp) + path_size > UINT16_MAX)
895 {
889 LOG (GNUNET_ERROR_TYPE_WARNING, 896 LOG (GNUNET_ERROR_TYPE_WARNING,
890 "Path of %u entries is too long for info message\n", 897 "Path of %u entries is too long for info message\n",
891 path_length); 898 path_length);
@@ -899,9 +906,10 @@ path_info_iterator (void *cls,
899 /* Don't copy first peer. First peer is always the local one. Last 906 /* Don't copy first peer. First peer is always the local one. Last
900 * peer is always the destination (leave as 0, EOL). 907 * peer is always the destination (leave as 0, EOL).
901 */ 908 */
902 for (unsigned int i = 0; i <= off; i++) 909 for (unsigned int i = 0; i < path_length; i++)
903 id[i] = *GCP_get_id (GCPP_get_peer_at_offset (path, 910 id[i] = *GCP_get_id (GCPP_get_peer_at_offset (path,
904 i)); 911 i));
912 resp->off = htonl (off);
905 GNUNET_MQ_send (mq, 913 GNUNET_MQ_send (mq,
906 env); 914 env);
907 return GNUNET_YES; 915 return GNUNET_YES;
diff --git a/src/consensus/consensus-simulation.py.in b/src/consensus/consensus-simulation.py.in
index 38e29230a..161015d00 100644
--- a/src/consensus/consensus-simulation.py.in
+++ b/src/consensus/consensus-simulation.py.in
@@ -19,6 +19,10 @@
19 19
20from __future__ import absolute_import 20from __future__ import absolute_import
21from __future__ import print_function 21from __future__ import print_function
22from __future__ import division
23from builtins import str
24from builtins import range
25from past.utils import old_div
22import argparse 26import argparse
23import random 27import random
24from math import ceil, log, floor 28from math import ceil, log, floor
@@ -39,18 +43,18 @@ def bsc(n):
39 43
40def simulate(k, n, verbose): 44def simulate(k, n, verbose):
41 assert k < n 45 assert k < n
42 largest_arc = int(2**ceil(log(n, 2))) / 2 46 largest_arc = old_div(int(2**ceil(log(n, 2))), 2)
43 num_ghosts = (2 * largest_arc) - n 47 num_ghosts = (2 * largest_arc) - n
44 if verbose: 48 if verbose:
45 print("we have", num_ghosts, "ghost peers") 49 print("we have", num_ghosts, "ghost peers")
46 # n.b. all peers with idx<k are evil 50 # n.b. all peers with idx<k are evil
47 peers = range(n) 51 peers = list(range(n))
48 # py2-3 compatible, backwards. 52 # py2-3 compatible, backwards.
49 # refer to http://python-future.org/compatible_idioms.html#xrange 53 # refer to http://python-future.org/compatible_idioms.html#xrange
50 info = [1 << x for x in xrange(n)] 54 info = [1 << x for x in range(n)]
51 55
52 def done_p(): 56 def done_p():
53 for x in xrange(k, n): 57 for x in range(k, n):
54 if bsc(info[x]) < n-k: 58 if bsc(info[x]) < n-k:
55 return False 59 return False
56 return True 60 return True
@@ -63,7 +67,7 @@ def simulate(k, n, verbose):
63 if verbose: 67 if verbose:
64 print("-- subround --") 68 print("-- subround --")
65 new_info = [x for x in info] 69 new_info = [x for x in info]
66 for peer_physical in xrange(n): 70 for peer_physical in range(n):
67 peer_logical = peers[peer_physical] 71 peer_logical = peers[peer_physical]
68 peer_type = None 72 peer_type = None
69 partner_logical = (peer_logical + arc) % n 73 partner_logical = (peer_logical + arc) % n
@@ -105,6 +109,6 @@ if __name__ == "__main__":
105 109
106 args = parser.parse_args() 110 args = parser.parse_args()
107 sum = 0.0 111 sum = 0.0
108 for n in xrange(0, args.r): 112 for n in range(0, args.r):
109 sum += simulate(args.k, args.n, args.verbose) 113 sum += simulate(args.k, args.n, args.verbose)
110 print(sum / args.r) 114 print(old_div(sum, args.r))
diff --git a/src/consensus/test_consensus.conf b/src/consensus/test_consensus.conf
index fa42c3c1a..4f17fa359 100644
--- a/src/consensus/test_consensus.conf
+++ b/src/consensus/test_consensus.conf
@@ -81,3 +81,7 @@ WAN_QUOTA_OUT = unlimited
81 81
82[core] 82[core]
83USE_EPHEMERAL_KEYS = NO 83USE_EPHEMERAL_KEYS = NO
84
85[rps]
86START_ON_DEMAND = NO
87IMMEDIATE_START = NO
diff --git a/src/datacache/perf_datacache.c b/src/datacache/perf_datacache.c
index f33e62bae..4381171c5 100644
--- a/src/datacache/perf_datacache.c
+++ b/src/datacache/perf_datacache.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -132,7 +132,7 @@ FAILURE:
132int 132int
133main (int argc, char *argv[]) 133main (int argc, char *argv[])
134{ 134{
135 char cfg_name[128]; 135 char cfg_name[PATH_MAX];
136 char *const xargv[] = { 136 char *const xargv[] = {
137 "perf-datacache", 137 "perf-datacache",
138 "-c", 138 "-c",
diff --git a/src/datacache/test_datacache.c b/src/datacache/test_datacache.c
index e647ae833..d62a31c27 100644
--- a/src/datacache/test_datacache.c
+++ b/src/datacache/test_datacache.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -155,7 +155,7 @@ FAILURE:
155int 155int
156main (int argc, char *argv[]) 156main (int argc, char *argv[])
157{ 157{
158 char cfg_name[128]; 158 char cfg_name[PATH_MAX];
159 char *const xargv[] = { 159 char *const xargv[] = {
160 "test-datacache", 160 "test-datacache",
161 "-c", 161 "-c",
diff --git a/src/datacache/test_datacache_quota.c b/src/datacache/test_datacache_quota.c
index 117d8be4e..7c4e56ea5 100644
--- a/src/datacache/test_datacache_quota.c
+++ b/src/datacache/test_datacache_quota.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -123,7 +123,7 @@ int
123main (int argc, 123main (int argc,
124 char *argv[]) 124 char *argv[])
125{ 125{
126 char cfg_name[128]; 126 char cfg_name[PATH_MAX];
127 char *const xargv[] = { 127 char *const xargv[] = {
128 "test-datacache-quota", 128 "test-datacache-quota",
129 "-c", 129 "-c",
diff --git a/src/datastore/perf_datastore_api.c b/src/datastore/perf_datastore_api.c
index 939e60e4d..2c261b155 100644
--- a/src/datastore/perf_datastore_api.c
+++ b/src/datastore/perf_datastore_api.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -595,7 +595,7 @@ int
595main (int argc, 595main (int argc,
596 char *argv[]) 596 char *argv[])
597{ 597{
598 char cfg_name[128]; 598 char cfg_name[PATH_MAX];
599 599
600 plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]); 600 plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]);
601 GNUNET_snprintf (cfg_name, 601 GNUNET_snprintf (cfg_name,
diff --git a/src/datastore/perf_plugin_datastore.c b/src/datastore/perf_plugin_datastore.c
index 9ba8fa1b0..f68d1f389 100644
--- a/src/datastore/perf_plugin_datastore.c
+++ b/src/datastore/perf_plugin_datastore.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -519,8 +519,8 @@ run (void *cls, char *const *args, const char *cfgfile,
519int 519int
520main (int argc, char *argv[]) 520main (int argc, char *argv[])
521{ 521{
522 char dir_name[128]; 522 char dir_name[PATH_MAX];
523 char cfg_name[128]; 523 char cfg_name[PATH_MAX];
524 char *const xargv[] = { 524 char *const xargv[] = {
525 "perf-plugin-datastore", 525 "perf-plugin-datastore",
526 "-c", 526 "-c",
diff --git a/src/datastore/plugin_datastore_postgres.c b/src/datastore/plugin_datastore_postgres.c
index 94db6e116..0a3018411 100644
--- a/src/datastore/plugin_datastore_postgres.c
+++ b/src/datastore/plugin_datastore_postgres.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -153,7 +153,11 @@ init_connection (struct Plugin *plugin)
153 "SELECT hash FROM gn090", 153 "SELECT hash FROM gn090",
154 0), 154 0),
155 GNUNET_PQ_make_prepare ("estimate_size", 155 GNUNET_PQ_make_prepare ("estimate_size",
156 "SELECT SUM(LENGTH(value))+256*COUNT(*) AS total FROM gn090", 156 "SELECT CASE WHEN NOT EXISTS"
157 " (SELECT 1 FROM gn090)"
158 " THEN 0"
159 " ELSE (SELECT SUM(LENGTH(value))+256*COUNT(*) FROM gn090)"
160 "END AS total",
157 0), 161 0),
158 GNUNET_PQ_PREPARED_STATEMENT_END 162 GNUNET_PQ_PREPARED_STATEMENT_END
159 }; 163 };
diff --git a/src/datastore/test_datastore_api.c b/src/datastore/test_datastore_api.c
index fa96ea9b7..daf6cccb3 100644
--- a/src/datastore/test_datastore_api.c
+++ b/src/datastore/test_datastore_api.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -635,7 +635,7 @@ duc_dummy (void *cls,
635 635
636 636
637/** 637/**
638 * check if plugin is actually working 638 * check if plugin is actually working
639 */ 639 */
640static int 640static int
641test_plugin (const char *cfg_name) 641test_plugin (const char *cfg_name)
@@ -644,7 +644,7 @@ test_plugin (const char *cfg_name)
644 struct GNUNET_CONFIGURATION_Handle *cfg; 644 struct GNUNET_CONFIGURATION_Handle *cfg;
645 struct GNUNET_DATASTORE_PluginFunctions *api; 645 struct GNUNET_DATASTORE_PluginFunctions *api;
646 struct GNUNET_DATASTORE_PluginEnvironment env; 646 struct GNUNET_DATASTORE_PluginEnvironment env;
647 647
648 cfg = GNUNET_CONFIGURATION_create (); 648 cfg = GNUNET_CONFIGURATION_create ();
649 if (GNUNET_OK != 649 if (GNUNET_OK !=
650 GNUNET_CONFIGURATION_load (cfg, 650 GNUNET_CONFIGURATION_load (cfg,
@@ -691,9 +691,9 @@ int
691main (int argc, 691main (int argc,
692 char *argv[]) 692 char *argv[])
693{ 693{
694 char cfg_name[128]; 694 char cfg_name[PATH_MAX];
695 int ret; 695 int ret;
696 696
697 plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]); 697 plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]);
698 GNUNET_snprintf (cfg_name, 698 GNUNET_snprintf (cfg_name,
699 sizeof (cfg_name), 699 sizeof (cfg_name),
diff --git a/src/datastore/test_datastore_api_management.c b/src/datastore/test_datastore_api_management.c
index d592ccc80..d91fe748b 100644
--- a/src/datastore/test_datastore_api_management.c
+++ b/src/datastore/test_datastore_api_management.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -337,7 +337,7 @@ ignore_payload_cb (void *cls,
337static int 337static int
338test_plugin (const char *cfg_name) 338test_plugin (const char *cfg_name)
339{ 339{
340 char libname[128]; 340 char libname[PATH_MAX];
341 struct GNUNET_CONFIGURATION_Handle *cfg; 341 struct GNUNET_CONFIGURATION_Handle *cfg;
342 struct GNUNET_DATASTORE_PluginFunctions *api; 342 struct GNUNET_DATASTORE_PluginFunctions *api;
343 struct GNUNET_DATASTORE_PluginEnvironment env; 343 struct GNUNET_DATASTORE_PluginEnvironment env;
@@ -378,7 +378,7 @@ test_plugin (const char *cfg_name)
378int 378int
379main (int argc, char *argv[]) 379main (int argc, char *argv[])
380{ 380{
381 char cfg_name[128]; 381 char cfg_name[PATH_MAX];
382 int ret; 382 int ret;
383 383
384 plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]); 384 plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]);
diff --git a/src/datastore/test_plugin_datastore.c b/src/datastore/test_plugin_datastore.c
index 4b054314c..c37b8ddb9 100644
--- a/src/datastore/test_plugin_datastore.c
+++ b/src/datastore/test_plugin_datastore.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -436,8 +436,8 @@ run (void *cls, char *const *args, const char *cfgfile,
436int 436int
437main (int argc, char *argv[]) 437main (int argc, char *argv[])
438{ 438{
439 char dir_name[128]; 439 char dir_name[PATH_MAX];
440 char cfg_name[128]; 440 char cfg_name[PATH_MAX];
441 char *const xargv[] = { 441 char *const xargv[] = {
442 "test-plugin-datastore", 442 "test-plugin-datastore",
443 "-c", 443 "-c",
diff --git a/src/dht/test_dht_tools.py.in b/src/dht/test_dht_tools.py.in
index 05582cbd0..38a9f9622 100644
--- a/src/dht/test_dht_tools.py.in
+++ b/src/dht/test_dht_tools.py.in
@@ -124,7 +124,7 @@ time.sleep(1)
124 124
125print("TEST: Testing get...", end='') 125print("TEST: Testing get...", end='')
126rc, stdo, stde = r_get(['-k', 'testkey', '-T', '50 ms', '-t', '8'], want_stdo=True, failer=end_arm_failer) 126rc, stdo, stde = r_get(['-k', 'testkey', '-T', '50 ms', '-t', '8'], want_stdo=True, failer=end_arm_failer)
127stdo = stdo.replace('\r', '').splitlines() 127stdo = stdo.decode('utf-8').replace('\r', '').splitlines()
128expect = "Result 0, type 8:\ntestdata".splitlines() 128expect = "Result 0, type 8:\ntestdata".splitlines()
129if len(stdo) != 2 or len(expect) != 2 or stdo[0] != expect[0] or stdo[1] != expect[1]: 129if len(stdo) != 2 or len(expect) != 2 or stdo[0] != expect[0] or stdo[1] != expect[1]:
130 fail("output `{}' differs from expected `{}'".format(stdo, expect)) 130 fail("output `{}' differs from expected `{}'".format(stdo, expect))
diff --git a/src/dv/.gitignore b/src/dv/.gitignore
deleted file mode 100644
index b3068b1c4..000000000
--- a/src/dv/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
1gnunet-service-dv
2gnunet-dv
diff --git a/src/dv/Makefile.am b/src/dv/Makefile.am
deleted file mode 100644
index c44321151..000000000
--- a/src/dv/Makefile.am
+++ /dev/null
@@ -1,100 +0,0 @@
1# This Makefile.am is in the public domain
2AM_CPPFLAGS = -I$(top_srcdir)/src/include
3
4if MINGW
5 WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
6endif
7
8if USE_COVERAGE
9 AM_CFLAGS = --coverage -O0
10 XLIB = -lgcov
11endif
12
13plugindir = $(libdir)/gnunet
14
15libexecdir= $(pkglibdir)/libexec/
16
17pkgcfgdir= $(pkgdatadir)/config.d/
18
19pkgcfg_DATA = \
20 dv.conf
21
22lib_LTLIBRARIES = libgnunetdv.la
23
24plugin_LTLIBRARIES = libgnunet_plugin_transport_dv.la
25
26libgnunetdv_la_SOURCES = \
27 dv_api.c dv.h
28libgnunetdv_la_LIBADD = \
29 $(top_builddir)/src/util/libgnunetutil.la \
30 $(GN_LIBINTL) $(XLIB)
31libgnunetdv_la_LDFLAGS = \
32 $(GN_LIB_LDFLAGS) $(WINFLAGS) \
33 -version-info 0:0:0
34
35
36noinst_PROGRAMS = \
37 gnunet-dv
38
39libexec_PROGRAMS = \
40 gnunet-service-dv
41
42gnunet_service_dv_SOURCES = \
43 gnunet-service-dv.c dv.h
44gnunet_service_dv_LDADD = \
45 $(top_builddir)/src/ats/libgnunetats.la \
46 $(top_builddir)/src/set/libgnunetset.la \
47 $(top_builddir)/src/statistics/libgnunetstatistics.la \
48 $(top_builddir)/src/core/libgnunetcore.la \
49 $(top_builddir)/src/util/libgnunetutil.la \
50 $(GN_LIBINTL)
51
52gnunet_dv_SOURCES = \
53 gnunet-dv.c dv.h
54gnunet_dv_LDADD = \
55 libgnunetdv.la \
56 $(top_builddir)/src/util/libgnunetutil.la \
57 $(GN_LIBINTL)
58
59libgnunet_plugin_transport_dv_la_SOURCES = \
60 plugin_transport_dv.c
61libgnunet_plugin_transport_dv_la_LIBADD = \
62 libgnunetdv.la \
63 $(top_builddir)/src/ats/libgnunetats.la \
64 $(top_builddir)/src/hello/libgnunethello.la \
65 $(top_builddir)/src/util/libgnunetutil.la
66libgnunet_plugin_transport_dv_la_LDFLAGS = \
67 $(GN_PLUGIN_LDFLAGS)
68
69if HAVE_TESTING
70check_PROGRAMS = \
71 test_transport_blacklist \
72 test_transport_dv
73endif
74
75if ENABLE_TEST_RUN
76 AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME;
77 TESTS = $(check_PROGRAMS)
78endif
79
80test_transport_dv_SOURCES = \
81 test_transport_dv.c
82test_transport_dv_LDADD = \
83 $(top_builddir)/src/testbed/libgnunettestbed.la \
84 $(top_builddir)/src/core/libgnunetcore.la \
85 $(top_builddir)/src/transport/libgnunettransport.la \
86 $(top_builddir)/src/util/libgnunetutil.la
87
88test_transport_blacklist_SOURCES = \
89 test_transport_blacklist.c
90test_transport_blacklist_LDADD = \
91 $(top_builddir)/src/testbed/libgnunettestbed.la \
92 $(top_builddir)/src/core/libgnunetcore.la \
93 $(top_builddir)/src/transport/libgnunettransport.la \
94 $(top_builddir)/src/util/libgnunetutil.la
95
96EXTRA_DIST = \
97 test_transport_dv_data.conf \
98 test_transport_blacklist_data.conf \
99 template_dv.conf
100
diff --git a/src/dv/dv.conf.in b/src/dv/dv.conf.in
deleted file mode 100644
index 145c58be6..000000000
--- a/src/dv/dv.conf.in
+++ /dev/null
@@ -1,15 +0,0 @@
1[dv]
2START_ON_DEMAND = @START_ON_DEMAND@
3ACCEPT_FROM6 = ::1;
4ACCEPT_FROM = 127.0.0.1;
5BINARY = gnunet-service-dv
6HOSTNAME = localhost
7@UNIXONLY@ PORT = 2571
8UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-dv.sock
9UNIX_MATCH_UID = YES
10UNIX_MATCH_GID = YES
11# ACCEPT_FROM =
12# ACCEPT_FROM6 =
13# REJECT_FROM =
14# REJECT_FROM6 =
15# BINDTO =
diff --git a/src/dv/dv.h b/src/dv/dv.h
deleted file mode 100644
index b85d9c33f..000000000
--- a/src/dv/dv.h
+++ /dev/null
@@ -1,172 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Christian Grothoff
23 * @file dv/dv.h
24 * @brief IPC messages between DV service and DV plugin
25 */
26#ifndef DV_H
27#define DV_H
28
29#include "gnunet_common.h"
30
31GNUNET_NETWORK_STRUCT_BEGIN
32
33/**
34 * DV service tells plugin about a DV-connection being
35 * now available.
36 */
37struct GNUNET_DV_ConnectMessage
38{
39 /**
40 * Type: #GNUNET_MESSAGE_TYPE_DV_CONNECT
41 */
42 struct GNUNET_MessageHeader header;
43
44 /**
45 * The distance to the peer that we are now connected to
46 */
47 uint32_t distance GNUNET_PACKED;
48
49 /**
50 * The other peer (at the given distance).
51 */
52 struct GNUNET_PeerIdentity peer;
53
54 /**
55 * The network the peer is in
56 */
57 uint32_t network GNUNET_PACKED;
58
59};
60
61
62/**
63 * DV service tells plugin about a DV-connection being
64 * no longer available.
65 *
66 * Sender address is copied to the end of this struct,
67 * followed by the actual message received.
68 */
69struct GNUNET_DV_DisconnectMessage
70{
71 /**
72 * Type: #GNUNET_MESSAGE_TYPE_DV_DISCONNECT
73 */
74 struct GNUNET_MessageHeader header;
75
76 /**
77 * Always zero.
78 */
79 uint32_t reserved GNUNET_PACKED;
80
81 /**
82 * The peer that is no longer available.
83 */
84 struct GNUNET_PeerIdentity peer;
85
86};
87
88
89/**
90 * DV Message, contains a message that was received via DV for this
91 * peer. Send from the DV service to the DV plugin.
92 *
93 * Sender address is copied to the end of this struct,
94 * followed by the actual message received.
95 */
96struct GNUNET_DV_ReceivedMessage
97{
98 /**
99 * Type: #GNUNET_MESSAGE_TYPE_DV_RECV
100 */
101 struct GNUNET_MessageHeader header;
102
103 /**
104 * The distance to the peer that we received the message from
105 */
106 uint32_t distance GNUNET_PACKED;
107
108 /**
109 * The (actual) sender of the message
110 */
111 struct GNUNET_PeerIdentity sender;
112
113 /* payload follows */
114};
115
116
117/**
118 * Message from plugin to DV service, requesting a
119 * message to be routed.
120 */
121struct GNUNET_DV_SendMessage
122{
123 /**
124 * Type: #GNUNET_MESSAGE_TYPE_DV_SEND
125 */
126 struct GNUNET_MessageHeader header;
127
128 /**
129 * Reserved for alignment. 0.
130 */
131 uint32_t reserved GNUNET_PACKED;
132
133 /**
134 * The (actual) target of the message
135 */
136 struct GNUNET_PeerIdentity target;
137
138};
139
140
141/**
142 * Message from service to DV plugin, saying that our
143 * distance to another peer changed.
144 */
145struct GNUNET_DV_DistanceUpdateMessage
146{
147 /**
148 * Type: #GNUNET_MESSAGE_TYPE_DV_DISTANCE_CHANGED.
149 */
150 struct GNUNET_MessageHeader header;
151
152 /**
153 * What is the new distance?
154 */
155 uint32_t distance GNUNET_PACKED;
156
157 /**
158 * The peer for which the distance changed.
159 */
160 struct GNUNET_PeerIdentity peer;
161
162 /**
163 * The network the peer is in
164 */
165 uint32_t network GNUNET_PACKED;
166
167};
168
169
170GNUNET_NETWORK_STRUCT_END
171
172#endif
diff --git a/src/dv/dv_api.c b/src/dv/dv_api.c
deleted file mode 100644
index dd46ce9f5..000000000
--- a/src/dv/dv_api.c
+++ /dev/null
@@ -1,467 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2009--2013, 2016 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @file dv/dv_api.c
23 * @brief library to access the DV service
24 * @author Christian Grothoff
25 * @author Nathan Evans
26 */
27#include "platform.h"
28#include "gnunet_util_lib.h"
29#include "gnunet_dv_service.h"
30#include "gnunet_protocols.h"
31#include "dv.h"
32#include "gnunet_transport_plugin.h"
33
34#define LOG(kind,...) GNUNET_log_from (kind, "dv-api",__VA_ARGS__)
35
36
37/**
38 * Information we track for each peer.
39 */
40struct ConnectedPeer
41{
42
43 /**
44 * Identity of the peer.
45 */
46 struct GNUNET_PeerIdentity pid;
47
48};
49
50
51/**
52 * Handle to the DV service.
53 */
54struct GNUNET_DV_ServiceHandle
55{
56
57 /**
58 * Connection to DV service.
59 */
60 struct GNUNET_MQ_Handle *mq;
61
62 /**
63 * Our configuration.
64 */
65 const struct GNUNET_CONFIGURATION_Handle *cfg;
66
67 /**
68 * Closure for the callbacks.
69 */
70 void *cls;
71
72 /**
73 * Function to call on connect events.
74 */
75 GNUNET_DV_ConnectCallback connect_cb;
76
77 /**
78 * Function to call on distance change events.
79 */
80 GNUNET_DV_DistanceChangedCallback distance_cb;
81
82 /**
83 * Function to call on disconnect events.
84 */
85 GNUNET_DV_DisconnectCallback disconnect_cb;
86
87 /**
88 * Function to call on receiving messages events.
89 */
90 GNUNET_DV_MessageReceivedCallback message_cb;
91
92 /**
93 * Information tracked per connected peer. Maps peer
94 * identities to `struct ConnectedPeer` entries.
95 */
96 struct GNUNET_CONTAINER_MultiPeerMap *peers;
97
98};
99
100
101/**
102 * Disconnect and then reconnect to the DV service.
103 *
104 * @param sh service handle
105 */
106static void
107reconnect (struct GNUNET_DV_ServiceHandle *sh);
108
109
110/**
111 * We got disconnected from the service and thus all of the
112 * connections need to be torn down.
113 *
114 * @param cls the `struct GNUNET_DV_ServiceHandle`
115 * @param key a peer identity
116 * @param value a `struct ConnectedPeer` to clean up
117 * @return #GNUNET_OK (continue to iterate)
118 */
119static int
120cleanup_send_cb (void *cls,
121 const struct GNUNET_PeerIdentity *key,
122 void *value)
123{
124 struct GNUNET_DV_ServiceHandle *sh = cls;
125 struct ConnectedPeer *peer = value;
126
127 GNUNET_assert (GNUNET_YES ==
128 GNUNET_CONTAINER_multipeermap_remove (sh->peers,
129 key,
130 peer));
131 sh->disconnect_cb (sh->cls,
132 key);
133 GNUNET_free (peer);
134 return GNUNET_OK;
135}
136
137
138/**
139 * Handles a message sent from the DV service to us.
140 * Parse it out and give it to the plugin.
141 *
142 * @param cls the handle to the DV API
143 * @param cm the message that was received
144 */
145static void
146handle_connect (void *cls,
147 const struct GNUNET_DV_ConnectMessage *cm)
148{
149 struct GNUNET_DV_ServiceHandle *sh = cls;
150 struct ConnectedPeer *peer;
151
152 peer = GNUNET_CONTAINER_multipeermap_get (sh->peers,
153 &cm->peer);
154 if (NULL != peer)
155 {
156 GNUNET_break (0);
157 reconnect (sh);
158 return;
159 }
160 peer = GNUNET_new (struct ConnectedPeer);
161 peer->pid = cm->peer;
162 GNUNET_assert (GNUNET_OK ==
163 GNUNET_CONTAINER_multipeermap_put (sh->peers,
164 &peer->pid,
165 peer,
166 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
167 sh->connect_cb (sh->cls,
168 &cm->peer,
169 ntohl (cm->distance),
170 (enum GNUNET_NetworkType) ntohl (cm->network));
171}
172
173
174/**
175 * Handles a message sent from the DV service to us.
176 * Parse it out and give it to the plugin.
177 *
178 * @param cls the handle to the DV API
179 * @param dm the message that was received
180 */
181static void
182handle_disconnect (void *cls,
183 const struct GNUNET_DV_DisconnectMessage *dm)
184{
185 struct GNUNET_DV_ServiceHandle *sh = cls;
186 struct ConnectedPeer *peer;
187
188 peer = GNUNET_CONTAINER_multipeermap_get (sh->peers,
189 &dm->peer);
190 if (NULL == peer)
191 {
192 GNUNET_break (0);
193 reconnect (sh);
194 return;
195 }
196 cleanup_send_cb (sh,
197 &dm->peer,
198 peer);
199}
200
201
202/**
203 * Handles a message sent from the DV service to us.
204 * Parse it out and give it to the plugin.
205 *
206 * @param cls the handle to the DV API
207 * @param msg the message that was received
208 */
209static void
210handle_distance_update (void *cls,
211 const struct GNUNET_DV_DistanceUpdateMessage *dum)
212{
213 struct GNUNET_DV_ServiceHandle *sh = cls;
214 struct ConnectedPeer *peer;
215
216 peer = GNUNET_CONTAINER_multipeermap_get (sh->peers,
217 &dum->peer);
218 if (NULL == peer)
219 {
220 GNUNET_break (0);
221 reconnect (sh);
222 return;
223 }
224 sh->distance_cb (sh->cls,
225 &dum->peer,
226 ntohl (dum->distance),
227 (enum GNUNET_NetworkType) ntohl (dum->network));
228}
229
230
231/**
232 * Handles a message sent from the DV service to us.
233 * Parse it out and give it to the plugin.
234 *
235 * @param cls the handle to the DV API
236 * @param rm the message that was received
237 */
238static int
239check_received (void *cls,
240 const struct GNUNET_DV_ReceivedMessage *rm)
241{
242 struct GNUNET_DV_ServiceHandle *sh = cls;
243 const struct GNUNET_MessageHeader *payload;
244
245 if (NULL ==
246 GNUNET_CONTAINER_multipeermap_get (sh->peers,
247 &rm->sender))
248 {
249 GNUNET_break (0);
250 return GNUNET_SYSERR;
251 }
252 if (ntohs (rm->header.size) - sizeof (struct GNUNET_DV_ReceivedMessage) <
253 sizeof (*payload))
254 {
255 GNUNET_break (0);
256 return GNUNET_SYSERR;
257 }
258 payload = (const struct GNUNET_MessageHeader *) &rm[1];
259 if (ntohs (rm->header.size) !=
260 sizeof (struct GNUNET_DV_ReceivedMessage) + ntohs (payload->size))
261 {
262 GNUNET_break (0);
263 return GNUNET_SYSERR;
264 }
265 return GNUNET_OK;
266}
267
268
269/**
270 * Handles a message sent from the DV service to us.
271 * Parse it out and give it to the plugin.
272 *
273 * @param cls the handle to the DV API
274 * @param rm the message that was received
275 */
276static void
277handle_received (void *cls,
278 const struct GNUNET_DV_ReceivedMessage *rm)
279{
280 struct GNUNET_DV_ServiceHandle *sh = cls;
281 const struct GNUNET_MessageHeader *payload;
282
283 payload = (const struct GNUNET_MessageHeader *) &rm[1];
284 sh->message_cb (sh->cls,
285 &rm->sender,
286 ntohl (rm->distance),
287 payload);
288}
289
290
291/**
292 * Generic error handler, called with the appropriate error code and
293 * the same closure specified at the creation of the message queue.
294 * Not every message queue implementation supports an error handler.
295 *
296 * @param cls closure with the `struct GNUNET_DV_ServiceHandle *`
297 * @param error error code
298 */
299static void
300mq_error_handler (void *cls,
301 enum GNUNET_MQ_Error error)
302{
303 struct GNUNET_DV_ServiceHandle *sh = cls;
304
305 reconnect (sh);
306}
307
308
309/**
310 * Disconnect and then reconnect to the DV service.
311 *
312 * @param sh service handle
313 */
314static void
315reconnect (struct GNUNET_DV_ServiceHandle *sh)
316{
317 struct GNUNET_MQ_MessageHandler handlers[] = {
318 GNUNET_MQ_hd_fixed_size (connect,
319 GNUNET_MESSAGE_TYPE_DV_CONNECT,
320 struct GNUNET_DV_ConnectMessage,
321 sh),
322 GNUNET_MQ_hd_fixed_size (disconnect,
323 GNUNET_MESSAGE_TYPE_DV_DISCONNECT,
324 struct GNUNET_DV_DisconnectMessage,
325 sh),
326 GNUNET_MQ_hd_fixed_size (distance_update,
327 GNUNET_MESSAGE_TYPE_DV_DISTANCE_CHANGED,
328 struct GNUNET_DV_DistanceUpdateMessage,
329 sh),
330 GNUNET_MQ_hd_var_size (received,
331 GNUNET_MESSAGE_TYPE_DV_RECV,
332 struct GNUNET_DV_ReceivedMessage,
333 sh),
334 GNUNET_MQ_handler_end ()
335 };
336 struct GNUNET_MessageHeader *sm;
337 struct GNUNET_MQ_Envelope *env;
338
339 if (NULL != sh->mq)
340 {
341 GNUNET_MQ_destroy (sh->mq);
342 sh->mq = NULL;
343 }
344 GNUNET_CONTAINER_multipeermap_iterate (sh->peers,
345 &cleanup_send_cb,
346 sh);
347 LOG (GNUNET_ERROR_TYPE_DEBUG,
348 "Connecting to DV service\n");
349 sh->mq = GNUNET_CLIENT_connect (sh->cfg,
350 "dv",
351 handlers,
352 &mq_error_handler,
353 sh);
354 if (NULL == sh->mq)
355 {
356 GNUNET_break (0);
357 return;
358 }
359 env = GNUNET_MQ_msg (sm,
360 GNUNET_MESSAGE_TYPE_DV_START);
361 GNUNET_MQ_send (sh->mq,
362 env);
363}
364
365
366/**
367 * Connect to the DV service.
368 *
369 * @param cfg configuration
370 * @param cls closure for callbacks
371 * @param connect_cb function to call on connects
372 * @param distance_cb function to call if distances change
373 * @param disconnect_cb function to call on disconnects
374 * @param message_cb function to call if we receive messages
375 * @return handle to access the service
376 */
377struct GNUNET_DV_ServiceHandle *
378GNUNET_DV_service_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
379 void *cls,
380 GNUNET_DV_ConnectCallback connect_cb,
381 GNUNET_DV_DistanceChangedCallback distance_cb,
382 GNUNET_DV_DisconnectCallback disconnect_cb,
383 GNUNET_DV_MessageReceivedCallback message_cb)
384{
385 struct GNUNET_DV_ServiceHandle *sh;
386
387 sh = GNUNET_new (struct GNUNET_DV_ServiceHandle);
388 sh->cfg = cfg;
389 sh->cls = cls;
390 sh->connect_cb = connect_cb;
391 sh->distance_cb = distance_cb;
392 sh->disconnect_cb = disconnect_cb;
393 sh->message_cb = message_cb;
394 sh->peers = GNUNET_CONTAINER_multipeermap_create (128,
395 GNUNET_YES);
396 reconnect (sh);
397 return sh;
398}
399
400
401/**
402 * Disconnect from DV service.
403 *
404 * @param sh service handle
405 */
406void
407GNUNET_DV_service_disconnect (struct GNUNET_DV_ServiceHandle *sh)
408{
409 if (NULL == sh)
410 return;
411 if (NULL != sh->mq)
412 {
413 GNUNET_MQ_destroy (sh->mq);
414 sh->mq = NULL;
415 }
416 GNUNET_CONTAINER_multipeermap_iterate (sh->peers,
417 &cleanup_send_cb,
418 sh);
419 GNUNET_CONTAINER_multipeermap_destroy (sh->peers);
420 GNUNET_free (sh);
421}
422
423
424/**
425 * Send a message via DV service.
426 *
427 * @param sh service handle
428 * @param target intended recpient
429 * @param msg message payload
430 */
431void
432GNUNET_DV_send (struct GNUNET_DV_ServiceHandle *sh,
433 const struct GNUNET_PeerIdentity *target,
434 const struct GNUNET_MessageHeader *msg)
435{
436 struct GNUNET_DV_SendMessage *sm;
437 struct ConnectedPeer *peer;
438 struct GNUNET_MQ_Envelope *env;
439
440 if (ntohs (msg->size) + sizeof (*sm) >= GNUNET_MAX_MESSAGE_SIZE)
441 {
442 GNUNET_break (0);
443 return;
444 }
445 LOG (GNUNET_ERROR_TYPE_DEBUG,
446 "Asked to send %u bytes of type %u to %s\n",
447 (unsigned int) ntohs (msg->size),
448 (unsigned int) ntohs (msg->type),
449 GNUNET_i2s (target));
450 peer = GNUNET_CONTAINER_multipeermap_get (sh->peers,
451 target);
452 if (NULL == peer)
453 {
454 GNUNET_break (0);
455 return;
456 }
457 GNUNET_assert (NULL != sh->mq);
458 env = GNUNET_MQ_msg_nested_mh (sm,
459 GNUNET_MESSAGE_TYPE_DV_SEND,
460 msg);
461 sm->target = *target;
462 GNUNET_MQ_send (sh->mq,
463 env);
464}
465
466
467/* end of dv_api.c */
diff --git a/src/dv/gnunet-dv.c b/src/dv/gnunet-dv.c
deleted file mode 100644
index 90d8144e5..000000000
--- a/src/dv/gnunet-dv.c
+++ /dev/null
@@ -1,185 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20/**
21 * @file dv/gnunet-dv.c
22 * @brief DV monitoring command line tool
23 * @author Christian Grothoff
24 */
25#include "platform.h"
26#include "gnunet_util_lib.h"
27#include "gnunet_dv_service.h"
28
29/**
30 * Handle to DV service.
31 */
32static struct GNUNET_DV_ServiceHandle *sh;
33
34/**
35 * Was verbose specified?
36 */
37static unsigned int verbose;
38
39
40/**
41 * Function called if DV starts to be able to talk to a peer.
42 *
43 * @param cls closure
44 * @param peer newly connected peer
45 * @param distance distance to the peer
46 * @param network the network the next hop is located in
47 */
48static void
49connect_cb (void *cls,
50 const struct GNUNET_PeerIdentity *peer,
51 uint32_t distance,
52 enum GNUNET_NetworkType network)
53{
54 fprintf (stderr, "Connect: %s at %u\n",
55 GNUNET_i2s (peer),
56 (unsigned int) distance);
57}
58
59
60/**
61 * Function called if DV distance to a peer is changed.
62 *
63 * @param cls closure
64 * @param peer connected peer
65 * @param distance new distance to the peer
66 * @param network network used on first hop to peer
67 */
68static void
69change_cb (void *cls,
70 const struct GNUNET_PeerIdentity *peer,
71 uint32_t distance,
72 enum GNUNET_NetworkType network)
73{
74 fprintf (stderr, "Change: %s at %u\n",
75 GNUNET_i2s (peer),
76 (unsigned int) distance);
77}
78
79
80/**
81 * Function called if DV is no longer able to talk to a peer.
82 *
83 * @param cls closure
84 * @param peer peer that disconnected
85 */
86static void
87disconnect_cb (void *cls,
88 const struct GNUNET_PeerIdentity *peer)
89{
90 fprintf (stderr, "Disconnect: %s\n",
91 GNUNET_i2s (peer));
92}
93
94
95/**
96 * Function called if DV receives a message for this peer.
97 *
98 * @param cls closure
99 * @param sender sender of the message
100 * @param distance how far did the message travel
101 * @param msg actual message payload
102 */
103static void
104message_cb (void *cls,
105 const struct GNUNET_PeerIdentity *sender,
106 uint32_t distance,
107 const struct GNUNET_MessageHeader *msg)
108{
109 if (verbose)
110 fprintf (stderr, "Message: %s at %u sends %u bytes of type %u\n",
111 GNUNET_i2s (sender),
112 (unsigned int) distance,
113 (unsigned int) ntohs (msg->size),
114 (unsigned int) ntohs (msg->type));
115}
116
117
118/**
119 * Task run on shutdown.
120 *
121 * @param cls NULL
122 */
123static void
124shutdown_task (void *cls)
125{
126 GNUNET_DV_service_disconnect (sh);
127 sh = NULL;
128}
129
130
131/**
132 * Main function that will be run by the scheduler.
133 *
134 * @param cls closure
135 * @param args remaining command-line arguments
136 * @param cfgfile name of the configuration file used (for saving, can be NULL!)
137 * @param cfg configuration
138 */
139static void
140run (void *cls, char *const *args, const char *cfgfile,
141 const struct GNUNET_CONFIGURATION_Handle *cfg)
142{
143 sh = GNUNET_DV_service_connect (cfg, NULL,
144 &connect_cb,
145 &change_cb,
146 &disconnect_cb,
147 &message_cb);
148 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
149}
150
151
152/**
153 * The main function.
154 *
155 * @param argc number of arguments from the command line
156 * @param argv command line arguments
157 * @return 0 ok, 1 on error
158 */
159int
160main (int argc, char *const *argv)
161{
162 int res;
163
164 struct GNUNET_GETOPT_CommandLineOption options[] = {
165
166 GNUNET_GETOPT_option_verbose (&verbose),
167
168 GNUNET_GETOPT_OPTION_END
169 };
170
171 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
172 return 2;
173
174 res = GNUNET_PROGRAM_run (argc, argv, "gnunet-dv",
175 gettext_noop ("Print information about DV state"),
176 options, &run,
177 NULL);
178 GNUNET_free ((void *) argv);
179
180 if (GNUNET_OK != res)
181 return 1;
182 return 0;
183}
184
185/* end of gnunet-dv.c */
diff --git a/src/dv/gnunet-service-dv.c b/src/dv/gnunet-service-dv.c
deleted file mode 100644
index dd2ff9c12..000000000
--- a/src/dv/gnunet-service-dv.c
+++ /dev/null
@@ -1,2146 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013, 2016 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @file dv/gnunet-service-dv.c
23 * @brief the distance vector service, primarily handles gossip of nearby
24 * peers and sending/receiving DV messages from core and decapsulating
25 * them
26 *
27 * @author Christian Grothoff
28 * @author Nathan Evans
29 */
30#include "platform.h"
31#include "gnunet_util_lib.h"
32#include "gnunet_protocols.h"
33#include "gnunet_core_service.h"
34#include "gnunet_hello_lib.h"
35#include "gnunet_peerinfo_service.h"
36#include "gnunet_statistics_service.h"
37#include "gnunet_set_service.h"
38#include "gnunet_ats_service.h"
39#include "dv.h"
40#include <gcrypt.h>
41
42
43/**
44 * How often do we establish the consensu?
45 */
46#define GNUNET_DV_CONSENSUS_FREQUENCY GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MINUTES, 5)
47
48/**
49 * Maximum number of messages we queue per peer.
50 */
51#define MAX_QUEUE_SIZE 16
52
53/**
54 * Maximum number of messages we queue towards the clients/plugin.
55 */
56#define MAX_QUEUE_SIZE_PLUGIN 1024
57
58/**
59 * The default fisheye depth, from how many hops away will
60 * we keep peers?
61 */
62#define DEFAULT_FISHEYE_DEPTH 3
63
64/**
65 * How many hops is a direct neighbor away?
66 */
67#define DIRECT_NEIGHBOR_COST 1
68
69
70GNUNET_NETWORK_STRUCT_BEGIN
71
72/**
73 * Information about a peer DV can route to. These entries are what
74 * we use as the binary format to establish consensus to create our
75 * routing table and as the address format in the HELLOs.
76 */
77struct Target
78{
79
80 /**
81 * Identity of the peer we can reach.
82 */
83 struct GNUNET_PeerIdentity peer;
84
85 /**
86 * How many hops (1-3) is this peer away? in network byte order
87 */
88 uint32_t distance GNUNET_PACKED;
89
90};
91
92
93/**
94 * Message exchanged between DV services (via core), requesting a
95 * message to be routed.
96 */
97struct RouteMessage
98{
99 /**
100 * Type: #GNUNET_MESSAGE_TYPE_DV_ROUTE
101 */
102 struct GNUNET_MessageHeader header;
103
104 /**
105 * Expected (remaining) distance. Must be always smaller than
106 * #DEFAULT_FISHEYE_DEPTH, should be zero at the target. Must
107 * be decremented by one at each hop. Peers must not forward
108 * these messages further once the counter has reached zero.
109 */
110 uint32_t distance GNUNET_PACKED;
111
112 /**
113 * The (actual) target of the message (this peer, if distance is zero).
114 */
115 struct GNUNET_PeerIdentity target;
116
117 /**
118 * The (actual) sender of the message.
119 */
120 struct GNUNET_PeerIdentity sender;
121
122};
123
124GNUNET_NETWORK_STRUCT_END
125
126
127/**
128 * Information about a direct neighbor (core-level, excluding
129 * DV-links, only DV-enabled peers).
130 */
131struct DirectNeighbor
132{
133
134 /**
135 * Identity of the peer.
136 */
137 struct GNUNET_PeerIdentity peer;
138
139 /**
140 * Session ID we use whenever we create a set union with
141 * this neighbor; constructed from the XOR of our peer
142 * IDs and then salted with "DV-SALT" to avoid conflicts
143 * with other applications.
144 */
145 struct GNUNET_HashCode real_session_id;
146
147 /**
148 * Transmit handle to core service.
149 */
150 struct GNUNET_MQ_Handle *mq;
151
152 /**
153 * Routing table of the neighbor, NULL if not yet established.
154 * Keys are peer identities, values are 'struct Target' entries.
155 * Note that the distances in the targets are from the point-of-view
156 * of the peer, not from us!
157 */
158 struct GNUNET_CONTAINER_MultiPeerMap *neighbor_table;
159
160 /**
161 * Updated routing table of the neighbor, under construction,
162 * NULL if we are not currently building it.
163 * Keys are peer identities, values are 'struct Target' entries.
164 * Note that the distances in the targets are from the point-of-view
165 * of the other peer, not from us!
166 */
167 struct GNUNET_CONTAINER_MultiPeerMap *neighbor_table_consensus;
168
169 /**
170 * Our current (exposed) routing table as a set.
171 */
172 struct GNUNET_SET_Handle *my_set;
173
174 /**
175 * Handle for our current active set union operation.
176 */
177 struct GNUNET_SET_OperationHandle *set_op;
178
179 /**
180 * Handle used if we are listening for this peer, waiting for the
181 * other peer to initiate construction of the set union. NULL if
182 * we ar the initiating peer.
183 */
184 struct GNUNET_SET_ListenHandle *listen_handle;
185
186 /**
187 * ID of the task we use to (periodically) update our consensus
188 * with this peer. Used if we are the initiating peer.
189 */
190 struct GNUNET_SCHEDULER_Task *initiate_task;
191
192 /**
193 * At what offset are we, with respect to inserting our own routes
194 * into the consensus?
195 */
196 unsigned int consensus_insertion_offset;
197
198 /**
199 * At what distance are we, with respect to inserting our own routes
200 * into the consensus?
201 */
202 unsigned int consensus_insertion_distance;
203
204 /**
205 * Elements in consensus
206 */
207 unsigned int consensus_elements;
208
209 /**
210 * Direct one hop route
211 */
212 struct Route *direct_route;
213
214 /**
215 * Flag set within 'check_target_removed' to trigger full global route refresh.
216 */
217 int target_removed;
218
219 /**
220 * Our distance to this peer, 0 for unknown.
221 */
222 uint32_t distance;
223
224 /**
225 * The network this peer is in
226 */
227 enum GNUNET_NetworkType network;
228
229 /**
230 * Is this neighbor connected at the core level?
231 */
232 int connected;
233
234};
235
236
237/**
238 * A route includes information about the next hop,
239 * the target, and the ultimate distance to the
240 * target.
241 */
242struct Route
243{
244
245 /**
246 * Which peer do we need to forward the message to?
247 */
248 struct DirectNeighbor *next_hop;
249
250 /**
251 * What would be the target, and how far is it away?
252 */
253 struct Target target;
254
255 /**
256 * Offset of this target in the respective consensus set.
257 */
258 unsigned int set_offset;
259
260};
261
262
263/**
264 * Set of targets we bring to a consensus; all targets in a set have a
265 * distance equal to the sets distance (which is implied by the array
266 * index of the set).
267 */
268struct ConsensusSet
269{
270
271 /**
272 * Array of targets in the set, may include NULL entries if a
273 * neighbor has disconnected; the targets are allocated with the
274 * respective container (all_routes), not here.
275 */
276 struct Route **targets;
277
278 /**
279 * Size of the @e targets array.
280 */
281 unsigned int array_length;
282
283};
284
285
286/**
287 * Peermap of all of our neighbors; processing these usually requires
288 * first checking to see if the peer is core-connected and if the
289 * distance is 1, in which case they are direct neighbors.
290 */
291static struct GNUNET_CONTAINER_MultiPeerMap *direct_neighbors;
292
293/**
294 * Hashmap with all routes that we currently support; contains
295 * routing information for all peers from distance 2
296 * up to distance #DEFAULT_FISHEYE_DEPTH.
297 */
298static struct GNUNET_CONTAINER_MultiPeerMap *all_routes;
299
300/**
301 * Array of consensus sets we expose to the outside world. Sets
302 * are structured by the distance to the target.
303 */
304static struct ConsensusSet consensi[DEFAULT_FISHEYE_DEPTH];
305
306/**
307 * Handle to the core service api.
308 */
309static struct GNUNET_CORE_Handle *core_api;
310
311/**
312 * The identity of our peer.
313 */
314static struct GNUNET_PeerIdentity my_identity;
315
316/**
317 * The configuration for this service.
318 */
319static const struct GNUNET_CONFIGURATION_Handle *cfg;
320
321/**
322 * The client, the DV plugin connected to us (or an event monitor).
323 * Hopefully this client will never change, although if the plugin
324 * dies and returns for some reason it may happen.
325 */
326static struct GNUNET_NotificationContext *nc;
327
328/**
329 * Handle for the statistics service.
330 */
331static struct GNUNET_STATISTICS_Handle *stats;
332
333/**
334 * Handle to ATS service.
335 */
336static struct GNUNET_ATS_PerformanceHandle *ats;
337
338/**
339 * Task scheduled to refresh routes based on direct neighbours.
340 */
341static struct GNUNET_SCHEDULER_Task *rr_task;
342
343/**
344 * #GNUNET_YES if we are shutting down.
345 */
346static int in_shutdown;
347
348/**
349 * Start creating a new DV set union by initiating the connection.
350 *
351 * @param cls the 'struct DirectNeighbor' of the peer we're building
352 * a routing consensus with
353 */
354static void
355initiate_set_union (void *cls);
356
357
358/**
359 * Start creating a new DV set union construction, our neighbour has
360 * asked for it (callback for listening peer).
361 *
362 * @param cls the 'struct DirectNeighbor' of the peer we're building
363 * a routing consensus with
364 * @param other_peer the other peer
365 * @param context_msg message with application specific information from
366 * the other peer
367 * @param request request from the other peer, use GNUNET_SET_accept
368 * to accept it, otherwise the request will be refused
369 * Note that we don't use a return value here, as it is also
370 * necessary to specify the set we want to do the operation with,
371 * whith sometimes can be derived from the context message.
372 * Also necessary to specify the timeout.
373 */
374static void
375listen_set_union (void *cls,
376 const struct GNUNET_PeerIdentity *other_peer,
377 const struct GNUNET_MessageHeader *context_msg,
378 struct GNUNET_SET_Request *request);
379
380
381/**
382 * Forward a message from another peer to the plugin.
383 *
384 * @param message the message to send to the plugin
385 * @param origin the original sender of the message
386 * @param distance distance to the original sender of the message
387 */
388static void
389send_data_to_plugin (const struct GNUNET_MessageHeader *message,
390 const struct GNUNET_PeerIdentity *origin,
391 uint32_t distance)
392{
393 struct GNUNET_DV_ReceivedMessage *received_msg;
394 size_t size;
395
396 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
397 "Delivering message from peer `%s' at distance %u\n",
398 GNUNET_i2s (origin),
399 (unsigned int) distance);
400 size = sizeof (struct GNUNET_DV_ReceivedMessage) +
401 ntohs (message->size);
402 if (size >= GNUNET_MAX_MESSAGE_SIZE)
403 {
404 GNUNET_break (0); /* too big */
405 return;
406 }
407 received_msg = GNUNET_malloc (size);
408 received_msg->header.size = htons (size);
409 received_msg->header.type = htons (GNUNET_MESSAGE_TYPE_DV_RECV);
410 received_msg->distance = htonl (distance);
411 received_msg->sender = *origin;
412 GNUNET_memcpy (&received_msg[1], message, ntohs (message->size));
413 GNUNET_notification_context_broadcast (nc,
414 &received_msg->header,
415 GNUNET_YES);
416 GNUNET_free (received_msg);
417}
418
419
420/**
421 * Forward a control message to the plugin.
422 *
423 * @param message the message to send to the plugin
424 */
425static void
426send_control_to_plugin (const struct GNUNET_MessageHeader *message)
427{
428 GNUNET_notification_context_broadcast (nc,
429 message,
430 GNUNET_NO);
431}
432
433
434/**
435 * Send a DISTANCE_CHANGED message to the plugin.
436 *
437 * @param peer peer with a changed distance
438 * @param distance new distance to the peer
439 * @param network network used by the neighbor
440 */
441static void
442send_distance_change_to_plugin (const struct GNUNET_PeerIdentity *peer,
443 uint32_t distance,
444 enum GNUNET_NetworkType network)
445{
446 struct GNUNET_DV_DistanceUpdateMessage du_msg;
447
448 GNUNET_break (GNUNET_NT_UNSPECIFIED != network);
449 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
450 "Delivering DISTANCE_CHANGED for message about peer `%s'\n",
451 GNUNET_i2s (peer));
452 du_msg.header.size = htons (sizeof (du_msg));
453 du_msg.header.type = htons (GNUNET_MESSAGE_TYPE_DV_DISTANCE_CHANGED);
454 du_msg.distance = htonl (distance);
455 du_msg.peer = *peer;
456 du_msg.network = htonl ((uint32_t) network);
457 send_control_to_plugin (&du_msg.header);
458}
459
460
461/**
462 * Give a CONNECT message to the plugin.
463 *
464 * @param target peer that connected
465 * @param distance distance to the target
466 * @param network the network the next hop is located in
467 */
468static void
469send_connect_to_plugin (const struct GNUNET_PeerIdentity *target,
470 uint32_t distance,
471 enum GNUNET_NetworkType network)
472{
473 struct GNUNET_DV_ConnectMessage cm;
474
475 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
476 "Delivering CONNECT about peer %s with distance %u\n",
477 GNUNET_i2s (target), distance);
478 cm.header.size = htons (sizeof (cm));
479 cm.header.type = htons (GNUNET_MESSAGE_TYPE_DV_CONNECT);
480 cm.distance = htonl (distance);
481 cm.network = htonl ((uint32_t) network);
482 cm.peer = *target;
483 send_control_to_plugin (&cm.header);
484}
485
486
487/**
488 * Give a DISCONNECT message to the plugin.
489 *
490 * @param target peer that disconnected
491 */
492static void
493send_disconnect_to_plugin (const struct GNUNET_PeerIdentity *target)
494{
495 struct GNUNET_DV_DisconnectMessage dm;
496
497 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
498 "Delivering DISCONNECT about peer `%s'\n",
499 GNUNET_i2s (target));
500 dm.header.size = htons (sizeof (dm));
501 dm.header.type = htons (GNUNET_MESSAGE_TYPE_DV_DISCONNECT);
502 dm.reserved = htonl (0);
503 dm.peer = *target;
504 send_control_to_plugin (&dm.header);
505}
506
507
508/**
509 * Forward the given payload to the given target.
510 *
511 * @param target where to send the message
512 * @param distance distance to the @a sender
513 * @param sender original sender of the message
514 * @param actual_target ultimate recipient for the message
515 * @param payload payload of the message
516 */
517static void
518forward_payload (struct DirectNeighbor *target,
519 uint32_t distance,
520 const struct GNUNET_PeerIdentity *sender,
521 const struct GNUNET_PeerIdentity *actual_target,
522 const struct GNUNET_MessageHeader *payload)
523{
524 struct GNUNET_MQ_Envelope *env;
525 struct RouteMessage *rm;
526
527 if ( (GNUNET_MQ_get_length (target->mq) >= MAX_QUEUE_SIZE) &&
528 (0 != memcmp (sender,
529 &my_identity,
530 sizeof (struct GNUNET_PeerIdentity))) )
531 {
532 /* not _our_ client and queue is full, drop */
533 GNUNET_STATISTICS_update (stats,
534 "# messages dropped",
535 1,
536 GNUNET_NO);
537 return;
538 }
539 if (sizeof (struct RouteMessage) + ntohs (payload->size)
540 >= GNUNET_MAX_MESSAGE_SIZE)
541 {
542 GNUNET_break (0);
543 return;
544 }
545 env = GNUNET_MQ_msg_nested_mh (rm,
546 GNUNET_MESSAGE_TYPE_DV_ROUTE,
547 payload);
548 rm->distance = htonl (distance);
549 rm->target = *actual_target;
550 rm->sender = *sender;
551 GNUNET_MQ_send (target->mq,
552 env);
553}
554
555
556/**
557 * Find a free slot for storing a 'route' in the 'consensi'
558 * set at the given distance.
559 *
560 * @param distance distance to use for the set slot
561 */
562static unsigned int
563get_consensus_slot (uint32_t distance)
564{
565 struct ConsensusSet *cs;
566 unsigned int i;
567
568 GNUNET_assert (distance < DEFAULT_FISHEYE_DEPTH);
569 cs = &consensi[distance];
570 i = 0;
571 while ( (i < cs->array_length) &&
572 (NULL != cs->targets[i]) ) i++;
573 if (i == cs->array_length)
574 {
575 GNUNET_array_grow (cs->targets,
576 cs->array_length,
577 cs->array_length * 2 + 2);
578 }
579 return i;
580}
581
582
583/**
584 * Allocate a slot in the consensus set for a route.
585 *
586 * @param route route to initialize
587 * @param distance which consensus set to use
588 */
589static void
590allocate_route (struct Route *route,
591 uint32_t distance)
592{
593 unsigned int i;
594
595 if (distance >= DEFAULT_FISHEYE_DEPTH)
596 {
597 route->target.distance = htonl (distance);
598 route->set_offset = UINT_MAX; /* invalid slot */
599 return;
600 }
601 i = get_consensus_slot (distance);
602 route->set_offset = i;
603 consensi[distance].targets[i] = route;
604 route->target.distance = htonl (distance);
605}
606
607
608/**
609 * Release a slot in the consensus set for a route.
610 *
611 * @param route route to release the slot from
612 */
613static void
614release_route (struct Route *route)
615{
616 if (UINT_MAX == route->set_offset)
617 return;
618 GNUNET_assert (ntohl (route->target.distance) < DEFAULT_FISHEYE_DEPTH);
619 consensi[ntohl (route->target.distance)].targets[route->set_offset] = NULL;
620 route->set_offset = UINT_MAX; /* indicate invalid slot */
621}
622
623
624/**
625 * Move a route from one consensus set to another.
626 *
627 * @param route route to move
628 * @param new_distance new distance for the route (destination set)
629 */
630static void
631move_route (struct Route *route,
632 uint32_t new_distance)
633{
634 release_route (route);
635 allocate_route (route, new_distance);
636}
637
638
639/**
640 * Initialize this neighbors 'my_set' and when done give
641 * it to the pending set operation for execution.
642 *
643 * Add a single element to the set per call:
644 *
645 * If we reached the last element of a consensus element: increase distance
646 *
647 *
648 * @param cls the neighbor for which we are building the set
649 */
650static void
651build_set (void *cls)
652{
653 struct DirectNeighbor *neighbor = cls;
654 struct GNUNET_SET_Element element;
655 struct Target *target;
656 struct Route *route;
657
658 target = NULL;
659 /* skip over NULL entries */
660 while ( (DEFAULT_FISHEYE_DEPTH > neighbor->consensus_insertion_distance) &&
661 (consensi[neighbor->consensus_insertion_distance].array_length > neighbor->consensus_insertion_offset) &&
662 (NULL == consensi[neighbor->consensus_insertion_distance].targets[neighbor->consensus_insertion_offset]) )
663 neighbor->consensus_insertion_offset++;
664 while ( (DEFAULT_FISHEYE_DEPTH > neighbor->consensus_insertion_distance) &&
665 (consensi[neighbor->consensus_insertion_distance].array_length == neighbor->consensus_insertion_offset) )
666 {
667 /* If we reached the last element of a consensus array element: increase distance and start with next array */
668 neighbor->consensus_insertion_offset = 0;
669 neighbor->consensus_insertion_distance++;
670 /* skip over NULL entries */
671 while ( (DEFAULT_FISHEYE_DEPTH > neighbor->consensus_insertion_distance) &&
672 (consensi[neighbor->consensus_insertion_distance].array_length > neighbor->consensus_insertion_offset) &&
673 (NULL == consensi[neighbor->consensus_insertion_distance].targets[neighbor->consensus_insertion_offset]) )
674 neighbor->consensus_insertion_offset++;
675 }
676 if (DEFAULT_FISHEYE_DEPTH == neighbor->consensus_insertion_distance)
677 {
678 /* we have added all elements to the set, run the operation */
679 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
680 "Finished building my SET for peer `%s' with %u elements, committing\n",
681 GNUNET_i2s (&neighbor->peer),
682 neighbor->consensus_elements);
683 GNUNET_SET_commit (neighbor->set_op,
684 neighbor->my_set);
685 GNUNET_SET_destroy (neighbor->my_set);
686 neighbor->my_set = NULL;
687 return;
688 }
689
690 route = consensi[neighbor->consensus_insertion_distance].targets[neighbor->consensus_insertion_offset];
691 GNUNET_assert (NULL != route);
692 target = &route->target;
693 GNUNET_assert (ntohl (target->distance) < DEFAULT_FISHEYE_DEPTH);
694 element.size = sizeof (struct Target);
695 element.element_type = htons (0);
696 element.data = target;
697
698 /* Find next non-NULL entry */
699 neighbor->consensus_insertion_offset++;
700 if ( (0 != memcmp (&target->peer,
701 &my_identity,
702 sizeof (my_identity))) &&
703 (0 != memcmp (&target->peer,
704 &neighbor->peer,
705 sizeof (struct GNUNET_PeerIdentity))) )
706 {
707 /* Add target if it is not the neighbor or this peer */
708 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
709 "Adding peer `%s' with distance %u to SET\n",
710 GNUNET_i2s (&target->peer),
711 ntohl (target->distance) + 1);
712 GNUNET_SET_add_element (neighbor->my_set,
713 &element,
714 &build_set, neighbor);
715 neighbor->consensus_elements++;
716 }
717 else
718 build_set (neighbor);
719}
720
721
722/**
723 * A peer is now connected to us at distance 1. Initiate DV exchange.
724 *
725 * @param neighbor entry for the neighbor at distance 1
726 */
727static void
728handle_direct_connect (struct DirectNeighbor *neighbor)
729{
730 struct Route *route;
731 struct GNUNET_HashCode h1;
732 struct GNUNET_HashCode h2;
733 struct GNUNET_HashCode session_id;
734
735 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
736 "Direct connection to %s established, routing table exchange begins.\n",
737 GNUNET_i2s (&neighbor->peer));
738 GNUNET_STATISTICS_update (stats,
739 "# peers connected (1-hop)",
740 1, GNUNET_NO);
741 route = GNUNET_CONTAINER_multipeermap_get (all_routes,
742 &neighbor->peer);
743 if (NULL != route)
744 {
745 GNUNET_assert (GNUNET_YES ==
746 GNUNET_CONTAINER_multipeermap_remove (all_routes,
747 &neighbor->peer,
748 route));
749 send_disconnect_to_plugin (&neighbor->peer);
750 release_route (route);
751 GNUNET_free (route);
752 }
753
754 neighbor->direct_route = GNUNET_new (struct Route);
755 neighbor->direct_route->next_hop = neighbor;
756 neighbor->direct_route->target.peer = neighbor->peer;
757 allocate_route (neighbor->direct_route, DIRECT_NEIGHBOR_COST);
758
759 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
760 "Adding direct route to %s\n",
761 GNUNET_i2s (&neighbor->direct_route->target.peer));
762
763
764 /* construct session ID seed as XOR of both peer's identities */
765 GNUNET_CRYPTO_hash (&my_identity,
766 sizeof (my_identity),
767 &h1);
768 GNUNET_CRYPTO_hash (&neighbor->peer,
769 sizeof (struct GNUNET_PeerIdentity),
770 &h2);
771 GNUNET_CRYPTO_hash_xor (&h1,
772 &h2,
773 &session_id);
774 /* make sure session ID is unique across applications by salting it with 'DV' */
775 GNUNET_CRYPTO_hkdf (&neighbor->real_session_id, sizeof (struct GNUNET_HashCode),
776 GCRY_MD_SHA512, GCRY_MD_SHA256,
777 "DV-SALT", 2,
778 &session_id, sizeof (session_id),
779 NULL, 0);
780 if (0 < memcmp (&neighbor->peer,
781 &my_identity,
782 sizeof (struct GNUNET_PeerIdentity)))
783 {
784 if (NULL != neighbor->listen_handle)
785 {
786 GNUNET_break (0);
787 }
788 else
789 neighbor->initiate_task = GNUNET_SCHEDULER_add_now (&initiate_set_union,
790 neighbor);
791 }
792 else
793 {
794 if (NULL != neighbor->listen_handle)
795 {
796 GNUNET_break (0);
797 }
798 else
799 {
800 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
801 "Starting SET listen operation with peer `%s'\n",
802 GNUNET_i2s (&neighbor->peer));
803 neighbor->listen_handle = GNUNET_SET_listen (cfg,
804 GNUNET_SET_OPERATION_UNION,
805 &neighbor->real_session_id,
806 &listen_set_union,
807 neighbor);
808 }
809 }
810}
811
812
813/**
814 * Method called whenever a peer connects.
815 *
816 * @param cls closure
817 * @param peer peer identity this notification is about
818 * @param mq message queue for sending data to @a peer
819 * @return our `struct DirectNeighbour` for this peer
820 */
821static void *
822handle_core_connect (void *cls,
823 const struct GNUNET_PeerIdentity *peer,
824 struct GNUNET_MQ_Handle *mq)
825{
826 struct DirectNeighbor *neighbor;
827
828 /* Check for connect to self message */
829 if (0 == memcmp (&my_identity,
830 peer,
831 sizeof (struct GNUNET_PeerIdentity)))
832 return NULL;
833 /* check if entry exists */
834 neighbor = GNUNET_CONTAINER_multipeermap_get (direct_neighbors,
835 peer);
836 if (NULL != neighbor)
837 {
838 GNUNET_break (GNUNET_NT_UNSPECIFIED != neighbor->network);
839 GNUNET_break (GNUNET_YES != neighbor->connected);
840 neighbor->connected = GNUNET_YES;
841 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
842 "Core connected to %s (distance %u)\n",
843 GNUNET_i2s (peer),
844 (unsigned int) neighbor->distance);
845 if (DIRECT_NEIGHBOR_COST != neighbor->distance)
846 return NULL;
847 handle_direct_connect (neighbor);
848 return NULL;
849 }
850 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
851 "Core connected to %s (distance unknown)\n",
852 GNUNET_i2s (peer));
853 neighbor = GNUNET_new (struct DirectNeighbor);
854 neighbor->peer = *peer;
855 GNUNET_assert (GNUNET_YES ==
856 GNUNET_CONTAINER_multipeermap_put (direct_neighbors,
857 &neighbor->peer,
858 neighbor,
859 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
860 neighbor->connected = GNUNET_YES;
861 neighbor->distance = 0; /* unknown */
862 neighbor->network = GNUNET_NT_UNSPECIFIED;
863 return neighbor;
864}
865
866
867/**
868 * Called for each 'target' in a neighbor table to free the associated memory.
869 *
870 * @param cls NULL
871 * @param key key of the value
872 * @param value value to free
873 * @return #GNUNET_OK to continue to iterate
874 */
875static int
876free_targets (void *cls,
877 const struct GNUNET_PeerIdentity *key,
878 void *value)
879{
880 GNUNET_free (value);
881 return GNUNET_OK;
882}
883
884
885/**
886 * Add a new route to the given @a target via the given @a neighbor.
887 *
888 * @param target the target of the route
889 * @param neighbor the next hop for communicating with the @a target
890 */
891static void
892add_new_route (struct Target *target,
893 struct DirectNeighbor *neighbor)
894{
895 struct Route *route;
896
897 route = GNUNET_new (struct Route);
898 route->next_hop = neighbor;
899 route->target.peer = target->peer;
900 allocate_route (route, ntohl (target->distance) + 1);
901 GNUNET_assert (GNUNET_YES ==
902 GNUNET_CONTAINER_multipeermap_put (all_routes,
903 &route->target.peer,
904 route,
905 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
906 send_connect_to_plugin (&route->target.peer,
907 ntohl (route->target.distance),
908 neighbor->network);
909}
910
911
912/**
913 * Multipeerhmap iterator for checking if a given route is
914 * (now) useful to this peer.
915 *
916 * @param cls the direct neighbor for the given route
917 * @param key key value stored under
918 * @param value a 'struct Target' that may or may not be useful; not that
919 * the distance in 'target' does not include the first hop yet
920 * @return #GNUNET_YES to continue iteration, #GNUNET_NO to stop
921 */
922static int
923check_possible_route (void *cls,
924 const struct GNUNET_PeerIdentity *key,
925 void *value)
926{
927 struct DirectNeighbor *neighbor = cls;
928 struct Target *target = value;
929 struct Route *route;
930
931 if (GNUNET_YES ==
932 GNUNET_CONTAINER_multipeermap_contains (direct_neighbors,
933 key))
934 return GNUNET_YES; /* direct route, do not care about alternatives */
935 route = GNUNET_CONTAINER_multipeermap_get (all_routes,
936 key);
937 if (NULL != route)
938 {
939 /* we have an existing route, check how it compares with going via 'target' */
940 if (ntohl (route->target.distance) > ntohl (target->distance) + 1)
941 {
942 /* via 'target' is cheaper than the existing route; switch to alternative route! */
943 move_route (route, ntohl (target->distance) + 1);
944 route->next_hop = neighbor;
945 send_distance_change_to_plugin (&target->peer,
946 ntohl (target->distance) + 1,
947 neighbor->network);
948 }
949 return GNUNET_YES; /* got a route to this target already */
950 }
951 if (ntohl (target->distance) >= DEFAULT_FISHEYE_DEPTH)
952 return GNUNET_YES; /* distance is too large to be interesting */
953 add_new_route (target, neighbor);
954 return GNUNET_YES;
955}
956
957
958/**
959 * Multipeermap iterator for finding routes that were previously
960 * "hidden" due to a better route (called after a disconnect event).
961 *
962 * @param cls NULL
963 * @param key peer identity of the given direct neighbor
964 * @param value a `struct DirectNeighbor` to check for additional routes
965 * @return #GNUNET_YES to continue iteration
966 */
967static int
968refresh_routes (void *cls,
969 const struct GNUNET_PeerIdentity *key,
970 void *value)
971{
972 struct DirectNeighbor *neighbor = value;
973
974 if ( (GNUNET_YES != neighbor->connected) ||
975 (DIRECT_NEIGHBOR_COST != neighbor->distance) )
976 return GNUNET_YES;
977 if (NULL != neighbor->neighbor_table)
978 GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table,
979 &check_possible_route,
980 neighbor);
981 return GNUNET_YES;
982}
983
984
985/**
986 * Task to run #refresh_routes() on all direct neighbours.
987 *
988 * @param cls NULL
989 */
990static void
991refresh_routes_task (void *cls)
992{
993 rr_task = NULL;
994 GNUNET_CONTAINER_multipeermap_iterate (direct_neighbors,
995 &refresh_routes,
996 NULL);
997}
998
999
1000/**
1001 * Asynchronously run #refresh_routes() at the next opportunity
1002 * on all direct neighbours.
1003 */
1004static void
1005schedule_refresh_routes ()
1006{
1007 if (NULL == rr_task)
1008 rr_task = GNUNET_SCHEDULER_add_now (&refresh_routes_task,
1009 NULL);
1010}
1011
1012
1013/**
1014 * Multipeermap iterator for freeing routes that go via a particular
1015 * neighbor that disconnected and is thus no longer available.
1016 *
1017 * @param cls the direct neighbor that is now unavailable
1018 * @param key key value stored under
1019 * @param value a `struct Route` that may or may not go via neighbor
1020 *
1021 * @return #GNUNET_YES to continue iteration, #GNUNET_NO to stop
1022 */
1023static int
1024cull_routes (void *cls,
1025 const struct GNUNET_PeerIdentity *key,
1026 void *value)
1027{
1028 struct DirectNeighbor *neighbor = cls;
1029 struct Route *route = value;
1030
1031 if (route->next_hop != neighbor)
1032 return GNUNET_YES; /* not affected */
1033 GNUNET_assert (GNUNET_YES ==
1034 GNUNET_CONTAINER_multipeermap_remove (all_routes, key, value));
1035 release_route (route);
1036 send_disconnect_to_plugin (&route->target.peer);
1037 GNUNET_free (route);
1038 return GNUNET_YES;
1039}
1040
1041
1042/**
1043 * Handle the case that a direct connection to a peer is
1044 * disrupted. Remove all routes via that peer and
1045 * stop the consensus with it.
1046 *
1047 * @param neighbor peer that was disconnected (or at least is no
1048 * longer at distance 1)
1049 */
1050static void
1051handle_direct_disconnect (struct DirectNeighbor *neighbor)
1052{
1053 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1054 "Culling routes via %s due to direct disconnect\n",
1055 GNUNET_i2s (&neighbor->peer));
1056 GNUNET_CONTAINER_multipeermap_iterate (all_routes,
1057 &cull_routes,
1058 neighbor);
1059 if (NULL != neighbor->direct_route)
1060 {
1061 release_route (neighbor->direct_route);
1062 GNUNET_free (neighbor->direct_route);
1063 neighbor->direct_route = NULL;
1064 }
1065 if (NULL != neighbor->neighbor_table_consensus)
1066 {
1067 GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table_consensus,
1068 &free_targets,
1069 NULL);
1070 GNUNET_CONTAINER_multipeermap_destroy (neighbor->neighbor_table_consensus);
1071 neighbor->neighbor_table_consensus = NULL;
1072 }
1073 if (NULL != neighbor->neighbor_table)
1074 {
1075 GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table,
1076 &free_targets,
1077 NULL);
1078 GNUNET_CONTAINER_multipeermap_destroy (neighbor->neighbor_table);
1079 neighbor->neighbor_table = NULL;
1080 }
1081 if (NULL != neighbor->set_op)
1082 {
1083 GNUNET_SET_operation_cancel (neighbor->set_op);
1084 neighbor->set_op = NULL;
1085 }
1086 if (NULL != neighbor->my_set)
1087 {
1088 GNUNET_SET_destroy (neighbor->my_set);
1089 neighbor->my_set = NULL;
1090 }
1091 if (NULL != neighbor->listen_handle)
1092 {
1093 GNUNET_SET_listen_cancel (neighbor->listen_handle);
1094 neighbor->listen_handle = NULL;
1095 }
1096 if (NULL != neighbor->initiate_task)
1097 {
1098 GNUNET_SCHEDULER_cancel (neighbor->initiate_task);
1099 neighbor->initiate_task = NULL;
1100 }
1101}
1102
1103
1104/**
1105 * Function that is called with QoS information about an address; used
1106 * to update our current distance to another peer.
1107 *
1108 * @param cls closure
1109 * @param address the address
1110 * @param active #GNUNET_YES if this address is actively used
1111 * to maintain a connection to a peer;
1112 * #GNUNET_NO if the address is not actively used;
1113 * #GNUNET_SYSERR if this address is no longer available for ATS
1114 * @param bandwidth_out assigned outbound bandwidth for the connection
1115 * @param bandwidth_in assigned inbound bandwidth for the connection
1116 * @param prop performance data for the address (as far as known)
1117 */
1118static void
1119handle_ats_update (void *cls,
1120 const struct GNUNET_HELLO_Address *address,
1121 int active,
1122 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
1123 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
1124 const struct GNUNET_ATS_Properties *prop)
1125{
1126 struct DirectNeighbor *neighbor;
1127 uint32_t distance;
1128 enum GNUNET_NetworkType network;
1129
1130 if (NULL == address)
1131 {
1132 /* ATS service temporarily disconnected */
1133 return;
1134 }
1135
1136 if (GNUNET_YES != active)
1137 {
1138 // FIXME: handle disconnect/inactive case too!
1139 return;
1140 }
1141 distance = prop->distance;
1142 network = prop->scope;
1143 GNUNET_break (GNUNET_NT_UNSPECIFIED != network);
1144 /* check if entry exists */
1145 neighbor = GNUNET_CONTAINER_multipeermap_get (direct_neighbors,
1146 &address->peer);
1147 if (NULL != neighbor)
1148 {
1149 neighbor->network = network;
1150 if (neighbor->distance == distance)
1151 return; /* nothing new to see here, move along */
1152 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1153 "ATS says distance to %s is now %u\n",
1154 GNUNET_i2s (&address->peer),
1155 (unsigned int) distance);
1156 if ( (DIRECT_NEIGHBOR_COST == neighbor->distance) &&
1157 (DIRECT_NEIGHBOR_COST == distance) )
1158 return; /* no change */
1159 if (DIRECT_NEIGHBOR_COST == neighbor->distance)
1160 {
1161 neighbor->distance = distance;
1162 GNUNET_STATISTICS_update (stats,
1163 "# peers connected (1-hop)",
1164 -1, GNUNET_NO);
1165 handle_direct_disconnect (neighbor);
1166 schedule_refresh_routes ();
1167 return;
1168 }
1169 neighbor->distance = distance;
1170 if (DIRECT_NEIGHBOR_COST != neighbor->distance)
1171 return;
1172 if (GNUNET_YES != neighbor->connected)
1173 return;
1174 handle_direct_connect (neighbor);
1175 return;
1176 }
1177 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1178 "ATS says distance to %s is now %u\n",
1179 GNUNET_i2s (&address->peer),
1180 (unsigned int) distance);
1181 neighbor = GNUNET_new (struct DirectNeighbor);
1182 neighbor->peer = address->peer;
1183 GNUNET_assert (GNUNET_YES ==
1184 GNUNET_CONTAINER_multipeermap_put (direct_neighbors,
1185 &neighbor->peer,
1186 neighbor,
1187 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
1188 neighbor->connected = GNUNET_NO; /* not yet */
1189 neighbor->distance = distance;
1190 neighbor->network = network;
1191}
1192
1193
1194/**
1195 * Check if a target was removed from the set of the other peer; if so,
1196 * if we also used it for our route, we need to remove it from our
1197 * 'all_routes' set (and later check if an alternative path now exists).
1198 *
1199 * @param cls the `struct DirectNeighbor`
1200 * @param key peer identity for the target
1201 * @param value a `struct Target` previously reachable via the given neighbor
1202 */
1203static int
1204check_target_removed (void *cls,
1205 const struct GNUNET_PeerIdentity *key,
1206 void *value)
1207{
1208 struct DirectNeighbor *neighbor = cls;
1209 struct Target *new_target;
1210 struct Route *current_route;
1211
1212 new_target = GNUNET_CONTAINER_multipeermap_get (neighbor->neighbor_table_consensus,
1213 key);
1214 current_route = GNUNET_CONTAINER_multipeermap_get (all_routes,
1215 key);
1216 if (NULL != new_target)
1217 {
1218 /* target was in old set, is in new set */
1219 if ( (NULL != current_route) &&
1220 (current_route->next_hop == neighbor) &&
1221 (current_route->target.distance != new_target->distance) )
1222 {
1223 /* need to recalculate routes due to distance change */
1224 neighbor->target_removed = GNUNET_YES;
1225 }
1226 return GNUNET_OK;
1227 }
1228 /* target was revoked, check if it was used */
1229 if ( (NULL == current_route) ||
1230 (current_route->next_hop != neighbor) )
1231 {
1232 /* didn't matter, wasn't used */
1233 return GNUNET_OK;
1234 }
1235 /* remove existing route */
1236 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1237 "Lost route to %s\n",
1238 GNUNET_i2s (&current_route->target.peer));
1239 GNUNET_assert (GNUNET_YES ==
1240 GNUNET_CONTAINER_multipeermap_remove (all_routes, key, current_route));
1241 send_disconnect_to_plugin (&current_route->target.peer);
1242 release_route (current_route);
1243 GNUNET_free (current_route);
1244 neighbor->target_removed = GNUNET_YES;
1245 return GNUNET_OK;
1246}
1247
1248
1249/**
1250 * Check if a target was added to the set of the other peer; if it
1251 * was added or impoves the existing route, do the needed updates.
1252 *
1253 * @param cls the `struct DirectNeighbor`
1254 * @param key peer identity for the target
1255 * @param value a `struct Target` now reachable via the given neighbor
1256 */
1257static int
1258check_target_added (void *cls,
1259 const struct GNUNET_PeerIdentity *key,
1260 void *value)
1261{
1262 struct DirectNeighbor *neighbor = cls;
1263 struct Target *target = value;
1264 struct Route *current_route;
1265
1266 /* target was revoked, check if it was used */
1267 current_route = GNUNET_CONTAINER_multipeermap_get (all_routes,
1268 key);
1269 if (NULL != current_route)
1270 {
1271 /* route exists */
1272 if (current_route->next_hop == neighbor)
1273 {
1274 /* we had the same route before, no change in target */
1275 if (ntohl (target->distance) + 1 != ntohl (current_route->target.distance))
1276 {
1277 /* but distance changed! */
1278 if (ntohl (target->distance) + 1 > DEFAULT_FISHEYE_DEPTH)
1279 {
1280 /* distance increased beyond what is allowed, kill route */
1281 GNUNET_assert (GNUNET_YES ==
1282 GNUNET_CONTAINER_multipeermap_remove (all_routes,
1283 key,
1284 current_route));
1285 send_disconnect_to_plugin (key);
1286 release_route (current_route);
1287 GNUNET_free (current_route);
1288 }
1289 else
1290 {
1291 /* distance decreased, update route */
1292 move_route (current_route,
1293 ntohl (target->distance) + 1);
1294 send_distance_change_to_plugin (&target->peer,
1295 ntohl (target->distance) + 1,
1296 neighbor->network);
1297 }
1298 }
1299 return GNUNET_OK;
1300 }
1301 if (ntohl (current_route->target.distance) <= ntohl (target->distance) + 1)
1302 {
1303 /* alternative, shorter route exists, ignore */
1304 return GNUNET_OK;
1305 }
1306 /* new route is better than the existing one, take over! */
1307 /* NOTE: minor security issue: malicious peers may advertise
1308 very short routes to take over longer paths; as we don't
1309 check that the shorter routes actually work, a malicious
1310 direct neighbor can use this to DoS our long routes */
1311
1312 move_route (current_route, ntohl (target->distance) + 1);
1313 current_route->next_hop = neighbor;
1314 send_distance_change_to_plugin (&target->peer,
1315 ntohl (target->distance) + 1,
1316 neighbor->network);
1317 return GNUNET_OK;
1318 }
1319 /* new route */
1320 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1321 "Discovered new route to %s using %u hops\n",
1322 GNUNET_i2s (&target->peer),
1323 (unsigned int) (ntohl (target->distance) + 1));
1324 current_route = GNUNET_new (struct Route);
1325 current_route->next_hop = neighbor;
1326 current_route->target.peer = target->peer;
1327 allocate_route (current_route, ntohl (target->distance) + 1);
1328 GNUNET_assert (GNUNET_YES ==
1329 GNUNET_CONTAINER_multipeermap_put (all_routes,
1330 &current_route->target.peer,
1331 current_route,
1332 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
1333
1334 send_connect_to_plugin (&current_route->target.peer,
1335 ntohl (current_route->target.distance),
1336 neighbor->network);
1337 return GNUNET_OK;
1338}
1339
1340
1341/**
1342 * Callback for set operation results. Called for each element
1343 * in the result set.
1344 * We have learned a new route from the other peer. Add it to the
1345 * route set we're building.
1346 *
1347 * @param cls the `struct DirectNeighbor` we're building the consensus with
1348 * @param element a result element, only valid if status is #GNUNET_SET_STATUS_OK
1349 * @param current_size current set size
1350 * @param status see `enum GNUNET_SET_Status`
1351 */
1352static void
1353handle_set_union_result (void *cls,
1354 const struct GNUNET_SET_Element *element,
1355 uint64_t current_size,
1356 enum GNUNET_SET_Status status)
1357{
1358 struct DirectNeighbor *neighbor = cls;
1359 struct DirectNeighbor *dn;
1360 struct Target *target;
1361 const struct Target *ctarget;
1362 char *status_str;
1363
1364 switch (status)
1365 {
1366 case GNUNET_SET_STATUS_OK:
1367 status_str = "GNUNET_SET_STATUS_OK";
1368 break;
1369 case GNUNET_SET_STATUS_FAILURE:
1370 status_str = "GNUNET_SET_STATUS_FAILURE";
1371 break;
1372 case GNUNET_SET_STATUS_HALF_DONE:
1373 status_str = "GNUNET_SET_STATUS_HALF_DONE";
1374 break;
1375 case GNUNET_SET_STATUS_DONE:
1376 status_str = "GNUNET_SET_STATUS_DONE";
1377 break;
1378 default:
1379 status_str = "UNDEFINED";
1380 break;
1381 }
1382
1383 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1384 "Got SET union result: %s\n",
1385 status_str);
1386 switch (status)
1387 {
1388 case GNUNET_SET_STATUS_OK:
1389 if (sizeof (struct Target) != element->size)
1390 {
1391 GNUNET_break_op (0);
1392 return;
1393 }
1394 ctarget = element->data;
1395 if ( (NULL !=
1396 (dn = GNUNET_CONTAINER_multipeermap_get (direct_neighbors,
1397 &ctarget->peer))) &&
1398 (DIRECT_NEIGHBOR_COST == dn->distance) )
1399 {
1400 /* this is a direct neighbor of ours, we do not care about routes
1401 to this peer */
1402 return;
1403 }
1404 target = GNUNET_new (struct Target);
1405 GNUNET_memcpy (target, element->data, sizeof (struct Target));
1406 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1407 "Received information about peer `%s' with distance %u from SET\n",
1408 GNUNET_i2s (&target->peer),
1409 ntohl (target->distance) + 1);
1410
1411 if (NULL == neighbor->neighbor_table_consensus)
1412 neighbor->neighbor_table_consensus
1413 = GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
1414 if (GNUNET_YES !=
1415 GNUNET_CONTAINER_multipeermap_put (neighbor->neighbor_table_consensus,
1416 &target->peer,
1417 target,
1418 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
1419 {
1420 GNUNET_break_op (0);
1421 GNUNET_free (target);
1422 }
1423 break;
1424 case GNUNET_SET_STATUS_FAILURE:
1425 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1426 "Failed to establish DV union, will try again later\n");
1427 neighbor->set_op = NULL;
1428 if (NULL != neighbor->neighbor_table_consensus)
1429 {
1430 GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table_consensus,
1431 &free_targets,
1432 NULL);
1433 GNUNET_CONTAINER_multipeermap_destroy (neighbor->neighbor_table_consensus);
1434 neighbor->neighbor_table_consensus = NULL;
1435 }
1436 if (0 < memcmp (&neighbor->peer,
1437 &my_identity,
1438 sizeof (struct GNUNET_PeerIdentity)))
1439 neighbor->initiate_task = GNUNET_SCHEDULER_add_delayed (GNUNET_DV_CONSENSUS_FREQUENCY,
1440 &initiate_set_union,
1441 neighbor);
1442 break;
1443 case GNUNET_SET_STATUS_HALF_DONE:
1444 break;
1445 case GNUNET_SET_STATUS_DONE:
1446 /* we got all of our updates; integrate routing table! */
1447 neighbor->target_removed = GNUNET_NO;
1448 if (NULL == neighbor->neighbor_table_consensus)
1449 neighbor->neighbor_table_consensus = GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
1450 if (NULL != neighbor->neighbor_table)
1451 GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table,
1452 &check_target_removed,
1453 neighbor);
1454 if (GNUNET_YES == neighbor->target_removed)
1455 {
1456 /* check if we got an alternative for the removed routes */
1457 schedule_refresh_routes ();
1458 }
1459 /* add targets that appeared (and check for improved routes) */
1460 GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table_consensus,
1461 &check_target_added,
1462 neighbor);
1463 if (NULL != neighbor->neighbor_table)
1464 {
1465 GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table,
1466 &free_targets,
1467 NULL);
1468 GNUNET_CONTAINER_multipeermap_destroy (neighbor->neighbor_table);
1469 neighbor->neighbor_table = NULL;
1470 }
1471 neighbor->neighbor_table = neighbor->neighbor_table_consensus;
1472 neighbor->neighbor_table_consensus = NULL;
1473
1474 /* operation done, schedule next run! */
1475 neighbor->set_op = NULL;
1476 if (0 < memcmp (&neighbor->peer,
1477 &my_identity,
1478 sizeof (struct GNUNET_PeerIdentity)))
1479 neighbor->initiate_task = GNUNET_SCHEDULER_add_delayed (GNUNET_DV_CONSENSUS_FREQUENCY,
1480 &initiate_set_union,
1481 neighbor);
1482 break;
1483 default:
1484 GNUNET_break (0);
1485 return;
1486 }
1487}
1488
1489
1490/**
1491 * Start creating a new DV set union construction, our neighbour has
1492 * asked for it (callback for listening peer).
1493 *
1494 * @param cls the 'struct DirectNeighbor' of the peer we're building
1495 * a routing consensus with
1496 * @param other_peer the other peer
1497 * @param context_msg message with application specific information from
1498 * the other peer
1499 * @param request request from the other peer, use GNUNET_SET_accept
1500 * to accept it, otherwise the request will be refused
1501 * Note that we don't use a return value here, as it is also
1502 * necessary to specify the set we want to do the operation with,
1503 * whith sometimes can be derived from the context message.
1504 * Also necessary to specify the timeout.
1505 */
1506static void
1507listen_set_union (void *cls,
1508 const struct GNUNET_PeerIdentity *other_peer,
1509 const struct GNUNET_MessageHeader *context_msg,
1510 struct GNUNET_SET_Request *request)
1511{
1512 struct DirectNeighbor *neighbor = cls;
1513
1514 if (NULL == request)
1515 return; /* why??? */
1516 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1517 "Starting to create consensus with %s\n",
1518 GNUNET_i2s (&neighbor->peer));
1519 if (NULL != neighbor->set_op)
1520 {
1521 GNUNET_SET_operation_cancel (neighbor->set_op);
1522 neighbor->set_op = NULL;
1523 }
1524 if (NULL != neighbor->my_set)
1525 {
1526 GNUNET_SET_destroy (neighbor->my_set);
1527 neighbor->my_set = NULL;
1528 }
1529 neighbor->my_set = GNUNET_SET_create (cfg,
1530 GNUNET_SET_OPERATION_UNION);
1531 neighbor->set_op = GNUNET_SET_accept (request,
1532 GNUNET_SET_RESULT_ADDED,
1533 (struct GNUNET_SET_Option[]) {{ 0 }},
1534 &handle_set_union_result,
1535 neighbor);
1536 neighbor->consensus_insertion_offset = 0;
1537 neighbor->consensus_insertion_distance = 0;
1538 neighbor->consensus_elements = 0;
1539 build_set (neighbor);
1540}
1541
1542
1543/**
1544 * Start creating a new DV set union by initiating the connection.
1545 *
1546 * @param cls the `struct DirectNeighbor *` of the peer we're building
1547 * a routing consensus with
1548 */
1549static void
1550initiate_set_union (void *cls)
1551{
1552 struct DirectNeighbor *neighbor = cls;
1553
1554 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1555 "Initiating SET union with peer `%s'\n",
1556 GNUNET_i2s (&neighbor->peer));
1557 neighbor->initiate_task = NULL;
1558 neighbor->my_set = GNUNET_SET_create (cfg,
1559 GNUNET_SET_OPERATION_UNION);
1560 neighbor->set_op = GNUNET_SET_prepare (&neighbor->peer,
1561 &neighbor->real_session_id,
1562 NULL,
1563 GNUNET_SET_RESULT_ADDED,
1564 (struct GNUNET_SET_Option[]) {{ 0 }},
1565 &handle_set_union_result,
1566 neighbor);
1567 neighbor->consensus_insertion_offset = 0;
1568 neighbor->consensus_insertion_distance = 0;
1569 neighbor->consensus_elements = 0;
1570 build_set (neighbor);
1571}
1572
1573
1574/**
1575 * Check that @a rm is well-formed.
1576 *
1577 * @param cls closure
1578 * @param rm the message
1579 * @return #GNUNET_OK if @a rm is well-formed.
1580 */
1581static int
1582check_dv_route_message (void *cls,
1583 const struct RouteMessage *rm)
1584{
1585 const struct GNUNET_MessageHeader *payload;
1586
1587 if (ntohs (rm->header.size) < sizeof (struct RouteMessage) + sizeof (struct GNUNET_MessageHeader))
1588 {
1589 GNUNET_break_op (0);
1590 return GNUNET_SYSERR;
1591 }
1592 payload = (const struct GNUNET_MessageHeader *) &rm[1];
1593 if (ntohs (rm->header.size) != sizeof (struct RouteMessage) + ntohs (payload->size))
1594 {
1595 GNUNET_break_op (0);
1596 return GNUNET_SYSERR;
1597 }
1598 return GNUNET_OK;
1599}
1600
1601
1602/**
1603 * Core handler for DV data messages. Whatever this message
1604 * contains all we really have to do is rip it out of its
1605 * DV layering and give it to our pal the DV plugin to report
1606 * in with.
1607 *
1608 * @param cls closure
1609 * @param rm the message
1610 */
1611static void
1612handle_dv_route_message (void *cls,
1613 const struct RouteMessage *rm)
1614{
1615 struct DirectNeighbor *neighbor = cls;
1616 const struct GNUNET_MessageHeader *payload;
1617 struct Route *route;
1618 struct DirectNeighbor *nneighbor;
1619 struct DirectNeighbor *dn;
1620 struct Target *target;
1621 uint32_t distance;
1622 char me[5];
1623 char src[5];
1624 char prev[5];
1625 char dst[5];
1626
1627 distance = ntohl (rm->distance);
1628 payload = (const struct GNUNET_MessageHeader *) &rm[1];
1629 strncpy (prev, GNUNET_i2s (&neighbor->peer), 4);
1630 strncpy (me, GNUNET_i2s (&my_identity), 4);
1631 strncpy (src, GNUNET_i2s (&rm->sender), 4);
1632 strncpy (dst, GNUNET_i2s (&rm->target), 4);
1633 prev[4] = me[4] = src[4] = dst[4] = '\0';
1634 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1635 "Handling DV message with %u bytes payload of type %u from %s to %s routed by %s to me (%s @ hop %u)\n",
1636 (unsigned int) (ntohs (rm->header.size) - sizeof (struct RouteMessage)),
1637 ntohs (payload->type),
1638 src,
1639 dst,
1640 prev,
1641 me,
1642 (unsigned int) distance + 1);
1643
1644 if (0 == memcmp (&rm->target,
1645 &my_identity,
1646 sizeof (struct GNUNET_PeerIdentity)))
1647 {
1648 if ((NULL !=
1649 (dn = GNUNET_CONTAINER_multipeermap_get (direct_neighbors,
1650 &rm->sender))) &&
1651 (DIRECT_NEIGHBOR_COST == dn->distance))
1652 {
1653 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1654 "Discarding DV message, as %s is a direct neighbor\n",
1655 GNUNET_i2s (&rm->sender));
1656 GNUNET_STATISTICS_update (stats,
1657 "# messages discarded (direct neighbor)",
1658 1, GNUNET_NO);
1659 return;
1660 }
1661 /* message is for me, check reverse route! */
1662 route = GNUNET_CONTAINER_multipeermap_get (all_routes,
1663 &rm->sender);
1664 if ( (NULL == route) &&
1665 (distance < DEFAULT_FISHEYE_DEPTH) )
1666 {
1667 /* don't have reverse route yet, learn it! */
1668 target = GNUNET_new (struct Target);
1669 target->peer = rm->sender;
1670 target->distance = htonl (distance);
1671 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1672 "Learning sender %s at distance %u from delivery!\n",
1673 GNUNET_i2s (&rm->sender),
1674 (unsigned int) distance + 1);
1675 if (NULL == neighbor->neighbor_table)
1676 neighbor->neighbor_table = GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
1677 if (GNUNET_YES !=
1678 GNUNET_CONTAINER_multipeermap_put (neighbor->neighbor_table,
1679 &target->peer,
1680 target,
1681 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
1682 {
1683 GNUNET_break_op (0);
1684 GNUNET_free (target);
1685 return;
1686 }
1687 add_new_route (target, neighbor);
1688 }
1689 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1690 "Delivering %u bytes from %s to myself!\n",
1691 ntohs (payload->size),
1692 GNUNET_i2s (&rm->sender));
1693 send_data_to_plugin (payload,
1694 &rm->sender,
1695 1 + distance);
1696 return;
1697 }
1698 if ( (NULL == GNUNET_CONTAINER_multipeermap_get (direct_neighbors,
1699 &rm->sender)) &&
1700 (NULL == GNUNET_CONTAINER_multipeermap_get (all_routes,
1701 &rm->sender)) )
1702 {
1703 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1704 "Learning sender %s at distance %u from forwarding!\n",
1705 GNUNET_i2s (&rm->sender),
1706 1 + distance);
1707 target = GNUNET_new (struct Target);
1708 target->peer = rm->sender;
1709 target->distance = htonl (distance);
1710 if (NULL == neighbor->neighbor_table)
1711 neighbor->neighbor_table = GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
1712 if (GNUNET_YES !=
1713 GNUNET_CONTAINER_multipeermap_put (neighbor->neighbor_table,
1714 &target->peer,
1715 target,
1716 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
1717 {
1718 GNUNET_break_op (0);
1719 GNUNET_free (target);
1720 return;
1721 }
1722 add_new_route (target, neighbor);
1723 }
1724
1725 route = GNUNET_CONTAINER_multipeermap_get (all_routes,
1726 &rm->target);
1727 if (NULL == route)
1728 {
1729 nneighbor = GNUNET_CONTAINER_multipeermap_get (direct_neighbors,
1730 &rm->target);
1731 if (NULL == nneighbor)
1732 {
1733 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1734 "No route to %s, not routing %u bytes!\n",
1735 GNUNET_i2s (&rm->target),
1736 ntohs (payload->size));
1737 GNUNET_STATISTICS_update (stats,
1738 "# messages discarded (no route)",
1739 1, GNUNET_NO);
1740 return;
1741 }
1742 }
1743 else
1744 {
1745 nneighbor = route->next_hop;
1746 }
1747 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1748 "Forwarding message to %s\n",
1749 GNUNET_i2s (&nneighbor->peer));
1750 forward_payload (nneighbor,
1751 distance + 1,
1752 &rm->sender,
1753 &rm->target,
1754 payload);
1755}
1756
1757
1758/**
1759 * Check that @a msg is well-formed
1760 *
1761 * @param cls identification of the client
1762 * @param message the actual message
1763 * @return #GNUNET_OK if @a msg is well-formed
1764 */
1765static int
1766check_dv_send_message (void *cls,
1767 const struct GNUNET_DV_SendMessage *msg)
1768{
1769 const struct GNUNET_MessageHeader *payload;
1770
1771 if (ntohs (msg->header.size) < sizeof (struct GNUNET_DV_SendMessage) +
1772 sizeof (struct GNUNET_MessageHeader))
1773 {
1774 GNUNET_break (0);
1775 return GNUNET_SYSERR;
1776 }
1777 payload = (const struct GNUNET_MessageHeader *) &msg[1];
1778 if (ntohs (msg->header.size) != sizeof (struct GNUNET_DV_SendMessage) + ntohs (payload->size))
1779 {
1780 GNUNET_break (0);
1781 return GNUNET_SYSERR;
1782 }
1783 return GNUNET_OK;
1784}
1785
1786
1787/**
1788 * Service server's handler for message send requests (which come
1789 * bubbling up to us through the DV plugin).
1790 *
1791 * @param cls identification of the client
1792 * @param message the actual message
1793 */
1794static void
1795handle_dv_send_message (void *cls,
1796 const struct GNUNET_DV_SendMessage *msg)
1797{
1798 struct GNUNET_SERVICE_Client *client = cls;
1799 struct Route *route;
1800 const struct GNUNET_MessageHeader *payload;
1801
1802 payload = (const struct GNUNET_MessageHeader *) &msg[1];
1803 route = GNUNET_CONTAINER_multipeermap_get (all_routes,
1804 &msg->target);
1805 if (NULL == route)
1806 {
1807 /* got disconnected */
1808 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1809 "No route to %s, dropping local message of type %u\n",
1810 GNUNET_i2s (&msg->target),
1811 ntohs (payload->type));
1812 GNUNET_STATISTICS_update (stats,
1813 "# local messages discarded (no route)",
1814 1, GNUNET_NO);
1815 GNUNET_SERVICE_client_continue (client);
1816 return;
1817 }
1818 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1819 "Forwarding %u bytes of type %u to %s\n",
1820 ntohs (payload->size),
1821 ntohs (payload->type),
1822 GNUNET_i2s (&msg->target));
1823
1824 forward_payload (route->next_hop,
1825 0 /* first hop, distance is zero */,
1826 &my_identity,
1827 &msg->target,
1828 payload);
1829 GNUNET_SERVICE_client_continue (client);
1830}
1831
1832
1833/**
1834 * Cleanup all of the data structures associated with a given neighbor.
1835 *
1836 * @param neighbor neighbor to clean up
1837 */
1838static void
1839cleanup_neighbor (struct DirectNeighbor *neighbor)
1840{
1841 handle_direct_disconnect (neighbor);
1842 GNUNET_assert (GNUNET_YES ==
1843 GNUNET_CONTAINER_multipeermap_remove (direct_neighbors,
1844 &neighbor->peer,
1845 neighbor));
1846 GNUNET_free (neighbor);
1847}
1848
1849
1850/**
1851 * Method called whenever a given peer disconnects.
1852 *
1853 * @param cls closure
1854 * @param peer peer identity this notification is about
1855 * @param internal_cls the corresponding `struct DirectNeighbor`
1856 */
1857static void
1858handle_core_disconnect (void *cls,
1859 const struct GNUNET_PeerIdentity *peer,
1860 void *internal_cls)
1861{
1862 struct DirectNeighbor *neighbor = internal_cls;
1863
1864 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1865 "Received core peer disconnect message for peer `%s'!\n",
1866 GNUNET_i2s (peer));
1867 /* Check for disconnect from self message */
1868 if (NULL == neighbor)
1869 return;
1870 GNUNET_break (GNUNET_YES == neighbor->connected);
1871 neighbor->connected = GNUNET_NO;
1872 if (DIRECT_NEIGHBOR_COST == neighbor->distance)
1873 {
1874 GNUNET_STATISTICS_update (stats,
1875 "# peers connected (1-hop)",
1876 -1,
1877 GNUNET_NO);
1878 }
1879 cleanup_neighbor (neighbor);
1880 if (GNUNET_YES == in_shutdown)
1881 return;
1882 schedule_refresh_routes ();
1883}
1884
1885
1886/**
1887 * Multipeermap iterator for freeing routes. Should never be called.
1888 *
1889 * @param cls NULL
1890 * @param key key value stored under
1891 * @param value the route to be freed
1892 * @return #GNUNET_YES to continue iteration, #GNUNET_NO to stop
1893 */
1894static int
1895free_route (void *cls,
1896 const struct GNUNET_PeerIdentity *key,
1897 void *value)
1898{
1899 struct Route *route = value;
1900
1901 GNUNET_break (0);
1902 GNUNET_assert (GNUNET_YES ==
1903 GNUNET_CONTAINER_multipeermap_remove (all_routes, key, value));
1904 release_route (route);
1905 send_disconnect_to_plugin (&route->target.peer);
1906 GNUNET_free (route);
1907 return GNUNET_YES;
1908}
1909
1910
1911/**
1912 * Multipeermap iterator for freeing direct neighbors. Should never be called.
1913 *
1914 * @param cls NULL
1915 * @param key key value stored under
1916 * @param value the direct neighbor to be freed
1917 * @return #GNUNET_YES to continue iteration, #GNUNET_NO to stop
1918 */
1919static int
1920free_direct_neighbors (void *cls,
1921 const struct GNUNET_PeerIdentity *key,
1922 void *value)
1923{
1924 struct DirectNeighbor *neighbor = value;
1925
1926 cleanup_neighbor (neighbor);
1927 return GNUNET_YES;
1928}
1929
1930
1931/**
1932 * Task run during shutdown.
1933 *
1934 * @param cls unused
1935 */
1936static void
1937shutdown_task (void *cls)
1938{
1939 unsigned int i;
1940
1941 in_shutdown = GNUNET_YES;
1942 GNUNET_assert (NULL != core_api);
1943 GNUNET_CORE_disconnect (core_api);
1944 core_api = NULL;
1945 GNUNET_ATS_performance_done (ats);
1946 ats = NULL;
1947 GNUNET_CONTAINER_multipeermap_iterate (direct_neighbors,
1948 &free_direct_neighbors,
1949 NULL);
1950 GNUNET_CONTAINER_multipeermap_iterate (all_routes,
1951 &free_route,
1952 NULL);
1953 GNUNET_CONTAINER_multipeermap_destroy (direct_neighbors);
1954 GNUNET_CONTAINER_multipeermap_destroy (all_routes);
1955 GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
1956 stats = NULL;
1957 GNUNET_notification_context_destroy (nc);
1958 nc = NULL;
1959 for (i=0;i<DEFAULT_FISHEYE_DEPTH;i++)
1960 {
1961 GNUNET_array_grow (consensi[i].targets,
1962 consensi[i].array_length,
1963 0);
1964 }
1965 if (NULL != rr_task)
1966 {
1967 GNUNET_SCHEDULER_cancel (rr_task);
1968 rr_task = NULL;
1969 }
1970}
1971
1972
1973/**
1974 * Notify newly connected client about an existing route.
1975 *
1976 * @param cls the `struct GNUNET_SERVICE_Client *`
1977 * @param key peer identity
1978 * @param value the `struct Route *`
1979 * @return #GNUNET_OK (continue to iterate)
1980 */
1981static int
1982notify_client_about_route (void *cls,
1983 const struct GNUNET_PeerIdentity *key,
1984 void *value)
1985{
1986 struct GNUNET_SERVICE_Client *client = cls;
1987 struct Route *route = value;
1988 struct GNUNET_MQ_Envelope *env;
1989 struct GNUNET_DV_ConnectMessage *cm;
1990
1991 env = GNUNET_MQ_msg (cm,
1992 GNUNET_MESSAGE_TYPE_DV_CONNECT);
1993 cm->distance = htonl (route->target.distance);
1994 cm->peer = route->target.peer;
1995 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1996 env);
1997 return GNUNET_OK;
1998}
1999
2000
2001/**
2002 * Handle START-message. This is the first message sent to us
2003 * by the client (can only be one!).
2004 *
2005 * @param cls closure (always NULL)
2006 * @param client identification of the client
2007 * @param message the actual message
2008 */
2009static void
2010handle_start (void *cls,
2011 const struct GNUNET_MessageHeader *message)
2012{
2013 struct GNUNET_SERVICE_Client *client = cls;
2014
2015 GNUNET_notification_context_add (nc,
2016 GNUNET_SERVICE_client_get_mq (client));
2017 GNUNET_SERVICE_client_continue (client);
2018 GNUNET_CONTAINER_multipeermap_iterate (all_routes,
2019 &notify_client_about_route,
2020 client);
2021}
2022
2023
2024/**
2025 * Called on core init.
2026 *
2027 * @param cls unused
2028 * @param identity this peer's identity
2029 */
2030static void
2031core_init (void *cls,
2032 const struct GNUNET_PeerIdentity *identity)
2033{
2034 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2035 "I am peer: %s\n",
2036 GNUNET_i2s (identity));
2037 my_identity = *identity;
2038}
2039
2040
2041/**
2042 * Process dv requests.
2043 *
2044 * @param cls closure
2045 * @param c configuration to use
2046 * @param service the initialized service
2047 */
2048static void
2049run (void *cls,
2050 const struct GNUNET_CONFIGURATION_Handle *c,
2051 struct GNUNET_SERVICE_Handle *service)
2052{
2053 struct GNUNET_MQ_MessageHandler core_handlers[] = {
2054 GNUNET_MQ_hd_var_size (dv_route_message,
2055 GNUNET_MESSAGE_TYPE_DV_ROUTE,
2056 struct RouteMessage,
2057 NULL),
2058 GNUNET_MQ_handler_end ()
2059 };
2060 in_shutdown = GNUNET_NO;
2061 cfg = c;
2062 direct_neighbors = GNUNET_CONTAINER_multipeermap_create (128,
2063 GNUNET_NO);
2064 all_routes = GNUNET_CONTAINER_multipeermap_create (65536,
2065 GNUNET_NO);
2066 core_api = GNUNET_CORE_connect (cfg,
2067 NULL,
2068 &core_init,
2069 &handle_core_connect,
2070 &handle_core_disconnect,
2071 core_handlers);
2072
2073 if (NULL == core_api)
2074 return;
2075 ats = GNUNET_ATS_performance_init (cfg,
2076 &handle_ats_update,
2077 NULL);
2078 if (NULL == ats)
2079 {
2080 GNUNET_CORE_disconnect (core_api);
2081 core_api = NULL;
2082 return;
2083 }
2084 nc = GNUNET_notification_context_create (MAX_QUEUE_SIZE_PLUGIN);
2085 stats = GNUNET_STATISTICS_create ("dv",
2086 cfg);
2087 GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
2088 NULL);
2089}
2090
2091
2092/**
2093 * Callback called when a client connects to the service.
2094 *
2095 * @param cls closure for the service
2096 * @param c the new client that connected to the service
2097 * @param mq the message queue used to send messages to the client
2098 * @return @a c
2099 */
2100static void *
2101client_connect_cb (void *cls,
2102 struct GNUNET_SERVICE_Client *c,
2103 struct GNUNET_MQ_Handle *mq)
2104{
2105 return c;
2106}
2107
2108
2109/**
2110 * Callback called when a client disconnected from the service
2111 *
2112 * @param cls closure for the service
2113 * @param c the client that disconnected
2114 * @param internal_cls should be equal to @a c
2115 */
2116static void
2117client_disconnect_cb (void *cls,
2118 struct GNUNET_SERVICE_Client *c,
2119 void *internal_cls)
2120{
2121 GNUNET_assert (c == internal_cls);
2122}
2123
2124
2125/**
2126 * Define "main" method using service macro.
2127 */
2128GNUNET_SERVICE_MAIN
2129("dv",
2130 GNUNET_SERVICE_OPTION_NONE,
2131 &run,
2132 &client_connect_cb,
2133 &client_disconnect_cb,
2134 NULL,
2135 GNUNET_MQ_hd_fixed_size (start,
2136 GNUNET_MESSAGE_TYPE_DV_START,
2137 struct GNUNET_MessageHeader,
2138 NULL),
2139 GNUNET_MQ_hd_var_size (dv_send_message,
2140 GNUNET_MESSAGE_TYPE_DV_SEND,
2141 struct GNUNET_DV_SendMessage,
2142 NULL),
2143 GNUNET_MQ_handler_end ());
2144
2145
2146/* end of gnunet-service-dv.c */
diff --git a/src/dv/plugin_transport_dv.c b/src/dv/plugin_transport_dv.c
deleted file mode 100644
index a99c170d7..000000000
--- a/src/dv/plugin_transport_dv.c
+++ /dev/null
@@ -1,910 +0,0 @@
1/*
2 This file is part of GNUnet
3 Copyright (C) 2002--2014 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @file dv/plugin_transport_dv.c
23 * @brief DV transport service, takes incoming DV requests and deals with
24 * the DV service
25 * @author Nathan Evans
26 * @author Christian Grothoff
27 */
28#include "platform.h"
29#include "gnunet_util_lib.h"
30#include "gnunet_protocols.h"
31#include "gnunet_statistics_service.h"
32#include "gnunet_dv_service.h"
33#include "gnunet_transport_service.h"
34#include "gnunet_transport_plugin.h"
35#include "dv.h"
36
37
38#define LOG(kind,...) GNUNET_log_from (kind, "transport-dv",__VA_ARGS__)
39
40
41/**
42 * Encapsulation of all of the state of the plugin.
43 */
44struct Plugin;
45
46
47/**
48 * Session handle for connections.
49 */
50struct GNUNET_ATS_Session
51{
52 /**
53 * Pointer to the global plugin struct.
54 */
55 struct Plugin *plugin;
56
57 /**
58 * Address we use for the other peer.
59 */
60 struct GNUNET_HELLO_Address *address;
61
62 /**
63 * To whom are we talking to.
64 */
65 struct GNUNET_PeerIdentity sender;
66
67 /**
68 * Number of bytes waiting for transmission to this peer.
69 * FIXME: not set yet.
70 */
71 unsigned long long bytes_in_queue;
72
73 /**
74 * Number of messages waiting for transmission to this peer.
75 * FIXME: not set yet.
76 */
77 unsigned int msgs_in_queue;
78
79 /**
80 * Current distance to the given peer.
81 */
82 uint32_t distance;
83
84 /**
85 * Current network the next hop peer is located in
86 */
87 enum GNUNET_NetworkType network;
88
89 /**
90 * Does the transport service know about this session (and we thus
91 * need to call `session_end` when it is released?)
92 */
93 int active;
94
95};
96
97
98/**
99 * Encapsulation of all of the state of the plugin.
100 */
101struct Plugin
102{
103 /**
104 * Our environment.
105 */
106 struct GNUNET_TRANSPORT_PluginEnvironment *env;
107
108 /**
109 * Hash map of sessions (active and inactive).
110 */
111 struct GNUNET_CONTAINER_MultiPeerMap *sessions;
112
113 /**
114 * Copy of the handler array where the closures are
115 * set to this struct's instance.
116 */
117 struct GNUNET_SERVER_MessageHandler *handlers;
118
119 /**
120 * Handle to the DV service
121 */
122 struct GNUNET_DV_ServiceHandle *dvh;
123
124 /**
125 * Tokenizer for boxed messages.
126 */
127 struct GNUNET_SERVER_MessageStreamTokenizer *mst;
128
129 /**
130 * Function to call about session status changes.
131 */
132 GNUNET_TRANSPORT_SessionInfoCallback sic;
133
134 /**
135 * Closure for @e sic.
136 */
137 void *sic_cls;
138};
139
140
141/**
142 * If a session monitor is attached, notify it about the new
143 * session state.
144 *
145 * @param plugin our plugin
146 * @param session session that changed state
147 * @param state new state of the session
148 */
149static void
150notify_session_monitor (struct Plugin *plugin,
151 struct GNUNET_ATS_Session *session,
152 enum GNUNET_TRANSPORT_SessionState state)
153{
154 struct GNUNET_TRANSPORT_SessionInfo info;
155
156 if (NULL == plugin->sic)
157 return;
158 memset (&info, 0, sizeof (info));
159 info.state = state;
160 info.is_inbound = GNUNET_SYSERR; /* hard to say */
161 info.num_msg_pending = session->msgs_in_queue;
162 info.num_bytes_pending = session->bytes_in_queue;
163 /* info.receive_delay remains zero as this is not supported by DV
164 (cannot selectively not receive from 'core') */
165 info.session_timeout = GNUNET_TIME_UNIT_FOREVER_ABS;
166 info.address = session->address;
167 plugin->sic (plugin->sic_cls,
168 session,
169 &info);
170}
171
172
173/**
174 * Notify transport service about the change in distance.
175 *
176 * @param session session where the distance changed
177 */
178static void
179notify_distance_change (struct GNUNET_ATS_Session *session)
180{
181 struct Plugin *plugin = session->plugin;
182
183 if (GNUNET_YES != session->active)
184 return;
185 plugin->env->update_address_distance (plugin->env->cls,
186 session->address,
187 session->distance);
188}
189
190
191/**
192 * Function called by MST on each message from the box.
193 *
194 * @param cls closure with the `struct Plugin *`
195 * @param client identification of the client (with the 'struct GNUNET_ATS_Session')
196 * @param message the actual message
197 * @return #GNUNET_OK on success
198 */
199static int
200unbox_cb (void *cls,
201 void *client,
202 const struct GNUNET_MessageHeader *message)
203{
204 struct Plugin *plugin = cls;
205 struct GNUNET_ATS_Session *session = client;
206
207 session->active = GNUNET_YES;
208 LOG (GNUNET_ERROR_TYPE_DEBUG,
209 "Delivering message of type %u with %u bytes from peer `%s'\n",
210 ntohs (message->type),
211 ntohs (message->size),
212 GNUNET_i2s (&session->sender));
213 plugin->env->receive (plugin->env->cls,
214 session->address,
215 session,
216 message);
217 plugin->env->update_address_distance (plugin->env->cls,
218 session->address,
219 session->distance);
220 return GNUNET_OK;
221}
222
223
224/**
225 * Handler for messages received from the DV service.
226 *
227 * @param cls closure with the plugin
228 * @param sender sender of the message
229 * @param distance how far did the message travel
230 * @param msg actual message payload
231 */
232static void
233handle_dv_message_received (void *cls,
234 const struct GNUNET_PeerIdentity *sender,
235 uint32_t distance,
236 const struct GNUNET_MessageHeader *msg)
237{
238 struct Plugin *plugin = cls;
239 struct GNUNET_ATS_Session *session;
240
241 LOG (GNUNET_ERROR_TYPE_DEBUG,
242 "Received DV_MESSAGE_RECEIVED message for peer `%s': new distance %u\n",
243 GNUNET_i2s (sender),
244 distance);
245 session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
246 sender);
247 if (NULL == session)
248 {
249 GNUNET_break (0);
250 return;
251 }
252 if (GNUNET_MESSAGE_TYPE_DV_BOX == ntohs (msg->type))
253 {
254 /* need to unbox using MST */
255 LOG (GNUNET_ERROR_TYPE_DEBUG,
256 "Unboxing DV message using MST\n");
257 GNUNET_SERVER_mst_receive (plugin->mst,
258 session,
259 (const char *) &msg[1],
260 ntohs (msg->size) - sizeof (struct GNUNET_MessageHeader),
261 GNUNET_YES,
262 GNUNET_NO);
263 return;
264 }
265 session->active = GNUNET_YES;
266 LOG (GNUNET_ERROR_TYPE_DEBUG,
267 "Delivering message of type %u with %u bytes from peer `%s'\n",
268 ntohs (msg->type),
269 ntohs (msg->size),
270 GNUNET_i2s (sender));
271 plugin->env->receive (plugin->env->cls,
272 session->address,
273 session,
274 msg);
275 plugin->env->update_address_distance (plugin->env->cls,
276 session->address,
277 session->distance);
278}
279
280
281/**
282 * Function called if DV starts to be able to talk to a peer.
283 *
284 * @param cls closure with `struct Plugin *`
285 * @param peer newly connected peer
286 * @param distance distance to the peer
287 * @param network the network the next hop is located in
288 */
289static void
290handle_dv_connect (void *cls,
291 const struct GNUNET_PeerIdentity *peer,
292 uint32_t distance,
293 enum GNUNET_NetworkType network)
294{
295 struct Plugin *plugin = cls;
296 struct GNUNET_ATS_Session *session;
297
298 GNUNET_break (GNUNET_NT_UNSPECIFIED != network);
299 /**
300 * This requires transport plugin to be linked to libgnunetats.
301 * If you remove it, also remove libgnunetats linkage from Makefile.am
302 */
303 LOG (GNUNET_ERROR_TYPE_DEBUG,
304 "Received DV_CONNECT message for peer `%s' with next hop in network %s\n",
305 GNUNET_i2s (peer),
306 GNUNET_NT_to_string (network));
307
308 session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
309 peer);
310 if (NULL != session)
311 {
312 GNUNET_break (0);
313 session->distance = distance;
314 notify_distance_change (session);
315 return; /* nothing to do */
316 }
317
318 session = GNUNET_new (struct GNUNET_ATS_Session);
319 session->address = GNUNET_HELLO_address_allocate (peer, "dv",
320 NULL, 0,
321 GNUNET_HELLO_ADDRESS_INFO_NONE);
322 session->sender = *peer;
323 session->plugin = plugin;
324 session->distance = distance;
325 session->network = network;
326 GNUNET_assert(GNUNET_YES ==
327 GNUNET_CONTAINER_multipeermap_put (plugin->sessions,
328 &session->sender, session,
329 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
330
331 LOG (GNUNET_ERROR_TYPE_DEBUG,
332 "Creating new DV session %p for peer `%s' at distance %u\n",
333 session,
334 GNUNET_i2s (peer),
335 distance);
336
337 session->active = GNUNET_YES;
338 plugin->env->session_start (plugin->env->cls,
339 session->address,
340 session,
341 network);
342 plugin->env->update_address_distance (plugin->env->cls,
343 session->address,
344 session->distance);
345
346 notify_session_monitor (session->plugin,
347 session,
348 GNUNET_TRANSPORT_SS_UP);
349}
350
351
352/**
353 * Function called if DV distance to a peer is changed.
354 *
355 * @param cls closure with `struct Plugin *`
356 * @param peer connected peer
357 * @param distance new distance to the peer
358 * @param network network type used for the connection
359 */
360static void
361handle_dv_distance_changed (void *cls,
362 const struct GNUNET_PeerIdentity *peer,
363 uint32_t distance,
364 enum GNUNET_NetworkType network)
365{
366 struct Plugin *plugin = cls;
367 struct GNUNET_ATS_Session *session;
368
369 GNUNET_break (GNUNET_NT_UNSPECIFIED != network);
370 LOG (GNUNET_ERROR_TYPE_DEBUG,
371 "Received `%s' message for peer `%s': new distance %u\n",
372 "DV_DISTANCE_CHANGED",
373 GNUNET_i2s (peer),
374 distance);
375 session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
376 peer);
377 if (NULL == session)
378 {
379 GNUNET_break (0);
380 handle_dv_connect (plugin, peer, distance, network);
381 return;
382 }
383 session->distance = distance;
384 notify_distance_change (session);
385}
386
387
388/**
389 * Release session object and clean up associated resources.
390 *
391 * @param session session to clean up
392 */
393static void
394free_session (struct GNUNET_ATS_Session *session)
395{
396 struct Plugin *plugin = session->plugin;
397
398 GNUNET_assert (GNUNET_YES ==
399 GNUNET_CONTAINER_multipeermap_remove (plugin->sessions,
400 &session->sender,
401 session));
402
403 LOG (GNUNET_ERROR_TYPE_DEBUG,
404 "Freeing session %p for peer `%s'\n",
405 session,
406 GNUNET_i2s (&session->sender));
407 if (GNUNET_YES == session->active)
408 {
409 notify_session_monitor (session->plugin,
410 session,
411 GNUNET_TRANSPORT_SS_DONE);
412 plugin->env->session_end (plugin->env->cls,
413 session->address,
414 session);
415 session->active = GNUNET_NO;
416 }
417 GNUNET_HELLO_address_free (session->address);
418 GNUNET_free (session);
419}
420
421
422/**
423 * Function called if DV is no longer able to talk to a peer.
424 *
425 * @param cls closure with `struct Plugin *`
426 * @param peer peer that disconnected
427 */
428static void
429handle_dv_disconnect (void *cls,
430 const struct GNUNET_PeerIdentity *peer)
431{
432 struct Plugin *plugin = cls;
433 struct GNUNET_ATS_Session *session;
434
435 LOG (GNUNET_ERROR_TYPE_DEBUG,
436 "Received `%s' message for peer `%s'\n",
437 "DV_DISCONNECT",
438 GNUNET_i2s (peer));
439 session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
440 peer);
441 if (NULL == session)
442 return; /* nothing to do */
443 free_session (session);
444}
445
446
447/**
448 * Function that can be used by the transport service to transmit
449 * a message using the plugin.
450 *
451 * @param cls closure
452 * @param session the session used
453 * @param priority how important is the message
454 * @param msgbuf the message to transmit
455 * @param msgbuf_size number of bytes in 'msgbuf'
456 * @param timeout when should we time out
457 * @param cont continuation to call once the message has
458 * been transmitted (or if the transport is ready
459 * for the next transmission call; or if the
460 * peer disconnected...)
461 * @param cont_cls closure for @a cont
462 * @return number of bytes used (on the physical network, with overheads);
463 * -1 on hard errors (i.e. address invalid); 0 is a legal value
464 * and does NOT mean that the message was not transmitted (DV)
465 */
466static ssize_t
467dv_plugin_send (void *cls,
468 struct GNUNET_ATS_Session *session,
469 const char *msgbuf,
470 size_t msgbuf_size,
471 unsigned int priority,
472 struct GNUNET_TIME_Relative timeout,
473 GNUNET_TRANSPORT_TransmitContinuation cont,
474 void *cont_cls)
475{
476 struct Plugin *plugin = cls;
477 const struct GNUNET_MessageHeader *msg;
478 struct GNUNET_MessageHeader *box;
479
480 box = NULL;
481 msg = (const struct GNUNET_MessageHeader *) msgbuf;
482 if (ntohs (msg->size) != msgbuf_size)
483 {
484 /* need to box */
485 LOG (GNUNET_ERROR_TYPE_DEBUG,
486 "Boxing DV message\n");
487 box = GNUNET_malloc (sizeof (struct GNUNET_MessageHeader) + msgbuf_size);
488 box->type = htons (GNUNET_MESSAGE_TYPE_DV_BOX);
489 box->size = htons (sizeof (struct GNUNET_MessageHeader) + msgbuf_size);
490 GNUNET_memcpy (&box[1], msgbuf, msgbuf_size);
491 msg = box;
492 }
493 GNUNET_DV_send (plugin->dvh,
494 &session->sender,
495 msg);
496 cont (cont_cls,
497 &session->sender,
498 GNUNET_OK,
499 msgbuf_size, 0);
500 GNUNET_free_non_null (box);
501 return 0; /* DV */
502}
503
504
505/**
506 * Function that can be used to force the plugin to disconnect
507 * from the given peer and cancel all previous transmissions
508 * (and their continuations).
509 *
510 * @param cls closure with the `struct Plugin *`
511 * @param target peer from which to disconnect
512 */
513static void
514dv_plugin_disconnect_peer (void *cls,
515 const struct GNUNET_PeerIdentity *target)
516{
517 struct Plugin *plugin = cls;
518 struct GNUNET_ATS_Session *session;
519
520 session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
521 target);
522 if (NULL == session)
523 return; /* nothing to do */
524 session->active = GNUNET_NO;
525}
526
527
528/**
529 * Function that can be used to force the plugin to disconnect
530 * from the given peer and cancel all previous transmissions
531 * (and their continuations).
532 *
533 * @param cls closure with the `struct Plugin *`
534 * @param session which session to disconnect
535 * @return #GNUNET_OK
536 */
537static int
538dv_plugin_disconnect_session (void *cls,
539 struct GNUNET_ATS_Session *session)
540{
541 session->active = GNUNET_NO;
542 return GNUNET_OK;
543}
544
545
546/**
547 * Convert the transports address to a nice, human-readable
548 * format.
549 *
550 * @param cls closure
551 * @param type name of the transport that generated the address
552 * @param addr one of the addresses of the host, NULL for the last address
553 * the specific address format depends on the transport
554 * @param addrlen length of the address
555 * @param numeric should (IP) addresses be displayed in numeric form?
556 * @param timeout after how long should we give up?
557 * @param asc function to call on each string
558 * @param asc_cls closure for @a asc
559 */
560static void
561dv_plugin_address_pretty_printer (void *cls,
562 const char *type,
563 const void *addr,
564 size_t addrlen,
565 int numeric,
566 struct GNUNET_TIME_Relative timeout,
567 GNUNET_TRANSPORT_AddressStringCallback asc,
568 void *asc_cls)
569{
570 if ( (0 == addrlen) &&
571 (0 == strcmp (type, "dv")) )
572 asc (asc_cls,
573 "dv",
574 GNUNET_OK);
575 else
576 asc (asc_cls,
577 NULL,
578 GNUNET_SYSERR);
579 asc (asc_cls,
580 NULL,
581 GNUNET_OK);
582}
583
584
585/**
586 * Convert the DV address to a pretty string.
587 *
588 * @param cls closure
589 * @param addr the (hopefully) DV address
590 * @param addrlen the length of the @a addr
591 * @return string representing the DV address
592 */
593static const char *
594dv_plugin_address_to_string (void *cls,
595 const void *addr,
596 size_t addrlen)
597{
598 if (0 != addrlen)
599 {
600 GNUNET_break (0); /* malformed */
601 return NULL;
602 }
603 return "dv";
604}
605
606
607/**
608 * Another peer has suggested an address for this peer and transport
609 * plugin. Check that this could be a valid address. This function
610 * is not expected to 'validate' the address in the sense of trying to
611 * connect to it but simply to see if the binary format is technically
612 * legal for establishing a connection to this peer (and make sure that
613 * the address really corresponds to our network connection/settings
614 * and not some potential man-in-the-middle).
615 *
616 * @param cls closure
617 * @param addr pointer to the address
618 * @param addrlen length of @a addr
619 * @return #GNUNET_OK if this is a plausible address for this peer
620 * and transport, #GNUNET_SYSERR if not
621 *
622 */
623static int
624dv_plugin_check_address (void *cls,
625 const void *addr,
626 size_t addrlen)
627{
628 if (0 != addrlen)
629 return GNUNET_SYSERR;
630 return GNUNET_OK;
631}
632
633
634/**
635 * Create a new session to transmit data to the target
636 * This session will used to send data to this peer and the plugin will
637 * notify us by calling the env->session_end function
638 *
639 * @param cls the plugin
640 * @param address the address
641 * @return the session if the address is valid, NULL otherwise
642 */
643static struct GNUNET_ATS_Session *
644dv_get_session (void *cls,
645 const struct GNUNET_HELLO_Address *address)
646{
647 struct Plugin *plugin = cls;
648 struct GNUNET_ATS_Session *session;
649
650 if (0 != address->address_length)
651 return NULL;
652 session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
653 &address->peer);
654 if (NULL == session)
655 return NULL; /* not valid right now */
656 session->active = GNUNET_YES;
657 return session;
658}
659
660
661/**
662 * Function called to convert a string address to
663 * a binary address.
664 *
665 * @param cls closure ('struct Plugin*')
666 * @param addr string address
667 * @param addrlen length of the @a addr including \0 termination
668 * @param buf location to store the buffer
669 * If the function returns #GNUNET_SYSERR, its contents are undefined.
670 * @param added length of created address
671 * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure
672 */
673static int
674dv_plugin_string_to_address (void *cls,
675 const char *addr,
676 uint16_t addrlen,
677 void **buf,
678 size_t *added)
679{
680 if ( (addrlen == 3) &&
681 (0 == strcmp ("dv", addr)) )
682 {
683 *added = 0;
684 return GNUNET_OK;
685 }
686 return GNUNET_SYSERR;
687}
688
689
690/**
691 * Function that will be called whenever the transport service wants to
692 * notify the plugin that a session is still active and in use and
693 * therefore the session timeout for this session has to be updated
694 *
695 * @param cls closure (`struct Plugin *`)
696 * @param peer which peer was the session for
697 * @param session which session is being updated
698 */
699static void
700dv_plugin_update_session_timeout (void *cls,
701 const struct GNUNET_PeerIdentity *peer,
702 struct GNUNET_ATS_Session *session)
703{
704 /* DV currently doesn't time out like "normal" plugins,
705 so it should be safe to do nothing, right?
706 (or should we add an internal timeout?) */
707}
708
709
710/**
711 * Function to obtain the network type for a session
712 * FIXME: we should probably look at the network type
713 * used by the next hop here. Or find some other way
714 * to properly allow ATS-DV resource allocation.
715 *
716 * @param cls closure (`struct Plugin *`)
717 * @param session the session
718 * @return the network type
719 */
720static enum GNUNET_NetworkType
721dv_get_network (void *cls,
722 struct GNUNET_ATS_Session *session)
723{
724 GNUNET_assert (NULL != session);
725 return session->network;
726}
727
728
729/**
730 * Function obtain the network type for an address.
731 *
732 * @param cls closure (`struct Plugin *`)
733 * @param address the address
734 * @return the network type
735 */
736static enum GNUNET_NetworkType
737dv_plugin_get_network_for_address (void *cls,
738 const struct GNUNET_HELLO_Address *address)
739{
740 return GNUNET_NT_WAN; /* FOR NOW */
741}
742
743
744/**
745 * Function that is called to get the keepalive factor.
746 * #GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT is divided by this number to
747 * calculate the interval between keepalive packets.
748 *
749 * @param cls closure with the `struct Plugin`
750 * @return keepalive factor
751 */
752static unsigned int
753dv_plugin_query_keepalive_factor (void *cls)
754{
755 return 3;
756}
757
758
759/**
760 * Return information about the given session to the
761 * monitor callback.
762 *
763 * @param cls the `struct Plugin` with the monitor callback (`sic`)
764 * @param peer peer we send information about
765 * @param value our `struct GNUNET_ATS_Session` to send information about
766 * @return #GNUNET_OK (continue to iterate)
767 */
768static int
769send_session_info_iter (void *cls,
770 const struct GNUNET_PeerIdentity *peer,
771 void *value)
772{
773 struct Plugin *plugin = cls;
774 struct GNUNET_ATS_Session *session = value;
775
776 if (GNUNET_YES != session->active)
777 return GNUNET_OK;
778 notify_session_monitor (plugin,
779 session,
780 GNUNET_TRANSPORT_SS_UP);
781 return GNUNET_OK;
782}
783
784
785/**
786 * Begin monitoring sessions of a plugin. There can only
787 * be one active monitor per plugin (i.e. if there are
788 * multiple monitors, the transport service needs to
789 * multiplex the generated events over all of them).
790 *
791 * @param cls closure of the plugin
792 * @param sic callback to invoke, NULL to disable monitor;
793 * plugin will being by iterating over all active
794 * sessions immediately and then enter monitor mode
795 * @param sic_cls closure for @a sic
796 */
797static void
798dv_plugin_setup_monitor (void *cls,
799 GNUNET_TRANSPORT_SessionInfoCallback sic,
800 void *sic_cls)
801{
802 struct Plugin *plugin = cls;
803
804 plugin->sic = sic;
805 plugin->sic_cls = sic_cls;
806 if (NULL != sic)
807 {
808 GNUNET_CONTAINER_multipeermap_iterate (plugin->sessions,
809 &send_session_info_iter,
810 plugin);
811 /* signal end of first iteration */
812 sic (sic_cls, NULL, NULL);
813 }
814}
815
816
817/**
818 * Entry point for the plugin.
819 *
820 * @param cls closure with the plugin environment
821 * @return plugin API
822 */
823void *
824libgnunet_plugin_transport_dv_init (void *cls)
825{
826 struct GNUNET_TRANSPORT_PluginEnvironment *env = cls;
827 struct GNUNET_TRANSPORT_PluginFunctions *api;
828 struct Plugin *plugin;
829
830 plugin = GNUNET_new (struct Plugin);
831 plugin->env = env;
832 plugin->sessions = GNUNET_CONTAINER_multipeermap_create (1024 * 8, GNUNET_YES);
833 plugin->mst = GNUNET_SERVER_mst_create (&unbox_cb,
834 plugin);
835 plugin->dvh = GNUNET_DV_service_connect (env->cfg,
836 plugin,
837 &handle_dv_connect,
838 &handle_dv_distance_changed,
839 &handle_dv_disconnect,
840 &handle_dv_message_received);
841 if (NULL == plugin->dvh)
842 {
843 GNUNET_CONTAINER_multipeermap_destroy (plugin->sessions);
844 GNUNET_SERVER_mst_destroy (plugin->mst);
845 GNUNET_free (plugin);
846 return NULL;
847 }
848 api = GNUNET_new (struct GNUNET_TRANSPORT_PluginFunctions);
849 api->cls = plugin;
850 api->send = &dv_plugin_send;
851 api->disconnect_peer = &dv_plugin_disconnect_peer;
852 api->disconnect_session = &dv_plugin_disconnect_session;
853 api->address_pretty_printer = &dv_plugin_address_pretty_printer;
854 api->check_address = &dv_plugin_check_address;
855 api->address_to_string = &dv_plugin_address_to_string;
856 api->string_to_address = &dv_plugin_string_to_address;
857 api->query_keepalive_factor = &dv_plugin_query_keepalive_factor;
858 api->get_session = &dv_get_session;
859 api->get_network = &dv_get_network;
860 api->get_network_for_address = &dv_plugin_get_network_for_address;
861 api->update_session_timeout = &dv_plugin_update_session_timeout;
862 api->setup_monitor = &dv_plugin_setup_monitor;
863 return api;
864}
865
866
867/**
868 * Function called to free a session.
869 *
870 * @param cls NULL
871 * @param key unused
872 * @param value session to free
873 * @return #GNUNET_OK (continue to iterate)
874 */
875static int
876free_session_iterator (void *cls,
877 const struct GNUNET_PeerIdentity *key,
878 void *value)
879{
880 struct GNUNET_ATS_Session *session = value;
881
882 free_session (session);
883 return GNUNET_OK;
884}
885
886
887/**
888 * Exit point from the plugin.
889 *
890 * @param cls plugin API
891 * @return NULL
892 */
893void *
894libgnunet_plugin_transport_dv_done (void *cls)
895{
896 struct GNUNET_TRANSPORT_PluginFunctions *api = cls;
897 struct Plugin *plugin = api->cls;
898
899 GNUNET_DV_service_disconnect (plugin->dvh);
900 GNUNET_CONTAINER_multipeermap_iterate (plugin->sessions,
901 &free_session_iterator,
902 NULL);
903 GNUNET_CONTAINER_multipeermap_destroy (plugin->sessions);
904 GNUNET_SERVER_mst_destroy (plugin->mst);
905 GNUNET_free (plugin);
906 GNUNET_free (api);
907 return NULL;
908}
909
910/* end of plugin_transport_dv.c */
diff --git a/src/dv/template_dv.conf b/src/dv/template_dv.conf
deleted file mode 100644
index d37154261..000000000
--- a/src/dv/template_dv.conf
+++ /dev/null
@@ -1,33 +0,0 @@
1# Peers:
2#
3# `G3FK2T8AMPJ0H556QXEYVTEW409BP3KHPCG99TV66V8NYAS1KEWG'
4# `6DEVS8Y51AT0TGNNHR7A75H47XXYJEFRZXX5RVQ9Q6S7Z49SYXT0'
5# `6YNBKM6TTK64FAG9DF0292AW5JA9CCAC04JTY0HF8XHP635HPBBG'
6# `DK5WZKKDHH06BH1H0DE0Z8CPBTG9AD8P85SF02WW3285AT3V0V50'
7#
8
9[testbed]
10OVERLAY_TOPOLOGY = CLIQUE
11SETUP_TIMEOUT = 3 m
12OPERATION_TIMEOUT = 30 s
13CACHE_SIZE = 0
14
15[transport-blacklist-G3FK2T8AMPJ0H556QXEYVTEW409BP3KHPCG99TV66V8NYAS1KEWG]
166DEVS8Y51AT0TGNNHR7A75H47XXYJEFRZXX5RVQ9Q6S7Z49SYXT0 = tcp
17
18[transport-blacklist-6DEVS8Y51AT0TGNNHR7A75H47XXYJEFRZXX5RVQ9Q6S7Z49SYXT0]
19G3FK2T8AMPJ0H556QXEYVTEW409BP3KHPCG99TV66V8NYAS1KEWG = tcp
20
21[transport-blacklist-6YNBKM6TTK64FAG9DF0292AW5JA9CCAC04JTY0HF8XHP635HPBBG]
22
23[transport-blacklist-DK5WZKKDHH06BH1H0DE0Z8CPBTG9AD8P85SF02WW3285AT3V0V50]
24
25[PATHS]
26GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-dv-testing/
27
28[peerinfo]
29USE_INCLUDED_HELLOS = NO
30
31[nat]
32RETURN_LOCAL_ADDRESSES = YES
33
diff --git a/src/dv/test_transport_blacklist.c b/src/dv/test_transport_blacklist.c
deleted file mode 100644
index 4fc9b4908..000000000
--- a/src/dv/test_transport_blacklist.c
+++ /dev/null
@@ -1,69 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2009, 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20/**
21 * @file dv/test_transport_blacklist.c
22 * @brief base testcase for testing blacklist
23 */
24#include "platform.h"
25#include "gnunet_core_service.h"
26#include "gnunet_testbed_service.h"
27
28/**
29 * Return value from main, set to 0 on success.
30 */
31static int ok;
32
33
34static void
35test_connection (void *cls,
36 struct GNUNET_TESTBED_RunHandle *h,
37 unsigned int num_peers,
38 struct GNUNET_TESTBED_Peer **peers,
39 unsigned int links_succeeded,
40 unsigned int links_failed)
41{
42 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Links successful %u / %u failed\n", links_succeeded, links_failed);
43 if ( (4 == num_peers) && (0 == links_failed) )
44 {
45 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
46 "Testbed connect peers despite blacklist!\n");
47 ok = 1;
48 }
49 else
50 {
51 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
52 "Note that getting a message about a timeout during setup is expected for this test.\n");
53 }
54 GNUNET_SCHEDULER_shutdown ();
55}
56
57
58int
59main (int argc, char *argv[])
60{
61 (void) GNUNET_TESTBED_test_run ("test-transport-blacklist",
62 "test_transport_blacklist_data.conf",
63 4,
64 0, NULL, NULL,
65 &test_connection, NULL);
66 return ok;
67}
68
69/* end of test_transport_blacklist.c */
diff --git a/src/dv/test_transport_blacklist_data.conf b/src/dv/test_transport_blacklist_data.conf
deleted file mode 100644
index ea55a196b..000000000
--- a/src/dv/test_transport_blacklist_data.conf
+++ /dev/null
@@ -1,5 +0,0 @@
1@INLINE@ template_dv.conf
2
3[transport]
4PORT = 52565
5PLUGINS = tcp
diff --git a/src/dv/test_transport_dv.c b/src/dv/test_transport_dv.c
deleted file mode 100644
index 03b6087d5..000000000
--- a/src/dv/test_transport_dv.c
+++ /dev/null
@@ -1,131 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2009, 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20/**
21 * @file dv/test_transport_dv.c
22 * @brief base testcase for testing distance vector transport
23 */
24#include "platform.h"
25#include "gnunet_core_service.h"
26#include "gnunet_testbed_service.h"
27
28/**
29 * Return value from main, set to 0 on success.
30 */
31static int ok;
32
33struct GNUNET_TESTBED_Operation *topology_op;
34
35static struct GNUNET_SCHEDULER_Task * shutdown_task;
36
37
38static void
39do_shutdown (void *cls)
40{
41 shutdown_task = NULL;
42 if (NULL != topology_op)
43 {
44 GNUNET_TESTBED_operation_done (topology_op);
45 topology_op = NULL;
46 }
47}
48
49
50static void
51topology_completed (void *cls,
52 unsigned int nsuccess,
53 unsigned int nfailures)
54{
55 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
56 "Links successful %u / %u failed\n",
57 nsuccess,
58 nfailures);
59 GNUNET_TESTBED_operation_done (topology_op);
60 topology_op = NULL;
61
62 if (nfailures > 0)
63 {
64 fprintf (stderr,
65 "Error: links successful %u but %u failed\n",
66 nsuccess,
67 nfailures);
68 ok = 1;
69 }
70 else
71 ok = 0;
72
73 GNUNET_SCHEDULER_shutdown ();
74}
75
76
77static void
78test_connection (void *cls,
79 struct GNUNET_TESTBED_RunHandle *h,
80 unsigned int num_peers,
81 struct GNUNET_TESTBED_Peer **peers,
82 unsigned int links_succeeded,
83 unsigned int links_failed)
84{
85 shutdown_task = GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
86 NULL);
87 if (4 != num_peers)
88 {
89 ok = 1;
90 fprintf (stderr,
91 "Only %u out of 4 peers were started ...\n",
92 num_peers);
93 }
94
95 if (0 != links_failed)
96 {
97 /* All peers except DV peers are connected */
98 fprintf (stderr,
99 "Testbed failed to connect peers (%u links OK, %u links failed)\n",
100 links_succeeded,
101 links_failed);
102
103 topology_op = GNUNET_TESTBED_overlay_configure_topology
104 (NULL, num_peers, peers, NULL,
105 &topology_completed, NULL,
106 GNUNET_TESTBED_TOPOLOGY_CLIQUE,
107 GNUNET_TESTBED_TOPOLOGY_OPTION_END);
108 return;
109 }
110
111 ok = 1;
112 fprintf (stderr,
113 "Testbed connected peers, should not happen...\n");
114 GNUNET_SCHEDULER_shutdown ();
115}
116
117
118int
119main (int argc, char *argv[])
120{
121 ok = 1;
122 /* Connecting initial topology */
123 (void) GNUNET_TESTBED_test_run ("test-transport-dv",
124 "test_transport_dv_data.conf",
125 4,
126 0, NULL, NULL,
127 &test_connection, NULL);
128 return ok;
129}
130
131/* end of test_transport_dv.c */
diff --git a/src/dv/test_transport_dv_data.conf b/src/dv/test_transport_dv_data.conf
deleted file mode 100644
index a21fba8a7..000000000
--- a/src/dv/test_transport_dv_data.conf
+++ /dev/null
@@ -1,19 +0,0 @@
1@INLINE@ template_dv.conf
2
3[transport]
4PORT = 52565
5PLUGINS = tcp dv
6#PREFIX = valgrind --leak-check=full --track-fds=yes --leak-resolution=high
7
8[dv]
9START_ON_DEMAND = YES
10# PREFIX = valgrind --leak-check=full --track-fds=yes --leak-resolution=high
11
12[set]
13START_ON_DEMAND = YES
14# PREFIX = valgrind --leak-check=full --track-fds=yes --leak-resolution=high
15
16[core]
17# PREFIX = valgrind --leak-check=full --track-fds=yes --leak-resolution=high
18
19
diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am
index 33260a794..d452bbf3c 100644
--- a/src/fs/Makefile.am
+++ b/src/fs/Makefile.am
@@ -282,11 +282,6 @@ check_SCRIPTS += \
282endif 282endif
283endif 283endif
284 284
285if ENABLE_MONKEY
286 MONKEY = @MONKEYPREFIX@
287 AM_LDFLAGS = -no-install
288endif
289
290 285
291if ENABLE_TEST_RUN 286if ENABLE_TEST_RUN
292AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME; $(MONKEY) 287AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME; $(MONKEY)
diff --git a/src/fs/fs.conf.in b/src/fs/fs.conf.in
index 92bcf776d..1e4c5c268 100644
--- a/src/fs/fs.conf.in
+++ b/src/fs/fs.conf.in
@@ -11,6 +11,8 @@ BINARY = gnunet-service-fs
11ACCEPT_FROM = 127.0.0.1; 11ACCEPT_FROM = 127.0.0.1;
12ACCEPT_FROM6 = ::1; 12ACCEPT_FROM6 = ::1;
13 13
14# PREFIX = valgrind
15
14# Do we introduce artificial delays? (may improve anonymity) 16# Do we introduce artificial delays? (may improve anonymity)
15DELAY = YES 17DELAY = YES
16 18
diff --git a/src/fs/fs_dirmetascan.c b/src/fs/fs_dirmetascan.c
index 4a86a717f..115f99391 100644
--- a/src/fs/fs_dirmetascan.c
+++ b/src/fs/fs_dirmetascan.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -332,10 +332,7 @@ process_helper_msgs (void *cls,
332 break; 332 break;
333 } 333 }
334 if (NULL == ds->toplevel) 334 if (NULL == ds->toplevel)
335 {
336 GNUNET_break (0);
337 break; 335 break;
338 }
339 ds->progress_callback (ds->progress_callback_cls, 336 ds->progress_callback (ds->progress_callback_cls,
340 NULL, GNUNET_SYSERR, 337 NULL, GNUNET_SYSERR,
341 GNUNET_FS_DIRSCANNER_ALL_COUNTED); 338 GNUNET_FS_DIRSCANNER_ALL_COUNTED);
@@ -408,10 +405,7 @@ process_helper_msgs (void *cls,
408 break; 405 break;
409 } 406 }
410 if (NULL == ds->toplevel) 407 if (NULL == ds->toplevel)
411 {
412 GNUNET_break (0);
413 break; 408 break;
414 }
415 ds->stop_task = GNUNET_SCHEDULER_add_now (&finish_scan, 409 ds->stop_task = GNUNET_SCHEDULER_add_now (&finish_scan,
416 ds); 410 ds);
417 return GNUNET_OK; 411 return GNUNET_OK;
diff --git a/src/fs/fs_publish.c b/src/fs/fs_publish.c
index c7f3c4152..71ab1122c 100644
--- a/src/fs/fs_publish.c
+++ b/src/fs/fs_publish.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -716,17 +716,21 @@ handle_index_start_failed (void *cls,
716 struct GNUNET_FS_PublishContext *pc = cls; 716 struct GNUNET_FS_PublishContext *pc = cls;
717 struct GNUNET_FS_FileInformation *p; 717 struct GNUNET_FS_FileInformation *p;
718 const char *emsg = (const char *) &msg[1]; 718 const char *emsg = (const char *) &msg[1];
719 char *msgtxt;
719 720
720 GNUNET_MQ_destroy (pc->mq); 721 GNUNET_MQ_destroy (pc->mq);
721 pc->mq = NULL; 722 pc->mq = NULL;
722 p = pc->fi_pos; 723 p = pc->fi_pos;
723 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 724 GNUNET_asprintf (&msgtxt,
724 _("Can not index file `%s': %s. Will try to insert instead.\n"), 725 _("Can not index file `%s': %s.\n"),
725 p->filename, 726 p->filename,
726 gettext (emsg)); 727 gettext (emsg));
727 p->data.file.do_index = GNUNET_NO; 728 signal_publish_error (p,
729 pc,
730 msgtxt);
731 GNUNET_free (msgtxt);
728 GNUNET_FS_file_information_sync_ (p); 732 GNUNET_FS_file_information_sync_ (p);
729 publish_content (pc); 733 GNUNET_FS_publish_sync_ (pc);
730} 734}
731 735
732 736
diff --git a/src/fs/gnunet-publish.c b/src/fs/gnunet-publish.c
index a825795cb..eb8a7ed19 100644
--- a/src/fs/gnunet-publish.c
+++ b/src/fs/gnunet-publish.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -684,7 +684,7 @@ directory_scan_cb (void *cls,
684 case GNUNET_FS_DIRSCANNER_INTERNAL_ERROR: 684 case GNUNET_FS_DIRSCANNER_INTERNAL_ERROR:
685 FPRINTF (stdout, 685 FPRINTF (stdout,
686 "%s", 686 "%s",
687 _("Internal error scanning directory.\n")); 687 _("Error scanning directory.\n"));
688 ret = 1; 688 ret = 1;
689 GNUNET_SCHEDULER_shutdown (); 689 GNUNET_SCHEDULER_shutdown ();
690 break; 690 break;
diff --git a/src/fs/gnunet-search.c b/src/fs/gnunet-search.c
index 57d8eed5d..3995b1b5b 100644
--- a/src/fs/gnunet-search.c
+++ b/src/fs/gnunet-search.c
@@ -172,8 +172,11 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *info)
172 is_directory = 172 is_directory =
173 GNUNET_FS_meta_data_test_for_directory (info->value.search. 173 GNUNET_FS_meta_data_test_for_directory (info->value.search.
174 specifics.result.meta); 174 specifics.result.meta);
175 if (filename != NULL) 175 if (NULL != filename)
176 { 176 {
177 while ( (filename[0] != '\0') &&
178 ('/' == filename[strlen(filename)-1]) )
179 filename[strlen(filename)-1] = '\0';
177 GNUNET_DISK_filename_canonicalize (filename); 180 GNUNET_DISK_filename_canonicalize (filename);
178 if (GNUNET_YES == is_directory) 181 if (GNUNET_YES == is_directory)
179 printf ("gnunet-download -o \"%s%s\" -R %s\n", filename, GNUNET_FS_DIRECTORY_EXT, uri); 182 printf ("gnunet-download -o \"%s%s\" -R %s\n", filename, GNUNET_FS_DIRECTORY_EXT, uri);
diff --git a/src/fs/gnunet-service-fs_cadet_client.c b/src/fs/gnunet-service-fs_cadet_client.c
index 61f73a50a..9ba250dfa 100644
--- a/src/fs/gnunet-service-fs_cadet_client.c
+++ b/src/fs/gnunet-service-fs_cadet_client.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -469,8 +469,11 @@ reset_cadet (struct CadetHandle *mh)
469 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 469 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
470 "Resetting cadet channel to %s\n", 470 "Resetting cadet channel to %s\n",
471 GNUNET_i2s (&mh->target)); 471 GNUNET_i2s (&mh->target));
472 GNUNET_CADET_channel_destroy (mh->channel); 472 if (NULL != mh->channel)
473 mh->channel = NULL; 473 {
474 GNUNET_CADET_channel_destroy (mh->channel);
475 mh->channel = NULL;
476 }
474 GNUNET_CONTAINER_multihashmap_iterate (mh->waiting_map, 477 GNUNET_CONTAINER_multihashmap_iterate (mh->waiting_map,
475 &move_to_pending, 478 &move_to_pending,
476 mh); 479 mh);
@@ -741,7 +744,17 @@ GSF_cadet_release_clients (void *cls,
741 "Timeout on cadet channel to %s\n", 744 "Timeout on cadet channel to %s\n",
742 GNUNET_i2s (&mh->target)); 745 GNUNET_i2s (&mh->target));
743 if (NULL != mh->channel) 746 if (NULL != mh->channel)
744 GNUNET_CADET_channel_destroy (mh->channel); 747 {
748 struct GNUNET_CADET_Channel *channel = mh->channel;
749
750 mh->channel = NULL;
751 GNUNET_CADET_channel_destroy (channel);
752 }
753 if (NULL != mh->reset_task)
754 {
755 GNUNET_SCHEDULER_cancel (mh->reset_task);
756 mh->reset_task = NULL;
757 }
745 return GNUNET_YES; 758 return GNUNET_YES;
746} 759}
747 760
diff --git a/src/fs/test_gnunet_fs_psd.py.in b/src/fs/test_gnunet_fs_psd.py.in
index 416ab5db3..d5a036c28 100755
--- a/src/fs/test_gnunet_fs_psd.py.in
+++ b/src/fs/test_gnunet_fs_psd.py.in
@@ -18,6 +18,7 @@
18# SPDX-License-Identifier: AGPL3.0-or-later 18# SPDX-License-Identifier: AGPL3.0-or-later
19# 19#
20# Testcase for file-sharing command-line tools (publish, search, download) 20# Testcase for file-sharing command-line tools (publish, search, download)
21from __future__ import print_function
21import sys 22import sys
22import os 23import os
23import subprocess 24import subprocess
diff --git a/src/gns/.gitignore b/src/gns/.gitignore
index 2b9a18f21..3bbb2eb3d 100644
--- a/src/gns/.gitignore
+++ b/src/gns/.gitignore
@@ -4,3 +4,9 @@ gnunet-dns2gns
4gnunet-gns 4gnunet-gns
5gnunet-gns-proxy 5gnunet-gns-proxy
6gnunet-gns-benchmark 6gnunet-gns-benchmark
7test_gns_proxy
8local.crt
9local.der
10local.key
11server.csr
12gnunet-gns-proxy-setup-ca
diff --git a/src/gns/Makefile.am b/src/gns/Makefile.am
index 1abc57d57..434d50f34 100644
--- a/src/gns/Makefile.am
+++ b/src/gns/Makefile.am
@@ -14,7 +14,8 @@ EXTRA_DIST = \
14 test_gns_simple_lookup.conf \ 14 test_gns_simple_lookup.conf \
15 gns-helper-service-w32.conf \ 15 gns-helper-service-w32.conf \
16 w32nsp.def \ 16 w32nsp.def \
17 gnunet-gns-proxy-setup-ca \ 17 openssl.cnf \
18 gnunet-gns-proxy-setup-ca.in \
18 zonefiles/J7POEUT41A8PBFS7KVVDRF88GBOU4HK8PSU5QKVLVE3R9T91E99G.zkey \ 19 zonefiles/J7POEUT41A8PBFS7KVVDRF88GBOU4HK8PSU5QKVLVE3R9T91E99G.zkey \
19 zonefiles/OEFL7A4VEF1B40QLEMTG5D8G1CN6EN16QUSG5R2DT71GRJN34LSG.zkey \ 20 zonefiles/OEFL7A4VEF1B40QLEMTG5D8G1CN6EN16QUSG5R2DT71GRJN34LSG.zkey \
20 zonefiles/test_zonekey \ 21 zonefiles/test_zonekey \
@@ -79,19 +80,30 @@ bin_PROGRAMS = \
79noinst_PROGRAMS = \ 80noinst_PROGRAMS = \
80 gnunet-gns-benchmark 81 gnunet-gns-benchmark
81 82
83pkgdata_DATA = \
84 openssl.cnf
85
82if HAVE_MHD 86if HAVE_MHD
83if LINUX 87if LINUX
84bin_PROGRAMS += gnunet-bcd 88bin_PROGRAMS += gnunet-bcd
85endif 89endif
86endif 90endif
87 91
88bin_SCRIPTS = gnunet-gns-proxy-setup-ca
89
90plugin_LTLIBRARIES = \ 92plugin_LTLIBRARIES = \
91 libgnunet_plugin_block_gns.la \ 93 libgnunet_plugin_block_gns.la \
92 libgnunet_plugin_gnsrecord_gns.la 94 libgnunet_plugin_gnsrecord_gns.la
93 95
94 96
97bin_SCRIPTS = \
98 gnunet-gns-proxy-setup-ca
99
100# See: https://www.gnu.org/software/automake/manual/html_node/Scripts.html#Scripts
101do_subst = sed -e 's,[@]pkgdatadir[@],$(pkgdatadir),g'
102
103gnunet-gns-proxy-setup-ca: gnunet-gns-proxy-setup-ca.in Makefile
104 $(do_subst) < $(srcdir)/gnunet-gns-proxy-setup-ca.in > gnunet-gns-proxy-setup-ca
105 chmod +x gnunet-gns-proxy-setup-ca
106
95libgnunet_plugin_gnsrecord_gns_la_SOURCES = \ 107libgnunet_plugin_gnsrecord_gns_la_SOURCES = \
96 plugin_gnsrecord_gns.c 108 plugin_gnsrecord_gns.c
97libgnunet_plugin_gnsrecord_gns_la_LIBADD = \ 109libgnunet_plugin_gnsrecord_gns_la_LIBADD = \
diff --git a/src/gns/gnunet-gns-proxy-setup-ca b/src/gns/gnunet-gns-proxy-setup-ca.in
index 7c1d58dc2..0a6fab18a 100644
--- a/src/gns/gnunet-gns-proxy-setup-ca
+++ b/src/gns/gnunet-gns-proxy-setup-ca.in
@@ -3,15 +3,13 @@
3# and install it (for both GNUnet and your browser). 3# and install it (for both GNUnet and your browser).
4# 4#
5 5
6# TODO: We should sed the real paths to the binaries involved here. 6OPENSSLCFG=@pkgdatadir@/openssl.cnf
7
8if ! which openssl > /dev/null 7if ! which openssl > /dev/null
9then 8then
10 echo "'openssl' command not found. Please install it." 9 echo "'openssl' command not found. Please install it."
11 exit 1 10 exit 1
12fi 11fi
13 12
14
15echo "Generating CA" 13echo "Generating CA"
16options='' 14options=''
17while getopts "c:" opt; do 15while getopts "c:" opt; do
@@ -36,7 +34,7 @@ GNSCANO=`mktemp /tmp/gnscakeynoencXXXXXX.pem`
36GNS_CA_CERT_PEM=`gnunet-config -s gns-proxy -o PROXY_CACERT -f $options` 34GNS_CA_CERT_PEM=`gnunet-config -s gns-proxy -o PROXY_CACERT -f $options`
37mkdir -p `dirname $GNS_CA_CERT_PEM` 35mkdir -p `dirname $GNS_CA_CERT_PEM`
38 36
39openssl req -new -x509 -days 3650 -extensions v3_ca -keyout $GNSCAKY -out $GNSCERT -subj "/C=ZZ/L=World/O=GNU/OU=GNUnet/CN=GNS Proxy CA/emailAddress=bounce@gnunet.org" -passout pass:"GNU Name System" 37openssl req -config $OPENSSLCFG -new -x509 -days 3650 -extensions v3_ca -keyout $GNSCAKY -out $GNSCERT -subj "/C=ZZ/L=World/O=GNU/OU=GNUnet/CN=GNS Proxy CA/emailAddress=bounce@gnunet.org" -passout pass:"GNU Name System"
40 38
41echo "Removing passphrase from key" 39echo "Removing passphrase from key"
42openssl rsa -passin pass:"GNU Name System" -in $GNSCAKY -out $GNSCANO 40openssl rsa -passin pass:"GNU Name System" -in $GNSCAKY -out $GNSCANO
@@ -46,7 +44,8 @@ cat $GNSCERT $GNSCANO > $GNS_CA_CERT_PEM
46 44
47if ! which certutil > /dev/null 45if ! which certutil > /dev/null
48then 46then
49 echo "'certutil' command not found. Not importing into browsers." 47 echo "The 'certutil' command was not found. Not importing into browsers."
48 echo "For 'certutil' install nss."
50else 49else
51 echo "Importing CA into browsers" 50 echo "Importing CA into browsers"
52 for f in ~/.mozilla/firefox/*.*/ 51 for f in ~/.mozilla/firefox/*.*/
diff --git a/src/gns/gnunet-gns-proxy.c b/src/gns/gnunet-gns-proxy.c
index 21451651d..65a7b6018 100644
--- a/src/gns/gnunet-gns-proxy.c
+++ b/src/gns/gnunet-gns-proxy.c
@@ -972,7 +972,7 @@ check_ssl_certificate (struct Socks5Request *s5r)
972 if (CURLE_OK != 972 if (CURLE_OK !=
973 curl_easy_getinfo (s5r->curl, 973 curl_easy_getinfo (s5r->curl,
974 CURLINFO_TLS_SESSION, 974 CURLINFO_TLS_SESSION,
975 (struct curl_slist **) &tlsinfo)) 975 &tlsinfo))
976 return GNUNET_SYSERR; 976 return GNUNET_SYSERR;
977 if (CURLSSLBACKEND_GNUTLS != tlsinfo->backend) 977 if (CURLSSLBACKEND_GNUTLS != tlsinfo->backend)
978 { 978 {
@@ -2045,11 +2045,12 @@ create_response (void *cls,
2045 const char *us; 2045 const char *us;
2046 long upload_size; 2046 long upload_size;
2047 2047
2048 upload_size = 0;
2048 us = MHD_lookup_connection_value (con, 2049 us = MHD_lookup_connection_value (con,
2049 MHD_HEADER_KIND, 2050 MHD_HEADER_KIND,
2050 MHD_HTTP_HEADER_CONTENT_LENGTH); 2051 MHD_HTTP_HEADER_CONTENT_LENGTH);
2051 if ( (NULL != us) && 2052 if ( (NULL != us) &&
2052 (1 == sscanf (us, 2053 (1 == sscanf (us,
2053 "%ld", 2054 "%ld",
2054 &upload_size)) && 2055 &upload_size)) &&
2055 (upload_size >= 0) ) 2056 (upload_size >= 0) )
@@ -2149,7 +2150,7 @@ create_response (void *cls,
2149 curl_easy_setopt (s5r->curl, 2150 curl_easy_setopt (s5r->curl,
2150 CURLOPT_USE_SSL, 2151 CURLOPT_USE_SSL,
2151 CURLUSESSL_ALL); 2152 CURLUSESSL_ALL);
2152 if (NULL != s5r->dane_data) 2153 if (0 < s5r->num_danes)
2153 curl_easy_setopt (s5r->curl, 2154 curl_easy_setopt (s5r->curl,
2154 CURLOPT_SSL_VERIFYPEER, 2155 CURLOPT_SSL_VERIFYPEER,
2155 0L); 2156 0L);
diff --git a/src/gns/openssl.cnf b/src/gns/openssl.cnf
new file mode 100644
index 000000000..503460f9f
--- /dev/null
+++ b/src/gns/openssl.cnf
@@ -0,0 +1,245 @@
1#
2# OpenSSL example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6# This definition stops the following lines choking if HOME isn't
7# defined.
8HOME = .
9RANDFILE = $ENV::HOME/.rnd
10
11# Extra OBJECT IDENTIFIER info:
12#oid_file = $ENV::HOME/.oid
13oid_section = new_oids
14
15# To use this configuration file with the "-extfile" option of the
16# "openssl x509" utility, name here the section containing the
17# X.509v3 extensions to use:
18# extensions =
19# (Alternatively, use a configuration file that has only
20# X.509v3 extensions in its main [= default] section.)
21
22[ new_oids ]
23
24# We can add new OIDs in here for use by 'ca' and 'req'.
25# Add a simple OID like this:
26# testoid1=1.2.3.4
27# Or use config file substitution like this:
28# testoid2=${testoid1}.5.6
29
30####################################################################
31[ ca ]
32default_ca = CA_default # The default ca section
33
34####################################################################
35[ CA_default ]
36
37dir = ./demoCA # Where everything is kept
38certs = $dir/certs # Where the issued certs are kept
39crl_dir = $dir/crl # Where the issued crl are kept
40database = $dir/index.txt # database index file.
41new_certs_dir = $dir/newcerts # default place for new certs.
42
43certificate = $dir/cacert.pem # The CA certificate
44serial = $dir/serial # The current serial number
45crl = $dir/crl.pem # The current CRL
46private_key = $dir/private/cakey.pem# The private key
47RANDFILE = $dir/private/.rand # private random number file
48
49x509_extensions = usr_cert # The extentions to add to the cert
50
51# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
52# so this is commented out by default to leave a V1 CRL.
53# crl_extensions = crl_ext
54
55default_days = 365 # how long to certify for
56default_crl_days= 30 # how long before next CRL
57default_md = md5 # which md to use.
58preserve = no # keep passed DN ordering
59
60# A few difference way of specifying how similar the request should look
61# For type CA, the listed attributes must be the same, and the optional
62# and supplied fields are just that :-)
63policy = policy_match
64
65# For the CA policy
66[ policy_match ]
67countryName = match
68stateOrProvinceName = match
69organizationName = match
70organizationalUnitName = optional
71commonName = supplied
72emailAddress = optional
73
74# For the 'anything' policy
75# At this point in time, you must list all acceptable 'object'
76# types.
77[ policy_anything ]
78countryName = optional
79stateOrProvinceName = optional
80localityName = optional
81organizationName = optional
82organizationalUnitName = optional
83commonName = supplied
84emailAddress = optional
85
86####################################################################
87[ req ]
88default_bits = 1024
89default_keyfile = privkey.pem
90distinguished_name = req_distinguished_name
91attributes = req_attributes
92x509_extensions = v3_ca # The extentions to add to the self signed cert
93
94# Passwords for private keys if not present they will be prompted for
95# input_password = secret
96# output_password = secret
97
98# This sets a mask for permitted string types. There are several options.
99# default: PrintableString, T61String, BMPString.
100# pkix : PrintableString, BMPString.
101# utf8only: only UTF8Strings.
102# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
103# MASK:XXXX a literal mask value.
104# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
105# so use this option with caution!
106string_mask = nombstr
107
108# req_extensions = v3_req # The extensions to add to a certificate request
109
110[ req_distinguished_name ]
111countryName = Country Name (2 letter code)
112countryName_default = AU
113countryName_min = 2
114countryName_max = 2
115
116stateOrProvinceName = State or Province Name (full name)
117stateOrProvinceName_default = Some-State
118
119localityName = Locality Name (eg, city)
120
1210.organizationName = Organization Name (eg, company)
1220.organizationName_default = Internet Widgits Pty Ltd
123
124# we can do this but it is not needed normally :-)
125#1.organizationName = Second Organization Name (eg, company)
126#1.organizationName_default = World Wide Web Pty Ltd
127
128organizationalUnitName = Organizational Unit Name (eg, section)
129#organizationalUnitName_default =
130
131commonName = Common Name (eg, YOUR name)
132commonName_max = 64
133
134emailAddress = Email Address
135emailAddress_max = 40
136
137# SET-ex3 = SET extension number 3
138
139[ req_attributes ]
140challengePassword = A challenge password
141challengePassword_min = 4
142challengePassword_max = 20
143
144unstructuredName = An optional company name
145
146[ usr_cert ]
147
148# These extensions are added when 'ca' signs a request.
149
150# This goes against PKIX guidelines but some CAs do it and some software
151# requires this to avoid interpreting an end user certificate as a CA.
152
153basicConstraints=CA:FALSE
154
155# Here are some examples of the usage of nsCertType. If it is omitted
156# the certificate can be used for anything *except* object signing.
157
158# This is OK for an SSL server.
159# nsCertType = server
160
161# For an object signing certificate this would be used.
162# nsCertType = objsign
163
164# For normal client use this is typical
165# nsCertType = client, email
166
167# and for everything including object signing:
168# nsCertType = client, email, objsign
169
170# This is typical in keyUsage for a client certificate.
171# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
172
173# This will be displayed in Netscape's comment listbox.
174nsComment = "OpenSSL Generated Certificate"
175
176# PKIX recommendations harmless if included in all certificates.
177subjectKeyIdentifier=hash
178authorityKeyIdentifier=keyid,issuer:always
179
180# This stuff is for subjectAltName and issuerAltname.
181# Import the email address.
182# subjectAltName=email:copy
183
184# Copy subject details
185# issuerAltName=issuer:copy
186
187#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
188#nsBaseUrl
189#nsRevocationUrl
190#nsRenewalUrl
191#nsCaPolicyUrl
192#nsSslServerName
193
194[ v3_req ]
195
196# Extensions to add to a certificate request
197
198basicConstraints = CA:FALSE
199keyUsage = nonRepudiation, digitalSignature, keyEncipherment
200
201[ v3_ca ]
202
203
204# Extensions for a typical CA
205
206
207# PKIX recommendation.
208
209subjectKeyIdentifier=hash
210
211authorityKeyIdentifier=keyid:always,issuer:always
212
213# This is what PKIX recommends but some broken software chokes on critical
214# extensions.
215#basicConstraints = critical,CA:true
216# So we do this instead.
217basicConstraints = CA:true
218
219# Key usage: this is typical for a CA certificate. However since it will
220# prevent it being used as an test self-signed certificate it is best
221# left out by default.
222# keyUsage = cRLSign, keyCertSign
223
224# Some might want this also
225# nsCertType = sslCA, emailCA
226
227# Include email address in subject alt name: another PKIX recommendation
228# subjectAltName=email:copy
229# Copy issuer details
230# issuerAltName=issuer:copy
231
232# DER hex encoding of an extension: beware experts only!
233# obj=DER:02:03
234# Where 'obj' is a standard or added object
235# You can even override a supported extension:
236# basicConstraints= critical, DER:30:03:01:01:FF
237
238[ crl_ext ]
239
240# CRL extensions.
241# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
242
243# issuerAltName=issuer:copy
244authorityKeyIdentifier=keyid:always,issuer:always
245
diff --git a/src/gns/test_gns_nick_shorten.conf b/src/gns/test_gns_nick_shorten.conf
deleted file mode 100644
index 317477c80..000000000
--- a/src/gns/test_gns_nick_shorten.conf
+++ /dev/null
@@ -1,24 +0,0 @@
1@INLINE@ test_gns_defaults.conf
2
3[PATHS]
4GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-gns-peer-1/
5
6[dht]
7START_ON_DEMAND = YES
8
9[transport]
10PLUGINS =
11
12[gns]
13#PREFIX = valgrind --leak-check=full --track-origins=yes
14START_ON_DEMAND = YES
15AUTO_IMPORT_PKEY = YES
16MAX_PARALLEL_BACKGROUND_QUERIES = 10
17DEFAULT_LOOKUP_TIMEOUT = 15 s
18RECORD_PUT_INTERVAL = 1 h
19ZONE_PUBLISH_TIME_WINDOW = 1 h
20DNS_ROOT=PD67SGHF3E0447TU9HADIVU9OM7V4QHTOG0EBU69TFRI2LG63DR0
21#USE_CACHE = NO
22
23[revocation]
24WORKBITS = 1
diff --git a/src/gns/test_gns_rel_expiration.sh b/src/gns/test_gns_rel_expiration.sh
index 66adbb631..c7c66bc27 100755
--- a/src/gns/test_gns_rel_expiration.sh
+++ b/src/gns/test_gns_rel_expiration.sh
@@ -7,6 +7,13 @@ if [ -z $LOCATION ]
7then 7then
8 LOCATION="gnunet-config" 8 LOCATION="gnunet-config"
9fi 9fi
10
11if [ -z $(which timeout) ]
12then
13 echo "timeout utility not found which is required for test."
14 exit 77
15fi
16
10$LOCATION --version 1> /dev/null 17$LOCATION --version 1> /dev/null
11if test $? != 0 18if test $? != 0
12then 19then
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
index 195cac075..4e84e023c 100644
--- a/src/include/Makefile.am
+++ b/src/include/Makefile.am
@@ -33,6 +33,7 @@ gnunetinclude_HEADERS = \
33 gnunet_ats_application_service.h \ 33 gnunet_ats_application_service.h \
34 gnunet_ats_transport_service.h \ 34 gnunet_ats_transport_service.h \
35 gnunet_ats_plugin.h \ 35 gnunet_ats_plugin.h \
36 gnunet_ats_plugin_new.h \
36 gnunet_bandwidth_lib.h \ 37 gnunet_bandwidth_lib.h \
37 gnunet_bio_lib.h \ 38 gnunet_bio_lib.h \
38 gnunet_block_lib.h \ 39 gnunet_block_lib.h \
@@ -58,7 +59,6 @@ gnunetinclude_HEADERS = \
58 gnunet_dnsparser_lib.h \ 59 gnunet_dnsparser_lib.h \
59 gnunet_dnsstub_lib.h \ 60 gnunet_dnsstub_lib.h \
60 gnunet_dns_service.h \ 61 gnunet_dns_service.h \
61 gnunet_dv_service.h \
62 gnunet_fragmentation_lib.h \ 62 gnunet_fragmentation_lib.h \
63 gnunet_friends_lib.h \ 63 gnunet_friends_lib.h \
64 gnunet_fs_service.h \ 64 gnunet_fs_service.h \
@@ -69,8 +69,8 @@ gnunetinclude_HEADERS = \
69 gnunet_hello_lib.h \ 69 gnunet_hello_lib.h \
70 gnunet_helper_lib.h \ 70 gnunet_helper_lib.h \
71 gnunet_identity_service.h \ 71 gnunet_identity_service.h \
72 gnunet_abe_lib.h \ 72 gnunet_abe_lib.h \
73 gnunet_reclaim_attribute_lib.h \ 73 gnunet_reclaim_attribute_lib.h \
74 gnunet_reclaim_attribute_plugin.h \ 74 gnunet_reclaim_attribute_plugin.h \
75 gnunet_reclaim_plugin.h \ 75 gnunet_reclaim_plugin.h \
76 gnunet_reclaim_service.h \ 76 gnunet_reclaim_service.h \
@@ -78,7 +78,6 @@ gnunetinclude_HEADERS = \
78 gnunet_load_lib.h \ 78 gnunet_load_lib.h \
79 gnunet_cadet_service.h \ 79 gnunet_cadet_service.h \
80 gnunet_microphone_lib.h \ 80 gnunet_microphone_lib.h \
81 gnunet_multicast_service.h \
82 gnunet_mst_lib.h \ 81 gnunet_mst_lib.h \
83 gnunet_mq_lib.h \ 82 gnunet_mq_lib.h \
84 gnunet_my_lib.h \ 83 gnunet_my_lib.h \
@@ -101,19 +100,13 @@ gnunetinclude_HEADERS = \
101 gnunet_peerstore_service.h \ 100 gnunet_peerstore_service.h \
102 gnunet_plugin_lib.h \ 101 gnunet_plugin_lib.h \
103 gnunet_pq_lib.h \ 102 gnunet_pq_lib.h \
104 gnunet_psycstore_plugin.h \
105 gnunet_psycstore_service.h \
106 gnunet_psyc_service.h \
107 gnunet_psyc_util_lib.h \
108 gnunet_psyc_env.h \
109 gnunet_psyc_message.h \
110 gnunet_psyc_slicer.h \
111 gnunet_program_lib.h \ 103 gnunet_program_lib.h \
112 gnunet_protocols.h \ 104 gnunet_protocols.h \
113 gnunet_resolver_service.h \ 105 gnunet_resolver_service.h \
114 gnunet_regex_service.h \ 106 gnunet_regex_service.h \
115 gnunet_rest_lib.h \ 107 gnunet_rest_lib.h \
116 gnunet_rest_plugin.h \ 108 gnunet_rest_plugin.h \
109 gnunet_rps_service.h \
117 gnunet_revocation_service.h \ 110 gnunet_revocation_service.h \
118 gnunet_scalarproduct_service.h \ 111 gnunet_scalarproduct_service.h \
119 gnunet_scheduler_lib.h \ 112 gnunet_scheduler_lib.h \
@@ -122,7 +115,6 @@ gnunetinclude_HEADERS = \
122 gnunet_set_service.h \ 115 gnunet_set_service.h \
123 gnunet_signal_lib.h \ 116 gnunet_signal_lib.h \
124 gnunet_signatures.h \ 117 gnunet_signatures.h \
125 gnunet_social_service.h \
126 gnunet_socks.h \ 118 gnunet_socks.h \
127 gnunet_speaker_lib.h \ 119 gnunet_speaker_lib.h \
128 gnunet_sq_lib.h \ 120 gnunet_sq_lib.h \
@@ -133,6 +125,7 @@ gnunetinclude_HEADERS = \
133 gnunet_testing_lib.h \ 125 gnunet_testing_lib.h \
134 gnunet_time_lib.h \ 126 gnunet_time_lib.h \
135 gnunet_transport_service.h \ 127 gnunet_transport_service.h \
128 gnunet_transport_address_service.h \
136 gnunet_transport_communication_service.h \ 129 gnunet_transport_communication_service.h \
137 gnunet_transport_core_service.h \ 130 gnunet_transport_core_service.h \
138 gnunet_transport_hello_service.h \ 131 gnunet_transport_hello_service.h \
diff --git a/src/include/gnunet_cadet_service.h b/src/include/gnunet_cadet_service.h
index ac3d11216..b8326657d 100644
--- a/src/include/gnunet_cadet_service.h
+++ b/src/include/gnunet_cadet_service.h
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -369,7 +369,7 @@ GNUNET_CADET_channel_get_info (struct GNUNET_CADET_Channel *channel,
369 369
370/** 370/**
371 * Internal details about a channel. 371 * Internal details about a channel.
372 */ 372 */
373struct GNUNET_CADET_ChannelInternals 373struct GNUNET_CADET_ChannelInternals
374{ 374{
375 /** 375 /**
@@ -431,7 +431,7 @@ GNUNET_CADET_get_channel_cancel (struct GNUNET_CADET_ChannelMonitor *cm);
431 431
432/** 432/**
433 * Information we return per peer. 433 * Information we return per peer.
434 */ 434 */
435struct GNUNET_CADET_PeerListEntry 435struct GNUNET_CADET_PeerListEntry
436{ 436{
437 /** 437 /**
@@ -446,7 +446,7 @@ struct GNUNET_CADET_PeerListEntry
446 446
447 /** 447 /**
448 * Number of disjoint known paths to @e peer. 448 * Number of disjoint known paths to @e peer.
449 */ 449 */
450 unsigned int n_paths; 450 unsigned int n_paths;
451 451
452 /** 452 /**
@@ -504,7 +504,7 @@ GNUNET_CADET_list_peers_cancel (struct GNUNET_CADET_PeersLister *pl);
504 504
505/** 505/**
506 * Detailed information we return per peer. 506 * Detailed information we return per peer.
507 */ 507 */
508struct GNUNET_CADET_PeerPathDetail 508struct GNUNET_CADET_PeerPathDetail
509{ 509{
510 /** 510 /**
@@ -513,6 +513,11 @@ struct GNUNET_CADET_PeerPathDetail
513 struct GNUNET_PeerIdentity peer; 513 struct GNUNET_PeerIdentity peer;
514 514
515 /** 515 /**
516 * Offset of the target peer on the @e path.
517 */
518 unsigned int target_offset;
519
520 /**
516 * Number of entries on the @e path. 521 * Number of entries on the @e path.
517 */ 522 */
518 unsigned int path_length; 523 unsigned int path_length;
@@ -583,7 +588,7 @@ struct GNUNET_CADET_TunnelDetails
583 588
584 /** 589 /**
585 * How many channels use the tunnel. 590 * How many channels use the tunnel.
586 */ 591 */
587 uint32_t channels; 592 uint32_t channels;
588 593
589 /** 594 /**
@@ -597,8 +602,8 @@ struct GNUNET_CADET_TunnelDetails
597 uint16_t estate; 602 uint16_t estate;
598 603
599 /** 604 /**
600 * What is our connectivity state? 605 * What is our connectivity state?
601 */ 606 */
602 uint16_t cstate; 607 uint16_t cstate;
603}; 608};
604 609
diff --git a/src/include/gnunet_common.h b/src/include/gnunet_common.h
index e482e5ebe..ca49d3109 100644
--- a/src/include/gnunet_common.h
+++ b/src/include/gnunet_common.h
@@ -119,6 +119,7 @@ extern "C"
119 */ 119 */
120#define GNUNET_VA_ARG_ENUM(va,X) ((enum X) va_arg (va, int)) 120#define GNUNET_VA_ARG_ENUM(va,X) ((enum X) va_arg (va, int))
121 121
122
122/** 123/**
123 * @ingroup logging 124 * @ingroup logging
124 * define #GNUNET_EXTRA_LOGGING if using this header outside the GNUnet source 125 * define #GNUNET_EXTRA_LOGGING if using this header outside the GNUnet source
@@ -410,7 +411,7 @@ GNUNET_get_log_call_status (int caller_level,
410 */ 411 */
411void 412void
412GNUNET_log_nocheck (enum GNUNET_ErrorType kind, const char *message, ...) 413GNUNET_log_nocheck (enum GNUNET_ErrorType kind, const char *message, ...)
413 __attribute__ ((format (gnu_printf, 2, 3))); 414 __attribute__ ((format (printf, 2, 3)));
414 415
415/* from glib */ 416/* from glib */
416#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) 417#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
diff --git a/src/include/gnunet_dv_service.h b/src/include/gnunet_dv_service.h
deleted file mode 100644
index 334912773..000000000
--- a/src/include/gnunet_dv_service.h
+++ /dev/null
@@ -1,166 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013, 2016 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Christian Grothoff
23 *
24 * @file
25 * DV service API (should only be used by the DV plugin)
26 *
27 * @defgroup dv DV service
28 * Distance Vector routing
29 *
30 * The DV service API should only be used by the DV plugin.
31 * @{
32 */
33#ifndef GNUNET_SERVICE_DV_H
34#define GNUNET_SERVICE_DV_H
35
36#include "gnunet_util_lib.h"
37#include "gnunet_ats_service.h"
38
39/**
40 * Signature of a function to be called if DV
41 * starts to be able to talk to a peer.
42 *
43 * @param cls closure
44 * @param peer newly connected peer
45 * @param distance distance to the peer
46 * @param network the peer is located in
47 */
48typedef void
49(*GNUNET_DV_ConnectCallback)(void *cls,
50 const struct GNUNET_PeerIdentity *peer,
51 uint32_t distance,
52 enum GNUNET_NetworkType network);
53
54
55/**
56 * Signature of a function to be called if DV
57 * distance to a peer is changed.
58 *
59 * @param cls closure
60 * @param peer connected peer
61 * @param distance new distance to the peer
62 * @param network this network will be used to reach the next hop
63 */
64typedef void
65(*GNUNET_DV_DistanceChangedCallback)(void *cls,
66 const struct GNUNET_PeerIdentity *peer,
67 uint32_t distance,
68 enum GNUNET_NetworkType network);
69
70
71/**
72 * Signature of a function to be called if DV
73 * is no longer able to talk to a peer.
74 *
75 * @param cls closure
76 * @param peer peer that disconnected
77 */
78typedef void
79(*GNUNET_DV_DisconnectCallback)(void *cls,
80 const struct GNUNET_PeerIdentity *peer);
81
82
83/**
84 * Signature of a function to be called if DV
85 * receives a message for this peer.
86 *
87 * @param cls closure
88 * @param sender sender of the message
89 * @param distance how far did the message travel
90 * @param msg actual message payload
91 */
92typedef void
93(*GNUNET_DV_MessageReceivedCallback)(void *cls,
94 const struct GNUNET_PeerIdentity *sender,
95 uint32_t distance,
96 const struct GNUNET_MessageHeader *msg);
97
98
99/**
100 * Signature of a function called once the delivery of a
101 * message has been successful.
102 *
103 * @param cls closure
104 */
105typedef void
106(*GNUNET_DV_MessageSentCallback)(void *cls);
107
108
109/**
110 * Handle to the DV service.
111 */
112struct GNUNET_DV_ServiceHandle;
113
114
115/**
116 * Connect to the DV service.
117 *
118 * @param cfg configuration
119 * @param cls closure for callbacks
120 * @param connect_cb function to call on connects
121 * @param distance_cb function to call if distances change
122 * @param disconnect_cb function to call on disconnects
123 * @param message_cb function to call if we receive messages
124 * @return handle to access the service
125 */
126struct GNUNET_DV_ServiceHandle *
127GNUNET_DV_service_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
128 void *cls,
129 GNUNET_DV_ConnectCallback connect_cb,
130 GNUNET_DV_DistanceChangedCallback distance_cb,
131 GNUNET_DV_DisconnectCallback disconnect_cb,
132 GNUNET_DV_MessageReceivedCallback message_cb);
133
134
135/**
136 * Disconnect from DV service.
137 *
138 * @param sh service handle
139 */
140void
141GNUNET_DV_service_disconnect (struct GNUNET_DV_ServiceHandle *sh);
142
143
144/**
145 * Handle for a send operation.
146 */
147struct GNUNET_DV_TransmitHandle;
148
149
150/**
151 * Send a message via DV service.
152 *
153 * @param sh service handle
154 * @param target intended recpient
155 * @param msg message payload
156 * @return handle to cancel the operation
157 */
158void
159GNUNET_DV_send (struct GNUNET_DV_ServiceHandle *sh,
160 const struct GNUNET_PeerIdentity *target,
161 const struct GNUNET_MessageHeader *msg);
162
163
164#endif
165
166/** @} */ /* end of group */
diff --git a/src/include/gnunet_hello_lib.h b/src/include/gnunet_hello_lib.h
index c2256fd0a..fcd422701 100644
--- a/src/include/gnunet_hello_lib.h
+++ b/src/include/gnunet_hello_lib.h
@@ -526,7 +526,7 @@ GNUNET_HELLO_extract_address (const void *raw,
526 * 526 *
527 * @param address a peer's address 527 * @param address a peer's address
528 * @return NULL if the address is mal-formed, otherwise the prefix 528 * @return NULL if the address is mal-formed, otherwise the prefix
529 */ 529 */
530char * 530char *
531GNUNET_HELLO_address_to_prefix (const char *address); 531GNUNET_HELLO_address_to_prefix (const char *address);
532 532
diff --git a/src/include/gnunet_multicast_service.h b/src/include/gnunet_multicast_service.h
deleted file mode 100644
index 58fca0b2e..000000000
--- a/src/include/gnunet_multicast_service.h
+++ /dev/null
@@ -1,925 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2012, 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Gabor X Toth
23 * @author Christian Grothoff
24 *
25 * @file
26 * Multicast service; multicast messaging via CADET
27 *
28 * @defgroup multicast Multicast service
29 * Multicast messaging via CADET.
30 * @{
31 */
32
33#ifndef GNUNET_MULTICAST_SERVICE_H
34#define GNUNET_MULTICAST_SERVICE_H
35
36#ifdef __cplusplus
37extern "C"
38{
39#if 0 /* keep Emacsens' auto-indent happy */
40}
41#endif
42#endif
43
44#include "gnunet_util_lib.h"
45#include "gnunet_transport_service.h"
46
47/**
48 * Version number of GNUnet-multicast API.
49 */
50#define GNUNET_MULTICAST_VERSION 0x00000000
51
52/**
53 * Opaque handle for a multicast group member.
54 */
55struct GNUNET_MULTICAST_Member;
56
57/**
58 * Handle for the origin of a multicast group.
59 */
60struct GNUNET_MULTICAST_Origin;
61
62
63enum GNUNET_MULTICAST_MessageFlags
64{
65 /**
66 * First fragment of a message.
67 */
68 GNUNET_MULTICAST_MESSAGE_FIRST_FRAGMENT = 1 << 0,
69
70 /**
71 * Last fragment of a message.
72 */
73 GNUNET_MULTICAST_MESSAGE_LAST_FRAGMENT = 1 << 1,
74
75 /**
76 * OR'ed flags if message is not fragmented.
77 */
78 GNUNET_MULTICAST_MESSAGE_NOT_FRAGMENTED
79 = GNUNET_MULTICAST_MESSAGE_FIRST_FRAGMENT
80 | GNUNET_MULTICAST_MESSAGE_LAST_FRAGMENT,
81
82 /**
83 * Historic message, used only locally when replaying messages from local
84 * storage.
85 */
86 GNUNET_MULTICAST_MESSAGE_HISTORIC = 1 << 30
87
88};
89
90
91GNUNET_NETWORK_STRUCT_BEGIN
92
93/**
94 * Header of a multicast message fragment.
95 *
96 * This format is public as the replay mechanism must replay message fragments using the
97 * same format. This is needed as we want to integrity-check message fragments within
98 * the multicast layer to avoid multicasting mal-formed messages.
99 */
100struct GNUNET_MULTICAST_MessageHeader
101{
102
103 /**
104 * Header for all multicast message fragments from the origin.
105 */
106 struct GNUNET_MessageHeader header;
107
108 /**
109 * Number of hops this message fragment has taken since the origin.
110 *
111 * Helpful to determine shortest paths to the origin among honest peers for
112 * unicast requests from members. Updated at each hop and thus not signed and
113 * not secure.
114 */
115 uint32_t hop_counter GNUNET_PACKED;
116
117 /**
118 * ECC signature of the message fragment.
119 *
120 * Signature must match the public key of the multicast group.
121 */
122 struct GNUNET_CRYPTO_EddsaSignature signature;
123
124 /**
125 * Purpose for the signature and size of the signed data.
126 */
127 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
128
129 /**
130 * Number of the message fragment, monotonically increasing starting from 1.
131 */
132 uint64_t fragment_id GNUNET_PACKED;
133
134 /**
135 * Byte offset of this @e fragment of the @e message.
136 */
137 uint64_t fragment_offset GNUNET_PACKED;
138
139 /**
140 * Number of the message this fragment belongs to.
141 *
142 * Set in GNUNET_MULTICAST_origin_to_all().
143 */
144 uint64_t message_id GNUNET_PACKED;
145
146 /**
147 * Counter that monotonically increases whenever a member parts the group.
148 *
149 * Set in GNUNET_MULTICAST_origin_to_all().
150 *
151 * It has significance in case of replay requests: when a member has missed
152 * messages and gets a replay request: in this case if the @a group_generation
153 * is still the same before and after the missed messages, it means that no
154 * @e join or @e part operations happened during the missed messages.
155 */
156 uint64_t group_generation GNUNET_PACKED;
157
158 /**
159 * Flags for this message fragment.
160 *
161 * @see enum GNUNET_MULTICAST_MessageFlags
162 */
163 uint32_t flags GNUNET_PACKED;
164
165 /* Followed by message body. */
166};
167
168
169/**
170 * Header of a request from a member to the origin.
171 */
172struct GNUNET_MULTICAST_RequestHeader
173{
174 /**
175 * Header for all requests from a member to the origin.
176 */
177 struct GNUNET_MessageHeader header;
178
179 /**
180 * Public key of the sending member.
181 */
182 struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
183
184 /**
185 * ECC signature of the request fragment.
186 *
187 * Signature must match the public key of the multicast group.
188 */
189 struct GNUNET_CRYPTO_EcdsaSignature signature;
190
191 /**
192 * Purpose for the signature and size of the signed data.
193 */
194 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
195
196 /**
197 * Number of the request fragment.
198 * Monotonically increasing from 1.
199 */
200 uint64_t fragment_id GNUNET_PACKED;
201
202 /**
203 * Byte offset of this @e fragment of the @e request.
204 */
205 uint64_t fragment_offset GNUNET_PACKED;
206
207 /**
208 * Number of the request this fragment belongs to.
209 *
210 * Set in GNUNET_MULTICAST_origin_to_all().
211 */
212 uint64_t request_id GNUNET_PACKED;
213
214 /**
215 * Flags for this request.
216 */
217 enum GNUNET_MULTICAST_MessageFlags flags GNUNET_PACKED;
218
219 /* Followed by request body. */
220};
221
222GNUNET_NETWORK_STRUCT_END
223
224
225/**
226 * Maximum size of a multicast message fragment.
227 */
228#define GNUNET_MULTICAST_FRAGMENT_MAX_SIZE (63 * 1024)
229
230#define GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD \
231 (GNUNET_MULTICAST_FRAGMENT_MAX_SIZE \
232 - sizeof (struct GNUNET_MULTICAST_MessageHeader))
233
234
235/**
236 * Handle that identifies a join request.
237 *
238 * Used to match calls to #GNUNET_MULTICAST_JoinRequestCallback to the
239 * corresponding calls to #GNUNET_MULTICAST_join_decision().
240 */
241struct GNUNET_MULTICAST_JoinHandle;
242
243
244/**
245 * Function to call with the decision made for a join request.
246 *
247 * Must be called once and only once in response to an invocation of the
248 * #GNUNET_MULTICAST_JoinRequestCallback.
249 *
250 * @param jh
251 * Join request handle.
252 * @param is_admitted
253 * #GNUNET_YES if the join is approved,
254 * #GNUNET_NO if it is disapproved,
255 * #GNUNET_SYSERR if we cannot answer the request.
256 * @param relay_count
257 * Number of relays given.
258 * @param relays
259 * Array of suggested peers that might be useful relays to use
260 * when joining the multicast group (essentially a list of peers that
261 * are already part of the multicast group and might thus be willing
262 * to help with routing). If empty, only this local peer (which must
263 * be the multicast origin) is a good candidate for building the
264 * multicast tree. Note that it is unnecessary to specify our own
265 * peer identity in this array.
266 * @param join_resp
267 * Message to send in response to the joining peer;
268 * can also be used to redirect the peer to a different group at the
269 * application layer; this response is to be transmitted to the
270 * peer that issued the request even if admission is denied.
271 */
272struct GNUNET_MULTICAST_ReplayHandle *
273GNUNET_MULTICAST_join_decision (struct GNUNET_MULTICAST_JoinHandle *jh,
274 int is_admitted,
275 uint16_t relay_count,
276 const struct GNUNET_PeerIdentity *relays,
277 const struct GNUNET_MessageHeader *join_resp);
278
279
280/**
281 * Method called whenever another peer wants to join the multicast group.
282 *
283 * Implementations of this function must call GNUNET_MULTICAST_join_decision()
284 * with the decision.
285 *
286 * @param cls
287 * Closure.
288 * @param member_pub_key
289 * Public key of the member requesting join.
290 * @param join_msg
291 * Application-dependent join message from the new member.
292 * @param jh
293 * Join handle to pass to GNUNET_MULTICAST_join_decison().
294 */
295typedef void
296(*GNUNET_MULTICAST_JoinRequestCallback) (void *cls,
297 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
298 const struct GNUNET_MessageHeader *join_msg,
299 struct GNUNET_MULTICAST_JoinHandle *jh);
300
301
302/**
303 * Method called to inform about the decision in response to a join request.
304 *
305 * If @a is_admitted is not #GNUNET_YES, then the multicast service disconnects
306 * the client and the multicast member handle returned by
307 * GNUNET_MULTICAST_member_join() is invalidated.
308 *
309 * @param cls
310 * Closure.
311 * @param is_admitted
312 * #GNUNET_YES or #GNUNET_NO or #GNUNET_SYSERR
313 * @param peer
314 * The peer we are connected to and the join decision is from.
315 * @param relay_count
316 * Number of peers in the @a relays array.
317 * @param relays
318 * Peer identities of members of the group, which serve as relays
319 * and can be used to join the group at. If empty, only the origin can
320 * be used to connect to the group.
321 * @param join_msg
322 * Application-dependent join message from the origin.
323 */
324typedef void
325(*GNUNET_MULTICAST_JoinDecisionCallback) (void *cls,
326 int is_admitted,
327 const struct GNUNET_PeerIdentity *peer,
328 uint16_t relay_count,
329 const struct GNUNET_PeerIdentity *relays,
330 const struct GNUNET_MessageHeader *join_msg);
331
332
333/**
334 * Function called whenever a group member has transmitted a request
335 * to the origin (other than joining or leaving).
336 *
337 * FIXME: need to distinguish between origin cancelling a message (some fragments
338 * were sent, then the rest 'discarded') and the case where we got disconnected;
339 * right now, both would mean 'msg' is NULL, but they could be quite different...
340 * So the semantics from the receiver side of
341 * GNUNET_MULTICAST_member_to_origin_cancel() are not clear here. Maybe we
342 * should do something with the flags in this case?
343 *
344 * @param cls
345 * Closure (set from GNUNET_MULTICAST_origin_start).
346 * @param sender
347 * Identity of the sender.
348 * @param req
349 * Request to the origin.
350 * @param flags
351 * Flags for the request.
352 */
353typedef void
354(*GNUNET_MULTICAST_RequestCallback) (void *cls,
355 const struct GNUNET_MULTICAST_RequestHeader *req);
356
357
358/**
359 * Function called whenever a group member is receiving a message fragment from
360 * the origin.
361 *
362 * If admission to the group is denied, this function is called once with the
363 * response of the @e origin (as given to GNUNET_MULTICAST_join_decision()) and
364 * then a second time with NULL to indicate that the connection failed for good.
365 *
366 * FIXME: need to distinguish between origin cancelling a message (some fragments
367 * were sent, then the rest 'discarded') and the case where we got disconnected;
368 * right now, both would mean 'msg' is NULL, but they could be quite different...
369 * So the semantics from the receiver side of
370 * GNUNET_MULTICAST_origin_to_all_cancel() are not clear here.
371 *
372 * @param cls
373 * Closure (set from GNUNET_MULTICAST_member_join())
374 * @param msg
375 * Message from the origin, NULL if the origin shut down
376 * (or we were kicked out, and we should thus call
377 * GNUNET_MULTICAST_member_part() next)
378 */
379typedef void
380(*GNUNET_MULTICAST_MessageCallback) (void *cls,
381 const struct GNUNET_MULTICAST_MessageHeader *msg);
382
383
384/**
385 * Opaque handle to a replay request from the multicast service.
386 */
387struct GNUNET_MULTICAST_ReplayHandle;
388
389
390/**
391 * Functions with this signature are called whenever the multicast service needs
392 * a message fragment to be replayed by fragment_id.
393 *
394 * Implementations of this function MUST call GNUNET_MULTICAST_replay() ONCE
395 * (with a message or an error); however, if the origin is destroyed or the
396 * group is left, the replay handle must no longer be used.
397 *
398 * @param cls
399 * Closure (set from GNUNET_MULTICAST_origin_start()
400 * or GNUNET_MULTICAST_member_join()).
401 * @param member_pub_key
402 * The member requesting replay.
403 * @param fragment_id
404 * Which message fragment should be replayed.
405 * @param flags
406 * Flags for the replay.
407 * @param rh
408 * Handle to pass to message transmit function.
409 */
410typedef void
411(*GNUNET_MULTICAST_ReplayFragmentCallback) (void *cls,
412 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
413 uint64_t fragment_id,
414 uint64_t flags,
415 struct GNUNET_MULTICAST_ReplayHandle *rh);
416
417/**
418 * Functions with this signature are called whenever the multicast service needs
419 * a message fragment to be replayed by message_id and fragment_offset.
420 *
421 * Implementations of this function MUST call GNUNET_MULTICAST_replay() ONCE
422 * (with a message or an error); however, if the origin is destroyed or the
423 * group is left, the replay handle must no longer be used.
424 *
425 * @param cls
426 * Closure (set from GNUNET_MULTICAST_origin_start()
427 * or GNUNET_MULTICAST_member_join()).
428 * @param member_pub_key
429 * The member requesting replay.
430 * @param message_id
431 * Which message should be replayed.
432 * @param fragment_offset
433 * Offset of the fragment within of @a message_id to be replayed.
434 * @param flags
435 * Flags for the replay.
436 * @param rh
437 * Handle to pass to message transmit function.
438 */
439typedef void
440(*GNUNET_MULTICAST_ReplayMessageCallback) (void *cls,
441 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
442 uint64_t message_id,
443 uint64_t fragment_offset,
444 uint64_t flags,
445 struct GNUNET_MULTICAST_ReplayHandle *rh);
446
447
448/**
449 * Possible error codes during replay.
450 */
451enum GNUNET_MULTICAST_ReplayErrorCode
452{
453
454 /**
455 * Everything is fine.
456 */
457 GNUNET_MULTICAST_REC_OK = 0,
458
459 /**
460 * Message fragment not found in the message store.
461 *
462 * Either discarded if it is too old, or not arrived yet if this member has
463 * missed some messages.
464 */
465 GNUNET_MULTICAST_REC_NOT_FOUND = 1,
466
467 /**
468 * Fragment ID counter was larger than the highest counter this
469 * replay function has ever encountered; thus it is likely the
470 * origin never sent it and we're at the HEAD of the multicast
471 * stream as far as this node is concerned.
472 *
473 * FIXME: needed?
474 */
475 GNUNET_MULTICAST_REC_PAST_HEAD = 2,
476
477 /**
478 * Access is denied to the requested fragment, membership test did not pass.
479 */
480 GNUNET_MULTICAST_REC_ACCESS_DENIED = 3,
481
482 /**
483 * Internal error (i.e. database error). Try some other peer.
484 */
485 GNUNET_MULTICAST_REC_INTERNAL_ERROR = 4
486
487};
488
489
490/**
491 * Replay a message fragment for the multicast group.
492 *
493 * @param rh
494 * Replay handle identifying which replay operation was requested.
495 * @param msg
496 * Replayed message fragment, NULL if not found / an error occurred.
497 * @param ec
498 * Error code. See enum GNUNET_MULTICAST_ReplayErrorCode
499 * If not #GNUNET_MULTICAST_REC_OK, the replay handle is invalidated.
500 */
501void
502GNUNET_MULTICAST_replay_response (struct GNUNET_MULTICAST_ReplayHandle *rh,
503 const struct GNUNET_MessageHeader *msg,
504 enum GNUNET_MULTICAST_ReplayErrorCode ec);
505
506
507/**
508 * Indicate the end of the replay session.
509 *
510 * Invalidates the replay handle.
511 *
512 * @param rh Replay session to end.
513 */
514void
515GNUNET_MULTICAST_replay_response_end (struct GNUNET_MULTICAST_ReplayHandle *rh);
516
517
518/**
519 * Function called to provide data for a transmission for a replay.
520 *
521 * @see GNUNET_MULTICAST_replay2()
522 */
523typedef int
524(*GNUNET_MULTICAST_ReplayTransmitNotify) (void *cls,
525 size_t *data_size,
526 void *data);
527
528
529/**
530 * Replay a message for the multicast group.
531 *
532 * @param rh
533 * Replay handle identifying which replay operation was requested.
534 * @param notify
535 * Function to call to get the message.
536 * @param notify_cls
537 * Closure for @a notify.
538 */
539void
540GNUNET_MULTICAST_replay_response2 (struct GNUNET_MULTICAST_ReplayHandle *rh,
541 GNUNET_MULTICAST_ReplayTransmitNotify notify,
542 void *notify_cls);
543
544
545/**
546 * Start a multicast group.
547 *
548 * Peers that issue GNUNET_MULTICAST_member_join() can transmit a join request
549 * to either an existing group member or to the origin. If the joining is
550 * approved, the member is cleared for @e replay and will begin to receive
551 * messages transmitted to the group. If joining is disapproved, the failed
552 * candidate will be given a response. Members in the group can send messages
553 * to the origin.
554 *
555 * TODO: This function could optionally offer to advertise the origin in the
556 * P2P overlay network(where?) under the respective public key so that other
557 * peers can find an alternate PeerId to join it. Higher level protocols may
558 * however provide other means of solving the problem of the offline host
559 * (see secushare specs about that) and therefore merely need a way to provide
560 * a list of possible PeerIds.
561 *
562 * @param cfg
563 * Configuration to use.
564 * @param priv_key
565 * ECC key that will be used to sign messages for this
566 * multicast session; public key is used to identify the multicast group;
567 * @param max_fragment_id
568 * Maximum fragment ID already sent to the group.
569 * 0 for a new group.
570 * @param join_request_cb
571 * Function called to approve / disapprove joining of a peer.
572 * @param replay_frag_cb
573 * Function that can be called to replay a message fragment.
574 * @param replay_msg_cb
575 * Function that can be called to replay a message.
576 * @param request_cb
577 * Function called with message fragments from group members.
578 * @param message_cb
579 * Function called with the message fragments sent to the
580 * network by GNUNET_MULTICAST_origin_to_all(). These message fragments
581 * should be stored for answering replay requests later.
582 * @param cls
583 * Closure for the various callbacks that follow.
584 *
585 * @return Handle for the origin, NULL on error.
586 */
587struct GNUNET_MULTICAST_Origin *
588GNUNET_MULTICAST_origin_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
589 const struct GNUNET_CRYPTO_EddsaPrivateKey *priv_key,
590 uint64_t max_fragment_id,
591 GNUNET_MULTICAST_JoinRequestCallback join_request_cb,
592 GNUNET_MULTICAST_ReplayFragmentCallback replay_frag_cb,
593 GNUNET_MULTICAST_ReplayMessageCallback replay_msg_cb,
594 GNUNET_MULTICAST_RequestCallback request_cb,
595 GNUNET_MULTICAST_MessageCallback message_cb,
596 void *cls);
597
598/**
599 * Function called to provide data for a transmission from the origin to all
600 * members.
601 *
602 * Note that returning #GNUNET_OK or #GNUNET_SYSERR (but not #GNUNET_NO)
603 * invalidates the respective transmission handle.
604 *
605 * @param cls
606 * Closure.
607 * @param[in,out] data_size
608 * Initially set to the number of bytes available in
609 * @a data, should be set to the number of bytes written to data.
610 * @param[out] data
611 * Where to write the body of the message to give to the
612 * method. The function must copy at most @a data_size bytes to @a data.
613 *
614 * @return #GNUNET_SYSERR on error (fatal, aborts transmission)
615 * #GNUNET_NO on success, if more data is to be transmitted later.
616 * Should be used if @a data_size was not big enough to take all the
617 * data. If 0 is returned in @a data_size the transmission is paused,
618 * and can be resumed with GNUNET_MULTICAST_origin_to_all_resume().
619 * #GNUNET_YES if this completes the transmission (all data supplied)
620 * @deprecated should move to MQ-style API!
621 */
622typedef int
623(*GNUNET_MULTICAST_OriginTransmitNotify) (void *cls,
624 size_t *data_size,
625 void *data);
626
627
628/**
629 * Handle for a request to send a message to all multicast group members
630 * (from the origin).
631 */
632struct GNUNET_MULTICAST_OriginTransmitHandle;
633
634
635/**
636 * Send a message to the multicast group.
637 *
638 * @param origin
639 * Handle to the multicast group.
640 * @param message_id
641 * Application layer ID for the message. Opaque to multicast.
642 * @param group_generation
643 * Group generation of the message. Documented in
644 * struct GNUNET_MULTICAST_MessageHeader.
645 * @param notify
646 * Function to call to get the message.
647 * @param notify_cls
648 * Closure for @a notify.
649 *
650 * @return NULL on error (i.e. request already pending).
651 * @deprecated should move to MQ-style API!
652 */
653struct GNUNET_MULTICAST_OriginTransmitHandle *
654GNUNET_MULTICAST_origin_to_all (struct GNUNET_MULTICAST_Origin *origin,
655 uint64_t message_id,
656 uint64_t group_generation,
657 GNUNET_MULTICAST_OriginTransmitNotify notify,
658 void *notify_cls);
659
660
661
662/**
663 * Resume message transmission to multicast group.
664 *
665 * @param th Transmission to cancel.
666 */
667void
668GNUNET_MULTICAST_origin_to_all_resume (struct GNUNET_MULTICAST_OriginTransmitHandle *th);
669
670
671/**
672 * Cancel request for message transmission to multicast group.
673 *
674 * @param th Transmission to cancel.
675 */
676void
677GNUNET_MULTICAST_origin_to_all_cancel (struct GNUNET_MULTICAST_OriginTransmitHandle *th);
678
679
680/**
681 * Stop a multicast group.
682 *
683 * @param origin Multicast group to stop.
684 */
685void
686GNUNET_MULTICAST_origin_stop (struct GNUNET_MULTICAST_Origin *origin,
687 GNUNET_ContinuationCallback stop_cb,
688 void *stop_cls);
689
690
691/**
692 * Join a multicast group.
693 *
694 * The entity joining is always the local peer. Further information about the
695 * candidate can be provided in @a join_msg. If the join fails, the
696 * @a message_cb is invoked with a (failure) response and then with NULL. If
697 * the join succeeds, outstanding (state) messages and ongoing multicast
698 * messages will be given to the @a message_cb until the member decides to part
699 * the group. The @a mem_test_cb and @a replay_cb functions may be called at
700 * anytime by the multicast service to support relaying messages to other
701 * members of the group.
702 *
703 * @param cfg
704 * Configuration to use.
705 * @param group_key
706 * ECC public key that identifies the group to join.
707 * @param member_pub_key
708 * ECC key that identifies the member
709 * and used to sign requests sent to the origin.
710 * @param origin
711 * Peer ID of the origin to send unicast requsets to. If NULL,
712 * unicast requests are sent back via multiple hops on the reverse path
713 * of multicast messages.
714 * @param relay_count
715 * Number of peers in the @a relays array.
716 * @param relays
717 * Peer identities of members of the group, which serve as relays
718 * and can be used to join the group at. and send the @a join_request to.
719 * If empty, the @a join_request is sent directly to the @a origin.
720 * @param join_msg
721 * Application-dependent join message to be passed to the peer @a origin.
722 * @param join_request_cb
723 * Function called to approve / disapprove joining of a peer.
724 * @param join_decision_cb
725 * Function called to inform about the join decision.
726 * @param replay_frag_cb
727 * Function that can be called to replay message fragments
728 * this peer already knows from this group. NULL if this
729 * client is unable to support replay.
730 * @param replay_msg_cb
731 * Function that can be called to replay message fragments
732 * this peer already knows from this group. NULL if this
733 * client is unable to support replay.
734 * @param message_cb
735 * Function to be called for all message fragments we
736 * receive from the group, excluding those our @a replay_cb
737 * already has.
738 * @param cls
739 * Closure for callbacks.
740 *
741 * @return Handle for the member, NULL on error.
742 */
743struct GNUNET_MULTICAST_Member *
744GNUNET_MULTICAST_member_join (const struct GNUNET_CONFIGURATION_Handle *cfg,
745 const struct GNUNET_CRYPTO_EddsaPublicKey *group_key,
746 const struct GNUNET_CRYPTO_EcdsaPrivateKey *member_pub_key,
747 const struct GNUNET_PeerIdentity *origin,
748 uint16_t relay_count,
749 const struct GNUNET_PeerIdentity *relays,
750 const struct GNUNET_MessageHeader *join_request,
751 GNUNET_MULTICAST_JoinRequestCallback join_request_cb,
752 GNUNET_MULTICAST_JoinDecisionCallback join_decision_cb,
753 GNUNET_MULTICAST_ReplayFragmentCallback replay_frag_cb,
754 GNUNET_MULTICAST_ReplayMessageCallback replay_msg_cb,
755 GNUNET_MULTICAST_MessageCallback message_cb,
756 void *cls);
757
758/**
759 * Handle for a replay request.
760 */
761struct GNUNET_MULTICAST_MemberReplayHandle;
762
763
764/**
765 * Request a fragment to be replayed by fragment ID.
766 *
767 * Useful if messages below the @e max_known_fragment_id given when joining are
768 * needed and not known to the client.
769 *
770 * @param member
771 * Membership handle.
772 * @param fragment_id
773 * ID of a message fragment that this client would like to see replayed.
774 * @param flags
775 * Additional flags for the replay request.
776 * It is used and defined by GNUNET_MULTICAST_ReplayFragmentCallback
777 *
778 * @return Replay request handle, NULL on error.
779 */
780struct GNUNET_MULTICAST_MemberReplayHandle *
781GNUNET_MULTICAST_member_replay_fragment (struct GNUNET_MULTICAST_Member *member,
782 uint64_t fragment_id,
783 uint64_t flags);
784
785
786/**
787 * Request a message fr to be replayed.
788 *
789 * Useful if messages below the @e max_known_fragment_id given when joining are
790 * needed and not known to the client.
791 *
792 * @param member
793 * Membership handle.
794 * @param message_id
795 * ID of the message this client would like to see replayed.
796 * @param fragment_offset
797 * Offset of the fragment within the message to replay.
798 * @param flags
799 * Additional flags for the replay request.
800 * It is used & defined by GNUNET_MULTICAST_ReplayMessageCallback
801 *
802 * @return Replay request handle, NULL on error.
803 */
804struct GNUNET_MULTICAST_MemberReplayHandle *
805GNUNET_MULTICAST_member_replay_message (struct GNUNET_MULTICAST_Member *member,
806 uint64_t message_id,
807 uint64_t fragment_offset,
808 uint64_t flags);
809
810
811/**
812 * Cancel a replay request.
813 *
814 * @param rh
815 * Request to cancel.
816 */
817void
818GNUNET_MULTICAST_member_replay_cancel (struct GNUNET_MULTICAST_MemberReplayHandle *rh);
819
820
821/**
822 * Part a multicast group.
823 *
824 * Disconnects from all group members and invalidates the @a member handle.
825 *
826 * An application-dependent part message can be transmitted beforehand using
827 * #GNUNET_MULTICAST_member_to_origin())
828 *
829 * @param member
830 * Membership handle.
831 */
832void
833GNUNET_MULTICAST_member_part (struct GNUNET_MULTICAST_Member *member,
834 GNUNET_ContinuationCallback part_cb,
835 void *part_cls);
836
837
838/**
839 * Function called to provide data for a transmission from a member to the origin.
840 *
841 * Note that returning #GNUNET_OK or #GNUNET_SYSERR (but not #GNUNET_NO)
842 * invalidates the respective transmission handle.
843 *
844 * @param cls
845 * Closure.
846 * @param[in,out] data_size
847 * Initially set to the number of bytes available in
848 * @a data, should be set to the number of bytes written to data.
849 * @param[out] data
850 * Where to write the body of the message to give to the
851 * method. The function must copy at most @a data_size bytes to @a data.
852 *
853 * @return #GNUNET_SYSERR on error (fatal, aborts transmission)
854 * #GNUNET_NO on success, if more data is to be transmitted later.
855 * Should be used if @a data_size was not big enough to take all the
856 * data. If 0 is returned in @a data_size the transmission is paused,
857 * and can be resumed with GNUNET_MULTICAST_member_to_origin_resume().
858 * #GNUNET_YES if this completes the transmission (all data supplied)
859 * @deprecated should move to MQ-style API!
860 */
861typedef int
862(*GNUNET_MULTICAST_MemberTransmitNotify) (void *cls,
863 size_t *data_size,
864 void *data);
865
866
867/**
868 * Handle for a message to be delivered from a member to the origin.
869 */
870struct GNUNET_MULTICAST_MemberTransmitHandle;
871
872
873/**
874 * Send a message to the origin of the multicast group.
875 *
876 * @param member
877 * Membership handle.
878 * @param request_id
879 * Application layer ID for the request. Opaque to multicast.
880 * @param notify
881 * Callback to call to get the message.
882 * @param notify_cls
883 * Closure for @a notify.
884 *
885 * @return Handle to cancel request, NULL on error (i.e. request already pending).
886 * @deprecated should move to MQ-style API!
887 */
888struct GNUNET_MULTICAST_MemberTransmitHandle *
889GNUNET_MULTICAST_member_to_origin (struct GNUNET_MULTICAST_Member *member,
890 uint64_t request_id,
891 GNUNET_MULTICAST_MemberTransmitNotify notify,
892 void *notify_cls);
893
894
895/**
896 * Resume message transmission to origin.
897 *
898 * @param th
899 * Transmission to cancel.
900 */
901void
902GNUNET_MULTICAST_member_to_origin_resume (struct GNUNET_MULTICAST_MemberTransmitHandle *th);
903
904
905/**
906 * Cancel request for message transmission to origin.
907 *
908 * @param th
909 * Transmission to cancel.
910 */
911void
912GNUNET_MULTICAST_member_to_origin_cancel (struct GNUNET_MULTICAST_MemberTransmitHandle *th);
913
914
915#if 0 /* keep Emacsens' auto-indent happy */
916{
917#endif
918#ifdef __cplusplus
919}
920#endif
921
922/* ifndef GNUNET_MULTICAST_SERVICE_H */
923#endif
924
925/** @} */ /* end of group */
diff --git a/src/include/gnunet_namestore_plugin.h b/src/include/gnunet_namestore_plugin.h
index 46a7da792..3b603b4c0 100644
--- a/src/include/gnunet_namestore_plugin.h
+++ b/src/include/gnunet_namestore_plugin.h
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -47,7 +47,8 @@ extern "C"
47 * Function called for each matching record. 47 * Function called for each matching record.
48 * 48 *
49 * @param cls closure 49 * @param cls closure
50 * @param serial unique serial number of the record 50 * @param serial unique serial number of the record, MUST NOT BE ZERO,
51 * and must be monotonically increasing while iterating
51 * @param zone_key private key of the zone 52 * @param zone_key private key of the zone
52 * @param label name that is being mapped (at most 255 characters long) 53 * @param label name that is being mapped (at most 255 characters long)
53 * @param rd_count number of entries in @a rd array 54 * @param rd_count number of entries in @a rd array
@@ -115,7 +116,9 @@ struct GNUNET_NAMESTORE_PluginFunctions
115 * 116 *
116 * @param cls closure (internal context for the plugin) 117 * @param cls closure (internal context for the plugin)
117 * @param zone private key of the zone, NULL for all zones 118 * @param zone private key of the zone, NULL for all zones
118 * @param serial serial (to exclude) in the list of matching records 119 * @param serial serial (to exclude) in the list of matching records;
120 * 0 means to exclude nothing; results must be returned using
121 * the minimum possible sequence number first (ordered by serial)
119 * @param limit maximum number of results to return to @a iter 122 * @param limit maximum number of results to return to @a iter
120 * @param iter function to call with the result 123 * @param iter function to call with the result
121 * @param iter_cls closure for @a iter 124 * @param iter_cls closure for @a iter
diff --git a/src/include/gnunet_protocols.h b/src/include/gnunet_protocols.h
index 793430184..46620b829 100644
--- a/src/include/gnunet_protocols.h
+++ b/src/include/gnunet_protocols.h
@@ -2633,7 +2633,7 @@ extern "C"
2633 */ 2633 */
2634#define GNUNET_MESSAGE_TYPE_RPS_CS_SEED 954 2634#define GNUNET_MESSAGE_TYPE_RPS_CS_SEED 954
2635 2635
2636#ifdef ENABLE_MALICIOUS 2636#if ENABLE_MALICIOUS
2637/** 2637/**
2638 * Turn RPS service malicious 2638 * Turn RPS service malicious
2639 */ 2639 */
@@ -3106,40 +3106,47 @@ extern "C"
3106/** 3106/**
3107 * Type of a fragment of a CORE message created by transport to adjust 3107 * Type of a fragment of a CORE message created by transport to adjust
3108 * message length to a queue's MTU. 3108 * message length to a queue's MTU.
3109 */ 3109 */
3110#define GNUNET_MESSAGE_TYPE_TRANSPORT_FRAGMENT 1214 3110#define GNUNET_MESSAGE_TYPE_TRANSPORT_FRAGMENT 1214
3111 3111
3112/** 3112/**
3113 * Acknowledgement generated for a fragment. 3113 * Acknowledgement generated for a fragment.
3114 */ 3114 */
3115#define GNUNET_MESSAGE_TYPE_TRANSPORT_FRAGMENT_ACK 1215 3115#define GNUNET_MESSAGE_TYPE_TRANSPORT_FRAGMENT_ACK 1215
3116 3116
3117/** 3117/**
3118 * Wrapper around non-fragmented CORE message used to measure RTT 3118 * Wrapper around non-fragmented CORE message used to measure RTT
3119 * and ensure reliability. 3119 * and ensure reliability.
3120 */ 3120 */
3121#define GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_BOX 1216 3121#define GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_BOX 1216
3122 3122
3123/** 3123/**
3124 * Confirmation for a #GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_BOX. 3124 * Confirmation for a #GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_BOX.
3125 */ 3125 */
3126#define GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_ACK 1217 3126#define GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_ACK 1217
3127 3127
3128/** 3128/**
3129 * Message sent for topology discovery at transport level. 3129 * Message sent for topology discovery at transport level.
3130 */ 3130 */
3131#define GNUNET_MESSAGE_TYPE_TRANSPORT_DV_LEARN 1218 3131#define GNUNET_MESSAGE_TYPE_TRANSPORT_DV_LEARN 1218
3132 3132
3133/** 3133/**
3134 * Source-routed transport message based DV information gathered. 3134 * Source-routed transport message based DV information gathered.
3135 */ 3135 */
3136#define GNUNET_MESSAGE_TYPE_TRANSPORT_DV_BOX 1219 3136#define GNUNET_MESSAGE_TYPE_TRANSPORT_DV_BOX 1219
3137 3137
3138/** 3138/**
3139 * Transport signalling incoming backchannel message to a communicator. 3139 * Transport signalling incoming backchannel message to a communicator.
3140 */ 3140 */
3141#define GNUNET_MESSAGE_TYPE_TRANSPORT_COMMUNICATOR_BACKCHANNEL_INCOMING 1220 3141#define GNUNET_MESSAGE_TYPE_TRANSPORT_COMMUNICATOR_BACKCHANNEL_INCOMING 1220
3142 3142
3143/**
3144 * We learned a possible network address of another peer. Transport
3145 * should consider verifying it, and if successful, remembering it
3146 * in the Peerstore.
3147 */
3148#define GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_CONSIDER_VERIFY 1221
3149
3143 3150
3144/** 3151/**
3145 * Message sent to indicate to the transport that a monitor 3152 * Message sent to indicate to the transport that a monitor
@@ -3230,7 +3237,7 @@ extern "C"
3230 3237
3231/** 3238/**
3232 * TCP communicator end of stream. 3239 * TCP communicator end of stream.
3233 */ 3240 */
3234#define GNUNET_MESSAGE_TYPE_COMMUNICATOR_TCP_FINISH 1452 3241#define GNUNET_MESSAGE_TYPE_COMMUNICATOR_TCP_FINISH 1452
3235 3242
3236/** 3243/**
diff --git a/src/include/gnunet_psyc_env.h b/src/include/gnunet_psyc_env.h
deleted file mode 100644
index 0d878cb96..000000000
--- a/src/include/gnunet_psyc_env.h
+++ /dev/null
@@ -1,340 +0,0 @@
1/*
2 * This file is part of GNUnet.
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Gabor X Toth
23 *
24 * @file
25 * PSYC Environment library
26 *
27 * @defgroup psyc-util-env PSYC Utilities library: Environment
28 * Environment data structure operations for PSYC and Social messages.
29 *
30 * Library providing operations for the @e environment of
31 * PSYC and Social messages, and for (de)serializing variable values.
32 *
33 * @{
34 */
35
36
37#ifndef GNUNET_PSYC_ENV_H
38#define GNUNET_PSYC_ENV_H
39
40#ifdef __cplusplus
41extern "C"
42{
43#if 0 /* keep Emacsens' auto-indent happy */
44}
45#endif
46#endif
47
48
49/**
50 * Possible operations on PSYC state (persistent) and transient variables (per message).
51 */
52enum GNUNET_PSYC_Operator
53{
54 /**
55 * Set value of a transient variable.
56 */
57 GNUNET_PSYC_OP_SET = ':',
58
59 /**
60 * Assign value for a persistent state variable.
61 *
62 * If an assigned value is NULL, the variable is deleted.
63 */
64 GNUNET_PSYC_OP_ASSIGN = '=',
65
66 /**
67 * Augment state variable.
68 *
69 * Used for appending strings, adding numbers, and adding new items to a list or dictionary.
70 */
71 GNUNET_PSYC_OP_AUGMENT = '+',
72
73 /**
74 * Diminish state variable.
75 *
76 * Used for subtracting numbers, and removing items from a list or dictionary.
77 */
78 GNUNET_PSYC_OP_DIMINISH = '-',
79
80 /**
81 * Update state variable.
82 *
83 * Used for modifying a single item of a list or dictionary.
84 */
85 GNUNET_PSYC_OP_UPDATE = '@',
86};
87
88
89/**
90 * PSYC variable types.
91 */
92enum GNUNET_PSYC_Type
93{
94 GNUNET_PSYC_TYPE_DATA = 0,
95 GNUNET_PSYC_TYPE_NUMBER,
96 GNUNET_PSYC_TYPE_LIST,
97 GNUNET_PSYC_TYPE_DICT
98};
99
100
101/**
102 * PSYC state modifier.
103 */
104struct GNUNET_PSYC_Modifier
105{
106 /**
107 * State operation.
108 */
109 enum GNUNET_PSYC_Operator oper;
110
111 /**
112 * Variable name.
113 */
114 const char *name;
115
116 /**
117 * Size of @a value.
118 */
119 size_t value_size;
120
121 /**
122 * Value of variable.
123 */
124 const void *value;
125
126 /**
127 * Next modifier.
128 */
129 struct GNUNET_PSYC_Modifier *next;
130
131 /**
132 * Previous modifier.
133 */
134 struct GNUNET_PSYC_Modifier *prev;
135};
136
137
138/**
139 * Environment for a message.
140 *
141 * Contains modifiers.
142 */
143struct GNUNET_PSYC_Environment;
144
145
146/**
147 * Create an environment.
148 *
149 * @return A newly allocated environment.
150 */
151struct GNUNET_PSYC_Environment *
152GNUNET_PSYC_env_create ();
153
154
155/**
156 * Add a modifier to the environment.
157 *
158 * @param env The environment.
159 * @param oper Operation to perform.
160 * @param name Name of the variable.
161 * @param value Value of the variable.
162 * @param value_size Size of @a value.
163 */
164void
165GNUNET_PSYC_env_add (struct GNUNET_PSYC_Environment *env,
166 enum GNUNET_PSYC_Operator oper, const char *name,
167 const void *value, size_t value_size);
168
169
170/**
171 * Get the first modifier of the environment.
172 */
173struct GNUNET_PSYC_Modifier *
174GNUNET_PSYC_env_head (const struct GNUNET_PSYC_Environment *env);
175
176
177
178/**
179 * Get the last modifier of the environment.
180 */
181struct GNUNET_PSYC_Modifier *
182GNUNET_PSYC_env_tail (const struct GNUNET_PSYC_Environment *env);
183
184
185/**
186 * Remove a modifier from the environment.
187 */
188void
189GNUNET_PSYC_env_remove (struct GNUNET_PSYC_Environment *env,
190 struct GNUNET_PSYC_Modifier *mod);
191
192
193/**
194 * Remove a modifier at the beginning of the environment.
195 */
196int
197GNUNET_PSYC_env_shift (struct GNUNET_PSYC_Environment *env,
198 enum GNUNET_PSYC_Operator *oper, const char **name,
199 const void **value, size_t *value_size);
200
201
202/**
203 * Iterator for modifiers in the environment.
204 *
205 * @param cls Closure.
206 * @param mod Modifier.
207 *
208 * @return #GNUNET_YES to continue iterating,
209 * #GNUNET_NO to stop.
210 */
211typedef int
212(*GNUNET_PSYC_Iterator) (void *cls, enum GNUNET_PSYC_Operator oper,
213 const char *name, const char *value,
214 uint32_t value_size);
215
216
217/**
218 * Iterate through all modifiers in the environment.
219 *
220 * @param env The environment.
221 * @param it Iterator.
222 * @param it_cls Closure for iterator.
223 */
224void
225GNUNET_PSYC_env_iterate (const struct GNUNET_PSYC_Environment *env,
226 GNUNET_PSYC_Iterator it, void *it_cls);
227
228
229/**
230 * Get the number of modifiers in the environment.
231 *
232 * @param env The environment.
233 *
234 * @return Number of modifiers.
235 */
236size_t
237GNUNET_PSYC_env_get_count (const struct GNUNET_PSYC_Environment *env);
238
239
240/**
241 * Destroy an environment.
242 *
243 * @param env The environment to destroy.
244 */
245void
246GNUNET_PSYC_env_destroy (struct GNUNET_PSYC_Environment *env);
247
248
249/**
250 * Get the type of variable.
251 *
252 * @param name Name of the variable.
253 *
254 * @return Variable type.
255 */
256enum GNUNET_PSYC_Type
257GNUNET_PSYC_var_get_type (char *name);
258
259
260/**
261 * Perform an operation on a variable.
262 *
263 * @param name Name of variable.
264 * @param current_value Current value of variable.
265 * @param current_value_size Size of @a current_value.
266 * @param oper Operator.
267 * @param args Arguments for the operation.
268 * @param args_size Size of @a args.
269 * @param return_value Return value.
270 * @param return_value_size Size of @a return_value.
271 *
272 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
273 */
274int
275GNUNET_PSYC_operation (char *name, void *current_value, size_t current_value_size,
276 enum GNUNET_PSYC_Operator oper, void *args, size_t args_size,
277 void **return_value, size_t *return_value_size);
278
279
280/**
281 * Get the variable's value as an integer.
282 *
283 * @param size Size of value.
284 * @param value Raw value of variable.
285 * @param[out] number Value converted to a 64-bit integer.
286 *
287 * @return #GNUNET_OK on success, #GNUNET_SYSERR if an error occurred (e.g. the value is invalid).
288 */
289int
290GNUNET_PSYC_value_to_number (size_t size, const void *value, int64_t *number);
291
292
293/**
294 * Get the variable's value as a dictionary.
295 *
296 * @param size Size of value.
297 * @param value Raw value of variable.
298 * @param[out] dict A newly created hashmap holding the elements of the dictionary.
299 *
300 * @return #GNUNET_OK on success, #GNUNET_SYSERR if an error occurred (e.g. the value is invalid).
301 */
302int
303GNUNET_PSYC_value_to_dict (size_t size, const void *value, struct GNUNET_CONTAINER_MultiHashMap **dict);
304
305
306/**
307 * Create a PSYC variable value from an integer.
308 *
309 * @param number The number to convert.
310 * @param[out] value_size Size of returned value.
311 *
312 * @return A newly allocated value or NULL on error.
313 */
314void *
315GNUNET_PSYC_value_from_number (int64_t number, size_t *value_size);
316
317
318/**
319 * Create a PSYC variable value from a dictionary.
320 *
321 * @param dict The dict to convert.
322 * @param[out] value_size Size of returned value.
323 *
324 * @return A newly allocated value or NULL on error.
325 */
326void *
327GNUNET_PSYC_value_from_dict (struct GNUNET_CONTAINER_MultiHashMap *dict, size_t *value_size);
328
329
330#if 0 /* keep Emacsens' auto-indent happy */
331{
332#endif
333#ifdef __cplusplus
334}
335#endif
336
337/* ifndef GNUNET_PSYC_ENV_H */
338#endif
339
340/** @} */ /* end of group */
diff --git a/src/include/gnunet_psyc_message.h b/src/include/gnunet_psyc_message.h
deleted file mode 100644
index d0cf9cc6a..000000000
--- a/src/include/gnunet_psyc_message.h
+++ /dev/null
@@ -1,278 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2012, 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Gabor X Toth
23 *
24 * @file
25 * PSYC message utilities; receiving/transmitting/logging PSYC messages
26 *
27 * @defgroup psyc-util-message PSYC Utilities library: Messages
28 * Receiving, transmitting, logging PSYC messages.
29 * @{
30 */
31
32#ifndef GNUNET_PSYC_MESSAGE_H
33#define GNUNET_PSYC_MESSAGE_H
34
35#ifdef __cplusplus
36extern "C"
37{
38#if 0 /* keep Emacsens' auto-indent happy */
39}
40#endif
41#endif
42
43
44#include "gnunet_util_lib.h"
45#include "gnunet_psyc_util_lib.h"
46#include "gnunet_psyc_service.h"
47
48
49/**
50 * Create a PSYC message.
51 *
52 * @param method_name
53 * PSYC method for the message.
54 * @param env
55 * Environment for the message.
56 * @param data
57 * Data payload for the message.
58 * @param data_size
59 * Size of @a data.
60 *
61 * @return Message header with size information,
62 * followed by the message parts.
63 *
64 * FIXME: arg order
65 */
66struct GNUNET_PSYC_Message *
67GNUNET_PSYC_message_create (const char *method_name,
68 const struct GNUNET_PSYC_Environment *env,
69 const void *data,
70 size_t data_size);
71
72/**
73 * Parse PSYC message.
74 *
75 * @param msg
76 * The PSYC message to parse.
77 * @param env
78 * The environment for the message with a list of modifiers.
79 * @param[out] method_name
80 * Pointer to the method name inside @a pmsg.
81 * @param[out] data
82 * Pointer to data inside @a pmsg.
83 * @param[out] data_size
84 * Size of @data is written here.
85 *
86 * @return #GNUNET_OK on success,
87 * #GNUNET_SYSERR on parse error.
88 *
89 * FIXME: arg order
90 */
91int
92GNUNET_PSYC_message_parse (const struct GNUNET_PSYC_MessageHeader *msg,
93 const char **method_name,
94 struct GNUNET_PSYC_Environment *env,
95 const void **data,
96 uint16_t *data_size);
97
98
99void
100GNUNET_PSYC_log_message (enum GNUNET_ErrorType kind,
101 const struct GNUNET_MessageHeader *msg);
102
103
104struct GNUNET_PSYC_TransmitHandle;
105
106/**
107 * Create a transmission handle.
108 */
109struct GNUNET_PSYC_TransmitHandle *
110GNUNET_PSYC_transmit_create (struct GNUNET_MQ_Handle *mq);
111
112
113/**
114 * Destroy a transmission handle.
115 */
116void
117GNUNET_PSYC_transmit_destroy (struct GNUNET_PSYC_TransmitHandle *tmit);
118
119
120/**
121 * Transmit a message.
122 *
123 * @param tmit
124 * Transmission handle.
125 * @param method_name
126 * Which method should be invoked.
127 * @param env
128 * Environment for the message.
129 * Should stay available until the first call to notify_data.
130 * Can be NULL if there are no modifiers or @a notify_mod is
131 * provided instead.
132 * @param notify_mod
133 * Function to call to obtain modifiers.
134 * Can be NULL if there are no modifiers or @a env is provided instead.
135 * @param notify_data
136 * Function to call to obtain fragments of the data.
137 * @param notify_cls
138 * Closure for @a notify_mod and @a notify_data.
139 * @param flags
140 * Flags for the message being transmitted.
141 *
142 * @return #GNUNET_OK if the transmission was started.
143 * #GNUNET_SYSERR if another transmission is already going on.
144 */
145int
146GNUNET_PSYC_transmit_message (struct GNUNET_PSYC_TransmitHandle *tmit,
147 const char *method_name,
148 const struct GNUNET_PSYC_Environment *env,
149 GNUNET_PSYC_TransmitNotifyModifier notify_mod,
150 GNUNET_PSYC_TransmitNotifyData notify_data,
151 void *notify_cls,
152 uint32_t flags);
153
154
155/**
156 * Resume transmission.
157 *
158 * @param tmit Transmission handle.
159 */
160void
161GNUNET_PSYC_transmit_resume (struct GNUNET_PSYC_TransmitHandle *tmit);
162
163
164/**
165 * Abort transmission request.
166 *
167 * @param tmit Transmission handle.
168 */
169void
170GNUNET_PSYC_transmit_cancel (struct GNUNET_PSYC_TransmitHandle *tmit);
171
172
173/**
174 * Got acknowledgement of a transmitted message part, continue transmission.
175 *
176 * @param tmit Transmission handle.
177 */
178void
179GNUNET_PSYC_transmit_got_ack (struct GNUNET_PSYC_TransmitHandle *tmit);
180
181
182struct GNUNET_PSYC_ReceiveHandle;
183
184
185/**
186 * Create handle for receiving messages.
187 */
188struct GNUNET_PSYC_ReceiveHandle *
189GNUNET_PSYC_receive_create (GNUNET_PSYC_MessageCallback message_cb,
190 GNUNET_PSYC_MessagePartCallback message_part_cb,
191 void *cb_cls);
192
193
194/**
195 * Destroy handle for receiving messages.
196 */
197void
198GNUNET_PSYC_receive_destroy (struct GNUNET_PSYC_ReceiveHandle *recv);
199
200
201/**
202 * Reset stored data related to the last received message.
203 */
204void
205GNUNET_PSYC_receive_reset (struct GNUNET_PSYC_ReceiveHandle *recv);
206
207
208/**
209 * Handle incoming PSYC message.
210 *
211 * @param recv
212 * Receive handle.
213 * @param msg
214 * The message.
215 *
216 * @return #GNUNET_OK on success,
217 * #GNUNET_SYSERR on receive error.
218 */
219int
220GNUNET_PSYC_receive_message (struct GNUNET_PSYC_ReceiveHandle *recv,
221 const struct GNUNET_PSYC_MessageHeader *msg);
222
223
224/**
225 * Check if @a data contains a series of valid message parts.
226 *
227 * @param data_size
228 * Size of @a data.
229 * @param data
230 * Data.
231 * @param[out] first_ptype
232 * Type of first message part.
233 * @param[out] last_ptype
234 * Type of last message part.
235 *
236 * @return Number of message parts found in @a data.
237 * or GNUNET_SYSERR if the message contains invalid parts.
238 */
239int
240GNUNET_PSYC_receive_check_parts (uint16_t data_size, const char *data,
241 uint16_t *first_ptype, uint16_t *last_ptype);
242
243
244/**
245 * Initialize PSYC message header.
246 */
247void
248GNUNET_PSYC_message_header_init (struct GNUNET_PSYC_MessageHeader *pmsg,
249 const struct GNUNET_MULTICAST_MessageHeader *mmsg,
250 uint32_t flags);
251
252
253/**
254 * Create a new PSYC message header from a multicast message for sending it to clients.
255 */
256struct GNUNET_PSYC_MessageHeader *
257GNUNET_PSYC_message_header_create (const struct GNUNET_MULTICAST_MessageHeader *mmsg,
258 uint32_t flags);
259
260
261/**
262 * Create a new PSYC message header from a PSYC message.
263 */
264struct GNUNET_PSYC_MessageHeader *
265GNUNET_PSYC_message_header_create_from_psyc (const struct GNUNET_PSYC_Message *msg);
266
267
268#if 0 /* keep Emacsens' auto-indent happy */
269{
270#endif
271#ifdef __cplusplus
272}
273#endif
274
275/* ifndef GNUNET_PSYC_MESSAGE_H */
276#endif
277
278/** @} */ /* end of group */
diff --git a/src/include/gnunet_psyc_service.h b/src/include/gnunet_psyc_service.h
deleted file mode 100644
index 3a3131e33..000000000
--- a/src/include/gnunet_psyc_service.h
+++ /dev/null
@@ -1,1364 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2012, 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Gabor X Toth
23 * @author Christian Grothoff
24 *
25 * @file
26 * PSYC service
27 *
28 * @defgroup psyc PSYC service
29 * Send/receive messages in PSYC channels and access the PSYC Store.
30 *
31 * Note that clients of this API are NOT expected to understand the PSYC message
32 * format, only the semantics! Parsing (and serializing) the PSYC stream format
33 * is done within the implementation of the libgnunetpsyc library, and this API
34 * deliberately exposes as little as possible of the actual data stream format
35 * to the application!
36 *
37 * NOTE:
38 * - this API does not know about PSYC's "root" and "places";
39 * there is no 'root' in GNUnet-PSYC as we're decentralized;
40 * 'places' and 'persons' are combined within the same
41 * abstraction, that of a "channel". Channels are identified
42 * and accessed in this API using a public/private key.
43 * Higher-level applications should use NAMES within GNS
44 * to obtain public keys, and the distinction between
45 * 'places' and 'persons' can then be made with the help
46 * of the naming system (and/or conventions).
47 * Channels are (as in PSYC) organized into a hierarchy; each
48 * channel master (the one with the private key) is then
49 * the operator of the multicast group (its Origin in
50 * the terminology of the multicast API).
51 * - The API supports passing large amounts of data using
52 * 'streaming' for the argument passed to a method. State
53 * and variables must fit into memory and cannot be streamed
54 * (thus, no passing of 4 GB of data in a variable;
55 * once we implement this, we might want to create a
56 * @c \#define for the maximum size of a variable).
57 * - PSYC defines standard variables, methods, etc. This
58 * library deliberately abstracts over all of these; a
59 * higher-level API should combine the naming system (GNS)
60 * and standard methods (_converse, _notice, _request,
61 * _warning, _error etc) and variables (_action, _color,
62 * _time, etc). However, this API does take over the
63 * routing variables, specifically '_context' (channel),
64 * and '_source'. We only kind-of support '_target', as
65 * the target is either everyone in the group or the
66 * origin, and never just a single member of the group;
67 * for such individual messages, an application needs to
68 * construct an 'inbox' channel where the master (only)
69 * receives messages (but never forwards; private responses
70 * would be transmitted by joining the senders 'inbox'
71 * channel -- or a inbox#bob subchannel). The
72 * goal for all of this is to keep the abstractions in this
73 * API minimal: interaction with multicast, try \& slice,
74 * state/variable/channel management. Higher-level
75 * operations belong elsewhere (so maybe this API should
76 * be called 'PSYC-low', whereas a higher-level API
77 * implementing defaults for standard methods and
78 * variables might be called 'PSYC-std' or 'PSYC-high'.
79 *
80 * In PSYC terminology this is simply called the "PSYC
81 * routing layer" and the abstractions, for instance in
82 * psyced, are quite similar. The higher one is called
83 * "PSYC entity layer." In the text rendering of the
84 * protocol the two are separated by an empty line. See
85 * http://about.psyc.eu/Spec:Packet and related. --lynX
86 *
87 * @{
88 */
89
90#ifndef GNUNET_PSYC_SERVICE_H
91#define GNUNET_PSYC_SERVICE_H
92
93#ifdef __cplusplus
94extern "C"
95{
96#if 0 /* keep Emacsens' auto-indent happy */
97}
98#endif
99#endif
100
101#include "gnunet_util_lib.h"
102#include "gnunet_multicast_service.h"
103//Mingw work around
104#ifdef MINGW
105 # ifndef UINT64_MAX
106 # define UINT64_MAX 0xffffffffffffffffULL
107 # endif
108#endif
109
110/**
111 * Version number of GNUnet-PSYC API.
112 */
113#define GNUNET_PSYC_VERSION 0x00000000
114
115
116/**
117 * Policy flags for a channel.
118 */
119enum GNUNET_PSYC_ChannelFlags
120{
121 /**
122 * Admission must be confirmed by the master.
123 */
124 GNUNET_PSYC_CHANNEL_ADMISSION_CONTROL = 1 << 0,
125
126 /**
127 * Past messages are only available to slaves who were admitted at the time
128 * they were sent to the channel.
129 */
130 GNUNET_PSYC_CHANNEL_RESTRICTED_HISTORY = 1 << 1
131};
132
133
134/**
135 * PSYC channel policies.
136 */
137enum GNUNET_PSYC_Policy
138{
139 /**
140 * Anyone can join the channel, without announcing their presence;
141 * all messages are always public and can be distributed freely.
142 * Joins may be announced, but this is not required.
143 */
144 GNUNET_PSYC_CHANNEL_ANONYMOUS = 0,
145
146 /**
147 * The master must approve membership to the channel, messages must only be
148 * distributed to current channel slaves. This includes the channel
149 * state as well as transient messages.
150 */
151 GNUNET_PSYC_CHANNEL_PRIVATE
152 = GNUNET_PSYC_CHANNEL_ADMISSION_CONTROL
153 | GNUNET_PSYC_CHANNEL_RESTRICTED_HISTORY
154
155#if IDEAS_FOR_FUTURE
156 /**
157 * Anyone can freely join the channel (no approval required);
158 * however, messages must only be distributed to current channel
159 * slaves, so the master must still acknowledge that the slave
160 * joined before transient messages are delivered. As approval is
161 * guaranteed, the presistent channel state can be synchronized freely
162 * immediately, prior to master confirmation.
163 */
164 GNUNET_PSYC_CHANNEL_OPEN
165 = GNUNET_PSYC_CHANNEL_RESTRICTED_HISTORY,
166
167 /**
168 * The master must approve joins to the channel, but past messages can be
169 * freely distributed to slaves.
170 */
171 GNUNET_PSYC_CHANNEL_CLOSED
172 = GNUNET_PSYC_CHANNEL_ADMISSION_CONTROL,
173#endif
174};
175
176
177enum GNUNET_PSYC_MessageFlags
178{
179 /**
180 * Default / no flags.
181 */
182 GNUNET_PSYC_MESSAGE_DEFAULT = 0,
183
184 /**
185 * Historic message, retrieved from PSYCstore.
186 */
187 GNUNET_PSYC_MESSAGE_HISTORIC = 1 << 0,
188
189 /**
190 * Request from slave to master.
191 */
192 GNUNET_PSYC_MESSAGE_REQUEST = 1 << 1,
193
194 /**
195 * Message can be delivered out of order.
196 */
197 GNUNET_PSYC_MESSAGE_ORDER_ANY = 1 << 2
198};
199
200
201/**
202 * Values for the @a state_delta field of GNUNET_PSYC_MessageHeader.
203 */
204enum GNUNET_PSYC_StateDeltaValues
205{
206 GNUNET_PSYC_STATE_RESET = 0,
207
208 GNUNET_PSYC_STATE_NOT_MODIFIED = UINT64_MAX
209};
210
211
212GNUNET_NETWORK_STRUCT_BEGIN
213
214/**
215 * A PSYC message.
216 *
217 * Used for single-fragment messages e.g. in a join request or response.
218 */
219struct GNUNET_PSYC_Message
220{
221 /**
222 * Message header with size and type information.
223 */
224 struct GNUNET_MessageHeader header;
225
226 /* Followed by concatenated PSYC message parts:
227 * messages with GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_* types
228 */
229};
230
231
232/**
233 * Header of a PSYC message.
234 *
235 * The PSYC service adds this when delivering the message to local clients,
236 * not present on the multicast layer.
237 */
238struct GNUNET_PSYC_MessageHeader
239{
240 /**
241 * Generic message header with size and type information.
242 */
243 struct GNUNET_MessageHeader header;
244
245 /**
246 * Flags for this message fragment.
247 *
248 * @see enum GNUNET_PSYC_MessageFlags
249 */
250 uint32_t flags GNUNET_PACKED;
251
252 /**
253 * Number of the message this message part belongs to.
254 * Monotonically increasing from 1.
255 */
256 uint64_t message_id GNUNET_PACKED;
257
258 /**
259 * Byte offset of this @e fragment of the @e message.
260 */
261 uint64_t fragment_offset GNUNET_PACKED;
262
263 /**
264 * Sending slave's public key.
265 * Not set if the message is from the master.
266 */
267 struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
268
269 /* Followed by concatenated PSYC message parts:
270 * messages with GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_* types
271 */
272};
273
274
275/**
276 * The method of a message.
277 */
278struct GNUNET_PSYC_MessageMethod
279{
280 /**
281 * Type: GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD
282 */
283 struct GNUNET_MessageHeader header;
284
285 /**
286 * OR'ed GNUNET_PSYC_MasterTransmitFlags
287 */
288 uint32_t flags GNUNET_PACKED;
289
290 /**
291 * Number of message IDs since the last message that contained state
292 * operations. @see enum GNUNET_PSYC_StateDeltaValues
293 */
294 uint64_t state_delta GNUNET_PACKED;
295
296 /* Followed by NUL-terminated method name. */
297};
298
299
300/**
301 * A modifier of a message.
302 */
303struct GNUNET_PSYC_MessageModifier
304{
305 /**
306 * Type: GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER
307 */
308 struct GNUNET_MessageHeader header;
309
310 /**
311 * Size of value.
312 */
313 uint32_t value_size GNUNET_PACKED;
314
315 /**
316 * Size of name, including NUL terminator.
317 */
318 uint16_t name_size GNUNET_PACKED;
319
320 /**
321 * enum GNUNET_PSYC_Operator
322 */
323 uint8_t oper;
324
325 /* Followed by NUL-terminated name, then the value. */
326};
327
328
329struct GNUNET_PSYC_CountersResultMessage
330{
331 /**
332 * Type: GNUNET_MESSAGE_TYPE_PSYC_RESULT_COUNTERS
333 */
334 struct GNUNET_MessageHeader header;
335
336 /**
337 * Status code for the operation.
338 */
339 uint32_t result_code GNUNET_PACKED;
340
341 /**
342 * Last message ID sent to the channel.
343 */
344 uint64_t max_message_id GNUNET_PACKED;
345};
346
347
348/**
349 * Join request sent to a PSYC master.
350 */
351struct GNUNET_PSYC_JoinRequestMessage
352{
353 /**
354 * Type: GNUNET_MESSAGE_TYPE_PSYC_MASTER_JOIN_REQUEST
355 */
356 struct GNUNET_MessageHeader header;
357 /**
358 * Public key of the joining slave.
359 */
360 struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
361
362 /* Followed by struct GNUNET_MessageHeader join_request */
363};
364
365
366/**
367 * Join decision sent in reply to a join request.
368 */
369struct GNUNET_PSYC_JoinDecisionMessage
370{
371 /**
372 * Type: GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION
373 */
374 struct GNUNET_MessageHeader header;
375
376 /**
377 * #GNUNET_YES if the slave was admitted.
378 */
379 int32_t is_admitted;
380
381 /**
382 * Public key of the joining slave.
383 * Only set when the master is sending the decision,
384 * not set when a slave is receiving it.
385 */
386 struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
387
388 /* Followed by struct GNUNET_MessageHeader join_response */
389};
390
391
392enum GNUNET_PSYC_HistoryReplayFlags
393{
394 /**
395 * Replay locally available messages.
396 */
397 GNUNET_PSYC_HISTORY_REPLAY_LOCAL = 0,
398
399 /**
400 * Replay messages from remote peers if not found locally.
401 */
402 GNUNET_PSYC_HISTORY_REPLAY_REMOTE = 1,
403};
404
405
406struct GNUNET_PSYC_HistoryRequestMessage
407{
408 /**
409 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_HISTORY_REPLAY
410 */
411 struct GNUNET_MessageHeader header;
412
413 /**
414 * @see enum GNUNET_PSYC_HistoryReplayFlags
415 */
416 uint32_t flags GNUNET_PACKED;
417
418 /**
419 * ID for this operation.
420 */
421 uint64_t op_id GNUNET_PACKED;
422
423 uint64_t start_message_id GNUNET_PACKED;
424
425 uint64_t end_message_id GNUNET_PACKED;
426
427 uint64_t message_limit GNUNET_PACKED;
428
429 /* Followed by NUL-terminated method name prefix. */
430};
431
432
433struct GNUNET_PSYC_StateRequestMessage
434{
435 /**
436 * Types:
437 * - GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_GET
438 * - GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_GET_PREFIX
439 */
440 struct GNUNET_MessageHeader header;
441
442 uint32_t reserved GNUNET_PACKED;
443
444 /**
445 * ID for this operation.
446 */
447 uint64_t op_id GNUNET_PACKED;
448
449 /* Followed by NUL-terminated name. */
450};
451
452
453/**** service -> library ****/
454
455
456/**
457 * Answer from service to client about last operation.
458 */
459struct GNUNET_PSYC_OperationResultMessage
460{
461 /**
462 * Types:
463 * - GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE
464 * - GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_RESULT
465 */
466 struct GNUNET_MessageHeader header;
467
468 uint32_t reserved GNUNET_PACKED;
469
470 /**
471 * Operation ID.
472 */
473 uint64_t op_id GNUNET_PACKED;
474
475 /**
476 * Status code for the operation.
477 */
478 uint64_t result_code GNUNET_PACKED;
479
480 /* Followed by:
481 * - on error: NUL-terminated error message
482 * - on success: one of the following message types
483 *
484 * For a STATE_RESULT, one of:
485 * - GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER
486 * - GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT
487 * - GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END
488 */
489};
490
491GNUNET_NETWORK_STRUCT_END
492
493
494#define GNUNET_PSYC_MODIFIER_MAX_PAYLOAD \
495 GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD \
496 - sizeof (struct GNUNET_PSYC_MessageModifier)
497
498#define GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD \
499 GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD \
500 - sizeof (struct GNUNET_MessageHeader)
501
502#define GNUNET_PSYC_DATA_MAX_PAYLOAD \
503 GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD \
504 - sizeof (struct GNUNET_MessageHeader)
505
506
507/**
508 * PSYC message part processing states.
509 */
510enum GNUNET_PSYC_MessageState
511{
512 GNUNET_PSYC_MESSAGE_STATE_START = 0,
513 GNUNET_PSYC_MESSAGE_STATE_HEADER = 1,
514 GNUNET_PSYC_MESSAGE_STATE_METHOD = 2,
515 GNUNET_PSYC_MESSAGE_STATE_MODIFIER = 3,
516 GNUNET_PSYC_MESSAGE_STATE_MOD_CONT = 4,
517 GNUNET_PSYC_MESSAGE_STATE_DATA = 5,
518 GNUNET_PSYC_MESSAGE_STATE_END = 6,
519 GNUNET_PSYC_MESSAGE_STATE_CANCEL = 7,
520 GNUNET_PSYC_MESSAGE_STATE_ERROR = 8,
521};
522
523
524/**
525 * Handle that identifies a join request.
526 *
527 * Used to match calls to #GNUNET_PSYC_JoinCallback to the
528 * corresponding calls to GNUNET_PSYC_join_decision().
529 */
530struct GNUNET_PSYC_JoinHandle;
531
532
533/**
534 * Method called from PSYC upon receiving a message.
535 *
536 * @param cls Closure.
537 * @param message_id Sequence number of the message.
538 * @param flags OR'ed GNUNET_PSYC_MessageFlags
539 * @param msg Message part, one of the following types:
540 */
541typedef void
542(*GNUNET_PSYC_MessageCallback) (void *cls,
543 const struct GNUNET_PSYC_MessageHeader *msg);
544
545
546/**
547 * Method called from PSYC upon receiving part of a message.
548 *
549 * @param cls
550 * Closure.
551 * @param slave_pub_key
552 * Public key of the slave sending the message.
553 * Only set for channel master.
554 * @param message_id
555 * Sequence number of the message.
556 * @param flags
557 * OR'ed GNUNET_PSYC_MessageFlags
558 * @param fragment_offset
559 * Multicast message fragment offset.
560 * @param msg Message part, one of the following types:
561 * - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_HEADER
562 * - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD
563 * - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER
564 * - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT
565 * - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA
566 * or NULL if an error occurred while receiving a message.
567 */
568typedef void
569(*GNUNET_PSYC_MessagePartCallback) (void *cls,
570 const struct GNUNET_PSYC_MessageHeader *msg,
571 const struct GNUNET_MessageHeader *pmsg);
572
573
574/**
575 * Method called from PSYC upon receiving a join request.
576 *
577 * @param cls
578 * Closure.
579 * @param slave_pub_key
580 * Public key of the slave requesting join.
581 * @param join_msg
582 * Join message sent along with the request.
583 * @param jh
584 * Join handle to use with GNUNET_PSYC_join_decision()
585 */
586typedef void
587(*GNUNET_PSYC_JoinRequestCallback) (void *cls,
588 const struct GNUNET_PSYC_JoinRequestMessage *req,
589 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_pub_key,
590 const struct GNUNET_PSYC_Message *join_msg,
591 struct GNUNET_PSYC_JoinHandle *jh);
592
593
594/**
595 * Function to call with the decision made for a join request.
596 *
597 * Must be called once and only once in response to an invocation of the
598 * #GNUNET_PSYC_JoinCallback.
599 *
600 * @param jh Join request handle.
601 * @param is_admitted
602 * #GNUNET_YES if the join is approved,
603 * #GNUNET_NO if it is disapproved,
604 * #GNUNET_SYSERR if we cannot answer the request.
605 * @param relay_count Number of relays given.
606 * @param relays Array of suggested peers that might be useful relays to use
607 * when joining the multicast group (essentially a list of peers that
608 * are already part of the multicast group and might thus be willing
609 * to help with routing). If empty, only this local peer (which must
610 * be the multicast origin) is a good candidate for building the
611 * multicast tree. Note that it is unnecessary to specify our own
612 * peer identity in this array.
613 * @param join_resp Application-dependent join response message to send along
614 * with the decision.
615 *
616 * @return #GNUNET_OK on success,
617 * #GNUNET_SYSERR if @a join_resp is too large.
618 */
619int
620GNUNET_PSYC_join_decision (struct GNUNET_PSYC_JoinHandle *jh,
621 int is_admitted,
622 uint32_t relay_count,
623 const struct GNUNET_PeerIdentity *relays,
624 const struct GNUNET_PSYC_Message *join_resp);
625
626
627/**
628 * Handle for the master of a PSYC channel.
629 */
630struct GNUNET_PSYC_Master;
631
632
633/**
634 * Function called once we are connected to the PSYC service
635 * and the channel master is started.
636 *
637 * Also called when we reconnected to the service
638 * after the connection closed unexpectedly.
639 *
640 * @param cls
641 * Closure.
642 * @param result
643 * #GNUNET_YES if there were already messages sent to the channel,
644 * #GNUNET_NO if the message history is empty,
645 * #GNUNET_SYSERR on error.
646 * @param max_message_id
647 * Last message ID sent to the channel.
648 */
649typedef void
650(*GNUNET_PSYC_MasterStartCallback) (void *cls, int result,
651 uint64_t max_message_id);
652
653
654/**
655 * Start a PSYC master channel.
656 *
657 * Will start a multicast group identified by the given ECC key. Messages
658 * received from group members will be given to the respective handler methods.
659 * If a new member wants to join a group, the "join" method handler will be
660 * invoked; the join handler must then generate a "join" message to approve the
661 * joining of the new member. The channel can also change group membership
662 * without explicit requests. Note that PSYC doesn't itself "understand" join
663 * or part messages, the respective methods must call other PSYC functions to
664 * inform PSYC about the meaning of the respective events.
665 *
666 * @param cfg Configuration to use (to connect to PSYC service).
667 * @param channel_key ECC key that will be used to sign messages for this
668 * PSYC session. The public key is used to identify the PSYC channel.
669 * Note that end-users will usually not use the private key directly, but
670 * rather look it up in GNS for places managed by other users, or select
671 * a file with the private key(s) when setting up their own channels
672 * FIXME: we'll likely want to use NOT the p521 curve here, but a cheaper
673 * one in the future.
674 * @param policy Channel policy specifying join and history restrictions.
675 * Used to automate join decisions.
676 * @param master_start_cb Function to invoke after the channel master started.
677 * @param join_request_cb Function to invoke when a slave wants to join.
678 * @param message_cb Function to invoke on message parts sent to the channel
679 * and received from slaves
680 * @param cls Closure for @a method and @a join_cb.
681 *
682 * @return Handle for the channel master, NULL on error.
683 */
684struct GNUNET_PSYC_Master *
685GNUNET_PSYC_master_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
686 const struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key,
687 enum GNUNET_PSYC_Policy policy,
688 GNUNET_PSYC_MasterStartCallback master_start_cb,
689 GNUNET_PSYC_JoinRequestCallback join_request_cb,
690 GNUNET_PSYC_MessageCallback message_cb,
691 GNUNET_PSYC_MessagePartCallback message_part_cb,
692 void *cls);
693
694
695/**
696 * Function called to provide data for a transmission via PSYC.
697 *
698 * Note that returning #GNUNET_YES or #GNUNET_SYSERR (but not #GNUNET_NO)
699 * invalidates the respective transmission handle.
700 *
701 * @param cls Closure.
702 * @param[in,out] data_size Initially set to the number of bytes available in
703 * @a data, should be set to the number of bytes written to data.
704 * @param[out] data Where to write the body of the message to give to the
705 * method. The function must copy at most @a data_size bytes to @a data.
706 * @return #GNUNET_SYSERR on error (fatal, aborts transmission)
707 * #GNUNET_NO on success, if more data is to be transmitted later.
708 * Should be used if @a data_size was not big enough to take all the
709 * data. If 0 is returned in @a data_size the transmission is paused,
710 * and can be resumed with GNUNET_PSYC_master_transmit_resume().
711 * #GNUNET_YES if this completes the transmission (all data supplied)
712 */
713typedef int
714(*GNUNET_PSYC_TransmitNotifyData) (void *cls,
715 uint16_t *data_size,
716 void *data);
717
718/**
719 * Function called to provide a modifier for a transmission via PSYC.
720 *
721 * Note that returning #GNUNET_YES or #GNUNET_SYSERR (but not #GNUNET_NO)
722 * invalidates the respective transmission handle.
723 *
724 * @param cls Closure.
725 * @param[in,out] data_size Initially set to the number of bytes available in
726 * @a data, should be set to the number of bytes written to data.
727 * @param[out] data Where to write the modifier's name and value.
728 * The function must copy at most @a data_size bytes to @a data.
729 * When this callback is first called for a modifier, @a data should
730 * contain: "name\0value". If the whole value does not fit, subsequent
731 * calls to this function should write continuations of the value to
732 * @a data.
733 * @param[out] oper Where to write the operator of the modifier.
734 * Only needed during the first call to this callback at the beginning
735 * of the modifier. In case of subsequent calls asking for value
736 * continuations @a oper is set to #NULL.
737 * @param[out] full_value_size Where to write the full size of the value.
738 * Only needed during the first call to this callback at the beginning
739 * of the modifier. In case of subsequent calls asking for value
740 * continuations @a value_size is set to #NULL.
741 * @return #GNUNET_SYSERR on error (fatal, aborts transmission)
742 * #GNUNET_NO on success, if more data is to be transmitted later.
743 * Should be used if @a data_size was not big enough to take all the
744 * data for the modifier's value (the name must be always returned
745 * during the first call to this callback).
746 * If 0 is returned in @a data_size the transmission is paused,
747 * and can be resumed with GNUNET_PSYC_master_transmit_resume().
748 * #GNUNET_YES if this completes the modifier (the whole value is supplied).
749 */
750typedef int
751(*GNUNET_PSYC_TransmitNotifyModifier) (void *cls,
752 uint16_t *data_size,
753 void *data,
754 uint8_t *oper,
755 uint32_t *full_value_size);
756
757/**
758 * Flags for transmitting messages to a channel by the master.
759 */
760enum GNUNET_PSYC_MasterTransmitFlags
761{
762 GNUNET_PSYC_MASTER_TRANSMIT_NONE = 0,
763
764 /**
765 * Whether this message should reset the channel state,
766 * i.e. remove all previously stored state variables.
767 */
768
769 GNUNET_PSYC_MASTER_TRANSMIT_STATE_RESET = 1 << 0,
770
771 /**
772 * Whether this message contains any state modifiers.
773 */
774 GNUNET_PSYC_MASTER_TRANSMIT_STATE_MODIFY = 1 << 1,
775
776 /**
777 * Add PSYC header variable with the hash of the current channel state.
778 */
779 GNUNET_PSYC_MASTER_TRANSMIT_STATE_HASH = 1 << 2,
780
781 /**
782 * Whether we need to increment the group generation counter after
783 * transmitting this message.
784 */
785 GNUNET_PSYC_MASTER_TRANSMIT_INC_GROUP_GEN = 1 << 3
786};
787
788
789/**
790 * Handle for a pending PSYC transmission operation.
791 */
792struct GNUNET_PSYC_MasterTransmitHandle;
793
794
795/**
796 * Send a message to call a method to all members in the PSYC channel.
797 *
798 * @param master Handle to the PSYC channel.
799 * @param method_name Which method should be invoked.
800 * @param notify_mod Function to call to obtain modifiers.
801 * @param notify_data Function to call to obtain fragments of the data.
802 * @param notify_cls Closure for @a notify_mod and @a notify_data.
803 * @param flags Flags for the message being transmitted.
804 * @return Transmission handle, NULL on error (i.e. more than one request queued).
805 */
806struct GNUNET_PSYC_MasterTransmitHandle *
807GNUNET_PSYC_master_transmit (struct GNUNET_PSYC_Master *master,
808 const char *method_name,
809 GNUNET_PSYC_TransmitNotifyModifier notify_mod,
810 GNUNET_PSYC_TransmitNotifyData notify_data,
811 void *notify_cls,
812 enum GNUNET_PSYC_MasterTransmitFlags flags);
813
814
815/**
816 * Resume transmission to the channel.
817 *
818 * @param th Handle of the request that is being resumed.
819 */
820void
821GNUNET_PSYC_master_transmit_resume (struct GNUNET_PSYC_MasterTransmitHandle *th);
822
823
824/**
825 * Abort transmission request to channel.
826 *
827 * @param th Handle of the request that is being aborted.
828 */
829void
830GNUNET_PSYC_master_transmit_cancel (struct GNUNET_PSYC_MasterTransmitHandle *th);
831
832
833/**
834 * Relay a message
835 *
836 * @param master Handle to the PSYC channel.
837 * @param method_name Which method should be invoked.
838 * @param notify_mod Function to call to obtain modifiers.
839 * @param notify_data Function to call to obtain fragments of the data.
840 * @param notify_cls Closure for @a notify_mod and @a notify_data.
841 * @param flags Flags for the message being transmitted.
842 * @return Transmission handle, NULL on error (i.e. more than one request queued).
843 */
844struct GNUNET_PSYC_MasterTransmitHandle *
845GNUNET_PSYC_master_relay (struct GNUNET_PSYC_Master *master,
846 uint64_t message_id);
847
848
849/**
850 * Stop a PSYC master channel.
851 *
852 * @param master
853 * PSYC channel master to stop.
854 * @param keep_active
855 * Keep place active after last application disconnected.
856 * @param stop_cb
857 * Function called after the master stopped
858 * and disconnected from the psyc service.
859 * @param stop_cls
860 * Closure for @a part_cb.
861 */
862void
863GNUNET_PSYC_master_stop (struct GNUNET_PSYC_Master *master,
864 int keep_active,
865 GNUNET_ContinuationCallback stop_cb,
866 void *stop_cls);
867
868
869/**
870 * Handle for a PSYC channel slave.
871 */
872struct GNUNET_PSYC_Slave;
873
874
875/**
876 * Function called after the slave connected to the PSYC service.
877 *
878 * Also called when reconnected to the service
879 * after the connection closed unexpectedly.
880 *
881 * @param cls
882 * Closure.
883 * @param result
884 * #GNUNET_YES if there were already messages sent to the channel,
885 * #GNUNET_NO if the message history is empty,
886 * #GNUNET_SYSERR on error.
887 * @param max_message_id
888 * Last message ID sent to the channel.
889 */
890typedef void
891(*GNUNET_PSYC_SlaveConnectCallback) (void *cls, int result,
892 uint64_t max_message_id);
893
894
895/**
896 * Method called to inform about the decision in response to a join request.
897 *
898 * If @a is_admitted is not #GNUNET_YES, then sending messages to the channel is
899 * not possible, but earlier history can be still queried.
900 *
901 * @param cls Closure.
902 * @param is_admitted #GNUNET_YES or #GNUNET_NO or #GNUNET_SYSERR
903 * @param join_msg Application-dependent join message from the origin.
904 */
905typedef void
906(*GNUNET_PSYC_JoinDecisionCallback) (void *cls,
907 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn,
908 int is_admitted,
909 const struct GNUNET_PSYC_Message *join_msg);
910
911/**
912 * Flags for GNUNET_PSYC_slave_join()
913 */
914enum GNUNET_PSYC_SlaveJoinFlags
915{
916 GNUNET_PSYC_SLAVE_JOIN_NONE = 0,
917
918 /**
919 * Local join for history access, no network connection is established.
920 */
921 GNUNET_PSYC_SLAVE_JOIN_LOCAL = 1,
922};
923
924
925/**
926 * Join a PSYC channel.
927 *
928 * The entity joining is always the local peer. The user must immediately use
929 * the GNUNET_PSYC_slave_transmit() functions to transmit a @e join_msg to the
930 * channel; if the join request succeeds, the channel state (and @e recent
931 * method calls) will be replayed to the joining member. There is no explicit
932 * notification on failure (as the channel may simply take days to approve,
933 * and disapproval is simply being ignored).
934 *
935 * @param cfg
936 * Configuration to use.
937 * @param channel_pub_key
938 * ECC public key that identifies the channel we wish to join.
939 * @param slave_pub_key
940 * ECC private-public key pair that identifies the slave, and
941 * used by multicast to sign the join request and subsequent unicast
942 * requests sent to the master.
943 * @param flags
944 * Join flags.
945 * @param origin
946 * Peer identity of the origin.
947 * @param relay_count
948 * Number of peers in the @a relays array.
949 * @param relays
950 * Peer identities of members of the multicast group, which serve
951 * as relays and used to join the group at.
952 * @param message_cb
953 * Function to invoke on message fragments received from the channel.
954 * @param message_part_cb
955 * Function to invoke on message parts received from the channel.
956 * @param slave_connect_cb
957 * Function invoked once we have connected to the PSYC service.
958 * @param join_decision_cb
959 * Function invoked once we have received a join decision.
960 * @param cls
961 * Closure for @a message_cb and @a slave_joined_cb.
962 * @param join_msg
963 * Join message.
964 *
965 * @return Handle for the slave, NULL on error.
966 */
967struct GNUNET_PSYC_Slave *
968GNUNET_PSYC_slave_join (const struct GNUNET_CONFIGURATION_Handle *cfg,
969 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_pub_key,
970 const struct GNUNET_CRYPTO_EcdsaPrivateKey *slave_pub_key,
971 enum GNUNET_PSYC_SlaveJoinFlags flags,
972 const struct GNUNET_PeerIdentity *origin,
973 uint32_t relay_count,
974 const struct GNUNET_PeerIdentity *relays,
975 GNUNET_PSYC_MessageCallback message_cb,
976 GNUNET_PSYC_MessagePartCallback message_part_cb,
977 GNUNET_PSYC_SlaveConnectCallback slave_connect_cb,
978 GNUNET_PSYC_JoinDecisionCallback join_decision_cb,
979 void *cls,
980 const struct GNUNET_PSYC_Message *join_msg);
981
982
983/**
984 * Part a PSYC channel.
985 *
986 * Will terminate the connection to the PSYC service. Polite clients should
987 * first explicitly send a part request (via GNUNET_PSYC_slave_transmit()).
988 *
989 * @param slave
990 * Slave handle.
991 * @param keep_active
992 * Keep place active after last application disconnected.
993 * @param part_cb
994 * Function called after the slave parted the channel
995 * and disconnected from the psyc service.
996 * @param part_cls
997 * Closure for @a part_cb.
998 */
999void
1000GNUNET_PSYC_slave_part (struct GNUNET_PSYC_Slave *slave,
1001 int keep_active,
1002 GNUNET_ContinuationCallback part_cb,
1003 void *part_cls);
1004
1005
1006/**
1007 * Flags for transmitting messages to the channel master by a slave.
1008 */
1009enum GNUNET_PSYC_SlaveTransmitFlags
1010{
1011 GNUNET_PSYC_SLAVE_TRANSMIT_NONE = 0
1012};
1013
1014
1015/**
1016 * Handle for a pending PSYC transmission operation.
1017 */
1018struct GNUNET_PSYC_SlaveTransmitHandle;
1019
1020
1021/**
1022 * Request a message to be sent to the channel master.
1023 *
1024 * @param slave Slave handle.
1025 * @param method_name Which (PSYC) method should be invoked (on host).
1026 * @param notify_mod Function to call to obtain modifiers.
1027 * @param notify_data Function to call to obtain fragments of the data.
1028 * @param notify_cls Closure for @a notify.
1029 * @param flags Flags for the message being transmitted.
1030 * @return Transmission handle, NULL on error (i.e. more than one request queued).
1031 */
1032struct GNUNET_PSYC_SlaveTransmitHandle *
1033GNUNET_PSYC_slave_transmit (struct GNUNET_PSYC_Slave *slave,
1034 const char *method_name,
1035 GNUNET_PSYC_TransmitNotifyModifier notify_mod,
1036 GNUNET_PSYC_TransmitNotifyData notify_data,
1037 void *notify_cls,
1038 enum GNUNET_PSYC_SlaveTransmitFlags flags);
1039
1040
1041/**
1042 * Resume transmission to the master.
1043 *
1044 * @param th Handle of the request that is being resumed.
1045 */
1046void
1047GNUNET_PSYC_slave_transmit_resume (struct GNUNET_PSYC_SlaveTransmitHandle *th);
1048
1049
1050/**
1051 * Abort transmission request to master.
1052 *
1053 * @param th Handle of the request that is being aborted.
1054 */
1055void
1056GNUNET_PSYC_slave_transmit_cancel (struct GNUNET_PSYC_SlaveTransmitHandle *th);
1057
1058
1059/**
1060 * Handle to access PSYC channel operations for both the master and slaves.
1061 */
1062struct GNUNET_PSYC_Channel;
1063
1064
1065/**
1066 * Convert a channel @a master to a @e channel handle to access the @e channel
1067 * APIs.
1068 *
1069 * @param master Channel master handle.
1070 * @return Channel handle, valid for as long as @a master is valid.
1071 */
1072struct GNUNET_PSYC_Channel *
1073GNUNET_PSYC_master_get_channel (struct GNUNET_PSYC_Master *master);
1074
1075
1076/**
1077 * Convert @a slave to a @e channel handle to access the @e channel APIs.
1078 *
1079 * @param slave Slave handle.
1080 * @return Channel handle, valid for as long as @a slave is valid.
1081 */
1082struct GNUNET_PSYC_Channel *
1083GNUNET_PSYC_slave_get_channel (struct GNUNET_PSYC_Slave *slave);
1084
1085
1086/**
1087 * Add a slave to the channel's membership list.
1088 *
1089 * Note that this will NOT generate any PSYC traffic, it will merely update the
1090 * local database to modify how we react to <em>membership test</em> queries.
1091 * The channel master still needs to explicitly transmit a @e join message to
1092 * notify other channel members and they then also must still call this function
1093 * in their respective methods handling the @e join message. This way, how @e
1094 * join and @e part operations are exactly implemented is still up to the
1095 * application; for example, there might be a @e part_all method to kick out
1096 * everyone.
1097 *
1098 * Note that channel slaves are explicitly trusted to execute such methods
1099 * correctly; not doing so correctly will result in either denying other slaves
1100 * access or offering access to channel data to non-members.
1101 *
1102 * @param channel
1103 * Channel handle.
1104 * @param slave_pub_key
1105 * Identity of channel slave to add.
1106 * @param announced_at
1107 * ID of the message that announced the membership change.
1108 * @param effective_since
1109 * Addition of slave is in effect since this message ID.
1110 * @param result_cb
1111 * Function to call with the result of the operation.
1112 * The @e result_code argument is #GNUNET_OK on success, or
1113 * #GNUNET_SYSERR on error. In case of an error, the @e data argument
1114 * can contain an optional error message.
1115 * @param cls
1116 * Closure for @a result_cb.
1117 */
1118void
1119GNUNET_PSYC_channel_slave_add (struct GNUNET_PSYC_Channel *channel,
1120 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_pub_key,
1121 uint64_t announced_at,
1122 uint64_t effective_since,
1123 GNUNET_ResultCallback result_cb,
1124 void *cls);
1125
1126
1127/**
1128 * Remove a slave from the channel's membership list.
1129 *
1130 * Note that this will NOT generate any PSYC traffic, it will merely update the
1131 * local database to modify how we react to <em>membership test</em> queries.
1132 * The channel master still needs to explicitly transmit a @e part message to
1133 * notify other channel members and they then also must still call this function
1134 * in their respective methods handling the @e part message. This way, how
1135 * @e join and @e part operations are exactly implemented is still up to the
1136 * application; for example, there might be a @e part_all message to kick out
1137 * everyone.
1138 *
1139 * Note that channel members are explicitly trusted to perform these
1140 * operations correctly; not doing so correctly will result in either
1141 * denying members access or offering access to channel data to
1142 * non-members.
1143 *
1144 * @param channel
1145 * Channel handle.
1146 * @param slave_pub_key
1147 * Identity of channel slave to remove.
1148 * @param announced_at
1149 * ID of the message that announced the membership change.
1150 * @param result_cb
1151 * Function to call with the result of the operation.
1152 * The @e result_code argument is #GNUNET_OK on success, or
1153 * #GNUNET_SYSERR on error. In case of an error, the @e data argument
1154 * can contain an optional error message.
1155 * @param cls
1156 * Closure for @a result_cb.
1157 */
1158void
1159GNUNET_PSYC_channel_slave_remove (struct GNUNET_PSYC_Channel *channel,
1160 const struct GNUNET_CRYPTO_EcdsaPublicKey
1161 *slave_pub_key,
1162 uint64_t announced_at,
1163 GNUNET_ResultCallback result_cb,
1164 void *cls);
1165
1166
1167/**
1168 * History request handle.
1169 */
1170struct GNUNET_PSYC_HistoryRequest;
1171
1172
1173/**
1174 * Request to replay a part of the message history of the channel.
1175 *
1176 * Historic messages (but NOT the state at the time) will be replayed (given to
1177 * the normal method handlers) if available and if access is permitted.
1178 *
1179 * @param channel
1180 * Which channel should be replayed?
1181 * @param start_message_id
1182 * Earliest interesting point in history.
1183 * @param end_message_id
1184 * Last (inclusive) interesting point in history.
1185 * @param method_prefix
1186 * Retrieve only messages with a matching method prefix.
1187 * @param flags
1188 * OR'ed enum GNUNET_PSYC_HistoryReplayFlags
1189 * @param result_cb
1190 * Function to call when the requested history has been fully replayed.
1191 * Once this function has been called, the client must not call
1192 * GNUNET_PSYC_channel_history_replay_cancel() anymore.
1193 * @param cls
1194 * Closure for the callbacks.
1195 *
1196 * @return Handle to cancel history replay operation.
1197 */
1198struct GNUNET_PSYC_HistoryRequest *
1199GNUNET_PSYC_channel_history_replay (struct GNUNET_PSYC_Channel *channel,
1200 uint64_t start_message_id,
1201 uint64_t end_message_id,
1202 const char *method_prefix,
1203 uint32_t flags,
1204 GNUNET_PSYC_MessageCallback message_cb,
1205 GNUNET_PSYC_MessagePartCallback message_part_cb,
1206 GNUNET_ResultCallback result_cb,
1207 void *cls);
1208
1209
1210/**
1211 * Request to replay the latest messages from the message history of the channel.
1212 *
1213 * Historic messages (but NOT the state at the time) will be replayed (given to
1214 * the normal method handlers) if available and if access is permitted.
1215 *
1216 * @param channel
1217 * Which channel should be replayed?
1218 * @param message_limit
1219 * Maximum number of messages to replay.
1220 * @param flags
1221 * OR'ed enum GNUNET_PSYC_HistoryReplayFlags
1222 * @param finish_cb
1223 * Function to call when the requested history has been fully replayed
1224 * (counting message IDs might not suffice, as some messages might be
1225 * secret and thus the listener would not know the story is finished
1226 * without being told explicitly)o once this function has been called, the
1227 * client must not call GNUNET_PSYC_channel_history_replay_cancel() anymore.
1228 * @param cls
1229 * Closure for the callbacks.
1230 *
1231 * @return Handle to cancel history replay operation.
1232 */
1233struct GNUNET_PSYC_HistoryRequest *
1234GNUNET_PSYC_channel_history_replay_latest (struct GNUNET_PSYC_Channel *channel,
1235 uint64_t message_limit,
1236 const char *method_prefix,
1237 uint32_t flags,
1238 GNUNET_PSYC_MessageCallback message_cb,
1239 GNUNET_PSYC_MessagePartCallback message_part_cb,
1240 GNUNET_ResultCallback result_cb,
1241 void *cls);
1242
1243
1244void
1245GNUNET_PSYC_channel_history_replay_cancel (struct GNUNET_PSYC_Channel *channel,
1246 struct GNUNET_PSYC_HistoryRequest *hr);
1247
1248
1249/**
1250 * Function called to inform a member about stored state values for a channel.
1251 *
1252 * If @a full_value_size > value_size then this function is called multiple
1253 * times until the whole value arrived.
1254 *
1255 * @param cls
1256 * Closure.
1257 * @param name
1258 * Name of the state variable.
1259 * NULL if there are no more state variables to be returned.
1260 * @param value
1261 * Value of the state variable.
1262 * @param value_size
1263 * Number of bytes in @a value.
1264 * @param full_value_size
1265 * Number of bytes in the full value, including continuations.
1266 * Only set for the first part of a variable,
1267 * in case of a continuation it is 0.
1268 */
1269typedef void
1270(*GNUNET_PSYC_StateVarCallback) (void *cls,
1271 const struct GNUNET_MessageHeader *mod,
1272 const char *name,
1273 const void *value,
1274 uint32_t value_size,
1275 uint32_t full_value_size);
1276
1277
1278/**
1279 * State request handle.
1280 */
1281struct GNUNET_PSYC_StateRequest;
1282
1283
1284/**
1285 * Retrieve the best matching channel state variable.
1286 *
1287 * If the requested variable name is not present in the state, the nearest
1288 * less-specific name is matched; for example, requesting "_a_b" will match "_a"
1289 * if "_a_b" does not exist.
1290 *
1291 * @param channel
1292 * Channel handle.
1293 * @param full_name
1294 * Full name of the requested variable.
1295 * The actual variable returned might have a shorter name.
1296 * @param var_cb
1297 * Function called once when a matching state variable is found.
1298 * Not called if there's no matching state variable.
1299 * @param result_cb
1300 * Function called after the operation finished.
1301 * (i.e. all state variables have been returned via @a state_cb)
1302 * @param cls
1303 * Closure for the callbacks.
1304 */
1305struct GNUNET_PSYC_StateRequest *
1306GNUNET_PSYC_channel_state_get (struct GNUNET_PSYC_Channel *channel,
1307 const char *full_name,
1308 GNUNET_PSYC_StateVarCallback var_cb,
1309 GNUNET_ResultCallback result_cb,
1310 void *cls);
1311
1312
1313/**
1314 * Return all channel state variables whose name matches a given prefix.
1315 *
1316 * A name matches if it starts with the given @a name_prefix, thus requesting
1317 * the empty prefix ("") will match all values; requesting "_a_b" will also
1318 * return values stored under "_a_b_c".
1319 *
1320 * The @a state_cb is invoked on all matching state variables asynchronously, as
1321 * the state is stored in and retrieved from the PSYCstore,
1322 *
1323 * @param channel
1324 * Channel handle.
1325 * @param name_prefix
1326 * Prefix of the state variable name to match.
1327 * @param var_cb
1328 * Function called once when a matching state variable is found.
1329 * Not called if there's no matching state variable.
1330 * @param result_cb
1331 * Function called after the operation finished.
1332 * (i.e. all state variables have been returned via @a state_cb)
1333 * @param cls
1334 * Closure for the callbacks.
1335 */
1336struct GNUNET_PSYC_StateRequest *
1337GNUNET_PSYC_channel_state_get_prefix (struct GNUNET_PSYC_Channel *channel,
1338 const char *name_prefix,
1339 GNUNET_PSYC_StateVarCallback var_cb,
1340 GNUNET_ResultCallback result_cb,
1341 void *cls);
1342
1343/**
1344 * Cancel a state request operation.
1345 *
1346 * @param sr
1347 * Handle for the operation to cancel.
1348 */
1349void
1350GNUNET_PSYC_channel_state_get_cancel (struct GNUNET_PSYC_StateRequest *sr);
1351
1352
1353
1354#if 0 /* keep Emacsens' auto-indent happy */
1355{
1356#endif
1357#ifdef __cplusplus
1358}
1359#endif
1360
1361/* ifndef GNUNET_PSYC_SERVICE_H */
1362#endif
1363
1364/** @} */ /* end of group */
diff --git a/src/include/gnunet_psyc_slicer.h b/src/include/gnunet_psyc_slicer.h
deleted file mode 100644
index 87f66d7e8..000000000
--- a/src/include/gnunet_psyc_slicer.h
+++ /dev/null
@@ -1,378 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Gabor X Toth
23 * @author Christian Grothoff
24 *
25 * @file
26 * PSYC Slicer library
27 *
28 * @defgroup psyc-util-slicer PSYC Utilities library: Slicer
29 * Try-and-slice processing of PSYC method names and environment.
30 * @{
31 */
32
33#ifndef GNUNET_PSYC_SLICER_H
34#define GNUNET_PSYC_SLICER_H
35
36
37#ifdef __cplusplus
38extern "C"
39{
40#if 0 /* keep Emacsens' auto-indent happy */
41}
42#endif
43#endif
44
45#include "gnunet_util_lib.h"
46
47
48/**
49 * Handle to an implementation of try-and-slice.
50 */
51struct GNUNET_PSYC_Slicer;
52
53
54/**
55 * Function called upon receiving a message indicating a call to a @e method.
56 *
57 * This function is called one or more times for each message until all data
58 * fragments arrive from the network.
59 *
60 * @param cls
61 * Closure.
62 * @param msg
63 * Message part, as it arrived from the network.
64 * @param message_id
65 * Message counter, monotonically increasing from 1.
66 * @param flags
67 * OR'ed GNUNET_PSYC_MessageFlags
68 * @param fragment_offset
69 * Multicast message fragment offset.
70 * @param tmit_flags
71 * OR'ed GNUNET_PSYC_MasterTransmitFlags
72 * @param nym
73 * The sender of the message.
74 * Can be NULL if the message is not connected to a pseudonym.
75 * @param method_name
76 * Original method name from PSYC.
77 * May be more specific than the registered method name due to
78 * try-and-slice matching.
79 */
80typedef void
81(*GNUNET_PSYC_MethodCallback) (void *cls,
82 const struct GNUNET_PSYC_MessageHeader *msg,
83 const struct GNUNET_PSYC_MessageMethod *meth,
84 uint64_t message_id,
85 const char *method_name);
86
87
88/**
89 * Function called upon receiving a modifier of a message.
90 *
91 * @param cls
92 * Closure.
93 * @param message_id
94 * Message ID this data fragment belongs to.
95 * @param flags
96 * OR'ed GNUNET_PSYC_MessageFlags
97 * @param fragment_offset
98 * Multicast message fragment offset.
99 * @param msg
100 * Message part, as it arrived from the network.
101 * @param oper
102 * Operation to perform.
103 * 0 in case of a modifier continuation.
104 * @param name
105 * Name of the modifier.
106 * NULL in case of a modifier continuation.
107 * @param value
108 * Value of the modifier.
109 * @param value_size
110 * Size of @value.
111 */
112typedef void
113(*GNUNET_PSYC_ModifierCallback) (void *cls,
114 const struct GNUNET_PSYC_MessageHeader *msg,
115 const struct GNUNET_MessageHeader *pmsg,
116 uint64_t message_id,
117 enum GNUNET_PSYC_Operator oper,
118 const char *name,
119 const void *value,
120 uint16_t value_size,
121 uint16_t full_value_size);
122
123
124/**
125 * Function called upon receiving a data fragment of a message.
126 *
127 * @param cls
128 * Closure.
129 * @param msg
130 * Message part, as it arrived from the network.
131 * @param message_id
132 * Message ID this data fragment belongs to.
133 * @param flags
134 * OR'ed GNUNET_PSYC_MessageFlags
135 * @param fragment_offset
136 * Multicast message fragment offset.
137 * @param data
138 * Data stream given to the method.
139 * @param data_size
140 * Number of bytes in @a data.
141 * @param end
142 * End of message?
143 * #GNUNET_NO if there are further fragments,
144 * #GNUNET_YES if this is the last fragment,
145 * #GNUNET_SYSERR indicates the message was cancelled by the sender.
146 */
147typedef void
148(*GNUNET_PSYC_DataCallback) (void *cls,
149 const struct GNUNET_PSYC_MessageHeader *msg,
150 const struct GNUNET_MessageHeader *pmsg,
151 uint64_t message_id,
152 const void *data,
153 uint16_t data_size);
154
155
156/**
157 * End of message.
158 *
159 * @param cls
160 * Closure.
161 * @param msg
162 * Message part, as it arrived from the network.
163 * @param message_id
164 * Message ID this data fragment belongs to.
165 * @param flags
166 * OR'ed GNUNET_PSYC_MessageFlags
167 * @param fragment_offset
168 * Multicast message fragment offset.
169 * @param cancelled
170 * #GNUNET_YES if the message was cancelled,
171 * #GNUNET_NO if the message is complete.
172 */
173typedef void
174(*GNUNET_PSYC_EndOfMessageCallback) (void *cls,
175 const struct GNUNET_PSYC_MessageHeader *msg,
176 const struct GNUNET_MessageHeader *pmsg,
177 uint64_t message_id,
178 uint8_t is_cancelled);
179
180
181/**
182 * Create a try-and-slice instance.
183 *
184 * A slicer processes incoming messages and notifies callbacks about matching
185 * methods or modifiers encountered.
186 *
187 * @return A new try-and-slice construct.
188 */
189struct GNUNET_PSYC_Slicer *
190GNUNET_PSYC_slicer_create (void);
191
192
193/**
194 * Add a method to the try-and-slice instance.
195 *
196 * The callbacks are called for messages with a matching @a method_name prefix.
197 *
198 * @param slicer
199 * The try-and-slice instance to extend.
200 * @param method_name
201 * Name of the given method, use empty string to match all.
202 * @param method_cb
203 * Method handler invoked upon a matching message.
204 * @param modifier_cb
205 * Modifier handler, invoked after @a method_cb
206 * for each modifier in the message.
207 * @param data_cb
208 * Data handler, invoked after @a modifier_cb for each data fragment.
209 * @param eom_cb
210 * Invoked upon reaching the end of a matching message.
211 * @param cls
212 * Closure for the callbacks.
213 */
214void
215GNUNET_PSYC_slicer_method_add (struct GNUNET_PSYC_Slicer *slicer,
216 const char *method_name,
217 GNUNET_PSYC_MessageCallback msg_cb,
218 GNUNET_PSYC_MethodCallback method_cb,
219 GNUNET_PSYC_ModifierCallback modifier_cb,
220 GNUNET_PSYC_DataCallback data_cb,
221 GNUNET_PSYC_EndOfMessageCallback eom_cb,
222 void *cls);
223
224/**
225 * Remove a registered method from the try-and-slice instance.
226 *
227 * Removes one matching handler registered with the given
228 * @a method_name and callbacks.
229 *
230 * @param slicer
231 * The try-and-slice instance.
232 * @param method_name
233 * Name of the method to remove.
234 * @param method_cb
235 * Only remove matching method handler, or NULL.
236 * @param modifier_cb
237 * Only remove matching modifier handler, or NULL.
238 * @param data_cb
239 * Only remove matching data handler, or NULL.
240 * @param eom_cb
241 * Only remove matching End of Message handler, or NULL.
242 *
243 * @return #GNUNET_OK if a method handler was removed,
244 * #GNUNET_NO if no handler matched the given method name and callbacks.
245 */
246int
247GNUNET_PSYC_slicer_method_remove (struct GNUNET_PSYC_Slicer *slicer,
248 const char *method_name,
249 GNUNET_PSYC_MessageCallback msg_cb,
250 GNUNET_PSYC_MethodCallback method_cb,
251 GNUNET_PSYC_ModifierCallback modifier_cb,
252 GNUNET_PSYC_DataCallback data_cb,
253 GNUNET_PSYC_EndOfMessageCallback eom_cb);
254
255
256/**
257 * Watch a place for changed objects.
258 *
259 * @param slicer
260 * The try-and-slice instance.
261 * @param object_filter
262 * Object prefix to match.
263 * @param modifier_cb
264 * Function to call when encountering a state modifier.
265 * @param cls
266 * Closure for callback.
267 */
268void
269GNUNET_PSYC_slicer_modifier_add (struct GNUNET_PSYC_Slicer *slicer,
270 const char *object_filter,
271 GNUNET_PSYC_ModifierCallback modifier_cb,
272 void *cls);
273
274
275/**
276 * Remove a registered modifier from the try-and-slice instance.
277 *
278 * Removes one matching handler registered with the given
279 * @a object_filter and callback.
280 *
281 * @param slicer
282 * The try-and-slice instance.
283 * @param object_filter
284 * Object prefix to match.
285 * @param modifier_cb
286 * Function to call when encountering a state modifier changes.
287 */
288int
289GNUNET_PSYC_slicer_modifier_remove (struct GNUNET_PSYC_Slicer *slicer,
290 const char *object_filter,
291 GNUNET_PSYC_ModifierCallback modifier_cb);
292
293
294/**
295 * Process an incoming message and call matching handlers.
296 *
297 * @param slicer
298 * The slicer to use.
299 * @param msg
300 * The message as it arrived from the network.
301 */
302void
303GNUNET_PSYC_slicer_message (struct GNUNET_PSYC_Slicer *slicer,
304 const struct GNUNET_PSYC_MessageHeader *msg);
305
306
307/**
308 * Process an incoming message part and call matching handlers.
309 *
310 * @param slicer
311 * The slicer to use.
312 * @param message_id
313 * ID of the message.
314 * @param flags
315 * Flags for the message.
316 * @see enum GNUNET_PSYC_MessageFlags
317 * @param fragment offset
318 * Fragment offset of the message.
319 * @param msg
320 * The message part as it arrived from the network.
321 */
322void
323GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer,
324 const struct GNUNET_PSYC_MessageHeader *msg,
325 const struct GNUNET_MessageHeader *pmsg);
326
327
328/**
329 * Remove all registered method handlers.
330 *
331 * @param slicer
332 * Slicer to clear.
333 */
334void
335GNUNET_PSYC_slicer_method_clear (struct GNUNET_PSYC_Slicer *slicer);
336
337
338/**
339 * Remove all registered modifier handlers.
340 *
341 * @param slicer
342 * Slicer to clear.
343 */
344void
345GNUNET_PSYC_slicer_modifier_clear (struct GNUNET_PSYC_Slicer *slicer);
346
347
348/**
349 * Remove all registered method & modifier handlers.
350 *
351 * @param slicer
352 * Slicer to clear.
353 */
354void
355GNUNET_PSYC_slicer_clear (struct GNUNET_PSYC_Slicer *slicer);
356
357
358/**
359 * Destroy a given try-and-slice instance.
360 *
361 * @param slicer
362 * Slicer to destroy
363 */
364void
365GNUNET_PSYC_slicer_destroy (struct GNUNET_PSYC_Slicer *slicer);
366
367
368#if 0 /* keep Emacsens' auto-indent happy */
369{
370#endif
371#ifdef __cplusplus
372}
373#endif
374
375/* ifndef GNUNET_PSYC_SLICER_H */
376#endif
377
378/** @} */ /* end of group */
diff --git a/src/include/gnunet_psyc_util_lib.h b/src/include/gnunet_psyc_util_lib.h
deleted file mode 100644
index 57eec65c3..000000000
--- a/src/include/gnunet_psyc_util_lib.h
+++ /dev/null
@@ -1,53 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2012, 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Gabor X Toth
23 *
24 * @file
25 * PSYC utilities: messages, environment, slicer
26 */
27
28#ifndef GNUNET_PSYC_UTIL_LIB_H
29#define GNUNET_PSYC_UTIL_LIB_H
30
31#ifdef __cplusplus
32extern "C"
33{
34#if 0 /* keep Emacsens' auto-indent happy */
35}
36#endif
37#endif
38
39
40#include "gnunet_psyc_env.h"
41#include "gnunet_psyc_message.h"
42#include "gnunet_psyc_slicer.h"
43
44
45#if 0 /* keep Emacsens' auto-indent happy */
46{
47#endif
48#ifdef __cplusplus
49}
50#endif
51
52/* ifndef GNUNET_PSYC_UTIL_LIB_H */
53#endif
diff --git a/src/include/gnunet_psycstore_plugin.h b/src/include/gnunet_psycstore_plugin.h
deleted file mode 100644
index fac549f43..000000000
--- a/src/include/gnunet_psycstore_plugin.h
+++ /dev/null
@@ -1,383 +0,0 @@
1/*
2 This file is part of GNUnet
3 Copyright (C) 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Gabor X Toth
23 *
24 * @file
25 * Plugin API for the PSYCstore database backend
26 *
27 * @defgroup psycstore-plugin PSYC Store plugin API
28 * Plugin API for the PSYC Store database backend
29 * @{
30 */
31#ifndef GNUNET_PSYCSTORE_PLUGIN_H
32#define GNUNET_PSYCSTORE_PLUGIN_H
33
34#include "gnunet_util_lib.h"
35#include "gnunet_psycstore_service.h"
36
37#ifdef __cplusplus
38extern "C"
39{
40#if 0 /* keep Emacsens' auto-indent happy */
41}
42#endif
43#endif
44
45
46/**
47 * Struct returned by the initialization function of the plugin.
48 */
49struct GNUNET_PSYCSTORE_PluginFunctions
50{
51
52 /**
53 * Closure to pass to all plugin functions.
54 */
55 void *cls;
56
57 /**
58 * Store join/leave events for a PSYC channel in order to be able to answer
59 * membership test queries later.
60 *
61 * @see GNUNET_PSYCSTORE_membership_store()
62 *
63 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
64 */
65 int
66 (*membership_store) (void *cls,
67 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
68 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
69 int did_join,
70 uint64_t announced_at,
71 uint64_t effective_since,
72 uint64_t group_generation);
73
74 /**
75 * Test if a member was admitted to the channel at the given message ID.
76 *
77 * @see GNUNET_PSYCSTORE_membership_test()
78 *
79 * @return #GNUNET_YES if the member was admitted, #GNUNET_NO if not,
80 * #GNUNET_SYSERR if there was en error.
81 */
82 int
83 (*membership_test) (void *cls,
84 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
85 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
86 uint64_t message_id);
87
88 /**
89 * Store a message fragment sent to a channel.
90 *
91 * @see GNUNET_PSYCSTORE_fragment_store()
92 *
93 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
94 */
95 int
96 (*fragment_store) (void *cls,
97 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
98 const struct GNUNET_MULTICAST_MessageHeader *message,
99 uint32_t psycstore_flags);
100
101 /**
102 * Set additional flags for a given message.
103 *
104 * They are OR'd with any existing flags set.
105 *
106 * @param cls Closure.
107 * @param channel_key Public key of the channel.
108 * @param message_id ID of the message.
109 * @param psycstore_flags OR'd GNUNET_PSYCSTORE_MessageFlags.
110 *
111 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
112 */
113 int
114 (*message_add_flags) (void *cls,
115 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
116 uint64_t message_id,
117 uint32_t psycstore_flags);
118
119 /**
120 * Retrieve a message fragment range by fragment ID.
121 *
122 * @see GNUNET_PSYCSTORE_fragment_get()
123 *
124 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
125 */
126 int
127 (*fragment_get) (void *cls,
128 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
129 uint64_t first_fragment_id,
130 uint64_t last_fragment_id,
131 uint64_t *returned_fragments,
132 GNUNET_PSYCSTORE_FragmentCallback cb,
133 void *cb_cls);
134
135 /**
136 * Retrieve latest message fragments.
137 *
138 * @see GNUNET_PSYCSTORE_fragment_get()
139 *
140 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
141 */
142 int
143 (*fragment_get_latest) (void *cls,
144 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
145 uint64_t fragment_limit,
146 uint64_t *returned_fragments,
147 GNUNET_PSYCSTORE_FragmentCallback cb,
148 void *cb_cls);
149
150 /**
151 * Retrieve all fragments of a message ID range.
152 *
153 * @see GNUNET_PSYCSTORE_message_get()
154 *
155 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
156 */
157 int
158 (*message_get) (void *cls,
159 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
160 uint64_t first_fragment_id,
161 uint64_t last_fragment_id,
162 uint64_t fragment_limit,
163 uint64_t *returned_fragments,
164 GNUNET_PSYCSTORE_FragmentCallback cb,
165 void *cb_cls);
166
167 /**
168 * Retrieve all fragments of the latest messages.
169 *
170 * @see GNUNET_PSYCSTORE_message_get()
171 *
172 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
173 */
174 int
175 (*message_get_latest) (void *cls,
176 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
177 uint64_t fragment_limit,
178 uint64_t *returned_fragments,
179 GNUNET_PSYCSTORE_FragmentCallback cb,
180 void *cb_cls);
181
182 /**
183 * Retrieve a fragment of message specified by its message ID and fragment
184 * offset.
185 *
186 * @see GNUNET_PSYCSTORE_message_get_fragment()
187 *
188 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
189 */
190 int
191 (*message_get_fragment) (void *cls,
192 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
193 uint64_t message_id,
194 uint64_t fragment_offset,
195 GNUNET_PSYCSTORE_FragmentCallback cb,
196 void *cb_cls);
197
198 /**
199 * Retrieve the max. values of message counters for a channel.
200 *
201 * @see GNUNET_PSYCSTORE_counters_get()
202 *
203 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
204 */
205 int
206 (*counters_message_get) (void *cls,
207 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
208 uint64_t *max_fragment_id,
209 uint64_t *max_message_id,
210 uint64_t *max_group_generation);
211
212 /**
213 * Retrieve the max. values of state counters for a channel.
214 *
215 * @see GNUNET_PSYCSTORE_counters_get()
216 *
217 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
218 */
219 int
220 (*counters_state_get) (void *cls,
221 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
222 uint64_t *max_state_message_id);
223
224
225 /**
226 * Begin modifying current state.
227 *
228 * @see GNUNET_PSYCSTORE_state_modify()
229 *
230 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
231 */
232 int
233 (*state_modify_begin) (void *cls,
234 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
235 uint64_t message_id, uint64_t state_delta);
236
237 /**
238 * Set the current value of a state variable.
239 *
240 * The state modification process is started with state_modify_begin(),
241 * which is followed by one or more calls to this function,
242 * and finished with state_modify_end().
243 *
244 * @see GNUNET_PSYCSTORE_state_modify()
245 *
246 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
247 */
248 int
249 (*state_modify_op) (void *cls,
250 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
251 enum GNUNET_PSYC_Operator op,
252 const char *name, const void *value, size_t value_size);
253
254
255 /**
256 * End modifying current state.
257 *
258 * @see GNUNET_PSYCSTORE_state_modify()
259 *
260 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
261 */
262 int
263 (*state_modify_end) (void *cls,
264 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
265 uint64_t message_id);
266
267
268 /**
269 * Begin synchronizing state.
270 *
271 * @see GNUNET_PSYCSTORE_state_sync()
272 *
273 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
274 */
275 int
276 (*state_sync_begin) (void *cls,
277 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key);
278
279 /**
280 * Assign value of a state variable while synchronizing state.
281 *
282 * The state synchronization process is started with state_sync_begin(),
283 * which is followed by one or more calls to this function,
284 * and finished using state_sync_end().
285 *
286 * @see GNUNET_PSYCSTORE_state_sync()
287 *
288 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
289 */
290 int
291 (*state_sync_assign) (void *cls,
292 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
293 const char *name, const void *value, size_t value_size);
294
295
296 /**
297 * End synchronizing state.
298 *
299 * @see GNUNET_PSYCSTORE_state_sync()
300 *
301 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
302 */
303 int
304 (*state_sync_end) (void *cls,
305 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
306 uint64_t max_state_message_id,
307 uint64_t state_hash_message_id);
308
309
310 /**
311 * Reset the state of a channel.
312 *
313 * Delete all state variables stored for the given channel.
314 *
315 * @see GNUNET_PSYCSTORE_state_reset()
316 *
317 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
318 */
319 int
320 (*state_reset) (void *cls,
321 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key);
322
323 /**
324 * Update signed state values from the current ones.
325 *
326 * Sets value_signed = value_current for each variable for the given channel.
327 */
328 int
329 (*state_update_signed) (void *cls,
330 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key);
331
332
333 /**
334 * Retrieve a state variable by name (exact match).
335 *
336 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
337 */
338 int
339 (*state_get) (void *cls,
340 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
341 const char *name,
342 GNUNET_PSYCSTORE_StateCallback cb,
343 void *cb_cls);
344
345 /**
346 * Retrieve all state variables for a channel with the given prefix.
347 *
348 * @see GNUNET_PSYCSTORE_state_get_prefix()
349 *
350 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
351 */
352 int
353 (*state_get_prefix) (void *cls,
354 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
355 const char *name,
356 GNUNET_PSYCSTORE_StateCallback cb,
357 void *cb_cls);
358
359
360 /**
361 * Retrieve all signed state variables for a channel.
362 *
363 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
364 */
365 int
366 (*state_get_signed) (void *cls,
367 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
368 GNUNET_PSYCSTORE_StateCallback cb,
369 void *cb_cls);
370
371};
372
373
374#if 0 /* keep Emacsens' auto-indent happy */
375{
376#endif
377#ifdef __cplusplus
378}
379#endif
380
381#endif
382
383/** @} */ /* end of group */
diff --git a/src/include/gnunet_psycstore_service.h b/src/include/gnunet_psycstore_service.h
deleted file mode 100644
index 92516f447..000000000
--- a/src/include/gnunet_psycstore_service.h
+++ /dev/null
@@ -1,701 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Gabor X Toth
23 * @author Christian Grothoff
24 *
25 * @file
26 * PSYCstore service; implements persistent storage for the PSYC service
27 *
28 * @defgroup psycstore PSYC Store service
29 * Persistent storage for the PSYC service.
30 * @{
31 */
32#ifndef GNUNET_PSYCSTORE_SERVICE_H
33#define GNUNET_PSYCSTORE_SERVICE_H
34
35#ifdef __cplusplus
36extern "C"
37{
38#if 0 /* keep Emacsens' auto-indent happy */
39}
40#endif
41#endif
42
43#include "gnunet_util_lib.h"
44#include "gnunet_psyc_util_lib.h"
45#include "gnunet_multicast_service.h"
46#include "gnunet_psyc_service.h"
47
48/**
49 * Version number of GNUnet PSYCstore API.
50 */
51#define GNUNET_PSYCSTORE_VERSION 0x00000000
52
53/**
54 * Membership test failed.
55 */
56#define GNUNET_PSYCSTORE_MEMBERSHIP_TEST_FAILED -2
57
58/**
59 * Flags for stored messages.
60 */
61enum GNUNET_PSYCSTORE_MessageFlags
62{
63 /**
64 * The message contains state modifiers.
65 */
66 GNUNET_PSYCSTORE_MESSAGE_STATE = 1 << 0,
67
68 /**
69 * The state modifiers have been applied to the state store.
70 */
71 GNUNET_PSYCSTORE_MESSAGE_STATE_APPLIED = 1 << 1,
72
73 /**
74 * The message contains a state hash.
75 */
76 GNUNET_PSYCSTORE_MESSAGE_STATE_HASH = 1 << 2
77};
78
79
80/**
81 * Handle for a PSYCstore
82 */
83struct GNUNET_PSYCSTORE_Handle;
84
85
86/**
87 * Connect to the PSYCstore service.
88 *
89 * @param cfg Configuration to use.
90 *
91 * @return Handle for the connecton.
92 */
93struct GNUNET_PSYCSTORE_Handle *
94GNUNET_PSYCSTORE_connect (const struct GNUNET_CONFIGURATION_Handle *cfg);
95
96
97/**
98 * Disconnect from the PSYCstore service.
99 *
100 * @param h Handle for the connection.
101 */
102void
103GNUNET_PSYCSTORE_disconnect (struct GNUNET_PSYCSTORE_Handle *h);
104
105
106/**
107 * Handle for an operation on the PSYCSTORE (useful to cancel the operation).
108 */
109struct GNUNET_PSYCSTORE_OperationHandle;
110
111
112/**
113 * Function called with the result of an asynchronous operation.
114 *
115 * @param cls
116 * Closure.
117 * @param result
118 * Result of the operation.
119 * @param err_msg
120 * Error message, or NULL if there's no error.
121 * @param err_msg_size
122 * Size of @a err_msg
123 */
124typedef void
125(*GNUNET_PSYCSTORE_ResultCallback) (void *cls,
126 int64_t result,
127 const char *err_msg,
128 uint16_t err_msg_size);
129
130
131/**
132 * Store join/leave events for a PSYC channel in order to be able to answer
133 * membership test queries later.
134 *
135 * @param h
136 * Handle for the PSYCstore.
137 * @param channel_key
138 * The channel where the event happened.
139 * @param slave_key
140 * Public key of joining/leaving slave.
141 * @param did_join
142 * #GNUNET_YES on join, #GNUNET_NO on part.
143 * @param announced_at
144 * ID of the message that announced the membership change.
145 * @param effective_since
146 * Message ID this membership change is in effect since.
147 * For joins it is <= announced_at, for parts it is always 0.
148 * @param group_generation
149 * In case of a part, the last group generation the slave has access to.
150 * It has relevance when a larger message have fragments with different
151 * group generations.
152 * @param result_cb
153 * Callback to call with the result of the storage operation.
154 * @param cls
155 * Closure for the callback.
156 *
157 * @return Operation handle that can be used to cancel the operation.
158 */
159struct GNUNET_PSYCSTORE_OperationHandle *
160GNUNET_PSYCSTORE_membership_store (struct GNUNET_PSYCSTORE_Handle *h,
161 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
162 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
163 int did_join,
164 uint64_t announced_at,
165 uint64_t effective_since,
166 uint64_t group_generation,
167 GNUNET_PSYCSTORE_ResultCallback result_cb,
168 void *cls);
169
170
171/**
172 * Test if a member was admitted to the channel at the given message ID.
173 *
174 * This is useful when relaying and replaying messages to check if a particular
175 * slave has access to the message fragment with a given group generation. It
176 * is also used when handling join requests to determine whether the slave is
177 * currently admitted to the channel.
178 *
179 * @param h
180 * Handle for the PSYCstore.
181 * @param channel_key
182 * The channel we are interested in.
183 * @param slave_key
184 * Public key of slave whose membership to check.
185 * @param message_id
186 * Message ID for which to do the membership test.
187 * @param group_generation
188 * Group generation of the fragment of the message to test.
189 * It has relevance if the message consists of multiple fragments with
190 * different group generations.
191 * @param result_cb
192 * Callback to call with the test result.
193 * @param cls
194 * Closure for the callback.
195 *
196 * @return Operation handle that can be used to cancel the operation.
197 */
198struct GNUNET_PSYCSTORE_OperationHandle *
199GNUNET_PSYCSTORE_membership_test (struct GNUNET_PSYCSTORE_Handle *h,
200 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
201 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
202 uint64_t message_id,
203 uint64_t group_generation,
204 GNUNET_PSYCSTORE_ResultCallback result_cb,
205 void *cls);
206
207
208/**
209 * Store a message fragment sent to a channel.
210 *
211 * @param h Handle for the PSYCstore.
212 * @param channel_key The channel the message belongs to.
213 * @param msg Message to store.
214 * @param psycstore_flags Flags indicating whether the PSYC message contains
215 * state modifiers.
216 * @param result_cb Callback to call with the result of the operation.
217 * @param cls Closure for the callback.
218 *
219 * @return Handle that can be used to cancel the operation.
220 */
221struct GNUNET_PSYCSTORE_OperationHandle *
222GNUNET_PSYCSTORE_fragment_store (struct GNUNET_PSYCSTORE_Handle *h,
223 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
224 const struct GNUNET_MULTICAST_MessageHeader *msg,
225 enum GNUNET_PSYCSTORE_MessageFlags psycstore_flags,
226 GNUNET_PSYCSTORE_ResultCallback result_cb,
227 void *cls);
228
229
230/**
231 * Function called with one message fragment, as the result of a
232 * GNUNET_PSYCSTORE_fragment_get() or GNUNET_PSYCSTORE_message_get() call.
233 *
234 * @param cls Closure.
235 * @param message The retrieved message fragment. A NULL value indicates that
236 * there are no more results to be returned.
237 * @param psycstore_flags Flags stored with the message.
238 *
239 * @return #GNUNET_NO to stop calling this callback with further fragments,
240 * #GNUNET_YES to continue.
241 */
242typedef int
243(*GNUNET_PSYCSTORE_FragmentCallback) (void *cls,
244 struct GNUNET_MULTICAST_MessageHeader *message,
245 enum GNUNET_PSYCSTORE_MessageFlags psycstore_flags);
246
247
248/**
249 * Retrieve message fragments by fragment ID range.
250 *
251 * @param h
252 * Handle for the PSYCstore.
253 * @param channel_key
254 * The channel we are interested in.
255 * @param slave_key
256 * The slave requesting the fragment. If not NULL, a membership test is
257 * performed first and the fragment is only returned if the slave has
258 * access to it.
259 * @param first_fragment_id
260 * First fragment ID to retrieve.
261 * Use 0 to get the latest message fragment.
262 * @param last_fragment_id
263 * Last consecutive fragment ID to retrieve.
264 * Use 0 to get the latest message fragment.
265 * @param fragment_cb
266 * Callback to call with the retrieved fragments.
267 * @param result_cb
268 * Callback to call with the result of the operation.
269 * @param cls
270 * Closure for the callbacks.
271 *
272 * @return Handle that can be used to cancel the operation.
273 */
274struct GNUNET_PSYCSTORE_OperationHandle *
275GNUNET_PSYCSTORE_fragment_get (struct GNUNET_PSYCSTORE_Handle *h,
276 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
277 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
278 uint64_t first_message_id,
279 uint64_t last_message_id,
280 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
281 GNUNET_PSYCSTORE_ResultCallback result_cb,
282 void *cls);
283
284
285/**
286 * Retrieve latest message fragments.
287 *
288 * @param h
289 * Handle for the PSYCstore.
290 * @param channel_key
291 * The channel we are interested in.
292 * @param slave_key
293 * The slave requesting the fragment. If not NULL, a membership test is
294 * performed first and the fragment is only returned if the slave has
295 * access to it.
296 * @param first_fragment_id
297 * First fragment ID to retrieve.
298 * Use 0 to get the latest message fragment.
299 * @param last_fragment_id
300 * Last consecutive fragment ID to retrieve.
301 * Use 0 to get the latest message fragment.
302 * @param fragment_limit
303 * Maximum number of fragments to retrieve.
304 * @param fragment_cb
305 * Callback to call with the retrieved fragments.
306 * @param result_cb
307 * Callback to call with the result of the operation.
308 * @param cls
309 * Closure for the callbacks.
310 *
311 * @return Handle that can be used to cancel the operation.
312 */
313struct GNUNET_PSYCSTORE_OperationHandle *
314GNUNET_PSYCSTORE_fragment_get_latest (struct GNUNET_PSYCSTORE_Handle *h,
315 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
316 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
317 uint64_t fragment_limit,
318 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
319 GNUNET_PSYCSTORE_ResultCallback result_cb,
320 void *cls);
321
322
323/**
324 * Retrieve all fragments of messages in a message ID range.
325 *
326 * @param h
327 * Handle for the PSYCstore.
328 * @param channel_key
329 * The channel we are interested in.
330 * @param slave_key
331 * The slave requesting the message.
332 * If not NULL, a membership test is performed first
333 * and the message is only returned if the slave has access to it.
334 * @param first_message_id
335 * First message ID to retrieve.
336 * @param last_message_id
337 * Last consecutive message ID to retrieve.
338 * @param fragment_limit
339 * Maximum number of fragments to retrieve.
340 * @param method_prefix
341 * Retrieve only messages with a matching method prefix.
342 * @param fragment_cb
343 * Callback to call with the retrieved fragments.
344 * @param result_cb
345 * Callback to call with the result of the operation.
346 * @param cls
347 * Closure for the callbacks.
348 *
349 * @return Handle that can be used to cancel the operation.
350 */
351struct GNUNET_PSYCSTORE_OperationHandle *
352GNUNET_PSYCSTORE_message_get (struct GNUNET_PSYCSTORE_Handle *h,
353 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
354 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
355 uint64_t first_message_id,
356 uint64_t last_message_id,
357 uint64_t fragment_limit,
358 const char *method_prefix,
359 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
360 GNUNET_PSYCSTORE_ResultCallback result_cb,
361 void *cls);
362
363
364/**
365 * Retrieve all fragments of the latest messages.
366 *
367 * @param h
368 * Handle for the PSYCstore.
369 * @param channel_key
370 * The channel we are interested in.
371 * @param slave_key
372 * The slave requesting the message.
373 * If not NULL, a membership test is performed first
374 * and the message is only returned if the slave has access to it.
375 * @param message_limit
376 * Maximum number of messages to retrieve.
377 * @param method_prefix
378 * Retrieve only messages with a matching method prefix.
379 * @param fragment_cb
380 * Callback to call with the retrieved fragments.
381 * @param result_cb
382 * Callback to call with the result of the operation.
383 * @param cls
384 * Closure for the callbacks.
385 *
386 * @return Handle that can be used to cancel the operation.
387 */
388struct GNUNET_PSYCSTORE_OperationHandle *
389GNUNET_PSYCSTORE_message_get_latest (struct GNUNET_PSYCSTORE_Handle *h,
390 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
391 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
392 uint64_t message_limit,
393 const char *method_prefix,
394 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
395 GNUNET_PSYCSTORE_ResultCallback result_cb,
396 void *cls);
397
398
399/**
400 * Retrieve a fragment of message specified by its message ID and fragment
401 * offset.
402 *
403 * @param h
404 * Handle for the PSYCstore.
405 * @param channel_key
406 * The channel we are interested in.
407 * @param slave_key
408 * The slave requesting the message fragment. If not NULL, a membership
409 * test is performed first and the message fragment is only returned
410 * if the slave has access to it.
411 * @param message_id
412 * Message ID to retrieve. Use 0 to get the latest message.
413 * @param fragment_offset
414 * Offset of the fragment to retrieve.
415 * @param fragment_cb
416 * Callback to call with the retrieved fragments.
417 * @param result_cb
418 * Callback to call with the result of the operation.
419 * @param cls
420 * Closure for the callbacks.
421 *
422 * @return Handle that can be used to cancel the operation.
423 */
424struct GNUNET_PSYCSTORE_OperationHandle *
425GNUNET_PSYCSTORE_message_get_fragment (struct GNUNET_PSYCSTORE_Handle *h,
426 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
427 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
428 uint64_t message_id,
429 uint64_t fragment_offset,
430 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
431 GNUNET_PSYCSTORE_ResultCallback result_cb,
432 void *cls);
433
434
435/**
436 * Callback used to return the latest value of counters for the channel master.
437 *
438 * @see GNUNET_PSYCSTORE_counters_get()
439 *
440 * @param cls Closure.
441 * @param result_code
442 * Status code for the operation:
443 * #GNUNET_OK: success, counter values are returned.
444 * #GNUNET_NO: no message has been sent to the channel yet.
445 * #GNUNET_SYSERR: an error occurred.
446 * @param max_fragment_id
447 * Latest message fragment ID, used by multicast.
448 * @param max_message_id
449 * Latest message ID, used by PSYC.
450 * @param max_group_generation
451 * Latest group generation, used by PSYC.
452 * @param max_state_message_id
453 * Latest message ID containing state modifiers that
454 * was applied to the state store. Used for the state sync process.
455 */
456typedef void
457(*GNUNET_PSYCSTORE_CountersCallback) (void *cls,
458 int result_code,
459 uint64_t max_fragment_id,
460 uint64_t max_message_id,
461 uint64_t max_group_generation,
462 uint64_t max_state_message_id);
463
464
465/**
466 * Retrieve latest values of counters for a channel.
467 *
468 * The current value of counters are needed
469 * - when a channel master is restarted, so that it can continue incrementing
470 * the counters from their last value.
471 * - when a channel slave rejoins and starts the state synchronization process.
472 *
473 * @param h
474 * Handle for the PSYCstore.
475 * @param channel_key
476 * Public key that identifies the channel.
477 * @param counters_cb
478 * Callback to call with the result.
479 * @param cls
480 * Closure for the @a ccb callback.
481 *
482 * @return Handle that can be used to cancel the operation.
483 */
484struct GNUNET_PSYCSTORE_OperationHandle *
485GNUNET_PSYCSTORE_counters_get (struct GNUNET_PSYCSTORE_Handle *h,
486 struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
487 GNUNET_PSYCSTORE_CountersCallback counters_cb,
488 void *cls);
489
490
491/**
492 * Apply modifiers of a message to the current channel state.
493 *
494 * An error is returned if there are missing messages containing state
495 * operations before the current one.
496 *
497 * @param h
498 * Handle for the PSYCstore.
499 * @param channel_key
500 * The channel we are interested in.
501 * @param message_id
502 * ID of the message that contains the @a modifiers.
503 * @param state_delta
504 * Value of the @e state_delta PSYC header variable of the message.
505 * @param result_cb
506 * Callback to call with the result of the operation.
507 * @param cls
508 * Closure for the @a result_cb callback.
509 *
510 * @return Handle that can be used to cancel the operation.
511 */
512struct GNUNET_PSYCSTORE_OperationHandle *
513GNUNET_PSYCSTORE_state_modify (struct GNUNET_PSYCSTORE_Handle *h,
514 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
515 uint64_t message_id,
516 uint64_t state_delta,
517 GNUNET_PSYCSTORE_ResultCallback result_cb,
518 void *cls);
519
520
521/**
522 * Store synchronized state.
523 *
524 * @param h
525 * Handle for the PSYCstore.
526 * @param channel_key
527 * The channel we are interested in.
528 * @param max_state_message_id
529 * ID of the last stateful message before @a state_hash_message_id.
530 * @param state_hash_message_id
531 * ID of the message that contains the state_hash PSYC header variable.
532 * @param modifier_count
533 * Number of elements in the @a modifiers array.
534 * @param modifiers
535 * Full state to store.
536 * @param result_cb
537 * Callback to call with the result of the operation.
538 * @param cls
539 * Closure for the callback.
540 *
541 * @return Handle that can be used to cancel the operation.
542 */
543struct GNUNET_PSYCSTORE_OperationHandle *
544GNUNET_PSYCSTORE_state_sync (struct GNUNET_PSYCSTORE_Handle *h,
545 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
546 uint64_t max_state_message_id,
547 uint64_t state_hash_message_id,
548 size_t modifier_count,
549 const struct GNUNET_PSYC_Modifier *modifiers,
550 GNUNET_PSYCSTORE_ResultCallback result_cb,
551 void *cls);
552
553
554
555/**
556 * Reset the state of a channel.
557 *
558 * Delete all state variables stored for the given channel.
559 *
560 * @param h
561 * Handle for the PSYCstore.
562 * @param channel_key
563 * The channel we are interested in.
564 * @param result_cb
565 * Callback to call with the result of the operation.
566 * @param cls
567 * Closure for the callback.
568 *
569 * @return Handle that can be used to cancel the operation.
570 */
571struct GNUNET_PSYCSTORE_OperationHandle *
572GNUNET_PSYCSTORE_state_reset (struct GNUNET_PSYCSTORE_Handle *h,
573 const struct GNUNET_CRYPTO_EddsaPublicKey
574 *channel_key,
575 GNUNET_PSYCSTORE_ResultCallback result_cb,
576 void *cls);
577
578
579/**
580 * Update signed values of state variables in the state store.
581 *
582 * @param h
583 * Handle for the PSYCstore.
584 * @param channel_key
585 * The channel we are interested in.
586 * @param message_id
587 * Message ID that contained the state @a hash.
588 * @param hash
589 * Hash of the serialized full state.
590 * @param result_cb
591 * Callback to call with the result of the operation.
592 * @param cls
593 * Closure for the callback.
594 *
595 */
596struct GNUNET_PSYCSTORE_OperationHandle *
597GNUNET_PSYCSTORE_state_hash_update (struct GNUNET_PSYCSTORE_Handle *h,
598 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
599 uint64_t message_id,
600 const struct GNUNET_HashCode *hash,
601 GNUNET_PSYCSTORE_ResultCallback result_cb,
602 void *cls);
603
604
605/**
606 * Function called with the value of a state variable.
607 *
608 * @param cls
609 * Closure.
610 * @param name
611 * Name of the state variable. A NULL value indicates that there are no more
612 * state variables to be returned.
613 * @param value
614 * Value of the state variable.
615 * @param value_size
616 * Number of bytes in @a value.
617 *
618 * @return #GNUNET_NO to stop calling this callback with further variables,
619 * #GNUNET_YES to continue.
620 */;
621typedef int
622(*GNUNET_PSYCSTORE_StateCallback) (void *cls, const char *name,
623 const void *value, uint32_t value_size);
624
625
626/**
627 * Retrieve the best matching state variable.
628 *
629 * @param h
630 * Handle for the PSYCstore.
631 * @param channel_key
632 * The channel we are interested in.
633 * @param name
634 * Name of variable to match, the returned variable might be less specific.
635 * @param state_cb
636 * Callback to return the matching state variable.
637 * @param result_cb
638 * Callback to call with the result of the operation.
639 * @param cls
640 * Closure for the callbacks.
641 *
642 * @return Handle that can be used to cancel the operation.
643 */
644struct GNUNET_PSYCSTORE_OperationHandle *
645GNUNET_PSYCSTORE_state_get (struct GNUNET_PSYCSTORE_Handle *h,
646 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
647 const char *name,
648 GNUNET_PSYCSTORE_StateCallback state_cb,
649 GNUNET_PSYCSTORE_ResultCallback result_cb,
650 void *cls);
651
652
653/**
654 * Retrieve all state variables for a channel with the given prefix.
655 *
656 * @param h
657 * Handle for the PSYCstore.
658 * @param channel_key
659 * The channel we are interested in.
660 * @param name_prefix
661 * Prefix of state variable names to match.
662 * @param state_cb
663 * Callback to return matching state variables.
664 * @param result_cb
665 * Callback to call with the result of the operation.
666 * @param cls
667 * Closure for the callbacks.
668 *
669 * @return Handle that can be used to cancel the operation.
670 */
671struct GNUNET_PSYCSTORE_OperationHandle *
672GNUNET_PSYCSTORE_state_get_prefix (struct GNUNET_PSYCSTORE_Handle *h,
673 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
674 const char *name_prefix,
675 GNUNET_PSYCSTORE_StateCallback state_cb,
676 GNUNET_PSYCSTORE_ResultCallback result_cb,
677 void *cls);
678
679
680/**
681 * Cancel an operation.
682 *
683 * @param op Handle for the operation to cancel.
684 */
685int
686GNUNET_PSYCSTORE_operation_cancel (struct GNUNET_PSYCSTORE_OperationHandle *op);
687
688
689
690
691#if 0 /* keep Emacsens' auto-indent happy */
692{
693#endif
694#ifdef __cplusplus
695}
696#endif
697
698/* ifndef GNUNET_PSYCSTORE_SERVICE_H */
699#endif
700
701/** @} */ /* end of group */
diff --git a/src/include/gnunet_rps_service.h b/src/include/gnunet_rps_service.h
index 8ae9f1e93..b1dd1b5af 100644
--- a/src/include/gnunet_rps_service.h
+++ b/src/include/gnunet_rps_service.h
@@ -137,7 +137,7 @@ GNUNET_RPS_seed_ids (struct GNUNET_RPS_Handle *h, uint32_t n,
137GNUNET_RPS_request_cancel (struct GNUNET_RPS_Request_Handle *rh); 137GNUNET_RPS_request_cancel (struct GNUNET_RPS_Request_Handle *rh);
138 138
139 139
140#ifdef ENABLE_MALICIOUS 140#if ENABLE_MALICIOUS
141/** 141/**
142 * Turn RPS service to act malicious. 142 * Turn RPS service to act malicious.
143 * 143 *
diff --git a/src/include/gnunet_sensor_service.h b/src/include/gnunet_sensor_service.h
deleted file mode 100644
index 391db58bf..000000000
--- a/src/include/gnunet_sensor_service.h
+++ /dev/null
@@ -1,199 +0,0 @@
1/*
2 This file is part of GNUnet
3 Copyright (C)
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Omar Tarabai
23 *
24 * @file
25 * API to the sensor service
26 *
27 * @defgroup sensor Sensor service
28 *
29 * @{
30 */
31
32#ifndef GNUNET_SENSOR_SERVICE_H
33#define GNUNET_SENSOR_SERVICE_H
34
35#include "gnunet_common.h"
36#include "gnunet_util_lib.h"
37
38#ifdef __cplusplus
39extern "C"
40{
41#if 0 /* keep Emacsens' auto-indent happy */
42}
43#endif
44#endif
45
46
47/**
48 * Handle to the sensor service.
49 */
50struct GNUNET_SENSOR_Handle;
51
52/**
53 * Context for an iteration request.
54 */
55struct GNUNET_SENSOR_IterateContext;
56
57/**
58 * Context of a force anomaly request
59 */
60struct GNUNET_SENSOR_ForceAnomalyContext;
61
62/**
63 * Structure containing brief info about sensor
64 */
65struct SensorInfoShort
66{
67
68 /*
69 * Sensor name
70 */
71 char *name;
72
73 /*
74 * First part of version number
75 */
76 uint16_t version_major;
77
78 /*
79 * Second part of version number
80 */
81 uint16_t version_minor;
82
83 /*
84 * Sensor description
85 */
86 char *description;
87
88};
89
90/**
91 * Sensor iterate request callback.
92 *
93 * @param cls closure
94 * @param sensor Brief sensor information
95 * @param error message
96 */
97typedef void (*GNUNET_SENSOR_SensorIterateCB) (void *cls,
98 const struct SensorInfoShort *
99 sensor, const char *err_msg);
100
101
102/**
103 * Continuation called with a status result.
104 *
105 * @param cls closure
106 * @param emsg error message, NULL on success
107 */
108typedef void (*GNUNET_SENSOR_Continuation) (void *cls, const char *emsg);
109
110
111/**
112 * Disconnect from the sensor service
113 *
114 * @param h handle to disconnect
115 */
116void
117GNUNET_SENSOR_disconnect (struct GNUNET_SENSOR_Handle *h);
118
119
120/**
121 * Connect to the sensor service.
122 *
123 * @return NULL on error
124 */
125struct GNUNET_SENSOR_Handle *
126GNUNET_SENSOR_connect (const struct GNUNET_CONFIGURATION_Handle *cfg);
127
128
129/**
130 * Cancel an iteration request.
131 * This should be called before the iterate callback is called with a NULL value.
132 *
133 * @param ic context of the iterator to cancel
134 */
135void
136GNUNET_SENSOR_iterate_cancel (struct GNUNET_SENSOR_IterateContext
137 *ic);
138
139
140/**
141 * Get one or all sensors loaded by the sensor service.
142 * The callback will be called with each sensor received and once with a NULL
143 * value to signal end of iteration.
144 *
145 * @param h Handle to SENSOR service
146 * @param timeout how long to wait until timing out
147 * @param sensorname Name of the required sensor, NULL to get all
148 * @param callback the function to call for each sensor
149 * @param callback_cls closure for callback
150 * @return iterator context
151 */
152struct GNUNET_SENSOR_IterateContext *
153GNUNET_SENSOR_iterate (struct GNUNET_SENSOR_Handle *h,
154 struct GNUNET_TIME_Relative timeout,
155 const char *sensor_name,
156 GNUNET_SENSOR_SensorIterateCB callback,
157 void *callback_cls);
158
159
160/**
161 * Cancel a force anomaly request.
162 *
163 * @param fa Force anomaly context returned by GNUNET_SENSOR_force_anomaly()
164 */
165void
166GNUNET_SENSOR_force_anomaly_cancel (struct GNUNET_SENSOR_ForceAnomalyContext
167 *fa);
168
169
170/**
171 * Force an anomaly status change on a given sensor. If the sensor reporting
172 * module is running, this will trigger the usual reporting logic, therefore,
173 * please only use this in a test environment.
174 *
175 * Also, if the sensor analysis module is running, it might conflict and cause
176 * undefined behaviour if it detects a real anomaly.
177 *
178 * @param h Service handle
179 * @param sensor_name Sensor name to set the anomaly status
180 * @param anomalous The desired status: #GNUNET_YES / #GNUNET_NO
181 * @param cont Continuation function to be called after the request is sent
182 * @param cont_cls Closure for cont
183 */
184struct GNUNET_SENSOR_ForceAnomalyContext *
185GNUNET_SENSOR_force_anomaly (struct GNUNET_SENSOR_Handle *h, char *sensor_name,
186 int anomalous, GNUNET_SENSOR_Continuation cont,
187 void *cont_cls);
188
189
190#if 0 /* keep Emacsens' auto-indent happy */
191{
192#endif
193#ifdef __cplusplus
194}
195#endif
196
197#endif
198
199/** @} */ /* end of group */
diff --git a/src/include/gnunet_sensor_util_lib.h b/src/include/gnunet_sensor_util_lib.h
deleted file mode 100644
index f4eaad9e8..000000000
--- a/src/include/gnunet_sensor_util_lib.h
+++ /dev/null
@@ -1,520 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C)
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Omar Tarabai
23 *
24 * @file
25 * Sensor utilities
26 *
27 * @defgroup sensor Sensor Utilities library
28 *
29 * @{
30 */
31
32#ifndef GNUNET_SENSOR_UTIL_LIB_H
33#define GNUNET_SENSOR_UTIL_LIB_H
34
35#ifdef __cplusplus
36extern "C"
37{
38#if 0 /* keep Emacsens' auto-indent happy */
39}
40#endif
41#endif
42
43/**
44 * Structure containing sensor definition
45 */
46struct GNUNET_SENSOR_SensorInfo
47{
48
49 /**
50 * The configuration handle
51 * carrying sensor information
52 */
53 struct GNUNET_CONFIGURATION_Handle *cfg;
54
55 /**
56 * Sensor name
57 */
58 char *name;
59
60 /**
61 * Path to definition file
62 */
63 char *def_file;
64
65 /**
66 * First part of version number
67 */
68 uint16_t version_major;
69
70 /**
71 * Second part of version number
72 */
73 uint16_t version_minor;
74
75 /**
76 * Sensor description
77 */
78 char *description;
79
80 /**
81 * Sensor currently enabled
82 */
83 int enabled;
84
85 /**
86 * Category under which the sensor falls (e.g. tcp, datastore)
87 */
88 char *category;
89
90 /**
91 * When does the sensor become active
92 */
93 struct GNUNET_TIME_Absolute *start_time;
94
95 /**
96 * When does the sensor expire
97 */
98 struct GNUNET_TIME_Absolute *end_time;
99
100 /**
101 * Time interval to collect sensor information (e.g. every 1 min)
102 */
103 struct GNUNET_TIME_Relative interval;
104
105 /**
106 * Lifetime of an information sample after which it is deleted from storage
107 * If not supplied, will default to the interval value
108 */
109 struct GNUNET_TIME_Relative lifetime;
110
111 /**
112 * A set of required peer capabilities for the sensor to collect meaningful information (e.g. ipv6)
113 */
114 char *capabilities;
115
116 /**
117 * Either "gnunet-statistics" or external "process"
118 */
119 char *source;
120
121 /**
122 * Name of the GNUnet service that is the source for the gnunet-statistics entry
123 */
124 char *gnunet_stat_service;
125
126 /**
127 * Name of the gnunet-statistics entry
128 */
129 char *gnunet_stat_name;
130
131 /**
132 * Handle to statistics get request (OR NULL)
133 */
134 struct GNUNET_STATISTICS_GetHandle *gnunet_stat_get_handle;
135
136 /**
137 * Name of the external process to be executed
138 */
139 char *ext_process;
140
141 /**
142 * Arguments to be passed to the external process
143 */
144 char *ext_args;
145
146 /**
147 * Handle to the external process
148 */
149 struct GNUNET_OS_CommandHandle *ext_cmd;
150
151 /**
152 * Did we already receive a value
153 * from the currently running external
154 * proccess ? #GNUNET_YES / #GNUNET_NO
155 */
156 int ext_cmd_value_received;
157
158 /**
159 * The output datatype to be expected
160 */
161 char *expected_datatype;
162
163 /**
164 * Peer-identity of peer running collection point
165 */
166 struct GNUNET_PeerIdentity *collection_point;
167
168 /**
169 * Do we report received sensor values to collection point?
170 * #GNUNET_YES / #GNUNET_NO
171 */
172 int report_values;
173
174 /**
175 * Time interval to send sensor values to collection point (e.g. every 30 mins)
176 */
177 struct GNUNET_TIME_Relative value_reporting_interval;
178
179 /**
180 * Do we report anomalies to collection point?
181 * #GNUNET_YES / #GNUNET_NO
182 */
183 int report_anomalies;
184
185 /**
186 * Execution task (OR NULL)
187 */
188 struct GNUNET_SCHEDULER_Task * execution_task;
189
190 /**
191 * Is the sensor being executed
192 */
193 int running;
194
195};
196
197/**
198 * Anomaly report received and stored by sensor dashboard.
199 * Sensor name and peer id are not included because they are part of the
200 * peerstore key.
201 */
202struct GNUNET_SENSOR_DashboardAnomalyEntry
203{
204
205 /**
206 * New anomaly status
207 */
208 uint16_t anomalous;
209
210 /**
211 * Percentage of neighbors reported the same anomaly
212 */
213 float anomalous_neighbors;
214
215};
216
217GNUNET_NETWORK_STRUCT_BEGIN
218/**
219 * Used to communicate brief information about a sensor.
220 */
221 struct GNUNET_SENSOR_SensorBriefMessage
222{
223
224 /**
225 * GNUNET general message header.
226 */
227 struct GNUNET_MessageHeader header;
228
229 /**
230 * Size of sensor name string, allocated at position 0 after this struct.
231 */
232 uint16_t name_size;
233
234 /**
235 * First part of sensor version number
236 */
237 uint16_t version_major;
238
239 /**
240 * Second part of sensor version number
241 */
242 uint16_t version_minor;
243
244};
245
246/**
247 * Used to communicate full information about a sensor.
248 */
249struct GNUNET_SENSOR_SensorFullMessage
250{
251
252 /**
253 * GNUNET general message header.
254 */
255 struct GNUNET_MessageHeader header;
256
257 /**
258 * Size of sensor name.
259 * Name allocated at position 0 after this struct.
260 */
261 uint16_t sensorname_size;
262
263 /**
264 * Size of the sensor definition file carrying full sensor information.
265 * The file content allocated at position 1 after this struct.
266 */
267 uint16_t sensorfile_size;
268
269 /**
270 * Name of the file (usually script) associated with this sensor.
271 * At the moment we only support having one file per sensor.
272 * The file name is allocated at position 2 after this struct.
273 */
274 uint16_t scriptname_size;
275
276 /**
277 * Size of the file (usually script) associated with this sensor.
278 * The file content is allocated at position 3 after this struct.
279 */
280 uint16_t scriptfile_size;
281
282};
283
284/**
285 * Used to communicate sensor values to
286 * collection points (SENSORDASHBAORD service)
287 */
288struct GNUNET_SENSOR_ValueMessage
289{
290
291 /**
292 * GNUNET general message header
293 */
294 struct GNUNET_MessageHeader header;
295
296 /**
297 * Hash of sensor name
298 */
299 struct GNUNET_HashCode sensorname_hash;
300
301 /**
302 * First part of sensor version number
303 */
304 uint16_t sensorversion_major;
305
306 /**
307 * Second part of sensor version number
308 */
309 uint16_t sensorversion_minor;
310
311 /**
312 * Timestamp of recorded reading
313 */
314 struct GNUNET_TIME_Absolute timestamp;
315
316 /**
317 * Size of sensor value, allocated at poistion 0 after this struct
318 */
319 uint16_t value_size;
320
321};
322
323/**
324 * Message carrying an anomaly status change report
325 */
326struct GNUNET_SENSOR_AnomalyReportMessage
327{
328
329 /**
330 * Hash of sensor name
331 */
332 struct GNUNET_HashCode sensorname_hash;
333
334 /**
335 * First part of sensor version number
336 */
337 uint16_t sensorversion_major;
338
339 /**
340 * Second part of sensor version name
341 */
342 uint16_t sensorversion_minor;
343
344 /**
345 * New anomaly status
346 */
347 uint16_t anomalous;
348
349 /**
350 * Percentage of neighbors reported the same anomaly
351 */
352 float anomalous_neighbors;
353
354};
355
356GNUNET_NETWORK_STRUCT_END
357/**
358 * Given two version numbers as major and minor, compare them.
359 *
360 * @param v1_major First part of first version number
361 * @param v1_minor Second part of first version number
362 * @param v2_major First part of second version number
363 * @param v2_minor Second part of second version number
364 */
365 int
366GNUNET_SENSOR_version_compare (uint16_t v1_major, uint16_t v1_minor,
367 uint16_t v2_major, uint16_t v2_minor);
368
369
370/**
371 * Reads sensor definitions from given sensor directory.
372 *
373 * @param sensordir Path to sensor directory.
374 * @return a multihashmap of loaded sensors
375 */
376struct GNUNET_CONTAINER_MultiHashMap *
377GNUNET_SENSOR_load_all_sensors (char *sensor_dir);
378
379
380/**
381 * Get path to the default directory containing the sensor definition files with
382 * a trailing directory separator.
383 *
384 * @return Default sensor files directory full path
385 */
386char *
387GNUNET_SENSOR_get_default_sensor_dir ();
388
389
390/**
391 * Destroys a group of sensors in a hashmap and the hashmap itself
392 *
393 * @param sensors hashmap containing the sensors
394 */
395void
396GNUNET_SENSOR_destroy_sensors (struct GNUNET_CONTAINER_MultiHashMap *sensors);
397
398
399struct GNUNET_SENSOR_crypto_pow_context;
400
401/**
402 * Block carrying arbitrary data + its proof-of-work + signature
403 */
404struct GNUNET_SENSOR_crypto_pow_block
405{
406
407 /**
408 * Proof-of-work value
409 */
410 uint64_t pow;
411
412 /**
413 * Data signature
414 */
415 struct GNUNET_CRYPTO_EddsaSignature signature;
416
417 /**
418 * Size of the msg component (allocated after this struct)
419 */
420 size_t msg_size;
421
422 /**
423 * Purpose of signing.
424 * Data is allocated after this (timestamp, public_key, msg).
425 */
426 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
427
428 /**
429 * First part of data - timestamp
430 */
431 struct GNUNET_TIME_Absolute timestamp;
432
433 /**
434 * Second part of data - Public key
435 */
436 struct GNUNET_CRYPTO_EddsaPublicKey public_key;
437
438};
439
440
441/**
442 * Continuation called with a status result.
443 *
444 * @param cls closure
445 * @param pow Proof-of-work value
446 * @param purpose Signed block (size, purpose, data)
447 * @param signature Signature, NULL on error
448 */
449typedef void (*GNUNET_SENSOR_UTIL_pow_callback) (void *cls,
450 struct
451 GNUNET_SENSOR_crypto_pow_block
452 * block);
453
454
455/**
456 * Cancel an operation started by #GNUNET_SENSOR_crypto_pow_sign().
457 * Call only before callback function passed to #GNUNET_SENSOR_crypto_pow_sign()
458 * is called with the result.
459 */
460void
461GNUNET_SENSOR_crypto_pow_sign_cancel (struct GNUNET_SENSOR_crypto_pow_context
462 *cx);
463
464
465/**
466 * Calculate proof-of-work and sign a message.
467 *
468 * @param msg Message to calculate pow and sign
469 * @param msg_size size of msg
470 * @param timestamp Timestamp to add to the message to protect against replay attacks
471 * @param public_key Public key of the origin peer, to protect against redirect attacks
472 * @param private_key Private key of the origin peer to sign the result
473 * @param matching_bits Number of leading zeros required in the result hash
474 * @param callback Callback function to call with the result
475 * @param callback_cls Closure for callback
476 * @return Operation context
477 */
478struct GNUNET_SENSOR_crypto_pow_context *
479GNUNET_SENSOR_crypto_pow_sign (void *msg, size_t msg_size,
480 struct GNUNET_TIME_Absolute *timestamp,
481 struct GNUNET_CRYPTO_EddsaPublicKey *public_key,
482 struct GNUNET_CRYPTO_EddsaPrivateKey
483 *private_key, int matching_bits,
484 GNUNET_SENSOR_UTIL_pow_callback callback,
485 void *callback_cls);
486
487
488/**
489 * Verify that proof-of-work and signature in the given block are valid.
490 * If all valid, a pointer to the payload within the block is set and the size
491 * of the payload is returned.
492 *
493 * **VERY IMPORTANT** : You will still need to verify the timestamp yourself.
494 *
495 * @param block The block received and needs to be verified
496 * @param matching_bits Number of leading zeros in the hash used to verify pow
497 * @param public_key Public key of the peer that sent this block
498 * @param payload Where to store the pointer to the payload
499 * @return Size of the payload
500 */
501size_t
502GNUNET_SENSOR_crypto_verify_pow_sign (struct GNUNET_SENSOR_crypto_pow_block *
503 block, int matching_bits,
504 struct GNUNET_CRYPTO_EddsaPublicKey *
505 public_key, void **payload);
506
507
508#if 0 /* keep Emacsens' auto-indent happy */
509{
510#endif
511#ifdef __cplusplus
512}
513#endif
514
515/* ifndef GNUNET_SENSOR_UTIL_LIB_H */
516#endif
517
518/** @} */ /* end of group */
519
520/* end of gnunet_sensor_util_lib.h */
diff --git a/src/include/gnunet_sensordashboard_service.h b/src/include/gnunet_sensordashboard_service.h
deleted file mode 100644
index ffa24e3b7..000000000
--- a/src/include/gnunet_sensordashboard_service.h
+++ /dev/null
@@ -1,55 +0,0 @@
1/*
2 This file is part of GNUnet
3 Copyright (C)
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Omar Tarabai
23 *
24 * @file
25 * API to the sensordashboard service
26 *
27 * @defgroup sensordashboard Sensor Dashboard service
28 *
29 * @{
30 */
31#ifndef GNUNET_SENSORDASHBOARD_SERVICE_H
32#define GNUNET_SENSORDASHBOARD_SERVICE_H
33
34#include "gnunet_common.h"
35#include "gnunet_util_lib.h"
36
37#ifdef __cplusplus
38extern "C"
39{
40#if 0 /* keep Emacsens' auto-indent happy */
41}
42#endif
43#endif
44
45
46#if 0 /* keep Emacsens' auto-indent happy */
47{
48#endif
49#ifdef __cplusplus
50}
51#endif
52
53#endif
54
55/** @} */ /* end of group */
diff --git a/src/include/gnunet_social_service.h b/src/include/gnunet_social_service.h
deleted file mode 100644
index 7faa336d6..000000000
--- a/src/include/gnunet_social_service.h
+++ /dev/null
@@ -1,1344 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Gabor X Toth
23 * @author Christian Grothoff
24 *
25 * @file
26 * Social service; implements social interactions through the PSYC service.
27 */
28
29/** @defgroup social Social service
30Social interactions through the PSYC service.
31
32# Overview
33
34The social service provides an API for social interactions based on a one-to-many messaging model.
35It manages subscriptions of applications to places, provides messaging functionality in places,
36allows access to the local message history and manages the GNS zone of _egos_ (user identities).
37
38The service stores private and public keys of subscribed places, as well as files received in subscribed places.
39
40# Concepts and terminology
41
42## Ego, Nym
43
44An _ego_ is an identity of a user, a private-public key pair.
45A _nym_ is an identity of another user in the network, identified by its public key.
46Each user can have multiple identities.
47
48struct GNUNET_SOCIAL_Ego and struct GNUNET_SOCIAL_Nym represents one of these identities.
49
50## Place, Host, Guest
51
52A _place_ is where social interactions happen. It is owned and created by an _ego_.
53Creating a new place happens by an _ego_ entering a new place as a _host_,
54where _guests_ can enter later to receive messages sent to the place.
55
56A place is identified by its public key.
57
58- struct GNUNET_SOCIAL_Host represents a place entered as host,
59- struct GNUNET_SOCIAL_Guest is used for a place entered as guest.
60- A struct GNUNET_SOCIAL_Place can be obtained for both a host and guest place
61 using GNUNET_SOCIAL_host_get_place() and GNUNET_SOCIAL_guest_get_place()
62 and can be used with API functions common to hosts and guests.
63
64## History
65
66Messages sent to places are stored locally by the PSYCstore service, and can be queried any time.
67GNUNET_SOCIAL_history_replay_latest() retrieves the latest N messages sent to the place,
68while GNUNET_SOCIAL_history_replay() is used to query a given message ID range.
69
70## GNU Name System
71
72The GNU Name System is used for assigning human-readable names to nyms and places.
73There's a _GNS zone_ corresponding to each _nym_.
74An _ego_ can publish PKEY and PLACE records in its own zone, pointing to nyms and places, respectively.
75
76## Announcement, talk request
77
78The host can _announce_ messages to the place, using GNUNET_SOCIAL_host_announce().
79Guests can send _talk_ requests to the host, using GNUNET_SOCIAL_guest_talk().
80The host receives talk requests of guests and can _relay_ them to the place,
81or process it using a message handler function.
82
83# Using the API
84
85## Connecting to the service
86
87A client first establishes an _application connection_ to the service using
88GNUNET_SOCIAL_app_connect() providing its _application ID_, then receives the
89public keys of subscribed places and available egos in response.
90
91## Reconnecting to places
92
93Then the application can reconnect to its subscribed places by establishing
94_place connections_ with GNUNET_SOCIAL_host_enter_reconnect() and
95GNUNET_SOCIAL_guest_enter_reconnect().
96
97## Subscribing to a place
98
99Entering and subscribing a new host or guest place is done using
100GNUNET_SOCIAL_host_enter() and GNUNET_SOCIAL_guest_enter().
101
102## Disconnecting from a place
103
104An application can disconnect from a place while the social service keeps its
105network connection active, using GNUNET_SOCIAL_host_disconnect() and
106GNUNET_SOCIAL_guest_disconnect().
107
108## Leaving a place
109
110To permanently leave a place, see GNUNET_SOCIAL_host_leave() and GNUNET_SOCIAL_guest_leave().
111When leaving a place its network connections are closed and all applications are unsubscribed from the place.
112
113# Message methods
114
115## _converse
116
117Human conversation in a private or public place.
118
119### Environment
120
121#### _id_reply
122Message ID this message is in reply to.
123
124#### _id_thread
125Thread ID, the first message ID in the thread.
126
127#### _nym_author
128Nym of the author.
129
130FIXME: Are nyms a different data type from egos and person entities?
131Do they have a different format than any other entity address?
132Questions and thoughts on how to fix this in "questions.org"
133
134#### _sig_author
135Signature of the message body and its variables by the author.
136
137### Data
138
139Message body.
140
141## _notice_place
142
143Notification about a place.
144
145TODO: Applications can decide to auto-subscribe to certain places,
146e.g. files under a given size.
147
148### Environment
149
150#### Using GNS
151
152##### _gns_place
153GNS name of the place in a globally unique .zkey zone
154
155FIXME: A custom _gns PSYC data type should be avoidable by parsing
156and interpreting PSYC uniforms appropriately.
157Thoughts on this in "questions.org"
158
159#### Without GNS
160
161##### _key_pub_place
162Public key of place
163
164FIXME: _key_pub can't be the data type for GNUnet-specific cryptographic
165addressing. Questions and thoughts on how to fix this in "questions.org"
166
167##### _peer_origin
168Peer ID of origin
169
170##### _list_peer_relays
171List of peer IDs of relays
172
173## _notice_place_file
174
175Notification about a place hosting a file.
176
177### Environment
178
179The environment of _notice_place above, plus the following:
180
181#### _size_file
182Size of file
183
184#### _type_file
185MIME type of file
186
187#### _name_file
188Name of file
189
190#### _description_file
191Description of file
192
193## _file
194
195Messages with a _file method contain a file,
196which is saved to disk upon reception at the following location:
197$GNUNET_DATA_HOME/social/files/<H(place_pub)>/<H(message_id)>
198
199### Environment
200
201#### _size_file
202Size of file
203
204#### _type_file
205MIME type of file
206
207#### _name_file
208Name of file
209
210#### _description_file
211Description of file
212
213@{
214*/
215
216
217#ifndef GNUNET_SOCIAL_SERVICE_H
218#define GNUNET_SOCIAL_SERVICE_H
219
220#ifdef __cplusplus
221extern "C"
222{
223#if 0 /* keep Emacsens' auto-indent happy */
224}
225#endif
226#endif
227
228#include <stdint.h>
229#include "gnunet_util_lib.h"
230#include "gnunet_psyc_util_lib.h"
231#include "gnunet_identity_service.h"
232#include "gnunet_namestore_service.h"
233#include "gnunet_psyc_service.h"
234
235
236/**
237 * Version number of GNUnet Social API.
238 */
239#define GNUNET_SOCIAL_VERSION 0x00000000
240
241/**
242 * Maximum size of client ID including '\0' terminator.
243 */
244#define GNUNET_SOCIAL_APP_MAX_ID_SIZE 256
245
246enum GNUNET_SOCIAL_MsgProcFlags {
247 GNUNET_SOCIAL_MSG_PROC_NONE = 0,
248 GNUNET_SOCIAL_MSG_PROC_RELAY = 1,
249 GNUNET_SOCIAL_MSG_PROC_SAVE= 2,
250};
251
252/**
253 * Handle for an application.
254 */
255struct GNUNET_SOCIAL_App;
256
257/**
258 * Handle for an ego (own identity)
259 */
260struct GNUNET_SOCIAL_Ego;
261
262/**
263 * Handle for a pseudonym of another user in the network.
264 */
265struct GNUNET_SOCIAL_Nym;
266
267/**
268 * Handle for a place where social interactions happen.
269 */
270struct GNUNET_SOCIAL_Place;
271
272/**
273 * Host handle for a place that we entered.
274 */
275struct GNUNET_SOCIAL_Host;
276
277/**
278 * Guest handle for place that we entered.
279 */
280struct GNUNET_SOCIAL_Guest;
281
282/**
283 * Handle that can be used to reconnect to a place as host.
284 */
285struct GNUNET_SOCIAL_HostConnection;
286
287/**
288 * Handle that can be used to reconnect to a place as guest.
289 */
290struct GNUNET_SOCIAL_GuestConnection;
291
292/**
293 * Notification about an available identity.
294 *
295 * @param cls
296 * Closure.
297 * @param pub_key
298 * Public key of ego.
299 * @param name
300 * Name of ego.
301 */
302typedef void
303(*GNUNET_SOCIAL_AppEgoCallback) (void *cls,
304 struct GNUNET_SOCIAL_Ego *ego,
305 const struct GNUNET_CRYPTO_EcdsaPublicKey *ego_pub_key,
306 const char *name);
307
308
309/**
310 * Entry status of a place per application.
311 */
312enum GNUNET_SOCIAL_AppPlaceState
313{
314 /**
315 * The place was once entered by the ego, but left since.
316 * It's possible to establish a local connection to the place
317 * without re-entering to fetch history from the PSYCstore.
318 * @see enum GNUNET_PSYC_SlaveJoinFlags and GNUNET_SOCIAL_guest_enter()
319 */
320 GNUNET_SOCIAL_PLACE_STATE_ARCHIVED = 0,
321
322 /**
323 * The place is entered by the ego,
324 * but this application is not subscribed to it.
325 */
326 GNUNET_SOCIAL_PLACE_STATE_ENTERED = 1,
327
328 /**
329 * The place is entered by the ego and
330 * and this application is subscribed to it.
331 */
332 GNUNET_SOCIAL_PLACE_STATE_SUBSCRIBED = 2,
333};
334
335
336/**
337 * Called after receiving initial list of egos and places.
338 */
339typedef void
340(*GNUNET_SOCIAL_AppConnectedCallback) (void *cls);
341
342
343/**
344 * Notification about a home.
345 *
346 * @param cls
347 * Closure.
348 * @param hconn
349 * Host connection, to be used with GNUNET_SOCIAL_host_enter_reconnect()
350 * @param ego
351 * Ego used to enter the place.
352 * @param place_pub_key
353 * Public key of the place.
354 * @param place_state
355 * @see enum GNUNET_SOCIAL_AppPlaceState
356 */
357typedef void
358(*GNUNET_SOCIAL_AppHostPlaceCallback) (void *cls,
359 struct GNUNET_SOCIAL_HostConnection *hconn,
360 struct GNUNET_SOCIAL_Ego *ego,
361 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
362 enum GNUNET_SOCIAL_AppPlaceState place_state);
363
364/**
365 * Notification about a place.
366 *
367 * @param cls
368 * Closure.
369 * @param gconn
370 * Guest connection, to be used with GNUNET_SOCIAL_guest_enter_reconnect()
371 * @param ego
372 * Ego used to enter the place.
373 * @param place_pub_key
374 * Public key of the place.
375 * @param place_state
376 * @see enum GNUNET_SOCIAL_AppPlaceState
377 */
378typedef void
379(*GNUNET_SOCIAL_AppGuestPlaceCallback) (void *cls,
380 struct GNUNET_SOCIAL_GuestConnection *gconn,
381 struct GNUNET_SOCIAL_Ego *ego,
382 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
383 enum GNUNET_SOCIAL_AppPlaceState place_state);
384
385
386/**
387 * Establish application connection to the social service.
388 *
389 * The @host_cb and @guest_cb functions are
390 * initially called for each entered places,
391 * then later each time a new place is entered with the current app ID.
392 *
393 * @param cfg
394 * Configuration.
395 * @param ego_cb
396 * Function to notify about an available ego.
397 * @param host_cb
398 * Function to notify about a place entered as host.
399 * @param guest_cb
400 * Function to notify about a place entered as guest.
401 * @param cls
402 * Closure for the callbacks.
403 *
404 * @return Handle that can be used to stop listening.
405 */
406struct GNUNET_SOCIAL_App *
407GNUNET_SOCIAL_app_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
408 const char *id,
409 GNUNET_SOCIAL_AppEgoCallback ego_cb,
410 GNUNET_SOCIAL_AppHostPlaceCallback host_cb,
411 GNUNET_SOCIAL_AppGuestPlaceCallback guest_cb,
412 GNUNET_SOCIAL_AppConnectedCallback connected_cb,
413 void *cls);
414
415
416/**
417 * Disconnect app.
418 *
419 * @param app
420 * Application handle.
421 * @param disconnect_cb
422 * Disconnect callback.
423 * @param disconnect_cls
424 * Disconnect closure.
425 */
426void
427GNUNET_SOCIAL_app_disconnect (struct GNUNET_SOCIAL_App *app,
428 GNUNET_ContinuationCallback disconnect_cb,
429 void *disconnect_cls);
430
431
432/**
433 * Get the public key of @a ego.
434 *
435 * @param ego
436 * Ego.
437 *
438 * @return Public key of ego.
439 */
440const struct GNUNET_CRYPTO_EcdsaPublicKey *
441GNUNET_SOCIAL_ego_get_pub_key (const struct GNUNET_SOCIAL_Ego *ego);
442
443
444/**
445 * Get the name of @a ego.
446 *
447 * @param ego
448 * Ego.
449 *
450 * @return Public key of @a ego.
451 */
452const char *
453GNUNET_SOCIAL_ego_get_name (const struct GNUNET_SOCIAL_Ego *ego);
454
455
456/**
457 * Get the public key of a @a nym.
458 *
459 * Suitable, for example, to be used with GNUNET_SOCIAL_zone_add_nym().
460 *
461 * @param nym
462 * Pseudonym to map to a cryptographic identifier.
463 *
464 * @return Public key of nym.
465 */
466const struct GNUNET_CRYPTO_EcdsaPublicKey *
467GNUNET_SOCIAL_nym_get_pub_key (const struct GNUNET_SOCIAL_Nym *nym);
468
469
470/**
471 * Get the hash of the public key of a @a nym.
472 *
473 * @param nym
474 * Pseudonym to map to a cryptographic identifier.
475 *
476 * @return Hash of the public key of nym.
477 */
478const struct GNUNET_HashCode *
479GNUNET_SOCIAL_nym_get_pub_key_hash (const struct GNUNET_SOCIAL_Nym *nym);
480
481
482/**
483 * Function called asking for nym to be admitted to the place.
484 *
485 * Should call either GNUNET_SOCIAL_host_admit() or
486 * GNUNET_SOCIAL_host_reject_entry() (possibly asynchronously). If this host
487 * cannot decide, it is fine to call neither function, in which case hopefully
488 * some other host of the place exists that will make the decision. The @a nym
489 * reference remains valid until the #GNUNET_SOCIAL_FarewellCallback is invoked
490 * for it.
491 *
492 * @param cls
493 * Closure.
494 * @param nym
495 * Handle for the user who wants to enter.
496 * @param method_name
497 * Method name in the entry request.
498 * @param variable_count
499 * Number of elements in the @a variables array.
500 * @param variables
501 * Variables present in the message.
502 * @param data
503 * Payload given on enter (e.g. a password).
504 * @param data_size
505 * Number of bytes in @a data.
506 */
507typedef void
508(*GNUNET_SOCIAL_AnswerDoorCallback) (void *cls,
509 struct GNUNET_SOCIAL_Nym *nym,
510 const char *method_name,
511 struct GNUNET_PSYC_Environment *env,
512 const void *data,
513 size_t data_size);
514
515
516/**
517 * Function called when a @a nym leaves the place.
518 *
519 * This is also called if the @a nym was never given permission to enter
520 * (i.e. the @a nym stopped asking to get in).
521 *
522 * @param cls
523 * Closure.
524 * @param nym
525 * Handle for the user who left.
526 */
527typedef void
528(*GNUNET_SOCIAL_FarewellCallback) (void *cls,
529 const struct GNUNET_SOCIAL_Nym *nym,
530 struct GNUNET_PSYC_Environment *env);
531
532
533/**
534 * Function called after the host entered a home.
535 *
536 * @param cls
537 * Closure.
538 * @param result
539 * #GNUNET_OK on success, or
540 * #GNUNET_SYSERR on error.
541 * @param place_pub_key
542 * Public key of home.
543 * @param max_message_id
544 * Last message ID sent to the channel.
545 * Or 0 if no messages have been sent to the place yet.
546 */
547typedef void
548(*GNUNET_SOCIAL_HostEnterCallback) (void *cls, int result,
549 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
550 uint64_t max_message_id);
551
552
553/**
554 * Enter a place as host.
555 *
556 * A place is created upon first entering, and it is active until permanently
557 * left using GNUNET_SOCIAL_host_leave().
558 *
559 * @param cfg
560 * Configuration to contact the social service.
561 * @param ego
562 * Identity of the host.
563 * @param place_key
564 * Private-public key pair of the place.
565 * NULL for ephemeral places.
566 * @param policy
567 * Policy specifying entry and history restrictions for the place.
568 * @param slicer
569 * Slicer to handle incoming messages.
570 * @param enter_cb
571 * Function called when the place is entered and ready to use.
572 * @param answer_door_cb
573 * Function to handle new nyms that want to enter.
574 * @param farewell_cb
575 * Function to handle departing nyms.
576 * @param cls
577 * Closure for the callbacks.
578 *
579 * @return Handle for the host.
580 */
581struct GNUNET_SOCIAL_Host *
582GNUNET_SOCIAL_host_enter (const struct GNUNET_SOCIAL_App *app,
583 const struct GNUNET_SOCIAL_Ego *ego,
584 enum GNUNET_PSYC_Policy policy,
585 struct GNUNET_PSYC_Slicer *slicer,
586 GNUNET_SOCIAL_HostEnterCallback enter_cb,
587 GNUNET_SOCIAL_AnswerDoorCallback answer_door_cb,
588 GNUNET_SOCIAL_FarewellCallback farewell_cb,
589 void *cls);
590
591
592/**
593 * Reconnect to an already entered place as host.
594 *
595 * @param hconn
596 * Host connection handle.
597 * @see GNUNET_SOCIAL_app_connect() & GNUNET_SOCIAL_AppHostPlaceCallback()
598 * @param slicer
599 * Slicer to handle incoming messages.
600 * @param enter_cb
601 * Function called when the place is entered and ready to use.
602 * @param answer_door_cb
603 * Function to handle new nyms that want to enter.
604 * @param farewell_cb
605 * Function to handle departing nyms.
606 * @param cls
607 * Closure for the callbacks.
608 *
609 * @return Handle for the host.
610 */
611struct GNUNET_SOCIAL_Host *
612GNUNET_SOCIAL_host_enter_reconnect (struct GNUNET_SOCIAL_HostConnection *hconn,
613 struct GNUNET_PSYC_Slicer *slicer,
614 GNUNET_SOCIAL_HostEnterCallback enter_cb,
615 GNUNET_SOCIAL_AnswerDoorCallback answer_door_cb,
616 GNUNET_SOCIAL_FarewellCallback farewell_cb,
617 void *cls);
618
619
620/**
621 * Decision whether to admit @a nym into the place or refuse entry.
622 *
623 * @param hst
624 * Host of the place.
625 * @param nym
626 * Handle for the entity that wanted to enter.
627 * @param is_admitted
628 * #GNUNET_YES if @a nym is admitted,
629 * #GNUNET_NO if @a nym is refused entry,
630 * #GNUNET_SYSERR if we cannot answer the request.
631 * @param entry_resp
632 * Entry response message, or NULL.
633 * @return #GNUNET_OK on success,
634 * #GNUNET_SYSERR if the message is too large.
635 */
636int
637GNUNET_SOCIAL_host_entry_decision (struct GNUNET_SOCIAL_Host *hst,
638 struct GNUNET_SOCIAL_Nym *nym,
639 int is_admitted,
640 const struct GNUNET_PSYC_Message *entry_resp);
641
642
643/**
644 * Throw @a nym out of the place.
645 *
646 * Sends a _notice_place_leave announcement to the home.
647 *
648 * The @a nym reference will remain valid until the
649 * #GNUNET_SOCIAL_FarewellCallback is invoked,
650 * which should be very soon after this call.
651 *
652 * @param host
653 * Host of the place.
654 * @param nym
655 * Handle for the entity to be ejected.
656 * @param env
657 * Environment for the message or NULL.
658 * _nym is set to @e nym regardless whether an @e env is provided.
659 */
660void
661GNUNET_SOCIAL_host_eject (struct GNUNET_SOCIAL_Host *host,
662 const struct GNUNET_SOCIAL_Nym *nym,
663 struct GNUNET_PSYC_Environment *env);
664
665
666/**
667 * Flags for announcements by a host.
668 */
669enum GNUNET_SOCIAL_AnnounceFlags
670{
671 GNUNET_SOCIAL_ANNOUNCE_NONE = 0,
672
673 /**
674 * Whether this announcement removes all objects from the place.
675 *
676 * New objects can be still added to the now empty place using the @e env
677 * parameter of the same announcement.
678 */
679 GNUNET_SOCIAL_ANNOUNCE_CLEAR_OBJECTS = 1 << 0
680};
681
682
683/**
684 * Handle for an announcement request.
685 */
686struct GNUNET_SOCIAL_Announcement;
687
688
689/**
690 * Send a message to all nyms that are present in the place.
691 *
692 * This function is restricted to the host. Nyms can only send requests
693 * to the host who can decide to relay it to everyone in the place.
694 *
695 * @param host
696 * Host of the place.
697 * @param method_name
698 * Method to use for the announcement.
699 * @param env
700 * Environment containing variables for the message and operations
701 * on objects of the place.
702 * Has to remain available until the first call to @a notify_data.
703 * Can be NULL.
704 * @param notify_data
705 * Function to call to get the payload of the announcement.
706 * @param notify_data_cls
707 * Closure for @a notify.
708 * @param flags
709 * Flags for this announcement.
710 *
711 * @return NULL on error (another announcement already in progress?).
712 */
713struct GNUNET_SOCIAL_Announcement *
714GNUNET_SOCIAL_host_announce (struct GNUNET_SOCIAL_Host *host,
715 const char *method_name,
716 const struct GNUNET_PSYC_Environment *env,
717 GNUNET_PSYC_TransmitNotifyData notify_data,
718 void *notify_data_cls,
719 enum GNUNET_SOCIAL_AnnounceFlags flags);
720
721
722/**
723 * Resume transmitting announcement.
724 *
725 * @param a
726 * The announcement to resume.
727 */
728void
729GNUNET_SOCIAL_host_announce_resume (struct GNUNET_SOCIAL_Announcement *a);
730
731
732/**
733 * Cancel announcement.
734 *
735 * @param a
736 * The announcement to cancel.
737 */
738void
739GNUNET_SOCIAL_host_announce_cancel (struct GNUNET_SOCIAL_Announcement *a);
740
741
742/**
743 * Allow relaying messages from guests matching a given @a method_prefix.
744 *
745 * @param host
746 * The host.
747 * @param method_prefix
748 * Method prefix to allow.
749 */
750void
751GNUNET_SOCIAL_host_relay_allow_method (struct GNUNET_SOCIAL_Host *host,
752 const char *method_prefix);
753
754
755/**
756 * Allow relaying changes to objects of the place.
757 *
758 * Only applies to messages with an allowed method name.
759 * @see GNUNET_SCOIAL_host_relay_allow_method()
760 *
761 * @param host
762 * The host.
763 * @param object_prefix
764 * Object prefix to allow modifying.
765 */
766void
767GNUNET_SOCIAL_host_relay_allow_method (struct GNUNET_SOCIAL_Host *host,
768 const char *object_prefix);
769
770
771/**
772 * Stop relaying messages from guests.
773 *
774 * Remove all allowed relay rules.
775 *
776 *
777 *
778 */
779void
780GNUNET_SOCIAL_host_relay_stop (struct GNUNET_SOCIAL_Host *host);
781
782
783/**
784 * Obtain handle for a hosted place.
785 *
786 * The returned handle can be used to access the place API.
787 *
788 * @param host
789 * Handle for the host.
790 *
791 * @return Handle for the hosted place, valid as long as @a host is valid.
792 */
793struct GNUNET_SOCIAL_Place *
794GNUNET_SOCIAL_host_get_place (struct GNUNET_SOCIAL_Host *host);
795
796
797/**
798 * Disconnect from a home.
799 *
800 * Invalidates host handle.
801 *
802 * @param hst
803 * The host to disconnect.
804 * @param disconnect_cb
805 * Function called after disconnected from the service.
806 * @param cls
807 * Closure for @a disconnect_cb.
808 */
809void
810GNUNET_SOCIAL_host_disconnect (struct GNUNET_SOCIAL_Host *hst,
811 GNUNET_ContinuationCallback disconnect_cb,
812 void *cls);
813
814
815/**
816 * Stop hosting a home.
817 *
818 * Sends a _notice_place_closing announcement to the home.
819 * Invalidates host handle.
820 *
821 * @param hst
822 * Host leaving.
823 * @param env
824 * Environment for the message or NULL.
825 * @param disconnect_cb
826 * Function called after the host left the place
827 * and disconnected from the service.
828 * @param cls
829 * Closure for @a disconnect_cb.
830 */
831void
832GNUNET_SOCIAL_host_leave (struct GNUNET_SOCIAL_Host *hst,
833 const struct GNUNET_PSYC_Environment *env,
834 GNUNET_ContinuationCallback disconnect_cb,
835 void *cls);
836
837
838/**
839 * Function called after the guest entered the local copy of the place.
840 *
841 * History and object query functions can be used after this call,
842 * but new messages can't be sent or received.
843 *
844 * @param cls
845 * Closure.
846 * @param result
847 * #GNUNET_OK on success, or
848 * #GNUNET_SYSERR on error, e.g. could not connect to the service, or
849 * could not resolve GNS name.
850 * @param place_pub_key
851 * Public key of place.
852 * @param max_message_id
853 * Last message ID sent to the place.
854 * Or 0 if no messages have been sent to the place yet.
855 */
856typedef void
857(*GNUNET_SOCIAL_GuestEnterCallback) (void *cls, int result,
858 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
859 uint64_t max_message_id);
860
861
862/**
863 * Function called upon a guest receives a decision about entry to the place.
864 *
865 * @param is_admitted
866 * Is the guest admitted to the place?
867 * #GNUNET_YES if admitted,
868 * #GNUNET_NO if refused entry,
869 * #GNUNET_SYSERR if the request could not be answered.
870 * @param data
871 * Entry response message.
872 */
873typedef void
874(*GNUNET_SOCIAL_EntryDecisionCallback) (void *cls,
875 int is_admitted,
876 const struct GNUNET_PSYC_Message *entry_resp);
877
878
879/**
880 * Request entry to a place as a guest.
881 *
882 * @param app
883 * Application handle.
884 * @param ego
885 * Identity of the guest.
886 * @param place_pub_key
887 * Public key of the place to enter.
888 * @param flags
889 * Flags for the entry.
890 * @param origin
891 * Peer identity of the origin of the underlying multicast group.
892 * @param relay_count
893 * Number of elements in the @a relays array.
894 * @param relays
895 * Relays for the underlying multicast group.
896 * @param entry_msg
897 * Entry message.
898 * @param slicer
899 * Slicer to use for processing incoming requests from guests.
900 *
901 * @return NULL on errors, otherwise handle for the guest.
902 */
903struct GNUNET_SOCIAL_Guest *
904GNUNET_SOCIAL_guest_enter (const struct GNUNET_SOCIAL_App *app,
905 const struct GNUNET_SOCIAL_Ego *ego,
906 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
907 enum GNUNET_PSYC_SlaveJoinFlags flags,
908 const struct GNUNET_PeerIdentity *origin,
909 uint32_t relay_count,
910 const struct GNUNET_PeerIdentity *relays,
911 const struct GNUNET_PSYC_Message *entry_msg,
912 struct GNUNET_PSYC_Slicer *slicer,
913 GNUNET_SOCIAL_GuestEnterCallback local_enter_cb,
914 GNUNET_SOCIAL_EntryDecisionCallback entry_dcsn_cb,
915 void *cls);
916
917
918/**
919 * Request entry to a place by name as a guest.
920 *
921 * @param app
922 * Application handle.
923 * @param ego
924 * Identity of the guest.
925 * @param gns_name
926 * GNS name of the place to enter. Either in the form of
927 * 'room.friend.gnu', or 'NYMPUBKEY.zkey'. This latter case refers to
928 * the 'PLACE' record of the empty label ("+") in the GNS zone with the
929 * nym's public key 'NYMPUBKEY', and can be used to request entry to a
930 * pseudonym's place directly.
931 * @param password
932 * Password to decrypt the record, or NULL for cleartext records.
933 * @param join_msg
934 * Entry request message.
935 * @param slicer
936 * Slicer to use for processing incoming requests from guests.
937 * @param local_enter_cb
938 * Called upon connection established to the social service.
939 * @param entry_decision_cb
940 * Called upon receiving entry decision.
941 *
942 * @return NULL on errors, otherwise handle for the guest.
943 */
944struct GNUNET_SOCIAL_Guest *
945GNUNET_SOCIAL_guest_enter_by_name (const struct GNUNET_SOCIAL_App *app,
946 const struct GNUNET_SOCIAL_Ego *ego,
947 const char *gns_name,
948 const char *password,
949 const struct GNUNET_PSYC_Message *join_msg,
950 struct GNUNET_PSYC_Slicer *slicer,
951 GNUNET_SOCIAL_GuestEnterCallback local_enter_cb,
952 GNUNET_SOCIAL_EntryDecisionCallback entry_decision_cb,
953 void *cls);
954
955
956/**
957 * Reconnect to an already entered place as guest.
958 *
959 * @param gconn
960 * Guest connection handle.
961 * @see GNUNET_SOCIAL_app_connect() & GNUNET_SOCIAL_AppGuestPlaceCallback()
962 * @param flags
963 * Flags for the entry.
964 * @param slicer
965 * Slicer to use for processing incoming requests from guests.
966 * @param local_enter_cb
967 * Called upon connection established to the social service.
968 * @param entry_decision_cb
969 * Called upon receiving entry decision.
970 *
971 * @return NULL on errors, otherwise handle for the guest.
972 */
973struct GNUNET_SOCIAL_Guest *
974GNUNET_SOCIAL_guest_enter_reconnect (struct GNUNET_SOCIAL_GuestConnection *gconn,
975 enum GNUNET_PSYC_SlaveJoinFlags flags,
976 struct GNUNET_PSYC_Slicer *slicer,
977 GNUNET_SOCIAL_GuestEnterCallback local_enter_cb,
978 void *cls);
979
980
981/**
982 * Flags for talking to the host of a place.
983 */
984enum GNUNET_SOCIAL_TalkFlags
985{
986 GNUNET_SOCIAL_TALK_NONE = 0
987};
988
989
990/**
991 * A talk request.
992 */
993struct GNUNET_SOCIAL_TalkRequest;
994
995
996/**
997 * Talk to the host of the place.
998 *
999 * @param place
1000 * Place where we want to talk to the host.
1001 * @param method_name
1002 * Method to invoke on the host.
1003 * @param env
1004 * Environment containing variables for the message, or NULL.
1005 * @param notify_data
1006 * Function to use to get the payload for the method.
1007 * @param notify_data_cls
1008 * Closure for @a notify_data.
1009 * @param flags
1010 * Flags for the message being sent.
1011 *
1012 * @return NULL if we are already trying to talk to the host,
1013 * otherwise handle to cancel the request.
1014 */
1015struct GNUNET_SOCIAL_TalkRequest *
1016GNUNET_SOCIAL_guest_talk (struct GNUNET_SOCIAL_Guest *guest,
1017 const char *method_name,
1018 const struct GNUNET_PSYC_Environment *env,
1019 GNUNET_PSYC_TransmitNotifyData notify_data,
1020 void *notify_data_cls,
1021 enum GNUNET_SOCIAL_TalkFlags flags);
1022
1023
1024/**
1025 * Resume talking to the host of the place.
1026 *
1027 * @param tr
1028 * Talk request to resume.
1029 */
1030void
1031GNUNET_SOCIAL_guest_talk_resume (struct GNUNET_SOCIAL_TalkRequest *tr);
1032
1033
1034/**
1035 * Cancel talking to the host of the place.
1036 *
1037 * @param tr
1038 * Talk request to cancel.
1039 */
1040void
1041GNUNET_SOCIAL_guest_talk_cancel (struct GNUNET_SOCIAL_TalkRequest *tr);
1042
1043
1044/**
1045 * Disconnect from a place.
1046 *
1047 * Invalidates guest handle.
1048 *
1049 * @param gst
1050 * The guest to disconnect.
1051 * @param disconnect_cb
1052 * Function called after disconnected from the service.
1053 * @param cls
1054 * Closure for @a disconnect_cb.
1055 */
1056void
1057GNUNET_SOCIAL_guest_disconnect (struct GNUNET_SOCIAL_Guest *gst,
1058 GNUNET_ContinuationCallback disconnect_cb,
1059 void *cls);
1060
1061
1062/**
1063 * Leave a place temporarily or permanently.
1064 *
1065 * Notifies the owner of the place about leaving, and destroys the place handle.
1066 *
1067 * @param place
1068 * Place to leave.
1069 * @param env
1070 * Optional environment for the leave message if @a keep_active
1071 * is #GNUNET_NO. NULL if not needed.
1072 * @param disconnect_cb
1073 * Called upon disconnecting from the social service.
1074 */
1075void
1076GNUNET_SOCIAL_guest_leave (struct GNUNET_SOCIAL_Guest *gst,
1077 struct GNUNET_PSYC_Environment *env,
1078 GNUNET_ContinuationCallback disconnect_cb,
1079 void *leave_cls);
1080
1081
1082/**
1083 * Obtain handle for a place entered as guest.
1084 *
1085 * The returned handle can be used to access the place API.
1086 *
1087 * @param guest Handle for the guest.
1088 *
1089 * @return Handle for the place, valid as long as @a guest is valid.
1090 */
1091struct GNUNET_SOCIAL_Place *
1092GNUNET_SOCIAL_guest_get_place (struct GNUNET_SOCIAL_Guest *guest);
1093
1094
1095/**
1096 * A history request.
1097 */
1098struct GNUNET_SOCIAL_HistoryRequest;
1099
1100
1101/**
1102 * Get the public key of a place.
1103 *
1104 * @param plc
1105 * Place.
1106 *
1107 * @return Public key of the place.
1108 */
1109const struct GNUNET_CRYPTO_EddsaPublicKey *
1110GNUNET_SOCIAL_place_get_pub_key (const struct GNUNET_SOCIAL_Place *plc);
1111
1112
1113/**
1114 * Set message processing @a flags for a @a method_prefix.
1115 *
1116 * @param plc
1117 * Place.
1118 * @param method_prefix
1119 * Method prefix @a flags apply to.
1120 * @param flags
1121 * The flags that apply to a matching @a method_prefix.
1122 */
1123void
1124GNUNET_SOCIAL_place_msg_proc_set (struct GNUNET_SOCIAL_Place *plc,
1125 const char *method_prefix,
1126 enum GNUNET_SOCIAL_MsgProcFlags flags);
1127
1128/**
1129 * Clear all message processing flags previously set for this place.
1130 */
1131void
1132GNUNET_SOCIAL_place_msg_proc_clear (struct GNUNET_SOCIAL_Place *plc);
1133
1134
1135/**
1136 * Learn about the history of a place.
1137 *
1138 * Messages are returned through the @a slicer function
1139 * and have the #GNUNET_PSYC_MESSAGE_HISTORIC flag set.
1140 *
1141 * @param place
1142 * Place we want to learn more about.
1143 * @param start_message_id
1144 * First historic message we are interested in.
1145 * @param end_message_id
1146 * Last historic message we are interested in (inclusive).
1147 * @param method_prefix
1148 * Only retrieve messages with this method prefix.
1149 * @param flags
1150 * OR'ed GNUNET_PSYC_HistoryReplayFlags
1151 * @param slicer
1152 * Slicer to use for retrieved messages.
1153 * Can be the same as the slicer of the place.
1154 * @param result_cb
1155 * Function called after all messages retrieved.
1156 * NULL if not needed.
1157 * @param cls Closure for @a result_cb.
1158 */
1159struct GNUNET_SOCIAL_HistoryRequest *
1160GNUNET_SOCIAL_place_history_replay (struct GNUNET_SOCIAL_Place *plc,
1161 uint64_t start_message_id,
1162 uint64_t end_message_id,
1163 const char *method_prefix,
1164 uint32_t flags,
1165 struct GNUNET_PSYC_Slicer *slicer,
1166 GNUNET_ResultCallback result_cb,
1167 void *cls);
1168
1169
1170/**
1171 * Learn about the history of a place.
1172 *
1173 * Sends messages through the slicer function of the place where
1174 * start_message_id <= message_id <= end_message_id.
1175 * The messages will have the #GNUNET_PSYC_MESSAGE_HISTORIC flag set.
1176 *
1177 * To get the latest message, use 0 for both the start and end message ID.
1178 *
1179 * @param place
1180 * Place we want to learn more about.
1181 * @param message_limit
1182 * Maximum number of historic messages we are interested in.
1183 * @param result_cb
1184 * Function called after all messages retrieved.
1185 * NULL if not needed.
1186 * @param cls Closure for @a result_cb.
1187 */
1188struct GNUNET_SOCIAL_HistoryRequest *
1189GNUNET_SOCIAL_place_history_replay_latest (struct GNUNET_SOCIAL_Place *plc,
1190 uint64_t message_limit,
1191 const char *method_prefix,
1192 uint32_t flags,
1193 struct GNUNET_PSYC_Slicer *slicer,
1194 GNUNET_ResultCallback result_cb,
1195 void *cls);
1196
1197/**
1198 * Cancel learning about the history of a place.
1199 *
1200 * @param hist
1201 * History lesson to cancel.
1202 */
1203void
1204GNUNET_SOCIAL_place_history_replay_cancel (struct GNUNET_SOCIAL_HistoryRequest *hist);
1205
1206
1207struct GNUNET_SOCIAL_LookHandle;
1208
1209
1210/**
1211 * Look at a particular object in the place.
1212 *
1213 * The best matching object is returned (its name might be less specific than
1214 * what was requested).
1215 *
1216 * @param place
1217 * The place to look the object at.
1218 * @param full_name
1219 * Full name of the object.
1220 *
1221 * @return NULL if there is no such object at this place.
1222 */
1223struct GNUNET_SOCIAL_LookHandle *
1224GNUNET_SOCIAL_place_look_at (struct GNUNET_SOCIAL_Place *plc,
1225 const char *full_name,
1226 GNUNET_PSYC_StateVarCallback var_cb,
1227 GNUNET_ResultCallback result_cb,
1228 void *cls);
1229
1230/**
1231 * Look for objects in the place with a matching name prefix.
1232 *
1233 * @param place
1234 * The place to look its objects at.
1235 * @param name_prefix
1236 * Look at objects with names beginning with this value.
1237 * @param var_cb
1238 * Function to call for each object found.
1239 * @param cls
1240 * Closure for callback function.
1241 *
1242 * @return Handle that can be used to stop looking at objects.
1243 */
1244struct GNUNET_SOCIAL_LookHandle *
1245GNUNET_SOCIAL_place_look_for (struct GNUNET_SOCIAL_Place *plc,
1246 const char *name_prefix,
1247 GNUNET_PSYC_StateVarCallback var_cb,
1248 GNUNET_ResultCallback result_cb,
1249 void *cls);
1250
1251
1252/**
1253 * Stop looking at objects.
1254 *
1255 * @param lh Look handle to stop.
1256 */
1257void
1258GNUNET_SOCIAL_place_look_cancel (struct GNUNET_SOCIAL_LookHandle *lh);
1259
1260
1261/**
1262 * Advertise a @e place in the GNS zone of @a ego.
1263 *
1264 * @param app
1265 * Application handle.
1266 * @param ego
1267 * Ego.
1268 * @param place_pub_key
1269 * Public key of place to add.
1270 * @param name
1271 * The name for the PLACE record to put in the zone.
1272 * @param password
1273 * Password used to encrypt the record or NULL to keep it cleartext.
1274 * @param relay_count
1275 * Number of elements in the @a relays array.
1276 * @param relays
1277 * List of relays to put in the PLACE record to advertise
1278 * as entry points to the place in addition to the origin.
1279 * @param expiration_time
1280 * Expiration time of the record, use 0 to remove the record.
1281 * @param result_cb
1282 * Function called with the result of the operation.
1283 * @param result_cls
1284 * Closure for @a result_cb
1285 *
1286 * @return #GNUNET_OK if the request was sent,
1287 * #GNUNET_SYSERR on error, e.g. the name/password is too long.
1288 */
1289int
1290GNUNET_SOCIAL_zone_add_place (const struct GNUNET_SOCIAL_App *app,
1291 const struct GNUNET_SOCIAL_Ego *ego,
1292 const char *name,
1293 const char *password,
1294 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
1295 const struct GNUNET_PeerIdentity *origin,
1296 uint32_t relay_count,
1297 const struct GNUNET_PeerIdentity *relays,
1298 struct GNUNET_TIME_Absolute expiration_time,
1299 GNUNET_ResultCallback result_cb,
1300 void *result_cls);
1301
1302
1303/**
1304 * Add public key to the GNS zone of the @e ego.
1305 *
1306 * @param cfg
1307 * Configuration.
1308 * @param ego
1309 * Ego.
1310 * @param name
1311 * The name for the PKEY record to put in the zone.
1312 * @param nym_pub_key
1313 * Public key of nym to add.
1314 * @param expiration_time
1315 * Expiration time of the record, use 0 to remove the record.
1316 * @param result_cb
1317 * Function called with the result of the operation.
1318 * @param result_cls
1319 * Closure for @a result_cb
1320 *
1321 * @return #GNUNET_OK if the request was sent,
1322 * #GNUNET_SYSERR on error, e.g. the name is too long.
1323 */
1324int
1325GNUNET_SOCIAL_zone_add_nym (const struct GNUNET_SOCIAL_App *app,
1326 const struct GNUNET_SOCIAL_Ego *ego,
1327 const char *name,
1328 const struct GNUNET_CRYPTO_EcdsaPublicKey *nym_pub_key,
1329 struct GNUNET_TIME_Absolute expiration_time,
1330 GNUNET_ResultCallback result_cb,
1331 void *result_cls);
1332
1333
1334#if 0 /* keep Emacsens' auto-indent happy */
1335{
1336#endif
1337#ifdef __cplusplus
1338}
1339#endif
1340
1341/* ifndef GNUNET_SOCIAL_SERVICE_H */
1342#endif
1343
1344/** @} */ /* end of group */
diff --git a/src/include/gnunet_transport_address_service.h b/src/include/gnunet_transport_address_service.h
new file mode 100644
index 000000000..9f0717d00
--- /dev/null
+++ b/src/include/gnunet_transport_address_service.h
@@ -0,0 +1,116 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2009-2018 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @author Christian Grothoff
23 *
24 * @file
25 * Provide addresses to transport for validation
26 *
27 * @defgroup transport TRANSPORT service
28 * Low-level communication with other peers
29 *
30 * @see [Documentation](https://gnunet.org/transport-service)
31 *
32 * @{
33 */
34
35#ifndef GNUNET_TRANSPORT_ADDRESS_SERVICE_H
36#define GNUNET_TRANSPORT_ADDRESS_SERVICE_H
37
38#ifdef __cplusplus
39extern "C"
40{
41#if 0 /* keep Emacsens' auto-indent happy */
42}
43#endif
44#endif
45
46#include "gnunet_util_lib.h"
47#include "gnunet_nt_lib.h"
48
49/**
50 * Version number of the transport address API.
51 */
52#define GNUNET_TRANSPORT_ADDRESS_VERSION 0x00000000
53
54
55/**
56 * Opaque handle to the transport service for communicators.
57 */
58struct GNUNET_TRANSPORT_AddressHandle;
59
60
61/**
62 * Connect to the transport service.
63 *
64 * @param cfg configuration to use
65 * @return NULL on error
66 */
67struct GNUNET_TRANSPORT_AddressHandle *
68GNUNET_TRANSPORT_address_connect (const struct GNUNET_CONFIGURATION_Handle *cfg);
69
70
71/**
72 * Disconnect from the transport service.
73 *
74 * @param ch handle returned from connect
75 */
76void
77GNUNET_TRANSPORT_address_disconnect (struct GNUNET_TRANSPORT_AddressHandle *ch);
78
79
80/**
81 * The client has learned about a possible address for peer @a pid
82 * (i.e. via broadcast, multicast, DHT, ...). The transport service
83 * should consider validating it. Note that the plugin is NOT expected
84 * to have verified the signature, the transport service must decide
85 * whether to check the signature.
86 *
87 * While the notification is sent to @a ch asynchronously, this API
88 * does not return a handle as the delivery of addresses is simply
89 * unreliable, and if @a ch is down, the data provided will simply be
90 * lost.
91 *
92 * @param ch communicator handle
93 * @param pid peer the address is for
94 * @param raw raw address data
95 * @param raw_size number of bytes in @a raw
96 */
97void
98GNUNET_TRANSPORT_address_try (struct GNUNET_TRANSPORT_AddressHandle *ch,
99 const struct GNUNET_PeerIdentity *pid,
100 const void *raw,
101 const size_t raw_size);
102
103
104#if 0 /* keep Emacsens' auto-indent happy */
105{
106#endif
107#ifdef __cplusplus
108}
109#endif
110
111/* ifndef GNUNET_TRANSPORT_ADDRESS_SERVICE_H */
112#endif
113
114/** @} */ /* end of group */
115
116/* end of gnunet_transport_address_service.h */
diff --git a/src/include/gnunet_transport_hello_service.h b/src/include/gnunet_transport_hello_service.h
index d568c621e..58a1e9979 100644
--- a/src/include/gnunet_transport_hello_service.h
+++ b/src/include/gnunet_transport_hello_service.h
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -107,7 +107,7 @@ enum GNUNET_TRANSPORT_AddressClass
107 * Bitmask for "any" address. 107 * Bitmask for "any" address.
108 */ 108 */
109 GNUNET_TRANSPORT_AC_ANY = 65535 109 GNUNET_TRANSPORT_AC_ANY = 65535
110 110
111}; 111};
112 112
113 113
diff --git a/src/include/platform.h b/src/include/platform.h
index 1bae7ca44..01b0bcf9e 100644
--- a/src/include/platform.h
+++ b/src/include/platform.h
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -281,4 +281,14 @@ atoll (const char *nptr);
281 */ 281 */
282#define GNUNET_TERM_SIG SIGTERM 282#define GNUNET_TERM_SIG SIGTERM
283 283
284
285#ifndef PATH_MAX
286/**
287 * Assumed maximum path length.
288 */
289#define PATH_MAX 4096
290#endif
291
292
293
284#endif 294#endif
diff --git a/src/integration-tests/confs/c_bootstrap_server.conf b/src/integration-tests/confs/c_bootstrap_server.conf
index bcfa6b212..59f2bb949 100644
--- a/src/integration-tests/confs/c_bootstrap_server.conf
+++ b/src/integration-tests/confs/c_bootstrap_server.conf
@@ -10,29 +10,25 @@ PRIVATE_KEY = hostkeys/c_bootstrap_server
10[transport] 10[transport]
11UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-transport-8 11UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-transport-8
12PORT = 20011 12PORT = 20011
13PLUGINS = tcp udp http_client https_client http_server https_server 13PLUGINS = tcp
14 14
15[transport-tcp] 15[transport-tcp]
16PORT = 20010 16PORT = 20010
17ADVERTISED_PORT = 20010 17ADVERTISED_PORT = 20010
18 18
19[transport-udp]
20PORT = 20009
21
22[transport-http_server]
23PORT = 20008
24
25[transport-https_server]
26PORT = 20007
27
28[hostlist] 19[hostlist]
29OPTIONS = -p 20OPTIONS = -p
30SERVERs = 21SERVERs =
31 22
32[nat] 23[nat]
33BEHIND_NAT = NO 24BEHIND_NAT = NO
34DISABLEV6 = NO 25DISABLEV6 = NO
26UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-nat-4
27PORT = 20070
35 28
29[nat-auto]
30UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-natauto-4
31PORT = 20076
36 32
37[arm] 33[arm]
38UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-arm-4 34UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-arm-4
@@ -94,6 +90,3 @@ PORT = 20001
94[nse] 90[nse]
95UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-nse-12 91UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-nse-12
96PORT = 20015 92PORT = 20015
97
98
99
diff --git a/src/integration-tests/confs/c_nat_client.conf b/src/integration-tests/confs/c_nat_client.conf
index 0040a8dc0..550bd38f7 100644
--- a/src/integration-tests/confs/c_nat_client.conf
+++ b/src/integration-tests/confs/c_nat_client.conf
@@ -10,7 +10,7 @@ PRIVATE_KEY = hostkeys/c_nat_client
10[transport] 10[transport]
11UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-transport-50 11UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-transport-50
12PORT = 20065 12PORT = 20065
13PLUGINS = tcp udp http_client https_client 13PLUGINS = tcp
14 14
15[transport-tcp] 15[transport-tcp]
16PORT = 0 16PORT = 0
@@ -25,7 +25,12 @@ SERVERS = http://localhost:8080/
25[nat] 25[nat]
26BEHIND_NAT = YES 26BEHIND_NAT = YES
27DISABLEV6 = NO 27DISABLEV6 = NO
28UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-nat-46
29PORT = 20071
28 30
31[nat-auto]
32UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-natauto-46
33PORT = 20077
29 34
30[arm] 35[arm]
31UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-arm-46 36UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-arm-46
diff --git a/src/integration-tests/confs/c_no_nat_client.conf b/src/integration-tests/confs/c_no_nat_client.conf
index 38a7d7fbc..4573df601 100644
--- a/src/integration-tests/confs/c_no_nat_client.conf
+++ b/src/integration-tests/confs/c_no_nat_client.conf
@@ -7,7 +7,7 @@ GNUNET_TEST_HOME = $GNUNET_TMP/c_no_nat_client/
7PRIVATE_KEY = hostkeys/c_no_nat_client 7PRIVATE_KEY = hostkeys/c_no_nat_client
8 8
9[transport] 9[transport]
10PLUGINS = tcp udp http_client https_client 10PLUGINS = tcp
11UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-transport-22 11UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-transport-22
12PORT = 20029 12PORT = 20029
13 13
@@ -15,17 +15,18 @@ PORT = 20029
15PORT = 20028 15PORT = 20028
16ADVERTISED_PORT = 20028 16ADVERTISED_PORT = 20028
17 17
18[transport-udp]
19PORT = 20027
20BROADCAST_INTERVAL = 30 s
21
22[hostlist] 18[hostlist]
23SERVERS = http://localhost:8080/ 19SERVERS = http://localhost:8080/
24 20
25[nat] 21[nat]
26BEHIND_NAT = NO 22BEHIND_NAT = NO
27DISABLEV6 = NO 23DISABLEV6 = NO
24UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-nat-18
25PORT = 20072
28 26
27[nat-auto]
28UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-natauto-18
29PORT = 20074
29 30
30[arm] 31[arm]
31UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-arm-18 32UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-arm-18
diff --git a/src/integration-tests/confs/c_no_nat_client_2.conf b/src/integration-tests/confs/c_no_nat_client_2.conf
index 6c8f07632..a7d9a436f 100644
--- a/src/integration-tests/confs/c_no_nat_client_2.conf
+++ b/src/integration-tests/confs/c_no_nat_client_2.conf
@@ -8,7 +8,7 @@ PRIVATE_KEY = hostkeys/c_no_nat_client_2
8 8
9 9
10[transport] 10[transport]
11PLUGINS = tcp udp http_client https_client 11PLUGINS = tcp
12UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-transport-22 12UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-transport-22
13PORT = 20039 13PORT = 20039
14 14
@@ -26,6 +26,12 @@ SERVERS = http://localhost:8080/
26[nat] 26[nat]
27BEHIND_NAT = NO 27BEHIND_NAT = NO
28DISABLEV6 = NO 28DISABLEV6 = NO
29PORT = 20073
30UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-nat-18
31
32[nat-auto]
33PORT = 20075
34UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-natauto-18
29 35
30 36
31[arm] 37[arm]
@@ -111,5 +117,3 @@ PORT = 20038
111[dv] 117[dv]
112UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-dv-36 118UNIXPATH = $GNUNET_RUNTIME_DIR/test-service-dv-36
113PORT = 20039 119PORT = 20039
114
115
diff --git a/src/integration-tests/gnunet_pyexpect.py.in b/src/integration-tests/gnunet_pyexpect.py.in
index 73be6f295..83acb908f 100644
--- a/src/integration-tests/gnunet_pyexpect.py.in
+++ b/src/integration-tests/gnunet_pyexpect.py.in
@@ -19,6 +19,7 @@
19# 19#
20# Testcase for gnunet-peerinfo 20# Testcase for gnunet-peerinfo
21from __future__ import print_function 21from __future__ import print_function
22from builtins import object
22import os 23import os
23import re 24import re
24import subprocess 25import subprocess
diff --git a/src/integration-tests/gnunet_testing.py.in b/src/integration-tests/gnunet_testing.py.in
index 0d02a792f..c9342ecf0 100644
--- a/src/integration-tests/gnunet_testing.py.in
+++ b/src/integration-tests/gnunet_testing.py.in
@@ -11,22 +11,34 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
18# SPDX-License-Identifier: AGPL3.0-or-later 18# SPDX-License-Identifier: AGPL3.0-or-later
19# 19#
20# Functions for integration testing 20# Functions for integration testing
21from __future__ import unicode_literals
22from __future__ import print_function
23from builtins import object
24from builtins import str
21import os 25import os
22import subprocess 26import subprocess
23import sys 27import sys
24import shutil 28import shutil
25import time 29import time
26from gnunet_pyexpect import pexpect 30from gnunet_pyexpect import pexpect
31import logging
27 32
33logger = logging.getLogger()
34handler = logging.StreamHandler()
35formatter = logging.Formatter(
36 '%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
37handler.setFormatter(formatter)
38logger.addHandler(handler)
39logger.setLevel(logging.DEBUG)
28 40
29class Check: 41class Check(object):
30 def __init__(self, test): 42 def __init__(self, test):
31 self.fulfilled = False 43 self.fulfilled = False
32 self.conditions = list() 44 self.conditions = list()
@@ -55,7 +67,7 @@ class Check:
55 time.sleep(1) 67 time.sleep(1)
56 execs += 1 68 execs += 1
57 if ((False == res) and (execs >= timeout)): 69 if ((False == res) and (execs >= timeout)):
58 print(('Check had timeout after ' + str(timeout) + ' seconds')) 70 logger.debug('Check had timeout after %s seconds', str(timeout))
59 neg_cont(self) 71 neg_cont(self)
60 elif ((False == res) and (execs < timeout)): 72 elif ((False == res) and (execs < timeout)):
61 if (None != neg_cont): 73 if (None != neg_cont):
@@ -83,7 +95,7 @@ class Check:
83 neg += 1 95 neg += 1
84 else: 96 else:
85 pos += 1 97 pos += 1
86 print((str(pos) + ' out of ' + str(pos+neg) + ' conditions fulfilled')) 98 logger.debug('%s out of %s conditions fulfilled', str(pos), str(pos+neg))
87 return self.fulfilled 99 return self.fulfilled
88 100
89 def reset(self): 101 def reset(self):
@@ -92,7 +104,7 @@ class Check:
92 c.fulfilled = False 104 c.fulfilled = False
93 105
94 106
95class Condition: 107class Condition(object):
96 def __init__(self): 108 def __init__(self):
97 self.fulfilled = False 109 self.fulfilled = False
98 self.type = 'generic' 110 self.type = 'generic'
@@ -106,9 +118,9 @@ class Condition:
106 118
107 def evaluate(self, failed_only): 119 def evaluate(self, failed_only):
108 if ((self.fulfilled == False) and (failed_only == True)): 120 if ((self.fulfilled == False) and (failed_only == True)):
109 print(str(self.type) + 'condition for was ' + str(self.fulfilled)) 121 logger.debug('%s condition for was %s', str(self.type), str(self.fulfilled))
110 elif (failed_only == False): 122 elif (failed_only == False):
111 print(str(self.type) + 'condition for was ' + str(self.fulfilled)) 123 logger.debug('%s condition for was %s', str(self.type), str(self.fulfilled))
112 return self.fulfilled 124 return self.fulfilled
113 125
114 126
@@ -131,26 +143,26 @@ class FileExistCondition(Condition):
131 143
132 def evaluate(self, failed_only): 144 def evaluate(self, failed_only):
133 if ((self.fulfilled == False) and (failed_only == True)): 145 if ((self.fulfilled == False) and (failed_only == True)):
134 print(str(self.type) + 'condition for file '+self.file+' was ' + str(self.fulfilled)) 146 logger.debug('%s confition for file %s was %s', str(self.type), self.file, str(self.fulfilled))
135 elif (failed_only == False): 147 elif (failed_only == False):
136 print(str(self.type) + 'condition for file '+self.file+' was ' + str(self.fulfilled)) 148 logger.debug('%s confition for file %s was %s', str(self.type), self.file, str(self.fulfilled))
137 return self.fulfilled 149 return self.fulfilled
138 150
139 151
140class StatisticsCondition (Condition): 152class StatisticsCondition(Condition):
141 def __init__(self, peer, subsystem, name, value): 153 def __init__(self, peer, subsystem, name, value):
142 self.fulfilled = False 154 self.fulfilled = False
143 self.type = 'statistics' 155 self.type = 'statistics'
144 self.peer = peer 156 self.peer = peer
145 self.subsystem = subsystem 157 self.subsystem = subsystem
146 self.name = name 158 self.name = name
147 self.value = value 159 self.value = str(value)
148 self.result = -1 160 self.result = -1
149 161
150 def check(self): 162 def check(self):
151 if (self.fulfilled == False): 163 if (self.fulfilled == False):
152 self.result = self.peer.get_statistics_value(self.subsystem, self.name) 164 self.result = self.peer.get_statistics_value(self.subsystem, self.name)
153 if (str(self.result) == str(self.value)): 165 if (self.result == self.value):
154 self.fulfilled = True 166 self.fulfilled = True
155 return True 167 return True
156 else: 168 else:
@@ -159,10 +171,6 @@ class StatisticsCondition (Condition):
159 return True 171 return True
160 172
161 def evaluate(self, failed_only): 173 def evaluate(self, failed_only):
162 if (self.result == -1):
163 res = 'NaN'
164 else:
165 res = str(self.result)
166 if (self.fulfilled == False): 174 if (self.fulfilled == False):
167 fail = " FAIL!" 175 fail = " FAIL!"
168 op = " != " 176 op = " != "
@@ -170,12 +178,12 @@ class StatisticsCondition (Condition):
170 fail = "" 178 fail = ""
171 op = " == " 179 op = " == "
172 if (((self.fulfilled == False) and (failed_only == True)) or (failed_only == False)): 180 if (((self.fulfilled == False) and (failed_only == True)) or (failed_only == False)):
173 print(self.peer.id[:4] + " " + self.peer.cfg + " " + str(self.type) + ' condition in subsystem "' + self.subsystem.ljust(12) + '" : "' + self.name.ljust(30) + '" : (expected/real value) ' + str(self.value) + op + res + fail) 181 logger.debug('%s %s condition in subsystem %s: %s: (expected/real value) %s %s %s %s', self.peer.id[:4].decode("utf-8"), self.peer.cfg, self.subsystem.ljust(12), self.name.ljust(30), self.value, op, self.result, fail)
174 return self.fulfilled 182 return self.fulfilled
175 183
176 184
177# Specify two statistic values and check if they are equal 185# Specify two statistic values and check if they are equal
178class EqualStatisticsCondition (Condition): 186class EqualStatisticsCondition(Condition):
179 def __init__(self, peer, subsystem, name, peer2, subsystem2, name2): 187 def __init__(self, peer, subsystem, name, peer2, subsystem2, name2):
180 self.fulfilled = False 188 self.fulfilled = False
181 self.type = 'equalstatistics' 189 self.type = 'equalstatistics'
@@ -192,7 +200,7 @@ class EqualStatisticsCondition (Condition):
192 if (self.fulfilled == False): 200 if (self.fulfilled == False):
193 self.result = self.peer.get_statistics_value(self.subsystem, self.name) 201 self.result = self.peer.get_statistics_value(self.subsystem, self.name)
194 self.result2 = self.peer2.get_statistics_value(self.subsystem2, self.name2) 202 self.result2 = self.peer2.get_statistics_value(self.subsystem2, self.name2)
195 if (str(self.result) == str(self.result2)): 203 if (self.result == self.result2):
196 self.fulfilled = True 204 self.fulfilled = True
197 return True 205 return True
198 else: 206 else:
@@ -201,26 +209,12 @@ class EqualStatisticsCondition (Condition):
201 return True 209 return True
202 210
203 def evaluate(self, failed_only): 211 def evaluate(self, failed_only):
204 if (self.result == -1):
205 res = 'NaN'
206 else:
207 res = str(self.result)
208 if (self.result2 == -1):
209 res2 = 'NaN'
210 else:
211 res2 = str(self.result2)
212 if (self.fulfilled == False):
213 fail = " FAIL!"
214 op = " != "
215 else:
216 fail = ""
217 op = " == "
218 if (((self.fulfilled == False) and (failed_only == True)) or (failed_only == False)): 212 if (((self.fulfilled == False) and (failed_only == True)) or (failed_only == False)):
219 print(self.peer.id[:4] + ' "' + self.subsystem.ljust(12) + '" "' + self.name.ljust(30) + '" == ' + str(self.result) + " " + self.peer2.id[:4] + ' "' + self.subsystem2.ljust(12) + '" ' + self.name2.ljust(30) + '" ' + str(self.result2)) 213 logger.debug('%s %s %s == %s %s %s %s %s', self.peer.id[:4], self.subsystem.ljust(12), self.name.ljust(30), self.result, self.peer2.id[:4], self.subsystem2.ljust(12), self.name2.ljust(30), self.result2)
220 return self.fulfilled 214 return self.fulfilled
221 215
222 216
223class Test: 217class Test(object):
224 def __init__(self, testname, verbose): 218 def __init__(self, testname, verbose):
225 self.peers = list() 219 self.peers = list()
226 self.verbose = verbose 220 self.verbose = verbose
@@ -252,10 +246,11 @@ class Test:
252 print(msg) 246 print(msg)
253 247
254 248
255class Peer: 249class Peer(object):
256 def __init__(self, test, cfg_file): 250 def __init__(self, test, cfg_file):
257 if (False == os.path.isfile(cfg_file)): 251 if (False == os.path.isfile(cfg_file)):
258 print(("Peer cfg " + cfg_file + ": FILE NOT FOUND")) 252 # print(("Peer cfg " + cfg_file + ": FILE NOT FOUND"))
253 logger.debug('Peer cfg %s : FILE NOT FOUND', cfg_file)
259 self.id = "<NaN>" 254 self.id = "<NaN>"
260 self.test = test 255 self.test = test
261 self.started = False 256 self.started = False
@@ -263,22 +258,30 @@ class Peer:
263 258
264 def __del__(self): 259 def __del__(self):
265 if (self.started == True): 260 if (self.started == True):
266 print('ERROR! Peer using cfg ' + self.cfg + ' was not stopped') 261 # print('ERROR! Peer using cfg ' + self.cfg + ' was not stopped')
262 logger.debug('ERROR! Peer using cfg %s was not stopped', self.cfg)
267 ret = self.stop() 263 ret = self.stop()
268 if (False == ret): 264 if (False == ret):
269 print('ERROR! Peer using cfg ' + self.cfg + ' could not be stopped') 265 # print('ERROR! Peer using cfg ' +
266 # self.cfg +
267 # ' could not be stopped')
268 logger.debug('ERROR! Peer using cfg %s could not be stopped', self.cfg)
270 self.started = False 269 self.started = False
271 return ret 270 return ret
272 else: 271 else:
273 return False 272 return False
274 273
275 def start(self): 274 def start(self):
275 os.unsetenv ("XDG_CONFIG_HOME")
276 os.unsetenv ("XDG_DATA_HOME")
277 os.unsetenv ("XDG_CACHE_HOME")
276 self.test.p("Starting peer using cfg " + self.cfg) 278 self.test.p("Starting peer using cfg " + self.cfg)
277 try: 279 try:
278 server = subprocess.Popen([self.test.gnunetarm, '-sq', '-c', self.cfg]) 280 server = subprocess.Popen([self.test.gnunetarm, '-sq', '-c', self.cfg])
279 server.communicate() 281 server.communicate()
280 except OSError: 282 except OSError:
281 print("Can not start peer") 283 # print("Can not start peer")
284 logger.debug('Can not start peer')
282 self.started = False 285 self.started = False
283 return False 286 return False
284 self.started = True 287 self.started = True
@@ -288,9 +291,10 @@ class Peer:
288 server.spawn(None, [self.test.gnunetpeerinfo, '-c', self.cfg, '-s'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 291 server.spawn(None, [self.test.gnunetpeerinfo, '-c', self.cfg, '-s'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
289 test = server.read("stdout", 1024) 292 test = server.read("stdout", 1024)
290 except OSError: 293 except OSError:
291 print("Can not get peer identity") 294 # print("Can not get peer identity")
292 test = (test.split('`')[1]) 295 logger.debug('Can not get peer identity')
293 self.id = test.split('\'')[0] 296 test = (test.split(b'`')[1])
297 self.id = test.split(b'\'')[0]
294 return True 298 return True
295 299
296 def stop(self): 300 def stop(self):
@@ -301,7 +305,8 @@ class Peer:
301 server = subprocess.Popen([self.test.gnunetarm, '-eq', '-c', self.cfg]) 305 server = subprocess.Popen([self.test.gnunetarm, '-eq', '-c', self.cfg])
302 server.communicate() 306 server.communicate()
303 except OSError: 307 except OSError:
304 print("Can not stop peer") 308 # print("Can not stop peer")
309 logger.debug('Can not stop peer')
305 return False 310 return False
306 self.started = False 311 self.started = False
307 return True 312 return True
@@ -311,12 +316,15 @@ class Peer:
311 server.spawn(None, [self.test.gnunetstatistics, '-c', self.cfg, '-q', '-n', name, '-s', subsystem], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 316 server.spawn(None, [self.test.gnunetstatistics, '-c', self.cfg, '-q', '-n', name, '-s', subsystem], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
312 # server.expect ("stdout", re.compile (r"")) 317 # server.expect ("stdout", re.compile (r""))
313 test = server.read("stdout", 10240) 318 test = server.read("stdout", 10240)
314 tests = test.partition('\n') 319 tests = test.partition(b'\n')
315 # On W32 GNUnet outputs with \r\n, rather than \n 320 # On W32 GNUnet outputs with \r\n, rather than \n
316 if os.name == 'nt' and tests[1] == '\n' and tests[0][-1] == '\r': 321 if os.name == 'nt' and tests[1] == b'\n' and tests[0][-1] == b'\r':
317 tests = (tests[0][:-1], tests[1], tests[2]) 322 tests = (tests[0][:-1], tests[1], tests[2])
318 tests = tests[0] 323 tests = tests[0]
319 if (tests.isdigit() == True): 324 result = tests.decode("utf-8").strip()
320 return tests 325 logger.debug('running gnunet-statistics %s for %s "/" %s yields %s', self.cfg, name, subsystem, result)
326 if (result.isdigit() == True):
327 return result
321 else: 328 else:
329 logger.debug('Invalid statistics value: %s is not a number!', result)
322 return -1 330 return -1
diff --git a/src/integration-tests/test_integration_bootstrap_and_connect.py.in b/src/integration-tests/test_integration_bootstrap_and_connect.py.in
index 5bd938019..f0de1c0cd 100755
--- a/src/integration-tests/test_integration_bootstrap_and_connect.py.in
+++ b/src/integration-tests/test_integration_bootstrap_and_connect.py.in
@@ -11,13 +11,14 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
18# SPDX-License-Identifier: AGPL3.0-or-later 18# SPDX-License-Identifier: AGPL3.0-or-later
19# 19#
20# 20#
21from __future__ import print_function
21import signal 22import signal
22import sys 23import sys
23import os 24import os
diff --git a/src/integration-tests/test_integration_clique.py.in b/src/integration-tests/test_integration_clique.py.in
index 0444cf249..b5d6dd518 100755
--- a/src/integration-tests/test_integration_clique.py.in
+++ b/src/integration-tests/test_integration_clique.py.in
@@ -25,6 +25,7 @@
25# Conditions for successful exit: 25# Conditions for successful exit:
26# Both peers have 2 connected peers in transport, core, topology, fs and dht 26# Both peers have 2 connected peers in transport, core, topology, fs and dht
27 27
28from __future__ import print_function
28import sys 29import sys
29import signal 30import signal
30import os 31import os
diff --git a/src/integration-tests/test_integration_disconnect.py.in b/src/integration-tests/test_integration_disconnect.py.in
index f8b411778..a81c78540 100755
--- a/src/integration-tests/test_integration_disconnect.py.in
+++ b/src/integration-tests/test_integration_disconnect.py.in
@@ -11,13 +11,14 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
18# SPDX-License-Identifier: AGPL3.0-or-later 18# SPDX-License-Identifier: AGPL3.0-or-later
19# 19#
20# 20#
21from __future__ import print_function
21import sys 22import sys
22import signal 23import signal
23import os 24import os
@@ -29,8 +30,8 @@ from gnunet_testing import Peer
29from gnunet_testing import Test 30from gnunet_testing import Test
30from gnunet_testing import Check 31from gnunet_testing import Check
31from gnunet_testing import Condition 32from gnunet_testing import Condition
32from gnunet_testing import * 33from gnunet_testing import *
33 34
34 35
35# 36#
36# This test tests if a fresh peer bootstraps from a hostlist server and then 37# This test tests if a fresh peer bootstraps from a hostlist server and then
@@ -71,16 +72,16 @@ def cleanup ():
71 72
72def success_disconnect_cont (check): 73def success_disconnect_cont (check):
73 print('Peers disconnected successfully') 74 print('Peers disconnected successfully')
74 global success 75 global success
75 success = True; 76 success = True;
76 77
77 78
78def fail_disconnect_cont (check): 79def fail_disconnect_cont (check):
79 global success 80 global success
80 success = False; 81 success = False;
81 print('Peers failed to disconnect') 82 print('Peers failed to disconnect')
82 check.evaluate(True) 83 check.evaluate(True)
83 84
84def check_disconnect (): 85def check_disconnect ():
85 test.p ('Shutting down bootstrap server') 86 test.p ('Shutting down bootstrap server')
86 server.stop () 87 server.stop ()
@@ -98,8 +99,8 @@ def success_connect_cont (check):
98 check_disconnect () 99 check_disconnect ()
99 100
100 101
101def fail_connect_cont (check): 102def fail_connect_cont (check):
102 global success 103 global success
103 success= False 104 success= False
104 print('Peers failed to connected!') 105 print('Peers failed to connected!')
105 check.evaluate(True) 106 check.evaluate(True)
@@ -107,33 +108,33 @@ def fail_connect_cont (check):
107 108
108def check_connect (): 109def check_connect ():
109 check = Check (test) 110 check = Check (test)
111 check.add (StatisticsCondition (server, 'transport', '# peers connected',1))
112 check.add (StatisticsCondition (server, 'core', '# peers connected',1))
113 check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
114 check.add (StatisticsCondition (server, 'dht', '# peers connected',1))
115 check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
116
110 check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) 117 check.add (StatisticsCondition (client, 'transport', '# peers connected',1))
111 check.add (StatisticsCondition (client, 'core', '# peers connected',1)) 118 check.add (StatisticsCondition (client, 'core', '# peers connected',1))
112 check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) 119 check.add (StatisticsCondition (client, 'topology', '# peers connected',1))
113 check.add (StatisticsCondition (client, 'dht', '# peers connected',1)) 120 check.add (StatisticsCondition (client, 'dht', '# peers connected',1))
114 check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) 121 check.add (StatisticsCondition (client, 'fs', '# peers connected',1))
115 122
116 check.add (StatisticsCondition (server, 'transport', '# peers connected',1))
117 check.add (StatisticsCondition (server, 'core', '# peers connected',1))
118 check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
119 check.add (StatisticsCondition (server, 'dht', '# peers connected',1))
120 check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
121
122 check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) 123 check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont)
123 124
124# 125#
125# Test execution 126# Test execution
126# 127#
127 128
128def SigHandler(signum = None, frame = None): 129def SigHandler(signum = None, frame = None):
129 global success 130 global success
130 global server 131 global server
131 global client 132 global client
132 133
133 print('Test was aborted!') 134 print('Test was aborted!')
134 if (None != server): 135 if (None != server):
135 server.stop () 136 server.stop ()
136 if (None != client): 137 if (None != client):
137 client.stop () 138 client.stop ()
138 cleanup () 139 cleanup ()
139 sys.exit(success) 140 sys.exit(success)
@@ -142,67 +143,63 @@ def run ():
142 global success 143 global success
143 global test 144 global test
144 global server 145 global server
145 global client 146 global client
146 147
147 server = None 148 server = None
148 client = None 149 client = None
149 success = False 150 success = False
150 151
151 for sig in signals: 152 for sig in signals:
152 signal.signal(sig, SigHandler) 153 signal.signal(sig, SigHandler)
153 154
154 test = Test ('test_integration_bootstrap_and_connect.py', verbose) 155 test = Test ('test_integration_bootstrap_and_connect.py', verbose)
155 cleanup () 156 cleanup ()
156 157
157 server = Peer(test, './confs/c_bootstrap_server.conf'); 158 server = Peer(test, './confs/c_bootstrap_server.conf');
158 client = Peer(test, './confs/c_no_nat_client.conf'); 159 client = Peer(test, './confs/c_no_nat_client.conf');
159 160
160 if (True != server.start()): 161 if (True != server.start()):
161 print('Failed to start server') 162 print('Failed to start server')
162 if (None != server): 163 if (None != server):
163 server.stop () 164 server.stop ()
164 cleanup () 165 cleanup ()
165 sys.exit(success) 166 sys.exit(success)
166 167
167 # Give the server time to start 168 # Give the server time to start
168 time.sleep(5) 169 time.sleep(5)
169 170
170 if (True != client.start()): 171 if (True != client.start()):
171 print('Failed to start client') 172 print('Failed to start client')
172 if (None != server): 173 if (None != server):
173 server.stop () 174 server.stop ()
174 if (None != client): 175 if (None != client):
175 client.stop () 176 client.stop ()
176 cleanup () 177 cleanup ()
177 sys.exit(success) 178 sys.exit(success)
178 179
179 if ((client.started == True) and (server.started == True)): 180 if ((client.started == True) and (server.started == True)):
180 test.p ('Peers started, running check') 181 test.p ('Peers started, running check')
181 time.sleep(5) 182 time.sleep(5)
182 check_connect () 183 check_connect ()
183 server.stop () 184 server.stop ()
184 client.stop () 185 client.stop ()
185 186
186 cleanup () 187 cleanup ()
187 188
188 if (success == False): 189 if (success == False):
189 print ('Test failed') 190 print ('Test failed')
190 return False 191 return False
191 else: 192 else:
192 return True 193 return True
193 194
194try: 195try:
195 run () 196 run ()
196except (KeyboardInterrupt, SystemExit): 197except (KeyboardInterrupt, SystemExit):
197 print('Test interrupted') 198 print('Test interrupted')
198 server.stop () 199 server.stop ()
199 client.stop () 200 client.stop ()
200 cleanup () 201 cleanup ()
201if (success == False): 202if (success == False):
202 sys.exit(1) 203 sys.exit(1)
203else: 204else:
204 sys.exit(0) 205 sys.exit(0)
205
206
207
208
diff --git a/src/integration-tests/test_integration_disconnect_nat.py.in b/src/integration-tests/test_integration_disconnect_nat.py.in
index 885492741..601586f47 100755
--- a/src/integration-tests/test_integration_disconnect_nat.py.in
+++ b/src/integration-tests/test_integration_disconnect_nat.py.in
@@ -11,13 +11,14 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
18# SPDX-License-Identifier: AGPL3.0-or-later 18# SPDX-License-Identifier: AGPL3.0-or-later
19# 19#
20# 20#
21from __future__ import print_function
21import sys 22import sys
22import signal 23import signal
23import os 24import os
diff --git a/src/integration-tests/test_integration_reconnect.py.in b/src/integration-tests/test_integration_reconnect.py.in
index 13179eef6..e8abacd48 100755
--- a/src/integration-tests/test_integration_reconnect.py.in
+++ b/src/integration-tests/test_integration_reconnect.py.in
@@ -11,13 +11,14 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
18# SPDX-License-Identifier: AGPL3.0-or-later 18# SPDX-License-Identifier: AGPL3.0-or-later
19# 19#
20# 20#
21from __future__ import print_function
21import sys 22import sys
22import os 23import os
23import subprocess 24import subprocess
@@ -29,13 +30,13 @@ from gnunet_testing import Peer
29from gnunet_testing import Test 30from gnunet_testing import Test
30from gnunet_testing import Check 31from gnunet_testing import Check
31from gnunet_testing import Condition 32from gnunet_testing import Condition
32from gnunet_testing import * 33from gnunet_testing import *
33 34
34 35
35# 36#
36# This test tests if a fresh peer bootstraps from a hostlist server and then 37# This test tests if a fresh peer bootstraps from a hostlist server and then
37# successfully connects to the server. When both peers are connected 38# successfully connects to the server. When both peers are connected
38# in transport, core, topology, fs, botth peers are shutdown and restarted 39# in transport, core, topology, fs, botth peers are shutdown and restarted
39# 40#
40# Conditions for successful exit: 41# Conditions for successful exit:
41# Both peers have 1 connected peer in transport, core, topology, fs after restart 42# Both peers have 1 connected peer in transport, core, topology, fs after restart
@@ -67,68 +68,68 @@ def cleanup_onerror (function, path, excinfo):
67 68
68def cleanup (): 69def cleanup ():
69 retries = 10 70 retries = 10
70 path = os.path.join (tmp, "c_bootstrap_server") 71 path = os.path.join (tmp, "c_bootstrap_server")
71 test.p ("Removing " + path) 72 test.p ("Removing " + path)
72 while ((os.path.exists(path)) and (retries > 0)): 73 while ((os.path.exists(path)) and (retries > 0)):
73 shutil.rmtree ((path), False, cleanup_onerror) 74 shutil.rmtree ((path), False, cleanup_onerror)
74 time.sleep (1) 75 time.sleep (1)
75 retries -= 1 76 retries -= 1
76 if (os.path.exists(path)): 77 if (os.path.exists(path)):
77 test.p ("Failed to remove " + path) 78 test.p ("Failed to remove " + path)
78 79
79 80
80 retries = 10 81 retries = 10
81 path = os.path.join (tmp, "c_no_nat_client") 82 path = os.path.join (tmp, "c_no_nat_client")
82 test.p ("Removing " + path) 83 test.p ("Removing " + path)
83 while ((os.path.exists(path)) and (retries > 0)): 84 while ((os.path.exists(path)) and (retries > 0)):
84 shutil.rmtree ((path), False, cleanup_onerror) 85 shutil.rmtree ((path), False, cleanup_onerror)
85 time.sleep (1) 86 time.sleep (1)
86 retries -= 1 87 retries -= 1
87 if (os.path.exists(path)): 88 if (os.path.exists(path)):
88 test.p ("Failed to remove " + path) 89 test.p ("Failed to remove " + path)
89 90
90def success_restart_cont (check): 91def success_restart_cont (check):
91 global success 92 global success
92 print('Peers connected successfully after restart') 93 print('Peers connected successfully after restart')
93 server.stop () 94 server.stop ()
94 client.stop () 95 client.stop ()
95 success = True; 96 success = True;
96 97
97 98
98def fail_restart_cont (check): 99def fail_restart_cont (check):
99 global success 100 global success
100 success = False; 101 success = False;
101 print('Peers failed to connect after restart') 102 print('Peers failed to connect after restart')
102 check.evaluate(True) 103 check.evaluate(True)
103 104
104 105
105def success_connect_cont (check): 106def success_connect_cont (check):
106 print('Peers connected successfully') 107 print('Peers connected successfully')
107 server.stop () 108 server.stop ()
108 client.stop () 109 client.stop ()
109 110
110 time.sleep(5) 111 time.sleep(5)
111 112
112 test.p ('Restarting client & server') 113 test.p ('Restarting client & server')
113 server.start () 114 server.start ()
114 client.start () 115 client.start ()
115 116
116 check = Check (test) 117 check = Check (test)
117 check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) 118 check.add (StatisticsCondition (client, 'transport', '# peers connected',1))
118 check.add (StatisticsCondition (client, 'core', '# peers connected',1)) 119 check.add (StatisticsCondition (client, 'core', '# peers connected',1))
119 check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) 120 check.add (StatisticsCondition (client, 'topology', '# peers connected',1))
120 check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) 121 check.add (StatisticsCondition (client, 'fs', '# peers connected',1))
121 122
122 check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) 123 check.add (StatisticsCondition (server, 'transport', '# peers connected',1))
123 check.add (StatisticsCondition (server, 'core', '# peers connected',1)) 124 check.add (StatisticsCondition (server, 'core', '# peers connected',1))
124 check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) 125 check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
125 check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) 126 check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
126 127
127 check.run_blocking (check_timeout, success_restart_cont, fail_restart_cont) 128 check.run_blocking (check_timeout, success_restart_cont, fail_restart_cont)
128 129
129 130
130def fail_connect_cont (check): 131def fail_connect_cont (check):
131 global success 132 global success
132 success= False; 133 success= False;
133 print('Peers failed to connect') 134 print('Peers failed to connect')
134 check.evaluate(True) 135 check.evaluate(True)
@@ -140,28 +141,28 @@ def check_connect ():
140 check.add (StatisticsCondition (client, 'core', '# peers connected',1)) 141 check.add (StatisticsCondition (client, 'core', '# peers connected',1))
141 check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) 142 check.add (StatisticsCondition (client, 'topology', '# peers connected',1))
142 check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) 143 check.add (StatisticsCondition (client, 'fs', '# peers connected',1))
143 144
144 check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) 145 check.add (StatisticsCondition (server, 'transport', '# peers connected',1))
145 check.add (StatisticsCondition (server, 'core', '# peers connected',1)) 146 check.add (StatisticsCondition (server, 'core', '# peers connected',1))
146 check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) 147 check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
147 check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) 148 check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
148 149
149 check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) 150 check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont)
150 151
151# 152#
152# Test execution 153# Test execution
153# 154#
154 155
155 156
156def SigHandler(signum = None, frame = None): 157def SigHandler(signum = None, frame = None):
157 global success 158 global success
158 global server 159 global server
159 global client 160 global client
160 161
161 print('Test was aborted!') 162 print('Test was aborted!')
162 if (None != server): 163 if (None != server):
163 server.stop () 164 server.stop ()
164 if (None != client): 165 if (None != client):
165 client.stop () 166 client.stop ()
166 cleanup () 167 cleanup ()
167 sys.exit(success) 168 sys.exit(success)
@@ -171,68 +172,66 @@ def run ():
171 global test 172 global test
172 global server 173 global server
173 global client 174 global client
174 175
175 success = False 176 success = False
176 server = None 177 server = None
177 client = None 178 client = None
178 179
179 for sig in signals: 180 for sig in signals:
180 signal.signal(sig, SigHandler) 181 signal.signal(sig, SigHandler)
181 182
182 183
183 test = Test ('test_integration_disconnect', verbose) 184 test = Test ('test_integration_disconnect', verbose)
184 cleanup () 185 cleanup ()
185 server = Peer(test, './confs/c_bootstrap_server.conf'); 186 server = Peer(test, './confs/c_bootstrap_server.conf');
186 server.start(); 187 server.start();
187 188
188 client = Peer(test, './confs/c_no_nat_client.conf'); 189 client = Peer(test, './confs/c_no_nat_client.conf');
189 client.start(); 190 client.start();
190 191
191 192
192 if (True != server.start()): 193 if (True != server.start()):
193 print('Failed to start server') 194 print('Failed to start server')
194 if (None != server): 195 if (None != server):
195 server.stop () 196 server.stop ()
196 if (None != server): 197 if (None != server):
197 client.stop () 198 client.stop ()
198 cleanup () 199 cleanup ()
199 sys.exit(success) 200 sys.exit(success)
200 201
201 # Give the server time to start 202 # Give the server time to start
202 time.sleep(5) 203 time.sleep(5)
203 204
204 if (True != client.start()): 205 if (True != client.start()):
205 print('Failed to start client') 206 print('Failed to start client')
206 if (None != server): 207 if (None != server):
207 server.stop () 208 server.stop ()
208 if (None != server): 209 if (None != server):
209 client.stop () 210 client.stop ()
210 cleanup () 211 cleanup ()
211 sys.exit(success) 212 sys.exit(success)
212 213
213 check_connect () 214 check_connect ()
214 215
215 server.stop () 216 server.stop ()
216 client.stop () 217 client.stop ()
217 cleanup () 218 cleanup ()
218 219
219 if (success == False): 220 if (success == False):
220 print ('Test failed') 221 print ('Test failed')
221 return True 222 return True
222 else: 223 else:
223 return False 224 return False
224 225
225 226
226try: 227try:
227 run () 228 run ()
228except (KeyboardInterrupt, SystemExit): 229except (KeyboardInterrupt, SystemExit):
229 print('Test interrupted') 230 print('Test interrupted')
230 server.stop () 231 server.stop ()
231 client.stop () 232 client.stop ()
232 cleanup () 233 cleanup ()
233if (success == False): 234if (success == False):
234 sys.exit(1) 235 sys.exit(1)
235else: 236else:
236 sys.exit(0) 237 sys.exit(0)
237
238
diff --git a/src/integration-tests/test_integration_reconnect_nat.py.in b/src/integration-tests/test_integration_reconnect_nat.py.in
index d9714f875..61d2ea966 100755
--- a/src/integration-tests/test_integration_reconnect_nat.py.in
+++ b/src/integration-tests/test_integration_reconnect_nat.py.in
@@ -11,13 +11,14 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
18# SPDX-License-Identifier: AGPL3.0-or-later 18# SPDX-License-Identifier: AGPL3.0-or-later
19# 19#
20# 20#
21from __future__ import print_function
21import sys 22import sys
22import os 23import os
23import subprocess 24import subprocess
diff --git a/src/multicast/.gitignore b/src/multicast/.gitignore
deleted file mode 100644
index a97844e81..000000000
--- a/src/multicast/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
1gnunet-service-multicast
2gnunet-multicast
3test_multicast
4test_multicast_multipeer
5test_multicast_2peers
6test_multicast_multipeer_line
7test_multicast_multipeer_star
diff --git a/src/multicast/Makefile.am b/src/multicast/Makefile.am
deleted file mode 100644
index 61a9f8bf6..000000000
--- a/src/multicast/Makefile.am
+++ /dev/null
@@ -1,79 +0,0 @@
1# This Makefile.am is in the public domain
2AM_CPPFLAGS = -I$(top_srcdir)/src/include
3
4pkgcfgdir= $(pkgdatadir)/config.d/
5
6libexecdir= $(pkglibdir)/libexec/
7
8pkgcfg_DATA = \
9 multicast.conf
10
11if MINGW
12 WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
13endif
14
15if USE_COVERAGE
16 AM_CFLAGS = -fprofile-arcs -ftest-coverage
17endif
18
19lib_LTLIBRARIES = libgnunetmulticast.la
20
21libgnunetmulticast_la_SOURCES = \
22 multicast_api.c multicast.h
23libgnunetmulticast_la_LIBADD = \
24 $(top_builddir)/src/util/libgnunetutil.la \
25 $(GN_LIBINTL) $(XLIB)
26libgnunetmulticast_la_LDFLAGS = \
27 $(GN_LIB_LDFLAGS) $(WINFLAGS) \
28 -version-info 0:0:0
29
30
31bin_PROGRAMS = \
32 gnunet-multicast
33
34libexec_PROGRAMS = \
35 gnunet-service-multicast \
36 $(EXP_LIBEXEC)
37
38gnunet_multicast_SOURCES = \
39 gnunet-multicast.c
40gnunet_multicast_LDADD = \
41 $(top_builddir)/src/util/libgnunetutil.la \
42 $(GN_LIBINTL)
43
44gnunet_service_multicast_SOURCES = \
45 gnunet-service-multicast.c
46gnunet_service_multicast_LDADD = \
47 $(top_builddir)/src/util/libgnunetutil.la \
48 $(top_builddir)/src/cadet/libgnunetcadet.la \
49 $(top_builddir)/src/statistics/libgnunetstatistics.la \
50 $(GN_LIBINTL)
51
52check_PROGRAMS = \
53 test_multicast \
54 test_multicast_multipeer_star \
55 test_multicast_multipeer_line
56
57if ENABLE_TEST_RUN
58AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@}; export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH; unset XDG_DATA_HOME; unset XDG_CONFIG_HOME;
59TESTS = $(check_PROGRAMS)
60endif
61
62test_multicast_SOURCES = \
63 test_multicast.c
64test_multicast_LDADD = \
65 libgnunetmulticast.la \
66 $(top_builddir)/src/testing/libgnunettesting.la \
67 $(top_builddir)/src/util/libgnunetutil.la
68test_multicast_multipeer_star_SOURCES = \
69 test_multicast_multipeer.c
70test_multicast_multipeer_star_LDADD = \
71 libgnunetmulticast.la \
72 $(top_builddir)/src/testbed/libgnunettestbed.la \
73 $(top_builddir)/src/util/libgnunetutil.la
74test_multicast_multipeer_line_SOURCES = \
75 test_multicast_multipeer.c
76test_multicast_multipeer_line_LDADD = \
77 libgnunetmulticast.la \
78 $(top_builddir)/src/testbed/libgnunettestbed.la \
79 $(top_builddir)/src/util/libgnunetutil.la
diff --git a/src/multicast/gnunet-multicast.c b/src/multicast/gnunet-multicast.c
deleted file mode 100644
index 63e1d52aa..000000000
--- a/src/multicast/gnunet-multicast.c
+++ /dev/null
@@ -1,79 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @file multicast/gnunet-multicast.c
23 * @brief multicast for writing a tool
24 * @author Christian Grothoff
25 */
26#include "platform.h"
27#include "gnunet_util_lib.h"
28/* #include "gnunet_multicast_service.h" */
29
30/**
31 * Final status code.
32 */
33static int ret;
34
35/**
36 * Main function that will be run by the scheduler.
37 *
38 * @param cls closure
39 * @param args remaining command-line arguments
40 * @param cfgfile name of the configuration file used (for saving, can be NULL!)
41 * @param cfg configuration
42 */
43static void
44run (void *cls, char *const *args, const char *cfgfile,
45 const struct GNUNET_CONFIGURATION_Handle *cfg)
46{
47 /* main code here */
48 puts( gettext_noop ("This command doesn't do anything yet.") );
49 ret = -1;
50}
51
52
53/**
54 * The main function.
55 *
56 * @param argc number of arguments from the command line
57 * @param argv command line arguments
58 * @return 0 ok, 1 on error
59 */
60int
61main (int argc, char *const *argv)
62{
63 static const struct GNUNET_GETOPT_CommandLineOption options[] = {
64 /* FIMXE: add options here */
65 GNUNET_GETOPT_OPTION_END
66 };
67 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
68 return 2;
69
70 ret = (GNUNET_OK ==
71 GNUNET_PROGRAM_run (argc, argv, "gnunet-multicast",
72 gettext_noop ("This command doesn't do anything yet."),
73 options, &run,
74 NULL)) ? ret : 1;
75 GNUNET_free ((void*) argv);
76 return ret;
77}
78
79/* end of gnunet-multicast.c */
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c
deleted file mode 100644
index 18c366118..000000000
--- a/src/multicast/gnunet-service-multicast.c
+++ /dev/null
@@ -1,2234 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2009 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @file multicast/gnunet-service-multicast.c
23 * @brief program that does multicast
24 * @author Christian Grothoff
25 */
26#include "platform.h"
27#include "gnunet_util_lib.h"
28#include "gnunet_signatures.h"
29#include "gnunet_applications.h"
30#include "gnunet_statistics_service.h"
31#include "gnunet_cadet_service.h"
32#include "gnunet_multicast_service.h"
33#include "multicast.h"
34
35/**
36 * Handle to our current configuration.
37 */
38static const struct GNUNET_CONFIGURATION_Handle *cfg;
39
40/**
41 * Service handle.
42 */
43static struct GNUNET_SERVICE_Handle *service;
44
45/**
46 * CADET handle.
47 */
48static struct GNUNET_CADET_Handle *cadet;
49
50/**
51 * Identity of this peer.
52 */
53static struct GNUNET_PeerIdentity this_peer;
54
55/**
56 * Handle to the statistics service.
57 */
58static struct GNUNET_STATISTICS_Handle *stats;
59
60/**
61 * All connected origin clients.
62 * Group's pub_key_hash -> struct Origin * (uniq)
63 */
64static struct GNUNET_CONTAINER_MultiHashMap *origins;
65
66/**
67 * All connected member clients.
68 * Group's pub_key_hash -> struct Member * (multi)
69 */
70static struct GNUNET_CONTAINER_MultiHashMap *members;
71
72/**
73 * Connected member clients per group.
74 * Group's pub_key_hash -> Member's pub_key_hash (uniq) -> struct Member * (uniq)
75 */
76static struct GNUNET_CONTAINER_MultiHashMap *group_members;
77
78/**
79 * Incoming CADET channels with connected children in the tree.
80 * Group's pub_key_hash -> struct Channel * (multi)
81 */
82static struct GNUNET_CONTAINER_MultiHashMap *channels_in;
83
84/**
85 * Outgoing CADET channels connecting to parents in the tree.
86 * Group's pub_key_hash -> struct Channel * (multi)
87 */
88static struct GNUNET_CONTAINER_MultiHashMap *channels_out;
89
90/**
91 * Incoming replay requests from CADET.
92 * Group's pub_key_hash ->
93 * H(fragment_id, message_id, fragment_offset, flags) -> struct Channel *
94 */
95static struct GNUNET_CONTAINER_MultiHashMap *replay_req_cadet;
96
97/**
98 * Incoming replay requests from clients.
99 * Group's pub_key_hash ->
100 * H(fragment_id, message_id, fragment_offset, flags) -> struct GNUNET_SERVICE_Client *
101 */
102static struct GNUNET_CONTAINER_MultiHashMap *replay_req_client;
103
104
105/**
106 * Join status of a remote peer.
107 */
108enum JoinStatus
109{
110 JOIN_REFUSED = -1,
111 JOIN_NOT_ASKED = 0,
112 JOIN_WAITING = 1,
113 JOIN_ADMITTED = 2,
114};
115
116enum ChannelDirection
117{
118 DIR_INCOMING = 0,
119 DIR_OUTGOING = 1,
120};
121
122
123/**
124 * Context for a CADET channel.
125 */
126struct Channel
127{
128 /**
129 * Group the channel belongs to.
130 *
131 * Only set for outgoing channels.
132 */
133 struct Group *group;
134
135 /**
136 * CADET channel.
137 */
138 struct GNUNET_CADET_Channel *channel;
139
140 // FIXME: not used
141 /**
142 * CADET transmission handle.
143 */
144 struct GNUNET_CADET_TransmitHandle *tmit_handle;
145
146 /**
147 * Public key of the target group.
148 */
149 struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
150
151 /**
152 * Hash of @a group_pub_key.
153 */
154 struct GNUNET_HashCode group_pub_hash;
155
156 /**
157 * Public key of the joining member.
158 */
159 struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
160
161 /**
162 * Remote peer identity.
163 */
164 struct GNUNET_PeerIdentity peer;
165
166 /**
167 * Current window size, set by cadet_notify_window_change()
168 */
169 int32_t window_size;
170
171 /**
172 * Is the connection established?
173 */
174 int8_t is_connected;
175
176 /**
177 * Is the remote peer admitted to the group?
178 * @see enum JoinStatus
179 */
180 int8_t join_status;
181
182 /**
183 * Number of messages waiting to be sent to CADET.
184 */
185 uint8_t msgs_pending;
186
187 /**
188 * Channel direction.
189 * @see enum ChannelDirection
190 */
191 uint8_t direction;
192};
193
194
195/**
196 * List of connected clients.
197 */
198struct ClientList
199{
200 struct ClientList *prev;
201 struct ClientList *next;
202 struct GNUNET_SERVICE_Client *client;
203};
204
205
206/**
207 * Client context for an origin or member.
208 */
209struct Group
210{
211 struct ClientList *clients_head;
212 struct ClientList *clients_tail;
213
214 /**
215 * Public key of the group.
216 */
217 struct GNUNET_CRYPTO_EddsaPublicKey pub_key;
218
219 /**
220 * Hash of @a pub_key.
221 */
222 struct GNUNET_HashCode pub_key_hash;
223
224 /**
225 * CADET port hash.
226 */
227 struct GNUNET_HashCode cadet_port_hash;
228
229 /**
230 * Is the client disconnected? #GNUNET_YES or #GNUNET_NO
231 */
232 uint8_t is_disconnected;
233
234 /**
235 * Is this an origin (#GNUNET_YES), or member (#GNUNET_NO)?
236 */
237 uint8_t is_origin;
238
239 union {
240 struct Origin *origin;
241 struct Member *member;
242 };
243};
244
245
246/**
247* Client context for a group's origin.
248 */
249struct Origin
250{
251 struct Group group;
252
253 /**
254 * Private key of the group.
255 */
256 struct GNUNET_CRYPTO_EddsaPrivateKey priv_key;
257
258 /**
259 * CADET port.
260 */
261 struct GNUNET_CADET_Port *cadet_port;
262
263 /**
264 * Last message fragment ID sent to the group.
265 */
266 uint64_t max_fragment_id;
267};
268
269
270/**
271 * Client context for a group member.
272 */
273struct Member
274{
275 struct Group group;
276
277 /**
278 * Private key of the member.
279 */
280 struct GNUNET_CRYPTO_EcdsaPrivateKey priv_key;
281
282 /**
283 * Public key of the member.
284 */
285 struct GNUNET_CRYPTO_EcdsaPublicKey pub_key;
286
287 /**
288 * Hash of @a pub_key.
289 */
290 struct GNUNET_HashCode pub_key_hash;
291
292 /**
293 * Join request sent to the origin / members.
294 */
295 struct MulticastJoinRequestMessage *join_req;
296
297 /**
298 * Join decision sent in reply to our request.
299 *
300 * Only a positive decision is stored here, in case of a negative decision the
301 * client is disconnected.
302 */
303 struct MulticastJoinDecisionMessageHeader *join_dcsn;
304
305 /**
306 * CADET channel to the origin.
307 */
308 struct Channel *origin_channel;
309
310 /**
311 * Peer identity of origin.
312 */
313 struct GNUNET_PeerIdentity origin;
314
315 /**
316 * Peer identity of relays (other members to connect).
317 */
318 struct GNUNET_PeerIdentity *relays;
319
320 /**
321 * Last request fragment ID sent to the origin.
322 */
323 uint64_t max_fragment_id;
324
325 /**
326 * Number of @a relays.
327 */
328 uint32_t relay_count;
329};
330
331
332/**
333 * Client context.
334 */
335struct Client {
336 struct GNUNET_SERVICE_Client *client;
337 struct Group *group;
338};
339
340
341struct ReplayRequestKey
342{
343 uint64_t fragment_id;
344 uint64_t message_id;
345 uint64_t fragment_offset;
346 uint64_t flags;
347};
348
349
350static struct Channel *
351cadet_channel_create (struct Group *grp, struct GNUNET_PeerIdentity *peer);
352
353static void
354cadet_channel_destroy (struct Channel *chn);
355
356static void
357client_send_join_decision (struct Member *mem,
358 const struct MulticastJoinDecisionMessageHeader *hdcsn);
359
360
361/**
362 * Task run during shutdown.
363 *
364 * @param cls unused
365 */
366static void
367shutdown_task (void *cls)
368{
369 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
370 "shutting down\n");
371 if (NULL != cadet)
372 {
373 GNUNET_CADET_disconnect (cadet);
374 cadet = NULL;
375 }
376 if (NULL != stats)
377 {
378 GNUNET_STATISTICS_destroy (stats, GNUNET_YES);
379 stats = NULL;
380 }
381 /* FIXME: do more clean up here */
382}
383
384
385/**
386 * Clean up origin data structures after a client disconnected.
387 */
388static void
389cleanup_origin (struct Origin *orig)
390{
391 struct Group *grp = &orig->group;
392 GNUNET_CONTAINER_multihashmap_remove (origins, &grp->pub_key_hash, orig);
393 if (NULL != orig->cadet_port)
394 {
395 GNUNET_CADET_close_port (orig->cadet_port);
396 orig->cadet_port = NULL;
397 }
398 GNUNET_free (orig);
399}
400
401
402/**
403 * Clean up member data structures after a client disconnected.
404 */
405static void
406cleanup_member (struct Member *mem)
407{
408 struct Group *grp = &mem->group;
409 struct GNUNET_CONTAINER_MultiHashMap *
410 grp_mem = GNUNET_CONTAINER_multihashmap_get (group_members,
411 &grp->pub_key_hash);
412 GNUNET_assert (NULL != grp_mem);
413 GNUNET_CONTAINER_multihashmap_remove (grp_mem, &mem->pub_key_hash, mem);
414
415 if (0 == GNUNET_CONTAINER_multihashmap_size (grp_mem))
416 {
417 GNUNET_CONTAINER_multihashmap_remove (group_members, &grp->pub_key_hash,
418 grp_mem);
419 GNUNET_CONTAINER_multihashmap_destroy (grp_mem);
420 }
421 if (NULL != mem->join_dcsn)
422 {
423 GNUNET_free (mem->join_dcsn);
424 mem->join_dcsn = NULL;
425 }
426 if (NULL != mem->origin_channel)
427 {
428 GNUNET_CADET_channel_destroy (mem->origin_channel->channel);
429 mem->origin_channel = NULL;
430 }
431 GNUNET_CONTAINER_multihashmap_remove (members, &grp->pub_key_hash, mem);
432 GNUNET_free (mem);
433}
434
435
436/**
437 * Clean up group data structures after a client disconnected.
438 */
439static void
440cleanup_group (struct Group *grp)
441{
442 (GNUNET_YES == grp->is_origin)
443 ? cleanup_origin (grp->origin)
444 : cleanup_member (grp->member);
445}
446
447
448void
449replay_key_hash (uint64_t fragment_id, uint64_t message_id,
450 uint64_t fragment_offset, uint64_t flags,
451 struct GNUNET_HashCode *key_hash)
452{
453 struct ReplayRequestKey key = {
454 .fragment_id = fragment_id,
455 .message_id = message_id,
456 .fragment_offset = fragment_offset,
457 .flags = flags,
458 };
459 GNUNET_CRYPTO_hash (&key, sizeof (key), key_hash);
460}
461
462
463/**
464 * Remove channel from replay request hashmap.
465 *
466 * @param chn
467 * Channel to remove.
468 *
469 * @return #GNUNET_YES if there are more entries to process,
470 * #GNUNET_NO when reached end of hashmap.
471 */
472static int
473replay_req_remove_cadet (struct Channel *chn)
474{
475 if (NULL == chn || NULL == chn->group)
476 return GNUNET_SYSERR;
477
478 struct GNUNET_CONTAINER_MultiHashMap *
479 grp_replay_req = GNUNET_CONTAINER_multihashmap_get (replay_req_cadet,
480 &chn->group->pub_key_hash);
481 if (NULL == grp_replay_req)
482 return GNUNET_NO;
483
484 struct GNUNET_CONTAINER_MultiHashMapIterator *
485 it = GNUNET_CONTAINER_multihashmap_iterator_create (grp_replay_req);
486 struct GNUNET_HashCode key;
487 const struct Channel *c;
488 while (GNUNET_YES
489 == GNUNET_CONTAINER_multihashmap_iterator_next (it, &key,
490 (const void **) &c))
491 {
492 if (c == chn)
493 {
494 GNUNET_CONTAINER_multihashmap_remove (grp_replay_req, &key, chn);
495 GNUNET_CONTAINER_multihashmap_iterator_destroy (it);
496 return GNUNET_YES;
497 }
498 }
499 GNUNET_CONTAINER_multihashmap_iterator_destroy (it);
500 return GNUNET_NO;
501}
502
503
504/**
505 * Remove client from replay request hashmap.
506 *
507 * @param client
508 * Client to remove.
509 *
510 * @return #GNUNET_YES if there are more entries to process,
511 * #GNUNET_NO when reached end of hashmap.
512 */
513static int
514replay_req_remove_client (struct Group *grp, struct GNUNET_SERVICE_Client *client)
515{
516 struct GNUNET_CONTAINER_MultiHashMap *
517 grp_replay_req = GNUNET_CONTAINER_multihashmap_get (replay_req_client,
518 &grp->pub_key_hash);
519 if (NULL == grp_replay_req)
520 return GNUNET_NO;
521
522 struct GNUNET_CONTAINER_MultiHashMapIterator *
523 it = GNUNET_CONTAINER_multihashmap_iterator_create (grp_replay_req);
524 struct GNUNET_HashCode key;
525 const struct GNUNET_SERVICE_Client *c;
526 while (GNUNET_YES
527 == GNUNET_CONTAINER_multihashmap_iterator_next (it, &key,
528 (const void **) &c))
529 {
530 if (c == client)
531 {
532 GNUNET_CONTAINER_multihashmap_remove (grp_replay_req, &key, client);
533 GNUNET_CONTAINER_multihashmap_iterator_destroy (it);
534 return GNUNET_YES;
535 }
536 }
537 GNUNET_CONTAINER_multihashmap_iterator_destroy (it);
538 return GNUNET_NO;
539}
540
541
542/**
543 * Send message to a client.
544 */
545static void
546client_send (struct GNUNET_SERVICE_Client *client,
547 const struct GNUNET_MessageHeader *msg)
548{
549 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
550 "%p Sending message to client.\n", client);
551
552 struct GNUNET_MQ_Envelope *
553 env = GNUNET_MQ_msg_copy (msg);
554
555 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
556 env);
557}
558
559
560/**
561 * Send message to all clients connected to the group.
562 */
563static void
564client_send_group_keep_envelope (const struct Group *grp,
565 struct GNUNET_MQ_Envelope *env)
566{
567 struct ClientList *cli = grp->clients_head;
568
569 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
570 "%p Sending message to all clients of the group.\n",
571 grp);
572 while (NULL != cli)
573 {
574 GNUNET_MQ_send_copy (GNUNET_SERVICE_client_get_mq (cli->client),
575 env);
576 cli = cli->next;
577 }
578}
579
580
581/**
582 * Send message to all clients connected to the group and
583 * takes care of freeing @env.
584 */
585static void
586client_send_group (const struct Group *grp,
587 struct GNUNET_MQ_Envelope *env)
588{
589 client_send_group_keep_envelope (grp, env);
590 GNUNET_MQ_discard (env);
591}
592
593
594/**
595 * Iterator callback for sending a message to origin clients.
596 */
597static int
598client_send_origin_cb (void *cls, const struct GNUNET_HashCode *pub_key_hash,
599 void *origin)
600{
601 struct GNUNET_MQ_Envelope *env = cls;
602 struct Member *orig = origin;
603
604 client_send_group_keep_envelope (&orig->group, env);
605 return GNUNET_YES;
606}
607
608
609/**
610 * Iterator callback for sending a message to member clients.
611 */
612static int
613client_send_member_cb (void *cls, const struct GNUNET_HashCode *pub_key_hash,
614 void *member)
615{
616 struct GNUNET_MQ_Envelope *env = cls;
617 struct Member *mem = member;
618
619 if (NULL != mem->join_dcsn)
620 { /* Only send message to admitted members */
621 client_send_group_keep_envelope (&mem->group, env);
622 }
623 return GNUNET_YES;
624}
625
626
627/**
628 * Send message to all origin and member clients connected to the group.
629 *
630 * @param pub_key_hash
631 * H(key_pub) of the group.
632 * @param msg
633 * Message to send.
634 */
635static int
636client_send_all (struct GNUNET_HashCode *pub_key_hash,
637 struct GNUNET_MQ_Envelope *env)
638{
639 int n = 0;
640 n += GNUNET_CONTAINER_multihashmap_get_multiple (origins, pub_key_hash,
641 client_send_origin_cb,
642 (void *) env);
643 n += GNUNET_CONTAINER_multihashmap_get_multiple (members, pub_key_hash,
644 client_send_member_cb,
645 (void *) env);
646 GNUNET_MQ_discard (env);
647 return n;
648}
649
650
651/**
652 * Send message to a random origin client or a random member client.
653 *
654 * @param grp The group to send @a msg to.
655 * @param msg Message to send.
656 */
657static int
658client_send_random (struct GNUNET_HashCode *pub_key_hash,
659 struct GNUNET_MQ_Envelope *env)
660{
661 int n = 0;
662 n = GNUNET_CONTAINER_multihashmap_get_random (origins, client_send_origin_cb,
663 (void *) env);
664 if (n <= 0)
665 n = GNUNET_CONTAINER_multihashmap_get_random (members, client_send_member_cb,
666 (void *) env);
667 GNUNET_MQ_discard (env);
668 return n;
669}
670
671
672/**
673 * Send message to all origin clients connected to the group.
674 *
675 * @param pub_key_hash
676 * H(key_pub) of the group.
677 * @param msg
678 * Message to send.
679 */
680static int
681client_send_origin (struct GNUNET_HashCode *pub_key_hash,
682 struct GNUNET_MQ_Envelope *env)
683{
684 int n = 0;
685 n += GNUNET_CONTAINER_multihashmap_get_multiple (origins, pub_key_hash,
686 client_send_origin_cb,
687 (void *) env);
688 return n;
689}
690
691
692/**
693 * Send fragment acknowledgement to all clients of the channel.
694 *
695 * @param pub_key_hash
696 * H(key_pub) of the group.
697 */
698static void
699client_send_ack (struct GNUNET_HashCode *pub_key_hash)
700{
701 struct GNUNET_MQ_Envelope *env;
702
703 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
704 "Sending message ACK to client.\n");
705 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_FRAGMENT_ACK);
706 client_send_all (pub_key_hash, env);
707}
708
709
710struct CadetTransmitClosure
711{
712 struct Channel *chn;
713 const struct GNUNET_MessageHeader *msg;
714};
715
716
717/**
718 * Send a message to a CADET channel.
719 *
720 * @param chn Channel.
721 * @param msg Message.
722 */
723static void
724cadet_send_channel (struct Channel *chn, const struct GNUNET_MessageHeader *msg)
725{
726 struct GNUNET_MQ_Envelope *
727 env = GNUNET_MQ_msg_copy (msg);
728
729 GNUNET_MQ_send (GNUNET_CADET_get_mq (chn->channel), env);
730
731 if (0 < chn->window_size)
732 {
733 client_send_ack (&chn->group_pub_hash);
734 }
735 else
736 {
737 chn->msgs_pending++;
738 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
739 "%p Queuing message. Pending messages: %u\n",
740 chn, chn->msgs_pending);
741 }
742}
743
744
745/**
746 * Create CADET channel and send a join request.
747 */
748static void
749cadet_send_join_request (struct Member *mem)
750{
751 mem->origin_channel = cadet_channel_create (&mem->group, &mem->origin);
752 cadet_send_channel (mem->origin_channel, &mem->join_req->header);
753
754 uint32_t i;
755 for (i = 0; i < mem->relay_count; i++)
756 {
757 struct Channel *
758 chn = cadet_channel_create (&mem->group, &mem->relays[i]);
759 cadet_send_channel (chn, &mem->join_req->header);
760 }
761}
762
763
764static int
765cadet_send_join_decision_cb (void *cls,
766 const struct GNUNET_HashCode *group_pub_hash,
767 void *channel)
768{
769 const struct MulticastJoinDecisionMessageHeader *hdcsn = cls;
770 struct Channel *chn = channel;
771
772 const struct MulticastJoinDecisionMessage *dcsn =
773 (struct MulticastJoinDecisionMessage *) &hdcsn[1];
774
775 if (0 == memcmp (&hdcsn->member_pub_key, &chn->member_pub_key, sizeof (chn->member_pub_key))
776 && 0 == memcmp (&hdcsn->peer, &chn->peer, sizeof (chn->peer)))
777 {
778 if (GNUNET_YES == ntohl (dcsn->is_admitted))
779 {
780 chn->join_status = JOIN_ADMITTED;
781 }
782 else
783 {
784 chn->join_status = JOIN_REFUSED;
785 }
786 cadet_send_channel (chn, &hdcsn->header);
787 return GNUNET_YES;
788 }
789
790 // return GNUNET_YES to continue the multihashmap_get iteration
791 return GNUNET_YES;
792}
793
794
795/**
796 * Send join decision to a remote peer.
797 */
798static void
799cadet_send_join_decision (struct Group *grp,
800 const struct MulticastJoinDecisionMessageHeader *hdcsn)
801{
802 GNUNET_CONTAINER_multihashmap_get_multiple (channels_in, &grp->pub_key_hash,
803 &cadet_send_join_decision_cb,
804 (void *) hdcsn);
805}
806
807
808/**
809 * Iterator callback for sending a message to origin clients.
810 */
811static int
812cadet_send_cb (void *cls, const struct GNUNET_HashCode *pub_key_hash,
813 void *channel)
814{
815 const struct GNUNET_MessageHeader *msg = cls;
816 struct Channel *chn = channel;
817 if (JOIN_ADMITTED == chn->join_status)
818 cadet_send_channel (chn, msg);
819 return GNUNET_YES;
820}
821
822
823/**
824 * Send message to all connected children.
825 */
826static int
827cadet_send_children (struct GNUNET_HashCode *pub_key_hash,
828 const struct GNUNET_MessageHeader *msg)
829{
830 int n = 0;
831 if (channels_in != NULL)
832 n += GNUNET_CONTAINER_multihashmap_get_multiple (channels_in, pub_key_hash,
833 cadet_send_cb, (void *) msg);
834 return n;
835}
836
837
838#if 0 // unused as yet
839/**
840 * Send message to all connected parents.
841 */
842static int
843cadet_send_parents (struct GNUNET_HashCode *pub_key_hash,
844 const struct GNUNET_MessageHeader *msg)
845{
846 int n = 0;
847 if (channels_in != NULL)
848 n += GNUNET_CONTAINER_multihashmap_get_multiple (channels_out, pub_key_hash,
849 cadet_send_cb, (void *) msg);
850 return n;
851}
852#endif
853
854
855/**
856 * CADET channel connect handler.
857 *
858 * @see GNUNET_CADET_ConnectEventHandler()
859 */
860static void *
861cadet_notify_connect (void *cls,
862 struct GNUNET_CADET_Channel *channel,
863 const struct GNUNET_PeerIdentity *source)
864{
865 struct Channel *chn = GNUNET_malloc (sizeof (struct Channel));
866 chn->group = cls;
867 chn->channel = channel;
868 chn->direction = DIR_INCOMING;
869 chn->join_status = JOIN_NOT_ASKED;
870
871 GNUNET_CONTAINER_multihashmap_put (channels_in, &chn->group->pub_key_hash, chn,
872 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
873 return chn;
874}
875
876
877/**
878 * CADET window size change handler.
879 *
880 * @see GNUNET_CADET_WindowSizeEventHandler()
881 */
882static void
883cadet_notify_window_change (void *cls,
884 const struct GNUNET_CADET_Channel *channel,
885 int window_size)
886{
887 struct Channel *chn = cls;
888
889 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
890 "%p Window size changed to %d. Pending messages: %u\n",
891 chn, window_size, chn->msgs_pending);
892
893 chn->is_connected = GNUNET_YES;
894 chn->window_size = (int32_t) window_size;
895
896 for (int i = 0; i < window_size; i++)
897 {
898 if (0 < chn->msgs_pending)
899 {
900 client_send_ack (&chn->group_pub_hash);
901 chn->msgs_pending--;
902 }
903 else
904 {
905 break;
906 }
907 }
908}
909
910
911/**
912 * CADET channel disconnect handler.
913 *
914 * @see GNUNET_CADET_DisconnectEventHandler()
915 */
916static void
917cadet_notify_disconnect (void *cls,
918 const struct GNUNET_CADET_Channel *channel)
919{
920 if (NULL == cls)
921 return;
922
923 struct Channel *chn = cls;
924 if (NULL != chn->group)
925 {
926 if (GNUNET_NO == chn->group->is_origin)
927 {
928 struct Member *mem = (struct Member *) chn->group;
929 if (chn == mem->origin_channel)
930 mem->origin_channel = NULL;
931 }
932 }
933
934 int ret;
935 do
936 {
937 ret = replay_req_remove_cadet (chn);
938 }
939 while (GNUNET_YES == ret);
940
941 GNUNET_free (chn);
942}
943
944
945static int
946check_cadet_join_request (void *cls,
947 const struct MulticastJoinRequestMessage *req)
948{
949 struct Channel *chn = cls;
950
951 if (NULL == chn
952 || JOIN_NOT_ASKED != chn->join_status)
953 {
954 return GNUNET_SYSERR;
955 }
956
957 uint16_t size = ntohs (req->header.size);
958 if (size < sizeof (*req))
959 {
960 GNUNET_break_op (0);
961 return GNUNET_SYSERR;
962 }
963 if (ntohl (req->purpose.size) != (size
964 - sizeof (req->header)
965 - sizeof (req->reserved)
966 - sizeof (req->signature)))
967 {
968 GNUNET_break_op (0);
969 return GNUNET_SYSERR;
970 }
971 if (GNUNET_OK !=
972 GNUNET_CRYPTO_ecdsa_verify (GNUNET_SIGNATURE_PURPOSE_MULTICAST_REQUEST,
973 &req->purpose, &req->signature,
974 &req->member_pub_key))
975 {
976 GNUNET_break_op (0);
977 return GNUNET_SYSERR;
978 }
979
980 return GNUNET_OK;
981}
982
983
984/**
985 * Incoming join request message from CADET.
986 */
987static void
988handle_cadet_join_request (void *cls,
989 const struct MulticastJoinRequestMessage *req)
990{
991 struct Channel *chn = cls;
992 GNUNET_CADET_receive_done (chn->channel);
993
994 struct GNUNET_HashCode group_pub_hash;
995 GNUNET_CRYPTO_hash (&req->group_pub_key, sizeof (req->group_pub_key), &group_pub_hash);
996 chn->group_pub_key = req->group_pub_key;
997 chn->group_pub_hash = group_pub_hash;
998 chn->member_pub_key = req->member_pub_key;
999 chn->peer = req->peer;
1000 chn->join_status = JOIN_WAITING;
1001
1002 client_send_all (&group_pub_hash,
1003 GNUNET_MQ_msg_copy (&req->header));
1004}
1005
1006
1007static int
1008check_cadet_join_decision (void *cls,
1009 const struct MulticastJoinDecisionMessageHeader *hdcsn)
1010{
1011 uint16_t size = ntohs (hdcsn->header.size);
1012 if (size < sizeof (struct MulticastJoinDecisionMessageHeader) +
1013 sizeof (struct MulticastJoinDecisionMessage))
1014 {
1015 GNUNET_break_op (0);
1016 return GNUNET_SYSERR;
1017 }
1018
1019 struct Channel *chn = cls;
1020 if (NULL == chn)
1021 {
1022 GNUNET_break (0);
1023 return GNUNET_SYSERR;
1024 }
1025 if (NULL == chn->group || GNUNET_NO != chn->group->is_origin)
1026 {
1027 GNUNET_break (0);
1028 return GNUNET_SYSERR;
1029 }
1030 switch (chn->join_status)
1031 {
1032 case JOIN_REFUSED:
1033 return GNUNET_SYSERR;
1034
1035 case JOIN_ADMITTED:
1036 return GNUNET_OK;
1037
1038 case JOIN_NOT_ASKED:
1039 case JOIN_WAITING:
1040 break;
1041 }
1042
1043 return GNUNET_OK;
1044}
1045
1046
1047/**
1048 * Incoming join decision message from CADET.
1049 */
1050static void
1051handle_cadet_join_decision (void *cls,
1052 const struct MulticastJoinDecisionMessageHeader *hdcsn)
1053{
1054 const struct MulticastJoinDecisionMessage *
1055 dcsn = (const struct MulticastJoinDecisionMessage *) &hdcsn[1];
1056
1057 struct Channel *chn = cls;
1058 GNUNET_CADET_receive_done (chn->channel);
1059
1060 // FIXME: do we need to copy chn->peer or compare it with hdcsn->peer?
1061 struct Member *mem = (struct Member *) chn->group;
1062 client_send_join_decision (mem, hdcsn);
1063 if (GNUNET_YES == ntohl (dcsn->is_admitted))
1064 {
1065 chn->join_status = JOIN_ADMITTED;
1066 }
1067 else
1068 {
1069 chn->join_status = JOIN_REFUSED;
1070 cadet_channel_destroy (chn);
1071 }
1072}
1073
1074
1075static int
1076check_cadet_message (void *cls,
1077 const struct GNUNET_MULTICAST_MessageHeader *msg)
1078{
1079 uint16_t size = ntohs (msg->header.size);
1080 if (size < sizeof (*msg))
1081 {
1082 GNUNET_break_op (0);
1083 return GNUNET_SYSERR;
1084 }
1085
1086 struct Channel *chn = cls;
1087 if (NULL == chn)
1088 {
1089 GNUNET_break (0);
1090 return GNUNET_SYSERR;
1091 }
1092 if (ntohl (msg->purpose.size) != (size
1093 - sizeof (msg->header)
1094 - sizeof (msg->hop_counter)
1095 - sizeof (msg->signature)))
1096 {
1097 GNUNET_break_op (0);
1098 return GNUNET_SYSERR;
1099 }
1100 if (GNUNET_OK !=
1101 GNUNET_CRYPTO_eddsa_verify (GNUNET_SIGNATURE_PURPOSE_MULTICAST_MESSAGE,
1102 &msg->purpose, &msg->signature,
1103 &chn->group_pub_key))
1104 {
1105 GNUNET_break_op (0);
1106 return GNUNET_SYSERR;
1107 }
1108
1109 return GNUNET_OK;
1110}
1111
1112
1113/**
1114 * Incoming multicast message from CADET.
1115 */
1116static void
1117handle_cadet_message (void *cls,
1118 const struct GNUNET_MULTICAST_MessageHeader *msg)
1119{
1120 struct Channel *chn = cls;
1121 GNUNET_CADET_receive_done (chn->channel);
1122 client_send_all (&chn->group_pub_hash,
1123 GNUNET_MQ_msg_copy (&msg->header));
1124}
1125
1126
1127static int
1128check_cadet_request (void *cls,
1129 const struct GNUNET_MULTICAST_RequestHeader *req)
1130{
1131 uint16_t size = ntohs (req->header.size);
1132 if (size < sizeof (*req))
1133 {
1134 GNUNET_break_op (0);
1135 return GNUNET_SYSERR;
1136 }
1137
1138 struct Channel *chn = cls;
1139 if (NULL == chn)
1140 {
1141 GNUNET_break (0);
1142 return GNUNET_SYSERR;
1143 }
1144 if (ntohl (req->purpose.size) != (size
1145 - sizeof (req->header)
1146 - sizeof (req->member_pub_key)
1147 - sizeof (req->signature)))
1148 {
1149 GNUNET_break_op (0);
1150 return GNUNET_SYSERR;
1151 }
1152 if (GNUNET_OK !=
1153 GNUNET_CRYPTO_ecdsa_verify (GNUNET_SIGNATURE_PURPOSE_MULTICAST_REQUEST,
1154 &req->purpose, &req->signature,
1155 &req->member_pub_key))
1156 {
1157 GNUNET_break_op (0);
1158 return GNUNET_SYSERR;
1159 }
1160
1161 return GNUNET_OK;
1162}
1163
1164
1165/**
1166 * Incoming multicast request message from CADET.
1167 */
1168static void
1169handle_cadet_request (void *cls,
1170 const struct GNUNET_MULTICAST_RequestHeader *req)
1171{
1172 struct Channel *chn = cls;
1173 GNUNET_CADET_receive_done (chn->channel);
1174 client_send_origin (&chn->group_pub_hash,
1175 GNUNET_MQ_msg_copy (&req->header));
1176}
1177
1178
1179// FIXME: do checks in handle_cadet_replay_request
1180//static int
1181//check_cadet_replay_request (void *cls,
1182// const struct MulticastReplayRequestMessage *req)
1183//{
1184// uint16_t size = ntohs (req->header.size);
1185// if (size < sizeof (*req))
1186// {
1187// GNUNET_break_op (0);
1188// return GNUNET_SYSERR;
1189// }
1190//
1191// struct Channel *chn = cls;
1192// if (NULL == chn)
1193// {
1194// GNUNET_break_op (0);
1195// return GNUNET_SYSERR;
1196// }
1197//
1198// return GNUNET_OK;
1199//}
1200
1201
1202/**
1203 * Incoming multicast replay request from CADET.
1204 */
1205static void
1206handle_cadet_replay_request (void *cls,
1207 const struct MulticastReplayRequestMessage *req)
1208{
1209 struct Channel *chn = cls;
1210
1211 GNUNET_CADET_receive_done (chn->channel);
1212
1213 struct MulticastReplayRequestMessage rep = *req;
1214 GNUNET_memcpy (&rep.member_pub_key, &chn->member_pub_key, sizeof (chn->member_pub_key));
1215
1216 struct GNUNET_CONTAINER_MultiHashMap *
1217 grp_replay_req = GNUNET_CONTAINER_multihashmap_get (replay_req_cadet,
1218 &chn->group->pub_key_hash);
1219 if (NULL == grp_replay_req)
1220 {
1221 grp_replay_req = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
1222 GNUNET_CONTAINER_multihashmap_put (replay_req_cadet,
1223 &chn->group->pub_key_hash, grp_replay_req,
1224 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1225 }
1226 struct GNUNET_HashCode key_hash;
1227 replay_key_hash (rep.fragment_id,
1228 rep.message_id,
1229 rep.fragment_offset,
1230 rep.flags,
1231 &key_hash);
1232 GNUNET_CONTAINER_multihashmap_put (grp_replay_req, &key_hash, chn,
1233 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1234
1235 client_send_random (&chn->group_pub_hash,
1236 GNUNET_MQ_msg_copy (&rep.header));
1237}
1238
1239
1240static int
1241check_cadet_replay_response (void *cls,
1242 const struct MulticastReplayResponseMessage *res)
1243{
1244 struct Channel *chn = cls;
1245 if (NULL == chn)
1246 {
1247 GNUNET_break (0);
1248 return GNUNET_SYSERR;
1249 }
1250 return GNUNET_OK;
1251}
1252
1253
1254/**
1255 * Incoming multicast replay response from CADET.
1256 */
1257static void
1258handle_cadet_replay_response (void *cls,
1259 const struct MulticastReplayResponseMessage *res)
1260{
1261 struct Channel *chn = cls;
1262 GNUNET_CADET_receive_done (chn->channel);
1263
1264 /* @todo FIXME: got replay error response, send request to other members */
1265}
1266
1267
1268static void
1269group_set_cadet_port_hash (struct Group *grp)
1270{
1271 struct CadetPort {
1272 struct GNUNET_CRYPTO_EddsaPublicKey pub_key;
1273 uint32_t app_type;
1274 } port = {
1275 grp->pub_key,
1276 GNUNET_APPLICATION_TYPE_MULTICAST,
1277 };
1278 GNUNET_CRYPTO_hash (&port, sizeof (port), &grp->cadet_port_hash);
1279}
1280
1281
1282
1283/**
1284 * Create new outgoing CADET channel.
1285 *
1286 * @param peer
1287 * Peer to connect to.
1288 * @param group_pub_key
1289 * Public key of group the channel belongs to.
1290 * @param group_pub_hash
1291 * Hash of @a group_pub_key.
1292 *
1293 * @return Channel.
1294 */
1295static struct Channel *
1296cadet_channel_create (struct Group *grp, struct GNUNET_PeerIdentity *peer)
1297{
1298 struct Channel *chn = GNUNET_malloc (sizeof (*chn));
1299 chn->group = grp;
1300 chn->group_pub_key = grp->pub_key;
1301 chn->group_pub_hash = grp->pub_key_hash;
1302 chn->peer = *peer;
1303 chn->direction = DIR_OUTGOING;
1304 chn->is_connected = GNUNET_NO;
1305 chn->join_status = JOIN_WAITING;
1306
1307 struct GNUNET_MQ_MessageHandler cadet_handlers[] = {
1308 GNUNET_MQ_hd_var_size (cadet_message,
1309 GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE,
1310 struct GNUNET_MULTICAST_MessageHeader,
1311 chn),
1312
1313 GNUNET_MQ_hd_var_size (cadet_join_decision,
1314 GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION,
1315 struct MulticastJoinDecisionMessageHeader,
1316 chn),
1317
1318 GNUNET_MQ_hd_fixed_size (cadet_replay_request,
1319 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST,
1320 struct MulticastReplayRequestMessage,
1321 chn),
1322
1323 GNUNET_MQ_hd_var_size (cadet_replay_response,
1324 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE,
1325 struct MulticastReplayResponseMessage,
1326 chn),
1327
1328 GNUNET_MQ_handler_end ()
1329 };
1330
1331 chn->channel = GNUNET_CADET_channel_create (cadet, chn, &chn->peer,
1332 &grp->cadet_port_hash,
1333 GNUNET_CADET_OPTION_RELIABLE,
1334 cadet_notify_window_change,
1335 cadet_notify_disconnect,
1336 cadet_handlers);
1337 GNUNET_CONTAINER_multihashmap_put (channels_out, &chn->group_pub_hash, chn,
1338 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1339 return chn;
1340}
1341
1342
1343/**
1344 * Destroy outgoing CADET channel.
1345 */
1346static void
1347cadet_channel_destroy (struct Channel *chn)
1348{
1349 GNUNET_CADET_channel_destroy (chn->channel);
1350 GNUNET_CONTAINER_multihashmap_remove_all (channels_out, &chn->group_pub_hash);
1351 GNUNET_free (chn);
1352}
1353
1354/**
1355 * Handle a connecting client starting an origin.
1356 */
1357static void
1358handle_client_origin_start (void *cls,
1359 const struct MulticastOriginStartMessage *msg)
1360{
1361 struct Client *c = cls;
1362 struct GNUNET_SERVICE_Client *client = c->client;
1363
1364 struct GNUNET_CRYPTO_EddsaPublicKey pub_key;
1365 struct GNUNET_HashCode pub_key_hash;
1366
1367 GNUNET_CRYPTO_eddsa_key_get_public (&msg->group_key, &pub_key);
1368 GNUNET_CRYPTO_hash (&pub_key, sizeof (pub_key), &pub_key_hash);
1369
1370 struct Origin *
1371 orig = GNUNET_CONTAINER_multihashmap_get (origins, &pub_key_hash);
1372 struct Group *grp;
1373
1374 if (NULL == orig)
1375 {
1376 orig = GNUNET_new (struct Origin);
1377 orig->priv_key = msg->group_key;
1378 orig->max_fragment_id = GNUNET_ntohll (msg->max_fragment_id);
1379
1380 grp = c->group = &orig->group;
1381 grp->origin = orig;
1382 grp->is_origin = GNUNET_YES;
1383 grp->pub_key = pub_key;
1384 grp->pub_key_hash = pub_key_hash;
1385 grp->is_disconnected = GNUNET_NO;
1386
1387 GNUNET_CONTAINER_multihashmap_put (origins, &grp->pub_key_hash, orig,
1388 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1389
1390 group_set_cadet_port_hash (grp);
1391
1392 struct GNUNET_MQ_MessageHandler cadet_handlers[] = {
1393 GNUNET_MQ_hd_var_size (cadet_message,
1394 GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE,
1395 struct GNUNET_MULTICAST_MessageHeader,
1396 grp),
1397
1398 GNUNET_MQ_hd_var_size (cadet_request,
1399 GNUNET_MESSAGE_TYPE_MULTICAST_REQUEST,
1400 struct GNUNET_MULTICAST_RequestHeader,
1401 grp),
1402
1403 GNUNET_MQ_hd_var_size (cadet_join_request,
1404 GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST,
1405 struct MulticastJoinRequestMessage,
1406 grp),
1407
1408 GNUNET_MQ_hd_fixed_size (cadet_replay_request,
1409 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST,
1410 struct MulticastReplayRequestMessage,
1411 grp),
1412
1413 GNUNET_MQ_hd_var_size (cadet_replay_response,
1414 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE,
1415 struct MulticastReplayResponseMessage,
1416 grp),
1417
1418 GNUNET_MQ_handler_end ()
1419 };
1420
1421
1422 orig->cadet_port = GNUNET_CADET_open_port (cadet,
1423 &grp->cadet_port_hash,
1424 cadet_notify_connect,
1425 grp,
1426 cadet_notify_window_change,
1427 cadet_notify_disconnect,
1428 cadet_handlers);
1429 }
1430 else
1431 {
1432 grp = &orig->group;
1433 }
1434
1435 struct ClientList *cl = GNUNET_new (struct ClientList);
1436 cl->client = client;
1437 GNUNET_CONTAINER_DLL_insert (grp->clients_head, grp->clients_tail, cl);
1438
1439 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1440 "%p Client connected as origin to group %s.\n",
1441 orig, GNUNET_h2s (&grp->pub_key_hash));
1442 GNUNET_SERVICE_client_continue (client);
1443}
1444
1445
1446static int
1447check_client_member_join (void *cls,
1448 const struct MulticastMemberJoinMessage *msg)
1449{
1450 uint16_t msg_size = ntohs (msg->header.size);
1451 struct GNUNET_PeerIdentity *relays = (struct GNUNET_PeerIdentity *) &msg[1];
1452 uint32_t relay_count = ntohl (msg->relay_count);
1453
1454 if (0 != relay_count)
1455 {
1456 if (UINT32_MAX / relay_count < sizeof (*relays)){
1457 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1458 "relay_count (%lu) * sizeof (*relays) (%lu) exceeds UINT32_MAX!\n",
1459 (unsigned long)relay_count,
1460 sizeof (*relays));
1461 return GNUNET_SYSERR;
1462 }
1463 }
1464 uint32_t relay_size = relay_count * sizeof (*relays);
1465 struct GNUNET_MessageHeader *join_msg = NULL;
1466 uint16_t join_msg_size = 0;
1467 if (sizeof (*msg) + relay_size + sizeof (struct GNUNET_MessageHeader)
1468 <= msg_size)
1469 {
1470 join_msg = (struct GNUNET_MessageHeader *)
1471 (((char *) &msg[1]) + relay_size);
1472 join_msg_size = ntohs (join_msg->size);
1473 if (UINT16_MAX - join_msg_size < sizeof (struct MulticastJoinRequestMessage)){
1474 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1475 "join_msg_size (%u) + sizeof (struct MulticastJoinRequestMessage) (%lu) exceeds UINT16_MAX!\n",
1476 (unsigned)join_msg_size,
1477 (unsigned long)sizeof (struct MulticastJoinRequestMessage));
1478 return GNUNET_SYSERR;
1479 }
1480 }
1481 if (msg_size != (sizeof (*msg) + relay_size + join_msg_size)){
1482 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1483 "msg_size does not match real size of message!\n");
1484 return GNUNET_SYSERR;
1485 }else{
1486 return GNUNET_OK;
1487 }
1488}
1489
1490
1491/**
1492 * Handle a connecting client joining a group.
1493 */
1494static void
1495handle_client_member_join (void *cls,
1496 const struct MulticastMemberJoinMessage *msg)
1497{
1498 struct Client *c = cls;
1499 struct GNUNET_SERVICE_Client *client = c->client;
1500
1501 uint16_t msg_size = ntohs (msg->header.size);
1502
1503 struct GNUNET_CRYPTO_EcdsaPublicKey mem_pub_key;
1504 struct GNUNET_HashCode pub_key_hash, mem_pub_key_hash;
1505
1506 GNUNET_CRYPTO_ecdsa_key_get_public (&msg->member_key, &mem_pub_key);
1507 GNUNET_CRYPTO_hash (&mem_pub_key, sizeof (mem_pub_key), &mem_pub_key_hash);
1508 GNUNET_CRYPTO_hash (&msg->group_pub_key, sizeof (msg->group_pub_key), &pub_key_hash);
1509
1510 struct GNUNET_CONTAINER_MultiHashMap *
1511 grp_mem = GNUNET_CONTAINER_multihashmap_get (group_members, &pub_key_hash);
1512 struct Member *mem = NULL;
1513 struct Group *grp;
1514
1515 if (NULL != grp_mem)
1516 {
1517 mem = GNUNET_CONTAINER_multihashmap_get (grp_mem, &mem_pub_key_hash);
1518 }
1519
1520 if (NULL == mem)
1521 {
1522 mem = GNUNET_new (struct Member);
1523 mem->origin = msg->origin;
1524 mem->priv_key = msg->member_key;
1525 mem->pub_key = mem_pub_key;
1526 mem->pub_key_hash = mem_pub_key_hash;
1527 mem->max_fragment_id = 0; // FIXME
1528
1529 grp = c->group = &mem->group;
1530 grp->member = mem;
1531 grp->is_origin = GNUNET_NO;
1532 grp->pub_key = msg->group_pub_key;
1533 grp->pub_key_hash = pub_key_hash;
1534 grp->is_disconnected = GNUNET_NO;
1535 group_set_cadet_port_hash (grp);
1536
1537 if (NULL == grp_mem)
1538 {
1539 grp_mem = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
1540 GNUNET_CONTAINER_multihashmap_put (group_members, &grp->pub_key_hash, grp_mem,
1541 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1542 }
1543 GNUNET_CONTAINER_multihashmap_put (grp_mem, &mem->pub_key_hash, mem,
1544 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1545
1546 // FIXME: should the members hash map have option UNIQUE_FAST?
1547 GNUNET_CONTAINER_multihashmap_put (members, &grp->pub_key_hash, mem,
1548 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1549 }
1550 else
1551 {
1552 grp = &mem->group;
1553 }
1554
1555 struct ClientList *cl = GNUNET_new (struct ClientList);
1556 cl->client = client;
1557 GNUNET_CONTAINER_DLL_insert (grp->clients_head, grp->clients_tail, cl);
1558
1559 char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&mem->pub_key);
1560 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1561 "Client connected to group %s as member %s (%s). size = %d\n",
1562 GNUNET_h2s (&grp->pub_key_hash),
1563 GNUNET_h2s2 (&mem->pub_key_hash),
1564 str,
1565 GNUNET_CONTAINER_multihashmap_size (members));
1566 GNUNET_free (str);
1567
1568 if (NULL != mem->join_dcsn)
1569 { /* Already got a join decision, send it to client. */
1570 struct GNUNET_MQ_Envelope *
1571 env = GNUNET_MQ_msg_copy (&mem->join_dcsn->header);
1572
1573 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1574 env);
1575 }
1576 else
1577 { /* First client of the group, send join request. */
1578 struct GNUNET_PeerIdentity *relays = (struct GNUNET_PeerIdentity *) &msg[1];
1579 uint32_t relay_count = ntohl (msg->relay_count);
1580 uint16_t relay_size = relay_count * sizeof (*relays);
1581 struct GNUNET_MessageHeader *join_msg = NULL;
1582 uint16_t join_msg_size = 0;
1583 if (sizeof (*msg) + relay_size + sizeof (struct GNUNET_MessageHeader)
1584 <= msg_size)
1585 {
1586 join_msg = (struct GNUNET_MessageHeader *)
1587 (((char *) &msg[1]) + relay_size);
1588 join_msg_size = ntohs (join_msg->size);
1589 }
1590
1591 uint16_t req_msg_size = sizeof (struct MulticastJoinRequestMessage) + join_msg_size;
1592 struct MulticastJoinRequestMessage *
1593 req = GNUNET_malloc (req_msg_size);
1594 req->header.size = htons (req_msg_size);
1595 req->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST);
1596 req->group_pub_key = grp->pub_key;
1597 req->peer = this_peer;
1598 GNUNET_CRYPTO_ecdsa_key_get_public (&mem->priv_key, &req->member_pub_key);
1599 if (0 < join_msg_size)
1600 GNUNET_memcpy (&req[1], join_msg, join_msg_size);
1601
1602 req->member_pub_key = mem->pub_key;
1603 req->purpose.size = htonl (req_msg_size
1604 - sizeof (req->header)
1605 - sizeof (req->reserved)
1606 - sizeof (req->signature));
1607 req->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_MULTICAST_REQUEST);
1608
1609 if (GNUNET_OK != GNUNET_CRYPTO_ecdsa_sign (&mem->priv_key, &req->purpose,
1610 &req->signature))
1611 {
1612 /* FIXME: handle error */
1613 GNUNET_assert (0);
1614 }
1615
1616 if (NULL != mem->join_req)
1617 GNUNET_free (mem->join_req);
1618 mem->join_req = req;
1619
1620 if (0 ==
1621 client_send_origin (&grp->pub_key_hash,
1622 GNUNET_MQ_msg_copy (&mem->join_req->header)))
1623 { /* No local origins, send to remote origin */
1624 cadet_send_join_request (mem);
1625 }
1626 }
1627 GNUNET_SERVICE_client_continue (client);
1628}
1629
1630
1631static void
1632client_send_join_decision (struct Member *mem,
1633 const struct MulticastJoinDecisionMessageHeader *hdcsn)
1634{
1635 client_send_group (&mem->group, GNUNET_MQ_msg_copy (&hdcsn->header));
1636
1637 const struct MulticastJoinDecisionMessage *
1638 dcsn = (const struct MulticastJoinDecisionMessage *) &hdcsn[1];
1639 if (GNUNET_YES == ntohl (dcsn->is_admitted))
1640 { /* Member admitted, store join_decision. */
1641 uint16_t dcsn_size = ntohs (dcsn->header.size);
1642 mem->join_dcsn = GNUNET_malloc (dcsn_size);
1643 GNUNET_memcpy (mem->join_dcsn, dcsn, dcsn_size);
1644 }
1645 else
1646 { /* Refused entry, but replay would be still possible for past members. */
1647 }
1648}
1649
1650
1651static int
1652check_client_join_decision (void *cls,
1653 const struct MulticastJoinDecisionMessageHeader *hdcsn)
1654{
1655 return GNUNET_OK;
1656}
1657
1658
1659/**
1660 * Join decision from client.
1661 */
1662static void
1663handle_client_join_decision (void *cls,
1664 const struct MulticastJoinDecisionMessageHeader *hdcsn)
1665{
1666 struct Client *c = cls;
1667 struct GNUNET_SERVICE_Client *client = c->client;
1668 struct Group *grp = c->group;
1669
1670 if (NULL == grp)
1671 {
1672 GNUNET_break (0);
1673 GNUNET_SERVICE_client_drop (client);
1674 return;
1675 }
1676 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1677 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1678 "%p got join decision from client for group %s..\n",
1679 grp, GNUNET_h2s (&grp->pub_key_hash));
1680
1681 struct GNUNET_CONTAINER_MultiHashMap *
1682 grp_mem = GNUNET_CONTAINER_multihashmap_get (group_members,
1683 &grp->pub_key_hash);
1684 struct Member *mem = NULL;
1685 if (NULL != grp_mem)
1686 {
1687 struct GNUNET_HashCode member_key_hash;
1688 GNUNET_CRYPTO_hash (&hdcsn->member_pub_key, sizeof (hdcsn->member_pub_key),
1689 &member_key_hash);
1690 mem = GNUNET_CONTAINER_multihashmap_get (grp_mem, &member_key_hash);
1691 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1692 "%p ..and member %s: %p\n",
1693 grp, GNUNET_h2s (&member_key_hash), mem);
1694 }
1695
1696 if (NULL != mem)
1697 { /* Found local member */
1698 client_send_join_decision (mem, hdcsn);
1699 }
1700 else
1701 { /* Look for remote member */
1702 cadet_send_join_decision (grp, hdcsn);
1703 }
1704 GNUNET_SERVICE_client_continue (client);
1705}
1706
1707
1708static void
1709handle_client_part_request (void *cls,
1710 const struct GNUNET_MessageHeader *msg)
1711{
1712 struct Client *c = cls;
1713 struct GNUNET_SERVICE_Client *client = c->client;
1714 struct Group *grp = c->group;
1715 struct GNUNET_MQ_Envelope *env;
1716
1717 if (NULL == grp)
1718 {
1719 GNUNET_break (0);
1720 GNUNET_SERVICE_client_drop (client);
1721 return;
1722 }
1723 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1724 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1725 "%p got part request from client for group %s.\n",
1726 grp, GNUNET_h2s (&grp->pub_key_hash));
1727 grp->is_disconnected = GNUNET_YES;
1728 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK);
1729 client_send_group (grp, env);
1730 GNUNET_SERVICE_client_continue (client);
1731}
1732
1733
1734static int
1735check_client_multicast_message (void *cls,
1736 const struct GNUNET_MULTICAST_MessageHeader *msg)
1737{
1738 return GNUNET_OK;
1739}
1740
1741
1742/**
1743 * Incoming message from a client.
1744 */
1745static void
1746handle_client_multicast_message (void *cls,
1747 const struct GNUNET_MULTICAST_MessageHeader *msg)
1748{
1749 // FIXME: what if GNUNET_YES == grp->is_disconnected? Do we allow sending messages?
1750 struct Client *c = cls;
1751 struct GNUNET_SERVICE_Client *client = c->client;
1752 struct Group *grp = c->group;
1753
1754 if (NULL == grp)
1755 {
1756 GNUNET_break (0);
1757 GNUNET_SERVICE_client_drop (client);
1758 return;
1759 }
1760 GNUNET_assert (GNUNET_YES == grp->is_origin);
1761 struct Origin *orig = grp->origin;
1762
1763 // FIXME: use GNUNET_MQ_msg_copy
1764 /* FIXME: yucky, should use separate message structs for P2P and CS! */
1765 struct GNUNET_MULTICAST_MessageHeader *
1766 out = (struct GNUNET_MULTICAST_MessageHeader *) GNUNET_copy_message (&msg->header);
1767 out->fragment_id = GNUNET_htonll (++orig->max_fragment_id);
1768 out->purpose.size = htonl (ntohs (out->header.size)
1769 - sizeof (out->header)
1770 - sizeof (out->hop_counter)
1771 - sizeof (out->signature));
1772 out->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_MULTICAST_MESSAGE);
1773
1774 if (GNUNET_OK != GNUNET_CRYPTO_eddsa_sign (&orig->priv_key, &out->purpose,
1775 &out->signature))
1776 {
1777 GNUNET_assert (0);
1778 }
1779
1780 client_send_all (&grp->pub_key_hash, GNUNET_MQ_msg_copy (&out->header));
1781 cadet_send_children (&grp->pub_key_hash, &out->header);
1782 client_send_ack (&grp->pub_key_hash);
1783 GNUNET_free (out);
1784
1785 GNUNET_SERVICE_client_continue (client);
1786}
1787
1788
1789static int
1790check_client_multicast_request (void *cls,
1791 const struct GNUNET_MULTICAST_RequestHeader *req)
1792{
1793 return GNUNET_OK;
1794}
1795
1796
1797/**
1798 * Incoming request from a client.
1799 */
1800static void
1801handle_client_multicast_request (void *cls,
1802 const struct GNUNET_MULTICAST_RequestHeader *req)
1803{
1804 struct Client *c = cls;
1805 struct GNUNET_SERVICE_Client *client = c->client;
1806 struct Group *grp = c->group;
1807
1808 if (NULL == grp)
1809 {
1810 GNUNET_break (0);
1811 GNUNET_SERVICE_client_drop (client);
1812 return;
1813 }
1814 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1815 GNUNET_assert (GNUNET_NO == grp->is_origin);
1816 struct Member *mem = grp->member;
1817
1818 /* FIXME: yucky, should use separate message structs for P2P and CS! */
1819 struct GNUNET_MULTICAST_RequestHeader *
1820 out = (struct GNUNET_MULTICAST_RequestHeader *) GNUNET_copy_message (&req->header);
1821 out->member_pub_key = mem->pub_key;
1822 out->fragment_id = GNUNET_ntohll (++mem->max_fragment_id);
1823 out->purpose.size = htonl (ntohs (out->header.size)
1824 - sizeof (out->header)
1825 - sizeof (out->member_pub_key)
1826 - sizeof (out->signature));
1827 out->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_MULTICAST_REQUEST);
1828
1829 if (GNUNET_OK != GNUNET_CRYPTO_ecdsa_sign (&mem->priv_key, &out->purpose,
1830 &out->signature))
1831 {
1832 GNUNET_assert (0);
1833 }
1834
1835 uint8_t send_ack = GNUNET_YES;
1836 if (0 ==
1837 client_send_origin (&grp->pub_key_hash,
1838 GNUNET_MQ_msg_copy (&out->header)))
1839 { /* No local origins, send to remote origin */
1840 if (NULL != mem->origin_channel)
1841 {
1842 cadet_send_channel (mem->origin_channel, &out->header);
1843 send_ack = GNUNET_NO;
1844 }
1845 else
1846 {
1847 /* FIXME: not yet connected to origin */
1848 GNUNET_SERVICE_client_drop (client);
1849 GNUNET_free (out);
1850 return;
1851 }
1852 }
1853 if (GNUNET_YES == send_ack)
1854 {
1855 client_send_ack (&grp->pub_key_hash);
1856 }
1857 GNUNET_free (out);
1858 GNUNET_SERVICE_client_continue (client);
1859}
1860
1861
1862/**
1863 * Incoming replay request from a client.
1864 */
1865static void
1866handle_client_replay_request (void *cls,
1867 const struct MulticastReplayRequestMessage *rep)
1868{
1869 struct Client *c = cls;
1870 struct GNUNET_SERVICE_Client *client = c->client;
1871 struct Group *grp = c->group;
1872
1873 if (NULL == grp)
1874 {
1875 GNUNET_break (0);
1876 GNUNET_SERVICE_client_drop (client);
1877 return;
1878 }
1879 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1880 GNUNET_assert (GNUNET_NO == grp->is_origin);
1881 struct Member *mem = grp->member;
1882
1883 struct GNUNET_CONTAINER_MultiHashMap *
1884 grp_replay_req = GNUNET_CONTAINER_multihashmap_get (replay_req_client,
1885 &grp->pub_key_hash);
1886 if (NULL == grp_replay_req)
1887 {
1888 grp_replay_req = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
1889 GNUNET_CONTAINER_multihashmap_put (replay_req_client,
1890 &grp->pub_key_hash, grp_replay_req,
1891 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1892 }
1893
1894 struct GNUNET_HashCode key_hash;
1895 replay_key_hash (rep->fragment_id, rep->message_id, rep->fragment_offset,
1896 rep->flags, &key_hash);
1897 GNUNET_CONTAINER_multihashmap_put (grp_replay_req, &key_hash, client,
1898 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1899
1900 if (0 ==
1901 client_send_origin (&grp->pub_key_hash,
1902 GNUNET_MQ_msg_copy (&rep->header)))
1903 { /* No local origin, replay from remote members / origin. */
1904 if (NULL != mem->origin_channel)
1905 {
1906 cadet_send_channel (mem->origin_channel, &rep->header);
1907 }
1908 else
1909 {
1910 /* FIXME: not yet connected to origin */
1911
1912 GNUNET_assert (0);
1913 GNUNET_SERVICE_client_drop (client);
1914 return;
1915 }
1916 }
1917 GNUNET_SERVICE_client_continue (client);
1918}
1919
1920
1921static int
1922cadet_send_replay_response_cb (void *cls,
1923 const struct GNUNET_HashCode *key_hash,
1924 void *value)
1925{
1926 struct Channel *chn = value;
1927 struct GNUNET_MessageHeader *msg = cls;
1928
1929 cadet_send_channel (chn, msg);
1930 return GNUNET_OK;
1931}
1932
1933
1934static int
1935client_send_replay_response_cb (void *cls,
1936 const struct GNUNET_HashCode *key_hash,
1937 void *value)
1938{
1939 struct GNUNET_SERVICE_Client *client = value;
1940 struct GNUNET_MessageHeader *msg = cls;
1941
1942 client_send (client, msg);
1943 return GNUNET_OK;
1944}
1945
1946
1947static int
1948check_client_replay_response_end (void *cls,
1949 const struct MulticastReplayResponseMessage *res)
1950{
1951 return GNUNET_OK;
1952}
1953
1954
1955/**
1956 * End of replay response from a client.
1957 */
1958static void
1959handle_client_replay_response_end (void *cls,
1960 const struct MulticastReplayResponseMessage *res)
1961{
1962 struct Client *c = cls;
1963 struct GNUNET_SERVICE_Client *client = c->client;
1964 struct Group *grp = c->group;
1965
1966 if (NULL == grp)
1967 {
1968 GNUNET_break (0);
1969 GNUNET_SERVICE_client_drop (client);
1970 return;
1971 }
1972 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
1973
1974 struct GNUNET_HashCode key_hash;
1975 replay_key_hash (res->fragment_id, res->message_id, res->fragment_offset,
1976 res->flags, &key_hash);
1977
1978 struct GNUNET_CONTAINER_MultiHashMap *
1979 grp_replay_req_cadet = GNUNET_CONTAINER_multihashmap_get (replay_req_cadet,
1980 &grp->pub_key_hash);
1981 if (NULL != grp_replay_req_cadet)
1982 {
1983 GNUNET_CONTAINER_multihashmap_remove_all (grp_replay_req_cadet, &key_hash);
1984 }
1985 struct GNUNET_CONTAINER_MultiHashMap *
1986 grp_replay_req_client = GNUNET_CONTAINER_multihashmap_get (replay_req_client,
1987 &grp->pub_key_hash);
1988 if (NULL != grp_replay_req_client)
1989 {
1990 GNUNET_CONTAINER_multihashmap_remove_all (grp_replay_req_client, &key_hash);
1991 }
1992 GNUNET_SERVICE_client_continue (client);
1993}
1994
1995
1996static int
1997check_client_replay_response (void *cls,
1998 const struct MulticastReplayResponseMessage *res)
1999{
2000 const struct GNUNET_MessageHeader *msg;
2001 if (GNUNET_MULTICAST_REC_OK == res->error_code)
2002 {
2003 msg = GNUNET_MQ_extract_nested_mh (res);
2004 if (NULL == msg)
2005 {
2006 return GNUNET_SYSERR;
2007 }
2008 }
2009 return GNUNET_OK;
2010}
2011
2012
2013/**
2014 * Incoming replay response from a client.
2015 *
2016 * Respond with a multicast message on success, or otherwise with an error code.
2017 */
2018static void
2019handle_client_replay_response (void *cls,
2020 const struct MulticastReplayResponseMessage *res)
2021{
2022 struct Client *c = cls;
2023 struct GNUNET_SERVICE_Client *client = c->client;
2024 struct Group *grp = c->group;
2025
2026 if (NULL == grp)
2027 {
2028 GNUNET_break (0);
2029 GNUNET_SERVICE_client_drop (client);
2030 return;
2031 }
2032 GNUNET_assert (GNUNET_NO == grp->is_disconnected);
2033
2034 const struct GNUNET_MessageHeader *msg = &res->header;
2035 if (GNUNET_MULTICAST_REC_OK == res->error_code)
2036 {
2037 msg = GNUNET_MQ_extract_nested_mh (res);
2038 }
2039
2040 struct GNUNET_HashCode key_hash;
2041 replay_key_hash (res->fragment_id, res->message_id, res->fragment_offset,
2042 res->flags, &key_hash);
2043
2044 struct GNUNET_CONTAINER_MultiHashMap *
2045 grp_replay_req_cadet = GNUNET_CONTAINER_multihashmap_get (replay_req_cadet,
2046 &grp->pub_key_hash);
2047 if (NULL != grp_replay_req_cadet)
2048 {
2049 GNUNET_CONTAINER_multihashmap_get_multiple (grp_replay_req_cadet, &key_hash,
2050 cadet_send_replay_response_cb,
2051 (void *) msg);
2052 }
2053 if (GNUNET_MULTICAST_REC_OK == res->error_code)
2054 {
2055 struct GNUNET_CONTAINER_MultiHashMap *
2056 grp_replay_req_client = GNUNET_CONTAINER_multihashmap_get (replay_req_client,
2057 &grp->pub_key_hash);
2058 if (NULL != grp_replay_req_client)
2059 {
2060 GNUNET_CONTAINER_multihashmap_get_multiple (grp_replay_req_client, &key_hash,
2061 client_send_replay_response_cb,
2062 (void *) msg);
2063 }
2064 }
2065 else
2066 {
2067 handle_client_replay_response_end (c, res);
2068 return;
2069 }
2070 GNUNET_SERVICE_client_continue (client);
2071}
2072
2073
2074/**
2075 * A new client connected.
2076 *
2077 * @param cls NULL
2078 * @param client client to add
2079 * @param mq message queue for @a client
2080 * @return @a client
2081 */
2082static void *
2083client_notify_connect (void *cls,
2084 struct GNUNET_SERVICE_Client *client,
2085 struct GNUNET_MQ_Handle *mq)
2086{
2087 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Client connected: %p\n", client);
2088 /* FIXME: send connect ACK */
2089
2090 struct Client *c = GNUNET_new (struct Client);
2091 c->client = client;
2092
2093 return c;
2094}
2095
2096
2097/**
2098 * Called whenever a client is disconnected.
2099 * Frees our resources associated with that client.
2100 *
2101 * @param cls closure
2102 * @param client identification of the client
2103 * @param app_ctx must match @a client
2104 */
2105static void
2106client_notify_disconnect (void *cls,
2107 struct GNUNET_SERVICE_Client *client,
2108 void *app_ctx)
2109{
2110 struct Client *c = app_ctx;
2111 struct Group *grp = c->group;
2112 GNUNET_free (c);
2113
2114 if (NULL == grp)
2115 {
2116 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2117 "%p User context is NULL in client_disconnect()\n", grp);
2118 GNUNET_break (0);
2119 return;
2120 }
2121
2122 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2123 "%p Client (%s) disconnected from group %s\n",
2124 grp, (GNUNET_YES == grp->is_origin) ? "origin" : "member",
2125 GNUNET_h2s (&grp->pub_key_hash));
2126
2127 // FIXME (due to protocol change): here we must not remove all clients,
2128 // only the one we were notified about!
2129 struct ClientList *cl = grp->clients_head;
2130 while (NULL != cl)
2131 {
2132 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2133 "iterating clients for group %p\n",
2134 grp);
2135 if (cl->client == client)
2136 {
2137 GNUNET_CONTAINER_DLL_remove (grp->clients_head, grp->clients_tail, cl);
2138 GNUNET_free (cl);
2139 break;
2140 }
2141 cl = cl->next;
2142 }
2143
2144 while (GNUNET_YES == replay_req_remove_client (grp, client));
2145
2146 if (NULL == grp->clients_head)
2147 { /* Last client disconnected. */
2148 cleanup_group (grp);
2149 }
2150}
2151
2152
2153/**
2154 * Service started.
2155 *
2156 * @param cls closure
2157 * @param server the initialized server
2158 * @param cfg configuration to use
2159 */
2160static void
2161run (void *cls,
2162 const struct GNUNET_CONFIGURATION_Handle *c,
2163 struct GNUNET_SERVICE_Handle *svc)
2164{
2165 cfg = c;
2166 service = svc;
2167 GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer);
2168
2169 stats = GNUNET_STATISTICS_create ("multicast", cfg);
2170 origins = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
2171 members = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
2172 group_members = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
2173 channels_in = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
2174 channels_out = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
2175 replay_req_cadet = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
2176 replay_req_client = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
2177
2178 cadet = GNUNET_CADET_connect (cfg);
2179
2180 GNUNET_assert (NULL != cadet);
2181
2182 GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
2183 NULL);
2184}
2185
2186
2187/**
2188 * Define "main" method using service macro.
2189 */
2190GNUNET_SERVICE_MAIN
2191("multicast",
2192 GNUNET_SERVICE_OPTION_NONE,
2193 &run,
2194 &client_notify_connect,
2195 &client_notify_disconnect,
2196 NULL,
2197 GNUNET_MQ_hd_fixed_size (client_origin_start,
2198 GNUNET_MESSAGE_TYPE_MULTICAST_ORIGIN_START,
2199 struct MulticastOriginStartMessage,
2200 NULL),
2201 GNUNET_MQ_hd_var_size (client_member_join,
2202 GNUNET_MESSAGE_TYPE_MULTICAST_MEMBER_JOIN,
2203 struct MulticastMemberJoinMessage,
2204 NULL),
2205 GNUNET_MQ_hd_var_size (client_join_decision,
2206 GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION,
2207 struct MulticastJoinDecisionMessageHeader,
2208 NULL),
2209 GNUNET_MQ_hd_fixed_size (client_part_request,
2210 GNUNET_MESSAGE_TYPE_MULTICAST_PART_REQUEST,
2211 struct GNUNET_MessageHeader,
2212 NULL),
2213 GNUNET_MQ_hd_var_size (client_multicast_message,
2214 GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE,
2215 struct GNUNET_MULTICAST_MessageHeader,
2216 NULL),
2217 GNUNET_MQ_hd_var_size (client_multicast_request,
2218 GNUNET_MESSAGE_TYPE_MULTICAST_REQUEST,
2219 struct GNUNET_MULTICAST_RequestHeader,
2220 NULL),
2221 GNUNET_MQ_hd_fixed_size (client_replay_request,
2222 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST,
2223 struct MulticastReplayRequestMessage,
2224 NULL),
2225 GNUNET_MQ_hd_var_size (client_replay_response,
2226 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE,
2227 struct MulticastReplayResponseMessage,
2228 NULL),
2229 GNUNET_MQ_hd_var_size (client_replay_response_end,
2230 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE_END,
2231 struct MulticastReplayResponseMessage,
2232 NULL));
2233
2234/* end of gnunet-service-multicast.c */
diff --git a/src/multicast/multicast.conf.in b/src/multicast/multicast.conf.in
deleted file mode 100644
index 97a541336..000000000
--- a/src/multicast/multicast.conf.in
+++ /dev/null
@@ -1,22 +0,0 @@
1[multicast]
2START_ON_DEMAND = @START_ON_DEMAND@
3BINARY = gnunet-service-multicast
4
5UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-multicast.sock
6UNIX_MATCH_UID = YES
7UNIX_MATCH_GID = YES
8
9@UNIXONLY@PORT = 2109
10HOSTNAME = localhost
11ACCEPT_FROM = 127.0.0.1;
12ACCEPT_FROM6 = ::1;
13
14# DISABLE_SOCKET_FORWARDING = NO
15# USERNAME =
16# MAXBUF =
17# TIMEOUT =
18# DISABLEV6 =
19# BINDTO =
20# REJECT_FROM =
21# REJECT_FROM6 =
22# PREFIX =
diff --git a/src/multicast/multicast.h b/src/multicast/multicast.h
deleted file mode 100644
index 8a3ca14c8..000000000
--- a/src/multicast/multicast.h
+++ /dev/null
@@ -1,303 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2012, 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @file multicast/multicast.h
23 * @brief multicast IPC messages
24 * @author Christian Grothoff
25 * @author Gabor X Toth
26 */
27#ifndef MULTICAST_H
28#define MULTICAST_H
29
30#include "platform.h"
31#include "gnunet_multicast_service.h"
32
33GNUNET_NETWORK_STRUCT_BEGIN
34
35
36/**
37 * Header of a join request sent to the origin or another member.
38 */
39struct MulticastJoinRequestMessage
40{
41 /**
42 * Type: GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST
43 */
44 struct GNUNET_MessageHeader header;
45
46 /**
47 * Always zero.
48 */
49 uint32_t reserved;
50
51 /**
52 * ECC signature of the rest of the fields of the join request.
53 *
54 * Signature must match the public key of the joining member.
55 */
56 struct GNUNET_CRYPTO_EcdsaSignature signature;
57
58 /**
59 * Purpose for the signature and size of the signed data.
60 */
61 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
62
63 /**
64 * Public key of the target group.
65 */
66 struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
67
68 /**
69 * Public key of the joining member.
70 */
71 struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
72
73 /**
74 * Peer identity of the joining member.
75 */
76 struct GNUNET_PeerIdentity peer;
77
78 /* Followed by struct GNUNET_MessageHeader join_message */
79};
80
81
82/**
83 * Header of a join decision message sent to a peer requesting join.
84 */
85struct MulticastJoinDecisionMessage
86{
87 /**
88 * Type: GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION
89 */
90 struct GNUNET_MessageHeader header;
91
92 /**
93 * #GNUNET_YES if the peer was admitted
94 * #GNUNET_NO if entry was refused,
95 * #GNUNET_SYSERR if the request could not be answered.
96 */
97 int32_t is_admitted;
98
99 /**
100 * Number of relays given.
101 */
102 uint32_t relay_count;
103
104 /* Followed by relay_count peer identities */
105
106 /* Followed by the join response message */
107};
108
109
110/**
111 * Header added to a struct MulticastJoinDecisionMessage
112 * when sent between the client and service.
113 */
114struct MulticastJoinDecisionMessageHeader
115{
116 /**
117 * Type: GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION
118 */
119 struct GNUNET_MessageHeader header;
120
121 /**
122 * C->S: Peer to send the join decision to.
123 * S->C: Peer we received the join decision from.
124 */
125 struct GNUNET_PeerIdentity peer;
126
127 /**
128 * C->S: Public key of the member requesting join.
129 * S->C: Unused.
130 */
131 struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
132
133 /* Followed by struct MulticastJoinDecisionMessage */
134};
135
136
137/**
138 * Message sent from the client to the service to notify the service
139 * about the result of a membership test.
140 */
141struct MulticastMembershipTestResultMessage
142{
143 /**
144 * Type: GNUNET_MESSAGE_TYPE_MULTICAST_MEMBERSHIP_TEST_RESULT
145 */
146 struct GNUNET_MessageHeader header;
147
148 /**
149 * Unique ID that identifies the associated membership test.
150 */
151 uint32_t uid;
152
153 /**
154 * #GNUNET_YES if the peer is a member
155 * #GNUNET_NO if peer is not a member,
156 * #GNUNET_SYSERR if the test could not be answered.
157 */
158 int32_t is_admitted;
159};
160
161
162/**
163 * Message sent from the client to the service OR the service to the
164 * client asking for a message fragment to be replayed.
165 */
166struct MulticastReplayRequestMessage
167{
168
169 /**
170 * The message type should be
171 * #GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST.
172 */
173 struct GNUNET_MessageHeader header;
174
175 /**
176 * S->C: Public key of the member requesting replay.
177 * C->S: Unused.
178 */
179 struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
180
181 /**
182 * ID of the message that is being requested.
183 */
184 uint64_t fragment_id;
185
186 /**
187 * ID of the message that is being requested.
188 */
189 uint64_t message_id;
190
191 /**
192 * Offset of the fragment that is being requested.
193 */
194 uint64_t fragment_offset;
195
196 /**
197 * Additional flags for the request.
198 */
199 uint64_t flags;
200
201 /**
202 * Replay request ID.
203 */
204 uint32_t uid;
205};
206
207
208/**
209 * Message sent from the client to the service to give the service
210 * a replayed message.
211 */
212struct MulticastReplayResponseMessage
213{
214
215 /**
216 * Type: GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE
217 * or GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE_END
218 */
219 struct GNUNET_MessageHeader header;
220
221 /**
222 * ID of the message that is being requested.
223 */
224 uint64_t fragment_id;
225
226 /**
227 * ID of the message that is being requested.
228 */
229 uint64_t message_id;
230
231 /**
232 * Offset of the fragment that is being requested.
233 */
234 uint64_t fragment_offset;
235
236 /**
237 * Additional flags for the request.
238 */
239 uint64_t flags;
240
241 /**
242 * An `enum GNUNET_MULTICAST_ReplayErrorCode` identifying issues (in NBO).
243 */
244 int32_t error_code;
245
246 /* followed by replayed message */
247};
248
249
250/**
251 * Message sent from the client to the service to notify the service
252 * about the starting of a multicast group with this peers as its origin.
253 */
254struct MulticastOriginStartMessage
255{
256 /**
257 * Type: GNUNET_MESSAGE_TYPE_MULTICAST_ORIGIN_START
258 */
259 struct GNUNET_MessageHeader header;
260
261 /**
262 * Always zero.
263 */
264 uint32_t reserved;
265
266 /**
267 * Private, non-ephemeral key for the multicast group.
268 */
269 struct GNUNET_CRYPTO_EddsaPrivateKey group_key;
270
271 /**
272 * Last fragment ID sent to the group, used to continue counting fragments if
273 * we resume operating * a group.
274 */
275 uint64_t max_fragment_id;
276};
277
278
279struct MulticastMemberJoinMessage
280{
281 /**
282 * Type: GNUNET_MESSAGE_TYPE_MULTICAST_MEMBER_JOIN
283 */
284 struct GNUNET_MessageHeader header;
285
286 uint32_t relay_count GNUNET_PACKED;
287
288 struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
289
290 struct GNUNET_CRYPTO_EcdsaPrivateKey member_key;
291
292 struct GNUNET_PeerIdentity origin;
293
294 /* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
295
296 /* Followed by struct GNUNET_MessageHeader join_msg */
297};
298
299
300GNUNET_NETWORK_STRUCT_END
301
302#endif
303/* end of multicast.h */
diff --git a/src/multicast/multicast_api.c b/src/multicast/multicast_api.c
deleted file mode 100644
index e5e830225..000000000
--- a/src/multicast/multicast_api.c
+++ /dev/null
@@ -1,1399 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2012, 2013 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @file multicast/multicast_api.c
23 * @brief Multicast service; implements multicast groups using CADET connections.
24 * @author Christian Grothoff
25 * @author Gabor X Toth
26 */
27
28#include "platform.h"
29#include "gnunet_util_lib.h"
30#include "gnunet_multicast_service.h"
31#include "multicast.h"
32
33#define LOG(kind,...) GNUNET_log_from (kind, "multicast-api",__VA_ARGS__)
34
35
36/**
37 * Handle for a request to send a message to all multicast group members
38 * (from the origin).
39 */
40struct GNUNET_MULTICAST_OriginTransmitHandle
41{
42 GNUNET_MULTICAST_OriginTransmitNotify notify;
43 void *notify_cls;
44 struct GNUNET_MULTICAST_Origin *origin;
45
46 uint64_t message_id;
47 uint64_t group_generation;
48 uint64_t fragment_offset;
49};
50
51
52/**
53 * Handle for a message to be delivered from a member to the origin.
54 */
55struct GNUNET_MULTICAST_MemberTransmitHandle
56{
57 GNUNET_MULTICAST_MemberTransmitNotify notify;
58 void *notify_cls;
59 struct GNUNET_MULTICAST_Member *member;
60
61 uint64_t request_id;
62 uint64_t fragment_offset;
63};
64
65
66struct GNUNET_MULTICAST_Group
67{
68 /**
69 * Configuration to use.
70 */
71 const struct GNUNET_CONFIGURATION_Handle *cfg;
72
73 /**
74 * Client connection to the service.
75 */
76 struct GNUNET_MQ_Handle *mq;
77
78 /**
79 * Message to send on connect.
80 */
81 struct GNUNET_MQ_Envelope *connect_env;
82
83 /**
84 * Time to wait until we try to reconnect on failure.
85 */
86 struct GNUNET_TIME_Relative reconnect_delay;
87
88 /**
89 * Task for reconnecting when the listener fails.
90 */
91 struct GNUNET_SCHEDULER_Task *reconnect_task;
92
93 GNUNET_MULTICAST_JoinRequestCallback join_req_cb;
94 GNUNET_MULTICAST_ReplayFragmentCallback replay_frag_cb;
95 GNUNET_MULTICAST_ReplayMessageCallback replay_msg_cb;
96 GNUNET_MULTICAST_MessageCallback message_cb;
97 void *cb_cls;
98
99 /**
100 * Function called after disconnected from the service.
101 */
102 GNUNET_ContinuationCallback disconnect_cb;
103
104 /**
105 * Closure for @a disconnect_cb.
106 */
107 void *disconnect_cls;
108
109 /**
110 * Are we currently transmitting a message?
111 */
112 uint8_t in_transmit;
113
114 /**
115 * Number of MULTICAST_FRAGMENT_ACK messages we are still waiting for.
116 */
117 uint8_t acks_pending;
118
119 /**
120 * Is this the origin or a member?
121 */
122 uint8_t is_origin;
123
124 /**
125 * Is this channel in the process of disconnecting from the service?
126 * #GNUNET_YES or #GNUNET_NO
127 */
128 uint8_t is_disconnecting;
129};
130
131
132/**
133 * Handle for the origin of a multicast group.
134 */
135struct GNUNET_MULTICAST_Origin
136{
137 struct GNUNET_MULTICAST_Group grp;
138 struct GNUNET_MULTICAST_OriginTransmitHandle tmit;
139
140 GNUNET_MULTICAST_RequestCallback request_cb;
141};
142
143
144/**
145 * Handle for a multicast group member.
146 */
147struct GNUNET_MULTICAST_Member
148{
149 struct GNUNET_MULTICAST_Group grp;
150 struct GNUNET_MULTICAST_MemberTransmitHandle tmit;
151
152 GNUNET_MULTICAST_JoinDecisionCallback join_dcsn_cb;
153
154 /**
155 * Replay fragment -> struct GNUNET_MULTICAST_MemberReplayHandle *
156 */
157 struct GNUNET_CONTAINER_MultiHashMap *replay_reqs;
158
159 uint64_t next_fragment_id;
160};
161
162
163/**
164 * Handle that identifies a join request.
165 *
166 * Used to match calls to #GNUNET_MULTICAST_JoinRequestCallback to the
167 * corresponding calls to #GNUNET_MULTICAST_join_decision().
168 */
169struct GNUNET_MULTICAST_JoinHandle
170{
171 struct GNUNET_MULTICAST_Group *group;
172
173 /**
174 * Public key of the member requesting join.
175 */
176 struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
177
178 /**
179 * Peer identity of the member requesting join.
180 */
181 struct GNUNET_PeerIdentity peer;
182};
183
184
185/**
186 * Opaque handle to a replay request from the multicast service.
187 */
188struct GNUNET_MULTICAST_ReplayHandle
189{
190 struct GNUNET_MULTICAST_Group *grp;
191 struct MulticastReplayRequestMessage req;
192};
193
194
195/**
196 * Handle for a replay request.
197 */
198struct GNUNET_MULTICAST_MemberReplayHandle
199{
200};
201
202
203static void
204origin_to_all (struct GNUNET_MULTICAST_Origin *orig);
205
206static void
207member_to_origin (struct GNUNET_MULTICAST_Member *mem);
208
209
210/**
211 * Check join request message.
212 */
213static int
214check_group_join_request (void *cls,
215 const struct MulticastJoinRequestMessage *jreq)
216{
217 uint16_t size = ntohs (jreq->header.size);
218
219 if (sizeof (*jreq) == size)
220 return GNUNET_OK;
221
222 if (sizeof (*jreq) + sizeof (struct GNUNET_MessageHeader) <= size)
223 return GNUNET_OK;
224
225 return GNUNET_SYSERR;
226}
227
228
229/**
230 * Receive join request from service.
231 */
232static void
233handle_group_join_request (void *cls,
234 const struct MulticastJoinRequestMessage *jreq)
235{
236 struct GNUNET_MULTICAST_Group *grp = cls;
237 struct GNUNET_MULTICAST_JoinHandle *jh;
238 const struct GNUNET_MessageHeader *jmsg = NULL;
239
240 if (NULL == grp)
241 {
242 GNUNET_break (0);
243 return;
244 }
245 if (NULL == grp->join_req_cb)
246 return;
247
248 if (sizeof (*jreq) + sizeof (*jmsg) <= ntohs (jreq->header.size))
249 jmsg = (const struct GNUNET_MessageHeader *) &jreq[1];
250
251 jh = GNUNET_malloc (sizeof (*jh));
252 jh->group = grp;
253 jh->member_pub_key = jreq->member_pub_key;
254 jh->peer = jreq->peer;
255 grp->join_req_cb (grp->cb_cls, &jreq->member_pub_key, jmsg, jh);
256
257 grp->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
258}
259
260
261/**
262 * Check multicast message.
263 */
264static int
265check_group_message (void *cls,
266 const struct GNUNET_MULTICAST_MessageHeader *mmsg)
267{
268 return GNUNET_OK;
269}
270
271
272/**
273 * Receive multicast message from service.
274 */
275static void
276handle_group_message (void *cls,
277 const struct GNUNET_MULTICAST_MessageHeader *mmsg)
278{
279 struct GNUNET_MULTICAST_Group *grp = cls;
280
281 if (GNUNET_YES == grp->is_disconnecting)
282 return;
283
284 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
285 "Calling message callback with a message of size %u.\n",
286 ntohs (mmsg->header.size));
287
288 if (NULL != grp->message_cb)
289 grp->message_cb (grp->cb_cls, mmsg);
290
291 grp->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
292}
293
294
295/**
296 * Receive message/request fragment acknowledgement from service.
297 */
298static void
299handle_group_fragment_ack (void *cls,
300 const struct GNUNET_MessageHeader *msg)
301{
302 struct GNUNET_MULTICAST_Group *grp = cls;
303
304 LOG (GNUNET_ERROR_TYPE_DEBUG,
305 "%p Got fragment ACK. in_transmit=%u, acks_pending=%u\n",
306 grp, grp->in_transmit, grp->acks_pending);
307
308 if (0 == grp->acks_pending)
309 {
310 LOG (GNUNET_ERROR_TYPE_DEBUG,
311 "%p Ignoring extraneous fragment ACK.\n", grp);
312 return;
313 }
314 grp->acks_pending--;
315
316 if (GNUNET_YES != grp->in_transmit)
317 return;
318
319 if (GNUNET_YES == grp->is_origin)
320 origin_to_all ((struct GNUNET_MULTICAST_Origin *) grp);
321 else
322 member_to_origin ((struct GNUNET_MULTICAST_Member *) grp);
323
324 grp->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
325}
326
327
328/**
329 * Check unicast request.
330 */
331static int
332check_origin_request (void *cls,
333 const struct GNUNET_MULTICAST_RequestHeader *req)
334{
335 return GNUNET_OK;
336}
337
338
339/**
340 * Origin receives unicast request from a member.
341 */
342static void
343handle_origin_request (void *cls,
344 const struct GNUNET_MULTICAST_RequestHeader *req)
345{
346 struct GNUNET_MULTICAST_Group *grp;
347 struct GNUNET_MULTICAST_Origin *orig = cls;
348 grp = &orig->grp;
349
350 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
351 "Calling request callback with a request of size %u.\n",
352 ntohs (req->header.size));
353
354 if (NULL != orig->request_cb)
355 orig->request_cb (grp->cb_cls, req);
356
357 grp->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
358}
359
360
361/**
362 * Receive multicast replay request from service.
363 */
364static void
365handle_group_replay_request (void *cls,
366 const struct MulticastReplayRequestMessage *rep)
367
368{
369 struct GNUNET_MULTICAST_Group *grp = cls;
370
371 if (GNUNET_YES == grp->is_disconnecting)
372 return;
373
374 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got replay request.\n");
375
376 if (0 != rep->fragment_id)
377 {
378 if (NULL != grp->replay_frag_cb)
379 {
380 struct GNUNET_MULTICAST_ReplayHandle * rh = GNUNET_malloc (sizeof (*rh));
381 rh->grp = grp;
382 rh->req = *rep;
383 grp->replay_frag_cb (grp->cb_cls, &rep->member_pub_key,
384 GNUNET_ntohll (rep->fragment_id),
385 GNUNET_ntohll (rep->flags), rh);
386 }
387 }
388 else if (0 != rep->message_id)
389 {
390 if (NULL != grp->replay_msg_cb)
391 {
392 struct GNUNET_MULTICAST_ReplayHandle * rh = GNUNET_malloc (sizeof (*rh));
393 rh->grp = grp;
394 rh->req = *rep;
395 grp->replay_msg_cb (grp->cb_cls, &rep->member_pub_key,
396 GNUNET_ntohll (rep->message_id),
397 GNUNET_ntohll (rep->fragment_offset),
398 GNUNET_ntohll (rep->flags), rh);
399 }
400 }
401
402 grp->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
403}
404
405
406/**
407 * Check replay response.
408 */
409static int
410check_member_replay_response (void *cls,
411 const struct MulticastReplayResponseMessage *res)
412{
413 uint16_t size = ntohs (res->header.size);
414
415 if (sizeof (*res) == size)
416 return GNUNET_OK;
417
418 if (sizeof (*res) + sizeof (struct GNUNET_MULTICAST_MessageHeader) <= size)
419 return GNUNET_OK;
420
421 return GNUNET_SYSERR;
422}
423
424
425/**
426 * Receive replay response from service.
427 */
428static void
429handle_member_replay_response (void *cls,
430 const struct MulticastReplayResponseMessage *res)
431{
432 struct GNUNET_MULTICAST_Group *grp;
433 struct GNUNET_MULTICAST_Member *mem = cls;
434 grp = &mem->grp;
435
436 if (GNUNET_YES == grp->is_disconnecting)
437 return;
438
439 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got replay response.\n");
440
441 // FIXME: return result
442}
443
444
445/**
446 * Check join decision.
447 */
448static int
449check_member_join_decision (void *cls,
450 const struct MulticastJoinDecisionMessageHeader *hdcsn)
451{
452 return GNUNET_OK; // checked in handle below
453}
454
455
456/**
457 * Member receives join decision.
458 */
459static void
460handle_member_join_decision (void *cls,
461 const struct MulticastJoinDecisionMessageHeader *hdcsn)
462{
463 struct GNUNET_MULTICAST_Group *grp;
464 struct GNUNET_MULTICAST_Member *mem = cls;
465 grp = &mem->grp;
466
467 const struct MulticastJoinDecisionMessage *
468 dcsn = (const struct MulticastJoinDecisionMessage *) &hdcsn[1];
469
470 uint16_t dcsn_size = ntohs (dcsn->header.size);
471 int is_admitted = ntohl (dcsn->is_admitted);
472
473 LOG (GNUNET_ERROR_TYPE_DEBUG,
474 "%p Member got join decision from multicast: %d\n",
475 mem, is_admitted);
476
477 const struct GNUNET_MessageHeader *join_resp = NULL;
478 uint16_t join_resp_size = 0;
479
480 uint16_t relay_count = ntohl (dcsn->relay_count);
481 const struct GNUNET_PeerIdentity *relays = NULL;
482 uint16_t relay_size = relay_count * sizeof (*relays);
483 if (0 < relay_count)
484 {
485 if (dcsn_size < sizeof (*dcsn) + relay_size)
486 {
487 GNUNET_break_op (0);
488 is_admitted = GNUNET_SYSERR;
489 }
490 else
491 {
492 relays = (struct GNUNET_PeerIdentity *) &dcsn[1];
493 }
494 }
495
496 if (sizeof (*dcsn) + relay_size + sizeof (*join_resp) <= dcsn_size)
497 {
498 join_resp = (const struct GNUNET_MessageHeader *) ((char *) &dcsn[1] + relay_size);
499 join_resp_size = ntohs (join_resp->size);
500 }
501 if (dcsn_size < sizeof (*dcsn) + relay_size + join_resp_size)
502 {
503 LOG (GNUNET_ERROR_TYPE_DEBUG,
504 "Received invalid join decision message from multicast: %u < %u + %u + %u\n",
505 dcsn_size , sizeof (*dcsn), relay_size, join_resp_size);
506 GNUNET_break_op (0);
507 is_admitted = GNUNET_SYSERR;
508 }
509
510 if (NULL != mem->join_dcsn_cb)
511 mem->join_dcsn_cb (grp->cb_cls, is_admitted, &hdcsn->peer,
512 relay_count, relays, join_resp);
513
514 // FIXME:
515 //if (GNUNET_YES != is_admitted)
516 // GNUNET_MULTICAST_member_part (mem);
517
518 grp->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
519}
520
521
522static void
523group_cleanup (struct GNUNET_MULTICAST_Group *grp)
524{
525 if (NULL != grp->connect_env)
526 {
527 GNUNET_MQ_discard (grp->connect_env);
528 grp->connect_env = NULL;
529 }
530 if (NULL != grp->mq)
531 {
532 GNUNET_MQ_destroy (grp->mq);
533 grp->mq = NULL;
534 }
535 if (NULL != grp->disconnect_cb)
536 {
537 grp->disconnect_cb (grp->disconnect_cls);
538 grp->disconnect_cb = NULL;
539 }
540 GNUNET_free (grp);
541}
542
543
544static void
545handle_group_part_ack (void *cls,
546 const struct GNUNET_MessageHeader *msg)
547{
548 struct GNUNET_MULTICAST_Group *grp = cls;
549
550 group_cleanup (grp);
551}
552
553
554/**
555 * Function to call with the decision made for a join request.
556 *
557 * Must be called once and only once in response to an invocation of the
558 * #GNUNET_MULTICAST_JoinRequestCallback.
559 *
560 * @param join
561 * Join request handle.
562 * @param is_admitted
563 * #GNUNET_YES if the join is approved,
564 * #GNUNET_NO if it is disapproved,
565 * #GNUNET_SYSERR if we cannot answer the request.
566 * @param relay_count
567 * Number of relays given.
568 * @param relays
569 * Array of suggested peers that might be useful relays to use
570 * when joining the multicast group (essentially a list of peers that
571 * are already part of the multicast group and might thus be willing
572 * to help with routing). If empty, only this local peer (which must
573 * be the multicast origin) is a good candidate for building the
574 * multicast tree. Note that it is unnecessary to specify our own
575 * peer identity in this array.
576 * @param join_resp
577 * Message to send in response to the joining peer;
578 * can also be used to redirect the peer to a different group at the
579 * application layer; this response is to be transmitted to the
580 * peer that issued the request even if admission is denied.
581 */
582struct GNUNET_MULTICAST_ReplayHandle *
583GNUNET_MULTICAST_join_decision (struct GNUNET_MULTICAST_JoinHandle *join,
584 int is_admitted,
585 uint16_t relay_count,
586 const struct GNUNET_PeerIdentity *relays,
587 const struct GNUNET_MessageHeader *join_resp)
588{
589 struct GNUNET_MULTICAST_Group *grp = join->group;
590 uint16_t join_resp_size = (NULL != join_resp) ? ntohs (join_resp->size) : 0;
591 uint16_t relay_size = relay_count * sizeof (*relays);
592
593 struct MulticastJoinDecisionMessageHeader *hdcsn;
594 struct MulticastJoinDecisionMessage *dcsn;
595 struct GNUNET_MQ_Envelope *
596 env = GNUNET_MQ_msg_extra (hdcsn, sizeof (*dcsn) + relay_size + join_resp_size,
597 GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION);
598 hdcsn->member_pub_key = join->member_pub_key;
599 hdcsn->peer = join->peer;
600
601 dcsn = (struct MulticastJoinDecisionMessage *) &hdcsn[1];
602 dcsn->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION);
603 dcsn->header.size = htons (sizeof (*dcsn) + relay_size + join_resp_size);
604 dcsn->is_admitted = htonl (is_admitted);
605 dcsn->relay_count = htonl (relay_count);
606 if (0 < relay_size)
607 GNUNET_memcpy (&dcsn[1], relays, relay_size);
608 if (0 < join_resp_size)
609 GNUNET_memcpy (((char *) &dcsn[1]) + relay_size, join_resp, join_resp_size);
610
611 GNUNET_MQ_send (grp->mq, env);
612 GNUNET_free (join);
613 return NULL;
614}
615
616
617/**
618 * Replay a message fragment for the multicast group.
619 *
620 * @param rh
621 * Replay handle identifying which replay operation was requested.
622 * @param msg
623 * Replayed message fragment, NULL if not found / an error occurred.
624 * @param ec
625 * Error code. See enum GNUNET_MULTICAST_ReplayErrorCode
626 * If not #GNUNET_MULTICAST_REC_OK, the replay handle is invalidated.
627 */
628void
629GNUNET_MULTICAST_replay_response (struct GNUNET_MULTICAST_ReplayHandle *rh,
630 const struct GNUNET_MessageHeader *msg,
631 enum GNUNET_MULTICAST_ReplayErrorCode ec)
632{
633 uint8_t msg_size = (NULL != msg) ? ntohs (msg->size) : 0;
634 struct MulticastReplayResponseMessage *res;
635 struct GNUNET_MQ_Envelope *
636 env = GNUNET_MQ_msg_extra (res, msg_size,
637 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE);
638 res->fragment_id = rh->req.fragment_id;
639 res->message_id = rh->req.message_id;
640 res->fragment_offset = rh->req.fragment_offset;
641 res->flags = rh->req.flags;
642 res->error_code = htonl (ec);
643
644 if (GNUNET_MULTICAST_REC_OK == ec)
645 {
646 GNUNET_assert (NULL != msg);
647 GNUNET_memcpy (&res[1], msg, msg_size);
648 }
649
650 GNUNET_MQ_send (rh->grp->mq, env);
651
652 if (GNUNET_MULTICAST_REC_OK != ec)
653 GNUNET_free (rh);
654}
655
656
657/**
658 * Indicate the end of the replay session.
659 *
660 * Invalidates the replay handle.
661 *
662 * @param rh
663 * Replay session to end.
664 */
665void
666GNUNET_MULTICAST_replay_response_end (struct GNUNET_MULTICAST_ReplayHandle *rh)
667{
668 struct MulticastReplayResponseMessage *end;
669 struct GNUNET_MQ_Envelope *
670 env = GNUNET_MQ_msg (end, GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE_END);
671
672 end->fragment_id = rh->req.fragment_id;
673 end->message_id = rh->req.message_id;
674 end->fragment_offset = rh->req.fragment_offset;
675 end->flags = rh->req.flags;
676
677 GNUNET_MQ_send (rh->grp->mq, env);
678 GNUNET_free (rh);
679}
680
681
682/**
683 * Replay a message for the multicast group.
684 *
685 * @param rh
686 * Replay handle identifying which replay operation was requested.
687 * @param notify
688 * Function to call to get the message.
689 * @param notify_cls
690 * Closure for @a notify.
691 */
692void
693GNUNET_MULTICAST_replay_response2 (struct GNUNET_MULTICAST_ReplayHandle *rh,
694 GNUNET_MULTICAST_ReplayTransmitNotify notify,
695 void *notify_cls)
696{
697}
698
699
700static void
701origin_connect (struct GNUNET_MULTICAST_Origin *orig);
702
703
704static void
705origin_reconnect (void *cls)
706{
707 origin_connect (cls);
708}
709
710
711/**
712 * Origin client disconnected from service.
713 *
714 * Reconnect after backoff period.
715 */
716static void
717origin_disconnected (void *cls, enum GNUNET_MQ_Error error)
718{
719 struct GNUNET_MULTICAST_Origin *orig = cls;
720 struct GNUNET_MULTICAST_Group *grp = &orig->grp;
721
722 LOG (GNUNET_ERROR_TYPE_DEBUG,
723 "Origin client disconnected (%d), re-connecting\n",
724 (int) error);
725 if (NULL != grp->mq)
726 {
727 GNUNET_MQ_destroy (grp->mq);
728 grp->mq = NULL;
729 }
730
731 grp->reconnect_task = GNUNET_SCHEDULER_add_delayed (grp->reconnect_delay,
732 origin_reconnect,
733 orig);
734 grp->reconnect_delay = GNUNET_TIME_STD_BACKOFF (grp->reconnect_delay);
735}
736
737
738/**
739 * Connect to service as origin.
740 */
741static void
742origin_connect (struct GNUNET_MULTICAST_Origin *orig)
743{
744 struct GNUNET_MULTICAST_Group *grp = &orig->grp;
745
746 struct GNUNET_MQ_MessageHandler handlers[] = {
747 GNUNET_MQ_hd_var_size (group_message,
748 GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE,
749 struct GNUNET_MULTICAST_MessageHeader,
750 grp),
751 GNUNET_MQ_hd_var_size (origin_request,
752 GNUNET_MESSAGE_TYPE_MULTICAST_REQUEST,
753 struct GNUNET_MULTICAST_RequestHeader,
754 orig),
755 GNUNET_MQ_hd_fixed_size (group_fragment_ack,
756 GNUNET_MESSAGE_TYPE_MULTICAST_FRAGMENT_ACK,
757 struct GNUNET_MessageHeader,
758 grp),
759 GNUNET_MQ_hd_var_size (group_join_request,
760 GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST,
761 struct MulticastJoinRequestMessage,
762 grp),
763 GNUNET_MQ_hd_fixed_size (group_part_ack,
764 GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK,
765 struct GNUNET_MessageHeader,
766 grp),
767 GNUNET_MQ_hd_fixed_size (group_replay_request,
768 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST,
769 struct MulticastReplayRequestMessage,
770 grp),
771 GNUNET_MQ_handler_end ()
772 };
773
774 grp->mq = GNUNET_CLIENT_connect (grp->cfg, "multicast",
775 handlers, origin_disconnected, orig);
776 GNUNET_assert (NULL != grp->mq);
777 GNUNET_MQ_send_copy (grp->mq, grp->connect_env);
778}
779
780
781/**
782 * Start a multicast group.
783 *
784 * Will advertise the origin in the P2P overlay network under the respective
785 * public key so that other peer can find this peer to join it. Peers that
786 * issue GNUNET_MULTICAST_member_join() can then transmit a join request to
787 * either an existing group member or to the origin. If the joining is
788 * approved, the member is cleared for @e replay and will begin to receive
789 * messages transmitted to the group. If joining is disapproved, the failed
790 * candidate will be given a response. Members in the group can send messages
791 * to the origin (one at a time).
792 *
793 * @param cfg
794 * Configuration to use.
795 * @param priv_key
796 * ECC key that will be used to sign messages for this
797 * multicast session; public key is used to identify the multicast group;
798 * @param max_fragment_id
799 * Maximum fragment ID already sent to the group.
800 * 0 for a new group.
801 * @param join_request_cb
802 * Function called to approve / disapprove joining of a peer.
803 * @param replay_frag_cb
804 * Function that can be called to replay a message fragment.
805 * @param replay_msg_cb
806 * Function that can be called to replay a message.
807 * @param request_cb
808 * Function called with message fragments from group members.
809 * @param message_cb
810 * Function called with the message fragments sent to the
811 * network by GNUNET_MULTICAST_origin_to_all(). These message fragments
812 * should be stored for answering replay requests later.
813 * @param cls
814 * Closure for the various callbacks that follow.
815 *
816 * @return Handle for the origin, NULL on error.
817 */
818struct GNUNET_MULTICAST_Origin *
819GNUNET_MULTICAST_origin_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
820 const struct GNUNET_CRYPTO_EddsaPrivateKey *priv_key,
821 uint64_t max_fragment_id,
822 GNUNET_MULTICAST_JoinRequestCallback join_request_cb,
823 GNUNET_MULTICAST_ReplayFragmentCallback replay_frag_cb,
824 GNUNET_MULTICAST_ReplayMessageCallback replay_msg_cb,
825 GNUNET_MULTICAST_RequestCallback request_cb,
826 GNUNET_MULTICAST_MessageCallback message_cb,
827 void *cls)
828{
829 struct GNUNET_MULTICAST_Origin *orig = GNUNET_malloc (sizeof (*orig));
830 struct GNUNET_MULTICAST_Group *grp = &orig->grp;
831
832 struct MulticastOriginStartMessage *start;
833 grp->connect_env = GNUNET_MQ_msg (start,
834 GNUNET_MESSAGE_TYPE_MULTICAST_ORIGIN_START);
835 start->max_fragment_id = max_fragment_id;
836 start->group_key = *priv_key;
837
838 grp->cfg = cfg;
839 grp->is_origin = GNUNET_YES;
840 grp->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
841
842 grp->cb_cls = cls;
843 grp->join_req_cb = join_request_cb;
844 grp->replay_frag_cb = replay_frag_cb;
845 grp->replay_msg_cb = replay_msg_cb;
846 grp->message_cb = message_cb;
847
848 orig->request_cb = request_cb;
849
850 origin_connect (orig);
851 return orig;
852}
853
854
855/**
856 * Stop a multicast group.
857 *
858 * @param origin
859 * Multicast group to stop.
860 */
861void
862GNUNET_MULTICAST_origin_stop (struct GNUNET_MULTICAST_Origin *orig,
863 GNUNET_ContinuationCallback stop_cb,
864 void *stop_cls)
865{
866 struct GNUNET_MULTICAST_Group *grp = &orig->grp;
867 struct GNUNET_MQ_Envelope *env;
868
869 grp->is_disconnecting = GNUNET_YES;
870 grp->disconnect_cb = stop_cb;
871 grp->disconnect_cls = stop_cls;
872 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_PART_REQUEST);
873 GNUNET_MQ_send (grp->mq, env);
874}
875
876
877static void
878origin_to_all (struct GNUNET_MULTICAST_Origin *orig)
879{
880 LOG (GNUNET_ERROR_TYPE_DEBUG, "%p origin_to_all()\n", orig);
881 struct GNUNET_MULTICAST_Group *grp = &orig->grp;
882 struct GNUNET_MULTICAST_OriginTransmitHandle *tmit = &orig->tmit;
883 GNUNET_assert (GNUNET_YES == grp->in_transmit);
884
885 size_t buf_size = GNUNET_MULTICAST_FRAGMENT_MAX_SIZE;
886 struct GNUNET_MULTICAST_MessageHeader *msg;
887 struct GNUNET_MQ_Envelope *
888 env = GNUNET_MQ_msg_extra (msg, buf_size - sizeof(*msg),
889 GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE);
890
891 int ret = tmit->notify (tmit->notify_cls, &buf_size, &msg[1]);
892
893 if (! (GNUNET_YES == ret || GNUNET_NO == ret)
894 || GNUNET_MULTICAST_FRAGMENT_MAX_SIZE < buf_size)
895 {
896 LOG (GNUNET_ERROR_TYPE_ERROR,
897 "%p OriginTransmitNotify() returned error or invalid message size.\n",
898 orig);
899 /* FIXME: handle error */
900 GNUNET_MQ_discard (env);
901 return;
902 }
903
904 if (GNUNET_NO == ret && 0 == buf_size)
905 {
906 LOG (GNUNET_ERROR_TYPE_DEBUG,
907 "%p OriginTransmitNotify() - transmission paused.\n", orig);
908 GNUNET_MQ_discard (env);
909 return; /* Transmission paused. */
910 }
911
912 msg->header.size = htons (sizeof (*msg) + buf_size);
913 msg->message_id = GNUNET_htonll (tmit->message_id);
914 msg->group_generation = tmit->group_generation;
915 msg->fragment_offset = GNUNET_htonll (tmit->fragment_offset);
916 tmit->fragment_offset += sizeof (*msg) + buf_size;
917
918 grp->acks_pending++;
919 GNUNET_MQ_send (grp->mq, env);
920
921 if (GNUNET_YES == ret)
922 grp->in_transmit = GNUNET_NO;
923}
924
925
926/**
927 * Send a message to the multicast group.
928 *
929 * @param orig
930 * Handle to the multicast group.
931 * @param message_id
932 * Application layer ID for the message. Opaque to multicast.
933 * @param group_generation
934 * Group generation of the message.
935 * Documented in struct GNUNET_MULTICAST_MessageHeader.
936 * @param notify
937 * Function to call to get the message.
938 * @param notify_cls
939 * Closure for @a notify.
940 *
941 * @return Message handle on success,
942 * NULL on error (i.e. another request is already pending).
943 */
944struct GNUNET_MULTICAST_OriginTransmitHandle *
945GNUNET_MULTICAST_origin_to_all (struct GNUNET_MULTICAST_Origin *orig,
946 uint64_t message_id,
947 uint64_t group_generation,
948 GNUNET_MULTICAST_OriginTransmitNotify notify,
949 void *notify_cls)
950{
951 struct GNUNET_MULTICAST_Group *grp = &orig->grp;
952 if (GNUNET_YES == grp->in_transmit)
953 return NULL;
954 grp->in_transmit = GNUNET_YES;
955
956 struct GNUNET_MULTICAST_OriginTransmitHandle *tmit = &orig->tmit;
957 tmit->origin = orig;
958 tmit->message_id = message_id;
959 tmit->fragment_offset = 0;
960 tmit->group_generation = group_generation;
961 tmit->notify = notify;
962 tmit->notify_cls = notify_cls;
963
964 origin_to_all (orig);
965 return tmit;
966}
967
968
969/**
970 * Resume message transmission to multicast group.
971 *
972 * @param th
973 * Transmission to cancel.
974 */
975void
976GNUNET_MULTICAST_origin_to_all_resume (struct GNUNET_MULTICAST_OriginTransmitHandle *th)
977{
978 struct GNUNET_MULTICAST_Group *grp = &th->origin->grp;
979 if (0 != grp->acks_pending || GNUNET_YES != grp->in_transmit)
980 return;
981 origin_to_all (th->origin);
982}
983
984
985/**
986 * Cancel request for message transmission to multicast group.
987 *
988 * @param th
989 * Transmission to cancel.
990 */
991void
992GNUNET_MULTICAST_origin_to_all_cancel (struct GNUNET_MULTICAST_OriginTransmitHandle *th)
993{
994 th->origin->grp.in_transmit = GNUNET_NO;
995}
996
997
998static void
999member_connect (struct GNUNET_MULTICAST_Member *mem);
1000
1001
1002static void
1003member_reconnect (void *cls)
1004{
1005 member_connect (cls);
1006}
1007
1008
1009/**
1010 * Member client disconnected from service.
1011 *
1012 * Reconnect after backoff period.
1013 */
1014static void
1015member_disconnected (void *cls, enum GNUNET_MQ_Error error)
1016{
1017 struct GNUNET_MULTICAST_Member *mem = cls;
1018 struct GNUNET_MULTICAST_Group *grp = &mem->grp;
1019
1020 LOG (GNUNET_ERROR_TYPE_DEBUG,
1021 "Member client disconnected (%d), re-connecting\n",
1022 (int) error);
1023 GNUNET_MQ_destroy (grp->mq);
1024 grp->mq = NULL;
1025
1026 grp->reconnect_task = GNUNET_SCHEDULER_add_delayed (grp->reconnect_delay,
1027 member_reconnect,
1028 mem);
1029 grp->reconnect_delay = GNUNET_TIME_STD_BACKOFF (grp->reconnect_delay);
1030}
1031
1032
1033/**
1034 * Connect to service as member.
1035 */
1036static void
1037member_connect (struct GNUNET_MULTICAST_Member *mem)
1038{
1039 struct GNUNET_MULTICAST_Group *grp = &mem->grp;
1040
1041 struct GNUNET_MQ_MessageHandler handlers[] = {
1042 GNUNET_MQ_hd_var_size (group_message,
1043 GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE,
1044 struct GNUNET_MULTICAST_MessageHeader,
1045 grp),
1046 GNUNET_MQ_hd_fixed_size (group_fragment_ack,
1047 GNUNET_MESSAGE_TYPE_MULTICAST_FRAGMENT_ACK,
1048 struct GNUNET_MessageHeader,
1049 grp),
1050 GNUNET_MQ_hd_var_size (group_join_request,
1051 GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_REQUEST,
1052 struct MulticastJoinRequestMessage,
1053 grp),
1054 GNUNET_MQ_hd_var_size (member_join_decision,
1055 GNUNET_MESSAGE_TYPE_MULTICAST_JOIN_DECISION,
1056 struct MulticastJoinDecisionMessageHeader,
1057 mem),
1058 GNUNET_MQ_hd_fixed_size (group_part_ack,
1059 GNUNET_MESSAGE_TYPE_MULTICAST_PART_ACK,
1060 struct GNUNET_MessageHeader,
1061 grp),
1062 GNUNET_MQ_hd_fixed_size (group_replay_request,
1063 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST,
1064 struct MulticastReplayRequestMessage,
1065 grp),
1066 GNUNET_MQ_hd_var_size (member_replay_response,
1067 GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE,
1068 struct MulticastReplayResponseMessage,
1069 mem),
1070 GNUNET_MQ_handler_end ()
1071 };
1072
1073 grp->mq = GNUNET_CLIENT_connect (grp->cfg, "multicast",
1074 handlers, member_disconnected, mem);
1075 GNUNET_assert (NULL != grp->mq);
1076 GNUNET_MQ_send_copy (grp->mq, grp->connect_env);
1077}
1078
1079
1080/**
1081 * Join a multicast group.
1082 *
1083 * The entity joining is always the local peer. Further information about the
1084 * candidate can be provided in the @a join_request message. If the join fails, the
1085 * @a message_cb is invoked with a (failure) response and then with NULL. If
1086 * the join succeeds, outstanding (state) messages and ongoing multicast
1087 * messages will be given to the @a message_cb until the member decides to part
1088 * the group. The @a replay_cb function may be called at any time by the
1089 * multicast service to support relaying messages to other members of the group.
1090 *
1091 * @param cfg
1092 * Configuration to use.
1093 * @param group_key
1094 * ECC public key that identifies the group to join.
1095 * @param member_key
1096 * ECC key that identifies the member
1097 * and used to sign requests sent to the origin.
1098 * @param origin
1099 * Peer ID of the origin to send unicast requsets to. If NULL,
1100 * unicast requests are sent back via multiple hops on the reverse path
1101 * of multicast messages.
1102 * @param relay_count
1103 * Number of peers in the @a relays array.
1104 * @param relays
1105 * Peer identities of members of the group, which serve as relays
1106 * and can be used to join the group at. and send the @a join_request to.
1107 * If empty, the @a join_request is sent directly to the @a origin.
1108 * @param join_msg
1109 * Application-dependent join message to be passed to the peer @a origin.
1110 * @param join_request_cb
1111 * Function called to approve / disapprove joining of a peer.
1112 * @param join_decision_cb
1113 * Function called to inform about the join decision.
1114 * @param replay_frag_cb
1115 * Function that can be called to replay message fragments
1116 * this peer already knows from this group. NULL if this
1117 * client is unable to support replay.
1118 * @param replay_msg_cb
1119 * Function that can be called to replay message fragments
1120 * this peer already knows from this group. NULL if this
1121 * client is unable to support replay.
1122 * @param message_cb
1123 * Function to be called for all message fragments we
1124 * receive from the group, excluding those our @a replay_cb
1125 * already has.
1126 * @param cls
1127 * Closure for callbacks.
1128 *
1129 * @return Handle for the member, NULL on error.
1130 */
1131struct GNUNET_MULTICAST_Member *
1132GNUNET_MULTICAST_member_join (const struct GNUNET_CONFIGURATION_Handle *cfg,
1133 const struct GNUNET_CRYPTO_EddsaPublicKey *group_pub_key,
1134 const struct GNUNET_CRYPTO_EcdsaPrivateKey *member_key,
1135 const struct GNUNET_PeerIdentity *origin,
1136 uint16_t relay_count,
1137 const struct GNUNET_PeerIdentity *relays,
1138 const struct GNUNET_MessageHeader *join_msg,
1139 GNUNET_MULTICAST_JoinRequestCallback join_request_cb,
1140 GNUNET_MULTICAST_JoinDecisionCallback join_decision_cb,
1141 GNUNET_MULTICAST_ReplayFragmentCallback replay_frag_cb,
1142 GNUNET_MULTICAST_ReplayMessageCallback replay_msg_cb,
1143 GNUNET_MULTICAST_MessageCallback message_cb,
1144 void *cls)
1145{
1146 struct GNUNET_MULTICAST_Member *mem = GNUNET_malloc (sizeof (*mem));
1147 struct GNUNET_MULTICAST_Group *grp = &mem->grp;
1148
1149 uint16_t relay_size = relay_count * sizeof (*relays);
1150 uint16_t join_msg_size = (NULL != join_msg) ? ntohs (join_msg->size) : 0;
1151 struct MulticastMemberJoinMessage *join;
1152 grp->connect_env = GNUNET_MQ_msg_extra (join, relay_size + join_msg_size,
1153 GNUNET_MESSAGE_TYPE_MULTICAST_MEMBER_JOIN);
1154 join->group_pub_key = *group_pub_key;
1155 join->member_key = *member_key;
1156 join->origin = *origin;
1157 join->relay_count = ntohl (relay_count);
1158 if (0 < relay_size)
1159 GNUNET_memcpy (&join[1], relays, relay_size);
1160 if (0 < join_msg_size)
1161 GNUNET_memcpy (((char *) &join[1]) + relay_size, join_msg, join_msg_size);
1162
1163 grp->cfg = cfg;
1164 grp->is_origin = GNUNET_NO;
1165 grp->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
1166
1167 mem->join_dcsn_cb = join_decision_cb;
1168 grp->join_req_cb = join_request_cb;
1169 grp->replay_frag_cb = replay_frag_cb;
1170 grp->replay_msg_cb = replay_msg_cb;
1171 grp->message_cb = message_cb;
1172 grp->cb_cls = cls;
1173
1174 member_connect (mem);
1175 return mem;
1176}
1177
1178
1179/**
1180 * Part a multicast group.
1181 *
1182 * Disconnects from all group members and invalidates the @a member handle.
1183 *
1184 * An application-dependent part message can be transmitted beforehand using
1185 * #GNUNET_MULTICAST_member_to_origin())
1186 *
1187 * @param member
1188 * Membership handle.
1189 */
1190void
1191GNUNET_MULTICAST_member_part (struct GNUNET_MULTICAST_Member *mem,
1192 GNUNET_ContinuationCallback part_cb,
1193 void *part_cls)
1194{
1195 struct GNUNET_MULTICAST_Group *grp = &mem->grp;
1196 struct GNUNET_MQ_Envelope *env;
1197
1198 mem->join_dcsn_cb = NULL;
1199 grp->join_req_cb = NULL;
1200 grp->message_cb = NULL;
1201 grp->replay_msg_cb = NULL;
1202 grp->replay_frag_cb = NULL;
1203 grp->is_disconnecting = GNUNET_YES;
1204 grp->disconnect_cb = part_cb;
1205 grp->disconnect_cls = part_cls;
1206 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_MULTICAST_PART_REQUEST);
1207 GNUNET_MQ_send (grp->mq, env);
1208}
1209
1210
1211void
1212member_replay_request (struct GNUNET_MULTICAST_Member *mem,
1213 uint64_t fragment_id,
1214 uint64_t message_id,
1215 uint64_t fragment_offset,
1216 uint64_t flags)
1217{
1218 struct MulticastReplayRequestMessage *rep;
1219 struct GNUNET_MQ_Envelope *
1220 env = GNUNET_MQ_msg (rep, GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST);
1221
1222 rep->fragment_id = GNUNET_htonll (fragment_id);
1223 rep->message_id = GNUNET_htonll (message_id);
1224 rep->fragment_offset = GNUNET_htonll (fragment_offset);
1225 rep->flags = GNUNET_htonll (flags);
1226
1227 GNUNET_MQ_send (mem->grp.mq, env);
1228}
1229
1230
1231/**
1232 * Request a fragment to be replayed by fragment ID.
1233 *
1234 * Useful if messages below the @e max_known_fragment_id given when joining are
1235 * needed and not known to the client.
1236 *
1237 * @param member
1238 * Membership handle.
1239 * @param fragment_id
1240 * ID of a message fragment that this client would like to see replayed.
1241 * @param flags
1242 * Additional flags for the replay request.
1243 * It is used and defined by GNUNET_MULTICAST_ReplayFragmentCallback
1244 *
1245 * @return Replay request handle.
1246 */
1247struct GNUNET_MULTICAST_MemberReplayHandle *
1248GNUNET_MULTICAST_member_replay_fragment (struct GNUNET_MULTICAST_Member *mem,
1249 uint64_t fragment_id,
1250 uint64_t flags)
1251{
1252 member_replay_request (mem, fragment_id, 0, 0, flags);
1253 // FIXME: return something useful
1254 return NULL;
1255}
1256
1257
1258/**
1259 * Request a message fragment to be replayed.
1260 *
1261 * Useful if messages below the @e max_known_fragment_id given when joining are
1262 * needed and not known to the client.
1263 *
1264 * @param member
1265 * Membership handle.
1266 * @param message_id
1267 * ID of the message this client would like to see replayed.
1268 * @param fragment_offset
1269 * Offset of the fragment within the message to replay.
1270 * @param flags
1271 * Additional flags for the replay request.
1272 * It is used & defined by GNUNET_MULTICAST_ReplayMessageCallback
1273 *
1274 * @return Replay request handle, NULL on error.
1275 */
1276struct GNUNET_MULTICAST_MemberReplayHandle *
1277GNUNET_MULTICAST_member_replay_message (struct GNUNET_MULTICAST_Member *mem,
1278 uint64_t message_id,
1279 uint64_t fragment_offset,
1280 uint64_t flags)
1281{
1282 member_replay_request (mem, 0, message_id, fragment_offset, flags);
1283 // FIXME: return something useful
1284 return NULL;
1285}
1286
1287
1288static void
1289member_to_origin (struct GNUNET_MULTICAST_Member *mem)
1290{
1291 LOG (GNUNET_ERROR_TYPE_DEBUG, "member_to_origin()\n");
1292 struct GNUNET_MULTICAST_Group *grp = &mem->grp;
1293 struct GNUNET_MULTICAST_MemberTransmitHandle *tmit = &mem->tmit;
1294 GNUNET_assert (GNUNET_YES == grp->in_transmit);
1295
1296 size_t buf_size = GNUNET_MULTICAST_FRAGMENT_MAX_SIZE;
1297 struct GNUNET_MULTICAST_RequestHeader *req;
1298 struct GNUNET_MQ_Envelope *
1299 env = GNUNET_MQ_msg_extra (req, buf_size - sizeof(*req),
1300 GNUNET_MESSAGE_TYPE_MULTICAST_REQUEST);
1301
1302 int ret = tmit->notify (tmit->notify_cls, &buf_size, &req[1]);
1303
1304 if (! (GNUNET_YES == ret || GNUNET_NO == ret)
1305 || GNUNET_MULTICAST_FRAGMENT_MAX_SIZE < buf_size)
1306 {
1307 LOG (GNUNET_ERROR_TYPE_ERROR,
1308 "MemberTransmitNotify() returned error or invalid message size. "
1309 "ret=%d, buf_size=%u\n", ret, buf_size);
1310 /* FIXME: handle error */
1311 GNUNET_MQ_discard (env);
1312 return;
1313 }
1314
1315 if (GNUNET_NO == ret && 0 == buf_size)
1316 {
1317 /* Transmission paused. */
1318 GNUNET_MQ_discard (env);
1319 return;
1320 }
1321
1322 req->header.size = htons (sizeof (*req) + buf_size);
1323 req->request_id = GNUNET_htonll (tmit->request_id);
1324 req->fragment_offset = GNUNET_ntohll (tmit->fragment_offset);
1325 tmit->fragment_offset += sizeof (*req) + buf_size;
1326
1327 GNUNET_MQ_send (grp->mq, env);
1328
1329 if (GNUNET_YES == ret)
1330 grp->in_transmit = GNUNET_NO;
1331}
1332
1333
1334/**
1335 * Send a message to the origin of the multicast group.
1336 *
1337 * @param mem
1338 * Membership handle.
1339 * @param request_id
1340 * Application layer ID for the request. Opaque to multicast.
1341 * @param notify
1342 * Callback to call to get the message.
1343 * @param notify_cls
1344 * Closure for @a notify.
1345 *
1346 * @return Handle to cancel request, NULL on error (i.e. request already pending).
1347 */
1348struct GNUNET_MULTICAST_MemberTransmitHandle *
1349GNUNET_MULTICAST_member_to_origin (struct GNUNET_MULTICAST_Member *mem,
1350 uint64_t request_id,
1351 GNUNET_MULTICAST_MemberTransmitNotify notify,
1352 void *notify_cls)
1353{
1354 if (GNUNET_YES == mem->grp.in_transmit)
1355 return NULL;
1356 mem->grp.in_transmit = GNUNET_YES;
1357
1358 struct GNUNET_MULTICAST_MemberTransmitHandle *tmit = &mem->tmit;
1359 tmit->member = mem;
1360 tmit->request_id = request_id;
1361 tmit->fragment_offset = 0;
1362 tmit->notify = notify;
1363 tmit->notify_cls = notify_cls;
1364
1365 member_to_origin (mem);
1366 return tmit;
1367}
1368
1369
1370/**
1371 * Resume message transmission to origin.
1372 *
1373 * @param th
1374 * Transmission to cancel.
1375 */
1376void
1377GNUNET_MULTICAST_member_to_origin_resume (struct GNUNET_MULTICAST_MemberTransmitHandle *th)
1378{
1379 struct GNUNET_MULTICAST_Group *grp = &th->member->grp;
1380 if (0 != grp->acks_pending || GNUNET_YES != grp->in_transmit)
1381 return;
1382 member_to_origin (th->member);
1383}
1384
1385
1386/**
1387 * Cancel request for message transmission to origin.
1388 *
1389 * @param th
1390 * Transmission to cancel.
1391 */
1392void
1393GNUNET_MULTICAST_member_to_origin_cancel (struct GNUNET_MULTICAST_MemberTransmitHandle *th)
1394{
1395 th->member->grp.in_transmit = GNUNET_NO;
1396}
1397
1398
1399/* end of multicast_api.c */
diff --git a/src/multicast/test_multicast.c b/src/multicast/test_multicast.c
deleted file mode 100644
index 70efdcbfb..000000000
--- a/src/multicast/test_multicast.c
+++ /dev/null
@@ -1,758 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file multicast/test_multicast.c
23 * @brief Tests for the Multicast API.
24 * @author Gabor X Toth
25 */
26
27#include <inttypes.h>
28
29#include "platform.h"
30#include "gnunet_crypto_lib.h"
31#include "gnunet_common.h"
32#include "gnunet_util_lib.h"
33#include "gnunet_testing_lib.h"
34#include "gnunet_multicast_service.h"
35
36#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
37
38/**
39 * Return value from 'main'.
40 */
41static int res;
42
43/**
44 * Handle for task for timeout termination.
45 */
46static struct GNUNET_SCHEDULER_Task * end_badly_task;
47
48static const struct GNUNET_CONFIGURATION_Handle *cfg;
49
50struct GNUNET_PeerIdentity this_peer;
51
52struct GNUNET_MULTICAST_Origin *origin;
53struct GNUNET_MULTICAST_Member *member;
54
55struct GNUNET_CRYPTO_EddsaPrivateKey *group_key;
56struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
57
58struct GNUNET_CRYPTO_EcdsaPrivateKey *member_key;
59struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
60
61struct TransmitClosure {
62 struct GNUNET_MULTICAST_OriginTransmitHandle *orig_tmit;
63 struct GNUNET_MULTICAST_MemberTransmitHandle *mem_tmit;
64 char * data[16];
65 uint8_t data_delay[16];
66 uint8_t data_count;
67 uint8_t paused;
68 uint8_t n;
69} tmit_cls;
70
71struct OriginClosure {
72 uint8_t msgs_expected;
73 uint8_t n;
74} origin_cls;
75
76struct MemberClosure {
77 uint8_t msgs_expected;
78 size_t n;
79} member_cls;
80
81struct GNUNET_MessageHeader *join_req, *join_resp;
82
83enum
84{
85 TEST_NONE = 0,
86 TEST_ORIGIN_START = 1,
87 TEST_MEMBER_JOIN_REFUSE = 2,
88 TEST_MEMBER_JOIN_ADMIT = 3,
89 TEST_ORIGIN_TO_ALL = 4,
90 TEST_ORIGIN_TO_ALL_RECV = 5,
91 TEST_MEMBER_TO_ORIGIN = 6,
92 TEST_MEMBER_REPLAY_ERROR = 7,
93 TEST_MEMBER_REPLAY_OK = 8,
94 TEST_MEMBER_PART = 9,
95 TEST_ORIGIN_STOP = 10,
96} test;
97
98uint64_t replay_fragment_id;
99uint64_t replay_flags;
100
101static void
102member_join (int t);
103
104
105/**
106 * Clean up all resources used.
107 */
108static void
109cleanup ()
110{
111 if (NULL != member)
112 {
113 GNUNET_MULTICAST_member_part (member, NULL, NULL);
114 member = NULL;
115 }
116 if (NULL != origin)
117 {
118 GNUNET_MULTICAST_origin_stop (origin, NULL, NULL);
119 origin = NULL;
120 }
121}
122
123
124/**
125 * Terminate the test case (failure).
126 *
127 * @param cls NULL
128 */
129static void
130end_badly (void *cls)
131{
132 res = 1;
133 cleanup ();
134 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Test FAILED.\n");
135}
136
137
138/**
139 * Terminate the test case (success).
140 *
141 * @param cls NULL
142 */
143static void
144end_normally (void *cls)
145{
146 res = 0;
147 cleanup ();
148 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Test PASSED.\n");
149}
150
151
152/**
153 * Finish the test case (successfully).
154 */
155static void
156end ()
157{
158 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ending tests.\n");
159
160 if (end_badly_task != NULL)
161 {
162 GNUNET_SCHEDULER_cancel (end_badly_task);
163 end_badly_task = NULL;
164 }
165 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
166 &end_normally, NULL);
167}
168
169
170static void
171tmit_resume (void *cls)
172{
173 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transmission resumed.\n");
174 struct TransmitClosure *tmit = cls;
175 if (NULL != tmit->orig_tmit)
176 GNUNET_MULTICAST_origin_to_all_resume (tmit->orig_tmit);
177 else if (NULL != tmit->mem_tmit)
178 GNUNET_MULTICAST_member_to_origin_resume (tmit->mem_tmit);
179}
180
181
182static int
183tmit_notify (void *cls, size_t *data_size, void *data)
184{
185 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
186 "Test #%u: origin_tmit_notify()\n", test);
187 struct TransmitClosure *tmit = cls;
188
189 if (0 == tmit->data_count)
190 {
191 *data_size = 0;
192 return GNUNET_YES;
193 }
194
195 uint16_t size = strlen (tmit->data[tmit->n]);
196 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
197 "Transmit notify data: %u bytes available, processing fragment %u/%u (size %u).\n",
198 (unsigned int) *data_size,
199 tmit->n + 1,
200 tmit->data_count,
201 size);
202 if (*data_size < size)
203 {
204 *data_size = 0;
205 GNUNET_assert (0);
206 return GNUNET_SYSERR;
207 }
208
209 if (GNUNET_YES != tmit->paused && 0 < tmit->data_delay[tmit->n])
210 {
211 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transmission paused.\n");
212 tmit->paused = GNUNET_YES;
213 GNUNET_SCHEDULER_add_delayed (
214 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
215 tmit->data_delay[tmit->n]),
216 tmit_resume, tmit);
217 *data_size = 0;
218 return GNUNET_NO;
219 }
220 tmit->paused = GNUNET_NO;
221
222 *data_size = size;
223 GNUNET_memcpy (data, tmit->data[tmit->n], size);
224
225 return ++tmit->n < tmit->data_count ? GNUNET_NO : GNUNET_YES;
226}
227
228
229static void
230member_recv_join_request (void *cls,
231 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_key,
232 const struct GNUNET_MessageHeader *join_msg,
233 struct GNUNET_MULTICAST_JoinHandle *jh)
234{
235 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
236 "Test #%u: member_recv_join_request()\n", test);
237}
238
239
240static void
241origin_stopped (void *cls)
242{
243 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
244 "Test #%u: origin_stopped()\n", test);
245 end ();
246}
247
248
249static void
250schedule_origin_stop (void *cls)
251{
252 test = TEST_ORIGIN_STOP;
253 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
254 "Test #%u: origin_stop()\n", test);
255 GNUNET_MULTICAST_origin_stop (origin, origin_stopped, NULL);
256 origin = NULL;
257}
258
259
260static void
261member_parted (void *cls)
262{
263 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
264 "Test #%u: member_parted()\n", test);
265 member = NULL;
266
267 switch (test)
268 {
269 case TEST_MEMBER_JOIN_REFUSE:
270 // Test 3 starts here
271 member_join (TEST_MEMBER_JOIN_ADMIT);
272 break;
273
274 case TEST_MEMBER_PART:
275 GNUNET_SCHEDULER_add_now (&schedule_origin_stop, NULL);
276 break;
277
278 default:
279 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
280 "Invalid test #%d in member_parted()\n", test);
281 GNUNET_assert (0);
282 }
283}
284
285
286static void
287schedule_member_part (void *cls)
288{
289 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
290 "Test #%u: schedule_member_part()\n", test);
291 GNUNET_MULTICAST_member_part (member, member_parted, NULL);
292}
293
294
295static void
296member_part ()
297{
298 test = TEST_MEMBER_PART;
299 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
300 "Test #%u: member_part()\n", test);
301 // Test 10 starts here
302 GNUNET_SCHEDULER_add_now (&schedule_member_part, NULL);
303}
304
305
306static void
307member_replay_ok ()
308{
309 // Execution of test 8 here
310 test = TEST_MEMBER_REPLAY_OK;
311 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
312 "Test #%u: member_replay_ok()\n", test);
313 replay_fragment_id = 1;
314 replay_flags = 1 | 1<<11;
315 GNUNET_MULTICAST_member_replay_fragment (member, replay_fragment_id,
316 replay_flags);
317}
318
319
320static void
321member_replay_error ()
322{
323 test = TEST_MEMBER_REPLAY_ERROR;
324 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
325 "Test #%u: member_replay_error()\n", test);
326 replay_fragment_id = 1234;
327 replay_flags = 11 | 1<<11;
328 GNUNET_MULTICAST_member_replay_fragment (member, replay_fragment_id,
329 replay_flags);
330}
331
332
333static void
334origin_recv_replay_msg (void *cls,
335 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_key,
336 uint64_t message_id,
337 uint64_t fragment_offset,
338 uint64_t flags,
339 struct GNUNET_MULTICAST_ReplayHandle *rh)
340{
341 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
342 "Test #%u: origin_recv_replay_msg()\n", test);
343 GNUNET_assert (0);
344}
345
346
347static void
348member_recv_replay_msg (void *cls,
349 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_key,
350 uint64_t message_id,
351 uint64_t fragment_offset,
352 uint64_t flags,
353 struct GNUNET_MULTICAST_ReplayHandle *rh)
354{
355 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
356 "Test #%u: member_recv_replay_msg()\n", test);
357 GNUNET_assert (0);
358}
359
360
361static void
362origin_recv_replay_frag (void *cls,
363 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_key,
364 uint64_t fragment_id,
365 uint64_t flags,
366 struct GNUNET_MULTICAST_ReplayHandle *rh)
367{
368 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
369 "Test #%u: origin_recv_replay_frag()"
370 " - fragment_id=%" PRIu64 " flags=%" PRIu64 "\n",
371 test, fragment_id, flags);
372 GNUNET_assert (replay_fragment_id == fragment_id && replay_flags == flags);
373 switch (test)
374 {
375 case TEST_MEMBER_REPLAY_ERROR:
376 // Test 8 starts here
377 GNUNET_MULTICAST_replay_response (rh, NULL, GNUNET_SYSERR);
378 member_replay_ok ();
379 break;
380
381 case TEST_MEMBER_REPLAY_OK:
382 {
383 struct GNUNET_MULTICAST_MessageHeader mmsg = {
384 .header = {
385 .type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE),
386 .size = htons (sizeof (mmsg)),
387 },
388 .fragment_id = GNUNET_htonll (1),
389 .message_id = GNUNET_htonll (1),
390 .fragment_offset = 0,
391 .group_generation = GNUNET_htonll (1),
392 .flags = 0,
393 };
394 member_cls.n = 0;
395 member_cls.msgs_expected = 1;
396 GNUNET_MULTICAST_replay_response (rh, &mmsg.header, GNUNET_MULTICAST_REC_OK);
397 GNUNET_MULTICAST_replay_response_end (rh);
398 break;
399 }
400
401 default:
402 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
403 "Invalid test #%d in origin_recv_replay_frag()\n", test);
404 GNUNET_assert (0);
405 }
406}
407
408
409static void
410member_recv_replay_frag (void *cls,
411 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_key,
412 uint64_t fragment_id,
413 uint64_t flags,
414 struct GNUNET_MULTICAST_ReplayHandle *rh)
415{
416 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
417 "Test #%u: member_recv_replay_frag()\n", test);
418 GNUNET_assert (0);
419}
420
421
422static void
423origin_recv_request (void *cls,
424 const struct GNUNET_MULTICAST_RequestHeader *req)
425{
426 struct OriginClosure *ocls = cls;
427 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
428 "Test #%u: origin_recv_request()\n", test);
429 if (++ocls->n != ocls->msgs_expected)
430 return;
431
432 GNUNET_assert (0 == memcmp (&req->member_pub_key,
433 &member_pub_key, sizeof (member_pub_key)));
434
435 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
436 "Test #%u: verify message content, take first 3 bytes: %.3s\n",
437 test, (char *)&req[1]);
438 GNUNET_assert (0 == memcmp (&req[1], "abc", 3));
439
440 // Test 7 starts here
441 member_replay_error ();
442}
443
444
445static void
446member_to_origin ()
447{
448 test = TEST_MEMBER_TO_ORIGIN;
449 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
450 "Test #%u: member_to_origin()\n", test);
451
452 struct TransmitClosure *tmit = &tmit_cls;
453 *tmit = (struct TransmitClosure) {};
454 tmit->data[0] = "abc def";
455 tmit->data[1] = "ghi jkl mno";
456 tmit->data_delay[1] = 2;
457 tmit->data[2] = "pqr stuw xyz";
458 tmit->data_count = 3;
459
460 origin_cls.n = 0;
461 origin_cls.msgs_expected = 1;
462
463 tmit->mem_tmit = GNUNET_MULTICAST_member_to_origin (member, 1,
464 tmit_notify, tmit);
465}
466
467
468static void
469member_recv_message (void *cls,
470 const struct GNUNET_MULTICAST_MessageHeader *msg)
471{
472 struct MemberClosure *mcls = cls;
473
474 // Test 5 starts here after message has been received from origin
475 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
476 "Test #%u: member_recv_message() %u/%u\n",
477 test,
478 (unsigned int) (mcls->n + 1),
479 mcls->msgs_expected);
480 if (++mcls->n != mcls->msgs_expected)
481 return;
482
483 // FIXME: check message content
484
485 switch (test)
486 {
487 case TEST_ORIGIN_TO_ALL:
488 test = TEST_ORIGIN_TO_ALL_RECV;
489 break;
490
491 case TEST_ORIGIN_TO_ALL_RECV:
492 // Test 6 starts here
493 member_to_origin ();
494 break;
495
496 case TEST_MEMBER_REPLAY_OK:
497 // Test 9 starts here
498 GNUNET_assert (replay_fragment_id == GNUNET_ntohll (msg->fragment_id));
499 member_part ();
500 break;
501
502 default:
503 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
504 "Invalid test #%d in origin_recv_message()\n", test);
505 GNUNET_assert (0);
506 }
507}
508
509
510static void
511origin_recv_message (void *cls,
512 const struct GNUNET_MULTICAST_MessageHeader *msg)
513{
514 struct OriginClosure *ocls = cls;
515 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
516 "Test #%u: origin_recv_message() %u/%u\n",
517 test, ocls->n + 1, ocls->msgs_expected);
518 if (++ocls->n != ocls->msgs_expected)
519 return;
520
521 // FIXME: check message content
522
523 switch (test)
524 {
525 case TEST_ORIGIN_TO_ALL:
526 // Prepare to execute test 5
527 test = TEST_ORIGIN_TO_ALL_RECV;
528 break;
529
530 case TEST_ORIGIN_TO_ALL_RECV:
531 // Test 6 starts here
532 member_to_origin ();
533 break;
534
535 default:
536 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
537 "Invalid test #%d in origin_recv_message()\n", test);
538 GNUNET_assert (0);
539 }
540}
541
542
543static void
544origin_to_all ()
545{
546 test = TEST_ORIGIN_TO_ALL;
547 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
548 "Test #%u: origin_to_all()\n", test);
549
550 struct TransmitClosure *tmit = &tmit_cls;
551 *tmit = (struct TransmitClosure) {};
552 tmit->data[0] = "ABC DEF";
553 tmit->data[1] = GNUNET_malloc (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD + 1);
554 uint16_t i;
555 for (i = 0; i < GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD; i++)
556 tmit->data[1][i] = (0 == i % 10000) ? '0' + i / 10000 : '_';
557 tmit->data[2] = "GHI JKL MNO";
558 tmit->data_delay[2] = 2;
559 tmit->data[3] = "PQR STUW XYZ";
560 tmit->data_count = 4;
561
562 origin_cls.n = member_cls.n = 0;
563 origin_cls.msgs_expected = member_cls.msgs_expected = tmit->data_count;
564
565 tmit->orig_tmit = GNUNET_MULTICAST_origin_to_all (origin, 1, 1,
566 tmit_notify, tmit);
567}
568
569
570static void
571member_recv_join_decision (void *cls,
572 int is_admitted,
573 const struct GNUNET_PeerIdentity *peer,
574 uint16_t relay_count,
575 const struct GNUNET_PeerIdentity *relays,
576 const struct GNUNET_MessageHeader *join_msg)
577{
578 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
579 "Test #%u: member_recv_join_decision() - is_admitted: %d\n",
580 test, is_admitted);
581
582 GNUNET_assert (join_msg->size == join_resp->size);
583 GNUNET_assert (join_msg->type == join_resp->type);
584 GNUNET_assert (0 == memcmp (join_msg, join_resp, ntohs (join_resp->size)));
585
586 switch (test)
587 {
588 case TEST_MEMBER_JOIN_REFUSE:
589 GNUNET_assert (0 == relay_count);
590 // Test 3 starts here
591 GNUNET_SCHEDULER_add_now (&schedule_member_part, NULL);
592 break;
593
594 case TEST_MEMBER_JOIN_ADMIT:
595 GNUNET_assert (1 == relay_count);
596 GNUNET_assert (0 == memcmp (relays, &this_peer, sizeof (this_peer)));
597 // Test 4 starts here
598 origin_to_all ();
599 break;
600
601 default:
602 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
603 "Invalid test #%d in member_recv_join_decision()\n", test);
604 GNUNET_assert (0);
605 }
606}
607
608/**
609 * Test: origin receives join request
610 */
611static void
612origin_recv_join_request (void *cls,
613 const struct GNUNET_CRYPTO_EcdsaPublicKey *mem_key,
614 const struct GNUNET_MessageHeader *join_msg,
615 struct GNUNET_MULTICAST_JoinHandle *jh)
616{
617 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
618 "Test #%u: origin_recv_join_request()\n", test);
619
620 GNUNET_assert (0 == memcmp (mem_key, &member_pub_key, sizeof (member_pub_key)));
621 GNUNET_assert (join_msg->size == join_req->size);
622 GNUNET_assert (join_msg->type == join_req->type);
623 GNUNET_assert (0 == memcmp (join_msg, join_req, ntohs (join_req->size)));
624
625 char data[] = "here's the decision";
626 uint8_t data_size = strlen (data) + 1;
627 join_resp = GNUNET_malloc (sizeof (join_resp) + data_size);
628 join_resp->size = htons (sizeof (join_resp) + data_size);
629 join_resp->type = htons (456);
630 GNUNET_memcpy (&join_resp[1], data, data_size);
631
632 switch (test)
633 {
634 case TEST_MEMBER_JOIN_REFUSE:
635 // Test 3 starts here
636 GNUNET_MULTICAST_join_decision (jh, GNUNET_NO, 0, NULL, join_resp);
637 break;
638
639 case TEST_MEMBER_JOIN_ADMIT:
640 // Test 3 is running
641 GNUNET_MULTICAST_join_decision (jh, GNUNET_YES, 1, &this_peer, join_resp);
642 break;
643
644 default:
645 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
646 "Invalid test #%d in origin_recv_join_request()\n", test);
647 GNUNET_assert (0);
648 break;
649 }
650}
651
652/**
653 * Test: member joins multicast group
654 */
655static void
656member_join (int t)
657{
658 test = t;
659 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
660 "Test #%u: member_join()\n", test);
661
662 member_key = GNUNET_CRYPTO_ecdsa_key_create ();
663 GNUNET_CRYPTO_ecdsa_key_get_public (member_key, &member_pub_key);
664
665 if (NULL != join_req)
666 GNUNET_free (join_req);
667
668 char data[] = "let me in!";
669 uint8_t data_size = strlen (data) + 1;
670 join_req = GNUNET_malloc (sizeof (join_req) + data_size);
671 join_req->size = htons (sizeof (join_req) + data_size);
672 join_req->type = htons (123);
673 GNUNET_memcpy (&join_req[1], data, data_size);
674
675 member = GNUNET_MULTICAST_member_join (cfg, &group_pub_key, member_key,
676 &this_peer, 1, &this_peer, join_req,
677 member_recv_join_request,
678 member_recv_join_decision,
679 member_recv_replay_frag,
680 member_recv_replay_msg,
681 member_recv_message,
682 &member_cls);
683}
684
685/**
686 * Test: Start a multicast group as origin
687 */
688static void
689origin_start ()
690{
691 test = TEST_ORIGIN_START;
692 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
693 "Test #%u: origin_start()\n", test);
694
695 group_key = GNUNET_CRYPTO_eddsa_key_create ();
696 GNUNET_CRYPTO_eddsa_key_get_public (group_key, &group_pub_key);
697
698 origin = GNUNET_MULTICAST_origin_start (cfg, group_key, 0,
699 origin_recv_join_request,
700 origin_recv_replay_frag,
701 origin_recv_replay_msg,
702 origin_recv_request,
703 origin_recv_message,
704 &origin_cls);
705 // Test 2 starts here
706 member_join (TEST_MEMBER_JOIN_REFUSE);
707}
708
709
710/**
711 * Main function of the test, run from scheduler.
712 *
713 * @param cls NULL
714 * @param cfg configuration we use (also to connect to Multicast service)
715 * @param peer handle to access more of the peer (not used)
716 */
717static void
718#if DEBUG_TEST_MULTICAST
719run (void *cls,
720 char *const *args,
721 const char *cfgfile,
722 const struct GNUNET_CONFIGURATION_Handle *c)
723#else
724run (void *cls,
725 const struct GNUNET_CONFIGURATION_Handle *c,
726 struct GNUNET_TESTING_Peer *peer)
727#endif
728{
729 cfg = c;
730 end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
731 &end_badly, NULL);
732 GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer);
733
734 // Test 1 starts here
735 origin_start ();
736}
737
738
739int
740main (int argc, char *argv[])
741{
742 res = 1;
743#if DEBUG_TEST_MULTICAST
744 const struct GNUNET_GETOPT_CommandLineOption opts[] = {
745 GNUNET_GETOPT_OPTION_END
746 };
747 if (GNUNET_OK != GNUNET_PROGRAM_run (argc, argv, "test-multicast",
748 "test-multicast [options]",
749 opts, &run, NULL))
750 return 1;
751#else
752 if (0 != GNUNET_TESTING_peer_run ("test-multicast", "test_multicast.conf", &run, NULL))
753 return 1;
754#endif
755 return res;
756}
757
758/* end of test_multicast.c */
diff --git a/src/multicast/test_multicast.conf b/src/multicast/test_multicast.conf
deleted file mode 100644
index b2f1a764b..000000000
--- a/src/multicast/test_multicast.conf
+++ /dev/null
@@ -1,56 +0,0 @@
1[testbed]
2HOSTNAME = localhost
3
4[arm]
5GLOBAL_POSTFIX=-L ERROR
6
7[multicast]
8#PREFIX = tmux new-window gdb -x ./cmd.gdb --args
9#PREFIX = valgrind --leak-check=full
10UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-multicast.sock
11
12[vpn]
13START_ON_DEMAND = NO
14
15[peerinfo]
16# Do not use shipped gnunet HELLOs
17USE_INCLUDED_HELLOS = NO
18
19# Option to disable all disk IO; only useful for testbed runs
20# (large-scale experiments); disables persistence of HELLOs!
21NO_IO = YES
22
23[hostlist]
24IMMEDIATE_START = NO
25START_ON_DEMAND = NO
26
27[nat]
28ENABLE_UPNP = NO
29
30[fs]
31IMMEDIATE_START = NO
32START_ON_DEMAND = NO
33
34[vpn]
35IMMEDIATE_START = NO
36START_ON_DEMAND = NO
37
38[revocation]
39IMMEDIATE_START = NO
40START_ON_DEMAND = NO
41
42[gns]
43IMMEDIATE_START = NO
44START_ON_DEMAND = NO
45
46[namestore]
47IMMEDIATE_START = NO
48START_ON_DEMAND = NO
49
50[namecache]
51IMMEDIATE_START = NO
52START_ON_DEMAND = NO
53
54[topology]
55IMMEDIATE_START = NO
56START_ON_DEMAND = NO
diff --git a/src/multicast/test_multicast_2peers.c b/src/multicast/test_multicast_2peers.c
deleted file mode 100644
index ea996026c..000000000
--- a/src/multicast/test_multicast_2peers.c
+++ /dev/null
@@ -1,520 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file multicast/test_multicast_2peers.c
23 * @brief Tests for the Multicast API with two peers doing the ping
24 * pong test.
25 * @author xrs
26 */
27
28#include <inttypes.h>
29
30#include "platform.h"
31#include "gnunet_crypto_lib.h"
32#include "gnunet_common.h"
33#include "gnunet_util_lib.h"
34#include "gnunet_testbed_service.h"
35#include "gnunet_multicast_service.h"
36
37#define NUM_PEERS 2
38
39static struct GNUNET_TESTBED_Operation *op0;
40static struct GNUNET_TESTBED_Operation *op1;
41static struct GNUNET_TESTBED_Operation *pi_op0;
42static struct GNUNET_TESTBED_Operation *pi_op1;
43
44static struct GNUNET_TESTBED_Peer **peers;
45const struct GNUNET_PeerIdentity *peer_id[2];
46
47static struct GNUNET_SCHEDULER_Task *timeout_tid;
48
49static struct GNUNET_MULTICAST_Origin *origin;
50static struct GNUNET_MULTICAST_Member *member;
51
52struct GNUNET_CRYPTO_EddsaPrivateKey *group_key;
53struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
54
55struct GNUNET_CRYPTO_EcdsaPrivateKey *member_key;
56struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
57
58/**
59 * Global result for testcase.
60 */
61static int result;
62
63
64/**
65 * Function run on CTRL-C or shutdown (i.e. success/timeout/etc.).
66 * Cleans up.
67 */
68static void
69shutdown_task (void *cls)
70{
71 if (NULL != op0)
72 {
73 GNUNET_TESTBED_operation_done (op0);
74 op0 = NULL;
75 }
76 if (NULL != op1)
77 {
78 GNUNET_TESTBED_operation_done (op1);
79 op1 = NULL;
80 }
81 if (NULL != pi_op0)
82 {
83 GNUNET_TESTBED_operation_done (pi_op0);
84 pi_op0 = NULL;
85 }
86 if (NULL != pi_op1)
87 {
88 GNUNET_TESTBED_operation_done (pi_op1);
89 pi_op1 = NULL;
90 }
91 if (NULL != timeout_tid)
92 {
93 GNUNET_SCHEDULER_cancel (timeout_tid);
94 timeout_tid = NULL;
95 }
96}
97
98
99static void
100timeout_task (void *cls)
101{
102 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
103 "Timeout!\n");
104 result = GNUNET_SYSERR;
105 GNUNET_SCHEDULER_shutdown ();
106}
107
108
109static void
110member_join_request (void *cls,
111 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
112 const struct GNUNET_MessageHeader *join_msg,
113 struct GNUNET_MULTICAST_JoinHandle *jh)
114{
115 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
116 "Member sent a join request.\n");
117
118}
119
120
121static int
122notify (void *cls,
123 size_t *data_size,
124 void *data)
125{
126
127 char text[] = "ping";
128 *data_size = strlen(text)+1;
129 GNUNET_memcpy(data, text, *data_size);
130
131 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
132 "Member sents message to origin: %s\n", text);
133
134 return GNUNET_YES;
135}
136
137
138static void
139member_join_decision (void *cls,
140 int is_admitted,
141 const struct GNUNET_PeerIdentity *peer,
142 uint16_t relay_count,
143 const struct GNUNET_PeerIdentity *relays,
144 const struct GNUNET_MessageHeader *join_msg)
145{
146 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
147 "Member received a decision from origin: %s\n",
148 (GNUNET_YES == is_admitted)
149 ? "accepted"
150 : "rejected");
151
152 if (GNUNET_YES == is_admitted)
153 {
154 struct GNUNET_MULTICAST_MemberTransmitHandle *req;
155
156 // FIXME: move to MQ-style API!
157 req = GNUNET_MULTICAST_member_to_origin (member,
158 0,
159 &notify,
160 NULL);
161 }
162}
163
164
165static void
166member_message (void *cls,
167 const struct GNUNET_MULTICAST_MessageHeader *msg)
168{
169 if (0 != strncmp ("pong", (char *)&msg[1], 4))
170 {
171 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "member did not receive pong\n");
172 result = GNUNET_SYSERR;
173 GNUNET_SCHEDULER_shutdown ();
174 }
175
176 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
177 "member receives: %s\n", (char *)&msg[1]);
178
179 // Testcase ends here.
180 result = GNUNET_YES;
181 GNUNET_SCHEDULER_shutdown ();
182}
183
184
185static void
186origin_join_request (void *cls,
187 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
188 const struct GNUNET_MessageHeader *join_msg,
189 struct GNUNET_MULTICAST_JoinHandle *jh)
190{
191 struct GNUNET_MessageHeader *join_resp;
192
193 uint8_t data_size = ntohs (join_msg->size);
194
195 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
196 "origin got a join request...\n");
197 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
198 "origin receives: '%s'\n", (char *)&join_msg[1]);
199
200 const char data[] = "Come in!";
201 data_size = strlen (data) + 1;
202 join_resp = GNUNET_malloc (sizeof (join_resp) + data_size);
203 join_resp->size = htons (sizeof (join_resp) + data_size);
204 join_resp->type = htons (123);
205 GNUNET_memcpy (&join_resp[1], data, data_size);
206
207 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
208 "origin sends: '%s'\n", data);
209
210 GNUNET_MULTICAST_join_decision (jh,
211 GNUNET_YES,
212 0,
213 NULL,
214 join_resp);
215 GNUNET_free (join_resp);
216 result = GNUNET_OK;
217}
218
219
220int
221origin_notify (void *cls,
222 size_t *data_size,
223 void *data)
224{
225 char text[] = "pong";
226
227 *data_size = strlen(text)+1;
228 GNUNET_memcpy (data,
229 text,
230 *data_size);
231
232 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "origin sends (to all): %s\n", text);
233
234 return GNUNET_YES;
235}
236
237
238static void
239origin_request (void *cls,
240 const struct GNUNET_MULTICAST_RequestHeader *req)
241{
242 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "origin receives: %s\n", (char *)&req[1]);
243
244 if (0 != strncmp ("ping", (char *)&req[1], 4))
245 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "origin didn't reveice a correct request");
246
247 GNUNET_MULTICAST_origin_to_all (origin,
248 0,
249 0,
250 origin_notify,
251 NULL);
252}
253
254
255static void
256origin_message (void *cls,
257 const struct GNUNET_MULTICAST_MessageHeader *msg)
258{
259 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "origin message msg\n");
260}
261
262
263static void
264service_connect1 (void *cls,
265 struct GNUNET_TESTBED_Operation *op,
266 void *ca_result,
267 const char *emsg)
268{
269 member = ca_result;
270
271 if (NULL == member)
272 {
273 result = GNUNET_SYSERR;
274 GNUNET_SCHEDULER_shutdown ();
275 }
276 else
277 {
278 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Connected to multicast service of member\n");
279 }
280}
281
282
283static void
284multicast_da1 (void *cls,
285 void * op_result)
286{
287 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
288 "Member parting from multicast group\n");
289
290 GNUNET_MULTICAST_member_part (member, NULL, NULL);
291}
292
293
294static void *
295multicast_ca1 (void *cls,
296 const struct GNUNET_CONFIGURATION_Handle *cfg)
297{
298 struct GNUNET_MessageHeader *join_msg;
299 void *ret;
300
301 // Get members keys
302 member_key = GNUNET_CRYPTO_ecdsa_key_create ();
303 GNUNET_CRYPTO_ecdsa_key_get_public (member_key, &member_pub_key);
304
305 char data[] = "Hi, can I enter?";
306 uint8_t data_size = strlen (data) + 1;
307 join_msg = GNUNET_malloc (sizeof (join_msg) + data_size);
308 join_msg->size = htons (sizeof (join_msg) + data_size);
309 join_msg->type = htons (123);
310 GNUNET_memcpy (&join_msg[1], data, data_size);
311
312 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
313 "Members tries to join multicast group\n");
314
315 ret = GNUNET_MULTICAST_member_join (cfg,
316 &group_pub_key,
317 member_key,
318 peer_id[0],
319 0,
320 NULL,
321 join_msg, /* join message */
322 member_join_request,
323 member_join_decision,
324 NULL, /* no test for member_replay_frag */
325 NULL, /* no test for member_replay_msg */
326 member_message,
327 NULL);
328 GNUNET_free (join_msg);
329 return ret;
330}
331
332
333static void
334peer_information_cb (void *cls,
335 struct GNUNET_TESTBED_Operation *op,
336 const struct GNUNET_TESTBED_PeerInformation *pinfo,
337 const char *emsg)
338{
339 int i = (int) (long) cls;
340
341 if (NULL == pinfo)
342 {
343 result = GNUNET_SYSERR;
344 GNUNET_SCHEDULER_shutdown ();
345 }
346
347 peer_id[i] = pinfo->result.id;
348
349 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
350 "Got peer information of %s (%s)\n", (0==i)?"origin":"member" ,GNUNET_i2s(pinfo->result.id));
351
352 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
353 "Create member peer\n");
354
355 if (0 == i)
356 {
357 /* connect to multicast service of member */
358 op1 = GNUNET_TESTBED_service_connect (NULL, /* Closure for operation */
359 peers[1], /* The peer whose service to connect to */
360 "multicast", /* The name of the service */
361 service_connect1, /* callback to call after a handle to service
362 is opened */
363 NULL, /* closure for the above callback */
364 multicast_ca1, /* callback to call with peer's configuration;
365 this should open the needed service connection */
366 multicast_da1, /* callback to be called when closing the
367 opened service connection */
368 NULL); /* closure for the above two callbacks */
369 }
370}
371
372
373/**
374 * Test logic of peer "0" being origin starts here.
375 *
376 * @param cls closure, for the example: NULL
377 * @param op should be equal to "dht_op"
378 * @param ca_result result of the connect operation, the
379 * connection to the DHT service
380 * @param emsg error message, if testbed somehow failed to
381 * connect to the DHT.
382 */
383static void
384service_connect0 (void *cls,
385 struct GNUNET_TESTBED_Operation *op,
386 void *ca_result,
387 const char *emsg)
388{
389 origin = ca_result;
390
391 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
392 "Connected to multicast service of origin\n");
393
394 // Get GNUnet identity of origin
395 pi_op0 = GNUNET_TESTBED_peer_get_information (peers[0],
396 GNUNET_TESTBED_PIT_IDENTITY,
397 peer_information_cb,
398 (void *) 0);
399 // Get GNUnet identity of member
400 pi_op1 = GNUNET_TESTBED_peer_get_information (peers[1],
401 GNUNET_TESTBED_PIT_IDENTITY,
402 peer_information_cb,
403 (void *) 1);
404
405 /* Connection to service successful. Here we'd usually do something with
406 * the service. */
407 result = GNUNET_OK;
408 //GNUNET_SCHEDULER_shutdown (); /* Also kills the testbed */
409}
410
411
412
413/**
414 * Function run when service multicast has started and is providing us
415 * with a configuration file.
416 */
417static void *
418multicast_ca0 (void *cls,
419 const struct GNUNET_CONFIGURATION_Handle *cfg)
420{
421 group_key = GNUNET_CRYPTO_eddsa_key_create ();
422 GNUNET_CRYPTO_eddsa_key_get_public (group_key, &group_pub_key);
423
424 return GNUNET_MULTICAST_origin_start (cfg,
425 group_key,
426 0,
427 origin_join_request,
428 NULL, /* no test for origin_replay_frag */
429 NULL, /* no test for origin_replay_msg */
430 origin_request,
431 origin_message,
432 NULL);
433}
434
435static void
436multicast_da0 (void *cls,
437 void *op_result)
438{
439 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
440 "Origin closes multicast group\n");
441
442 GNUNET_MULTICAST_origin_stop (origin, NULL, NULL);
443}
444
445
446/**
447 * Main function inovked from TESTBED once all of the
448 * peers are up and running. This one then connects
449 * just to the multicast service of peer 0 and 1.
450 * Peer 0 is going to be origin.
451 * Peer 1 is going to be one member.
452 * Origin will start a multicast group and the member will try to join it.
453 * After that we execute some multicast test.
454 *
455 * @param cls closure
456 * @param h the run handle
457 * @param peers started peers for the test
458 * @param num_peers size of the 'peers' array
459 * @param links_succeeded number of links between peers that were created
460 * @param links_failed number of links testbed was unable to establish
461 */
462static void
463testbed_master (void *cls,
464 struct GNUNET_TESTBED_RunHandle *h,
465 unsigned int num_peers,
466 struct GNUNET_TESTBED_Peer **p,
467 unsigned int links_succeeded,
468 unsigned int links_failed)
469{
470 /* Testbed is ready with peers running and connected in a pre-defined overlay
471 topology (FIXME) */
472 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
473 "Connected to testbed_master()\n");
474
475 peers = p;
476
477 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
478 "Create origin peer\n");
479 op0 = GNUNET_TESTBED_service_connect (NULL, /* Closure for operation */
480 peers[0], /* The peer whose service to connect to */
481 "multicast", /* The name of the service */
482 service_connect0, /* callback to call after a handle to service
483 is opened */
484 NULL, /* closure for the above callback */
485 multicast_ca0, /* callback to call with peer's configuration;
486 this should open the needed service connection */
487 multicast_da0, /* callback to be called when closing the
488 opened service connection */
489 NULL); /* closure for the above two callbacks */
490
491 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); /* Schedule a new task on shutdown */
492
493 /* Schedule the shutdown task with a delay of a few Seconds */
494 timeout_tid = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 50),
495 &timeout_task, NULL);
496}
497
498
499int
500main (int argc, char *argv[])
501{
502 int ret;
503
504 result = GNUNET_SYSERR;
505 ret = GNUNET_TESTBED_test_run
506 ("test-multicast-2peers", /* test case name */
507 "test_multicast.conf", /* template configuration */
508 NUM_PEERS, /* number of peers to start */
509 0LL, /* Event mask - set to 0 for no event notifications */
510 NULL, /* Controller event callback */
511 NULL, /* Closure for controller event callback */
512 testbed_master, /* continuation callback to be called when testbed setup is complete */
513 NULL); /* Closure for the test_master callback */
514 if ( (GNUNET_OK != ret) || (GNUNET_OK != result) )
515 return 1;
516 return 0;
517}
518
519
520/* end of test_multicast_2peers.c */
diff --git a/src/multicast/test_multicast_line.conf b/src/multicast/test_multicast_line.conf
deleted file mode 100644
index c1ce7c63f..000000000
--- a/src/multicast/test_multicast_line.conf
+++ /dev/null
@@ -1,63 +0,0 @@
1[testbed]
2HOSTNAME = localhost
3OVERLAY_TOPOLOGY = LINE
4
5[arm]
6GLOBAL_POSTFIX=-L ERROR
7
8[multicast]
9#PREFIX = tmux new-window gdb -x ./cmd.gdb --args
10#PREFIX = valgrind --leak-check=full
11UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-multicast.sock
12
13[vpn]
14START_ON_DEMAND = NO
15
16[peerinfo]
17# Do not use shipped gnunet HELLOs
18USE_INCLUDED_HELLOS = NO
19
20# Option to disable all disk IO; only useful for testbed runs
21# (large-scale experiments); disables persistence of HELLOs!
22NO_IO = YES
23
24[cadet]
25ID_ANNOUNCE_TIME = 5 s
26
27[hostlist]
28IMMEDIATE_START = NO
29START_ON_DEMAND = NO
30
31[nat]
32ENABLE_UPNP = NO
33
34[fs]
35IMMEDIATE_START = NO
36START_ON_DEMAND = NO
37
38[vpn]
39IMMEDIATE_START = NO
40START_ON_DEMAND = NO
41
42[revocation]
43IMMEDIATE_START = NO
44START_ON_DEMAND = NO
45
46[gns]
47IMMEDIATE_START = NO
48START_ON_DEMAND = NO
49
50[namestore]
51IMMEDIATE_START = NO
52START_ON_DEMAND = NO
53
54[namecache]
55IMMEDIATE_START = NO
56START_ON_DEMAND = NO
57
58[topology]
59IMMEDIATE_START = NO
60START_ON_DEMAND = NO
61
62[nse]
63WORKBITS = 0
diff --git a/src/multicast/test_multicast_multipeer.c b/src/multicast/test_multicast_multipeer.c
deleted file mode 100644
index 9b44e05db..000000000
--- a/src/multicast/test_multicast_multipeer.c
+++ /dev/null
@@ -1,643 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file multicast/test_multicast_multipeers.c
23 * @brief Tests for the Multicast API with multiple peers.
24 * @author xrs
25 */
26
27#include <inttypes.h>
28
29#include "platform.h"
30#include "gnunet_crypto_lib.h"
31#include "gnunet_common.h"
32#include "gnunet_util_lib.h"
33#include "gnunet_testbed_service.h"
34#include "gnunet_multicast_service.h"
35
36#define PEERS_REQUESTED 12
37
38struct MulticastPeerContext
39{
40 int peer; /* peer number */
41 struct GNUNET_CRYPTO_EcdsaPrivateKey *key;
42 const struct GNUNET_PeerIdentity *id;
43 struct GNUNET_TESTBED_Operation *op; /* not yet in use */
44 struct GNUNET_TESTBED_Operation *pi_op; /* not yet in use */
45 int test_ok;
46};
47
48enum pingpong
49{
50 PING = 1,
51 PONG = 2
52};
53
54struct pingpong_msg
55{
56 int peer;
57 enum pingpong msg;
58};
59
60static void service_connect (void *cls,
61 struct GNUNET_TESTBED_Operation *op,
62 void *ca_result,
63 const char *emsg);
64
65static struct MulticastPeerContext **multicast_peers;
66static struct GNUNET_TESTBED_Peer **peers;
67
68static struct GNUNET_TESTBED_Operation *op[PEERS_REQUESTED];
69static struct GNUNET_TESTBED_Operation *pi_op[PEERS_REQUESTED];
70
71static struct GNUNET_MULTICAST_Origin *origin;
72static struct GNUNET_MULTICAST_Member *members[PEERS_REQUESTED]; /* first element always empty */
73
74static struct GNUNET_SCHEDULER_Task *timeout_tid;
75
76static struct GNUNET_CRYPTO_EddsaPrivateKey *group_key;
77static struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
78static struct GNUNET_HashCode group_pub_key_hash;
79
80/**
81 * Global result for testcase.
82 */
83static int result;
84
85/**
86 * Function run on CTRL-C or shutdown (i.e. success/timeout/etc.).
87 * Cleans up.
88 */
89static void
90shutdown_task (void *cls)
91{
92 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
93 "shutdown_task!\n");
94 for (int i=0;i<PEERS_REQUESTED;i++)
95 {
96 if (NULL != op[i])
97 {
98 GNUNET_TESTBED_operation_done(op[i]);
99 op[i] = NULL;
100 }
101 if (NULL != pi_op[i])
102 {
103 GNUNET_TESTBED_operation_done (pi_op[i]);
104 pi_op[i] = NULL;
105 }
106 }
107
108 if (NULL != multicast_peers)
109 {
110 for (int i=0; i < PEERS_REQUESTED; i++)
111 {
112 GNUNET_free_non_null (multicast_peers[i]->key);
113 GNUNET_free (multicast_peers[i]);
114 multicast_peers[i] = NULL;
115 }
116 GNUNET_free (multicast_peers);
117 multicast_peers = NULL;
118 }
119
120 if (NULL != timeout_tid)
121 {
122 GNUNET_SCHEDULER_cancel (timeout_tid);
123 timeout_tid = NULL;
124 }
125}
126
127
128static void
129timeout_task (void *cls)
130{
131 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
132 "Timeout!\n");
133 result = GNUNET_SYSERR;
134 GNUNET_SCHEDULER_shutdown ();
135}
136
137
138static void
139member_join_request (void *cls,
140 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
141 const struct GNUNET_MessageHeader *join_msg,
142 struct GNUNET_MULTICAST_JoinHandle *jh)
143{
144 struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls;
145 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
146 "Peer #%u (%s) sent a join request.\n",
147 mc_peer->peer,
148 GNUNET_i2s (multicast_peers[mc_peer->peer]->id));
149}
150
151
152static int
153notify (void *cls,
154 size_t *data_size,
155 void *data)
156{
157 struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls;
158
159 struct pingpong_msg *pp_msg = GNUNET_new (struct pingpong_msg);
160 pp_msg->peer = mc_peer->peer;
161 pp_msg->msg = PING;
162
163 *data_size = sizeof (struct pingpong_msg);
164 GNUNET_memcpy(data, pp_msg, *data_size);
165 GNUNET_free (pp_msg);
166
167 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
168 "Peer #%u sents ping to origin\n", mc_peer->peer);
169
170 return GNUNET_YES;
171}
172
173
174static void
175member_join_decision (void *cls,
176 int is_admitted,
177 const struct GNUNET_PeerIdentity *peer,
178 uint16_t relay_count,
179 const struct GNUNET_PeerIdentity *relays,
180 const struct GNUNET_MessageHeader *join_msg)
181{
182 struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls;
183
184 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
185 "Peer #%u (%s) received a decision from origin: %s\n",
186 mc_peer->peer,
187 GNUNET_i2s (multicast_peers[mc_peer->peer]->id),
188 (GNUNET_YES == is_admitted)?"accepted":"rejected");
189
190 if (GNUNET_YES == is_admitted)
191 {
192 GNUNET_MULTICAST_member_to_origin (members[mc_peer->peer],
193 0,
194 notify,
195 cls);
196
197 }
198}
199
200
201static void
202member_replay_frag ()
203{
204 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
205 "member replay frag...\n");
206}
207
208
209static void
210member_replay_msg ()
211{
212 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
213 "member replay msg...\n");
214}
215
216
217static void
218origin_disconnected_cb (void *cls)
219{
220 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
221 "Origin disconnected. Shutting down.\n");
222 result = GNUNET_YES;
223 GNUNET_SCHEDULER_shutdown ();
224}
225
226
227static void
228member_disconnected_cb (void *cls)
229{
230 for (int i = 1; i < PEERS_REQUESTED; ++i)
231 if (GNUNET_NO == multicast_peers[i]->test_ok)
232 return;
233 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
234 "All member disconnected. Stopping origin.\n");
235 GNUNET_MULTICAST_origin_stop (origin, origin_disconnected_cb, cls);
236}
237
238
239static void
240member_message (void *cls,
241 const struct GNUNET_MULTICAST_MessageHeader *msg)
242{
243 struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls;
244 struct pingpong_msg *pp_msg = (struct pingpong_msg*) &(msg[1]);
245
246 if (PONG == pp_msg->msg && mc_peer->peer == pp_msg->peer)
247 {
248 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
249 "peer #%i (%s) receives a pong\n",
250 mc_peer->peer,
251 GNUNET_i2s (multicast_peers[mc_peer->peer]->id));
252 mc_peer->test_ok = GNUNET_OK;
253 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
254 "peer #%u (%s) parting from multicast group\n",
255 mc_peer->peer,
256 GNUNET_i2s (multicast_peers[mc_peer->peer]->id));
257
258 GNUNET_MULTICAST_member_part (members[mc_peer->peer], member_disconnected_cb, cls);
259 }
260}
261
262
263static void
264origin_join_request (void *cls,
265 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
266 const struct GNUNET_MessageHeader *join_msg,
267 struct GNUNET_MULTICAST_JoinHandle *jh)
268{
269 struct GNUNET_MessageHeader *join_resp;
270
271 uint8_t data_size = ntohs (join_msg->size);
272
273 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
274 "origin got a join request...\n");
275 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
276 "origin receives: '%s'\n", (char *)&join_msg[1]);
277
278 char data[] = "Come in!";
279 data_size = strlen (data) + 1;
280 join_resp = GNUNET_malloc (sizeof (join_resp) + data_size);
281 join_resp->size = htons (sizeof (join_resp) + data_size);
282 join_resp->type = htons (123);
283 GNUNET_memcpy (&join_resp[1], data, data_size);
284
285 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
286 "origin sends: '%s'\n", data);
287
288 GNUNET_MULTICAST_join_decision (jh,
289 GNUNET_YES,
290 0,
291 NULL,
292 join_resp);
293
294 result = GNUNET_OK;
295}
296
297
298static void
299origin_replay_frag (void *cls,
300 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
301 uint64_t fragment_id,
302 uint64_t flags,
303 struct GNUNET_MULTICAST_ReplayHandle *rh)
304{
305 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "origin replay fraq msg\n");
306}
307
308
309static void
310origin_replay_msg (void *cls,
311 const struct GNUNET_CRYPTO_EcdsaPublicKey *member_pub_key,
312 uint64_t message_id,
313 uint64_t fragment_offset,
314 uint64_t flags,
315 struct GNUNET_MULTICAST_ReplayHandle *rh)
316{
317
318 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "origin replay msg\n");
319}
320
321
322static int
323origin_notify (void *cls,
324 size_t *data_size,
325 void *data)
326{
327 struct pingpong_msg *rcv_pp_msg = (struct pingpong_msg*)cls;
328 struct pingpong_msg *pp_msg = GNUNET_new (struct pingpong_msg);
329
330 pp_msg->peer = rcv_pp_msg->peer;
331 pp_msg->msg = PONG;
332 *data_size = sizeof (struct pingpong_msg);
333 GNUNET_memcpy(data, pp_msg, *data_size);
334 GNUNET_free (pp_msg);
335
336 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "origin sends pong\n");
337
338 return GNUNET_YES;
339}
340
341
342static void
343origin_request (void *cls,
344 const struct GNUNET_MULTICAST_RequestHeader *req)
345{
346 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "origin receives a msg\n");
347
348 req++;
349 struct pingpong_msg *pp_msg = (struct pingpong_msg *) req;
350
351 if (1 != pp_msg->msg) {
352 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "origin didn't reveice a correct request");
353 }
354
355 GNUNET_MULTICAST_origin_to_all (origin,
356 0,
357 0,
358 origin_notify,
359 pp_msg);
360}
361
362
363static void
364origin_message (void *cls,
365 const struct GNUNET_MULTICAST_MessageHeader *msg)
366{
367 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "origin message msg\n");
368}
369
370
371static void
372multicast_disconnect (void *cls,
373 void *op_result)
374{
375
376}
377
378
379static void *
380multicast_connect (void *cls,
381 const struct GNUNET_CONFIGURATION_Handle *cfg)
382{
383 struct MulticastPeerContext *multicast_peer = cls;
384 struct GNUNET_MessageHeader *join_msg;
385 char data[64];
386
387 if (0 == multicast_peer->peer)
388 {
389 group_key = GNUNET_CRYPTO_eddsa_key_create ();
390 GNUNET_CRYPTO_eddsa_key_get_public (group_key, &group_pub_key);
391
392 GNUNET_CRYPTO_hash (&group_pub_key, sizeof (group_pub_key), &group_pub_key_hash);
393 origin = GNUNET_MULTICAST_origin_start (cfg,
394 group_key,
395 0,
396 origin_join_request,
397 origin_replay_frag,
398 origin_replay_msg,
399 origin_request,
400 origin_message,
401 cls);
402 if (NULL == origin)
403 {
404 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
405 "Peer #%u could not create a multicast group",
406 multicast_peer->peer);
407 return NULL;
408 }
409 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
410 "Peer #%u connected as origin to group %s\n",
411 multicast_peer->peer,
412 GNUNET_h2s (&group_pub_key_hash));
413 return origin;
414 }
415 else
416 {
417 multicast_peer->key = GNUNET_CRYPTO_ecdsa_key_create ();
418
419 sprintf(data, "Hi, I am peer #%u (%s). Can I enter?",
420 multicast_peer->peer,
421 GNUNET_i2s (multicast_peers[multicast_peer->peer]->id));
422 uint8_t data_size = strlen (data) + 1;
423 join_msg = GNUNET_malloc (sizeof (join_msg) + data_size);
424 join_msg->size = htons (sizeof (join_msg) + data_size);
425 join_msg->type = htons (123);
426 GNUNET_memcpy (&join_msg[1], data, data_size);
427
428 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
429 "Peer #%u (%s) tries to join multicast group %s\n",
430 multicast_peer->peer,
431 GNUNET_i2s (multicast_peers[multicast_peer->peer]->id),
432 GNUNET_h2s (&group_pub_key_hash));
433
434 members[multicast_peer->peer] =
435 GNUNET_MULTICAST_member_join (cfg,
436 &group_pub_key,
437 multicast_peer->key,
438 multicast_peers[0]->id,
439 0,
440 NULL,
441 join_msg, /* join message */
442 member_join_request,
443 member_join_decision,
444 member_replay_frag,
445 member_replay_msg,
446 member_message,
447 cls);
448 return members[multicast_peer->peer];
449 }
450}
451
452
453static void
454peer_information_cb (void *cls,
455 struct GNUNET_TESTBED_Operation *operation,
456 const struct GNUNET_TESTBED_PeerInformation *pinfo,
457 const char *emsg)
458{
459 struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls;
460
461 if (NULL == pinfo) {
462 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "got no peer information\n");
463 result = GNUNET_SYSERR;
464 GNUNET_SCHEDULER_shutdown ();
465 }
466
467 multicast_peers[mc_peer->peer]->id = pinfo->result.id;
468
469 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
470 "Got peer information of %s (%s)\n",
471 (0 == mc_peer->peer)? "origin" : "member",
472 GNUNET_i2s (pinfo->result.id));
473
474 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
475 "Create peer #%u (%s)\n",
476 mc_peer->peer,
477 GNUNET_i2s (multicast_peers[mc_peer->peer]->id));
478
479 if (0 != mc_peer->peer)
480 {
481 /* connect to multicast service of members */
482 op[mc_peer->peer] =
483 GNUNET_TESTBED_service_connect (/* Closure for operation */
484 NULL,
485 /* The peer whose service to connect to */
486 peers[mc_peer->peer],
487 /* The name of the service */
488 "multicast",
489 /* called after a handle to service is opened */
490 service_connect,
491 /* closure for the above callback */
492 cls,
493 /* called when opening the service connection */
494 multicast_connect,
495 /* called when closing the service connection */
496 multicast_disconnect,
497 /* closure for the above two callbacks */
498 cls);
499 }
500}
501
502
503static void
504service_connect (void *cls,
505 struct GNUNET_TESTBED_Operation *op,
506 void *ca_result,
507 const char *emsg)
508{
509 struct MulticastPeerContext *mc_peer = (struct MulticastPeerContext*)cls;
510
511 if (NULL == ca_result)
512 {
513 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
514 "Connection adapter not created for peer #%u (%s)\n",
515 mc_peer->peer,
516 GNUNET_i2s (multicast_peers[mc_peer->peer]->id));
517
518 result = GNUNET_SYSERR;
519 GNUNET_SCHEDULER_shutdown();
520 }
521
522 if (0 == mc_peer->peer)
523 {
524 // Get GNUnet identity of members
525 for (int i = 0; i<PEERS_REQUESTED; i++)
526 {
527 pi_op[i] = GNUNET_TESTBED_peer_get_information (peers[i],
528 GNUNET_TESTBED_PIT_IDENTITY,
529 peer_information_cb,
530 multicast_peers[i]);
531 }
532 }
533}
534
535
536
537/**
538 * Main function inovked from TESTBED once all of the
539 * peers are up and running. This one then connects
540 * just to the multicast service of peer 0 and 1.
541 * Peer 0 is going to be origin.
542 * Peer 1 is going to be one member.
543 * Origin will start a multicast group and the member will try to join it.
544 * After that we execute some multicast test.
545 *
546 * @param cls closure
547 * @param h the run handle
548 * @param peers started peers for the test
549 * @param PEERS_REQUESTED size of the 'peers' array
550 * @param links_succeeded number of links between peers that were created
551 * @param links_failed number of links testbed was unable to establish
552 */
553static void
554testbed_master (void *cls,
555 struct GNUNET_TESTBED_RunHandle *h,
556 unsigned int num_peers,
557 struct GNUNET_TESTBED_Peer **p,
558 unsigned int links_succeeded,
559 unsigned int links_failed)
560{
561 /* Testbed is ready with peers running and connected in a pre-defined overlay
562 topology (FIXME) */
563 peers = p;
564 multicast_peers = GNUNET_new_array (PEERS_REQUESTED, struct MulticastPeerContext*);
565
566 // Create test contexts for members
567 for (int i = 0; i<PEERS_REQUESTED; i++)
568 {
569 multicast_peers[i] = GNUNET_new (struct MulticastPeerContext);
570 multicast_peers[i]->peer = i;
571 multicast_peers[i]->test_ok = GNUNET_NO;
572 }
573 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
574 "Create origin peer\n");
575 op[0] =
576 GNUNET_TESTBED_service_connect (/* Closure for operation */
577 NULL,
578 /* The peer whose service to connect to */
579 peers[0],
580 /* The name of the service */
581 "multicast",
582 /* called after a handle to service is opened */
583 service_connect,
584 /* closure for the above callback */
585 multicast_peers[0],
586 /* called when opening the service connection */
587 multicast_connect,
588 /* called when closing the service connection */
589 multicast_disconnect,
590 /* closure for the above two callbacks */
591 multicast_peers[0]);
592 /* Schedule a new task on shutdown */
593 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
594 /* Schedule the shutdown task with a delay of a few Seconds */
595 timeout_tid =
596 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
597 (GNUNET_TIME_UNIT_SECONDS, 400),
598 &timeout_task,
599 NULL);
600}
601
602
603int
604main (int argc, char *argv[])
605{
606 int ret;
607 char const *config_file;
608
609 if (strstr (argv[0], "_line") != NULL)
610 {
611 config_file = "test_multicast_line.conf";
612 }
613 else if (strstr(argv[0], "_star") != NULL)
614 {
615 config_file = "test_multicast_star.conf";
616 }
617 else
618 {
619 config_file = "test_multicast_star.conf";
620 }
621
622 result = GNUNET_SYSERR;
623 ret =
624 GNUNET_TESTBED_test_run ("test-multicast-multipeer",
625 config_file,
626 /* number of peers to start */
627 PEERS_REQUESTED,
628 /* Event mask - set to 0 for no event notifications */
629 0LL,
630 /* Controller event callback */
631 NULL,
632 /* Closure for controller event callback */
633 NULL,
634 /* called when testbed setup is complete */
635 testbed_master,
636 /* Closure for the test_master callback */
637 NULL);
638 if ( (GNUNET_OK != ret) || (GNUNET_OK != result) )
639 return 1;
640 return 0;
641}
642
643/* end of test_multicast_multipeer.c */
diff --git a/src/multicast/test_multicast_star.conf b/src/multicast/test_multicast_star.conf
deleted file mode 100644
index 516c0e302..000000000
--- a/src/multicast/test_multicast_star.conf
+++ /dev/null
@@ -1,64 +0,0 @@
1[testbed]
2HOSTNAME = localhost
3OVERLAY_TOPOLOGY = STAR
4
5[arm]
6GLOBAL_POSTFIX=-L ERROR
7
8[multicast]
9#PREFIX = tmux new-window gdb -x ./cmd.gdb --args
10#PREFIX = valgrind --leak-check=full
11UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-multicast.sock
12
13[vpn]
14START_ON_DEMAND = NO
15
16[peerinfo]
17# Do not use shipped gnunet HELLOs
18USE_INCLUDED_HELLOS = NO
19
20# Option to disable all disk IO; only useful for testbed runs
21# (large-scale experiments); disables persistence of HELLOs!
22NO_IO = YES
23
24[cadet]
25ID_ANNOUNCE_TIME = 5 s
26
27[hostlist]
28IMMEDIATE_START = NO
29START_ON_DEMAND = NO
30
31[nat]
32ENABLE_UPNP = NO
33
34[fs]
35IMMEDIATE_START = NO
36START_ON_DEMAND = NO
37
38[vpn]
39IMMEDIATE_START = NO
40START_ON_DEMAND = NO
41
42[revocation]
43IMMEDIATE_START = NO
44START_ON_DEMAND = NO
45
46[gns]
47IMMEDIATE_START = NO
48START_ON_DEMAND = NO
49
50[namestore]
51IMMEDIATE_START = NO
52START_ON_DEMAND = NO
53
54[namecache]
55IMMEDIATE_START = NO
56START_ON_DEMAND = NO
57
58[topology]
59IMMEDIATE_START = NO
60START_ON_DEMAND = NO
61
62[nse]
63WORKBITS = 0
64
diff --git a/src/namecache/plugin_namecache_flat.c b/src/namecache/plugin_namecache_flat.c
index 4323780d5..c093cb2a9 100644
--- a/src/namecache/plugin_namecache_flat.c
+++ b/src/namecache/plugin_namecache_flat.c
@@ -173,7 +173,7 @@ database_setup (struct Plugin *plugin)
173 &entry->query)); 173 &entry->query));
174 GNUNET_STRINGS_base64_decode (block, 174 GNUNET_STRINGS_base64_decode (block,
175 strlen (block), 175 strlen (block),
176 &block_buffer); 176 (void**)&block_buffer);
177 entry->block = (struct GNUNET_GNSRECORD_Block *) block_buffer; 177 entry->block = (struct GNUNET_GNSRECORD_Block *) block_buffer;
178 if (GNUNET_OK != 178 if (GNUNET_OK !=
179 GNUNET_CONTAINER_multihashmap_put (plugin->hm, 179 GNUNET_CONTAINER_multihashmap_put (plugin->hm,
diff --git a/src/namecache/test_plugin_namecache.c b/src/namecache/test_plugin_namecache.c
index c2a630a46..20900a3f6 100644
--- a/src/namecache/test_plugin_namecache.c
+++ b/src/namecache/test_plugin_namecache.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -102,7 +102,7 @@ run (void *cls, char *const *args, const char *cfgfile,
102int 102int
103main (int argc, char *argv[]) 103main (int argc, char *argv[])
104{ 104{
105 char cfg_name[128]; 105 char cfg_name[PATH_MAX];
106 char *const xargv[] = { 106 char *const xargv[] = {
107 "test-plugin-namecache", 107 "test-plugin-namecache",
108 "-c", 108 "-c",
diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c
index b1f8fcf4c..45be0fe75 100644
--- a/src/namestore/gnunet-service-namestore.c
+++ b/src/namestore/gnunet-service-namestore.c
@@ -124,7 +124,7 @@ struct ZoneIteration
124 * message and free the data structure once @e cache_ops is zero. 124 * message and free the data structure once @e cache_ops is zero.
125 */ 125 */
126 int send_end; 126 int send_end;
127 127
128}; 128};
129 129
130 130
@@ -268,7 +268,7 @@ struct CacheOperation
268 * for if applicable, can be NULL. 268 * for if applicable, can be NULL.
269 */ 269 */
270 struct ZoneIteration *zi; 270 struct ZoneIteration *zi;
271 271
272 /** 272 /**
273 * Client's request ID. 273 * Client's request ID.
274 */ 274 */
@@ -318,12 +318,12 @@ struct StoreActivity
318 318
319/** 319/**
320 * Entry in list of cached nick resolutions. 320 * Entry in list of cached nick resolutions.
321 */ 321 */
322struct NickCache 322struct NickCache
323{ 323{
324 /** 324 /**
325 * Zone the cache entry is for. 325 * Zone the cache entry is for.
326 */ 326 */
327 struct GNUNET_CRYPTO_EcdsaPrivateKey zone; 327 struct GNUNET_CRYPTO_EcdsaPrivateKey zone;
328 328
329 /** 329 /**
@@ -339,7 +339,7 @@ struct NickCache
339 339
340 340
341/** 341/**
342 * We cache nick records to reduce DB load. 342 * We cache nick records to reduce DB load.
343 */ 343 */
344static struct NickCache nick_cache[NC_SIZE]; 344static struct NickCache nick_cache[NC_SIZE];
345 345
@@ -489,7 +489,7 @@ free_store_activity (struct StoreActivity *sa)
489 * record, which (if found) is then copied to @a cls for future use. 489 * record, which (if found) is then copied to @a cls for future use.
490 * 490 *
491 * @param cls a `struct GNUNET_GNSRECORD_Data **` for storing the nick (if found) 491 * @param cls a `struct GNUNET_GNSRECORD_Data **` for storing the nick (if found)
492 * @param seq sequence number of the record 492 * @param seq sequence number of the record, MUST NOT BE ZERO
493 * @param private_key the private key of the zone (unused) 493 * @param private_key the private key of the zone (unused)
494 * @param label should be #GNUNET_GNS_EMPTY_LABEL_AT 494 * @param label should be #GNUNET_GNS_EMPTY_LABEL_AT
495 * @param rd_count number of records in @a rd 495 * @param rd_count number of records in @a rd
@@ -506,7 +506,7 @@ lookup_nick_it (void *cls,
506 struct GNUNET_GNSRECORD_Data **res = cls; 506 struct GNUNET_GNSRECORD_Data **res = cls;
507 507
508 (void) private_key; 508 (void) private_key;
509 (void) seq; 509 GNUNET_assert (0 != seq);
510 if (0 != strcmp (label, GNUNET_GNS_EMPTY_LABEL_AT)) 510 if (0 != strcmp (label, GNUNET_GNS_EMPTY_LABEL_AT))
511 { 511 {
512 GNUNET_break (0); 512 GNUNET_break (0);
@@ -607,7 +607,7 @@ get_nick_record (const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone)
607 return nick; 607 return nick;
608 } 608 }
609 } 609 }
610 610
611 nick = NULL; 611 nick = NULL;
612 res = GSN_database->lookup_records (GSN_database->cls, 612 res = GSN_database->lookup_records (GSN_database->cls,
613 zone, 613 zone,
@@ -872,7 +872,7 @@ zone_iteration_done_client_continue (struct ZoneIteration *zi)
872 em->r_id = htonl (zi->request_id); 872 em->r_id = htonl (zi->request_id);
873 GNUNET_MQ_send (zi->nc->mq, 873 GNUNET_MQ_send (zi->nc->mq,
874 env); 874 env);
875 875
876 GNUNET_CONTAINER_DLL_remove (zi->nc->op_head, 876 GNUNET_CONTAINER_DLL_remove (zi->nc->op_head,
877 zi->nc->op_tail, 877 zi->nc->op_tail,
878 zi); 878 zi);
@@ -1270,9 +1270,16 @@ struct RecordLookupContext
1270 1270
1271 1271
1272/** 1272/**
1273 * FIXME. 1273 * Function called by the namestore plugin when we are trying to lookup
1274 * a record as part of #handle_record_lookup(). Merges all results into
1275 * the context.
1274 * 1276 *
1275 * @param seq sequence number of the record 1277 * @param cls closure with a `struct RecordLookupContext`
1278 * @param seq unique serial number of the record, MUST NOT BE ZERO
1279 * @param zone_key private key of the zone
1280 * @param label name that is being mapped (at most 255 characters long)
1281 * @param rd_count number of entries in @a rd array
1282 * @param rd array of records with data to store
1276 */ 1283 */
1277static void 1284static void
1278lookup_it (void *cls, 1285lookup_it (void *cls,
@@ -1285,7 +1292,7 @@ lookup_it (void *cls,
1285 struct RecordLookupContext *rlc = cls; 1292 struct RecordLookupContext *rlc = cls;
1286 1293
1287 (void) private_key; 1294 (void) private_key;
1288 (void) seq; 1295 GNUNET_assert (0 != seq);
1289 if (0 != strcmp (label, 1296 if (0 != strcmp (label,
1290 rlc->label)) 1297 rlc->label))
1291 return; 1298 return;
@@ -1609,7 +1616,7 @@ handle_record_store (void *cls,
1609 conv_name)) || 1616 conv_name)) ||
1610 (GNUNET_GNSRECORD_TYPE_NICK != rd[i].record_type) ) 1617 (GNUNET_GNSRECORD_TYPE_NICK != rd[i].record_type) )
1611 rd_clean_off++; 1618 rd_clean_off++;
1612 1619
1613 if ( (0 == strcmp (GNUNET_GNS_EMPTY_LABEL_AT, 1620 if ( (0 == strcmp (GNUNET_GNS_EMPTY_LABEL_AT,
1614 conv_name)) && 1621 conv_name)) &&
1615 (GNUNET_GNSRECORD_TYPE_NICK == rd[i].record_type) ) 1622 (GNUNET_GNSRECORD_TYPE_NICK == rd[i].record_type) )
@@ -1680,7 +1687,7 @@ struct ZoneToNameCtx
1680 * Zone to name iterator 1687 * Zone to name iterator
1681 * 1688 *
1682 * @param cls struct ZoneToNameCtx * 1689 * @param cls struct ZoneToNameCtx *
1683 * @param seq sequence number of the record 1690 * @param seq sequence number of the record, MUST NOT BE ZERO
1684 * @param zone_key the zone key 1691 * @param zone_key the zone key
1685 * @param name name 1692 * @param name name
1686 * @param rd_count number of records in @a rd 1693 * @param rd_count number of records in @a rd
@@ -1704,7 +1711,7 @@ handle_zone_to_name_it (void *cls,
1704 char *name_tmp; 1711 char *name_tmp;
1705 char *rd_tmp; 1712 char *rd_tmp;
1706 1713
1707 (void) seq; 1714 GNUNET_assert (0 != seq);
1708 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1715 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1709 "Found result for zone-to-name lookup: `%s'\n", 1716 "Found result for zone-to-name lookup: `%s'\n",
1710 name); 1717 name);
@@ -1822,7 +1829,7 @@ struct ZoneIterationProcResult
1822 * Process results for zone iteration from database 1829 * Process results for zone iteration from database
1823 * 1830 *
1824 * @param cls struct ZoneIterationProcResult 1831 * @param cls struct ZoneIterationProcResult
1825 * @param seq sequence number of the record 1832 * @param seq sequence number of the record, MUST NOT BE ZERO
1826 * @param zone_key the zone key 1833 * @param zone_key the zone key
1827 * @param name name 1834 * @param name name
1828 * @param rd_count number of records for this name 1835 * @param rd_count number of records for this name
@@ -1839,6 +1846,7 @@ zone_iterate_proc (void *cls,
1839 struct ZoneIterationProcResult *proc = cls; 1846 struct ZoneIterationProcResult *proc = cls;
1840 int do_refresh_block; 1847 int do_refresh_block;
1841 1848
1849 GNUNET_assert (0 != seq);
1842 if ( (NULL == zone_key) && 1850 if ( (NULL == zone_key) &&
1843 (NULL == name) ) 1851 (NULL == name) )
1844 { 1852 {
@@ -1876,7 +1884,7 @@ zone_iterate_proc (void *cls,
1876 do_refresh_block = GNUNET_YES; 1884 do_refresh_block = GNUNET_YES;
1877 break; 1885 break;
1878 } 1886 }
1879 if (GNUNET_YES == do_refresh_block) 1887 if (GNUNET_YES == do_refresh_block)
1880 refresh_block (NULL, 1888 refresh_block (NULL,
1881 proc->zi, 1889 proc->zi,
1882 0, 1890 0,
@@ -2116,7 +2124,7 @@ monitor_iteration_next (void *cls);
2116 * A #GNUNET_NAMESTORE_RecordIterator for monitors. 2124 * A #GNUNET_NAMESTORE_RecordIterator for monitors.
2117 * 2125 *
2118 * @param cls a 'struct ZoneMonitor *' with information about the monitor 2126 * @param cls a 'struct ZoneMonitor *' with information about the monitor
2119 * @param seq sequence number of the record 2127 * @param seq sequence number of the record, MUST NOT BE ZERO
2120 * @param zone_key zone key of the zone 2128 * @param zone_key zone key of the zone
2121 * @param name name 2129 * @param name name
2122 * @param rd_count number of records in @a rd 2130 * @param rd_count number of records in @a rd
@@ -2132,6 +2140,7 @@ monitor_iterate_cb (void *cls,
2132{ 2140{
2133 struct ZoneMonitor *zm = cls; 2141 struct ZoneMonitor *zm = cls;
2134 2142
2143 GNUNET_assert (0 != seq);
2135 zm->seq = seq; 2144 zm->seq = seq;
2136 GNUNET_assert (NULL != name); 2145 GNUNET_assert (NULL != name);
2137 GNUNET_STATISTICS_update (statistics, 2146 GNUNET_STATISTICS_update (statistics,
diff --git a/src/namestore/plugin_namestore_heap.c b/src/namestore/plugin_namestore_heap.c
index 78e99442c..01cf592ea 100644
--- a/src/namestore/plugin_namestore_heap.c
+++ b/src/namestore/plugin_namestore_heap.c
@@ -79,11 +79,42 @@ struct FlatFileEntry
79 */ 79 */
80 char *label; 80 char *label;
81 81
82
83}; 82};
84 83
85 84
86/** 85/**
86 * Hash contactenation of @a pkey and @a label into @a h
87 *
88 * @param pkey a key
89 * @param label a label
90 * @param h[out] initialized hash
91 */
92static void
93hash_pkey_and_label (const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey,
94 const char *label,
95 struct GNUNET_HashCode *h)
96{
97 char *key;
98 size_t label_len;
99 size_t key_len;
100
101 label_len = strlen (label);
102 key_len = label_len + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey);
103 key = GNUNET_malloc (key_len);
104 GNUNET_memcpy (key,
105 label,
106 label_len);
107 GNUNET_memcpy (key + label_len,
108 pkey,
109 sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey));
110 GNUNET_CRYPTO_hash (key,
111 key_len,
112 h);
113 GNUNET_free (key);
114}
115
116
117/**
87 * Initialize the database connections and associated 118 * Initialize the database connections and associated
88 * data structures (create tables and indices 119 * data structures (create tables and indices
89 * as needed as well). 120 * as needed as well).
@@ -262,23 +293,9 @@ database_setup (struct Plugin *plugin)
262 GNUNET_free (private_key); 293 GNUNET_free (private_key);
263 } 294 }
264 295
265 { 296 hash_pkey_and_label (&entry->private_key,
266 char *key; 297 label,
267 size_t key_len; 298 &hkey);
268
269 key_len = strlen (label) + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey);
270 key = GNUNET_malloc (strlen (label) + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey));
271 GNUNET_memcpy (key,
272 label,
273 strlen (label));
274 GNUNET_memcpy (key+strlen(label),
275 &entry->private_key,
276 sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey));
277 GNUNET_CRYPTO_hash (key,
278 key_len,
279 &hkey);
280 GNUNET_free (key);
281 }
282 if (GNUNET_OK != 299 if (GNUNET_OK !=
283 GNUNET_CONTAINER_multihashmap_put (plugin->hm, 300 GNUNET_CONTAINER_multihashmap_put (plugin->hm,
284 &hkey, 301 &hkey,
@@ -425,24 +442,14 @@ namestore_heap_store_records (void *cls,
425{ 442{
426 struct Plugin *plugin = cls; 443 struct Plugin *plugin = cls;
427 uint64_t rvalue; 444 uint64_t rvalue;
428 size_t key_len;
429 char *key;
430 struct GNUNET_HashCode hkey; 445 struct GNUNET_HashCode hkey;
431 struct FlatFileEntry *entry; 446 struct FlatFileEntry *entry;
432 447
433 rvalue = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK, 448 rvalue = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
434 UINT64_MAX); 449 UINT64_MAX);
435 key_len = strlen (label) + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey); 450 hash_pkey_and_label (zone_key,
436 key = GNUNET_malloc (key_len); 451 label,
437 GNUNET_memcpy (key, 452 &hkey);
438 label,
439 strlen (label));
440 GNUNET_memcpy (key + strlen(label),
441 zone_key,
442 sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey));
443 GNUNET_CRYPTO_hash (key,
444 key_len,
445 &hkey);
446 GNUNET_CONTAINER_multihashmap_remove_all (plugin->hm, 453 GNUNET_CONTAINER_multihashmap_remove_all (plugin->hm,
447 &hkey); 454 &hkey);
448 if (0 == rd_count) 455 if (0 == rd_count)
@@ -501,27 +508,15 @@ namestore_heap_lookup_records (void *cls,
501 struct Plugin *plugin = cls; 508 struct Plugin *plugin = cls;
502 struct FlatFileEntry *entry; 509 struct FlatFileEntry *entry;
503 struct GNUNET_HashCode hkey; 510 struct GNUNET_HashCode hkey;
504 char *key;
505 size_t key_len;
506 511
507 if (NULL == zone) 512 if (NULL == zone)
508 { 513 {
509 GNUNET_break (0); 514 GNUNET_break (0);
510 return GNUNET_SYSERR; 515 return GNUNET_SYSERR;
511 } 516 }
512 key_len = strlen (label) + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey); 517 hash_pkey_and_label (zone,
513 key = GNUNET_malloc (key_len); 518 label,
514 GNUNET_memcpy (key, 519 &hkey);
515 label,
516 strlen (label));
517 GNUNET_memcpy (key+strlen(label),
518 zone,
519 sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey));
520 GNUNET_CRYPTO_hash (key,
521 key_len,
522 &hkey);
523 GNUNET_free (key);
524
525 entry = GNUNET_CONTAINER_multihashmap_get (plugin->hm, 520 entry = GNUNET_CONTAINER_multihashmap_get (plugin->hm,
526 &hkey); 521 &hkey);
527 522
@@ -529,7 +524,7 @@ namestore_heap_lookup_records (void *cls,
529 return GNUNET_NO; 524 return GNUNET_NO;
530 if (NULL != iter) 525 if (NULL != iter)
531 iter (iter_cls, 526 iter (iter_cls,
532 0, 527 1, /* zero is illegal */
533 &entry->private_key, 528 &entry->private_key,
534 entry->label, 529 entry->label,
535 entry->record_count, 530 entry->record_count,
@@ -609,7 +604,7 @@ iterate_zones (void *cls,
609 } 604 }
610 ic->iter (ic->iter_cls, 605 ic->iter (ic->iter_cls,
611 ic->pos, 606 ic->pos,
612 (NULL == ic->zone) 607 (NULL == ic->zone)
613 ? &entry->private_key 608 ? &entry->private_key
614 : ic->zone, 609 : ic->zone,
615 entry->label, 610 entry->label,
@@ -695,7 +690,7 @@ zone_to_name (void *cls,
695 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey))) 690 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey)))
696 { 691 {
697 ztn->iter (ztn->iter_cls, 692 ztn->iter (ztn->iter_cls,
698 0, 693 i + 1, /* zero is illegal! */
699 &entry->private_key, 694 &entry->private_key,
700 entry->label, 695 entry->label,
701 entry->record_count, 696 entry->record_count,
diff --git a/src/namestore/plugin_namestore_postgres.c b/src/namestore/plugin_namestore_postgres.c
index 57a8ae2be..f2e065882 100644
--- a/src/namestore/plugin_namestore_postgres.c
+++ b/src/namestore/plugin_namestore_postgres.c
@@ -400,6 +400,7 @@ parse_result_call_iterator (void *cls,
400 { 400 {
401 struct GNUNET_GNSRECORD_Data rd[GNUNET_NZL(record_count)]; 401 struct GNUNET_GNSRECORD_Data rd[GNUNET_NZL(record_count)];
402 402
403 GNUNET_assert (0 != serial);
403 if (GNUNET_OK != 404 if (GNUNET_OK !=
404 GNUNET_GNSRECORD_records_deserialize (data_size, 405 GNUNET_GNSRECORD_records_deserialize (data_size,
405 data, 406 data,
diff --git a/src/namestore/plugin_namestore_sqlite.c b/src/namestore/plugin_namestore_sqlite.c
index 96b0d6457..e4bfcde16 100644
--- a/src/namestore/plugin_namestore_sqlite.c
+++ b/src/namestore/plugin_namestore_sqlite.c
@@ -521,6 +521,7 @@ get_records_and_call_iterator (struct Plugin *plugin,
521 { 521 {
522 struct GNUNET_GNSRECORD_Data rd[record_count]; 522 struct GNUNET_GNSRECORD_Data rd[record_count];
523 523
524 GNUNET_assert (0 != seq);
524 if (GNUNET_OK != 525 if (GNUNET_OK !=
525 GNUNET_GNSRECORD_records_deserialize (data_size, 526 GNUNET_GNSRECORD_records_deserialize (data_size,
526 data, 527 data,
diff --git a/src/namestore/test_plugin_namestore.c b/src/namestore/test_plugin_namestore.c
index b9c7fbef9..9c978749f 100644
--- a/src/namestore/test_plugin_namestore.c
+++ b/src/namestore/test_plugin_namestore.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -107,7 +107,8 @@ test_record (void *cls,
107 GNUNET_snprintf (tname, 107 GNUNET_snprintf (tname,
108 sizeof (tname), 108 sizeof (tname),
109 "a%u", 109 "a%u",
110 (unsigned int ) id); 110 (unsigned int) id);
111 GNUNET_assert (trd_count == rd_count);
111 for (unsigned int i=0;i<trd_count;i++) 112 for (unsigned int i=0;i<trd_count;i++)
112 { 113 {
113 GNUNET_assert (rd[i].data_size == id % 10); 114 GNUNET_assert (rd[i].data_size == id % 10);
@@ -198,7 +199,7 @@ int
198main (int argc, 199main (int argc,
199 char *argv[]) 200 char *argv[])
200{ 201{
201 char cfg_name[128]; 202 char cfg_name[PATH_MAX];
202 char *const xargv[] = { 203 char *const xargv[] = {
203 "test-plugin-namestore", 204 "test-plugin-namestore",
204 "-c", 205 "-c",
diff --git a/src/peerinfo/peerinfo_api.c b/src/peerinfo/peerinfo_api.c
index f2af27c0b..4b56b34c7 100644
--- a/src/peerinfo/peerinfo_api.c
+++ b/src/peerinfo/peerinfo_api.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -565,10 +565,7 @@ GNUNET_PEERINFO_add_peer (struct GNUNET_PEERINFO_Handle *h,
565 struct GNUNET_PeerIdentity peer; 565 struct GNUNET_PeerIdentity peer;
566 566
567 if (NULL == h->mq) 567 if (NULL == h->mq)
568 {
569 GNUNET_break (0);
570 return NULL; 568 return NULL;
571 }
572 GNUNET_assert (GNUNET_OK == 569 GNUNET_assert (GNUNET_OK ==
573 GNUNET_HELLO_get_id (hello, 570 GNUNET_HELLO_get_id (hello,
574 &peer)); 571 &peer));
diff --git a/src/peerstore/Makefile.am b/src/peerstore/Makefile.am
index 3aef05769..c6acdce56 100644
--- a/src/peerstore/Makefile.am
+++ b/src/peerstore/Makefile.am
@@ -107,7 +107,9 @@ check_PROGRAMS = \
107 $(FLAT_TESTS) 107 $(FLAT_TESTS)
108 108
109EXTRA_DIST = \ 109EXTRA_DIST = \
110 test_peerstore_api_data.conf 110 test_peerstore_api_data.conf \
111 test_plugin_peerstore_flat.conf \
112 test_plugin_peerstore_sqlite.conf
111 113
112if ENABLE_TEST_RUN 114if ENABLE_TEST_RUN
113AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME; 115AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME;
diff --git a/src/peerstore/peerstore_api.c b/src/peerstore/peerstore_api.c
index 6abdef43a..243e26c8b 100644
--- a/src/peerstore/peerstore_api.c
+++ b/src/peerstore/peerstore_api.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -76,6 +76,16 @@ struct GNUNET_PEERSTORE_Handle
76 struct GNUNET_CONTAINER_MultiHashMap *watches; 76 struct GNUNET_CONTAINER_MultiHashMap *watches;
77 77
78 /** 78 /**
79 * ID of the task trying to reconnect to the service.
80 */
81 struct GNUNET_SCHEDULER_Task *reconnect_task;
82
83 /**
84 * Delay until we try to reconnect.
85 */
86 struct GNUNET_TIME_Relative reconnect_delay;
87
88 /**
79 * Are we in the process of disconnecting but need to sync first? 89 * Are we in the process of disconnecting but need to sync first?
80 */ 90 */
81 int disconnecting; 91 int disconnecting;
@@ -245,10 +255,72 @@ struct GNUNET_PEERSTORE_WatchContext
245/** 255/**
246 * Close the existing connection to PEERSTORE and reconnect. 256 * Close the existing connection to PEERSTORE and reconnect.
247 * 257 *
248 * @param h handle to the service 258 * @param cls a `struct GNUNET_PEERSTORE_Handle *h`
259 */
260static void
261reconnect (void *cls);
262
263
264/**
265 * Disconnect from the peerstore service.
266 *
267 * @param h peerstore handle to disconnect
268 */
269static void
270disconnect (struct GNUNET_PEERSTORE_Handle *h)
271{
272 struct GNUNET_PEERSTORE_IterateContext *next;
273
274 for (struct GNUNET_PEERSTORE_IterateContext *ic = h->iterate_head;
275 NULL != ic;
276 ic = next)
277 {
278 next = ic->next;
279 if (GNUNET_YES == ic->iterating)
280 {
281 GNUNET_PEERSTORE_Processor icb;
282 void *icb_cls;
283
284 icb = ic->callback;
285 icb_cls = ic->callback_cls;
286 GNUNET_PEERSTORE_iterate_cancel (ic);
287 if (NULL != icb)
288 icb (icb_cls,
289 NULL,
290 "Iteration canceled due to reconnection");
291 }
292 }
293
294 if (NULL != h->mq)
295 {
296 GNUNET_MQ_destroy (h->mq);
297 h->mq = NULL;
298 }
299}
300
301
302/**
303 * Function that will schedule the job that will try
304 * to connect us again to the client.
305 *
306 * @param h peerstore to reconnect
249 */ 307 */
250static void 308static void
251reconnect (struct GNUNET_PEERSTORE_Handle *h); 309disconnect_and_schedule_reconnect (struct GNUNET_PEERSTORE_Handle *h)
310{
311 GNUNET_assert (NULL == h->reconnect_task);
312 disconnect (h);
313 LOG (GNUNET_ERROR_TYPE_DEBUG,
314 "Scheduling task to reconnect to PEERSTORE service in %s.\n",
315 GNUNET_STRINGS_relative_time_to_string (h->reconnect_delay,
316 GNUNET_YES));
317 h->reconnect_task =
318 GNUNET_SCHEDULER_add_delayed (h->reconnect_delay,
319 &reconnect,
320 h);
321 h->reconnect_delay = GNUNET_TIME_STD_BACKOFF (h->reconnect_delay);
322}
323
252 324
253 325
254/** 326/**
@@ -288,7 +360,7 @@ handle_client_error (void *cls,
288 LOG (GNUNET_ERROR_TYPE_ERROR, 360 LOG (GNUNET_ERROR_TYPE_ERROR,
289 "Received an error notification from MQ of type: %d\n", 361 "Received an error notification from MQ of type: %d\n",
290 error); 362 error);
291 reconnect (h); 363 disconnect_and_schedule_reconnect (h);
292} 364}
293 365
294 366
@@ -345,7 +417,7 @@ destroy_watch (void *cls,
345 * @param h Handle to the service. 417 * @param h Handle to the service.
346 */ 418 */
347static void 419static void
348do_disconnect (struct GNUNET_PEERSTORE_Handle *h) 420final_disconnect (struct GNUNET_PEERSTORE_Handle *h)
349{ 421{
350 if (NULL != h->mq) 422 if (NULL != h->mq)
351 { 423 {
@@ -419,7 +491,7 @@ GNUNET_PEERSTORE_disconnect (struct GNUNET_PEERSTORE_Handle *h,
419 while (NULL != (sc = h->store_head)) 491 while (NULL != (sc = h->store_head))
420 GNUNET_PEERSTORE_store_cancel (sc); 492 GNUNET_PEERSTORE_store_cancel (sc);
421 } 493 }
422 do_disconnect (h); 494 final_disconnect (h);
423} 495}
424 496
425 497
@@ -443,8 +515,9 @@ GNUNET_PEERSTORE_store_cancel (struct GNUNET_PEERSTORE_StoreContext *sc)
443 GNUNET_free (sc->value); 515 GNUNET_free (sc->value);
444 GNUNET_free (sc->key); 516 GNUNET_free (sc->key);
445 GNUNET_free (sc); 517 GNUNET_free (sc);
446 if ((GNUNET_YES == h->disconnecting) && (NULL == h->store_head)) 518 if ( (GNUNET_YES == h->disconnecting) &&
447 do_disconnect (h); 519 (NULL == h->store_head) )
520 final_disconnect (h);
448} 521}
449 522
450 523
@@ -530,7 +603,7 @@ handle_iterate_end (void *cls,
530 { 603 {
531 LOG (GNUNET_ERROR_TYPE_ERROR, 604 LOG (GNUNET_ERROR_TYPE_ERROR,
532 _("Unexpected iteration response, this should not happen.\n")); 605 _("Unexpected iteration response, this should not happen.\n"));
533 reconnect (h); 606 disconnect_and_schedule_reconnect (h);
534 return; 607 return;
535 } 608 }
536 callback = ic->callback; 609 callback = ic->callback;
@@ -538,7 +611,10 @@ handle_iterate_end (void *cls,
538 ic->iterating = GNUNET_NO; 611 ic->iterating = GNUNET_NO;
539 GNUNET_PEERSTORE_iterate_cancel (ic); 612 GNUNET_PEERSTORE_iterate_cancel (ic);
540 if (NULL != callback) 613 if (NULL != callback)
541 callback (callback_cls, NULL, NULL); 614 callback (callback_cls,
615 NULL,
616 NULL);
617 h->reconnect_delay = GNUNET_TIME_UNIT_ZERO;
542} 618}
543 619
544 620
@@ -579,7 +655,7 @@ handle_iterate_result (void *cls,
579 { 655 {
580 LOG (GNUNET_ERROR_TYPE_ERROR, 656 LOG (GNUNET_ERROR_TYPE_ERROR,
581 _("Unexpected iteration response, this should not happen.\n")); 657 _("Unexpected iteration response, this should not happen.\n"));
582 reconnect (h); 658 disconnect_and_schedule_reconnect (h);
583 return; 659 return;
584 } 660 }
585 ic->iterating = GNUNET_YES; 661 ic->iterating = GNUNET_YES;
@@ -715,7 +791,7 @@ handle_watch_record (void *cls,
715 record = PEERSTORE_parse_record_message (msg); 791 record = PEERSTORE_parse_record_message (msg);
716 if (NULL == record) 792 if (NULL == record)
717 { 793 {
718 reconnect (h); 794 disconnect_and_schedule_reconnect (h);
719 return; 795 return;
720 } 796 }
721 PEERSTORE_hash_key (record->sub_system, 797 PEERSTORE_hash_key (record->sub_system,
@@ -730,13 +806,14 @@ handle_watch_record (void *cls,
730 LOG (GNUNET_ERROR_TYPE_ERROR, 806 LOG (GNUNET_ERROR_TYPE_ERROR,
731 _("Received a watch result for a non existing watch.\n")); 807 _("Received a watch result for a non existing watch.\n"));
732 PEERSTORE_destroy_record (record); 808 PEERSTORE_destroy_record (record);
733 reconnect (h); 809 disconnect_and_schedule_reconnect (h);
734 return; 810 return;
735 } 811 }
736 if (NULL != wc->callback) 812 if (NULL != wc->callback)
737 wc->callback (wc->callback_cls, 813 wc->callback (wc->callback_cls,
738 record, 814 record,
739 NULL); 815 NULL);
816 h->reconnect_delay = GNUNET_TIME_UNIT_ZERO;
740 PEERSTORE_destroy_record (record); 817 PEERSTORE_destroy_record (record);
741} 818}
742 819
@@ -744,11 +821,12 @@ handle_watch_record (void *cls,
744/** 821/**
745 * Close the existing connection to PEERSTORE and reconnect. 822 * Close the existing connection to PEERSTORE and reconnect.
746 * 823 *
747 * @param h handle to the service 824 * @param cls a `struct GNUNET_PEERSTORE_Handle *`
748 */ 825 */
749static void 826static void
750reconnect (struct GNUNET_PEERSTORE_Handle *h) 827reconnect (void *cls)
751{ 828{
829 struct GNUNET_PEERSTORE_Handle *h = cls;
752 struct GNUNET_MQ_MessageHandler mq_handlers[] = { 830 struct GNUNET_MQ_MessageHandler mq_handlers[] = {
753 GNUNET_MQ_hd_fixed_size (iterate_end, 831 GNUNET_MQ_hd_fixed_size (iterate_end,
754 GNUNET_MESSAGE_TYPE_PEERSTORE_ITERATE_END, 832 GNUNET_MESSAGE_TYPE_PEERSTORE_ITERATE_END,
@@ -764,34 +842,10 @@ reconnect (struct GNUNET_PEERSTORE_Handle *h)
764 h), 842 h),
765 GNUNET_MQ_handler_end () 843 GNUNET_MQ_handler_end ()
766 }; 844 };
767 struct GNUNET_PEERSTORE_IterateContext *ic;
768 struct GNUNET_PEERSTORE_IterateContext *next;
769 GNUNET_PEERSTORE_Processor icb;
770 void *icb_cls;
771 struct GNUNET_PEERSTORE_StoreContext *sc;
772 struct GNUNET_MQ_Envelope *ev; 845 struct GNUNET_MQ_Envelope *ev;
773 846
774 LOG (GNUNET_ERROR_TYPE_DEBUG, 847 LOG (GNUNET_ERROR_TYPE_DEBUG,
775 "Reconnecting...\n"); 848 "Reconnecting...\n");
776 for (ic = h->iterate_head; NULL != ic; ic = next)
777 {
778 next = ic->next;
779 if (GNUNET_YES == ic->iterating)
780 {
781 icb = ic->callback;
782 icb_cls = ic->callback_cls;
783 GNUNET_PEERSTORE_iterate_cancel (ic);
784 if (NULL != icb)
785 icb (icb_cls,
786 NULL,
787 "Iteration canceled due to reconnection");
788 }
789 }
790 if (NULL != h->mq)
791 {
792 GNUNET_MQ_destroy (h->mq);
793 h->mq = NULL;
794 }
795 h->mq = GNUNET_CLIENT_connect (h->cfg, 849 h->mq = GNUNET_CLIENT_connect (h->cfg,
796 "peerstore", 850 "peerstore",
797 mq_handlers, 851 mq_handlers,
@@ -805,7 +859,9 @@ reconnect (struct GNUNET_PEERSTORE_Handle *h)
805 GNUNET_CONTAINER_multihashmap_iterate (h->watches, 859 GNUNET_CONTAINER_multihashmap_iterate (h->watches,
806 &rewatch_it, 860 &rewatch_it,
807 h); 861 h);
808 for (ic = h->iterate_head; NULL != ic; ic = ic->next) 862 for (struct GNUNET_PEERSTORE_IterateContext *ic = h->iterate_head;
863 NULL != ic;
864 ic = ic->next)
809 { 865 {
810 ev = PEERSTORE_create_record_mq_envelope (ic->sub_system, 866 ev = PEERSTORE_create_record_mq_envelope (ic->sub_system,
811 &ic->peer, 867 &ic->peer,
@@ -816,7 +872,9 @@ reconnect (struct GNUNET_PEERSTORE_Handle *h)
816 GNUNET_MESSAGE_TYPE_PEERSTORE_ITERATE); 872 GNUNET_MESSAGE_TYPE_PEERSTORE_ITERATE);
817 GNUNET_MQ_send (h->mq, ev); 873 GNUNET_MQ_send (h->mq, ev);
818 } 874 }
819 for (sc = h->store_head; NULL != sc; sc = sc->next) 875 for (struct GNUNET_PEERSTORE_StoreContext *sc = h->store_head;
876 NULL != sc;
877 sc = sc->next)
820 { 878 {
821 ev = PEERSTORE_create_record_mq_envelope (sc->sub_system, 879 ev = PEERSTORE_create_record_mq_envelope (sc->sub_system,
822 &sc->peer, 880 &sc->peer,
diff --git a/src/peerstore/plugin_peerstore_flat.c b/src/peerstore/plugin_peerstore_flat.c
index cd1837e1a..0cd2522ec 100644
--- a/src/peerstore/plugin_peerstore_flat.c
+++ b/src/peerstore/plugin_peerstore_flat.c
@@ -440,7 +440,7 @@ database_setup (struct Plugin *plugin)
440 o = NULL; 440 o = NULL;
441 s = GNUNET_STRINGS_base64_decode (peer, 441 s = GNUNET_STRINGS_base64_decode (peer,
442 strlen (peer), 442 strlen (peer),
443 &o); 443 (void**)&o);
444 if (sizeof (struct GNUNET_PeerIdentity) == s) 444 if (sizeof (struct GNUNET_PeerIdentity) == s)
445 GNUNET_memcpy (&entry->peer, 445 GNUNET_memcpy (&entry->peer,
446 o, 446 o,
@@ -451,7 +451,7 @@ database_setup (struct Plugin *plugin)
451 } 451 }
452 entry->value_size = GNUNET_STRINGS_base64_decode (value, 452 entry->value_size = GNUNET_STRINGS_base64_decode (value,
453 strlen (value), 453 strlen (value),
454 (char**)&entry->value); 454 (void**)&entry->value);
455 if (GNUNET_SYSERR == 455 if (GNUNET_SYSERR ==
456 GNUNET_STRINGS_fancy_time_to_absolute (expiry, 456 GNUNET_STRINGS_fancy_time_to_absolute (expiry,
457 &entry->expiry)) 457 &entry->expiry))
diff --git a/src/peerstore/test_plugin_peerstore.c b/src/peerstore/test_plugin_peerstore.c
index 5f18d1532..d6be5f06d 100644
--- a/src/peerstore/test_plugin_peerstore.c
+++ b/src/peerstore/test_plugin_peerstore.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -188,7 +188,7 @@ run (void *cls,
188int 188int
189main (int argc, char *argv[]) 189main (int argc, char *argv[])
190{ 190{
191 char cfg_name[128]; 191 char cfg_name[PATH_MAX];
192 char *const xargv[] = { 192 char *const xargv[] = {
193 "test-plugin-peerstore", 193 "test-plugin-peerstore",
194 "-c", 194 "-c",
diff --git a/src/pq/pq_result_helper.c b/src/pq/pq_result_helper.c
index b0f0a8a6b..336ca8c42 100644
--- a/src/pq/pq_result_helper.c
+++ b/src/pq/pq_result_helper.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
diff --git a/src/psyc/.gitignore b/src/psyc/.gitignore
deleted file mode 100644
index 14a175367..000000000
--- a/src/psyc/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
1gnunet-service-psyc
2test_psyc
diff --git a/src/psyc/Makefile.am b/src/psyc/Makefile.am
deleted file mode 100644
index 511e3e3f7..000000000
--- a/src/psyc/Makefile.am
+++ /dev/null
@@ -1,77 +0,0 @@
1# This Makefile.am is in the public domain
2AM_CPPFLAGS = -I$(top_srcdir)/src/include
3
4pkgcfgdir= $(pkgdatadir)/config.d/
5
6libexecdir= $(pkglibdir)/libexec/
7
8pkgcfg_DATA = \
9 psyc.conf
10
11
12if MINGW
13 WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
14endif
15
16if USE_COVERAGE
17 AM_CFLAGS = --coverage -O0
18 XLIB = -lgcov
19endif
20
21lib_LTLIBRARIES = libgnunetpsyc.la
22
23libgnunetpsyc_la_SOURCES = \
24 psyc_api.c psyc.h
25libgnunetpsyc_la_LIBADD = \
26 $(top_builddir)/src/util/libgnunetutil.la \
27 $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
28 $(GN_LIBINTL) $(XLIB)
29libgnunetpsyc_la_LDFLAGS = \
30 $(GN_LIB_LDFLAGS) $(WINFLAGS) \
31 -version-info 0:0:0
32
33bin_PROGRAMS =
34
35libexec_PROGRAMS = \
36 gnunet-service-psyc
37
38gnunet_service_psyc_SOURCES = \
39 gnunet-service-psyc.c
40gnunet_service_psyc_LDADD = \
41 $(top_builddir)/src/util/libgnunetutil.la \
42 $(top_builddir)/src/statistics/libgnunetstatistics.la \
43 $(top_builddir)/src/multicast/libgnunetmulticast.la \
44 $(top_builddir)/src/psycstore/libgnunetpsycstore.la \
45 $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
46 $(GN_LIBINTL)
47gnunet_service_psyc_CFLAGS = $(AM_CFLAGS)
48
49
50if HAVE_TESTING
51check_PROGRAMS = \
52 test_psyc
53# test_psyc2
54endif
55
56if ENABLE_TEST_RUN
57AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME;
58TESTS = $(check_PROGRAMS)
59endif
60
61test_psyc_SOURCES = \
62 test_psyc.c
63test_psyc_LDADD = \
64 libgnunetpsyc.la \
65 $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
66 $(top_builddir)/src/testing/libgnunettesting.la \
67 $(top_builddir)/src/util/libgnunetutil.la
68#test_psyc2_SOURCES = \
69# test_psyc2.c
70#test_psyc2_LDADD = \
71# libgnunetpsyc.la \
72# $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
73# $(top_builddir)/src/testbed/libgnunettestbed.la \
74# $(top_builddir)/src/util/libgnunetutil.la
75
76EXTRA_DIST = \
77 test_psyc.conf
diff --git a/src/psyc/gnunet-service-psyc.c b/src/psyc/gnunet-service-psyc.c
deleted file mode 100644
index 6f2f7a999..000000000
--- a/src/psyc/gnunet-service-psyc.c
+++ /dev/null
@@ -1,2860 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psyc/gnunet-service-psyc.c
23 * @brief PSYC service
24 * @author Gabor X Toth
25 */
26
27#include <inttypes.h>
28
29#include "platform.h"
30#include "gnunet_util_lib.h"
31#include "gnunet_constants.h"
32#include "gnunet_protocols.h"
33#include "gnunet_statistics_service.h"
34#include "gnunet_multicast_service.h"
35#include "gnunet_psycstore_service.h"
36#include "gnunet_psyc_service.h"
37#include "gnunet_psyc_util_lib.h"
38#include "psyc.h"
39
40
41/**
42 * Handle to our current configuration.
43 */
44static const struct GNUNET_CONFIGURATION_Handle *cfg;
45
46/**
47 * Service handle.
48 */
49static struct GNUNET_SERVICE_Handle *service;
50
51/**
52 * Handle to the statistics service.
53 */
54static struct GNUNET_STATISTICS_Handle *stats;
55
56/**
57 * Handle to the PSYCstore.
58 */
59static struct GNUNET_PSYCSTORE_Handle *store;
60
61/**
62 * All connected masters.
63 * Channel's pub_key_hash -> struct Master
64 */
65static struct GNUNET_CONTAINER_MultiHashMap *masters;
66
67/**
68 * All connected slaves.
69 * Channel's pub_key_hash -> struct Slave
70 */
71static struct GNUNET_CONTAINER_MultiHashMap *slaves;
72
73/**
74 * Connected slaves per channel.
75 * Channel's pub_key_hash -> Slave's pub_key -> struct Slave
76 */
77static struct GNUNET_CONTAINER_MultiHashMap *channel_slaves;
78
79
80/**
81 * Message in the transmission queue.
82 */
83struct TransmitMessage
84{
85 struct TransmitMessage *prev;
86 struct TransmitMessage *next;
87
88 struct GNUNET_SERVICE_Client *client;
89
90 /**
91 * ID assigned to the message.
92 */
93 uint64_t id;
94
95 /**
96 * Size of message.
97 */
98 uint16_t size;
99
100 /**
101 * Type of first message part.
102 */
103 uint16_t first_ptype;
104
105 /**
106 * Type of last message part.
107 */
108 uint16_t last_ptype;
109
110 /* Followed by message */
111};
112
113
114/**
115 * Cache for received message fragments.
116 * Message fragments are only sent to clients after all modifiers arrived.
117 *
118 * chan_key -> MultiHashMap chan_msgs
119 */
120static struct GNUNET_CONTAINER_MultiHashMap *recv_cache;
121
122
123/**
124 * Entry in the chan_msgs hashmap of @a recv_cache:
125 * fragment_id -> RecvCacheEntry
126 */
127struct RecvCacheEntry
128{
129 struct GNUNET_MULTICAST_MessageHeader *mmsg;
130 uint16_t ref_count;
131};
132
133
134/**
135 * Entry in the @a recv_frags hash map of a @a Channel.
136 * message_id -> FragmentQueue
137 */
138struct FragmentQueue
139{
140 /**
141 * Fragment IDs stored in @a recv_cache.
142 */
143 struct GNUNET_CONTAINER_Heap *fragments;
144
145 /**
146 * Total size of received fragments.
147 */
148 uint64_t size;
149
150 /**
151 * Total size of received header fragments (METHOD & MODIFIERs)
152 */
153 uint64_t header_size;
154
155 /**
156 * The @a state_delta field from struct GNUNET_PSYC_MessageMethod.
157 */
158 uint64_t state_delta;
159
160 /**
161 * The @a flags field from struct GNUNET_PSYC_MessageMethod.
162 */
163 uint32_t flags;
164
165 /**
166 * Receive state of message.
167 *
168 * @see MessageFragmentState
169 */
170 uint8_t state;
171
172 /**
173 * Whether the state is already modified in PSYCstore.
174 */
175 uint8_t state_is_modified;
176
177 /**
178 * Is the message queued for delivery to the client?
179 * i.e. added to the recv_msgs queue
180 */
181 uint8_t is_queued;
182};
183
184
185/**
186 * List of connected clients.
187 */
188struct ClientList
189{
190 struct ClientList *prev;
191 struct ClientList *next;
192
193 struct GNUNET_SERVICE_Client *client;
194};
195
196
197struct Operation
198{
199 struct Operation *prev;
200 struct Operation *next;
201
202 struct GNUNET_SERVICE_Client *client;
203 struct Channel *channel;
204 uint64_t op_id;
205 uint32_t flags;
206};
207
208
209/**
210 * Common part of the client context for both a channel master and slave.
211 */
212struct Channel
213{
214 struct ClientList *clients_head;
215 struct ClientList *clients_tail;
216
217 struct Operation *op_head;
218 struct Operation *op_tail;
219
220 struct TransmitMessage *tmit_head;
221 struct TransmitMessage *tmit_tail;
222
223 /**
224 * Current PSYCstore operation.
225 */
226 struct GNUNET_PSYCSTORE_OperationHandle *store_op;
227
228 /**
229 * Received fragments not yet sent to the client.
230 * message_id -> FragmentQueue
231 */
232 struct GNUNET_CONTAINER_MultiHashMap *recv_frags;
233
234 /**
235 * Received message IDs not yet sent to the client.
236 */
237 struct GNUNET_CONTAINER_Heap *recv_msgs;
238
239 /**
240 * Public key of the channel.
241 */
242 struct GNUNET_CRYPTO_EddsaPublicKey pub_key;
243
244 /**
245 * Hash of @a pub_key.
246 */
247 struct GNUNET_HashCode pub_key_hash;
248
249 /**
250 * Last message ID sent to the client.
251 * 0 if there is no such message.
252 */
253 uint64_t max_message_id;
254
255 /**
256 * ID of the last stateful message, where the state operations has been
257 * processed and saved to PSYCstore and which has been sent to the client.
258 * 0 if there is no such message.
259 */
260 uint64_t max_state_message_id;
261
262 /**
263 * Expected value size for the modifier being received from the PSYC service.
264 */
265 uint32_t tmit_mod_value_size_expected;
266
267 /**
268 * Actual value size for the modifier being received from the PSYC service.
269 */
270 uint32_t tmit_mod_value_size;
271
272 /**
273 * Is this channel ready to receive messages from client?
274 * #GNUNET_YES or #GNUNET_NO
275 */
276 uint8_t is_ready;
277
278 /**
279 * Is the client disconnected?
280 * #GNUNET_YES or #GNUNET_NO
281 */
282 uint8_t is_disconnecting;
283
284 /**
285 * Is this a channel master (#GNUNET_YES), or slave (#GNUNET_NO)?
286 */
287 uint8_t is_master;
288
289 union {
290 struct Master *master;
291 struct Slave *slave;
292 };
293};
294
295
296/**
297 * Client context for a channel master.
298 */
299struct Master
300{
301 /**
302 * Channel struct common for Master and Slave
303 */
304 struct Channel channel;
305
306 /**
307 * Private key of the channel.
308 */
309 struct GNUNET_CRYPTO_EddsaPrivateKey priv_key;
310
311 /**
312 * Handle for the multicast origin.
313 */
314 struct GNUNET_MULTICAST_Origin *origin;
315
316 /**
317 * Transmit handle for multicast.
318 */
319 struct GNUNET_MULTICAST_OriginTransmitHandle *tmit_handle;
320
321 /**
322 * Incoming join requests from multicast.
323 * member_pub_key -> struct GNUNET_MULTICAST_JoinHandle *
324 */
325 struct GNUNET_CONTAINER_MultiHashMap *join_reqs;
326
327 /**
328 * Last message ID transmitted to this channel.
329 *
330 * Incremented before sending a message, thus the message_id in messages sent
331 * starts from 1.
332 */
333 uint64_t max_message_id;
334
335 /**
336 * ID of the last message with state operations transmitted to the channel.
337 * 0 if there is no such message.
338 */
339 uint64_t max_state_message_id;
340
341 /**
342 * Maximum group generation transmitted to the channel.
343 */
344 uint64_t max_group_generation;
345
346 /**
347 * @see enum GNUNET_PSYC_Policy
348 */
349 enum GNUNET_PSYC_Policy policy;
350};
351
352
353/**
354 * Client context for a channel slave.
355 */
356struct Slave
357{
358 /**
359 * Channel struct common for Master and Slave
360 */
361 struct Channel channel;
362
363 /**
364 * Private key of the slave.
365 */
366 struct GNUNET_CRYPTO_EcdsaPrivateKey priv_key;
367
368 /**
369 * Public key of the slave.
370 */
371 struct GNUNET_CRYPTO_EcdsaPublicKey pub_key;
372
373 /**
374 * Hash of @a pub_key.
375 */
376 struct GNUNET_HashCode pub_key_hash;
377
378 /**
379 * Handle for the multicast member.
380 */
381 struct GNUNET_MULTICAST_Member *member;
382
383 /**
384 * Transmit handle for multicast.
385 */
386 struct GNUNET_MULTICAST_MemberTransmitHandle *tmit_handle;
387
388 /**
389 * Peer identity of the origin.
390 */
391 struct GNUNET_PeerIdentity origin;
392
393 /**
394 * Number of items in @a relays.
395 */
396 uint32_t relay_count;
397
398 /**
399 * Relays that multicast can use to connect.
400 */
401 struct GNUNET_PeerIdentity *relays;
402
403 /**
404 * Join request to be transmitted to the master on join.
405 */
406 struct GNUNET_PSYC_Message *join_msg;
407
408 /**
409 * Join decision received from multicast.
410 */
411 struct GNUNET_PSYC_JoinDecisionMessage *join_dcsn;
412
413 /**
414 * Maximum request ID for this channel.
415 */
416 uint64_t max_request_id;
417
418 /**
419 * Join flags.
420 */
421 enum GNUNET_PSYC_SlaveJoinFlags join_flags;
422};
423
424
425/**
426 * Client context.
427 */
428struct Client {
429 struct GNUNET_SERVICE_Client *client;
430 struct Channel *channel;
431};
432
433
434struct ReplayRequestKey
435{
436 uint64_t fragment_id;
437 uint64_t message_id;
438 uint64_t fragment_offset;
439 uint64_t flags;
440};
441
442
443static void
444transmit_message (struct Channel *chn);
445
446static uint64_t
447message_queue_run (struct Channel *chn);
448
449static uint64_t
450message_queue_drop (struct Channel *chn);
451
452
453static void
454schedule_transmit_message (void *cls)
455{
456 struct Channel *chn = cls;
457
458 transmit_message (chn);
459}
460
461
462/**
463 * Task run during shutdown.
464 *
465 * @param cls unused
466 */
467static void
468shutdown_task (void *cls)
469{
470 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
471 "shutting down...\n");
472 GNUNET_PSYCSTORE_disconnect (store);
473 if (NULL != stats)
474 {
475 GNUNET_STATISTICS_destroy (stats, GNUNET_YES);
476 stats = NULL;
477 }
478}
479
480
481static struct Operation *
482op_add (struct Channel *chn, struct GNUNET_SERVICE_Client *client,
483 uint64_t op_id, uint32_t flags)
484{
485 struct Operation *op = GNUNET_malloc (sizeof (*op));
486 op->client = client;
487 op->channel = chn;
488 op->op_id = op_id;
489 op->flags = flags;
490 GNUNET_CONTAINER_DLL_insert (chn->op_head, chn->op_tail, op);
491 return op;
492}
493
494
495static void
496op_remove (struct Operation *op)
497{
498 GNUNET_CONTAINER_DLL_remove (op->channel->op_head, op->channel->op_tail, op);
499 GNUNET_free (op);
500}
501
502
503/**
504 * Clean up master data structures after a client disconnected.
505 */
506static void
507cleanup_master (struct Master *mst)
508{
509 struct Channel *chn = &mst->channel;
510
511 GNUNET_CONTAINER_multihashmap_destroy (mst->join_reqs);
512 GNUNET_CONTAINER_multihashmap_remove (masters, &chn->pub_key_hash, mst);
513}
514
515
516/**
517 * Clean up slave data structures after a client disconnected.
518 */
519static void
520cleanup_slave (struct Slave *slv)
521{
522 struct Channel *chn = &slv->channel;
523 struct GNUNET_CONTAINER_MultiHashMap *
524 chn_slv = GNUNET_CONTAINER_multihashmap_get (channel_slaves,
525 &chn->pub_key_hash);
526 GNUNET_assert (NULL != chn_slv);
527 GNUNET_CONTAINER_multihashmap_remove (chn_slv, &slv->pub_key_hash, slv);
528
529 if (0 == GNUNET_CONTAINER_multihashmap_size (chn_slv))
530 {
531 GNUNET_CONTAINER_multihashmap_remove (channel_slaves, &chn->pub_key_hash,
532 chn_slv);
533 GNUNET_CONTAINER_multihashmap_destroy (chn_slv);
534 }
535 GNUNET_CONTAINER_multihashmap_remove (slaves, &chn->pub_key_hash, slv);
536
537 if (NULL != slv->join_msg)
538 {
539 GNUNET_free (slv->join_msg);
540 slv->join_msg = NULL;
541 }
542 if (NULL != slv->relays)
543 {
544 GNUNET_free (slv->relays);
545 slv->relays = NULL;
546 }
547 GNUNET_CONTAINER_multihashmap_remove (slaves, &chn->pub_key_hash, slv);
548}
549
550
551/**
552 * Clean up channel data structures after a client disconnected.
553 */
554static void
555cleanup_channel (struct Channel *chn)
556{
557 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
558 "%p Cleaning up channel %s. master? %u\n",
559 chn,
560 GNUNET_h2s (&chn->pub_key_hash),
561 chn->is_master);
562 message_queue_drop (chn);
563 GNUNET_CONTAINER_multihashmap_destroy (chn->recv_frags);
564 chn->recv_frags = NULL;
565
566 if (NULL != chn->store_op)
567 {
568 GNUNET_PSYCSTORE_operation_cancel (chn->store_op);
569 chn->store_op = NULL;
570 }
571
572 (GNUNET_YES == chn->is_master)
573 ? cleanup_master (chn->master)
574 : cleanup_slave (chn->slave);
575 GNUNET_free (chn);
576}
577
578
579/**
580 * Called whenever a client is disconnected.
581 * Frees our resources associated with that client.
582 *
583 * @param cls closure
584 * @param client identification of the client
585 * @param app_ctx must match @a client
586 */
587static void
588client_notify_disconnect (void *cls,
589 struct GNUNET_SERVICE_Client *client,
590 void *app_ctx)
591{
592 struct Client *c = app_ctx;
593 struct Channel *chn = c->channel;
594 GNUNET_free (c);
595
596 if (NULL == chn)
597 {
598 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
599 "%p User context is NULL in client_notify_disconnect ()\n",
600 chn);
601 GNUNET_break (0);
602 return;
603 }
604
605 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
606 "%p Client %p (%s) disconnected from channel %s\n",
607 chn,
608 client,
609 (GNUNET_YES == chn->is_master) ? "master" : "slave",
610 GNUNET_h2s (&chn->pub_key_hash));
611
612 struct ClientList *cli = chn->clients_head;
613 while (NULL != cli)
614 {
615 if (cli->client == client)
616 {
617 GNUNET_CONTAINER_DLL_remove (chn->clients_head, chn->clients_tail, cli);
618 GNUNET_free (cli);
619 break;
620 }
621 cli = cli->next;
622 }
623
624 struct Operation *op = chn->op_head;
625 while (NULL != op)
626 {
627 if (op->client == client)
628 {
629 op->client = NULL;
630 break;
631 }
632 op = op->next;
633 }
634
635 if (NULL == chn->clients_head)
636 { /* Last client disconnected. */
637 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
638 "%p Last client (%s) disconnected from channel %s\n",
639 chn,
640 (GNUNET_YES == chn->is_master) ? "master" : "slave",
641 GNUNET_h2s (&chn->pub_key_hash));
642 chn->is_disconnecting = GNUNET_YES;
643 cleanup_channel (chn);
644 }
645}
646
647
648/**
649 * A new client connected.
650 *
651 * @param cls NULL
652 * @param client client to add
653 * @param mq message queue for @a client
654 * @return @a client
655 */
656static void *
657client_notify_connect (void *cls,
658 struct GNUNET_SERVICE_Client *client,
659 struct GNUNET_MQ_Handle *mq)
660{
661 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Client connected: %p\n", client);
662
663 struct Client *c = GNUNET_malloc (sizeof (*c));
664 c->client = client;
665
666 return c;
667}
668
669
670/**
671 * Send message to all clients connected to the channel.
672 */
673static void
674client_send_msg (const struct Channel *chn,
675 const struct GNUNET_MessageHeader *msg)
676{
677 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
678 "Sending message to clients of channel %p.\n",
679 chn);
680
681 struct ClientList *cli = chn->clients_head;
682 while (NULL != cli)
683 {
684 struct GNUNET_MQ_Envelope *
685 env = GNUNET_MQ_msg_copy (msg);
686
687 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (cli->client),
688 env);
689 cli = cli->next;
690 }
691}
692
693
694/**
695 * Send a result code back to the client.
696 *
697 * @param client
698 * Client that should receive the result code.
699 * @param result_code
700 * Code to transmit.
701 * @param op_id
702 * Operation ID in network byte order.
703 * @param data
704 * Data payload or NULL.
705 * @param data_size
706 * Size of @a data.
707 */
708static void
709client_send_result (struct GNUNET_SERVICE_Client *client, uint64_t op_id,
710 int64_t result_code, const void *data, uint16_t data_size)
711{
712 struct GNUNET_OperationResultMessage *res;
713 struct GNUNET_MQ_Envelope *
714 env = GNUNET_MQ_msg_extra (res,
715 data_size,
716 GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE);
717 res->result_code = GNUNET_htonll (result_code);
718 res->op_id = op_id;
719 if (0 < data_size)
720 GNUNET_memcpy (&res[1], data, data_size);
721
722 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
723 "%p Sending result to client for OP ID %" PRIu64 ": %" PRId64 " (size: %u)\n",
724 client,
725 GNUNET_ntohll (op_id),
726 result_code,
727 data_size);
728
729 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env);
730}
731
732
733/**
734 * Closure for join_mem_test_cb()
735 */
736struct JoinMemTestClosure
737{
738 struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
739 struct Channel *channel;
740 struct GNUNET_MULTICAST_JoinHandle *join_handle;
741 struct GNUNET_PSYC_JoinRequestMessage *join_msg;
742};
743
744
745/**
746 * Membership test result callback used for join requests.
747 */
748static void
749join_mem_test_cb (void *cls, int64_t result,
750 const char *err_msg, uint16_t err_msg_size)
751{
752 struct JoinMemTestClosure *jcls = cls;
753
754 if (GNUNET_NO == result && GNUNET_YES == jcls->channel->is_master)
755 { /* Pass on join request to client if this is a master channel */
756 struct Master *mst = jcls->channel->master;
757 struct GNUNET_HashCode slave_pub_hash;
758 GNUNET_CRYPTO_hash (&jcls->slave_pub_key, sizeof (jcls->slave_pub_key),
759 &slave_pub_hash);
760 GNUNET_CONTAINER_multihashmap_put (mst->join_reqs, &slave_pub_hash, jcls->join_handle,
761 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
762 client_send_msg (jcls->channel, &jcls->join_msg->header);
763 }
764 else
765 {
766 if (GNUNET_SYSERR == result)
767 {
768 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
769 "Could not perform membership test (%.*s)\n",
770 err_msg_size, err_msg);
771 }
772 // FIXME: add relays
773 GNUNET_MULTICAST_join_decision (jcls->join_handle, result, 0, NULL, NULL);
774 }
775 GNUNET_free (jcls->join_msg);
776 GNUNET_free (jcls);
777}
778
779
780/**
781 * Incoming join request from multicast.
782 */
783static void
784mcast_recv_join_request (void *cls,
785 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_pub_key,
786 const struct GNUNET_MessageHeader *join_msg,
787 struct GNUNET_MULTICAST_JoinHandle *jh)
788{
789 struct Channel *chn = cls;
790 uint16_t join_msg_size = 0;
791
792 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
793 "%p Got join request.\n",
794 chn);
795 if (NULL != join_msg)
796 {
797 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE == ntohs (join_msg->type))
798 {
799 join_msg_size = ntohs (join_msg->size);
800 }
801 else
802 {
803 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
804 "%p Got join message with invalid type %u.\n",
805 chn,
806 ntohs (join_msg->type));
807 }
808 }
809
810 struct GNUNET_PSYC_JoinRequestMessage *
811 req = GNUNET_malloc (sizeof (*req) + join_msg_size);
812 req->header.size = htons (sizeof (*req) + join_msg_size);
813 req->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST);
814 req->slave_pub_key = *slave_pub_key;
815 if (0 < join_msg_size)
816 GNUNET_memcpy (&req[1], join_msg, join_msg_size);
817
818 struct JoinMemTestClosure *jcls = GNUNET_malloc (sizeof (*jcls));
819 jcls->slave_pub_key = *slave_pub_key;
820 jcls->channel = chn;
821 jcls->join_handle = jh;
822 jcls->join_msg = req;
823
824 GNUNET_PSYCSTORE_membership_test (store, &chn->pub_key, slave_pub_key,
825 chn->max_message_id, 0,
826 &join_mem_test_cb, jcls);
827}
828
829
830/**
831 * Join decision received from multicast.
832 */
833static void
834mcast_recv_join_decision (void *cls, int is_admitted,
835 const struct GNUNET_PeerIdentity *peer,
836 uint16_t relay_count,
837 const struct GNUNET_PeerIdentity *relays,
838 const struct GNUNET_MessageHeader *join_resp)
839{
840 struct Slave *slv = cls;
841 struct Channel *chn = &slv->channel;
842 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
843 "%p Got join decision: %d\n",
844 slv,
845 is_admitted);
846 if (GNUNET_YES == chn->is_ready)
847 {
848 /* Already admitted */
849 return;
850 }
851
852 uint16_t join_resp_size = (NULL != join_resp) ? ntohs (join_resp->size) : 0;
853 struct GNUNET_PSYC_JoinDecisionMessage *
854 dcsn = slv->join_dcsn = GNUNET_malloc (sizeof (*dcsn) + join_resp_size);
855 dcsn->header.size = htons (sizeof (*dcsn) + join_resp_size);
856 dcsn->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION);
857 dcsn->is_admitted = htonl (is_admitted);
858 if (0 < join_resp_size)
859 GNUNET_memcpy (&dcsn[1], join_resp, join_resp_size);
860
861 client_send_msg (chn, &dcsn->header);
862
863 if (GNUNET_YES == is_admitted
864 && ! (GNUNET_PSYC_SLAVE_JOIN_LOCAL & slv->join_flags))
865 {
866 chn->is_ready = GNUNET_YES;
867 }
868}
869
870
871static int
872store_recv_fragment_replay (void *cls,
873 struct GNUNET_MULTICAST_MessageHeader *msg,
874 enum GNUNET_PSYCSTORE_MessageFlags flags)
875{
876 struct GNUNET_MULTICAST_ReplayHandle *rh = cls;
877
878 GNUNET_MULTICAST_replay_response (rh, &msg->header, GNUNET_MULTICAST_REC_OK);
879 return GNUNET_YES;
880}
881
882
883/**
884 * Received result of GNUNET_PSYCSTORE_fragment_get() for multicast replay.
885 */
886static void
887store_recv_fragment_replay_result (void *cls,
888 int64_t result,
889 const char *err_msg,
890 uint16_t err_msg_size)
891{
892 struct GNUNET_MULTICAST_ReplayHandle *rh = cls;
893
894 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
895 "%p Fragment replay: PSYCSTORE returned %" PRId64 " (%.*s)\n",
896 rh,
897 result,
898 err_msg_size,
899 err_msg);
900 switch (result)
901 {
902 case GNUNET_YES:
903 break;
904
905 case GNUNET_NO:
906 GNUNET_MULTICAST_replay_response (rh, NULL,
907 GNUNET_MULTICAST_REC_NOT_FOUND);
908 return;
909
910 case GNUNET_PSYCSTORE_MEMBERSHIP_TEST_FAILED:
911 GNUNET_MULTICAST_replay_response (rh, NULL,
912 GNUNET_MULTICAST_REC_ACCESS_DENIED);
913 return;
914
915 case GNUNET_SYSERR:
916 GNUNET_MULTICAST_replay_response (rh, NULL,
917 GNUNET_MULTICAST_REC_INTERNAL_ERROR);
918 return;
919 }
920 /* GNUNET_MULTICAST_replay_response frees 'rh' when passed
921 * an error code, so it must be ensured no further processing
922 * is attempted on 'rh'. Maybe this should be refactored as
923 * it doesn't look very intuitive. --lynX
924 */
925 GNUNET_MULTICAST_replay_response_end (rh);
926}
927
928
929/**
930 * Incoming fragment replay request from multicast.
931 */
932static void
933mcast_recv_replay_fragment (void *cls,
934 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_pub_key,
935 uint64_t fragment_id, uint64_t flags,
936 struct GNUNET_MULTICAST_ReplayHandle *rh)
937
938{
939 struct Channel *chn = cls;
940 GNUNET_PSYCSTORE_fragment_get (store, &chn->pub_key, slave_pub_key,
941 fragment_id, fragment_id,
942 &store_recv_fragment_replay,
943 &store_recv_fragment_replay_result, rh);
944}
945
946
947/**
948 * Incoming message replay request from multicast.
949 */
950static void
951mcast_recv_replay_message (void *cls,
952 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_pub_key,
953 uint64_t message_id,
954 uint64_t fragment_offset,
955 uint64_t flags,
956 struct GNUNET_MULTICAST_ReplayHandle *rh)
957{
958 struct Channel *chn = cls;
959 GNUNET_PSYCSTORE_message_get (store, &chn->pub_key, slave_pub_key,
960 message_id, message_id, 1, NULL,
961 &store_recv_fragment_replay,
962 &store_recv_fragment_replay_result, rh);
963}
964
965
966/**
967 * Convert an uint64_t in network byte order to a HashCode
968 * that can be used as key in a MultiHashMap
969 */
970static inline void
971hash_key_from_nll (struct GNUNET_HashCode *key, uint64_t n)
972{
973 /* use little-endian order, as idx_of MultiHashMap casts key to unsigned int */
974 /* TODO: use built-in byte swap functions if available */
975
976 n = ((n << 8) & 0xFF00FF00FF00FF00ULL) | ((n >> 8) & 0x00FF00FF00FF00FFULL);
977 n = ((n << 16) & 0xFFFF0000FFFF0000ULL) | ((n >> 16) & 0x0000FFFF0000FFFFULL);
978
979 *key = (struct GNUNET_HashCode) {};
980 *((uint64_t *) key)
981 = (n << 32) | (n >> 32);
982}
983
984
985/**
986 * Convert an uint64_t in host byte order to a HashCode
987 * that can be used as key in a MultiHashMap
988 */
989static inline void
990hash_key_from_hll (struct GNUNET_HashCode *key, uint64_t n)
991{
992#if __BYTE_ORDER == __BIG_ENDIAN
993 hash_key_from_nll (key, n);
994#elif __BYTE_ORDER == __LITTLE_ENDIAN
995 *key = (struct GNUNET_HashCode) {};
996 *((uint64_t *) key) = n;
997#else
998 #error byteorder undefined
999#endif
1000}
1001
1002
1003/**
1004 * Initialize PSYC message header.
1005 */
1006static inline void
1007psyc_msg_init (struct GNUNET_PSYC_MessageHeader *pmsg,
1008 const struct GNUNET_MULTICAST_MessageHeader *mmsg, uint32_t flags)
1009{
1010 uint16_t size = ntohs (mmsg->header.size);
1011 uint16_t psize = sizeof (*pmsg) + size - sizeof (*mmsg);
1012
1013 pmsg->header.size = htons (psize);
1014 pmsg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE);
1015 pmsg->message_id = mmsg->message_id;
1016 pmsg->fragment_offset = mmsg->fragment_offset;
1017 pmsg->flags = htonl (flags);
1018
1019 GNUNET_memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg));
1020}
1021
1022
1023/**
1024 * Create a new PSYC message from a multicast message for sending it to clients.
1025 */
1026static inline struct GNUNET_PSYC_MessageHeader *
1027psyc_msg_new (const struct GNUNET_MULTICAST_MessageHeader *mmsg, uint32_t flags)
1028{
1029 struct GNUNET_PSYC_MessageHeader *pmsg;
1030 uint16_t size = ntohs (mmsg->header.size);
1031 uint16_t psize = sizeof (*pmsg) + size - sizeof (*mmsg);
1032
1033 pmsg = GNUNET_malloc (psize);
1034 psyc_msg_init (pmsg, mmsg, flags);
1035 return pmsg;
1036}
1037
1038
1039/**
1040 * Send multicast message to all clients connected to the channel.
1041 */
1042static void
1043client_send_mcast_msg (struct Channel *chn,
1044 const struct GNUNET_MULTICAST_MessageHeader *mmsg,
1045 uint32_t flags)
1046{
1047 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1048 "%p Sending multicast message to client. fragment_id: %" PRIu64 ", message_id: %" PRIu64 "\n",
1049 chn,
1050 GNUNET_ntohll (mmsg->fragment_id),
1051 GNUNET_ntohll (mmsg->message_id));
1052
1053 struct GNUNET_PSYC_MessageHeader *
1054 pmsg = GNUNET_PSYC_message_header_create (mmsg, flags);
1055 client_send_msg (chn, &pmsg->header);
1056 GNUNET_free (pmsg);
1057}
1058
1059
1060/**
1061 * Send multicast request to all clients connected to the channel.
1062 */
1063static void
1064client_send_mcast_req (struct Master *mst,
1065 const struct GNUNET_MULTICAST_RequestHeader *req)
1066{
1067 struct Channel *chn = &mst->channel;
1068
1069 struct GNUNET_PSYC_MessageHeader *pmsg;
1070 uint16_t size = ntohs (req->header.size);
1071 uint16_t psize = sizeof (*pmsg) + size - sizeof (*req);
1072
1073 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1074 "%p Sending multicast request to client. fragment_id: %" PRIu64 ", message_id: %" PRIu64 "\n",
1075 chn,
1076 GNUNET_ntohll (req->fragment_id),
1077 GNUNET_ntohll (req->request_id));
1078
1079 pmsg = GNUNET_malloc (psize);
1080 pmsg->header.size = htons (psize);
1081 pmsg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE);
1082 pmsg->message_id = req->request_id;
1083 pmsg->fragment_offset = req->fragment_offset;
1084 pmsg->flags = htonl (GNUNET_PSYC_MESSAGE_REQUEST);
1085 pmsg->slave_pub_key = req->member_pub_key;
1086 GNUNET_memcpy (&pmsg[1], &req[1], size - sizeof (*req));
1087
1088 client_send_msg (chn, &pmsg->header);
1089
1090 /* FIXME: save req to PSYCstore so that it can be resent later to clients */
1091
1092 GNUNET_free (pmsg);
1093}
1094
1095
1096/**
1097 * Insert a multicast message fragment into the queue belonging to the message.
1098 *
1099 * @param chn Channel.
1100 * @param mmsg Multicast message fragment.
1101 * @param msg_id_hash Message ID of @a mmsg in a struct GNUNET_HashCode.
1102 * @param first_ptype First PSYC message part type in @a mmsg.
1103 * @param last_ptype Last PSYC message part type in @a mmsg.
1104 */
1105static void
1106fragment_queue_insert (struct Channel *chn,
1107 const struct GNUNET_MULTICAST_MessageHeader *mmsg,
1108 uint16_t first_ptype, uint16_t last_ptype)
1109{
1110 const uint16_t size = ntohs (mmsg->header.size);
1111 const uint64_t frag_offset = GNUNET_ntohll (mmsg->fragment_offset);
1112 struct GNUNET_CONTAINER_MultiHashMap
1113 *chan_msgs = GNUNET_CONTAINER_multihashmap_get (recv_cache,
1114 &chn->pub_key_hash);
1115
1116 struct GNUNET_HashCode msg_id_hash;
1117 hash_key_from_nll (&msg_id_hash, mmsg->message_id);
1118
1119 struct FragmentQueue
1120 *fragq = GNUNET_CONTAINER_multihashmap_get (chn->recv_frags, &msg_id_hash);
1121
1122 if (NULL == fragq)
1123 {
1124 fragq = GNUNET_malloc (sizeof (*fragq));
1125 fragq->state = MSG_FRAG_STATE_HEADER;
1126 fragq->fragments
1127 = GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN);
1128
1129 GNUNET_CONTAINER_multihashmap_put (chn->recv_frags, &msg_id_hash, fragq,
1130 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1131
1132 if (NULL == chan_msgs)
1133 {
1134 chan_msgs = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
1135 GNUNET_CONTAINER_multihashmap_put (recv_cache, &chn->pub_key_hash, chan_msgs,
1136 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1137 }
1138 }
1139
1140 struct GNUNET_HashCode frag_id_hash;
1141 hash_key_from_nll (&frag_id_hash, mmsg->fragment_id);
1142 struct RecvCacheEntry
1143 *cache_entry = GNUNET_CONTAINER_multihashmap_get (chan_msgs, &frag_id_hash);
1144 if (NULL == cache_entry)
1145 {
1146 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1147 "%p Adding message fragment to cache. message_id: %" PRIu64 ", fragment_id: %" PRIu64 "\n",
1148 chn,
1149 GNUNET_ntohll (mmsg->message_id),
1150 GNUNET_ntohll (mmsg->fragment_id));
1151 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1152 "%p header_size: %" PRIu64 " + %u\n",
1153 chn,
1154 fragq->header_size,
1155 size);
1156 cache_entry = GNUNET_malloc (sizeof (*cache_entry));
1157 cache_entry->ref_count = 1;
1158 cache_entry->mmsg = GNUNET_malloc (size);
1159 GNUNET_memcpy (cache_entry->mmsg, mmsg, size);
1160 GNUNET_CONTAINER_multihashmap_put (chan_msgs, &frag_id_hash, cache_entry,
1161 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1162 }
1163 else
1164 {
1165 cache_entry->ref_count++;
1166 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1167 "%p Message fragment is already in cache. message_id: %" PRIu64 ", fragment_id: %" PRIu64 ", ref_count: %u\n",
1168 chn,
1169 GNUNET_ntohll (mmsg->message_id),
1170 GNUNET_ntohll (mmsg->fragment_id),
1171 cache_entry->ref_count);
1172 }
1173
1174 if (MSG_FRAG_STATE_HEADER == fragq->state)
1175 {
1176 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == first_ptype)
1177 {
1178 struct GNUNET_PSYC_MessageMethod *
1179 pmeth = (struct GNUNET_PSYC_MessageMethod *) &mmsg[1];
1180 fragq->state_delta = GNUNET_ntohll (pmeth->state_delta);
1181 fragq->flags = ntohl (pmeth->flags);
1182 }
1183
1184 if (last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA)
1185 {
1186 fragq->header_size += size;
1187 }
1188 else if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == first_ptype
1189 || frag_offset == fragq->header_size)
1190 { /* header is now complete */
1191 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1192 "%p Header of message %" PRIu64 " is complete.\n",
1193 chn,
1194 GNUNET_ntohll (mmsg->message_id));
1195
1196 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1197 "%p Adding message %" PRIu64 " to queue.\n",
1198 chn,
1199 GNUNET_ntohll (mmsg->message_id));
1200 fragq->state = MSG_FRAG_STATE_DATA;
1201 }
1202 else
1203 {
1204 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1205 "%p Header of message %" PRIu64 " is NOT complete yet: %" PRIu64 " != %" PRIu64 "\n",
1206 chn,
1207 GNUNET_ntohll (mmsg->message_id),
1208 frag_offset,
1209 fragq->header_size);
1210 }
1211 }
1212
1213 switch (last_ptype)
1214 {
1215 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
1216 if (frag_offset == fragq->size)
1217 fragq->state = MSG_FRAG_STATE_END;
1218 else
1219 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1220 "%p Message %" PRIu64 " is NOT complete yet: %" PRIu64 " != %" PRIu64 "\n",
1221 chn,
1222 GNUNET_ntohll (mmsg->message_id),
1223 frag_offset,
1224 fragq->size);
1225 break;
1226
1227 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
1228 /* Drop message without delivering to client if it's a single fragment */
1229 fragq->state =
1230 (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == first_ptype)
1231 ? MSG_FRAG_STATE_DROP
1232 : MSG_FRAG_STATE_CANCEL;
1233 }
1234
1235 switch (fragq->state)
1236 {
1237 case MSG_FRAG_STATE_DATA:
1238 case MSG_FRAG_STATE_END:
1239 case MSG_FRAG_STATE_CANCEL:
1240 if (GNUNET_NO == fragq->is_queued)
1241 {
1242 GNUNET_CONTAINER_heap_insert (chn->recv_msgs, NULL,
1243 GNUNET_ntohll (mmsg->message_id));
1244 fragq->is_queued = GNUNET_YES;
1245 }
1246 }
1247
1248 fragq->size += size;
1249 GNUNET_CONTAINER_heap_insert (fragq->fragments, NULL,
1250 GNUNET_ntohll (mmsg->fragment_id));
1251}
1252
1253
1254/**
1255 * Run fragment queue of a message.
1256 *
1257 * Send fragments of a message in order to client, after all modifiers arrived
1258 * from multicast.
1259 *
1260 * @param chn
1261 * Channel.
1262 * @param msg_id
1263 * ID of the message @a fragq belongs to.
1264 * @param fragq
1265 * Fragment queue of the message.
1266 * @param drop
1267 * Drop message without delivering to client?
1268 * #GNUNET_YES or #GNUNET_NO.
1269 */
1270static void
1271fragment_queue_run (struct Channel *chn, uint64_t msg_id,
1272 struct FragmentQueue *fragq, uint8_t drop)
1273{
1274 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1275 "%p Running message fragment queue for message %" PRIu64 " (state: %u).\n",
1276 chn,
1277 msg_id,
1278 fragq->state);
1279
1280 struct GNUNET_CONTAINER_MultiHashMap
1281 *chan_msgs = GNUNET_CONTAINER_multihashmap_get (recv_cache,
1282 &chn->pub_key_hash);
1283 GNUNET_assert (NULL != chan_msgs);
1284 uint64_t frag_id;
1285
1286 while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (fragq->fragments, NULL,
1287 &frag_id))
1288 {
1289 struct GNUNET_HashCode frag_id_hash;
1290 hash_key_from_hll (&frag_id_hash, frag_id);
1291 struct RecvCacheEntry *cache_entry
1292 = GNUNET_CONTAINER_multihashmap_get (chan_msgs, &frag_id_hash);
1293 if (cache_entry != NULL)
1294 {
1295 if (GNUNET_NO == drop)
1296 {
1297 client_send_mcast_msg (chn, cache_entry->mmsg, 0);
1298 }
1299 if (cache_entry->ref_count <= 1)
1300 {
1301 GNUNET_CONTAINER_multihashmap_remove (chan_msgs, &frag_id_hash,
1302 cache_entry);
1303 GNUNET_free (cache_entry->mmsg);
1304 GNUNET_free (cache_entry);
1305 }
1306 else
1307 {
1308 cache_entry->ref_count--;
1309 }
1310 }
1311#if CACHE_AGING_IMPLEMENTED
1312 else if (GNUNET_NO == drop)
1313 {
1314 /* TODO: fragment not in cache anymore, retrieve it from PSYCstore */
1315 }
1316#endif
1317
1318 GNUNET_CONTAINER_heap_remove_root (fragq->fragments);
1319 }
1320
1321 if (MSG_FRAG_STATE_END <= fragq->state)
1322 {
1323 struct GNUNET_HashCode msg_id_hash;
1324 hash_key_from_hll (&msg_id_hash, msg_id);
1325
1326 GNUNET_CONTAINER_multihashmap_remove (chn->recv_frags, &msg_id_hash, fragq);
1327 GNUNET_CONTAINER_heap_destroy (fragq->fragments);
1328 GNUNET_free (fragq);
1329 }
1330 else
1331 {
1332 fragq->is_queued = GNUNET_NO;
1333 }
1334}
1335
1336
1337struct StateModifyClosure
1338{
1339 struct Channel *channel;
1340 uint64_t msg_id;
1341 struct GNUNET_HashCode msg_id_hash;
1342};
1343
1344
1345void
1346store_recv_state_modify_result (void *cls, int64_t result,
1347 const char *err_msg, uint16_t err_msg_size)
1348{
1349 struct StateModifyClosure *mcls = cls;
1350 struct Channel *chn = mcls->channel;
1351 uint64_t msg_id = mcls->msg_id;
1352
1353 struct FragmentQueue *
1354 fragq = GNUNET_CONTAINER_multihashmap_get (chn->recv_frags, &mcls->msg_id_hash);
1355
1356 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1357 "%p GNUNET_PSYCSTORE_state_modify() returned %" PRId64 " (%.*s)\n",
1358 chn, result, err_msg_size, err_msg);
1359
1360 switch (result)
1361 {
1362 case GNUNET_OK:
1363 case GNUNET_NO:
1364 if (NULL != fragq)
1365 fragq->state_is_modified = GNUNET_YES;
1366 if (chn->max_state_message_id < msg_id)
1367 chn->max_state_message_id = msg_id;
1368 if (chn->max_message_id < msg_id)
1369 chn->max_message_id = msg_id;
1370
1371 if (NULL != fragq)
1372 fragment_queue_run (chn, msg_id, fragq, MSG_FRAG_STATE_DROP == fragq->state);
1373 GNUNET_CONTAINER_heap_remove_root (chn->recv_msgs);
1374 message_queue_run (chn);
1375 break;
1376
1377 default:
1378 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1379 "%p GNUNET_PSYCSTORE_state_modify() failed with error %" PRId64 " (%.*s)\n",
1380 chn, result, err_msg_size, err_msg);
1381 /** @todo FIXME: handle state_modify error */
1382 }
1383}
1384
1385
1386/**
1387 * Run message queue.
1388 *
1389 * Send messages in queue to client in order after a message has arrived from
1390 * multicast, according to the following:
1391 * - A message is only sent if all of its modifiers arrived.
1392 * - A stateful message is only sent if the previous stateful message
1393 * has already been delivered to the client.
1394 *
1395 * @param chn Channel.
1396 *
1397 * @return Number of messages removed from queue and sent to client.
1398 */
1399static uint64_t
1400message_queue_run (struct Channel *chn)
1401{
1402 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1403 "%p Running message queue.\n", chn);
1404 uint64_t n = 0;
1405 uint64_t msg_id;
1406
1407 while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (chn->recv_msgs, NULL,
1408 &msg_id))
1409 {
1410 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1411 "%p Processing message %" PRIu64 " in queue.\n", chn, msg_id);
1412 struct GNUNET_HashCode msg_id_hash;
1413 hash_key_from_hll (&msg_id_hash, msg_id);
1414
1415 struct FragmentQueue *
1416 fragq = GNUNET_CONTAINER_multihashmap_get (chn->recv_frags, &msg_id_hash);
1417
1418 if (NULL == fragq || fragq->state <= MSG_FRAG_STATE_HEADER)
1419 {
1420 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1421 "%p No fragq (%p) or header not complete.\n",
1422 chn, fragq);
1423 break;
1424 }
1425
1426 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1427 "%p Fragment queue entry: state: %u, state delta: "
1428 "%" PRIu64 " - %" PRIu64 " ?= %" PRIu64 "\n",
1429 chn, fragq->state, msg_id, fragq->state_delta, chn->max_state_message_id);
1430
1431 if (MSG_FRAG_STATE_DATA <= fragq->state)
1432 {
1433 /* Check if there's a missing message before the current one */
1434 if (GNUNET_PSYC_STATE_NOT_MODIFIED == fragq->state_delta)
1435 {
1436 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state NOT modified\n", chn);
1437
1438 if (!(fragq->flags & GNUNET_PSYC_MESSAGE_ORDER_ANY)
1439 && (chn->max_message_id != msg_id - 1
1440 && chn->max_message_id != msg_id))
1441 {
1442 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1443 "%p Out of order message. "
1444 "(%" PRIu64 " != %" PRIu64 " - 1)\n",
1445 chn, chn->max_message_id, msg_id);
1446 break;
1447 // FIXME: keep track of messages processed in this queue run,
1448 // and only stop after reaching the end
1449 }
1450 }
1451 else
1452 {
1453 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state modified\n", chn);
1454 if (GNUNET_YES != fragq->state_is_modified)
1455 {
1456 if (msg_id - fragq->state_delta != chn->max_state_message_id)
1457 {
1458 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1459 "%p Out of order stateful message. "
1460 "(%" PRIu64 " - %" PRIu64 " != %" PRIu64 ")\n",
1461 chn, msg_id, fragq->state_delta, chn->max_state_message_id);
1462 break;
1463 // FIXME: keep track of messages processed in this queue run,
1464 // and only stop after reaching the end
1465 }
1466
1467 struct StateModifyClosure *mcls = GNUNET_malloc (sizeof (*mcls));
1468 mcls->channel = chn;
1469 mcls->msg_id = msg_id;
1470 mcls->msg_id_hash = msg_id_hash;
1471
1472 /* Apply modifiers to state in PSYCstore */
1473 GNUNET_PSYCSTORE_state_modify (store, &chn->pub_key, msg_id,
1474 fragq->state_delta,
1475 store_recv_state_modify_result, mcls);
1476 break; // continue after asynchronous state modify result
1477 }
1478 }
1479 chn->max_message_id = msg_id;
1480 }
1481 fragment_queue_run (chn, msg_id, fragq, MSG_FRAG_STATE_DROP == fragq->state);
1482 GNUNET_CONTAINER_heap_remove_root (chn->recv_msgs);
1483 n++;
1484 }
1485
1486 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1487 "%p Removed %" PRIu64 " messages from queue.\n", chn, n);
1488 return n;
1489}
1490
1491
1492/**
1493 * Drop message queue of a channel.
1494 *
1495 * Remove all messages in queue without sending it to clients.
1496 *
1497 * @param chn Channel.
1498 *
1499 * @return Number of messages removed from queue.
1500 */
1501static uint64_t
1502message_queue_drop (struct Channel *chn)
1503{
1504 uint64_t n = 0;
1505 uint64_t msg_id;
1506 while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (chn->recv_msgs, NULL,
1507 &msg_id))
1508 {
1509 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
1510 "%p Dropping message %" PRIu64 " from queue.\n", chn, msg_id);
1511 struct GNUNET_HashCode msg_id_hash;
1512 hash_key_from_hll (&msg_id_hash, msg_id);
1513
1514 struct FragmentQueue *
1515 fragq = GNUNET_CONTAINER_multihashmap_get (chn->recv_frags, &msg_id_hash);
1516 GNUNET_assert (NULL != fragq);
1517 fragment_queue_run (chn, msg_id, fragq, GNUNET_YES);
1518 GNUNET_CONTAINER_heap_remove_root (chn->recv_msgs);
1519 n++;
1520 }
1521 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1522 "%p Removed %" PRIu64 " messages from queue.\n", chn, n);
1523 return n;
1524}
1525
1526
1527/**
1528 * Received result of GNUNET_PSYCSTORE_fragment_store().
1529 */
1530static void
1531store_recv_fragment_store_result (void *cls, int64_t result,
1532 const char *err_msg, uint16_t err_msg_size)
1533{
1534 struct Channel *chn = cls;
1535 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1536 "%p GNUNET_PSYCSTORE_fragment_store() returned %" PRId64 " (%.*s)\n",
1537 chn, result, err_msg_size, err_msg);
1538}
1539
1540
1541/**
1542 * Handle incoming message fragment from multicast.
1543 *
1544 * Store it using PSYCstore and send it to the clients of the channel in order.
1545 */
1546static void
1547mcast_recv_message (void *cls, const struct GNUNET_MULTICAST_MessageHeader *mmsg)
1548{
1549 struct Channel *chn = cls;
1550 uint16_t size = ntohs (mmsg->header.size);
1551
1552 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1553 "%p Received multicast message of size %u. "
1554 "fragment_id=%" PRIu64 ", message_id=%" PRIu64
1555 ", fragment_offset=%" PRIu64 ", flags=%" PRIu64 "\n",
1556 chn, size,
1557 GNUNET_ntohll (mmsg->fragment_id),
1558 GNUNET_ntohll (mmsg->message_id),
1559 GNUNET_ntohll (mmsg->fragment_offset),
1560 GNUNET_ntohll (mmsg->flags));
1561
1562 GNUNET_PSYCSTORE_fragment_store (store, &chn->pub_key, mmsg, 0,
1563 &store_recv_fragment_store_result, chn);
1564
1565 uint16_t first_ptype = 0, last_ptype = 0;
1566 int check = GNUNET_PSYC_receive_check_parts (size - sizeof (*mmsg),
1567 (const char *) &mmsg[1],
1568 &first_ptype, &last_ptype);
1569 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1570 "%p Message check result %d, first part type %u, last part type %u\n",
1571 chn, check, first_ptype, last_ptype);
1572 if (GNUNET_SYSERR == check)
1573 {
1574 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
1575 "%p Dropping incoming multicast message with invalid parts.\n",
1576 chn);
1577 GNUNET_break_op (0);
1578 return;
1579 }
1580
1581 fragment_queue_insert (chn, mmsg, first_ptype, last_ptype);
1582 message_queue_run (chn);
1583}
1584
1585
1586/**
1587 * Incoming request fragment from multicast for a master.
1588 *
1589 * @param cls Master.
1590 * @param req The request.
1591 */
1592static void
1593mcast_recv_request (void *cls,
1594 const struct GNUNET_MULTICAST_RequestHeader *req)
1595{
1596 struct Master *mst = cls;
1597 uint16_t size = ntohs (req->header.size);
1598
1599 char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&req->member_pub_key);
1600 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1601 "%p Received multicast request of size %u from %s.\n",
1602 mst, size, str);
1603 GNUNET_free (str);
1604
1605 uint16_t first_ptype = 0, last_ptype = 0;
1606 if (GNUNET_SYSERR
1607 == GNUNET_PSYC_receive_check_parts (size - sizeof (*req),
1608 (const char *) &req[1],
1609 &first_ptype, &last_ptype))
1610 {
1611 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
1612 "%p Dropping incoming multicast request with invalid parts.\n",
1613 mst);
1614 GNUNET_break_op (0);
1615 return;
1616 }
1617
1618 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1619 "Message parts: first: type %u, last: type %u\n",
1620 first_ptype, last_ptype);
1621
1622 /* FIXME: in-order delivery */
1623 client_send_mcast_req (mst, req);
1624}
1625
1626
1627/**
1628 * Response from PSYCstore with the current counter values for a channel master.
1629 */
1630static void
1631store_recv_master_counters (void *cls, int result, uint64_t max_fragment_id,
1632 uint64_t max_message_id, uint64_t max_group_generation,
1633 uint64_t max_state_message_id)
1634{
1635 struct Master *mst = cls;
1636 struct Channel *chn = &mst->channel;
1637 chn->store_op = NULL;
1638
1639 struct GNUNET_PSYC_CountersResultMessage res;
1640 res.header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MASTER_START_ACK);
1641 res.header.size = htons (sizeof (res));
1642 res.result_code = htonl (result);
1643 res.max_message_id = GNUNET_htonll (max_message_id);
1644
1645 if (GNUNET_OK == result || GNUNET_NO == result)
1646 {
1647 mst->max_message_id = max_message_id;
1648 chn->max_message_id = max_message_id;
1649 chn->max_state_message_id = max_state_message_id;
1650 mst->max_group_generation = max_group_generation;
1651 mst->origin
1652 = GNUNET_MULTICAST_origin_start (cfg, &mst->priv_key, max_fragment_id,
1653 mcast_recv_join_request,
1654 mcast_recv_replay_fragment,
1655 mcast_recv_replay_message,
1656 mcast_recv_request,
1657 mcast_recv_message, chn);
1658 chn->is_ready = GNUNET_YES;
1659 }
1660 else
1661 {
1662 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1663 "%p GNUNET_PSYCSTORE_counters_get() "
1664 "returned %d for channel %s.\n",
1665 chn, result, GNUNET_h2s (&chn->pub_key_hash));
1666 }
1667
1668 client_send_msg (chn, &res.header);
1669}
1670
1671
1672/**
1673 * Response from PSYCstore with the current counter values for a channel slave.
1674 */
1675void
1676store_recv_slave_counters (void *cls, int result, uint64_t max_fragment_id,
1677 uint64_t max_message_id, uint64_t max_group_generation,
1678 uint64_t max_state_message_id)
1679{
1680 struct Slave *slv = cls;
1681 struct Channel *chn = &slv->channel;
1682 chn->store_op = NULL;
1683
1684 struct GNUNET_PSYC_CountersResultMessage res;
1685 res.header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN_ACK);
1686 res.header.size = htons (sizeof (res));
1687 res.result_code = htonl (result);
1688 res.max_message_id = GNUNET_htonll (max_message_id);
1689
1690 if (GNUNET_YES == result || GNUNET_NO == result)
1691 {
1692 chn->max_message_id = max_message_id;
1693 chn->max_state_message_id = max_state_message_id;
1694 slv->member
1695 = GNUNET_MULTICAST_member_join (cfg, &chn->pub_key, &slv->priv_key,
1696 &slv->origin,
1697 slv->relay_count, slv->relays,
1698 &slv->join_msg->header,
1699 mcast_recv_join_request,
1700 mcast_recv_join_decision,
1701 mcast_recv_replay_fragment,
1702 mcast_recv_replay_message,
1703 mcast_recv_message, chn);
1704 if (NULL != slv->join_msg)
1705 {
1706 GNUNET_free (slv->join_msg);
1707 slv->join_msg = NULL;
1708 }
1709 }
1710 else
1711 {
1712 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1713 "%p GNUNET_PSYCSTORE_counters_get() "
1714 "returned %d for channel %s.\n",
1715 chn, result, GNUNET_h2s (&chn->pub_key_hash));
1716 }
1717
1718 client_send_msg (chn, &res.header);
1719}
1720
1721
1722static void
1723channel_init (struct Channel *chn)
1724{
1725 chn->recv_msgs
1726 = GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN);
1727 chn->recv_frags = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
1728}
1729
1730
1731/**
1732 * Handle a connecting client starting a channel master.
1733 */
1734static void
1735handle_client_master_start (void *cls,
1736 const struct MasterStartRequest *req)
1737{
1738 struct Client *c = cls;
1739 struct GNUNET_SERVICE_Client *client = c->client;
1740
1741 struct GNUNET_CRYPTO_EddsaPublicKey pub_key;
1742 struct GNUNET_HashCode pub_key_hash;
1743
1744 GNUNET_CRYPTO_eddsa_key_get_public (&req->channel_key, &pub_key);
1745 GNUNET_CRYPTO_hash (&pub_key, sizeof (pub_key), &pub_key_hash);
1746
1747 struct Master *
1748 mst = GNUNET_CONTAINER_multihashmap_get (masters, &pub_key_hash);
1749 struct Channel *chn;
1750
1751 if (NULL == mst)
1752 {
1753 mst = GNUNET_malloc (sizeof (*mst));
1754 mst->policy = ntohl (req->policy);
1755 mst->priv_key = req->channel_key;
1756 mst->join_reqs = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
1757
1758 chn = c->channel = &mst->channel;
1759 chn->master = mst;
1760 chn->is_master = GNUNET_YES;
1761 chn->pub_key = pub_key;
1762 chn->pub_key_hash = pub_key_hash;
1763 channel_init (chn);
1764
1765 GNUNET_CONTAINER_multihashmap_put (masters, &chn->pub_key_hash, chn,
1766 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1767 chn->store_op = GNUNET_PSYCSTORE_counters_get (store, &chn->pub_key,
1768 store_recv_master_counters, mst);
1769 }
1770 else
1771 {
1772 chn = &mst->channel;
1773
1774 struct GNUNET_PSYC_CountersResultMessage *res;
1775 struct GNUNET_MQ_Envelope *
1776 env = GNUNET_MQ_msg (res, GNUNET_MESSAGE_TYPE_PSYC_MASTER_START_ACK);
1777 res->result_code = htonl (GNUNET_OK);
1778 res->max_message_id = GNUNET_htonll (mst->max_message_id);
1779
1780 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env);
1781 }
1782
1783 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1784 "%p Client connected as master to channel %s.\n",
1785 mst, GNUNET_h2s (&chn->pub_key_hash));
1786
1787 struct ClientList *cli = GNUNET_malloc (sizeof (*cli));
1788 cli->client = client;
1789 GNUNET_CONTAINER_DLL_insert (chn->clients_head, chn->clients_tail, cli);
1790
1791 GNUNET_SERVICE_client_continue (client);
1792}
1793
1794
1795static int
1796check_client_slave_join (void *cls,
1797 const struct SlaveJoinRequest *req)
1798{
1799 return GNUNET_OK;
1800}
1801
1802
1803/**
1804 * Handle a connecting client joining as a channel slave.
1805 */
1806static void
1807handle_client_slave_join (void *cls,
1808 const struct SlaveJoinRequest *req)
1809{
1810 struct Client *c = cls;
1811 struct GNUNET_SERVICE_Client *client = c->client;
1812
1813 uint16_t req_size = ntohs (req->header.size);
1814
1815 struct GNUNET_CRYPTO_EcdsaPublicKey slv_pub_key;
1816 struct GNUNET_HashCode pub_key_hash, slv_pub_hash;
1817
1818 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1819 "got join request from client %p\n",
1820 client);
1821 GNUNET_CRYPTO_ecdsa_key_get_public (&req->slave_key, &slv_pub_key);
1822 GNUNET_CRYPTO_hash (&slv_pub_key, sizeof (slv_pub_key), &slv_pub_hash);
1823 GNUNET_CRYPTO_hash (&req->channel_pub_key, sizeof (req->channel_pub_key), &pub_key_hash);
1824
1825 struct GNUNET_CONTAINER_MultiHashMap *
1826 chn_slv = GNUNET_CONTAINER_multihashmap_get (channel_slaves, &pub_key_hash);
1827 struct Slave *slv = NULL;
1828 struct Channel *chn;
1829
1830 if (NULL != chn_slv)
1831 {
1832 slv = GNUNET_CONTAINER_multihashmap_get (chn_slv, &slv_pub_hash);
1833 }
1834 if (NULL == slv)
1835 {
1836 slv = GNUNET_malloc (sizeof (*slv));
1837 slv->priv_key = req->slave_key;
1838 slv->pub_key = slv_pub_key;
1839 slv->pub_key_hash = slv_pub_hash;
1840 slv->origin = req->origin;
1841 slv->relay_count = ntohl (req->relay_count);
1842 slv->join_flags = ntohl (req->flags);
1843
1844 const struct GNUNET_PeerIdentity *
1845 relays = (const struct GNUNET_PeerIdentity *) &req[1];
1846 uint16_t relay_size = slv->relay_count * sizeof (*relays);
1847 uint16_t join_msg_size = 0;
1848
1849 if (sizeof (*req) + relay_size + sizeof (struct GNUNET_MessageHeader)
1850 <= req_size)
1851 {
1852 struct GNUNET_PSYC_Message *
1853 join_msg = (struct GNUNET_PSYC_Message *) (((char *) &req[1]) + relay_size);
1854 join_msg_size = ntohs (join_msg->header.size);
1855 slv->join_msg = GNUNET_malloc (join_msg_size);
1856 GNUNET_memcpy (slv->join_msg, join_msg, join_msg_size);
1857 }
1858 if (sizeof (*req) + relay_size + join_msg_size != req_size)
1859 {
1860 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1861 "%u + %u + %u != %u\n",
1862 (unsigned int) sizeof (*req),
1863 relay_size,
1864 join_msg_size,
1865 req_size);
1866 GNUNET_break (0);
1867 GNUNET_SERVICE_client_drop (client);
1868 GNUNET_free (slv);
1869 return;
1870 }
1871 if (0 < slv->relay_count)
1872 {
1873 slv->relays = GNUNET_malloc (relay_size);
1874 GNUNET_memcpy (slv->relays, &req[1], relay_size);
1875 }
1876
1877 chn = c->channel = &slv->channel;
1878 chn->slave = slv;
1879 chn->is_master = GNUNET_NO;
1880 chn->pub_key = req->channel_pub_key;
1881 chn->pub_key_hash = pub_key_hash;
1882 channel_init (chn);
1883
1884 if (NULL == chn_slv)
1885 {
1886 chn_slv = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
1887 GNUNET_CONTAINER_multihashmap_put (channel_slaves, &chn->pub_key_hash, chn_slv,
1888 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1889 }
1890 GNUNET_CONTAINER_multihashmap_put (chn_slv, &slv->pub_key_hash, chn,
1891 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1892 GNUNET_CONTAINER_multihashmap_put (slaves, &chn->pub_key_hash, chn,
1893 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1894 chn->store_op = GNUNET_PSYCSTORE_counters_get (store, &chn->pub_key,
1895 &store_recv_slave_counters, slv);
1896 }
1897 else
1898 {
1899 chn = &slv->channel;
1900
1901 struct GNUNET_PSYC_CountersResultMessage *res;
1902
1903 struct GNUNET_MQ_Envelope *
1904 env = GNUNET_MQ_msg (res, GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN_ACK);
1905 res->result_code = htonl (GNUNET_OK);
1906 res->max_message_id = GNUNET_htonll (chn->max_message_id);
1907
1908 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env);
1909
1910 if (GNUNET_PSYC_SLAVE_JOIN_LOCAL & slv->join_flags)
1911 {
1912 mcast_recv_join_decision (slv, GNUNET_YES,
1913 NULL, 0, NULL, NULL);
1914 }
1915 else if (NULL == slv->member)
1916 {
1917 slv->member
1918 = GNUNET_MULTICAST_member_join (cfg, &chn->pub_key, &slv->priv_key,
1919 &slv->origin,
1920 slv->relay_count, slv->relays,
1921 &slv->join_msg->header,
1922 &mcast_recv_join_request,
1923 &mcast_recv_join_decision,
1924 &mcast_recv_replay_fragment,
1925 &mcast_recv_replay_message,
1926 &mcast_recv_message, chn);
1927 if (NULL != slv->join_msg)
1928 {
1929 GNUNET_free (slv->join_msg);
1930 slv->join_msg = NULL;
1931 }
1932 }
1933 else if (NULL != slv->join_dcsn)
1934 {
1935 struct GNUNET_MQ_Envelope *
1936 env = GNUNET_MQ_msg_copy (&slv->join_dcsn->header);
1937 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env);
1938 }
1939 }
1940
1941 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1942 "Client %p connected as slave to channel %s.\n",
1943 client,
1944 GNUNET_h2s (&chn->pub_key_hash));
1945
1946 struct ClientList *cli = GNUNET_malloc (sizeof (*cli));
1947 cli->client = client;
1948 GNUNET_CONTAINER_DLL_insert (chn->clients_head, chn->clients_tail, cli);
1949
1950 GNUNET_SERVICE_client_continue (client);
1951}
1952
1953
1954struct JoinDecisionClosure
1955{
1956 int32_t is_admitted;
1957 struct GNUNET_MessageHeader *msg;
1958};
1959
1960
1961/**
1962 * Iterator callback for sending join decisions to multicast.
1963 */
1964static int
1965mcast_send_join_decision (void *cls, const struct GNUNET_HashCode *pub_key_hash,
1966 void *value)
1967{
1968 struct JoinDecisionClosure *jcls = cls;
1969 struct GNUNET_MULTICAST_JoinHandle *jh = value;
1970 // FIXME: add relays
1971 GNUNET_MULTICAST_join_decision (jh, jcls->is_admitted, 0, NULL, jcls->msg);
1972 return GNUNET_YES;
1973}
1974
1975
1976static int
1977check_client_join_decision (void *cls,
1978 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn)
1979{
1980 return GNUNET_OK;
1981}
1982
1983
1984/**
1985 * Join decision from client.
1986 */
1987static void
1988handle_client_join_decision (void *cls,
1989 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn)
1990{
1991 struct Client *c = cls;
1992 struct GNUNET_SERVICE_Client *client = c->client;
1993 struct Channel *chn = c->channel;
1994 if (NULL == chn)
1995 {
1996 GNUNET_break (0);
1997 GNUNET_SERVICE_client_drop (client);
1998 return;
1999 }
2000 GNUNET_assert (GNUNET_YES == chn->is_master);
2001 struct Master *mst = chn->master;
2002
2003 struct JoinDecisionClosure jcls;
2004 jcls.is_admitted = ntohl (dcsn->is_admitted);
2005 jcls.msg
2006 = (sizeof (*dcsn) + sizeof (*jcls.msg) <= ntohs (dcsn->header.size))
2007 ? (struct GNUNET_MessageHeader *) &dcsn[1]
2008 : NULL;
2009
2010 struct GNUNET_HashCode slave_pub_hash;
2011 GNUNET_CRYPTO_hash (&dcsn->slave_pub_key, sizeof (dcsn->slave_pub_key),
2012 &slave_pub_hash);
2013
2014 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2015 "%p Got join decision (%d) from client for channel %s..\n",
2016 mst, jcls.is_admitted, GNUNET_h2s (&chn->pub_key_hash));
2017 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2018 "%p ..and slave %s.\n",
2019 mst, GNUNET_h2s (&slave_pub_hash));
2020
2021 GNUNET_CONTAINER_multihashmap_get_multiple (mst->join_reqs, &slave_pub_hash,
2022 &mcast_send_join_decision, &jcls);
2023 GNUNET_CONTAINER_multihashmap_remove_all (mst->join_reqs, &slave_pub_hash);
2024 GNUNET_SERVICE_client_continue (client);
2025}
2026
2027
2028static void
2029channel_part_cb (void *cls)
2030{
2031 struct GNUNET_SERVICE_Client *client = cls;
2032 struct GNUNET_MQ_Envelope *env;
2033
2034 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_PART_ACK);
2035 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
2036 env);
2037}
2038
2039
2040static void
2041handle_client_part_request (void *cls,
2042 const struct GNUNET_MessageHeader *msg)
2043{
2044 struct Client *c = cls;
2045
2046 c->channel->is_disconnecting = GNUNET_YES;
2047 if (GNUNET_YES == c->channel->is_master)
2048 {
2049 struct Master *mst = (struct Master *) c->channel;
2050
2051 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2052 "Got part request from master %p\n",
2053 mst);
2054 GNUNET_assert (NULL != mst->origin);
2055 GNUNET_MULTICAST_origin_stop (mst->origin, channel_part_cb, c->client);
2056 }
2057 else
2058 {
2059 struct Slave *slv = (struct Slave *) c->channel;
2060
2061 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2062 "Got part request from slave %p\n",
2063 slv);
2064 GNUNET_assert (NULL != slv->member);
2065 GNUNET_MULTICAST_member_part (slv->member, channel_part_cb, c->client);
2066 }
2067 GNUNET_SERVICE_client_continue (c->client);
2068}
2069
2070
2071/**
2072 * Send acknowledgement to a client.
2073 *
2074 * Sent after a message fragment has been passed on to multicast.
2075 *
2076 * @param chn The channel struct for the client.
2077 */
2078static void
2079send_message_ack (struct Channel *chn, struct GNUNET_SERVICE_Client *client)
2080{
2081 struct GNUNET_MessageHeader *res;
2082 struct GNUNET_MQ_Envelope *
2083 env = GNUNET_MQ_msg (res, GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK);
2084
2085 /* FIXME? */
2086 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env);
2087}
2088
2089
2090/**
2091 * Callback for the transmit functions of multicast.
2092 */
2093static int
2094transmit_notify (void *cls, size_t *data_size, void *data)
2095{
2096 struct Channel *chn = cls;
2097 struct TransmitMessage *tmit_msg = chn->tmit_head;
2098
2099 if (NULL == tmit_msg || *data_size < tmit_msg->size)
2100 {
2101 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2102 "%p transmit_notify: nothing to send.\n", chn);
2103 if (NULL != tmit_msg && *data_size < tmit_msg->size)
2104 GNUNET_break (0);
2105 *data_size = 0;
2106 return GNUNET_NO;
2107 }
2108
2109 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2110 "%p transmit_notify: sending %u bytes.\n", chn, tmit_msg->size);
2111
2112 *data_size = tmit_msg->size;
2113 GNUNET_memcpy (data, &tmit_msg[1], *data_size);
2114
2115 int ret
2116 = (tmit_msg->last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END)
2117 ? GNUNET_NO
2118 : GNUNET_YES;
2119
2120 /* FIXME: handle disconnecting clients */
2121 if (NULL != tmit_msg->client)
2122 send_message_ack (chn, tmit_msg->client);
2123
2124 GNUNET_CONTAINER_DLL_remove (chn->tmit_head, chn->tmit_tail, tmit_msg);
2125
2126 if (NULL != chn->tmit_head)
2127 {
2128 GNUNET_SCHEDULER_add_now (&schedule_transmit_message, chn);
2129 }
2130 else if (GNUNET_YES == chn->is_disconnecting
2131 && tmit_msg->last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END)
2132 {
2133 /* FIXME: handle partial message (when still in_transmit) */
2134 GNUNET_free (tmit_msg);
2135 return GNUNET_SYSERR;
2136 }
2137 GNUNET_free (tmit_msg);
2138 return ret;
2139}
2140
2141
2142/**
2143 * Callback for the transmit functions of multicast.
2144 */
2145static int
2146master_transmit_notify (void *cls, size_t *data_size, void *data)
2147{
2148 int ret = transmit_notify (cls, data_size, data);
2149
2150 if (GNUNET_YES == ret)
2151 {
2152 struct Master *mst = cls;
2153 mst->tmit_handle = NULL;
2154 }
2155 return ret;
2156}
2157
2158
2159/**
2160 * Callback for the transmit functions of multicast.
2161 */
2162static int
2163slave_transmit_notify (void *cls, size_t *data_size, void *data)
2164{
2165 int ret = transmit_notify (cls, data_size, data);
2166
2167 if (GNUNET_YES == ret)
2168 {
2169 struct Slave *slv = cls;
2170 slv->tmit_handle = NULL;
2171 }
2172 return ret;
2173}
2174
2175
2176/**
2177 * Transmit a message from a channel master to the multicast group.
2178 */
2179static void
2180master_transmit_message (struct Master *mst)
2181{
2182 struct Channel *chn = &mst->channel;
2183 struct TransmitMessage *tmit_msg = chn->tmit_head;
2184 if (NULL == tmit_msg)
2185 return;
2186 if (NULL == mst->tmit_handle)
2187 {
2188 mst->tmit_handle = GNUNET_MULTICAST_origin_to_all (mst->origin,
2189 tmit_msg->id,
2190 mst->max_group_generation,
2191 &master_transmit_notify,
2192 mst);
2193 }
2194 else
2195 {
2196 GNUNET_MULTICAST_origin_to_all_resume (mst->tmit_handle);
2197 }
2198}
2199
2200
2201/**
2202 * Transmit a message from a channel slave to the multicast group.
2203 */
2204static void
2205slave_transmit_message (struct Slave *slv)
2206{
2207 if (NULL == slv->channel.tmit_head)
2208 return;
2209 if (NULL == slv->tmit_handle)
2210 {
2211 slv->tmit_handle = GNUNET_MULTICAST_member_to_origin (slv->member,
2212 slv->channel.tmit_head->id,
2213 &slave_transmit_notify,
2214 slv);
2215 }
2216 else
2217 {
2218 GNUNET_MULTICAST_member_to_origin_resume (slv->tmit_handle);
2219 }
2220}
2221
2222
2223static void
2224transmit_message (struct Channel *chn)
2225{
2226 chn->is_master
2227 ? master_transmit_message (chn->master)
2228 : slave_transmit_message (chn->slave);
2229}
2230
2231
2232/**
2233 * Queue a message from a channel master for sending to the multicast group.
2234 */
2235static void
2236master_queue_message (struct Master *mst, struct TransmitMessage *tmit_msg)
2237{
2238 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == tmit_msg->first_ptype)
2239 {
2240 tmit_msg->id = ++mst->max_message_id;
2241 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2242 "%p master_queue_message: message_id=%" PRIu64 "\n",
2243 mst, tmit_msg->id);
2244 struct GNUNET_PSYC_MessageMethod *pmeth
2245 = (struct GNUNET_PSYC_MessageMethod *) &tmit_msg[1];
2246
2247 if (pmeth->flags & GNUNET_PSYC_MASTER_TRANSMIT_STATE_RESET)
2248 {
2249 pmeth->state_delta = GNUNET_htonll (GNUNET_PSYC_STATE_RESET);
2250 }
2251 else if (pmeth->flags & GNUNET_PSYC_MASTER_TRANSMIT_STATE_MODIFY)
2252 {
2253 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2254 "%p master_queue_message: state_delta=%" PRIu64 "\n",
2255 mst, tmit_msg->id - mst->max_state_message_id);
2256 pmeth->state_delta = GNUNET_htonll (tmit_msg->id
2257 - mst->max_state_message_id);
2258 mst->max_state_message_id = tmit_msg->id;
2259 }
2260 else
2261 {
2262 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2263 "%p master_queue_message: state not modified\n", mst);
2264 pmeth->state_delta = GNUNET_htonll (GNUNET_PSYC_STATE_NOT_MODIFIED);
2265 }
2266
2267 if (pmeth->flags & GNUNET_PSYC_MASTER_TRANSMIT_STATE_HASH)
2268 {
2269 /// @todo add state_hash to PSYC header
2270 }
2271 }
2272}
2273
2274
2275/**
2276 * Queue a message from a channel slave for sending to the multicast group.
2277 */
2278static void
2279slave_queue_message (struct Slave *slv, struct TransmitMessage *tmit_msg)
2280{
2281 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == tmit_msg->first_ptype)
2282 {
2283 struct GNUNET_PSYC_MessageMethod *pmeth
2284 = (struct GNUNET_PSYC_MessageMethod *) &tmit_msg[1];
2285 pmeth->state_delta = GNUNET_htonll (GNUNET_PSYC_STATE_NOT_MODIFIED);
2286 tmit_msg->id = ++slv->max_request_id;
2287 }
2288}
2289
2290
2291/**
2292 * Queue PSYC message parts for sending to multicast.
2293 *
2294 * @param chn
2295 * Channel to send to.
2296 * @param client
2297 * Client the message originates from.
2298 * @param data_size
2299 * Size of @a data.
2300 * @param data
2301 * Concatenated message parts.
2302 * @param first_ptype
2303 * First message part type in @a data.
2304 * @param last_ptype
2305 * Last message part type in @a data.
2306 */
2307static struct TransmitMessage *
2308queue_message (struct Channel *chn,
2309 struct GNUNET_SERVICE_Client *client,
2310 size_t data_size,
2311 const void *data,
2312 uint16_t first_ptype, uint16_t last_ptype)
2313{
2314 struct TransmitMessage *
2315 tmit_msg = GNUNET_malloc (sizeof (*tmit_msg) + data_size);
2316 GNUNET_memcpy (&tmit_msg[1], data, data_size);
2317 tmit_msg->client = client;
2318 tmit_msg->size = data_size;
2319 tmit_msg->first_ptype = first_ptype;
2320 tmit_msg->last_ptype = last_ptype;
2321
2322 /* FIXME: separate queue per message ID */
2323
2324 GNUNET_CONTAINER_DLL_insert_tail (chn->tmit_head, chn->tmit_tail, tmit_msg);
2325
2326 chn->is_master
2327 ? master_queue_message (chn->master, tmit_msg)
2328 : slave_queue_message (chn->slave, tmit_msg);
2329 return tmit_msg;
2330}
2331
2332
2333/**
2334 * Cancel transmission of current message.
2335 *
2336 * @param chn Channel to send to.
2337 * @param client Client the message originates from.
2338 */
2339static void
2340transmit_cancel (struct Channel *chn, struct GNUNET_SERVICE_Client *client)
2341{
2342 uint16_t type = GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL;
2343
2344 struct GNUNET_MessageHeader msg;
2345 msg.size = htons (sizeof (msg));
2346 msg.type = htons (type);
2347
2348 queue_message (chn, client, sizeof (msg), &msg, type, type);
2349 transmit_message (chn);
2350
2351 /* FIXME: cleanup */
2352}
2353
2354
2355static int
2356check_client_psyc_message (void *cls,
2357 const struct GNUNET_MessageHeader *msg)
2358{
2359 return GNUNET_OK;
2360}
2361
2362
2363/**
2364 * Incoming message from a master or slave client.
2365 */
2366static void
2367handle_client_psyc_message (void *cls,
2368 const struct GNUNET_MessageHeader *msg)
2369{
2370 struct Client *c = cls;
2371 struct GNUNET_SERVICE_Client *client = c->client;
2372 struct Channel *chn = c->channel;
2373 if (NULL == chn)
2374 {
2375 GNUNET_break (0);
2376 GNUNET_SERVICE_client_drop (client);
2377 return;
2378 }
2379
2380 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2381 "%p Received message from client.\n", chn);
2382 GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG, msg);
2383
2384 if (GNUNET_YES != chn->is_ready)
2385 {
2386 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2387 "%p Channel is not ready yet, disconnecting client %p.\n",
2388 chn,
2389 client);
2390 GNUNET_break (0);
2391 GNUNET_SERVICE_client_drop (client);
2392 return;
2393 }
2394
2395 uint16_t size = ntohs (msg->size);
2396 if (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD < size - sizeof (*msg))
2397 {
2398 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2399 "%p Message payload too large: %u < %u.\n",
2400 chn,
2401 (unsigned int) GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD,
2402 (unsigned int) (size - sizeof (*msg)));
2403 GNUNET_break (0);
2404 transmit_cancel (chn, client);
2405 GNUNET_SERVICE_client_drop (client);
2406 return;
2407 }
2408
2409 uint16_t first_ptype = 0, last_ptype = 0;
2410 if (GNUNET_SYSERR
2411 == GNUNET_PSYC_receive_check_parts (size - sizeof (*msg),
2412 (const char *) &msg[1],
2413 &first_ptype, &last_ptype))
2414 {
2415 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2416 "%p Received invalid message part from client.\n", chn);
2417 GNUNET_break (0);
2418 transmit_cancel (chn, client);
2419 GNUNET_SERVICE_client_drop (client);
2420 return;
2421 }
2422 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2423 "%p Received message with first part type %u and last part type %u.\n",
2424 chn, first_ptype, last_ptype);
2425
2426 queue_message (chn, client, size - sizeof (*msg), &msg[1],
2427 first_ptype, last_ptype);
2428 transmit_message (chn);
2429 /* FIXME: send a few ACKs even before transmit_notify is called */
2430
2431 GNUNET_SERVICE_client_continue (client);
2432};
2433
2434
2435/**
2436 * Received result of GNUNET_PSYCSTORE_membership_store()
2437 */
2438static void
2439store_recv_membership_store_result (void *cls,
2440 int64_t result,
2441 const char *err_msg,
2442 uint16_t err_msg_size)
2443{
2444 struct Operation *op = cls;
2445 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2446 "%p GNUNET_PSYCSTORE_membership_store() returned %" PRId64 " (%.*s)\n",
2447 op->channel,
2448 result,
2449 (int) err_msg_size,
2450 err_msg);
2451
2452 if (NULL != op->client)
2453 client_send_result (op->client, op->op_id, result, err_msg, err_msg_size);
2454 op_remove (op);
2455}
2456
2457
2458/**
2459 * Client requests to add/remove a slave in the membership database.
2460 */
2461static void
2462handle_client_membership_store (void *cls,
2463 const struct ChannelMembershipStoreRequest *req)
2464{
2465 struct Client *c = cls;
2466 struct GNUNET_SERVICE_Client *client = c->client;
2467 struct Channel *chn = c->channel;
2468 if (NULL == chn)
2469 {
2470 GNUNET_break (0);
2471 GNUNET_SERVICE_client_drop (client);
2472 return;
2473 }
2474
2475 struct Operation *op = op_add (chn, client, req->op_id, 0);
2476
2477 uint64_t announced_at = GNUNET_ntohll (req->announced_at);
2478 uint64_t effective_since = GNUNET_ntohll (req->effective_since);
2479 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2480 "%p Received membership store request from client.\n", chn);
2481 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2482 "%p did_join: %u, announced_at: %" PRIu64 ", effective_since: %" PRIu64 "\n",
2483 chn, req->did_join, announced_at, effective_since);
2484
2485 GNUNET_PSYCSTORE_membership_store (store, &chn->pub_key, &req->slave_pub_key,
2486 req->did_join, announced_at, effective_since,
2487 0, /* FIXME: group_generation */
2488 &store_recv_membership_store_result, op);
2489 GNUNET_SERVICE_client_continue (client);
2490}
2491
2492
2493/**
2494 * Received a fragment for GNUNET_PSYCSTORE_fragment_get(),
2495 * in response to a history request from a client.
2496 */
2497static int
2498store_recv_fragment_history (void *cls,
2499 struct GNUNET_MULTICAST_MessageHeader *mmsg,
2500 enum GNUNET_PSYCSTORE_MessageFlags flags)
2501{
2502 struct Operation *op = cls;
2503 if (NULL == op->client)
2504 { /* Requesting client already disconnected. */
2505 return GNUNET_NO;
2506 }
2507 struct Channel *chn = op->channel;
2508
2509 struct GNUNET_PSYC_MessageHeader *pmsg;
2510 uint16_t msize = ntohs (mmsg->header.size);
2511 uint16_t psize = sizeof (*pmsg) + msize - sizeof (*mmsg);
2512
2513 struct GNUNET_OperationResultMessage *
2514 res = GNUNET_malloc (sizeof (*res) + psize);
2515 res->header.size = htons (sizeof (*res) + psize);
2516 res->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_HISTORY_RESULT);
2517 res->op_id = op->op_id;
2518 res->result_code = GNUNET_htonll (GNUNET_OK);
2519
2520 pmsg = (struct GNUNET_PSYC_MessageHeader *) &res[1];
2521 GNUNET_PSYC_message_header_init (pmsg, mmsg, flags | GNUNET_PSYC_MESSAGE_HISTORIC);
2522 GNUNET_memcpy (&res[1], pmsg, psize);
2523
2524 /** @todo FIXME: send only to requesting client */
2525 client_send_msg (chn, &res->header);
2526
2527 GNUNET_free (res);
2528 return GNUNET_YES;
2529}
2530
2531
2532/**
2533 * Received the result of GNUNET_PSYCSTORE_fragment_get(),
2534 * in response to a history request from a client.
2535 */
2536static void
2537store_recv_fragment_history_result (void *cls, int64_t result,
2538 const char *err_msg, uint16_t err_msg_size)
2539{
2540 struct Operation *op = cls;
2541 if (NULL == op->client)
2542 { /* Requesting client already disconnected. */
2543 return;
2544 }
2545
2546 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2547 "%p History replay #%" PRIu64 ": "
2548 "PSYCSTORE returned %" PRId64 " (%.*s)\n",
2549 op->channel, GNUNET_ntohll (op->op_id), result, err_msg_size, err_msg);
2550
2551 if (op->flags & GNUNET_PSYC_HISTORY_REPLAY_REMOTE)
2552 {
2553 /** @todo Multicast replay request for messages not found locally. */
2554 }
2555
2556 client_send_result (op->client, op->op_id, result, err_msg, err_msg_size);
2557 op_remove (op);
2558}
2559
2560
2561static int
2562check_client_history_replay (void *cls,
2563 const struct GNUNET_PSYC_HistoryRequestMessage *req)
2564{
2565 return GNUNET_OK;
2566}
2567
2568
2569/**
2570 * Client requests channel history.
2571 */
2572static void
2573handle_client_history_replay (void *cls,
2574 const struct GNUNET_PSYC_HistoryRequestMessage *req)
2575{
2576 struct Client *c = cls;
2577 struct GNUNET_SERVICE_Client *client = c->client;
2578 struct Channel *chn = c->channel;
2579 if (NULL == chn)
2580 {
2581 GNUNET_break (0);
2582 GNUNET_SERVICE_client_drop (client);
2583 return;
2584 }
2585
2586 uint16_t size = ntohs (req->header.size);
2587 const char *method_prefix = (const char *) &req[1];
2588
2589 if (size < sizeof (*req) + 1
2590 || '\0' != method_prefix[size - sizeof (*req) - 1])
2591 {
2592 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2593 "%p History replay #%" PRIu64 ": "
2594 "invalid method prefix. size: %u < %u?\n",
2595 chn,
2596 GNUNET_ntohll (req->op_id),
2597 size,
2598 (unsigned int) sizeof (*req) + 1);
2599 GNUNET_break (0);
2600 GNUNET_SERVICE_client_drop (client);
2601 return;
2602 }
2603
2604 struct Operation *op = op_add (chn, client, req->op_id, ntohl (req->flags));
2605
2606 if (0 == req->message_limit)
2607 {
2608 GNUNET_PSYCSTORE_message_get (store, &chn->pub_key, NULL,
2609 GNUNET_ntohll (req->start_message_id),
2610 GNUNET_ntohll (req->end_message_id),
2611 0, method_prefix,
2612 &store_recv_fragment_history,
2613 &store_recv_fragment_history_result, op);
2614 }
2615 else
2616 {
2617 GNUNET_PSYCSTORE_message_get_latest (store, &chn->pub_key, NULL,
2618 GNUNET_ntohll (req->message_limit),
2619 method_prefix,
2620 &store_recv_fragment_history,
2621 &store_recv_fragment_history_result,
2622 op);
2623 }
2624 GNUNET_SERVICE_client_continue (client);
2625}
2626
2627
2628/**
2629 * Received state var from PSYCstore, send it to client.
2630 */
2631static int
2632store_recv_state_var (void *cls, const char *name,
2633 const void *value, uint32_t value_size)
2634{
2635 struct Operation *op = cls;
2636 struct GNUNET_OperationResultMessage *res;
2637 struct GNUNET_MQ_Envelope *env;
2638
2639 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2640 "%p state_get #%" PRIu64 " - received var from PSYCstore: %s\n",
2641 op->channel, GNUNET_ntohll (op->op_id), name);
2642
2643 if (NULL != name) /* First part */
2644 {
2645 uint16_t name_size = strnlen (name, GNUNET_PSYC_MODIFIER_MAX_PAYLOAD) + 1;
2646 struct GNUNET_PSYC_MessageModifier *mod;
2647 env = GNUNET_MQ_msg_extra (res,
2648 sizeof (*mod) + name_size + value_size,
2649 GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT);
2650 res->op_id = op->op_id;
2651
2652 mod = (struct GNUNET_PSYC_MessageModifier *) &res[1];
2653 mod->header.size = htons (sizeof (*mod) + name_size + value_size);
2654 mod->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER);
2655 mod->name_size = htons (name_size);
2656 mod->value_size = htonl (value_size);
2657 mod->oper = htons (GNUNET_PSYC_OP_ASSIGN);
2658 GNUNET_memcpy (&mod[1], name, name_size);
2659 GNUNET_memcpy (((char *) &mod[1]) + name_size, value, value_size);
2660 }
2661 else /* Continuation */
2662 {
2663 struct GNUNET_MessageHeader *mod;
2664 env = GNUNET_MQ_msg_extra (res,
2665 sizeof (*mod) + value_size,
2666 GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT);
2667 res->op_id = op->op_id;
2668
2669 mod = (struct GNUNET_MessageHeader *) &res[1];
2670 mod->size = htons (sizeof (*mod) + value_size);
2671 mod->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT);
2672 GNUNET_memcpy (&mod[1], value, value_size);
2673 }
2674
2675 // FIXME: client might have been disconnected
2676 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (op->client), env);
2677 return GNUNET_YES;
2678}
2679
2680
2681/**
2682 * Received result of GNUNET_PSYCSTORE_state_get()
2683 * or GNUNET_PSYCSTORE_state_get_prefix()
2684 */
2685static void
2686store_recv_state_result (void *cls, int64_t result,
2687 const char *err_msg, uint16_t err_msg_size)
2688{
2689 struct Operation *op = cls;
2690 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2691 "%p state_get #%" PRIu64 ": "
2692 "PSYCSTORE returned %" PRId64 " (%.*s)\n",
2693 op->channel, GNUNET_ntohll (op->op_id), result, err_msg_size, err_msg);
2694
2695 // FIXME: client might have been disconnected
2696 client_send_result (op->client, op->op_id, result, err_msg, err_msg_size);
2697 op_remove (op);
2698}
2699
2700
2701static int
2702check_client_state_get (void *cls,
2703 const struct StateRequest *req)
2704{
2705 struct Client *c = cls;
2706 struct Channel *chn = c->channel;
2707 if (NULL == chn)
2708 {
2709 GNUNET_break (0);
2710 return GNUNET_SYSERR;
2711 }
2712
2713 uint16_t name_size = ntohs (req->header.size) - sizeof (*req);
2714 const char *name = (const char *) &req[1];
2715 if (0 == name_size || '\0' != name[name_size - 1])
2716 {
2717 GNUNET_break (0);
2718 return GNUNET_SYSERR;
2719 }
2720
2721 return GNUNET_OK;
2722}
2723
2724
2725/**
2726 * Client requests best matching state variable from PSYCstore.
2727 */
2728static void
2729handle_client_state_get (void *cls,
2730 const struct StateRequest *req)
2731{
2732 struct Client *c = cls;
2733 struct GNUNET_SERVICE_Client *client = c->client;
2734 struct Channel *chn = c->channel;
2735
2736 const char *name = (const char *) &req[1];
2737 struct Operation *op = op_add (chn, client, req->op_id, 0);
2738 GNUNET_PSYCSTORE_state_get (store, &chn->pub_key, name,
2739 &store_recv_state_var,
2740 &store_recv_state_result, op);
2741 GNUNET_SERVICE_client_continue (client);
2742}
2743
2744
2745static int
2746check_client_state_get_prefix (void *cls,
2747 const struct StateRequest *req)
2748{
2749 struct Client *c = cls;
2750 struct Channel *chn = c->channel;
2751 if (NULL == chn)
2752 {
2753 GNUNET_break (0);
2754 return GNUNET_SYSERR;
2755 }
2756
2757 uint16_t name_size = ntohs (req->header.size) - sizeof (*req);
2758 const char *name = (const char *) &req[1];
2759 if (0 == name_size || '\0' != name[name_size - 1])
2760 {
2761 GNUNET_break (0);
2762 return GNUNET_SYSERR;
2763 }
2764
2765 return GNUNET_OK;
2766}
2767
2768
2769/**
2770 * Client requests state variables with a given prefix from PSYCstore.
2771 */
2772static void
2773handle_client_state_get_prefix (void *cls,
2774 const struct StateRequest *req)
2775{
2776 struct Client *c = cls;
2777 struct GNUNET_SERVICE_Client *client = c->client;
2778 struct Channel *chn = c->channel;
2779
2780 const char *name = (const char *) &req[1];
2781 struct Operation *op = op_add (chn, client, req->op_id, 0);
2782 GNUNET_PSYCSTORE_state_get_prefix (store, &chn->pub_key, name,
2783 &store_recv_state_var,
2784 &store_recv_state_result, op);
2785 GNUNET_SERVICE_client_continue (client);
2786}
2787
2788
2789/**
2790 * Initialize the PSYC service.
2791 *
2792 * @param cls Closure.
2793 * @param server The initialized server.
2794 * @param c Configuration to use.
2795 */
2796static void
2797run (void *cls,
2798 const struct GNUNET_CONFIGURATION_Handle *c,
2799 struct GNUNET_SERVICE_Handle *svc)
2800{
2801 cfg = c;
2802 service = svc;
2803 store = GNUNET_PSYCSTORE_connect (cfg);
2804 stats = GNUNET_STATISTICS_create ("psyc", cfg);
2805 masters = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
2806 slaves = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
2807 channel_slaves = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
2808 recv_cache = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
2809 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
2810}
2811
2812
2813/**
2814 * Define "main" method using service macro.
2815 */
2816GNUNET_SERVICE_MAIN
2817("psyc",
2818 GNUNET_SERVICE_OPTION_NONE,
2819 &run,
2820 &client_notify_connect,
2821 &client_notify_disconnect,
2822 NULL,
2823 GNUNET_MQ_hd_fixed_size (client_master_start,
2824 GNUNET_MESSAGE_TYPE_PSYC_MASTER_START,
2825 struct MasterStartRequest,
2826 NULL),
2827 GNUNET_MQ_hd_var_size (client_slave_join,
2828 GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN,
2829 struct SlaveJoinRequest,
2830 NULL),
2831 GNUNET_MQ_hd_var_size (client_join_decision,
2832 GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION,
2833 struct GNUNET_PSYC_JoinDecisionMessage,
2834 NULL),
2835 GNUNET_MQ_hd_fixed_size (client_part_request,
2836 GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST,
2837 struct GNUNET_MessageHeader,
2838 NULL),
2839 GNUNET_MQ_hd_var_size (client_psyc_message,
2840 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE,
2841 struct GNUNET_MessageHeader,
2842 NULL),
2843 GNUNET_MQ_hd_fixed_size (client_membership_store,
2844 GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_MEMBERSHIP_STORE,
2845 struct ChannelMembershipStoreRequest,
2846 NULL),
2847 GNUNET_MQ_hd_var_size (client_history_replay,
2848 GNUNET_MESSAGE_TYPE_PSYC_HISTORY_REPLAY,
2849 struct GNUNET_PSYC_HistoryRequestMessage,
2850 NULL),
2851 GNUNET_MQ_hd_var_size (client_state_get,
2852 GNUNET_MESSAGE_TYPE_PSYC_STATE_GET,
2853 struct StateRequest,
2854 NULL),
2855 GNUNET_MQ_hd_var_size (client_state_get_prefix,
2856 GNUNET_MESSAGE_TYPE_PSYC_STATE_GET_PREFIX,
2857 struct StateRequest,
2858 NULL));
2859
2860/* end of gnunet-service-psyc.c */
diff --git a/src/psyc/psyc.conf.in b/src/psyc/psyc.conf.in
deleted file mode 100644
index 764ccfa84..000000000
--- a/src/psyc/psyc.conf.in
+++ /dev/null
@@ -1,12 +0,0 @@
1[psyc]
2START_ON_DEMAND = @START_ON_DEMAND@
3BINARY = gnunet-service-psyc
4
5UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-psyc.sock
6UNIX_MATCH_UID = YES
7UNIX_MATCH_GID = YES
8
9@UNIXONLY@PORT = 2115
10HOSTNAME = localhost
11ACCEPT_FROM = 127.0.0.1;
12ACCEPT_FROM6 = ::1;
diff --git a/src/psyc/psyc.h b/src/psyc/psyc.h
deleted file mode 100644
index 74bbf3edc..000000000
--- a/src/psyc/psyc.h
+++ /dev/null
@@ -1,178 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psyc/psyc.h
23 * @brief Common type definitions for the PSYC service and API.
24 * @author Gabor X Toth
25 */
26
27#ifndef PSYC_H
28#define PSYC_H
29
30#include "platform.h"
31#include "gnunet_psyc_service.h"
32
33
34int
35GNUNET_PSYC_check_message_parts (uint16_t data_size, const char *data,
36 uint16_t *first_ptype, uint16_t *last_ptype);
37
38void
39GNUNET_PSYC_log_message (enum GNUNET_ErrorType kind,
40 const struct GNUNET_MessageHeader *msg);
41
42
43enum MessageState
44{
45 MSG_STATE_START = 0,
46 MSG_STATE_HEADER = 1,
47 MSG_STATE_METHOD = 2,
48 MSG_STATE_MODIFIER = 3,
49 MSG_STATE_MOD_CONT = 4,
50 MSG_STATE_DATA = 5,
51 MSG_STATE_END = 6,
52 MSG_STATE_CANCEL = 7,
53 MSG_STATE_ERROR = 8,
54};
55
56
57enum MessageFragmentState
58{
59 MSG_FRAG_STATE_START = 0,
60 MSG_FRAG_STATE_HEADER = 1,
61 MSG_FRAG_STATE_DATA = 2,
62 MSG_FRAG_STATE_END = 3,
63 MSG_FRAG_STATE_CANCEL = 4,
64 MSG_FRAG_STATE_DROP = 5,
65};
66
67
68GNUNET_NETWORK_STRUCT_BEGIN
69
70
71/**** library -> service ****/
72
73
74struct MasterStartRequest
75{
76 /**
77 * Type: GNUNET_MESSAGE_TYPE_PSYC_MASTER_START
78 */
79 struct GNUNET_MessageHeader header;
80
81 uint32_t policy GNUNET_PACKED;
82
83 struct GNUNET_CRYPTO_EddsaPrivateKey channel_key;
84};
85
86
87struct SlaveJoinRequest
88{
89 /**
90 * Type: GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN
91 */
92 struct GNUNET_MessageHeader header;
93
94 uint32_t relay_count GNUNET_PACKED;
95
96 struct GNUNET_CRYPTO_EddsaPublicKey channel_pub_key;
97
98 struct GNUNET_CRYPTO_EcdsaPrivateKey slave_key;
99
100 struct GNUNET_PeerIdentity origin;
101
102 uint32_t flags GNUNET_PACKED;
103
104 /* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
105
106 /* Followed by struct GNUNET_MessageHeader join_msg */
107};
108
109
110struct ChannelMembershipStoreRequest
111{
112 /**
113 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_MEMBERSHIP_STORE
114 */
115 struct GNUNET_MessageHeader header;
116
117 uint32_t reserved GNUNET_PACKED;
118
119 uint64_t op_id GNUNET_PACKED;
120
121 struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
122
123 uint64_t announced_at GNUNET_PACKED;
124
125 uint64_t effective_since GNUNET_PACKED;
126
127 uint8_t did_join;
128};
129
130
131struct HistoryRequest
132{
133 /**
134 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_HISTORY_REQUEST
135 */
136 struct GNUNET_MessageHeader header;
137
138 uint32_t reserved GNUNET_PACKED;
139
140 /**
141 * ID for this operation.
142 */
143 uint64_t op_id GNUNET_PACKED;
144
145 uint64_t start_message_id GNUNET_PACKED;
146
147 uint64_t end_message_id GNUNET_PACKED;
148
149 uint64_t message_limit GNUNET_PACKED;
150};
151
152
153struct StateRequest
154{
155 /**
156 * Types:
157 * - GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_GET
158 * - GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_GET_PREFIX
159 */
160 struct GNUNET_MessageHeader header;
161
162 uint32_t reserved GNUNET_PACKED;
163
164 /**
165 * ID for this operation.
166 */
167 uint64_t op_id GNUNET_PACKED;
168
169 /* Followed by NUL-terminated name. */
170};
171
172
173/**** service -> library ****/
174
175
176GNUNET_NETWORK_STRUCT_END
177
178#endif
diff --git a/src/psyc/psyc_api.c b/src/psyc/psyc_api.c
deleted file mode 100644
index 37ea112cb..000000000
--- a/src/psyc/psyc_api.c
+++ /dev/null
@@ -1,1584 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psyc/psyc_api.c
23 * @brief PSYC service; high-level access to the PSYC protocol
24 * note that clients of this API are NOT expected to
25 * understand the PSYC message format, only the semantics!
26 * Parsing (and serializing) the PSYC stream format is done
27 * within the implementation of the libgnunetpsyc library,
28 * and this API deliberately exposes as little as possible
29 * of the actual data stream format to the application!
30 * @author Gabor X Toth
31 */
32
33#include <inttypes.h>
34
35#include "platform.h"
36#include "gnunet_util_lib.h"
37#include "gnunet_multicast_service.h"
38#include "gnunet_psyc_service.h"
39#include "gnunet_psyc_util_lib.h"
40#include "psyc.h"
41
42#define LOG(kind,...) GNUNET_log_from (kind, "psyc-api",__VA_ARGS__)
43
44
45/**
46 * Handle to access PSYC channel operations for both the master and slaves.
47 */
48struct GNUNET_PSYC_Channel
49{
50 /**
51 * Configuration to use.
52 */
53 const struct GNUNET_CONFIGURATION_Handle *cfg;
54
55 /**
56 * Client connection to the service.
57 */
58 struct GNUNET_MQ_Handle *mq;
59
60 /**
61 * Message to send on connect.
62 */
63 struct GNUNET_MQ_Envelope *connect_env;
64
65 /**
66 * Time to wait until we try to reconnect on failure.
67 */
68 struct GNUNET_TIME_Relative reconnect_delay;
69
70 /**
71 * Task for reconnecting when the listener fails.
72 */
73 struct GNUNET_SCHEDULER_Task *reconnect_task;
74
75 /**
76 * Async operations.
77 */
78 struct GNUNET_OP_Handle *op;
79
80 /**
81 * Transmission handle;
82 */
83 struct GNUNET_PSYC_TransmitHandle *tmit;
84
85 /**
86 * Receipt handle;
87 */
88 struct GNUNET_PSYC_ReceiveHandle *recv;
89
90 /**
91 * Function called after disconnected from the service.
92 */
93 GNUNET_ContinuationCallback disconnect_cb;
94
95 /**
96 * Closure for @a disconnect_cb.
97 */
98 void *disconnect_cls;
99
100 /**
101 * Are we polling for incoming messages right now?
102 */
103 uint8_t in_receive;
104
105 /**
106 * Is this a master or slave channel?
107 */
108 uint8_t is_master;
109
110 /**
111 * Is this channel in the process of disconnecting from the service?
112 * #GNUNET_YES or #GNUNET_NO
113 */
114 uint8_t is_disconnecting;
115};
116
117
118/**
119 * Handle for the master of a PSYC channel.
120 */
121struct GNUNET_PSYC_Master
122{
123 struct GNUNET_PSYC_Channel chn;
124
125 GNUNET_PSYC_MasterStartCallback start_cb;
126
127 /**
128 * Join request callback.
129 */
130 GNUNET_PSYC_JoinRequestCallback join_req_cb;
131
132 /**
133 * Closure for the callbacks.
134 */
135 void *cb_cls;
136};
137
138
139/**
140 * Handle for a PSYC channel slave.
141 */
142struct GNUNET_PSYC_Slave
143{
144 struct GNUNET_PSYC_Channel chn;
145
146 GNUNET_PSYC_SlaveConnectCallback connect_cb;
147
148 GNUNET_PSYC_JoinDecisionCallback join_dcsn_cb;
149
150 /**
151 * Closure for the callbacks.
152 */
153 void *cb_cls;
154};
155
156
157/**
158 * Handle that identifies a join request.
159 *
160 * Used to match calls to #GNUNET_PSYC_JoinRequestCallback to the
161 * corresponding calls to GNUNET_PSYC_join_decision().
162 */
163struct GNUNET_PSYC_JoinHandle
164{
165 struct GNUNET_PSYC_Master *mst;
166 struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
167};
168
169
170/**
171 * Handle for a pending PSYC transmission operation.
172 */
173struct GNUNET_PSYC_SlaveTransmitHandle
174{
175
176};
177
178
179struct GNUNET_PSYC_HistoryRequest
180{
181 /**
182 * Channel.
183 */
184 struct GNUNET_PSYC_Channel *chn;
185
186 /**
187 * Operation ID.
188 */
189 uint64_t op_id;
190
191 /**
192 * Message handler.
193 */
194 struct GNUNET_PSYC_ReceiveHandle *recv;
195
196 /**
197 * Function to call when the operation finished.
198 */
199 GNUNET_ResultCallback result_cb;
200
201 /**
202 * Closure for @a result_cb.
203 */
204 void *cls;
205};
206
207
208struct GNUNET_PSYC_StateRequest
209{
210 /**
211 * Channel.
212 */
213 struct GNUNET_PSYC_Channel *chn;
214
215 /**
216 * Operation ID.
217 */
218 uint64_t op_id;
219
220 /**
221 * State variable result callback.
222 */
223 GNUNET_PSYC_StateVarCallback var_cb;
224
225 /**
226 * Function to call when the operation finished.
227 */
228 GNUNET_ResultCallback result_cb;
229
230 /**
231 * Closure for @a result_cb.
232 */
233 void *cls;
234};
235
236
237static int
238check_channel_result (void *cls,
239 const struct GNUNET_OperationResultMessage *res)
240{
241 return GNUNET_OK;
242}
243
244
245static void
246handle_channel_result (void *cls,
247 const struct GNUNET_OperationResultMessage *res)
248{
249 struct GNUNET_PSYC_Channel *chn = cls;
250
251 uint16_t size = ntohs (res->header.size);
252 if (size < sizeof (*res))
253 { /* Error, message too small. */
254 GNUNET_break (0);
255 return;
256 }
257
258 uint16_t data_size = size - sizeof (*res);
259 const char *data = (0 < data_size) ? (void *) &res[1] : NULL;
260 GNUNET_OP_result (chn->op, GNUNET_ntohll (res->op_id),
261 GNUNET_ntohll (res->result_code),
262 data, data_size, NULL);
263
264 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
265 "handle_channel_result: Received result message with OP ID %" PRIu64 "\n",
266 GNUNET_ntohll (res->op_id));
267}
268
269
270static void
271op_recv_history_result (void *cls, int64_t result,
272 const void *data, uint16_t data_size)
273{
274 LOG (GNUNET_ERROR_TYPE_DEBUG,
275 "Received history replay result: %" PRId64 ".\n", result);
276
277 struct GNUNET_PSYC_HistoryRequest *hist = cls;
278
279 if (NULL != hist->result_cb)
280 hist->result_cb (hist->cls, result, data, data_size);
281
282 GNUNET_PSYC_receive_destroy (hist->recv);
283 GNUNET_free (hist);
284}
285
286
287static void
288op_recv_state_result (void *cls, int64_t result,
289 const void *data, uint16_t data_size)
290{
291 LOG (GNUNET_ERROR_TYPE_DEBUG,
292 "Received state request result: %" PRId64 ".\n", result);
293
294 struct GNUNET_PSYC_StateRequest *sr = cls;
295
296 if (NULL != sr->result_cb)
297 sr->result_cb (sr->cls, result, data, data_size);
298
299 GNUNET_free (sr);
300}
301
302
303static int
304check_channel_history_result (void *cls,
305 const struct GNUNET_OperationResultMessage *res)
306{
307 struct GNUNET_PSYC_MessageHeader *
308 pmsg = (struct GNUNET_PSYC_MessageHeader *) GNUNET_MQ_extract_nested_mh (res);
309 uint16_t size = ntohs (res->header.size);
310
311 if ( (NULL == pmsg) ||
312 (size < sizeof (*res) + sizeof (*pmsg)) )
313 { /* Error, message too small. */
314 GNUNET_break_op (0);
315 return GNUNET_SYSERR;
316 }
317 return GNUNET_OK;
318}
319
320
321static void
322handle_channel_history_result (void *cls,
323 const struct GNUNET_OperationResultMessage *res)
324{
325 struct GNUNET_PSYC_Channel *chn = cls;
326 struct GNUNET_PSYC_MessageHeader *
327 pmsg = (struct GNUNET_PSYC_MessageHeader *) GNUNET_MQ_extract_nested_mh (res);
328 GNUNET_ResultCallback result_cb = NULL;
329 struct GNUNET_PSYC_HistoryRequest *hist = NULL;
330
331 LOG (GNUNET_ERROR_TYPE_DEBUG,
332 "%p Received historic fragment for message #%" PRIu64 ".\n",
333 chn,
334 GNUNET_ntohll (pmsg->message_id));
335
336 if (GNUNET_YES != GNUNET_OP_get (chn->op,
337 GNUNET_ntohll (res->op_id),
338 &result_cb, (void *) &hist, NULL))
339 { /* Operation not found. */
340 LOG (GNUNET_ERROR_TYPE_WARNING,
341 "%p Replay operation not found for historic fragment of message #%"
342 PRIu64 ".\n",
343 chn, GNUNET_ntohll (pmsg->message_id));
344 return;
345 }
346
347 GNUNET_PSYC_receive_message (hist->recv,
348 (const struct GNUNET_PSYC_MessageHeader *) pmsg);
349}
350
351
352static int
353check_channel_state_result (void *cls,
354 const struct GNUNET_OperationResultMessage *res)
355{
356 const struct GNUNET_MessageHeader *mod = GNUNET_MQ_extract_nested_mh (res);
357 uint16_t mod_size;
358 uint16_t size;
359
360 if (NULL == mod)
361 {
362 GNUNET_break_op (0);
363 return GNUNET_SYSERR;
364 }
365 mod_size = ntohs (mod->size);
366 size = ntohs (res->header.size);
367 if (size - sizeof (*res) != mod_size)
368 {
369 GNUNET_break_op (0);
370 return GNUNET_SYSERR;
371 }
372 return GNUNET_OK;
373}
374
375
376static void
377handle_channel_state_result (void *cls,
378 const struct GNUNET_OperationResultMessage *res)
379{
380 struct GNUNET_PSYC_Channel *chn = cls;
381
382 GNUNET_ResultCallback result_cb = NULL;
383 struct GNUNET_PSYC_StateRequest *sr = NULL;
384
385 if (GNUNET_YES != GNUNET_OP_get (chn->op,
386 GNUNET_ntohll (res->op_id),
387 &result_cb, (void *) &sr, NULL))
388 { /* Operation not found. */
389 return;
390 }
391
392 const struct GNUNET_MessageHeader *mod = GNUNET_MQ_extract_nested_mh (res);
393 if (NULL == mod)
394 {
395 GNUNET_break_op (0);
396 return;
397 }
398 uint16_t mod_size = ntohs (mod->size);
399
400 switch (ntohs (mod->type))
401 {
402 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
403 {
404 const struct GNUNET_PSYC_MessageModifier *
405 pmod = (const struct GNUNET_PSYC_MessageModifier *) mod;
406
407 const char *name = (const char *) &pmod[1];
408 uint16_t name_size = ntohs (pmod->name_size);
409 if (0 == name_size
410 || mod_size - sizeof (*pmod) < name_size
411 || '\0' != name[name_size - 1])
412 {
413 GNUNET_break_op (0);
414 return;
415 }
416 sr->var_cb (sr->cls, mod, name, name + name_size,
417 ntohs (pmod->header.size) - sizeof (*pmod),
418 ntohs (pmod->value_size));
419 break;
420 }
421
422 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
423 sr->var_cb (sr->cls, mod, NULL, (const char *) &mod[1],
424 mod_size - sizeof (*mod), 0);
425 break;
426 }
427}
428
429
430static int
431check_channel_message (void *cls,
432 const struct GNUNET_PSYC_MessageHeader *pmsg)
433{
434 return GNUNET_OK;
435}
436
437
438static void
439handle_channel_message (void *cls,
440 const struct GNUNET_PSYC_MessageHeader *pmsg)
441{
442 struct GNUNET_PSYC_Channel *chn = cls;
443
444 GNUNET_PSYC_receive_message (chn->recv, pmsg);
445}
446
447
448static void
449handle_channel_message_ack (void *cls,
450 const struct GNUNET_MessageHeader *msg)
451{
452 struct GNUNET_PSYC_Channel *chn = cls;
453
454 GNUNET_PSYC_transmit_got_ack (chn->tmit);
455}
456
457
458static void
459handle_master_start_ack (void *cls,
460 const struct GNUNET_PSYC_CountersResultMessage *cres)
461{
462 struct GNUNET_PSYC_Master *mst = cls;
463
464 int32_t result = ntohl (cres->result_code);
465 if (GNUNET_OK != result && GNUNET_NO != result)
466 {
467 LOG (GNUNET_ERROR_TYPE_ERROR, "Could not start master: %ld\n", result);
468 GNUNET_break (0);
469 /* FIXME: disconnect */
470 }
471 if (NULL != mst->start_cb)
472 mst->start_cb (mst->cb_cls, result, GNUNET_ntohll (cres->max_message_id));
473}
474
475
476static int
477check_master_join_request (void *cls,
478 const struct GNUNET_PSYC_JoinRequestMessage *req)
479{
480 if ( ((sizeof (*req) + sizeof (struct GNUNET_PSYC_Message)) <= ntohs (req->header.size)) &&
481 (NULL == GNUNET_MQ_extract_nested_mh (req)) )
482 {
483 GNUNET_break_op (0);
484 return GNUNET_SYSERR;
485 }
486 return GNUNET_OK;
487}
488
489
490static void
491handle_master_join_request (void *cls,
492 const struct GNUNET_PSYC_JoinRequestMessage *req)
493{
494 struct GNUNET_PSYC_Master *mst = cls;
495
496 if (NULL == mst->join_req_cb)
497 return;
498
499 const struct GNUNET_PSYC_Message *join_msg = NULL;
500 if (sizeof (*req) + sizeof (*join_msg) <= ntohs (req->header.size))
501 {
502 join_msg = (struct GNUNET_PSYC_Message *) GNUNET_MQ_extract_nested_mh (req);
503 LOG (GNUNET_ERROR_TYPE_DEBUG,
504 "Received join_msg of type %u and size %u.\n",
505 ntohs (join_msg->header.type),
506 ntohs (join_msg->header.size));
507 }
508
509 struct GNUNET_PSYC_JoinHandle *jh = GNUNET_malloc (sizeof (*jh));
510 jh->mst = mst;
511 jh->slave_pub_key = req->slave_pub_key;
512
513 if (NULL != mst->join_req_cb)
514 mst->join_req_cb (mst->cb_cls, req, &req->slave_pub_key, join_msg, jh);
515}
516
517
518static void
519handle_slave_join_ack (void *cls,
520 const struct GNUNET_PSYC_CountersResultMessage *cres)
521{
522 struct GNUNET_PSYC_Slave *slv = cls;
523
524 int32_t result = ntohl (cres->result_code);
525 if (GNUNET_YES != result && GNUNET_NO != result)
526 {
527 LOG (GNUNET_ERROR_TYPE_ERROR, "Could not join slave.\n");
528 GNUNET_break (0);
529 /* FIXME: disconnect */
530 }
531 if (NULL != slv->connect_cb)
532 slv->connect_cb (slv->cb_cls, result, GNUNET_ntohll (cres->max_message_id));
533}
534
535
536static int
537check_slave_join_decision (void *cls,
538 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn)
539{
540 return GNUNET_OK;
541}
542
543
544static void
545handle_slave_join_decision (void *cls,
546 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn)
547{
548 struct GNUNET_PSYC_Slave *slv = cls;
549
550 struct GNUNET_PSYC_Message *pmsg = NULL;
551 if (ntohs (dcsn->header.size) <= sizeof (*dcsn) + sizeof (*pmsg))
552 pmsg = (struct GNUNET_PSYC_Message *) &dcsn[1];
553
554 if (NULL != slv->join_dcsn_cb)
555 slv->join_dcsn_cb (slv->cb_cls, dcsn, ntohl (dcsn->is_admitted), pmsg);
556}
557
558
559static void
560channel_cleanup (struct GNUNET_PSYC_Channel *chn)
561{
562 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
563 "cleaning up channel %p\n",
564 chn);
565 if (NULL != chn->tmit)
566 {
567 GNUNET_PSYC_transmit_destroy (chn->tmit);
568 chn->tmit = NULL;
569 }
570 if (NULL != chn->recv)
571 {
572
573 GNUNET_PSYC_receive_destroy (chn->recv);
574 chn->recv = NULL;
575 }
576 if (NULL != chn->connect_env)
577 {
578 GNUNET_MQ_discard (chn->connect_env);
579 chn->connect_env = NULL;
580 }
581 if (NULL != chn->mq)
582 {
583 GNUNET_MQ_destroy (chn->mq);
584 chn->mq = NULL;
585 }
586 if (NULL != chn->disconnect_cb)
587 {
588 chn->disconnect_cb (chn->disconnect_cls);
589 chn->disconnect_cb = NULL;
590 }
591 GNUNET_free (chn);
592}
593
594
595static void
596handle_channel_part_ack (void *cls,
597 const struct GNUNET_MessageHeader *msg)
598{
599 struct GNUNET_PSYC_Channel *chn = cls;
600
601 channel_cleanup (chn);
602}
603
604
605/*** MASTER ***/
606
607
608static void
609master_connect (struct GNUNET_PSYC_Master *mst);
610
611
612static void
613master_reconnect (void *cls)
614{
615 master_connect (cls);
616}
617
618
619/**
620 * Master client disconnected from service.
621 *
622 * Reconnect after backoff period.
623 */
624static void
625master_disconnected (void *cls, enum GNUNET_MQ_Error error)
626{
627 struct GNUNET_PSYC_Master *mst = cls;
628 struct GNUNET_PSYC_Channel *chn = &mst->chn;
629
630 LOG (GNUNET_ERROR_TYPE_DEBUG,
631 "Master client disconnected (%d), re-connecting\n",
632 (int) error);
633 if (NULL != chn->tmit)
634 {
635 GNUNET_PSYC_transmit_destroy (chn->tmit);
636 chn->tmit = NULL;
637 }
638 if (NULL != chn->mq)
639 {
640 GNUNET_MQ_destroy (chn->mq);
641 chn->mq = NULL;
642 }
643 chn->reconnect_task = GNUNET_SCHEDULER_add_delayed (chn->reconnect_delay,
644 master_reconnect,
645 mst);
646 chn->reconnect_delay = GNUNET_TIME_STD_BACKOFF (chn->reconnect_delay);
647}
648
649
650static void
651master_connect (struct GNUNET_PSYC_Master *mst)
652{
653 struct GNUNET_PSYC_Channel *chn = &mst->chn;
654
655 struct GNUNET_MQ_MessageHandler handlers[] = {
656 GNUNET_MQ_hd_fixed_size (master_start_ack,
657 GNUNET_MESSAGE_TYPE_PSYC_MASTER_START_ACK,
658 struct GNUNET_PSYC_CountersResultMessage,
659 mst),
660 GNUNET_MQ_hd_var_size (master_join_request,
661 GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST,
662 struct GNUNET_PSYC_JoinRequestMessage,
663 mst),
664 GNUNET_MQ_hd_fixed_size (channel_part_ack,
665 GNUNET_MESSAGE_TYPE_PSYC_PART_ACK,
666 struct GNUNET_MessageHeader,
667 chn),
668 GNUNET_MQ_hd_var_size (channel_message,
669 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE,
670 struct GNUNET_PSYC_MessageHeader,
671 chn),
672 GNUNET_MQ_hd_fixed_size (channel_message_ack,
673 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK,
674 struct GNUNET_MessageHeader,
675 chn),
676 GNUNET_MQ_hd_var_size (channel_history_result,
677 GNUNET_MESSAGE_TYPE_PSYC_HISTORY_RESULT,
678 struct GNUNET_OperationResultMessage,
679 chn),
680 GNUNET_MQ_hd_var_size (channel_state_result,
681 GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT,
682 struct GNUNET_OperationResultMessage,
683 chn),
684 GNUNET_MQ_hd_var_size (channel_result,
685 GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE,
686 struct GNUNET_OperationResultMessage,
687 chn),
688 GNUNET_MQ_handler_end ()
689 };
690
691 chn->mq = GNUNET_CLIENT_connect (chn->cfg,
692 "psyc",
693 handlers,
694 &master_disconnected,
695 mst);
696 GNUNET_assert (NULL != chn->mq);
697 chn->tmit = GNUNET_PSYC_transmit_create (chn->mq);
698
699 GNUNET_MQ_send_copy (chn->mq, chn->connect_env);
700}
701
702
703/**
704 * Start a PSYC master channel.
705 *
706 * Will start a multicast group identified by the given ECC key. Messages
707 * received from group members will be given to the respective handler methods.
708 * If a new member wants to join a group, the "join" method handler will be
709 * invoked; the join handler must then generate a "join" message to approve the
710 * joining of the new member. The channel can also change group membership
711 * without explicit requests. Note that PSYC doesn't itself "understand" join
712 * or part messages, the respective methods must call other PSYC functions to
713 * inform PSYC about the meaning of the respective events.
714 *
715 * @param cfg Configuration to use (to connect to PSYC service).
716 * @param channel_key ECC key that will be used to sign messages for this
717 * PSYC session. The public key is used to identify the PSYC channel.
718 * Note that end-users will usually not use the private key directly, but
719 * rather look it up in GNS for places managed by other users, or select
720 * a file with the private key(s) when setting up their own channels
721 * FIXME: we'll likely want to use NOT the p521 curve here, but a cheaper
722 * one in the future.
723 * @param policy Channel policy specifying join and history restrictions.
724 * Used to automate join decisions.
725 * @param message_cb Function to invoke on message parts received from slaves.
726 * @param join_request_cb Function to invoke when a slave wants to join.
727 * @param master_start_cb Function to invoke after the channel master started.
728 * @param cls Closure for @a method and @a join_cb.
729 *
730 * @return Handle for the channel master, NULL on error.
731 */
732struct GNUNET_PSYC_Master *
733GNUNET_PSYC_master_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
734 const struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key,
735 enum GNUNET_PSYC_Policy policy,
736 GNUNET_PSYC_MasterStartCallback start_cb,
737 GNUNET_PSYC_JoinRequestCallback join_request_cb,
738 GNUNET_PSYC_MessageCallback message_cb,
739 GNUNET_PSYC_MessagePartCallback message_part_cb,
740 void *cls)
741{
742 struct GNUNET_PSYC_Master *mst = GNUNET_new (struct GNUNET_PSYC_Master);
743 struct GNUNET_PSYC_Channel *chn = &mst->chn;
744 struct MasterStartRequest *req;
745
746 chn->connect_env = GNUNET_MQ_msg (req,
747 GNUNET_MESSAGE_TYPE_PSYC_MASTER_START);
748 req->channel_key = *channel_key;
749 req->policy = policy;
750
751 chn->cfg = cfg;
752 chn->is_master = GNUNET_YES;
753 chn->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
754
755 chn->op = GNUNET_OP_create ();
756 chn->recv = GNUNET_PSYC_receive_create (message_cb, message_part_cb, cls);
757
758 mst->start_cb = start_cb;
759 mst->join_req_cb = join_request_cb;
760 mst->cb_cls = cls;
761
762 master_connect (mst);
763 return mst;
764}
765
766
767/**
768 * Stop a PSYC master channel.
769 *
770 * @param master PSYC channel master to stop.
771 * @param keep_active FIXME
772 */
773void
774GNUNET_PSYC_master_stop (struct GNUNET_PSYC_Master *mst,
775 int keep_active,
776 GNUNET_ContinuationCallback stop_cb,
777 void *stop_cls)
778{
779 struct GNUNET_PSYC_Channel *chn = &mst->chn;
780 struct GNUNET_MQ_Envelope *env;
781
782 chn->is_disconnecting = GNUNET_YES;
783 chn->disconnect_cb = stop_cb;
784 chn->disconnect_cls = stop_cls;
785 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST);
786 GNUNET_MQ_send (chn->mq, env);
787}
788
789
790/**
791 * Function to call with the decision made for a join request.
792 *
793 * Must be called once and only once in response to an invocation of the
794 * #GNUNET_PSYC_JoinCallback.
795 *
796 * @param jh Join request handle.
797 * @param is_admitted #GNUNET_YES if the join is approved,
798 * #GNUNET_NO if it is disapproved,
799 * #GNUNET_SYSERR if we cannot answer the request.
800 * @param relay_count Number of relays given.
801 * @param relays Array of suggested peers that might be useful relays to use
802 * when joining the multicast group (essentially a list of peers that
803 * are already part of the multicast group and might thus be willing
804 * to help with routing). If empty, only this local peer (which must
805 * be the multicast origin) is a good candidate for building the
806 * multicast tree. Note that it is unnecessary to specify our own
807 * peer identity in this array.
808 * @param join_resp Application-dependent join response message.
809 *
810 * @return #GNUNET_OK on success,
811 * #GNUNET_SYSERR if the message is too large.
812 */
813int
814GNUNET_PSYC_join_decision (struct GNUNET_PSYC_JoinHandle *jh,
815 int is_admitted,
816 uint32_t relay_count,
817 const struct GNUNET_PeerIdentity *relays,
818 const struct GNUNET_PSYC_Message *join_resp)
819{
820 struct GNUNET_PSYC_Channel *chn = &jh->mst->chn;
821 struct GNUNET_PSYC_JoinDecisionMessage *dcsn;
822 uint16_t join_resp_size
823 = (NULL != join_resp) ? ntohs (join_resp->header.size) : 0;
824 uint16_t relay_size = relay_count * sizeof (*relays);
825
826 if (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD
827 < sizeof (*dcsn) + relay_size + join_resp_size)
828 return GNUNET_SYSERR;
829
830 struct GNUNET_MQ_Envelope *
831 env = GNUNET_MQ_msg_extra (dcsn, relay_size + join_resp_size,
832 GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION);
833 dcsn->is_admitted = htonl (is_admitted);
834 dcsn->slave_pub_key = jh->slave_pub_key;
835
836 if (0 < join_resp_size)
837 GNUNET_memcpy (&dcsn[1], join_resp, join_resp_size);
838
839 GNUNET_MQ_send (chn->mq, env);
840 GNUNET_free (jh);
841 return GNUNET_OK;
842}
843
844
845/**
846 * Send a message to call a method to all members in the PSYC channel.
847 *
848 * @param master Handle to the PSYC channel.
849 * @param method_name Which method should be invoked.
850 * @param notify_mod Function to call to obtain modifiers.
851 * @param notify_data Function to call to obtain fragments of the data.
852 * @param notify_cls Closure for @a notify_mod and @a notify_data.
853 * @param flags Flags for the message being transmitted.
854 *
855 * @return Transmission handle, NULL on error (i.e. more than one request queued).
856 */
857struct GNUNET_PSYC_MasterTransmitHandle *
858GNUNET_PSYC_master_transmit (struct GNUNET_PSYC_Master *mst,
859 const char *method_name,
860 GNUNET_PSYC_TransmitNotifyModifier notify_mod,
861 GNUNET_PSYC_TransmitNotifyData notify_data,
862 void *notify_cls,
863 enum GNUNET_PSYC_MasterTransmitFlags flags)
864{
865 if (GNUNET_OK
866 == GNUNET_PSYC_transmit_message (mst->chn.tmit, method_name, NULL,
867 notify_mod, notify_data, notify_cls,
868 flags))
869 return (struct GNUNET_PSYC_MasterTransmitHandle *) mst->chn.tmit;
870 else
871 return NULL;
872}
873
874
875/**
876 * Resume transmission to the channel.
877 *
878 * @param tmit Handle of the request that is being resumed.
879 */
880void
881GNUNET_PSYC_master_transmit_resume (struct GNUNET_PSYC_MasterTransmitHandle *tmit)
882{
883 GNUNET_PSYC_transmit_resume ((struct GNUNET_PSYC_TransmitHandle *) tmit);
884}
885
886
887/**
888 * Abort transmission request to the channel.
889 *
890 * @param tmit Handle of the request that is being aborted.
891 */
892void
893GNUNET_PSYC_master_transmit_cancel (struct GNUNET_PSYC_MasterTransmitHandle *tmit)
894{
895 GNUNET_PSYC_transmit_cancel ((struct GNUNET_PSYC_TransmitHandle *) tmit);
896}
897
898
899/**
900 * Convert a channel @a master to a @e channel handle to access the @e channel
901 * APIs.
902 *
903 * @param master Channel master handle.
904 *
905 * @return Channel handle, valid for as long as @a master is valid.
906 */
907struct GNUNET_PSYC_Channel *
908GNUNET_PSYC_master_get_channel (struct GNUNET_PSYC_Master *master)
909{
910 return &master->chn;
911}
912
913
914/*** SLAVE ***/
915
916
917static void
918slave_connect (struct GNUNET_PSYC_Slave *slv);
919
920
921static void
922slave_reconnect (void *cls)
923{
924 slave_connect (cls);
925}
926
927
928/**
929 * Slave client disconnected from service.
930 *
931 * Reconnect after backoff period.
932 */
933static void
934slave_disconnected (void *cls,
935 enum GNUNET_MQ_Error error)
936{
937 struct GNUNET_PSYC_Slave *slv = cls;
938 struct GNUNET_PSYC_Channel *chn = &slv->chn;
939
940 LOG (GNUNET_ERROR_TYPE_DEBUG,
941 "Slave client disconnected (%d), re-connecting\n",
942 (int) error);
943 if (NULL != chn->tmit)
944 {
945 GNUNET_PSYC_transmit_destroy (chn->tmit);
946 chn->tmit = NULL;
947 }
948 if (NULL != chn->mq)
949 {
950 GNUNET_MQ_destroy (chn->mq);
951 chn->mq = NULL;
952 }
953 chn->reconnect_task = GNUNET_SCHEDULER_add_delayed (chn->reconnect_delay,
954 &slave_reconnect,
955 slv);
956 chn->reconnect_delay = GNUNET_TIME_STD_BACKOFF (chn->reconnect_delay);
957}
958
959
960static void
961slave_connect (struct GNUNET_PSYC_Slave *slv)
962{
963 struct GNUNET_PSYC_Channel *chn = &slv->chn;
964
965 struct GNUNET_MQ_MessageHandler handlers[] = {
966 GNUNET_MQ_hd_fixed_size (slave_join_ack,
967 GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN_ACK,
968 struct GNUNET_PSYC_CountersResultMessage,
969 slv),
970 GNUNET_MQ_hd_var_size (slave_join_decision,
971 GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION,
972 struct GNUNET_PSYC_JoinDecisionMessage,
973 slv),
974 GNUNET_MQ_hd_fixed_size (channel_part_ack,
975 GNUNET_MESSAGE_TYPE_PSYC_PART_ACK,
976 struct GNUNET_MessageHeader,
977 chn),
978 GNUNET_MQ_hd_var_size (channel_message,
979 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE,
980 struct GNUNET_PSYC_MessageHeader,
981 chn),
982 GNUNET_MQ_hd_fixed_size (channel_message_ack,
983 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK,
984 struct GNUNET_MessageHeader,
985 chn),
986 GNUNET_MQ_hd_var_size (channel_history_result,
987 GNUNET_MESSAGE_TYPE_PSYC_HISTORY_RESULT,
988 struct GNUNET_OperationResultMessage,
989 chn),
990 GNUNET_MQ_hd_var_size (channel_state_result,
991 GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT,
992 struct GNUNET_OperationResultMessage,
993 chn),
994 GNUNET_MQ_hd_var_size (channel_result,
995 GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE,
996 struct GNUNET_OperationResultMessage,
997 chn),
998 GNUNET_MQ_handler_end ()
999 };
1000
1001 chn->mq = GNUNET_CLIENT_connect (chn->cfg,
1002 "psyc",
1003 handlers,
1004 &slave_disconnected,
1005 slv);
1006 if (NULL == chn->mq)
1007 {
1008 chn->reconnect_task = GNUNET_SCHEDULER_add_delayed (chn->reconnect_delay,
1009 &slave_reconnect,
1010 slv);
1011 chn->reconnect_delay = GNUNET_TIME_STD_BACKOFF (chn->reconnect_delay);
1012 return;
1013 }
1014 chn->tmit = GNUNET_PSYC_transmit_create (chn->mq);
1015
1016 GNUNET_MQ_send_copy (chn->mq, chn->connect_env);
1017}
1018
1019
1020/**
1021 * Join a PSYC channel.
1022 *
1023 * The entity joining is always the local peer. The user must immediately use
1024 * the GNUNET_PSYC_slave_transmit() functions to transmit a @e join_msg to the
1025 * channel; if the join request succeeds, the channel state (and @e recent
1026 * method calls) will be replayed to the joining member. There is no explicit
1027 * notification on failure (as the channel may simply take days to approve,
1028 * and disapproval is simply being ignored).
1029 *
1030 * @param cfg
1031 * Configuration to use.
1032 * @param channel_key ECC public key that identifies the channel we wish to join.
1033 * @param slave_key ECC private-public key pair that identifies the slave, and
1034 * used by multicast to sign the join request and subsequent unicast
1035 * requests sent to the master.
1036 * @param origin Peer identity of the origin.
1037 * @param relay_count Number of peers in the @a relays array.
1038 * @param relays Peer identities of members of the multicast group, which serve
1039 * as relays and used to join the group at.
1040 * @param message_cb Function to invoke on message parts received from the
1041 * channel, typically at least contains method handlers for @e join and
1042 * @e part.
1043 * @param slave_connect_cb Function invoked once we have connected to the
1044 * PSYC service.
1045 * @param join_decision_cb Function invoked once we have received a join
1046 * decision.
1047 * @param cls Closure for @a message_cb and @a slave_joined_cb.
1048 * @param method_name Method name for the join request.
1049 * @param env Environment containing transient variables for the request, or NULL.
1050 * @param data Payload for the join message.
1051 * @param data_size Number of bytes in @a data.
1052 *
1053 * @return Handle for the slave, NULL on error.
1054 */
1055struct GNUNET_PSYC_Slave *
1056GNUNET_PSYC_slave_join (const struct GNUNET_CONFIGURATION_Handle *cfg,
1057 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_pub_key,
1058 const struct GNUNET_CRYPTO_EcdsaPrivateKey *slave_key,
1059 enum GNUNET_PSYC_SlaveJoinFlags flags,
1060 const struct GNUNET_PeerIdentity *origin,
1061 uint32_t relay_count,
1062 const struct GNUNET_PeerIdentity *relays,
1063 GNUNET_PSYC_MessageCallback message_cb,
1064 GNUNET_PSYC_MessagePartCallback message_part_cb,
1065 GNUNET_PSYC_SlaveConnectCallback connect_cb,
1066 GNUNET_PSYC_JoinDecisionCallback join_decision_cb,
1067 void *cls,
1068 const struct GNUNET_PSYC_Message *join_msg)
1069{
1070 struct GNUNET_PSYC_Slave *slv = GNUNET_malloc (sizeof (*slv));
1071 struct GNUNET_PSYC_Channel *chn = &slv->chn;
1072 uint16_t relay_size = relay_count * sizeof (*relays);
1073 uint16_t join_msg_size;
1074 if (NULL == join_msg)
1075 join_msg_size = 0;
1076 else
1077 join_msg_size = ntohs (join_msg->header.size);
1078
1079 struct SlaveJoinRequest *req;
1080 chn->connect_env = GNUNET_MQ_msg_extra (req, relay_size + join_msg_size,
1081 GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN);
1082 req->channel_pub_key = *channel_pub_key;
1083 req->slave_key = *slave_key;
1084 req->origin = *origin;
1085 req->relay_count = htonl (relay_count);
1086 req->flags = htonl (flags);
1087
1088 if (0 < relay_size)
1089 GNUNET_memcpy (&req[1], relays, relay_size);
1090
1091 if (NULL != join_msg)
1092 GNUNET_memcpy ((char *) &req[1] + relay_size, join_msg, join_msg_size);
1093
1094 chn->cfg = cfg;
1095 chn->is_master = GNUNET_NO;
1096 chn->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
1097
1098 chn->op = GNUNET_OP_create ();
1099 chn->recv = GNUNET_PSYC_receive_create (message_cb, message_part_cb, cls);
1100
1101 slv->connect_cb = connect_cb;
1102 slv->join_dcsn_cb = join_decision_cb;
1103 slv->cb_cls = cls;
1104
1105 slave_connect (slv);
1106 return slv;
1107}
1108
1109
1110/**
1111 * Part a PSYC channel.
1112 *
1113 * Will terminate the connection to the PSYC service. Polite clients should
1114 * first explicitly send a part request (via GNUNET_PSYC_slave_transmit()).
1115 *
1116 * @param slave Slave handle.
1117 */
1118void
1119GNUNET_PSYC_slave_part (struct GNUNET_PSYC_Slave *slv,
1120 int keep_active,
1121 GNUNET_ContinuationCallback part_cb,
1122 void *part_cls)
1123{
1124 struct GNUNET_PSYC_Channel *chn = &slv->chn;
1125 struct GNUNET_MQ_Envelope *env;
1126
1127 chn->is_disconnecting = GNUNET_YES;
1128 chn->disconnect_cb = part_cb;
1129 chn->disconnect_cls = part_cls;
1130 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_PART_REQUEST);
1131 GNUNET_MQ_send (chn->mq, env);
1132}
1133
1134
1135/**
1136 * Request a message to be sent to the channel master.
1137 *
1138 * @param slave Slave handle.
1139 * @param method_name Which (PSYC) method should be invoked (on host).
1140 * @param notify_mod Function to call to obtain modifiers.
1141 * @param notify_data Function to call to obtain fragments of the data.
1142 * @param notify_cls Closure for @a notify.
1143 * @param flags Flags for the message being transmitted.
1144 *
1145 * @return Transmission handle, NULL on error (i.e. more than one request
1146 * queued).
1147 */
1148struct GNUNET_PSYC_SlaveTransmitHandle *
1149GNUNET_PSYC_slave_transmit (struct GNUNET_PSYC_Slave *slv,
1150 const char *method_name,
1151 GNUNET_PSYC_TransmitNotifyModifier notify_mod,
1152 GNUNET_PSYC_TransmitNotifyData notify_data,
1153 void *notify_cls,
1154 enum GNUNET_PSYC_SlaveTransmitFlags flags)
1155
1156{
1157 if (GNUNET_OK
1158 == GNUNET_PSYC_transmit_message (slv->chn.tmit, method_name, NULL,
1159 notify_mod, notify_data, notify_cls,
1160 flags))
1161 return (struct GNUNET_PSYC_SlaveTransmitHandle *) slv->chn.tmit;
1162 else
1163 return NULL;
1164}
1165
1166
1167/**
1168 * Resume transmission to the master.
1169 *
1170 * @param tmit Handle of the request that is being resumed.
1171 */
1172void
1173GNUNET_PSYC_slave_transmit_resume (struct GNUNET_PSYC_SlaveTransmitHandle *tmit)
1174{
1175 GNUNET_PSYC_transmit_resume ((struct GNUNET_PSYC_TransmitHandle *) tmit);
1176}
1177
1178
1179/**
1180 * Abort transmission request to master.
1181 *
1182 * @param tmit Handle of the request that is being aborted.
1183 */
1184void
1185GNUNET_PSYC_slave_transmit_cancel (struct GNUNET_PSYC_SlaveTransmitHandle *tmit)
1186{
1187 GNUNET_PSYC_transmit_cancel ((struct GNUNET_PSYC_TransmitHandle *) tmit);
1188}
1189
1190
1191/**
1192 * Convert @a slave to a @e channel handle to access the @e channel APIs.
1193 *
1194 * @param slv Slave handle.
1195 *
1196 * @return Channel handle, valid for as long as @a slave is valid.
1197 */
1198struct GNUNET_PSYC_Channel *
1199GNUNET_PSYC_slave_get_channel (struct GNUNET_PSYC_Slave *slv)
1200{
1201 return &slv->chn;
1202}
1203
1204
1205/**
1206 * Add a slave to the channel's membership list.
1207 *
1208 * Note that this will NOT generate any PSYC traffic, it will merely update the
1209 * local database to modify how we react to <em>membership test</em> queries.
1210 * The channel master still needs to explicitly transmit a @e join message to
1211 * notify other channel members and they then also must still call this function
1212 * in their respective methods handling the @e join message. This way, how @e
1213 * join and @e part operations are exactly implemented is still up to the
1214 * application; for example, there might be a @e part_all method to kick out
1215 * everyone.
1216 *
1217 * Note that channel slaves are explicitly trusted to execute such methods
1218 * correctly; not doing so correctly will result in either denying other slaves
1219 * access or offering access to channel data to non-members.
1220 *
1221 * @param chn
1222 * Channel handle.
1223 * @param slave_pub_key
1224 * Identity of channel slave to add.
1225 * @param announced_at
1226 * ID of the message that announced the membership change.
1227 * @param effective_since
1228 * Addition of slave is in effect since this message ID.
1229 * @param result_cb
1230 * Function to call with the result of the operation.
1231 * The @e result_code argument is #GNUNET_OK on success, or
1232 * #GNUNET_SYSERR on error. In case of an error, the @e data argument
1233 * can contain an optional error message.
1234 * @param cls
1235 * Closure for @a result_cb.
1236 */
1237void
1238GNUNET_PSYC_channel_slave_add (struct GNUNET_PSYC_Channel *chn,
1239 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_pub_key,
1240 uint64_t announced_at,
1241 uint64_t effective_since,
1242 GNUNET_ResultCallback result_cb,
1243 void *cls)
1244{
1245 struct ChannelMembershipStoreRequest *req;
1246 struct GNUNET_MQ_Envelope *
1247 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_MEMBERSHIP_STORE);
1248 req->slave_pub_key = *slave_pub_key;
1249 req->announced_at = GNUNET_htonll (announced_at);
1250 req->effective_since = GNUNET_htonll (effective_since);
1251 req->did_join = GNUNET_YES;
1252 req->op_id = GNUNET_htonll (GNUNET_OP_add (chn->op, result_cb, cls, NULL));
1253
1254 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1255 "GNUNET_PSYC_channel_slave_add, OP ID: %" PRIu64 "\n",
1256 GNUNET_ntohll (req->op_id));
1257 GNUNET_MQ_send (chn->mq, env);
1258}
1259
1260
1261/**
1262 * Remove a slave from the channel's membership list.
1263 *
1264 * Note that this will NOT generate any PSYC traffic, it will merely update the
1265 * local database to modify how we react to <em>membership test</em> queries.
1266 * The channel master still needs to explicitly transmit a @e part message to
1267 * notify other channel members and they then also must still call this function
1268 * in their respective methods handling the @e part message. This way, how
1269 * @e join and @e part operations are exactly implemented is still up to the
1270 * application; for example, there might be a @e part_all message to kick out
1271 * everyone.
1272 *
1273 * Note that channel members are explicitly trusted to perform these
1274 * operations correctly; not doing so correctly will result in either
1275 * denying members access or offering access to channel data to
1276 * non-members.
1277 *
1278 * @param chn
1279 * Channel handle.
1280 * @param slave_pub_key
1281 * Identity of channel slave to remove.
1282 * @param announced_at
1283 * ID of the message that announced the membership change.
1284 * @param result_cb
1285 * Function to call with the result of the operation.
1286 * The @e result_code argument is #GNUNET_OK on success, or
1287 * #GNUNET_SYSERR on error. In case of an error, the @e data argument
1288 * can contain an optional error message.
1289 * @param cls
1290 * Closure for @a result_cb.
1291 */
1292void
1293GNUNET_PSYC_channel_slave_remove (struct GNUNET_PSYC_Channel *chn,
1294 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_pub_key,
1295 uint64_t announced_at,
1296 GNUNET_ResultCallback result_cb,
1297 void *cls)
1298{
1299 struct ChannelMembershipStoreRequest *req;
1300 struct GNUNET_MQ_Envelope *
1301 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_MEMBERSHIP_STORE);
1302 req->slave_pub_key = *slave_pub_key;
1303 req->announced_at = GNUNET_htonll (announced_at);
1304 req->did_join = GNUNET_NO;
1305 req->op_id = GNUNET_htonll (GNUNET_OP_add (chn->op, result_cb, cls, NULL));
1306
1307 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1308 "GNUNET_PSYC_channel_slave_remove, OP ID: %" PRIu64 "\n",
1309 GNUNET_ntohll (req->op_id));
1310 GNUNET_MQ_send (chn->mq, env);
1311}
1312
1313
1314static struct GNUNET_PSYC_HistoryRequest *
1315channel_history_replay (struct GNUNET_PSYC_Channel *chn,
1316 uint64_t start_message_id,
1317 uint64_t end_message_id,
1318 uint64_t message_limit,
1319 const char *method_prefix,
1320 uint32_t flags,
1321 GNUNET_PSYC_MessageCallback message_cb,
1322 GNUNET_PSYC_MessagePartCallback message_part_cb,
1323 GNUNET_ResultCallback result_cb,
1324 void *cls)
1325{
1326 struct GNUNET_PSYC_HistoryRequestMessage *req;
1327 struct GNUNET_PSYC_HistoryRequest *hist = GNUNET_malloc (sizeof (*hist));
1328 hist->chn = chn;
1329 hist->recv = GNUNET_PSYC_receive_create (message_cb, message_part_cb, cls);
1330 hist->result_cb = result_cb;
1331 hist->cls = cls;
1332 hist->op_id = GNUNET_OP_add (chn->op, op_recv_history_result, hist, NULL);
1333
1334 GNUNET_assert (NULL != method_prefix);
1335 uint16_t method_size = strnlen (method_prefix,
1336 GNUNET_MAX_MESSAGE_SIZE
1337 - sizeof (*req)) + 1;
1338 GNUNET_assert ('\0' == method_prefix[method_size - 1]);
1339
1340 struct GNUNET_MQ_Envelope *
1341 env = GNUNET_MQ_msg_extra (req, method_size,
1342 GNUNET_MESSAGE_TYPE_PSYC_HISTORY_REPLAY);
1343 req->start_message_id = GNUNET_htonll (start_message_id);
1344 req->end_message_id = GNUNET_htonll (end_message_id);
1345 req->message_limit = GNUNET_htonll (message_limit);
1346 req->flags = htonl (flags);
1347 req->op_id = GNUNET_htonll (hist->op_id);
1348
1349 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1350 "channel_history_replay, OP ID: %" PRIu64 "\n",
1351 GNUNET_ntohll (req->op_id));
1352 GNUNET_memcpy (&req[1], method_prefix, method_size);
1353
1354 GNUNET_MQ_send (chn->mq, env);
1355 return hist;
1356}
1357
1358
1359/**
1360 * Request to replay a part of the message history of the channel.
1361 *
1362 * Historic messages (but NOT the state at the time) will be replayed and given
1363 * to the normal method handlers with a #GNUNET_PSYC_MESSAGE_HISTORIC flag set.
1364 *
1365 * Messages are retrieved from the local PSYCstore if available,
1366 * otherwise requested from the network.
1367 *
1368 * @param channel
1369 * Which channel should be replayed?
1370 * @param start_message_id
1371 * Earliest interesting point in history.
1372 * @param end_message_id
1373 * Last (inclusive) interesting point in history.
1374 * @param method_prefix
1375 * Retrieve only messages with a matching method prefix.
1376 * @param flags
1377 * OR'ed enum GNUNET_PSYC_HistoryReplayFlags
1378 * @param result_cb
1379 * Function to call when the requested history has been fully replayed.
1380 * @param cls
1381 * Closure for the callbacks.
1382 *
1383 * @return Handle to cancel history replay operation.
1384 */
1385struct GNUNET_PSYC_HistoryRequest *
1386GNUNET_PSYC_channel_history_replay (struct GNUNET_PSYC_Channel *chn,
1387 uint64_t start_message_id,
1388 uint64_t end_message_id,
1389 const char *method_prefix,
1390 uint32_t flags,
1391 GNUNET_PSYC_MessageCallback message_cb,
1392 GNUNET_PSYC_MessagePartCallback message_part_cb,
1393 GNUNET_ResultCallback result_cb,
1394 void *cls)
1395{
1396 return channel_history_replay (chn, start_message_id, end_message_id, 0,
1397 method_prefix, flags,
1398 message_cb, message_part_cb, result_cb, cls);
1399}
1400
1401
1402/**
1403 * Request to replay the latest messages from the message history of the channel.
1404 *
1405 * Historic messages (but NOT the state at the time) will be replayed (given to
1406 * the normal method handlers) if available and if access is permitted.
1407 *
1408 * @param channel
1409 * Which channel should be replayed?
1410 * @param message_limit
1411 * Maximum number of messages to replay.
1412 * @param method_prefix
1413 * Retrieve only messages with a matching method prefix.
1414 * Use NULL or "" to retrieve all.
1415 * @param flags
1416 * OR'ed enum GNUNET_PSYC_HistoryReplayFlags
1417 * @param result_cb
1418 * Function to call when the requested history has been fully replayed.
1419 * @param cls
1420 * Closure for the callbacks.
1421 *
1422 * @return Handle to cancel history replay operation.
1423 */
1424struct GNUNET_PSYC_HistoryRequest *
1425GNUNET_PSYC_channel_history_replay_latest (struct GNUNET_PSYC_Channel *chn,
1426 uint64_t message_limit,
1427 const char *method_prefix,
1428 uint32_t flags,
1429 GNUNET_PSYC_MessageCallback message_cb,
1430 GNUNET_PSYC_MessagePartCallback message_part_cb,
1431 GNUNET_ResultCallback result_cb,
1432 void *cls)
1433{
1434 return channel_history_replay (chn, 0, 0, message_limit, method_prefix, flags,
1435 message_cb, message_part_cb, result_cb, cls);
1436}
1437
1438
1439void
1440GNUNET_PSYC_channel_history_replay_cancel (struct GNUNET_PSYC_Channel *channel,
1441 struct GNUNET_PSYC_HistoryRequest *hist)
1442{
1443 GNUNET_PSYC_receive_destroy (hist->recv);
1444 GNUNET_OP_remove (hist->chn->op, hist->op_id);
1445 GNUNET_free (hist);
1446}
1447
1448
1449/**
1450 * Retrieve the best matching channel state variable.
1451 *
1452 * If the requested variable name is not present in the state, the nearest
1453 * less-specific name is matched; for example, requesting "_a_b" will match "_a"
1454 * if "_a_b" does not exist.
1455 *
1456 * @param channel
1457 * Channel handle.
1458 * @param full_name
1459 * Full name of the requested variable.
1460 * The actual variable returned might have a shorter name.
1461 * @param var_cb
1462 * Function called once when a matching state variable is found.
1463 * Not called if there's no matching state variable.
1464 * @param result_cb
1465 * Function called after the operation finished.
1466 * (i.e. all state variables have been returned via @a state_cb)
1467 * @param cls
1468 * Closure for the callbacks.
1469 */
1470static struct GNUNET_PSYC_StateRequest *
1471channel_state_get (struct GNUNET_PSYC_Channel *chn,
1472 uint16_t type, const char *name,
1473 GNUNET_PSYC_StateVarCallback var_cb,
1474 GNUNET_ResultCallback result_cb, void *cls)
1475{
1476 struct StateRequest *req;
1477 struct GNUNET_PSYC_StateRequest *sr = GNUNET_malloc (sizeof (*sr));
1478 sr->chn = chn;
1479 sr->var_cb = var_cb;
1480 sr->result_cb = result_cb;
1481 sr->cls = cls;
1482 sr->op_id = GNUNET_OP_add (chn->op, op_recv_state_result, sr, NULL);
1483
1484 GNUNET_assert (NULL != name);
1485 size_t name_size = strnlen (name, GNUNET_MAX_MESSAGE_SIZE
1486 - sizeof (*req)) + 1;
1487 struct GNUNET_MQ_Envelope *
1488 env = GNUNET_MQ_msg_extra (req, name_size, type);
1489 req->op_id = GNUNET_htonll (sr->op_id);
1490
1491 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1492 "channel_state_get, OP ID: %" PRIu64 "\n",
1493 GNUNET_ntohll (req->op_id));
1494
1495 GNUNET_memcpy (&req[1], name, name_size);
1496
1497 GNUNET_MQ_send (chn->mq, env);
1498 return sr;
1499}
1500
1501
1502/**
1503 * Retrieve the best matching channel state variable.
1504 *
1505 * If the requested variable name is not present in the state, the nearest
1506 * less-specific name is matched; for example, requesting "_a_b" will match "_a"
1507 * if "_a_b" does not exist.
1508 *
1509 * @param channel
1510 * Channel handle.
1511 * @param full_name
1512 * Full name of the requested variable.
1513 * The actual variable returned might have a shorter name.
1514 * @param var_cb
1515 * Function called once when a matching state variable is found.
1516 * Not called if there's no matching state variable.
1517 * @param result_cb
1518 * Function called after the operation finished.
1519 * (i.e. all state variables have been returned via @a state_cb)
1520 * @param cls
1521 * Closure for the callbacks.
1522 */
1523struct GNUNET_PSYC_StateRequest *
1524GNUNET_PSYC_channel_state_get (struct GNUNET_PSYC_Channel *chn,
1525 const char *full_name,
1526 GNUNET_PSYC_StateVarCallback var_cb,
1527 GNUNET_ResultCallback result_cb,
1528 void *cls)
1529{
1530 return channel_state_get (chn, GNUNET_MESSAGE_TYPE_PSYC_STATE_GET,
1531 full_name, var_cb, result_cb, cls);
1532
1533}
1534
1535
1536/**
1537 * Return all channel state variables whose name matches a given prefix.
1538 *
1539 * A name matches if it starts with the given @a name_prefix, thus requesting
1540 * the empty prefix ("") will match all values; requesting "_a_b" will also
1541 * return values stored under "_a_b_c".
1542 *
1543 * The @a state_cb is invoked on all matching state variables asynchronously, as
1544 * the state is stored in and retrieved from the PSYCstore,
1545 *
1546 * @param channel
1547 * Channel handle.
1548 * @param name_prefix
1549 * Prefix of the state variable name to match.
1550 * @param var_cb
1551 * Function called once when a matching state variable is found.
1552 * Not called if there's no matching state variable.
1553 * @param result_cb
1554 * Function called after the operation finished.
1555 * (i.e. all state variables have been returned via @a state_cb)
1556 * @param cls
1557 * Closure for the callbacks.
1558 */
1559struct GNUNET_PSYC_StateRequest *
1560GNUNET_PSYC_channel_state_get_prefix (struct GNUNET_PSYC_Channel *chn,
1561 const char *name_prefix,
1562 GNUNET_PSYC_StateVarCallback var_cb,
1563 GNUNET_ResultCallback result_cb,
1564 void *cls)
1565{
1566 return channel_state_get (chn, GNUNET_MESSAGE_TYPE_PSYC_STATE_GET_PREFIX,
1567 name_prefix, var_cb, result_cb, cls);
1568}
1569
1570
1571/**
1572 * Cancel a state request operation.
1573 *
1574 * @param sr
1575 * Handle for the operation to cancel.
1576 */
1577void
1578GNUNET_PSYC_channel_state_get_cancel (struct GNUNET_PSYC_StateRequest *sr)
1579{
1580 GNUNET_OP_remove (sr->chn->op, sr->op_id);
1581 GNUNET_free (sr);
1582}
1583
1584/* end of psyc_api.c */
diff --git a/src/psyc/psyc_test_lib.h b/src/psyc/psyc_test_lib.h
deleted file mode 100644
index 0ad991061..000000000
--- a/src/psyc/psyc_test_lib.h
+++ /dev/null
@@ -1,67 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psyc/test_psyc_api_join.c
23 * @brief library for writing psyc tests
24 * @author xrs
25 */
26
27#define MAX_TESTBED_OPS 32
28
29struct pctx
30{
31 int idx;
32
33 struct GNUNET_TESTBED_Peer *testbed_peer;
34
35 const struct GNUNET_PeerIdentity *peer_id;
36
37 const struct GNUNET_PeerIdentity *peer_id_master;
38
39 /**
40 * Used to simulate egos (not peerid)
41 */
42 const struct GNUNET_CRYPTO_EcdsaPrivateKey *id_key;
43
44 const struct GNUNET_CRYPTO_EcdsaPublicKey *id_pub_key;
45
46 /**
47 * Used to store either GNUNET_PSYC_Master or GNUNET_PSYC_Slave handle
48 */
49 void *psyc;
50
51 struct GNUNET_PSYC_Channel *channel;
52
53 const struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key;
54
55 struct GNUNET_CRYPTO_EddsaPublicKey *channel_pub_key;
56
57 int test_ok;
58};
59
60static struct GNUNET_SCHEDULER_Task *timeout_task_id;
61
62static int result = GNUNET_SYSERR;
63
64static struct GNUNET_TESTBED_Operation *op[MAX_TESTBED_OPS];
65
66static int op_cnt = 0;
67
diff --git a/src/psyc/test_psyc.c b/src/psyc/test_psyc.c
deleted file mode 100644
index b6e27bbab..000000000
--- a/src/psyc/test_psyc.c
+++ /dev/null
@@ -1,1018 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psyc/test_psyc.c
23 * @brief Tests for the PSYC API.
24 * @author Gabor X Toth
25 * @author Christian Grothoff
26 */
27
28#include <inttypes.h>
29
30#include "platform.h"
31#include "gnunet_crypto_lib.h"
32#include "gnunet_common.h"
33#include "gnunet_util_lib.h"
34#include "gnunet_testing_lib.h"
35#include "gnunet_psyc_util_lib.h"
36#include "gnunet_psyc_service.h"
37
38#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
39
40/**
41 * Return value from 'main'.
42 */
43static int res;
44
45static const struct GNUNET_CONFIGURATION_Handle *cfg;
46
47static struct GNUNET_PeerIdentity this_peer;
48
49/**
50 * Handle for task for timeout termination.
51 */
52static struct GNUNET_SCHEDULER_Task * end_badly_task;
53
54static struct GNUNET_PSYC_Master *mst;
55static struct GNUNET_PSYC_Slave *slv;
56
57static struct GNUNET_PSYC_Channel *mst_chn, *slv_chn;
58
59static struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key;
60static struct GNUNET_CRYPTO_EcdsaPrivateKey *slave_key;
61
62static struct GNUNET_CRYPTO_EddsaPublicKey channel_pub_key;
63static struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
64
65struct TransmitClosure
66{
67 struct GNUNET_PSYC_MasterTransmitHandle *mst_tmit;
68 struct GNUNET_PSYC_SlaveTransmitHandle *slv_tmit;
69 struct GNUNET_PSYC_Environment *env;
70 struct GNUNET_PSYC_Modifier *mod;
71 char *data[16];
72 const char *mod_value;
73 size_t mod_value_size;
74 uint8_t data_delay[16];
75 uint8_t data_count;
76 uint8_t paused;
77 uint8_t n;
78};
79
80static struct TransmitClosure *tmit;
81
82static uint8_t join_req_count, end_count;
83
84enum
85{
86 TEST_NONE = 0,
87 TEST_MASTER_START = 1,
88 TEST_SLAVE_JOIN_REJECT = 2,
89 TEST_SLAVE_JOIN_ACCEPT = 3,
90 TEST_SLAVE_ADD = 4,
91 TEST_SLAVE_REMOVE = 5,
92 TEST_SLAVE_TRANSMIT = 6,
93 TEST_MASTER_TRANSMIT = 7,
94 TEST_MASTER_HISTORY_REPLAY_LATEST = 8,
95 TEST_SLAVE_HISTORY_REPLAY_LATEST = 9,
96 TEST_MASTER_HISTORY_REPLAY = 10,
97 TEST_SLAVE_HISTORY_REPLAY = 11,
98 TEST_MASTER_STATE_GET = 12,
99 TEST_SLAVE_STATE_GET = 13,
100 TEST_MASTER_STATE_GET_PREFIX = 14,
101 TEST_SLAVE_STATE_GET_PREFIX = 15,
102} test;
103
104
105static void
106master_transmit ();
107
108static void
109master_history_replay_latest ();
110
111
112static void
113master_stopped (void *cls)
114{
115 if (NULL != tmit)
116 {
117 GNUNET_PSYC_env_destroy (tmit->env);
118 GNUNET_free (tmit);
119 tmit = NULL;
120 }
121 GNUNET_SCHEDULER_shutdown ();
122}
123
124
125static void
126slave_parted (void *cls)
127{
128 if (NULL != mst)
129 {
130 GNUNET_PSYC_master_stop (mst, GNUNET_NO, &master_stopped, NULL);
131 mst = NULL;
132 }
133 else
134 master_stopped (NULL);
135}
136
137
138/**
139 * Clean up all resources used.
140 */
141static void
142cleanup ()
143{
144 if (NULL != slv)
145 {
146 GNUNET_PSYC_slave_part (slv, GNUNET_NO, &slave_parted, NULL);
147 slv = NULL;
148 }
149 else
150 slave_parted (NULL);
151}
152
153
154/**
155 * Terminate the test case (failure).
156 *
157 * @param cls NULL
158 */
159static void
160end_badly (void *cls)
161{
162 res = 1;
163 cleanup ();
164 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Test FAILED.\n");
165}
166
167
168/**
169 * Terminate the test case (success).
170 *
171 * @param cls NULL
172 */
173static void
174end_normally (void *cls)
175{
176 res = 0;
177 cleanup ();
178 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test PASSED.\n");
179}
180
181
182/**
183 * Finish the test case (successfully).
184 */
185static void
186end ()
187{
188 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Ending tests.\n");
189
190 if (end_badly_task != NULL)
191 {
192 GNUNET_SCHEDULER_cancel (end_badly_task);
193 end_badly_task = NULL;
194 }
195 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
196 &end_normally, NULL);
197}
198
199
200static void
201master_message_cb (void *cls, const struct GNUNET_PSYC_MessageHeader *msg)
202{
203 GNUNET_assert (NULL != msg);
204 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
205 "Test #%d: Master got PSYC message fragment of size %u "
206 "belonging to message ID %" PRIu64 " with flags %x\n",
207 test, ntohs (msg->header.size),
208 GNUNET_ntohll (msg->message_id), ntohl (msg->flags));
209 // FIXME
210}
211
212
213static void
214master_message_part_cb (void *cls, const struct GNUNET_PSYC_MessageHeader *msg,
215 const struct GNUNET_MessageHeader *pmsg)
216{
217 GNUNET_assert (NULL != msg && NULL != pmsg);
218
219 uint64_t message_id = GNUNET_ntohll (msg->message_id);
220 uint32_t flags = ntohl (msg->flags);
221
222 uint16_t type = ntohs (pmsg->type);
223 uint16_t size = ntohs (pmsg->size);
224
225 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
226 "Test #%d: Master got message part of type %u and size %u "
227 "belonging to message ID %" PRIu64 " with flags %x\n",
228 test, type, size, message_id, flags);
229
230 switch (test)
231 {
232 case TEST_SLAVE_TRANSMIT:
233 if (GNUNET_PSYC_MESSAGE_REQUEST != flags)
234 {
235 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
236 "Test #%d: Unexpected request flags: %x" PRIu32 "\n",
237 test, flags);
238 GNUNET_assert (0);
239 return;
240 }
241 // FIXME: check rest of message
242
243 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END == type)
244 master_transmit ();
245 break;
246
247 case TEST_MASTER_TRANSMIT:
248 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END == type && 2 == ++end_count)
249 master_history_replay_latest ();
250 break;
251
252 case TEST_MASTER_HISTORY_REPLAY:
253 case TEST_MASTER_HISTORY_REPLAY_LATEST:
254 if (GNUNET_PSYC_MESSAGE_HISTORIC != flags)
255 {
256 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
257 "Test #%d: Unexpected flags for historic message: %x" PRIu32 "\n",
258 test, flags);
259 GNUNET_assert (0);
260 return;
261 }
262 break;
263
264 default:
265 GNUNET_assert (0);
266 }
267}
268
269
270static void
271slave_message_cb (void *cls, const struct GNUNET_PSYC_MessageHeader *msg)
272{
273 GNUNET_assert (NULL != msg);
274 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
275 "Test #%d: Slave got PSYC message fragment of size %u "
276 "belonging to message ID %" PRIu64 " with flags %x\n",
277 test, ntohs (msg->header.size),
278 GNUNET_ntohll (msg->message_id), ntohl (msg->flags));
279 // FIXME
280}
281
282
283static void
284slave_message_part_cb (void *cls,
285 const struct GNUNET_PSYC_MessageHeader *msg,
286 const struct GNUNET_MessageHeader *pmsg)
287{
288 GNUNET_assert (NULL != msg && NULL != pmsg);
289
290 uint64_t message_id = GNUNET_ntohll (msg->message_id);
291 uint32_t flags = ntohl (msg->flags);
292
293 uint16_t type = ntohs (pmsg->type);
294 uint16_t size = ntohs (pmsg->size);
295
296 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
297 "Test #%d: Slave got message part of type %u and size %u "
298 "belonging to message ID %" PRIu64 " with flags %x\n",
299 test, type, size, message_id, flags);
300
301 switch (test)
302 {
303 case TEST_MASTER_TRANSMIT:
304 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END == type && 2 == ++end_count)
305 master_history_replay_latest ();
306 break;
307
308 case TEST_SLAVE_HISTORY_REPLAY:
309 case TEST_SLAVE_HISTORY_REPLAY_LATEST:
310 if (GNUNET_PSYC_MESSAGE_HISTORIC != flags)
311 {
312 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
313 "Test #%d: Unexpected flags for historic message: %x" PRIu32 "\n",
314 test, flags);
315 GNUNET_assert (0);
316 return;
317 }
318 break;
319
320 default:
321 GNUNET_assert (0);
322 }
323}
324
325
326static void
327state_get_var (void *cls, const struct GNUNET_MessageHeader *mod,
328 const char *name, const void *value,
329 uint32_t value_size, uint32_t full_value_size)
330{
331 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
332 "Got state var: %s\n%.*s\n",
333 name,
334 (int) value_size,
335 (const char *) value);
336}
337
338
339/*** Slave state_get_prefix() ***/
340
341static void
342slave_state_get_prefix_result (void *cls, int64_t result,
343 const void *err_msg, uint16_t err_msg_size)
344{
345 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
346 "Test #%d: slave_state_get_prefix:\t%" PRId64 " (%.*s)\n",
347 test, result,
348 (int) err_msg_size,
349 (const char *) err_msg);
350 // FIXME: GNUNET_assert (2 == result);
351 end ();
352}
353
354
355static void
356slave_state_get_prefix ()
357{
358 test = TEST_SLAVE_STATE_GET_PREFIX;
359 GNUNET_PSYC_channel_state_get_prefix (slv_chn, "_foo", state_get_var,
360 slave_state_get_prefix_result, NULL);
361}
362
363
364/*** Master state_get_prefix() ***/
365
366
367static void
368master_state_get_prefix_result (void *cls, int64_t result,
369 const void *err_msg, uint16_t err_msg_size)
370{
371 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
372 "Test #%d: master_state_get_prefix:\t%" PRId64 " (%s)\n",
373 test, result, (char *) err_msg);
374 // FIXME: GNUNET_assert (2 == result);
375 slave_state_get_prefix ();
376}
377
378
379static void
380master_state_get_prefix ()
381{
382 test = TEST_MASTER_STATE_GET_PREFIX;
383 GNUNET_PSYC_channel_state_get_prefix (mst_chn, "_foo", state_get_var,
384 master_state_get_prefix_result, NULL);
385}
386
387
388/*** Slave state_get() ***/
389
390
391static void
392slave_state_get_result (void *cls, int64_t result,
393 const void *err_msg, uint16_t err_msg_size)
394{
395 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
396 "Test #%d: slave_state_get:\t%" PRId64 " (%.*s)\n",
397 test, result, err_msg_size, (char *) err_msg);
398 // FIXME: GNUNET_assert (2 == result);
399 master_state_get_prefix ();
400}
401
402
403static void
404slave_state_get ()
405{
406 test = TEST_SLAVE_STATE_GET;
407 GNUNET_PSYC_channel_state_get (slv_chn, "_foo_bar_baz", state_get_var,
408 slave_state_get_result, NULL);
409}
410
411
412/*** Master state_get() ***/
413
414
415static void
416master_state_get_result (void *cls, int64_t result,
417 const void *err_msg, uint16_t err_msg_size)
418{
419 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
420 "Test #%d: master_state_get:\t%" PRId64 " (%.*s)\n",
421 test, result, err_msg_size, (char *) err_msg);
422 // FIXME: GNUNET_assert (1 == result);
423 slave_state_get ();
424}
425
426
427static void
428master_state_get ()
429{
430 test = TEST_MASTER_STATE_GET;
431 GNUNET_PSYC_channel_state_get (mst_chn, "_foo_bar_baz", state_get_var,
432 master_state_get_result, NULL);
433}
434
435
436/*** Slave history_replay() ***/
437
438static void
439slave_history_replay_result (void *cls, int64_t result,
440 const void *err_msg, uint16_t err_msg_size)
441{
442 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
443 "Test #%d: slave_history_replay:\t%" PRId64 " (%.*s)\n",
444 test, result,
445 (int) err_msg_size,
446 (const char *) err_msg);
447 GNUNET_assert (9 == result);
448
449 master_state_get ();
450}
451
452
453static void
454slave_history_replay ()
455{
456 test = TEST_SLAVE_HISTORY_REPLAY;
457 GNUNET_PSYC_channel_history_replay (slv_chn, 1, 1, "",
458 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
459 slave_message_cb,
460 slave_message_part_cb,
461 slave_history_replay_result, NULL);
462}
463
464
465/*** Master history_replay() ***/
466
467
468static void
469master_history_replay_result (void *cls, int64_t result,
470 const void *err_msg, uint16_t err_msg_size)
471{
472 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
473 "Test #%d: master_history_replay:\t%" PRId64 " (%.*s)\n",
474 test, result,
475 (int) err_msg_size,
476 (const char *) err_msg);
477 GNUNET_assert (9 == result);
478
479 slave_history_replay ();
480}
481
482
483static void
484master_history_replay ()
485{
486 test = TEST_MASTER_HISTORY_REPLAY;
487 GNUNET_PSYC_channel_history_replay (mst_chn, 1, 1, "",
488 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
489 master_message_cb,
490 master_message_part_cb,
491 master_history_replay_result, NULL);
492}
493
494
495/*** Slave history_replay_latest() ***/
496
497
498static void
499slave_history_replay_latest_result (void *cls, int64_t result,
500 const void *err_msg, uint16_t err_msg_size)
501{
502 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
503 "Test #%d: slave_history_replay_latest:\t%" PRId64 " (%.*s)\n",
504 test, result,
505 (int) err_msg_size,
506 (const char *) err_msg);
507 GNUNET_assert (9 == result);
508
509 master_history_replay ();
510}
511
512
513static void
514slave_history_replay_latest ()
515{
516 test = TEST_SLAVE_HISTORY_REPLAY_LATEST;
517 GNUNET_PSYC_channel_history_replay_latest (slv_chn, 1, "",
518 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
519 &slave_message_cb,
520 &slave_message_part_cb,
521 &slave_history_replay_latest_result,
522 NULL);
523}
524
525
526/*** Master history_replay_latest() ***/
527
528
529static void
530master_history_replay_latest_result (void *cls, int64_t result,
531 const void *err_msg, uint16_t err_msg_size)
532{
533 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
534 "Test #%d: master_history_replay_latest:\t%" PRId64 " (%.*s)\n",
535 test, result, err_msg_size, (char *) err_msg);
536 GNUNET_assert (9 == result);
537
538 slave_history_replay_latest ();
539}
540
541
542static void
543master_history_replay_latest ()
544{
545 test = TEST_MASTER_HISTORY_REPLAY_LATEST;
546 GNUNET_PSYC_channel_history_replay_latest (mst_chn, 1, "",
547 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
548 &master_message_cb,
549 &master_message_part_cb,
550 &master_history_replay_latest_result,
551 NULL);
552}
553
554
555static void
556transmit_resume (void *cls)
557{
558 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
559 "Test #%d: Transmission resumed.\n", test);
560 struct TransmitClosure *tmit = cls;
561 if (NULL != tmit->mst_tmit)
562 GNUNET_PSYC_master_transmit_resume (tmit->mst_tmit);
563 else
564 GNUNET_PSYC_slave_transmit_resume (tmit->slv_tmit);
565}
566
567
568static int
569tmit_notify_data (void *cls, uint16_t *data_size, void *data)
570{
571 struct TransmitClosure *tmit = cls;
572 if (0 == tmit->data_count)
573 {
574 *data_size = 0;
575 return GNUNET_YES;
576 }
577
578 uint16_t size = strlen (tmit->data[tmit->n]);
579 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
580 "Test #%d: Transmit notify data: %u bytes available, "
581 "processing fragment %u/%u (size %u).\n",
582 test, *data_size, tmit->n + 1, tmit->data_count, size);
583 if (*data_size < size)
584 {
585 *data_size = 0;
586 GNUNET_assert (0);
587 return GNUNET_SYSERR;
588 }
589
590 if (GNUNET_YES != tmit->paused && 0 < tmit->data_delay[tmit->n])
591 {
592 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
593 "Test #%d: Transmission paused.\n", test);
594 tmit->paused = GNUNET_YES;
595 GNUNET_SCHEDULER_add_delayed (
596 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
597 tmit->data_delay[tmit->n]),
598 &transmit_resume, tmit);
599 *data_size = 0;
600 return GNUNET_NO;
601 }
602 tmit->paused = GNUNET_NO;
603
604 *data_size = size;
605 GNUNET_memcpy (data, tmit->data[tmit->n], size);
606
607 return ++tmit->n < tmit->data_count ? GNUNET_NO : GNUNET_YES;
608}
609
610
611static int
612tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
613 uint32_t *full_value_size)
614{
615 struct TransmitClosure *tmit = cls;
616 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
617 "Test #%d: Transmit notify modifier: %u bytes available, "
618 "%u modifiers left to process.\n",
619 test, *data_size, (unsigned int) GNUNET_PSYC_env_get_count (tmit->env));
620
621 uint16_t name_size = 0;
622 size_t value_size = 0;
623 const char *value = NULL;
624
625 if (NULL != oper && NULL != tmit->mod)
626 { /* New modifier */
627 tmit->mod = tmit->mod->next;
628 if (NULL == tmit->mod)
629 { /* No more modifiers, continue with data */
630 *data_size = 0;
631 return GNUNET_YES;
632 }
633
634 GNUNET_assert (tmit->mod->value_size < UINT32_MAX);
635 *full_value_size = tmit->mod->value_size;
636 *oper = tmit->mod->oper;
637 name_size = strlen (tmit->mod->name);
638
639 if (name_size + 1 + tmit->mod->value_size <= *data_size)
640 {
641 *data_size = name_size + 1 + tmit->mod->value_size;
642 }
643 else
644 {
645 tmit->mod_value_size = tmit->mod->value_size;
646 value_size = *data_size - name_size - 1;
647 tmit->mod_value_size -= value_size;
648 tmit->mod_value = tmit->mod->value + value_size;
649 }
650
651 GNUNET_memcpy (data, tmit->mod->name, name_size);
652 ((char *)data)[name_size] = '\0';
653 GNUNET_memcpy ((char *)data + name_size + 1, tmit->mod->value, value_size);
654 }
655 else if (NULL != tmit->mod_value && 0 < tmit->mod_value_size)
656 { /* Modifier continuation */
657 value = tmit->mod_value;
658 if (tmit->mod_value_size <= *data_size)
659 {
660 value_size = tmit->mod_value_size;
661 tmit->mod_value = NULL;
662 }
663 else
664 {
665 value_size = *data_size;
666 tmit->mod_value += value_size;
667 }
668 tmit->mod_value_size -= value_size;
669
670 if (*data_size < value_size)
671 {
672 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
673 "value larger than buffer: %u < %zu\n",
674 *data_size, value_size);
675 *data_size = 0;
676 return GNUNET_NO;
677 }
678
679 *data_size = value_size;
680 GNUNET_memcpy (data, value, value_size);
681 }
682
683 return GNUNET_NO;
684}
685
686
687static void
688slave_join ();
689
690
691static void
692slave_transmit ()
693{
694 test = TEST_SLAVE_TRANSMIT;
695 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
696 "Test #%d: Slave sending request to master.\n", test);
697
698 tmit = GNUNET_new (struct TransmitClosure);
699 tmit->env = GNUNET_PSYC_env_create ();
700 GNUNET_PSYC_env_add (tmit->env, GNUNET_PSYC_OP_ASSIGN,
701 "_abc", "abc def", 7);
702 GNUNET_PSYC_env_add (tmit->env, GNUNET_PSYC_OP_ASSIGN,
703 "_abc_def", "abc def ghi", 11);
704 tmit->mod = GNUNET_PSYC_env_head (tmit->env);
705 tmit->n = 0;
706 tmit->data[0] = "slave test";
707 tmit->data_count = 1;
708 tmit->slv_tmit
709 = GNUNET_PSYC_slave_transmit (slv, "_request_test", &tmit_notify_mod,
710 &tmit_notify_data, tmit,
711 GNUNET_PSYC_SLAVE_TRANSMIT_NONE);
712}
713
714
715static void
716slave_remove_cb (void *cls, int64_t result,
717 const void *err_msg, uint16_t err_msg_size)
718{
719 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
720 "Test #%d: slave_remove:\t%" PRId64 " (%.*s)\n",
721 test, result, err_msg_size, (char *) err_msg);
722
723 slave_transmit ();
724}
725
726
727static void
728slave_remove ()
729{
730 test = TEST_SLAVE_REMOVE;
731 struct GNUNET_PSYC_Channel *chn = GNUNET_PSYC_master_get_channel (mst);
732 GNUNET_PSYC_channel_slave_remove (chn, &slave_pub_key, 2,
733 &slave_remove_cb, chn);
734}
735
736
737static void
738slave_add_cb (void *cls, int64_t result,
739 const void *err_msg, uint16_t err_msg_size)
740{
741 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
742 "Test #%d: slave_add:\t%" PRId64 " (%.*s)\n",
743 test, result, err_msg_size, (char *) err_msg);
744 slave_remove ();
745}
746
747
748static void
749slave_add ()
750{
751 test = TEST_SLAVE_ADD;
752 struct GNUNET_PSYC_Channel *chn = GNUNET_PSYC_master_get_channel (mst);
753 GNUNET_PSYC_channel_slave_add (chn, &slave_pub_key, 2, 2, &slave_add_cb, chn);
754}
755
756
757static void
758schedule_second_slave_join (void *cls)
759{
760 slave_join (TEST_SLAVE_JOIN_ACCEPT);
761}
762
763
764static void
765first_slave_parted (void *cls)
766{
767 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "First slave parted.\n");
768 GNUNET_SCHEDULER_add_now (&schedule_second_slave_join, NULL);
769}
770
771
772static void
773schedule_first_slave_part (void *cls)
774{
775 GNUNET_PSYC_slave_part (slv, GNUNET_NO, &first_slave_parted, NULL);
776}
777
778
779static void
780join_decision_cb (void *cls,
781 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn,
782 int is_admitted,
783 const struct GNUNET_PSYC_Message *join_msg)
784{
785 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
786 "Test #%d: Slave got join decision: %d\n", test, is_admitted);
787
788 switch (test)
789 {
790 case TEST_SLAVE_JOIN_REJECT:
791 GNUNET_assert (0 == is_admitted);
792 GNUNET_assert (1 == join_req_count);
793 GNUNET_SCHEDULER_add_now (&schedule_first_slave_part, NULL);
794 break;
795
796 case TEST_SLAVE_JOIN_ACCEPT:
797 GNUNET_assert (1 == is_admitted);
798 GNUNET_assert (2 == join_req_count);
799 slave_add ();
800 break;
801
802 default:
803 GNUNET_break (0);
804 }
805}
806
807
808static void
809join_request_cb (void *cls,
810 const struct GNUNET_PSYC_JoinRequestMessage *req,
811 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
812 const struct GNUNET_PSYC_Message *join_msg,
813 struct GNUNET_PSYC_JoinHandle *jh)
814{
815 struct GNUNET_HashCode slave_key_hash;
816 GNUNET_CRYPTO_hash (slave_key, sizeof (*slave_key), &slave_key_hash);
817 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
818 "Test #%d: Got join request #%u from %s.\n",
819 test, join_req_count, GNUNET_h2s (&slave_key_hash));
820
821 /* Reject first request */
822 int is_admitted = (0 < join_req_count++) ? GNUNET_YES : GNUNET_NO;
823 GNUNET_PSYC_join_decision (jh, is_admitted, 0, NULL, NULL);
824}
825
826
827static void
828slave_connect_cb (void *cls, int result, uint64_t max_message_id)
829{
830 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
831 "Test #%d: Slave connected: %d, max_message_id: %" PRIu64 "\n",
832 test, result, max_message_id);
833 GNUNET_assert (TEST_SLAVE_JOIN_REJECT == test || TEST_SLAVE_JOIN_ACCEPT == test);
834 GNUNET_assert (GNUNET_OK == result || GNUNET_NO == result);
835}
836
837
838static void
839slave_join (int t)
840{
841 test = t;
842 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
843 "Test #%d: Joining slave.\n", t);
844
845 struct GNUNET_PeerIdentity origin = this_peer;
846 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
847 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_ASSIGN,
848 "_foo", "bar baz", 7);
849 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_ASSIGN,
850 "_foo_bar", "foo bar baz", 11);
851 struct GNUNET_PSYC_Message *
852 join_msg = GNUNET_PSYC_message_create ("_request_join", env, "some data", 9);
853
854 slv = GNUNET_PSYC_slave_join (cfg,
855 &channel_pub_key,
856 slave_key,
857 GNUNET_PSYC_SLAVE_JOIN_NONE,
858 &origin,
859 0,
860 NULL,
861 &slave_message_cb,
862 &slave_message_part_cb,
863 &slave_connect_cb,
864 &join_decision_cb,
865 NULL,
866 join_msg);
867 GNUNET_free (join_msg);
868 slv_chn = GNUNET_PSYC_slave_get_channel (slv);
869 GNUNET_PSYC_env_destroy (env);
870}
871
872
873static void
874master_transmit ()
875{
876 test = TEST_MASTER_TRANSMIT;
877 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
878 "Test #%d: Master sending message to all.\n", test);
879 end_count = 0;
880
881 uint32_t i, j;
882
883 char *name_max = "_test_max";
884 uint8_t name_max_size = sizeof ("_test_max");
885 char *val_max = GNUNET_malloc (GNUNET_PSYC_MODIFIER_MAX_PAYLOAD);
886 for (i = 0; i < GNUNET_PSYC_MODIFIER_MAX_PAYLOAD; i++)
887 val_max[i] = (0 == i % 10000) ? '0' + i / 10000 : '.';
888
889 char *name_cont = "_test_cont";
890 uint8_t name_cont_size = sizeof ("_test_cont");
891 char *val_cont = GNUNET_malloc (GNUNET_PSYC_MODIFIER_MAX_PAYLOAD
892 + GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD);
893 for (i = 0; i < GNUNET_PSYC_MODIFIER_MAX_PAYLOAD - name_cont_size; i++)
894 val_cont[i] = (0 == i % 10000) ? '0' + i / 10000 : ':';
895 for (j = 0; j < GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD; j++, i++)
896 val_cont[i] = (0 == j % 10000) ? '0' + j / 10000 : '!';
897
898 tmit = GNUNET_new (struct TransmitClosure);
899 tmit->env = GNUNET_PSYC_env_create ();
900 GNUNET_PSYC_env_add (tmit->env, GNUNET_PSYC_OP_ASSIGN,
901 "_foo", "bar baz", 7);
902 GNUNET_PSYC_env_add (tmit->env, GNUNET_PSYC_OP_ASSIGN,
903 name_max, val_max,
904 GNUNET_PSYC_MODIFIER_MAX_PAYLOAD
905 - name_max_size);
906 GNUNET_PSYC_env_add (tmit->env, GNUNET_PSYC_OP_ASSIGN,
907 "_foo_bar", "foo bar baz", 11);
908 GNUNET_PSYC_env_add (tmit->env, GNUNET_PSYC_OP_ASSIGN,
909 name_cont, val_cont,
910 GNUNET_PSYC_MODIFIER_MAX_PAYLOAD - name_cont_size
911 + GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD);
912 tmit->mod = GNUNET_PSYC_env_head (tmit->env);
913 tmit->data[0] = "foo";
914 tmit->data[1] = GNUNET_malloc (GNUNET_PSYC_DATA_MAX_PAYLOAD + 1);
915 for (i = 0; i < GNUNET_PSYC_DATA_MAX_PAYLOAD; i++)
916 tmit->data[1][i] = (0 == i % 10000) ? '0' + i / 10000 : '_';
917 tmit->data[2] = "foo bar";
918 tmit->data[3] = "foo bar baz";
919 tmit->data_delay[1] = 3;
920 tmit->data_count = 4;
921 tmit->mst_tmit
922 = GNUNET_PSYC_master_transmit (mst, "_notice_test", &tmit_notify_mod,
923 &tmit_notify_data, tmit,
924 GNUNET_PSYC_MASTER_TRANSMIT_INC_GROUP_GEN);
925}
926
927
928static void
929master_start_cb (void *cls, int result, uint64_t max_message_id)
930{
931 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
932 "Test #%d: Master started: %d, max_message_id: %" PRIu64 "\n",
933 test, result, max_message_id);
934 GNUNET_assert (TEST_MASTER_START == test);
935 GNUNET_assert (GNUNET_OK == result || GNUNET_NO == result);
936 slave_join (TEST_SLAVE_JOIN_REJECT);
937}
938
939
940static void
941master_start ()
942{
943 test = TEST_MASTER_START;
944 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
945 "Test #%d: Starting master.\n", test);
946 mst = GNUNET_PSYC_master_start (cfg, channel_key, GNUNET_PSYC_CHANNEL_PRIVATE,
947 &master_start_cb, &join_request_cb,
948 &master_message_cb, &master_message_part_cb,
949 NULL);
950 mst_chn = GNUNET_PSYC_master_get_channel (mst);
951}
952
953
954static void
955schedule_master_start (void *cls)
956{
957 master_start ();
958}
959
960
961/**
962 * Main function of the test, run from scheduler.
963 *
964 * @param cls NULL
965 * @param cfg configuration we use (also to connect to PSYC service)
966 * @param peer handle to access more of the peer (not used)
967 */
968static void
969#if DEBUG_TEST_PSYC
970run (void *cls, char *const *args, const char *cfgfile,
971 const struct GNUNET_CONFIGURATION_Handle *c)
972#else
973run (void *cls,
974 const struct GNUNET_CONFIGURATION_Handle *c,
975 struct GNUNET_TESTING_Peer *peer)
976#endif
977{
978 cfg = c;
979 end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
980
981 GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer);
982
983 channel_key = GNUNET_CRYPTO_eddsa_key_create ();
984 slave_key = GNUNET_CRYPTO_ecdsa_key_create ();
985
986 GNUNET_CRYPTO_eddsa_key_get_public (channel_key, &channel_pub_key);
987 GNUNET_CRYPTO_ecdsa_key_get_public (slave_key, &slave_pub_key);
988
989#if DEBUG_TEST_PSYC
990 master_start ();
991#else
992 /* Allow some time for the services to initialize. */
993 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
994 &schedule_master_start, NULL);
995#endif
996}
997
998
999int
1000main (int argc, char *argv[])
1001{
1002 res = 1;
1003#if DEBUG_TEST_PSYC
1004 const struct GNUNET_GETOPT_CommandLineOption opts[] = {
1005 GNUNET_GETOPT_OPTION_END
1006 };
1007 if (GNUNET_OK != GNUNET_PROGRAM_run (argc, argv, "test-psyc",
1008 "test-psyc [options]",
1009 opts, &run, NULL))
1010 return 1;
1011#else
1012 if (0 != GNUNET_TESTING_peer_run ("test-psyc", "test_psyc.conf", &run, NULL))
1013 return 1;
1014#endif
1015 return res;
1016}
1017
1018/* end of test_psyc.c */
diff --git a/src/psyc/test_psyc.conf b/src/psyc/test_psyc.conf
deleted file mode 100644
index 6ff031f0d..000000000
--- a/src/psyc/test_psyc.conf
+++ /dev/null
@@ -1,28 +0,0 @@
1@INLINE@ ../../contrib/conf/gnunet/no_forcestart.conf
2
3[testbed]
4HOSTNAME = localhost
5OVERLAY_TOPOLOGY = STAR
6
7[peerinfo]
8# Option to disable all disk IO; only useful for testbed runs
9# (large-scale experiments); disables persistence of HELLOs!
10NO_IO = YES
11
12[cadet]
13ID_ANNOUNCE_TIME = 5 s
14
15[nat]
16ENABLE_UPNP = NO
17
18[psyc]
19IMMEDIATE_START = YES
20START_ON_DEMAND = YES
21
22[multicast]
23IMMEDIATE_START = YES
24START_ON_DEMAND = YES
25
26[psycstore]
27IMMEDIATE_START = YES
28START_ON_DEMAND = YES
diff --git a/src/psyc/test_psyc2.c b/src/psyc/test_psyc2.c
deleted file mode 100644
index c6e7237ab..000000000
--- a/src/psyc/test_psyc2.c
+++ /dev/null
@@ -1,284 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psyc/test_psyc2.c
23 * @brief Testbed test for the PSYC API.
24 * @author xrs
25 */
26
27#include "platform.h"
28#include "gnunet_crypto_lib.h"
29#include "gnunet_common.h"
30#include "gnunet_util_lib.h"
31#include "gnunet_testbed_service.h"
32#include "gnunet_psyc_util_lib.h"
33#include "gnunet_psyc_service.h"
34
35#define PEERS_REQUESTED 2
36
37static int result;
38
39static struct GNUNET_SCHEDULER_Task *timeout_tid;
40static struct pctx **pctx;
41
42static struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key;
43static struct GNUNET_CRYPTO_EddsaPublicKey channel_pub_key;
44
45static struct GNUNET_CRYPTO_EcdsaPrivateKey *slave_key;
46static struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
47
48/**
49 * Task To perform tests
50 */
51static struct GNUNET_SCHEDULER_Task *test_task;
52
53/**
54 * Peer id couter
55 */
56static unsigned int pids;
57
58struct pctx
59{
60 int idx;
61 struct GNUNET_TESTBED_Peer *peer;
62 const struct GNUNET_PeerIdentity *id;
63
64 struct GNUNET_TESTBED_Operation *op;
65
66 /**
67 * psyc service handle
68 */
69 void *psyc;
70 struct GNUNET_PSYC_Master *mst;
71 struct GNUNET_PSYC_Slave *slv;
72
73 /**
74 * result for test on peer
75 */
76 int test_ok;
77};
78
79static void
80shutdown_task (void *cls)
81{
82 if (NULL != pctx)
83 {
84 if (NULL != pctx[0]->mst)
85 GNUNET_PSYC_master_stop (pctx[0]->mst, GNUNET_NO, NULL, NULL);
86
87 for (int i=0; i < PEERS_REQUESTED; i++)
88 {
89 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Operation done.\n");
90 GNUNET_TESTBED_operation_done (pctx[i]->op);
91 GNUNET_free_non_null (pctx[i]);
92 }
93 GNUNET_free (pctx);
94 }
95
96 if (NULL != timeout_tid)
97 GNUNET_SCHEDULER_cancel (timeout_tid);
98}
99
100static void
101timeout_task (void *cls)
102{
103 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Timeout!\n");
104 result = GNUNET_SYSERR;
105 GNUNET_SCHEDULER_shutdown ();
106}
107
108static void
109start_test (void *cls)
110{
111}
112
113static void
114pinfo_cb (void *cls,
115 struct GNUNET_TESTBED_Operation *operation,
116 const struct GNUNET_TESTBED_PeerInformation *pinfo,
117 const char *emsg)
118{
119 struct pctx *pc = (struct pctx*) cls;
120
121 pc->id = pinfo->result.id;
122
123 pids++;
124 if (pids < (PEERS_REQUESTED - 1))
125 return;
126 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got all IDs, starting test\n");
127 test_task = GNUNET_SCHEDULER_add_now (&start_test, NULL);
128}
129
130static void
131mst_start_cb ()
132{
133}
134
135static void
136join_request_cb ()
137{
138}
139
140static void
141mst_message_cb ()
142{
143}
144
145static void
146mst_message_part_cb ()
147{
148}
149
150static void
151slv_message_cb ()
152{
153}
154
155static void
156slv_message_part_cb ()
157{
158}
159
160static void
161slv_connect_cb ()
162{
163}
164
165static void
166join_decision_cb ()
167{
168}
169
170static void *
171psyc_ca (void *cls,
172 const struct GNUNET_CONFIGURATION_Handle *cfg)
173{
174 struct GNUNET_PSYC_Message *join_msg = NULL;
175 struct pctx *pc = (struct pctx *) cls;
176
177 if (0 == pc->idx)
178 {
179 pc->mst = GNUNET_PSYC_master_start (cfg, channel_key,
180 GNUNET_PSYC_CHANNEL_PRIVATE,
181 &mst_start_cb, &join_request_cb,
182 &mst_message_cb, &mst_message_part_cb,
183 NULL);
184 return pc->mst;
185 }
186
187 pc->slv = GNUNET_PSYC_slave_join (cfg, &channel_pub_key, slave_key,
188 GNUNET_PSYC_SLAVE_JOIN_NONE,
189 &pid, 0, NULL, &slv_message_cb,
190 &slv_message_part_cb,
191 &slv_connect_cb, &join_decision_cb,
192 NULL, join_msg);
193 return pc->slv;
194}
195
196static void
197psyc_da (void *cls,
198 void *op_result)
199{
200 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Disconnected from service.\n");
201}
202
203static void
204service_connect (void *cls,
205 struct GNUNET_TESTBED_Operation *op,
206 void *ca_result,
207 const char *emsg)
208{
209 struct pctx *pc = (struct pctx *) cls;
210
211 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
212 "Connected to service\n");
213
214 GNUNET_assert (NULL != ca_result);
215
216 // FIXME: we need a simple service handle to connect to the service, then
217 // get peer information and AFTER that make PSYC ops. Compare to CADET.
218 pc->psyc = ca_result;
219
220 GNUNET_TESTBED_peer_get_information (pc->peer,
221 GNUNET_TESTBED_PIT_IDENTITY,
222 pinfo_cb, pc);
223}
224
225static void
226testbed_master (void *cls,
227 struct GNUNET_TESTBED_RunHandle *h,
228 unsigned int num_peers,
229 struct GNUNET_TESTBED_Peer **p,
230 unsigned int links_succeeded,
231 unsigned int links_failed)
232{
233 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Connected to testbed_master()\n");
234
235 // Create ctx for peers
236 pctx = GNUNET_new_array (PEERS_REQUESTED, struct pctx*);
237 for (int i = 0; i<PEERS_REQUESTED; i++)
238 {
239 pctx[i] = GNUNET_new (struct pctx);
240 pctx[i]->idx = i;
241 pctx[i]->peer = p[i];
242 pctx[i]->id = NULL;
243 pctx[i]->mst = NULL;
244 pctx[i]->op = NULL;
245 pctx[i]->test_ok = GNUNET_NO;
246 }
247
248 channel_key = GNUNET_CRYPTO_eddsa_key_create ();
249 slave_key = GNUNET_CRYPTO_ecdsa_key_create ();
250
251 GNUNET_CRYPTO_eddsa_key_get_public (channel_key, &channel_pub_key);
252 GNUNET_CRYPTO_ecdsa_key_get_public (slave_key, &slave_pub_key);
253
254 pctx[0]->op =
255 GNUNET_TESTBED_service_connect (NULL, p[0], "psyc", service_connect,
256 pctx[0], psyc_ca, psyc_da, pctx[0]);
257
258 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
259
260 timeout_tid =
261 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 5),
262 &timeout_task, NULL);
263}
264
265int
266main (int argc, char *argv[])
267{
268 int ret;
269
270 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "test\n");
271
272 result = GNUNET_SYSERR;
273
274 ret = GNUNET_TESTBED_test_run ("test-psyc2", "test_psyc.conf",
275 PEERS_REQUESTED, 0LL, NULL, NULL,
276 testbed_master, NULL);
277
278 if ((GNUNET_OK != ret) || (GNUNET_OK != result))
279 return 1;
280
281 return 0;
282}
283
284/* end of test-psyc2.c */
diff --git a/src/psyc/test_psyc_api_join.c b/src/psyc/test_psyc_api_join.c
deleted file mode 100644
index 419fa11c1..000000000
--- a/src/psyc/test_psyc_api_join.c
+++ /dev/null
@@ -1,282 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psyc/test_psyc_api_join.c
23 * @brief Testbed test for the PSYC API.
24 * @author xrs
25 */
26
27/**
28 * Lessons Learned:
29 * - define topology in config
30 * - psyc slave join needs part to end (same with master)
31 * - GNUNET_SCHEDULER_add_delayed return value will outdate at call time
32 * - main can not contain GNUNET_log()
33 */
34
35#include "platform.h"
36#include "gnunet_crypto_lib.h"
37#include "gnunet_common.h"
38#include "gnunet_util_lib.h"
39#include "gnunet_testbed_service.h"
40#include "gnunet_psyc_util_lib.h"
41#include "gnunet_psyc_service.h"
42#include "psyc_test_lib.h"
43
44static struct pctx PEERS[2];
45
46static int pids;
47
48
49static void
50shutdown_task (void *cls)
51{
52 if (NULL != timeout_task_id) {
53 GNUNET_SCHEDULER_cancel (timeout_task_id);
54 timeout_task_id = NULL;
55 }
56
57 for (int i=0;i<2;i++) {
58 GNUNET_free (PEERS[i].channel_pub_key);
59
60 if (NULL != PEERS[i].psyc)
61 {
62 if (0 == i)
63 GNUNET_PSYC_master_stop (PEERS[i].psyc, GNUNET_NO, NULL, NULL);
64 else
65 GNUNET_PSYC_slave_part (PEERS[i].psyc, GNUNET_NO, NULL, NULL);
66 }
67 }
68
69 for (int i=0;i<MAX_TESTBED_OPS;i++)
70 if (NULL != op[i])
71 GNUNET_TESTBED_operation_done (op[i]);
72
73 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Shut down!\n");
74}
75
76static void
77timeout_task (void *cls)
78{
79 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Timeout!\n");
80
81 timeout_task_id = NULL;
82
83 result = GNUNET_SYSERR;
84 GNUNET_SCHEDULER_shutdown ();
85}
86
87static void
88join_decision_cb (void *cls,
89 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn,
90 int is_admitted,
91 const struct GNUNET_PSYC_Message *join_msg)
92{
93 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
94 "slave: got join decision: %s\n",
95 (GNUNET_YES == is_admitted) ? "admitted":"rejected");
96
97 result = (GNUNET_YES == is_admitted) ? GNUNET_OK : GNUNET_SYSERR;
98
99 GNUNET_SCHEDULER_shutdown ();
100}
101
102static void
103join_request_cb (void *cls,
104 const struct GNUNET_PSYC_JoinRequestMessage *req,
105 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
106 const struct GNUNET_PSYC_Message *join_msg,
107 struct GNUNET_PSYC_JoinHandle *jh)
108{
109 struct GNUNET_HashCode slave_key_hash;
110
111 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "master: got join request.\n");
112
113 GNUNET_CRYPTO_hash (slave_key, sizeof (*slave_key), &slave_key_hash);
114
115 GNUNET_PSYC_join_decision (jh, GNUNET_YES, 0, NULL, NULL);
116}
117
118static void
119psyc_da ()
120{
121 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "disconnect form PSYC service\n");
122}
123
124static void *
125psyc_ca (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg)
126{
127 struct pctx *peer = (struct pctx*) cls;
128
129 // Case: master role
130 if (0 == peer->idx) {
131 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Connecting to PSYC as master ...\n");
132
133 peer->psyc = (struct GNUNET_PSYC_Master *)
134 GNUNET_PSYC_master_start (cfg,
135 peer->channel_key,
136 GNUNET_PSYC_CHANNEL_PRIVATE,
137 NULL,
138 join_request_cb,
139 NULL,
140 NULL,
141 cls);
142 return peer->psyc;
143 }
144
145 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Connecting to PSYC as slave ...\n");
146
147 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
148 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_ASSIGN, "_foo", "bar baz", 7);
149 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_ASSIGN, "_foo_bar", "foo bar baz", 11);
150
151 struct GNUNET_PSYC_Message *
152 join_msg = GNUNET_PSYC_message_create ("_request_join", env, "some data", 40);
153
154 peer->psyc = (struct GNUNET_PSYC_Slave *)
155 GNUNET_PSYC_slave_join (cfg,
156 peer->channel_pub_key,
157 peer->id_key,
158 GNUNET_PSYC_SLAVE_JOIN_NONE,
159 peer->peer_id_master,
160 0,
161 NULL,
162 NULL,
163 NULL,
164 NULL,
165 join_decision_cb,
166 cls,
167 join_msg);
168
169 GNUNET_free (join_msg);
170 peer->channel = GNUNET_PSYC_slave_get_channel (peer->psyc);
171 GNUNET_PSYC_env_destroy (env);
172
173 return peer->psyc;
174}
175
176static void
177service_connect (void *cls,
178 struct GNUNET_TESTBED_Operation *op,
179 void *ca_result,
180 const char *emsg)
181{
182 GNUNET_assert (NULL != ca_result);
183
184 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Connected to the service\n");
185}
186
187static void
188connect_to_services (void *cls)
189{
190 for (int i = 0; i < 2; i++)
191 {
192 PEERS[i].peer_id_master = PEERS[0].peer_id;
193
194 op[op_cnt++] =
195 GNUNET_TESTBED_service_connect (NULL, PEERS[i].testbed_peer, "psyc",
196 &service_connect, &PEERS[i], &psyc_ca,
197 &psyc_da, &PEERS[i]);
198 }
199}
200
201static void
202pinfo_cb (void *cls,
203 struct GNUNET_TESTBED_Operation *operation,
204 const struct GNUNET_TESTBED_PeerInformation *pinfo,
205 const char *emsg)
206{
207 struct pctx *peer = (struct pctx*) cls;
208
209 peer->peer_id = pinfo->result.id;
210
211 pids++;
212 if (pids < 2)
213 return;
214 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Got all IDs, starting test\n");
215
216 GNUNET_SCHEDULER_add_now (&connect_to_services, NULL);
217}
218
219static void
220testbed_master (void *cls,
221 struct GNUNET_TESTBED_RunHandle *h,
222 unsigned int num_peers,
223 struct GNUNET_TESTBED_Peer **p,
224 unsigned int links_succeeded,
225 unsigned int links_failed)
226{
227 struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key = NULL;
228
229 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Connected to testbed_master\n");
230
231 // Set up shutdown logic
232 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
233 timeout_task_id =
234 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 15),
235 &timeout_task, NULL);
236 GNUNET_assert (NULL != timeout_task_id);
237
238 // Set up channel key
239 channel_key = GNUNET_CRYPTO_eddsa_key_create ();
240 GNUNET_assert (NULL != channel_key);
241
242 // Set up information contexts for peers
243 for (int i=0 ; i < 2 ; i++)
244 {
245 PEERS[i].idx = i;
246 PEERS[i].testbed_peer = p[i];
247
248 // Create "egos"
249 PEERS[i].id_key = GNUNET_CRYPTO_ecdsa_key_create ();
250
251 // Set up channel keys shared by master and slave
252 PEERS[i].channel_key = channel_key;
253
254 PEERS[i].channel_pub_key =
255 GNUNET_malloc (sizeof (struct GNUNET_CRYPTO_EddsaPublicKey));
256 // Get public key
257 GNUNET_CRYPTO_eddsa_key_get_public (PEERS[i].channel_key,
258 PEERS[i].channel_pub_key);
259 // Get peerinfo
260 op[op_cnt++] =
261 GNUNET_TESTBED_peer_get_information (p[i],
262 GNUNET_TESTBED_PIT_IDENTITY,
263 pinfo_cb, &PEERS[i]);
264 }
265}
266
267int
268main (int argc, char *argv[])
269{
270 int ret;
271
272 ret = GNUNET_TESTBED_test_run ("test_psyc_api_join", "test_psyc.conf",
273 2, 0LL, NULL, NULL,
274 &testbed_master, NULL);
275
276 if ( (GNUNET_OK != ret) || (GNUNET_OK != result) )
277 return 1;
278
279 return 0;
280}
281
282/* end of test_psyc_api_join.c */
diff --git a/src/psycstore/.gitignore b/src/psycstore/.gitignore
deleted file mode 100644
index 5ec783202..000000000
--- a/src/psycstore/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
1gnunet-service-psycstore
2test_plugin_psycstore_mysql
3test_plugin_psycstore_sqlite
4test_plugin_psycstore_postgres
5test_psycstore
diff --git a/src/psycstore/Makefile.am b/src/psycstore/Makefile.am
deleted file mode 100644
index 557bb42b5..000000000
--- a/src/psycstore/Makefile.am
+++ /dev/null
@@ -1,155 +0,0 @@
1# This Makefile.am is in the public domain
2AM_CPPFLAGS = -I$(top_srcdir)/src/include
3
4plugindir = $(libdir)/gnunet
5
6pkgcfgdir= $(pkgdatadir)/config.d/
7
8libexecdir= $(pkglibdir)/libexec/
9
10pkgcfg_DATA = \
11 psycstore.conf
12
13
14if MINGW
15 WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
16endif
17
18if USE_COVERAGE
19 AM_CFLAGS = --coverage -O0
20 XLIB = -lgcov
21endif
22
23if HAVE_MYSQL
24MYSQL_PLUGIN = libgnunet_plugin_psycstore_mysql.la
25if HAVE_TESTING
26MYSQL_TESTS = test_plugin_psycstore_mysql
27endif
28endif
29
30if HAVE_POSTGRESQL
31POSTGRES_PLUGIN = libgnunet_plugin_psycstore_postgres.la
32if HAVE_TESTING
33POSTGRES_TESTS = test_plugin_psycstore_postgres
34endif
35endif
36
37if HAVE_SQLITE
38SQLITE_PLUGIN = libgnunet_plugin_psycstore_sqlite.la
39if HAVE_TESTING
40SQLITE_TESTS = test_plugin_psycstore_sqlite
41endif
42endif
43
44lib_LTLIBRARIES = libgnunetpsycstore.la
45
46libgnunetpsycstore_la_SOURCES = \
47 psycstore_api.c \
48 psycstore.h
49libgnunetpsycstore_la_LIBADD = \
50 $(top_builddir)/src/util/libgnunetutil.la \
51 $(GN_LIBINTL) $(XLIB)
52libgnunetpsycstore_la_LDFLAGS = \
53 $(GN_LIB_LDFLAGS) $(WINFLAGS) \
54 -version-info 0:0:0
55
56bin_PROGRAMS =
57
58libexec_PROGRAMS = \
59 gnunet-service-psycstore
60
61gnunet_service_psycstore_SOURCES = \
62 gnunet-service-psycstore.c
63gnunet_service_psycstore_LDADD = \
64 $(top_builddir)/src/statistics/libgnunetstatistics.la \
65 $(top_builddir)/src/util/libgnunetutil.la \
66 $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
67 $(GN_LIBINTL)
68
69plugin_LTLIBRARIES = \
70 $(SQLITE_PLUGIN) \
71 $(MYSQL_PLUGIN) \
72 $(POSTGRES_PLUGIN)
73
74
75libgnunet_plugin_psycstore_mysql_la_SOURCES = \
76 plugin_psycstore_mysql.c
77libgnunet_plugin_psycstore_mysql_la_LIBADD = \
78 libgnunetpsycstore.la \
79 $(top_builddir)/src/my/libgnunetmy.la \
80 $(top_builddir)/src/mysql/libgnunetmysql.la \
81 $(top_builddir)/src/statistics/libgnunetstatistics.la \
82 $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) \
83 $(LTLIBINTL)
84libgnunet_plugin_psycstore_mysql_la_LDFLAGS = \
85 $(GN_PLUGIN_LDFLAGS)
86
87libgnunet_plugin_psycstore_postgres_la_SOURCES = \
88 plugin_psycstore_postgres.c
89libgnunet_plugin_psycstore_postgres_la_LIBADD = \
90 libgnunetpsycstore.la \
91 $(top_builddir)/src/pq/libgnunetpq.la \
92 $(top_builddir)/src/statistics/libgnunetstatistics.la \
93 $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lpq \
94 $(LTLIBINTL)
95libgnunet_plugin_psycstore_postgres_la_LDFLAGS = \
96 $(GN_PLUGIN_LDFLAGS) $(POSTGRESQL_LDFLAGS)
97libgnunet_plugin_psycstore_postgres_la_CPPFLAGS = \
98 $(POSTGRESQL_CPPFLAGS) $(AM_CPPFLAGS)
99
100
101libgnunet_plugin_psycstore_sqlite_la_SOURCES = \
102 plugin_psycstore_sqlite.c
103libgnunet_plugin_psycstore_sqlite_la_LIBADD = \
104 libgnunetpsycstore.la \
105 $(top_builddir)/src/statistics/libgnunetstatistics.la \
106 $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 \
107 $(LTLIBINTL)
108libgnunet_plugin_psycstore_sqlite_la_LDFLAGS = \
109 $(GN_PLUGIN_LDFLAGS)
110
111
112if HAVE_SQLITE
113if HAVE_TESTING
114check_PROGRAMS = \
115 $(SQLITE_TESTS) \
116 $(MYSQL_TESTS) \
117 $(POSTGRES_TESTS) \
118 test_psycstore
119endif
120endif
121
122if ENABLE_TEST_RUN
123AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME;
124TESTS = $(check_PROGRAMS)
125endif
126
127test_psycstore_SOURCES = \
128 test_psycstore.c
129test_psycstore_LDADD = \
130 libgnunetpsycstore.la \
131 $(top_builddir)/src/testing/libgnunettesting.la \
132 $(top_builddir)/src/util/libgnunetutil.la
133
134EXTRA_DIST = \
135 test_psycstore.conf
136
137
138test_plugin_psycstore_sqlite_SOURCES = \
139 test_plugin_psycstore.c
140test_plugin_psycstore_sqlite_LDADD = \
141 $(top_builddir)/src/testing/libgnunettesting.la \
142 $(top_builddir)/src/util/libgnunetutil.la
143
144test_plugin_psycstore_mysql_SOURCES = \
145 test_plugin_psycstore.c
146test_plugin_psycstore_mysql_LDADD = \
147 $(top_builddir)/src/testing/libgnunettesting.la \
148 $(top_builddir)/src/util/libgnunetutil.la
149
150test_plugin_psycstore_postgres_SOURCES = \
151 test_plugin_psycstore.c
152test_plugin_psycstore_postgres_LDADD = \
153 $(top_builddir)/src/testing/libgnunettesting.la \
154 $(top_builddir)/src/util/libgnunetutil.la
155
diff --git a/src/psycstore/gnunet-service-psycstore.c b/src/psycstore/gnunet-service-psycstore.c
deleted file mode 100644
index 9aebd3e97..000000000
--- a/src/psycstore/gnunet-service-psycstore.c
+++ /dev/null
@@ -1,1049 +0,0 @@
1/**
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psycstore/gnunet-service-psycstore.c
23 * @brief PSYCstore service
24 * @author Gabor X Toth
25 * @author Christian Grothoff
26 */
27
28#include <inttypes.h>
29
30#include "platform.h"
31#include "gnunet_util_lib.h"
32#include "gnunet_constants.h"
33#include "gnunet_protocols.h"
34#include "gnunet_statistics_service.h"
35#include "gnunet_psyc_util_lib.h"
36#include "gnunet_psycstore_service.h"
37#include "gnunet_psycstore_plugin.h"
38#include "psycstore.h"
39
40
41/**
42 * Handle to our current configuration.
43 */
44static const struct GNUNET_CONFIGURATION_Handle *cfg;
45
46/**
47 * Service handle.
48 */
49static struct GNUNET_SERVICE_Handle *service;
50
51/**
52 * Handle to the statistics service.
53 */
54static struct GNUNET_STATISTICS_Handle *stats;
55
56/**
57 * Database handle
58 */
59static struct GNUNET_PSYCSTORE_PluginFunctions *db;
60
61/**
62 * Name of the database plugin
63 */
64static char *db_lib_name;
65
66
67/**
68 * Task run during shutdown.
69 *
70 * @param cls unused
71 */
72static void
73shutdown_task (void *cls)
74{
75 if (NULL != stats)
76 {
77 GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
78 stats = NULL;
79 }
80 GNUNET_break (NULL == GNUNET_PLUGIN_unload (db_lib_name, db));
81 GNUNET_free (db_lib_name);
82 db_lib_name = NULL;
83}
84
85
86/**
87 * Send a result code back to the client.
88 *
89 * @param client
90 * Client that should receive the result code.
91 * @param result_code
92 * Code to transmit.
93 * @param op_id
94 * Operation ID in network byte order.
95 * @param err_msg
96 * Error message to include (or NULL for none).
97 */
98static void
99send_result_code (struct GNUNET_SERVICE_Client *client,
100 uint64_t op_id,
101 int64_t result_code,
102 const char *err_msg)
103{
104 struct OperationResult *res;
105 size_t err_size = 0;
106
107 if (NULL != err_msg)
108 err_size = strnlen (err_msg,
109 GNUNET_MAX_MESSAGE_SIZE - sizeof (*res) - 1) + 1;
110 struct GNUNET_MQ_Envelope *
111 env = GNUNET_MQ_msg_extra (res, err_size,
112 GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE);
113 res->result_code = GNUNET_htonll (result_code - INT64_MIN);
114 res->op_id = op_id;
115 if (0 < err_size)
116 {
117 GNUNET_memcpy (&res[1], err_msg, err_size);
118 ((char *) &res[1])[err_size - 1] = '\0';
119 }
120
121 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
122 "Sending result to client: %" PRId64 " (%s)\n",
123 result_code, err_msg);
124 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env);
125}
126
127
128enum
129{
130 MEMBERSHIP_TEST_NOT_NEEDED = 0,
131 MEMBERSHIP_TEST_NEEDED = 1,
132 MEMBERSHIP_TEST_DONE = 2,
133} MessageMembershipTest;
134
135
136struct SendClosure
137{
138 struct GNUNET_SERVICE_Client *client;
139
140 /**
141 * Channel's public key.
142 */
143 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
144
145 /**
146 * Slave's public key.
147 */
148 struct GNUNET_CRYPTO_EcdsaPublicKey slave_key;
149
150 /**
151 * Operation ID.
152 */
153 uint64_t op_id;
154
155 /**
156 * Membership test result.
157 */
158 int membership_test_result;
159
160 /**
161 * Do membership test with @a slave_key before returning fragment?
162 * @see enum MessageMembershipTest
163 */
164 uint8_t membership_test;
165};
166
167
168static int
169send_fragment (void *cls, struct GNUNET_MULTICAST_MessageHeader *msg,
170 enum GNUNET_PSYCSTORE_MessageFlags flags)
171{
172 struct SendClosure *sc = cls;
173 struct FragmentResult *res;
174
175 if (MEMBERSHIP_TEST_NEEDED == sc->membership_test)
176 {
177 sc->membership_test = MEMBERSHIP_TEST_DONE;
178 sc->membership_test_result
179 = db->membership_test (db->cls, &sc->channel_key, &sc->slave_key,
180 GNUNET_ntohll (msg->message_id));
181 switch (sc->membership_test_result)
182 {
183 case GNUNET_YES:
184 break;
185
186 case GNUNET_NO:
187 case GNUNET_SYSERR:
188 return GNUNET_NO;
189 }
190 }
191
192 size_t msg_size = ntohs (msg->header.size);
193
194 struct GNUNET_MQ_Envelope *
195 env = GNUNET_MQ_msg_extra (res, msg_size,
196 GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_FRAGMENT);
197 res->op_id = sc->op_id;
198 res->psycstore_flags = htonl (flags);
199 GNUNET_memcpy (&res[1], msg, msg_size);
200 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
201 "Sending fragment %llu to client\n",
202 (unsigned long long) GNUNET_ntohll (msg->fragment_id));
203 GNUNET_free (msg);
204
205 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (sc->client), env);
206 return GNUNET_YES;
207}
208
209
210static int
211send_state_var (void *cls, const char *name,
212 const void *value, uint32_t value_size)
213{
214 struct SendClosure *sc = cls;
215 struct StateResult *res;
216 size_t name_size = strlen (name) + 1;
217
218 /** @todo FIXME: split up value into 64k chunks */
219
220 struct GNUNET_MQ_Envelope *
221 env = GNUNET_MQ_msg_extra (res, name_size + value_size,
222 GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_STATE);
223 res->op_id = sc->op_id;
224 res->name_size = htons (name_size);
225 GNUNET_memcpy (&res[1], name, name_size);
226 GNUNET_memcpy ((char *) &res[1] + name_size, value, value_size);
227 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
228 "Sending state variable %s to client\n", name);
229
230 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (sc->client), env);
231 return GNUNET_OK;
232}
233
234
235static void
236handle_client_membership_store (void *cls,
237 const struct MembershipStoreRequest *req)
238{
239 struct GNUNET_SERVICE_Client *client = cls;
240
241 int ret = db->membership_store (db->cls, &req->channel_key, &req->slave_key,
242 req->did_join,
243 GNUNET_ntohll (req->announced_at),
244 GNUNET_ntohll (req->effective_since),
245 GNUNET_ntohll (req->group_generation));
246
247 if (ret != GNUNET_OK)
248 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
249 _("Failed to store membership information!\n"));
250
251 send_result_code (client, req->op_id, ret, NULL);
252 GNUNET_SERVICE_client_continue (client);
253}
254
255
256static void
257handle_client_membership_test (void *cls,
258 const struct MembershipTestRequest *req)
259{
260 struct GNUNET_SERVICE_Client *client = cls;
261
262 int ret = db->membership_test (db->cls, &req->channel_key, &req->slave_key,
263 GNUNET_ntohll (req->message_id));
264 switch (ret)
265 {
266 case GNUNET_YES:
267 case GNUNET_NO:
268 break;
269 default:
270 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
271 _("Failed to test membership!\n"));
272 }
273
274 send_result_code (client, req->op_id, ret, NULL);
275 GNUNET_SERVICE_client_continue (client);
276}
277
278
279static int
280check_client_fragment_store (void *cls,
281 const struct FragmentStoreRequest *req)
282{
283 return GNUNET_OK;
284}
285
286
287static void
288handle_client_fragment_store (void *cls,
289 const struct FragmentStoreRequest *req)
290{
291 struct GNUNET_SERVICE_Client *client = cls;
292
293 const struct GNUNET_MessageHeader *
294 msg = GNUNET_MQ_extract_nested_mh (req);
295 if (NULL == msg
296 || ntohs (msg->size) < sizeof (struct GNUNET_MULTICAST_MessageHeader))
297 {
298 GNUNET_break (0);
299 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
300 _("Dropping invalid fragment\n"));
301 GNUNET_SERVICE_client_drop (client);
302 return;
303 }
304
305 int ret = db->fragment_store (db->cls, &req->channel_key,
306 (const struct GNUNET_MULTICAST_MessageHeader *)
307 msg, ntohl (req->psycstore_flags));
308
309 if (ret != GNUNET_OK)
310 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
311 _("Failed to store fragment\n"));
312
313 send_result_code (client, req->op_id, ret, NULL);
314 GNUNET_SERVICE_client_continue (client);
315}
316
317
318static void
319handle_client_fragment_get (void *cls,
320 const struct FragmentGetRequest *req)
321{
322 struct GNUNET_SERVICE_Client *client = cls;
323
324 struct SendClosure
325 sc = { .op_id = req->op_id,
326 .client = client,
327 .channel_key = req->channel_key,
328 .slave_key = req->slave_key,
329 .membership_test = req->do_membership_test };
330
331 int64_t ret;
332 uint64_t ret_frags = 0;
333 uint64_t first_fragment_id = GNUNET_ntohll (req->first_fragment_id);
334 uint64_t last_fragment_id = GNUNET_ntohll (req->last_fragment_id);
335 uint64_t limit = GNUNET_ntohll (req->fragment_limit);
336
337 if (0 == limit)
338 ret = db->fragment_get (db->cls, &req->channel_key,
339 first_fragment_id, last_fragment_id,
340 &ret_frags, send_fragment, &sc);
341 else
342 ret = db->fragment_get_latest (db->cls, &req->channel_key, limit,
343 &ret_frags, send_fragment, &sc);
344
345 switch (ret)
346 {
347 case GNUNET_YES:
348 case GNUNET_NO:
349 if (MEMBERSHIP_TEST_DONE == sc.membership_test)
350 {
351 switch (sc.membership_test_result)
352 {
353 case GNUNET_YES:
354 break;
355
356 case GNUNET_NO:
357 ret = GNUNET_PSYCSTORE_MEMBERSHIP_TEST_FAILED;
358 break;
359
360 case GNUNET_SYSERR:
361 ret = GNUNET_SYSERR;
362 break;
363 }
364 }
365 break;
366 default:
367 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
368 _("Failed to get fragment!\n"));
369 }
370 send_result_code (client, req->op_id, (ret < 0) ? ret : ret_frags, NULL);
371 GNUNET_SERVICE_client_continue (client);
372}
373
374
375static int
376check_client_message_get (void *cls,
377 const struct MessageGetRequest *req)
378{
379 return GNUNET_OK;
380}
381
382
383static void
384handle_client_message_get (void *cls,
385 const struct MessageGetRequest *req)
386{
387 struct GNUNET_SERVICE_Client *client = cls;
388
389 uint16_t size = ntohs (req->header.size);
390 const char *method_prefix = (const char *) &req[1];
391
392 if (size < sizeof (*req) + 1
393 || '\0' != method_prefix[size - sizeof (*req) - 1])
394 {
395 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
396 "Message get: invalid method prefix. size: %u < %u?\n",
397 size,
398 (unsigned int) (sizeof (*req) + 1));
399 GNUNET_break (0);
400 GNUNET_SERVICE_client_drop (client);
401 return;
402 }
403
404 struct SendClosure
405 sc = { .op_id = req->op_id,
406 .client = client,
407 .channel_key = req->channel_key,
408 .slave_key = req->slave_key,
409 .membership_test = req->do_membership_test };
410
411 int64_t ret;
412 uint64_t ret_frags = 0;
413 uint64_t first_message_id = GNUNET_ntohll (req->first_message_id);
414 uint64_t last_message_id = GNUNET_ntohll (req->last_message_id);
415 uint64_t msg_limit = GNUNET_ntohll (req->message_limit);
416 uint64_t frag_limit = GNUNET_ntohll (req->fragment_limit);
417
418 /** @todo method_prefix */
419 if (0 == msg_limit)
420 ret = db->message_get (db->cls, &req->channel_key,
421 first_message_id, last_message_id, frag_limit,
422 &ret_frags, send_fragment, &sc);
423 else
424 ret = db->message_get_latest (db->cls, &req->channel_key, msg_limit,
425 &ret_frags, send_fragment, &sc);
426
427 switch (ret)
428 {
429 case GNUNET_YES:
430 case GNUNET_NO:
431 break;
432 default:
433 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
434 _("Failed to get message!\n"));
435 }
436
437 send_result_code (client, req->op_id, (ret < 0) ? ret : ret_frags, NULL);
438 GNUNET_SERVICE_client_continue (client);
439}
440
441
442static void
443handle_client_message_get_fragment (void *cls,
444 const struct MessageGetFragmentRequest *req)
445{
446 struct GNUNET_SERVICE_Client *client = cls;
447
448 struct SendClosure
449 sc = { .op_id = req->op_id, .client = client,
450 .channel_key = req->channel_key, .slave_key = req->slave_key,
451 .membership_test = req->do_membership_test };
452
453 int ret = db->message_get_fragment (db->cls, &req->channel_key,
454 GNUNET_ntohll (req->message_id),
455 GNUNET_ntohll (req->fragment_offset),
456 &send_fragment, &sc);
457 switch (ret)
458 {
459 case GNUNET_YES:
460 case GNUNET_NO:
461 break;
462 default:
463 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
464 _("Failed to get message fragment!\n"));
465 }
466
467 send_result_code (client, req->op_id, ret, NULL);
468 GNUNET_SERVICE_client_continue (client);
469}
470
471
472static void
473handle_client_counters_get (void *cls,
474 const struct OperationRequest *req)
475{
476 struct GNUNET_SERVICE_Client *client = cls;
477
478 struct CountersResult *res;
479 struct GNUNET_MQ_Envelope *
480 env = GNUNET_MQ_msg (res, GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_COUNTERS);
481
482 int ret = db->counters_message_get (db->cls, &req->channel_key,
483 &res->max_fragment_id, &res->max_message_id,
484 &res->max_group_generation);
485 switch (ret)
486 {
487 case GNUNET_OK:
488 ret = db->counters_state_get (db->cls, &req->channel_key,
489 &res->max_state_message_id);
490 case GNUNET_NO:
491 break;
492 default:
493 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
494 _("Failed to get master counters!\n"));
495 }
496
497 res->result_code = htonl (ret);
498 res->op_id = req->op_id;
499 res->max_fragment_id = GNUNET_htonll (res->max_fragment_id);
500 res->max_message_id = GNUNET_htonll (res->max_message_id);
501 res->max_group_generation = GNUNET_htonll (res->max_group_generation);
502 res->max_state_message_id = GNUNET_htonll (res->max_state_message_id);
503
504 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env);
505 GNUNET_SERVICE_client_continue (client);
506}
507
508
509struct StateModifyClosure
510{
511 const struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
512 struct GNUNET_PSYC_ReceiveHandle *recv;
513 enum GNUNET_PSYC_MessageState msg_state;
514 char mod_oper;
515 char *mod_name;
516 char *mod_value;
517 uint32_t mod_value_size;
518 uint32_t mod_value_remaining;
519};
520
521
522static void
523recv_state_message_part (void *cls,
524 const struct GNUNET_PSYC_MessageHeader *msg,
525 const struct GNUNET_MessageHeader *pmsg)
526{
527 struct StateModifyClosure *scls = cls;
528 uint16_t psize;
529
530 if (NULL == msg)
531 { // FIXME: error on unknown message
532 return;
533 }
534
535 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
536 "recv_state_message_part() message_id: %" PRIu64
537 ", fragment_offset: %" PRIu64 ", flags: %u\n",
538 GNUNET_ntohll (msg->message_id),
539 GNUNET_ntohll (msg->fragment_offset),
540 ntohl (msg->flags));
541
542 if (NULL == pmsg)
543 {
544 scls->msg_state = GNUNET_PSYC_MESSAGE_STATE_ERROR;
545 return;
546 }
547
548 switch (ntohs (pmsg->type))
549 {
550 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD:
551 {
552 scls->msg_state = GNUNET_PSYC_MESSAGE_STATE_METHOD;
553 break;
554 }
555
556 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
557 {
558 struct GNUNET_PSYC_MessageModifier *
559 pmod = (struct GNUNET_PSYC_MessageModifier *) pmsg;
560 psize = ntohs (pmod->header.size);
561 uint16_t name_size = ntohs (pmod->name_size);
562 uint32_t value_size = ntohl (pmod->value_size);
563
564 const char *name = (const char *) &pmod[1];
565 const void *value = name + name_size;
566
567 if (GNUNET_PSYC_OP_SET != pmod->oper)
568 { // Apply non-transient operation.
569 if (psize == sizeof (*pmod) + name_size + value_size)
570 {
571 db->state_modify_op (db->cls, &scls->channel_key,
572 pmod->oper, name, value, value_size);
573 }
574 else
575 {
576 scls->mod_oper = pmod->oper;
577 scls->mod_name = GNUNET_malloc (name_size);
578 GNUNET_memcpy (scls->mod_name, name, name_size);
579
580 scls->mod_value_size = value_size;
581 scls->mod_value = GNUNET_malloc (scls->mod_value_size);
582 scls->mod_value_remaining
583 = scls->mod_value_size - (psize - sizeof (*pmod) - name_size);
584 GNUNET_memcpy (scls->mod_value, value, value_size - scls->mod_value_remaining);
585 }
586 }
587 scls->msg_state = GNUNET_PSYC_MESSAGE_STATE_MODIFIER;
588 break;
589 }
590
591 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
592 if (GNUNET_PSYC_OP_SET != scls->mod_oper)
593 {
594 if (scls->mod_value_remaining == 0)
595 {
596 GNUNET_break_op (0);
597 scls->msg_state = GNUNET_PSYC_MESSAGE_STATE_ERROR;
598 }
599 psize = ntohs (pmsg->size);
600 GNUNET_memcpy (scls->mod_value + (scls->mod_value_size - scls->mod_value_remaining),
601 &pmsg[1], psize - sizeof (*pmsg));
602 scls->mod_value_remaining -= psize - sizeof (*pmsg);
603 if (0 == scls->mod_value_remaining)
604 {
605 db->state_modify_op (db->cls, &scls->channel_key,
606 scls->mod_oper, scls->mod_name,
607 scls->mod_value, scls->mod_value_size);
608 GNUNET_free (scls->mod_name);
609 GNUNET_free (scls->mod_value);
610 scls->mod_oper = 0;
611 scls->mod_name = NULL;
612 scls->mod_value = NULL;
613 scls->mod_value_size = 0;
614 }
615 }
616 scls->msg_state = GNUNET_PSYC_MESSAGE_STATE_MOD_CONT;
617 break;
618
619 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA:
620 scls->msg_state = GNUNET_PSYC_MESSAGE_STATE_DATA;
621 break;
622
623 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
624 scls->msg_state = GNUNET_PSYC_MESSAGE_STATE_END;
625 break;
626
627 default:
628 scls->msg_state = GNUNET_PSYC_MESSAGE_STATE_ERROR;
629 }
630}
631
632
633static int
634recv_state_fragment (void *cls, struct GNUNET_MULTICAST_MessageHeader *msg,
635 enum GNUNET_PSYCSTORE_MessageFlags flags)
636{
637 struct StateModifyClosure *scls = cls;
638
639 if (NULL == scls->recv)
640 {
641 scls->recv = GNUNET_PSYC_receive_create (NULL, recv_state_message_part,
642 scls);
643 }
644
645 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
646 "recv_state_fragment: %" PRIu64 "\n", GNUNET_ntohll (msg->fragment_id));
647
648 struct GNUNET_PSYC_MessageHeader *
649 pmsg = GNUNET_PSYC_message_header_create (msg, flags);
650 GNUNET_PSYC_receive_message (scls->recv, pmsg);
651 GNUNET_free (pmsg);
652
653 return GNUNET_YES;
654}
655
656
657static void
658handle_client_state_modify (void *cls,
659 const struct StateModifyRequest *req)
660{
661 struct GNUNET_SERVICE_Client *client = cls;
662
663 uint64_t message_id = GNUNET_ntohll (req->message_id);
664 uint64_t state_delta = GNUNET_ntohll (req->state_delta);
665 uint64_t ret_frags = 0;
666 struct StateModifyClosure
667 scls = { .channel_key = req->channel_key };
668
669 int ret = db->state_modify_begin (db->cls, &req->channel_key,
670 message_id, state_delta);
671
672 if (GNUNET_OK != ret)
673 {
674 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
675 _("Failed to begin modifying state: %d\n"), ret);
676 }
677 else
678 {
679 ret = db->message_get (db->cls, &req->channel_key,
680 message_id, message_id, 0,
681 &ret_frags, recv_state_fragment, &scls);
682 if (GNUNET_OK != ret)
683 {
684 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
685 _("Failed to modify state: %d\n"), ret);
686 GNUNET_break (0);
687 }
688 else
689 {
690 if (GNUNET_OK != db->state_modify_end (db->cls, &req->channel_key, message_id))
691 {
692 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
693 _("Failed to end modifying state!\n"));
694 GNUNET_break (0);
695 }
696 }
697 if (NULL != scls.recv)
698 {
699 GNUNET_PSYC_receive_destroy (scls.recv);
700 }
701 }
702
703 send_result_code (client, req->op_id, ret, NULL);
704 GNUNET_SERVICE_client_continue (client);
705}
706
707
708static int
709check_client_state_sync (void *cls,
710 const struct StateSyncRequest *req)
711{
712 return GNUNET_OK;
713}
714
715
716/** @todo FIXME: stop processing further state sync messages after an error */
717static void
718handle_client_state_sync (void *cls,
719 const struct StateSyncRequest *req)
720{
721 struct GNUNET_SERVICE_Client *client = cls;
722
723 int ret = GNUNET_SYSERR;
724 const char *name = (const char *) &req[1];
725 uint16_t name_size = ntohs (req->name_size);
726
727 if (name_size <= 2 || '\0' != name[name_size - 1])
728 {
729 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
730 _("Tried to set invalid state variable name!\n"));
731 GNUNET_break_op (0);
732 }
733 else
734 {
735 ret = GNUNET_OK;
736
737 if (req->flags & STATE_OP_FIRST)
738 {
739 ret = db->state_sync_begin (db->cls, &req->channel_key);
740 }
741 if (ret != GNUNET_OK)
742 {
743 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
744 _("Failed to begin synchronizing state!\n"));
745 }
746 else
747 {
748 ret = db->state_sync_assign (db->cls, &req->channel_key, name,
749 name + ntohs (req->name_size),
750 ntohs (req->header.size) - sizeof (*req)
751 - ntohs (req->name_size));
752 }
753
754 if (GNUNET_OK == ret && req->flags & STATE_OP_LAST)
755 {
756 ret = db->state_sync_end (db->cls, &req->channel_key,
757 GNUNET_ntohll (req->max_state_message_id),
758 GNUNET_ntohll (req->state_hash_message_id));
759 if (ret != GNUNET_OK)
760 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
761 _("Failed to end synchronizing state!\n"));
762 }
763 }
764 send_result_code (client, req->op_id, ret, NULL);
765 GNUNET_SERVICE_client_continue (client);
766}
767
768
769static void
770handle_client_state_reset (void *cls,
771 const struct OperationRequest *req)
772{
773 struct GNUNET_SERVICE_Client *client = cls;
774
775 int ret = db->state_reset (db->cls, &req->channel_key);
776
777 if (ret != GNUNET_OK)
778 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
779 _("Failed to reset state!\n"));
780
781 send_result_code (client, req->op_id, ret, NULL);
782 GNUNET_SERVICE_client_continue (client);
783}
784
785
786static void
787handle_client_state_hash_update (void *cls,
788 const struct StateHashUpdateRequest *req)
789{
790 struct GNUNET_SERVICE_Client *client = cls;
791
792 int ret = db->state_reset (db->cls, &req->channel_key);
793 if (ret != GNUNET_OK)
794 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
795 _("Failed to reset state!\n"));
796
797 send_result_code (client, req->op_id, ret, NULL);
798 GNUNET_SERVICE_client_continue (client);
799}
800
801
802static int
803check_client_state_get (void *cls,
804 const struct OperationRequest *req)
805{
806 return GNUNET_OK;
807}
808
809
810static void
811handle_client_state_get (void *cls,
812 const struct OperationRequest *req)
813{
814 struct GNUNET_SERVICE_Client *client = cls;
815
816 struct SendClosure sc = { .op_id = req->op_id, .client = client };
817 int64_t ret = GNUNET_SYSERR;
818 const char *name = (const char *) &req[1];
819 uint16_t name_size = ntohs (req->header.size) - sizeof (*req);
820
821 if (name_size <= 2 || '\0' != name[name_size - 1])
822 {
823 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
824 _("Tried to get invalid state variable name!\n"));
825 GNUNET_break (0);
826 }
827 else
828 {
829 ret = db->state_get (db->cls, &req->channel_key, name,
830 &send_state_var, &sc);
831 if (GNUNET_NO == ret && name_size >= 5) /* min: _a_b\0 */
832 {
833 char *p, *n = GNUNET_malloc (name_size);
834 GNUNET_memcpy (n, name, name_size);
835 while (&n[1] < (p = strrchr (n, '_')) && GNUNET_NO == ret)
836 {
837 *p = '\0';
838 ret = db->state_get (db->cls, &req->channel_key, n,
839 &send_state_var, &sc);
840 }
841 GNUNET_free (n);
842 }
843 }
844 switch (ret)
845 {
846 case GNUNET_OK:
847 case GNUNET_NO:
848 break;
849 default:
850 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
851 _("Failed to get state variable!\n"));
852 }
853
854 send_result_code (client, req->op_id, ret, NULL);
855 GNUNET_SERVICE_client_continue (client);
856}
857
858
859static int
860check_client_state_get_prefix (void *cls,
861 const struct OperationRequest *req)
862{
863 return GNUNET_OK;
864}
865
866
867static void
868handle_client_state_get_prefix (void *cls,
869 const struct OperationRequest *req)
870{
871 struct GNUNET_SERVICE_Client *client = cls;
872
873 struct SendClosure sc = { .op_id = req->op_id, .client = client };
874 int64_t ret = GNUNET_SYSERR;
875 const char *name = (const char *) &req[1];
876 uint16_t name_size = ntohs (req->header.size) - sizeof (*req);
877
878 if (name_size <= 1 || '\0' != name[name_size - 1])
879 {
880 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
881 _("Tried to get invalid state variable name!\n"));
882 GNUNET_break (0);
883 }
884 else
885 {
886 ret = db->state_get_prefix (db->cls, &req->channel_key, name,
887 &send_state_var, &sc);
888 }
889 switch (ret)
890 {
891 case GNUNET_OK:
892 case GNUNET_NO:
893 break;
894 default:
895 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
896 _("Failed to get state variable!\n"));
897 }
898
899 send_result_code (client, req->op_id, ret, NULL);
900 GNUNET_SERVICE_client_continue (client);
901}
902
903
904/**
905 * A new client connected.
906 *
907 * @param cls NULL
908 * @param client client to add
909 * @param mq message queue for @a client
910 * @return @a client
911 */
912static void *
913client_notify_connect (void *cls,
914 struct GNUNET_SERVICE_Client *client,
915 struct GNUNET_MQ_Handle *mq)
916{
917 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Client connected: %p\n", client);
918
919 return client;
920}
921
922
923/**
924 * Called whenever a client is disconnected.
925 * Frees our resources associated with that client.
926 *
927 * @param cls closure
928 * @param client identification of the client
929 * @param app_ctx must match @a client
930 */
931static void
932client_notify_disconnect (void *cls,
933 struct GNUNET_SERVICE_Client *client,
934 void *app_ctx)
935{
936}
937
938
939/**
940 * Initialize the PSYCstore service.
941 *
942 * @param cls Closure.
943 * @param server The initialized server.
944 * @param c Configuration to use.
945 */
946static void
947run (void *cls,
948 const struct GNUNET_CONFIGURATION_Handle *c,
949 struct GNUNET_SERVICE_Handle *svc)
950{
951 cfg = c;
952 service = svc;
953
954 /* Loading database plugin */
955 char *database;
956 if (GNUNET_OK !=
957 GNUNET_CONFIGURATION_get_value_string (cfg, "psycstore", "database",
958 &database))
959 {
960 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
961 "psycstore",
962 "database");
963 }
964 else
965 {
966 GNUNET_asprintf (&db_lib_name,
967 "libgnunet_plugin_psycstore_%s",
968 database);
969 db = GNUNET_PLUGIN_load (db_lib_name, (void *) cfg);
970 GNUNET_free (database);
971 }
972 if (NULL == db)
973 {
974 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
975 "Could not load database backend `%s'\n",
976 db_lib_name);
977 GNUNET_SCHEDULER_add_now (&shutdown_task, NULL);
978 return;
979 }
980
981 stats = GNUNET_STATISTICS_create ("psycstore", cfg);
982 GNUNET_SCHEDULER_add_shutdown (shutdown_task,
983 NULL);
984}
985
986/**
987 * Define "main" method using service macro.
988 */
989GNUNET_SERVICE_MAIN
990("psycstore",
991 GNUNET_SERVICE_OPTION_NONE,
992 run,
993 client_notify_connect,
994 client_notify_disconnect,
995 NULL,
996 GNUNET_MQ_hd_fixed_size (client_membership_store,
997 GNUNET_MESSAGE_TYPE_PSYCSTORE_MEMBERSHIP_STORE,
998 struct MembershipStoreRequest,
999 NULL),
1000 GNUNET_MQ_hd_fixed_size (client_membership_test,
1001 GNUNET_MESSAGE_TYPE_PSYCSTORE_MEMBERSHIP_TEST,
1002 struct MembershipTestRequest,
1003 NULL),
1004 GNUNET_MQ_hd_var_size (client_fragment_store,
1005 GNUNET_MESSAGE_TYPE_PSYCSTORE_FRAGMENT_STORE,
1006 struct FragmentStoreRequest,
1007 NULL),
1008 GNUNET_MQ_hd_fixed_size (client_fragment_get,
1009 GNUNET_MESSAGE_TYPE_PSYCSTORE_FRAGMENT_GET,
1010 struct FragmentGetRequest,
1011 NULL),
1012 GNUNET_MQ_hd_var_size (client_message_get,
1013 GNUNET_MESSAGE_TYPE_PSYCSTORE_MESSAGE_GET,
1014 struct MessageGetRequest,
1015 NULL),
1016 GNUNET_MQ_hd_fixed_size (client_message_get_fragment,
1017 GNUNET_MESSAGE_TYPE_PSYCSTORE_MESSAGE_GET_FRAGMENT,
1018 struct MessageGetFragmentRequest,
1019 NULL),
1020 GNUNET_MQ_hd_fixed_size (client_counters_get,
1021 GNUNET_MESSAGE_TYPE_PSYCSTORE_COUNTERS_GET,
1022 struct OperationRequest,
1023 NULL),
1024 GNUNET_MQ_hd_fixed_size (client_state_modify,
1025 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_MODIFY,
1026 struct StateModifyRequest,
1027 NULL),
1028 GNUNET_MQ_hd_var_size (client_state_sync,
1029 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_SYNC,
1030 struct StateSyncRequest,
1031 NULL),
1032 GNUNET_MQ_hd_fixed_size (client_state_reset,
1033 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_RESET,
1034 struct OperationRequest,
1035 NULL),
1036 GNUNET_MQ_hd_fixed_size (client_state_hash_update,
1037 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_HASH_UPDATE,
1038 struct StateHashUpdateRequest,
1039 NULL),
1040 GNUNET_MQ_hd_var_size (client_state_get,
1041 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_GET,
1042 struct OperationRequest,
1043 NULL),
1044 GNUNET_MQ_hd_var_size (client_state_get_prefix,
1045 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_GET_PREFIX,
1046 struct OperationRequest,
1047 NULL));
1048
1049/* end of gnunet-service-psycstore.c */
diff --git a/src/psycstore/plugin_psycstore_mysql.c b/src/psycstore/plugin_psycstore_mysql.c
deleted file mode 100644
index c36b6f7a3..000000000
--- a/src/psycstore/plugin_psycstore_mysql.c
+++ /dev/null
@@ -1,1960 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psycstore/plugin_psycstore_mysql.c
23 * @brief mysql-based psycstore backend
24 * @author Gabor X Toth
25 * @author Christian Grothoff
26 * @author Christophe Genevey
27 */
28
29#include "platform.h"
30#include "gnunet_psycstore_plugin.h"
31#include "gnunet_psycstore_service.h"
32#include "gnunet_multicast_service.h"
33#include "gnunet_crypto_lib.h"
34#include "gnunet_psyc_util_lib.h"
35#include "psycstore.h"
36#include "gnunet_my_lib.h"
37#include "gnunet_mysql_lib.h"
38#include <mysql/mysql.h>
39
40/**
41 * After how many ms "busy" should a DB operation fail for good? A
42 * low value makes sure that we are more responsive to requests
43 * (especially PUTs). A high value guarantees a higher success rate
44 * (SELECTs in iterate can take several seconds despite LIMIT=1).
45 *
46 * The default value of 1s should ensure that users do not experience
47 * huge latencies while at the same time allowing operations to
48 * succeed with reasonable probability.
49 */
50#define BUSY_TIMEOUT_MS 1000
51
52#define DEBUG_PSYCSTORE GNUNET_EXTRA_LOGGING
53
54/**
55 * Log an error message at log-level 'level' that indicates
56 * a failure of the command 'cmd' on file 'filename'
57 * with the message given by strerror(errno).
58 */
59#define LOG_MYSQL(db, level, cmd, stmt) \
60 do { \
61 GNUNET_log_from (level, "psycstore-mysql", \
62 _("`%s' failed at %s:%d with error: %s\n"), \
63 cmd, __FILE__, __LINE__, \
64 mysql_stmt_error (GNUNET_MYSQL_statement_get_stmt(stmt))); \
65 } while (0)
66
67#define LOG(kind,...) GNUNET_log_from (kind, "psycstore-mysql", __VA_ARGS__)
68
69enum Transactions {
70 TRANSACTION_NONE = 0,
71 TRANSACTION_STATE_MODIFY,
72 TRANSACTION_STATE_SYNC,
73};
74
75/**
76 * Context for all functions in this plugin.
77 */
78struct Plugin
79{
80
81 const struct GNUNET_CONFIGURATION_Handle *cfg;
82
83 /**
84 * MySQL context.
85 */
86 struct GNUNET_MYSQL_Context *mc;
87
88 /**
89 * Current transaction.
90 */
91 enum Transactions transaction;
92
93 /**
94 * Precompiled SQL for channel_key_store()
95 */
96 struct GNUNET_MYSQL_StatementHandle *insert_channel_key;
97
98 /**
99 * Precompiled SQL for slave_key_store()
100 */
101 struct GNUNET_MYSQL_StatementHandle *insert_slave_key;
102
103 /**
104 * Precompiled SQL for membership_store()
105 */
106 struct GNUNET_MYSQL_StatementHandle *insert_membership;
107
108 /**
109 * Precompiled SQL for membership_test()
110 */
111 struct GNUNET_MYSQL_StatementHandle *select_membership;
112
113 /**
114 * Precompiled SQL for fragment_store()
115 */
116 struct GNUNET_MYSQL_StatementHandle *insert_fragment;
117
118 /**
119 * Precompiled SQL for message_add_flags()
120 */
121 struct GNUNET_MYSQL_StatementHandle *update_message_flags;
122
123 /**
124 * Precompiled SQL for fragment_get()
125 */
126 struct GNUNET_MYSQL_StatementHandle *select_fragments;
127
128 /**
129 * Precompiled SQL for fragment_get()
130 */
131 struct GNUNET_MYSQL_StatementHandle *select_latest_fragments;
132
133 /**
134 * Precompiled SQL for message_get()
135 */
136 struct GNUNET_MYSQL_StatementHandle *select_messages;
137
138 /**
139 * Precompiled SQL for message_get()
140 */
141 struct GNUNET_MYSQL_StatementHandle *select_latest_messages;
142
143 /**
144 * Precompiled SQL for message_get_fragment()
145 */
146 struct GNUNET_MYSQL_StatementHandle *select_message_fragment;
147
148 /**
149 * Precompiled SQL for counters_get_message()
150 */
151 struct GNUNET_MYSQL_StatementHandle *select_counters_message;
152
153 /**
154 * Precompiled SQL for counters_get_state()
155 */
156 struct GNUNET_MYSQL_StatementHandle *select_counters_state;
157
158 /**
159 * Precompiled SQL for state_modify_end()
160 */
161 struct GNUNET_MYSQL_StatementHandle *update_state_hash_message_id;
162
163 /**
164 * Precompiled SQL for state_sync_end()
165 */
166 struct GNUNET_MYSQL_StatementHandle *update_max_state_message_id;
167
168 /**
169 * Precompiled SQL for state_modify_op()
170 */
171 struct GNUNET_MYSQL_StatementHandle *insert_state_current;
172
173 /**
174 * Precompiled SQL for state_modify_end()
175 */
176 struct GNUNET_MYSQL_StatementHandle *delete_state_empty;
177
178 /**
179 * Precompiled SQL for state_set_signed()
180 */
181 struct GNUNET_MYSQL_StatementHandle *update_state_signed;
182
183 /**
184 * Precompiled SQL for state_sync()
185 */
186 struct GNUNET_MYSQL_StatementHandle *insert_state_sync;
187
188 /**
189 * Precompiled SQL for state_sync()
190 */
191 struct GNUNET_MYSQL_StatementHandle *delete_state;
192
193 /**
194 * Precompiled SQL for state_sync()
195 */
196 struct GNUNET_MYSQL_StatementHandle *insert_state_from_sync;
197
198 /**
199 * Precompiled SQL for state_sync()
200 */
201 struct GNUNET_MYSQL_StatementHandle *delete_state_sync;
202
203 /**
204 * Precompiled SQL for state_get_signed()
205 */
206 struct GNUNET_MYSQL_StatementHandle *select_state_signed;
207
208 /**
209 * Precompiled SQL for state_get()
210 */
211 struct GNUNET_MYSQL_StatementHandle *select_state_one;
212
213 /**
214 * Precompiled SQL for state_get_prefix()
215 */
216 struct GNUNET_MYSQL_StatementHandle *select_state_prefix;
217
218};
219
220#if DEBUG_PSYCSTORE
221
222static void
223mysql_trace (void *cls, const char *sql)
224{
225 LOG(GNUNET_ERROR_TYPE_DEBUG, "MYSQL query:\n%s\n", sql);
226}
227
228#endif
229
230
231/**
232 * @brief Prepare a SQL statement
233 *
234 * @param dbh handle to the database
235 * @param sql SQL statement, UTF-8 encoded
236 * @param stmt set to the prepared statement
237 * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure
238 */
239static int
240mysql_prepare (struct GNUNET_MYSQL_Context *mc,
241 const char *sql,
242 struct GNUNET_MYSQL_StatementHandle **stmt)
243{
244 *stmt = GNUNET_MYSQL_statement_prepare (mc,
245 sql);
246
247 if (NULL == *stmt)
248 {
249 LOG (GNUNET_ERROR_TYPE_ERROR,
250 _("Error preparing SQL query: %s\n %s\n"),
251 mysql_stmt_error (GNUNET_MYSQL_statement_get_stmt (*stmt)),
252 sql);
253 return GNUNET_SYSERR;
254 }
255 LOG (GNUNET_ERROR_TYPE_DEBUG,
256 "Prepared `%s' / %p\n",
257 sql,
258 stmt);
259 return GNUNET_OK;
260}
261
262
263/**
264 * Initialize the database connections and associated
265 * data structures (create tables and indices
266 * as needed as well).
267 *
268 * @param plugin the plugin context (state for this module)
269 * @return #GNUNET_OK on success
270 */
271static int
272database_setup (struct Plugin *plugin)
273{
274 /* Open database and precompile statements */
275 plugin->mc = GNUNET_MYSQL_context_create (plugin->cfg,
276 "psycstore-mysql");
277
278 if (NULL == plugin->mc)
279 {
280 LOG (GNUNET_ERROR_TYPE_ERROR,
281 _("Unable to initialize Mysql.\n"));
282 return GNUNET_SYSERR;
283 }
284
285#define STMT_RUN(sql) \
286 if (GNUNET_OK != \
287 GNUNET_MYSQL_statement_run (plugin->mc, \
288 sql)) \
289 { \
290 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, \
291 _("Failed to run SQL statement `%s'\n"), \
292 sql); \
293 return GNUNET_SYSERR; \
294 }
295
296 /* Create tables */
297 STMT_RUN ("CREATE TABLE IF NOT EXISTS channels (\n"
298 " id BIGINT UNSIGNED AUTO_INCREMENT,\n"
299 " pub_key BLOB(32),\n"
300 " max_state_message_id BIGINT UNSIGNED,\n"
301 " state_hash_message_id BIGINT UNSIGNED,\n"
302 " PRIMARY KEY(id),\n"
303 " UNIQUE KEY(pub_key(32))\n"
304 ");");
305
306 STMT_RUN ("CREATE TABLE IF NOT EXISTS slaves (\n"
307 " id BIGINT UNSIGNED AUTO_INCREMENT,\n"
308 " pub_key BLOB(32),\n"
309 " PRIMARY KEY(id),\n"
310 " UNIQUE KEY(pub_key(32))\n"
311 ");");
312
313 STMT_RUN ("CREATE TABLE IF NOT EXISTS membership (\n"
314 " channel_id BIGINT UNSIGNED NOT NULL REFERENCES channels(id),\n"
315 " slave_id BIGINT UNSIGNED NOT NULL REFERENCES slaves(id),\n"
316 " did_join TINYINT NOT NULL,\n"
317 " announced_at BIGINT UNSIGNED NOT NULL,\n"
318 " effective_since BIGINT UNSIGNED NOT NULL,\n"
319 " group_generation BIGINT UNSIGNED NOT NULL\n"
320 ");");
321
322/*** FIX because IF NOT EXISTS doesn't work ***/
323 GNUNET_MYSQL_statement_run (plugin->mc,
324 "CREATE INDEX idx_membership_channel_id_slave_id "
325 "ON membership (channel_id, slave_id);");
326
327 /** @todo messages table: add method_name column */
328 STMT_RUN ("CREATE TABLE IF NOT EXISTS messages (\n"
329 " channel_id BIGINT UNSIGNED NOT NULL REFERENCES channels(id),\n"
330 " hop_counter BIGINT UNSIGNED NOT NULL,\n"
331 " signature BLOB,\n"
332 " purpose BLOB,\n"
333 " fragment_id BIGINT UNSIGNED NOT NULL,\n"
334 " fragment_offset BIGINT UNSIGNED NOT NULL,\n"
335 " message_id BIGINT UNSIGNED NOT NULL,\n"
336 " group_generation BIGINT UNSIGNED NOT NULL,\n"
337 " multicast_flags BIGINT UNSIGNED NOT NULL,\n"
338 " psycstore_flags BIGINT UNSIGNED NOT NULL,\n"
339 " data BLOB,\n"
340 " PRIMARY KEY (channel_id, fragment_id),\n"
341 " UNIQUE KEY(channel_id, message_id, fragment_offset)\n"
342 ");");
343
344 STMT_RUN ("CREATE TABLE IF NOT EXISTS state (\n"
345 " channel_id BIGINT UNSIGNED NOT NULL REFERENCES channels(id),\n"
346 " name TEXT NOT NULL,\n"
347 " value_current BLOB,\n"
348 " value_signed BLOB\n"
349 //" PRIMARY KEY (channel_id, name(255))\n"
350 ");");
351
352 STMT_RUN ("CREATE TABLE IF NOT EXISTS state_sync (\n"
353 " channel_id BIGINT UNSIGNED NOT NULL REFERENCES channels(id),\n"
354 " name TEXT NOT NULL,\n"
355 " value BLOB\n"
356 //" PRIMARY KEY (channel_id, name(255))\n"
357 ");");
358#undef STMT_RUN
359
360 /* Prepare statements */
361#define PREP(stmt,handle) \
362 if (GNUNET_OK != mysql_prepare (plugin->mc, stmt, handle)) \
363 { \
364 GNUNET_break (0); \
365 return GNUNET_SYSERR; \
366 }
367 PREP ("INSERT IGNORE INTO channels (pub_key) VALUES (?);",
368 &plugin->insert_channel_key);
369 PREP ("INSERT IGNORE INTO slaves (pub_key) VALUES (?);",
370 &plugin->insert_slave_key);
371 PREP ("INSERT INTO membership\n"
372 " (channel_id, slave_id, did_join, announced_at,\n"
373 " effective_since, group_generation)\n"
374 "VALUES ((SELECT id FROM channels WHERE pub_key = ?),\n"
375 " (SELECT id FROM slaves WHERE pub_key = ?),\n"
376 " ?, ?, ?, ?);",
377 &plugin->insert_membership);
378 PREP ("SELECT did_join FROM membership\n"
379 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
380 " AND slave_id = (SELECT id FROM slaves WHERE pub_key = ?)\n"
381 " AND effective_since <= ? AND did_join = 1\n"
382 "ORDER BY announced_at DESC LIMIT 1;",
383 &plugin->select_membership);
384
385 PREP ("INSERT IGNORE INTO messages\n"
386 " (channel_id, hop_counter, signature, purpose,\n"
387 " fragment_id, fragment_offset, message_id,\n"
388 " group_generation, multicast_flags, psycstore_flags, data)\n"
389 "VALUES ((SELECT id FROM channels WHERE pub_key = ?),\n"
390 " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);",
391 &plugin->insert_fragment);
392
393 PREP ("UPDATE messages\n"
394 "SET psycstore_flags = psycstore_flags | ?\n"
395 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
396 " AND message_id = ? AND fragment_offset = 0;",
397 &plugin->update_message_flags);
398
399 PREP ("SELECT hop_counter, signature, purpose, fragment_id,\n"
400 " fragment_offset, message_id, group_generation,\n"
401 " multicast_flags, psycstore_flags, data\n"
402 "FROM messages\n"
403 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
404 " AND ? <= fragment_id AND fragment_id <= ? LIMIT 1;",
405 &plugin->select_fragments);
406
407 /** @todo select_messages: add method_prefix filter */
408 PREP ("SELECT hop_counter, signature, purpose, fragment_id,\n"
409 " fragment_offset, message_id, group_generation,\n"
410 " multicast_flags, psycstore_flags, data\n"
411 "FROM messages\n"
412 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
413 " AND ? <= message_id AND message_id <= ?\n"
414 "LIMIT ?;",
415 &plugin->select_messages);
416
417 PREP ("SELECT * FROM\n"
418 "(SELECT hop_counter, signature, purpose, fragment_id,\n"
419 " fragment_offset, message_id, group_generation,\n"
420 " multicast_flags, psycstore_flags, data\n"
421 " FROM messages\n"
422 " WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
423 " ORDER BY fragment_id DESC\n"
424 " LIMIT ?)\n"
425 "ORDER BY fragment_id;",
426 &plugin->select_latest_fragments);
427
428 /** @todo select_latest_messages: add method_prefix filter */
429 PREP ("SELECT hop_counter, signature, purpose, fragment_id,\n"
430 " fragment_offset, message_id, group_generation,\n"
431 " multicast_flags, psycstore_flags, data\n"
432 "FROM messages\n"
433 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
434 " AND message_id IN\n"
435 " (SELECT message_id\n"
436 " FROM messages\n"
437 " WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
438 " GROUP BY message_id\n"
439 " ORDER BY message_id\n"
440 " DESC LIMIT ?)\n"
441 "ORDER BY fragment_id;",
442 &plugin->select_latest_messages);
443
444 PREP ("SELECT hop_counter, signature, purpose, fragment_id,\n"
445 " fragment_offset, message_id, group_generation,\n"
446 " multicast_flags, psycstore_flags, data\n"
447 "FROM messages\n"
448 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
449 " AND message_id = ? AND fragment_offset = ?;",
450 &plugin->select_message_fragment);
451
452 PREP ("SELECT fragment_id, message_id, group_generation\n"
453 "FROM messages\n"
454 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
455 "ORDER BY fragment_id DESC LIMIT 1;",
456 &plugin->select_counters_message);
457
458 PREP ("SELECT max_state_message_id\n"
459 "FROM channels\n"
460 "WHERE pub_key = ? AND max_state_message_id IS NOT NULL;",
461 &plugin->select_counters_state);
462
463 PREP ("UPDATE channels\n"
464 "SET max_state_message_id = ?\n"
465 "WHERE pub_key = ?;",
466 &plugin->update_max_state_message_id);
467
468 PREP ("UPDATE channels\n"
469 "SET state_hash_message_id = ?\n"
470 "WHERE pub_key = ?;",
471 &plugin->update_state_hash_message_id);
472
473 PREP ("REPLACE INTO state\n"
474 " (channel_id, name, value_current, value_signed)\n"
475 "SELECT new.channel_id, new.name, new.value_current, old.value_signed\n"
476 "FROM (SELECT (SELECT id FROM channels WHERE pub_key = ?) AS channel_id,\n"
477 " (SELECT ?) AS name,\n"
478 " (SELECT ?) AS value_current\n"
479 " ) AS new\n"
480 "LEFT JOIN (SELECT channel_id, name, value_signed\n"
481 " FROM state) AS old\n"
482 "ON new.channel_id = old.channel_id AND new.name = old.name;",
483 &plugin->insert_state_current);
484
485 PREP ("DELETE FROM state\n"
486 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
487 " AND (value_current IS NULL OR length(value_current) = 0)\n"
488 " AND (value_signed IS NULL OR length(value_signed) = 0);",
489 &plugin->delete_state_empty);
490
491 PREP ("UPDATE state\n"
492 "SET value_signed = value_current\n"
493 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?);",
494 &plugin->update_state_signed);
495
496 PREP ("DELETE FROM state\n"
497 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?);",
498 &plugin->delete_state);
499
500 PREP ("INSERT INTO state_sync (channel_id, name, value)\n"
501 "VALUES ((SELECT id FROM channels WHERE pub_key = ?), ?, ?);",
502 &plugin->insert_state_sync);
503
504 PREP ("INSERT INTO state\n"
505 " (channel_id, name, value_current, value_signed)\n"
506 "SELECT channel_id, name, value, value\n"
507 "FROM state_sync\n"
508 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?);",
509 &plugin->insert_state_from_sync);
510
511 PREP ("DELETE FROM state_sync\n"
512 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?);",
513 &plugin->delete_state_sync);
514
515 PREP ("SELECT value_current\n"
516 "FROM state\n"
517 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
518 " AND name = ?;",
519 &plugin->select_state_one);
520
521 PREP ("SELECT name, value_current\n"
522 "FROM state\n"
523 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
524 " AND (name = ? OR substr(name, 1, ?) = ?);",
525 &plugin->select_state_prefix);
526
527 PREP ("SELECT name, value_signed\n"
528 "FROM state\n"
529 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)"
530 " AND value_signed IS NOT NULL;",
531 &plugin->select_state_signed);
532#undef PREP
533
534 return GNUNET_OK;
535}
536
537
538/**
539 * Shutdown database connection and associate data
540 * structures.
541 * @param plugin the plugin context (state for this module)
542 */
543static void
544database_shutdown (struct Plugin *plugin)
545{
546 GNUNET_MYSQL_context_destroy (plugin->mc);
547}
548
549
550/**
551 * Execute a prepared statement with a @a channel_key argument.
552 *
553 * @param plugin Plugin handle.
554 * @param stmt Statement to execute.
555 * @param channel_key Public key of the channel.
556 *
557 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
558 */
559static int
560exec_channel (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt,
561 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
562{
563 struct GNUNET_MY_QueryParam params[] = {
564 GNUNET_MY_query_param_auto_from_type (channel_key),
565 GNUNET_MY_query_param_end
566 };
567
568 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params))
569 {
570 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
571 "mysql exec_channel", stmt);
572 }
573
574 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
575 {
576 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
577 "mysql_stmt_reset", stmt);
578 return GNUNET_SYSERR;
579 }
580
581 return GNUNET_OK;
582}
583
584
585/**
586 * Begin a transaction.
587 */
588static int
589transaction_begin (struct Plugin *plugin, enum Transactions transaction)
590{
591 if (GNUNET_OK != GNUNET_MYSQL_statement_run (plugin->mc, "BEGIN"))
592 {
593 LOG(GNUNET_ERROR_TYPE_ERROR, "transaction_begin failed");
594 return GNUNET_SYSERR;
595 }
596
597 plugin->transaction = transaction;
598 return GNUNET_OK;
599}
600
601
602/**
603 * Commit current transaction.
604 */
605static int
606transaction_commit (struct Plugin *plugin)
607{
608 if (GNUNET_OK != GNUNET_MYSQL_statement_run (plugin->mc, "COMMIT"))
609 {
610 LOG(GNUNET_ERROR_TYPE_ERROR, "transaction_commit failed");
611 return GNUNET_SYSERR;
612 }
613
614 plugin->transaction = TRANSACTION_NONE;
615 return GNUNET_OK;
616}
617
618
619/**
620 * Roll back current transaction.
621 */
622static int
623transaction_rollback (struct Plugin *plugin)
624{
625 if (GNUNET_OK != GNUNET_MYSQL_statement_run (plugin->mc, "ROLLBACK"))
626 {
627 LOG(GNUNET_ERROR_TYPE_ERROR, "transaction_rollback failed");
628 return GNUNET_SYSERR;
629 }
630
631 plugin->transaction = TRANSACTION_NONE;
632 return GNUNET_OK;
633}
634
635
636static int
637channel_key_store (struct Plugin *plugin,
638 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
639{
640 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->insert_channel_key;
641
642 struct GNUNET_MY_QueryParam params[] = {
643 GNUNET_MY_query_param_auto_from_type (channel_key),
644 GNUNET_MY_query_param_end
645 };
646
647 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params))
648 {
649 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
650 "mysql exec_prepared", stmt);
651 return GNUNET_SYSERR;
652 }
653
654 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
655 {
656 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
657 "mysql_stmt_reset", stmt);
658 return GNUNET_SYSERR;
659 }
660
661 return GNUNET_OK;
662}
663
664
665static int
666slave_key_store (struct Plugin *plugin,
667 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key)
668{
669 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->insert_slave_key;
670
671 struct GNUNET_MY_QueryParam params[] = {
672 GNUNET_MY_query_param_auto_from_type (slave_key),
673 GNUNET_MY_query_param_end
674 };
675
676 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params))
677 {
678 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
679 "mysql exec_prepared", stmt);
680 return GNUNET_SYSERR;
681 }
682
683 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
684 {
685 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
686 "mysql_stmt_reset", stmt);
687 return GNUNET_SYSERR;
688 }
689
690 return GNUNET_OK;
691}
692
693
694/**
695 * Store join/leave events for a PSYC channel in order to be able to answer
696 * membership test queries later.
697 *
698 * @see GNUNET_PSYCSTORE_membership_store()
699 *
700 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
701 */
702static int
703mysql_membership_store (void *cls,
704 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
705 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
706 int did_join,
707 uint64_t announced_at,
708 uint64_t effective_since,
709 uint64_t group_generation)
710{
711 struct Plugin *plugin = cls;
712
713 uint32_t idid_join = (uint32_t)did_join;
714
715 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->insert_membership;
716
717 GNUNET_assert (TRANSACTION_NONE == plugin->transaction);
718
719 if (announced_at > INT64_MAX ||
720 effective_since > INT64_MAX ||
721 group_generation > INT64_MAX)
722 {
723 GNUNET_break (0);
724 return GNUNET_SYSERR;
725 }
726
727 if (GNUNET_OK != channel_key_store (plugin, channel_key)
728 || GNUNET_OK != slave_key_store (plugin, slave_key))
729 return GNUNET_SYSERR;
730
731 struct GNUNET_MY_QueryParam params[] = {
732 GNUNET_MY_query_param_auto_from_type (channel_key),
733 GNUNET_MY_query_param_auto_from_type (slave_key),
734 GNUNET_MY_query_param_uint32 (&idid_join),
735 GNUNET_MY_query_param_uint64 (&announced_at),
736 GNUNET_MY_query_param_uint64 (&effective_since),
737 GNUNET_MY_query_param_uint64 (&group_generation),
738 GNUNET_MY_query_param_end
739 };
740
741 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params))
742 {
743 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
744 "mysql exec_prepared", stmt);
745 return GNUNET_SYSERR;
746 }
747
748 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
749 {
750 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
751 "mysql_stmt_reset", stmt);
752 return GNUNET_SYSERR;
753 }
754 return GNUNET_OK;
755}
756
757/**
758 * Test if a member was admitted to the channel at the given message ID.
759 *
760 * @see GNUNET_PSYCSTORE_membership_test()
761 *
762 * @return #GNUNET_YES if the member was admitted, #GNUNET_NO if not,
763 * #GNUNET_SYSERR if there was en error.
764 */
765static int
766membership_test (void *cls,
767 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
768 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
769 uint64_t message_id)
770{
771 struct Plugin *plugin = cls;
772
773 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_membership;
774
775 uint32_t did_join = 0;
776
777 int ret = GNUNET_SYSERR;
778
779 struct GNUNET_MY_QueryParam params_select[] = {
780 GNUNET_MY_query_param_auto_from_type (channel_key),
781 GNUNET_MY_query_param_auto_from_type (slave_key),
782 GNUNET_MY_query_param_uint64 (&message_id),
783 GNUNET_MY_query_param_end
784 };
785
786 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params_select))
787 {
788 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
789 "mysql execute prepared", stmt);
790 return GNUNET_SYSERR;
791 }
792
793 struct GNUNET_MY_ResultSpec results_select[] = {
794 GNUNET_MY_result_spec_uint32 (&did_join),
795 GNUNET_MY_result_spec_end
796 };
797
798 switch (GNUNET_MY_extract_result (stmt, results_select))
799 {
800 case GNUNET_NO:
801 ret = GNUNET_NO;
802 break;
803 case GNUNET_OK:
804 ret = GNUNET_YES;
805 break;
806 default:
807 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
808 "mysql extract_result", stmt);
809 return GNUNET_SYSERR;
810 }
811
812 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
813 {
814 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
815 "mysql_stmt_reset", stmt);
816 return GNUNET_SYSERR;
817 }
818
819 return ret;
820}
821
822/**
823 * Store a message fragment sent to a channel.
824 *
825 * @see GNUNET_PSYCSTORE_fragment_store()
826 *
827 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
828 */
829static int
830fragment_store (void *cls,
831 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
832 const struct GNUNET_MULTICAST_MessageHeader *msg,
833 uint32_t psycstore_flags)
834{
835 struct Plugin *plugin = cls;
836
837 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->insert_fragment;
838
839 GNUNET_assert (TRANSACTION_NONE == plugin->transaction);
840
841 uint64_t fragment_id = GNUNET_ntohll (msg->fragment_id);
842
843 uint64_t fragment_offset = GNUNET_ntohll (msg->fragment_offset);
844 uint64_t message_id = GNUNET_ntohll (msg->message_id);
845 uint64_t group_generation = GNUNET_ntohll (msg->group_generation);
846
847 uint64_t hop_counter = ntohl(msg->hop_counter);
848 uint64_t flags = ntohl(msg->flags);
849
850 if (fragment_id > INT64_MAX || fragment_offset > INT64_MAX ||
851 message_id > INT64_MAX || group_generation > INT64_MAX)
852 {
853 LOG(GNUNET_ERROR_TYPE_ERROR,
854 "Tried to store fragment with a field > INT64_MAX: "
855 "%lu, %lu, %lu, %lu\n", fragment_id, fragment_offset,
856 message_id, group_generation);
857 GNUNET_break (0);
858 return GNUNET_SYSERR;
859 }
860
861 if (GNUNET_OK != channel_key_store (plugin, channel_key))
862 return GNUNET_SYSERR;
863
864 struct GNUNET_MY_QueryParam params_insert[] = {
865 GNUNET_MY_query_param_auto_from_type (channel_key),
866 GNUNET_MY_query_param_uint64 (&hop_counter),
867 GNUNET_MY_query_param_auto_from_type (&msg->signature),
868 GNUNET_MY_query_param_auto_from_type (&msg->purpose),
869 GNUNET_MY_query_param_uint64 (&fragment_id),
870 GNUNET_MY_query_param_uint64 (&fragment_offset),
871 GNUNET_MY_query_param_uint64 (&message_id),
872 GNUNET_MY_query_param_uint64 (&group_generation),
873 GNUNET_MY_query_param_uint64 (&flags),
874 GNUNET_MY_query_param_uint32 (&psycstore_flags),
875 GNUNET_MY_query_param_fixed_size (&msg[1], ntohs (msg->header.size)
876 - sizeof (*msg)),
877 GNUNET_MY_query_param_end
878 };
879
880 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params_insert))
881 {
882 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
883 "mysql execute prepared", stmt);
884 return GNUNET_SYSERR;
885 }
886
887 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
888 {
889 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
890 "mysql_stmt_reset", stmt);
891 return GNUNET_SYSERR;
892 }
893
894 return GNUNET_OK;
895}
896
897/**
898 * Set additional flags for a given message.
899 *
900 * They are OR'd with any existing flags set.
901 *
902 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
903 */
904static int
905message_add_flags (void *cls,
906 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
907 uint64_t message_id,
908 uint32_t psycstore_flags)
909{
910 struct Plugin *plugin = cls;
911 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->update_message_flags;
912
913 int sql_ret;
914 int ret = GNUNET_SYSERR;
915
916 struct GNUNET_MY_QueryParam params_update[] = {
917 GNUNET_MY_query_param_uint32 (&psycstore_flags),
918 GNUNET_MY_query_param_auto_from_type (channel_key),
919 GNUNET_MY_query_param_uint64 (&message_id),
920 GNUNET_MY_query_param_end
921 };
922
923 sql_ret = GNUNET_MY_exec_prepared (plugin->mc, stmt, params_update);
924 switch (sql_ret)
925 {
926 case GNUNET_OK:
927 ret = GNUNET_OK;
928 break;
929
930 default:
931 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
932 "mysql execute prepared", stmt);
933 }
934
935 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
936 {
937 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
938 "mysql_stmt_reset", stmt);
939 return GNUNET_SYSERR;
940 }
941
942 return ret;
943}
944
945
946static int
947fragment_row (struct GNUNET_MYSQL_StatementHandle *stmt,
948 GNUNET_PSYCSTORE_FragmentCallback cb,
949 void *cb_cls,
950 uint64_t *returned_fragments)
951{
952
953 uint32_t hop_counter;
954 void *signature = NULL;
955 void *purpose = NULL;
956 size_t signature_size;
957 size_t purpose_size;
958 uint64_t fragment_id;
959 uint64_t fragment_offset;
960 uint64_t message_id;
961 uint64_t group_generation;
962 uint64_t flags;
963 void *buf;
964 size_t buf_size;
965 int ret = GNUNET_SYSERR;
966 int sql_ret;
967 struct GNUNET_MULTICAST_MessageHeader *mp;
968 uint64_t msg_flags;
969 struct GNUNET_MY_ResultSpec results[] = {
970 GNUNET_MY_result_spec_uint32 (&hop_counter),
971 GNUNET_MY_result_spec_variable_size (&signature, &signature_size),
972 GNUNET_MY_result_spec_variable_size (&purpose, &purpose_size),
973 GNUNET_MY_result_spec_uint64 (&fragment_id),
974 GNUNET_MY_result_spec_uint64 (&fragment_offset),
975 GNUNET_MY_result_spec_uint64 (&message_id),
976 GNUNET_MY_result_spec_uint64 (&group_generation),
977 GNUNET_MY_result_spec_uint64 (&msg_flags),
978 GNUNET_MY_result_spec_uint64 (&flags),
979 GNUNET_MY_result_spec_variable_size (&buf,
980 &buf_size),
981 GNUNET_MY_result_spec_end
982 };
983
984 do
985 {
986 sql_ret = GNUNET_MY_extract_result (stmt, results);
987 switch (sql_ret)
988 {
989 case GNUNET_NO:
990 if (ret != GNUNET_YES)
991 ret = GNUNET_NO;
992 break;
993
994 case GNUNET_YES:
995 mp = GNUNET_malloc (sizeof (*mp) + buf_size);
996
997 mp->header.size = htons (sizeof (*mp) + buf_size);
998 mp->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE);
999 mp->hop_counter = htonl (hop_counter);
1000 GNUNET_memcpy (&mp->signature,
1001 signature,
1002 signature_size);
1003 GNUNET_memcpy (&mp->purpose,
1004 purpose,
1005 purpose_size);
1006 mp->fragment_id = GNUNET_htonll (fragment_id);
1007 mp->fragment_offset = GNUNET_htonll (fragment_offset);
1008 mp->message_id = GNUNET_htonll (message_id);
1009 mp->group_generation = GNUNET_htonll (group_generation);
1010 mp->flags = htonl(msg_flags);
1011
1012 GNUNET_memcpy (&mp[1],
1013 buf,
1014 buf_size);
1015 ret = cb (cb_cls, mp, (enum GNUNET_PSYCSTORE_MessageFlags) flags);
1016 if (NULL != returned_fragments)
1017 (*returned_fragments)++;
1018 GNUNET_MY_cleanup_result (results);
1019 break;
1020
1021 default:
1022 LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1023 "mysql extract_result", stmt);
1024 }
1025 }
1026 while (GNUNET_YES == sql_ret);
1027
1028 // for debugging
1029 if (GNUNET_NO == ret)
1030 GNUNET_log (GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK,
1031 "Empty result set\n");
1032
1033 return ret;
1034}
1035
1036
1037static int
1038fragment_select (struct Plugin *plugin,
1039 struct GNUNET_MYSQL_StatementHandle *stmt,
1040 struct GNUNET_MY_QueryParam *params,
1041 uint64_t *returned_fragments,
1042 GNUNET_PSYCSTORE_FragmentCallback cb,
1043 void *cb_cls)
1044{
1045 int ret = GNUNET_SYSERR;
1046 int sql_ret;
1047
1048 sql_ret = GNUNET_MY_exec_prepared (plugin->mc, stmt, params);
1049 switch (sql_ret)
1050 {
1051 case GNUNET_NO:
1052 if (ret != GNUNET_YES)
1053 ret = GNUNET_NO;
1054 break;
1055
1056 case GNUNET_YES:
1057 ret = fragment_row (stmt, cb, cb_cls, returned_fragments);
1058 break;
1059
1060 default:
1061 LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1062 "mysql exec_prepared", stmt);
1063 }
1064 return ret;
1065}
1066
1067
1068/**
1069 * Retrieve a message fragment range by fragment ID.
1070 *
1071 * @see GNUNET_PSYCSTORE_fragment_get()
1072 *
1073 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1074 */
1075static int
1076fragment_get (void *cls,
1077 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1078 uint64_t first_fragment_id,
1079 uint64_t last_fragment_id,
1080 uint64_t *returned_fragments,
1081 GNUNET_PSYCSTORE_FragmentCallback cb,
1082 void *cb_cls)
1083{
1084 struct Plugin *plugin = cls;
1085 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_fragments;
1086 int ret = GNUNET_SYSERR;
1087 struct GNUNET_MY_QueryParam params_select[] = {
1088 GNUNET_MY_query_param_auto_from_type (channel_key),
1089 GNUNET_MY_query_param_uint64 (&first_fragment_id),
1090 GNUNET_MY_query_param_uint64 (&last_fragment_id),
1091 GNUNET_MY_query_param_end
1092 };
1093
1094 *returned_fragments = 0;
1095 ret = fragment_select (plugin, stmt, params_select, returned_fragments, cb, cb_cls);
1096
1097 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1098 {
1099 LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1100 "mysql_stmt_reset", stmt);
1101 return GNUNET_SYSERR;
1102 }
1103
1104 return ret;
1105}
1106
1107
1108/**
1109 * Retrieve a message fragment range by fragment ID.
1110 *
1111 * @see GNUNET_PSYCSTORE_fragment_get_latest()
1112 *
1113 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1114 */
1115static int
1116fragment_get_latest (void *cls,
1117 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1118 uint64_t fragment_limit,
1119 uint64_t *returned_fragments,
1120 GNUNET_PSYCSTORE_FragmentCallback cb,
1121 void *cb_cls)
1122{
1123 struct Plugin *plugin = cls;
1124
1125 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_latest_fragments;
1126
1127 int ret = GNUNET_SYSERR;
1128 *returned_fragments = 0;
1129
1130 struct GNUNET_MY_QueryParam params_select[] = {
1131 GNUNET_MY_query_param_auto_from_type (channel_key),
1132 GNUNET_MY_query_param_uint64 (&fragment_limit),
1133 GNUNET_MY_query_param_end
1134 };
1135
1136 ret = fragment_select (plugin, stmt, params_select, returned_fragments, cb, cb_cls);
1137
1138 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1139 {
1140 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1141 "mysql_stmt_reset", stmt);
1142 return GNUNET_SYSERR;
1143 }
1144
1145 return ret;
1146}
1147
1148
1149/**
1150 * Retrieve all fragments of a message ID range.
1151 *
1152 * @see GNUNET_PSYCSTORE_message_get()
1153 *
1154 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1155 */
1156static int
1157message_get (void *cls,
1158 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1159 uint64_t first_message_id,
1160 uint64_t last_message_id,
1161 uint64_t fragment_limit,
1162 uint64_t *returned_fragments,
1163 GNUNET_PSYCSTORE_FragmentCallback cb,
1164 void *cb_cls)
1165{
1166 struct Plugin *plugin = cls;
1167 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_messages;
1168 int ret;
1169
1170 if (0 == fragment_limit)
1171 fragment_limit = UINT64_MAX;
1172
1173 struct GNUNET_MY_QueryParam params_select[] = {
1174 GNUNET_MY_query_param_auto_from_type (channel_key),
1175 GNUNET_MY_query_param_uint64 (&first_message_id),
1176 GNUNET_MY_query_param_uint64 (&last_message_id),
1177 GNUNET_MY_query_param_uint64 (&fragment_limit),
1178 GNUNET_MY_query_param_end
1179 };
1180
1181 *returned_fragments = 0;
1182 ret = fragment_select (plugin, stmt, params_select, returned_fragments, cb, cb_cls);
1183
1184 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1185 {
1186 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1187 "mysql_stmt_reset", stmt);
1188 return GNUNET_SYSERR;
1189 }
1190
1191 return ret;
1192}
1193
1194
1195/**
1196 * Retrieve all fragments of the latest messages.
1197 *
1198 * @see GNUNET_PSYCSTORE_message_get_latest()
1199 *
1200 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1201 */
1202static int
1203message_get_latest (void *cls,
1204 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1205 uint64_t message_limit,
1206 uint64_t *returned_fragments,
1207 GNUNET_PSYCSTORE_FragmentCallback cb,
1208 void *cb_cls)
1209{
1210 struct Plugin *plugin = cls;
1211
1212 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_latest_messages;
1213
1214 int ret = GNUNET_SYSERR;
1215 *returned_fragments = 0;
1216
1217 struct GNUNET_MY_QueryParam params_select[] = {
1218 GNUNET_MY_query_param_auto_from_type (channel_key),
1219 GNUNET_MY_query_param_auto_from_type (channel_key),
1220 GNUNET_MY_query_param_uint64 (&message_limit),
1221 GNUNET_MY_query_param_end
1222 };
1223
1224 ret = fragment_select (plugin, stmt, params_select, returned_fragments, cb, cb_cls);
1225
1226 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1227 {
1228 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1229 "mysql_stmt_reset", stmt);
1230 return GNUNET_SYSERR;
1231 }
1232
1233 return ret;
1234}
1235
1236
1237/**
1238 * Retrieve a fragment of message specified by its message ID and fragment
1239 * offset.
1240 *
1241 * @see GNUNET_PSYCSTORE_message_get_fragment()
1242 *
1243 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1244 */
1245static int
1246message_get_fragment (void *cls,
1247 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1248 uint64_t message_id,
1249 uint64_t fragment_offset,
1250 GNUNET_PSYCSTORE_FragmentCallback cb,
1251 void *cb_cls)
1252{
1253 struct Plugin *plugin = cls;
1254 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_message_fragment;
1255 int sql_ret;
1256 int ret = GNUNET_SYSERR;
1257
1258 struct GNUNET_MY_QueryParam params_select[] = {
1259 GNUNET_MY_query_param_auto_from_type (channel_key),
1260 GNUNET_MY_query_param_uint64 (&message_id),
1261 GNUNET_MY_query_param_uint64 (&fragment_offset),
1262 GNUNET_MY_query_param_end
1263 };
1264
1265 sql_ret = GNUNET_MY_exec_prepared (plugin->mc, stmt, params_select);
1266 switch (sql_ret)
1267 {
1268 case GNUNET_NO:
1269 ret = GNUNET_NO;
1270 break;
1271
1272 case GNUNET_OK:
1273 ret = fragment_row (stmt, cb, cb_cls, NULL);
1274 break;
1275
1276 default:
1277 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1278 "mysql execute prepared", stmt);
1279 }
1280
1281 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1282 {
1283 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1284 "mysql_stmt_reset", stmt);
1285 return GNUNET_SYSERR;
1286 }
1287
1288 return ret;
1289}
1290
1291/**
1292 * Retrieve the max. values of message counters for a channel.
1293 *
1294 * @see GNUNET_PSYCSTORE_counters_get()
1295 *
1296 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1297 */
1298static int
1299counters_message_get (void *cls,
1300 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1301 uint64_t *max_fragment_id,
1302 uint64_t *max_message_id,
1303 uint64_t *max_group_generation)
1304{
1305 struct Plugin *plugin = cls;
1306
1307 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_counters_message;
1308
1309 int ret = GNUNET_SYSERR;
1310
1311 struct GNUNET_MY_QueryParam params_select[] = {
1312 GNUNET_MY_query_param_auto_from_type (channel_key),
1313 GNUNET_MY_query_param_end
1314 };
1315
1316 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params_select))
1317 {
1318 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1319 "mysql execute prepared", stmt);
1320 return GNUNET_SYSERR;
1321 }
1322
1323 struct GNUNET_MY_ResultSpec results_select[] = {
1324 GNUNET_MY_result_spec_uint64 (max_fragment_id),
1325 GNUNET_MY_result_spec_uint64 (max_message_id),
1326 GNUNET_MY_result_spec_uint64 (max_group_generation),
1327 GNUNET_MY_result_spec_end
1328 };
1329
1330 ret = GNUNET_MY_extract_result (stmt, results_select);
1331
1332 if (GNUNET_OK != ret)
1333 {
1334 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1335 "mysql extract_result", stmt);
1336 return GNUNET_SYSERR;
1337 }
1338
1339 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1340 {
1341 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1342 "mysql_stmt_reset", stmt);
1343 return GNUNET_SYSERR;
1344 }
1345
1346 return ret;
1347}
1348
1349/**
1350 * Retrieve the max. values of state counters for a channel.
1351 *
1352 * @see GNUNET_PSYCSTORE_counters_get()
1353 *
1354 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1355 */
1356static int
1357counters_state_get (void *cls,
1358 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1359 uint64_t *max_state_message_id)
1360{
1361 struct Plugin *plugin = cls;
1362
1363 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_counters_state;
1364
1365 int ret = GNUNET_SYSERR;
1366
1367 struct GNUNET_MY_QueryParam params_select[] = {
1368 GNUNET_MY_query_param_auto_from_type (channel_key),
1369 GNUNET_MY_query_param_end
1370 };
1371
1372 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params_select))
1373 {
1374 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1375 "mysql execute prepared", stmt);
1376 return GNUNET_SYSERR;
1377 }
1378
1379 struct GNUNET_MY_ResultSpec results_select[] = {
1380 GNUNET_MY_result_spec_uint64 (max_state_message_id),
1381 GNUNET_MY_result_spec_end
1382 };
1383
1384 ret = GNUNET_MY_extract_result (stmt, results_select);
1385
1386 if (GNUNET_OK != ret)
1387 {
1388 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1389 "mysql extract_result", stmt);
1390 return GNUNET_SYSERR;
1391 }
1392
1393 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1394 {
1395 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1396 "mysql_stmt_reset", stmt);
1397 return GNUNET_SYSERR;
1398 }
1399
1400 return ret;
1401}
1402
1403
1404/**
1405 * Assign a value to a state variable.
1406 *
1407 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1408 */
1409static int
1410state_assign (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt,
1411 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1412 const char *name, const void *value, size_t value_size)
1413{
1414 int ret = GNUNET_SYSERR;
1415
1416 struct GNUNET_MY_QueryParam params[] = {
1417 GNUNET_MY_query_param_auto_from_type (channel_key),
1418 GNUNET_MY_query_param_string (name),
1419 GNUNET_MY_query_param_fixed_size(value, value_size),
1420 GNUNET_MY_query_param_end
1421 };
1422
1423 ret = GNUNET_MY_exec_prepared (plugin->mc, stmt, params);
1424 if (GNUNET_OK != ret)
1425 {
1426 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1427 "mysql exec_prepared", stmt);
1428 return GNUNET_SYSERR;
1429 }
1430
1431 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1432 {
1433 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1434 "mysql_stmt_reset", stmt);
1435 return GNUNET_SYSERR;
1436 }
1437
1438 return ret;
1439}
1440
1441
1442static int
1443update_message_id (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt,
1444 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1445 uint64_t message_id)
1446{
1447 struct GNUNET_MY_QueryParam params[] = {
1448 GNUNET_MY_query_param_uint64 (&message_id),
1449 GNUNET_MY_query_param_auto_from_type (channel_key),
1450 GNUNET_MY_query_param_end
1451 };
1452
1453 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc,
1454 stmt,
1455 params))
1456 {
1457 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1458 "mysql execute prepared", stmt);
1459 return GNUNET_SYSERR;
1460 }
1461
1462 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1463 {
1464 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1465 "mysql_stmt_reset", stmt);
1466 return GNUNET_SYSERR;
1467 }
1468
1469 return GNUNET_OK;
1470}
1471
1472
1473/**
1474 * Begin modifying current state.
1475 */
1476static int
1477state_modify_begin (void *cls,
1478 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1479 uint64_t message_id, uint64_t state_delta)
1480{
1481 struct Plugin *plugin = cls;
1482
1483 if (state_delta > 0)
1484 {
1485 /**
1486 * We can only apply state modifiers in the current message if modifiers in
1487 * the previous stateful message (message_id - state_delta) were already
1488 * applied.
1489 */
1490
1491 uint64_t max_state_message_id = 0;
1492 int ret = counters_state_get (plugin, channel_key, &max_state_message_id);
1493 switch (ret)
1494 {
1495 case GNUNET_OK:
1496 case GNUNET_NO: // no state yet
1497 ret = GNUNET_OK;
1498 break;
1499 default:
1500 return ret;
1501 }
1502
1503 if (max_state_message_id < message_id - state_delta)
1504 return GNUNET_NO; /* some stateful messages not yet applied */
1505 else if (message_id - state_delta < max_state_message_id)
1506 return GNUNET_NO; /* changes already applied */
1507 }
1508
1509 if (TRANSACTION_NONE != plugin->transaction)
1510 {
1511 /** @todo FIXME: wait for other transaction to finish */
1512 return GNUNET_SYSERR;
1513 }
1514 return transaction_begin (plugin, TRANSACTION_STATE_MODIFY);
1515}
1516
1517
1518/**
1519 * Set the current value of state variable.
1520 *
1521 * @see GNUNET_PSYCSTORE_state_modify()
1522 *
1523 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1524 */
1525static int
1526state_modify_op (void *cls,
1527 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1528 enum GNUNET_PSYC_Operator op,
1529 const char *name, const void *value, size_t value_size)
1530{
1531 struct Plugin *plugin = cls;
1532 GNUNET_assert (TRANSACTION_STATE_MODIFY == plugin->transaction);
1533
1534 switch (op)
1535 {
1536 case GNUNET_PSYC_OP_ASSIGN:
1537 return state_assign (plugin, plugin->insert_state_current,
1538 channel_key, name, value, value_size);
1539
1540 default: /** @todo implement more state operations */
1541 GNUNET_break (0);
1542 return GNUNET_SYSERR;
1543 }
1544}
1545
1546
1547/**
1548 * End modifying current state.
1549 */
1550static int
1551state_modify_end (void *cls,
1552 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1553 uint64_t message_id)
1554{
1555 struct Plugin *plugin = cls;
1556 GNUNET_assert (TRANSACTION_STATE_MODIFY == plugin->transaction);
1557
1558 return
1559 GNUNET_OK == exec_channel (plugin, plugin->delete_state_empty, channel_key)
1560 && GNUNET_OK == update_message_id (plugin,
1561 plugin->update_max_state_message_id,
1562 channel_key, message_id)
1563 && GNUNET_OK == transaction_commit (plugin)
1564 ? GNUNET_OK : GNUNET_SYSERR;
1565}
1566
1567
1568/**
1569 * Begin state synchronization.
1570 */
1571static int
1572state_sync_begin (void *cls,
1573 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1574{
1575 struct Plugin *plugin = cls;
1576 return exec_channel (plugin, plugin->delete_state_sync, channel_key);
1577}
1578
1579
1580/**
1581 * Assign current value of a state variable.
1582 *
1583 * @see GNUNET_PSYCSTORE_state_modify()
1584 *
1585 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1586 */
1587static int
1588state_sync_assign (void *cls,
1589 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1590 const char *name, const void *value, size_t value_size)
1591{
1592 struct Plugin *plugin = cls;
1593 return state_assign (cls, plugin->insert_state_sync,
1594 channel_key, name, value, value_size);
1595}
1596
1597
1598/**
1599 * End modifying current state.
1600 */
1601static int
1602state_sync_end (void *cls,
1603 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1604 uint64_t max_state_message_id,
1605 uint64_t state_hash_message_id)
1606{
1607 struct Plugin *plugin = cls;
1608 int ret = GNUNET_SYSERR;
1609
1610 if (TRANSACTION_NONE != plugin->transaction)
1611 {
1612 /** @todo FIXME: wait for other transaction to finish */
1613 return GNUNET_SYSERR;
1614 }
1615
1616 GNUNET_OK == transaction_begin (plugin, TRANSACTION_STATE_SYNC)
1617 && GNUNET_OK == exec_channel (plugin, plugin->delete_state, channel_key)
1618 && GNUNET_OK == exec_channel (plugin, plugin->insert_state_from_sync,
1619 channel_key)
1620 && GNUNET_OK == exec_channel (plugin, plugin->delete_state_sync,
1621 channel_key)
1622 && GNUNET_OK == update_message_id (plugin,
1623 plugin->update_state_hash_message_id,
1624 channel_key, state_hash_message_id)
1625 && GNUNET_OK == update_message_id (plugin,
1626 plugin->update_max_state_message_id,
1627 channel_key, max_state_message_id)
1628 && GNUNET_OK == transaction_commit (plugin)
1629 ? ret = GNUNET_OK
1630 : transaction_rollback (plugin);
1631 return ret;
1632}
1633
1634
1635/**
1636 * Delete the whole state.
1637 *
1638 * @see GNUNET_PSYCSTORE_state_reset()
1639 *
1640 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1641 */
1642static int
1643state_reset (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1644{
1645 struct Plugin *plugin = cls;
1646 return exec_channel (plugin, plugin->delete_state, channel_key);
1647}
1648
1649
1650/**
1651 * Update signed values of state variables in the state store.
1652 *
1653 * @see GNUNET_PSYCSTORE_state_hash_update()
1654 *
1655 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1656 */
1657static int
1658state_update_signed (void *cls,
1659 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1660{
1661 struct Plugin *plugin = cls;
1662 return exec_channel (plugin, plugin->update_state_signed, channel_key);
1663}
1664
1665
1666/**
1667 * Retrieve a state variable by name.
1668 *
1669 * @see GNUNET_PSYCSTORE_state_get()
1670 *
1671 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1672 */
1673static int
1674state_get (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1675 const char *name, GNUNET_PSYCSTORE_StateCallback cb, void *cb_cls)
1676{
1677 struct Plugin *plugin = cls;
1678 int ret = GNUNET_SYSERR;
1679 int sql_ret ;
1680
1681 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_state_one;
1682
1683 struct GNUNET_MY_QueryParam params_select[] = {
1684 GNUNET_MY_query_param_auto_from_type (channel_key),
1685 GNUNET_MY_query_param_string (name),
1686 GNUNET_MY_query_param_end
1687 };
1688
1689 void *value_current = NULL;
1690 size_t value_size = 0;
1691
1692 struct GNUNET_MY_ResultSpec results[] = {
1693 GNUNET_MY_result_spec_variable_size (&value_current, &value_size),
1694 GNUNET_MY_result_spec_end
1695 };
1696
1697 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params_select))
1698 {
1699 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1700 "mysql exec_prepared", stmt);
1701 }
1702 else
1703 {
1704 sql_ret = GNUNET_MY_extract_result (stmt, results);
1705 switch (sql_ret)
1706 {
1707 case GNUNET_NO:
1708 ret = GNUNET_NO;
1709 break;
1710
1711 case GNUNET_YES:
1712 ret = cb (cb_cls, name, value_current, value_size);
1713 break;
1714
1715 default:
1716 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1717 "mysql extract_result", stmt);
1718 }
1719 }
1720
1721 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1722 {
1723 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1724 "mysql_stmt_reset", stmt);
1725 return GNUNET_SYSERR;
1726 }
1727
1728 return ret;
1729}
1730
1731
1732/**
1733 * Retrieve all state variables for a channel with the given prefix.
1734 *
1735 * @see GNUNET_PSYCSTORE_state_get_prefix()
1736 *
1737 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1738 */
1739static int
1740state_get_prefix (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1741 const char *name, GNUNET_PSYCSTORE_StateCallback cb,
1742 void *cb_cls)
1743{
1744 struct Plugin *plugin = cls;
1745 int ret = GNUNET_SYSERR;
1746
1747 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_state_prefix;
1748
1749 uint32_t name_len = (uint32_t) strlen (name);
1750
1751 struct GNUNET_MY_QueryParam params_select[] = {
1752 GNUNET_MY_query_param_auto_from_type (channel_key),
1753 GNUNET_MY_query_param_string (name),
1754 GNUNET_MY_query_param_uint32 (&name_len),
1755 GNUNET_MY_query_param_string (name),
1756 GNUNET_MY_query_param_end
1757 };
1758
1759 char *name2 = "";
1760 void *value_current = NULL;
1761 size_t value_size = 0;
1762
1763 struct GNUNET_MY_ResultSpec results[] = {
1764 GNUNET_MY_result_spec_string (&name2),
1765 GNUNET_MY_result_spec_variable_size (&value_current, &value_size),
1766 GNUNET_MY_result_spec_end
1767 };;
1768
1769 int sql_ret;
1770
1771 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params_select))
1772 {
1773 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1774 "mysql exec_prepared", stmt);
1775 return GNUNET_SYSERR;
1776 }
1777
1778 do
1779 {
1780 sql_ret = GNUNET_MY_extract_result (stmt, results);
1781 switch (sql_ret)
1782 {
1783 case GNUNET_NO:
1784 if (ret != GNUNET_YES)
1785 ret = GNUNET_NO;
1786 break;
1787
1788 case GNUNET_YES:
1789 ret = cb (cb_cls, (const char *) name2, value_current, value_size);
1790
1791 if (ret != GNUNET_YES)
1792 sql_ret = GNUNET_NO;
1793 break;
1794
1795 default:
1796 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1797 "mysql extract_result", stmt);
1798 }
1799 }
1800 while (sql_ret == GNUNET_YES);
1801
1802 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1803 {
1804 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1805 "mysql_stmt_reset", stmt);
1806 return GNUNET_SYSERR;
1807 }
1808
1809 return ret;
1810}
1811
1812
1813/**
1814 * Retrieve all signed state variables for a channel.
1815 *
1816 * @see GNUNET_PSYCSTORE_state_get_signed()
1817 *
1818 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1819 */
1820static int
1821state_get_signed (void *cls,
1822 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1823 GNUNET_PSYCSTORE_StateCallback cb, void *cb_cls)
1824{
1825 struct Plugin *plugin = cls;
1826 int ret = GNUNET_SYSERR;
1827
1828 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_state_signed;
1829
1830 struct GNUNET_MY_QueryParam params_select[] = {
1831 GNUNET_MY_query_param_auto_from_type (channel_key),
1832 GNUNET_MY_query_param_end
1833 };
1834
1835 int sql_ret;
1836
1837 char *name = "";
1838 void *value_signed = NULL;
1839 size_t value_size = 0;
1840
1841 struct GNUNET_MY_ResultSpec results[] = {
1842 GNUNET_MY_result_spec_string (&name),
1843 GNUNET_MY_result_spec_variable_size (&value_signed, &value_size),
1844 GNUNET_MY_result_spec_end
1845 };
1846
1847 if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, stmt, params_select))
1848 {
1849 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1850 "mysql exec_prepared", stmt);
1851 return GNUNET_SYSERR;
1852 }
1853
1854 do
1855 {
1856 sql_ret = GNUNET_MY_extract_result (stmt, results);
1857 switch (sql_ret)
1858 {
1859 case GNUNET_NO:
1860 if (ret != GNUNET_YES)
1861 ret = GNUNET_NO;
1862 break;
1863
1864 case GNUNET_YES:
1865 ret = cb (cb_cls, (const char *) name, value_signed, value_size);
1866
1867 if (ret != GNUNET_YES)
1868 sql_ret = GNUNET_NO;
1869 break;
1870
1871 default:
1872 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1873 "mysql extract_result", stmt);
1874 }
1875 }
1876 while (sql_ret == GNUNET_YES);
1877
1878 if (0 != mysql_stmt_reset (GNUNET_MYSQL_statement_get_stmt (stmt)))
1879 {
1880 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1881 "mysql_stmt_reset", stmt);
1882 return GNUNET_SYSERR;
1883 }
1884
1885 return ret;
1886}
1887
1888
1889/**
1890 * Entry point for the plugin.
1891 *
1892 * @param cls The struct GNUNET_CONFIGURATION_Handle.
1893 * @return NULL on error, otherwise the plugin context
1894 */
1895void *
1896libgnunet_plugin_psycstore_mysql_init (void *cls)
1897{
1898 static struct Plugin plugin;
1899 const struct GNUNET_CONFIGURATION_Handle *cfg = cls;
1900 struct GNUNET_PSYCSTORE_PluginFunctions *api;
1901
1902 if (NULL != plugin.cfg)
1903 return NULL; /* can only initialize once! */
1904 memset (&plugin, 0, sizeof (struct Plugin));
1905 plugin.cfg = cfg;
1906 if (GNUNET_OK != database_setup (&plugin))
1907 {
1908 database_shutdown (&plugin);
1909 return NULL;
1910 }
1911 api = GNUNET_new (struct GNUNET_PSYCSTORE_PluginFunctions);
1912 api->cls = &plugin;
1913 api->membership_store = &mysql_membership_store;
1914 api->membership_test = &membership_test;
1915 api->fragment_store = &fragment_store;
1916 api->message_add_flags = &message_add_flags;
1917 api->fragment_get = &fragment_get;
1918 api->fragment_get_latest = &fragment_get_latest;
1919 api->message_get = &message_get;
1920 api->message_get_latest = &message_get_latest;
1921 api->message_get_fragment = &message_get_fragment;
1922 api->counters_message_get = &counters_message_get;
1923 api->counters_state_get = &counters_state_get;
1924 api->state_modify_begin = &state_modify_begin;
1925 api->state_modify_op = &state_modify_op;
1926 api->state_modify_end = &state_modify_end;
1927 api->state_sync_begin = &state_sync_begin;
1928 api->state_sync_assign = &state_sync_assign;
1929 api->state_sync_end = &state_sync_end;
1930 api->state_reset = &state_reset;
1931 api->state_update_signed = &state_update_signed;
1932 api->state_get = &state_get;
1933 api->state_get_prefix = &state_get_prefix;
1934 api->state_get_signed = &state_get_signed;
1935
1936 LOG (GNUNET_ERROR_TYPE_INFO, _("Mysql database running\n"));
1937 return api;
1938}
1939
1940
1941/**
1942 * Exit point from the plugin.
1943 *
1944 * @param cls The plugin context (as returned by "init")
1945 * @return Always NULL
1946 */
1947void *
1948libgnunet_plugin_psycstore_mysql_done (void *cls)
1949{
1950 struct GNUNET_PSYCSTORE_PluginFunctions *api = cls;
1951 struct Plugin *plugin = api->cls;
1952
1953 database_shutdown (plugin);
1954 plugin->cfg = NULL;
1955 GNUNET_free (api);
1956 LOG (GNUNET_ERROR_TYPE_DEBUG, "Mysql plugin is finished\n");
1957 return NULL;
1958}
1959
1960/* end of plugin_psycstore_mysql.c */
diff --git a/src/psycstore/plugin_psycstore_postgres.c b/src/psycstore/plugin_psycstore_postgres.c
deleted file mode 100644
index 33c9960b2..000000000
--- a/src/psycstore/plugin_psycstore_postgres.c
+++ /dev/null
@@ -1,1530 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2016 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psycstore/plugin_psycstore_postgres.c
23 * @brief PostgresQL-based psycstore backend
24 * @author Daniel Golle
25 * @author Gabor X Toth
26 * @author Christian Grothoff
27 * @author Christophe Genevey
28 * @author Jeffrey Burdges
29 */
30
31#include "platform.h"
32#include "gnunet_psycstore_plugin.h"
33#include "gnunet_psycstore_service.h"
34#include "gnunet_multicast_service.h"
35#include "gnunet_crypto_lib.h"
36#include "gnunet_psyc_util_lib.h"
37#include "psycstore.h"
38#include "gnunet_pq_lib.h"
39
40/**
41 * After how many ms "busy" should a DB operation fail for good? A
42 * low value makes sure that we are more responsive to requests
43 * (especially PUTs). A high value guarantees a higher success rate
44 * (SELECTs in iterate can take several seconds despite LIMIT=1).
45 *
46 * The default value of 1s should ensure that users do not experience
47 * huge latencies while at the same time allowing operations to
48 * succeed with reasonable probability.
49 */
50#define BUSY_TIMEOUT_MS 1000
51
52#define DEBUG_PSYCSTORE GNUNET_EXTRA_LOGGING
53
54#define LOG(kind,...) GNUNET_log_from (kind, "psycstore-postgres", __VA_ARGS__)
55
56enum Transactions {
57 TRANSACTION_NONE = 0,
58 TRANSACTION_STATE_MODIFY,
59 TRANSACTION_STATE_SYNC,
60};
61
62/**
63 * Context for all functions in this plugin.
64 */
65struct Plugin
66{
67
68 const struct GNUNET_CONFIGURATION_Handle *cfg;
69
70 /**
71 * Native Postgres database handle.
72 */
73 PGconn *dbh;
74
75 enum Transactions transaction;
76
77 void *cls;
78};
79
80
81/**
82 * Initialize the database connections and associated
83 * data structures (create tables and indices
84 * as needed as well).
85 *
86 * @param plugin the plugin context (state for this module)
87 * @return #GNUNET_OK on success
88 */
89static int
90database_setup (struct Plugin *plugin)
91{
92 struct GNUNET_PQ_ExecuteStatement es[] = {
93 GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS channels (\n"
94 " id SERIAL,\n"
95 " pub_key BYTEA NOT NULL CHECK (LENGTH(pub_key)=32),\n"
96 " max_state_message_id BIGINT,\n"
97 " state_hash_message_id BIGINT,\n"
98 " PRIMARY KEY(id)\n"
99 ")"
100 "WITH OIDS"),
101 GNUNET_PQ_make_execute ("CREATE UNIQUE INDEX IF NOT EXISTS channel_pub_key_idx \n"
102 " ON channels (pub_key)"),
103 GNUNET_PQ_make_execute ("CREATE OR REPLACE FUNCTION get_chan_id(BYTEA) RETURNS INTEGER AS \n"
104 " 'SELECT id FROM channels WHERE pub_key=$1;' LANGUAGE SQL STABLE \n"
105 "RETURNS NULL ON NULL INPUT"),
106 GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS slaves (\n"
107 " id SERIAL,\n"
108 " pub_key BYTEA NOT NULL CHECK (LENGTH(pub_key)=32),\n"
109 " PRIMARY KEY(id)\n"
110 ")"
111 "WITH OIDS"),
112 GNUNET_PQ_make_execute ("CREATE UNIQUE INDEX IF NOT EXISTS slaves_pub_key_idx \n"
113 " ON slaves (pub_key)"),
114 GNUNET_PQ_make_execute ("CREATE OR REPLACE FUNCTION get_slave_id(BYTEA) RETURNS INTEGER AS \n"
115 " 'SELECT id FROM slaves WHERE pub_key=$1;' LANGUAGE SQL STABLE \n"
116 "RETURNS NULL ON NULL INPUT"),
117 GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS membership (\n"
118 " channel_id BIGINT NOT NULL REFERENCES channels(id),\n"
119 " slave_id BIGINT NOT NULL REFERENCES slaves(id),\n"
120 " did_join INT NOT NULL,\n"
121 " announced_at BIGINT NOT NULL,\n"
122 " effective_since BIGINT NOT NULL,\n"
123 " group_generation BIGINT NOT NULL\n"
124 ")"
125 "WITH OIDS"),
126 GNUNET_PQ_make_execute ("CREATE INDEX IF NOT EXISTS idx_membership_channel_id_slave_id "
127 "ON membership (channel_id, slave_id)"),
128 /** @todo messages table: add method_name column */
129 GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS messages (\n"
130 " channel_id BIGINT NOT NULL REFERENCES channels(id),\n"
131 " hop_counter INT NOT NULL,\n"
132 " signature BYTEA CHECK (LENGTH(signature)=64),\n"
133 " purpose BYTEA CHECK (LENGTH(purpose)=8),\n"
134 " fragment_id BIGINT NOT NULL,\n"
135 " fragment_offset BIGINT NOT NULL,\n"
136 " message_id BIGINT NOT NULL,\n"
137 " group_generation BIGINT NOT NULL,\n"
138 " multicast_flags INT NOT NULL,\n"
139 " psycstore_flags INT NOT NULL,\n"
140 " data BYTEA,\n"
141 " PRIMARY KEY (channel_id, fragment_id),\n"
142 " UNIQUE (channel_id, message_id, fragment_offset)\n"
143 ")"
144 "WITH OIDS"),
145 GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS state (\n"
146 " channel_id BIGINT NOT NULL REFERENCES channels(id),\n"
147 " name TEXT NOT NULL,\n"
148 " value_current BYTEA,\n"
149 " value_signed BYTEA,\n"
150 " PRIMARY KEY (channel_id, name)\n"
151 ")"
152 "WITH OIDS"),
153 GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS state_sync (\n"
154 " channel_id BIGINT NOT NULL REFERENCES channels(id),\n"
155 " name TEXT NOT NULL,\n"
156 " value BYTEA,\n"
157 " PRIMARY KEY (channel_id, name)\n"
158 ")"
159 "WITH OIDS"),
160 GNUNET_PQ_EXECUTE_STATEMENT_END
161 };
162
163 /* Open database and precompile statements */
164 plugin->dbh = GNUNET_PQ_connect_with_cfg (plugin->cfg,
165 "psycstore-postgres");
166 if (NULL == plugin->dbh)
167 return GNUNET_SYSERR;
168 if (GNUNET_OK !=
169 GNUNET_PQ_exec_statements (plugin->dbh,
170 es))
171 {
172 PQfinish (plugin->dbh);
173 plugin->dbh = NULL;
174 return GNUNET_SYSERR;
175 }
176
177 /* Prepare statements */
178 {
179 struct GNUNET_PQ_PreparedStatement ps[] = {
180 GNUNET_PQ_make_prepare ("transaction_begin",
181 "BEGIN", 0),
182 GNUNET_PQ_make_prepare ("transaction_commit",
183 "COMMIT", 0),
184 GNUNET_PQ_make_prepare ("transaction_rollback",
185 "ROLLBACK", 0),
186 GNUNET_PQ_make_prepare ("insert_channel_key",
187 "INSERT INTO channels (pub_key) VALUES ($1)"
188 " ON CONFLICT DO NOTHING", 1),
189 GNUNET_PQ_make_prepare ("insert_slave_key",
190 "INSERT INTO slaves (pub_key) VALUES ($1)"
191 " ON CONFLICT DO NOTHING", 1),
192 GNUNET_PQ_make_prepare ("insert_membership",
193 "INSERT INTO membership\n"
194 " (channel_id, slave_id, did_join, announced_at,\n"
195 " effective_since, group_generation)\n"
196 "VALUES (get_chan_id($1),\n"
197 " get_slave_id($2),\n"
198 " $3, $4, $5, $6)", 6),
199 GNUNET_PQ_make_prepare ("select_membership",
200 "SELECT did_join FROM membership\n"
201 "WHERE channel_id = get_chan_id($1)\n"
202 " AND slave_id = get_slave_id($2)\n"
203 " AND effective_since <= $3 AND did_join = 1\n"
204 "ORDER BY announced_at DESC LIMIT 1", 3),
205 GNUNET_PQ_make_prepare ("insert_fragment",
206 "INSERT INTO messages\n"
207 " (channel_id, hop_counter, signature, purpose,\n"
208 " fragment_id, fragment_offset, message_id,\n"
209 " group_generation, multicast_flags, psycstore_flags, data)\n"
210 "VALUES (get_chan_id($1),\n"
211 " $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)"
212 "ON CONFLICT DO NOTHING", 11),
213 GNUNET_PQ_make_prepare ("update_message_flags",
214 "UPDATE messages\n"
215 "SET psycstore_flags = psycstore_flags | $1\n"
216 "WHERE channel_id = get_chan_id($2) \n"
217 " AND message_id = $3 AND fragment_offset = 0", 3),
218 GNUNET_PQ_make_prepare ("select_fragments",
219 "SELECT hop_counter, signature, purpose, fragment_id,\n"
220 " fragment_offset, message_id, group_generation,\n"
221 " multicast_flags, psycstore_flags, data\n"
222 "FROM messages\n"
223 "WHERE channel_id = get_chan_id($1) \n"
224 " AND $2 <= fragment_id AND fragment_id <= $3", 3),
225 /** @todo select_messages: add method_prefix filter */
226 GNUNET_PQ_make_prepare ("select_messages",
227 "SELECT hop_counter, signature, purpose, fragment_id,\n"
228 " fragment_offset, message_id, group_generation,\n"
229 " multicast_flags, psycstore_flags, data\n"
230 "FROM messages\n"
231 "WHERE channel_id = get_chan_id($1) \n"
232 " AND $2 <= message_id AND message_id <= $3\n"
233 "LIMIT $4;", 4),
234 /** @todo select_latest_messages: add method_prefix filter */
235 GNUNET_PQ_make_prepare ("select_latest_fragments",
236 "SELECT rev.hop_counter AS hop_counter,\n"
237 " rev.signature AS signature,\n"
238 " rev.purpose AS purpose,\n"
239 " rev.fragment_id AS fragment_id,\n"
240 " rev.fragment_offset AS fragment_offset,\n"
241 " rev.message_id AS message_id,\n"
242 " rev.group_generation AS group_generation,\n"
243 " rev.multicast_flags AS multicast_flags,\n"
244 " rev.psycstore_flags AS psycstore_flags,\n"
245 " rev.data AS data\n"
246 " FROM\n"
247 " (SELECT hop_counter, signature, purpose, fragment_id,\n"
248 " fragment_offset, message_id, group_generation,\n"
249 " multicast_flags, psycstore_flags, data \n"
250 " FROM messages\n"
251 " WHERE channel_id = get_chan_id($1) \n"
252 " ORDER BY fragment_id DESC\n"
253 " LIMIT $2) AS rev\n"
254 " ORDER BY rev.fragment_id;", 2),
255 GNUNET_PQ_make_prepare ("select_latest_messages",
256 "SELECT hop_counter, signature, purpose, fragment_id,\n"
257 " fragment_offset, message_id, group_generation,\n"
258 " multicast_flags, psycstore_flags, data\n"
259 "FROM messages\n"
260 "WHERE channel_id = get_chan_id($1)\n"
261 " AND message_id IN\n"
262 " (SELECT message_id\n"
263 " FROM messages\n"
264 " WHERE channel_id = get_chan_id($2) \n"
265 " GROUP BY message_id\n"
266 " ORDER BY message_id\n"
267 " DESC LIMIT $3)\n"
268 "ORDER BY fragment_id", 3),
269 GNUNET_PQ_make_prepare ("select_message_fragment",
270 "SELECT hop_counter, signature, purpose, fragment_id,\n"
271 " fragment_offset, message_id, group_generation,\n"
272 " multicast_flags, psycstore_flags, data\n"
273 "FROM messages\n"
274 "WHERE channel_id = get_chan_id($1) \n"
275 " AND message_id = $2 AND fragment_offset = $3", 3),
276 GNUNET_PQ_make_prepare ("select_counters_message",
277 "SELECT fragment_id, message_id, group_generation\n"
278 "FROM messages\n"
279 "WHERE channel_id = get_chan_id($1)\n"
280 "ORDER BY fragment_id DESC LIMIT 1", 1),
281 GNUNET_PQ_make_prepare ("select_counters_state",
282 "SELECT max_state_message_id\n"
283 "FROM channels\n"
284 "WHERE pub_key = $1 AND max_state_message_id IS NOT NULL", 1),
285 GNUNET_PQ_make_prepare ("update_max_state_message_id",
286 "UPDATE channels\n"
287 "SET max_state_message_id = $1\n"
288 "WHERE pub_key = $2", 2),
289
290 GNUNET_PQ_make_prepare ("update_state_hash_message_id",
291 "UPDATE channels\n"
292 "SET state_hash_message_id = $1\n"
293 "WHERE pub_key = $2", 2),
294 GNUNET_PQ_make_prepare ("insert_state_current",
295 "INSERT INTO state\n"
296 " (channel_id, name, value_current, value_signed)\n"
297 "SELECT new.channel_id, new.name,\n"
298 " new.value_current, old.value_signed\n"
299 "FROM (SELECT get_chan_id($1) AS channel_id,\n"
300 " $2::TEXT AS name, $3::BYTEA AS value_current) AS new\n"
301 "LEFT JOIN (SELECT channel_id, name, value_signed\n"
302 " FROM state) AS old\n"
303 "ON new.channel_id = old.channel_id AND new.name = old.name\n"
304 "ON CONFLICT (channel_id, name)\n"
305 " DO UPDATE SET value_current = EXCLUDED.value_current,\n"
306 " value_signed = EXCLUDED.value_signed", 3),
307 GNUNET_PQ_make_prepare ("delete_state_empty",
308 "DELETE FROM state\n"
309 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = $1)\n"
310 " AND (value_current IS NULL OR length(value_current) = 0)\n"
311 " AND (value_signed IS NULL OR length(value_signed) = 0)", 1),
312 GNUNET_PQ_make_prepare ("update_state_signed",
313 "UPDATE state\n"
314 "SET value_signed = value_current\n"
315 "WHERE channel_id = get_chan_id($1) ", 1),
316 GNUNET_PQ_make_prepare ("delete_state",
317 "DELETE FROM state\n"
318 "WHERE channel_id = get_chan_id($1) ", 1),
319 GNUNET_PQ_make_prepare ("insert_state_sync",
320 "INSERT INTO state_sync (channel_id, name, value)\n"
321 "VALUES (get_chan_id($1), $2, $3)", 3),
322 GNUNET_PQ_make_prepare ("insert_state_from_sync",
323 "INSERT INTO state\n"
324 " (channel_id, name, value_current, value_signed)\n"
325 "SELECT channel_id, name, value, value\n"
326 "FROM state_sync\n"
327 "WHERE channel_id = get_chan_id($1)", 1),
328 GNUNET_PQ_make_prepare ("delete_state_sync",
329 "DELETE FROM state_sync\n"
330 "WHERE channel_id = get_chan_id($1)", 1),
331 GNUNET_PQ_make_prepare ("select_state_one",
332 "SELECT value_current\n"
333 "FROM state\n"
334 "WHERE channel_id = get_chan_id($1)\n"
335 " AND name = $2", 2),
336 GNUNET_PQ_make_prepare ("select_state_prefix",
337 "SELECT name, value_current\n"
338 "FROM state\n"
339 "WHERE channel_id = get_chan_id($1)\n"
340 " AND (name = $2 OR substr(name, 1, $3) = $4)", 4),
341 GNUNET_PQ_make_prepare ("select_state_signed",
342 "SELECT name, value_signed\n"
343 "FROM state\n"
344 "WHERE channel_id = get_chan_id($1)\n"
345 " AND value_signed IS NOT NULL", 1),
346 GNUNET_PQ_PREPARED_STATEMENT_END
347 };
348
349 if (GNUNET_OK !=
350 GNUNET_PQ_prepare_statements (plugin->dbh,
351 ps))
352 {
353 PQfinish (plugin->dbh);
354 plugin->dbh = NULL;
355 return GNUNET_SYSERR;
356 }
357 }
358
359 return GNUNET_OK;
360}
361
362
363/**
364 * Shutdown database connection and associate data
365 * structures.
366 * @param plugin the plugin context (state for this module)
367 */
368static void
369database_shutdown (struct Plugin *plugin)
370{
371 PQfinish (plugin->dbh);
372 plugin->dbh = NULL;
373}
374
375
376/**
377 * Execute a prepared statement with a @a channel_key argument.
378 *
379 * @param plugin Plugin handle.
380 * @param stmt Statement to execute.
381 * @param channel_key Public key of the channel.
382 *
383 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
384 */
385static int
386exec_channel (struct Plugin *plugin, const char *stmt,
387 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
388{
389 struct GNUNET_PQ_QueryParam params[] = {
390 GNUNET_PQ_query_param_auto_from_type (channel_key),
391 GNUNET_PQ_query_param_end
392 };
393
394 if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
395 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, stmt, params))
396 return GNUNET_SYSERR;
397
398 return GNUNET_OK;
399}
400
401
402/**
403 * Begin a transaction.
404 */
405static int
406transaction_begin (struct Plugin *plugin, enum Transactions transaction)
407{
408 struct GNUNET_PQ_QueryParam params[] = {
409 GNUNET_PQ_query_param_end
410 };
411
412 if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
413 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, "transaction_begin", params))
414 return GNUNET_SYSERR;
415
416 plugin->transaction = transaction;
417 return GNUNET_OK;
418}
419
420
421/**
422 * Commit current transaction.
423 */
424static int
425transaction_commit (struct Plugin *plugin)
426{
427 struct GNUNET_PQ_QueryParam params[] = {
428 GNUNET_PQ_query_param_end
429 };
430
431 if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
432 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, "transaction_commit", params))
433 return GNUNET_SYSERR;
434
435 plugin->transaction = TRANSACTION_NONE;
436 return GNUNET_OK;
437}
438
439
440/**
441 * Roll back current transaction.
442 */
443static int
444transaction_rollback (struct Plugin *plugin)
445{
446 struct GNUNET_PQ_QueryParam params[] = {
447 GNUNET_PQ_query_param_end
448 };
449
450 if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
451 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, "transaction_rollback", params))
452 return GNUNET_SYSERR;
453
454 plugin->transaction = TRANSACTION_NONE;
455 return GNUNET_OK;
456}
457
458
459static int
460channel_key_store (struct Plugin *plugin,
461 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
462{
463 struct GNUNET_PQ_QueryParam params[] = {
464 GNUNET_PQ_query_param_auto_from_type (channel_key),
465 GNUNET_PQ_query_param_end
466 };
467
468 if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
469 GNUNET_PQ_eval_prepared_non_select (plugin->dbh,
470 "insert_channel_key",
471 params))
472 return GNUNET_SYSERR;
473
474 return GNUNET_OK;
475}
476
477
478static int
479slave_key_store (struct Plugin *plugin,
480 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key)
481{
482 struct GNUNET_PQ_QueryParam params[] = {
483 GNUNET_PQ_query_param_auto_from_type (slave_key),
484 GNUNET_PQ_query_param_end
485 };
486
487 if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
488 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, "insert_slave_key", params))
489 return GNUNET_SYSERR;
490
491 return GNUNET_OK;
492}
493
494
495/**
496 * Store join/leave events for a PSYC channel in order to be able to answer
497 * membership test queries later.
498 *
499 * @see GNUNET_PSYCSTORE_membership_store()
500 *
501 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
502 */
503static int
504postgres_membership_store (void *cls,
505 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
506 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
507 int did_join,
508 uint64_t announced_at,
509 uint64_t effective_since,
510 uint64_t group_generation)
511{
512 struct Plugin *plugin = cls;
513 uint32_t idid_join = (uint32_t) did_join;
514
515 GNUNET_assert (TRANSACTION_NONE == plugin->transaction);
516
517 if ( (announced_at > INT64_MAX) ||
518 (effective_since > INT64_MAX) ||
519 (group_generation > INT64_MAX) )
520 {
521 GNUNET_break (0);
522 return GNUNET_SYSERR;
523 }
524
525 if ( (GNUNET_OK !=
526 channel_key_store (plugin, channel_key)) ||
527 (GNUNET_OK !=
528 slave_key_store (plugin, slave_key)) )
529 return GNUNET_SYSERR;
530
531 struct GNUNET_PQ_QueryParam params[] = {
532 GNUNET_PQ_query_param_auto_from_type (channel_key),
533 GNUNET_PQ_query_param_auto_from_type (slave_key),
534 GNUNET_PQ_query_param_uint32 (&idid_join),
535 GNUNET_PQ_query_param_uint64 (&announced_at),
536 GNUNET_PQ_query_param_uint64 (&effective_since),
537 GNUNET_PQ_query_param_uint64 (&group_generation),
538 GNUNET_PQ_query_param_end
539 };
540
541 if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
542 GNUNET_PQ_eval_prepared_non_select (plugin->dbh,
543 "insert_membership",
544 params))
545 return GNUNET_SYSERR;
546
547 return GNUNET_OK;
548}
549
550/**
551 * Test if a member was admitted to the channel at the given message ID.
552 *
553 * @see GNUNET_PSYCSTORE_membership_test()
554 *
555 * @return #GNUNET_YES if the member was admitted, #GNUNET_NO if not,
556 * #GNUNET_SYSERR if there was en error.
557 */
558static int
559membership_test (void *cls,
560 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
561 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
562 uint64_t message_id)
563{
564 struct Plugin *plugin = cls;
565
566 uint32_t did_join = 0;
567
568 struct GNUNET_PQ_QueryParam params_select[] = {
569 GNUNET_PQ_query_param_auto_from_type (channel_key),
570 GNUNET_PQ_query_param_auto_from_type (slave_key),
571 GNUNET_PQ_query_param_uint64 (&message_id),
572 GNUNET_PQ_query_param_end
573 };
574
575 struct GNUNET_PQ_ResultSpec results_select[] = {
576 GNUNET_PQ_result_spec_uint32 ("did_join", &did_join),
577 GNUNET_PQ_result_spec_end
578 };
579
580 if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
581 GNUNET_PQ_eval_prepared_singleton_select (plugin->dbh, "select_membership",
582 params_select, results_select))
583 return GNUNET_SYSERR;
584
585 return GNUNET_OK;
586}
587
588/**
589 * Store a message fragment sent to a channel.
590 *
591 * @see GNUNET_PSYCSTORE_fragment_store()
592 *
593 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
594 */
595static int
596fragment_store (void *cls,
597 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
598 const struct GNUNET_MULTICAST_MessageHeader *msg,
599 uint32_t psycstore_flags)
600{
601 struct Plugin *plugin = cls;
602
603 GNUNET_assert (TRANSACTION_NONE == plugin->transaction);
604
605 uint64_t fragment_id = GNUNET_ntohll (msg->fragment_id);
606
607 uint64_t fragment_offset = GNUNET_ntohll (msg->fragment_offset);
608 uint64_t message_id = GNUNET_ntohll (msg->message_id);
609 uint64_t group_generation = GNUNET_ntohll (msg->group_generation);
610
611 uint32_t hop_counter = ntohl(msg->hop_counter);
612 uint32_t flags = ntohl(msg->flags);
613
614 if (fragment_id > INT64_MAX || fragment_offset > INT64_MAX ||
615 message_id > INT64_MAX || group_generation > INT64_MAX)
616 {
617 LOG(GNUNET_ERROR_TYPE_ERROR,
618 "Tried to store fragment with a field > INT64_MAX: "
619 "%lu, %lu, %lu, %lu\n", fragment_id, fragment_offset,
620 message_id, group_generation);
621 GNUNET_break (0);
622 return GNUNET_SYSERR;
623 }
624
625 if (GNUNET_OK != channel_key_store (plugin, channel_key))
626 return GNUNET_SYSERR;
627
628 struct GNUNET_PQ_QueryParam params_insert[] = {
629 GNUNET_PQ_query_param_auto_from_type (channel_key),
630 GNUNET_PQ_query_param_uint32 (&hop_counter),
631 GNUNET_PQ_query_param_auto_from_type (&msg->signature),
632 GNUNET_PQ_query_param_auto_from_type (&msg->purpose),
633 GNUNET_PQ_query_param_uint64 (&fragment_id),
634 GNUNET_PQ_query_param_uint64 (&fragment_offset),
635 GNUNET_PQ_query_param_uint64 (&message_id),
636 GNUNET_PQ_query_param_uint64 (&group_generation),
637 GNUNET_PQ_query_param_uint32 (&flags),
638 GNUNET_PQ_query_param_uint32 (&psycstore_flags),
639 GNUNET_PQ_query_param_fixed_size (&msg[1], ntohs (msg->header.size) - sizeof (*msg)),
640 GNUNET_PQ_query_param_end
641 };
642
643 if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
644 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, "insert_fragment", params_insert))
645 return GNUNET_SYSERR;
646
647 return GNUNET_OK;
648}
649
650/**
651 * Set additional flags for a given message.
652 *
653 * They are OR'd with any existing flags set.
654 *
655 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
656 */
657static int
658message_add_flags (void *cls,
659 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
660 uint64_t message_id,
661 uint32_t psycstore_flags)
662{
663 struct Plugin *plugin = cls;
664
665 struct GNUNET_PQ_QueryParam params_update[] = {
666 GNUNET_PQ_query_param_uint32 (&psycstore_flags),
667 GNUNET_PQ_query_param_auto_from_type (channel_key),
668 GNUNET_PQ_query_param_uint64 (&message_id),
669 GNUNET_PQ_query_param_end
670 };
671
672 if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
673 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, "update_message_flags", params_update))
674 return GNUNET_SYSERR;
675
676 return GNUNET_OK;
677}
678
679
680/**
681 * Closure for #fragment_rows.
682 */
683struct FragmentRowsContext {
684 GNUNET_PSYCSTORE_FragmentCallback cb;
685 void *cb_cls;
686
687 uint64_t *returned_fragments;
688
689 /* I preserved this but I do not see the point since
690 * it cannot stop the loop early and gets overwritten ?? */
691 int ret;
692};
693
694
695/**
696 * Callback that retrieves the results of a SELECT statement
697 * reading form the messages table.
698 *
699 * Only passed to GNUNET_PQ_eval_prepared_multi_select and
700 * has type GNUNET_PQ_PostgresResultHandler.
701 *
702 * @param cls closure
703 * @param result the postgres result
704 * @param num_result the number of results in @a result
705 */
706void fragment_rows (void *cls,
707 PGresult *res,
708 unsigned int num_results)
709{
710 struct FragmentRowsContext *c = cls;
711
712 for (unsigned int i=0;i<num_results;i++)
713 {
714 uint32_t hop_counter;
715 void *signature = NULL;
716 void *purpose = NULL;
717 size_t signature_size;
718 size_t purpose_size;
719 uint64_t fragment_id;
720 uint64_t fragment_offset;
721 uint64_t message_id;
722 uint64_t group_generation;
723 uint32_t flags;
724 void *buf;
725 size_t buf_size;
726 uint32_t msg_flags;
727 struct GNUNET_PQ_ResultSpec results[] = {
728 GNUNET_PQ_result_spec_uint32 ("hop_counter", &hop_counter),
729 GNUNET_PQ_result_spec_variable_size ("signature", &signature, &signature_size),
730 GNUNET_PQ_result_spec_variable_size ("purpose", &purpose, &purpose_size),
731 GNUNET_PQ_result_spec_uint64 ("fragment_id", &fragment_id),
732 GNUNET_PQ_result_spec_uint64 ("fragment_offset", &fragment_offset),
733 GNUNET_PQ_result_spec_uint64 ("message_id", &message_id),
734 GNUNET_PQ_result_spec_uint64 ("group_generation", &group_generation),
735 GNUNET_PQ_result_spec_uint32 ("multicast_flags", &msg_flags),
736 GNUNET_PQ_result_spec_uint32 ("psycstore_flags", &flags),
737 GNUNET_PQ_result_spec_variable_size ("data", &buf, &buf_size),
738 GNUNET_PQ_result_spec_end
739 };
740 struct GNUNET_MULTICAST_MessageHeader *mp;
741
742 if (GNUNET_YES != GNUNET_PQ_extract_result (res, results, i))
743 {
744 GNUNET_PQ_cleanup_result(results); /* missing previously, a memory leak?? */
745 break; /* nothing more?? */
746 }
747
748 mp = GNUNET_malloc (sizeof (*mp) + buf_size);
749
750 mp->header.size = htons (sizeof (*mp) + buf_size);
751 mp->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE);
752 mp->hop_counter = htonl (hop_counter);
753 GNUNET_memcpy (&mp->signature,
754 signature, signature_size);
755 GNUNET_memcpy (&mp->purpose,
756 purpose, purpose_size);
757 mp->fragment_id = GNUNET_htonll (fragment_id);
758 mp->fragment_offset = GNUNET_htonll (fragment_offset);
759 mp->message_id = GNUNET_htonll (message_id);
760 mp->group_generation = GNUNET_htonll (group_generation);
761 mp->flags = htonl(msg_flags);
762
763 GNUNET_memcpy (&mp[1],
764 buf, buf_size);
765 GNUNET_PQ_cleanup_result(results);
766 c->ret = c->cb (c->cb_cls, mp, (enum GNUNET_PSYCSTORE_MessageFlags) flags);
767 if (NULL != c->returned_fragments)
768 (*c->returned_fragments)++;
769 }
770}
771
772
773static int
774fragment_select (struct Plugin *plugin,
775 const char *stmt,
776 struct GNUNET_PQ_QueryParam *params,
777 uint64_t *returned_fragments,
778 GNUNET_PSYCSTORE_FragmentCallback cb,
779 void *cb_cls)
780{
781 /* Stack based closure */
782 struct FragmentRowsContext frc = {
783 .cb = cb,
784 .cb_cls = cb_cls,
785 .returned_fragments = returned_fragments,
786 .ret = GNUNET_SYSERR
787 };
788
789 if (0 > GNUNET_PQ_eval_prepared_multi_select (plugin->dbh,
790 stmt, params,
791 &fragment_rows, &frc))
792 return GNUNET_SYSERR;
793 return frc.ret; /* GNUNET_OK ?? */
794}
795
796/**
797 * Retrieve a message fragment range by fragment ID.
798 *
799 * @see GNUNET_PSYCSTORE_fragment_get()
800 *
801 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
802 */
803static int
804fragment_get (void *cls,
805 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
806 uint64_t first_fragment_id,
807 uint64_t last_fragment_id,
808 uint64_t *returned_fragments,
809 GNUNET_PSYCSTORE_FragmentCallback cb,
810 void *cb_cls)
811{
812 struct Plugin *plugin = cls;
813 struct GNUNET_PQ_QueryParam params_select[] = {
814 GNUNET_PQ_query_param_auto_from_type (channel_key),
815 GNUNET_PQ_query_param_uint64 (&first_fragment_id),
816 GNUNET_PQ_query_param_uint64 (&last_fragment_id),
817 GNUNET_PQ_query_param_end
818 };
819
820 *returned_fragments = 0;
821 return fragment_select (plugin,
822 "select_fragments",
823 params_select,
824 returned_fragments,
825 cb, cb_cls);
826}
827
828
829/**
830 * Retrieve a message fragment range by fragment ID.
831 *
832 * @see GNUNET_PSYCSTORE_fragment_get_latest()
833 *
834 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
835 */
836static int
837fragment_get_latest (void *cls,
838 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
839 uint64_t fragment_limit,
840 uint64_t *returned_fragments,
841 GNUNET_PSYCSTORE_FragmentCallback cb,
842 void *cb_cls)
843{
844 struct Plugin *plugin = cls;
845
846 *returned_fragments = 0;
847
848 struct GNUNET_PQ_QueryParam params_select[] = {
849 GNUNET_PQ_query_param_auto_from_type (channel_key),
850 GNUNET_PQ_query_param_uint64 (&fragment_limit),
851 GNUNET_PQ_query_param_end
852 };
853
854 return fragment_select (plugin,
855 "select_latest_fragments",
856 params_select,
857 returned_fragments,
858 cb, cb_cls);
859}
860
861
862/**
863 * Retrieve all fragments of a message ID range.
864 *
865 * @see GNUNET_PSYCSTORE_message_get()
866 *
867 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
868 */
869static int
870message_get (void *cls,
871 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
872 uint64_t first_message_id,
873 uint64_t last_message_id,
874 uint64_t fragment_limit,
875 uint64_t *returned_fragments,
876 GNUNET_PSYCSTORE_FragmentCallback cb,
877 void *cb_cls)
878{
879 struct Plugin *plugin = cls;
880 struct GNUNET_PQ_QueryParam params_select[] = {
881 GNUNET_PQ_query_param_auto_from_type (channel_key),
882 GNUNET_PQ_query_param_uint64 (&first_message_id),
883 GNUNET_PQ_query_param_uint64 (&last_message_id),
884 GNUNET_PQ_query_param_uint64 (&fragment_limit),
885 GNUNET_PQ_query_param_end
886 };
887
888 if (0 == fragment_limit)
889 fragment_limit = INT64_MAX;
890 *returned_fragments = 0;
891 return fragment_select (plugin,
892 "select_messages",
893 params_select,
894 returned_fragments,
895 cb, cb_cls);
896}
897
898
899/**
900 * Retrieve all fragments of the latest messages.
901 *
902 * @see GNUNET_PSYCSTORE_message_get_latest()
903 *
904 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
905 */
906static int
907message_get_latest (void *cls,
908 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
909 uint64_t message_limit,
910 uint64_t *returned_fragments,
911 GNUNET_PSYCSTORE_FragmentCallback cb,
912 void *cb_cls)
913{
914 struct Plugin *plugin = cls;
915 struct GNUNET_PQ_QueryParam params_select[] = {
916 GNUNET_PQ_query_param_auto_from_type (channel_key),
917 GNUNET_PQ_query_param_auto_from_type (channel_key),
918 GNUNET_PQ_query_param_uint64 (&message_limit),
919 GNUNET_PQ_query_param_end
920 };
921
922 *returned_fragments = 0;
923 return fragment_select (plugin,
924 "select_latest_messages",
925 params_select,
926 returned_fragments,
927 cb, cb_cls);
928}
929
930
931/**
932 * Retrieve a fragment of message specified by its message ID and fragment
933 * offset.
934 *
935 * @see GNUNET_PSYCSTORE_message_get_fragment()
936 *
937 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
938 */
939static int
940message_get_fragment (void *cls,
941 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
942 uint64_t message_id,
943 uint64_t fragment_offset,
944 GNUNET_PSYCSTORE_FragmentCallback cb,
945 void *cb_cls)
946{
947 struct Plugin *plugin = cls;
948 const char *stmt = "select_message_fragment";
949
950 struct GNUNET_PQ_QueryParam params_select[] = {
951 GNUNET_PQ_query_param_auto_from_type (channel_key),
952 GNUNET_PQ_query_param_uint64 (&message_id),
953 GNUNET_PQ_query_param_uint64 (&fragment_offset),
954 GNUNET_PQ_query_param_end
955 };
956
957 /* Stack based closure */
958 struct FragmentRowsContext frc = {
959 .cb = cb,
960 .cb_cls = cb_cls,
961 .returned_fragments = NULL,
962 .ret = GNUNET_SYSERR
963 };
964
965 if (0 > GNUNET_PQ_eval_prepared_multi_select (plugin->dbh,
966 stmt, params_select,
967 &fragment_rows, &frc))
968 return GNUNET_SYSERR;
969 return frc.ret; /* GNUNET_OK ?? */
970}
971
972/**
973 * Retrieve the max. values of message counters for a channel.
974 *
975 * @see GNUNET_PSYCSTORE_counters_get()
976 *
977 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
978 */
979static int
980counters_message_get (void *cls,
981 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
982 uint64_t *max_fragment_id,
983 uint64_t *max_message_id,
984 uint64_t *max_group_generation)
985{
986 struct Plugin *plugin = cls;
987
988 const char *stmt = "select_counters_message";
989
990 struct GNUNET_PQ_QueryParam params_select[] = {
991 GNUNET_PQ_query_param_auto_from_type (channel_key),
992 GNUNET_PQ_query_param_end
993 };
994
995 struct GNUNET_PQ_ResultSpec results_select[] = {
996 GNUNET_PQ_result_spec_uint64 ("fragment_id", max_fragment_id),
997 GNUNET_PQ_result_spec_uint64 ("message_id", max_message_id),
998 GNUNET_PQ_result_spec_uint64 ("group_generation", max_group_generation),
999 GNUNET_PQ_result_spec_end
1000 };
1001
1002 if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
1003 GNUNET_PQ_eval_prepared_singleton_select (plugin->dbh, stmt,
1004 params_select, results_select))
1005 return GNUNET_SYSERR;
1006
1007 return GNUNET_OK;
1008}
1009
1010/**
1011 * Retrieve the max. values of state counters for a channel.
1012 *
1013 * @see GNUNET_PSYCSTORE_counters_get()
1014 *
1015 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1016 */
1017static int
1018counters_state_get (void *cls,
1019 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1020 uint64_t *max_state_message_id)
1021{
1022 struct Plugin *plugin = cls;
1023
1024 const char *stmt = "select_counters_state";
1025
1026 struct GNUNET_PQ_QueryParam params_select[] = {
1027 GNUNET_PQ_query_param_auto_from_type (channel_key),
1028 GNUNET_PQ_query_param_end
1029 };
1030
1031 struct GNUNET_PQ_ResultSpec results_select[] = {
1032 GNUNET_PQ_result_spec_uint64 ("max_state_message_id", max_state_message_id),
1033 GNUNET_PQ_result_spec_end
1034 };
1035
1036 if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
1037 GNUNET_PQ_eval_prepared_singleton_select (plugin->dbh, stmt,
1038 params_select, results_select))
1039 return GNUNET_SYSERR;
1040
1041 return GNUNET_OK;
1042}
1043
1044
1045/**
1046 * Assign a value to a state variable.
1047 *
1048 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1049 */
1050static int
1051state_assign (struct Plugin *plugin, const char *stmt,
1052 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1053 const char *name, const void *value, size_t value_size)
1054{
1055 struct GNUNET_PQ_QueryParam params[] = {
1056 GNUNET_PQ_query_param_auto_from_type (channel_key),
1057 GNUNET_PQ_query_param_string (name),
1058 GNUNET_PQ_query_param_fixed_size (value, value_size),
1059 GNUNET_PQ_query_param_end
1060 };
1061
1062 if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
1063 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, stmt, params))
1064 return GNUNET_SYSERR;
1065
1066 return GNUNET_OK;
1067}
1068
1069
1070static int
1071update_message_id (struct Plugin *plugin,
1072 const char *stmt,
1073 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1074 uint64_t message_id)
1075{
1076 struct GNUNET_PQ_QueryParam params[] = {
1077 GNUNET_PQ_query_param_uint64 (&message_id),
1078 GNUNET_PQ_query_param_auto_from_type (channel_key),
1079 GNUNET_PQ_query_param_end
1080 };
1081
1082 if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
1083 GNUNET_PQ_eval_prepared_non_select (plugin->dbh, stmt, params))
1084 return GNUNET_SYSERR;
1085
1086 return GNUNET_OK;
1087}
1088
1089
1090/**
1091 * Begin modifying current state.
1092 */
1093static int
1094state_modify_begin (void *cls,
1095 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1096 uint64_t message_id, uint64_t state_delta)
1097{
1098 struct Plugin *plugin = cls;
1099
1100 if (state_delta > 0)
1101 {
1102 /**
1103 * We can only apply state modifiers in the current message if modifiers in
1104 * the previous stateful message (message_id - state_delta) were already
1105 * applied.
1106 */
1107
1108 uint64_t max_state_message_id = 0;
1109 int ret = counters_state_get (plugin, channel_key, &max_state_message_id);
1110 switch (ret)
1111 {
1112 case GNUNET_OK:
1113 case GNUNET_NO: // no state yet
1114 ret = GNUNET_OK;
1115 break;
1116
1117 default:
1118 return ret;
1119 }
1120
1121 if (max_state_message_id < message_id - state_delta)
1122 return GNUNET_NO; /* some stateful messages not yet applied */
1123 else if (message_id - state_delta < max_state_message_id)
1124 return GNUNET_NO; /* changes already applied */
1125 }
1126
1127 if (TRANSACTION_NONE != plugin->transaction)
1128 {
1129 /** @todo FIXME: wait for other transaction to finish */
1130 return GNUNET_SYSERR;
1131 }
1132 return transaction_begin (plugin, TRANSACTION_STATE_MODIFY);
1133}
1134
1135
1136/**
1137 * Set the current value of state variable.
1138 *
1139 * @see GNUNET_PSYCSTORE_state_modify()
1140 *
1141 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1142 */
1143static int
1144state_modify_op (void *cls,
1145 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1146 enum GNUNET_PSYC_Operator op,
1147 const char *name, const void *value, size_t value_size)
1148{
1149 struct Plugin *plugin = cls;
1150 GNUNET_assert (TRANSACTION_STATE_MODIFY == plugin->transaction);
1151
1152 switch (op)
1153 {
1154 case GNUNET_PSYC_OP_ASSIGN:
1155 return state_assign (plugin, "insert_state_current",
1156 channel_key, name, value, value_size);
1157
1158 default: /** @todo implement more state operations */
1159 GNUNET_break (0);
1160 return GNUNET_SYSERR;
1161 }
1162}
1163
1164
1165/**
1166 * End modifying current state.
1167 */
1168static int
1169state_modify_end (void *cls,
1170 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1171 uint64_t message_id)
1172{
1173 struct Plugin *plugin = cls;
1174 GNUNET_assert (TRANSACTION_STATE_MODIFY == plugin->transaction);
1175
1176 return
1177 GNUNET_OK == exec_channel (plugin, "delete_state_empty", channel_key)
1178 && GNUNET_OK == update_message_id (plugin,
1179 "update_max_state_message_id",
1180 channel_key, message_id)
1181 && GNUNET_OK == transaction_commit (plugin)
1182 ? GNUNET_OK : GNUNET_SYSERR;
1183}
1184
1185
1186/**
1187 * Begin state synchronization.
1188 */
1189static int
1190state_sync_begin (void *cls,
1191 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1192{
1193 struct Plugin *plugin = cls;
1194 return exec_channel (plugin, "delete_state_sync", channel_key);
1195}
1196
1197
1198/**
1199 * Assign current value of a state variable.
1200 *
1201 * @see GNUNET_PSYCSTORE_state_modify()
1202 *
1203 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1204 */
1205static int
1206state_sync_assign (void *cls,
1207 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1208 const char *name, const void *value, size_t value_size)
1209{
1210 struct Plugin *plugin = cls;
1211 return state_assign (plugin, "insert_state_sync",
1212 channel_key, name, value, value_size);
1213}
1214
1215
1216/**
1217 * End modifying current state.
1218 */
1219static int
1220state_sync_end (void *cls,
1221 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1222 uint64_t max_state_message_id,
1223 uint64_t state_hash_message_id)
1224{
1225 struct Plugin *plugin = cls;
1226 int ret = GNUNET_SYSERR;
1227
1228 if (TRANSACTION_NONE != plugin->transaction)
1229 {
1230 /** @todo FIXME: wait for other transaction to finish */
1231 return GNUNET_SYSERR;
1232 }
1233
1234 GNUNET_OK == transaction_begin (plugin, TRANSACTION_STATE_SYNC)
1235 && GNUNET_OK == exec_channel (plugin, "delete_state", channel_key)
1236 && GNUNET_OK == exec_channel (plugin, "insert_state_from_sync",
1237 channel_key)
1238 && GNUNET_OK == exec_channel (plugin, "delete_state_sync",
1239 channel_key)
1240 && GNUNET_OK == update_message_id (plugin,
1241 "update_state_hash_message_id",
1242 channel_key, state_hash_message_id)
1243 && GNUNET_OK == update_message_id (plugin,
1244 "update_max_state_message_id",
1245 channel_key, max_state_message_id)
1246 && GNUNET_OK == transaction_commit (plugin)
1247 ? ret = GNUNET_OK
1248 : transaction_rollback (plugin);
1249 return ret;
1250}
1251
1252
1253/**
1254 * Delete the whole state.
1255 *
1256 * @see GNUNET_PSYCSTORE_state_reset()
1257 *
1258 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1259 */
1260static int
1261state_reset (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1262{
1263 struct Plugin *plugin = cls;
1264 return exec_channel (plugin, "delete_state", channel_key);
1265}
1266
1267
1268/**
1269 * Update signed values of state variables in the state store.
1270 *
1271 * @see GNUNET_PSYCSTORE_state_hash_update()
1272 *
1273 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1274 */
1275static int
1276state_update_signed (void *cls,
1277 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1278{
1279 struct Plugin *plugin = cls;
1280 return exec_channel (plugin, "update_state_signed", channel_key);
1281}
1282
1283
1284/**
1285 * Retrieve a state variable by name.
1286 *
1287 * @see GNUNET_PSYCSTORE_state_get()
1288 *
1289 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1290 */
1291static int
1292state_get (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1293 const char *name, GNUNET_PSYCSTORE_StateCallback cb, void *cb_cls)
1294{
1295 struct Plugin *plugin = cls;
1296
1297 const char *stmt = "select_state_one";
1298
1299 struct GNUNET_PQ_QueryParam params_select[] = {
1300 GNUNET_PQ_query_param_auto_from_type (channel_key),
1301 GNUNET_PQ_query_param_string (name),
1302 GNUNET_PQ_query_param_end
1303 };
1304
1305 void *value_current = NULL;
1306 size_t value_size = 0;
1307
1308 struct GNUNET_PQ_ResultSpec results_select[] = {
1309 GNUNET_PQ_result_spec_variable_size ("value_current", &value_current, &value_size),
1310 GNUNET_PQ_result_spec_end
1311 };
1312
1313 if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
1314 GNUNET_PQ_eval_prepared_singleton_select (plugin->dbh, stmt,
1315 params_select, results_select))
1316 return GNUNET_SYSERR;
1317
1318 return cb (cb_cls, name, value_current,
1319 value_size);
1320}
1321
1322
1323
1324/**
1325 * Closure for #get_state_cb.
1326 */
1327struct GetStateContext {
1328 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key;
1329 // const char *name,
1330 GNUNET_PSYCSTORE_StateCallback cb;
1331 void *cb_cls;
1332
1333 const char *value_id;
1334
1335 /* I preserved this but I do not see the point since
1336 * it cannot stop the loop early and gets overwritten ?? */
1337 int ret;
1338};
1339
1340
1341/**
1342 * Callback that retrieves the results of a SELECT statement
1343 * reading form the state table.
1344 *
1345 * Only passed to GNUNET_PQ_eval_prepared_multi_select and
1346 * has type GNUNET_PQ_PostgresResultHandler.
1347 *
1348 * @param cls closure
1349 * @param result the postgres result
1350 * @param num_result the number of results in @a result
1351 */
1352static void
1353get_state_cb (void *cls,
1354 PGresult *res,
1355 unsigned int num_results)
1356{
1357 struct GetStateContext *c = cls;
1358
1359 for (unsigned int i=0;i<num_results;i++)
1360 {
1361 char *name = "";
1362 void *value = NULL;
1363 size_t value_size = 0;
1364
1365 struct GNUNET_PQ_ResultSpec results[] = {
1366 GNUNET_PQ_result_spec_string ("name", &name),
1367 GNUNET_PQ_result_spec_variable_size (c->value_id, &value, &value_size),
1368 GNUNET_PQ_result_spec_end
1369 };
1370
1371 if (GNUNET_YES != GNUNET_PQ_extract_result (res, results, i))
1372 {
1373 GNUNET_PQ_cleanup_result(results); /* previously invoked via PQclear?? */
1374 break; /* nothing more?? */
1375 }
1376
1377 c->ret = c->cb (c->cb_cls, (const char *) name, value, value_size);
1378 GNUNET_PQ_cleanup_result(results);
1379 }
1380}
1381
1382/**
1383 * Retrieve all state variables for a channel with the given prefix.
1384 *
1385 * @see GNUNET_PSYCSTORE_state_get_prefix()
1386 *
1387 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1388 */
1389static int
1390state_get_prefix (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1391 const char *name, GNUNET_PSYCSTORE_StateCallback cb,
1392 void *cb_cls)
1393{
1394 struct Plugin *plugin = cls;
1395
1396 const char *stmt = "select_state_prefix";
1397
1398 uint32_t name_len = (uint32_t) strlen (name);
1399
1400 struct GNUNET_PQ_QueryParam params_select[] = {
1401 GNUNET_PQ_query_param_auto_from_type (channel_key),
1402 GNUNET_PQ_query_param_string (name),
1403 GNUNET_PQ_query_param_uint32 (&name_len),
1404 GNUNET_PQ_query_param_string (name),
1405 GNUNET_PQ_query_param_end
1406 };
1407
1408 struct GetStateContext gsc = {
1409 .cb = cb,
1410 .cb_cls = cb_cls,
1411 .value_id = "value_current",
1412 .ret = GNUNET_NO
1413 };
1414
1415 if (0 > GNUNET_PQ_eval_prepared_multi_select (plugin->dbh,
1416 stmt, params_select,
1417 &get_state_cb, &gsc))
1418 return GNUNET_SYSERR;
1419 return gsc.ret; /* GNUNET_OK ?? */
1420}
1421
1422
1423/**
1424 * Retrieve all signed state variables for a channel.
1425 *
1426 * @see GNUNET_PSYCSTORE_state_get_signed()
1427 *
1428 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1429 */
1430static int
1431state_get_signed (void *cls,
1432 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1433 GNUNET_PSYCSTORE_StateCallback cb, void *cb_cls)
1434{
1435 struct Plugin *plugin = cls;
1436
1437 const char *stmt = "select_state_signed";
1438
1439 struct GNUNET_PQ_QueryParam params_select[] = {
1440 GNUNET_PQ_query_param_auto_from_type (channel_key),
1441 GNUNET_PQ_query_param_end
1442 };
1443
1444 struct GetStateContext gsc = {
1445 .cb = cb,
1446 .cb_cls = cb_cls,
1447 .value_id = "value_signed",
1448 .ret = GNUNET_NO
1449 };
1450
1451 if (0 > GNUNET_PQ_eval_prepared_multi_select (plugin->dbh,
1452 stmt, params_select,
1453 &get_state_cb, &gsc))
1454 return GNUNET_SYSERR;
1455 return gsc.ret; /* GNUNET_OK ?? */
1456}
1457
1458
1459/**
1460 * Entry point for the plugin.
1461 *
1462 * @param cls The struct GNUNET_CONFIGURATION_Handle.
1463 * @return NULL on error, otherwise the plugin context
1464 */
1465void *
1466libgnunet_plugin_psycstore_postgres_init (void *cls)
1467{
1468 static struct Plugin plugin;
1469 const struct GNUNET_CONFIGURATION_Handle *cfg = cls;
1470 struct GNUNET_PSYCSTORE_PluginFunctions *api;
1471
1472 if (NULL != plugin.cfg)
1473 return NULL; /* can only initialize once! */
1474 memset (&plugin, 0, sizeof (struct Plugin));
1475 plugin.cfg = cfg;
1476 if (GNUNET_OK != database_setup (&plugin))
1477 {
1478 database_shutdown (&plugin);
1479 return NULL;
1480 }
1481 api = GNUNET_new (struct GNUNET_PSYCSTORE_PluginFunctions);
1482 api->cls = &plugin;
1483 api->membership_store = &postgres_membership_store;
1484 api->membership_test = &membership_test;
1485 api->fragment_store = &fragment_store;
1486 api->message_add_flags = &message_add_flags;
1487 api->fragment_get = &fragment_get;
1488 api->fragment_get_latest = &fragment_get_latest;
1489 api->message_get = &message_get;
1490 api->message_get_latest = &message_get_latest;
1491 api->message_get_fragment = &message_get_fragment;
1492 api->counters_message_get = &counters_message_get;
1493 api->counters_state_get = &counters_state_get;
1494 api->state_modify_begin = &state_modify_begin;
1495 api->state_modify_op = &state_modify_op;
1496 api->state_modify_end = &state_modify_end;
1497 api->state_sync_begin = &state_sync_begin;
1498 api->state_sync_assign = &state_sync_assign;
1499 api->state_sync_end = &state_sync_end;
1500 api->state_reset = &state_reset;
1501 api->state_update_signed = &state_update_signed;
1502 api->state_get = &state_get;
1503 api->state_get_prefix = &state_get_prefix;
1504 api->state_get_signed = &state_get_signed;
1505
1506 LOG (GNUNET_ERROR_TYPE_INFO, _("Postgres database running\n"));
1507 return api;
1508}
1509
1510
1511/**
1512 * Exit point from the plugin.
1513 *
1514 * @param cls The plugin context (as returned by "init")
1515 * @return Always NULL
1516 */
1517void *
1518libgnunet_plugin_psycstore_postgres_done (void *cls)
1519{
1520 struct GNUNET_PSYCSTORE_PluginFunctions *api = cls;
1521 struct Plugin *plugin = api->cls;
1522
1523 database_shutdown (plugin);
1524 plugin->cfg = NULL;
1525 GNUNET_free (api);
1526 LOG (GNUNET_ERROR_TYPE_DEBUG, "Postgres plugin has finished\n");
1527 return NULL;
1528}
1529
1530/* end of plugin_psycstore_postgres.c */
diff --git a/src/psycstore/plugin_psycstore_sqlite.c b/src/psycstore/plugin_psycstore_sqlite.c
deleted file mode 100644
index 24de38392..000000000
--- a/src/psycstore/plugin_psycstore_sqlite.c
+++ /dev/null
@@ -1,1948 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psycstore/plugin_psycstore_sqlite.c
23 * @brief sqlite-based psycstore backend
24 * @author Gabor X Toth
25 * @author Christian Grothoff
26 */
27
28/*
29 * FIXME: SQLite3 only supports signed 64-bit integers natively,
30 * thus it can only store 63 bits of the uint64_t's.
31 */
32
33#include "platform.h"
34#include "gnunet_psycstore_plugin.h"
35#include "gnunet_psycstore_service.h"
36#include "gnunet_multicast_service.h"
37#include "gnunet_crypto_lib.h"
38#include "gnunet_psyc_util_lib.h"
39#include "psycstore.h"
40#include <sqlite3.h>
41
42/**
43 * After how many ms "busy" should a DB operation fail for good? A
44 * low value makes sure that we are more responsive to requests
45 * (especially PUTs). A high value guarantees a higher success rate
46 * (SELECTs in iterate can take several seconds despite LIMIT=1).
47 *
48 * The default value of 1s should ensure that users do not experience
49 * huge latencies while at the same time allowing operations to
50 * succeed with reasonable probability.
51 */
52#define BUSY_TIMEOUT_MS 1000
53
54#define DEBUG_PSYCSTORE GNUNET_EXTRA_LOGGING
55
56/**
57 * Log an error message at log-level 'level' that indicates
58 * a failure of the command 'cmd' on file 'filename'
59 * with the message given by strerror(errno).
60 */
61#define LOG_SQLITE(db, level, cmd) do { GNUNET_log_from (level, "psycstore-sqlite", _("`%s' failed at %s:%d with error: %s (%d)\n"), cmd, __FILE__, __LINE__, sqlite3_errmsg(db->dbh), sqlite3_errcode(db->dbh)); } while(0)
62
63#define LOG(kind,...) GNUNET_log_from (kind, "psycstore-sqlite", __VA_ARGS__)
64
65enum Transactions {
66 TRANSACTION_NONE = 0,
67 TRANSACTION_STATE_MODIFY,
68 TRANSACTION_STATE_SYNC,
69};
70
71/**
72 * Context for all functions in this plugin.
73 */
74struct Plugin
75{
76
77 const struct GNUNET_CONFIGURATION_Handle *cfg;
78
79 /**
80 * Database filename.
81 */
82 char *fn;
83
84 /**
85 * Native SQLite database handle.
86 */
87 sqlite3 *dbh;
88
89 /**
90 * Current transaction.
91 */
92 enum Transactions transaction;
93
94 sqlite3_stmt *transaction_begin;
95
96 sqlite3_stmt *transaction_commit;
97
98 sqlite3_stmt *transaction_rollback;
99
100 /**
101 * Precompiled SQL for channel_key_store()
102 */
103 sqlite3_stmt *insert_channel_key;
104
105 /**
106 * Precompiled SQL for slave_key_store()
107 */
108 sqlite3_stmt *insert_slave_key;
109
110
111 /**
112 * Precompiled SQL for membership_store()
113 */
114 sqlite3_stmt *insert_membership;
115
116 /**
117 * Precompiled SQL for membership_test()
118 */
119 sqlite3_stmt *select_membership;
120
121
122 /**
123 * Precompiled SQL for fragment_store()
124 */
125 sqlite3_stmt *insert_fragment;
126
127 /**
128 * Precompiled SQL for message_add_flags()
129 */
130 sqlite3_stmt *update_message_flags;
131
132 /**
133 * Precompiled SQL for fragment_get()
134 */
135 sqlite3_stmt *select_fragments;
136
137 /**
138 * Precompiled SQL for fragment_get()
139 */
140 sqlite3_stmt *select_latest_fragments;
141
142 /**
143 * Precompiled SQL for message_get()
144 */
145 sqlite3_stmt *select_messages;
146
147 /**
148 * Precompiled SQL for message_get()
149 */
150 sqlite3_stmt *select_latest_messages;
151
152 /**
153 * Precompiled SQL for message_get_fragment()
154 */
155 sqlite3_stmt *select_message_fragment;
156
157 /**
158 * Precompiled SQL for counters_get_message()
159 */
160 sqlite3_stmt *select_counters_message;
161
162 /**
163 * Precompiled SQL for counters_get_state()
164 */
165 sqlite3_stmt *select_counters_state;
166
167 /**
168 * Precompiled SQL for state_modify_end()
169 */
170 sqlite3_stmt *update_state_hash_message_id;
171
172 /**
173 * Precompiled SQL for state_sync_end()
174 */
175 sqlite3_stmt *update_max_state_message_id;
176
177 /**
178 * Precompiled SQL for state_modify_op()
179 */
180 sqlite3_stmt *insert_state_current;
181
182 /**
183 * Precompiled SQL for state_modify_end()
184 */
185 sqlite3_stmt *delete_state_empty;
186
187 /**
188 * Precompiled SQL for state_set_signed()
189 */
190 sqlite3_stmt *update_state_signed;
191
192 /**
193 * Precompiled SQL for state_sync()
194 */
195 sqlite3_stmt *insert_state_sync;
196
197 /**
198 * Precompiled SQL for state_sync()
199 */
200 sqlite3_stmt *delete_state;
201
202 /**
203 * Precompiled SQL for state_sync()
204 */
205 sqlite3_stmt *insert_state_from_sync;
206
207 /**
208 * Precompiled SQL for state_sync()
209 */
210 sqlite3_stmt *delete_state_sync;
211
212 /**
213 * Precompiled SQL for state_get_signed()
214 */
215 sqlite3_stmt *select_state_signed;
216
217 /**
218 * Precompiled SQL for state_get()
219 */
220 sqlite3_stmt *select_state_one;
221
222 /**
223 * Precompiled SQL for state_get_prefix()
224 */
225 sqlite3_stmt *select_state_prefix;
226
227};
228
229#if DEBUG_PSYCSTORE
230
231static void
232sql_trace (void *cls, const char *sql)
233{
234 LOG (GNUNET_ERROR_TYPE_DEBUG, "SQL query:\n%s\n", sql);
235}
236
237#endif
238
239/**
240 * @brief Prepare a SQL statement
241 *
242 * @param dbh handle to the database
243 * @param sql SQL statement, UTF-8 encoded
244 * @param stmt set to the prepared statement
245 * @return 0 on success
246 */
247static int
248sql_prepare (sqlite3 *dbh, const char *sql, sqlite3_stmt **stmt)
249{
250 char *tail;
251 int result;
252
253 result = sqlite3_prepare_v2 (dbh, sql, strlen (sql), stmt,
254 (const char **) &tail);
255 LOG (GNUNET_ERROR_TYPE_DEBUG,
256 "Prepared `%s' / %p: %d\n", sql, *stmt, result);
257 if (result != SQLITE_OK)
258 LOG (GNUNET_ERROR_TYPE_ERROR,
259 _("Error preparing SQL query: %s\n %s\n"),
260 sqlite3_errmsg (dbh), sql);
261 return result;
262}
263
264
265/**
266 * @brief Prepare a SQL statement
267 *
268 * @param dbh handle to the database
269 * @param sql SQL statement, UTF-8 encoded
270 * @return 0 on success
271 */
272static int
273sql_exec (sqlite3 *dbh, const char *sql)
274{
275 int result;
276
277 result = sqlite3_exec (dbh, sql, NULL, NULL, NULL);
278 LOG (GNUNET_ERROR_TYPE_DEBUG,
279 "Executed `%s' / %d\n", sql, result);
280 if (result != SQLITE_OK)
281 LOG (GNUNET_ERROR_TYPE_ERROR,
282 _("Error executing SQL query: %s\n %s\n"),
283 sqlite3_errmsg (dbh), sql);
284 return result;
285}
286
287
288/**
289 * Initialize the database connections and associated
290 * data structures (create tables and indices
291 * as needed as well).
292 *
293 * @param plugin the plugin context (state for this module)
294 * @return GNUNET_OK on success
295 */
296static int
297database_setup (struct Plugin *plugin)
298{
299 char *filename;
300
301 if (GNUNET_OK !=
302 GNUNET_CONFIGURATION_get_value_filename (plugin->cfg, "psycstore-sqlite",
303 "FILENAME", &filename))
304 {
305 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
306 "psycstore-sqlite", "FILENAME");
307 return GNUNET_SYSERR;
308 }
309 if (GNUNET_OK != GNUNET_DISK_file_test (filename))
310 {
311 if (GNUNET_OK != GNUNET_DISK_directory_create_for_file (filename))
312 {
313 GNUNET_break (0);
314 GNUNET_free (filename);
315 return GNUNET_SYSERR;
316 }
317 }
318 /* filename should be UTF-8-encoded. If it isn't, it's a bug */
319 plugin->fn = filename;
320
321 /* Open database and precompile statements */
322 if (SQLITE_OK != sqlite3_open (plugin->fn, &plugin->dbh))
323 {
324 LOG (GNUNET_ERROR_TYPE_ERROR,
325 _("Unable to initialize SQLite: %s.\n"),
326 sqlite3_errmsg (plugin->dbh));
327 return GNUNET_SYSERR;
328 }
329
330#if DEBUG_PSYCSTORE
331 sqlite3_trace (plugin->dbh, &sql_trace, NULL);
332#endif
333
334 sql_exec (plugin->dbh, "PRAGMA temp_store=MEMORY");
335 sql_exec (plugin->dbh, "PRAGMA synchronous=NORMAL");
336 sql_exec (plugin->dbh, "PRAGMA legacy_file_format=OFF");
337 sql_exec (plugin->dbh, "PRAGMA auto_vacuum=INCREMENTAL");
338 sql_exec (plugin->dbh, "PRAGMA encoding=\"UTF-8\"");
339#if ! DEBUG_PSYCSTORE
340 sql_exec (plugin->dbh, "PRAGMA locking_mode=EXCLUSIVE");
341#endif
342 sql_exec (plugin->dbh, "PRAGMA page_size=4096");
343
344 sqlite3_busy_timeout (plugin->dbh, BUSY_TIMEOUT_MS);
345
346 /* Create tables */
347
348 sql_exec (plugin->dbh,
349 "CREATE TABLE IF NOT EXISTS channels (\n"
350 " id INTEGER PRIMARY KEY,\n"
351 " pub_key BLOB(32) UNIQUE,\n"
352 " max_state_message_id INTEGER,\n" // last applied state message ID
353 " state_hash_message_id INTEGER\n" // last message ID with a state hash
354 ");");
355
356 sql_exec (plugin->dbh,
357 "CREATE TABLE IF NOT EXISTS slaves (\n"
358 " id INTEGER PRIMARY KEY,\n"
359 " pub_key BLOB(32) UNIQUE\n"
360 ");");
361
362 sql_exec (plugin->dbh,
363 "CREATE TABLE IF NOT EXISTS membership (\n"
364 " channel_id INTEGER NOT NULL REFERENCES channels(id),\n"
365 " slave_id INTEGER NOT NULL REFERENCES slaves(id),\n"
366 " did_join INTEGER NOT NULL,\n"
367 " announced_at INTEGER NOT NULL,\n"
368 " effective_since INTEGER NOT NULL,\n"
369 " group_generation INTEGER NOT NULL\n"
370 ");");
371 sql_exec (plugin->dbh,
372 "CREATE INDEX IF NOT EXISTS idx_membership_channel_id_slave_id "
373 "ON membership (channel_id, slave_id);");
374
375 /** @todo messages table: add method_name column */
376 sql_exec (plugin->dbh,
377 "CREATE TABLE IF NOT EXISTS messages (\n"
378 " channel_id INTEGER NOT NULL REFERENCES channels(id),\n"
379 " hop_counter INTEGER NOT NULL,\n"
380 " signature BLOB,\n"
381 " purpose BLOB,\n"
382 " fragment_id INTEGER NOT NULL,\n"
383 " fragment_offset INTEGER NOT NULL,\n"
384 " message_id INTEGER NOT NULL,\n"
385 " group_generation INTEGER NOT NULL,\n"
386 " multicast_flags INTEGER NOT NULL,\n"
387 " psycstore_flags INTEGER NOT NULL,\n"
388 " data BLOB,\n"
389 " PRIMARY KEY (channel_id, fragment_id),\n"
390 " UNIQUE (channel_id, message_id, fragment_offset)\n"
391 ");");
392
393 sql_exec (plugin->dbh,
394 "CREATE TABLE IF NOT EXISTS state (\n"
395 " channel_id INTEGER NOT NULL REFERENCES channels(id),\n"
396 " name TEXT NOT NULL,\n"
397 " value_current BLOB,\n"
398 " value_signed BLOB,\n"
399 " PRIMARY KEY (channel_id, name)\n"
400 ");");
401
402 sql_exec (plugin->dbh,
403 "CREATE TABLE IF NOT EXISTS state_sync (\n"
404 " channel_id INTEGER NOT NULL REFERENCES channels(id),\n"
405 " name TEXT NOT NULL,\n"
406 " value BLOB,\n"
407 " PRIMARY KEY (channel_id, name)\n"
408 ");");
409
410 /* Prepare statements */
411
412 sql_prepare (plugin->dbh, "BEGIN;", &plugin->transaction_begin);
413
414 sql_prepare (plugin->dbh, "COMMIT;", &plugin->transaction_commit);
415
416 sql_prepare (plugin->dbh, "ROLLBACK;", &plugin->transaction_rollback);
417
418 sql_prepare (plugin->dbh,
419 "INSERT OR IGNORE INTO channels (pub_key) VALUES (?);",
420 &plugin->insert_channel_key);
421
422 sql_prepare (plugin->dbh,
423 "INSERT OR IGNORE INTO slaves (pub_key) VALUES (?);",
424 &plugin->insert_slave_key);
425
426 sql_prepare (plugin->dbh,
427 "INSERT INTO membership\n"
428 " (channel_id, slave_id, did_join, announced_at,\n"
429 " effective_since, group_generation)\n"
430 "VALUES ((SELECT id FROM channels WHERE pub_key = ?),\n"
431 " (SELECT id FROM slaves WHERE pub_key = ?),\n"
432 " ?, ?, ?, ?);",
433 &plugin->insert_membership);
434
435 sql_prepare (plugin->dbh,
436 "SELECT did_join FROM membership\n"
437 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
438 " AND slave_id = (SELECT id FROM slaves WHERE pub_key = ?)\n"
439 " AND effective_since <= ? AND did_join = 1\n"
440 "ORDER BY announced_at DESC LIMIT 1;",
441 &plugin->select_membership);
442
443 sql_prepare (plugin->dbh,
444 "INSERT OR IGNORE INTO messages\n"
445 " (channel_id, hop_counter, signature, purpose,\n"
446 " fragment_id, fragment_offset, message_id,\n"
447 " group_generation, multicast_flags, psycstore_flags, data)\n"
448 "VALUES ((SELECT id FROM channels WHERE pub_key = ?),\n"
449 " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);",
450 &plugin->insert_fragment);
451
452 sql_prepare (plugin->dbh,
453 "UPDATE messages\n"
454 "SET psycstore_flags = psycstore_flags | ?\n"
455 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
456 " AND message_id = ? AND fragment_offset = 0;",
457 &plugin->update_message_flags);
458
459 sql_prepare (plugin->dbh,
460 "SELECT hop_counter, signature, purpose, fragment_id,\n"
461 " fragment_offset, message_id, group_generation,\n"
462 " multicast_flags, psycstore_flags, data\n"
463 "FROM messages\n"
464 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
465 " AND ? <= fragment_id AND fragment_id <= ?;",
466 &plugin->select_fragments);
467
468 /** @todo select_messages: add method_prefix filter */
469 sql_prepare (plugin->dbh,
470 "SELECT hop_counter, signature, purpose, fragment_id,\n"
471 " fragment_offset, message_id, group_generation,\n"
472 " multicast_flags, psycstore_flags, data\n"
473 "FROM messages\n"
474 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
475 " AND ? <= message_id AND message_id <= ?"
476 "LIMIT ?;",
477 &plugin->select_messages);
478
479 sql_prepare (plugin->dbh,
480 "SELECT * FROM\n"
481 "(SELECT hop_counter, signature, purpose, fragment_id,\n"
482 " fragment_offset, message_id, group_generation,\n"
483 " multicast_flags, psycstore_flags, data\n"
484 " FROM messages\n"
485 " WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
486 " ORDER BY fragment_id DESC\n"
487 " LIMIT ?)\n"
488 "ORDER BY fragment_id;",
489 &plugin->select_latest_fragments);
490
491 /** @todo select_latest_messages: add method_prefix filter */
492 sql_prepare (plugin->dbh,
493 "SELECT hop_counter, signature, purpose, fragment_id,\n"
494 " fragment_offset, message_id, group_generation,\n"
495 " multicast_flags, psycstore_flags, data\n"
496 "FROM messages\n"
497 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
498 " AND message_id IN\n"
499 " (SELECT message_id\n"
500 " FROM messages\n"
501 " WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
502 " GROUP BY message_id\n"
503 " ORDER BY message_id\n"
504 " DESC LIMIT ?)\n"
505 "ORDER BY fragment_id;",
506 &plugin->select_latest_messages);
507
508 sql_prepare (plugin->dbh,
509 "SELECT hop_counter, signature, purpose, fragment_id,\n"
510 " fragment_offset, message_id, group_generation,\n"
511 " multicast_flags, psycstore_flags, data\n"
512 "FROM messages\n"
513 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
514 " AND message_id = ? AND fragment_offset = ?;",
515 &plugin->select_message_fragment);
516
517 sql_prepare (plugin->dbh,
518 "SELECT fragment_id, message_id, group_generation\n"
519 "FROM messages\n"
520 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
521 "ORDER BY fragment_id DESC LIMIT 1;",
522 &plugin->select_counters_message);
523
524 sql_prepare (plugin->dbh,
525 "SELECT max_state_message_id\n"
526 "FROM channels\n"
527 "WHERE pub_key = ? AND max_state_message_id IS NOT NULL;",
528 &plugin->select_counters_state);
529
530 sql_prepare (plugin->dbh,
531 "UPDATE channels\n"
532 "SET max_state_message_id = ?\n"
533 "WHERE pub_key = ?;",
534 &plugin->update_max_state_message_id);
535
536 sql_prepare (plugin->dbh,
537 "UPDATE channels\n"
538 "SET state_hash_message_id = ?\n"
539 "WHERE pub_key = ?;",
540 &plugin->update_state_hash_message_id);
541
542 sql_prepare (plugin->dbh,
543 "INSERT OR REPLACE INTO state\n"
544 " (channel_id, name, value_current, value_signed)\n"
545 "SELECT new.channel_id, new.name,\n"
546 " new.value_current, old.value_signed\n"
547 "FROM (SELECT (SELECT id FROM channels WHERE pub_key = ?)\n"
548 " AS channel_id,\n"
549 " ? AS name, ? AS value_current) AS new\n"
550 "LEFT JOIN (SELECT channel_id, name, value_signed\n"
551 " FROM state) AS old\n"
552 "ON new.channel_id = old.channel_id AND new.name = old.name;",
553 &plugin->insert_state_current);
554
555 sql_prepare (plugin->dbh,
556 "DELETE FROM state\n"
557 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
558 " AND (value_current IS NULL OR length(value_current) = 0)\n"
559 " AND (value_signed IS NULL OR length(value_signed) = 0);",
560 &plugin->delete_state_empty);
561
562 sql_prepare (plugin->dbh,
563 "UPDATE state\n"
564 "SET value_signed = value_current\n"
565 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?);",
566 &plugin->update_state_signed);
567
568 sql_prepare (plugin->dbh,
569 "DELETE FROM state\n"
570 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?);",
571 &plugin->delete_state);
572
573 sql_prepare (plugin->dbh,
574 "INSERT INTO state_sync (channel_id, name, value)\n"
575 "VALUES ((SELECT id FROM channels WHERE pub_key = ?), ?, ?);",
576 &plugin->insert_state_sync);
577
578 sql_prepare (plugin->dbh,
579 "INSERT INTO state\n"
580 " (channel_id, name, value_current, value_signed)\n"
581 "SELECT channel_id, name, value, value\n"
582 "FROM state_sync\n"
583 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?);",
584 &plugin->insert_state_from_sync);
585
586 sql_prepare (plugin->dbh,
587 "DELETE FROM state_sync\n"
588 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?);",
589 &plugin->delete_state_sync);
590
591 sql_prepare (plugin->dbh,
592 "SELECT value_current\n"
593 "FROM state\n"
594 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
595 " AND name = ?;",
596 &plugin->select_state_one);
597
598 sql_prepare (plugin->dbh,
599 "SELECT name, value_current\n"
600 "FROM state\n"
601 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)\n"
602 " AND (name = ? OR substr(name, 1, ?) = ?);",
603 &plugin->select_state_prefix);
604
605 sql_prepare (plugin->dbh,
606 "SELECT name, value_signed\n"
607 "FROM state\n"
608 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = ?)"
609 " AND value_signed IS NOT NULL;",
610 &plugin->select_state_signed);
611
612 return GNUNET_OK;
613}
614
615
616/**
617 * Shutdown database connection and associate data
618 * structures.
619 * @param plugin the plugin context (state for this module)
620 */
621static void
622database_shutdown (struct Plugin *plugin)
623{
624 int result;
625 sqlite3_stmt *stmt;
626 while (NULL != (stmt = sqlite3_next_stmt (plugin->dbh, NULL)))
627 {
628 result = sqlite3_finalize (stmt);
629 if (SQLITE_OK != result)
630 LOG (GNUNET_ERROR_TYPE_WARNING,
631 "Failed to close statement %p: %d\n", stmt, result);
632 }
633 if (SQLITE_OK != sqlite3_close (plugin->dbh))
634 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR, "sqlite3_close");
635
636 GNUNET_free_non_null (plugin->fn);
637}
638
639/**
640 * Execute a prepared statement with a @a channel_key argument.
641 *
642 * @param plugin Plugin handle.
643 * @param stmt Statement to execute.
644 * @param channel_key Public key of the channel.
645 *
646 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
647 */
648static int
649exec_channel (struct Plugin *plugin, sqlite3_stmt *stmt,
650 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
651{
652 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
653 sizeof (*channel_key), SQLITE_STATIC))
654 {
655 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
656 "sqlite3_bind");
657 }
658 else if (SQLITE_DONE != sqlite3_step (stmt))
659 {
660 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
661 "sqlite3_step");
662 }
663
664 if (SQLITE_OK != sqlite3_reset (stmt))
665 {
666 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
667 "sqlite3_reset");
668 return GNUNET_SYSERR;
669 }
670
671 return GNUNET_OK;
672}
673
674/**
675 * Begin a transaction.
676 */
677static int
678transaction_begin (struct Plugin *plugin, enum Transactions transaction)
679{
680 sqlite3_stmt *stmt = plugin->transaction_begin;
681
682 if (SQLITE_DONE != sqlite3_step (stmt))
683 {
684 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
685 "sqlite3_step");
686 }
687 if (SQLITE_OK != sqlite3_reset (stmt))
688 {
689 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
690 "sqlite3_reset");
691 return GNUNET_SYSERR;
692 }
693
694 plugin->transaction = transaction;
695 return GNUNET_OK;
696}
697
698
699/**
700 * Commit current transaction.
701 */
702static int
703transaction_commit (struct Plugin *plugin)
704{
705 sqlite3_stmt *stmt = plugin->transaction_commit;
706
707 if (SQLITE_DONE != sqlite3_step (stmt))
708 {
709 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
710 "sqlite3_step");
711 }
712 if (SQLITE_OK != sqlite3_reset (stmt))
713 {
714 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
715 "sqlite3_reset");
716 return GNUNET_SYSERR;
717 }
718
719 plugin->transaction = TRANSACTION_NONE;
720 return GNUNET_OK;
721}
722
723
724/**
725 * Roll back current transaction.
726 */
727static int
728transaction_rollback (struct Plugin *plugin)
729{
730 sqlite3_stmt *stmt = plugin->transaction_rollback;
731
732 if (SQLITE_DONE != sqlite3_step (stmt))
733 {
734 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
735 "sqlite3_step");
736 }
737 if (SQLITE_OK != sqlite3_reset (stmt))
738 {
739 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
740 "sqlite3_reset");
741 return GNUNET_SYSERR;
742 }
743 plugin->transaction = TRANSACTION_NONE;
744 return GNUNET_OK;
745}
746
747
748static int
749channel_key_store (struct Plugin *plugin,
750 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
751{
752 sqlite3_stmt *stmt = plugin->insert_channel_key;
753
754 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
755 sizeof (*channel_key), SQLITE_STATIC))
756 {
757 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
758 "sqlite3_bind");
759 }
760 else if (SQLITE_DONE != sqlite3_step (stmt))
761 {
762 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
763 "sqlite3_step");
764 }
765
766 if (SQLITE_OK != sqlite3_reset (stmt))
767 {
768 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
769 "sqlite3_reset");
770 return GNUNET_SYSERR;
771 }
772
773 return GNUNET_OK;
774}
775
776
777static int
778slave_key_store (struct Plugin *plugin,
779 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key)
780{
781 sqlite3_stmt *stmt = plugin->insert_slave_key;
782
783 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, slave_key,
784 sizeof (*slave_key), SQLITE_STATIC))
785 {
786 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
787 "sqlite3_bind");
788 }
789 else if (SQLITE_DONE != sqlite3_step (stmt))
790 {
791 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
792 "sqlite3_step");
793 }
794
795
796 if (SQLITE_OK != sqlite3_reset (stmt))
797 {
798 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
799 "sqlite3_reset");
800 return GNUNET_SYSERR;
801 }
802
803 return GNUNET_OK;
804}
805
806
807/**
808 * Store join/leave events for a PSYC channel in order to be able to answer
809 * membership test queries later.
810 *
811 * @see GNUNET_PSYCSTORE_membership_store()
812 *
813 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
814 */
815static int
816sqlite_membership_store (void *cls,
817 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
818 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
819 int did_join,
820 uint64_t announced_at,
821 uint64_t effective_since,
822 uint64_t group_generation)
823{
824 struct Plugin *plugin = cls;
825 sqlite3_stmt *stmt = plugin->insert_membership;
826
827 GNUNET_assert (TRANSACTION_NONE == plugin->transaction);
828
829 if (announced_at > INT64_MAX ||
830 effective_since > INT64_MAX ||
831 group_generation > INT64_MAX)
832 {
833 GNUNET_break (0);
834 return GNUNET_SYSERR;
835 }
836
837 if (GNUNET_OK != channel_key_store (plugin, channel_key)
838 || GNUNET_OK != slave_key_store (plugin, slave_key))
839 return GNUNET_SYSERR;
840
841 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
842 sizeof (*channel_key), SQLITE_STATIC)
843 || SQLITE_OK != sqlite3_bind_blob (stmt, 2, slave_key,
844 sizeof (*slave_key), SQLITE_STATIC)
845 || SQLITE_OK != sqlite3_bind_int (stmt, 3, did_join)
846 || SQLITE_OK != sqlite3_bind_int64 (stmt, 4, announced_at)
847 || SQLITE_OK != sqlite3_bind_int64 (stmt, 5, effective_since)
848 || SQLITE_OK != sqlite3_bind_int64 (stmt, 6, group_generation))
849 {
850 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
851 "sqlite3_bind");
852 }
853 else if (SQLITE_DONE != sqlite3_step (stmt))
854 {
855 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
856 "sqlite3_step");
857 }
858
859 if (SQLITE_OK != sqlite3_reset (stmt))
860 {
861 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
862 "sqlite3_reset");
863 return GNUNET_SYSERR;
864 }
865
866 return GNUNET_OK;
867}
868
869/**
870 * Test if a member was admitted to the channel at the given message ID.
871 *
872 * @see GNUNET_PSYCSTORE_membership_test()
873 *
874 * @return #GNUNET_YES if the member was admitted, #GNUNET_NO if not,
875 * #GNUNET_SYSERR if there was en error.
876 */
877static int
878membership_test (void *cls,
879 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
880 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
881 uint64_t message_id)
882{
883 struct Plugin *plugin = cls;
884 sqlite3_stmt *stmt = plugin->select_membership;
885 int ret = GNUNET_SYSERR;
886
887 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
888 sizeof (*channel_key), SQLITE_STATIC)
889 || SQLITE_OK != sqlite3_bind_blob (stmt, 2, slave_key,
890 sizeof (*slave_key), SQLITE_STATIC)
891 || SQLITE_OK != sqlite3_bind_int64 (stmt, 3, message_id))
892 {
893 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
894 "sqlite3_bind");
895 }
896 else
897 {
898 switch (sqlite3_step (stmt))
899 {
900 case SQLITE_DONE:
901 ret = GNUNET_NO;
902 break;
903 case SQLITE_ROW:
904 ret = GNUNET_YES;
905 }
906 }
907
908 if (SQLITE_OK != sqlite3_reset (stmt))
909 {
910 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
911 "sqlite3_reset");
912 }
913
914 return ret;
915}
916
917/**
918 * Store a message fragment sent to a channel.
919 *
920 * @see GNUNET_PSYCSTORE_fragment_store()
921 *
922 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
923 */
924static int
925fragment_store (void *cls,
926 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
927 const struct GNUNET_MULTICAST_MessageHeader *msg,
928 uint32_t psycstore_flags)
929{
930 struct Plugin *plugin = cls;
931 sqlite3_stmt *stmt = plugin->insert_fragment;
932
933 GNUNET_assert (TRANSACTION_NONE == plugin->transaction);
934
935 uint64_t fragment_id = GNUNET_ntohll (msg->fragment_id);
936 uint64_t fragment_offset = GNUNET_ntohll (msg->fragment_offset);
937 uint64_t message_id = GNUNET_ntohll (msg->message_id);
938 uint64_t group_generation = GNUNET_ntohll (msg->group_generation);
939
940 if (fragment_id > INT64_MAX || fragment_offset > INT64_MAX ||
941 message_id > INT64_MAX || group_generation > INT64_MAX)
942 {
943 LOG (GNUNET_ERROR_TYPE_ERROR,
944 "Tried to store fragment with a field > INT64_MAX: "
945 "%lu, %lu, %lu, %lu\n", fragment_id, fragment_offset,
946 message_id, group_generation);
947 GNUNET_break (0);
948 return GNUNET_SYSERR;
949 }
950
951 if (GNUNET_OK != channel_key_store (plugin, channel_key))
952 return GNUNET_SYSERR;
953
954 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
955 sizeof (*channel_key), SQLITE_STATIC)
956 || SQLITE_OK != sqlite3_bind_int64 (stmt, 2, ntohl (msg->hop_counter) )
957 || SQLITE_OK != sqlite3_bind_blob (stmt, 3, (const void *) &msg->signature,
958 sizeof (msg->signature), SQLITE_STATIC)
959 || SQLITE_OK != sqlite3_bind_blob (stmt, 4, (const void *) &msg->purpose,
960 sizeof (msg->purpose), SQLITE_STATIC)
961 || SQLITE_OK != sqlite3_bind_int64 (stmt, 5, fragment_id)
962 || SQLITE_OK != sqlite3_bind_int64 (stmt, 6, fragment_offset)
963 || SQLITE_OK != sqlite3_bind_int64 (stmt, 7, message_id)
964 || SQLITE_OK != sqlite3_bind_int64 (stmt, 8, group_generation)
965 || SQLITE_OK != sqlite3_bind_int64 (stmt, 9, ntohl (msg->flags))
966 || SQLITE_OK != sqlite3_bind_int64 (stmt, 10, psycstore_flags)
967 || SQLITE_OK != sqlite3_bind_blob (stmt, 11, (const void *) &msg[1],
968 ntohs (msg->header.size)
969 - sizeof (*msg), SQLITE_STATIC))
970 {
971 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
972 "sqlite3_bind");
973 }
974 else if (SQLITE_DONE != sqlite3_step (stmt))
975 {
976 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
977 "sqlite3_step");
978 }
979
980 if (SQLITE_OK != sqlite3_reset (stmt))
981 {
982 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
983 "sqlite3_reset");
984 return GNUNET_SYSERR;
985 }
986
987 return GNUNET_OK;
988}
989
990/**
991 * Set additional flags for a given message.
992 *
993 * They are OR'd with any existing flags set.
994 *
995 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
996 */
997static int
998message_add_flags (void *cls,
999 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1000 uint64_t message_id,
1001 uint32_t psycstore_flags)
1002{
1003 struct Plugin *plugin = cls;
1004 sqlite3_stmt *stmt = plugin->update_message_flags;
1005 int ret = GNUNET_SYSERR;
1006
1007 if (SQLITE_OK != sqlite3_bind_int64 (stmt, 1, psycstore_flags)
1008 || SQLITE_OK != sqlite3_bind_blob (stmt, 2, channel_key,
1009 sizeof (*channel_key), SQLITE_STATIC)
1010 || SQLITE_OK != sqlite3_bind_int64 (stmt, 3, message_id))
1011 {
1012 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1013 "sqlite3_bind");
1014 }
1015 else
1016 {
1017 switch (sqlite3_step (stmt))
1018 {
1019 case SQLITE_DONE:
1020 ret = sqlite3_total_changes (plugin->dbh) > 0 ? GNUNET_OK : GNUNET_NO;
1021 break;
1022 default:
1023 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1024 "sqlite3_step");
1025 }
1026 }
1027
1028 if (SQLITE_OK != sqlite3_reset (stmt))
1029 {
1030 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1031 "sqlite3_reset");
1032 return GNUNET_SYSERR;
1033 }
1034
1035 return ret;
1036}
1037
1038static int
1039fragment_row (sqlite3_stmt *stmt, GNUNET_PSYCSTORE_FragmentCallback cb,
1040 void *cb_cls)
1041{
1042 int data_size = sqlite3_column_bytes (stmt, 9);
1043 struct GNUNET_MULTICAST_MessageHeader *msg
1044 = GNUNET_malloc (sizeof (*msg) + data_size);
1045
1046 msg->header.size = htons (sizeof (*msg) + data_size);
1047 msg->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE);
1048 msg->hop_counter = htonl ((uint32_t) sqlite3_column_int64 (stmt, 0));
1049 GNUNET_memcpy (&msg->signature,
1050 sqlite3_column_blob (stmt, 1),
1051 sqlite3_column_bytes (stmt, 1));
1052 GNUNET_memcpy (&msg->purpose,
1053 sqlite3_column_blob (stmt, 2),
1054 sqlite3_column_bytes (stmt, 2));
1055 msg->fragment_id = GNUNET_htonll (sqlite3_column_int64 (stmt, 3));
1056 msg->fragment_offset = GNUNET_htonll (sqlite3_column_int64 (stmt, 4));
1057 msg->message_id = GNUNET_htonll (sqlite3_column_int64 (stmt, 5));
1058 msg->group_generation = GNUNET_htonll (sqlite3_column_int64 (stmt, 6));
1059 msg->flags = htonl (sqlite3_column_int64 (stmt, 7));
1060 GNUNET_memcpy (&msg[1], sqlite3_column_blob (stmt, 9), data_size);
1061
1062 return cb (cb_cls, (void *) msg, sqlite3_column_int64 (stmt, 8));
1063}
1064
1065
1066static int
1067fragment_select (struct Plugin *plugin, sqlite3_stmt *stmt,
1068 uint64_t *returned_fragments,
1069 GNUNET_PSYCSTORE_FragmentCallback cb, void *cb_cls)
1070{
1071 int ret = GNUNET_SYSERR;
1072 int sql_ret;
1073
1074 do
1075 {
1076 sql_ret = sqlite3_step (stmt);
1077 switch (sql_ret)
1078 {
1079 case SQLITE_DONE:
1080 if (ret != GNUNET_OK)
1081 ret = GNUNET_NO;
1082 break;
1083 case SQLITE_ROW:
1084 ret = fragment_row (stmt, cb, cb_cls);
1085 (*returned_fragments)++;
1086 if (ret != GNUNET_YES)
1087 sql_ret = SQLITE_DONE;
1088 break;
1089 default:
1090 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1091 "sqlite3_step");
1092 }
1093 }
1094 while (sql_ret == SQLITE_ROW);
1095
1096 return ret;
1097}
1098
1099/**
1100 * Retrieve a message fragment range by fragment ID.
1101 *
1102 * @see GNUNET_PSYCSTORE_fragment_get()
1103 *
1104 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1105 */
1106static int
1107fragment_get (void *cls,
1108 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1109 uint64_t first_fragment_id,
1110 uint64_t last_fragment_id,
1111 uint64_t *returned_fragments,
1112 GNUNET_PSYCSTORE_FragmentCallback cb,
1113 void *cb_cls)
1114{
1115 struct Plugin *plugin = cls;
1116 sqlite3_stmt *stmt = plugin->select_fragments;
1117 int ret = GNUNET_SYSERR;
1118 *returned_fragments = 0;
1119
1120 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1121 sizeof (*channel_key),
1122 SQLITE_STATIC)
1123 || SQLITE_OK != sqlite3_bind_int64 (stmt, 2, first_fragment_id)
1124 || SQLITE_OK != sqlite3_bind_int64 (stmt, 3, last_fragment_id))
1125 {
1126 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1127 "sqlite3_bind");
1128 }
1129 else
1130 {
1131 ret = fragment_select (plugin, stmt, returned_fragments, cb, cb_cls);
1132 }
1133
1134 if (SQLITE_OK != sqlite3_reset (stmt))
1135 {
1136 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1137 "sqlite3_reset");
1138 }
1139
1140 return ret;
1141}
1142
1143
1144/**
1145 * Retrieve a message fragment range by fragment ID.
1146 *
1147 * @see GNUNET_PSYCSTORE_fragment_get_latest()
1148 *
1149 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1150 */
1151static int
1152fragment_get_latest (void *cls,
1153 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1154 uint64_t fragment_limit,
1155 uint64_t *returned_fragments,
1156 GNUNET_PSYCSTORE_FragmentCallback cb,
1157 void *cb_cls)
1158{
1159 struct Plugin *plugin = cls;
1160 sqlite3_stmt *stmt = plugin->select_latest_fragments;
1161 int ret = GNUNET_SYSERR;
1162 *returned_fragments = 0;
1163
1164 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1165 sizeof (*channel_key),
1166 SQLITE_STATIC)
1167 || SQLITE_OK != sqlite3_bind_int64 (stmt, 2, fragment_limit))
1168 {
1169 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1170 "sqlite3_bind");
1171 }
1172 else
1173 {
1174 ret = fragment_select (plugin, stmt, returned_fragments, cb, cb_cls);
1175 }
1176
1177 if (SQLITE_OK != sqlite3_reset (stmt))
1178 {
1179 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1180 "sqlite3_reset");
1181 }
1182
1183 return ret;
1184}
1185
1186
1187/**
1188 * Retrieve all fragments of a message ID range.
1189 *
1190 * @see GNUNET_PSYCSTORE_message_get()
1191 *
1192 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1193 */
1194static int
1195message_get (void *cls,
1196 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1197 uint64_t first_message_id,
1198 uint64_t last_message_id,
1199 uint64_t fragment_limit,
1200 uint64_t *returned_fragments,
1201 GNUNET_PSYCSTORE_FragmentCallback cb,
1202 void *cb_cls)
1203{
1204 struct Plugin *plugin = cls;
1205 sqlite3_stmt *stmt = plugin->select_messages;
1206 int ret = GNUNET_SYSERR;
1207 *returned_fragments = 0;
1208
1209 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1210 sizeof (*channel_key),
1211 SQLITE_STATIC)
1212 || SQLITE_OK != sqlite3_bind_int64 (stmt, 2, first_message_id)
1213 || SQLITE_OK != sqlite3_bind_int64 (stmt, 3, last_message_id)
1214 || SQLITE_OK != sqlite3_bind_int64 (stmt, 4,
1215 (0 != fragment_limit)
1216 ? fragment_limit
1217 : INT64_MAX))
1218 {
1219 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1220 "sqlite3_bind");
1221 }
1222 else
1223 {
1224 ret = fragment_select (plugin, stmt, returned_fragments, cb, cb_cls);
1225 }
1226
1227 if (SQLITE_OK != sqlite3_reset (stmt))
1228 {
1229 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1230 "sqlite3_reset");
1231 }
1232
1233 return ret;
1234}
1235
1236
1237/**
1238 * Retrieve all fragments of the latest messages.
1239 *
1240 * @see GNUNET_PSYCSTORE_message_get_latest()
1241 *
1242 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1243 */
1244static int
1245message_get_latest (void *cls,
1246 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1247 uint64_t message_limit,
1248 uint64_t *returned_fragments,
1249 GNUNET_PSYCSTORE_FragmentCallback cb,
1250 void *cb_cls)
1251{
1252 struct Plugin *plugin = cls;
1253 sqlite3_stmt *stmt = plugin->select_latest_messages;
1254 int ret = GNUNET_SYSERR;
1255 *returned_fragments = 0;
1256
1257 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1258 sizeof (*channel_key),
1259 SQLITE_STATIC)
1260 || SQLITE_OK != sqlite3_bind_blob (stmt, 2, channel_key,
1261 sizeof (*channel_key),
1262 SQLITE_STATIC)
1263 || SQLITE_OK != sqlite3_bind_int64 (stmt, 3, message_limit))
1264 {
1265 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1266 "sqlite3_bind");
1267 }
1268 else
1269 {
1270 ret = fragment_select (plugin, stmt, returned_fragments, cb, cb_cls);
1271 }
1272
1273 if (SQLITE_OK != sqlite3_reset (stmt))
1274 {
1275 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1276 "sqlite3_reset");
1277 }
1278
1279 return ret;
1280}
1281
1282
1283/**
1284 * Retrieve a fragment of message specified by its message ID and fragment
1285 * offset.
1286 *
1287 * @see GNUNET_PSYCSTORE_message_get_fragment()
1288 *
1289 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1290 */
1291static int
1292message_get_fragment (void *cls,
1293 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1294 uint64_t message_id,
1295 uint64_t fragment_offset,
1296 GNUNET_PSYCSTORE_FragmentCallback cb,
1297 void *cb_cls)
1298{
1299 struct Plugin *plugin = cls;
1300 sqlite3_stmt *stmt = plugin->select_message_fragment;
1301 int ret = GNUNET_SYSERR;
1302
1303 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1304 sizeof (*channel_key),
1305 SQLITE_STATIC)
1306 || SQLITE_OK != sqlite3_bind_int64 (stmt, 2, message_id)
1307 || SQLITE_OK != sqlite3_bind_int64 (stmt, 3, fragment_offset))
1308 {
1309 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1310 "sqlite3_bind");
1311 }
1312 else
1313 {
1314 switch (sqlite3_step (stmt))
1315 {
1316 case SQLITE_DONE:
1317 ret = GNUNET_NO;
1318 break;
1319 case SQLITE_ROW:
1320 ret = fragment_row (stmt, cb, cb_cls);
1321 break;
1322 default:
1323 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1324 "sqlite3_step");
1325 }
1326 }
1327
1328 if (SQLITE_OK != sqlite3_reset (stmt))
1329 {
1330 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1331 "sqlite3_reset");
1332 }
1333
1334 return ret;
1335}
1336
1337/**
1338 * Retrieve the max. values of message counters for a channel.
1339 *
1340 * @see GNUNET_PSYCSTORE_counters_get()
1341 *
1342 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1343 */
1344static int
1345counters_message_get (void *cls,
1346 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1347 uint64_t *max_fragment_id,
1348 uint64_t *max_message_id,
1349 uint64_t *max_group_generation)
1350{
1351 struct Plugin *plugin = cls;
1352 sqlite3_stmt *stmt = plugin->select_counters_message;
1353 int ret = GNUNET_SYSERR;
1354
1355 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1356 sizeof (*channel_key),
1357 SQLITE_STATIC))
1358 {
1359 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1360 "sqlite3_bind");
1361 }
1362 else
1363 {
1364 switch (sqlite3_step (stmt))
1365 {
1366 case SQLITE_DONE:
1367 ret = GNUNET_NO;
1368 break;
1369 case SQLITE_ROW:
1370 *max_fragment_id = sqlite3_column_int64 (stmt, 0);
1371 *max_message_id = sqlite3_column_int64 (stmt, 1);
1372 *max_group_generation = sqlite3_column_int64 (stmt, 2);
1373 ret = GNUNET_OK;
1374 break;
1375 default:
1376 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1377 "sqlite3_step");
1378 }
1379 }
1380
1381 if (SQLITE_OK != sqlite3_reset (stmt))
1382 {
1383 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1384 "sqlite3_reset");
1385 }
1386
1387 return ret;
1388}
1389
1390/**
1391 * Retrieve the max. values of state counters for a channel.
1392 *
1393 * @see GNUNET_PSYCSTORE_counters_get()
1394 *
1395 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1396 */
1397static int
1398counters_state_get (void *cls,
1399 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1400 uint64_t *max_state_message_id)
1401{
1402 struct Plugin *plugin = cls;
1403 sqlite3_stmt *stmt = plugin->select_counters_state;
1404 int ret = GNUNET_SYSERR;
1405
1406 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1407 sizeof (*channel_key),
1408 SQLITE_STATIC))
1409 {
1410 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1411 "sqlite3_bind");
1412 }
1413 else
1414 {
1415 switch (sqlite3_step (stmt))
1416 {
1417 case SQLITE_DONE:
1418 ret = GNUNET_NO;
1419 break;
1420 case SQLITE_ROW:
1421 *max_state_message_id = sqlite3_column_int64 (stmt, 0);
1422 ret = GNUNET_OK;
1423 break;
1424 default:
1425 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1426 "sqlite3_step");
1427 }
1428 }
1429
1430 if (SQLITE_OK != sqlite3_reset (stmt))
1431 {
1432 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1433 "sqlite3_reset");
1434 }
1435
1436 return ret;
1437}
1438
1439
1440/**
1441 * Assign a value to a state variable.
1442 *
1443 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1444 */
1445static int
1446state_assign (struct Plugin *plugin, sqlite3_stmt *stmt,
1447 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1448 const char *name, const void *value, size_t value_size)
1449{
1450 int ret = GNUNET_SYSERR;
1451
1452 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1453 sizeof (*channel_key), SQLITE_STATIC)
1454 || SQLITE_OK != sqlite3_bind_text (stmt, 2, name, -1, SQLITE_STATIC)
1455 || SQLITE_OK != sqlite3_bind_blob (stmt, 3, value, value_size,
1456 SQLITE_STATIC))
1457 {
1458 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1459 "sqlite3_bind");
1460 }
1461 else
1462 {
1463 switch (sqlite3_step (stmt))
1464 {
1465 case SQLITE_DONE:
1466 ret = 0 < sqlite3_total_changes (plugin->dbh) ? GNUNET_OK : GNUNET_NO;
1467 break;
1468 default:
1469 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1470 "sqlite3_step");
1471 }
1472 }
1473
1474 if (SQLITE_OK != sqlite3_reset (stmt))
1475 {
1476 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1477 "sqlite3_reset");
1478 return GNUNET_SYSERR;
1479 }
1480
1481 return ret;
1482}
1483
1484
1485static int
1486update_message_id (struct Plugin *plugin, sqlite3_stmt *stmt,
1487 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1488 uint64_t message_id)
1489{
1490 if (SQLITE_OK != sqlite3_bind_int64 (stmt, 1, message_id)
1491 || SQLITE_OK != sqlite3_bind_blob (stmt, 2, channel_key,
1492 sizeof (*channel_key), SQLITE_STATIC))
1493 {
1494 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1495 "sqlite3_bind");
1496 }
1497 else if (SQLITE_DONE != sqlite3_step (stmt))
1498 {
1499 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1500 "sqlite3_step");
1501 }
1502 if (SQLITE_OK != sqlite3_reset (stmt))
1503 {
1504 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1505 "sqlite3_reset");
1506 return GNUNET_SYSERR;
1507 }
1508 return GNUNET_OK;
1509}
1510
1511
1512/**
1513 * Begin modifying current state.
1514 */
1515static int
1516state_modify_begin (void *cls,
1517 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1518 uint64_t message_id, uint64_t state_delta)
1519{
1520 struct Plugin *plugin = cls;
1521
1522 if (state_delta > 0)
1523 {
1524 /**
1525 * We can only apply state modifiers in the current message if modifiers in
1526 * the previous stateful message (message_id - state_delta) were already
1527 * applied.
1528 */
1529
1530 uint64_t max_state_message_id = 0;
1531 int ret = counters_state_get (plugin, channel_key, &max_state_message_id);
1532 switch (ret)
1533 {
1534 case GNUNET_OK:
1535 case GNUNET_NO: // no state yet
1536 ret = GNUNET_OK;
1537 break;
1538 default:
1539 return ret;
1540 }
1541
1542 if (max_state_message_id < message_id - state_delta)
1543 return GNUNET_NO; /* some stateful messages not yet applied */
1544 else if (message_id - state_delta < max_state_message_id)
1545 return GNUNET_NO; /* changes already applied */
1546 }
1547
1548 if (TRANSACTION_NONE != plugin->transaction)
1549 {
1550 /** @todo FIXME: wait for other transaction to finish */
1551 return GNUNET_SYSERR;
1552 }
1553 return transaction_begin (plugin, TRANSACTION_STATE_MODIFY);
1554}
1555
1556
1557/**
1558 * Set the current value of state variable.
1559 *
1560 * @see GNUNET_PSYCSTORE_state_modify()
1561 *
1562 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1563 */
1564static int
1565state_modify_op (void *cls,
1566 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1567 enum GNUNET_PSYC_Operator op,
1568 const char *name, const void *value, size_t value_size)
1569{
1570 struct Plugin *plugin = cls;
1571 GNUNET_assert (TRANSACTION_STATE_MODIFY == plugin->transaction);
1572
1573 switch (op)
1574 {
1575 case GNUNET_PSYC_OP_ASSIGN:
1576 return state_assign (plugin, plugin->insert_state_current, channel_key,
1577 name, value, value_size);
1578
1579 default: /** @todo implement more state operations */
1580 GNUNET_break (0);
1581 return GNUNET_SYSERR;
1582 }
1583}
1584
1585
1586/**
1587 * End modifying current state.
1588 */
1589static int
1590state_modify_end (void *cls,
1591 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1592 uint64_t message_id)
1593{
1594 struct Plugin *plugin = cls;
1595 GNUNET_assert (TRANSACTION_STATE_MODIFY == plugin->transaction);
1596
1597 return
1598 GNUNET_OK == exec_channel (plugin, plugin->delete_state_empty, channel_key)
1599 && GNUNET_OK == update_message_id (plugin,
1600 plugin->update_max_state_message_id,
1601 channel_key, message_id)
1602 && GNUNET_OK == transaction_commit (plugin)
1603 ? GNUNET_OK : GNUNET_SYSERR;
1604}
1605
1606
1607/**
1608 * Begin state synchronization.
1609 */
1610static int
1611state_sync_begin (void *cls,
1612 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1613{
1614 struct Plugin *plugin = cls;
1615 return exec_channel (plugin, plugin->delete_state_sync, channel_key);
1616}
1617
1618
1619/**
1620 * Assign current value of a state variable.
1621 *
1622 * @see GNUNET_PSYCSTORE_state_modify()
1623 *
1624 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1625 */
1626static int
1627state_sync_assign (void *cls,
1628 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1629 const char *name, const void *value, size_t value_size)
1630{
1631 struct Plugin *plugin = cls;
1632 return state_assign (cls, plugin->insert_state_sync, channel_key,
1633 name, value, value_size);
1634}
1635
1636
1637/**
1638 * End modifying current state.
1639 */
1640static int
1641state_sync_end (void *cls,
1642 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1643 uint64_t max_state_message_id,
1644 uint64_t state_hash_message_id)
1645{
1646 struct Plugin *plugin = cls;
1647 int ret = GNUNET_SYSERR;
1648
1649 if (TRANSACTION_NONE != plugin->transaction)
1650 {
1651 /** @todo FIXME: wait for other transaction to finish */
1652 return GNUNET_SYSERR;
1653 }
1654
1655 GNUNET_OK == transaction_begin (plugin, TRANSACTION_STATE_SYNC)
1656 && GNUNET_OK == exec_channel (plugin, plugin->delete_state, channel_key)
1657 && GNUNET_OK == exec_channel (plugin, plugin->insert_state_from_sync,
1658 channel_key)
1659 && GNUNET_OK == exec_channel (plugin, plugin->delete_state_sync,
1660 channel_key)
1661 && GNUNET_OK == update_message_id (plugin,
1662 plugin->update_state_hash_message_id,
1663 channel_key, state_hash_message_id)
1664 && GNUNET_OK == update_message_id (plugin,
1665 plugin->update_max_state_message_id,
1666 channel_key, max_state_message_id)
1667 && GNUNET_OK == transaction_commit (plugin)
1668 ? ret = GNUNET_OK
1669 : transaction_rollback (plugin);
1670 return ret;
1671}
1672
1673
1674/**
1675 * Delete the whole state.
1676 *
1677 * @see GNUNET_PSYCSTORE_state_reset()
1678 *
1679 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1680 */
1681static int
1682state_reset (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1683{
1684 struct Plugin *plugin = cls;
1685 return exec_channel (plugin, plugin->delete_state, channel_key);
1686}
1687
1688
1689/**
1690 * Update signed values of state variables in the state store.
1691 *
1692 * @see GNUNET_PSYCSTORE_state_hash_update()
1693 *
1694 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1695 */
1696static int
1697state_update_signed (void *cls,
1698 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key)
1699{
1700 struct Plugin *plugin = cls;
1701 return exec_channel (plugin, plugin->update_state_signed, channel_key);
1702}
1703
1704
1705/**
1706 * Retrieve a state variable by name.
1707 *
1708 * @see GNUNET_PSYCSTORE_state_get()
1709 *
1710 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1711 */
1712static int
1713state_get (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1714 const char *name, GNUNET_PSYCSTORE_StateCallback cb, void *cb_cls)
1715{
1716 struct Plugin *plugin = cls;
1717 int ret = GNUNET_SYSERR;
1718
1719 sqlite3_stmt *stmt = plugin->select_state_one;
1720
1721 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1722 sizeof (*channel_key),
1723 SQLITE_STATIC)
1724 || SQLITE_OK != sqlite3_bind_text (stmt, 2, name, -1, SQLITE_STATIC))
1725 {
1726 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1727 "sqlite3_bind");
1728 }
1729 else
1730 {
1731 switch (sqlite3_step (stmt))
1732 {
1733 case SQLITE_DONE:
1734 ret = GNUNET_NO;
1735 break;
1736 case SQLITE_ROW:
1737 ret = cb (cb_cls, name, sqlite3_column_blob (stmt, 0),
1738 sqlite3_column_bytes (stmt, 0));
1739 break;
1740 default:
1741 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1742 "sqlite3_step");
1743 }
1744 }
1745
1746 if (SQLITE_OK != sqlite3_reset (stmt))
1747 {
1748 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1749 "sqlite3_reset");
1750 }
1751
1752 return ret;
1753}
1754
1755
1756/**
1757 * Retrieve all state variables for a channel with the given prefix.
1758 *
1759 * @see GNUNET_PSYCSTORE_state_get_prefix()
1760 *
1761 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1762 */
1763static int
1764state_get_prefix (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1765 const char *name, GNUNET_PSYCSTORE_StateCallback cb,
1766 void *cb_cls)
1767{
1768 struct Plugin *plugin = cls;
1769 int ret = GNUNET_SYSERR;
1770 sqlite3_stmt *stmt = plugin->select_state_prefix;
1771 size_t name_len = strlen (name);
1772
1773 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1774 sizeof (*channel_key), SQLITE_STATIC)
1775 || SQLITE_OK != sqlite3_bind_text (stmt, 2, name, name_len, SQLITE_STATIC)
1776 || SQLITE_OK != sqlite3_bind_int (stmt, 3, name_len)
1777 || SQLITE_OK != sqlite3_bind_text (stmt, 4, name, name_len, SQLITE_STATIC))
1778 {
1779 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1780 "sqlite3_bind");
1781 }
1782 else
1783 {
1784 int sql_ret;
1785 do
1786 {
1787 sql_ret = sqlite3_step (stmt);
1788 switch (sql_ret)
1789 {
1790 case SQLITE_DONE:
1791 if (ret != GNUNET_OK)
1792 ret = GNUNET_NO;
1793 break;
1794 case SQLITE_ROW:
1795 ret = cb (cb_cls, (const char *) sqlite3_column_text (stmt, 0),
1796 sqlite3_column_blob (stmt, 1),
1797 sqlite3_column_bytes (stmt, 1));
1798 if (ret != GNUNET_YES)
1799 sql_ret = SQLITE_DONE;
1800 break;
1801 default:
1802 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1803 "sqlite3_step");
1804 }
1805 }
1806 while (sql_ret == SQLITE_ROW);
1807 }
1808 if (SQLITE_OK != sqlite3_reset (stmt))
1809 {
1810 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1811 "sqlite3_reset");
1812 }
1813 return ret;
1814}
1815
1816
1817/**
1818 * Retrieve all signed state variables for a channel.
1819 *
1820 * @see GNUNET_PSYCSTORE_state_get_signed()
1821 *
1822 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
1823 */
1824static int
1825state_get_signed (void *cls,
1826 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1827 GNUNET_PSYCSTORE_StateCallback cb, void *cb_cls)
1828{
1829 struct Plugin *plugin = cls;
1830 int ret = GNUNET_SYSERR;
1831
1832 sqlite3_stmt *stmt = plugin->select_state_signed;
1833
1834 if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
1835 sizeof (*channel_key), SQLITE_STATIC))
1836 {
1837 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1838 "sqlite3_bind");
1839 }
1840 else
1841 {
1842 int sql_ret;
1843 do
1844 {
1845 sql_ret = sqlite3_step (stmt);
1846 switch (sql_ret)
1847 {
1848 case SQLITE_DONE:
1849 if (ret != GNUNET_OK)
1850 ret = GNUNET_NO;
1851 break;
1852 case SQLITE_ROW:
1853 ret = cb (cb_cls, (const char *) sqlite3_column_text (stmt, 0),
1854 sqlite3_column_blob (stmt, 1),
1855 sqlite3_column_bytes (stmt, 1));
1856 if (ret != GNUNET_YES)
1857 sql_ret = SQLITE_DONE;
1858 break;
1859 default:
1860 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1861 "sqlite3_step");
1862 }
1863 }
1864 while (sql_ret == SQLITE_ROW);
1865 }
1866
1867 if (SQLITE_OK != sqlite3_reset (stmt))
1868 {
1869 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1870 "sqlite3_reset");
1871 }
1872
1873 return ret;
1874}
1875
1876
1877/**
1878 * Entry point for the plugin.
1879 *
1880 * @param cls The struct GNUNET_CONFIGURATION_Handle.
1881 * @return NULL on error, otherwise the plugin context
1882 */
1883void *
1884libgnunet_plugin_psycstore_sqlite_init (void *cls)
1885{
1886 static struct Plugin plugin;
1887 const struct GNUNET_CONFIGURATION_Handle *cfg = cls;
1888 struct GNUNET_PSYCSTORE_PluginFunctions *api;
1889
1890 if (NULL != plugin.cfg)
1891 return NULL; /* can only initialize once! */
1892 memset (&plugin, 0, sizeof (struct Plugin));
1893 plugin.cfg = cfg;
1894 if (GNUNET_OK != database_setup (&plugin))
1895 {
1896 database_shutdown (&plugin);
1897 return NULL;
1898 }
1899 api = GNUNET_new (struct GNUNET_PSYCSTORE_PluginFunctions);
1900 api->cls = &plugin;
1901 api->membership_store = &sqlite_membership_store;
1902 api->membership_test = &membership_test;
1903 api->fragment_store = &fragment_store;
1904 api->message_add_flags = &message_add_flags;
1905 api->fragment_get = &fragment_get;
1906 api->fragment_get_latest = &fragment_get_latest;
1907 api->message_get = &message_get;
1908 api->message_get_latest = &message_get_latest;
1909 api->message_get_fragment = &message_get_fragment;
1910 api->counters_message_get = &counters_message_get;
1911 api->counters_state_get = &counters_state_get;
1912 api->state_modify_begin = &state_modify_begin;
1913 api->state_modify_op = &state_modify_op;
1914 api->state_modify_end = &state_modify_end;
1915 api->state_sync_begin = &state_sync_begin;
1916 api->state_sync_assign = &state_sync_assign;
1917 api->state_sync_end = &state_sync_end;
1918 api->state_reset = &state_reset;
1919 api->state_update_signed = &state_update_signed;
1920 api->state_get = &state_get;
1921 api->state_get_prefix = &state_get_prefix;
1922 api->state_get_signed = &state_get_signed;
1923
1924 LOG (GNUNET_ERROR_TYPE_INFO, _("SQLite database running\n"));
1925 return api;
1926}
1927
1928
1929/**
1930 * Exit point from the plugin.
1931 *
1932 * @param cls The plugin context (as returned by "init")
1933 * @return Always NULL
1934 */
1935void *
1936libgnunet_plugin_psycstore_sqlite_done (void *cls)
1937{
1938 struct GNUNET_PSYCSTORE_PluginFunctions *api = cls;
1939 struct Plugin *plugin = api->cls;
1940
1941 database_shutdown (plugin);
1942 plugin->cfg = NULL;
1943 GNUNET_free (api);
1944 LOG (GNUNET_ERROR_TYPE_DEBUG, "SQLite plugin is finished\n");
1945 return NULL;
1946}
1947
1948/* end of plugin_psycstore_sqlite.c */
diff --git a/src/psycstore/psycstore.conf.in b/src/psycstore/psycstore.conf.in
deleted file mode 100644
index 3905db173..000000000
--- a/src/psycstore/psycstore.conf.in
+++ /dev/null
@@ -1,28 +0,0 @@
1[psycstore]
2START_ON_DEMAND = @START_ON_DEMAND@
3BINARY = gnunet-service-psycstore
4
5UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-psycstore.sock
6UNIX_MATCH_UID = YES
7UNIX_MATCH_GID = YES
8
9@UNIXONLY@PORT = 2111
10HOSTNAME = localhost
11ACCEPT_FROM = 127.0.0.1;
12ACCEPT_FROM6 = ::1;
13
14DATABASE = sqlite
15
16[psycstore-sqlite]
17FILENAME = $GNUNET_DATA_HOME/psycstore/sqlite.db
18
19[psycstore-mysql]
20DATABASE = gnunet
21CONFIG = ~/.my.cnf
22# USER = gnunet
23# PASSWORD =
24# HOST = localhost
25# PORT = 3306
26
27[psycstore-postgres]
28CONFIG = connect_timeout=10; dbname=gnunet
diff --git a/src/psycstore/psycstore.h b/src/psycstore/psycstore.h
deleted file mode 100644
index 9a1c06aa8..000000000
--- a/src/psycstore/psycstore.h
+++ /dev/null
@@ -1,520 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psycstore/psycstore.h
23 * @brief Common type definitions for the PSYCstore service and API.
24 * @author Gabor X Toth
25 */
26
27#ifndef GNUNET_PSYCSTORE_H
28#define GNUNET_PSYCSTORE_H
29
30#include "gnunet_common.h"
31
32
33GNUNET_NETWORK_STRUCT_BEGIN
34
35/**
36 * Answer from service to client about last operation.
37 */
38struct OperationResult
39{
40 /**
41 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE
42 */
43 struct GNUNET_MessageHeader header;
44
45 uint32_t reserved GNUNET_PACKED;
46
47 /**
48 * Operation ID.
49 */
50 uint64_t op_id GNUNET_PACKED;
51
52 /**lowed by
53 * Status code for the operation.
54 */
55 uint64_t result_code GNUNET_PACKED;
56
57 /* followed by 0-terminated error message (on error) */
58
59};
60
61
62/**
63 * Answer from service to client about master counters.
64 *
65 * @see GNUNET_PSYCSTORE_counters_get()
66 */
67struct CountersResult
68{
69 /**
70 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_COUNTERS
71 */
72 struct GNUNET_MessageHeader header;
73
74 /**
75 * Status code for the operation:
76 * #GNUNET_OK: success, counter values are returned.
77 * #GNUNET_NO: no message has been sent to the channel yet.
78 * #GNUNET_SYSERR: an error occurred.
79 */
80 uint32_t result_code GNUNET_PACKED;
81
82 /**
83 * Operation ID.
84 */
85 uint64_t op_id GNUNET_PACKED;
86
87 uint64_t max_fragment_id GNUNET_PACKED;
88
89 uint64_t max_message_id GNUNET_PACKED;
90
91 uint64_t max_group_generation GNUNET_PACKED;
92
93 uint64_t max_state_message_id GNUNET_PACKED;
94};
95
96
97/**
98 * Answer from service to client containing a message fragment.
99 */
100struct FragmentResult
101{
102 /**
103 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE
104 */
105 struct GNUNET_MessageHeader header;
106
107 uint32_t psycstore_flags GNUNET_PACKED;
108
109 /**
110 * Operation ID.
111 */
112 uint64_t op_id GNUNET_PACKED;
113
114 /* Followed by GNUNET_MULTICAST_MessageHeader */
115};
116
117
118/**
119 * Answer from service to client containing a state variable.
120 */
121struct StateResult
122{
123 /**
124 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE
125 */
126 struct GNUNET_MessageHeader header;
127
128 uint16_t name_size GNUNET_PACKED;
129
130 uint16_t reserved GNUNET_PACKED;
131
132 /**
133 * Operation ID.
134 */
135 uint64_t op_id GNUNET_PACKED;
136
137 /* Followed by name and value */
138};
139
140
141/**
142 * Generic operation request.
143 */
144struct OperationRequest
145{
146 struct GNUNET_MessageHeader header;
147
148 uint32_t reserved GNUNET_PACKED;
149
150 /**
151 * Operation ID.
152 */
153 uint64_t op_id GNUNET_PACKED;
154
155 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
156};
157
158
159/**
160 * @see GNUNET_PSYCSTORE_membership_store()
161 */
162struct MembershipStoreRequest
163{
164 /**
165 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_MEMBERSHIP_STORE
166 */
167 struct GNUNET_MessageHeader header;
168
169 uint32_t reserved GNUNET_PACKED;
170
171 /**
172 * Operation ID.
173 */
174 uint64_t op_id GNUNET_PACKED;
175
176 /**
177 * Channel's public key.
178 */
179 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
180
181 /**
182 * Slave's public key.
183 */
184 struct GNUNET_CRYPTO_EcdsaPublicKey slave_key;
185
186 uint64_t announced_at GNUNET_PACKED;
187 uint64_t effective_since GNUNET_PACKED;
188 uint64_t group_generation GNUNET_PACKED;
189 uint8_t did_join;
190};
191
192
193/**
194 * @see GNUNET_PSYCSTORE_membership_test()
195 */
196struct MembershipTestRequest
197{
198 /**
199 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_MEMBERSHIP_TEST
200 */
201 struct GNUNET_MessageHeader header;
202
203 uint32_t reserved GNUNET_PACKED;
204
205 /**
206 * Operation ID.
207 */
208 uint64_t op_id GNUNET_PACKED;
209
210 /**
211 * Channel's public key.
212 */
213 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
214
215 /**
216 * Slave's public key.
217 */
218 struct GNUNET_CRYPTO_EcdsaPublicKey slave_key;
219
220 uint64_t message_id GNUNET_PACKED;
221
222 uint64_t group_generation GNUNET_PACKED;
223};
224
225
226/**
227 * @see GNUNET_PSYCSTORE_fragment_store()
228 */
229struct FragmentStoreRequest
230{
231 /**
232 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_FRAGMENT_STORE
233 */
234 struct GNUNET_MessageHeader header;
235
236 /**
237 * enum GNUNET_PSYCSTORE_MessageFlags
238 */
239 uint32_t psycstore_flags GNUNET_PACKED;
240
241 /**
242 * Channel's public key.
243 */
244 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
245
246 /**
247 * Operation ID.
248 */
249 uint64_t op_id;
250
251 /* Followed by fragment */
252};
253
254
255/**
256 * @see GNUNET_PSYCSTORE_fragment_get()
257 */
258struct FragmentGetRequest
259{
260 /**
261 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_FRAGMENT_GET
262 */
263 struct GNUNET_MessageHeader header;
264
265 uint32_t reserved GNUNET_PACKED;
266
267 /**
268 * Operation ID.
269 */
270 uint64_t op_id GNUNET_PACKED;
271
272 /**
273 * Channel's public key.
274 */
275 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
276
277 /**
278 * Slave's public key.
279 */
280 struct GNUNET_CRYPTO_EcdsaPublicKey slave_key;
281
282 /**
283 * First fragment ID to request.
284 */
285 uint64_t first_fragment_id GNUNET_PACKED;
286
287 /**
288 * Last fragment ID to request.
289 */
290 uint64_t last_fragment_id GNUNET_PACKED;
291
292 /**
293 * Maximum number of fragments to retrieve.
294 */
295 uint64_t fragment_limit GNUNET_PACKED;
296
297 /**
298 * Do membership test with @a slave_key before returning fragment?
299 * #GNUNET_YES or #GNUNET_NO
300 */
301 uint8_t do_membership_test;
302};
303
304
305/**
306 * @see GNUNET_PSYCSTORE_message_get()
307 */
308struct MessageGetRequest
309{
310 /**
311 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_MESSAGE_GET
312 */
313 struct GNUNET_MessageHeader header;
314
315 uint32_t reserved GNUNET_PACKED;
316
317 /**
318 * Operation ID.
319 */
320 uint64_t op_id GNUNET_PACKED;
321
322 /**
323 * Channel's public key.
324 */
325 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
326
327 /**
328 * Slave's public key.
329 */
330 struct GNUNET_CRYPTO_EcdsaPublicKey slave_key;
331
332 /**
333 * First message ID to request.
334 */
335 uint64_t first_message_id GNUNET_PACKED;
336
337 /**
338 * Last message ID to request.
339 */
340 uint64_t last_message_id GNUNET_PACKED;
341
342 /**
343 * Maximum number of messages to retrieve.
344 */
345 uint64_t message_limit GNUNET_PACKED;
346
347 /**
348 * Maximum number of fragments to retrieve.
349 */
350 uint64_t fragment_limit GNUNET_PACKED;
351
352 /**
353 * Do membership test with @a slave_key before returning fragment?
354 * #GNUNET_YES or #GNUNET_NO
355 */
356 uint8_t do_membership_test;
357
358 /* Followed by method_prefix */
359};
360
361
362/**
363 * @see GNUNET_PSYCSTORE_message_get_fragment()
364 */
365struct MessageGetFragmentRequest
366{
367 /**
368 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_MESSAGE_FRAGMENT_GET
369 */
370 struct GNUNET_MessageHeader header;
371
372 uint32_t reserved GNUNET_PACKED;
373
374 /**
375 * Operation ID.
376 */
377 uint64_t op_id GNUNET_PACKED;
378
379 /**
380 * Channel's public key.
381 */
382 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
383
384 /**
385 * Slave's public key.
386 */
387 struct GNUNET_CRYPTO_EcdsaPublicKey slave_key;
388
389 /**
390 * Requested message ID.
391 */
392 uint64_t message_id GNUNET_PACKED;
393
394 /**
395 * Requested fragment offset.
396 */
397 uint64_t fragment_offset GNUNET_PACKED;
398
399 /**
400 * Do membership test with @a slave_key before returning fragment?
401 * #GNUNET_YES or #GNUNET_NO
402 */
403 uint8_t do_membership_test;
404};
405
406
407/**
408 * @see GNUNET_PSYCSTORE_state_hash_update()
409 */
410struct StateHashUpdateRequest
411{
412 /**
413 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_HASH_UPDATE
414 */
415 struct GNUNET_MessageHeader header;
416
417 uint32_t reserved GNUNET_PACKED;
418
419 /**
420 * Operation ID.
421 */
422 uint64_t op_id GNUNET_PACKED;
423
424 /**
425 * Channel's public key.
426 */
427 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
428
429 struct GNUNET_HashCode hash;
430};
431
432
433enum StateOpFlags
434{
435 STATE_OP_FIRST = 1 << 0,
436 STATE_OP_LAST = 1 << 1
437};
438
439
440/**
441 * @see GNUNET_PSYCSTORE_state_modify()
442 */
443struct StateModifyRequest
444{
445 /**
446 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_MODIFY
447 */
448 struct GNUNET_MessageHeader header;
449
450 /**
451 * Operation ID.
452 */
453 uint64_t op_id GNUNET_PACKED;
454
455 /**
456 * ID of the message to apply the state changes in.
457 */
458 uint64_t message_id GNUNET_PACKED;
459
460 /**
461 * State delta of the message with ID @a message_id.
462 */
463 uint64_t state_delta GNUNET_PACKED;
464
465 /**
466 * Channel's public key.
467 */
468 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
469};
470
471
472/**
473 * @see GNUNET_PSYCSTORE_state_sync()
474 */
475struct StateSyncRequest
476{
477 /**
478 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_SYNC
479 */
480 struct GNUNET_MessageHeader header;
481
482 /**
483 * Size of name, including NUL terminator.
484 */
485 uint16_t name_size GNUNET_PACKED;
486
487 /**
488 * OR'd StateOpFlags
489 */
490 uint8_t flags;
491
492 uint8_t reserved;
493
494 /**
495 * Operation ID.
496 */
497 uint64_t op_id GNUNET_PACKED;
498
499 /**
500 * ID of the message that contains the state_hash PSYC header variable.
501 */
502 uint64_t state_hash_message_id GNUNET_PACKED;
503
504 /**
505 * ID of the last stateful message before @a state_hash_message_id.
506 */
507 uint64_t max_state_message_id GNUNET_PACKED;
508
509 /**
510 * Channel's public key.
511 */
512 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
513
514 /* Followed by NUL-terminated name, then the value. */
515};
516
517
518GNUNET_NETWORK_STRUCT_END
519
520#endif
diff --git a/src/psycstore/psycstore_api.c b/src/psycstore/psycstore_api.c
deleted file mode 100644
index ab4cd0fbf..000000000
--- a/src/psycstore/psycstore_api.c
+++ /dev/null
@@ -1,1285 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psycstore/psycstore_api.c
23 * @brief API to interact with the PSYCstore service
24 * @author Gabor X Toth
25 * @author Christian Grothoff
26 */
27
28#include <inttypes.h>
29
30#include "platform.h"
31#include "gnunet_util_lib.h"
32#include "gnunet_constants.h"
33#include "gnunet_protocols.h"
34#include "gnunet_psycstore_service.h"
35#include "gnunet_multicast_service.h"
36#include "psycstore.h"
37
38#define LOG(kind,...) GNUNET_log_from (kind, "psycstore-api",__VA_ARGS__)
39
40/**
41 * Handle for an operation with the PSYCstore service.
42 */
43struct GNUNET_PSYCSTORE_OperationHandle
44{
45
46 /**
47 * Main PSYCstore handle.
48 */
49 struct GNUNET_PSYCSTORE_Handle *h;
50
51 /**
52 * Data callbacks.
53 */
54 union {
55 GNUNET_PSYCSTORE_FragmentCallback fragment_cb;
56 GNUNET_PSYCSTORE_CountersCallback counters_cb;
57 GNUNET_PSYCSTORE_StateCallback state_cb;
58 };
59
60 /**
61 * Closure for callbacks.
62 */
63 void *cls;
64
65 /**
66 * Message envelope.
67 */
68 struct GNUNET_MQ_Envelope *env;
69
70 /**
71 * Operation ID.
72 */
73 uint64_t op_id;
74};
75
76
77/**
78 * Handle for the service.
79 */
80struct GNUNET_PSYCSTORE_Handle
81{
82 /**
83 * Configuration to use.
84 */
85 const struct GNUNET_CONFIGURATION_Handle *cfg;
86
87 /**
88 * Client connection.
89 */
90 struct GNUNET_MQ_Handle *mq;
91
92 /**
93 * Async operations.
94 */
95 struct GNUNET_OP_Handle *op;
96
97 /**
98 * Task doing exponential back-off trying to reconnect.
99 */
100 struct GNUNET_SCHEDULER_Task *reconnect_task;
101
102 /**
103 * Delay for next connect retry.
104 */
105 struct GNUNET_TIME_Relative reconnect_delay;
106
107
108 GNUNET_PSYCSTORE_FragmentCallback *fragment_cb;
109
110 GNUNET_PSYCSTORE_CountersCallback *counters_cb;
111
112 GNUNET_PSYCSTORE_StateCallback *state_cb;
113 /**
114 * Closure for callbacks.
115 */
116 void *cb_cls;
117};
118
119
120static int
121check_result_code (void *cls, const struct OperationResult *opres)
122{
123 uint16_t size = ntohs (opres->header.size);
124 const char *str = (const char *) &opres[1];
125 if ( (sizeof (*opres) < size) &&
126 ('\0' != str[size - sizeof (*opres) - 1]) )
127 {
128 GNUNET_break (0);
129 return GNUNET_SYSERR;
130 }
131
132 return GNUNET_OK;
133}
134
135
136static void
137handle_result_code (void *cls, const struct OperationResult *opres)
138{
139 struct GNUNET_PSYCSTORE_Handle *h = cls;
140 struct GNUNET_PSYCSTORE_OperationHandle *op = NULL;
141 uint16_t size = ntohs (opres->header.size);
142
143 const char *
144 str = (sizeof (*opres) < size) ? (const char *) &opres[1] : "";
145
146 if (GNUNET_YES == GNUNET_OP_result (h->op, GNUNET_ntohll (opres->op_id),
147 GNUNET_ntohll (opres->result_code) + INT64_MIN,
148 str, size - sizeof (*opres), (void **) &op))
149 {
150 LOG (GNUNET_ERROR_TYPE_DEBUG,
151 "handle_result_code: Received result message with OP ID: %" PRIu64 "\n",
152 GNUNET_ntohll (opres->op_id));
153 GNUNET_free (op);
154 }
155 else
156 {
157 LOG (GNUNET_ERROR_TYPE_DEBUG,
158 "handle_result_code: No callback registered for OP ID %" PRIu64 ".\n",
159 GNUNET_ntohll (opres->op_id));
160 }
161 h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
162}
163
164
165static void
166handle_result_counters (void *cls, const struct CountersResult *cres)
167{
168 struct GNUNET_PSYCSTORE_Handle *h = cls;
169 struct GNUNET_PSYCSTORE_OperationHandle *op = NULL;
170
171 if (GNUNET_YES == GNUNET_OP_get (h->op, GNUNET_ntohll (cres->op_id),
172 NULL, NULL, (void **) &op))
173 {
174 GNUNET_assert (NULL != op);
175 if (NULL != op->counters_cb)
176 {
177 op->counters_cb (op->cls,
178 ntohl (cres->result_code),
179 GNUNET_ntohll (cres->max_fragment_id),
180 GNUNET_ntohll (cres->max_message_id),
181 GNUNET_ntohll (cres->max_group_generation),
182 GNUNET_ntohll (cres->max_state_message_id));
183 }
184 GNUNET_OP_remove (h->op, GNUNET_ntohll (cres->op_id));
185 GNUNET_free (op);
186 }
187 else
188 {
189 LOG (GNUNET_ERROR_TYPE_DEBUG,
190 "handle_result_counters: No callback registered for OP ID %" PRIu64 ".\n",
191 GNUNET_ntohll (cres->op_id));
192 }
193 h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
194}
195
196
197static int
198check_result_fragment (void *cls, const struct FragmentResult *fres)
199{
200 uint16_t size = ntohs (fres->header.size);
201 struct GNUNET_MULTICAST_MessageHeader *mmsg =
202 (struct GNUNET_MULTICAST_MessageHeader *) &fres[1];
203 if (sizeof (*fres) + sizeof (*mmsg) < size
204 && sizeof (*fres) + ntohs (mmsg->header.size) != size)
205 {
206 LOG (GNUNET_ERROR_TYPE_ERROR,
207 "check_result_fragment: Received message with invalid length %lu bytes.\n",
208 size, sizeof (*fres));
209 GNUNET_break (0);
210 return GNUNET_SYSERR;
211 }
212 return GNUNET_OK;
213}
214
215
216static void
217handle_result_fragment (void *cls, const struct FragmentResult *fres)
218{
219 struct GNUNET_PSYCSTORE_Handle *h = cls;
220 struct GNUNET_PSYCSTORE_OperationHandle *op = NULL;
221
222 if (GNUNET_YES == GNUNET_OP_get (h->op, GNUNET_ntohll (fres->op_id),
223 NULL, NULL, (void **) &op))
224 {
225 GNUNET_assert (NULL != op);
226 if (NULL != op->fragment_cb)
227 op->fragment_cb (op->cls,
228 (struct GNUNET_MULTICAST_MessageHeader *) &fres[1],
229 ntohl (fres->psycstore_flags));
230 //GNUNET_OP_remove (h->op, GNUNET_ntohll (fres->op_id));
231 //GNUNET_free (op);
232 }
233 else
234 {
235 LOG (GNUNET_ERROR_TYPE_DEBUG,
236 "handle_result_fragment: No callback registered for OP ID %" PRIu64 ".\n",
237 GNUNET_ntohll (fres->op_id));
238 }
239 h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
240}
241
242
243static int
244check_result_state (void *cls, const struct StateResult *sres)
245{
246 const char *name = (const char *) &sres[1];
247 uint16_t size = ntohs (sres->header.size);
248 uint16_t name_size = ntohs (sres->name_size);
249
250 if (name_size <= 2
251 || size - sizeof (*sres) < name_size
252 || '\0' != name[name_size - 1])
253 {
254 LOG (GNUNET_ERROR_TYPE_ERROR,
255 "check_result_state: Received state result message with invalid name.\n");
256 GNUNET_break (0);
257 return GNUNET_SYSERR;
258 }
259 return GNUNET_OK;
260}
261
262
263static void
264handle_result_state (void *cls, const struct StateResult *sres)
265{
266 struct GNUNET_PSYCSTORE_Handle *h = cls;
267 struct GNUNET_PSYCSTORE_OperationHandle *op = NULL;
268
269 const char *name = (const char *) &sres[1];
270 uint16_t name_size = ntohs (sres->name_size);
271
272 if (GNUNET_YES == GNUNET_OP_get (h->op, GNUNET_ntohll (sres->op_id),
273 NULL, NULL, (void **) &op))
274 {
275 GNUNET_assert (NULL != op);
276 if (NULL != op->state_cb)
277 op->state_cb (op->cls, name, (char *) &sres[1] + name_size,
278 ntohs (sres->header.size) - sizeof (*sres) - name_size);
279 //GNUNET_OP_remove (h->op, GNUNET_ntohll (sres->op_id));
280 //GNUNET_free (op);
281 }
282 else
283 {
284 LOG (GNUNET_ERROR_TYPE_DEBUG,
285 "handle_result_state: No callback registered for OP ID %" PRIu64 ".\n",
286 GNUNET_ntohll (sres->op_id));
287 }
288 h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
289}
290
291
292static void
293reconnect (void *cls);
294
295
296/**
297 * Client disconnected from service.
298 *
299 * Reconnect after backoff period.=
300 */
301static void
302disconnected (void *cls, enum GNUNET_MQ_Error error)
303{
304 struct GNUNET_PSYCSTORE_Handle *h = cls;
305
306 LOG (GNUNET_ERROR_TYPE_DEBUG,
307 "Origin client disconnected (%d), re-connecting\n",
308 (int) error);
309 if (NULL != h->mq)
310 {
311 GNUNET_MQ_destroy (h->mq);
312 GNUNET_OP_destroy (h->op);
313 h->mq = NULL;
314 h->op = NULL;
315 }
316
317 h->reconnect_task = GNUNET_SCHEDULER_add_delayed (h->reconnect_delay,
318 &reconnect, h);
319 h->reconnect_delay = GNUNET_TIME_STD_BACKOFF (h->reconnect_delay);
320}
321
322
323static void
324do_connect (struct GNUNET_PSYCSTORE_Handle *h)
325{
326 LOG (GNUNET_ERROR_TYPE_DEBUG,
327 "Connecting to PSYCstore service.\n");
328
329 struct GNUNET_MQ_MessageHandler handlers[] = {
330 GNUNET_MQ_hd_var_size (result_code,
331 GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE,
332 struct OperationResult,
333 h),
334 GNUNET_MQ_hd_fixed_size (result_counters,
335 GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_COUNTERS,
336 struct CountersResult,
337 h),
338 GNUNET_MQ_hd_var_size (result_fragment,
339 GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_FRAGMENT,
340 struct FragmentResult,
341 h),
342 GNUNET_MQ_hd_var_size (result_state,
343 GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_STATE,
344 struct StateResult,
345 h),
346 GNUNET_MQ_handler_end ()
347 };
348
349 h->op = GNUNET_OP_create ();
350 GNUNET_assert (NULL == h->mq);
351 h->mq = GNUNET_CLIENT_connect (h->cfg, "psycstore",
352 handlers, disconnected, h);
353 GNUNET_assert (NULL != h->mq);
354}
355
356
357/**
358 * Try again to connect to the PSYCstore service.
359 *
360 * @param cls Handle to the PSYCstore service.
361 */
362static void
363reconnect (void *cls)
364{
365 struct GNUNET_PSYCSTORE_Handle *h = cls;
366
367 h->reconnect_task = NULL;
368 do_connect (cls);
369}
370
371
372/**
373 * Connect to the PSYCstore service.
374 *
375 * @param cfg The configuration to use
376 * @return Handle to use
377 */
378struct GNUNET_PSYCSTORE_Handle *
379GNUNET_PSYCSTORE_connect (const struct GNUNET_CONFIGURATION_Handle *cfg)
380{
381 struct GNUNET_PSYCSTORE_Handle *h
382 = GNUNET_new (struct GNUNET_PSYCSTORE_Handle);
383 h->cfg = cfg;
384 h->reconnect_delay = GNUNET_TIME_UNIT_MILLISECONDS;
385 do_connect (h);
386 return h;
387}
388
389
390/**
391 * Disconnect from PSYCstore service
392 *
393 * @param h Handle to destroy
394 */
395void
396GNUNET_PSYCSTORE_disconnect (struct GNUNET_PSYCSTORE_Handle *h)
397{
398 GNUNET_assert (NULL != h);
399 if (h->reconnect_task != NULL)
400 {
401 GNUNET_SCHEDULER_cancel (h->reconnect_task);
402 h->reconnect_task = NULL;
403 }
404 if (NULL != h->mq)
405 {
406 // FIXME: free data structures for pending operations
407 GNUNET_MQ_destroy (h->mq);
408 h->mq = NULL;
409 }
410 GNUNET_free (h);
411}
412
413
414/**
415 * Message sent notification.
416 *
417 * Remove invalidated envelope pointer.
418 */
419static void
420message_sent (void *cls)
421{
422 struct GNUNET_PSYCSTORE_OperationHandle *op = cls;
423 op->env = NULL;
424}
425
426
427/**
428 * Create a new operation.
429 */
430static struct GNUNET_PSYCSTORE_OperationHandle *
431op_create (struct GNUNET_PSYCSTORE_Handle *h,
432 struct GNUNET_OP_Handle *hop,
433 GNUNET_PSYCSTORE_ResultCallback result_cb,
434 void *cls)
435{
436 struct GNUNET_PSYCSTORE_OperationHandle *
437 op = GNUNET_malloc (sizeof (*op));
438 op->h = h;
439 op->op_id = GNUNET_OP_add (hop,
440 (GNUNET_ResultCallback) result_cb,
441 cls, op);
442 return op;
443}
444
445
446/**
447 * Send a message associated with an operation.
448 *
449 * @param h
450 * PSYCstore handle.
451 * @param op
452 * Operation handle.
453 * @param env
454 * Message envelope to send.
455 * @param[out] op_id
456 * Operation ID to write in network byte order. NULL if not needed.
457 *
458 * @return Operation handle.
459 *
460 */
461static struct GNUNET_PSYCSTORE_OperationHandle *
462op_send (struct GNUNET_PSYCSTORE_Handle *h,
463 struct GNUNET_PSYCSTORE_OperationHandle *op,
464 struct GNUNET_MQ_Envelope *env,
465 uint64_t *op_id)
466{
467 op->env = env;
468 if (NULL != op_id)
469 *op_id = GNUNET_htonll (op->op_id);
470
471 GNUNET_MQ_notify_sent (env, message_sent, op);
472 GNUNET_MQ_send (h->mq, env);
473 return op;
474}
475
476
477/**
478 * Cancel a PSYCstore operation. Note that the operation MAY still
479 * be executed; this merely cancels the continuation; if the request
480 * was already transmitted, the service may still choose to complete
481 * the operation.
482 *
483 * @param op Operation to cancel.
484 *
485 * @return #GNUNET_YES if message was not sent yet and got discarded,
486 * #GNUNET_NO if it was already sent, and only the callbacks got cancelled.
487 */
488int
489GNUNET_PSYCSTORE_operation_cancel (struct GNUNET_PSYCSTORE_OperationHandle *op)
490{
491 struct GNUNET_PSYCSTORE_Handle *h = op->h;
492 int ret = GNUNET_NO;
493
494 if (NULL != op->env)
495 {
496 GNUNET_MQ_send_cancel (op->env);
497 ret = GNUNET_YES;
498 }
499
500 GNUNET_OP_remove (h->op, op->op_id);
501 GNUNET_free (op);
502
503 return ret;
504}
505
506
507/**
508 * Store join/leave events for a PSYC channel in order to be able to answer
509 * membership test queries later.
510 *
511 * @param h
512 * Handle for the PSYCstore.
513 * @param channel_key
514 * The channel where the event happened.
515 * @param slave_key
516 * Public key of joining/leaving slave.
517 * @param did_join
518 * #GNUNET_YES on join, #GNUNET_NO on part.
519 * @param announced_at
520 * ID of the message that announced the membership change.
521 * @param effective_since
522 * Message ID this membership change is in effect since.
523 * For joins it is <= announced_at, for parts it is always 0.
524 * @param group_generation
525 * In case of a part, the last group generation the slave has access to.
526 * It has relevance when a larger message have fragments with different
527 * group generations.
528 * @param result_cb
529 * Callback to call with the result of the storage operation.
530 * @param cls
531 * Closure for the callback.
532 *
533 * @return Operation handle that can be used to cancel the operation.
534 */
535struct GNUNET_PSYCSTORE_OperationHandle *
536GNUNET_PSYCSTORE_membership_store (struct GNUNET_PSYCSTORE_Handle *h,
537 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
538 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
539 int did_join,
540 uint64_t announced_at,
541 uint64_t effective_since,
542 uint64_t group_generation,
543 GNUNET_PSYCSTORE_ResultCallback result_cb,
544 void *cls)
545{
546 GNUNET_assert (NULL != h);
547 GNUNET_assert (NULL != channel_key);
548 GNUNET_assert (NULL != slave_key);
549 GNUNET_assert (GNUNET_YES == did_join || GNUNET_NO == did_join);
550 GNUNET_assert (did_join
551 ? effective_since <= announced_at
552 : effective_since == 0);
553
554 struct MembershipStoreRequest *req;
555 struct GNUNET_MQ_Envelope *
556 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_MEMBERSHIP_STORE);
557 req->channel_key = *channel_key;
558 req->slave_key = *slave_key;
559 req->did_join = did_join;
560 req->announced_at = GNUNET_htonll (announced_at);
561 req->effective_since = GNUNET_htonll (effective_since);
562 req->group_generation = GNUNET_htonll (group_generation);
563
564 return
565 op_send (h, op_create (h, h->op, result_cb, cls),
566 env, &req->op_id);
567}
568
569
570/**
571 * Test if a member was admitted to the channel at the given message ID.
572 *
573 * This is useful when relaying and replaying messages to check if a particular
574 * slave has access to the message fragment with a given group generation. It
575 * is also used when handling join requests to determine whether the slave is
576 * currently admitted to the channel.
577 *
578 * @param h
579 * Handle for the PSYCstore.
580 * @param channel_key
581 * The channel we are interested in.
582 * @param slave_key
583 * Public key of slave whose membership to check.
584 * @param message_id
585 * Message ID for which to do the membership test.
586 * @param group_generation
587 * Group generation of the fragment of the message to test.
588 * It has relevance if the message consists of multiple fragments with
589 * different group generations.
590 * @param result_cb
591 * Callback to call with the test result.
592 * @param cls
593 * Closure for the callback.
594 *
595 * @return Operation handle that can be used to cancel the operation.
596 */
597struct GNUNET_PSYCSTORE_OperationHandle *
598GNUNET_PSYCSTORE_membership_test (struct GNUNET_PSYCSTORE_Handle *h,
599 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
600 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
601 uint64_t message_id,
602 uint64_t group_generation,
603 GNUNET_PSYCSTORE_ResultCallback result_cb,
604 void *cls)
605{
606 struct MembershipTestRequest *req;
607 struct GNUNET_MQ_Envelope *
608 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_MEMBERSHIP_TEST);
609 req->channel_key = *channel_key;
610 req->slave_key = *slave_key;
611 req->message_id = GNUNET_htonll (message_id);
612 req->group_generation = GNUNET_htonll (group_generation);
613
614 return
615 op_send (h, op_create (h, h->op, result_cb, cls),
616 env, &req->op_id);
617}
618
619
620/**
621 * Store a message fragment sent to a channel.
622 *
623 * @param h Handle for the PSYCstore.
624 * @param channel_key The channel the message belongs to.
625 * @param message Message to store.
626 * @param psycstore_flags Flags indicating whether the PSYC message contains
627 * state modifiers.
628 * @param result_cb Callback to call with the result of the operation.
629 * @param cls Closure for the callback.
630 *
631 * @return Handle that can be used to cancel the operation.
632 */
633struct GNUNET_PSYCSTORE_OperationHandle *
634GNUNET_PSYCSTORE_fragment_store (struct GNUNET_PSYCSTORE_Handle *h,
635 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
636 const struct GNUNET_MULTICAST_MessageHeader *msg,
637 enum GNUNET_PSYCSTORE_MessageFlags psycstore_flags,
638 GNUNET_PSYCSTORE_ResultCallback result_cb,
639 void *cls)
640{
641 uint16_t size = ntohs (msg->header.size);
642 struct FragmentStoreRequest *req;
643 struct GNUNET_MQ_Envelope *
644 env = GNUNET_MQ_msg_extra (req, size,
645 GNUNET_MESSAGE_TYPE_PSYCSTORE_FRAGMENT_STORE);
646 req->channel_key = *channel_key;
647 req->psycstore_flags = htonl (psycstore_flags);
648 GNUNET_memcpy (&req[1], msg, size);
649
650 return
651 op_send (h, op_create (h, h->op, result_cb, cls),
652 env, &req->op_id);
653}
654
655
656/**
657 * Retrieve message fragments by fragment ID range.
658 *
659 * @param h
660 * Handle for the PSYCstore.
661 * @param channel_key
662 * The channel we are interested in.
663 * @param slave_key
664 * The slave requesting the fragment. If not NULL, a membership test is
665 * performed first and the fragment is only returned if the slave has
666 * access to it.
667 * @param first_fragment_id
668 * First fragment ID to retrieve.
669 * Use 0 to get the latest message fragment.
670 * @param last_fragment_id
671 * Last consecutive fragment ID to retrieve.
672 * Use 0 to get the latest message fragment.
673 * @param fragment_limit
674 * Maximum number of fragments to retrieve.
675 * @param fragment_cb
676 * Callback to call with the retrieved fragments.
677 * @param result_cb
678 * Callback to call with the result of the operation.
679 * @param cls
680 * Closure for the callbacks.
681 *
682 * @return Handle that can be used to cancel the operation.
683 */
684struct GNUNET_PSYCSTORE_OperationHandle *
685GNUNET_PSYCSTORE_fragment_get (struct GNUNET_PSYCSTORE_Handle *h,
686 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
687 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
688 uint64_t first_fragment_id,
689 uint64_t last_fragment_id,
690 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
691 GNUNET_PSYCSTORE_ResultCallback result_cb,
692 void *cls)
693{
694 struct FragmentGetRequest *req;
695 struct GNUNET_MQ_Envelope *
696 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_FRAGMENT_GET);
697 req->channel_key = *channel_key;
698 req->first_fragment_id = GNUNET_htonll (first_fragment_id);
699 req->last_fragment_id = GNUNET_htonll (last_fragment_id);
700 if (NULL != slave_key)
701 {
702 req->slave_key = *slave_key;
703 req->do_membership_test = GNUNET_YES;
704 }
705
706 struct GNUNET_PSYCSTORE_OperationHandle *
707 op = op_create (h, h->op, result_cb, cls);
708 op->fragment_cb = fragment_cb;
709 op->cls = cls;
710 return op_send (h, op, env, &req->op_id);
711}
712
713
714/**
715 * Retrieve latest message fragments.
716 *
717 * @param h
718 * Handle for the PSYCstore.
719 * @param channel_key
720 * The channel we are interested in.
721 * @param slave_key
722 * The slave requesting the fragment. If not NULL, a membership test is
723 * performed first and the fragment is only returned if the slave has
724 * access to it.
725 * @param first_fragment_id
726 * First fragment ID to retrieve.
727 * Use 0 to get the latest message fragment.
728 * @param last_fragment_id
729 * Last consecutive fragment ID to retrieve.
730 * Use 0 to get the latest message fragment.
731 * @param fragment_limit
732 * Maximum number of fragments to retrieve.
733 * @param fragment_cb
734 * Callback to call with the retrieved fragments.
735 * @param result_cb
736 * Callback to call with the result of the operation.
737 * @param cls
738 * Closure for the callbacks.
739 *
740 * @return Handle that can be used to cancel the operation.
741 */
742struct GNUNET_PSYCSTORE_OperationHandle *
743GNUNET_PSYCSTORE_fragment_get_latest (struct GNUNET_PSYCSTORE_Handle *h,
744 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
745 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
746 uint64_t fragment_limit,
747 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
748 GNUNET_PSYCSTORE_ResultCallback result_cb,
749 void *cls)
750{
751 struct FragmentGetRequest *req;
752 struct GNUNET_MQ_Envelope *
753 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_FRAGMENT_GET);
754 req->channel_key = *channel_key;
755 req->fragment_limit = GNUNET_ntohll (fragment_limit);
756 if (NULL != slave_key)
757 {
758 req->slave_key = *slave_key;
759 req->do_membership_test = GNUNET_YES;
760 }
761
762 struct GNUNET_PSYCSTORE_OperationHandle *
763 op = op_create (h, h->op, result_cb, cls);
764 op->fragment_cb = fragment_cb;
765 op->cls = cls;
766 return op_send (h, op, env, &req->op_id);
767}
768
769
770/**
771 * Retrieve all fragments of messages in a message ID range.
772 *
773 * @param h
774 * Handle for the PSYCstore.
775 * @param channel_key
776 * The channel we are interested in.
777 * @param slave_key
778 * The slave requesting the message.
779 * If not NULL, a membership test is performed first
780 * and the message is only returned if the slave has access to it.
781 * @param first_message_id
782 * First message ID to retrieve.
783 * @param last_message_id
784 * Last consecutive message ID to retrieve.
785 * @param fragment_limit
786 * Maximum number of fragments to retrieve.
787 * @param method_prefix
788 * Retrieve only messages with a matching method prefix.
789 * @todo Implement method_prefix query.
790 * @param fragment_cb
791 * Callback to call with the retrieved fragments.
792 * @param result_cb
793 * Callback to call with the result of the operation.
794 * @param cls
795 * Closure for the callbacks.
796 *
797 * @return Handle that can be used to cancel the operation.
798 */
799struct GNUNET_PSYCSTORE_OperationHandle *
800GNUNET_PSYCSTORE_message_get (struct GNUNET_PSYCSTORE_Handle *h,
801 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
802 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
803 uint64_t first_message_id,
804 uint64_t last_message_id,
805 uint64_t fragment_limit,
806 const char *method_prefix,
807 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
808 GNUNET_PSYCSTORE_ResultCallback result_cb,
809 void *cls)
810{
811 struct MessageGetRequest *req;
812 if (NULL == method_prefix)
813 method_prefix = "";
814 uint16_t method_size = strnlen (method_prefix,
815 GNUNET_MAX_MESSAGE_SIZE
816 - sizeof (*req)) + 1;
817
818 struct GNUNET_MQ_Envelope *
819 env = GNUNET_MQ_msg_extra (req, method_size,
820 GNUNET_MESSAGE_TYPE_PSYCSTORE_MESSAGE_GET);
821 req->channel_key = *channel_key;
822 req->first_message_id = GNUNET_htonll (first_message_id);
823 req->last_message_id = GNUNET_htonll (last_message_id);
824 req->fragment_limit = GNUNET_htonll (fragment_limit);
825 if (NULL != slave_key)
826 {
827 req->slave_key = *slave_key;
828 req->do_membership_test = GNUNET_YES;
829 }
830 GNUNET_memcpy (&req[1], method_prefix, method_size);
831 ((char *) &req[1])[method_size - 1] = '\0';
832
833 struct GNUNET_PSYCSTORE_OperationHandle *
834 op = op_create (h, h->op, result_cb, cls);
835 op->fragment_cb = fragment_cb;
836 op->cls = cls;
837 return op_send (h, op, env, &req->op_id);
838}
839
840
841/**
842 * Retrieve all fragments of the latest messages.
843 *
844 * @param h
845 * Handle for the PSYCstore.
846 * @param channel_key
847 * The channel we are interested in.
848 * @param slave_key
849 * The slave requesting the message.
850 * If not NULL, a membership test is performed first
851 * and the message is only returned if the slave has access to it.
852 * @param message_limit
853 * Maximum number of messages to retrieve.
854 * @param method_prefix
855 * Retrieve only messages with a matching method prefix.
856 * @todo Implement method_prefix query.
857 * @param fragment_cb
858 * Callback to call with the retrieved fragments.
859 * @param result_cb
860 * Callback to call with the result of the operation.
861 * @param cls
862 * Closure for the callbacks.
863 *
864 * @return Handle that can be used to cancel the operation.
865 */
866struct GNUNET_PSYCSTORE_OperationHandle *
867GNUNET_PSYCSTORE_message_get_latest (struct GNUNET_PSYCSTORE_Handle *h,
868 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
869 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
870 uint64_t message_limit,
871 const char *method_prefix,
872 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
873 GNUNET_PSYCSTORE_ResultCallback result_cb,
874 void *cls)
875{
876 struct MessageGetRequest *req;
877
878 if (NULL == method_prefix)
879 method_prefix = "";
880 uint16_t method_size = strnlen (method_prefix,
881 GNUNET_MAX_MESSAGE_SIZE
882 - sizeof (*req)) + 1;
883 GNUNET_assert ('\0' == method_prefix[method_size - 1]);
884
885 struct GNUNET_MQ_Envelope *
886 env = GNUNET_MQ_msg_extra (req, method_size,
887 GNUNET_MESSAGE_TYPE_PSYCSTORE_MESSAGE_GET);
888 req->channel_key = *channel_key;
889 req->message_limit = GNUNET_ntohll (message_limit);
890 if (NULL != slave_key)
891 {
892 req->slave_key = *slave_key;
893 req->do_membership_test = GNUNET_YES;
894 }
895 GNUNET_memcpy (&req[1], method_prefix, method_size);
896
897 struct GNUNET_PSYCSTORE_OperationHandle *
898 op = op_create (h, h->op, result_cb, cls);
899 op->fragment_cb = fragment_cb;
900 op->cls = cls;
901 return op_send (h, op, env, &req->op_id);
902}
903
904
905/**
906 * Retrieve a fragment of message specified by its message ID and fragment
907 * offset.
908 *
909 * @param h
910 * Handle for the PSYCstore.
911 * @param channel_key
912 * The channel we are interested in.
913 * @param slave_key
914 * The slave requesting the message fragment. If not NULL, a membership
915 * test is performed first and the message fragment is only returned
916 * if the slave has access to it.
917 * @param message_id
918 * Message ID to retrieve. Use 0 to get the latest message.
919 * @param fragment_offset
920 * Offset of the fragment to retrieve.
921 * @param fragment_cb
922 * Callback to call with the retrieved fragments.
923 * @param result_cb
924 * Callback to call with the result of the operation.
925 * @param cls
926 * Closure for the callbacks.
927 *
928 * @return Handle that can be used to cancel the operation.
929 */
930struct GNUNET_PSYCSTORE_OperationHandle *
931GNUNET_PSYCSTORE_message_get_fragment (struct GNUNET_PSYCSTORE_Handle *h,
932 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
933 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
934 uint64_t message_id,
935 uint64_t fragment_offset,
936 GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
937 GNUNET_PSYCSTORE_ResultCallback result_cb,
938 void *cls)
939{
940 struct MessageGetFragmentRequest *req;
941 struct GNUNET_MQ_Envelope *
942 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_MESSAGE_GET_FRAGMENT);
943
944 req->channel_key = *channel_key;
945 req->message_id = GNUNET_htonll (message_id);
946 req->fragment_offset = GNUNET_htonll (fragment_offset);
947 if (NULL != slave_key)
948 {
949 req->slave_key = *slave_key;
950 req->do_membership_test = GNUNET_YES;
951 }
952
953 struct GNUNET_PSYCSTORE_OperationHandle *
954 op = op_create (h, h->op, result_cb, cls);
955 op->fragment_cb = fragment_cb;
956 op->cls = cls;
957 return op_send (h, op, env, &req->op_id);
958}
959
960
961/**
962 * Retrieve latest values of counters for a channel master.
963 *
964 * The current value of counters are needed when a channel master is restarted,
965 * so that it can continue incrementing the counters from their last value.
966 *
967 * @param h
968 * Handle for the PSYCstore.
969 * @param channel_key
970 * Public key that identifies the channel.
971 * @param ccb
972 * Callback to call with the result.
973 * @param ccb_cls
974 * Closure for the @a ccb callback.
975 *
976 * @return Handle that can be used to cancel the operation.
977 */
978struct GNUNET_PSYCSTORE_OperationHandle *
979GNUNET_PSYCSTORE_counters_get (struct GNUNET_PSYCSTORE_Handle *h,
980 struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
981 GNUNET_PSYCSTORE_CountersCallback counters_cb,
982 void *cls)
983{
984 struct OperationRequest *req;
985 struct GNUNET_MQ_Envelope *
986 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_COUNTERS_GET);
987 req->channel_key = *channel_key;
988
989 struct GNUNET_PSYCSTORE_OperationHandle *
990 op = op_create (h, h->op, NULL, NULL);
991 op->counters_cb = counters_cb;
992 op->cls = cls;
993 return op_send (h, op, env, &req->op_id);
994}
995
996
997/**
998 * Apply modifiers of a message to the current channel state.
999 *
1000 * An error is returned if there are missing messages containing state
1001 * operations before the current one.
1002 *
1003 * @param h
1004 * Handle for the PSYCstore.
1005 * @param channel_key
1006 * The channel we are interested in.
1007 * @param message_id
1008 * ID of the message that contains the @a modifiers.
1009 * @param state_delta
1010 * Value of the _state_delta PSYC header variable of the message.
1011 * @param result_cb
1012 * Callback to call with the result of the operation.
1013 * @param cls
1014 * Closure for @a result_cb.
1015 *
1016 * @return Handle that can be used to cancel the operation.
1017 */
1018struct GNUNET_PSYCSTORE_OperationHandle *
1019GNUNET_PSYCSTORE_state_modify (struct GNUNET_PSYCSTORE_Handle *h,
1020 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1021 uint64_t message_id,
1022 uint64_t state_delta,
1023 GNUNET_PSYCSTORE_ResultCallback result_cb,
1024 void *cls)
1025{
1026 struct StateModifyRequest *req;
1027 struct GNUNET_MQ_Envelope *
1028 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_MODIFY);
1029 req->channel_key = *channel_key;
1030 req->message_id = GNUNET_htonll (message_id);
1031 req->state_delta = GNUNET_htonll (state_delta);
1032
1033 return op_send (h, op_create (h, h->op, result_cb, cls),
1034 env, &req->op_id);
1035}
1036
1037
1038struct StateSyncClosure
1039{
1040 GNUNET_PSYCSTORE_ResultCallback result_cb;
1041 void *cls;
1042 uint8_t last;
1043};
1044
1045
1046static void
1047state_sync_result (void *cls, int64_t result,
1048 const char *err_msg, uint16_t err_msg_size)
1049{
1050 struct StateSyncClosure *ssc = cls;
1051 if (GNUNET_OK != result || ssc->last)
1052 ssc->result_cb (ssc->cls, result, err_msg, err_msg_size);
1053 GNUNET_free (ssc);
1054}
1055
1056
1057/**
1058 * Store synchronized state.
1059 *
1060 * @param h
1061 * Handle for the PSYCstore.
1062 * @param channel_key
1063 * The channel we are interested in.
1064 * @param max_state_message_id
1065 * ID of the last stateful message before @a state_hash_message_id.
1066 * @param state_hash_message_id
1067 * ID of the message that contains the state_hash PSYC header variable.
1068 * @param modifier_count
1069 * Number of elements in the @a modifiers array.
1070 * @param modifiers
1071 * Full state to store.
1072 * @param result_cb
1073 * Callback to call with the result of the operation.
1074 * @param cls
1075 * Closure for the callback.
1076 *
1077 * @return Handle that can be used to cancel the operation.
1078 */
1079struct GNUNET_PSYCSTORE_OperationHandle *
1080GNUNET_PSYCSTORE_state_sync (struct GNUNET_PSYCSTORE_Handle *h,
1081 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1082 uint64_t max_state_message_id,
1083 uint64_t state_hash_message_id,
1084 size_t modifier_count,
1085 const struct GNUNET_PSYC_Modifier *modifiers,
1086 GNUNET_PSYCSTORE_ResultCallback result_cb,
1087 void *cls)
1088{
1089 struct GNUNET_PSYCSTORE_OperationHandle *op = NULL;
1090 size_t i;
1091
1092 for (i = 0; i < modifier_count; i++) {
1093 struct StateSyncRequest *req;
1094 uint16_t name_size = strlen (modifiers[i].name) + 1;
1095
1096 struct GNUNET_MQ_Envelope *
1097 env = GNUNET_MQ_msg_extra (req,
1098 sizeof (*req) + name_size + modifiers[i].value_size,
1099 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_SYNC);
1100
1101 req->header.type = htons (GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_SYNC);
1102 req->header.size = htons (sizeof (*req) + name_size
1103 + modifiers[i].value_size);
1104 req->channel_key = *channel_key;
1105 req->max_state_message_id = GNUNET_htonll (max_state_message_id);
1106 req->state_hash_message_id = GNUNET_htonll (state_hash_message_id);
1107 req->name_size = htons (name_size);
1108 req->flags
1109 = (0 == i)
1110 ? STATE_OP_FIRST
1111 : (modifier_count - 1 == i)
1112 ? STATE_OP_LAST
1113 : 0;
1114
1115 GNUNET_memcpy (&req[1], modifiers[i].name, name_size);
1116 GNUNET_memcpy ((char *) &req[1] + name_size, modifiers[i].value, modifiers[i].value_size);
1117
1118 struct StateSyncClosure *ssc = GNUNET_malloc (sizeof (*ssc));
1119 ssc->last = (req->flags & STATE_OP_LAST);
1120 ssc->result_cb = result_cb;
1121 ssc->cls = cls;
1122
1123 op_send (h, op_create (h, h->op, state_sync_result, ssc),
1124 env, &req->op_id);
1125 }
1126 // FIXME: only one operation is returned,
1127 // add pointers to other operations and make all cancellable.
1128 return op;
1129}
1130
1131
1132/**
1133 * Reset the state of a channel.
1134 *
1135 * Delete all state variables stored for the given channel.
1136 *
1137 * @param h
1138 * Handle for the PSYCstore.
1139 * @param channel_key
1140 * The channel we are interested in.
1141 * @param result_cb
1142 * Callback to call with the result of the operation.
1143 * @param cls
1144 * Closure for the callback.
1145 *
1146 * @return Handle that can be used to cancel the operation.
1147 */
1148struct GNUNET_PSYCSTORE_OperationHandle *
1149GNUNET_PSYCSTORE_state_reset (struct GNUNET_PSYCSTORE_Handle *h,
1150 const struct GNUNET_CRYPTO_EddsaPublicKey
1151 *channel_key,
1152 GNUNET_PSYCSTORE_ResultCallback result_cb,
1153 void *cls)
1154{
1155 struct OperationRequest *req;
1156 struct GNUNET_MQ_Envelope *
1157 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_RESET);
1158 req->channel_key = *channel_key;
1159
1160 return
1161 op_send (h, op_create (h, h->op, result_cb, cls),
1162 env, &req->op_id);
1163}
1164
1165
1166/**
1167 * Update signed values of state variables in the state store.
1168 *
1169 * @param h
1170 * Handle for the PSYCstore.
1171 * @param channel_key
1172 * The channel we are interested in.
1173 * @param message_id
1174 * Message ID that contained the state @a hash.
1175 * @param hash
1176 * Hash of the serialized full state.
1177 * @param result_cb
1178 * Callback to call with the result of the operation.
1179 * @param cls
1180 * Closure for the callback.
1181 */
1182struct GNUNET_PSYCSTORE_OperationHandle *
1183GNUNET_PSYCSTORE_state_hash_update (struct GNUNET_PSYCSTORE_Handle *h,
1184 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1185 uint64_t message_id,
1186 const struct GNUNET_HashCode *hash,
1187 GNUNET_PSYCSTORE_ResultCallback result_cb,
1188 void *cls)
1189{
1190 struct StateHashUpdateRequest *req;
1191 struct GNUNET_MQ_Envelope *
1192 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_HASH_UPDATE);
1193 req->channel_key = *channel_key;
1194 req->hash = *hash;
1195
1196 return
1197 op_send (h, op_create (h, h->op, result_cb, cls),
1198 env, &req->op_id);
1199}
1200
1201
1202/**
1203 * Retrieve the best matching state variable.
1204 *
1205 * @param h
1206 * Handle for the PSYCstore.
1207 * @param channel_key
1208 * The channel we are interested in.
1209 * @param name
1210 * Name of variable to match, the returned variable might be less specific.
1211 * @param state_cb
1212 * Callback to return the matching state variable.
1213 * @param result_cb
1214 * Callback to call with the result of the operation.
1215 * @param cls
1216 * Closure for the callbacks.
1217 *
1218 * @return Handle that can be used to cancel the operation.
1219 */
1220struct GNUNET_PSYCSTORE_OperationHandle *
1221GNUNET_PSYCSTORE_state_get (struct GNUNET_PSYCSTORE_Handle *h,
1222 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1223 const char *name,
1224 GNUNET_PSYCSTORE_StateCallback state_cb,
1225 GNUNET_PSYCSTORE_ResultCallback result_cb,
1226 void *cls)
1227{
1228 size_t name_size = strlen (name) + 1;
1229 struct OperationRequest *req;
1230 struct GNUNET_MQ_Envelope *
1231 env = GNUNET_MQ_msg_extra (req, name_size,
1232 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_GET);
1233 req->channel_key = *channel_key;
1234 GNUNET_memcpy (&req[1], name, name_size);
1235
1236 struct GNUNET_PSYCSTORE_OperationHandle *
1237 op = op_create (h, h->op, result_cb, cls);
1238 op->state_cb = state_cb;
1239 op->cls = cls;
1240 return op_send (h, op, env, &req->op_id);
1241}
1242
1243
1244/**
1245 * Retrieve all state variables for a channel with the given prefix.
1246 *
1247 * @param h
1248 * Handle for the PSYCstore.
1249 * @param channel_key
1250 * The channel we are interested in.
1251 * @param name_prefix
1252 * Prefix of state variable names to match.
1253 * @param state_cb
1254 * Callback to return matching state variables.
1255 * @param result_cb
1256 * Callback to call with the result of the operation.
1257 * @param cls
1258 * Closure for the callbacks.
1259 *
1260 * @return Handle that can be used to cancel the operation.
1261 */
1262struct GNUNET_PSYCSTORE_OperationHandle *
1263GNUNET_PSYCSTORE_state_get_prefix (struct GNUNET_PSYCSTORE_Handle *h,
1264 const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
1265 const char *name_prefix,
1266 GNUNET_PSYCSTORE_StateCallback state_cb,
1267 GNUNET_PSYCSTORE_ResultCallback result_cb,
1268 void *cls)
1269{
1270 size_t name_size = strlen (name_prefix) + 1;
1271 struct OperationRequest *req;
1272 struct GNUNET_MQ_Envelope *
1273 env = GNUNET_MQ_msg_extra (req, name_size,
1274 GNUNET_MESSAGE_TYPE_PSYCSTORE_STATE_GET_PREFIX);
1275 req->channel_key = *channel_key;
1276 GNUNET_memcpy (&req[1], name_prefix, name_size);
1277
1278 struct GNUNET_PSYCSTORE_OperationHandle *
1279 op = op_create (h, h->op, result_cb, cls);
1280 op->state_cb = state_cb;
1281 op->cls = cls;
1282 return op_send (h, op, env, &req->op_id);
1283}
1284
1285/* end of psycstore_api.c */
diff --git a/src/psycstore/test_plugin_psycstore.c b/src/psycstore/test_plugin_psycstore.c
deleted file mode 100644
index ff4eac820..000000000
--- a/src/psycstore/test_plugin_psycstore.c
+++ /dev/null
@@ -1,532 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Gabor X Toth
23 * @author Christian Grothoff
24 *
25 * @file
26 * Test for the PSYCstore plugins.
27 */
28
29#include <inttypes.h>
30
31#include "platform.h"
32#include "gnunet_util_lib.h"
33#include "gnunet_testing_lib.h"
34#include "gnunet_psycstore_plugin.h"
35#include "gnunet_psycstore_service.h"
36#include "gnunet_multicast_service.h"
37
38#define DEBUG_PSYCSTORE GNUNET_EXTRA_LOGGING
39#if DEBUG_PSYCSTORE
40# define LOG_LEVEL "DEBUG"
41#else
42# define LOG_LEVEL "WARNING"
43#endif
44
45#define C2ARG(str) str, (sizeof (str) - 1)
46
47#define LOG(kind,...) \
48 GNUNET_log_from (kind, "test-plugin-psycstore", __VA_ARGS__)
49
50static int ok;
51
52/**
53 * Name of plugin under test.
54 */
55static const char *plugin_name;
56
57static struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key;
58static struct GNUNET_CRYPTO_EcdsaPrivateKey *slave_key;
59
60static struct GNUNET_CRYPTO_EddsaPublicKey channel_pub_key;
61static struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
62
63/**
64 * Function called when the service shuts down. Unloads our psycstore
65 * plugin.
66 *
67 * @param api api to unload
68 */
69static void
70unload_plugin (struct GNUNET_PSYCSTORE_PluginFunctions *api)
71{
72 char *libname;
73
74 GNUNET_asprintf (&libname, "libgnunet_plugin_psycstore_%s", plugin_name);
75 GNUNET_break (NULL == GNUNET_PLUGIN_unload (libname, api));
76 GNUNET_free (libname);
77}
78
79
80/**
81 * Load the psycstore plugin.
82 *
83 * @param cfg configuration to pass
84 * @return NULL on error
85 */
86static struct GNUNET_PSYCSTORE_PluginFunctions *
87load_plugin (const struct GNUNET_CONFIGURATION_Handle *cfg)
88{
89 struct GNUNET_PSYCSTORE_PluginFunctions *ret;
90 char *libname;
91
92 GNUNET_log (GNUNET_ERROR_TYPE_INFO, _ ("Loading `%s' psycstore plugin\n"),
93 plugin_name);
94 GNUNET_asprintf (&libname, "libgnunet_plugin_psycstore_%s", plugin_name);
95 if (NULL == (ret = GNUNET_PLUGIN_load (libname, (void*) cfg)))
96 {
97 FPRINTF (stderr, "Failed to load plugin `%s'!\n", plugin_name);
98 return NULL;
99 }
100 GNUNET_free (libname);
101 return ret;
102}
103
104
105#define MAX_MSG 16
106
107struct FragmentClosure
108{
109 uint8_t n;
110 uint64_t flags[MAX_MSG];
111 struct GNUNET_MULTICAST_MessageHeader *msg[MAX_MSG];
112};
113
114static int
115fragment_cb (void *cls, struct GNUNET_MULTICAST_MessageHeader *msg2,
116 enum GNUNET_PSYCSTORE_MessageFlags flags)
117{
118 struct FragmentClosure *fcls = cls;
119 struct GNUNET_MULTICAST_MessageHeader *msg1;
120 uint64_t flags1;
121 int ret;
122
123 if (fcls->n >= MAX_MSG)
124 {
125 GNUNET_break (0);
126 return GNUNET_SYSERR;
127 }
128 msg1 = fcls->msg[fcls->n];
129 flags1 = fcls->flags[fcls->n++];
130 if (NULL == msg1)
131 {
132 GNUNET_break (0);
133 return GNUNET_SYSERR;
134 }
135
136 if (flags1 == flags && msg1->header.size == msg2->header.size
137 && 0 == memcmp (msg1, msg2, ntohs (msg1->header.size)))
138 {
139 LOG (GNUNET_ERROR_TYPE_DEBUG, "Fragment %llu matches\n",
140 GNUNET_ntohll (msg1->fragment_id));
141 ret = GNUNET_YES;
142 }
143 else
144 {
145 LOG (GNUNET_ERROR_TYPE_ERROR, "Fragment %llu differs\n",
146 GNUNET_ntohll (msg1->fragment_id));
147 ret = GNUNET_SYSERR;
148 }
149
150 GNUNET_free (msg2);
151 return ret;
152}
153
154
155struct StateClosure {
156 size_t n;
157 char *name[16];
158 void *value[16];
159 size_t value_size[16];
160};
161
162static int
163state_cb (void *cls, const char *name, const void *value, uint32_t value_size)
164{
165 struct StateClosure *scls = cls;
166 const void *val = scls->value[scls->n]; // FIXME: check for n out-of-bounds FIRST!
167 size_t val_size = scls->value_size[scls->n++];
168
169 /* FIXME: check name */
170
171 LOG (GNUNET_ERROR_TYPE_DEBUG,
172 " name = %s, value_size = %u\n",
173 name, value_size);
174
175 return GNUNET_YES;
176 return value_size == val_size && 0 == memcmp (value, val, val_size)
177 ? GNUNET_YES
178 : GNUNET_SYSERR;
179}
180
181
182static void
183run (void *cls, char *const *args, const char *cfgfile,
184 const struct GNUNET_CONFIGURATION_Handle *cfg)
185{
186 struct GNUNET_PSYCSTORE_PluginFunctions *db;
187
188 ok = 1;
189 db = load_plugin (cfg);
190 if (NULL == db)
191 {
192 FPRINTF (stderr,
193 "%s",
194 "Failed to initialize PSYCstore. "
195 "Database likely not setup, skipping test.\n");
196 ok = 77;
197 return;
198 }
199
200 /* Store & test membership */
201
202 LOG (GNUNET_ERROR_TYPE_INFO, "MEMBERSHIP\n");
203
204 channel_key = GNUNET_CRYPTO_eddsa_key_create ();
205 slave_key = GNUNET_CRYPTO_ecdsa_key_create ();
206
207 GNUNET_CRYPTO_eddsa_key_get_public (channel_key,
208 &channel_pub_key);
209 GNUNET_CRYPTO_ecdsa_key_get_public (slave_key, &slave_pub_key);
210
211 LOG (GNUNET_ERROR_TYPE_INFO, "membership_store()\n");
212
213 GNUNET_assert (GNUNET_OK == db->membership_store (db->cls, &channel_pub_key,
214 &slave_pub_key, GNUNET_YES,
215 4, 2, 1));
216
217 LOG (GNUNET_ERROR_TYPE_INFO, "membership_test()\n");
218
219 GNUNET_assert (GNUNET_YES == db->membership_test (db->cls, &channel_pub_key,
220 &slave_pub_key, 4));
221
222 GNUNET_assert (GNUNET_YES == db->membership_test (db->cls, &channel_pub_key,
223 &slave_pub_key, 2));
224
225 GNUNET_assert (GNUNET_NO == db->membership_test (db->cls, &channel_pub_key,
226 &slave_pub_key, 1));
227
228 /* Store & get messages */
229
230 LOG (GNUNET_ERROR_TYPE_INFO, "MESSAGES\n");
231
232 struct GNUNET_MULTICAST_MessageHeader *msg
233 = GNUNET_malloc (sizeof (*msg) + sizeof (channel_pub_key));
234 GNUNET_assert (msg != NULL);
235
236 msg->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE);
237 msg->header.size = htons (sizeof (*msg) + sizeof (channel_pub_key));
238
239 uint64_t fragment_id = INT64_MAX - 1;
240 msg->fragment_id = GNUNET_htonll (fragment_id);
241
242 uint64_t message_id = INT64_MAX - 10;
243 msg->message_id = GNUNET_htonll (message_id);
244
245 uint64_t group_generation = INT64_MAX - 3;
246 msg->group_generation = GNUNET_htonll (group_generation);
247
248 msg->hop_counter = htonl (9);
249 msg->fragment_offset = GNUNET_htonll (0);
250 msg->flags = htonl (GNUNET_MULTICAST_MESSAGE_LAST_FRAGMENT);
251
252 GNUNET_memcpy (&msg[1], &channel_pub_key, sizeof (channel_pub_key));
253
254 msg->purpose.size = htonl (ntohs (msg->header.size)
255 - sizeof (msg->header)
256 - sizeof (msg->hop_counter)
257 - sizeof (msg->signature));
258 msg->purpose.purpose = htonl (234);
259 GNUNET_assert (GNUNET_OK ==
260 GNUNET_CRYPTO_eddsa_sign (channel_key, &msg->purpose, &msg->signature));
261
262 LOG (GNUNET_ERROR_TYPE_INFO, "fragment_store()\n");
263
264 struct FragmentClosure fcls = { 0 };
265 fcls.n = 0;
266 fcls.msg[0] = msg;
267 fcls.flags[0] = GNUNET_PSYCSTORE_MESSAGE_STATE;
268
269 GNUNET_assert (
270 GNUNET_OK == db->fragment_store (db->cls, &channel_pub_key, msg,
271 fcls.flags[0]));
272
273 LOG (GNUNET_ERROR_TYPE_INFO, "fragment_get(%" PRIu64 ")\n", fragment_id);
274
275 uint64_t ret_frags = 0;
276 GNUNET_assert (
277 GNUNET_OK == db->fragment_get (db->cls, &channel_pub_key,
278 fragment_id, fragment_id,
279 &ret_frags, fragment_cb, &fcls));
280 GNUNET_assert (fcls.n == 1);
281
282 LOG (GNUNET_ERROR_TYPE_INFO, "message_get_fragment()\n");
283
284 fcls.n = 0;
285 GNUNET_assert (
286 GNUNET_OK == db->message_get_fragment (db->cls, &channel_pub_key,
287 GNUNET_ntohll (msg->message_id),
288 GNUNET_ntohll (msg->fragment_offset),
289 fragment_cb, &fcls));
290 GNUNET_assert (fcls.n == 1);
291
292 LOG (GNUNET_ERROR_TYPE_INFO, "message_add_flags()\n");
293 GNUNET_assert (
294 GNUNET_OK == db->message_add_flags (db->cls, &channel_pub_key,
295 GNUNET_ntohll (msg->message_id),
296 GNUNET_PSYCSTORE_MESSAGE_STATE_APPLIED));
297 LOG (GNUNET_ERROR_TYPE_INFO, "fragment_get(%" PRIu64 ")\n", fragment_id);
298
299 fcls.n = 0;
300 fcls.flags[0] |= GNUNET_PSYCSTORE_MESSAGE_STATE_APPLIED;
301
302 GNUNET_assert (
303 GNUNET_OK == db->fragment_get (db->cls, &channel_pub_key,
304 fragment_id, fragment_id,
305 &ret_frags, fragment_cb, &fcls));
306
307 GNUNET_assert (fcls.n == 1);
308
309 LOG (GNUNET_ERROR_TYPE_INFO, "fragment_store()\n");
310
311 struct GNUNET_MULTICAST_MessageHeader *msg1
312 = GNUNET_malloc (sizeof (*msg1) + sizeof (channel_pub_key));
313
314 GNUNET_memcpy (msg1, msg, sizeof (*msg1) + sizeof (channel_pub_key));
315
316 msg1->fragment_id = GNUNET_htonll (INT64_MAX);
317 msg1->fragment_offset = GNUNET_htonll (32768);
318
319 fcls.n = 0;
320 fcls.msg[1] = msg1;
321 fcls.flags[1] = GNUNET_PSYCSTORE_MESSAGE_STATE_HASH;
322
323 GNUNET_assert (GNUNET_OK == db->fragment_store (db->cls, &channel_pub_key, msg1,
324 fcls.flags[1]));
325
326 LOG (GNUNET_ERROR_TYPE_INFO, "message_get()\n");
327
328 GNUNET_assert (
329 GNUNET_OK == db->message_get (db->cls, &channel_pub_key,
330 message_id, message_id, 0,
331 &ret_frags, fragment_cb, &fcls));
332 GNUNET_assert (fcls.n == 2 && ret_frags == 2);
333
334 /* Message counters */
335
336 LOG (GNUNET_ERROR_TYPE_INFO, "counters_message_get()\n");
337
338 fragment_id = 0;
339 message_id = 0;
340 group_generation = 0;
341 GNUNET_assert (
342 GNUNET_OK == db->counters_message_get (db->cls, &channel_pub_key,
343 &fragment_id, &message_id,
344 &group_generation)
345 && fragment_id == GNUNET_ntohll (msg1->fragment_id)
346 && message_id == GNUNET_ntohll (msg1->message_id)
347 && group_generation == GNUNET_ntohll (msg1->group_generation));
348
349 /* Modify state */
350
351 LOG (GNUNET_ERROR_TYPE_INFO, "STATE\n");
352
353 LOG (GNUNET_ERROR_TYPE_INFO, "state_modify_*()\n");
354
355 message_id = GNUNET_ntohll (fcls.msg[0]->message_id) + 1;
356 GNUNET_assert (GNUNET_OK == db->state_modify_begin (db->cls, &channel_pub_key,
357 message_id, 0));
358
359 GNUNET_assert (GNUNET_OK == db->state_modify_op (db->cls, &channel_pub_key,
360 GNUNET_PSYC_OP_ASSIGN,
361 "_foo",
362 C2ARG("one two three")));
363
364 GNUNET_assert (GNUNET_OK == db->state_modify_op (db->cls, &channel_pub_key,
365 GNUNET_PSYC_OP_ASSIGN,
366 "_foo_bar", slave_key,
367 sizeof (*slave_key)));
368
369 GNUNET_assert (GNUNET_OK == db->state_modify_end (db->cls, &channel_pub_key,
370 message_id));
371
372 LOG (GNUNET_ERROR_TYPE_INFO, "state_get()\n");
373
374 struct StateClosure scls = { 0 };
375 scls.n = 0;
376 scls.value[0] = "one two three";
377 scls.value_size[0] = strlen ("one two three");
378
379 GNUNET_assert (GNUNET_OK == db->state_get (db->cls, &channel_pub_key, "_foo",
380 state_cb, &scls));
381 GNUNET_assert (scls.n == 1);
382
383 LOG (GNUNET_ERROR_TYPE_INFO, "state_get_prefix()\n");
384
385 scls.n = 0;
386 scls.value[1] = slave_key;
387 scls.value_size[1] = sizeof (*slave_key);
388
389 GNUNET_assert (GNUNET_OK == db->state_get_prefix (db->cls, &channel_pub_key,
390 "_foo", state_cb, &scls));
391 GNUNET_assert (scls.n == 2);
392
393 LOG (GNUNET_ERROR_TYPE_INFO, "state_get_signed()\n");
394
395 scls.n = 0;
396 GNUNET_assert (GNUNET_NO == db->state_get_signed (db->cls, &channel_pub_key,
397 state_cb, &scls));
398 GNUNET_assert (scls.n == 0);
399
400 LOG (GNUNET_ERROR_TYPE_INFO, "state_update_signed()\n");
401
402 GNUNET_assert (GNUNET_OK == db->state_update_signed (db->cls,
403 &channel_pub_key));
404
405 LOG (GNUNET_ERROR_TYPE_INFO, "state_get_signed()\n");
406
407 scls.n = 0;
408 GNUNET_assert (GNUNET_YES == db->state_get_signed (db->cls, &channel_pub_key,
409 state_cb, &scls));
410 GNUNET_assert (scls.n == 2);
411
412 /* State counters */
413
414 LOG (GNUNET_ERROR_TYPE_INFO, "counters_state_get()\n");
415
416 uint64_t max_state_msg_id = 0;
417 GNUNET_assert (GNUNET_OK == db->counters_state_get (db->cls, &channel_pub_key,
418 &max_state_msg_id)
419 && max_state_msg_id == message_id);
420
421 /* State sync */
422
423 LOG (GNUNET_ERROR_TYPE_INFO, "state_sync_*()\n");
424
425 scls.n = 0;
426 scls.value[0] = channel_key;
427 scls.value_size[0] = sizeof (*channel_key);
428 scls.value[1] = "three two one";
429 scls.value_size[1] = strlen ("three two one");
430
431 GNUNET_assert (GNUNET_OK == db->state_sync_begin (db->cls, &channel_pub_key));
432
433 GNUNET_assert (GNUNET_OK == db->state_sync_assign (db->cls, &channel_pub_key,
434 "_sync_bar", scls.value[0],
435 scls.value_size[0]));
436
437 GNUNET_assert (GNUNET_OK == db->state_sync_assign (db->cls, &channel_pub_key,
438 "_sync_foo", scls.value[1],
439 scls.value_size[1]));
440
441 GNUNET_assert (GNUNET_OK == db->state_sync_end (db->cls, &channel_pub_key,
442 max_state_msg_id,
443 INT64_MAX - 5));
444
445 GNUNET_assert (GNUNET_NO == db->state_get_prefix (db->cls, &channel_pub_key,
446 "_foo", state_cb, &scls));
447 GNUNET_assert (scls.n == 0);
448
449 GNUNET_assert (GNUNET_OK == db->state_get_prefix (db->cls, &channel_pub_key,
450 "_sync", state_cb, &scls));
451 GNUNET_assert (scls.n == 2);
452
453 scls.n = 0;
454 GNUNET_assert (GNUNET_OK == db->state_get_signed (db->cls, &channel_pub_key,
455 state_cb, &scls));
456 GNUNET_assert (scls.n == 2);
457
458 /* Modify state after sync */
459
460 LOG (GNUNET_ERROR_TYPE_INFO, "state_modify_*()\n");
461
462 message_id = GNUNET_ntohll (fcls.msg[0]->message_id) + 6;
463 GNUNET_assert (GNUNET_OK == db->state_modify_begin (db->cls, &channel_pub_key,
464 message_id,
465 message_id - max_state_msg_id));
466
467 GNUNET_assert (GNUNET_OK == db->state_modify_op (db->cls, &channel_pub_key,
468 GNUNET_PSYC_OP_ASSIGN,
469 "_sync_foo",
470 C2ARG("five six seven")));
471
472 GNUNET_assert (GNUNET_OK == db->state_modify_end (db->cls, &channel_pub_key,
473 message_id));
474
475 /* Reset state */
476
477 LOG (GNUNET_ERROR_TYPE_INFO, "state_reset()\n");
478
479 scls.n = 0;
480 GNUNET_assert (GNUNET_OK == db->state_reset (db->cls, &channel_pub_key));
481 GNUNET_assert (scls.n == 0);
482
483 ok = 0;
484
485 if (NULL != channel_key)
486 {
487 GNUNET_free (channel_key);
488 channel_key = NULL;
489 }
490 if (NULL != slave_key)
491 {
492 GNUNET_free (slave_key);
493 slave_key = NULL;
494 }
495
496 unload_plugin (db);
497}
498
499
500int
501main (int argc, char *argv[])
502{
503 char cfg_name[128];
504 char *const xargv[] = {
505 "test-plugin-psycstore",
506 "-c", cfg_name,
507 "-L", LOG_LEVEL,
508 NULL
509 };
510 struct GNUNET_GETOPT_CommandLineOption options[] = {
511 GNUNET_GETOPT_OPTION_END
512 };
513 GNUNET_DISK_directory_remove ("/tmp/gnunet-test-plugin-psycstore-sqlite");
514 GNUNET_log_setup ("test-plugin-psycstore", LOG_LEVEL, NULL);
515 plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]);
516 GNUNET_snprintf (cfg_name, sizeof (cfg_name), "test_plugin_psycstore_%s.conf",
517 plugin_name);
518 GNUNET_PROGRAM_run ((sizeof (xargv) / sizeof (char *)) - 1, xargv,
519 "test-plugin-psycstore", "nohelp", options, &run, NULL);
520
521 if ( (0 != ok) &&
522 (77 != ok) )
523 FPRINTF (stderr, "Missed some testcases: %d\n", ok);
524
525#if ! DEBUG_PSYCSTORE
526 GNUNET_DISK_directory_remove ("/tmp/gnunet-test-plugin-psycstore-sqlite");
527#endif
528
529 return ok;
530}
531
532/* end of test_plugin_psycstore.c */
diff --git a/src/psycstore/test_plugin_psycstore_mysql.conf b/src/psycstore/test_plugin_psycstore_mysql.conf
deleted file mode 100644
index e15b3fd63..000000000
--- a/src/psycstore/test_plugin_psycstore_mysql.conf
+++ /dev/null
@@ -1,7 +0,0 @@
1[psycstore-mysql]
2DATABASE = test
3# CONFIG = ~/.my.cnf
4# USER = gnunet
5# PASSWORD =
6# HOST = localhost
7# PORT = 3306
diff --git a/src/psycstore/test_plugin_psycstore_postgres.conf b/src/psycstore/test_plugin_psycstore_postgres.conf
deleted file mode 100644
index 4b870dd02..000000000
--- a/src/psycstore/test_plugin_psycstore_postgres.conf
+++ /dev/null
@@ -1,2 +0,0 @@
1[psycstore-postgres]
2CONFIG = connect_timeout=10; dbname=template1
diff --git a/src/psycstore/test_plugin_psycstore_sqlite.conf b/src/psycstore/test_plugin_psycstore_sqlite.conf
deleted file mode 100644
index 498b1d02d..000000000
--- a/src/psycstore/test_plugin_psycstore_sqlite.conf
+++ /dev/null
@@ -1,2 +0,0 @@
1[psycstore-sqlite]
2FILENAME = $GNUNET_TMP/gnunet-test-plugin-psycstore-sqlite/sqlite.db
diff --git a/src/psycstore/test_psycstore.c b/src/psycstore/test_psycstore.c
deleted file mode 100644
index ca509041c..000000000
--- a/src/psycstore/test_psycstore.c
+++ /dev/null
@@ -1,586 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psycstore/test_psycstore.c
23 * @brief Test for the PSYCstore service.
24 * @author Gabor X Toth
25 * @author Christian Grothoff
26 */
27
28#include <inttypes.h>
29
30#include "platform.h"
31#include "gnunet_util_lib.h"
32#include "gnunet_common.h"
33#include "gnunet_testing_lib.h"
34#include "gnunet_psycstore_service.h"
35
36#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
37
38
39/**
40 * Return value from 'main'.
41 */
42static int res;
43
44/**
45 * Handle to PSYCstore service.
46 */
47static struct GNUNET_PSYCSTORE_Handle *h;
48
49/**
50 * Handle to PSYCstore operation.
51 */
52static struct GNUNET_PSYCSTORE_OperationHandle *op;
53
54/**
55 * Handle for task for timeout termination.
56 */
57static struct GNUNET_SCHEDULER_Task *end_badly_task;
58
59static struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key;
60static struct GNUNET_CRYPTO_EcdsaPrivateKey *slave_key;
61
62static struct GNUNET_CRYPTO_EddsaPublicKey channel_pub_key;
63static struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
64
65static struct FragmentClosure
66{
67 uint8_t n;
68 uint8_t n_expected;
69 uint64_t flags[16];
70 struct GNUNET_MULTICAST_MessageHeader *msg[16];
71} fcls;
72
73struct StateClosure {
74 size_t n;
75 char *name[16];
76 void *value[16];
77 size_t value_size[16];
78} scls;
79
80static struct GNUNET_PSYC_Modifier modifiers[16];
81
82/**
83 * Clean up all resources used.
84 */
85static void
86cleanup ()
87{
88 if (NULL != op)
89 {
90 GNUNET_PSYCSTORE_operation_cancel (op);
91 op = NULL;
92 }
93 if (NULL != h)
94 {
95 GNUNET_PSYCSTORE_disconnect (h);
96 h = NULL;
97 }
98 if (NULL != channel_key)
99 {
100 GNUNET_free (channel_key);
101 channel_key = NULL;
102 }
103 if (NULL != slave_key)
104 {
105 GNUNET_free (slave_key);
106 slave_key = NULL;
107 }
108 GNUNET_SCHEDULER_shutdown ();
109}
110
111
112/**
113 * Terminate the testcase (failure).
114 *
115 * @param cls NULL
116 */
117static void
118end_badly (void *cls)
119{
120 res = 1;
121 cleanup ();
122}
123
124
125/**
126 * Terminate the testcase (success).
127 *
128 * @param cls NULL
129 */
130static void
131end_normally (void *cls)
132{
133 res = 0;
134 cleanup ();
135}
136
137
138/**
139 * Finish the testcase (successfully).
140 */
141static void
142end ()
143{
144 if (NULL != end_badly_task)
145 {
146 GNUNET_SCHEDULER_cancel (end_badly_task);
147 end_badly_task = NULL;
148 }
149 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
150 &end_normally, NULL);
151}
152
153
154static void
155state_reset_result (void *cls,
156 int64_t result,
157 const char *err_msg,
158 uint16_t err_msg_size)
159{
160 op = NULL;
161 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
162 "state_reset_result:\t%d\n",
163 (int) result);
164 GNUNET_assert (GNUNET_OK == result);
165
166 op = GNUNET_PSYCSTORE_state_reset (h, &channel_pub_key,
167 &state_reset_result, cls);
168 GNUNET_PSYCSTORE_operation_cancel (op);
169 op = NULL;
170 end ();
171}
172
173
174static int
175state_result (void *cls,
176 const char *name,
177 const void *value,
178 uint32_t value_size)
179{
180 struct StateClosure *scls = cls;
181 const char *nam = scls->name[scls->n];
182 const void *val = scls->value[scls->n];
183 size_t val_size = scls->value_size[scls->n++];
184
185 if (value_size == val_size
186 && 0 == memcmp (value, val, val_size)
187 && 0 == strcmp (name, nam))
188 {
189 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
190 " variable %s matches\n",
191 name);
192 return GNUNET_YES;
193 }
194 else
195 {
196 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
197 " variable %s differs\nReceived: %.*s\nExpected: %.*s\n",
198 name, (int) value_size, (char*) value, (int) val_size, (char*) val);
199 GNUNET_assert (0);
200 return GNUNET_SYSERR;
201 }
202}
203
204
205static void
206state_get_prefix_result (void *cls, int64_t result,
207 const char *err_msg, uint16_t err_msg_size)
208{
209 struct StateClosure *scls = cls;
210 op = NULL;
211 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_prefix_result:\t%ld\n", (long int) result);
212 GNUNET_assert (GNUNET_OK == result && 2 == scls->n);
213
214 op = GNUNET_PSYCSTORE_state_reset (h, &channel_pub_key,
215 &state_reset_result, cls);
216}
217
218
219static void
220state_get_result (void *cls, int64_t result,
221 const char *err_msg, uint16_t err_msg_size)
222{
223 op = NULL;
224 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_result:\t%ld\n", (long int) result);
225 GNUNET_assert (GNUNET_OK == result);
226
227 scls.n = 0;
228
229 scls.name[0] = "_sync_bar";
230 scls.value[0] = "ten eleven twelve";
231 scls.value_size[0] = sizeof ("ten eleven twelve") - 1;
232
233 scls.name[1] = "_sync_foo";
234 scls.value[1] = "three two one";
235 scls.value_size[1] = sizeof ("three two one") - 1;
236
237 op = GNUNET_PSYCSTORE_state_get_prefix (h, &channel_pub_key, "_sync",
238 &state_result,
239 &state_get_prefix_result, &scls);
240}
241
242
243static void
244counters_result (void *cls, int status, uint64_t max_fragment_id,
245 uint64_t max_message_id, uint64_t max_group_generation,
246 uint64_t max_state_message_id)
247{
248 struct FragmentClosure *fcls = cls;
249 int result = 0;
250 op = NULL;
251
252 if (GNUNET_OK == status
253 && max_fragment_id == GNUNET_ntohll (fcls->msg[2]->fragment_id)
254 && max_message_id == GNUNET_ntohll (fcls->msg[2]->message_id)
255 && max_group_generation == GNUNET_ntohll (fcls->msg[2]->group_generation)
256 && max_state_message_id == GNUNET_ntohll (fcls->msg[0]->message_id))
257 result = 1;
258
259 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "counters_get:\t%d\n", result);
260 GNUNET_assert (result == 1);
261
262 scls.n = 0;
263 scls.name[0] = "_sync_bar";
264 scls.value[0] = "ten eleven twelve";
265 scls.value_size[0] = sizeof ("ten eleven twelve") - 1;
266
267 op = GNUNET_PSYCSTORE_state_get (h, &channel_pub_key, "_sync_bar_x_yy_zzz",
268 &state_result, &state_get_result, &scls);
269}
270
271
272static void
273state_modify_result (void *cls, int64_t result,
274 const char *err_msg, uint16_t err_msg_size)
275{
276 op = NULL;
277 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_modify_result:\t%ld\n", (long int) result);
278 GNUNET_assert (GNUNET_OK == result);
279
280 op = GNUNET_PSYCSTORE_counters_get (h, &channel_pub_key,
281 &counters_result, cls);
282}
283
284
285static void
286state_sync_result (void *cls, int64_t result,
287 const char *err_msg, uint16_t err_msg_size)
288{
289 struct FragmentClosure *fcls = cls;
290 op = NULL;
291 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_sync_result:\t%ld\n", (long int) result);
292 GNUNET_assert (GNUNET_OK == result);
293
294 op = GNUNET_PSYCSTORE_state_modify (h, &channel_pub_key,
295 GNUNET_ntohll (fcls->msg[0]->message_id),
296 0, state_modify_result, fcls);
297}
298
299
300static int
301fragment_result (void *cls,
302 struct GNUNET_MULTICAST_MessageHeader *msg,
303 enum GNUNET_PSYCSTORE_MessageFlags flags)
304{
305 struct FragmentClosure *fcls = cls;
306 GNUNET_assert (fcls->n < fcls->n_expected);
307 struct GNUNET_MULTICAST_MessageHeader *msg0 = fcls->msg[fcls->n];
308 uint64_t flags0 = fcls->flags[fcls->n++];
309
310 if (flags == flags0 && msg->header.size == msg0->header.size
311 && 0 == memcmp (msg, msg0, ntohs (msg->header.size)))
312 {
313 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " fragment %" PRIu64 " matches\n",
314 GNUNET_ntohll (msg->fragment_id));
315 return GNUNET_YES;
316 }
317 else
318 {
319 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
320 " fragment differs: expected %" PRIu64 ", got %" PRIu64 "\n",
321 GNUNET_ntohll (msg0->fragment_id),
322 GNUNET_ntohll (msg->fragment_id));
323 GNUNET_assert (0);
324 return GNUNET_SYSERR;
325 }
326}
327
328
329static void
330message_get_latest_result (void *cls, int64_t result,
331 const char *err_msg, uint16_t err_msg_size)
332{
333 struct FragmentClosure *fcls = cls;
334 op = NULL;
335 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_latest:\t%ld\n", (long int) result);
336 GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
337
338 modifiers[0] = (struct GNUNET_PSYC_Modifier) {
339 .oper = '=',
340 .name = "_sync_foo",
341 .value = "three two one",
342 .value_size = sizeof ("three two one") - 1
343 };
344 modifiers[1] = (struct GNUNET_PSYC_Modifier) {
345 .oper = '=',
346 .name = "_sync_bar",
347 .value = "ten eleven twelve",
348 .value_size = sizeof ("ten eleven twelve") - 1
349 };
350
351 op = GNUNET_PSYCSTORE_state_sync (h, &channel_pub_key,
352 GNUNET_ntohll (fcls->msg[0]->message_id) + 1,
353 GNUNET_ntohll (fcls->msg[0]->message_id) + 2,
354 2, modifiers, state_sync_result, fcls);
355}
356
357
358static void
359message_get_result (void *cls, int64_t result,
360 const char *err_msg, uint16_t err_msg_size)
361{
362 struct FragmentClosure *fcls = cls;
363 op = NULL;
364 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get:\t%ld\n", (long int) result);
365 GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
366
367 fcls->n = 0;
368 fcls->n_expected = 3;
369 op = GNUNET_PSYCSTORE_message_get_latest (h, &channel_pub_key, &slave_pub_key,
370 1, "", &fragment_result,
371 &message_get_latest_result, fcls);
372}
373
374
375static void
376message_get_fragment_result (void *cls, int64_t result,
377 const char *err_msg, uint16_t err_msg_size)
378{
379 struct FragmentClosure *fcls = cls;
380 op = NULL;
381 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_fragment:\t%ld\n", (long int) result);
382 GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
383
384 fcls->n = 0;
385 fcls->n_expected = 3;
386 uint64_t message_id = GNUNET_ntohll (fcls->msg[0]->message_id);
387 op = GNUNET_PSYCSTORE_message_get (h, &channel_pub_key, &slave_pub_key,
388 message_id, message_id, 0, "",
389 &fragment_result,
390 &message_get_result, fcls);
391}
392
393
394static void
395fragment_get_latest_result (void *cls, int64_t result,
396 const char *err_msg, uint16_t err_msg_size)
397{
398 struct FragmentClosure *fcls = cls;
399 op = NULL;
400 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_get_latest:\t%ld\n", (long int) result);
401 GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
402
403 fcls->n = 1;
404 fcls->n_expected = 2;
405 op = GNUNET_PSYCSTORE_message_get_fragment (h, &channel_pub_key, &slave_pub_key,
406 GNUNET_ntohll (fcls->msg[1]->message_id),
407 GNUNET_ntohll (fcls->msg[1]->fragment_offset),
408 &fragment_result,
409 &message_get_fragment_result, fcls);
410}
411
412
413static void
414fragment_get_result (void *cls, int64_t result,
415 const char *err_msg, uint16_t err_msg_size)
416{
417 struct FragmentClosure *fcls = cls;
418 op = NULL;
419 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
420 "fragment_get:\t%d\n",
421 (int) result);
422 GNUNET_assert (0 < result && fcls->n == fcls->n_expected);
423
424 fcls->n = 0;
425 fcls->n_expected = 3;
426 op = GNUNET_PSYCSTORE_fragment_get_latest (h, &channel_pub_key,
427 &slave_pub_key, fcls->n_expected,
428 &fragment_result,
429 &fragment_get_latest_result, fcls);
430}
431
432
433static void
434fragment_store_result (void *cls, int64_t result,
435 const char *err_msg, uint16_t err_msg_size)
436{
437 op = NULL;
438 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_store:\t%ld\n", (long int) result);
439 GNUNET_assert (GNUNET_OK == result);
440
441 if ((intptr_t) cls == GNUNET_YES)
442 { /* last fragment */
443 fcls.n = 0;
444 fcls.n_expected = 1;
445 uint64_t fragment_id = GNUNET_ntohll (fcls.msg[0]->fragment_id);
446 op = GNUNET_PSYCSTORE_fragment_get (h, &channel_pub_key, &slave_pub_key,
447 fragment_id, fragment_id,
448 &fragment_result,
449 &fragment_get_result, &fcls);
450 }
451}
452
453
454static void
455fragment_store ()
456{
457 struct GNUNET_MULTICAST_MessageHeader *msg;
458 fcls.flags[0] = GNUNET_PSYCSTORE_MESSAGE_STATE;
459 fcls.msg[0] = msg = GNUNET_malloc (sizeof (*msg) + sizeof (channel_pub_key));
460 GNUNET_assert (msg != NULL);
461
462 msg->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE);
463 msg->header.size = htons (sizeof (*msg) + sizeof (channel_pub_key));
464
465 msg->hop_counter = htonl (9);
466 msg->fragment_id = GNUNET_htonll (INT64_MAX - 8);
467 msg->fragment_offset = GNUNET_htonll (0);
468 msg->message_id = GNUNET_htonll (INT64_MAX - 10);
469 msg->group_generation = GNUNET_htonll (INT64_MAX - 3);
470 msg->flags = htonl (GNUNET_MULTICAST_MESSAGE_LAST_FRAGMENT);
471
472 GNUNET_memcpy (&msg[1], &channel_pub_key, sizeof (channel_pub_key));
473
474 msg->purpose.size = htonl (ntohs (msg->header.size)
475 - sizeof (msg->header)
476 - sizeof (msg->hop_counter)
477 - sizeof (msg->signature));
478 msg->purpose.purpose = htonl (234);
479 GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_eddsa_sign (channel_key, &msg->purpose,
480 &msg->signature));
481
482 op = GNUNET_PSYCSTORE_fragment_store (h, &channel_pub_key, msg, fcls.flags[0],
483 &fragment_store_result, GNUNET_NO);
484
485 fcls.flags[1] = GNUNET_PSYCSTORE_MESSAGE_STATE_APPLIED;
486 fcls.msg[1] = msg = GNUNET_malloc (sizeof (*msg) + sizeof (channel_pub_key));
487 GNUNET_memcpy (msg, fcls.msg[0], sizeof (*msg) + sizeof (channel_pub_key));
488 msg->fragment_id = GNUNET_htonll (INT64_MAX - 4);
489 msg->fragment_offset = GNUNET_htonll (1024);
490
491 op = GNUNET_PSYCSTORE_fragment_store (h, &channel_pub_key, msg, fcls.flags[1],
492 &fragment_store_result, GNUNET_NO);
493
494 fcls.flags[2] = GNUNET_PSYCSTORE_MESSAGE_STATE_HASH;
495 fcls.msg[2] = msg = GNUNET_malloc (sizeof (*msg) + sizeof (channel_pub_key));
496 GNUNET_memcpy (msg, fcls.msg[1], sizeof (*msg) + sizeof (channel_pub_key));
497 msg->fragment_id = GNUNET_htonll (INT64_MAX);
498 msg->fragment_offset = GNUNET_htonll (16384);
499
500 op = GNUNET_PSYCSTORE_fragment_store (h, &channel_pub_key, msg, fcls.flags[2],
501 &fragment_store_result, (void *) GNUNET_YES);
502}
503
504
505static void
506membership_test_result (void *cls, int64_t result,
507 const char *err_msg, uint16_t err_msg_size)
508{
509 op = NULL;
510 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_test:\t%ld\n", (long int) result);
511 GNUNET_assert (GNUNET_OK == result);
512
513 fragment_store ();
514}
515
516
517static void
518membership_store_result (void *cls, int64_t result,
519 const char *err_msg, uint16_t err_msg_size)
520{
521 op = NULL;
522 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_store:\t%ld\n", (long int) result);
523 GNUNET_assert (GNUNET_OK == result);
524
525 op = GNUNET_PSYCSTORE_membership_test (h, &channel_pub_key, &slave_pub_key,
526 INT64_MAX - 10, 2,
527 &membership_test_result, NULL);
528}
529
530
531/**
532 * Main function of the test, run from scheduler.
533 *
534 * @param cls NULL
535 * @param cfg configuration we use (also to connect to PSYCstore service)
536 * @param peer handle to access more of the peer (not used)
537 */
538static void
539#if DEBUG_TEST_PSYCSTORE
540run (void *cls, char *const *args, const char *cfgfile,
541 const struct GNUNET_CONFIGURATION_Handle *cfg)
542#else
543run (void *cls,
544 const struct GNUNET_CONFIGURATION_Handle *cfg,
545 struct GNUNET_TESTING_Peer *peer)
546#endif
547{
548 end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
549
550 h = GNUNET_PSYCSTORE_connect (cfg);
551 GNUNET_assert (NULL != h);
552
553 channel_key = GNUNET_CRYPTO_eddsa_key_create ();
554 slave_key = GNUNET_CRYPTO_ecdsa_key_create ();
555
556 GNUNET_CRYPTO_eddsa_key_get_public (channel_key, &channel_pub_key);
557 GNUNET_CRYPTO_ecdsa_key_get_public (slave_key, &slave_pub_key);
558
559 op = GNUNET_PSYCSTORE_membership_store (h, &channel_pub_key, &slave_pub_key,
560 GNUNET_YES, INT64_MAX - 5,
561 INT64_MAX - 10, 2,
562 &membership_store_result, NULL);
563}
564
565
566int
567main (int argc, char *argv[])
568{
569 res = 1;
570#if DEBUG_TEST_PSYCSTORE
571 const struct GNUNET_GETOPT_CommandLineOption opts[] = {
572 GNUNET_GETOPT_OPTION_END
573 };
574 if (GNUNET_OK != GNUNET_PROGRAM_run (argc, argv, "test-psycstore",
575 "test-psycstore [options]",
576 opts, &run, NULL))
577 return 1;
578#else
579 if (0 != GNUNET_TESTING_service_run ("test-psycstore", "psycstore",
580 "test_psycstore.conf", &run, NULL))
581 return 1;
582#endif
583 return res;
584}
585
586/* end of test_psycstore.c */
diff --git a/src/psycstore/test_psycstore.conf b/src/psycstore/test_psycstore.conf
deleted file mode 100644
index fa7c2d003..000000000
--- a/src/psycstore/test_psycstore.conf
+++ /dev/null
@@ -1,8 +0,0 @@
1[PATHS]
2GNUNET_TEST_HOME = $GNUNET_TMP/test-gnunet-psycstore/
3
4[psycstore]
5DATABASE = sqlite
6
7[psycstore-sqlite]
8FILENAME = $GNUNET_TEST_HOME/psycstore/sqlite.db
diff --git a/src/psycutil/.gitignore b/src/psycutil/.gitignore
deleted file mode 100644
index 03d8197fb..000000000
--- a/src/psycutil/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
1test_psyc_env
diff --git a/src/psycutil/Makefile.am b/src/psycutil/Makefile.am
deleted file mode 100644
index 2732c3a21..000000000
--- a/src/psycutil/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
1# This Makefile.am is in the public domain
2AM_CPPFLAGS = -I$(top_srcdir)/src/include
3
4pkgcfgdir= $(pkgdatadir)/config.d/
5
6libexecdir= $(pkglibdir)/libexec/
7
8if MINGW
9 WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
10endif
11
12if USE_COVERAGE
13 AM_CFLAGS = --coverage -O0
14 XLIB = -lgcov
15endif
16
17lib_LTLIBRARIES = libgnunetpsycutil.la
18
19libgnunetpsycutil_la_SOURCES = \
20 psyc_env.c \
21 psyc_message.c \
22 psyc_slicer.c
23libgnunetpsycutil_la_LIBADD = \
24 $(top_builddir)/src/util/libgnunetutil.la \
25 $(GN_LIBINTL) $(XLIB)
26libgnunetpsycutil_la_LDFLAGS = \
27 $(GN_LIB_LDFLAGS) $(WINFLAGS) \
28 -version-info 0:0:0
29
30if HAVE_TESTING
31check_PROGRAMS = \
32 test_psyc_env
33endif
34
35if ENABLE_TEST_RUN
36AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME;
37TESTS = $(check_PROGRAMS)
38endif
39
40test_psyc_env_SOURCES = \
41 test_psyc_env.c
42test_psyc_env_LDADD = \
43 libgnunetpsycutil.la \
44 $(top_builddir)/src/testing/libgnunettesting.la \
45 $(top_builddir)/src/util/libgnunetutil.la
diff --git a/src/psycutil/psyc_env.c b/src/psycutil/psyc_env.c
deleted file mode 100644
index fc4b8eb7c..000000000
--- a/src/psycutil/psyc_env.c
+++ /dev/null
@@ -1,196 +0,0 @@
1/*
2 * This file is part of GNUnet.
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Gabor X Toth
23 *
24 * @file
25 * Library providing operations for the @e environment of
26 * PSYC and Social messages.
27 */
28
29#include "platform.h"
30#include "gnunet_util_lib.h"
31#include "gnunet_psyc_env.h"
32
33/**
34 * Environment for a message.
35 *
36 * Contains modifiers.
37 */
38struct GNUNET_PSYC_Environment
39{
40 struct GNUNET_PSYC_Modifier *mod_head;
41 struct GNUNET_PSYC_Modifier *mod_tail;
42 size_t mod_count;
43};
44
45
46/**
47 * Create an environment.
48 *
49 * @return A newly allocated environment.
50 */
51struct GNUNET_PSYC_Environment *
52GNUNET_PSYC_env_create ()
53{
54 return GNUNET_new (struct GNUNET_PSYC_Environment);
55}
56
57
58/**
59 * Add a modifier to the environment.
60 *
61 * @param env The environment.
62 * @param oper Operation to perform.
63 * @param name Name of the variable.
64 * @param value Value of the variable.
65 * @param value_size Size of @a value.
66 */
67void
68GNUNET_PSYC_env_add (struct GNUNET_PSYC_Environment *env,
69 enum GNUNET_PSYC_Operator oper, const char *name,
70 const void *value, size_t value_size)
71{
72 struct GNUNET_PSYC_Modifier *mod = GNUNET_new (struct GNUNET_PSYC_Modifier);
73 mod->oper = oper;
74 mod->name = name;
75 mod->value = value;
76 mod->value_size = value_size;
77 GNUNET_CONTAINER_DLL_insert_tail (env->mod_head, env->mod_tail, mod);
78 env->mod_count++;
79}
80
81
82/**
83 * Get the first modifier of the environment.
84 */
85struct GNUNET_PSYC_Modifier *
86GNUNET_PSYC_env_head (const struct GNUNET_PSYC_Environment *env)
87{
88 return env->mod_head;
89}
90
91
92/**
93 * Get the last modifier of the environment.
94 */
95struct GNUNET_PSYC_Modifier *
96GNUNET_PSYC_env_tail (const struct GNUNET_PSYC_Environment *env)
97{
98 return env->mod_tail;
99}
100
101
102/**
103 * Remove a modifier from the environment.
104 */
105void
106GNUNET_PSYC_env_remove (struct GNUNET_PSYC_Environment *env,
107 struct GNUNET_PSYC_Modifier *mod)
108{
109 GNUNET_CONTAINER_DLL_remove (env->mod_head, env->mod_tail, mod);
110}
111
112
113/**
114 * Get the modifier at the beginning of an environment and remove it.
115 *
116 * @param env
117 * @param oper
118 * @param name
119 * @param value
120 * @param value_size
121 *
122 * @return
123 */
124int
125GNUNET_PSYC_env_shift (struct GNUNET_PSYC_Environment *env,
126 enum GNUNET_PSYC_Operator *oper, const char **name,
127 const void **value, size_t *value_size)
128{
129 if (NULL == env->mod_head)
130 return GNUNET_NO;
131
132 struct GNUNET_PSYC_Modifier *mod = env->mod_head;
133 *oper = mod->oper;
134 *name = mod->name;
135 *value = mod->value;
136 *value_size = mod->value_size;
137
138 GNUNET_CONTAINER_DLL_remove (env->mod_head, env->mod_tail, mod);
139 GNUNET_free (mod);
140 env->mod_count--;
141
142 return GNUNET_YES;
143}
144
145
146/**
147 * Iterate through all modifiers in the environment.
148 *
149 * @param env The environment.
150 * @param it Iterator.
151 * @param it_cls Closure for iterator.
152 */
153void
154GNUNET_PSYC_env_iterate (const struct GNUNET_PSYC_Environment *env,
155 GNUNET_PSYC_Iterator it, void *it_cls)
156{
157 struct GNUNET_PSYC_Modifier *mod;
158 for (mod = env->mod_head; NULL != mod; mod = mod->next)
159 it (it_cls, mod->oper, mod->name, mod->value, mod->value_size);
160}
161
162
163/**
164 * Get the number of modifiers in the environment.
165 *
166 * @param env The environment.
167 *
168 * @return Number of modifiers.
169 */
170size_t
171GNUNET_PSYC_env_get_count (const struct GNUNET_PSYC_Environment *env)
172{
173 return env->mod_count;
174}
175
176
177/**
178 * Destroy an environment.
179 *
180 * @param env The environment to destroy.
181 */
182void
183GNUNET_PSYC_env_destroy (struct GNUNET_PSYC_Environment *env)
184{
185 struct GNUNET_PSYC_Modifier *mod, *prev = NULL;
186 for (mod = env->mod_head; NULL != mod; mod = mod->next)
187 {
188 if (NULL != prev)
189 GNUNET_free (prev);
190 prev = mod;
191 }
192 if (NULL != prev)
193 GNUNET_free (prev);
194
195 GNUNET_free (env);
196}
diff --git a/src/psycutil/psyc_message.c b/src/psycutil/psyc_message.c
deleted file mode 100644
index a03eff47f..000000000
--- a/src/psycutil/psyc_message.c
+++ /dev/null
@@ -1,1355 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file psycutil/psyc_message.c
23 * @brief PSYC utilities; receiving/transmitting/logging PSYC messages.
24 * @author Gabor X Toth
25 */
26
27#include <inttypes.h>
28
29#include "platform.h"
30#include "gnunet_util_lib.h"
31#include "gnunet_psyc_util_lib.h"
32#include "gnunet_psyc_service.h"
33
34#define LOG(kind,...) GNUNET_log_from (kind, "psyc-util",__VA_ARGS__)
35
36
37struct GNUNET_PSYC_TransmitHandle
38{
39 /**
40 * Client connection to service.
41 */
42 struct GNUNET_MQ_Handle *mq;
43
44 /**
45 * Message currently being received from the client.
46 */
47 struct GNUNET_MessageHeader *msg;
48
49 /**
50 * Envelope for @a msg
51 */
52 struct GNUNET_MQ_Envelope *env;
53
54 /**
55 * Callback to request next modifier from client.
56 */
57 GNUNET_PSYC_TransmitNotifyModifier notify_mod;
58
59 /**
60 * Closure for the notify callbacks.
61 */
62 void *notify_mod_cls;
63
64 /**
65 * Callback to request next data fragment from client.
66 */
67 GNUNET_PSYC_TransmitNotifyData notify_data;
68
69 /**
70 * Closure for the notify callbacks.
71 */
72 void *notify_data_cls;
73
74 /**
75 * Modifier of the environment that is currently being transmitted.
76 */
77 struct GNUNET_PSYC_Modifier *mod;
78
79 /**
80 *
81 */
82 const char *mod_value;
83
84 /**
85 * Number of bytes remaining to be transmitted from the current modifier value.
86 */
87 uint32_t mod_value_remaining;
88
89 /**
90 * State of the current message being received from client.
91 */
92 enum GNUNET_PSYC_MessageState state;
93
94 /**
95 * Number of PSYC_TRANSMIT_ACK messages we are still waiting for.
96 */
97 uint8_t acks_pending;
98
99 /**
100 * Is transmission paused?
101 */
102 uint8_t paused;
103
104 /**
105 * Are we currently transmitting a message?
106 */
107 uint8_t in_transmit;
108
109 /**
110 * Notify callback is currently being called.
111 */
112 uint8_t in_notify;
113
114};
115
116
117
118struct GNUNET_PSYC_ReceiveHandle
119{
120 /**
121 * Message callback.
122 */
123 GNUNET_PSYC_MessageCallback message_cb;
124
125 /**
126 * Message part callback.
127 */
128 GNUNET_PSYC_MessagePartCallback message_part_cb;
129
130 /**
131 * Closure for the callbacks.
132 */
133 void *cb_cls;
134
135 /**
136 * ID of the message being received from the PSYC service.
137 */
138 uint64_t message_id;
139
140 /**
141 * Public key of the slave from which a message is being received.
142 */
143 struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
144
145 /**
146 * State of the currently being received message from the PSYC service.
147 */
148 enum GNUNET_PSYC_MessageState state;
149
150 /**
151 * Flags for the currently being received message from the PSYC service.
152 */
153 enum GNUNET_PSYC_MessageFlags flags;
154
155 /**
156 * Expected value size for the modifier being received from the PSYC service.
157 */
158 uint32_t mod_value_size_expected;
159
160 /**
161 * Actual value size for the modifier being received from the PSYC service.
162 */
163 uint32_t mod_value_size;
164};
165
166
167/**** Messages ****/
168
169
170/**
171 * Create a PSYC message.
172 *
173 * @param method_name
174 * PSYC method for the message.
175 * @param env
176 * Environment for the message.
177 * @param data
178 * Data payload for the message.
179 * @param data_size
180 * Size of @a data.
181 *
182 * @return Message header with size information,
183 * followed by the message parts.
184 */
185struct GNUNET_PSYC_Message *
186GNUNET_PSYC_message_create (const char *method_name,
187 const struct GNUNET_PSYC_Environment *env,
188 const void *data,
189 size_t data_size)
190{
191 struct GNUNET_PSYC_Modifier *mod = NULL;
192 struct GNUNET_PSYC_MessageMethod *pmeth = NULL;
193 struct GNUNET_PSYC_MessageModifier *pmod = NULL;
194 struct GNUNET_MessageHeader *pmsg = NULL;
195 uint16_t env_size = 0;
196 if (NULL != env)
197 {
198 mod = GNUNET_PSYC_env_head (env);
199 while (NULL != mod)
200 {
201 env_size += sizeof (*pmod) + strlen (mod->name) + 1 + mod->value_size;
202 mod = mod->next;
203 }
204 }
205
206 struct GNUNET_PSYC_Message *msg;
207 uint16_t method_name_size = strlen (method_name) + 1;
208 if (method_name_size == 1)
209 return NULL;
210
211 uint16_t msg_size = sizeof (*msg) /* header */
212 + sizeof (*pmeth) + method_name_size /* method */
213 + env_size /* modifiers */
214 + ((0 < data_size) ? sizeof (*pmsg) + data_size : 0) /* data */
215 + sizeof (*pmsg); /* end of message */
216 msg = GNUNET_malloc (msg_size);
217 msg->header.size = htons (msg_size);
218 msg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE); /* FIXME */
219
220 pmeth = (struct GNUNET_PSYC_MessageMethod *) &msg[1];
221 pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD);
222 pmeth->header.size = htons (sizeof (*pmeth) + method_name_size);
223 GNUNET_memcpy (&pmeth[1], method_name, method_name_size);
224
225 uint16_t p = sizeof (*msg) + sizeof (*pmeth) + method_name_size;
226 if (NULL != env)
227 {
228 mod = GNUNET_PSYC_env_head (env);
229 while (NULL != mod)
230 {
231 uint16_t mod_name_size = strlen (mod->name) + 1;
232 pmod = (struct GNUNET_PSYC_MessageModifier *) ((char *) msg + p);
233 pmod->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER);
234 pmod->header.size = sizeof (*pmod) + mod_name_size + mod->value_size;
235 p += pmod->header.size;
236 pmod->header.size = htons (pmod->header.size);
237
238 pmod->oper = mod->oper;
239 pmod->name_size = htons (mod_name_size);
240 pmod->value_size = htonl (mod->value_size);
241
242 GNUNET_memcpy (&pmod[1], mod->name, mod_name_size);
243 if (0 < mod->value_size)
244 GNUNET_memcpy ((char *) &pmod[1] + mod_name_size, mod->value, mod->value_size);
245
246 mod = mod->next;
247 }
248 }
249
250 if (0 < data_size)
251 {
252 pmsg = (struct GNUNET_MessageHeader *) ((char *) msg + p);
253 pmsg->size = sizeof (*pmsg) + data_size;
254 p += pmsg->size;
255 pmsg->size = htons (pmsg->size);
256 pmsg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA);
257 GNUNET_memcpy (&pmsg[1], data, data_size);
258 }
259
260 pmsg = (struct GNUNET_MessageHeader *) ((char *) msg + p);
261 pmsg->size = htons (sizeof (*pmsg));
262 pmsg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END);
263
264 GNUNET_assert (p + sizeof (*pmsg) == msg_size);
265 return msg;
266}
267
268
269void
270GNUNET_PSYC_log_message (enum GNUNET_ErrorType kind,
271 const struct GNUNET_MessageHeader *msg)
272{
273 uint16_t size = ntohs (msg->size);
274 uint16_t type = ntohs (msg->type);
275
276 GNUNET_log (kind,
277 "Message of type %d and size %u:\n",
278 type,
279 size);
280 switch (type)
281 {
282 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE:
283 {
284 const struct GNUNET_PSYC_MessageHeader *pmsg
285 = (const struct GNUNET_PSYC_MessageHeader *) msg;
286 GNUNET_log (kind,
287 "\tID: %" PRIu64 "\tflags: %x" PRIu32 "\n",
288 GNUNET_ntohll (pmsg->message_id),
289 ntohl (pmsg->flags));
290 break;
291 }
292 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD:
293 {
294 const struct GNUNET_PSYC_MessageMethod *meth
295 = (const struct GNUNET_PSYC_MessageMethod *) msg;
296 GNUNET_log (kind,
297 "\t%.*s\n",
298 (int) (size - sizeof (*meth)),
299 (const char *) &meth[1]);
300 break;
301 }
302 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
303 {
304 const struct GNUNET_PSYC_MessageModifier *mod
305 = (const struct GNUNET_PSYC_MessageModifier *) msg;
306 uint16_t name_size = ntohs (mod->name_size);
307 char oper = ' ' < mod->oper ? mod->oper : ' ';
308 GNUNET_log (kind,
309 "\t%c%.*s\t%.*s\n",
310 oper,
311 (int) name_size,
312 (const char *) &mod[1],
313 (int) (size - sizeof (*mod) - name_size),
314 ((const char *) &mod[1]) + name_size);
315 break;
316 }
317 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
318 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA:
319 GNUNET_log (kind,
320 "\t%.*s\n",
321 (int) (size - sizeof (*msg)),
322 (const char *) &msg[1]);
323 break;
324 }
325}
326
327
328/**** Transmitting messages ****/
329
330
331/**
332 * Create a transmission handle.
333 */
334struct GNUNET_PSYC_TransmitHandle *
335GNUNET_PSYC_transmit_create (struct GNUNET_MQ_Handle *mq)
336{
337 struct GNUNET_PSYC_TransmitHandle *tmit = GNUNET_new (struct GNUNET_PSYC_TransmitHandle);
338
339 tmit->mq = mq;
340 return tmit;
341}
342
343
344/**
345 * Destroy a transmission handle.
346 */
347void
348GNUNET_PSYC_transmit_destroy (struct GNUNET_PSYC_TransmitHandle *tmit)
349{
350 GNUNET_free (tmit);
351}
352
353
354/**
355 * Queue a message part for transmission.
356 *
357 * The message part is added to the current message buffer.
358 * When this buffer is full, it is added to the transmission queue.
359 *
360 * @param tmit
361 * Transmission handle.
362 * @param msg
363 * Message part, or NULL.
364 * @param tmit_now
365 * Transmit message now, or wait for buffer to fill up?
366 * #GNUNET_YES or #GNUNET_NO.
367 */
368static void
369transmit_queue_insert (struct GNUNET_PSYC_TransmitHandle *tmit,
370 const struct GNUNET_MessageHeader *msg,
371 uint8_t tmit_now)
372{
373 uint16_t size = (NULL != msg) ? ntohs (msg->size) : 0;
374
375 LOG (GNUNET_ERROR_TYPE_DEBUG,
376 "Queueing message part of type %u and size %u (tmit_now: %u)).\n",
377 NULL != msg ? ntohs (msg->type) : 0, size, tmit_now);
378
379 if (NULL != tmit->msg)
380 {
381 if (NULL == msg
382 || GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD < tmit->msg->size + size)
383 {
384 /* End of message or buffer is full, add it to transmission queue
385 * and start with empty buffer */
386 tmit->msg->size = htons (tmit->msg->size);
387 GNUNET_MQ_send (tmit->mq, tmit->env);
388 tmit->env = NULL;
389 tmit->msg = NULL;
390 tmit->acks_pending++;
391 }
392 else
393 {
394 /* Message fits in current buffer, append */
395 GNUNET_memcpy ((char *) tmit->msg + tmit->msg->size, msg, size);
396 tmit->msg->size += size;
397 }
398 }
399
400 if (NULL == tmit->msg && NULL != msg)
401 {
402 /* Empty buffer, copy over message. */
403 tmit->env = GNUNET_MQ_msg_extra (tmit->msg,
404 GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD,
405 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE);
406 /* store current message size in host byte order
407 * then later switch it to network byte order before sending */
408 tmit->msg->size = sizeof (*tmit->msg) + size;
409
410 GNUNET_memcpy (&tmit->msg[1], msg, size);
411 }
412
413 if (NULL != tmit->msg
414 && (GNUNET_YES == tmit_now
415 || (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD
416 < tmit->msg->size + sizeof (struct GNUNET_MessageHeader))))
417 {
418 /* End of message or buffer is full, add it to transmission queue. */
419 tmit->msg->size = htons (tmit->msg->size);
420 GNUNET_MQ_send (tmit->mq, tmit->env);
421 tmit->env = NULL;
422 tmit->msg = NULL;
423 tmit->acks_pending++;
424 }
425}
426
427
428/**
429 * Request data from client to transmit.
430 *
431 * @param tmit Transmission handle.
432 */
433static void
434transmit_data (struct GNUNET_PSYC_TransmitHandle *tmit)
435{
436 int notify_ret = GNUNET_YES;
437 uint16_t data_size = 0;
438 char data[GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD] = "";
439 struct GNUNET_MessageHeader *msg = (struct GNUNET_MessageHeader *) data;
440 msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA);
441
442 if (NULL != tmit->notify_data)
443 {
444 data_size = GNUNET_PSYC_DATA_MAX_PAYLOAD;
445 tmit->in_notify = GNUNET_YES;
446 notify_ret = tmit->notify_data (tmit->notify_data_cls, &data_size, &msg[1]);
447 tmit->in_notify = GNUNET_NO;
448 }
449 LOG (GNUNET_ERROR_TYPE_DEBUG,
450 "transmit_data (ret: %d, size: %u): %.*s\n",
451 notify_ret, data_size, data_size, &msg[1]);
452 switch (notify_ret)
453 {
454 case GNUNET_NO:
455 if (0 == data_size)
456 {
457 /* Transmission paused, nothing to send. */
458 tmit->paused = GNUNET_YES;
459 return;
460 }
461 break;
462
463 case GNUNET_YES:
464 tmit->state = GNUNET_PSYC_MESSAGE_STATE_END;
465 break;
466
467 default:
468 LOG (GNUNET_ERROR_TYPE_ERROR,
469 "TransmitNotifyData callback returned error when requesting data.\n");
470
471 tmit->state = GNUNET_PSYC_MESSAGE_STATE_CANCEL;
472 msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL);
473 msg->size = htons (sizeof (*msg));
474 transmit_queue_insert (tmit, msg, GNUNET_YES);
475 tmit->in_transmit = GNUNET_NO;
476 return;
477 }
478
479 if (0 < data_size)
480 {
481 GNUNET_assert (data_size <= GNUNET_PSYC_DATA_MAX_PAYLOAD);
482 msg->size = htons (sizeof (*msg) + data_size);
483 transmit_queue_insert (tmit, msg, !notify_ret);
484 }
485
486 /* End of message. */
487 if (GNUNET_YES == notify_ret)
488 {
489 msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END);
490 msg->size = htons (sizeof (*msg));
491 transmit_queue_insert (tmit, msg, GNUNET_YES);
492 /* FIXME: wait for ACK before setting in_transmit to no */
493 tmit->in_transmit = GNUNET_NO;
494 }
495}
496
497
498/**
499 * Request a modifier from a client to transmit.
500 *
501 * @param tmit Transmission handle.
502 */
503static void
504transmit_mod (struct GNUNET_PSYC_TransmitHandle *tmit)
505{
506 uint16_t max_data_size = 0;
507 uint16_t data_size = 0;
508 char data[GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD] = "";
509 struct GNUNET_MessageHeader *msg = (struct GNUNET_MessageHeader *) data;
510 int notify_ret = GNUNET_YES;
511
512 switch (tmit->state)
513 {
514 case GNUNET_PSYC_MESSAGE_STATE_MODIFIER:
515 {
516 struct GNUNET_PSYC_MessageModifier *mod
517 = (struct GNUNET_PSYC_MessageModifier *) msg;
518 msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER);
519 msg->size = sizeof (struct GNUNET_PSYC_MessageModifier);
520
521 if (NULL != tmit->notify_mod)
522 {
523 max_data_size = GNUNET_PSYC_MODIFIER_MAX_PAYLOAD;
524 data_size = max_data_size;
525 tmit->in_notify = GNUNET_YES;
526 notify_ret = tmit->notify_mod (tmit->notify_mod_cls, &data_size, &mod[1],
527 &mod->oper, &mod->value_size);
528 tmit->in_notify = GNUNET_NO;
529 }
530
531 mod->name_size = strnlen ((char *) &mod[1], data_size) + 1;
532 LOG (GNUNET_ERROR_TYPE_DEBUG,
533 "transmit_mod (ret: %d, size: %u + %u): %.*s\n",
534 notify_ret, mod->name_size, mod->value_size, data_size, &mod[1]);
535 if (mod->name_size < data_size)
536 {
537 tmit->mod_value_remaining
538 = mod->value_size - (data_size - mod->name_size);
539 mod->value_size = htonl (mod->value_size);
540 mod->name_size = htons (mod->name_size);
541 }
542 else if (0 < data_size)
543 {
544 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got invalid modifier name.\n");
545 notify_ret = GNUNET_SYSERR;
546 }
547 break;
548 }
549 case GNUNET_PSYC_MESSAGE_STATE_MOD_CONT:
550 {
551 msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT);
552 msg->size = sizeof (struct GNUNET_MessageHeader);
553
554 if (NULL != tmit->notify_mod)
555 {
556 max_data_size = GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD;
557 data_size = max_data_size;
558 tmit->in_notify = GNUNET_YES;
559 notify_ret = tmit->notify_mod (tmit->notify_mod_cls,
560 &data_size, &msg[1], NULL, NULL);
561 tmit->in_notify = GNUNET_NO;
562 }
563 tmit->mod_value_remaining -= data_size;
564 LOG (GNUNET_ERROR_TYPE_DEBUG,
565 "transmit_mod (ret: %d, size: %u): %.*s\n",
566 notify_ret, data_size, data_size, &msg[1]);
567 break;
568 }
569 default:
570 GNUNET_assert (0);
571 }
572
573 switch (notify_ret)
574 {
575 case GNUNET_NO:
576 if (0 == data_size)
577 { /* Transmission paused, nothing to send. */
578 tmit->paused = GNUNET_YES;
579 return;
580 }
581 tmit->state
582 = (0 == tmit->mod_value_remaining)
583 ? GNUNET_PSYC_MESSAGE_STATE_MODIFIER
584 : GNUNET_PSYC_MESSAGE_STATE_MOD_CONT;
585 break;
586
587 case GNUNET_YES: /* End of modifiers. */
588 GNUNET_assert (0 == tmit->mod_value_remaining);
589 break;
590
591 default:
592 LOG (GNUNET_ERROR_TYPE_ERROR,
593 "TransmitNotifyModifier callback returned with error.\n");
594
595 tmit->state = GNUNET_PSYC_MESSAGE_STATE_CANCEL;
596 msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL);
597 msg->size = htons (sizeof (*msg));
598 transmit_queue_insert (tmit, msg, GNUNET_YES);
599 tmit->in_transmit = GNUNET_NO;
600 return;
601 }
602
603 if (0 < data_size)
604 {
605 GNUNET_assert (data_size <= max_data_size);
606 msg->size = htons (msg->size + data_size);
607 transmit_queue_insert (tmit, msg, GNUNET_NO);
608 }
609
610 if (GNUNET_YES == notify_ret)
611 {
612 tmit->state = GNUNET_PSYC_MESSAGE_STATE_DATA;
613 if (0 == tmit->acks_pending)
614 transmit_data (tmit);
615 }
616 else
617 {
618 transmit_mod (tmit);
619 }
620}
621
622
623int
624transmit_notify_env (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
625 uint32_t *full_value_size)
626
627{
628 struct GNUNET_PSYC_TransmitHandle *tmit = cls;
629 uint16_t name_size = 0;
630 uint32_t value_size = 0;
631 const char *value = NULL;
632
633 if (NULL != oper)
634 { /* New modifier */
635 if (NULL != tmit->mod)
636 tmit->mod = tmit->mod->next;
637 if (NULL == tmit->mod)
638 { /* No more modifiers, continue with data */
639 *data_size = 0;
640 return GNUNET_YES;
641 }
642
643 GNUNET_assert (tmit->mod->value_size < UINT32_MAX);
644 *full_value_size = tmit->mod->value_size;
645 *oper = tmit->mod->oper;
646 name_size = strlen (tmit->mod->name) + 1;
647
648 if (name_size + tmit->mod->value_size <= *data_size)
649 {
650 value_size = tmit->mod->value_size;
651 *data_size = name_size + value_size;
652 }
653 else /* full modifier does not fit in data, continuation needed */
654 {
655 value_size = *data_size - name_size;
656 tmit->mod_value = tmit->mod->value + value_size;
657 }
658
659 GNUNET_memcpy (data, tmit->mod->name, name_size);
660 GNUNET_memcpy ((char *)data + name_size, tmit->mod->value, value_size);
661 return GNUNET_NO;
662 }
663 else
664 { /* Modifier continuation */
665 GNUNET_assert (NULL != tmit->mod_value && 0 < tmit->mod_value_remaining);
666 value = tmit->mod_value;
667 if (tmit->mod_value_remaining <= *data_size)
668 {
669 value_size = tmit->mod_value_remaining;
670 tmit->mod_value = NULL;
671 }
672 else
673 {
674 value_size = *data_size;
675 tmit->mod_value += value_size;
676 }
677
678 if (*data_size < value_size)
679 {
680 LOG (GNUNET_ERROR_TYPE_DEBUG,
681 "Value in environment larger than buffer: %u < %zu\n",
682 *data_size, value_size);
683 *data_size = 0;
684 return GNUNET_NO;
685 }
686
687 *data_size = value_size;
688 GNUNET_memcpy (data, value, value_size);
689 return (NULL == tmit->mod_value) ? GNUNET_YES : GNUNET_NO;
690 }
691}
692
693
694/**
695 * Transmit a message.
696 *
697 * @param tmit
698 * Transmission handle.
699 * @param method_name
700 * Which method should be invoked.
701 * @param env
702 * Environment for the message.
703 * Should stay available until the first call to notify_data.
704 * Can be NULL if there are no modifiers or @a notify_mod is
705 * provided instead.
706 * @param notify_mod
707 * Function to call to obtain modifiers.
708 * Can be NULL if there are no modifiers or @a env is provided instead.
709 * @param notify_data
710 * Function to call to obtain fragments of the data.
711 * @param notify_cls
712 * Closure for @a notify_mod and @a notify_data.
713 * @param flags
714 * Flags for the message being transmitted.
715 *
716 * @return #GNUNET_OK if the transmission was started.
717 * #GNUNET_SYSERR if another transmission is already going on.
718 */
719int
720GNUNET_PSYC_transmit_message (struct GNUNET_PSYC_TransmitHandle *tmit,
721 const char *method_name,
722 const struct GNUNET_PSYC_Environment *env,
723 GNUNET_PSYC_TransmitNotifyModifier notify_mod,
724 GNUNET_PSYC_TransmitNotifyData notify_data,
725 void *notify_cls,
726 uint32_t flags)
727{
728 if (GNUNET_NO != tmit->in_transmit)
729 return GNUNET_SYSERR;
730 tmit->in_transmit = GNUNET_YES;
731
732 size_t size = strlen (method_name) + 1;
733 struct GNUNET_PSYC_MessageMethod *pmeth;
734
735 tmit->env = GNUNET_MQ_msg_extra (tmit->msg,
736 GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD,
737 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE);
738 /* store current message size in host byte order
739 * then later switch it to network byte order before sending */
740 tmit->msg->size = sizeof (*tmit->msg) + sizeof (*pmeth) + size;
741
742 if (NULL != notify_mod)
743 {
744 tmit->notify_mod = notify_mod;
745 tmit->notify_mod_cls = notify_cls;
746 }
747 else
748 {
749 tmit->notify_mod = &transmit_notify_env;
750 tmit->notify_mod_cls = tmit;
751 if (NULL != env)
752 {
753 struct GNUNET_PSYC_Modifier mod = {};
754 mod.next = GNUNET_PSYC_env_head (env);
755 tmit->mod = &mod;
756
757 struct GNUNET_PSYC_Modifier *m = tmit->mod;
758 while (NULL != (m = m->next))
759 {
760 if (m->oper != GNUNET_PSYC_OP_SET)
761 flags |= GNUNET_PSYC_MASTER_TRANSMIT_STATE_MODIFY;
762 }
763 }
764 else
765 {
766 tmit->mod = NULL;
767 }
768 }
769
770 pmeth = (struct GNUNET_PSYC_MessageMethod *) &tmit->msg[1];
771 pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD);
772 pmeth->header.size = htons (sizeof (*pmeth) + size);
773 pmeth->flags = htonl (flags);
774 GNUNET_memcpy (&pmeth[1], method_name, size);
775
776 tmit->state = GNUNET_PSYC_MESSAGE_STATE_MODIFIER;
777 tmit->notify_data = notify_data;
778 tmit->notify_data_cls = notify_cls;
779
780 transmit_mod (tmit);
781 return GNUNET_OK;
782}
783
784
785/**
786 * Resume transmission.
787 *
788 * @param tmit Transmission handle.
789 */
790void
791GNUNET_PSYC_transmit_resume (struct GNUNET_PSYC_TransmitHandle *tmit)
792{
793 if (GNUNET_YES != tmit->in_transmit || GNUNET_NO != tmit->in_notify)
794 return;
795
796 if (0 == tmit->acks_pending)
797 {
798 tmit->paused = GNUNET_NO;
799 transmit_data (tmit);
800 }
801}
802
803
804/**
805 * Abort transmission request.
806 *
807 * @param tmit Transmission handle.
808 */
809void
810GNUNET_PSYC_transmit_cancel (struct GNUNET_PSYC_TransmitHandle *tmit)
811{
812 if (GNUNET_NO == tmit->in_transmit)
813 return;
814
815 tmit->state = GNUNET_PSYC_MESSAGE_STATE_CANCEL;
816 tmit->in_transmit = GNUNET_NO;
817 tmit->paused = GNUNET_NO;
818
819 /* FIXME */
820 struct GNUNET_MessageHeader msg;
821 msg.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL);
822 msg.size = htons (sizeof (msg));
823 transmit_queue_insert (tmit, &msg, GNUNET_YES);
824}
825
826
827/**
828 * Got acknowledgement of a transmitted message part, continue transmission.
829 *
830 * @param tmit Transmission handle.
831 */
832void
833GNUNET_PSYC_transmit_got_ack (struct GNUNET_PSYC_TransmitHandle *tmit)
834{
835 if (0 == tmit->acks_pending)
836 {
837 LOG (GNUNET_ERROR_TYPE_WARNING, "Ignoring extraneous message ACK\n");
838 GNUNET_break (0);
839 return;
840 }
841 tmit->acks_pending--;
842
843 if (GNUNET_YES == tmit->paused)
844 return;
845
846 switch (tmit->state)
847 {
848 case GNUNET_PSYC_MESSAGE_STATE_MODIFIER:
849 case GNUNET_PSYC_MESSAGE_STATE_MOD_CONT:
850 transmit_mod (tmit);
851 break;
852
853 case GNUNET_PSYC_MESSAGE_STATE_DATA:
854 transmit_data (tmit);
855 break;
856
857 case GNUNET_PSYC_MESSAGE_STATE_END:
858 case GNUNET_PSYC_MESSAGE_STATE_CANCEL:
859 break;
860
861 default:
862 LOG (GNUNET_ERROR_TYPE_DEBUG,
863 "Ignoring message ACK in state %u.\n", tmit->state);
864 }
865}
866
867
868/**** Receiving messages ****/
869
870
871/**
872 * Create handle for receiving messages.
873 */
874struct GNUNET_PSYC_ReceiveHandle *
875GNUNET_PSYC_receive_create (GNUNET_PSYC_MessageCallback message_cb,
876 GNUNET_PSYC_MessagePartCallback message_part_cb,
877 void *cb_cls)
878{
879 struct GNUNET_PSYC_ReceiveHandle *recv = GNUNET_malloc (sizeof (*recv));
880 recv->message_cb = message_cb;
881 recv->message_part_cb = message_part_cb;
882 recv->cb_cls = cb_cls;
883 return recv;
884}
885
886
887/**
888 * Destroy handle for receiving messages.
889 */
890void
891GNUNET_PSYC_receive_destroy (struct GNUNET_PSYC_ReceiveHandle *recv)
892{
893 GNUNET_free (recv);
894}
895
896
897/**
898 * Reset stored data related to the last received message.
899 */
900void
901GNUNET_PSYC_receive_reset (struct GNUNET_PSYC_ReceiveHandle *recv)
902{
903 recv->state = GNUNET_PSYC_MESSAGE_STATE_START;
904 recv->flags = 0;
905 recv->message_id = 0;
906 recv->mod_value_size = 0;
907 recv->mod_value_size_expected = 0;
908}
909
910
911static void
912recv_error (struct GNUNET_PSYC_ReceiveHandle *recv)
913{
914 if (NULL != recv->message_part_cb)
915 recv->message_part_cb (recv->cb_cls, NULL, NULL);
916
917 if (NULL != recv->message_cb)
918 recv->message_cb (recv->cb_cls, NULL);
919
920 GNUNET_PSYC_receive_reset (recv);
921}
922
923
924/**
925 * Handle incoming PSYC message.
926 *
927 * @param recv Receive handle.
928 * @param msg The message.
929 *
930 * @return #GNUNET_OK on success,
931 * #GNUNET_SYSERR on receive error.
932 */
933int
934GNUNET_PSYC_receive_message (struct GNUNET_PSYC_ReceiveHandle *recv,
935 const struct GNUNET_PSYC_MessageHeader *msg)
936{
937 uint16_t size = ntohs (msg->header.size);
938 uint32_t flags = ntohl (msg->flags);
939
940 GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG,
941 (struct GNUNET_MessageHeader *) msg);
942
943 if (GNUNET_PSYC_MESSAGE_STATE_START == recv->state)
944 {
945 recv->message_id = GNUNET_ntohll (msg->message_id);
946 recv->flags = flags;
947 recv->slave_pub_key = msg->slave_pub_key;
948 recv->mod_value_size = 0;
949 recv->mod_value_size_expected = 0;
950 }
951 else if (GNUNET_ntohll (msg->message_id) != recv->message_id)
952 {
953 // FIXME
954 LOG (GNUNET_ERROR_TYPE_WARNING,
955 "Unexpected message ID. Got: %" PRIu64 ", expected: %" PRIu64 "\n",
956 GNUNET_ntohll (msg->message_id), recv->message_id);
957 GNUNET_break_op (0);
958 recv_error (recv);
959 return GNUNET_SYSERR;
960 }
961 else if (flags != recv->flags)
962 {
963 LOG (GNUNET_ERROR_TYPE_WARNING,
964 "Unexpected message flags. Got: %lu, expected: %lu\n",
965 flags, recv->flags);
966 GNUNET_break_op (0);
967 recv_error (recv);
968 return GNUNET_SYSERR;
969 }
970
971 uint16_t pos = 0, psize = 0, ptype, size_eq, size_min;
972
973 for (pos = 0; sizeof (*msg) + pos < size; pos += psize)
974 {
975 const struct GNUNET_MessageHeader *pmsg
976 = (const struct GNUNET_MessageHeader *) ((char *) &msg[1] + pos);
977 psize = ntohs (pmsg->size);
978 ptype = ntohs (pmsg->type);
979 size_eq = size_min = 0;
980
981 if (psize < sizeof (*pmsg) || sizeof (*msg) + pos + psize > size)
982 {
983 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
984 "Dropping message of type %u with invalid size %u.\n",
985 ptype, psize);
986 recv_error (recv);
987 return GNUNET_SYSERR;
988 }
989
990 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
991 "Received message part of type %u and size %u from PSYC.\n",
992 ptype, psize);
993 GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG, pmsg);
994
995 switch (ptype)
996 {
997 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD:
998 size_min = sizeof (struct GNUNET_PSYC_MessageMethod);
999 break;
1000 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
1001 size_min = sizeof (struct GNUNET_PSYC_MessageModifier);
1002 break;
1003 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
1004 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA:
1005 size_min = sizeof (struct GNUNET_MessageHeader);
1006 break;
1007 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
1008 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
1009 size_eq = sizeof (struct GNUNET_MessageHeader);
1010 break;
1011 default:
1012 GNUNET_break_op (0);
1013 recv_error (recv);
1014 return GNUNET_SYSERR;
1015 }
1016
1017 if (! ((0 < size_eq && psize == size_eq)
1018 || (0 < size_min && size_min <= psize)))
1019 {
1020 GNUNET_break_op (0);
1021 recv_error (recv);
1022 return GNUNET_SYSERR;
1023 }
1024
1025 switch (ptype)
1026 {
1027 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD:
1028 {
1029 struct GNUNET_PSYC_MessageMethod *meth
1030 = (struct GNUNET_PSYC_MessageMethod *) pmsg;
1031
1032 if (GNUNET_PSYC_MESSAGE_STATE_START != recv->state)
1033 {
1034 LOG (GNUNET_ERROR_TYPE_WARNING,
1035 "Dropping out of order message method (%u).\n",
1036 recv->state);
1037 /* It is normal to receive an incomplete message right after connecting,
1038 * but should not happen later.
1039 * FIXME: add a check for this condition.
1040 */
1041 GNUNET_break_op (0);
1042 recv_error (recv);
1043 return GNUNET_SYSERR;
1044 }
1045
1046 if ('\0' != *((char *) meth + psize - 1))
1047 {
1048 LOG (GNUNET_ERROR_TYPE_WARNING,
1049 "Dropping message with malformed method. "
1050 "Message ID: %" PRIu64 "\n", recv->message_id);
1051 GNUNET_break_op (0);
1052 recv_error (recv);
1053 return GNUNET_SYSERR;
1054 }
1055 recv->state = GNUNET_PSYC_MESSAGE_STATE_METHOD;
1056 break;
1057 }
1058 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
1059 {
1060 if (!(GNUNET_PSYC_MESSAGE_STATE_METHOD == recv->state
1061 || GNUNET_PSYC_MESSAGE_STATE_MODIFIER == recv->state
1062 || GNUNET_PSYC_MESSAGE_STATE_MOD_CONT == recv->state))
1063 {
1064 LOG (GNUNET_ERROR_TYPE_WARNING,
1065 "Dropping out of order message modifier (%u).\n",
1066 recv->state);
1067 GNUNET_break_op (0);
1068 recv_error (recv);
1069 return GNUNET_SYSERR;
1070 }
1071
1072 struct GNUNET_PSYC_MessageModifier *mod
1073 = (struct GNUNET_PSYC_MessageModifier *) pmsg;
1074
1075 uint16_t name_size = ntohs (mod->name_size);
1076 recv->mod_value_size_expected = ntohl (mod->value_size);
1077 recv->mod_value_size = psize - sizeof (*mod) - name_size;
1078
1079 if (psize < sizeof (*mod) + name_size
1080 || '\0' != *((char *) &mod[1] + name_size - 1)
1081 || recv->mod_value_size_expected < recv->mod_value_size)
1082 {
1083 LOG (GNUNET_ERROR_TYPE_WARNING, "Dropping malformed modifier.\n");
1084 GNUNET_break_op (0);
1085 recv_error (recv);
1086 return GNUNET_SYSERR;
1087 }
1088 recv->state = GNUNET_PSYC_MESSAGE_STATE_MODIFIER;
1089 break;
1090 }
1091 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
1092 {
1093 recv->mod_value_size += psize - sizeof (*pmsg);
1094
1095 if (!(GNUNET_PSYC_MESSAGE_STATE_MODIFIER == recv->state
1096 || GNUNET_PSYC_MESSAGE_STATE_MOD_CONT == recv->state)
1097 || recv->mod_value_size_expected < recv->mod_value_size)
1098 {
1099 LOG (GNUNET_ERROR_TYPE_WARNING,
1100 "Dropping out of order message modifier continuation "
1101 "!(%u == %u || %u == %u) || %lu < %lu.\n",
1102 GNUNET_PSYC_MESSAGE_STATE_MODIFIER, recv->state,
1103 GNUNET_PSYC_MESSAGE_STATE_MOD_CONT, recv->state,
1104 recv->mod_value_size_expected, recv->mod_value_size);
1105 GNUNET_break_op (0);
1106 recv_error (recv);
1107 return GNUNET_SYSERR;
1108 }
1109 break;
1110 }
1111 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA:
1112 {
1113 if (recv->state < GNUNET_PSYC_MESSAGE_STATE_METHOD
1114 || recv->mod_value_size_expected != recv->mod_value_size)
1115 {
1116 LOG (GNUNET_ERROR_TYPE_WARNING,
1117 "Dropping out of order message data fragment "
1118 "(%u < %u || %lu != %lu).\n",
1119 recv->state, GNUNET_PSYC_MESSAGE_STATE_METHOD,
1120 recv->mod_value_size_expected, recv->mod_value_size);
1121
1122 GNUNET_break_op (0);
1123 recv_error (recv);
1124 return GNUNET_SYSERR;
1125 }
1126 recv->state = GNUNET_PSYC_MESSAGE_STATE_DATA;
1127 break;
1128 }
1129 }
1130
1131 if (NULL != recv->message_part_cb)
1132 recv->message_part_cb (recv->cb_cls, msg, pmsg);
1133
1134 switch (ptype)
1135 {
1136 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
1137 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
1138 GNUNET_PSYC_receive_reset (recv);
1139 break;
1140 }
1141 }
1142
1143 if (NULL != recv->message_cb)
1144 recv->message_cb (recv->cb_cls, msg);
1145 return GNUNET_OK;
1146}
1147
1148
1149/**
1150 * Check if @a data contains a series of valid message parts.
1151 *
1152 * @param data_size Size of @a data.
1153 * @param data Data.
1154 * @param[out] first_ptype Type of first message part.
1155 * @param[out] last_ptype Type of last message part.
1156 *
1157 * @return Number of message parts found in @a data.
1158 * or GNUNET_SYSERR if the message contains invalid parts.
1159 */
1160int
1161GNUNET_PSYC_receive_check_parts (uint16_t data_size, const char *data,
1162 uint16_t *first_ptype, uint16_t *last_ptype)
1163{
1164 const struct GNUNET_MessageHeader *pmsg;
1165 uint16_t parts = 0, ptype = 0, psize = 0, pos = 0;
1166 if (NULL != first_ptype)
1167 *first_ptype = 0;
1168 if (NULL != last_ptype)
1169 *last_ptype = 0;
1170
1171 for (pos = 0; pos < data_size; pos += psize, parts++)
1172 {
1173 pmsg = (const struct GNUNET_MessageHeader *) (data + pos);
1174 GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG, pmsg);
1175 psize = ntohs (pmsg->size);
1176 ptype = ntohs (pmsg->type);
1177 if (0 == parts && NULL != first_ptype)
1178 *first_ptype = ptype;
1179 if (NULL != last_ptype
1180 && *last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END)
1181 *last_ptype = ptype;
1182 if (psize < sizeof (*pmsg)
1183 || pos + psize > data_size
1184 || ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD
1185 || GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL < ptype)
1186 {
1187 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
1188 "Invalid message part of type %u and size %u.\n",
1189 ptype, psize);
1190 return GNUNET_SYSERR;
1191 }
1192 /** @todo FIXME: check message part order */
1193 }
1194 return parts;
1195}
1196
1197
1198struct ParseMessageClosure
1199{
1200 struct GNUNET_PSYC_Environment *env;
1201 const char **method_name;
1202 const void **data;
1203 uint16_t *data_size;
1204 enum GNUNET_PSYC_MessageState msg_state;
1205};
1206
1207
1208static void
1209parse_message_part_cb (void *cls,
1210 const struct GNUNET_PSYC_MessageHeader *msg,
1211 const struct GNUNET_MessageHeader *pmsg)
1212{
1213 struct ParseMessageClosure *pmc = cls;
1214 if (NULL == pmsg)
1215 {
1216 pmc->msg_state = GNUNET_PSYC_MESSAGE_STATE_ERROR;
1217 return;
1218 }
1219
1220 switch (ntohs (pmsg->type))
1221 {
1222 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD:
1223 {
1224 struct GNUNET_PSYC_MessageMethod *
1225 pmeth = (struct GNUNET_PSYC_MessageMethod *) pmsg;
1226 *pmc->method_name = (const char *) &pmeth[1];
1227 pmc->msg_state = GNUNET_PSYC_MESSAGE_STATE_METHOD;
1228 break;
1229 }
1230
1231 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
1232 {
1233 struct GNUNET_PSYC_MessageModifier *
1234 pmod = (struct GNUNET_PSYC_MessageModifier *) pmsg;
1235
1236 const char *name = (const char *) &pmod[1];
1237 const void *value = name + ntohs (pmod->name_size);
1238 GNUNET_PSYC_env_add (pmc->env, pmod->oper, name, value,
1239 ntohl (pmod->value_size));
1240 pmc->msg_state = GNUNET_PSYC_MESSAGE_STATE_MODIFIER;
1241 break;
1242 }
1243
1244 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA:
1245 *pmc->data = &pmsg[1];
1246 *pmc->data_size = ntohs (pmsg->size) - sizeof (*pmsg);
1247 pmc->msg_state = GNUNET_PSYC_MESSAGE_STATE_DATA;
1248 break;
1249
1250 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
1251 pmc->msg_state = GNUNET_PSYC_MESSAGE_STATE_END;
1252 break;
1253
1254 default:
1255 pmc->msg_state = GNUNET_PSYC_MESSAGE_STATE_ERROR;
1256 }
1257}
1258
1259
1260/**
1261 * Parse PSYC message.
1262 *
1263 * @param msg
1264 * The PSYC message to parse.
1265 * @param[out] method_name
1266 * Pointer to the method name inside @a pmsg.
1267 * @param env
1268 * The environment for the message with a list of modifiers.
1269 * @param[out] data
1270 * Pointer to data inside @a msg.
1271 * @param[out] data_size
1272 * Size of @data is written here.
1273 *
1274 * @return #GNUNET_OK on success,
1275 * #GNUNET_SYSERR on parse error.
1276 */
1277int
1278GNUNET_PSYC_message_parse (const struct GNUNET_PSYC_MessageHeader *msg,
1279 const char **method_name,
1280 struct GNUNET_PSYC_Environment *env,
1281 const void **data,
1282 uint16_t *data_size)
1283{
1284 struct ParseMessageClosure cls;
1285 cls.env = env;
1286 cls.method_name = method_name;
1287 cls.data = data;
1288 cls.data_size = data_size;
1289
1290 struct GNUNET_PSYC_ReceiveHandle *
1291 recv = GNUNET_PSYC_receive_create (NULL, parse_message_part_cb, &cls);
1292 int ret = GNUNET_PSYC_receive_message (recv, msg);
1293 GNUNET_PSYC_receive_destroy (recv);
1294
1295 if (GNUNET_OK != ret)
1296 return GNUNET_SYSERR;
1297
1298 return (GNUNET_PSYC_MESSAGE_STATE_END == cls.msg_state)
1299 ? GNUNET_OK
1300 : GNUNET_NO;
1301}
1302
1303
1304/**
1305 * Initialize PSYC message header.
1306 */
1307void
1308GNUNET_PSYC_message_header_init (struct GNUNET_PSYC_MessageHeader *pmsg,
1309 const struct GNUNET_MULTICAST_MessageHeader *mmsg,
1310 uint32_t flags)
1311{
1312 uint16_t size = ntohs (mmsg->header.size);
1313 uint16_t psize = sizeof (*pmsg) + size - sizeof (*mmsg);
1314
1315 pmsg->header.size = htons (psize);
1316 pmsg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE);
1317 pmsg->message_id = mmsg->message_id;
1318 pmsg->fragment_offset = mmsg->fragment_offset;
1319 pmsg->flags = htonl (flags);
1320
1321 GNUNET_memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg));
1322}
1323
1324
1325/**
1326 * Create a new PSYC message header from a multicast message.
1327 */
1328struct GNUNET_PSYC_MessageHeader *
1329GNUNET_PSYC_message_header_create (const struct GNUNET_MULTICAST_MessageHeader *mmsg,
1330 uint32_t flags)
1331{
1332 struct GNUNET_PSYC_MessageHeader *pmsg;
1333 uint16_t size = ntohs (mmsg->header.size);
1334 uint16_t psize = sizeof (*pmsg) + size - sizeof (*mmsg);
1335
1336 pmsg = GNUNET_malloc (psize);
1337 GNUNET_PSYC_message_header_init (pmsg, mmsg, flags);
1338 return pmsg;
1339}
1340
1341
1342/**
1343 * Create a new PSYC message header from a PSYC message.
1344 */
1345struct GNUNET_PSYC_MessageHeader *
1346GNUNET_PSYC_message_header_create_from_psyc (const struct GNUNET_PSYC_Message *msg)
1347{
1348 uint16_t msg_size = ntohs (msg->header.size);
1349 struct GNUNET_PSYC_MessageHeader *
1350 pmsg = GNUNET_malloc (sizeof (*pmsg) + msg_size - sizeof (*msg));
1351 pmsg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE);
1352 pmsg->header.size = htons (sizeof (*pmsg) + msg_size - sizeof (*msg));
1353 GNUNET_memcpy (&pmsg[1], &msg[1], msg_size - sizeof (*msg));
1354 return pmsg;
1355}
diff --git a/src/psycutil/psyc_slicer.c b/src/psycutil/psyc_slicer.c
deleted file mode 100644
index 9b25d8a4b..000000000
--- a/src/psycutil/psyc_slicer.c
+++ /dev/null
@@ -1,711 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Gabor X Toth
23 *
24 * @file
25 * PSYC Slicer API
26 */
27
28#include <inttypes.h>
29
30#include "platform.h"
31#include "gnunet_util_lib.h"
32#include "gnunet_psyc_util_lib.h"
33
34#define LOG(kind,...) GNUNET_log_from (kind, "psyc-util-slicer",__VA_ARGS__)
35
36
37/**
38 * Handle for a try-and-slice instance.
39 */
40struct GNUNET_PSYC_Slicer
41{
42 /**
43 * Method handlers: H(method_name) -> SlicerMethodCallbacks
44 */
45 struct GNUNET_CONTAINER_MultiHashMap *method_handlers;
46
47 /**
48 * Modifier handlers: H(modifier_name) -> SlicerModifierCallbacks
49 */
50 struct GNUNET_CONTAINER_MultiHashMap *modifier_handlers;
51
52 /**
53 * Receive handle for incoming messages.
54 */
55 struct GNUNET_PSYC_ReceiveHandle *recv;
56
57 /**
58 * Currently being processed message.
59 */
60 const struct GNUNET_PSYC_MessageHeader *msg;
61
62 /**
63 * Currently being processed message part.
64 */
65 const struct GNUNET_MessageHeader *pmsg;
66
67 /**
68 * ID of currently being received message.
69 */
70 uint64_t message_id;
71
72 /**
73 * Fragment offset of currently being received message.
74 */
75 uint64_t fragment_offset;
76
77 /**
78 * Flags of currently being received message.
79 */
80 uint32_t flags;
81
82 /**
83 * Method name of currently being received message.
84 */
85 char *method_name;
86
87 /**
88 * Name of currently processed modifier.
89 */
90 char *mod_name;
91
92 /**
93 * Value of currently processed modifier.
94 */
95 char *mod_value;
96
97 /**
98 * Public key of the nym the current message originates from.
99 */
100 struct GNUNET_CRYPTO_EcdsaPublicKey nym_pub_key;
101
102 /**
103 * Size of @a method_name (including terminating \0).
104 */
105 uint16_t method_name_size;
106
107 /**
108 * Size of @a modifier_name (including terminating \0).
109 */
110 uint16_t mod_name_size;
111
112 /**
113 * Size of modifier value fragment.
114 */
115 uint16_t mod_value_size;
116
117 /**
118 * Full size of modifier value.
119 */
120 uint16_t mod_full_value_size;
121
122 /**
123 * Remaining bytes from the value of the current modifier.
124 */
125 uint16_t mod_value_remaining;
126
127 /**
128 * Operator of currently processed modifier.
129 */
130 uint8_t mod_oper;
131};
132
133
134/**
135 * Callbacks for a slicer method handler.
136 */
137struct SlicerMethodCallbacks
138{
139 GNUNET_PSYC_MessageCallback msg_cb;
140 GNUNET_PSYC_MethodCallback method_cb;
141 GNUNET_PSYC_ModifierCallback modifier_cb;
142 GNUNET_PSYC_DataCallback data_cb;
143 GNUNET_PSYC_EndOfMessageCallback eom_cb;
144 void *cls;
145};
146
147
148struct SlicerMethodRemoveClosure
149{
150 struct GNUNET_PSYC_Slicer *slicer;
151 struct SlicerMethodCallbacks rm_cbs;
152};
153
154
155/**
156 * Callbacks for a slicer method handler.
157 */
158struct SlicerModifierCallbacks
159{
160 GNUNET_PSYC_ModifierCallback modifier_cb;
161 void *cls;
162};
163
164
165struct SlicerModifierRemoveClosure
166{
167 struct GNUNET_PSYC_Slicer *slicer;
168 struct SlicerModifierCallbacks rm_cbs;
169};
170
171
172/**
173 * Call a method handler for an incoming message part.
174 */
175static int
176slicer_method_handler_notify (void *cls, const struct GNUNET_HashCode *key,
177 void *value)
178{
179 struct GNUNET_PSYC_Slicer *slicer = cls;
180 const struct GNUNET_MessageHeader *pmsg = slicer->pmsg;
181 struct SlicerMethodCallbacks *cbs = value;
182
183 uint16_t ptype = ntohs (pmsg->type);
184 switch (ptype)
185 {
186 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD:
187 {
188 if (NULL != cbs->msg_cb)
189 cbs->msg_cb (cbs->cls, slicer->msg);
190 if (NULL == cbs->method_cb)
191 break;
192 struct GNUNET_PSYC_MessageMethod *
193 meth = (struct GNUNET_PSYC_MessageMethod *) pmsg;
194 cbs->method_cb (cbs->cls, slicer->msg, meth, slicer->message_id,
195 slicer->method_name);
196 break;
197 }
198
199 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
200 {
201 if (NULL == cbs->modifier_cb)
202 break;
203 struct GNUNET_PSYC_MessageModifier *
204 mod = (struct GNUNET_PSYC_MessageModifier *) pmsg;
205 cbs->modifier_cb (cbs->cls, slicer->msg, &mod->header, slicer->message_id,
206 mod->oper, (const char *) &mod[1],
207 (const void *) &mod[1] + ntohs (mod->name_size),
208 ntohs (mod->header.size) - sizeof (*mod) - ntohs (mod->name_size),
209 ntohs (mod->value_size));
210 break;
211 }
212
213 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
214 {
215 if (NULL == cbs->modifier_cb)
216 break;
217 cbs->modifier_cb (cbs->cls, slicer->msg, pmsg, slicer->message_id,
218 slicer->mod_oper, slicer->mod_name, &pmsg[1],
219 ntohs (pmsg->size) - sizeof (*pmsg),
220 slicer->mod_full_value_size);
221 break;
222 }
223
224 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA:
225 {
226 if (NULL == cbs->data_cb)
227 break;
228 cbs->data_cb (cbs->cls, slicer->msg, pmsg, slicer->message_id,
229 &pmsg[1], ntohs (pmsg->size) - sizeof (*pmsg));
230 break;
231 }
232
233 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
234 if (NULL == cbs->eom_cb)
235 break;
236 cbs->eom_cb (cbs->cls, slicer->msg, pmsg, slicer->message_id, GNUNET_NO);
237 break;
238
239 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
240 if (NULL == cbs->eom_cb)
241 break;
242 cbs->eom_cb (cbs->cls, slicer->msg, pmsg, slicer->message_id, GNUNET_YES);
243 break;
244 }
245 return GNUNET_YES;
246}
247
248
249/**
250 * Call a method handler for an incoming message part.
251 */
252static int
253slicer_modifier_handler_notify (void *cls, const struct GNUNET_HashCode *key,
254 void *value)
255{
256 struct GNUNET_PSYC_Slicer *slicer = cls;
257 struct SlicerModifierCallbacks *cbs = value;
258
259 cbs->modifier_cb (cbs->cls, slicer->msg, slicer->pmsg, slicer->message_id,
260 slicer->mod_oper, slicer->mod_name, slicer->mod_value,
261 slicer->mod_value_size, slicer->mod_full_value_size);
262 return GNUNET_YES;
263}
264
265
266/**
267 * Process an incoming message and call matching handlers.
268 *
269 * @param slicer
270 * The slicer to use.
271 * @param msg
272 * The message as it arrived from the network.
273 */
274void
275GNUNET_PSYC_slicer_message (struct GNUNET_PSYC_Slicer *slicer,
276 const struct GNUNET_PSYC_MessageHeader *msg)
277{
278 GNUNET_PSYC_receive_message (slicer->recv, msg);
279}
280
281
282/**
283 * Process an incoming message part and call matching handlers.
284 *
285 * @param cls
286 * Closure.
287 * @param message_id
288 * ID of the message.
289 * @param flags
290 * Flags for the message.
291 * @see enum GNUNET_PSYC_MessageFlags
292 * @param msg
293 * The message part. as it arrived from the network.
294 */
295void
296GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer,
297 const struct GNUNET_PSYC_MessageHeader *msg,
298 const struct GNUNET_MessageHeader *pmsg)
299{
300 slicer->msg = msg;
301 slicer->pmsg = pmsg;
302
303 uint64_t message_id = GNUNET_ntohll (msg->message_id);
304
305 uint16_t ptype = ntohs (pmsg->type);
306 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == ptype)
307 {
308 struct GNUNET_PSYC_MessageMethod *
309 meth = (struct GNUNET_PSYC_MessageMethod *) pmsg;
310 slicer->method_name_size = ntohs (meth->header.size) - sizeof (*meth);
311 slicer->method_name = GNUNET_malloc (slicer->method_name_size);
312 GNUNET_memcpy (slicer->method_name, &meth[1], slicer->method_name_size);
313 slicer->message_id = message_id;
314 }
315 else
316 {
317 GNUNET_assert (message_id == slicer->message_id);
318 }
319
320 char *nym_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&msg->slave_pub_key);
321 LOG (GNUNET_ERROR_TYPE_DEBUG,
322 "Slicer received message of type %u and size %u, "
323 "with ID %" PRIu64 " and method %s from %s\n",
324 ptype, ntohs (pmsg->size), message_id, slicer->method_name, nym_str);
325 GNUNET_free (nym_str);
326
327 /* try-and-slice modifier */
328
329 switch (ptype)
330 {
331 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
332 {
333 struct GNUNET_PSYC_MessageModifier *
334 mod = (struct GNUNET_PSYC_MessageModifier *) pmsg;
335 slicer->mod_oper = mod->oper;
336 slicer->mod_name_size = ntohs (mod->name_size);
337 slicer->mod_name = GNUNET_malloc (slicer->mod_name_size);
338 GNUNET_memcpy (slicer->mod_name, &mod[1], slicer->mod_name_size);
339 slicer->mod_value = (char *) &mod[1] + slicer->mod_name_size;
340 slicer->mod_full_value_size = ntohs (mod->value_size);
341 slicer->mod_value_remaining = slicer->mod_full_value_size;
342 slicer->mod_value_size
343 = ntohs (mod->header.size) - sizeof (*mod) - slicer->mod_name_size;
344 // fall through
345 }
346 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
347 if (ptype == GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT)
348 {
349 slicer->mod_value = (char *) &pmsg[1];
350 slicer->mod_value_size = ntohs (pmsg->size) - sizeof (*pmsg);
351 }
352 slicer->mod_value_remaining -= slicer->mod_value_size;
353 char *name = GNUNET_malloc (slicer->mod_name_size);
354 GNUNET_memcpy (name, slicer->mod_name, slicer->mod_name_size);
355 do
356 {
357 struct GNUNET_HashCode key;
358 uint16_t name_len = strlen (name);
359 GNUNET_CRYPTO_hash (name, name_len, &key);
360 GNUNET_CONTAINER_multihashmap_get_multiple (slicer->modifier_handlers, &key,
361 slicer_modifier_handler_notify,
362 slicer);
363 char *p = strrchr (name, '_');
364 if (NULL == p)
365 break;
366 *p = '\0';
367 } while (1);
368 GNUNET_free (name);
369 }
370
371 /* try-and-slice method */
372
373 char *name = GNUNET_malloc (slicer->method_name_size);
374 GNUNET_memcpy (name, slicer->method_name, slicer->method_name_size);
375 do
376 {
377 struct GNUNET_HashCode key;
378 uint16_t name_len = strlen (name);
379 GNUNET_CRYPTO_hash (name, name_len, &key);
380 GNUNET_CONTAINER_multihashmap_get_multiple (slicer->method_handlers, &key,
381 slicer_method_handler_notify,
382 slicer);
383 char *p = strrchr (name, '_');
384 if (NULL == p)
385 break;
386 *p = '\0';
387 } while (1);
388 GNUNET_free (name);
389
390 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END <= ptype)
391 GNUNET_free (slicer->method_name);
392
393 if (0 == slicer->mod_value_remaining && NULL != slicer->mod_name)
394 {
395 GNUNET_free (slicer->mod_name);
396 slicer->mod_name = NULL;
397 slicer->mod_name_size = 0;
398 slicer->mod_value_size = 0;
399 slicer->mod_full_value_size = 0;
400 slicer->mod_oper = 0;
401 }
402
403 slicer->msg = NULL;
404 slicer->pmsg = NULL;
405}
406
407
408/**
409 * Create a try-and-slice instance.
410 *
411 * A slicer processes incoming messages and notifies callbacks about matching
412 * methods or modifiers encountered.
413 *
414 * @return A new try-and-slice construct.
415 */
416struct GNUNET_PSYC_Slicer *
417GNUNET_PSYC_slicer_create (void)
418{
419 struct GNUNET_PSYC_Slicer *slicer = GNUNET_malloc (sizeof (*slicer));
420 slicer->method_handlers = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
421 slicer->modifier_handlers = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
422 slicer->recv = GNUNET_PSYC_receive_create (NULL,
423 (GNUNET_PSYC_MessagePartCallback)
424 GNUNET_PSYC_slicer_message_part,
425 slicer);
426 return slicer;
427}
428
429
430/**
431 * Add a method to the try-and-slice instance.
432 *
433 * The callbacks are called for messages with a matching @a method_name prefix.
434 *
435 * @param slicer
436 * The try-and-slice instance to extend.
437 * @param method_name
438 * Name of the given method, use empty string to match all.
439 * @param method_cb
440 * Method handler invoked upon a matching message.
441 * @param modifier_cb
442 * Modifier handler, invoked after @a method_cb
443 * for each modifier in the message.
444 * @param data_cb
445 * Data handler, invoked after @a modifier_cb for each data fragment.
446 * @param eom_cb
447 * Invoked upon reaching the end of a matching message.
448 * @param cls
449 * Closure for the callbacks.
450 */
451void
452GNUNET_PSYC_slicer_method_add (struct GNUNET_PSYC_Slicer *slicer,
453 const char *method_name,
454 GNUNET_PSYC_MessageCallback msg_cb,
455 GNUNET_PSYC_MethodCallback method_cb,
456 GNUNET_PSYC_ModifierCallback modifier_cb,
457 GNUNET_PSYC_DataCallback data_cb,
458 GNUNET_PSYC_EndOfMessageCallback eom_cb,
459 void *cls)
460{
461 struct GNUNET_HashCode key;
462 GNUNET_CRYPTO_hash (method_name, strlen (method_name), &key);
463
464 struct SlicerMethodCallbacks *cbs = GNUNET_malloc (sizeof (*cbs));
465 cbs->msg_cb = msg_cb,
466 cbs->method_cb = method_cb;
467 cbs->modifier_cb = modifier_cb;
468 cbs->data_cb = data_cb;
469 cbs->eom_cb = eom_cb;
470 cbs->cls = cls;
471
472 GNUNET_CONTAINER_multihashmap_put (slicer->method_handlers, &key, cbs,
473 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
474}
475
476
477static int
478slicer_method_remove (void *cls, const struct GNUNET_HashCode *key, void *value)
479{
480 struct SlicerMethodRemoveClosure *rm_cls = cls;
481 struct GNUNET_PSYC_Slicer *slicer = rm_cls->slicer;
482 struct SlicerMethodCallbacks *rm_cbs = &rm_cls->rm_cbs;
483 struct SlicerMethodCallbacks *cbs = value;
484
485 if ((NULL == rm_cbs->msg_cb || cbs->msg_cb == rm_cbs->msg_cb)
486 && (NULL == rm_cbs->method_cb || cbs->method_cb == rm_cbs->method_cb)
487 && (NULL == rm_cbs->modifier_cb || cbs->modifier_cb == rm_cbs->modifier_cb)
488 && (NULL == rm_cbs->data_cb || cbs->data_cb == rm_cbs->data_cb)
489 && (NULL == rm_cbs->eom_cb || cbs->eom_cb == rm_cbs->eom_cb))
490 {
491 GNUNET_CONTAINER_multihashmap_remove (slicer->method_handlers, key, cbs);
492 GNUNET_free (cbs);
493 return GNUNET_NO;
494 }
495 return GNUNET_YES;
496}
497
498
499/**
500 * Remove a registered method from the try-and-slice instance.
501 *
502 * Removes one matching handler registered with the given
503 * @a method_name and callbacks.
504 *
505 * @param slicer
506 * The try-and-slice instance.
507 * @param method_name
508 * Name of the method to remove.
509 * @param method_cb
510 * Method handler.
511 * @param modifier_cb
512 * Modifier handler.
513 * @param data_cb
514 * Data handler.
515 * @param eom_cb
516 * End of message handler.
517 *
518 * @return #GNUNET_OK if a method handler was removed,
519 * #GNUNET_NO if no handler matched the given method name and callbacks.
520 */
521int
522GNUNET_PSYC_slicer_method_remove (struct GNUNET_PSYC_Slicer *slicer,
523 const char *method_name,
524 GNUNET_PSYC_MessageCallback msg_cb,
525 GNUNET_PSYC_MethodCallback method_cb,
526 GNUNET_PSYC_ModifierCallback modifier_cb,
527 GNUNET_PSYC_DataCallback data_cb,
528 GNUNET_PSYC_EndOfMessageCallback eom_cb)
529{
530 struct GNUNET_HashCode key;
531 GNUNET_CRYPTO_hash (method_name, strlen (method_name), &key);
532
533 struct SlicerMethodRemoveClosure rm_cls;
534 rm_cls.slicer = slicer;
535 struct SlicerMethodCallbacks *rm_cbs = &rm_cls.rm_cbs;
536 rm_cbs->msg_cb = msg_cb;
537 rm_cbs->method_cb = method_cb;
538 rm_cbs->modifier_cb = modifier_cb;
539 rm_cbs->data_cb = data_cb;
540 rm_cbs->eom_cb = eom_cb;
541
542 return
543 (GNUNET_SYSERR
544 == GNUNET_CONTAINER_multihashmap_get_multiple (slicer->method_handlers, &key,
545 slicer_method_remove,
546 &rm_cls))
547 ? GNUNET_NO
548 : GNUNET_OK;
549}
550
551
552/**
553 * Watch a place for changed objects.
554 *
555 * @param slicer
556 * The try-and-slice instance.
557 * @param object_filter
558 * Object prefix to match.
559 * @param modifier_cb
560 * Function to call when encountering a state modifier.
561 * @param cls
562 * Closure for callback.
563 */
564void
565GNUNET_PSYC_slicer_modifier_add (struct GNUNET_PSYC_Slicer *slicer,
566 const char *object_filter,
567 GNUNET_PSYC_ModifierCallback modifier_cb,
568 void *cls)
569{
570 struct SlicerModifierCallbacks *cbs = GNUNET_malloc (sizeof *cbs);
571 cbs->modifier_cb = modifier_cb;
572 cbs->cls = cls;
573
574 struct GNUNET_HashCode key;
575 GNUNET_CRYPTO_hash (object_filter, strlen (object_filter), &key);
576 GNUNET_CONTAINER_multihashmap_put (slicer->modifier_handlers, &key, cbs,
577 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
578}
579
580
581static int
582slicer_modifier_remove (void *cls, const struct GNUNET_HashCode *key, void *value)
583{
584 struct SlicerModifierRemoveClosure *rm_cls = cls;
585 struct GNUNET_PSYC_Slicer *slicer = rm_cls->slicer;
586 struct SlicerModifierCallbacks *rm_cbs = &rm_cls->rm_cbs;
587 struct SlicerModifierCallbacks *cbs = value;
588
589 if (cbs->modifier_cb == rm_cbs->modifier_cb)
590 {
591 GNUNET_CONTAINER_multihashmap_remove (slicer->modifier_handlers, key, cbs);
592 GNUNET_free (cbs);
593 return GNUNET_NO;
594 }
595 return GNUNET_YES;
596}
597
598
599/**
600 * Remove a registered modifier from the try-and-slice instance.
601 *
602 * Removes one matching handler registered with the given
603 * @a object_filter and @a modifier_cb.
604 *
605 * @param slicer
606 * The try-and-slice instance.
607 * @param object_filter
608 * Object prefix to match.
609 * @param modifier_cb
610 * Function to call when encountering a state modifier changes.
611 */
612int
613GNUNET_PSYC_slicer_modifier_remove (struct GNUNET_PSYC_Slicer *slicer,
614 const char *object_filter,
615 GNUNET_PSYC_ModifierCallback modifier_cb)
616{
617 struct GNUNET_HashCode key;
618 GNUNET_CRYPTO_hash (object_filter, strlen (object_filter), &key);
619
620 struct SlicerModifierRemoveClosure rm_cls;
621 rm_cls.slicer = slicer;
622 struct SlicerModifierCallbacks *rm_cbs = &rm_cls.rm_cbs;
623 rm_cbs->modifier_cb = modifier_cb;
624
625 return
626 (GNUNET_SYSERR
627 == GNUNET_CONTAINER_multihashmap_get_multiple (slicer->modifier_handlers, &key,
628 slicer_modifier_remove,
629 &rm_cls))
630 ? GNUNET_NO
631 : GNUNET_OK;
632 }
633
634
635static int
636slicer_method_free (void *cls, const struct GNUNET_HashCode *key, void *value)
637{
638 struct SlicerMethodCallbacks *cbs = value;
639 GNUNET_free (cbs);
640 return GNUNET_YES;
641}
642
643
644static int
645slicer_modifier_free (void *cls, const struct GNUNET_HashCode *key, void *value)
646{
647 struct SlicerModifierCallbacks *cbs = value;
648 GNUNET_free (cbs);
649 return GNUNET_YES;
650}
651
652
653/**
654 * Remove all registered method handlers.
655 *
656 * @param slicer
657 * Slicer to clear.
658 */
659void
660GNUNET_PSYC_slicer_method_clear (struct GNUNET_PSYC_Slicer *slicer)
661{
662 GNUNET_CONTAINER_multihashmap_iterate (slicer->method_handlers,
663 slicer_method_free, NULL);
664 GNUNET_CONTAINER_multihashmap_clear (slicer->method_handlers);
665}
666
667
668/**
669 * Remove all registered modifier handlers.
670 *
671 * @param slicer
672 * Slicer to clear.
673 */
674void
675GNUNET_PSYC_slicer_modifier_clear (struct GNUNET_PSYC_Slicer *slicer)
676{
677 GNUNET_CONTAINER_multihashmap_iterate (slicer->modifier_handlers,
678 slicer_modifier_free, NULL);
679 GNUNET_CONTAINER_multihashmap_clear (slicer->modifier_handlers);
680}
681
682
683/**
684 * Remove all registered method & modifier handlers.
685 *
686 * @param slicer
687 * Slicer to clear.
688 */
689void
690GNUNET_PSYC_slicer_clear (struct GNUNET_PSYC_Slicer *slicer)
691{
692 GNUNET_PSYC_slicer_method_clear (slicer);
693 GNUNET_PSYC_slicer_modifier_clear (slicer);
694}
695
696
697/**
698 * Destroy a given try-and-slice instance.
699 *
700 * @param slicer
701 * Slicer to destroy
702 */
703void
704GNUNET_PSYC_slicer_destroy (struct GNUNET_PSYC_Slicer *slicer)
705{
706 GNUNET_PSYC_slicer_clear (slicer);
707 GNUNET_CONTAINER_multihashmap_destroy (slicer->method_handlers);
708 GNUNET_CONTAINER_multihashmap_destroy (slicer->modifier_handlers);
709 GNUNET_PSYC_receive_destroy (slicer->recv);
710 GNUNET_free (slicer);
711}
diff --git a/src/psycutil/test_psyc_env.c b/src/psycutil/test_psyc_env.c
deleted file mode 100644
index 432e15503..000000000
--- a/src/psycutil/test_psyc_env.c
+++ /dev/null
@@ -1,96 +0,0 @@
1/*
2 * This file is part of GNUnet.
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Gabor X Toth
23 *
24 * @file
25 * Tests for the environment library.
26 */
27
28#include "platform.h"
29#include "gnunet_util_lib.h"
30#include "gnunet_testing_lib.h"
31#include "gnunet_psyc_util_lib.h"
32
33struct GNUNET_PSYC_Modifier mods[] = {
34 { .oper = GNUNET_PSYC_OP_SET,
35 .name = "_foo", .value = "foo", .value_size = 3 },
36
37 { .oper = GNUNET_PSYC_OP_ASSIGN,
38 .name = "_foo_bar", .value = "foo bar", .value_size = 7 },
39
40 { .oper = GNUNET_PSYC_OP_AUGMENT,
41 .name = "_foo_bar_baz", .value = "foo bar baz", .value_size = 11 }
42};
43
44struct ItCls
45{
46 size_t n;
47};
48
49int
50iterator (void *cls, enum GNUNET_PSYC_Operator oper,
51 const char *name, const char *value, uint32_t value_size)
52{
53 struct ItCls *it_cls = cls;
54 struct GNUNET_PSYC_Modifier *m = &mods[it_cls->n++];
55
56 GNUNET_assert (oper == m->oper);
57 GNUNET_assert (value_size == m->value_size);
58 GNUNET_assert (0 == memcmp (name, m->name, strlen (m->name)));
59 GNUNET_assert (0 == memcmp (value, m->value, m->value_size));
60
61 return GNUNET_YES;
62}
63
64int
65main (int argc, char *argv[])
66{
67 GNUNET_log_setup ("test-env", "WARNING", NULL);
68
69 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
70 GNUNET_assert (NULL != env);
71 int i, len = 3;
72
73 for (i = 0; i < len; i++)
74 {
75 GNUNET_PSYC_env_add (env, mods[i].oper, mods[i].name,
76 mods[i].value, mods[i].value_size);
77 }
78
79 struct ItCls it_cls = { .n = 0 };
80 GNUNET_PSYC_env_iterate (env, iterator, &it_cls);
81 GNUNET_assert (len == it_cls.n);
82
83 for (i = 0; i < len; i++)
84 {
85 enum GNUNET_PSYC_Operator oper;
86 const char *name;
87 const void *value;
88 size_t value_size;
89 GNUNET_PSYC_env_shift (env, &oper, &name, &value, &value_size);
90 GNUNET_assert (len - i - 1 == GNUNET_PSYC_env_get_count (env));
91 }
92
93 GNUNET_PSYC_env_destroy (env);
94
95 return 0;
96}
diff --git a/src/rest-plugins/Makefile.am b/src/rest-plugins/Makefile.am
index f36154ebd..a49ab0ef0 100644
--- a/src/rest-plugins/Makefile.am
+++ b/src/rest-plugins/Makefile.am
@@ -67,6 +67,7 @@ libgnunet_plugin_rest_copying_la_LDFLAGS = \
67libgnunet_plugin_rest_peerinfo_la_SOURCES = \ 67libgnunet_plugin_rest_peerinfo_la_SOURCES = \
68 plugin_rest_peerinfo.c 68 plugin_rest_peerinfo.c
69libgnunet_plugin_rest_peerinfo_la_LIBADD = \ 69libgnunet_plugin_rest_peerinfo_la_LIBADD = \
70 $(top_builddir)/src/hello/libgnunethello.la \
70 $(top_builddir)/src/peerinfo/libgnunetpeerinfo.la \ 71 $(top_builddir)/src/peerinfo/libgnunetpeerinfo.la \
71 $(top_builddir)/src/rest/libgnunetrest.la \ 72 $(top_builddir)/src/rest/libgnunetrest.la \
72 $(top_builddir)/src/json/libgnunetjson.la \ 73 $(top_builddir)/src/json/libgnunetjson.la \
@@ -104,6 +105,7 @@ libgnunet_plugin_rest_namestore_la_LDFLAGS = \
104libgnunet_plugin_rest_gns_la_SOURCES = \ 105libgnunet_plugin_rest_gns_la_SOURCES = \
105 plugin_rest_gns.c 106 plugin_rest_gns.c
106libgnunet_plugin_rest_gns_la_LIBADD = \ 107libgnunet_plugin_rest_gns_la_LIBADD = \
108 $(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
107 $(top_builddir)/src/gns/libgnunetgns.la \ 109 $(top_builddir)/src/gns/libgnunetgns.la \
108 $(top_builddir)/src/rest/libgnunetrest.la \ 110 $(top_builddir)/src/rest/libgnunetrest.la \
109 $(top_builddir)/src/identity/libgnunetidentity.la \ 111 $(top_builddir)/src/identity/libgnunetidentity.la \
diff --git a/src/rest-plugins/plugin_rest_openid_connect.c b/src/rest-plugins/plugin_rest_openid_connect.c
index 5fa17076d..e755f079b 100644
--- a/src/rest-plugins/plugin_rest_openid_connect.c
+++ b/src/rest-plugins/plugin_rest_openid_connect.c
@@ -935,12 +935,24 @@ oidc_ticket_issue_cb (void* cls,
935 &handle->ticket, 935 &handle->ticket,
936 handle->oidc->nonce); 936 handle->oidc->nonce);
937 code_base64_final_string = base64_encode (code_json_string); 937 code_base64_final_string = base64_encode (code_json_string);
938 GNUNET_asprintf (&redirect_uri, "%s.%s/%s?%s=%s&state=%s", 938 if ( (NULL != handle->redirect_prefix) &&
939 handle->redirect_prefix, 939 (NULL != handle->redirect_suffix) &&
940 handle->tld, 940 (NULL != handle->tld) )
941 handle->redirect_suffix, 941 {
942 handle->oidc->response_type, 942
943 code_base64_final_string, handle->oidc->state); 943 GNUNET_asprintf (&redirect_uri, "%s.%s/%s?%s=%s&state=%s",
944 handle->redirect_prefix,
945 handle->tld,
946 handle->redirect_suffix,
947 handle->oidc->response_type,
948 code_base64_final_string, handle->oidc->state);
949 } else {
950 GNUNET_asprintf (&redirect_uri, "%s?%s=%s&state=%s",
951 handle->oidc->redirect_uri,
952 handle->oidc->response_type,
953 code_base64_final_string, handle->oidc->state);
954
955 }
944 resp = GNUNET_REST_create_response (""); 956 resp = GNUNET_REST_create_response ("");
945 MHD_add_response_header (resp, "Location", redirect_uri); 957 MHD_add_response_header (resp, "Location", redirect_uri);
946 handle->proc (handle->proc_cls, resp, MHD_HTTP_FOUND); 958 handle->proc (handle->proc_cls, resp, MHD_HTTP_FOUND);
@@ -1095,13 +1107,25 @@ build_redirect (void *cls)
1095 1107
1096 if (GNUNET_YES == handle->oidc->user_cancelled) 1108 if (GNUNET_YES == handle->oidc->user_cancelled)
1097 { 1109 {
1098 GNUNET_asprintf (&redirect_uri, "%s.%s/%s?error=%s&error_description=%s&state=%s", 1110 if ( (NULL != handle->redirect_prefix) &&
1099 handle->redirect_prefix, 1111 (NULL != handle->redirect_suffix) &&
1100 handle->tld, 1112 (NULL != handle->tld) )
1101 handle->redirect_suffix, 1113 {
1102 "access_denied", 1114 GNUNET_asprintf (&redirect_uri, "%s.%s/%s?error=%s&error_description=%s&state=%s",
1103 "User denied access", 1115 handle->redirect_prefix,
1104 handle->oidc->state); 1116 handle->tld,
1117 handle->redirect_suffix,
1118 "access_denied",
1119 "User denied access",
1120 handle->oidc->state);
1121 } else {
1122 GNUNET_asprintf (&redirect_uri, "%s?error=%s&error_description=%s&state=%s",
1123 handle->oidc->redirect_uri,
1124 "access_denied",
1125 "User denied access",
1126 handle->oidc->state);
1127
1128 }
1105 resp = GNUNET_REST_create_response (""); 1129 resp = GNUNET_REST_create_response ("");
1106 MHD_add_response_header (resp, "Location", redirect_uri); 1130 MHD_add_response_header (resp, "Location", redirect_uri);
1107 handle->proc (handle->proc_cls, resp, MHD_HTTP_FOUND); 1131 handle->proc (handle->proc_cls, resp, MHD_HTTP_FOUND);
@@ -1137,25 +1161,35 @@ lookup_redirect_uri_result (void *cls,
1137 if (GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT != rd[i].record_type) 1161 if (GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT != rd[i].record_type)
1138 continue; 1162 continue;
1139 if (0 != strncmp (rd[i].data, 1163 if (0 != strncmp (rd[i].data,
1140 handle->oidc->redirect_uri, 1164 handle->oidc->redirect_uri,
1141 rd[i].data_size)) 1165 rd[i].data_size))
1142 continue; 1166 continue;
1143 tmp = GNUNET_strndup (rd[i].data, 1167 tmp = GNUNET_strndup (rd[i].data,
1144 rd[i].data_size); 1168 rd[i].data_size);
1145 pos = strrchr (tmp, 1169 if (NULL == strstr (tmp,
1146 (unsigned char) '.'); 1170 handle->oidc->client_id))
1147 *pos = '\0'; 1171 {
1148 handle->redirect_prefix = GNUNET_strdup (tmp); 1172 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1149 tmp_key_str = pos + 1; 1173 "Redirect uri %s does not contain client_id %s",
1150 pos = strchr (tmp_key_str, 1174 tmp,
1151 (unsigned char) '/'); 1175 handle->oidc->client_id);
1152 *pos = '\0'; 1176 } else {
1153 handle->redirect_suffix = GNUNET_strdup (pos + 1); 1177
1154 1178 pos = strrchr (tmp,
1155 GNUNET_STRINGS_string_to_data (tmp_key_str, 1179 (unsigned char) '.');
1156 strlen (tmp_key_str), 1180 *pos = '\0';
1157 &redirect_zone, 1181 handle->redirect_prefix = GNUNET_strdup (tmp);
1158 sizeof (redirect_zone)); 1182 tmp_key_str = pos + 1;
1183 pos = strchr (tmp_key_str,
1184 (unsigned char) '/');
1185 *pos = '\0';
1186 handle->redirect_suffix = GNUNET_strdup (pos + 1);
1187
1188 GNUNET_STRINGS_string_to_data (tmp_key_str,
1189 strlen (tmp_key_str),
1190 &redirect_zone,
1191 sizeof (redirect_zone));
1192 }
1159 GNUNET_SCHEDULER_add_now (&build_redirect, handle); 1193 GNUNET_SCHEDULER_add_now (&build_redirect, handle);
1160 GNUNET_free (tmp); 1194 GNUNET_free (tmp);
1161 return; 1195 return;
@@ -1300,7 +1334,7 @@ build_authz_response (void *cls)
1300 { 1334 {
1301 handle->emsg = GNUNET_strdup (OIDC_ERROR_KEY_INVALID_SCOPE); 1335 handle->emsg = GNUNET_strdup (OIDC_ERROR_KEY_INVALID_SCOPE);
1302 handle->edesc=GNUNET_strdup ("The requested scope is invalid, unknown, or " 1336 handle->edesc=GNUNET_strdup ("The requested scope is invalid, unknown, or "
1303 "malformed."); 1337 "malformed.");
1304 GNUNET_SCHEDULER_add_now (&do_redirect_error, handle); 1338 GNUNET_SCHEDULER_add_now (&do_redirect_error, handle);
1305 GNUNET_free (expected_scope); 1339 GNUNET_free (expected_scope);
1306 return; 1340 return;
@@ -1337,7 +1371,7 @@ tld_iter (void *cls,
1337 return; 1371 return;
1338 } 1372 }
1339 if (0 == memcmp (&pkey, &handle->oidc->client_pkey, 1373 if (0 == memcmp (&pkey, &handle->oidc->client_pkey,
1340 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey))) 1374 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey)))
1341 handle->tld = GNUNET_strdup (option+1); 1375 handle->tld = GNUNET_strdup (option+1);
1342} 1376}
1343 1377
@@ -1431,7 +1465,7 @@ authorize_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
1431 tld_iter, 1465 tld_iter,
1432 handle); 1466 handle);
1433 if (NULL == handle->tld) 1467 if (NULL == handle->tld)
1434 handle->tld = GNUNET_strdup (tmp_ego->keystring); 1468 handle->tld = GNUNET_strdup (handle->oidc->client_id);
1435 GNUNET_SCHEDULER_add_now (&build_authz_response, handle); 1469 GNUNET_SCHEDULER_add_now (&build_authz_response, handle);
1436} 1470}
1437 1471
diff --git a/src/revocation/test_local_revocation.py.in b/src/revocation/test_local_revocation.py.in
index 212e8e777..5caa616ca 100644
--- a/src/revocation/test_local_revocation.py.in
+++ b/src/revocation/test_local_revocation.py.in
@@ -19,6 +19,7 @@
19# 19#
20# Testcase for ego revocation 20# Testcase for ego revocation
21from __future__ import print_function 21from __future__ import print_function
22from builtins import str
22import sys 23import sys
23import os 24import os
24import subprocess 25import subprocess
diff --git a/src/rps/gnunet-rps-profiler.c b/src/rps/gnunet-rps-profiler.c
index 36a167203..98fc8dccb 100644
--- a/src/rps/gnunet-rps-profiler.c
+++ b/src/rps/gnunet-rps-profiler.c
@@ -1574,7 +1574,7 @@ static void mal_init_peer (struct RPSPeer *rps_peer)
1574static void 1574static void
1575mal_pre (struct RPSPeer *rps_peer, struct GNUNET_RPS_Handle *h) 1575mal_pre (struct RPSPeer *rps_peer, struct GNUNET_RPS_Handle *h)
1576{ 1576{
1577 #ifdef ENABLE_MALICIOUS 1577 #if ENABLE_MALICIOUS
1578 uint32_t num_mal_peers; 1578 uint32_t num_mal_peers;
1579 1579
1580 GNUNET_assert ( (1 >= portion) && 1580 GNUNET_assert ( (1 >= portion) &&
@@ -1605,7 +1605,7 @@ mal_cb (struct RPSPeer *rps_peer)
1605 return; 1605 return;
1606 } 1606 }
1607 1607
1608 #ifdef ENABLE_MALICIOUS 1608 #if ENABLE_MALICIOUS
1609 GNUNET_assert ( (1 >= portion) && 1609 GNUNET_assert ( (1 >= portion) &&
1610 (0 < portion) ); 1610 (0 < portion) );
1611 num_mal_peers = round (portion * num_peers); 1611 num_mal_peers = round (portion * num_peers);
@@ -2636,9 +2636,11 @@ stat_iterator (void *cls,
2636 (void) subsystem; 2636 (void) subsystem;
2637 (void) is_persistent; 2637 (void) is_persistent;
2638 2638
2639 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got stat value: %s - %" PRIu64 "\n", 2639 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2640 name, 2640 "Got stat value: %s - %" PRIu64 " (%u)\n",
2641 value); 2641 name,
2642 value,
2643 rps_peer->index);
2642 to_file (rps_peer->file_name_stats, 2644 to_file (rps_peer->file_name_stats,
2643 "%s: %" PRIu64 "\n", 2645 "%s: %" PRIu64 "\n",
2644 name, 2646 name,
@@ -2650,7 +2652,9 @@ stat_iterator (void *cls,
2650 return GNUNET_OK; 2652 return GNUNET_OK;
2651} 2653}
2652 2654
2653void post_profiler (struct RPSPeer *rps_peer) 2655
2656void
2657post_profiler (struct RPSPeer *rps_peer)
2654{ 2658{
2655 if (COLLECT_STATISTICS != cur_test_run.have_collect_statistics) 2659 if (COLLECT_STATISTICS != cur_test_run.have_collect_statistics)
2656 { 2660 {
diff --git a/src/rps/gnunet-service-rps.c b/src/rps/gnunet-service-rps.c
index 08f2450f5..05d5c91c3 100644
--- a/src/rps/gnunet-service-rps.c
+++ b/src/rps/gnunet-service-rps.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -261,7 +261,7 @@ struct ChannelCtx
261}; 261};
262 262
263 263
264#ifdef ENABLE_MALICIOUS 264#if ENABLE_MALICIOUS
265 265
266/** 266/**
267 * If type is 2 This struct is used to store the attacked peers in a DLL 267 * If type is 2 This struct is used to store the attacked peers in a DLL
@@ -492,7 +492,7 @@ static struct GNUNET_PEERINFO_Handle *peerinfo_handle;
492static struct GNUNET_PEERINFO_NotifyContext *peerinfo_notify_handle; 492static struct GNUNET_PEERINFO_NotifyContext *peerinfo_notify_handle;
493 493
494 494
495#ifdef ENABLE_MALICIOUS 495#if ENABLE_MALICIOUS
496/** 496/**
497 * Type of malicious peer 497 * Type of malicious peer
498 * 498 *
@@ -1379,6 +1379,7 @@ mq_notify_sent_cb (void *cls)
1379 if (0 == strncmp ("PUSH", pending_msg->type, 4)) 1379 if (0 == strncmp ("PUSH", pending_msg->type, 4))
1380 GNUNET_STATISTICS_update(stats, "# pushes sent", 1, GNUNET_NO); 1380 GNUNET_STATISTICS_update(stats, "# pushes sent", 1, GNUNET_NO);
1381 if (0 == strncmp ("PULL REQUEST", pending_msg->type, 12) && 1381 if (0 == strncmp ("PULL REQUEST", pending_msg->type, 12) &&
1382 NULL != map_single_hop &&
1382 GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (map_single_hop, 1383 GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (map_single_hop,
1383 &pending_msg->peer_ctx->peer_id)) 1384 &pending_msg->peer_ctx->peer_id))
1384 GNUNET_STATISTICS_update(stats, 1385 GNUNET_STATISTICS_update(stats,
@@ -2576,7 +2577,7 @@ insert_in_sampler (void *cls,
2576 * messages to it */ 2577 * messages to it */
2577 //indicate_sending_intention (peer); 2578 //indicate_sending_intention (peer);
2578 } 2579 }
2579 #ifdef TO_FILE 2580#ifdef TO_FILE
2580 sub->num_observed_peers++; 2581 sub->num_observed_peers++;
2581 GNUNET_CONTAINER_multipeermap_put 2582 GNUNET_CONTAINER_multipeermap_put
2582 (sub->observed_unique_peers, 2583 (sub->observed_unique_peers,
@@ -2590,7 +2591,7 @@ insert_in_sampler (void *cls,
2590 sub->num_observed_peers, 2591 sub->num_observed_peers,
2591 num_observed_unique_peers, 2592 num_observed_unique_peers,
2592 1.0*num_observed_unique_peers/sub->num_observed_peers) 2593 1.0*num_observed_unique_peers/sub->num_observed_peers)
2593 #endif /* TO_FILE */ 2594#endif /* TO_FILE */
2594} 2595}
2595 2596
2596 2597
@@ -2675,11 +2676,23 @@ static void
2675remove_peer (struct Sub *sub, 2676remove_peer (struct Sub *sub,
2676 const struct GNUNET_PeerIdentity *peer) 2677 const struct GNUNET_PeerIdentity *peer)
2677{ 2678{
2678 (void) View_remove_peer (sub->view, peer); 2679 (void) View_remove_peer (sub->view,
2679 CustomPeerMap_remove_peer (sub->pull_map, peer); 2680 peer);
2680 CustomPeerMap_remove_peer (sub->push_map, peer); 2681 CustomPeerMap_remove_peer (sub->pull_map,
2681 RPS_sampler_reinitialise_by_value (sub->sampler, peer); 2682 peer);
2682 destroy_peer (get_peer_ctx (sub->peer_map, peer)); 2683 CustomPeerMap_remove_peer (sub->push_map,
2684 peer);
2685 RPS_sampler_reinitialise_by_value (sub->sampler,
2686 peer);
2687 /* We want to destroy the peer now.
2688 * Sometimes, it just seems that it's already been removed from the peer_map,
2689 * so check the peer_map first. */
2690 if (GNUNET_YES == check_peer_known (sub->peer_map,
2691 peer))
2692 {
2693 destroy_peer (get_peer_ctx (sub->peer_map,
2694 peer));
2695 }
2683} 2696}
2684 2697
2685 2698
@@ -2701,15 +2714,19 @@ clean_peer (struct Sub *sub,
2701 LOG (GNUNET_ERROR_TYPE_DEBUG, 2714 LOG (GNUNET_ERROR_TYPE_DEBUG,
2702 "Going to remove send channel to peer %s\n", 2715 "Going to remove send channel to peer %s\n",
2703 GNUNET_i2s (peer)); 2716 GNUNET_i2s (peer));
2704 #ifdef ENABLE_MALICIOUS 2717 #if ENABLE_MALICIOUS
2705 if (0 != GNUNET_CRYPTO_cmp_peer_identity (&attacked_peer, peer)) 2718 if (0 != GNUNET_CRYPTO_cmp_peer_identity (&attacked_peer,
2706 (void) destroy_sending_channel (get_peer_ctx (sub->peer_map, peer)); 2719 peer))
2720 (void) destroy_sending_channel (get_peer_ctx (sub->peer_map,
2721 peer));
2707 #else /* ENABLE_MALICIOUS */ 2722 #else /* ENABLE_MALICIOUS */
2708 (void) destroy_sending_channel (get_peer_ctx (sub->peer_map, peer)); 2723 (void) destroy_sending_channel (get_peer_ctx (sub->peer_map,
2724 peer));
2709 #endif /* ENABLE_MALICIOUS */ 2725 #endif /* ENABLE_MALICIOUS */
2710 } 2726 }
2711 2727
2712 if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (sub->peer_map, peer)) 2728 if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (sub->peer_map,
2729 peer))
2713 { 2730 {
2714 /* Peer was already removed by callback on destroyed channel */ 2731 /* Peer was already removed by callback on destroyed channel */
2715 LOG (GNUNET_ERROR_TYPE_WARNING, 2732 LOG (GNUNET_ERROR_TYPE_WARNING,
@@ -2846,19 +2863,15 @@ new_sub (const struct GNUNET_HashCode *hash,
2846 { 2863 {
2847 char *tmp_filename_valid_peers; 2864 char *tmp_filename_valid_peers;
2848 char str_hash[105]; 2865 char str_hash[105];
2849 uint32_t len_filename_valid_peers; 2866
2850 2867 GNUNET_snprintf (str_hash,
2851 (void) GNUNET_snprintf (str_hash, 105, GNUNET_h2s_full (hash)); 2868 sizeof (str_hash),
2852 tmp_filename_valid_peers = GNUNET_strdup (sub->filename_valid_peers); 2869 GNUNET_h2s_full (hash));
2853 GNUNET_free (sub->filename_valid_peers); 2870 tmp_filename_valid_peers = sub->filename_valid_peers;
2854 len_filename_valid_peers = strlen (tmp_filename_valid_peers) + 105; /* Len of full hash + 1 */ 2871 GNUNET_asprintf (&sub->filename_valid_peers,
2855 sub->filename_valid_peers = GNUNET_malloc (len_filename_valid_peers); 2872 "%s%s",
2856 strncat (sub->filename_valid_peers, 2873 tmp_filename_valid_peers,
2857 tmp_filename_valid_peers, 2874 str_hash);
2858 len_filename_valid_peers);
2859 strncat (sub->filename_valid_peers,
2860 str_hash,
2861 len_filename_valid_peers);
2862 GNUNET_free (tmp_filename_valid_peers); 2875 GNUNET_free (tmp_filename_valid_peers);
2863 } 2876 }
2864 sub->peer_map = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO); 2877 sub->peer_map = GNUNET_CONTAINER_multipeermap_create (4, GNUNET_NO);
@@ -2874,7 +2887,7 @@ new_sub (const struct GNUNET_HashCode *hash,
2874 2887
2875 /* Logging of internals */ 2888 /* Logging of internals */
2876 sub->file_name_view_log = store_prefix_file_name (&own_identity, "view"); 2889 sub->file_name_view_log = store_prefix_file_name (&own_identity, "view");
2877 #ifdef TO_FILE 2890#ifdef TO_FILE
2878 sub->file_name_observed_log = store_prefix_file_name (&own_identity, 2891 sub->file_name_observed_log = store_prefix_file_name (&own_identity,
2879 "observed"); 2892 "observed");
2880 sub->file_name_push_recv = store_prefix_file_name (&own_identity, 2893 sub->file_name_push_recv = store_prefix_file_name (&own_identity,
@@ -2884,7 +2897,7 @@ new_sub (const struct GNUNET_HashCode *hash,
2884 sub->num_observed_peers = 0; 2897 sub->num_observed_peers = 0;
2885 sub->observed_unique_peers = GNUNET_CONTAINER_multipeermap_create (1, 2898 sub->observed_unique_peers = GNUNET_CONTAINER_multipeermap_create (1,
2886 GNUNET_NO); 2899 GNUNET_NO);
2887 #endif /* TO_FILE */ 2900#endif /* TO_FILE */
2888 2901
2889 /* Set up data structures for gossip */ 2902 /* Set up data structures for gossip */
2890 sub->push_map = CustomPeerMap_create (4); 2903 sub->push_map = CustomPeerMap_create (4);
@@ -2915,8 +2928,10 @@ static void
2915destroy_sub (struct Sub *sub) 2928destroy_sub (struct Sub *sub)
2916{ 2929{
2917#ifdef TO_FILE 2930#ifdef TO_FILE
2918 char push_recv_str[1536] = ""; /* 256 * 6 (1 whitespace, 1 comma, up to 4 chars) */ 2931#define SIZE_DUMP_FILE 1536 /* 256 * 6 (1 whitespace, 1 comma, up to 4 chars) */
2919 char pull_delays_str[1536] = ""; /* 256 * 6 (1 whitespace, 1 comma, up to 4 chars) */ 2932 char push_recv_str[SIZE_DUMP_FILE + 1] = "";
2933 char pull_delays_str[SIZE_DUMP_FILE + 1] = "";
2934 char *recv_str_iter;
2920#endif /* TO_FILE */ 2935#endif /* TO_FILE */
2921 GNUNET_assert (NULL != sub); 2936 GNUNET_assert (NULL != sub);
2922 GNUNET_assert (NULL != sub->do_round_task); 2937 GNUNET_assert (NULL != sub->do_round_task);
@@ -2945,36 +2960,49 @@ destroy_sub (struct Sub *sub)
2945 sub->file_name_observed_log = NULL; 2960 sub->file_name_observed_log = NULL;
2946 2961
2947 /* Write push frequencies to disk */ 2962 /* Write push frequencies to disk */
2963 recv_str_iter = push_recv_str;
2948 for (uint32_t i = 0; i < 256; i++) 2964 for (uint32_t i = 0; i < 256; i++)
2949 { 2965 {
2950 char push_recv_str_tmp[8]; 2966 char push_recv_str_tmp[8];
2951 (void) snprintf (push_recv_str_tmp, 8, "%" PRIu32 "\n", sub->push_recv[i]); 2967
2952 (void) strncat (push_recv_str, 2968 GNUNET_snprintf (push_recv_str_tmp,
2953 push_recv_str_tmp, 2969 sizeof (push_recv_str_tmp),
2954 1535 - strnlen (push_recv_str, 1536)); 2970 "%" PRIu32 "\n",
2955 } 2971 sub->push_recv[i]);
2956 (void) strncat (push_recv_str, 2972 recv_str_iter = stpncpy (recv_str_iter,
2957 "\n", 2973 push_recv_str_tmp,
2958 1535 - strnlen (push_recv_str, 1536)); 2974 6);
2959 LOG (GNUNET_ERROR_TYPE_DEBUG, "Writing push stats to disk\n"); 2975 }
2960 to_file_w_len (sub->file_name_push_recv, 1535, push_recv_str); 2976 (void) stpcpy (recv_str_iter,
2977 "\n");
2978 LOG (GNUNET_ERROR_TYPE_DEBUG,
2979 "Writing push stats to disk\n");
2980 to_file_w_len (sub->file_name_push_recv,
2981 SIZE_DUMP_FILE,
2982 push_recv_str);
2961 GNUNET_free (sub->file_name_push_recv); 2983 GNUNET_free (sub->file_name_push_recv);
2962 sub->file_name_push_recv = NULL; 2984 sub->file_name_push_recv = NULL;
2963 2985
2964 /* Write pull delays to disk */ 2986 /* Write pull delays to disk */
2987 recv_str_iter = pull_delays_str;
2965 for (uint32_t i = 0; i < 256; i++) 2988 for (uint32_t i = 0; i < 256; i++)
2966 { 2989 {
2967 char pull_delays_str_tmp[8]; 2990 char pull_delays_str_tmp[8];
2968 (void) snprintf (pull_delays_str_tmp, 8, "%" PRIu32 "\n", sub->pull_delays[i]); 2991
2969 (void) strncat (pull_delays_str, 2992 GNUNET_snprintf (pull_delays_str_tmp,
2970 pull_delays_str_tmp, 2993 sizeof (pull_delays_str_tmp),
2971 1535 - strnlen (pull_delays_str, 1536)); 2994 "%" PRIu32 "\n",
2972 } 2995 sub->pull_delays[i]);
2973 (void) strncat (pull_delays_str, 2996 recv_str_iter = stpncpy (recv_str_iter,
2974 "\n", 2997 pull_delays_str_tmp,
2975 1535 - strnlen (pull_delays_str, 1536)); 2998 6);
2999 }
3000 (void) stpcpy (recv_str_iter,
3001 "\n");
2976 LOG (GNUNET_ERROR_TYPE_DEBUG, "Writing pull delays to disk\n"); 3002 LOG (GNUNET_ERROR_TYPE_DEBUG, "Writing pull delays to disk\n");
2977 to_file_w_len (sub->file_name_pull_delays, 1535, pull_delays_str); 3003 to_file_w_len (sub->file_name_pull_delays,
3004 SIZE_DUMP_FILE,
3005 pull_delays_str);
2978 GNUNET_free (sub->file_name_pull_delays); 3006 GNUNET_free (sub->file_name_pull_delays);
2979 sub->file_name_pull_delays = NULL; 3007 sub->file_name_pull_delays = NULL;
2980 3008
@@ -3028,8 +3056,11 @@ core_connects (void *cls,
3028 (void) cls; 3056 (void) cls;
3029 (void) mq; 3057 (void) mq;
3030 3058
3031 GNUNET_CONTAINER_multipeermap_put (map_single_hop, peer, NULL, 3059 GNUNET_assert (GNUNET_YES ==
3032 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); 3060 GNUNET_CONTAINER_multipeermap_put (map_single_hop,
3061 peer,
3062 NULL,
3063 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
3033 return NULL; 3064 return NULL;
3034} 3065}
3035 3066
@@ -3436,7 +3467,7 @@ handle_peer_push (void *cls,
3436 GNUNET_STATISTICS_update(stats, "# push message received", 1, GNUNET_NO); 3467 GNUNET_STATISTICS_update(stats, "# push message received", 1, GNUNET_NO);
3437 } 3468 }
3438 3469
3439 #ifdef ENABLE_MALICIOUS 3470 #if ENABLE_MALICIOUS
3440 struct AttackedPeer *tmp_att_peer; 3471 struct AttackedPeer *tmp_att_peer;
3441 3472
3442 if ( (1 == mal_type) || 3473 if ( (1 == mal_type) ||
@@ -3512,7 +3543,7 @@ handle_peer_pull_request (void *cls,
3512 } 3543 }
3513 } 3544 }
3514 3545
3515 #ifdef ENABLE_MALICIOUS 3546 #if ENABLE_MALICIOUS
3516 if (1 == mal_type 3547 if (1 == mal_type
3517 || 3 == mal_type) 3548 || 3 == mal_type)
3518 { /* Try to maximise representation */ 3549 { /* Try to maximise representation */
@@ -3606,7 +3637,7 @@ handle_peer_pull_reply (void *cls,
3606 const struct GNUNET_PeerIdentity *peers; 3637 const struct GNUNET_PeerIdentity *peers;
3607 struct Sub *sub = channel_ctx->peer_ctx->sub; 3638 struct Sub *sub = channel_ctx->peer_ctx->sub;
3608 uint32_t i; 3639 uint32_t i;
3609#ifdef ENABLE_MALICIOUS 3640#if ENABLE_MALICIOUS
3610 struct AttackedPeer *tmp_att_peer; 3641 struct AttackedPeer *tmp_att_peer;
3611#endif /* ENABLE_MALICIOUS */ 3642#endif /* ENABLE_MALICIOUS */
3612 3643
@@ -3618,7 +3649,8 @@ handle_peer_pull_reply (void *cls,
3618 "# pull reply messages received", 3649 "# pull reply messages received",
3619 1, 3650 1,
3620 GNUNET_NO); 3651 GNUNET_NO);
3621 if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (map_single_hop, 3652 if (NULL != map_single_hop &&
3653 GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains (map_single_hop,
3622 &channel_ctx->peer_ctx->peer_id)) 3654 &channel_ctx->peer_ctx->peer_id))
3623 { 3655 {
3624 GNUNET_STATISTICS_update (stats, 3656 GNUNET_STATISTICS_update (stats,
@@ -3628,7 +3660,7 @@ handle_peer_pull_reply (void *cls,
3628 } 3660 }
3629 } 3661 }
3630 3662
3631 #ifdef ENABLE_MALICIOUS 3663 #if ENABLE_MALICIOUS
3632 // We shouldn't even receive pull replies as we're not sending 3664 // We shouldn't even receive pull replies as we're not sending
3633 if (2 == mal_type) 3665 if (2 == mal_type)
3634 { 3666 {
@@ -3649,7 +3681,7 @@ handle_peer_pull_reply (void *cls,
3649 i, 3681 i,
3650 GNUNET_i2s (&peers[i])); 3682 GNUNET_i2s (&peers[i]));
3651 3683
3652 #ifdef ENABLE_MALICIOUS 3684 #if ENABLE_MALICIOUS
3653 if ((NULL != att_peer_set) && 3685 if ((NULL != att_peer_set) &&
3654 (1 == mal_type || 3 == mal_type)) 3686 (1 == mal_type || 3 == mal_type))
3655 { /* Add attacked peer to local list */ 3687 { /* Add attacked peer to local list */
@@ -3670,25 +3702,30 @@ handle_peer_pull_reply (void *cls,
3670 } 3702 }
3671 #endif /* ENABLE_MALICIOUS */ 3703 #endif /* ENABLE_MALICIOUS */
3672 /* Make sure we 'know' about this peer */ 3704 /* Make sure we 'know' about this peer */
3673 (void) insert_peer (channel_ctx->peer_ctx->sub, &peers[i]); 3705 (void) insert_peer (channel_ctx->peer_ctx->sub,
3706 &peers[i]);
3674 3707
3675 if (GNUNET_YES == check_peer_valid (channel_ctx->peer_ctx->sub->valid_peers, 3708 if (GNUNET_YES == check_peer_valid (channel_ctx->peer_ctx->sub->valid_peers,
3676 &peers[i])) 3709 &peers[i]))
3677 { 3710 {
3678 CustomPeerMap_put (channel_ctx->peer_ctx->sub->pull_map, &peers[i]); 3711 CustomPeerMap_put (channel_ctx->peer_ctx->sub->pull_map,
3712 &peers[i]);
3679 } 3713 }
3680 else 3714 else
3681 { 3715 {
3682 schedule_operation (channel_ctx->peer_ctx, 3716 schedule_operation (channel_ctx->peer_ctx,
3683 insert_in_pull_map, 3717 insert_in_pull_map,
3684 channel_ctx->peer_ctx->sub); /* cls */ 3718 channel_ctx->peer_ctx->sub); /* cls */
3685 (void) issue_peer_online_check (channel_ctx->peer_ctx->sub, &peers[i]); 3719 (void) issue_peer_online_check (channel_ctx->peer_ctx->sub,
3720 &peers[i]);
3686 } 3721 }
3687 } 3722 }
3688 3723
3689 UNSET_PEER_FLAG (get_peer_ctx (channel_ctx->peer_ctx->sub->peer_map, sender), 3724 UNSET_PEER_FLAG (get_peer_ctx (channel_ctx->peer_ctx->sub->peer_map,
3725 sender),
3690 Peers_PULL_REPLY_PENDING); 3726 Peers_PULL_REPLY_PENDING);
3691 clean_peer (channel_ctx->peer_ctx->sub, sender); 3727 clean_peer (channel_ctx->peer_ctx->sub,
3728 sender);
3692 3729
3693 GNUNET_break_op (check_peer_known (channel_ctx->peer_ctx->sub->peer_map, 3730 GNUNET_break_op (check_peer_known (channel_ctx->peer_ctx->sub->peer_map,
3694 sender)); 3731 sender));
@@ -3812,7 +3849,7 @@ send_push (struct PeerContext *peer_ctx)
3812} 3849}
3813 3850
3814 3851
3815#ifdef ENABLE_MALICIOUS 3852#if ENABLE_MALICIOUS
3816 3853
3817 3854
3818/** 3855/**
@@ -4534,7 +4571,7 @@ shutdown_task (void *cls)
4534 } 4571 }
4535 GNUNET_CADET_disconnect (cadet_handle); 4572 GNUNET_CADET_disconnect (cadet_handle);
4536 cadet_handle = NULL; 4573 cadet_handle = NULL;
4537#ifdef ENABLE_MALICIOUS 4574#if ENABLE_MALICIOUS
4538 struct AttackedPeer *tmp_att_peer; 4575 struct AttackedPeer *tmp_att_peer;
4539 GNUNET_array_grow (mal_peers, 4576 GNUNET_array_grow (mal_peers,
4540 num_mal_peers, 4577 num_mal_peers,
@@ -4647,7 +4684,7 @@ run (void *cls,
4647 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 4684 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
4648 "STARTING SERVICE (rps) for peer [%s]\n", 4685 "STARTING SERVICE (rps) for peer [%s]\n",
4649 GNUNET_i2s (&own_identity)); 4686 GNUNET_i2s (&own_identity));
4650#ifdef ENABLE_MALICIOUS 4687#if ENABLE_MALICIOUS
4651 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 4688 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
4652 "Malicious execution compiled in.\n"); 4689 "Malicious execution compiled in.\n");
4653#endif /* ENABLE_MALICIOUS */ 4690#endif /* ENABLE_MALICIOUS */
@@ -4740,7 +4777,7 @@ GNUNET_SERVICE_MAIN
4740 GNUNET_MESSAGE_TYPE_RPS_CS_SEED, 4777 GNUNET_MESSAGE_TYPE_RPS_CS_SEED,
4741 struct GNUNET_RPS_CS_SeedMessage, 4778 struct GNUNET_RPS_CS_SeedMessage,
4742 NULL), 4779 NULL),
4743#ifdef ENABLE_MALICIOUS 4780#if ENABLE_MALICIOUS
4744 GNUNET_MQ_hd_var_size (client_act_malicious, 4781 GNUNET_MQ_hd_var_size (client_act_malicious,
4745 GNUNET_MESSAGE_TYPE_RPS_ACT_MALICIOUS, 4782 GNUNET_MESSAGE_TYPE_RPS_ACT_MALICIOUS,
4746 struct GNUNET_RPS_CS_ActMaliciousMessage, 4783 struct GNUNET_RPS_CS_ActMaliciousMessage,
diff --git a/src/rps/gnunet-service-rps_custommap.c b/src/rps/gnunet-service-rps_custommap.c
index 18a433d6b..d3cc8d104 100644
--- a/src/rps/gnunet-service-rps_custommap.c
+++ b/src/rps/gnunet-service-rps_custommap.c
@@ -82,7 +82,8 @@ CustomPeerMap_create (unsigned int len)
82 82
83 c_peer_map = GNUNET_new (struct CustomPeerMap); 83 c_peer_map = GNUNET_new (struct CustomPeerMap);
84 c_peer_map->hash_map = GNUNET_CONTAINER_multihashmap32_create (len); 84 c_peer_map->hash_map = GNUNET_CONTAINER_multihashmap32_create (len);
85 c_peer_map->peer_map = GNUNET_CONTAINER_multipeermap_create (len, GNUNET_NO); 85 c_peer_map->peer_map = GNUNET_CONTAINER_multipeermap_create (len,
86 GNUNET_NO);
86 return c_peer_map; 87 return c_peer_map;
87} 88}
88 89
@@ -129,10 +130,16 @@ CustomPeerMap_put (const struct CustomPeerMap *c_peer_map,
129 p = GNUNET_new (struct GNUNET_PeerIdentity); 130 p = GNUNET_new (struct GNUNET_PeerIdentity);
130 *p = *peer; 131 *p = *peer;
131 GNUNET_assert (p != peer); 132 GNUNET_assert (p != peer);
132 GNUNET_assert (0 == memcmp (p, peer, sizeof(struct GNUNET_PeerIdentity))); 133 GNUNET_assert (0 == memcmp (p,
133 GNUNET_CONTAINER_multipeermap_put (c_peer_map->peer_map, p, index, 134 peer,
135 sizeof(struct GNUNET_PeerIdentity)));
136 GNUNET_CONTAINER_multipeermap_put (c_peer_map->peer_map,
137 p,
138 index,
134 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); 139 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
135 GNUNET_CONTAINER_multihashmap32_put (c_peer_map->hash_map, *index, p, 140 GNUNET_CONTAINER_multihashmap32_put (c_peer_map->hash_map,
141 *index,
142 p,
136 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); 143 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
137 GNUNET_assert (GNUNET_CONTAINER_multihashmap32_size (c_peer_map->hash_map) == 144 GNUNET_assert (GNUNET_CONTAINER_multihashmap32_size (c_peer_map->hash_map) ==
138 GNUNET_CONTAINER_multipeermap_size (c_peer_map->peer_map)); 145 GNUNET_CONTAINER_multipeermap_size (c_peer_map->peer_map));
@@ -194,30 +201,38 @@ CustomPeerMap_remove_peer (const struct CustomPeerMap *c_peer_map,
194 uint32_t *last_index; 201 uint32_t *last_index;
195 struct GNUNET_PeerIdentity *last_p; 202 struct GNUNET_PeerIdentity *last_p;
196 203
197 if (GNUNET_NO == CustomPeerMap_contains_peer (c_peer_map, peer)) 204 if (GNUNET_NO == CustomPeerMap_contains_peer (c_peer_map,
205 peer))
198 { 206 {
199 return GNUNET_NO; 207 return GNUNET_NO;
200 } 208 }
201 index = CustomPeerMap_get_index_pointer (c_peer_map, peer); 209 index = CustomPeerMap_get_index_pointer (c_peer_map,
210 peer);
202 GNUNET_assert (*index < CustomPeerMap_size (c_peer_map)); 211 GNUNET_assert (*index < CustomPeerMap_size (c_peer_map));
203 /* Need to get the pointer stored in the hashmap to free it */ 212 /* Need to get the pointer stored in the hashmap to free it */
204 p = GNUNET_CONTAINER_multihashmap32_get (c_peer_map->hash_map, *index); 213 p = GNUNET_CONTAINER_multihashmap32_get (c_peer_map->hash_map,
214 *index);
205 GNUNET_assert (NULL != p); 215 GNUNET_assert (NULL != p);
206 GNUNET_CONTAINER_multihashmap32_remove_all (c_peer_map->hash_map, *index); 216 GNUNET_CONTAINER_multihashmap32_remove_all (c_peer_map->hash_map,
217 *index);
207 // TODO wrong peerid? 218 // TODO wrong peerid?
208 GNUNET_CONTAINER_multipeermap_remove_all (c_peer_map->peer_map, peer); 219 GNUNET_CONTAINER_multipeermap_remove_all (c_peer_map->peer_map,
220 peer);
209 if (*index != CustomPeerMap_size (c_peer_map)) 221 if (*index != CustomPeerMap_size (c_peer_map))
210 { /* fill 'gap' with peer at last index */ 222 { /* fill 'gap' with peer at last index */
211 last_p = 223 last_p =
212 GNUNET_CONTAINER_multihashmap32_get (c_peer_map->hash_map, 224 GNUNET_CONTAINER_multihashmap32_get (c_peer_map->hash_map,
213 CustomPeerMap_size (c_peer_map)); 225 CustomPeerMap_size (c_peer_map));
214 GNUNET_assert (NULL != last_p); 226 GNUNET_assert (NULL != last_p);
215 last_index = GNUNET_CONTAINER_multipeermap_get (c_peer_map->peer_map, last_p); 227 last_index = GNUNET_CONTAINER_multipeermap_get (c_peer_map->peer_map,
228 last_p);
216 GNUNET_assert (NULL != last_index); 229 GNUNET_assert (NULL != last_index);
217 GNUNET_assert (CustomPeerMap_size (c_peer_map) == *last_index); 230 GNUNET_assert (CustomPeerMap_size (c_peer_map) == *last_index);
218 GNUNET_CONTAINER_multihashmap32_put (c_peer_map->hash_map, *index, last_p, 231 GNUNET_CONTAINER_multihashmap32_put (c_peer_map->hash_map,
232 *index, last_p,
219 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); 233 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY);
220 GNUNET_CONTAINER_multihashmap32_remove_all (c_peer_map->hash_map, *last_index); 234 GNUNET_CONTAINER_multihashmap32_remove_all (c_peer_map->hash_map,
235 *last_index);
221 *last_index = *index; 236 *last_index = *index;
222 } 237 }
223 GNUNET_free (index); 238 GNUNET_free (index);
diff --git a/src/rps/profiler_rps.conf b/src/rps/profiler_rps.conf
index 1369d3fdf..6049da5a0 100644
--- a/src/rps/profiler_rps.conf
+++ b/src/rps/profiler_rps.conf
@@ -83,8 +83,7 @@ BLUETOOTH_QUOTA_OUT = unlimited
83DISABLE_TRY_CONNECT = YES 83DISABLE_TRY_CONNECT = YES
84 84
85[cadet] 85[cadet]
86#OPTIONS=-l /tmp/rps_profiler_logs/cadet-[]-%Y-%m-%d.log 86OPTIONS=-l /tmp/rps_profiler_logs/cadet-[]-%Y-%m-%d.log
87#PREFIX = valgrind
88 87
89#[arm] 88#[arm]
90#GLOBAL_POSTFIX=-l /tmp/rps_profiler_logs/other-[]-%Y-%m-%d.log 89#GLOBAL_POSTFIX=-l /tmp/rps_profiler_logs/other-[]-%Y-%m-%d.log
diff --git a/src/rps/rps-test_util.c b/src/rps/rps-test_util.c
index 7f54feca1..85829f247 100644
--- a/src/rps/rps-test_util.c
+++ b/src/rps/rps-test_util.c
@@ -80,41 +80,36 @@ get_file_handle (const char *name)
80 if (NULL == open_files) 80 if (NULL == open_files)
81 { 81 {
82 open_files = GNUNET_CONTAINER_multihashmap_create (16, 82 open_files = GNUNET_CONTAINER_multihashmap_create (16,
83 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); 83 GNUNET_NO);
84 LOG (GNUNET_ERROR_TYPE_DEBUG,
85 "Created map of open files.\n");
84 } 86 }
85 GNUNET_CRYPTO_hash (name, 87 GNUNET_CRYPTO_hash (name,
86 strnlen (name, 88 strlen (name),
87 512),
88 &hash); 89 &hash);
89 if (GNUNET_NO == GNUNET_CONTAINER_multihashmap_contains (open_files, 90 if (NULL != (fh = GNUNET_CONTAINER_multihashmap_get (open_files,
90 &hash)) 91 &hash)))
91 {
92 fh = GNUNET_DISK_file_open (name,
93 GNUNET_DISK_OPEN_WRITE |
94 GNUNET_DISK_OPEN_CREATE |
95 GNUNET_DISK_OPEN_APPEND,
96 GNUNET_DISK_PERM_USER_READ |
97 GNUNET_DISK_PERM_USER_WRITE |
98 GNUNET_DISK_PERM_GROUP_READ);
99 if (NULL == fh)
100 {
101 LOG (GNUNET_ERROR_TYPE_ERROR,
102 "Opening file `%s' failed.\n",
103 name);
104 GNUNET_assert (0);
105 }
106 GNUNET_CONTAINER_multihashmap_put (open_files,
107 &hash,
108 fh,
109 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY);
110 return fh; 92 return fh;
111 } 93 fh = GNUNET_DISK_file_open (name,
112 else 94 GNUNET_DISK_OPEN_WRITE |
95 GNUNET_DISK_OPEN_CREATE |
96 GNUNET_DISK_OPEN_APPEND,
97 GNUNET_DISK_PERM_USER_READ |
98 GNUNET_DISK_PERM_USER_WRITE |
99 GNUNET_DISK_PERM_GROUP_READ);
100 if (NULL == fh)
113 { 101 {
114 fh = GNUNET_CONTAINER_multihashmap_get (open_files, 102 LOG (GNUNET_ERROR_TYPE_ERROR,
115 &hash); 103 "Opening file `%s' failed.\n",
116 return fh; 104 name);
105 GNUNET_assert (0);
117 } 106 }
107 GNUNET_assert (GNUNET_YES ==
108 GNUNET_CONTAINER_multihashmap_put (open_files,
109 &hash,
110 fh,
111 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
112 return fh;
118} 113}
119 114
120 115
@@ -162,6 +157,7 @@ close_all_files ()
162 close_files_iter, 157 close_files_iter,
163 NULL); 158 NULL);
164 GNUNET_CONTAINER_multihashmap_destroy (open_files); 159 GNUNET_CONTAINER_multihashmap_destroy (open_files);
160 open_files = NULL;
165 return ret; 161 return ret;
166} 162}
167 163
@@ -491,6 +487,7 @@ static int ensure_folder_exist (void)
491 } 487 }
492 if (GNUNET_YES != GNUNET_DISK_directory_test ("/tmp/rps/", GNUNET_NO)) 488 if (GNUNET_YES != GNUNET_DISK_directory_test ("/tmp/rps/", GNUNET_NO))
493 { 489 {
490 LOG (GNUNET_ERROR_TYPE_ERROR, "Could not create directory `/tmp/rps'\n");
494 return GNUNET_SYSERR; 491 return GNUNET_SYSERR;
495 } 492 }
496 return GNUNET_YES; 493 return GNUNET_YES;
diff --git a/src/rps/rps-test_util.h b/src/rps/rps-test_util.h
index cf15a9909..484d0f7da 100644
--- a/src/rps/rps-test_util.h
+++ b/src/rps/rps-test_util.h
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -28,7 +28,7 @@
28#ifndef RPS_TEST_UTIL_H 28#ifndef RPS_TEST_UTIL_H
29#define RPS_TEST_UTIL_H 29#define RPS_TEST_UTIL_H
30 30
31#define TO_FILE 1 31#define TO_FILE 0
32 32
33 33
34char * 34char *
diff --git a/src/rps/rps.h b/src/rps/rps.h
index ef968ffbb..5bfef93b0 100644
--- a/src/rps/rps.h
+++ b/src/rps/rps.h
@@ -79,7 +79,7 @@ struct GNUNET_RPS_CS_SeedMessage
79 /* Followed by num_peers * GNUNET_PeerIdentity */ 79 /* Followed by num_peers * GNUNET_PeerIdentity */
80}; 80};
81 81
82#ifdef ENABLE_MALICIOUS 82#if ENABLE_MALICIOUS
83/** 83/**
84 * Message from client to service to turn service malicious. 84 * Message from client to service to turn service malicious.
85 */ 85 */
diff --git a/src/rps/rps_api.c b/src/rps/rps_api.c
index 6fac4cf6f..d0b241a2b 100644
--- a/src/rps/rps_api.c
+++ b/src/rps/rps_api.c
@@ -806,7 +806,7 @@ GNUNET_RPS_seed_ids (struct GNUNET_RPS_Handle *h,
806} 806}
807 807
808 808
809#ifdef ENABLE_MALICIOUS 809#if ENABLE_MALICIOUS
810/** 810/**
811 * Turn RPS service to act malicious. 811 * Turn RPS service to act malicious.
812 * 812 *
diff --git a/src/rps/test_rps.c b/src/rps/test_rps.c
index 126cc5dec..26066bf10 100644
--- a/src/rps/test_rps.c
+++ b/src/rps/test_rps.c
@@ -1357,7 +1357,7 @@ static void mal_init_peer (struct RPSPeer *rps_peer)
1357static void 1357static void
1358mal_pre (struct RPSPeer *rps_peer, struct GNUNET_RPS_Handle *h) 1358mal_pre (struct RPSPeer *rps_peer, struct GNUNET_RPS_Handle *h)
1359{ 1359{
1360 #ifdef ENABLE_MALICIOUS 1360 #if ENABLE_MALICIOUS
1361 uint32_t num_mal_peers; 1361 uint32_t num_mal_peers;
1362 1362
1363 GNUNET_assert ( (1 >= portion) && 1363 GNUNET_assert ( (1 >= portion) &&
@@ -1388,7 +1388,7 @@ mal_cb (struct RPSPeer *rps_peer)
1388 return; 1388 return;
1389 } 1389 }
1390 1390
1391 #ifdef ENABLE_MALICIOUS 1391 #if ENABLE_MALICIOUS
1392 GNUNET_assert ( (1 >= portion) && 1392 GNUNET_assert ( (1 >= portion) &&
1393 (0 < portion) ); 1393 (0 < portion) );
1394 num_mal_peers = round (portion * num_peers); 1394 num_mal_peers = round (portion * num_peers);
diff --git a/src/rps/test_rps.conf b/src/rps/test_rps.conf
index 1555a71a5..c22113af5 100644
--- a/src/rps/test_rps.conf
+++ b/src/rps/test_rps.conf
@@ -82,7 +82,7 @@ DISABLE_TRY_CONNECT = YES
82 82
83[cadet] 83[cadet]
84#OPTIONS=-l /tmp/rps_profiler_logs/cadet-[]-%Y-%m-%d.log 84#OPTIONS=-l /tmp/rps_profiler_logs/cadet-[]-%Y-%m-%d.log
85#PREFIX = valgrind 85#PREFIX = valgrind --log-file=/tmp/rps/valgrind_gnunet-service-cadet_%p
86 86
87#[arm] 87#[arm]
88#GLOBAL_POSTFIX=-l /tmp/rps_profiler_logs/other-[]-%Y-%m-%d.log 88#GLOBAL_POSTFIX=-l /tmp/rps_profiler_logs/other-[]-%Y-%m-%d.log
diff --git a/src/secretsharing/gnunet-service-secretsharing.c b/src/secretsharing/gnunet-service-secretsharing.c
index d4c01fedb..1ffde0436 100644
--- a/src/secretsharing/gnunet-service-secretsharing.c
+++ b/src/secretsharing/gnunet-service-secretsharing.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -898,7 +898,9 @@ restore_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
898 GNUNET_assert (NULL != (big_b = gcry_mpi_new (0))); 898 GNUNET_assert (NULL != (big_b = gcry_mpi_new (0)));
899 899
900 // a = (N,0)^T 900 // a = (N,0)^T
901 GNUNET_CRYPTO_mpi_scan_unsigned (&a_1, ppub, sizeof (struct GNUNET_CRYPTO_PaillierPublicKey)); 901 GNUNET_CRYPTO_mpi_scan_unsigned (&a_1,
902 ppub,
903 sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
902 GNUNET_assert (NULL != (a_2 = gcry_mpi_new (0))); 904 GNUNET_assert (NULL != (a_2 = gcry_mpi_new (0)));
903 gcry_mpi_set_ui (a_2, 0); 905 gcry_mpi_set_ui (a_2, 0);
904 // b = (x,1)^T 906 // b = (x,1)^T
@@ -957,15 +959,9 @@ restore_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
957 gcry_mpi_set (big_b, big_t); 959 gcry_mpi_set (big_b, big_t);
958 } 960 }
959 961
960 { 962 gcry_mpi_set (xres, b_2);
961 gcry_mpi_t paillier_n; 963 gcry_mpi_invm (xres, xres, elgamal_q);
962 964 gcry_mpi_mulm (xres, xres, b_1, elgamal_q);
963 GNUNET_CRYPTO_mpi_scan_unsigned (&paillier_n, ppub, sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
964
965 gcry_mpi_set (xres, b_2);
966 gcry_mpi_invm (xres, xres, elgamal_q);
967 gcry_mpi_mulm (xres, xres, b_1, elgamal_q);
968 }
969 965
970 gcry_mpi_release (a_1); 966 gcry_mpi_release (a_1);
971 gcry_mpi_release (a_2); 967 gcry_mpi_release (a_2);
@@ -984,7 +980,8 @@ restore_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
984 980
985 981
986static void 982static void
987get_fair_encryption_challenge (const struct GNUNET_SECRETSHARING_FairEncryption *fe, gcry_mpi_t e) 983get_fair_encryption_challenge (const struct GNUNET_SECRETSHARING_FairEncryption *fe,
984 gcry_mpi_t *e)
988{ 985{
989 struct { 986 struct {
990 struct GNUNET_CRYPTO_PaillierCiphertext c; 987 struct GNUNET_CRYPTO_PaillierCiphertext c;
@@ -994,18 +991,27 @@ get_fair_encryption_challenge (const struct GNUNET_SECRETSHARING_FairEncryption
994 } hash_data; 991 } hash_data;
995 struct GNUNET_HashCode e_hash; 992 struct GNUNET_HashCode e_hash;
996 993
994 memset (&hash_data,
995 0,
996 sizeof (hash_data));
997 GNUNET_memcpy (&hash_data.c, &fe->c, sizeof (struct GNUNET_CRYPTO_PaillierCiphertext)); 997 GNUNET_memcpy (&hash_data.c, &fe->c, sizeof (struct GNUNET_CRYPTO_PaillierCiphertext));
998 GNUNET_memcpy (&hash_data.h, &fe->h, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8); 998 GNUNET_memcpy (&hash_data.h, &fe->h, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8);
999 GNUNET_memcpy (&hash_data.t1, &fe->t1, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8); 999 GNUNET_memcpy (&hash_data.t1, &fe->t1, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8);
1000 GNUNET_memcpy (&hash_data.t2, &fe->t2, GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8); 1000 GNUNET_memcpy (&hash_data.t2, &fe->t2, GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8);
1001 1001 GNUNET_CRYPTO_hash (&hash_data,
1002 GNUNET_CRYPTO_mpi_scan_unsigned (&e, &e_hash, sizeof (struct GNUNET_HashCode)); 1002 sizeof (hash_data),
1003 gcry_mpi_mod (e, e, elgamal_q); 1003 &e_hash);
1004 /* This allocates "e" */
1005 GNUNET_CRYPTO_mpi_scan_unsigned (e,
1006 &e_hash,
1007 sizeof (struct GNUNET_HashCode));
1008 gcry_mpi_mod (*e, *e, elgamal_q);
1004} 1009}
1005 1010
1006 1011
1007static int 1012static int
1008verify_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub, const struct GNUNET_SECRETSHARING_FairEncryption *fe) 1013verify_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1014 const struct GNUNET_SECRETSHARING_FairEncryption *fe)
1009{ 1015{
1010 gcry_mpi_t n; 1016 gcry_mpi_t n;
1011 gcry_mpi_t n_sq; 1017 gcry_mpi_t n_sq;
@@ -1023,11 +1029,13 @@ verify_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub, const struct GN
1023 GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0))); 1029 GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0)));
1024 GNUNET_assert (NULL != (tmp1 = gcry_mpi_new (0))); 1030 GNUNET_assert (NULL != (tmp1 = gcry_mpi_new (0)));
1025 GNUNET_assert (NULL != (tmp2 = gcry_mpi_new (0))); 1031 GNUNET_assert (NULL != (tmp2 = gcry_mpi_new (0)));
1026 GNUNET_assert (NULL != (e = gcry_mpi_new (0)));
1027 1032
1028 get_fair_encryption_challenge (fe, e); 1033 get_fair_encryption_challenge (fe,
1034 &e /* this allocates e */);
1029 1035
1030 GNUNET_CRYPTO_mpi_scan_unsigned (&n, ppub, sizeof (struct GNUNET_CRYPTO_PaillierPublicKey)); 1036 GNUNET_CRYPTO_mpi_scan_unsigned (&n,
1037 ppub,
1038 sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
1031 GNUNET_CRYPTO_mpi_scan_unsigned (&t1, fe->t1, GNUNET_CRYPTO_PAILLIER_BITS / 8); 1039 GNUNET_CRYPTO_mpi_scan_unsigned (&t1, fe->t1, GNUNET_CRYPTO_PAILLIER_BITS / 8);
1032 GNUNET_CRYPTO_mpi_scan_unsigned (&z, fe->z, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8); 1040 GNUNET_CRYPTO_mpi_scan_unsigned (&z, fe->z, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8);
1033 GNUNET_CRYPTO_mpi_scan_unsigned (&y, fe->h, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8); 1041 GNUNET_CRYPTO_mpi_scan_unsigned (&y, fe->h, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8);
@@ -1096,7 +1104,9 @@ cleanup:
1096 * @param[out] fe the fair encryption 1104 * @param[out] fe the fair encryption
1097 */ 1105 */
1098static void 1106static void
1099encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub, struct GNUNET_SECRETSHARING_FairEncryption *fe) 1107encrypt_fair (gcry_mpi_t v,
1108 const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1109 struct GNUNET_SECRETSHARING_FairEncryption *fe)
1100{ 1110{
1101 gcry_mpi_t r; 1111 gcry_mpi_t r;
1102 gcry_mpi_t s; 1112 gcry_mpi_t s;
@@ -1111,6 +1121,7 @@ encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1111 gcry_mpi_t Y; 1121 gcry_mpi_t Y;
1112 gcry_mpi_t G; 1122 gcry_mpi_t G;
1113 gcry_mpi_t h; 1123 gcry_mpi_t h;
1124
1114 GNUNET_assert (NULL != (r = gcry_mpi_new (0))); 1125 GNUNET_assert (NULL != (r = gcry_mpi_new (0)));
1115 GNUNET_assert (NULL != (s = gcry_mpi_new (0))); 1126 GNUNET_assert (NULL != (s = gcry_mpi_new (0)));
1116 GNUNET_assert (NULL != (t1 = gcry_mpi_new (0))); 1127 GNUNET_assert (NULL != (t1 = gcry_mpi_new (0)));
@@ -1118,13 +1129,14 @@ encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1118 GNUNET_assert (NULL != (z = gcry_mpi_new (0))); 1129 GNUNET_assert (NULL != (z = gcry_mpi_new (0)));
1119 GNUNET_assert (NULL != (w = gcry_mpi_new (0))); 1130 GNUNET_assert (NULL != (w = gcry_mpi_new (0)));
1120 GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0))); 1131 GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0)));
1121 GNUNET_assert (NULL != (e = gcry_mpi_new (0)));
1122 GNUNET_assert (NULL != (u = gcry_mpi_new (0))); 1132 GNUNET_assert (NULL != (u = gcry_mpi_new (0)));
1123 GNUNET_assert (NULL != (Y = gcry_mpi_new (0))); 1133 GNUNET_assert (NULL != (Y = gcry_mpi_new (0)));
1124 GNUNET_assert (NULL != (G = gcry_mpi_new (0))); 1134 GNUNET_assert (NULL != (G = gcry_mpi_new (0)));
1125 GNUNET_assert (NULL != (h = gcry_mpi_new (0))); 1135 GNUNET_assert (NULL != (h = gcry_mpi_new (0)));
1126 1136
1127 GNUNET_CRYPTO_mpi_scan_unsigned (&n, ppub, sizeof (struct GNUNET_CRYPTO_PaillierPublicKey)); 1137 GNUNET_CRYPTO_mpi_scan_unsigned (&n,
1138 ppub,
1139 sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
1128 gcry_mpi_mul (n_sq, n, n); 1140 gcry_mpi_mul (n_sq, n, n);
1129 gcry_mpi_add_ui (G, n, 1); 1141 gcry_mpi_add_ui (G, n, 1);
1130 1142
@@ -1170,8 +1182,8 @@ encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1170 GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8, 1182 GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8,
1171 t2); 1183 t2);
1172 1184
1173 1185 get_fair_encryption_challenge (fe,
1174 get_fair_encryption_challenge (fe, e); 1186 &e /* This allocates "e" */);
1175 1187
1176 // compute z 1188 // compute z
1177 gcry_mpi_mul (z, e, v); 1189 gcry_mpi_mul (z, e, v);
diff --git a/src/secretsharing/secretsharing.conf.in b/src/secretsharing/secretsharing.conf.in
index bd8da6177..df8566abd 100644
--- a/src/secretsharing/secretsharing.conf.in
+++ b/src/secretsharing/secretsharing.conf.in
@@ -8,8 +8,9 @@ ACCEPT_FROM6 = ::1;
8UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-secretsharing.sock 8UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-secretsharing.sock
9UNIX_MATCH_UID = YES 9UNIX_MATCH_UID = YES
10UNIX_MATCH_GID = YES 10UNIX_MATCH_GID = YES
11# PREFIX = valgrind --leak-check=yes
11# DISABLE_SOCKET_FORWARDING = NO 12# DISABLE_SOCKET_FORWARDING = NO
12# USERNAME = 13# USERNAME =
13# MAXBUF = 14# MAXBUF =
14# TIMEOUT = 15# TIMEOUT =
15# DISABLEV6 = 16# DISABLEV6 =
diff --git a/src/secretsharing/test_secretsharing.conf b/src/secretsharing/test_secretsharing.conf
index 3391c88db..7c8e45480 100644
--- a/src/secretsharing/test_secretsharing.conf
+++ b/src/secretsharing/test_secretsharing.conf
@@ -34,3 +34,7 @@ RETURN_LOCAL_ADDRESSES = YES
34[nse] 34[nse]
35START_ON_DEMAND = NO 35START_ON_DEMAND = NO
36 36
37
38[rps]
39START_ON_DEMAND = NO
40IMMEDIATE_START = NO
diff --git a/src/social/.gitignore b/src/social/.gitignore
deleted file mode 100644
index 875aa1105..000000000
--- a/src/social/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
1gnunet-social
2gnunet-service-social
3test_social
diff --git a/src/social/Makefile.am b/src/social/Makefile.am
deleted file mode 100644
index 94a9ba108..000000000
--- a/src/social/Makefile.am
+++ /dev/null
@@ -1,79 +0,0 @@
1# This Makefile.am is in the public domain
2AM_CPPFLAGS = -I$(top_srcdir)/src/include
3
4pkgcfgdir= $(pkgdatadir)/config.d/
5
6libexecdir= $(pkglibdir)/libexec/
7
8pkgcfg_DATA = \
9 social.conf
10
11
12if MINGW
13 WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
14endif
15
16if USE_COVERAGE
17 AM_CFLAGS = --coverage -O0
18 XLIB = -lgcov
19endif
20
21lib_LTLIBRARIES = libgnunetsocial.la
22
23libgnunetsocial_la_SOURCES = \
24 social_api.c social.h
25libgnunetsocial_la_LIBADD = \
26 $(top_builddir)/src/util/libgnunetutil.la \
27 $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
28 $(GN_LIBINTL) $(XLIB)
29libgnunetsocial_la_LDFLAGS = \
30 $(GN_LIB_LDFLAGS) $(WINFLAGS) \
31 -version-info 0:0:0
32
33bin_PROGRAMS = \
34 gnunet-social
35
36libexec_PROGRAMS = \
37 gnunet-service-social
38
39gnunet_social_SOURCES = \
40 gnunet-social.c
41gnunet_social_LDADD = \
42 libgnunetsocial.la \
43 $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
44 $(top_builddir)/src/util/libgnunetutil.la
45
46gnunet_service_social_SOURCES = \
47 gnunet-service-social.c
48gnunet_service_social_LDADD = \
49 $(top_builddir)/src/util/libgnunetutil.la \
50 $(top_builddir)/src/statistics/libgnunetstatistics.la \
51 $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
52 $(top_builddir)/src/psyc/libgnunetpsyc.la \
53 $(top_builddir)/src/identity/libgnunetidentity.la \
54 $(top_builddir)/src/gns/libgnunetgns.la \
55 $(top_builddir)/src/namestore/libgnunetnamestore.la \
56 $(GN_LIBINTL)
57
58
59if HAVE_TESTING
60check_PROGRAMS = \
61 test_social
62endif
63
64if ENABLE_TEST_RUN
65AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset XDG_CONFIG_HOME;
66TESTS = $(check_PROGRAMS)
67endif
68
69test_social_SOURCES = \
70 test_social.c
71test_social_LDADD = \
72 libgnunetsocial.la \
73 $(top_builddir)/src/testing/libgnunettesting.la \
74 $(top_builddir)/src/util/libgnunetutil.la \
75 $(top_builddir)/src/psycutil/libgnunetpsycutil.la \
76 $(top_builddir)/src/identity/libgnunetidentity.la
77
78EXTRA_DIST = \
79 test_social.conf
diff --git a/src/social/gnunet-service-social.c b/src/social/gnunet-service-social.c
deleted file mode 100644
index 33fabae5d..000000000
--- a/src/social/gnunet-service-social.c
+++ /dev/null
@@ -1,3760 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file social/gnunet-service-social.c
23 * @brief Social service
24 * @author Gabor X Toth
25 */
26
27#include <inttypes.h>
28#include <strings.h>
29
30#include "platform.h"
31#include "gnunet_util_lib.h"
32#include "gnunet_constants.h"
33#include "gnunet_protocols.h"
34#include "gnunet_identity_service.h"
35#include "gnunet_namestore_service.h"
36#include "gnunet_gns_service.h"
37#include "gnunet_statistics_service.h"
38#include "gnunet_psyc_service.h"
39#include "gnunet_psyc_util_lib.h"
40#include "gnunet_social_service.h"
41#include "social.h"
42
43
44/**
45 * Handle to our current configuration.
46 */
47static const struct GNUNET_CONFIGURATION_Handle *cfg;
48
49/**
50 * Service handle.
51 */
52static struct GNUNET_SERVICE_Handle *service;
53
54/* Handles to other services */
55static struct GNUNET_IDENTITY_Handle *id;
56static struct GNUNET_GNS_Handle *gns;
57static struct GNUNET_NAMESTORE_Handle *namestore;
58static struct GNUNET_STATISTICS_Handle *stats;
59
60/**
61 * ID of this peer.
62 */
63static struct GNUNET_PeerIdentity this_peer;
64
65/**
66 * All connected hosts.
67 * H(place_pub_key) -> struct Host
68 */
69static struct GNUNET_CONTAINER_MultiHashMap *hosts;
70
71/**
72 * All connected guests.
73 * H(place_pub_key) -> struct Guest
74 */
75static struct GNUNET_CONTAINER_MultiHashMap *guests;
76
77/**
78 * Connected guests per place.
79 * H(place_pub_key) -> ego_pub_key -> struct Guest
80 */
81static struct GNUNET_CONTAINER_MultiHashMap *place_guests;
82
83/**
84 * Places entered as host or guest.
85 * H(place_pub_key) -> struct HostEnterRequest OR struct GuestEnterRequest
86 */
87static struct GNUNET_CONTAINER_MultiHashMap *places;
88
89/**
90 * Places entered per application.
91 * H(app_id) -> H(place_pub_key) -> NULL
92 */
93static struct GNUNET_CONTAINER_MultiHashMap *apps_places;
94
95/**
96 * Application subscriptions per place.
97 * H(place_pub_key) -> H(app_id)
98 */
99//static struct GNUNET_CONTAINER_MultiHashMap *places_apps;
100
101/**
102 * Connected applications.
103 * H(app_id) -> struct Application
104 */
105static struct GNUNET_CONTAINER_MultiHashMap *apps;
106
107/**
108 * All egos.
109 * H(ego_pub_key) -> struct Ego
110 */
111static struct GNUNET_CONTAINER_MultiHashMap *egos;
112
113/**
114 * Directory for storing social data.
115 * Default: $GNUNET_DATA_HOME/social
116 */
117static char *dir_social;
118
119/**
120 * Directory for storing place data.
121 * $dir_social/places
122 */
123static char *dir_places;
124
125/**
126 * Directory for storing app data.
127 * $dir_social/apps
128 */
129static char *dir_apps;
130
131
132/**
133 * Message fragment transmission queue.
134 */
135struct FragmentTransmitQueue
136{
137 struct FragmentTransmitQueue *prev;
138 struct FragmentTransmitQueue *next;
139
140 struct GNUNET_SERVICE_Client *client;
141
142 /**
143 * Pointer to the next message part inside the data after this struct.
144 */
145 struct GNUNET_MessageHeader *next_part;
146
147 /**
148 * Size of message.
149 */
150 uint16_t size;
151
152 /**
153 * @see enum GNUNET_PSYC_MessageState
154 */
155 uint8_t state;
156
157 /* Followed by one or more message parts. */
158};
159
160
161/**
162 * Message transmission queue.
163 */
164struct MessageTransmitQueue
165{
166 struct MessageTransmitQueue *prev;
167 struct MessageTransmitQueue *next;
168
169 struct FragmentTransmitQueue *frags_head;
170 struct FragmentTransmitQueue *frags_tail;
171
172 struct GNUNET_SERVICE_Client *client;
173};
174
175/**
176 * List of connected clients.
177 */
178struct ClientListItem
179{
180 struct ClientListItem *prev;
181 struct ClientListItem *next;
182
183 struct GNUNET_SERVICE_Client *client;
184};
185
186
187/**
188 * Common part of the client context for both a host and guest.
189 */
190struct Place
191{
192 struct ClientListItem *clients_head;
193 struct ClientListItem *clients_tail;
194
195 struct MessageTransmitQueue *tmit_msgs_head;
196 struct MessageTransmitQueue *tmit_msgs_tail;
197
198 struct GNUNET_PSYC_Channel *channel;
199
200 /**
201 * Private key of home in case of a host.
202 */
203 struct GNUNET_CRYPTO_EddsaPublicKey key;
204
205 /**
206 * Public key of place.
207 */
208 struct GNUNET_CRYPTO_EddsaPublicKey pub_key;
209
210 /**
211 * Hash of @a pub_key.
212 */
213 struct GNUNET_HashCode pub_key_hash;
214
215 /**
216 * Private key of ego.
217 */
218 struct GNUNET_CRYPTO_EcdsaPrivateKey ego_key;
219
220 /**
221 * Public key of ego.
222 */
223 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
224
225 /**
226 * Hash of @a ego_pub_key.
227 */
228 struct GNUNET_HashCode ego_pub_hash;
229
230 /**
231 * Slicer for processing incoming messages.
232 */
233 struct GNUNET_PSYC_Slicer *slicer;
234
235 /**
236 * Last message ID received for the place.
237 * 0 if there is no such message.
238 */
239 uint64_t max_message_id;
240
241 /**
242 * Offset where the file is currently being written.
243 */
244 uint64_t file_offset;
245
246 /**
247 * Whether or not to save the file (#GNUNET_YES or #GNUNET_NO)
248 */
249 uint8_t file_save;
250
251 /**
252 * Is this place ready to receive messages from client?
253 * #GNUNET_YES or #GNUNET_NO
254 */
255 uint8_t is_ready;
256
257 /**
258 * Is the client disconnecting?
259 * #GNUNET_YES or #GNUNET_NO
260 */
261 uint8_t is_disconnecting;
262
263 /**
264 * Is this a host (#GNUNET_YES), or guest (#GNUNET_NO)?
265 */
266 uint8_t is_host;
267
268 union {
269 struct Host *host;
270 struct Guest *guest;
271 };
272};
273
274
275/**
276 * Client context for a host.
277 */
278struct Host
279{
280 /**
281 * Place struct common for Host and Guest
282 */
283 struct Place place;
284
285 /**
286 * Handle for the multicast origin.
287 */
288 struct GNUNET_PSYC_Master *master;
289
290 /**
291 * Transmit handle for multicast.
292 */
293 struct GNUNET_PSYC_MasterTransmitHandle *tmit_handle;
294
295 /**
296 * Incoming join requests.
297 * guest_key -> struct GNUNET_PSYC_JoinHandle *
298 */
299 struct GNUNET_CONTAINER_MultiHashMap *join_reqs;
300
301 /**
302 * Messages being relayed.
303 */
304 struct GNUNET_CONTAINER_MultiHashMap *relay_msgs;
305
306 /**
307 * @see enum GNUNET_PSYC_Policy
308 */
309 enum GNUNET_PSYC_Policy policy;
310};
311
312
313/**
314 * Client context for a guest.
315 */
316struct Guest
317{
318 /**
319 * Place struct common for Host and Guest.
320 */
321 struct Place place;
322
323 /**
324 * Handle for the PSYC slave.
325 */
326 struct GNUNET_PSYC_Slave *slave;
327
328 /**
329 * Transmit handle for multicast.
330 */
331 struct GNUNET_PSYC_SlaveTransmitHandle *tmit_handle;
332
333 /**
334 * Peer identity of the origin.
335 */
336 struct GNUNET_PeerIdentity origin;
337
338 /**
339 * Number of items in @a relays.
340 */
341 uint32_t relay_count;
342
343 /**
344 * Relays that multicast can use to connect.
345 */
346 struct GNUNET_PeerIdentity *relays;
347
348 /**
349 * Join request to be transmitted to the master on join.
350 */
351 struct GNUNET_MessageHeader *join_req; // FIXME: not used!
352
353 /**
354 * Join decision received from PSYC.
355 */
356 struct GNUNET_PSYC_JoinDecisionMessage *join_dcsn;
357
358 /**
359 * Join flags for the PSYC service.
360 */
361 enum GNUNET_PSYC_SlaveJoinFlags join_flags;
362};
363
364
365/**
366 * Context for a client.
367 */
368struct Client
369{
370 /**
371 * Client handle.
372 */
373 struct GNUNET_SERVICE_Client *client;
374
375 /**
376 * Place where the client entered.
377 */
378 struct Place *place;
379
380 /**
381 * Message queue for the message currently being transmitted
382 * by this client.
383 */
384 struct MessageTransmitQueue *tmit_msg;
385
386 /**
387 * ID for application clients.
388 */
389 char *app_id;
390};
391
392
393struct Application
394{
395 struct ClientListItem *clients_head;
396 struct ClientListItem *clients_tail;
397};
398
399
400struct Ego {
401 struct GNUNET_CRYPTO_EcdsaPrivateKey key;
402 char *name;
403};
404
405
406struct OperationClosure
407{
408 struct Client *client;
409 uint64_t op_id;
410 uint32_t flags;
411};
412
413
414static int
415psyc_transmit_message (struct Place *plc);
416
417
418/**
419 * Clean up place data structures after a client disconnected.
420 *
421 * @param cls the `struct Place` to clean up
422 */
423static void
424cleanup_place (void *cls);
425
426
427static struct MessageTransmitQueue *
428psyc_transmit_queue_message (struct Place *plc,
429 struct GNUNET_SERVICE_Client *client,
430 size_t data_size,
431 const void *data,
432 uint16_t first_ptype, uint16_t last_ptype,
433 struct MessageTransmitQueue *tmit_msg);
434
435
436static int
437place_entry_cleanup (void *cls,
438 const struct GNUNET_HashCode *key,
439 void *value)
440{
441 struct Place *plc = value;
442
443 cleanup_place (plc);
444 return GNUNET_YES;
445}
446
447
448/**
449 * Task run during shutdown.
450 *
451 * @param cls unused
452 */
453static void
454shutdown_task (void *cls)
455{
456 GNUNET_CONTAINER_multihashmap_iterate (hosts, place_entry_cleanup, NULL);
457 GNUNET_CONTAINER_multihashmap_iterate (guests, place_entry_cleanup, NULL);
458
459 if (NULL != id)
460 {
461 GNUNET_IDENTITY_disconnect (id);
462 id = NULL;
463 }
464 if (NULL != namestore)
465 {
466 GNUNET_NAMESTORE_disconnect (namestore);
467 namestore = NULL;
468 }
469 if (NULL != gns)
470 {
471 GNUNET_GNS_disconnect (gns);
472 gns = NULL;
473 }
474 if (NULL != stats)
475 {
476 GNUNET_STATISTICS_destroy (stats, GNUNET_YES);
477 stats = NULL;
478 }
479}
480
481
482/**
483 * Clean up host data structures after a client disconnected.
484 */
485static void
486cleanup_host (struct Host *hst)
487{
488 struct Place *plc = &hst->place;
489
490 GNUNET_CONTAINER_multihashmap_destroy (hst->join_reqs);
491 GNUNET_CONTAINER_multihashmap_destroy (hst->relay_msgs);
492 GNUNET_CONTAINER_multihashmap_remove (hosts, &plc->pub_key_hash, plc);
493}
494
495
496/**
497 * Clean up guest data structures after a client disconnected.
498 */
499static void
500cleanup_guest (struct Guest *gst)
501{
502 struct Place *plc = &gst->place;
503 struct GNUNET_CONTAINER_MultiHashMap *
504 plc_gst = GNUNET_CONTAINER_multihashmap_get (place_guests,
505 &plc->pub_key_hash);
506 if (NULL != plc_gst)
507 {
508 GNUNET_CONTAINER_multihashmap_remove (plc_gst, &plc->ego_pub_hash, gst);
509
510 if (0 == GNUNET_CONTAINER_multihashmap_size (plc_gst))
511 {
512 GNUNET_CONTAINER_multihashmap_remove (place_guests, &plc->pub_key_hash,
513 plc_gst);
514 GNUNET_CONTAINER_multihashmap_destroy (plc_gst);
515 }
516 }
517 GNUNET_CONTAINER_multihashmap_remove (guests, &plc->pub_key_hash, gst);
518 if (NULL != gst->join_req)
519 GNUNET_free (gst->join_req);
520 if (NULL != gst->relays)
521 GNUNET_free (gst->relays);
522 GNUNET_CONTAINER_multihashmap_remove (guests, &plc->pub_key_hash, plc);
523}
524
525
526/**
527 * Clean up place data structures after a client disconnected.
528 *
529 * @param cls the `struct Place` to clean up
530 */
531static void
532cleanup_place (void *cls)
533{
534 struct Place *plc = cls;
535
536 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
537 "cleaning up place %s\n",
538 GNUNET_h2s (&plc->pub_key_hash));
539
540 (GNUNET_YES == plc->is_host)
541 ? cleanup_host ((struct Host *) plc)
542 : cleanup_guest ((struct Guest *) plc);
543
544 GNUNET_PSYC_slicer_destroy (plc->slicer);
545 GNUNET_free (plc);
546}
547
548
549/**
550 * Called whenever a client is disconnected.
551 * Frees our resources associated with that client.
552 *
553 * @param cls closure
554 * @param client identification of the client
555 * @param app_ctx must match @a client
556 */
557static void
558client_notify_disconnect (void *cls,
559 struct GNUNET_SERVICE_Client *client,
560 void *app_ctx)
561{
562 struct Client *c = app_ctx;
563 struct Place *plc = c->place;
564
565 if (NULL != c->app_id)
566 GNUNET_free (c->app_id);
567
568 GNUNET_free (c);
569
570 if (NULL == plc)
571 return; // application client, nothing to do
572
573 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
574 "%p Client (%s) disconnected from place %s\n",
575 plc, (GNUNET_YES == plc->is_host) ? "host" : "guest",
576 GNUNET_h2s (&plc->pub_key_hash));
577
578 struct ClientListItem *cli = plc->clients_head;
579 while (NULL != cli)
580 {
581 if (cli->client == client)
582 {
583 GNUNET_CONTAINER_DLL_remove (plc->clients_head,
584 plc->clients_tail,
585 cli);
586 GNUNET_free (cli);
587 break;
588 }
589 cli = cli->next;
590 }
591 if (GNUNET_YES == plc->is_disconnecting)
592 {
593 GNUNET_PSYC_slicer_destroy (plc->slicer);
594 GNUNET_free (plc);
595 }
596}
597
598
599/**
600 * A new client connected.
601 *
602 * @param cls NULL
603 * @param client client to add
604 * @param mq message queue for @a client
605 * @return @a client
606 */
607static void *
608client_notify_connect (void *cls,
609 struct GNUNET_SERVICE_Client *client,
610 struct GNUNET_MQ_Handle *mq)
611{
612 struct Client *c = GNUNET_new (struct Client);
613
614 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
615 "Client %p connected with queue %p\n",
616 client,
617 mq);
618 c->client = client;
619 return c;
620}
621
622
623/**
624 * Send message to all clients connected to a place and
625 * takes care of freeing @env.
626 */
627static void
628place_send_msg (const struct Place *plc,
629 struct GNUNET_MQ_Envelope *env)
630{
631 struct ClientListItem *cli = plc->clients_head;
632
633 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
634 "%p Sending message to clients of place.\n", plc);
635 while (NULL != cli)
636 {
637 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
638 "Sending message to client %p\n",
639 cli);
640 GNUNET_MQ_send_copy (GNUNET_SERVICE_client_get_mq (cli->client),
641 env);
642 cli = cli->next;
643 }
644 GNUNET_MQ_discard (env);
645}
646
647
648static void
649place_send_leave_ack (struct Place *plc)
650{
651 struct GNUNET_MQ_Envelope *env;
652
653 for (struct ClientListItem *cli = plc->clients_head;
654 NULL != cli;
655 cli = cli->next)
656 {
657 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK);
658 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (cli->client),
659 env);
660 }
661}
662
663
664/**
665 * Send a result code back to the client.
666 *
667 * @param client
668 * Client that should receive the result code.
669 * @param result_code
670 * Code to transmit.
671 * @param op_id
672 * Operation ID in network byte order.
673 * @param data
674 * Data payload or NULL.
675 * @param data_size
676 * Size of @a data.
677 */
678static void
679client_send_result (struct GNUNET_SERVICE_Client *client, uint64_t op_id,
680 int64_t result_code, const void *data, uint16_t data_size)
681{
682 struct GNUNET_MQ_Envelope *env;
683 struct GNUNET_OperationResultMessage *res;
684
685 env = GNUNET_MQ_msg_extra (res,
686 data_size,
687 GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE);
688 res->result_code = GNUNET_htonll (result_code);
689 res->op_id = op_id;
690 if (0 < data_size)
691 GNUNET_memcpy (&res[1], data, data_size);
692 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
693 "%p Sending result to client for operation #%" PRIu64 ": "
694 "%" PRId64 " (size: %u)\n",
695 client, GNUNET_ntohll (op_id), result_code, data_size);
696 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env);
697}
698
699
700static void
701client_send_host_enter_ack (struct GNUNET_SERVICE_Client *client,
702 struct Host *hst, uint32_t result)
703{
704 struct GNUNET_MQ_Envelope *env;
705 struct HostEnterAck *hack;
706 struct Place *plc = &hst->place;
707
708 env = GNUNET_MQ_msg (hack,
709 GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER_ACK);
710 hack->result_code = htonl (result);
711 hack->max_message_id = GNUNET_htonll (plc->max_message_id);
712 hack->place_pub_key = plc->pub_key;
713
714 if (NULL != client)
715 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
716 env);
717 else
718 place_send_msg (plc, env);
719}
720
721
722/**
723 * Called after a PSYC master is started.
724 */
725static void
726psyc_master_started (void *cls, int result, uint64_t max_message_id)
727{
728 struct Host *hst = cls;
729 struct Place *plc = &hst->place;
730 plc->max_message_id = max_message_id;
731 plc->is_ready = GNUNET_YES;
732
733 client_send_host_enter_ack (NULL, hst, result);
734}
735
736
737/**
738 * Called when a PSYC master receives a join request.
739 */
740static void
741psyc_recv_join_request (void *cls,
742 const struct GNUNET_PSYC_JoinRequestMessage *req,
743 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
744 const struct GNUNET_PSYC_Message *join_msg,
745 struct GNUNET_PSYC_JoinHandle *jh)
746{
747 struct Host *hst = cls;
748 struct GNUNET_HashCode slave_key_hash;
749 GNUNET_CRYPTO_hash (slave_key, sizeof (*slave_key), &slave_key_hash);
750 GNUNET_CONTAINER_multihashmap_put (hst->join_reqs, &slave_key_hash, jh,
751 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
752 place_send_msg (&hst->place,
753 GNUNET_MQ_msg_copy (&req->header));
754}
755
756
757/**
758 * Called after a PSYC slave is connected.
759 */
760static void
761psyc_slave_connected (void *cls, int result, uint64_t max_message_id)
762{
763 struct GNUNET_PSYC_CountersResultMessage *res;
764 struct GNUNET_MQ_Envelope *env;
765 struct Guest *gst = cls;
766 struct Place *plc = &gst->place;
767
768 plc->max_message_id = max_message_id;
769 plc->is_ready = GNUNET_YES;
770 env = GNUNET_MQ_msg (res,
771 GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK);
772 res->result_code =
773 (result != GNUNET_SYSERR) ? htonl (GNUNET_OK) : htonl (GNUNET_SYSERR);
774 res->max_message_id = GNUNET_htonll (plc->max_message_id);
775 place_send_msg (plc, env);
776}
777
778
779static void
780slave_parted_after_join_decision (void *cls)
781{
782 struct Guest *gst = cls;
783
784 GNUNET_assert (NULL != gst->join_dcsn);
785 place_send_msg (&gst->place, GNUNET_MQ_msg_copy (&gst->join_dcsn->header));
786}
787
788
789/**
790 * Called when a PSYC slave receives a join decision.
791 */
792static void
793psyc_recv_join_dcsn (void *cls,
794 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn,
795 int is_admitted,
796 const struct GNUNET_PSYC_Message *join_msg)
797{
798 struct Guest *gst = cls;
799
800 gst->join_dcsn = GNUNET_malloc (dcsn->header.size);
801 GNUNET_memcpy (gst->join_dcsn,
802 dcsn,
803 dcsn->header.size);
804 if (GNUNET_NO == is_admitted)
805 {
806 GNUNET_PSYC_slave_part (gst->slave,
807 GNUNET_NO,
808 &slave_parted_after_join_decision,
809 gst);
810 gst->slave = NULL;
811 return;
812 }
813 place_send_msg (&gst->place, GNUNET_MQ_msg_copy (&gst->join_dcsn->header));
814}
815
816
817/**
818 * Called when a PSYC master or slave receives a message.
819 */
820static void
821psyc_recv_message (void *cls,
822 const struct GNUNET_PSYC_MessageHeader *msg)
823{
824 struct Place *plc = cls;
825
826 char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&msg->slave_pub_key);
827 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
828 "%p Received PSYC message of size %u from %s.\n",
829 plc, ntohs (msg->header.size), str);
830 GNUNET_free (str);
831
832 GNUNET_PSYC_slicer_message (plc->slicer, msg);
833
834 place_send_msg (plc, GNUNET_MQ_msg_copy (&msg->header));
835}
836
837
838/**
839 * Relay a message part received from a guest to the the place.
840 *
841 * @param hst
842 * Host.
843 * @param pmsg
844 * Message part.
845 * @param nym_pub_key
846 * Nym the message is received from.
847 */
848static void
849host_relay_message_part (struct Host *hst,
850 const struct GNUNET_MessageHeader *pmsg,
851 const struct GNUNET_CRYPTO_EcdsaPublicKey *nym_pub_key)
852{
853 /* separate queue per nym */
854 struct GNUNET_HashCode nym_pub_hash;
855 GNUNET_CRYPTO_hash (nym_pub_key, sizeof (*nym_pub_key), &nym_pub_hash);
856
857 struct MessageTransmitQueue *
858 tmit_msg = GNUNET_CONTAINER_multihashmap_get (hst->relay_msgs, &nym_pub_hash);
859
860 uint16_t ptype = ntohs (pmsg->type);
861
862 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == ptype)
863 {
864 /* FIXME: last message was unfinished, cancel & remove from queue */
865 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
866 "FIXME: last message was unfinished.\n");
867 }
868
869 tmit_msg = psyc_transmit_queue_message (&hst->place, NULL, ntohs (pmsg->size),
870 pmsg, ptype, ptype, tmit_msg);
871
872 switch (ptype)
873 {
874 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD:
875 GNUNET_assert (GNUNET_YES == GNUNET_CONTAINER_multihashmap_put
876 (hst->relay_msgs, &nym_pub_hash, tmit_msg,
877 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
878 break;
879 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
880 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
881 GNUNET_assert (GNUNET_YES == GNUNET_CONTAINER_multihashmap_remove
882 (hst->relay_msgs, &nym_pub_hash, tmit_msg));
883 break;
884 }
885}
886
887
888/**
889 * Received a method to be relayed from a guest.
890 */
891static void
892place_recv_relay_method (void *cls,
893 const struct GNUNET_PSYC_MessageHeader *msg,
894 const struct GNUNET_PSYC_MessageMethod *meth,
895 uint64_t message_id,
896 const char *method_name)
897{
898 struct Place *plc = cls;
899
900 if (GNUNET_PSYC_MESSAGE_REQUEST & ntohs (msg->flags)
901 && GNUNET_YES == plc->is_host)
902 {
903 struct Host *hst = cls;
904 host_relay_message_part (hst, &meth->header, &msg->slave_pub_key);
905 }
906}
907
908
909/**
910 * Received a modifier to be relayed from a guest.
911 */
912static void
913place_recv_relay_modifier (void *cls,
914 const struct GNUNET_PSYC_MessageHeader *msg,
915 const struct GNUNET_MessageHeader *pmsg,
916 uint64_t message_id,
917 enum GNUNET_PSYC_Operator oper,
918 const char *name,
919 const void *value,
920 uint16_t value_size,
921 uint16_t full_value_size)
922{
923 struct Place *plc = cls;
924
925 if (GNUNET_PSYC_MESSAGE_REQUEST & ntohs (msg->flags)
926 && GNUNET_YES == plc->is_host)
927 {
928 struct Host *hst = cls;
929 host_relay_message_part (hst, pmsg, &msg->slave_pub_key);
930 }
931}
932
933/**
934 * Received a data fragment to be relayed from a guest.
935 */
936static void
937place_recv_relay_data (void *cls,
938 const struct GNUNET_PSYC_MessageHeader *msg,
939 const struct GNUNET_MessageHeader *pmsg,
940 uint64_t message_id,
941 const void *data,
942 uint16_t data_size)
943{
944 struct Place *plc = cls;
945
946 if (GNUNET_PSYC_MESSAGE_REQUEST & ntohs (msg->flags)
947 && GNUNET_YES == plc->is_host)
948 {
949 struct Host *hst = cls;
950 host_relay_message_part (hst, pmsg, &msg->slave_pub_key);
951 }
952}
953
954
955/**
956 * Received end of message to be relayed from a guest.
957 */
958static void
959place_recv_relay_eom (void *cls,
960 const struct GNUNET_PSYC_MessageHeader *msg,
961 const struct GNUNET_MessageHeader *pmsg,
962 uint64_t message_id,
963 uint8_t is_cancelled)
964{
965 struct Place *plc = cls;
966
967 if (GNUNET_PSYC_MESSAGE_REQUEST & ntohs (msg->flags)
968 && GNUNET_YES == plc->is_host)
969 {
970 struct Host *hst = cls;
971 host_relay_message_part (hst, pmsg, &msg->slave_pub_key);
972 }
973}
974
975
976/**
977 * Received a method to be saved to disk.
978 *
979 * Create a new file for writing the data part of the message into,
980 * if the file does not yet exist.
981 */
982static void
983place_recv_save_method (void *cls,
984 const struct GNUNET_PSYC_MessageHeader *msg,
985 const struct GNUNET_PSYC_MessageMethod *meth,
986 uint64_t message_id,
987 const char *method_name)
988{
989 struct Place *plc = cls;
990 plc->file_offset = 0;
991 plc->file_save = GNUNET_NO;
992
993 char *place_pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (&plc->pub_key);
994 char *filename = NULL;
995 GNUNET_asprintf (&filename, "%s%c" "%s%c" "%s%c" "%" PRIu64 ".part",
996 dir_social, DIR_SEPARATOR,
997 "files", DIR_SEPARATOR,
998 place_pub_str, DIR_SEPARATOR,
999 GNUNET_ntohll (msg->message_id));
1000 GNUNET_free (place_pub_str);
1001
1002 /* save if does not already exist */
1003 if (GNUNET_YES != GNUNET_DISK_file_test (filename))
1004 {
1005 if (0 == GNUNET_DISK_fn_write (filename, NULL, 0,
1006 GNUNET_DISK_PERM_USER_READ
1007 | GNUNET_DISK_PERM_USER_WRITE))
1008 {
1009 plc->file_save = GNUNET_YES;
1010 }
1011 else
1012 {
1013 GNUNET_break (0);
1014 }
1015 }
1016 GNUNET_free (filename);
1017}
1018
1019
1020/**
1021 * Received a data fragment to be saved to disk.
1022 *
1023 * Append data fragment to the file.
1024 */
1025static void
1026place_recv_save_data (void *cls,
1027 const struct GNUNET_PSYC_MessageHeader *msg,
1028 const struct GNUNET_MessageHeader *pmsg,
1029 uint64_t message_id,
1030 const void *data,
1031 uint16_t data_size)
1032{
1033 struct Place *plc = cls;
1034 if (GNUNET_YES != plc->file_save)
1035 return;
1036
1037 char *place_pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (&plc->pub_key);
1038 char *filename = NULL;
1039 GNUNET_asprintf (&filename, "%s%c" "%s%c" "%s%c" "%" PRIu64 ".part",
1040 dir_social, DIR_SEPARATOR,
1041 "files", DIR_SEPARATOR,
1042 place_pub_str, DIR_SEPARATOR,
1043 GNUNET_ntohll (msg->message_id));
1044 GNUNET_free (place_pub_str);
1045 if (GNUNET_SYSERR == GNUNET_DISK_directory_create_for_file (filename))
1046 {
1047 GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "create", filename);
1048 GNUNET_free (filename);
1049 return;
1050 }
1051
1052 struct GNUNET_DISK_FileHandle *
1053 fh = GNUNET_DISK_file_open (filename, GNUNET_DISK_OPEN_WRITE,
1054 GNUNET_DISK_PERM_NONE);
1055 if (NULL != fh)
1056 {
1057 if (plc->file_offset != GNUNET_DISK_file_seek
1058 (fh, plc->file_offset, GNUNET_DISK_SEEK_SET)) {
1059 GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "seek", filename);
1060 GNUNET_DISK_file_close (fh);
1061 GNUNET_free (filename);
1062 return;
1063 }
1064 GNUNET_DISK_file_write (fh, data, data_size);
1065 GNUNET_DISK_file_close (fh);
1066 GNUNET_free (filename);
1067 }
1068 else
1069 {
1070 GNUNET_free (filename);
1071 GNUNET_break (0);
1072 }
1073 plc->file_offset += data_size;
1074}
1075
1076
1077/**
1078 * Received end of message to be saved to disk.
1079 *
1080 * Remove .part ending from the filename.
1081 */
1082static void
1083place_recv_save_eom (void *cls,
1084 const struct GNUNET_PSYC_MessageHeader *msg,
1085 const struct GNUNET_MessageHeader *pmsg,
1086 uint64_t message_id,
1087 uint8_t is_cancelled)
1088{
1089 struct Place *plc = cls;
1090 if (GNUNET_YES != plc->file_save)
1091 return;
1092
1093 char *place_pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (&plc->pub_key);
1094 char *fn = NULL;
1095 GNUNET_asprintf (&fn, "%s%c%s%c%s%c%" PRIu64,
1096 dir_social, DIR_SEPARATOR,
1097 "files", DIR_SEPARATOR,
1098 place_pub_str, DIR_SEPARATOR,
1099 GNUNET_ntohll (msg->message_id));
1100 GNUNET_free (place_pub_str);
1101 char *fn_part = NULL;
1102 GNUNET_asprintf (&fn_part, "%s.part", fn);
1103
1104 if (rename (fn_part, fn)) {
1105 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1106 "Failed to rename %s into %s: %s (%d)\n",
1107 fn_part, fn, strerror (errno), errno);
1108 }
1109
1110 GNUNET_free (fn);
1111 GNUNET_free (fn_part);
1112}
1113
1114
1115/**
1116 * Initialize place data structure.
1117 */
1118static void
1119place_init (struct Place *plc)
1120{
1121 plc->slicer = GNUNET_PSYC_slicer_create ();
1122}
1123
1124
1125/**
1126 * Add a place to the @e places hash map.
1127 *
1128 * @param ereq
1129 * Entry request.
1130 *
1131 * @return #GNUNET_OK if the place was added
1132 * #GNUNET_NO if the place already exists in the hash map
1133 * #GNUNET_SYSERR on error
1134 */
1135static int
1136place_add (const struct PlaceEnterRequest *ereq)
1137{
1138 struct EgoPlacePublicKey ego_place_pub_key = {
1139 .ego_pub_key = ereq->ego_pub_key,
1140 .place_pub_key = ereq->place_pub_key,
1141 };
1142 struct GNUNET_HashCode ego_place_pub_hash;
1143 GNUNET_CRYPTO_hash (&ego_place_pub_key, sizeof (ego_place_pub_key), &ego_place_pub_hash);
1144
1145 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1146 " ego_place_pub_hash = %s\n", GNUNET_h2s (&ego_place_pub_hash));
1147
1148 struct GNUNET_MessageHeader *
1149 place_msg = GNUNET_CONTAINER_multihashmap_get (places, &ego_place_pub_hash);
1150 if (NULL != place_msg)
1151 return GNUNET_NO;
1152
1153 place_msg = GNUNET_copy_message (&ereq->header);
1154 if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (places, &ego_place_pub_hash, place_msg,
1155 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST))
1156 {
1157 GNUNET_break (0);
1158 GNUNET_free (place_msg);
1159 return GNUNET_SYSERR;
1160 }
1161
1162 return GNUNET_OK;
1163}
1164
1165/**
1166 * Add a place to the @e app_places hash map.
1167 *
1168 * @param app_id
1169 * Application ID.
1170 * @param ereq
1171 * Entry request.
1172 *
1173 * @return #GNUNET_OK if the place was added
1174 * #GNUNET_NO if the place already exists in the hash map
1175 * #GNUNET_SYSERR on error
1176 */
1177static int
1178app_place_add (const char *app_id,
1179 const struct PlaceEnterRequest *ereq)
1180{
1181 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1182 "Adding app place to hashmap:\n");
1183 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1184 " app_id = %s\n", app_id);
1185
1186 struct GNUNET_HashCode app_id_hash;
1187 GNUNET_CRYPTO_hash (app_id, strlen (app_id) + 1, &app_id_hash);
1188
1189 struct EgoPlacePublicKey ego_place_pub_key = {
1190 .ego_pub_key = ereq->ego_pub_key,
1191 .place_pub_key = ereq->place_pub_key,
1192 };
1193 struct GNUNET_HashCode ego_place_pub_hash;
1194 GNUNET_CRYPTO_hash (&ego_place_pub_key, sizeof (ego_place_pub_key), &ego_place_pub_hash);
1195
1196 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1197 " ego_place_pub_hash = %s\n", GNUNET_h2s (&ego_place_pub_hash));
1198
1199 struct GNUNET_CONTAINER_MultiHashMap *
1200 app_places = GNUNET_CONTAINER_multihashmap_get (apps_places, &app_id_hash);
1201 if (NULL == app_places)
1202 {
1203 app_places = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
1204 GNUNET_CONTAINER_multihashmap_put (apps_places, &app_id_hash, app_places,
1205 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1206 }
1207
1208 if (GNUNET_YES == GNUNET_CONTAINER_multihashmap_contains (app_places, &ego_place_pub_hash))
1209 return GNUNET_NO;
1210
1211 if (GNUNET_SYSERR == place_add (ereq))
1212 {
1213 return GNUNET_SYSERR;
1214 }
1215
1216 if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (app_places, &ego_place_pub_hash, NULL,
1217 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST))
1218 {
1219 GNUNET_break (0);
1220 return GNUNET_SYSERR;
1221 }
1222 return GNUNET_OK;
1223}
1224
1225
1226/**
1227 * Save place entry message to disk.
1228 *
1229 * @param app_id
1230 * Application ID.
1231 * @param ereq
1232 * Entry request message.
1233 */
1234static int
1235app_place_save (const char *app_id,
1236 const struct PlaceEnterRequest *ereq)
1237{
1238 if (GNUNET_SYSERR == app_place_add (app_id, ereq))
1239 {
1240 GNUNET_assert (0);
1241 }
1242
1243 if (NULL == dir_places)
1244 return GNUNET_SYSERR;
1245
1246 char *ego_pub_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&ereq->ego_pub_key);
1247 char *place_pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (&ereq->place_pub_key);
1248 char *filename = NULL;
1249 GNUNET_asprintf (&filename, "%s%c" "%s%c" "%s%c" "%s",
1250 dir_social, DIR_SEPARATOR,
1251 "places", DIR_SEPARATOR,
1252 ego_pub_str, DIR_SEPARATOR,
1253 place_pub_str);
1254 int ret = GNUNET_DISK_directory_create_for_file (filename);
1255 if (GNUNET_OK != ret
1256 || 0 > GNUNET_DISK_fn_write (filename, ereq, ntohs (ereq->header.size),
1257 GNUNET_DISK_PERM_USER_READ
1258 | GNUNET_DISK_PERM_USER_WRITE))
1259 {
1260 GNUNET_break (0);
1261 ret = GNUNET_SYSERR;
1262 }
1263 GNUNET_free (filename);
1264
1265 if (ret == GNUNET_OK)
1266 {
1267 GNUNET_asprintf (&filename, "%s%c" "%s%c" "%s%c" "%s%c" "%s",
1268 dir_social, DIR_SEPARATOR,
1269 "apps", DIR_SEPARATOR,
1270 app_id, DIR_SEPARATOR,
1271 ego_pub_str, DIR_SEPARATOR,
1272 place_pub_str);
1273 ret = GNUNET_DISK_directory_create_for_file (filename);
1274 if (GNUNET_OK != ret
1275 || 0 > GNUNET_DISK_fn_write (filename, "", 0,
1276 GNUNET_DISK_PERM_USER_READ
1277 | GNUNET_DISK_PERM_USER_WRITE))
1278 {
1279 GNUNET_break (0);
1280 ret = GNUNET_SYSERR;
1281 }
1282 GNUNET_free (filename);
1283 }
1284 GNUNET_free (ego_pub_str);
1285 GNUNET_free (place_pub_str);
1286 return ret;
1287}
1288
1289
1290int
1291app_place_remove (const char *app_id,
1292 const struct GNUNET_CRYPTO_EcdsaPublicKey *ego_pub_key,
1293 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key)
1294{
1295 struct GNUNET_HashCode ego_pub_hash;
1296 struct GNUNET_HashCode place_pub_hash;
1297 GNUNET_CRYPTO_hash (ego_pub_key, sizeof (*ego_pub_key), &ego_pub_hash);
1298 GNUNET_CRYPTO_hash (place_pub_key, sizeof (*place_pub_key), &place_pub_hash);
1299
1300 char *ego_pub_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (ego_pub_key);
1301 char *place_pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (place_pub_key);
1302 char *app_place_filename = NULL;
1303 GNUNET_asprintf (&app_place_filename,
1304 "%s%c" "%s%c" "%s%c" "%s%c" "%s",
1305 dir_social, DIR_SEPARATOR,
1306 "apps", DIR_SEPARATOR,
1307 app_id, DIR_SEPARATOR,
1308 ego_pub_str, DIR_SEPARATOR,
1309 place_pub_str);
1310 GNUNET_free (ego_pub_str);
1311 GNUNET_free (place_pub_str);
1312
1313 struct GNUNET_HashCode app_id_hash;
1314 GNUNET_CRYPTO_hash (app_id, strlen (app_id) + 1, &app_id_hash);
1315
1316 struct GNUNET_CONTAINER_MultiHashMap *
1317 app_places = GNUNET_CONTAINER_multihashmap_get (apps_places, &app_id_hash);
1318
1319 if (NULL != app_places)
1320 GNUNET_CONTAINER_multihashmap_remove (app_places, &place_pub_hash, NULL);
1321
1322 int ret = GNUNET_OK;
1323
1324 if (0 != unlink (app_place_filename))
1325 {
1326 GNUNET_break (0);
1327 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1328 "Error removing app place file: %s: %s (%d)\n",
1329 app_place_filename, strerror (errno), errno);
1330 ret = GNUNET_SYSERR;
1331 }
1332 GNUNET_free (app_place_filename);
1333
1334 return ret;
1335}
1336
1337
1338/**
1339 * Enter place as host.
1340 *
1341 * @param hreq
1342 * Host entry request.
1343 * @param[out] ret_hst
1344 * Returned Host struct.
1345 *
1346 * @return #GNUNET_YES if the host entered the place just now,
1347 * #GNUNET_NO if the place is already entered,
1348 * #GNUNET_SYSERR if place_pub_key was set
1349 * but its private key was not found
1350 */
1351static int
1352host_enter (const struct HostEnterRequest *hreq, struct Host **ret_hst)
1353{
1354 int ret = GNUNET_NO;
1355 struct GNUNET_HashCode place_pub_hash;
1356 GNUNET_CRYPTO_hash (&hreq->place_pub_key, sizeof (hreq->place_pub_key),
1357 &place_pub_hash);
1358 struct Host *hst = GNUNET_CONTAINER_multihashmap_get (hosts, &place_pub_hash);
1359
1360 if (NULL == hst)
1361 {
1362 hst = GNUNET_new (struct Host);
1363 hst->policy = hreq->policy;
1364 hst->join_reqs = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
1365 hst->relay_msgs = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
1366
1367 struct Place *plc = &hst->place;
1368 place_init (plc);
1369 plc->is_host = GNUNET_YES;
1370 plc->pub_key = hreq->place_pub_key;
1371 plc->pub_key_hash = place_pub_hash;
1372
1373 GNUNET_CONTAINER_multihashmap_put (hosts, &plc->pub_key_hash, plc,
1374 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1375 hst->master = GNUNET_PSYC_master_start (cfg, &hreq->place_key, hst->policy,
1376 &psyc_master_started,
1377 &psyc_recv_join_request,
1378 &psyc_recv_message, NULL, hst);
1379 plc->channel = GNUNET_PSYC_master_get_channel (hst->master);
1380 ret = GNUNET_YES;
1381 }
1382
1383 if (NULL != ret_hst)
1384 *ret_hst = hst;
1385 return ret;
1386}
1387
1388
1389static int
1390msg_proc_parse (const struct MsgProcRequest *mpreq,
1391 uint32_t *flags,
1392 const char **method_prefix,
1393 struct GNUNET_HashCode *method_hash)
1394{
1395 ssize_t method_size = ntohs (mpreq->header.size) - sizeof (*mpreq);
1396 uint16_t offset;
1397
1398 if (method_size < 0)
1399 {
1400 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1401 "MsgProcRequest has invalid size\n");
1402 return GNUNET_SYSERR;
1403 }
1404
1405 offset = GNUNET_STRINGS_buffer_tokenize ((const char *) &mpreq[1],
1406 method_size,
1407 1,
1408 method_prefix);
1409 if (0 == offset || offset != method_size || *method_prefix == NULL)
1410 {
1411 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1412 "MsgProcRequest contains invalid method\n");
1413 return GNUNET_SYSERR;
1414 }
1415 GNUNET_CRYPTO_hash (*method_prefix, (size_t) method_size, method_hash);
1416 *flags = ntohl (mpreq->flags);
1417 return GNUNET_OK;
1418}
1419
1420
1421void
1422app_notify_place (const struct GNUNET_MessageHeader *msg,
1423 struct GNUNET_SERVICE_Client *client)
1424{
1425 struct AppPlaceMessage *amsg;
1426 struct GNUNET_MQ_Envelope *env;
1427 uint16_t msg_size = ntohs (msg->size);
1428
1429 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1430 "%p Sending place notification of type %u to client.\n",
1431 client, ntohs (msg->type));
1432 switch (ntohs (msg->type))
1433 {
1434 case GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER:
1435 {
1436 struct HostEnterRequest *hreq = (struct HostEnterRequest *) msg;
1437 if (msg_size < sizeof (struct HostEnterRequest))
1438 return;
1439 env = GNUNET_MQ_msg (amsg,
1440 GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE);
1441 // FIXME: also notify about not entered places
1442 amsg->place_state = GNUNET_SOCIAL_PLACE_STATE_ENTERED;
1443 amsg->is_host = GNUNET_YES;
1444 amsg->ego_pub_key = hreq->ego_pub_key;
1445 amsg->place_pub_key = hreq->place_pub_key;
1446 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1447 env);
1448 break;
1449 }
1450 case GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER:
1451 {
1452 if (msg_size < sizeof (struct GuestEnterRequest))
1453 return;
1454 struct GuestEnterRequest *greq = (struct GuestEnterRequest *) msg;
1455 env = GNUNET_MQ_msg (amsg,
1456 GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE);
1457 // FIXME: also notify about not entered places
1458 amsg->place_state = GNUNET_SOCIAL_PLACE_STATE_ENTERED;
1459 amsg->is_host = GNUNET_NO;
1460 amsg->ego_pub_key = greq->ego_pub_key;
1461 amsg->place_pub_key = greq->place_pub_key;
1462 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1463 env);
1464 break;
1465 }
1466 default:
1467 return;
1468 }
1469}
1470
1471
1472void
1473app_notify_place_end (struct GNUNET_SERVICE_Client *client)
1474{
1475 struct GNUNET_MQ_Envelope *env;
1476
1477 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1478 "%p Sending end of place list notification to client\n",
1479 client);
1480 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE_END);
1481 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1482 env);
1483}
1484
1485
1486void
1487app_notify_ego (struct Ego *ego, struct GNUNET_SERVICE_Client *client)
1488{
1489 struct AppEgoMessage *emsg;
1490 struct GNUNET_MQ_Envelope *env;
1491 size_t name_size = strlen (ego->name) + 1;
1492
1493 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1494 "%p Sending ego notification to client: %s\n",
1495 client, ego->name);
1496 env = GNUNET_MQ_msg_extra (emsg,
1497 name_size,
1498 GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO);
1499 GNUNET_CRYPTO_ecdsa_key_get_public (&ego->key, &emsg->ego_pub_key);
1500 GNUNET_memcpy (&emsg[1], ego->name, name_size);
1501 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1502 env);
1503}
1504
1505
1506void
1507app_notify_ego_end (struct GNUNET_SERVICE_Client *client)
1508{
1509 struct GNUNET_MQ_Envelope *env;
1510
1511 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1512 "%p Sending end of ego list notification to client\n",
1513 client);
1514 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO_END);
1515 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1516 env);
1517}
1518
1519
1520int
1521app_place_entry_notify (void *cls, const struct GNUNET_HashCode *key, void *value)
1522{
1523 struct GNUNET_MessageHeader *
1524 msg = GNUNET_CONTAINER_multihashmap_get (places, key);
1525 if (NULL != msg)
1526 app_notify_place (msg, cls);
1527 return GNUNET_YES;
1528}
1529
1530
1531int
1532ego_entry (void *cls, const struct GNUNET_HashCode *key, void *value)
1533{
1534 app_notify_ego (value, cls);
1535 return GNUNET_YES;
1536}
1537
1538
1539static int
1540check_client_msg_proc_set (void *cls,
1541 const struct MsgProcRequest *mpreq)
1542{
1543 return GNUNET_OK;
1544}
1545
1546
1547/**
1548 * Handle a client setting message proccesing flags for a method prefix.
1549 */
1550static void
1551handle_client_msg_proc_set (void *cls,
1552 const struct MsgProcRequest *mpreq)
1553{
1554 struct Client *c = cls;
1555 struct GNUNET_SERVICE_Client *client = c->client;
1556 struct Place *plc = c->place;
1557 if (NULL == plc)
1558 {
1559 GNUNET_break (0);
1560 GNUNET_SERVICE_client_drop (client);
1561 return;
1562 }
1563
1564 const char *method_prefix = NULL;
1565 uint32_t flags = 0;
1566 struct GNUNET_HashCode method_hash;
1567
1568 if (GNUNET_OK !=
1569 msg_proc_parse (mpreq, &flags, &method_prefix, &method_hash))
1570 {
1571 GNUNET_break (0);
1572 GNUNET_SERVICE_client_drop (client);
1573 return;
1574 }
1575#if 0
1576 GNUNET_PSYC_slicer_method_remove (plc->slicer, method_prefix,
1577 place_recv_relay_method,
1578 place_recv_relay_modifier,
1579 place_recv_relay_data,
1580 place_recv_relay_eom);
1581 GNUNET_PSYC_slicer_method_remove (plc->slicer, method_prefix,
1582 place_recv_save_method,
1583 NULL,
1584 place_recv_save_data,
1585 place_recv_save_eom);
1586#endif
1587 if (flags & GNUNET_SOCIAL_MSG_PROC_RELAY)
1588 {
1589 GNUNET_PSYC_slicer_method_add (plc->slicer, method_prefix, NULL,
1590 place_recv_relay_method,
1591 place_recv_relay_modifier,
1592 place_recv_relay_data,
1593 place_recv_relay_eom,
1594 plc);
1595 }
1596 if (flags & GNUNET_SOCIAL_MSG_PROC_SAVE)
1597 {
1598 GNUNET_PSYC_slicer_method_add (plc->slicer, method_prefix, NULL,
1599 place_recv_save_method,
1600 NULL,
1601 place_recv_save_data,
1602 place_recv_save_eom,
1603 plc);
1604 }
1605
1606 /** @todo Save flags to be able to resume relaying/saving after restart */
1607
1608 GNUNET_SERVICE_client_continue (client);
1609}
1610
1611
1612/**
1613 * Handle a connecting client requesting to clear all relay rules.
1614 */
1615static void
1616handle_client_msg_proc_clear (void *cls,
1617 const struct GNUNET_MessageHeader *msg)
1618{
1619 struct Client *c = cls;
1620 struct GNUNET_SERVICE_Client *client = c->client;
1621 struct Place *plc = c->place;
1622 if (NULL == plc)
1623 {
1624 GNUNET_break (0);
1625 GNUNET_SERVICE_client_drop (client);
1626 return;
1627 }
1628
1629 GNUNET_PSYC_slicer_clear (plc->slicer);
1630
1631 GNUNET_SERVICE_client_continue (client);
1632}
1633
1634
1635static int
1636check_client_host_enter (void *cls,
1637 const struct HostEnterRequest *hr)
1638{
1639 return GNUNET_OK;
1640}
1641
1642
1643/**
1644 * Handle a connecting client entering a place as host.
1645 */
1646static void
1647handle_client_host_enter (void *cls,
1648 const struct HostEnterRequest *hr)
1649{
1650 struct Client *c = cls;
1651 struct GNUNET_SERVICE_Client *client = c->client;
1652 struct HostEnterRequest *
1653 hreq = (struct HostEnterRequest *) GNUNET_copy_message (&hr->header);
1654
1655 uint8_t app_id_size = ntohs (hreq->header.size) - sizeof (*hreq);
1656 const char *app_id = NULL;
1657 uint16_t offset = GNUNET_STRINGS_buffer_tokenize ((const char *) &hreq[1],
1658 app_id_size, 1, &app_id);
1659 if (0 == offset || offset != app_id_size || app_id == NULL)
1660 {
1661 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1662 "offset = %u, app_id_size = %u, app_id = %s\n",
1663 offset, app_id_size, app_id);
1664 GNUNET_break (0);
1665 GNUNET_SERVICE_client_drop (client);
1666 return;
1667 }
1668
1669 struct Host *hst = NULL;
1670 struct Place *plc = NULL;
1671 int ret = GNUNET_OK;
1672
1673 struct GNUNET_CRYPTO_EddsaPublicKey empty_pub_key;
1674 memset (&empty_pub_key, 0, sizeof (empty_pub_key));
1675
1676 if (0 == memcmp (&hreq->place_pub_key, &empty_pub_key, sizeof (empty_pub_key)))
1677 { // no public key set: create new private key & save the place
1678 struct GNUNET_CRYPTO_EddsaPrivateKey *
1679 place_key = GNUNET_CRYPTO_eddsa_key_create ();
1680 hreq->place_key = *place_key;
1681 GNUNET_CRYPTO_eddsa_key_get_public (place_key, &hreq->place_pub_key);
1682 GNUNET_CRYPTO_eddsa_key_clear (place_key);
1683 GNUNET_free (place_key);
1684
1685 app_place_save (app_id, (const struct PlaceEnterRequest *) hreq);
1686 }
1687
1688 switch (host_enter (hreq, &hst))
1689 {
1690 case GNUNET_YES:
1691 plc = c->place = &hst->place;
1692 plc->host = hst;
1693 break;
1694
1695 case GNUNET_NO:
1696 {
1697 plc = c->place = &hst->place;
1698 plc->host = hst;
1699 client_send_host_enter_ack (client, hst, GNUNET_OK);
1700 break;
1701 }
1702 case GNUNET_SYSERR:
1703 ret = GNUNET_SYSERR;
1704 }
1705
1706 if (ret != GNUNET_SYSERR)
1707 {
1708
1709 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1710 "%p Client connected as host to place %s.\n",
1711 hst, GNUNET_h2s (&plc->pub_key_hash));
1712
1713 struct ClientListItem *cli = GNUNET_new (struct ClientListItem);
1714 cli->client = client;
1715 GNUNET_CONTAINER_DLL_insert (plc->clients_head, plc->clients_tail, cli);
1716 c->place = plc;
1717 app_notify_place (&hreq->header, client);
1718 }
1719
1720 GNUNET_CRYPTO_eddsa_key_clear (&hreq->place_key);
1721 GNUNET_free (hreq);
1722
1723 if (GNUNET_OK == ret)
1724 GNUNET_SERVICE_client_continue (client);
1725 else
1726 GNUNET_SERVICE_client_drop (client);
1727}
1728
1729
1730/**
1731 * Enter place as guest.
1732 *
1733 * @param greq
1734 * Guest entry request.
1735 * @param[out] ret_gst
1736 * Returned Guest struct.
1737 *
1738 * @return #GNUNET_YES if the guest entered the place just now,
1739 * #GNUNET_NO if the place is already entered,
1740 * #GNUNET_SYSERR on error.
1741 */
1742static int
1743guest_enter (const struct GuestEnterRequest *greq, struct Guest **ret_gst)
1744{
1745 int ret = GNUNET_NO;
1746 uint16_t greq_size = ntohs (greq->header.size);
1747
1748 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key = greq->ego_pub_key;
1749 struct GNUNET_HashCode ego_pub_hash;
1750 GNUNET_CRYPTO_hash (&ego_pub_key, sizeof (ego_pub_key), &ego_pub_hash);
1751 struct Ego *ego = GNUNET_CONTAINER_multihashmap_get (egos, &ego_pub_hash);
1752
1753 if (NULL == ego)
1754 {
1755 return GNUNET_SYSERR;
1756 }
1757
1758 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1759 "entering as guest\n");
1760 struct GNUNET_HashCode place_pub_hash;
1761 GNUNET_CRYPTO_hash (&greq->place_pub_key, sizeof (greq->place_pub_key),
1762 &place_pub_hash);
1763
1764 struct GNUNET_CONTAINER_MultiHashMap *
1765 plc_gst = GNUNET_CONTAINER_multihashmap_get (place_guests, &place_pub_hash);
1766 struct Guest *gst = NULL;
1767 int new_guest;
1768
1769 if (NULL != plc_gst)
1770 gst = GNUNET_CONTAINER_multihashmap_get (plc_gst, &ego_pub_hash);
1771
1772 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1773 "plc_gst = %p, gst = %p\n",
1774 plc_gst,
1775 gst);
1776
1777 if (NULL == gst)
1778 {
1779 gst = GNUNET_new (struct Guest);
1780 new_guest = GNUNET_YES;
1781 }
1782 else new_guest = GNUNET_NO;
1783
1784 if (NULL == gst->slave)
1785 {
1786 gst->origin = greq->origin;
1787 gst->relay_count = ntohl (greq->relay_count);
1788
1789 uint16_t len;
1790 uint16_t remaining = ntohs (greq->header.size) - sizeof (*greq);
1791 const char *app_id = (const char *) &greq[1];
1792 const char *p = app_id;
1793
1794 len = strnlen (app_id, remaining);
1795 if (len == remaining)
1796 {
1797 GNUNET_free (gst);
1798 GNUNET_break (0);
1799 return GNUNET_SYSERR;
1800 }
1801 p += len + 1;
1802 remaining -= len + 1;
1803
1804 const struct GNUNET_PeerIdentity *relays = NULL;
1805 uint16_t relay_size = gst->relay_count * sizeof (*relays);
1806 if (remaining < relay_size)
1807 {
1808 GNUNET_free (gst);
1809 GNUNET_break (0);
1810 return GNUNET_SYSERR;
1811 }
1812 if (0 < relay_size)
1813 relays = (const struct GNUNET_PeerIdentity *) p;
1814 p += relay_size;
1815 remaining -= relay_size;
1816
1817 struct GNUNET_PSYC_Message *join_msg = NULL;
1818 uint16_t join_msg_size = 0;
1819
1820 if (sizeof (struct GNUNET_MessageHeader) <= remaining)
1821 {
1822 join_msg = (struct GNUNET_PSYC_Message *) p;
1823 join_msg_size = ntohs (join_msg->header.size);
1824 p += join_msg_size;
1825 remaining -= join_msg_size;
1826 }
1827 if (0 != remaining)
1828 {
1829 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1830 "%zu + %u + %u != %u\n",
1831 sizeof (*greq), relay_size, join_msg_size, greq_size);
1832 GNUNET_free (gst);
1833 GNUNET_break (0);
1834 return GNUNET_SYSERR;
1835 }
1836 if (0 < relay_size)
1837 {
1838 gst->relays = GNUNET_malloc (relay_size);
1839 GNUNET_memcpy (gst->relays, relays, relay_size);
1840 }
1841
1842 gst->join_flags = ntohl (greq->flags);
1843
1844 struct Place *plc = &gst->place;
1845 place_init (plc);
1846 plc->is_host = GNUNET_NO;
1847 plc->pub_key = greq->place_pub_key;
1848 plc->pub_key_hash = place_pub_hash;
1849 plc->ego_pub_key = ego_pub_key;
1850 plc->ego_pub_hash = ego_pub_hash;
1851 plc->ego_key = ego->key;
1852
1853 if (NULL == plc_gst)
1854 {
1855 plc_gst = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
1856 (void) GNUNET_CONTAINER_multihashmap_put (place_guests, &plc->pub_key_hash, plc_gst,
1857 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1858 }
1859 if (GNUNET_YES == new_guest)
1860 {
1861 (void) GNUNET_CONTAINER_multihashmap_put (plc_gst, &plc->ego_pub_hash, gst,
1862 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
1863 (void) GNUNET_CONTAINER_multihashmap_put (guests, &plc->pub_key_hash, gst,
1864 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1865
1866 }
1867 gst->slave
1868 = GNUNET_PSYC_slave_join (cfg, &plc->pub_key, &plc->ego_key,
1869 gst->join_flags, &gst->origin,
1870 gst->relay_count, gst->relays,
1871 &psyc_recv_message, NULL,
1872 &psyc_slave_connected,
1873 &psyc_recv_join_dcsn,
1874 gst, join_msg);
1875 plc->channel = GNUNET_PSYC_slave_get_channel (gst->slave);
1876 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1877 "slave entered channel %p\n",
1878 plc->channel);
1879 ret = GNUNET_YES;
1880 }
1881
1882 // TODO: explain to automatic code scanners why free(gst) not necessary
1883 if (NULL != ret_gst)
1884 *ret_gst = gst;
1885 return ret;
1886}
1887
1888
1889static int
1890client_guest_enter (struct Client *c,
1891 const struct GuestEnterRequest *greq)
1892{
1893 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1894 "client_guest_enter\n");
1895 struct GNUNET_PSYC_CountersResultMessage *result_msg;
1896 struct GNUNET_MQ_Envelope *env;
1897 struct GNUNET_SERVICE_Client *client = c->client;
1898 uint16_t remaining = ntohs (greq->header.size) - sizeof (*greq);
1899 const char *app_id = NULL;
1900 uint16_t offset = GNUNET_STRINGS_buffer_tokenize ((const char *) &greq[1],
1901 remaining, 1, &app_id);
1902 struct Guest *gst = NULL;
1903 struct Place *plc = NULL;
1904
1905 if (0 == offset)
1906 {
1907 return GNUNET_SYSERR;
1908 }
1909 switch (guest_enter (greq, &gst))
1910 {
1911 case GNUNET_YES:
1912 {
1913 plc = c->place = &gst->place;
1914 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1915 "guest entered successfully to local place %s\n",
1916 GNUNET_h2s (&plc->pub_key_hash));
1917 plc->guest = gst;
1918 app_place_save (app_id, (const struct PlaceEnterRequest *) greq);
1919 app_notify_place (&greq->header, client);
1920 break;
1921 }
1922 case GNUNET_NO:
1923 {
1924 plc = c->place = &gst->place;
1925 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1926 "guest re-entered successfully to local place %s\n",
1927 GNUNET_h2s (&plc->pub_key_hash));
1928 plc->guest = gst;
1929 env = GNUNET_MQ_msg (result_msg,
1930 GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK);
1931 result_msg->result_code = htonl (GNUNET_OK);
1932 result_msg->max_message_id = GNUNET_htonll (plc->max_message_id);
1933 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1934 env);
1935 if (NULL != gst->join_dcsn)
1936 {
1937 env = GNUNET_MQ_msg_copy (&gst->join_dcsn->header);
1938 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
1939 env);
1940 }
1941 break;
1942 }
1943 case GNUNET_SYSERR:
1944 {
1945 return GNUNET_SYSERR;
1946 }
1947 }
1948
1949 struct ClientListItem *cli = GNUNET_new (struct ClientListItem);
1950 cli->client = client;
1951 GNUNET_CONTAINER_DLL_insert (plc->clients_head, plc->clients_tail, cli);
1952 return GNUNET_OK;
1953}
1954
1955
1956static int
1957check_client_guest_enter (void *cls,
1958 const struct GuestEnterRequest *greq)
1959{
1960 return GNUNET_OK;
1961}
1962
1963
1964/**
1965 * Handle a connecting client entering a place as guest.
1966 */
1967static void
1968handle_client_guest_enter (void *cls,
1969 const struct GuestEnterRequest *greq)
1970{
1971 struct Client *c = cls;
1972
1973 if (GNUNET_SYSERR == client_guest_enter (c, greq))
1974 {
1975 GNUNET_break (0);
1976 GNUNET_SERVICE_client_drop (c->client);
1977 return;
1978 }
1979 GNUNET_SERVICE_client_continue (c->client);
1980}
1981
1982
1983struct GuestEnterByNameClosure
1984{
1985 struct Client *client;
1986 char *app_id;
1987 char *password;
1988 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
1989 struct GNUNET_MessageHeader *join_msg;
1990};
1991
1992
1993/**
1994 * Result of a GNS name lookup for entering a place.
1995 *
1996 * @see GNUNET_SOCIAL_guest_enter_by_name
1997 */
1998static void
1999gns_result_guest_enter (void *cls, uint32_t rd_count,
2000 const struct GNUNET_GNSRECORD_Data *rd)
2001{
2002 struct GuestEnterByNameClosure *gcls = cls;
2003 struct Client *c = gcls->client;
2004 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2005 "%p GNS result: %u records.\n",
2006 c, rd_count);
2007
2008 const struct GNUNET_GNSRECORD_PlaceData *
2009 rec = (const struct GNUNET_GNSRECORD_PlaceData *) rd->data;
2010
2011 if (0 == rd_count || rd->data_size < sizeof (*rec))
2012 {
2013 GNUNET_break (0);
2014 GNUNET_SERVICE_client_drop (c->client);
2015 return;
2016 }
2017
2018 uint16_t relay_count = ntohl (rec->relay_count);
2019 struct GNUNET_PeerIdentity *relays = NULL;
2020
2021 if (0 < relay_count)
2022 {
2023 if (rd->data_size == sizeof (*rec) + relay_count * sizeof (struct GNUNET_PeerIdentity))
2024 {
2025 relays = (struct GNUNET_PeerIdentity *) &rec[1];
2026 }
2027 else
2028 {
2029 relay_count = 0;
2030 GNUNET_break_op (0);
2031 }
2032 }
2033
2034 uint16_t app_id_size = strlen (gcls->app_id) + 1;
2035 uint16_t relay_size = relay_count * sizeof (*relays);
2036 uint16_t join_msg_size = 0;
2037 if (NULL != gcls->join_msg)
2038 join_msg_size = ntohs (gcls->join_msg->size);
2039 uint16_t greq_size = sizeof (struct GuestEnterRequest)
2040 + app_id_size + relay_size + join_msg_size;
2041 struct GuestEnterRequest *greq = GNUNET_malloc (greq_size);
2042 greq->header.size = htons (greq_size);
2043 greq->header.type = htons (GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER);
2044 greq->ego_pub_key = gcls->ego_pub_key;
2045 greq->place_pub_key = rec->place_pub_key;
2046 greq->origin = rec->origin;
2047 greq->relay_count = rec->relay_count;
2048
2049 void *p = &greq[1];
2050 GNUNET_memcpy (p, gcls->app_id, app_id_size);
2051 p += app_id_size;
2052 GNUNET_memcpy (p, relays, relay_size);
2053 p += relay_size;
2054 GNUNET_memcpy (p, gcls->join_msg, join_msg_size);
2055
2056 client_guest_enter (c, greq);
2057
2058 GNUNET_free (gcls->app_id);
2059 if (NULL != gcls->password)
2060 GNUNET_free (gcls->password);
2061 if (NULL != gcls->join_msg)
2062 GNUNET_free (gcls->join_msg);
2063 GNUNET_free (gcls);
2064 GNUNET_free (greq);
2065}
2066
2067
2068static int
2069check_client_guest_enter_by_name (void *cls,
2070 const struct GuestEnterByNameRequest *greq)
2071{
2072 return GNUNET_OK;
2073}
2074
2075
2076/**
2077 * Handle a connecting client entering a place as guest using a GNS address.
2078 *
2079 * Look up GNS address and generate a GuestEnterRequest from that.
2080 */
2081static void
2082handle_client_guest_enter_by_name (void *cls,
2083 const struct GuestEnterByNameRequest *greq)
2084{
2085 struct Client *c = cls;
2086 struct GNUNET_SERVICE_Client *client = c->client;
2087
2088 struct GuestEnterByNameClosure *gcls = GNUNET_malloc (sizeof (*gcls));
2089 gcls->client = c;
2090 gcls->ego_pub_key = greq->ego_pub_key;
2091
2092 const char *p = (const char *) &greq[1];
2093 const char *app_id = NULL, *password = NULL, *gns_name = NULL;
2094 uint16_t remaining = ntohs (greq->header.size) - sizeof (*greq);
2095 uint16_t offset = GNUNET_STRINGS_buffer_tokenize (p, remaining, 3,
2096 &app_id,
2097 &gns_name,
2098 &password);
2099 p += offset;
2100 remaining -= offset;
2101
2102 if (0 != offset && sizeof (*gcls->join_msg) <= remaining)
2103 {
2104 gcls->join_msg = GNUNET_copy_message ((struct GNUNET_MessageHeader *) p);
2105 remaining -= ntohs (gcls->join_msg->size);
2106 }
2107
2108 if (0 == offset || 0 != remaining)
2109 {
2110 if (NULL != gcls->join_msg)
2111 GNUNET_free (gcls->join_msg);
2112 GNUNET_free (gcls);
2113 GNUNET_break (0);
2114 GNUNET_SERVICE_client_drop (client);
2115 return;
2116 }
2117
2118 uint16_t app_id_size = strlen (app_id) + 1;
2119 gcls->app_id = GNUNET_malloc (app_id_size);
2120 GNUNET_memcpy (gcls->app_id, app_id, app_id_size);
2121
2122 uint16_t password_size = strlen (password);
2123 if (0 < password_size++)
2124 {
2125 gcls->password = GNUNET_malloc (password_size);
2126 GNUNET_memcpy (gcls->password, password, password_size);
2127 }
2128
2129 GNUNET_GNS_lookup (gns, gns_name,
2130 &greq->ego_pub_key,
2131 GNUNET_GNSRECORD_TYPE_PLACE,
2132 GNUNET_GNS_LO_DEFAULT,
2133 &gns_result_guest_enter, gcls);
2134 GNUNET_SERVICE_client_continue (client);
2135}
2136
2137
2138static int
2139check_client_app_connect (void *cls,
2140 const struct AppConnectRequest *creq)
2141{
2142 return GNUNET_OK;
2143}
2144
2145
2146/**
2147 * Handle application connection.
2148 */
2149static void
2150handle_client_app_connect (void *cls,
2151 const struct AppConnectRequest *creq)
2152{
2153 struct Client *c = cls;
2154 struct GNUNET_SERVICE_Client *client = c->client;
2155 ssize_t app_id_size = ntohs (creq->header.size) - sizeof (*creq);
2156 const char *app_id = NULL;
2157 uint16_t offset;
2158
2159 if (app_id_size < 0)
2160 {
2161 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2162 "AppConnectRequest has invalid size\n");
2163 GNUNET_break (0);
2164 GNUNET_SERVICE_client_drop (client);
2165 return;
2166 }
2167
2168 offset = GNUNET_STRINGS_buffer_tokenize ((const char *) &creq[1],
2169 (size_t) app_id_size,
2170 1,
2171 &app_id);
2172 if (0 == offset || offset != app_id_size)
2173 {
2174 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2175 "AppConnectRequest contains invalid app ID\n");
2176 GNUNET_break (0);
2177 GNUNET_SERVICE_client_drop (client);
2178 return;
2179 }
2180
2181 struct GNUNET_HashCode app_id_hash;
2182 GNUNET_CRYPTO_hash (app_id, (size_t) app_id_size, &app_id_hash);
2183
2184 GNUNET_CONTAINER_multihashmap_iterate (egos, ego_entry, client);
2185 app_notify_ego_end (client);
2186
2187 struct GNUNET_CONTAINER_MultiHashMap *
2188 app_places = GNUNET_CONTAINER_multihashmap_get (apps_places, &app_id_hash);
2189 if (NULL != app_places)
2190 GNUNET_CONTAINER_multihashmap_iterate (app_places, app_place_entry_notify, client);
2191 app_notify_place_end (client);
2192
2193 struct ClientListItem *cli = GNUNET_new (struct ClientListItem);
2194 cli->client = client;
2195 struct Application *app = GNUNET_CONTAINER_multihashmap_get (apps,
2196 &app_id_hash);
2197 if (NULL == app) {
2198 app = GNUNET_malloc (sizeof (*app));
2199 (void) GNUNET_CONTAINER_multihashmap_put (apps, &app_id_hash, app,
2200 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
2201 }
2202 GNUNET_CONTAINER_DLL_insert (app->clients_head, app->clients_tail, cli);
2203
2204 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2205 "%p Application %s connected.\n", app, app_id);
2206
2207 c->app_id = GNUNET_malloc ((size_t) app_id_size);
2208 GNUNET_memcpy (c->app_id, app_id, (size_t) app_id_size);
2209
2210 GNUNET_SERVICE_client_continue (client);
2211}
2212
2213
2214/**
2215 * Handle application detach request.
2216 */
2217static void
2218handle_client_app_detach (void *cls,
2219 const struct AppDetachRequest *req)
2220{
2221 struct Client *c = cls;
2222 struct GNUNET_SERVICE_Client *client = c->client;
2223
2224 int ret = app_place_remove (c->app_id, &req->ego_pub_key, &req->place_pub_key);
2225 client_send_result (client, req->op_id, ret, NULL, 0);
2226
2227 GNUNET_SERVICE_client_continue (client);
2228}
2229
2230
2231static void
2232place_leave_cb (void *cls)
2233{
2234 struct Place *plc = cls;
2235
2236 place_send_leave_ack (plc);
2237 (GNUNET_YES == plc->is_host)
2238 ? cleanup_host ((struct Host *) plc)
2239 : cleanup_guest ((struct Guest *) plc);
2240}
2241
2242
2243/**
2244 * Handle application leave request.
2245 */
2246static void
2247handle_client_place_leave (void *cls,
2248 const struct GNUNET_MessageHeader *msg)
2249{
2250 struct Client *c = cls;
2251 struct GNUNET_SERVICE_Client *client = c->client;
2252 struct Place *plc = c->place;
2253
2254 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2255 "got leave request from %s for place %s",
2256 plc->is_host? "host" : "slave",
2257 GNUNET_h2s (&plc->pub_key_hash));
2258 if (NULL == plc)
2259 {
2260 GNUNET_break (0);
2261 GNUNET_SERVICE_client_drop (client);
2262 return;
2263 }
2264
2265 if (GNUNET_YES != plc->is_disconnecting)
2266 {
2267 plc->is_disconnecting = GNUNET_YES;
2268 if (plc->is_host)
2269 {
2270 struct Host *host = plc->host;
2271 GNUNET_assert (NULL != host);
2272 GNUNET_PSYC_master_stop (host->master, GNUNET_NO, &place_leave_cb, plc);
2273 }
2274 else
2275 {
2276 struct Guest *guest = plc->guest;
2277 GNUNET_assert (NULL != guest);
2278 GNUNET_PSYC_slave_part (guest->slave, GNUNET_NO, &place_leave_cb, plc);
2279 }
2280 }
2281 else
2282 {
2283 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2284 "got leave request but place is already leaving\n");
2285 }
2286 GNUNET_SERVICE_client_continue (client);
2287}
2288
2289
2290struct JoinDecisionClosure
2291{
2292 int32_t is_admitted;
2293 struct GNUNET_PSYC_Message *msg;
2294};
2295
2296
2297/**
2298 * Iterator callback for responding to join requests.
2299 */
2300static int
2301psyc_send_join_decision (void *cls, const struct GNUNET_HashCode *pub_key_hash,
2302 void *value)
2303{
2304 struct JoinDecisionClosure *jcls = cls;
2305 struct GNUNET_PSYC_JoinHandle *jh = value;
2306 // FIXME: add relays
2307 GNUNET_PSYC_join_decision (jh, jcls->is_admitted, 0, NULL, jcls->msg);
2308 return GNUNET_YES;
2309}
2310
2311
2312static int
2313check_client_join_decision (void *cls,
2314 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn)
2315{
2316 return GNUNET_OK;
2317}
2318
2319
2320/**
2321 * Handle an entry decision from a host client.
2322 */
2323static void
2324handle_client_join_decision (void *cls,
2325 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn)
2326{
2327 struct Client *c = cls;
2328 struct GNUNET_SERVICE_Client *client = c->client;
2329 struct Place *plc = c->place;
2330 if (NULL == plc || GNUNET_YES != plc->is_host)
2331 {
2332 GNUNET_break (0);
2333 GNUNET_SERVICE_client_drop (client);
2334 return;
2335 }
2336 struct Host *hst = plc->host;
2337
2338 struct JoinDecisionClosure jcls;
2339 jcls.is_admitted = ntohl (dcsn->is_admitted);
2340 jcls.msg
2341 = (sizeof (*dcsn) + sizeof (*jcls.msg) <= ntohs (dcsn->header.size))
2342 ? (struct GNUNET_PSYC_Message *) &dcsn[1]
2343 : NULL;
2344
2345 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2346 "jcls.msg = %p\n",
2347 jcls.msg);
2348 struct GNUNET_HashCode slave_pub_hash;
2349 GNUNET_CRYPTO_hash (&dcsn->slave_pub_key, sizeof (dcsn->slave_pub_key),
2350 &slave_pub_hash);
2351
2352 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2353 "%p Got join decision (%d) from client for place %s..\n",
2354 hst, jcls.is_admitted, GNUNET_h2s (&plc->pub_key_hash));
2355 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2356 "%p ..and slave %s.\n",
2357 hst, GNUNET_h2s (&slave_pub_hash));
2358
2359 GNUNET_CONTAINER_multihashmap_get_multiple (hst->join_reqs, &slave_pub_hash,
2360 &psyc_send_join_decision, &jcls);
2361 GNUNET_CONTAINER_multihashmap_remove_all (hst->join_reqs, &slave_pub_hash);
2362
2363 GNUNET_SERVICE_client_continue (client);
2364}
2365
2366
2367/**
2368 * Send acknowledgement to a client.
2369 *
2370 * Sent after a message fragment has been passed on to multicast.
2371 *
2372 * @param plc The place struct for the client.
2373 */
2374static void
2375send_message_ack (struct Place *plc, struct GNUNET_SERVICE_Client *client)
2376{
2377 struct GNUNET_MQ_Envelope *env;
2378
2379 env = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK);
2380 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client),
2381 env);
2382}
2383
2384
2385/**
2386 * Proceed to the next message part in the transmission queue.
2387 *
2388 * @param plc
2389 * Place where the transmission is going on.
2390 * @param tmit_msg
2391 * Currently transmitted message.
2392 * @param tmit_frag
2393 * Currently transmitted message fragment.
2394 *
2395 * @return @a tmit_frag, or NULL if reached the end of fragment.
2396 */
2397static struct FragmentTransmitQueue *
2398psyc_transmit_queue_next_part (struct Place *plc,
2399 struct MessageTransmitQueue *tmit_msg,
2400 struct FragmentTransmitQueue *tmit_frag)
2401{
2402 uint16_t psize = ntohs (tmit_frag->next_part->size);
2403 if ((char *) tmit_frag->next_part + psize - ((char *) &tmit_frag[1])
2404 < tmit_frag->size)
2405 {
2406 tmit_frag->next_part
2407 = (struct GNUNET_MessageHeader *) ((char *) tmit_frag->next_part + psize);
2408 }
2409 else /* Reached end of current fragment. */
2410 {
2411 if (NULL != tmit_frag->client)
2412 send_message_ack (plc, tmit_frag->client);
2413 GNUNET_CONTAINER_DLL_remove (tmit_msg->frags_head, tmit_msg->frags_tail, tmit_frag);
2414 GNUNET_free (tmit_frag);
2415 tmit_frag = NULL;
2416 }
2417 return tmit_frag;
2418}
2419
2420
2421/**
2422 * Proceed to next message in transmission queue.
2423 *
2424 * @param plc
2425 * Place where the transmission is going on.
2426 * @param tmit_msg
2427 * Currently transmitted message.
2428 *
2429 * @return The next message in queue, or NULL if queue is empty.
2430 */
2431static struct MessageTransmitQueue *
2432psyc_transmit_queue_next_msg (struct Place *plc,
2433 struct MessageTransmitQueue *tmit_msg)
2434{
2435 GNUNET_CONTAINER_DLL_remove (plc->tmit_msgs_head, plc->tmit_msgs_tail, tmit_msg);
2436 GNUNET_free (tmit_msg);
2437 return plc->tmit_msgs_head;
2438}
2439
2440
2441/**
2442 * Callback for data transmission to PSYC.
2443 */
2444static int
2445psyc_transmit_notify_data (void *cls, uint16_t *data_size, void *data)
2446{
2447 struct Place *plc = cls;
2448 struct MessageTransmitQueue *tmit_msg = plc->tmit_msgs_head;
2449 GNUNET_assert (NULL != tmit_msg);
2450 struct FragmentTransmitQueue *tmit_frag = tmit_msg->frags_head;
2451 if (NULL == tmit_frag)
2452 { /* Rest of the message have not arrived yet, pause transmission */
2453 *data_size = 0;
2454 return GNUNET_NO;
2455 }
2456 struct GNUNET_MessageHeader *pmsg = tmit_frag->next_part;
2457 if (NULL == pmsg)
2458 {
2459 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2460 "%p psyc_transmit_notify_data: nothing to send.\n", plc);
2461 *data_size = 0;
2462 return GNUNET_NO;
2463 }
2464
2465 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2466 "%p psyc_transmit_notify_data()\n", plc);
2467 GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG, pmsg);
2468
2469 uint16_t ptype = ntohs (pmsg->type);
2470 uint16_t pdata_size = ntohs (pmsg->size) - sizeof (*pmsg);
2471 int ret;
2472
2473 switch (ptype)
2474 {
2475 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA:
2476 if (*data_size < pdata_size)
2477 {
2478 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2479 "%p psyc_transmit_notify_data: buffer size too small for data.\n", plc);
2480 *data_size = 0;
2481 return GNUNET_NO;
2482 }
2483 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2484 "%p psyc_transmit_notify_data: sending %u bytes.\n",
2485 plc, pdata_size);
2486
2487 *data_size = pdata_size;
2488 GNUNET_memcpy (data, &pmsg[1], *data_size);
2489 ret = GNUNET_NO;
2490 break;
2491
2492 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
2493 *data_size = 0;
2494 ret = GNUNET_YES;
2495 break;
2496
2497 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
2498 *data_size = 0;
2499 ret = GNUNET_SYSERR;
2500 break;
2501
2502 default:
2503 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2504 "%p psyc_transmit_notify_data: unexpected message part of type %u.\n",
2505 plc, ptype);
2506 ret = GNUNET_SYSERR;
2507 }
2508
2509 if (GNUNET_SYSERR == ret && GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL != ptype)
2510 {
2511 *data_size = 0;
2512 tmit_msg = psyc_transmit_queue_next_msg (plc, tmit_msg);
2513 GNUNET_SERVICE_client_drop (tmit_frag->client);
2514 GNUNET_SCHEDULER_add_now (&cleanup_place, plc);
2515 return ret;
2516 }
2517 else
2518 {
2519 tmit_frag = psyc_transmit_queue_next_part (plc, tmit_msg, tmit_frag);
2520 if (NULL != tmit_frag)
2521 {
2522 struct GNUNET_MessageHeader *pmsg = tmit_frag->next_part;
2523 ptype = ntohs (pmsg->type);
2524 switch (ptype)
2525 {
2526 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
2527 ret = GNUNET_YES;
2528 break;
2529 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
2530 ret = GNUNET_SYSERR;
2531 break;
2532 }
2533 switch (ptype)
2534 {
2535 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
2536 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
2537 tmit_frag = psyc_transmit_queue_next_part (plc, tmit_msg, tmit_frag);
2538 }
2539 }
2540
2541 if (NULL == tmit_msg->frags_head
2542 && GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END <= ptype)
2543 { /* Reached end of current message. */
2544 tmit_msg = psyc_transmit_queue_next_msg (plc, tmit_msg);
2545 }
2546 }
2547
2548 if (ret != GNUNET_NO)
2549 {
2550 if (NULL != tmit_msg)
2551 {
2552 psyc_transmit_message (plc);
2553 }
2554 /* FIXME: handle partial message (when still in_transmit) */
2555 }
2556 return ret;
2557}
2558
2559
2560/**
2561 * Callback for modifier transmission to PSYC.
2562 */
2563static int
2564psyc_transmit_notify_mod (void *cls, uint16_t *data_size, void *data,
2565 uint8_t *oper, uint32_t *full_value_size)
2566{
2567 struct Place *plc = cls;
2568 struct MessageTransmitQueue *tmit_msg = plc->tmit_msgs_head;
2569 GNUNET_assert (NULL != tmit_msg);
2570 struct FragmentTransmitQueue *tmit_frag = tmit_msg->frags_head;
2571 if (NULL == tmit_frag)
2572 { /* Rest of the message have not arrived yet, pause transmission */
2573 *data_size = 0;
2574 return GNUNET_NO;
2575 }
2576 struct GNUNET_MessageHeader *pmsg = tmit_frag->next_part;
2577 if (NULL == pmsg)
2578 {
2579 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2580 "%p psyc_transmit_notify_mod: nothing to send.\n", plc);
2581 *data_size = 0;
2582 return GNUNET_NO;
2583 }
2584
2585 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2586 "%p psyc_transmit_notify_mod()\n", plc);
2587 GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG, pmsg);
2588
2589 uint16_t ptype = ntohs (pmsg->type);
2590 int ret;
2591
2592 switch (ptype)
2593 {
2594 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
2595 {
2596 if (NULL == oper)
2597 {
2598 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2599 "%p psyc_transmit_notify_mod: oper is NULL.\n", plc);
2600 ret = GNUNET_SYSERR;
2601 break;
2602 }
2603 struct GNUNET_PSYC_MessageModifier *
2604 pmod = (struct GNUNET_PSYC_MessageModifier *) tmit_frag->next_part;
2605 uint16_t mod_size = ntohs (pmod->header.size) - sizeof (*pmod);
2606
2607 if (*data_size < mod_size)
2608 {
2609 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2610 "%p psyc_transmit_notify_mod: buffer size too small for data.\n", plc);
2611 *data_size = 0;
2612 return GNUNET_NO;
2613 }
2614
2615 *full_value_size = ntohl (pmod->value_size);
2616 *oper = pmod->oper;
2617 *data_size = mod_size;
2618 GNUNET_memcpy (data, &pmod[1], mod_size);
2619 ret = GNUNET_NO;
2620 break;
2621 }
2622
2623 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
2624 {
2625 if (NULL != oper)
2626 {
2627 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2628 "%p psyc_transmit_notify_mod: oper is not NULL.\n", plc);
2629 ret = GNUNET_SYSERR;
2630 break;
2631 }
2632 uint16_t mod_size = ntohs (pmsg->size) - sizeof (*pmsg);
2633 if (*data_size < mod_size)
2634 {
2635 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2636 "%p psyc_transmit_notify_mod: buffer size too small for data.\n", plc);
2637 *data_size = 0;
2638 return GNUNET_NO;
2639 }
2640 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2641 "%p psyc_transmit_notify_mod: sending %u bytes.\n", plc, mod_size);
2642
2643 *data_size = mod_size;
2644 GNUNET_memcpy (data, &pmsg[1], *data_size);
2645 ret = GNUNET_NO;
2646 break;
2647 }
2648
2649 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA:
2650 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END:
2651 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
2652 *data_size = 0;
2653 ret = GNUNET_YES;
2654 break;
2655
2656 default:
2657 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2658 "%p psyc_transmit_notify_mod: unexpected message part of type %u.\n",
2659 plc, ptype);
2660 ret = GNUNET_SYSERR;
2661 }
2662
2663 if (GNUNET_SYSERR == ret)
2664 {
2665 *data_size = 0;
2666 ret = GNUNET_SYSERR;
2667 tmit_msg = psyc_transmit_queue_next_msg (plc, tmit_msg);
2668 GNUNET_SERVICE_client_drop (tmit_frag->client);
2669 GNUNET_SCHEDULER_add_now (&cleanup_place, plc);
2670 }
2671 else
2672 {
2673 if (GNUNET_YES != ret)
2674 psyc_transmit_queue_next_part (plc, tmit_msg, tmit_frag);
2675
2676 if (NULL == tmit_msg->frags_head
2677 && GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END <= ptype)
2678 { /* Reached end of current message. */
2679 tmit_msg = psyc_transmit_queue_next_msg (plc, tmit_msg);
2680 }
2681 }
2682 return ret;
2683}
2684
2685/**
2686 * Callback for data transmission from a host to PSYC.
2687 */
2688static int
2689host_transmit_notify_data (void *cls, uint16_t *data_size, void *data)
2690{
2691 int ret = psyc_transmit_notify_data (cls, data_size, data);
2692
2693 if (GNUNET_NO != ret)
2694 {
2695 struct Host *hst = cls;
2696 hst->tmit_handle = NULL;
2697 }
2698 return ret;
2699}
2700
2701
2702/**
2703 * Callback for the transmit functions of multicast.
2704 */
2705static int
2706guest_transmit_notify_data (void *cls, uint16_t *data_size, void *data)
2707{
2708 int ret = psyc_transmit_notify_data (cls, data_size, data);
2709
2710 if (GNUNET_NO != ret)
2711 {
2712 struct Guest *gst = cls;
2713 gst->tmit_handle = NULL;
2714 }
2715 return ret;
2716}
2717
2718
2719/**
2720 * Callback for modifier transmission from a host to PSYC.
2721 */
2722static int
2723host_transmit_notify_mod (void *cls, uint16_t *data_size, void *data,
2724 uint8_t *oper, uint32_t *full_value_size)
2725{
2726 int ret = psyc_transmit_notify_mod (cls, data_size, data,
2727 oper, full_value_size);
2728 if (GNUNET_SYSERR == ret)
2729 {
2730 struct Host *hst = cls;
2731 hst->tmit_handle = NULL;
2732 }
2733 return ret;
2734}
2735
2736
2737/**
2738 * Callback for modifier transmission from a guest to PSYC.
2739 */
2740static int
2741guest_transmit_notify_mod (void *cls, uint16_t *data_size, void *data,
2742 uint8_t *oper, uint32_t *full_value_size)
2743{
2744 int ret = psyc_transmit_notify_mod (cls, data_size, data,
2745 oper, full_value_size);
2746 if (GNUNET_SYSERR == ret)
2747 {
2748 struct Guest *gst = cls;
2749 gst->tmit_handle = NULL;
2750 }
2751 return ret;
2752}
2753
2754
2755/**
2756 * Get method part of next message from transmission queue.
2757 *
2758 * @param plc
2759 * Place
2760 *
2761 * @return #GNUNET_OK on success
2762 * #GNUNET_NO if there are no more messages in queue.
2763 * #GNUNET_SYSERR if the next message is malformed.
2764 */
2765static struct GNUNET_PSYC_MessageMethod *
2766psyc_transmit_queue_next_method (struct Place *plc)
2767{
2768 struct MessageTransmitQueue *tmit_msg = plc->tmit_msgs_head;
2769 if (NULL == tmit_msg)
2770 return GNUNET_NO;
2771
2772 struct FragmentTransmitQueue *tmit_frag = tmit_msg->frags_head;
2773 if (NULL == tmit_frag)
2774 {
2775 GNUNET_break (0);
2776 return GNUNET_NO;
2777 }
2778
2779 struct GNUNET_MessageHeader *pmsg = tmit_frag->next_part;
2780 if (NULL == pmsg
2781 || GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD != ntohs (pmsg->type))
2782 {
2783 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2784 "%p psyc_transmit_queue_next_method: unexpected message part of type %u.\n",
2785 plc, NULL != pmsg ? ntohs (pmsg->type) : 0);
2786 GNUNET_break (0);
2787 return NULL;
2788 }
2789
2790 uint16_t psize = ntohs (pmsg->size);
2791 struct GNUNET_PSYC_MessageMethod *
2792 pmeth = (struct GNUNET_PSYC_MessageMethod *) GNUNET_copy_message (pmsg);
2793
2794 if (psize < sizeof (*pmeth) + 1 || '\0' != *((char *) pmeth + psize - 1))
2795 {
2796 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2797 "%p psyc_transmit_queue_next_method: invalid method name.\n",
2798 plc);
2799 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2800 "%zu <= %u || NUL != %u\n",
2801 sizeof (*pmeth), psize, *((char *) pmeth + psize - 1));
2802 GNUNET_break (0);
2803 GNUNET_free (pmeth);
2804 return NULL;
2805 }
2806
2807 psyc_transmit_queue_next_part (plc, tmit_msg, tmit_frag);
2808 return pmeth;
2809}
2810
2811
2812/**
2813 * Transmit the next message in queue from the host to the PSYC channel.
2814 */
2815static int
2816psyc_master_transmit_message (struct Host *hst)
2817{
2818 struct Place *plc = &hst->place;
2819
2820 if (NULL == hst->tmit_handle)
2821 {
2822 struct GNUNET_PSYC_MessageMethod *
2823 pmeth = psyc_transmit_queue_next_method (plc);
2824 if (NULL == pmeth)
2825 return GNUNET_SYSERR;
2826
2827 hst->tmit_handle = (void *) &hst->tmit_handle;
2828 struct GNUNET_PSYC_MasterTransmitHandle *
2829 tmit_handle = GNUNET_PSYC_master_transmit (hst->master, (const char *) &pmeth[1],
2830 &host_transmit_notify_mod,
2831 &host_transmit_notify_data, hst,
2832 pmeth->flags);
2833 if (NULL != hst->tmit_handle)
2834 hst->tmit_handle = tmit_handle;
2835 GNUNET_free (pmeth);
2836 }
2837 else
2838 {
2839 GNUNET_PSYC_master_transmit_resume (hst->tmit_handle);
2840 }
2841 return GNUNET_OK;
2842}
2843
2844
2845/**
2846 * Transmit the next message in queue from a guest to the PSYC channel.
2847 */
2848static int
2849psyc_slave_transmit_message (struct Guest *gst)
2850{
2851 struct Place *plc = &gst->place;
2852
2853 if (NULL == gst->tmit_handle)
2854 {
2855 struct GNUNET_PSYC_MessageMethod *
2856 pmeth = psyc_transmit_queue_next_method (plc);
2857 if (NULL == pmeth)
2858 return GNUNET_SYSERR;
2859
2860 gst->tmit_handle = (void *) &gst->tmit_handle;
2861 struct GNUNET_PSYC_SlaveTransmitHandle *
2862 tmit_handle = GNUNET_PSYC_slave_transmit (gst->slave, (const char *) &pmeth[1],
2863 &guest_transmit_notify_mod,
2864 &guest_transmit_notify_data, gst,
2865 pmeth->flags);
2866 if (NULL != gst->tmit_handle)
2867 gst->tmit_handle = tmit_handle;
2868 GNUNET_free (pmeth);
2869 }
2870 else
2871 {
2872 GNUNET_PSYC_slave_transmit_resume (gst->tmit_handle);
2873 }
2874 return GNUNET_OK;
2875}
2876
2877
2878/**
2879 * Transmit a message to PSYC.
2880 */
2881static int
2882psyc_transmit_message (struct Place *plc)
2883{
2884 return
2885 (plc->is_host)
2886 ? psyc_master_transmit_message ((struct Host *) plc)
2887 : psyc_slave_transmit_message ((struct Guest *) plc);
2888}
2889
2890
2891/**
2892 * Queue message parts for sending to PSYC.
2893 *
2894 * @param plc Place to send to.
2895 * @param client Client the message originates from.
2896 * @param data_size Size of @a data.
2897 * @param data Concatenated message parts.
2898 * @param first_ptype First message part type in @a data.
2899 * @param last_ptype Last message part type in @a data.
2900 */
2901static struct MessageTransmitQueue *
2902psyc_transmit_queue_message (struct Place *plc,
2903 struct GNUNET_SERVICE_Client *client,
2904 size_t data_size,
2905 const void *data,
2906 uint16_t first_ptype, uint16_t last_ptype,
2907 struct MessageTransmitQueue *tmit_msg)
2908{
2909 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD == first_ptype)
2910 {
2911 tmit_msg = GNUNET_malloc (sizeof (*tmit_msg));
2912 GNUNET_CONTAINER_DLL_insert_tail (plc->tmit_msgs_head, plc->tmit_msgs_tail, tmit_msg);
2913 }
2914 else if (NULL == tmit_msg)
2915 {
2916 return NULL;
2917 }
2918
2919 struct FragmentTransmitQueue *
2920 tmit_frag = GNUNET_malloc (sizeof (*tmit_frag) + data_size);
2921 GNUNET_memcpy (&tmit_frag[1], data, data_size);
2922 tmit_frag->next_part = (struct GNUNET_MessageHeader *) &tmit_frag[1];
2923 tmit_frag->client = client;
2924 tmit_frag->size = data_size;
2925
2926 GNUNET_CONTAINER_DLL_insert_tail (tmit_msg->frags_head, tmit_msg->frags_tail, tmit_frag);
2927 tmit_msg->client = client;
2928 return tmit_msg;
2929}
2930
2931
2932///**
2933// * Cancel transmission of current message to PSYC.
2934// *
2935// * @param plc Place to send to.
2936// * @param client Client the message originates from.
2937// */
2938//static void
2939//psyc_transmit_cancel (struct Place *plc, struct GNUNET_SERVICE_Client *client)
2940//{
2941// uint16_t type = GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL;
2942//
2943// struct GNUNET_MessageHeader msg;
2944// msg.size = htons (sizeof (msg));
2945// msg.type = htons (type);
2946//
2947// psyc_transmit_queue_message (plc, client, sizeof (msg), &msg, type, type, NULL);
2948// psyc_transmit_message (plc);
2949//
2950// /* FIXME: cleanup */
2951//}
2952
2953
2954static int
2955check_client_psyc_message (void *cls,
2956 const struct GNUNET_MessageHeader *msg)
2957{
2958 return GNUNET_OK;
2959}
2960
2961
2962/**
2963 * Handle an incoming message from a client, to be transmitted to the place.
2964 */
2965static void
2966handle_client_psyc_message (void *cls,
2967 const struct GNUNET_MessageHeader *msg)
2968{
2969 struct Client *c = cls;
2970 struct GNUNET_SERVICE_Client *client = c->client;
2971 struct Place *plc = c->place;
2972 int ret;
2973
2974 if (NULL == plc)
2975 {
2976 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2977 "received PSYC message for non-existing client %p\n",
2978 client);
2979 GNUNET_break (0);
2980 GNUNET_SERVICE_client_drop (client);
2981 return;
2982 }
2983 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2984 "%p Received message of type %d from client.\n", plc, ntohs (msg->type));
2985 GNUNET_PSYC_log_message (GNUNET_ERROR_TYPE_DEBUG, msg);
2986
2987 if (GNUNET_YES != plc->is_ready)
2988 {
2989 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
2990 "%p Place is not ready yet, disconnecting client.\n", plc);
2991 GNUNET_break (0);
2992 GNUNET_SERVICE_client_drop (client);
2993 return;
2994 }
2995
2996 uint16_t size = ntohs (msg->size);
2997 uint16_t psize = size - sizeof (*msg);
2998 if (psize < sizeof (struct GNUNET_MessageHeader)
2999 || GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD < psize)
3000 {
3001 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
3002 "%p Received message with invalid payload size (%u) from client.\n",
3003 plc, psize);
3004 GNUNET_break (0);
3005 GNUNET_SERVICE_client_drop (client);
3006 return;
3007 }
3008
3009 uint16_t first_ptype = 0;
3010 uint16_t last_ptype = 0;
3011 if (GNUNET_SYSERR ==
3012 GNUNET_PSYC_receive_check_parts (psize, (const char *) &msg[1],
3013 &first_ptype, &last_ptype))
3014 {
3015 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
3016 "%p Received invalid message part from client.\n", plc);
3017 GNUNET_break (0);
3018 GNUNET_SERVICE_client_drop (client);
3019 return;
3020 }
3021 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3022 "%p Received message with first part type %u and last part type %u.\n",
3023 plc, first_ptype, last_ptype);
3024
3025 c->tmit_msg
3026 = psyc_transmit_queue_message (plc, client, psize, &msg[1],
3027 first_ptype, last_ptype, c->tmit_msg);
3028 if (NULL != c->tmit_msg)
3029 {
3030 if (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END <= last_ptype)
3031 c->tmit_msg = NULL;
3032 ret = psyc_transmit_message (plc);
3033 }
3034 else
3035 {
3036 ret = GNUNET_SYSERR;
3037 }
3038 if (GNUNET_OK != ret)
3039 {
3040 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
3041 "%p Received invalid message part from client.\n", plc);
3042 GNUNET_break (0);
3043 GNUNET_SERVICE_client_drop (client);
3044 return;
3045 }
3046 GNUNET_SERVICE_client_continue (client);
3047}
3048
3049
3050/**
3051 * A historic message arrived from PSYC.
3052 */
3053static void
3054psyc_recv_history_message (void *cls, const struct GNUNET_PSYC_MessageHeader *msg)
3055{
3056 struct OperationClosure *opcls = cls;
3057 struct Client *c = opcls->client;
3058 struct Place *plc = c->place;
3059
3060 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3061 "%p Received historic message #%" PRId64 " (flags: %x)\n",
3062 plc, GNUNET_ntohll (msg->message_id), ntohl (msg->flags));
3063
3064 uint16_t size = ntohs (msg->header.size);
3065
3066 struct GNUNET_OperationResultMessage *
3067 res = GNUNET_malloc (sizeof (*res) + size);
3068 res->header.size = htons (sizeof (*res) + size);
3069 res->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_HISTORY_RESULT);
3070 res->op_id = opcls->op_id;
3071 res->result_code = GNUNET_htonll (GNUNET_OK);
3072
3073 GNUNET_memcpy (&res[1], msg, size);
3074
3075 /** @todo FIXME: send only to requesting client */
3076 place_send_msg (plc, GNUNET_MQ_msg_copy (&res->header));
3077
3078 GNUNET_free (res);
3079}
3080
3081
3082/**
3083 * Result of message history replay from PSYC.
3084 */
3085static void
3086psyc_recv_history_result (void *cls, int64_t result,
3087 const void *err_msg, uint16_t err_msg_size)
3088{
3089 struct OperationClosure *opcls = cls;
3090 struct Client *c = opcls->client;
3091 struct Place *plc = c->place;
3092
3093 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3094 "%p History replay #%" PRIu64 ": "
3095 "PSYCstore returned %" PRId64 " (%.*s)\n",
3096 plc, GNUNET_ntohll (opcls->op_id), result,
3097 err_msg_size, (const char *) err_msg);
3098
3099 // FIXME: place might have been destroyed
3100 client_send_result (c->client, opcls->op_id, result, err_msg, err_msg_size);
3101}
3102
3103
3104static int
3105check_client_history_replay (void *cls,
3106 const struct GNUNET_PSYC_HistoryRequestMessage *req)
3107{
3108 return GNUNET_OK;
3109}
3110
3111
3112/**
3113 * Client requests channel history.
3114 */
3115static void
3116handle_client_history_replay (void *cls,
3117 const struct GNUNET_PSYC_HistoryRequestMessage *req)
3118{
3119 struct Client *c = cls;
3120 struct GNUNET_SERVICE_Client *client = c->client;
3121 struct Place *plc = c->place;
3122 if (NULL == plc)
3123 {
3124 GNUNET_break (0);
3125 GNUNET_SERVICE_client_drop (client);
3126 return;
3127 }
3128
3129 uint16_t size = ntohs (req->header.size);
3130 const char *method_prefix = (const char *) &req[1];
3131
3132 if (size < sizeof (*req) + 1
3133 || '\0' != method_prefix[size - sizeof (*req) - 1])
3134 {
3135 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
3136 "%p History replay #%" PRIu64 ": "
3137 "invalid method prefix. size: %u < %zu?\n",
3138 plc, GNUNET_ntohll (req->op_id), size, sizeof (*req) + 1);
3139 GNUNET_break (0);
3140 GNUNET_SERVICE_client_drop (client);
3141 return;
3142 }
3143
3144 struct OperationClosure *opcls = GNUNET_malloc (sizeof (*opcls));
3145 opcls->client = c;
3146 opcls->op_id = req->op_id;
3147 opcls->flags = ntohl (req->flags);
3148
3149 if (0 == req->message_limit)
3150 GNUNET_PSYC_channel_history_replay (plc->channel,
3151 GNUNET_ntohll (req->start_message_id),
3152 GNUNET_ntohll (req->end_message_id),
3153 method_prefix, opcls->flags,
3154 psyc_recv_history_message, NULL,
3155 psyc_recv_history_result, opcls);
3156 else
3157 GNUNET_PSYC_channel_history_replay_latest (plc->channel,
3158 GNUNET_ntohll (req->message_limit),
3159 method_prefix, opcls->flags,
3160 psyc_recv_history_message, NULL,
3161 psyc_recv_history_result, opcls);
3162
3163 GNUNET_SERVICE_client_continue (client);
3164}
3165
3166
3167/**
3168 * A state variable part arrived from PSYC.
3169 */
3170void
3171psyc_recv_state_var (void *cls,
3172 const struct GNUNET_MessageHeader *mod,
3173 const char *name,
3174 const void *value,
3175 uint32_t value_size,
3176 uint32_t full_value_size)
3177{
3178 struct GNUNET_OperationResultMessage *result_msg;
3179 struct GNUNET_MQ_Envelope *env;
3180 struct OperationClosure *opcls = cls;
3181 struct Client *c = opcls->client;
3182 struct Place *plc = c->place;
3183 uint16_t size = ntohs (mod->size);
3184
3185 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3186 "%p Received state variable %s from PSYC\n",
3187 plc, name);
3188 env = GNUNET_MQ_msg_extra (result_msg,
3189 size,
3190 GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT);
3191 result_msg->op_id = opcls->op_id;
3192 result_msg->result_code = GNUNET_htonll (GNUNET_OK);
3193 GNUNET_memcpy (&result_msg[1], mod, size);
3194 /** @todo FIXME: send only to requesting client */
3195 place_send_msg (plc, env);
3196}
3197
3198
3199/**
3200 * Result of retrieving state variable from PSYC.
3201 */
3202static void
3203psyc_recv_state_result (void *cls, int64_t result,
3204 const void *err_msg, uint16_t err_msg_size)
3205{
3206 struct OperationClosure *opcls = cls;
3207 struct Client *c = opcls->client;
3208 struct Place *plc = c->place;
3209
3210 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3211 "%p State get #%" PRIu64 ": "
3212 "PSYCstore returned %" PRId64 " (%.*s)\n",
3213 plc, GNUNET_ntohll (opcls->op_id), result,
3214 err_msg_size, (const char *) err_msg);
3215
3216 // FIXME: place might have been destroyed
3217 client_send_result (c->client, opcls->op_id, result, err_msg, err_msg_size);
3218}
3219
3220
3221static int
3222check_client_state_get (void *cls,
3223 const struct GNUNET_PSYC_StateRequestMessage *req)
3224{
3225 return GNUNET_OK;
3226}
3227
3228
3229/**
3230 * Client requests channel history.
3231 */
3232static void
3233handle_client_state_get (void *cls,
3234 const struct GNUNET_PSYC_StateRequestMessage *req)
3235{
3236 struct Client *c = cls;
3237 struct GNUNET_SERVICE_Client *client = c->client;
3238 struct Place *plc = c->place;
3239 if (NULL == plc)
3240 {
3241 GNUNET_break (0);
3242 GNUNET_SERVICE_client_drop (client);
3243 return;
3244 }
3245
3246 uint16_t size = ntohs (req->header.size);
3247 const char *name = (const char *) &req[1];
3248
3249 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3250 "%p State get #%" PRIu64 ": %s\n",
3251 plc, GNUNET_ntohll (req->op_id), name);
3252
3253 if (size < sizeof (*req) + 1
3254 || '\0' != name[size - sizeof (*req) - 1])
3255 {
3256 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
3257 "%p State get #%" PRIu64 ": "
3258 "invalid name. size: %u < %zu?\n",
3259 plc, GNUNET_ntohll (req->op_id), size, sizeof (*req) + 1);
3260 GNUNET_break (0);
3261 GNUNET_SERVICE_client_drop (client);
3262 return;
3263 }
3264
3265 struct OperationClosure *opcls = GNUNET_malloc (sizeof (*opcls));
3266 opcls->client = c;
3267 opcls->op_id = req->op_id;
3268
3269 switch (ntohs (req->header.type))
3270 {
3271 case GNUNET_MESSAGE_TYPE_PSYC_STATE_GET:
3272 GNUNET_PSYC_channel_state_get (plc->channel, name,
3273 psyc_recv_state_var,
3274 psyc_recv_state_result, opcls);
3275 break;
3276
3277 case GNUNET_MESSAGE_TYPE_PSYC_STATE_GET_PREFIX:
3278 GNUNET_PSYC_channel_state_get_prefix (plc->channel, name,
3279 psyc_recv_state_var,
3280 psyc_recv_state_result, opcls);
3281 break;
3282
3283 default:
3284 GNUNET_assert (0);
3285 }
3286
3287 GNUNET_SERVICE_client_continue (client);
3288}
3289
3290
3291#define check_client_state_get_prefix check_client_state_get
3292#define handle_client_state_get_prefix handle_client_state_get
3293
3294
3295static void
3296namestore_recv_records_store_result (void *cls, int32_t result,
3297 const char *err_msg)
3298{
3299 struct OperationClosure *opcls = cls;
3300 struct Client *c = opcls->client;
3301
3302 // FIXME: client might have been disconnected
3303 client_send_result (c->client, opcls->op_id, result, err_msg,
3304 (NULL != err_msg) ? strlen (err_msg) : 0);
3305 GNUNET_free (opcls);
3306}
3307
3308
3309static int
3310check_client_zone_add_place (void *cls,
3311 const struct ZoneAddPlaceRequest *preq)
3312{
3313 return GNUNET_OK;
3314}
3315
3316
3317/**
3318 * Handle request to add PLACE record to GNS zone.
3319 */
3320static void
3321handle_client_zone_add_place (void *cls,
3322 const struct ZoneAddPlaceRequest *preq)
3323{
3324 struct Client *c = cls;
3325 struct GNUNET_SERVICE_Client *client = c->client;
3326
3327 uint16_t remaining = ntohs (preq->header.size) - sizeof (*preq);
3328 const char *p = (const char *) &preq[1];
3329 const char *name = NULL, *password = NULL;
3330 uint16_t offset = GNUNET_STRINGS_buffer_tokenize (p, remaining, 2,
3331 &name, &password);
3332 remaining -= offset;
3333 p += offset;
3334 const struct GNUNET_PeerIdentity *
3335 relays = (const struct GNUNET_PeerIdentity *) p;
3336 uint16_t relay_size = ntohl (preq->relay_count) * sizeof (*relays);
3337
3338 if (0 == offset || remaining != relay_size)
3339 {
3340 GNUNET_break (0);
3341 client_send_result (client, preq->op_id, GNUNET_SYSERR, NULL, 0);
3342 GNUNET_SERVICE_client_drop (client);
3343 return;
3344 }
3345
3346 struct GNUNET_GNSRECORD_Data rd = { };
3347 rd.record_type = GNUNET_GNSRECORD_TYPE_PLACE;
3348 rd.flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
3349 rd.expiration_time = GNUNET_ntohll (preq->expiration_time);
3350
3351 struct GNUNET_GNSRECORD_PlaceData *
3352 rec = GNUNET_malloc (sizeof (*rec) + relay_size);
3353 rec->place_pub_key = preq->place_pub_key;
3354 rec->origin = this_peer;
3355 rec->relay_count = preq->relay_count;
3356 GNUNET_memcpy (&rec[1], relays, relay_size);
3357
3358 rd.data = rec;
3359 rd.data_size = sizeof (*rec) + relay_size;
3360
3361 struct GNUNET_HashCode ego_pub_hash;
3362 GNUNET_CRYPTO_hash (&preq->ego_pub_key, sizeof (preq->ego_pub_key), &ego_pub_hash);
3363 struct Ego *ego = GNUNET_CONTAINER_multihashmap_get (egos, &ego_pub_hash);
3364 if (NULL == ego)
3365 {
3366 client_send_result (client, preq->op_id, GNUNET_SYSERR, NULL, 0);
3367 }
3368 else
3369 {
3370 struct OperationClosure *opcls = GNUNET_malloc (sizeof (*opcls));
3371 opcls->client = c;
3372 opcls->op_id = preq->op_id;
3373 GNUNET_NAMESTORE_records_store (namestore, &ego->key,
3374 name, 1, &rd,
3375 namestore_recv_records_store_result, opcls);
3376 /** @todo refresh stored records later */
3377 }
3378 GNUNET_SERVICE_client_continue (client);
3379}
3380
3381
3382static int
3383check_client_zone_add_nym (void *cls,
3384 const struct ZoneAddNymRequest *nreq)
3385{
3386 return GNUNET_OK;
3387}
3388
3389
3390/**
3391 * Handle request to add PLACE record to GNS zone.
3392 */
3393static void
3394handle_client_zone_add_nym (void *cls,
3395 const struct ZoneAddNymRequest *nreq)
3396{
3397 struct Client *c = cls;
3398 struct GNUNET_SERVICE_Client *client = c->client;
3399
3400 uint16_t name_size = ntohs (nreq->header.size) - sizeof (*nreq);
3401 const char *name = NULL;
3402 uint16_t offset = GNUNET_STRINGS_buffer_tokenize ((const char *) &nreq[1],
3403 name_size, 1, &name);
3404 if (0 == offset || offset != name_size)
3405 {
3406 GNUNET_break (0);
3407 client_send_result (client, nreq->op_id, GNUNET_SYSERR, NULL, 0);
3408 GNUNET_SERVICE_client_continue (client);
3409 return;
3410 }
3411
3412 struct GNUNET_GNSRECORD_Data rd = { };
3413 rd.record_type = GNUNET_GNSRECORD_TYPE_PKEY;
3414 rd.flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
3415 rd.expiration_time = GNUNET_ntohll (nreq->expiration_time);
3416 rd.data = &nreq->nym_pub_key;
3417 rd.data_size = sizeof (nreq->nym_pub_key);
3418
3419 struct GNUNET_HashCode ego_pub_hash;
3420 GNUNET_CRYPTO_hash (&nreq->ego_pub_key, sizeof (nreq->ego_pub_key), &ego_pub_hash);
3421 struct Ego *ego = GNUNET_CONTAINER_multihashmap_get (egos, &ego_pub_hash);
3422 if (NULL == ego)
3423 {
3424 client_send_result (client, nreq->op_id, GNUNET_SYSERR, NULL, 0);
3425 }
3426 else
3427 {
3428 struct OperationClosure *opcls = GNUNET_malloc (sizeof (*opcls));
3429 opcls->client = c;
3430 opcls->op_id = nreq->op_id;
3431 GNUNET_NAMESTORE_records_store (namestore, &ego->key,
3432 name, 1, &rd,
3433 namestore_recv_records_store_result, opcls);
3434 /** @todo refresh stored records later */
3435 }
3436 GNUNET_SERVICE_client_continue (client);
3437}
3438
3439
3440const char *
3441path_basename (const char *path)
3442{
3443 const char *basename = strrchr (path, DIR_SEPARATOR);
3444 if (NULL != basename)
3445 basename++;
3446
3447 if (NULL == basename || '\0' == *basename)
3448 return NULL;
3449
3450 return basename;
3451}
3452
3453
3454struct PlaceLoadClosure
3455{
3456 const char *app_id;
3457 const char *ego_pub_str;
3458};
3459
3460
3461/** Load a place file */
3462int
3463file_place_load (void *cls, const char *place_filename)
3464{
3465 struct PlaceLoadClosure *plcls = cls;
3466
3467 const char *place_pub_str = path_basename (place_filename);
3468 if (NULL == place_pub_str)
3469 {
3470 GNUNET_break (0);
3471 return GNUNET_OK;
3472 }
3473
3474 char *filename = NULL;
3475 GNUNET_asprintf (&filename, "%s%c" "%s%c" "%s%c" "%s",
3476 dir_social, DIR_SEPARATOR,
3477 "places", DIR_SEPARATOR,
3478 plcls->ego_pub_str, DIR_SEPARATOR,
3479 place_pub_str);
3480
3481 uint64_t file_size = 0;
3482 if (GNUNET_OK !=
3483 GNUNET_DISK_file_size (filename, &file_size, GNUNET_YES, GNUNET_YES)
3484 || file_size < sizeof (struct PlaceEnterRequest))
3485 {
3486 GNUNET_free (filename);
3487 return GNUNET_OK;
3488 }
3489
3490 struct PlaceEnterRequest *ereq = GNUNET_malloc (file_size);
3491 ssize_t read_size = GNUNET_DISK_fn_read (filename, ereq, file_size);
3492 GNUNET_free (filename);
3493 if (read_size < 0 || read_size < sizeof (*ereq))
3494 {
3495 GNUNET_free (ereq);
3496 return GNUNET_OK;
3497 }
3498
3499 uint16_t ereq_size = ntohs (ereq->header.size);
3500 if (read_size != ereq_size)
3501 {
3502 GNUNET_free (ereq);
3503 return GNUNET_OK;
3504 }
3505
3506 switch (ntohs (ereq->header.type))
3507 {
3508 case GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER:
3509 if (ereq_size < sizeof (struct HostEnterRequest))
3510 {
3511 GNUNET_free (ereq);
3512 return GNUNET_OK;
3513 }
3514 struct HostEnterRequest *hreq = (struct HostEnterRequest *) ereq;
3515 host_enter (hreq, NULL);
3516 break;
3517
3518 case GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER:
3519 if (ereq_size < sizeof (struct GuestEnterRequest))
3520 {
3521 GNUNET_free (ereq);
3522 return GNUNET_OK;
3523 }
3524 struct GuestEnterRequest *greq = (struct GuestEnterRequest *) ereq;
3525 guest_enter (greq, NULL);
3526 break;
3527
3528 default:
3529 GNUNET_free (ereq);
3530 return GNUNET_OK;
3531 }
3532
3533 if (GNUNET_SYSERR == app_place_add (plcls->app_id, ereq))
3534 {
3535 GNUNET_assert (0);
3536 }
3537 GNUNET_free (ereq);
3538 return GNUNET_OK;
3539}
3540
3541
3542/**
3543 * Read @e place_pub_str entries in @a dir_ego
3544 *
3545 * @param dir_ego
3546 * Data directory of an application ego.
3547 * $GNUNET_DATA_HOME/social/apps/$app_id/$ego_pub_str/
3548 */
3549int
3550scan_app_ego_dir (void *cls, const char *dir_ego)
3551{
3552 struct PlaceLoadClosure *plcls = cls;
3553 plcls->ego_pub_str = path_basename (dir_ego);
3554
3555 if (NULL != plcls->ego_pub_str)
3556 GNUNET_DISK_directory_scan (dir_ego, file_place_load, plcls);
3557
3558 return GNUNET_OK;
3559}
3560
3561/**
3562 * Read @e ego_pub_str entries in @a dir_app
3563 *
3564 * @param dir_app
3565 * Data directory of an application.
3566 * $GNUNET_DATA_HOME/social/apps/$app_id/
3567 */
3568int
3569scan_app_dir (void *cls, const char *dir_app)
3570{
3571 if (GNUNET_YES != GNUNET_DISK_directory_test (dir_app, GNUNET_YES))
3572 return GNUNET_OK;
3573
3574 struct PlaceLoadClosure plcls;
3575 plcls.app_id = path_basename (dir_app);
3576
3577 if (NULL != plcls.app_id)
3578 GNUNET_DISK_directory_scan (dir_app, scan_app_ego_dir, &plcls);
3579
3580 return GNUNET_OK;
3581}
3582
3583
3584static void
3585identity_recv_ego (void *cls, struct GNUNET_IDENTITY_Ego *id_ego,
3586 void **ctx, const char *name)
3587{
3588 if (NULL == id_ego) // end of initial list of egos
3589 return;
3590
3591 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3592 "social service received ego %s\n",
3593 name);
3594
3595 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
3596 GNUNET_IDENTITY_ego_get_public_key (id_ego, &ego_pub_key);
3597
3598 struct GNUNET_HashCode ego_pub_hash;
3599 GNUNET_CRYPTO_hash (&ego_pub_key, sizeof (ego_pub_key), &ego_pub_hash);
3600
3601 struct Ego *ego = GNUNET_CONTAINER_multihashmap_get (egos, &ego_pub_hash);
3602 if (NULL == ego && NULL == name)
3603 {
3604 // an ego that is none of our business has been deleted
3605 return;
3606 }
3607 if (NULL != ego)
3608 {
3609 // one of our egos has been changed
3610 GNUNET_free (ego->name);
3611 if (NULL == name)
3612 {
3613 // one of our egos has been deleted
3614 GNUNET_CONTAINER_multihashmap_remove (egos, &ego_pub_hash, ego);
3615 GNUNET_free (ego);
3616 return;
3617 }
3618 }
3619 else
3620 {
3621 ego = GNUNET_malloc (sizeof (*ego));
3622 }
3623 ego->key = *(GNUNET_IDENTITY_ego_get_private_key (id_ego));
3624 size_t name_size = strlen (name) + 1;
3625 ego->name = GNUNET_malloc (name_size);
3626 GNUNET_memcpy (ego->name, name, name_size);
3627
3628 GNUNET_CONTAINER_multihashmap_put (egos, &ego_pub_hash, ego,
3629 GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE);
3630
3631 // FIXME: notify clients about changed ego
3632}
3633
3634
3635/**
3636 * Initialize the PSYC service.
3637 *
3638 * @param cls Closure.
3639 * @param server The initialized server.
3640 * @param c Configuration to use.
3641 */
3642static void
3643run (void *cls,
3644 const struct GNUNET_CONFIGURATION_Handle *c,
3645 struct GNUNET_SERVICE_Handle *svc)
3646{
3647 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3648 "starting social service\n");
3649
3650 cfg = c;
3651 service = svc;
3652 GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer);
3653
3654 hosts = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
3655 guests = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
3656 place_guests = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
3657
3658 egos = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
3659 apps = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
3660 places = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO);
3661 apps_places = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO);
3662 //places_apps = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO);
3663
3664 id = GNUNET_IDENTITY_connect (cfg, &identity_recv_ego, NULL);
3665 gns = GNUNET_GNS_connect (cfg);
3666 namestore = GNUNET_NAMESTORE_connect (cfg);
3667 stats = GNUNET_STATISTICS_create ("social", cfg);
3668
3669 if (GNUNET_OK !=
3670 GNUNET_CONFIGURATION_get_value_filename (cfg, "social", "DATA_HOME",
3671 &dir_social))
3672 {
3673 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
3674 "social", "DATA_HOME");
3675 GNUNET_break (0);
3676 return;
3677 }
3678 GNUNET_asprintf (&dir_places, "%s%c%s",
3679 dir_social, DIR_SEPARATOR, "places");
3680 GNUNET_asprintf (&dir_apps, "%s%c%s",
3681 dir_social, DIR_SEPARATOR, "apps");
3682
3683 GNUNET_DISK_directory_scan (dir_apps, scan_app_dir, NULL);
3684
3685 GNUNET_SCHEDULER_add_shutdown (shutdown_task, NULL);
3686}
3687
3688
3689/**
3690 * Define "main" method using service macro.
3691 */
3692GNUNET_SERVICE_MAIN
3693("social",
3694 GNUNET_SERVICE_OPTION_NONE,
3695 run,
3696 client_notify_connect,
3697 client_notify_disconnect,
3698 NULL,
3699 GNUNET_MQ_hd_var_size (client_host_enter,
3700 GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER,
3701 struct HostEnterRequest,
3702 NULL),
3703 GNUNET_MQ_hd_var_size (client_guest_enter,
3704 GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER,
3705 struct GuestEnterRequest,
3706 NULL),
3707 GNUNET_MQ_hd_var_size (client_guest_enter_by_name,
3708 GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_BY_NAME,
3709 struct GuestEnterByNameRequest,
3710 NULL),
3711 GNUNET_MQ_hd_var_size (client_join_decision,
3712 GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION,
3713 struct GNUNET_PSYC_JoinDecisionMessage,
3714 NULL),
3715 GNUNET_MQ_hd_var_size (client_psyc_message,
3716 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE,
3717 struct GNUNET_MessageHeader,
3718 NULL),
3719 GNUNET_MQ_hd_var_size (client_history_replay,
3720 GNUNET_MESSAGE_TYPE_PSYC_HISTORY_REPLAY,
3721 struct GNUNET_PSYC_HistoryRequestMessage,
3722 NULL),
3723 GNUNET_MQ_hd_var_size (client_state_get,
3724 GNUNET_MESSAGE_TYPE_PSYC_STATE_GET,
3725 struct GNUNET_PSYC_StateRequestMessage,
3726 NULL),
3727 GNUNET_MQ_hd_var_size (client_state_get_prefix,
3728 GNUNET_MESSAGE_TYPE_PSYC_STATE_GET_PREFIX,
3729 struct GNUNET_PSYC_StateRequestMessage,
3730 NULL),
3731 GNUNET_MQ_hd_var_size (client_zone_add_place,
3732 GNUNET_MESSAGE_TYPE_SOCIAL_ZONE_ADD_PLACE,
3733 struct ZoneAddPlaceRequest,
3734 NULL),
3735 GNUNET_MQ_hd_var_size (client_zone_add_nym,
3736 GNUNET_MESSAGE_TYPE_SOCIAL_ZONE_ADD_NYM,
3737 struct ZoneAddNymRequest,
3738 NULL),
3739 GNUNET_MQ_hd_var_size (client_app_connect,
3740 GNUNET_MESSAGE_TYPE_SOCIAL_APP_CONNECT,
3741 struct AppConnectRequest,
3742 NULL),
3743 GNUNET_MQ_hd_fixed_size (client_app_detach,
3744 GNUNET_MESSAGE_TYPE_SOCIAL_APP_DETACH,
3745 struct AppDetachRequest,
3746 NULL),
3747 GNUNET_MQ_hd_fixed_size (client_place_leave,
3748 GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE,
3749 struct GNUNET_MessageHeader,
3750 NULL),
3751 GNUNET_MQ_hd_var_size (client_msg_proc_set,
3752 GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_SET,
3753 struct MsgProcRequest,
3754 NULL),
3755 GNUNET_MQ_hd_fixed_size (client_msg_proc_clear,
3756 GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_CLEAR,
3757 struct GNUNET_MessageHeader,
3758 NULL));
3759
3760/* end of gnunet-service-social.c */
diff --git a/src/social/gnunet-social.c b/src/social/gnunet-social.c
deleted file mode 100644
index 14701bfda..000000000
--- a/src/social/gnunet-social.c
+++ /dev/null
@@ -1,1411 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2016 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * CLI tool to interact with the social service.
23 *
24 * @author Gabor X Toth
25 */
26
27#include <inttypes.h>
28
29#include "platform.h"
30#include "gnunet_util_lib.h"
31#include "gnunet_social_service.h"
32
33#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
34
35#define DATA2ARG(data) data, sizeof (data)
36
37/* operations corresponding to API calls */
38
39/** --status */
40static int op_status;
41
42/** --host-enter */
43static int op_host_enter;
44
45/** --host-reconnect */
46static int op_host_reconnect;
47
48/** --host-leave */
49static int op_host_leave;
50
51/** --host-announce */
52static int op_host_announce;
53
54/** --host-assign */
55static int op_host_assign;
56
57/** --guest-enter */
58static int op_guest_enter;
59
60/** --guest-reconnect */
61static int op_guest_reconnect;
62
63/** --guest-leave */
64static int op_guest_leave;
65
66/** --guest-talk */
67static int op_guest_talk;
68
69/** --replay */
70static int op_replay;
71
72/** --replay-latest */
73static int op_replay_latest;
74
75/** --look-at */
76static int op_look_at;
77
78/** --look-for */
79static int op_look_for;
80
81
82/* options */
83
84/** --app */
85static char *opt_app = "cli";
86
87/** --place */
88static char *opt_place;
89
90/** --ego */
91static char *opt_ego;
92
93/** --gns */
94static char *opt_gns;
95
96/** --peer */
97static char *opt_peer;
98
99/** --follow */
100static int opt_follow;
101
102/** --welcome */
103static int opt_welcome;
104
105/** --deny */
106static int opt_deny;
107
108/** --method */
109static char *opt_method;
110
111/** --data */
112// FIXME: should come from STDIN
113static char *opt_data;
114
115/** --name */
116static char *opt_name;
117
118/** --start */
119static unsigned long long opt_start;
120
121/** --until */
122static unsigned long long opt_until;
123
124/** --limit */
125static unsigned long long opt_limit;
126
127
128/* global vars */
129
130/** exit code */
131static int ret = 1;
132
133/** are we waiting for service to close our connection */
134static char is_disconnecting = 0;
135
136/** Task handle for timeout termination. */
137struct GNUNET_SCHEDULER_Task *timeout_task;
138
139const struct GNUNET_CONFIGURATION_Handle *cfg;
140
141struct GNUNET_PeerIdentity peer, this_peer;
142
143struct GNUNET_SOCIAL_App *app;
144
145/** public key of connected place */
146struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
147
148struct GNUNET_PSYC_Slicer *slicer;
149
150struct GNUNET_SOCIAL_Ego *ego;
151struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
152
153struct GNUNET_SOCIAL_Host *hst;
154struct GNUNET_SOCIAL_Guest *gst;
155struct GNUNET_SOCIAL_Place *plc;
156
157const char *method_received;
158
159
160/* DISCONNECT */
161
162
163/**
164 * Callback called after the host or guest place disconnected.
165 */
166static void
167disconnected (void *cls)
168{
169 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "disconnected()\n");
170 GNUNET_SCHEDULER_shutdown ();
171}
172
173
174/**
175 * Callback called after the application disconnected.
176 */
177static void
178app_disconnected (void *cls)
179{
180 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "app_disconnected()\n");
181 if (hst || gst)
182 {
183 if (hst)
184 {
185 GNUNET_SOCIAL_host_disconnect (hst, disconnected, NULL);
186 }
187 if (gst)
188 {
189 GNUNET_SOCIAL_guest_disconnect (gst, disconnected, NULL);
190 }
191 }
192 else
193 {
194 GNUNET_SCHEDULER_shutdown ();
195 }
196}
197
198
199/**
200 * Disconnect from connected GNUnet services.
201 */
202static void
203disconnect ()
204{
205 // handle that we get called several times from several places, but should we?
206 if (!is_disconnecting++) {
207 GNUNET_SOCIAL_app_disconnect (app, app_disconnected, NULL);
208 }
209 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "disconnect() called for the #%d time\n", is_disconnecting);
210}
211
212
213static void
214scheduler_shutdown (void *cls)
215{
216 disconnect ();
217}
218
219
220/**
221 * Callback called when the program failed to finish the requested operation in time.
222 */
223static void
224timeout (void *cls)
225{
226 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "timeout()\n");
227 disconnect ();
228}
229
230static void
231schedule_success (void *cls)
232{
233 ret = 0;
234 disconnect ();
235}
236
237
238static void
239schedule_fail (void *cls)
240{
241 disconnect ();
242}
243
244
245/**
246 * Schedule exit with success result.
247 */
248static void
249exit_success ()
250{
251 if (timeout_task != NULL)
252 {
253 GNUNET_SCHEDULER_cancel (timeout_task);
254 timeout_task = NULL;
255 }
256 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, schedule_success, NULL);
257}
258
259
260/**
261 * Schedule exit with failure result.
262 */
263static void
264exit_fail ()
265{
266 if (timeout_task != NULL)
267 {
268 GNUNET_SCHEDULER_cancel (timeout_task);
269 timeout_task = NULL;
270 }
271 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, schedule_fail, NULL);
272}
273
274
275/* LEAVE */
276
277
278/**
279 * Callback notifying about the host has left and stopped hosting the place.
280 *
281 * This also indicates the end of the connection to the service.
282 */
283static void
284host_left (void *cls)
285{
286 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
287 "The host has left the place.\n");
288 exit_success ();
289}
290
291
292/**
293 * Leave a place permanently and stop hosting a place.
294 */
295static void
296host_leave ()
297{
298 GNUNET_SOCIAL_host_leave (hst, NULL, host_left, NULL);
299 hst = NULL;
300 plc = NULL;
301}
302
303
304/**
305 * Callback notifying about the guest has left the place.
306 *
307 * This also indicates the end of the connection to the service.
308 */
309static void
310guest_left (void *cls)
311{
312 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
313 "Guest has left the place.\n");
314}
315
316
317/**
318 * Leave a place permanently as guest.
319 */
320static void
321guest_leave ()
322{
323 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
324 // FIXME: wrong use of vars
325 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET,
326 "_message", DATA2ARG ("Leaving."));
327 GNUNET_SOCIAL_guest_leave (gst, env, guest_left, NULL);
328 GNUNET_PSYC_env_destroy (env);
329 gst = NULL;
330 plc = NULL;
331}
332
333
334/* ANNOUNCE / ASSIGN / TALK */
335
336
337struct TransmitClosure
338{
339 const char *data;
340 size_t size;
341} tmit;
342
343
344/**
345 * Callback notifying about available buffer space to write message data
346 * when transmitting messages using host_announce() or guest_talk()
347 */
348static int
349notify_data (void *cls, uint16_t *data_size, void *data)
350{
351 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
352 "Transmit notify data: %u bytes available\n",
353 *data_size);
354
355 struct TransmitClosure *tmit = cls;
356 uint16_t size = tmit->size < *data_size ? tmit->size : *data_size;
357 *data_size = size;
358 GNUNET_memcpy (data, tmit->data, size);
359
360 tmit->size -= size;
361 tmit->data += size;
362
363 if (0 == tmit->size)
364 {
365 if ((op_host_announce || op_host_assign || op_guest_talk) && !opt_follow)
366 {
367 exit_success ();
368 }
369 return GNUNET_YES;
370 }
371 else
372 {
373 return GNUNET_NO;
374 }
375}
376
377
378/**
379 * Host announcement - send a message to the place.
380 */
381static void
382host_announce (const char *method, const char *data, size_t data_size)
383{
384 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
385 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET,
386 "_foo", DATA2ARG ("bar baz"));
387
388 tmit = (struct TransmitClosure) {};
389 tmit.data = data;
390 tmit.size = data_size;
391
392 GNUNET_SOCIAL_host_announce (hst, method, env,
393 notify_data, &tmit,
394 GNUNET_SOCIAL_ANNOUNCE_NONE);
395 GNUNET_PSYC_env_destroy (env);
396}
397
398
399/**
400 * Assign a state var of @a name to the value of @a data.
401 */
402static void
403host_assign (const char *name, const char *data, size_t data_size)
404{
405 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
406 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_ASSIGN,
407 name, data, data_size);
408
409 tmit = (struct TransmitClosure) {};
410 GNUNET_SOCIAL_host_announce (hst, "_assign", env,
411 notify_data, &tmit,
412 GNUNET_SOCIAL_ANNOUNCE_NONE);
413 GNUNET_PSYC_env_destroy (env);
414}
415
416
417/**
418 * Guest talk request to host.
419 */
420static void
421guest_talk (const char *method,
422 const char *data, size_t data_size)
423{
424 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
425 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET,
426 "_foo", DATA2ARG ("bar baz"));
427
428 tmit = (struct TransmitClosure) {};
429 tmit.data = data;
430 tmit.size = data_size;
431
432 GNUNET_SOCIAL_guest_talk (gst, method, env,
433 notify_data, &tmit,
434 GNUNET_SOCIAL_TALK_NONE);
435 GNUNET_PSYC_env_destroy (env);
436}
437
438
439/* HISTORY REPLAY */
440
441
442/**
443 * Callback notifying about the end of history replay results.
444 */
445static void
446recv_history_replay_result (void *cls, int64_t result,
447 const void *data, uint16_t data_size)
448{
449 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
450 "Received history replay result: %" PRId64 "\n"
451 "%.*s\n",
452 result, data_size, (const char *) data);
453
454 if (op_replay || op_replay_latest)
455 {
456 exit_success ();
457 }
458}
459
460
461/**
462 * Replay history between a given @a start and @a end message IDs,
463 * optionally filtered by a method @a prefix.
464 */
465static void
466history_replay (uint64_t start, uint64_t end, const char *prefix)
467{
468 GNUNET_SOCIAL_place_history_replay (plc, start, end, prefix,
469 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
470 slicer,
471 recv_history_replay_result,
472 NULL);
473}
474
475
476/**
477 * Replay latest @a limit messages.
478 */
479static void
480history_replay_latest (uint64_t limit, const char *prefix)
481{
482 GNUNET_SOCIAL_place_history_replay_latest (plc, limit, prefix,
483 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
484 slicer,
485 recv_history_replay_result,
486 NULL);
487}
488
489
490/* LOOK AT/FOR */
491
492
493/**
494 * Callback notifying about the end of state var results.
495 */
496static void
497look_result (void *cls, int64_t result_code,
498 const void *data, uint16_t data_size)
499{
500 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
501 "Received look result: %" PRId64 "\n", result_code);
502
503 if (op_look_at || op_look_for)
504 {
505 exit_success ();
506 }
507}
508
509
510/**
511 * Callback notifying about a state var result.
512 */
513static void
514look_var (void *cls,
515 const struct GNUNET_MessageHeader *mod,
516 const char *name,
517 const void *value,
518 uint32_t value_size,
519 uint32_t full_value_size)
520{
521 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
522 "Received var: %s\n%.*s\n",
523 name, value_size, (const char *) value);
524}
525
526
527/**
528 * Look for a state var using exact match of the name.
529 */
530static void
531look_at (const char *full_name)
532{
533 GNUNET_SOCIAL_place_look_at (plc, full_name, look_var, look_result, NULL);
534}
535
536
537/**
538 * Look for state vars by name prefix.
539 */
540static void
541look_for (const char *name_prefix)
542{
543 GNUNET_SOCIAL_place_look_for (plc, name_prefix, look_var, look_result, NULL);
544}
545
546
547/* SLICER */
548
549
550/**
551 * Callback notifying about the start of a new incoming message.
552 */
553static void
554slicer_recv_method (void *cls,
555 const struct GNUNET_PSYC_MessageHeader *msg,
556 const struct GNUNET_PSYC_MessageMethod *meth,
557 uint64_t message_id,
558 const char *method_name)
559{
560 method_received = method_name;
561 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
562 "Received method for message ID %" PRIu64 ":\n"
563 "%s (flags: %x)\n",
564 message_id, method_name, ntohl (meth->flags));
565 /* routing header is missing, so we just print double newline */
566 printf("\n");
567 /* we output . instead of | to indicate that this is not proper PSYC syntax */
568 /* FIXME: use libpsyc here */
569}
570
571
572/**
573 * Callback notifying about an incoming modifier.
574 */
575static void
576slicer_recv_modifier (void *cls,
577 const struct GNUNET_PSYC_MessageHeader *msg,
578 const struct GNUNET_MessageHeader *pmsg,
579 uint64_t message_id,
580 enum GNUNET_PSYC_Operator oper,
581 const char *name,
582 const void *value,
583 uint16_t value_size,
584 uint16_t full_value_size)
585{
586#if 0
587 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
588 "Received modifier for message ID %" PRIu64 ":\n"
589 "%c%s: %.*s (size: %u)\n",
590 message_id, oper, name, value_size, (const char *) value, value_size);
591#else
592 /* obviously not binary safe */
593 printf("%c%s\t%.*s\n",
594 oper, name, value_size, (const char *) value);
595#endif
596}
597
598
599/**
600 * Callback notifying about an incoming data fragment.
601 */
602static void
603slicer_recv_data (void *cls,
604 const struct GNUNET_PSYC_MessageHeader *msg,
605 const struct GNUNET_MessageHeader *pmsg,
606 uint64_t message_id,
607 const void *data,
608 uint16_t data_size)
609{
610#if 0
611 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
612 "Received data for message ID %" PRIu64 ":\n"
613 "%.*s\n",
614 message_id, data_size, (const char *) data);
615#else
616 /* obviously not binary safe */
617 printf("%s\n%.*s\n",
618 method_received, data_size, (const char *) data);
619#endif
620}
621
622
623/**
624 * Callback notifying about the end of a message.
625 */
626static void
627slicer_recv_eom (void *cls,
628 const struct GNUNET_PSYC_MessageHeader *msg,
629 const struct GNUNET_MessageHeader *pmsg,
630 uint64_t message_id,
631 uint8_t is_cancelled)
632{
633 printf(".\n");
634 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
635 "Received end of message ID %" PRIu64
636 ", cancelled: %u\n",
637 message_id, is_cancelled);
638}
639
640
641/**
642 * Create a slicer for receiving message parts.
643 */
644static struct GNUNET_PSYC_Slicer *
645slicer_create ()
646{
647 slicer = GNUNET_PSYC_slicer_create ();
648
649 /* register slicer to receive incoming messages with any method name */
650 GNUNET_PSYC_slicer_method_add (slicer, "", NULL,
651 slicer_recv_method, slicer_recv_modifier,
652 slicer_recv_data, slicer_recv_eom, NULL);
653 return slicer;
654}
655
656
657/* GUEST ENTER */
658
659
660/**
661 * Callback called when the guest receives an entry decision from the host.
662 *
663 * It is called once after using guest_enter() or guest_enter_by_name(),
664 * in case of a reconnection only the local enter callback is called.
665 */
666static void
667guest_recv_entry_decision (void *cls,
668 int is_admitted,
669 const struct GNUNET_PSYC_Message *entry_msg)
670{
671 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
672 "Guest received entry decision %d\n",
673 is_admitted);
674
675 if (NULL != entry_msg)
676 {
677 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
678 const char *method_name = NULL;
679 const void *data = NULL;
680 uint16_t data_size = 0;
681 struct GNUNET_PSYC_MessageHeader *
682 pmsg = GNUNET_PSYC_message_header_create_from_psyc (entry_msg);
683 GNUNET_PSYC_message_parse (pmsg, &method_name, env, &data, &data_size);
684 GNUNET_free (pmsg);
685
686 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
687 "%s\n%.*s\n",
688 method_name, data_size, (const char *) data);
689 }
690
691 if (op_guest_enter && !opt_follow)
692 {
693 exit_success ();
694 }
695}
696
697
698/**
699 * Callback called after a guest connection is established to the local service.
700 */
701static void
702guest_recv_local_enter (void *cls, int result,
703 const struct GNUNET_CRYPTO_EddsaPublicKey *pub_key,
704 uint64_t max_message_id)
705{
706 char *pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (pub_key);
707 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
708 "Guest entered local place: %s, max_message_id: %" PRIu64 "\n",
709 pub_str, max_message_id);
710 GNUNET_free (pub_str);
711 GNUNET_assert (0 <= result);
712
713 if (op_guest_enter && !opt_follow)
714 {
715 exit_success ();
716 }
717}
718
719
720/**
721 * Create entry request message.
722 */
723static struct GNUNET_PSYC_Message *
724guest_enter_msg_create ()
725{
726 const char *method_name = "_request_enter";
727 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
728 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET,
729 "_foo", DATA2ARG ("bar"));
730 void *data = "let me in";
731 uint16_t data_size = strlen (data) + 1;
732
733 return GNUNET_PSYC_message_create (method_name, env, data, data_size);
734}
735
736
737/**
738 * Enter a place as guest, using its public key and peer ID.
739 */
740static void
741guest_enter (const struct GNUNET_CRYPTO_EddsaPublicKey *pub_key,
742 const struct GNUNET_PeerIdentity *peer)
743{
744 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
745 "Entering to place as guest.\n");
746
747 if (NULL == ego)
748 {
749 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "--ego missing or invalid\n");
750 exit_fail ();
751 return;
752 }
753
754 struct GNUNET_PSYC_Message *join_msg = guest_enter_msg_create ();
755 gst = GNUNET_SOCIAL_guest_enter (app, ego, pub_key,
756 GNUNET_PSYC_SLAVE_JOIN_NONE,
757 peer, 0, NULL, join_msg, slicer_create (),
758 guest_recv_local_enter,
759 guest_recv_entry_decision, NULL);
760 GNUNET_free (join_msg);
761 plc = GNUNET_SOCIAL_guest_get_place (gst);
762}
763
764
765/**
766 * Enter a place as guest using its GNS address.
767 */
768static void
769guest_enter_by_name (const char *gns_name)
770{
771 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
772 "Entering to place by name as guest.\n");
773
774 struct GNUNET_PSYC_Message *join_msg = guest_enter_msg_create ();
775 gst = GNUNET_SOCIAL_guest_enter_by_name (app, ego, gns_name, NULL,
776 join_msg, slicer,
777 guest_recv_local_enter,
778 guest_recv_entry_decision, NULL);
779 GNUNET_free (join_msg);
780 plc = GNUNET_SOCIAL_guest_get_place (gst);
781}
782
783
784/* HOST ENTER */
785
786
787/**
788 * Callback called when a @a nym wants to enter the place.
789 *
790 * The request needs to be replied with an entry decision.
791 */
792static void
793host_answer_door (void *cls,
794 struct GNUNET_SOCIAL_Nym *nym,
795 const char *method_name,
796 struct GNUNET_PSYC_Environment *env,
797 const void *data,
798 size_t data_size)
799{
800 const struct GNUNET_CRYPTO_EcdsaPublicKey *
801 nym_key = GNUNET_SOCIAL_nym_get_pub_key (nym);
802 char *
803 nym_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key);
804
805 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
806 "Entry request: %s\n", nym_str);
807 GNUNET_free (nym_str);
808
809 if (opt_welcome)
810 {
811 struct GNUNET_PSYC_Message *
812 resp = GNUNET_PSYC_message_create ("_notice_place_admit", env,
813 DATA2ARG ("Welcome, nym!"));
814 GNUNET_SOCIAL_host_entry_decision (hst, nym, GNUNET_YES, resp);
815 GNUNET_free (resp);
816 }
817 else if (opt_deny)
818 {
819 struct GNUNET_PSYC_Message *
820 resp = GNUNET_PSYC_message_create ("_notice_place_refuse", NULL,
821 DATA2ARG ("Go away!"));
822 GNUNET_SOCIAL_host_entry_decision (hst, nym, GNUNET_NO, resp);
823 GNUNET_free (resp);
824 }
825
826
827}
828
829
830/**
831 * Callback called when a @a nym has left the place.
832 */
833static void
834host_farewell (void *cls,
835 const struct GNUNET_SOCIAL_Nym *nym,
836 struct GNUNET_PSYC_Environment *env)
837{
838 const struct GNUNET_CRYPTO_EcdsaPublicKey *
839 nym_key = GNUNET_SOCIAL_nym_get_pub_key (nym);
840 char *
841 nym_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key);
842
843 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
844 "Farewell: %s\n", nym_str);
845 GNUNET_free (nym_str);
846}
847
848
849/**
850 * Callback called after the host entered the place.
851 */
852static void
853host_entered (void *cls, int result,
854 const struct GNUNET_CRYPTO_EddsaPublicKey *pub_key,
855 uint64_t max_message_id)
856{
857 place_pub_key = *pub_key;
858 char *pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (pub_key);
859 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
860 "Host entered: %s, max_message_id: %" PRIu64 "\n",
861 pub_str, max_message_id);
862 GNUNET_free (pub_str);
863
864 if (op_host_enter && !opt_follow)
865 {
866 exit_success ();
867 }
868}
869
870
871/**
872 * Enter and start hosting a place.
873 */
874static void
875host_enter ()
876{
877 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "host_enter()\n");
878
879 if (NULL == ego)
880 {
881 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "--ego missing or invalid\n");
882 exit_fail ();
883 return;
884 }
885
886 hst = GNUNET_SOCIAL_host_enter (app, ego,
887 GNUNET_PSYC_CHANNEL_PRIVATE,
888 slicer_create (), host_entered,
889 host_answer_door, host_farewell, NULL);
890 plc = GNUNET_SOCIAL_host_get_place (hst);
891}
892
893
894/* PLACE RECONNECT */
895
896
897/**
898 * Perform operations common to both host & guest places.
899 */
900static void
901place_reconnected ()
902{
903 static int first_run = GNUNET_YES;
904 if (GNUNET_NO == first_run)
905 return;
906 first_run = GNUNET_NO;
907
908 if (op_replay) {
909 history_replay (opt_start, opt_until, opt_method);
910 }
911 else if (op_replay_latest) {
912 history_replay_latest (opt_limit, opt_method);
913 }
914 else if (op_look_at) {
915 look_at (opt_name);
916 }
917 else if (op_look_for) {
918 look_for (opt_name);
919 }
920}
921
922
923/**
924 * Callback called after reconnecting to a host place.
925 */
926static void
927host_reconnected (void *cls, int result,
928 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
929 uint64_t max_message_id)
930{
931 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
932 "Host reconnected.\n");
933
934 if (op_host_leave) {
935 host_leave ();
936 }
937 else if (op_host_announce) {
938 host_announce (opt_method, opt_data, strlen (opt_data));
939 }
940 else if (op_host_assign) {
941 host_assign (opt_name, opt_data, strlen (opt_data) + 1);
942 }
943 else {
944 place_reconnected ();
945 }
946}
947
948
949/**
950 * Callback called after reconnecting to a guest place.
951 */
952static void
953guest_reconnected (void *cls, int result,
954 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
955 uint64_t max_message_id)
956{
957 char *place_pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (place_pub_key);
958 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
959 "Guest reconnected to place %s.\n", place_pub_str);
960 GNUNET_free (place_pub_str);
961
962 if (op_guest_leave) {
963 guest_leave ();
964 }
965 else if (op_guest_talk) {
966 guest_talk (opt_method, opt_data, strlen (opt_data));
967 }
968 else {
969 place_reconnected ();
970 }
971}
972
973
974/* APP */
975
976
977/**
978 * Callback called after the ego and place callbacks.
979 */
980static void
981app_connected (void *cls)
982{
983 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
984 "App connected: %p\n", cls);
985
986 if (op_status)
987 {
988 exit_success ();
989 }
990 else if (op_host_enter)
991 {
992 host_enter ();
993 }
994 else if (op_guest_enter)
995 {
996 if (opt_gns)
997 {
998 guest_enter_by_name (opt_gns);
999 }
1000 else
1001 {
1002 if (opt_peer)
1003 {
1004 if (GNUNET_OK != GNUNET_CRYPTO_eddsa_public_key_from_string (opt_peer,
1005 strlen (opt_peer),
1006 &peer.public_key))
1007 {
1008 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1009 "--peer invalid");
1010 exit_fail ();
1011 return;
1012 }
1013 }
1014 else
1015 {
1016 peer = this_peer;
1017 }
1018 guest_enter (&place_pub_key, &peer);
1019 }
1020 }
1021 printf(".\n");
1022}
1023
1024
1025/**
1026 * Callback notifying about a host place available for reconnection.
1027 */
1028static void
1029app_recv_host (void *cls,
1030 struct GNUNET_SOCIAL_HostConnection *hconn,
1031 struct GNUNET_SOCIAL_Ego *ego,
1032 const struct GNUNET_CRYPTO_EddsaPublicKey *host_pub_key,
1033 enum GNUNET_SOCIAL_AppPlaceState place_state)
1034{
1035 char *host_pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (host_pub_key);
1036 printf ("Host\t%s\n", host_pub_str);
1037 GNUNET_free (host_pub_str);
1038
1039 if ((op_host_reconnect || op_host_leave || op_host_announce || op_host_assign
1040 || op_replay || op_replay_latest
1041 || op_look_at || op_look_for)
1042 && 0 == memcmp (&place_pub_key, host_pub_key, sizeof (*host_pub_key)))
1043 {
1044 hst = GNUNET_SOCIAL_host_enter_reconnect (hconn, slicer_create (), host_reconnected,
1045 host_answer_door, host_farewell, NULL);
1046 plc = GNUNET_SOCIAL_host_get_place (hst);
1047 }
1048}
1049
1050
1051/**
1052 * Callback notifying about a guest place available for reconnection.
1053 */
1054static void
1055app_recv_guest (void *cls,
1056 struct GNUNET_SOCIAL_GuestConnection *gconn,
1057 struct GNUNET_SOCIAL_Ego *ego,
1058 const struct GNUNET_CRYPTO_EddsaPublicKey *guest_pub_key,
1059 enum GNUNET_SOCIAL_AppPlaceState place_state)
1060{
1061 char *guest_pub_str = GNUNET_CRYPTO_eddsa_public_key_to_string (guest_pub_key);
1062 printf ("Guest\t%s\n", guest_pub_str);
1063 GNUNET_free (guest_pub_str);
1064
1065 if ((op_guest_reconnect || op_guest_leave || op_guest_talk
1066 || op_replay || op_replay_latest
1067 || op_look_at || op_look_for)
1068 && 0 == memcmp (&place_pub_key, guest_pub_key, sizeof (*guest_pub_key)))
1069 {
1070 gst = GNUNET_SOCIAL_guest_enter_reconnect (gconn, GNUNET_PSYC_SLAVE_JOIN_NONE,
1071 slicer_create (), guest_reconnected, NULL);
1072 plc = GNUNET_SOCIAL_guest_get_place (gst);
1073 }
1074}
1075
1076
1077/**
1078 * Callback notifying about an available ego.
1079 */
1080static void
1081app_recv_ego (void *cls,
1082 struct GNUNET_SOCIAL_Ego *e,
1083 const struct GNUNET_CRYPTO_EcdsaPublicKey *pub_key,
1084 const char *name)
1085{
1086 char *s = GNUNET_CRYPTO_ecdsa_public_key_to_string (pub_key);
1087 printf ("Ego\t%s\t%s\n", s, name);
1088 GNUNET_free (s);
1089
1090 if (0 == memcmp (&ego_pub_key, pub_key, sizeof (*pub_key))
1091 || (NULL != opt_ego && 0 == strcmp (opt_ego, name)))
1092 {
1093 ego = e;
1094 }
1095
1096}
1097
1098
1099
1100/**
1101 * Establish application connection to receive available egos and places.
1102 */
1103static void
1104app_connect (void *cls)
1105{
1106 app = GNUNET_SOCIAL_app_connect (cfg, opt_app,
1107 app_recv_ego,
1108 app_recv_host,
1109 app_recv_guest,
1110 app_connected,
1111 NULL);
1112}
1113
1114
1115/**
1116 * Main function run by the scheduler.
1117 *
1118 * @param cls closure
1119 * @param args remaining command-line arguments
1120 * @param cfgfile name of the configuration file used (for saving, can be NULL!)
1121 * @param c configuration
1122 */
1123static void
1124run (void *cls, char *const *args, const char *cfgfile,
1125 const struct GNUNET_CONFIGURATION_Handle *c)
1126{
1127 cfg = c;
1128 GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer);
1129
1130 if (!opt_method)
1131 opt_method = "message";
1132 if (!opt_data)
1133 opt_data = "";
1134 if (!opt_name)
1135 opt_name = "";
1136
1137 if (! (op_status
1138 || op_host_enter || op_host_reconnect || op_host_leave
1139 || op_host_announce || op_host_assign
1140 || op_guest_enter || op_guest_reconnect
1141 || op_guest_leave || op_guest_talk
1142 || op_replay || op_replay_latest
1143 || op_look_at || op_look_for))
1144 {
1145 op_status = 1;
1146 fputs("Caution: This tool does not produce correct binary safe PSYC syntax.\n\n", stderr);
1147 }
1148
1149 GNUNET_SCHEDULER_add_shutdown (scheduler_shutdown, NULL);
1150 if (!opt_follow)
1151 {
1152 timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, timeout, NULL);
1153 }
1154
1155 if ((op_host_reconnect || op_host_leave || op_host_announce || op_host_assign
1156 || op_guest_reconnect || (op_guest_enter && !opt_gns)
1157 || op_guest_leave || op_guest_talk
1158 || op_replay || op_replay_latest
1159 || op_look_at || op_look_for)
1160 && (!opt_place
1161 || GNUNET_OK != GNUNET_CRYPTO_eddsa_public_key_from_string (opt_place,
1162 strlen (opt_place),
1163 &place_pub_key)))
1164 {
1165 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1166 _("--place missing or invalid.\n"));
1167 /* FIXME: why does it segfault here? */
1168 exit_fail ();
1169 return;
1170 }
1171
1172 if (opt_ego)
1173 {
1174 if (GNUNET_OK !=
1175 GNUNET_CRYPTO_ecdsa_public_key_from_string (opt_ego,
1176 strlen (opt_ego),
1177 &ego_pub_key))
1178 {
1179 FPRINTF (stderr,
1180 _("Public key `%s' malformed\n"),
1181 opt_ego);
1182 exit_fail ();
1183 return;
1184 }
1185 }
1186
1187 GNUNET_SCHEDULER_add_now (app_connect, NULL);
1188}
1189
1190
1191/**
1192 * The main function to obtain peer information.
1193 *
1194 * @param argc number of arguments from the command line
1195 * @param argv command line arguments
1196 * @return 0 ok, 1 on error
1197 */
1198int
1199main (int argc, char *const *argv)
1200{
1201 int res;
1202 struct GNUNET_GETOPT_CommandLineOption options[] = {
1203 /*
1204 * gnunet program options in addition to the ones below:
1205 *
1206 * -c, --config=FILENAME
1207 * -l, --logfile=LOGFILE
1208 * -L, --log=LOGLEVEL
1209 * -h, --help
1210 * -v, --version
1211 */
1212
1213 /* operations */
1214
1215 GNUNET_GETOPT_option_flag ('A',
1216 "host-assign",
1217 gettext_noop ("assign --name in state to --data"),
1218 &op_host_assign),
1219
1220 GNUNET_GETOPT_option_flag ('B',
1221 "guest-leave",
1222 gettext_noop ("say good-bye and leave somebody else's place"),
1223 &op_guest_leave),
1224
1225 GNUNET_GETOPT_option_flag ('C',
1226 "host-enter",
1227 gettext_noop ("create a place"),
1228 &op_host_enter),
1229
1230 GNUNET_GETOPT_option_flag ('D',
1231 "host-leave",
1232 gettext_noop ("destroy a place we were hosting"),
1233 &op_host_leave),
1234
1235 GNUNET_GETOPT_option_flag ('E',
1236 "guest-enter",
1237 gettext_noop ("enter somebody else's place"),
1238 &op_guest_enter),
1239
1240
1241 GNUNET_GETOPT_option_flag ('F',
1242 "look-for",
1243 gettext_noop ("find state matching name prefix"),
1244 &op_look_for),
1245
1246 GNUNET_GETOPT_option_flag ('H',
1247 "replay-latest",
1248 gettext_noop ("replay history of messages up to the given --limit"),
1249 &op_replay_latest),
1250
1251 GNUNET_GETOPT_option_flag ('N',
1252 "host-reconnect",
1253 gettext_noop ("reconnect to a previously created place"),
1254 &op_host_reconnect),
1255
1256 GNUNET_GETOPT_option_flag ('P',
1257 "host-announce",
1258 gettext_noop ("publish something to a place we are hosting"),
1259 &op_host_announce),
1260
1261 GNUNET_GETOPT_option_flag ('R',
1262 "guest-reconnect",
1263 gettext_noop ("reconnect to a previously entered place"),
1264 &op_guest_reconnect),
1265
1266 GNUNET_GETOPT_option_flag ('S',
1267 "look-at",
1268 gettext_noop ("search for state matching exact name"),
1269 &op_look_at),
1270
1271 GNUNET_GETOPT_option_flag ('T',
1272 "guest-talk",
1273 gettext_noop ("submit something to somebody's place"),
1274 &op_guest_talk),
1275
1276 GNUNET_GETOPT_option_flag ('U',
1277 "status",
1278 gettext_noop ("list of egos and subscribed places"),
1279 &op_status),
1280
1281 GNUNET_GETOPT_option_flag ('X',
1282 "replay",
1283 gettext_noop ("extract and replay history between message IDs --start and --until"),
1284 &op_replay),
1285
1286
1287 /* options */
1288
1289 GNUNET_GETOPT_option_string ('a',
1290 "app",
1291 "APPLICATION_ID",
1292 gettext_noop ("application ID to use when connecting"),
1293 &opt_app),
1294
1295 GNUNET_GETOPT_option_string ('d',
1296 "data",
1297 "DATA",
1298 gettext_noop ("message body or state value"),
1299 &opt_data),
1300
1301 GNUNET_GETOPT_option_string ('e',
1302 "ego",
1303 "NAME|PUBKEY",
1304 gettext_noop ("name or public key of ego"),
1305 &opt_ego),
1306
1307 GNUNET_GETOPT_option_flag ('f',
1308 "follow",
1309 gettext_noop ("wait for incoming messages"),
1310 &opt_follow),
1311
1312 GNUNET_GETOPT_option_string ('g',
1313 "gns",
1314 "GNS_NAME",
1315 gettext_noop ("GNS name"),
1316 &opt_gns),
1317
1318 GNUNET_GETOPT_option_string ('i',
1319 "peer",
1320 "PEER_ID",
1321 gettext_noop ("peer ID for --guest-enter"),
1322 &opt_peer),
1323
1324 GNUNET_GETOPT_option_string ('k',
1325 "name",
1326 "VAR_NAME",
1327 gettext_noop ("name (key) to query from state"),
1328 &opt_name),
1329
1330 GNUNET_GETOPT_option_string ('m',
1331 "method",
1332 "METHOD_NAME",
1333 gettext_noop ("method name"),
1334 &opt_method),
1335
1336 GNUNET_GETOPT_option_ulong ('n',
1337 "limit",
1338 NULL,
1339 gettext_noop ("number of messages to replay from history"),
1340 &opt_limit),
1341
1342 GNUNET_GETOPT_option_string ('p',
1343 "place",
1344 "PUBKEY",
1345 gettext_noop ("key address of place"),
1346 &opt_place),
1347
1348 GNUNET_GETOPT_option_ulong ('s',
1349 "start",
1350 NULL,
1351 gettext_noop ("start message ID for history replay"),
1352 &opt_start),
1353
1354 GNUNET_GETOPT_option_flag ('w',
1355 "welcome",
1356 gettext_noop ("respond to entry requests by admitting all guests"),
1357 &opt_welcome),
1358
1359 GNUNET_GETOPT_option_ulong ('u',
1360 "until",
1361 NULL,
1362 gettext_noop ("end message ID for history replay"),
1363 &opt_until),
1364
1365 GNUNET_GETOPT_option_flag ('y',
1366 "deny",
1367 gettext_noop ("respond to entry requests by refusing all guests"),
1368 &opt_deny),
1369
1370 GNUNET_GETOPT_OPTION_END
1371 };
1372
1373 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
1374 return 2;
1375
1376 const char *help =
1377 _ ("gnunet-social - Interact with the social service: enter/leave, send/receive messages, access history and state.\n");
1378 const char *usage =
1379 "gnunet-social [--status]\n"
1380 "\n"
1381 "gnunet-social --host-enter --ego <NAME or PUBKEY> [--follow] [--welcome | --deny]\n"
1382 "gnunet-social --host-reconnect --place <PUBKEY> [--follow] [--welcome | --deny]\n"
1383 "gnunet-social --host-leave --place <PUBKEY>\n"
1384 "gnunet-social --host-assign --place <PUBKEY> --name <NAME> --data <VALUE>\n"
1385// FIXME: some state ops not implemented yet (no hurry)
1386// "gnunet-social --host-augment --place <PUBKEY> --name <NAME> --data <VALUE>\n"
1387// "gnunet-social --host-diminish --place <PUBKEY> --name <NAME> --data <VALUE>\n"
1388// "gnunet-social --host-set --place <PUBKEY> --name <NAME> --data <VALUE>\n"
1389 "gnunet-social --host-announce --place <PUBKEY> --method <METHOD_NAME> --data <MESSAGE_BODY>\n"
1390 "\n"
1391 "gnunet-social --guest-enter --place <PUBKEY> --peer <PEERID> --ego <NAME or PUBKEY> [--follow]\n"
1392 "gnunet-social --guest-enter --gns <GNS_NAME> --ego <NAME or PUBKEY> [--follow]\n"
1393 "gnunet-social --guest-reconnect --place <PUBKEY> [--follow]\n"
1394 "gnunet-social --guest-leave --place <PUBKEY>\n"
1395 "gnunet-social --guest-talk --place <PUBKEY> --method <METHOD_NAME> --data <MESSAGE_BODY>\n"
1396 "\n"
1397 "gnunet-social --replay --place <PUBKEY> --start <MSGID> --until <MSGID> [--method <METHOD_PREFIX>]\n"
1398 "gnunet-social --replay-latest --place <PUBKEY> --limit <MSG_LIMIT> [--method <METHOD_PREFIX>]\n"
1399 "\n"
1400 "gnunet-social --look-at --place <PUBKEY> --name <FULL_NAME>\n"
1401 "gnunet-social --look-for --place <PUBKEY> --name <NAME_PREFIX>\n";
1402
1403 res = GNUNET_PROGRAM_run (argc, argv, help, usage, options, &run, NULL);
1404
1405 GNUNET_free ((void *) argv);
1406
1407 if (GNUNET_OK == res)
1408 return ret;
1409 else
1410 return 1;
1411}
diff --git a/src/social/social.conf.in b/src/social/social.conf.in
deleted file mode 100644
index 3fe754c80..000000000
--- a/src/social/social.conf.in
+++ /dev/null
@@ -1,15 +0,0 @@
1[social]
2START_ON_DEMAND = @START_ON_DEMAND@
3BINARY = gnunet-service-social
4RUN_PER_USER = YES
5
6UNIXPATH = $GNUNET_USER_RUNTIME_DIR/gnunet-service-social.sock
7UNIX_MATCH_UID = YES
8UNIX_MATCH_GID = YES
9
10@UNIXONLY@PORT = 2116
11HOSTNAME = localhost
12ACCEPT_FROM = 127.0.0.1;
13ACCEPT_FROM6 = ::1;
14
15DATA_HOME = $GNUNET_DATA_HOME/social
diff --git a/src/social/social.h b/src/social/social.h
deleted file mode 100644
index 73f73f651..000000000
--- a/src/social/social.h
+++ /dev/null
@@ -1,292 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file social/social.h
23 * @brief Common type definitions for the Social service and API.
24 * @author Gabor X Toth
25 */
26
27#ifndef SOCIAL_H
28#define SOCIAL_H
29
30#include "platform.h"
31#include "gnunet_social_service.h"
32
33enum MessageState
34{
35 MSG_STATE_START = 0,
36 MSG_STATE_HEADER = 1,
37 MSG_STATE_METHOD = 2,
38 MSG_STATE_MODIFIER = 3,
39 MSG_STATE_MOD_CONT = 4,
40 MSG_STATE_DATA = 5,
41 MSG_STATE_END = 6,
42 MSG_STATE_CANCEL = 7,
43 MSG_STATE_ERROR = 8,
44};
45
46
47GNUNET_NETWORK_STRUCT_BEGIN
48
49/**** library -> service ****/
50
51
52struct AppConnectRequest
53{
54 /**
55 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_APP_CONNECT
56 */
57 struct GNUNET_MessageHeader header;
58
59 /* Followed by char *app_id */
60};
61
62
63struct AppDetachRequest
64{
65 /**
66 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_APP_DETACH
67 */
68 struct GNUNET_MessageHeader header;
69
70 /**
71 * Public key of place.
72 */
73 struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
74
75 /**
76 * Public key of ego.
77 */
78 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
79
80 /**
81 * Operation ID.
82 */
83 uint64_t op_id GNUNET_PACKED;
84};
85
86
87struct MsgProcRequest
88{
89 /**
90 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_SET
91 */
92 struct GNUNET_MessageHeader header;
93
94 /**
95 * @see enum GNUNET_SOCIAL_MsgProcFlags
96 */
97 uint32_t flags;
98
99 /* Followed by char *method_prefix */
100};
101
102
103struct HostEnterRequest
104{
105 /**
106 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER
107 */
108 struct GNUNET_MessageHeader header;
109
110 uint32_t policy GNUNET_PACKED;
111
112 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
113
114 struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
115
116 struct GNUNET_CRYPTO_EddsaPrivateKey place_key;
117
118 /* Followed by char *app_id */
119};
120
121
122struct GuestEnterRequest
123{
124 /**
125 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER
126 */
127 struct GNUNET_MessageHeader header;
128
129 uint32_t relay_count GNUNET_PACKED;
130
131 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
132
133 struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
134
135 struct GNUNET_PeerIdentity origin;
136
137 uint32_t flags GNUNET_PACKED;
138
139 /* Followed by char *app_id */
140 /* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
141 /* Followed by struct GNUNET_MessageHeader *join_msg */
142};
143
144
145/** Compatible parts of HostEnterRequest and GuestEnterRequest */
146struct PlaceEnterRequest
147{
148 struct GNUNET_MessageHeader header;
149
150 uint32_t reserved GNUNET_PACKED;
151
152 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
153
154 struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
155};
156
157
158struct EgoPlacePublicKey
159{
160 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
161 struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
162};
163
164
165struct GuestEnterByNameRequest
166{
167 /**
168 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_BY_NAME
169 */
170 struct GNUNET_MessageHeader header;
171
172 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
173
174 /* Followed by char *app_id */
175 /* Followed by char *gns_name */
176 /* Followed by char *password */
177 /* Followed by struct GNUNET_MessageHeader *join_msg */
178};
179
180
181struct ZoneAddPlaceRequest
182{
183 struct GNUNET_MessageHeader header;
184
185 uint32_t relay_count GNUNET_PACKED;
186
187 /**
188 * Operation ID.
189 */
190 uint64_t op_id;
191
192 /**
193 * Expiration time: absolute value in us.
194 */
195 uint64_t expiration_time;
196
197 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
198
199 struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
200
201 struct GNUNET_PeerIdentity origin;
202
203 /* Followed by const char *name */
204 /* Followed by const char *password */
205 /* Followed by struct GNUNET_PeerIdentity *relays[relay_count] */
206};
207
208
209struct ZoneAddNymRequest
210{
211 struct GNUNET_MessageHeader header;
212
213 /**
214 * Operation ID.
215 */
216 uint64_t op_id;
217
218 /**
219 * Expiration time: absolute value in us.
220 */
221 uint64_t expiration_time;
222
223 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
224
225 struct GNUNET_CRYPTO_EcdsaPublicKey nym_pub_key;
226
227 /* Followed by const char *name */
228};
229
230
231/**** service -> library ****/
232
233
234struct AppEgoMessage
235{
236 /**
237 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO
238 */
239 struct GNUNET_MessageHeader header;
240
241 /**
242 * Public key of ego.
243 */
244 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
245
246 /* Followed by char *name */
247};
248
249
250struct AppPlaceMessage
251{
252 /**
253 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE
254 */
255 struct GNUNET_MessageHeader header;
256
257 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
258
259 struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
260
261 uint8_t is_host;
262
263 uint8_t place_state;
264};
265
266
267struct HostEnterAck {
268 /**
269 * Type: GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER_ACK
270 */
271 struct GNUNET_MessageHeader header;
272
273 /**
274 * Status code for the operation.
275 */
276 uint32_t result_code GNUNET_PACKED;
277
278 /**
279 * Last message ID sent to the channel.
280 */
281 uint64_t max_message_id GNUNET_PACKED;
282
283 /**
284 * Public key of the place.
285 */
286 struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
287};
288
289
290GNUNET_NETWORK_STRUCT_END
291
292#endif
diff --git a/src/social/social_api.c b/src/social/social_api.c
deleted file mode 100644
index 9b9658096..000000000
--- a/src/social/social_api.c
+++ /dev/null
@@ -1,2827 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @author Gabor X Toth
23 *
24 * @file
25 * Social service; implements social interactions using the PSYC service.
26 */
27
28#include <inttypes.h>
29#include <string.h>
30
31#include "platform.h"
32#include "gnunet_util_lib.h"
33#include "gnunet_psyc_service.h"
34#include "gnunet_psyc_util_lib.h"
35#include "gnunet_social_service.h"
36#include "social.h"
37
38#define LOG(kind,...) GNUNET_log_from (kind, "social-api",__VA_ARGS__)
39
40/**
41 * Handle for an ego.
42 */
43struct GNUNET_SOCIAL_Ego
44{
45 struct GNUNET_CRYPTO_EcdsaPublicKey pub_key;
46 struct GNUNET_HashCode pub_key_hash;
47 char *name;
48};
49
50
51/**
52 * Handle for a pseudonym of another user in the network.
53 */
54struct GNUNET_SOCIAL_Nym
55{
56 struct GNUNET_CRYPTO_EcdsaPublicKey pub_key;
57 struct GNUNET_HashCode pub_key_hash;
58};
59
60
61/**
62 * Handle for an application.
63 */
64struct GNUNET_SOCIAL_App
65{
66 /**
67 * Configuration to use.
68 */
69 const struct GNUNET_CONFIGURATION_Handle *cfg;
70
71 /**
72 * Client connection to the service.
73 */
74 struct GNUNET_MQ_Handle *mq;
75
76 /**
77 * Message to send on connect.
78 */
79 struct GNUNET_MQ_Envelope *connect_env;
80
81 /**
82 * Time to wait until we try to reconnect on failure.
83 */
84 struct GNUNET_TIME_Relative reconnect_delay;
85
86 /**
87 * Task for reconnecting when the listener fails.
88 */
89 struct GNUNET_SCHEDULER_Task *reconnect_task;
90
91 /**
92 * Async operations.
93 */
94 struct GNUNET_OP_Handle *op;
95
96 /**
97 * Function called after disconnected from the service.
98 */
99 GNUNET_ContinuationCallback disconnect_cb;
100
101 /**
102 * Closure for @a disconnect_cb.
103 */
104 void *disconnect_cls;
105
106 /**
107 * Application ID.
108 */
109 char *id;
110
111 /**
112 * Hash map of all egos.
113 * pub_key_hash -> struct GNUNET_SOCIAL_Ego *
114 */
115 struct GNUNET_CONTAINER_MultiHashMap *egos;
116
117 GNUNET_SOCIAL_AppEgoCallback ego_cb;
118 GNUNET_SOCIAL_AppHostPlaceCallback host_cb;
119 GNUNET_SOCIAL_AppGuestPlaceCallback guest_cb;
120 GNUNET_SOCIAL_AppConnectedCallback connected_cb;
121 void *cb_cls;
122};
123
124
125struct GNUNET_SOCIAL_HostConnection
126{
127 struct GNUNET_SOCIAL_App *app;
128
129 struct AppPlaceMessage plc_msg;
130};
131
132
133struct GNUNET_SOCIAL_GuestConnection
134{
135 struct GNUNET_SOCIAL_App *app;
136
137 struct AppPlaceMessage plc_msg;
138};
139
140
141/**
142 * Handle for a place where social interactions happen.
143 */
144struct GNUNET_SOCIAL_Place
145{
146 /**
147 * Configuration to use.
148 */
149 const struct GNUNET_CONFIGURATION_Handle *cfg;
150
151 /**
152 * Client connection to the service.
153 */
154 struct GNUNET_MQ_Handle *mq;
155
156 /**
157 * Message to send on connect.
158 */
159 struct GNUNET_MQ_Envelope *connect_env;
160
161 /**
162 * Time to wait until we try to reconnect on failure.
163 */
164 struct GNUNET_TIME_Relative reconnect_delay;
165
166 /**
167 * Task for reconnecting when the listener fails.
168 */
169 struct GNUNET_SCHEDULER_Task *reconnect_task;
170
171 /**
172 * Async operations.
173 */
174 struct GNUNET_OP_Handle *op;
175
176 /**
177 * Transmission handle.
178 */
179 struct GNUNET_PSYC_TransmitHandle *tmit;
180
181 /**
182 * Slicer for processing incoming messages.
183 */
184 struct GNUNET_PSYC_Slicer *slicer;
185
186 // FIXME: do we need is_disconnecing like on the psyc and multicast APIs?
187 /**
188 * Function called after disconnected from the service.
189 */
190 GNUNET_ContinuationCallback disconnect_cb;
191
192 /**
193 * Closure for @a disconnect_cb.
194 */
195 void *disconnect_cls;
196
197 /**
198 * Public key of the place.
199 */
200 struct GNUNET_CRYPTO_EddsaPublicKey pub_key;
201
202 /**
203 * Public key of the ego.
204 */
205 struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
206
207 /**
208 * Does this place belong to a host (#GNUNET_YES) or guest (#GNUNET_NO)?
209 */
210 uint8_t is_host;
211};
212
213
214/**
215 * Host handle for a place that we entered.
216 */
217struct GNUNET_SOCIAL_Host
218{
219 struct GNUNET_SOCIAL_Place plc;
220
221 /**
222 * Slicer for processing incoming messages from guests.
223 */
224 struct GNUNET_PSYC_Slicer *slicer;
225
226 GNUNET_SOCIAL_HostEnterCallback enter_cb;
227
228 GNUNET_SOCIAL_AnswerDoorCallback answer_door_cb;
229
230 GNUNET_SOCIAL_FarewellCallback farewell_cb;
231
232 /**
233 * Closure for callbacks.
234 */
235 void *cb_cls;
236
237 struct GNUNET_SOCIAL_Nym *notice_place_leave_nym;
238 struct GNUNET_PSYC_Environment *notice_place_leave_env;
239};
240
241
242/**
243 * Guest handle for place that we entered.
244 */
245struct GNUNET_SOCIAL_Guest
246{
247 struct GNUNET_SOCIAL_Place plc;
248
249 GNUNET_SOCIAL_GuestEnterCallback enter_cb;
250
251 GNUNET_SOCIAL_EntryDecisionCallback entry_dcsn_cb;
252
253 /**
254 * Closure for callbacks.
255 */
256 void *cb_cls;
257};
258
259
260/**
261 * Hash map of all nyms.
262 * pub_key_hash -> struct GNUNET_SOCIAL_Nym *
263 */
264struct GNUNET_CONTAINER_MultiHashMap *nyms;
265
266
267/**
268 * Handle for an announcement request.
269 */
270struct GNUNET_SOCIAL_Announcement
271{
272
273};
274
275
276/**
277 * A talk request.
278 */
279struct GNUNET_SOCIAL_TalkRequest
280{
281
282};
283
284
285/**
286 * A history lesson.
287 */
288struct GNUNET_SOCIAL_HistoryRequest
289{
290 /**
291 * Place.
292 */
293 struct GNUNET_SOCIAL_Place *plc;
294
295 /**
296 * Operation ID.
297 */
298 uint64_t op_id;
299
300 /**
301 * Slicer for processing incoming messages.
302 */
303 struct GNUNET_PSYC_Slicer *slicer;
304
305 /**
306 * Function to call when the operation finished.
307 */
308 GNUNET_ResultCallback result_cb;
309
310 /**
311 * Closure for @a result_cb.
312 */
313 void *cls;
314};
315
316
317struct GNUNET_SOCIAL_LookHandle
318{
319 /**
320 * Place.
321 */
322 struct GNUNET_SOCIAL_Place *plc;
323
324 /**
325 * Operation ID.
326 */
327 uint64_t op_id;
328
329 /**
330 * State variable result callback.
331 */
332 GNUNET_PSYC_StateVarCallback var_cb;
333
334 /**
335 * Function to call when the operation finished.
336 */
337 GNUNET_ResultCallback result_cb;
338
339 /**
340 * Name of current modifier being received.
341 */
342 char *mod_name;
343
344 /**
345 * Size of current modifier value being received.
346 */
347 size_t mod_value_size;
348
349 /**
350 * Remaining size of current modifier value still to be received.
351 */
352 size_t mod_value_remaining;
353
354 /**
355 * Closure for @a result_cb.
356 */
357 void *cls;
358};
359
360
361struct ZoneAddPlaceHandle
362{
363 GNUNET_ResultCallback result_cb;
364 void *result_cls;
365};
366
367
368struct ZoneAddNymHandle
369{
370 GNUNET_ResultCallback result_cb;
371 void *result_cls;
372};
373
374
375/*** CLEANUP / DISCONNECT ***/
376
377
378static void
379host_cleanup (struct GNUNET_SOCIAL_Host *hst)
380{
381 if (NULL != hst->slicer)
382 {
383 GNUNET_PSYC_slicer_destroy (hst->slicer);
384 hst->slicer = NULL;
385 }
386 GNUNET_free (hst);
387}
388
389
390static void
391guest_cleanup (struct GNUNET_SOCIAL_Guest *gst)
392{
393 GNUNET_free (gst);
394}
395
396
397static void
398place_cleanup (struct GNUNET_SOCIAL_Place *plc)
399{
400 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
401 "cleaning up place %p\n",
402 plc);
403 if (NULL != plc->tmit)
404 {
405 GNUNET_PSYC_transmit_destroy (plc->tmit);
406 plc->tmit = NULL;
407 }
408 if (NULL != plc->connect_env)
409 {
410 GNUNET_MQ_discard (plc->connect_env);
411 plc->connect_env = NULL;
412 }
413 if (NULL != plc->mq)
414 {
415 GNUNET_MQ_destroy (plc->mq);
416 plc->mq = NULL;
417 }
418 if (NULL != plc->disconnect_cb)
419 {
420 plc->disconnect_cb (plc->disconnect_cls);
421 plc->disconnect_cb = NULL;
422 }
423
424 (GNUNET_YES == plc->is_host)
425 ? host_cleanup ((struct GNUNET_SOCIAL_Host *) plc)
426 : guest_cleanup ((struct GNUNET_SOCIAL_Guest *) plc);
427}
428
429
430static void
431place_disconnect (struct GNUNET_SOCIAL_Place *plc)
432{
433 place_cleanup (plc);
434}
435
436
437/*** NYM ***/
438
439static struct GNUNET_SOCIAL_Nym *
440nym_get_or_create (const struct GNUNET_CRYPTO_EcdsaPublicKey *pub_key)
441{
442 struct GNUNET_SOCIAL_Nym *nym = NULL;
443 struct GNUNET_HashCode pub_key_hash;
444
445 if (NULL == pub_key)
446 return NULL;
447
448 GNUNET_CRYPTO_hash (pub_key, sizeof (*pub_key), &pub_key_hash);
449
450 if (NULL == nyms)
451 nyms = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
452 else
453 nym = GNUNET_CONTAINER_multihashmap_get (nyms, &pub_key_hash);
454
455 if (NULL == nym)
456 {
457 nym = GNUNET_new (struct GNUNET_SOCIAL_Nym);
458 nym->pub_key = *pub_key;
459 nym->pub_key_hash = pub_key_hash;
460 GNUNET_CONTAINER_multihashmap_put (nyms, &nym->pub_key_hash, nym,
461 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
462 }
463 return nym;
464}
465
466
467static void
468nym_destroy (struct GNUNET_SOCIAL_Nym *nym)
469{
470 GNUNET_CONTAINER_multihashmap_remove (nyms, &nym->pub_key_hash, nym);
471 GNUNET_free (nym);
472}
473
474
475/*** MESSAGE HANDLERS ***/
476
477/** _notice_place_leave from guests */
478
479static void
480host_recv_notice_place_leave_method (void *cls,
481 const struct GNUNET_PSYC_MessageHeader *msg,
482 const struct GNUNET_PSYC_MessageMethod *meth,
483 uint64_t message_id,
484 const char *method_name)
485{
486 struct GNUNET_SOCIAL_Host *hst = cls;
487
488 if (0 == memcmp (&(struct GNUNET_CRYPTO_EcdsaPublicKey) {},
489 &msg->slave_pub_key, sizeof (msg->slave_pub_key)))
490 return;
491
492 struct GNUNET_SOCIAL_Nym *nym = nym_get_or_create (&msg->slave_pub_key);
493
494 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
495 "Host received method for message ID %" PRIu64 " from nym %s: %s\n",
496 message_id, GNUNET_h2s (&nym->pub_key_hash), method_name);
497
498 hst->notice_place_leave_nym = (struct GNUNET_SOCIAL_Nym *) nym;
499 hst->notice_place_leave_env = GNUNET_PSYC_env_create ();
500
501 char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&hst->notice_place_leave_nym->pub_key);
502 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
503 "_notice_place_leave: got method from nym %s (%s).\n",
504 GNUNET_h2s (&hst->notice_place_leave_nym->pub_key_hash), str);
505 GNUNET_free (str);
506}
507
508
509static void
510host_recv_notice_place_leave_modifier (void *cls,
511 const struct GNUNET_PSYC_MessageHeader *msg,
512 const struct GNUNET_MessageHeader *pmsg,
513 uint64_t message_id,
514 enum GNUNET_PSYC_Operator oper,
515 const char *name,
516 const void *value,
517 uint16_t value_size,
518 uint16_t full_value_size)
519{
520 struct GNUNET_SOCIAL_Host *hst = cls;
521 if (NULL == hst->notice_place_leave_env)
522 return;
523
524 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
525 "Host received modifier for _notice_place_leave message with ID %" PRIu64 ":\n"
526 "%c%s: %.*s\n",
527 message_id, oper, name, value_size, (const char *) value);
528
529 /* skip _nym, it's added later in eom() */
530 if (0 == memcmp (name, "_nym", sizeof ("_nym"))
531 || 0 == memcmp (name, "_nym_", sizeof ("_nym_") - 1))
532 return;
533
534 GNUNET_PSYC_env_add (hst->notice_place_leave_env,
535 GNUNET_PSYC_OP_SET, name, value, value_size);
536}
537
538
539static void
540host_recv_notice_place_leave_eom (void *cls,
541 const struct GNUNET_PSYC_MessageHeader *msg,
542 const struct GNUNET_MessageHeader *pmsg,
543 uint64_t message_id,
544 uint8_t is_cancelled)
545{
546 struct GNUNET_SOCIAL_Host *hst = cls;
547 if (NULL == hst->notice_place_leave_env)
548 return;
549
550 char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&hst->notice_place_leave_nym->pub_key);
551 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
552 "_notice_place_leave: got EOM from nym %s (%s).\n",
553 GNUNET_h2s (&hst->notice_place_leave_nym->pub_key_hash), str);
554 GNUNET_free (str);
555
556 if (GNUNET_YES != is_cancelled)
557 {
558 if (NULL != hst->farewell_cb)
559 hst->farewell_cb (hst->cb_cls, hst->notice_place_leave_nym,
560 hst->notice_place_leave_env);
561 /* announce leaving guest to place */
562 GNUNET_PSYC_env_add (hst->notice_place_leave_env, GNUNET_PSYC_OP_SET,
563 "_nym", hst->notice_place_leave_nym,
564 sizeof (*hst->notice_place_leave_nym));
565 GNUNET_SOCIAL_host_announce (hst, "_notice_place_leave",
566 hst->notice_place_leave_env,
567 NULL, NULL, GNUNET_SOCIAL_ANNOUNCE_NONE);
568 nym_destroy (hst->notice_place_leave_nym);
569 }
570 GNUNET_PSYC_env_destroy (hst->notice_place_leave_env);
571 hst->notice_place_leave_env = NULL;
572}
573
574
575/*** PLACE ***/
576
577
578static int
579check_place_result (void *cls,
580 const struct GNUNET_OperationResultMessage *res)
581{
582 uint16_t size = ntohs (res->header.size);
583 if (size < sizeof (*res))
584 { /* Error, message too small. */
585 GNUNET_break (0);
586 return GNUNET_SYSERR;
587 }
588 return GNUNET_OK;
589}
590
591
592static void
593handle_place_result (void *cls,
594 const struct GNUNET_OperationResultMessage *res)
595{
596 struct GNUNET_SOCIAL_Place *plc = cls;
597
598 uint16_t size = ntohs (res->header.size);
599 uint16_t data_size = size - sizeof (*res);
600 const char *data = (0 < data_size) ? (const char *) &res[1] : NULL;
601
602 GNUNET_OP_result (plc->op, GNUNET_ntohll (res->op_id),
603 GNUNET_ntohll (res->result_code),
604 data, data_size, NULL);
605}
606
607
608static int
609check_app_result (void *cls,
610 const struct GNUNET_OperationResultMessage *res)
611{
612 uint16_t size = ntohs (res->header.size);
613 if (size < sizeof (*res))
614 { /* Error, message too small. */
615 GNUNET_break (0);
616 return GNUNET_SYSERR;
617 }
618 return GNUNET_OK;
619}
620
621
622static void
623handle_app_result (void *cls,
624 const struct GNUNET_OperationResultMessage *res)
625{
626 struct GNUNET_SOCIAL_App *app = cls;
627
628 uint16_t size = ntohs (res->header.size);
629 uint16_t data_size = size - sizeof (*res);
630 const char *data = (0 < data_size) ? (const char *) &res[1] : NULL;
631
632 GNUNET_OP_result (app->op, GNUNET_ntohll (res->op_id),
633 GNUNET_ntohll (res->result_code),
634 data, data_size, NULL);
635}
636
637
638static void
639op_recv_history_result (void *cls, int64_t result,
640 const void *err_msg, uint16_t err_msg_size)
641{
642 LOG (GNUNET_ERROR_TYPE_DEBUG,
643 "Received history replay result: %" PRId64 ".\n", result);
644
645 struct GNUNET_SOCIAL_HistoryRequest *hist = cls;
646
647 if (NULL != hist->result_cb)
648 hist->result_cb (hist->cls, result, err_msg, err_msg_size);
649
650 GNUNET_free (hist);
651}
652
653
654static void
655op_recv_state_result (void *cls, int64_t result,
656 const void *err_msg, uint16_t err_msg_size)
657{
658 LOG (GNUNET_ERROR_TYPE_DEBUG,
659 "Received state request result: %" PRId64 ".\n", result);
660
661 struct GNUNET_SOCIAL_LookHandle *look = cls;
662
663 if (NULL != look->result_cb)
664 look->result_cb (look->cls, result, err_msg, err_msg_size);
665
666 GNUNET_free (look);
667}
668
669
670static int
671check_place_history_result (void *cls,
672 const struct GNUNET_OperationResultMessage *res)
673{
674 struct GNUNET_PSYC_MessageHeader *
675 pmsg = (struct GNUNET_PSYC_MessageHeader *) GNUNET_MQ_extract_nested_mh (res);
676 uint16_t size = ntohs (res->header.size);
677
678 if (NULL == pmsg || size < sizeof (*res) + sizeof (*pmsg))
679 { /* Error, message too small. */
680 GNUNET_break (0);
681 return GNUNET_SYSERR;
682 }
683 return GNUNET_OK;
684}
685
686
687static void
688handle_place_history_result (void *cls,
689 const struct GNUNET_OperationResultMessage *res)
690{
691 struct GNUNET_SOCIAL_Place *plc = cls;
692 struct GNUNET_PSYC_MessageHeader *
693 pmsg = (struct GNUNET_PSYC_MessageHeader *) GNUNET_MQ_extract_nested_mh (res);
694
695 LOG (GNUNET_ERROR_TYPE_DEBUG,
696 "%p Received historic fragment for message #%" PRIu64 ".\n",
697 plc, GNUNET_ntohll (pmsg->message_id));
698
699 GNUNET_ResultCallback result_cb = NULL;
700 struct GNUNET_SOCIAL_HistoryRequest *hist = NULL;
701
702 if (GNUNET_YES != GNUNET_OP_get (plc->op,
703 GNUNET_ntohll (res->op_id),
704 &result_cb, (void *) &hist, NULL))
705 { /* Operation not found. */
706 LOG (GNUNET_ERROR_TYPE_WARNING,
707 "%p Replay operation not found for historic fragment of message #%"
708 PRIu64 ".\n",
709 plc, GNUNET_ntohll (pmsg->message_id));
710 return;
711 }
712
713 GNUNET_PSYC_slicer_message (hist->slicer,
714 (const struct GNUNET_PSYC_MessageHeader *) pmsg);
715}
716
717
718static int
719check_place_state_result (void *cls,
720 const struct GNUNET_OperationResultMessage *res)
721{
722 const struct GNUNET_MessageHeader *mod = GNUNET_MQ_extract_nested_mh (res);
723 if (NULL == mod)
724 {
725 GNUNET_break_op (0);
726 LOG (GNUNET_ERROR_TYPE_WARNING,
727 "Invalid modifier in state result\n");
728 return GNUNET_SYSERR;
729 }
730
731 uint16_t size = ntohs (res->header.size);
732 uint16_t mod_size = ntohs (mod->size);
733 if (size - sizeof (*res) != mod_size)
734 {
735 GNUNET_break_op (0);
736 LOG (GNUNET_ERROR_TYPE_WARNING,
737 "Invalid modifier size in state result: %u - %u != %u\n",
738 ntohs (res->header.size), sizeof (*res), mod_size);
739 return GNUNET_SYSERR;
740 }
741 return GNUNET_OK;
742}
743
744
745static void
746handle_place_state_result (void *cls,
747 const struct GNUNET_OperationResultMessage *res)
748{
749 struct GNUNET_SOCIAL_Place *plc = cls;
750
751 GNUNET_ResultCallback result_cb = NULL;
752 struct GNUNET_SOCIAL_LookHandle *look = NULL;
753
754 if (GNUNET_YES != GNUNET_OP_get (plc->op,
755 GNUNET_ntohll (res->op_id),
756 &result_cb, (void *) &look, NULL))
757 { /* Operation not found. */
758 return;
759 }
760
761 const struct GNUNET_MessageHeader *mod = GNUNET_MQ_extract_nested_mh (res);
762 uint16_t mod_size = ntohs (mod->size);
763
764 switch (ntohs (mod->type))
765 {
766 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER:
767 {
768 const struct GNUNET_PSYC_MessageModifier *
769 pmod = (const struct GNUNET_PSYC_MessageModifier *) mod;
770
771 const char *name = (const char *) &pmod[1];
772 uint16_t name_size = ntohs (pmod->name_size);
773 if (0 == name_size
774 || mod_size - sizeof (*pmod) < name_size
775 || '\0' != name[name_size - 1])
776 {
777 GNUNET_break_op (0);
778 LOG (GNUNET_ERROR_TYPE_WARNING,
779 "Invalid modifier name in state result\n");
780 return;
781 }
782 look->mod_value_size = ntohs (pmod->value_size);
783 look->var_cb (look->cls, mod, name, name + name_size,
784 mod_size - sizeof (*mod) - name_size,
785 look->mod_value_size);
786 if (look->mod_value_size > mod_size - sizeof (*mod) - name_size)
787 {
788 look->mod_value_remaining = look->mod_value_size;
789 look->mod_name = GNUNET_malloc (name_size);
790 GNUNET_memcpy (look->mod_name, name, name_size);
791 }
792 break;
793 }
794
795 case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT:
796 look->var_cb (look->cls, mod, look->mod_name, (const char *) &mod[1],
797 mod_size - sizeof (*mod), look->mod_value_size);
798 look->mod_value_remaining -= mod_size - sizeof (*mod);
799 if (0 == look->mod_value_remaining)
800 {
801 GNUNET_free (look->mod_name);
802 }
803 break;
804 }
805}
806
807
808static void
809handle_place_message_ack (void *cls,
810 const struct GNUNET_MessageHeader *msg)
811{
812 struct GNUNET_SOCIAL_Place *plc = cls;
813
814 GNUNET_PSYC_transmit_got_ack (plc->tmit);
815}
816
817
818static int
819check_place_message (void *cls,
820 const struct GNUNET_PSYC_MessageHeader *pmsg)
821{
822 return GNUNET_OK;
823}
824
825
826static void
827handle_place_message (void *cls,
828 const struct GNUNET_PSYC_MessageHeader *pmsg)
829{
830 struct GNUNET_SOCIAL_Place *plc = cls;
831
832 GNUNET_PSYC_slicer_message (plc->slicer, pmsg);
833}
834
835
836static int
837check_host_message (void *cls,
838 const struct GNUNET_PSYC_MessageHeader *pmsg)
839{
840 return GNUNET_OK;
841}
842
843
844static void
845handle_host_message (void *cls,
846 const struct GNUNET_PSYC_MessageHeader *pmsg)
847{
848 struct GNUNET_SOCIAL_Host *hst = cls;
849
850 GNUNET_PSYC_slicer_message (hst->slicer, pmsg);
851 GNUNET_PSYC_slicer_message (hst->plc.slicer, pmsg);
852}
853
854
855static void
856handle_host_enter_ack (void *cls,
857 const struct HostEnterAck *hack)
858{
859 struct GNUNET_SOCIAL_Host *hst = cls;
860
861 hst->plc.pub_key = hack->place_pub_key;
862
863 int32_t result = ntohl (hack->result_code);
864 if (NULL != hst->enter_cb)
865 hst->enter_cb (hst->cb_cls, result, &hack->place_pub_key,
866 GNUNET_ntohll (hack->max_message_id));
867}
868
869
870static int
871check_host_enter_request (void *cls,
872 const struct GNUNET_PSYC_JoinRequestMessage *req)
873{
874 return GNUNET_OK;
875}
876
877
878static void
879handle_host_enter_request (void *cls,
880 const struct GNUNET_PSYC_JoinRequestMessage *req)
881{
882 struct GNUNET_SOCIAL_Host *hst = cls;
883
884 if (NULL == hst->answer_door_cb)
885 return;
886
887 const char *method_name = NULL;
888 struct GNUNET_PSYC_Environment *env = NULL;
889 struct GNUNET_PSYC_MessageHeader *entry_pmsg = NULL;
890 const void *data = NULL;
891 uint16_t data_size = 0;
892 char *str;
893 const struct GNUNET_PSYC_Message *join_msg = NULL;
894
895 do
896 {
897 if (sizeof (*req) + sizeof (*join_msg) <= ntohs (req->header.size))
898 {
899 join_msg = (struct GNUNET_PSYC_Message *) GNUNET_MQ_extract_nested_mh (req);
900 LOG (GNUNET_ERROR_TYPE_DEBUG,
901 "Received join_msg of type %u and size %u.\n",
902 ntohs (join_msg->header.type), ntohs (join_msg->header.size));
903
904 env = GNUNET_PSYC_env_create ();
905 entry_pmsg = GNUNET_PSYC_message_header_create_from_psyc (join_msg);
906 if (GNUNET_OK != GNUNET_PSYC_message_parse (entry_pmsg, &method_name, env,
907 &data, &data_size))
908 {
909 GNUNET_break_op (0);
910 str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&req->slave_pub_key);
911 LOG (GNUNET_ERROR_TYPE_WARNING,
912 "Ignoring invalid entry request from nym %s.\n",
913 str);
914 GNUNET_free (str);
915 break;
916 }
917 }
918
919 struct GNUNET_SOCIAL_Nym *nym = nym_get_or_create (&req->slave_pub_key);
920 hst->answer_door_cb (hst->cb_cls, nym, method_name, env,
921 data, data_size);
922 } while (0);
923
924 if (NULL != env)
925 GNUNET_PSYC_env_destroy (env);
926 if (NULL != entry_pmsg)
927 GNUNET_free (entry_pmsg);
928}
929
930
931static void
932handle_guest_enter_ack (void *cls,
933 const struct GNUNET_PSYC_CountersResultMessage *cres)
934{
935 struct GNUNET_SOCIAL_Guest *gst = cls;
936
937 int32_t result = ntohl (cres->result_code);
938 if (NULL != gst->enter_cb)
939 gst->enter_cb (gst->cb_cls, result, &gst->plc.pub_key,
940 GNUNET_ntohll (cres->max_message_id));
941}
942
943
944static int
945check_guest_enter_decision (void *cls,
946 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn)
947{
948 return GNUNET_OK;
949}
950
951
952static void
953handle_guest_enter_decision (void *cls,
954 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn)
955{
956 struct GNUNET_SOCIAL_Guest *gst = cls;
957
958 struct GNUNET_PSYC_Message *pmsg = NULL;
959 if (ntohs (dcsn->header.size) > sizeof (*dcsn))
960 pmsg = (struct GNUNET_PSYC_Message *) GNUNET_MQ_extract_nested_mh (dcsn);
961
962 if (NULL != gst->entry_dcsn_cb)
963 gst->entry_dcsn_cb (gst->cb_cls, ntohl (dcsn->is_admitted), pmsg);
964}
965
966
967static int
968check_app_ego (void *cls,
969 const struct AppEgoMessage *emsg)
970{
971 return GNUNET_OK;
972}
973
974
975static void
976handle_app_ego (void *cls,
977 const struct AppEgoMessage *emsg)
978{
979 struct GNUNET_SOCIAL_App *app = cls;
980
981 uint16_t name_size = ntohs (emsg->header.size) - sizeof (*emsg);
982
983 struct GNUNET_HashCode ego_pub_hash;
984 GNUNET_CRYPTO_hash (&emsg->ego_pub_key, sizeof (emsg->ego_pub_key),
985 &ego_pub_hash);
986
987 struct GNUNET_SOCIAL_Ego *
988 ego = GNUNET_CONTAINER_multihashmap_get (app->egos, &ego_pub_hash);
989 if (NULL == ego)
990 {
991 ego = GNUNET_malloc (sizeof (*ego));
992 ego->pub_key = emsg->ego_pub_key;
993 ego->name = GNUNET_malloc (name_size);
994 GNUNET_memcpy (ego->name, &emsg[1], name_size);
995 }
996 else
997 {
998 ego->name = GNUNET_realloc (ego->name, name_size);
999 GNUNET_memcpy (ego->name, &emsg[1], name_size);
1000 }
1001
1002 GNUNET_CONTAINER_multihashmap_put (app->egos, &ego_pub_hash, ego,
1003 GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE);
1004
1005 if (NULL != app->ego_cb)
1006 app->ego_cb (app->cb_cls, ego, &ego->pub_key, ego->name);
1007}
1008
1009
1010static void
1011handle_app_ego_end (void *cls,
1012 const struct GNUNET_MessageHeader *msg)
1013{
1014 //struct GNUNET_SOCIAL_App *app = cls;
1015}
1016
1017
1018static int
1019check_app_place (void *cls,
1020 const struct AppPlaceMessage *pmsg)
1021{
1022 return GNUNET_OK;
1023}
1024
1025
1026static void
1027handle_app_place (void *cls,
1028 const struct AppPlaceMessage *pmsg)
1029{
1030 struct GNUNET_SOCIAL_App *app = cls;
1031
1032 if ((GNUNET_YES == pmsg->is_host && NULL == app->host_cb)
1033 || (GNUNET_NO == pmsg->is_host && NULL == app->guest_cb))
1034 return;
1035
1036 struct GNUNET_HashCode ego_pub_hash;
1037 GNUNET_CRYPTO_hash (&pmsg->ego_pub_key, sizeof (pmsg->ego_pub_key),
1038 &ego_pub_hash);
1039 struct GNUNET_SOCIAL_Ego *
1040 ego = GNUNET_CONTAINER_multihashmap_get (app->egos, &ego_pub_hash);
1041 if (NULL == ego)
1042 {
1043 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failure to obtain ego %s.\n",
1044 GNUNET_h2s (&ego_pub_hash));
1045 GNUNET_break (0);
1046 return;
1047 }
1048
1049 if (GNUNET_YES == pmsg->is_host)
1050 {
1051 if (NULL != app->host_cb) {
1052 struct GNUNET_SOCIAL_HostConnection *hconn = GNUNET_malloc (sizeof (*hconn));
1053 hconn->app = app;
1054 hconn->plc_msg = *pmsg;
1055 app->host_cb (app->cb_cls, hconn, ego, &pmsg->place_pub_key, pmsg->place_state);
1056 GNUNET_free (hconn);
1057 }
1058 }
1059 else if (NULL != app->guest_cb)
1060 {
1061 struct GNUNET_SOCIAL_GuestConnection *gconn = GNUNET_malloc (sizeof (*gconn));
1062 gconn->app = app;
1063 gconn->plc_msg = *pmsg;
1064 app->guest_cb (app->cb_cls, gconn, ego, &pmsg->place_pub_key, pmsg->place_state);
1065 GNUNET_free (gconn);
1066 }
1067}
1068
1069
1070static void
1071handle_app_place_end (void *cls,
1072 const struct GNUNET_MessageHeader *msg)
1073{
1074 struct GNUNET_SOCIAL_App *app = cls;
1075
1076 if (NULL != app->connected_cb)
1077 app->connected_cb (app->cb_cls);
1078}
1079
1080
1081/**
1082 * Handler for a #GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK message received
1083 * from the social service.
1084 *
1085 * @param cls the place of type `struct GNUNET_SOCIAL_Place`
1086 * @param msg the message received from the service
1087 */
1088static void
1089handle_place_leave_ack (void *cls,
1090 const struct GNUNET_MessageHeader *msg)
1091{
1092 struct GNUNET_SOCIAL_Place *plc = cls;
1093
1094 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1095 "%s left place %p\n",
1096 plc->is_host ? "host" : "guest",
1097 plc);
1098 place_disconnect (plc);
1099}
1100
1101
1102/*** HOST ***/
1103
1104
1105static void
1106host_connect (struct GNUNET_SOCIAL_Host *hst);
1107
1108
1109static void
1110host_reconnect (void *cls)
1111{
1112 host_connect (cls);
1113}
1114
1115
1116/**
1117 * Host client disconnected from service.
1118 *
1119 * Reconnect after backoff period.
1120 */
1121static void
1122host_disconnected (void *cls, enum GNUNET_MQ_Error error)
1123{
1124 struct GNUNET_SOCIAL_Host *hst = cls;
1125 struct GNUNET_SOCIAL_Place *plc = &hst->plc;
1126
1127 LOG (GNUNET_ERROR_TYPE_DEBUG,
1128 "Host client disconnected (%d), re-connecting\n",
1129 (int) error);
1130 if (NULL != plc->tmit)
1131 {
1132 GNUNET_PSYC_transmit_destroy (plc->tmit);
1133 plc->tmit = NULL;
1134 }
1135 if (NULL != plc->mq)
1136 {
1137 GNUNET_MQ_destroy (plc->mq);
1138 plc->mq = NULL;
1139 }
1140
1141 plc->reconnect_task = GNUNET_SCHEDULER_add_delayed (plc->reconnect_delay,
1142 host_reconnect,
1143 hst);
1144 plc->reconnect_delay = GNUNET_TIME_STD_BACKOFF (plc->reconnect_delay);
1145}
1146
1147
1148static void
1149host_connect (struct GNUNET_SOCIAL_Host *hst)
1150{
1151 struct GNUNET_SOCIAL_Place *plc = &hst->plc;
1152
1153 struct GNUNET_MQ_MessageHandler handlers[] = {
1154 GNUNET_MQ_hd_fixed_size (host_enter_ack,
1155 GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER_ACK,
1156 struct HostEnterAck,
1157 hst),
1158 GNUNET_MQ_hd_fixed_size (place_leave_ack,
1159 GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK,
1160 struct GNUNET_MessageHeader,
1161 plc),
1162 GNUNET_MQ_hd_var_size (host_enter_request,
1163 GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST,
1164 struct GNUNET_PSYC_JoinRequestMessage,
1165 hst),
1166 GNUNET_MQ_hd_var_size (host_message,
1167 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE,
1168 struct GNUNET_PSYC_MessageHeader,
1169 hst),
1170 GNUNET_MQ_hd_fixed_size (place_message_ack,
1171 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK,
1172 struct GNUNET_MessageHeader,
1173 plc),
1174 GNUNET_MQ_hd_var_size (place_history_result,
1175 GNUNET_MESSAGE_TYPE_PSYC_HISTORY_RESULT,
1176 struct GNUNET_OperationResultMessage,
1177 plc),
1178 GNUNET_MQ_hd_var_size (place_state_result,
1179 GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT,
1180 struct GNUNET_OperationResultMessage,
1181 plc),
1182 GNUNET_MQ_hd_var_size (place_result,
1183 GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE,
1184 struct GNUNET_OperationResultMessage,
1185 plc),
1186 GNUNET_MQ_handler_end ()
1187 };
1188
1189 plc->mq = GNUNET_CLIENT_connect (plc->cfg, "social",
1190 handlers, host_disconnected, hst);
1191 GNUNET_assert (NULL != plc->mq);
1192 plc->tmit = GNUNET_PSYC_transmit_create (plc->mq);
1193
1194 GNUNET_MQ_send_copy (plc->mq, plc->connect_env);
1195}
1196
1197
1198/**
1199 * Enter a place as host.
1200 *
1201 * A place is created upon first entering, and it is active until permanently
1202 * left using GNUNET_SOCIAL_host_leave().
1203 *
1204 * @param app
1205 * Application handle.
1206 * @param ego
1207 * Identity of the host.
1208 * @param policy
1209 * Policy specifying entry and history restrictions for the place.
1210 * @param slicer
1211 * Slicer to handle incoming messages.
1212 * @param enter_cb
1213 * Function called when the place is entered and ready to use.
1214 * @param answer_door_cb
1215 * Function to handle new nyms that want to enter.
1216 * @param farewell_cb
1217 * Function to handle departing nyms.
1218 * @param cls
1219 * Closure for the callbacks.
1220 *
1221 * @return Handle for the host. This handle contains the pubkey.
1222 */
1223struct GNUNET_SOCIAL_Host *
1224GNUNET_SOCIAL_host_enter (const struct GNUNET_SOCIAL_App *app,
1225 const struct GNUNET_SOCIAL_Ego *ego,
1226 enum GNUNET_PSYC_Policy policy,
1227 struct GNUNET_PSYC_Slicer *slicer,
1228 GNUNET_SOCIAL_HostEnterCallback enter_cb,
1229 GNUNET_SOCIAL_AnswerDoorCallback answer_door_cb,
1230 GNUNET_SOCIAL_FarewellCallback farewell_cb,
1231 void *cls)
1232{
1233 struct GNUNET_SOCIAL_Host *hst = GNUNET_malloc (sizeof (*hst));
1234 struct GNUNET_SOCIAL_Place *plc = &hst->plc;
1235
1236 plc->cfg = app->cfg;
1237 plc->is_host = GNUNET_YES;
1238 plc->slicer = slicer;
1239
1240 hst->enter_cb = enter_cb;
1241 hst->answer_door_cb = answer_door_cb;
1242 hst->farewell_cb = farewell_cb;
1243 hst->cb_cls = cls;
1244
1245 plc->op = GNUNET_OP_create ();
1246
1247 hst->slicer = GNUNET_PSYC_slicer_create ();
1248 GNUNET_PSYC_slicer_method_add (hst->slicer, "_notice_place_leave", NULL,
1249 host_recv_notice_place_leave_method,
1250 host_recv_notice_place_leave_modifier,
1251 NULL, host_recv_notice_place_leave_eom, hst);
1252
1253 uint16_t app_id_size = strlen (app->id) + 1;
1254 struct HostEnterRequest *hreq;
1255 plc->connect_env = GNUNET_MQ_msg_extra (hreq, app_id_size,
1256 GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER);
1257 hreq->policy = policy;
1258 hreq->ego_pub_key = ego->pub_key;
1259 GNUNET_memcpy (&hreq[1], app->id, app_id_size);
1260
1261 host_connect (hst);
1262 return hst;
1263}
1264
1265
1266/**
1267 * Reconnect to an already entered place as host.
1268 *
1269 * @param hconn
1270 * Host connection handle.
1271 * @see GNUNET_SOCIAL_app_connect() & GNUNET_SOCIAL_AppHostPlaceCallback()
1272 * @param slicer
1273 * Slicer to handle incoming messages.
1274 * @param enter_cb
1275 * Function called when the place is entered and ready to use.
1276 * @param answer_door_cb
1277 * Function to handle new nyms that want to enter.
1278 * @param farewell_cb
1279 * Function to handle departing nyms.
1280 * @param cls
1281 * Closure for the callbacks.
1282 *
1283 * @return Handle for the host.
1284 */
1285 struct GNUNET_SOCIAL_Host *
1286GNUNET_SOCIAL_host_enter_reconnect (struct GNUNET_SOCIAL_HostConnection *hconn,
1287 struct GNUNET_PSYC_Slicer *slicer,
1288 GNUNET_SOCIAL_HostEnterCallback enter_cb,
1289 GNUNET_SOCIAL_AnswerDoorCallback answer_door_cb,
1290 GNUNET_SOCIAL_FarewellCallback farewell_cb,
1291 void *cls)
1292{
1293 struct GNUNET_SOCIAL_Host *hst = GNUNET_malloc (sizeof (*hst));
1294 struct GNUNET_SOCIAL_Place *plc = &hst->plc;
1295
1296 hst->enter_cb = enter_cb;
1297 hst->answer_door_cb = answer_door_cb;
1298 hst->farewell_cb = farewell_cb;
1299 hst->cb_cls = cls;
1300
1301 plc->cfg = hconn->app->cfg;
1302 plc->is_host = GNUNET_YES;
1303 plc->slicer = slicer;
1304 plc->pub_key = hconn->plc_msg.place_pub_key;
1305 plc->ego_pub_key = hconn->plc_msg.ego_pub_key;
1306
1307 plc->op = GNUNET_OP_create ();
1308
1309 hst->slicer = GNUNET_PSYC_slicer_create ();
1310 GNUNET_PSYC_slicer_method_add (hst->slicer, "_notice_place_leave", NULL,
1311 host_recv_notice_place_leave_method,
1312 host_recv_notice_place_leave_modifier,
1313 NULL, host_recv_notice_place_leave_eom, hst);
1314
1315 size_t app_id_size = strlen (hconn->app->id) + 1;
1316 struct HostEnterRequest *hreq;
1317 plc->connect_env = GNUNET_MQ_msg_extra (hreq, app_id_size,
1318 GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER);
1319 hreq->place_pub_key = hconn->plc_msg.place_pub_key;
1320 hreq->ego_pub_key = hconn->plc_msg.ego_pub_key;
1321 GNUNET_memcpy (&hreq[1], hconn->app->id, app_id_size);
1322
1323 host_connect (hst);
1324 return hst;
1325}
1326
1327
1328/**
1329 * Decision whether to admit @a nym into the place or refuse entry.
1330 *
1331 * @param hst
1332 * Host of the place.
1333 * @param nym
1334 * Handle for the entity that wanted to enter.
1335 * @param is_admitted
1336 * #GNUNET_YES if @a nym is admitted,
1337 * #GNUNET_NO if @a nym is refused entry,
1338 * #GNUNET_SYSERR if we cannot answer the request.
1339 * @param method_name
1340 * Method name for the rejection message.
1341 * @param env
1342 * Environment containing variables for the message, or NULL.
1343 * @param data
1344 * Data for the rejection message to send back.
1345 * @param data_size
1346 * Number of bytes in @a data for method.
1347 * @return #GNUNET_OK on success,
1348 * #GNUNET_SYSERR if the message is too large.
1349 */
1350int
1351GNUNET_SOCIAL_host_entry_decision (struct GNUNET_SOCIAL_Host *hst,
1352 struct GNUNET_SOCIAL_Nym *nym,
1353 int is_admitted,
1354 const struct GNUNET_PSYC_Message *entry_resp)
1355{
1356 struct GNUNET_SOCIAL_Place *plc = &hst->plc;
1357 struct GNUNET_PSYC_JoinDecisionMessage *dcsn;
1358 uint16_t entry_resp_size
1359 = (NULL != entry_resp) ? ntohs (entry_resp->header.size) : 0;
1360
1361 if (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD < sizeof (*dcsn) + entry_resp_size)
1362 return GNUNET_SYSERR;
1363
1364 struct GNUNET_MQ_Envelope *
1365 env = GNUNET_MQ_msg_extra (dcsn, entry_resp_size,
1366 GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION);
1367 dcsn->is_admitted = htonl (is_admitted);
1368 dcsn->slave_pub_key = nym->pub_key;
1369
1370 if (0 < entry_resp_size)
1371 GNUNET_memcpy (&dcsn[1], entry_resp, entry_resp_size);
1372
1373 GNUNET_MQ_send (plc->mq, env);
1374 return GNUNET_OK;
1375}
1376
1377
1378/**
1379 * Throw @a nym out of the place.
1380 *
1381 * The @a nym reference will remain valid until the
1382 * #GNUNET_SOCIAL_FarewellCallback is invoked,
1383 * which should be very soon after this call.
1384 *
1385 * @param host
1386 * Host of the place.
1387 * @param nym
1388 * Handle for the entity to be ejected.
1389 * @param env
1390 * Environment for the message or NULL.
1391 */
1392void
1393GNUNET_SOCIAL_host_eject (struct GNUNET_SOCIAL_Host *hst,
1394 const struct GNUNET_SOCIAL_Nym *nym,
1395 struct GNUNET_PSYC_Environment *e)
1396{
1397 struct GNUNET_PSYC_Environment *env = e;
1398 if (NULL == env)
1399 env = GNUNET_PSYC_env_create ();
1400 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET,
1401 "_nym", &nym->pub_key, sizeof (nym->pub_key));
1402 GNUNET_SOCIAL_host_announce (hst, "_notice_place_leave", env, NULL, NULL,
1403 GNUNET_SOCIAL_ANNOUNCE_NONE);
1404 if (NULL == e)
1405 GNUNET_PSYC_env_destroy (env);
1406}
1407
1408
1409/**
1410 * Get the public key of @a ego.
1411 *
1412 * @param ego
1413 * Ego.
1414 *
1415 * @return Public key of ego.
1416 */
1417const struct GNUNET_CRYPTO_EcdsaPublicKey *
1418GNUNET_SOCIAL_ego_get_pub_key (const struct GNUNET_SOCIAL_Ego *ego)
1419{
1420 return &ego->pub_key;
1421}
1422
1423
1424/**
1425 * Get the hash of the public key of @a ego.
1426 *
1427 * @param ego
1428 * Ego.
1429 *
1430 * @return Hash of the public key of @a ego.
1431 */
1432const struct GNUNET_HashCode *
1433GNUNET_SOCIAL_ego_get_pub_key_hash (const struct GNUNET_SOCIAL_Ego *ego)
1434{
1435 return &ego->pub_key_hash;
1436}
1437
1438
1439/**
1440 * Get the name of @a ego.
1441 *
1442 * @param ego
1443 * Ego.
1444 *
1445 * @return Public key of @a ego.
1446 */
1447const char *
1448GNUNET_SOCIAL_ego_get_name (const struct GNUNET_SOCIAL_Ego *ego)
1449{
1450 return ego->name;
1451}
1452
1453
1454/**
1455 * Get the public key of @a nym.
1456 *
1457 * Suitable, for example, to be used with GNUNET_SOCIAL_zone_add_nym().
1458 *
1459 * @param nym
1460 * Pseudonym.
1461 *
1462 * @return Public key of @a nym.
1463 */
1464const struct GNUNET_CRYPTO_EcdsaPublicKey *
1465GNUNET_SOCIAL_nym_get_pub_key (const struct GNUNET_SOCIAL_Nym *nym)
1466{
1467 return &nym->pub_key;
1468}
1469
1470
1471/**
1472 * Get the hash of the public key of @a nym.
1473 *
1474 * @param nym
1475 * Pseudonym.
1476 *
1477 * @return Hash of the public key of @a nym.
1478 */
1479const struct GNUNET_HashCode *
1480GNUNET_SOCIAL_nym_get_pub_key_hash (const struct GNUNET_SOCIAL_Nym *nym)
1481{
1482 return &nym->pub_key_hash;
1483}
1484
1485
1486/**
1487 * Send a message to all nyms that are present in the place.
1488 *
1489 * This function is restricted to the host. Nyms can only send requests
1490 * to the host who can decide to relay it to everyone in the place.
1491 *
1492 * @param host Host of the place.
1493 * @param method_name Method to use for the announcement.
1494 * @param env Environment containing variables for the message and operations
1495 * on objects of the place. Can be NULL.
1496 * @param notify Function to call to get the payload of the announcement.
1497 * @param notify_cls Closure for @a notify.
1498 * @param flags Flags for this announcement.
1499 *
1500 * @return NULL on error (announcement already in progress?).
1501 */
1502struct GNUNET_SOCIAL_Announcement *
1503GNUNET_SOCIAL_host_announce (struct GNUNET_SOCIAL_Host *hst,
1504 const char *method_name,
1505 const struct GNUNET_PSYC_Environment *env,
1506 GNUNET_PSYC_TransmitNotifyData notify_data,
1507 void *notify_data_cls,
1508 enum GNUNET_SOCIAL_AnnounceFlags flags)
1509{
1510 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1511 "PSYC_transmit_message for host, method: %s\n",
1512 method_name);
1513 if (GNUNET_OK ==
1514 GNUNET_PSYC_transmit_message (hst->plc.tmit, method_name, env,
1515 NULL, notify_data, notify_data_cls, flags))
1516 return (struct GNUNET_SOCIAL_Announcement *) hst->plc.tmit;
1517 else
1518 return NULL;
1519}
1520
1521
1522/**
1523 * Resume transmitting announcement.
1524 *
1525 * @param a
1526 * The announcement to resume.
1527 */
1528void
1529GNUNET_SOCIAL_host_announce_resume (struct GNUNET_SOCIAL_Announcement *a)
1530{
1531 GNUNET_PSYC_transmit_resume ((struct GNUNET_PSYC_TransmitHandle *) a);
1532}
1533
1534
1535/**
1536 * Cancel announcement.
1537 *
1538 * @param a
1539 * The announcement to cancel.
1540 */
1541void
1542GNUNET_SOCIAL_host_announce_cancel (struct GNUNET_SOCIAL_Announcement *a)
1543{
1544 GNUNET_PSYC_transmit_cancel ((struct GNUNET_PSYC_TransmitHandle *) a);
1545}
1546
1547
1548/**
1549 * Obtain handle for a hosted place.
1550 *
1551 * The returned handle can be used to access the place API.
1552 *
1553 * @param host Handle for the host.
1554 *
1555 * @return Handle for the hosted place, valid as long as @a host is valid.
1556 */
1557struct GNUNET_SOCIAL_Place *
1558GNUNET_SOCIAL_host_get_place (struct GNUNET_SOCIAL_Host *hst)
1559{
1560 return &hst->plc;
1561}
1562
1563
1564/**
1565 * Disconnect from a home.
1566 *
1567 * Invalidates host handle.
1568 *
1569 * @param hst
1570 * The host to disconnect.
1571 */
1572void
1573GNUNET_SOCIAL_host_disconnect (struct GNUNET_SOCIAL_Host *hst,
1574 GNUNET_ContinuationCallback disconnect_cb,
1575 void *cls)
1576{
1577 struct GNUNET_SOCIAL_Place *plc = &hst->plc;
1578
1579 plc->disconnect_cb = disconnect_cb;
1580 plc->disconnect_cls = cls;
1581 place_disconnect (plc);
1582}
1583
1584
1585/**
1586 * Stop hosting the home.
1587 *
1588 * Sends a _notice_place_closing announcement to the home.
1589 * Invalidates host handle.
1590 *
1591 * @param hst
1592 * The host leaving.
1593 * @param env
1594 * Environment for the message or NULL.
1595 * _nym is set to @e nym regardless whether an @e env is provided.
1596 * @param disconnect_cb
1597 * Function called after the host left the place
1598 * and disconnected from the social service.
1599 * @param cls
1600 * Closure for @a disconnect_cb.
1601 */
1602void
1603GNUNET_SOCIAL_host_leave (struct GNUNET_SOCIAL_Host *hst,
1604 const struct GNUNET_PSYC_Environment *env,
1605 GNUNET_ContinuationCallback disconnect_cb,
1606 void *cls)
1607{
1608 struct GNUNET_MQ_Envelope *envelope;
1609
1610 GNUNET_SOCIAL_host_announce (hst, "_notice_place_closing", env, NULL, NULL,
1611 GNUNET_SOCIAL_ANNOUNCE_NONE);
1612 hst->plc.disconnect_cb = disconnect_cb;
1613 hst->plc.disconnect_cls = cls;
1614 envelope = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE);
1615 GNUNET_MQ_send (hst->plc.mq,
1616 envelope);
1617}
1618
1619
1620/*** GUEST ***/
1621
1622
1623static void
1624guest_connect (struct GNUNET_SOCIAL_Guest *gst);
1625
1626
1627static void
1628guest_reconnect (void *cls)
1629{
1630 guest_connect (cls);
1631}
1632
1633
1634/**
1635 * Guest client disconnected from service.
1636 *
1637 * Reconnect after backoff period.
1638 */
1639static void
1640guest_disconnected (void *cls, enum GNUNET_MQ_Error error)
1641{
1642 struct GNUNET_SOCIAL_Guest *gst = cls;
1643 struct GNUNET_SOCIAL_Place *plc = &gst->plc;
1644
1645 LOG (GNUNET_ERROR_TYPE_DEBUG,
1646 "Guest client disconnected (%d), re-connecting\n",
1647 (int) error);
1648 if (NULL != plc->tmit)
1649 {
1650 GNUNET_PSYC_transmit_destroy (plc->tmit);
1651 plc->tmit = NULL;
1652 }
1653 if (NULL != plc->mq)
1654 {
1655 GNUNET_MQ_destroy (plc->mq);
1656 plc->mq = NULL;
1657 }
1658
1659 plc->reconnect_task = GNUNET_SCHEDULER_add_delayed (plc->reconnect_delay,
1660 guest_reconnect,
1661 gst);
1662 plc->reconnect_delay = GNUNET_TIME_STD_BACKOFF (plc->reconnect_delay);
1663}
1664
1665
1666static void
1667guest_connect (struct GNUNET_SOCIAL_Guest *gst)
1668{
1669 struct GNUNET_SOCIAL_Place *plc = &gst->plc;
1670
1671 struct GNUNET_MQ_MessageHandler handlers[] = {
1672 GNUNET_MQ_hd_fixed_size (guest_enter_ack,
1673 GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_ACK,
1674 struct GNUNET_PSYC_CountersResultMessage,
1675 gst),
1676 GNUNET_MQ_hd_fixed_size (place_leave_ack,
1677 GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE_ACK,
1678 struct GNUNET_MessageHeader,
1679 plc),
1680 GNUNET_MQ_hd_var_size (guest_enter_decision,
1681 GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION,
1682 struct GNUNET_PSYC_JoinDecisionMessage,
1683 gst),
1684 GNUNET_MQ_hd_var_size (place_message,
1685 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE,
1686 struct GNUNET_PSYC_MessageHeader,
1687 plc),
1688 GNUNET_MQ_hd_fixed_size (place_message_ack,
1689 GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK,
1690 struct GNUNET_MessageHeader,
1691 plc),
1692 GNUNET_MQ_hd_var_size (place_history_result,
1693 GNUNET_MESSAGE_TYPE_PSYC_HISTORY_RESULT,
1694 struct GNUNET_OperationResultMessage,
1695 plc),
1696 GNUNET_MQ_hd_var_size (place_state_result,
1697 GNUNET_MESSAGE_TYPE_PSYC_STATE_RESULT,
1698 struct GNUNET_OperationResultMessage,
1699 plc),
1700 GNUNET_MQ_hd_var_size (place_result,
1701 GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE,
1702 struct GNUNET_OperationResultMessage,
1703 plc),
1704 GNUNET_MQ_handler_end ()
1705 };
1706
1707 plc->mq = GNUNET_CLIENT_connect (plc->cfg, "social",
1708 handlers, guest_disconnected, gst);
1709 GNUNET_assert (NULL != plc->mq);
1710 plc->tmit = GNUNET_PSYC_transmit_create (plc->mq);
1711
1712 GNUNET_MQ_send_copy (plc->mq, plc->connect_env);
1713}
1714
1715
1716static struct GNUNET_MQ_Envelope *
1717guest_enter_request_create (const char *app_id,
1718 const struct GNUNET_CRYPTO_EcdsaPublicKey *ego_pub_key,
1719 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
1720 const struct GNUNET_PeerIdentity *origin,
1721 size_t relay_count,
1722 const struct GNUNET_PeerIdentity *relays,
1723 const struct GNUNET_PSYC_Message *join_msg)
1724{
1725 uint16_t app_id_size = strlen (app_id) + 1;
1726 uint16_t join_msg_size = ntohs (join_msg->header.size);
1727 uint16_t relay_size = relay_count * sizeof (*relays);
1728
1729 struct GuestEnterRequest *greq;
1730 struct GNUNET_MQ_Envelope *
1731 env = GNUNET_MQ_msg_extra (greq, app_id_size + relay_size + join_msg_size,
1732 GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER);
1733 greq->place_pub_key = *place_pub_key;
1734 greq->ego_pub_key = *ego_pub_key;
1735 greq->origin = *origin;
1736 greq->relay_count = htonl (relay_count);
1737
1738 char *p = (char *) &greq[1];
1739 GNUNET_memcpy (p, app_id, app_id_size);
1740 p += app_id_size;
1741
1742 if (0 < relay_size)
1743 {
1744 GNUNET_memcpy (p, relays, relay_size);
1745 p += relay_size;
1746 }
1747
1748 GNUNET_memcpy (p, join_msg, join_msg_size);
1749 return env;
1750}
1751
1752
1753/**
1754 * Request entry to a place as a guest.
1755 *
1756 * @param app
1757 * Application handle.
1758 * @param ego
1759 * Identity of the guest.
1760 * @param place_pub_key
1761 * Public key of the place to enter.
1762 * @param flags
1763 * Flags for the entry.
1764 * @param origin
1765 * Peer identity of the origin of the underlying multicast group.
1766 * @param relay_count
1767 * Number of elements in the @a relays array.
1768 * @param relays
1769 * Relays for the underlying multicast group.
1770 * @param method_name
1771 * Method name for the message.
1772 * @param env
1773 * Environment containing variables for the message, or NULL.
1774 * @param data
1775 * Payload for the message to give to the enter callback.
1776 * @param data_size
1777 * Number of bytes in @a data.
1778 * @param slicer
1779 * Slicer to use for processing incoming requests from guests.
1780 *
1781 * @return NULL on errors, otherwise handle for the guest.
1782 */
1783struct GNUNET_SOCIAL_Guest *
1784GNUNET_SOCIAL_guest_enter (const struct GNUNET_SOCIAL_App *app,
1785 const struct GNUNET_SOCIAL_Ego *ego,
1786 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
1787 enum GNUNET_PSYC_SlaveJoinFlags flags,
1788 const struct GNUNET_PeerIdentity *origin,
1789 uint32_t relay_count,
1790 const struct GNUNET_PeerIdentity *relays,
1791 const struct GNUNET_PSYC_Message *entry_msg,
1792 struct GNUNET_PSYC_Slicer *slicer,
1793 GNUNET_SOCIAL_GuestEnterCallback local_enter_cb,
1794 GNUNET_SOCIAL_EntryDecisionCallback entry_dcsn_cb,
1795 void *cls)
1796{
1797 struct GNUNET_SOCIAL_Guest *gst = GNUNET_malloc (sizeof (*gst));
1798 struct GNUNET_SOCIAL_Place *plc = &gst->plc;
1799
1800 plc->ego_pub_key = ego->pub_key;
1801 plc->pub_key = *place_pub_key;
1802 plc->cfg = app->cfg;
1803 plc->is_host = GNUNET_NO;
1804 plc->slicer = slicer;
1805
1806 plc->op = GNUNET_OP_create ();
1807
1808 plc->connect_env
1809 = guest_enter_request_create (app->id, &ego->pub_key, &plc->pub_key,
1810 origin, relay_count, relays, entry_msg);
1811
1812 gst->enter_cb = local_enter_cb;
1813 gst->entry_dcsn_cb = entry_dcsn_cb;
1814 gst->cb_cls = cls;
1815
1816 guest_connect (gst);
1817 return gst;
1818}
1819
1820
1821/**
1822 * Request entry to a place by name as a guest.
1823 *
1824 * @param app
1825 * Application handle.
1826 * @param ego
1827 * Identity of the guest.
1828 * @param gns_name
1829 * GNS name of the place to enter. Either in the form of
1830 * 'room.friend.gnu', or 'NYMPUBKEY.zkey'. This latter case refers to
1831 * the 'PLACE' record of the empty label ("+") in the GNS zone with the
1832 * nym's public key 'NYMPUBKEY', and can be used to request entry to a
1833 * pseudonym's place directly.
1834 * @param password
1835 * Password to decrypt the record, or NULL for cleartext records.
1836 * @param join_msg
1837 * Entry request message or NULL.
1838 * @param slicer
1839 * Slicer to use for processing incoming requests from guests.
1840 * @param local_enter_cb
1841 * Called upon connection established to the social service.
1842 * @param entry_decision_cb
1843 * Called upon receiving entry decision.
1844 *
1845 * @return NULL on errors, otherwise handle for the guest.
1846 */
1847struct GNUNET_SOCIAL_Guest *
1848GNUNET_SOCIAL_guest_enter_by_name (const struct GNUNET_SOCIAL_App *app,
1849 const struct GNUNET_SOCIAL_Ego *ego,
1850 const char *gns_name,
1851 const char *password,
1852 const struct GNUNET_PSYC_Message *join_msg,
1853 struct GNUNET_PSYC_Slicer *slicer,
1854 GNUNET_SOCIAL_GuestEnterCallback local_enter_cb,
1855 GNUNET_SOCIAL_EntryDecisionCallback entry_decision_cb,
1856 void *cls)
1857{
1858 struct GNUNET_SOCIAL_Guest *gst = GNUNET_malloc (sizeof (*gst));
1859 struct GNUNET_SOCIAL_Place *plc = &gst->plc;
1860
1861 if (NULL == password)
1862 password = "";
1863
1864 uint16_t app_id_size = strlen (app->id) + 1;
1865 uint16_t gns_name_size = strlen (gns_name) + 1;
1866 uint16_t password_size = strlen (password) + 1;
1867
1868 uint16_t join_msg_size = 0;
1869 if (NULL != join_msg)
1870 join_msg_size = ntohs (join_msg->header.size);
1871
1872 struct GuestEnterByNameRequest *greq;
1873 plc->connect_env
1874 = GNUNET_MQ_msg_extra (greq, app_id_size + gns_name_size
1875 + password_size + join_msg_size,
1876 GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_BY_NAME);
1877
1878 greq->ego_pub_key = ego->pub_key;
1879
1880 char *p = (char *) &greq[1];
1881 GNUNET_memcpy (p, app->id, app_id_size);
1882 p += app_id_size;
1883 GNUNET_memcpy (p, gns_name, gns_name_size);
1884 p += gns_name_size;
1885 GNUNET_memcpy (p, password, password_size);
1886 p += password_size;
1887 if (NULL != join_msg)
1888 GNUNET_memcpy (p, join_msg, join_msg_size);
1889
1890 plc->ego_pub_key = ego->pub_key;
1891 plc->cfg = app->cfg;
1892 plc->is_host = GNUNET_NO;
1893 plc->slicer = slicer;
1894
1895 plc->op = GNUNET_OP_create ();
1896
1897 gst->enter_cb = local_enter_cb;
1898 gst->entry_dcsn_cb = entry_decision_cb;
1899 gst->cb_cls = cls;
1900
1901 guest_connect (gst);
1902 return gst;
1903}
1904
1905
1906struct ReconnectContext
1907{
1908 struct GNUNET_SOCIAL_Guest *guest;
1909 int *result;
1910 int64_t *max_message_id;
1911 GNUNET_SOCIAL_GuestEnterCallback enter_cb;
1912 void *enter_cls;
1913};
1914
1915
1916static void
1917guest_enter_reconnect_cb (void *cls,
1918 int result,
1919 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
1920 uint64_t max_message_id)
1921{
1922 struct ReconnectContext *reconnect_ctx = cls;
1923
1924 GNUNET_assert (NULL != reconnect_ctx);
1925 reconnect_ctx->result = GNUNET_new (int);
1926 *(reconnect_ctx->result) = result;
1927 reconnect_ctx->max_message_id = GNUNET_new (int64_t);
1928 *(reconnect_ctx->max_message_id) = max_message_id;
1929}
1930
1931
1932static void
1933guest_entry_dcsn_reconnect_cb (void *cls,
1934 int is_admitted,
1935 const struct GNUNET_PSYC_Message *entry_resp)
1936{
1937 struct ReconnectContext *reconnect_ctx = cls;
1938 struct GNUNET_SOCIAL_Guest *gst = reconnect_ctx->guest;
1939
1940 GNUNET_assert (NULL != reconnect_ctx);
1941 GNUNET_assert (NULL != reconnect_ctx->result);
1942 GNUNET_assert (NULL != reconnect_ctx->max_message_id);
1943 if (GNUNET_YES != is_admitted)
1944 {
1945 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1946 "Guest was rejected after calling "
1947 "GNUNET_SOCIAL_guest_enter_reconnect ()\n");
1948 }
1949 else if (NULL != reconnect_ctx->enter_cb)
1950 {
1951 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1952 "guest reconnected!\n");
1953 reconnect_ctx->enter_cb (reconnect_ctx->enter_cls,
1954 *(reconnect_ctx->result),
1955 &gst->plc.pub_key,
1956 *(reconnect_ctx->max_message_id));
1957 }
1958 GNUNET_free (reconnect_ctx->result);
1959 GNUNET_free (reconnect_ctx->max_message_id);
1960 GNUNET_free (reconnect_ctx);
1961}
1962
1963
1964/**
1965 * Reconnect to an already entered place as guest.
1966 *
1967 * @param gconn
1968 * Guest connection handle.
1969 * @see GNUNET_SOCIAL_app_connect() & GNUNET_SOCIAL_AppGuestPlaceCallback()
1970 * @param flags
1971 * Flags for the entry.
1972 * @param slicer
1973 * Slicer to use for processing incoming requests from guests.
1974 * @param enter_cb
1975 * Called upon re-entering is complete.
1976 * @param entry_decision_cb
1977 * Called upon receiving entry decision.
1978 *
1979 * @return NULL on errors, otherwise handle for the guest.
1980 */
1981struct GNUNET_SOCIAL_Guest *
1982GNUNET_SOCIAL_guest_enter_reconnect (struct GNUNET_SOCIAL_GuestConnection *gconn,
1983 enum GNUNET_PSYC_SlaveJoinFlags flags,
1984 struct GNUNET_PSYC_Slicer *slicer,
1985 GNUNET_SOCIAL_GuestEnterCallback enter_cb,
1986 void *cls)
1987{
1988 struct GNUNET_SOCIAL_Guest *gst = GNUNET_malloc (sizeof (*gst));
1989 struct GNUNET_SOCIAL_Place *plc = &gst->plc;
1990 struct ReconnectContext *reconnect_ctx;
1991
1992 uint16_t app_id_size = strlen (gconn->app->id) + 1;
1993 struct GuestEnterRequest *greq;
1994 plc->connect_env
1995 = GNUNET_MQ_msg_extra (greq, app_id_size,
1996 GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER);
1997 greq->ego_pub_key = gconn->plc_msg.ego_pub_key;
1998 greq->place_pub_key = gconn->plc_msg.place_pub_key;
1999 greq->flags = htonl (flags);
2000
2001 GNUNET_memcpy (&greq[1], gconn->app->id, app_id_size);
2002
2003 plc->cfg = gconn->app->cfg;
2004 plc->is_host = GNUNET_NO;
2005 plc->slicer = slicer;
2006 plc->pub_key = gconn->plc_msg.place_pub_key;
2007 plc->ego_pub_key = gconn->plc_msg.ego_pub_key;
2008
2009 reconnect_ctx = GNUNET_new (struct ReconnectContext);
2010 reconnect_ctx->guest = gst;
2011 reconnect_ctx->enter_cb = enter_cb;
2012 reconnect_ctx->enter_cls = cls;
2013
2014 plc->op = GNUNET_OP_create ();
2015 gst->enter_cb = &guest_enter_reconnect_cb;
2016 gst->entry_dcsn_cb = &guest_entry_dcsn_reconnect_cb;
2017 gst->cb_cls = reconnect_ctx;
2018
2019 guest_connect (gst);
2020 return gst;
2021}
2022
2023
2024/**
2025 * Talk to the host of the place.
2026 *
2027 * @param place
2028 * Place where we want to talk to the host.
2029 * @param method_name
2030 * Method to invoke on the host.
2031 * @param env
2032 * Environment containing variables for the message, or NULL.
2033 * @param notify_data
2034 * Function to use to get the payload for the method.
2035 * @param notify_data_cls
2036 * Closure for @a notify_data.
2037 * @param flags
2038 * Flags for the message being sent.
2039 *
2040 * @return NULL if we are already trying to talk to the host,
2041 * otherwise handle to cancel the request.
2042 */
2043struct GNUNET_SOCIAL_TalkRequest *
2044GNUNET_SOCIAL_guest_talk (struct GNUNET_SOCIAL_Guest *gst,
2045 const char *method_name,
2046 const struct GNUNET_PSYC_Environment *env,
2047 GNUNET_PSYC_TransmitNotifyData notify_data,
2048 void *notify_data_cls,
2049 enum GNUNET_SOCIAL_TalkFlags flags)
2050{
2051 struct GNUNET_SOCIAL_Place *plc = &gst->plc;
2052 GNUNET_assert (NULL != plc->tmit);
2053
2054 if (GNUNET_OK ==
2055 GNUNET_PSYC_transmit_message (plc->tmit, method_name, env,
2056 NULL, notify_data, notify_data_cls, flags))
2057 return (struct GNUNET_SOCIAL_TalkRequest *) plc->tmit;
2058 else
2059 return NULL;
2060}
2061
2062
2063/**
2064 * Resume talking to the host of the place.
2065 *
2066 * @param tr
2067 * Talk request to resume.
2068 */
2069void
2070GNUNET_SOCIAL_guest_talk_resume (struct GNUNET_SOCIAL_TalkRequest *tr)
2071{
2072 GNUNET_PSYC_transmit_resume ((struct GNUNET_PSYC_TransmitHandle *) tr);
2073}
2074
2075
2076/**
2077 * Cancel talking to the host of the place.
2078 *
2079 * @param tr
2080 * Talk request to cancel.
2081 */
2082void
2083GNUNET_SOCIAL_guest_talk_cancel (struct GNUNET_SOCIAL_TalkRequest *tr)
2084{
2085 GNUNET_PSYC_transmit_cancel ( (struct GNUNET_PSYC_TransmitHandle *) tr);
2086}
2087
2088
2089/**
2090 * Disconnect from a place.
2091 *
2092 * Invalidates guest handle.
2093 *
2094 * @param gst
2095 * The guest to disconnect.
2096 */
2097void
2098GNUNET_SOCIAL_guest_disconnect (struct GNUNET_SOCIAL_Guest *gst,
2099 GNUNET_ContinuationCallback disconnect_cb,
2100 void *cls)
2101{
2102 struct GNUNET_SOCIAL_Place *plc = &gst->plc;
2103
2104 plc->disconnect_cb = disconnect_cb;
2105 plc->disconnect_cls = cls;
2106 place_disconnect (plc);
2107}
2108
2109
2110/**
2111 * Leave a place temporarily or permanently.
2112 *
2113 * Notifies the owner of the place about leaving, and destroys the place handle.
2114 *
2115 * @param place
2116 * Place to leave.
2117 * @param keep_active
2118 * Keep place active after last application disconnected.
2119 * #GNUNET_YES or #GNUNET_NO
2120 * @param env
2121 * Optional environment for the leave message if @a keep_active
2122 * is #GNUNET_NO. NULL if not needed.
2123 * @param leave_cb
2124 * Called upon disconnecting from the social service.
2125 */
2126void
2127GNUNET_SOCIAL_guest_leave (struct GNUNET_SOCIAL_Guest *gst,
2128 struct GNUNET_PSYC_Environment *env,
2129 GNUNET_ContinuationCallback disconnect_cb,
2130 void *cls)
2131{
2132 struct GNUNET_MQ_Envelope *envelope;
2133
2134 GNUNET_SOCIAL_guest_talk (gst, "_notice_place_leave", env, NULL, NULL,
2135 GNUNET_SOCIAL_TALK_NONE);
2136 gst->plc.disconnect_cb = disconnect_cb;
2137 gst->plc.disconnect_cls = cls;
2138 envelope = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_SOCIAL_PLACE_LEAVE);
2139 GNUNET_MQ_send (gst->plc.mq,
2140 envelope);
2141}
2142
2143
2144/**
2145 * Obtain handle for a place entered as guest.
2146 *
2147 * The returned handle can be used to access the place API.
2148 *
2149 * @param guest Handle for the guest.
2150 *
2151 * @return Handle for the place, valid as long as @a guest is valid.
2152 */
2153struct GNUNET_SOCIAL_Place *
2154GNUNET_SOCIAL_guest_get_place (struct GNUNET_SOCIAL_Guest *gst)
2155{
2156 return &gst->plc;
2157}
2158
2159
2160/**
2161 * Obtain the public key of a place.
2162 *
2163 * @param plc
2164 * Place.
2165 *
2166 * @return Public key of the place.
2167 */
2168const struct GNUNET_CRYPTO_EddsaPublicKey *
2169GNUNET_SOCIAL_place_get_pub_key (const struct GNUNET_SOCIAL_Place *plc)
2170{
2171 return &plc->pub_key;
2172}
2173
2174
2175/**
2176 * Set message processing @a flags for a @a method_prefix.
2177 *
2178 * @param plc
2179 * Place.
2180 * @param method_prefix
2181 * Method prefix @a flags apply to.
2182 * @param flags
2183 * The flags that apply to a matching @a method_prefix.
2184 */
2185void
2186GNUNET_SOCIAL_place_msg_proc_set (struct GNUNET_SOCIAL_Place *plc,
2187 const char *method_prefix,
2188 enum GNUNET_SOCIAL_MsgProcFlags flags)
2189{
2190 GNUNET_assert (NULL != method_prefix);
2191 struct MsgProcRequest *mpreq;
2192 uint16_t method_size = strnlen (method_prefix,
2193 GNUNET_MAX_MESSAGE_SIZE
2194 - sizeof (*mpreq)) + 1;
2195 GNUNET_assert ('\0' == method_prefix[method_size - 1]);
2196
2197 struct GNUNET_MQ_Envelope *
2198 env = GNUNET_MQ_msg_extra (mpreq, method_size,
2199 GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_SET);
2200 mpreq->flags = htonl (flags);
2201 GNUNET_memcpy (&mpreq[1], method_prefix, method_size);
2202
2203 GNUNET_MQ_send (plc->mq, env);
2204}
2205
2206
2207/**
2208 * Clear all message processing flags previously set for this place.
2209 */
2210void
2211GNUNET_SOCIAL_place_msg_proc_clear (struct GNUNET_SOCIAL_Place *plc)
2212{
2213 struct GNUNET_MessageHeader *req;
2214 struct GNUNET_MQ_Envelope *
2215 env = GNUNET_MQ_msg (req, GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_CLEAR);
2216
2217 GNUNET_MQ_send (plc->mq, env);
2218}
2219
2220
2221static struct GNUNET_SOCIAL_HistoryRequest *
2222place_history_replay (struct GNUNET_SOCIAL_Place *plc,
2223 uint64_t start_message_id,
2224 uint64_t end_message_id,
2225 uint64_t message_limit,
2226 const char *method_prefix,
2227 uint32_t flags,
2228 struct GNUNET_PSYC_Slicer *slicer,
2229 GNUNET_ResultCallback result_cb,
2230 void *cls)
2231{
2232 struct GNUNET_PSYC_HistoryRequestMessage *req;
2233 struct GNUNET_SOCIAL_HistoryRequest *hist = GNUNET_malloc (sizeof (*hist));
2234 hist->plc = plc;
2235 hist->slicer = slicer;
2236 hist->result_cb = result_cb;
2237 hist->cls = cls;
2238 hist->op_id = GNUNET_OP_add (plc->op, op_recv_history_result, hist, NULL);
2239
2240 GNUNET_assert (NULL != method_prefix);
2241 uint16_t method_size = strnlen (method_prefix,
2242 GNUNET_MAX_MESSAGE_SIZE
2243 - sizeof (*req)) + 1;
2244 GNUNET_assert ('\0' == method_prefix[method_size - 1]);
2245
2246 struct GNUNET_MQ_Envelope *
2247 env = GNUNET_MQ_msg_extra (req, method_size,
2248 GNUNET_MESSAGE_TYPE_PSYC_HISTORY_REPLAY);
2249 req->start_message_id = GNUNET_htonll (start_message_id);
2250 req->end_message_id = GNUNET_htonll (end_message_id);
2251 req->message_limit = GNUNET_htonll (message_limit);
2252 req->flags = htonl (flags);
2253 req->op_id = GNUNET_htonll (hist->op_id);
2254 GNUNET_memcpy (&req[1], method_prefix, method_size);
2255
2256 GNUNET_MQ_send (plc->mq, env);
2257 return hist;
2258}
2259
2260
2261/**
2262 * Learn about the history of a place.
2263 *
2264 * Messages are returned through the @a slicer function
2265 * and have the #GNUNET_PSYC_MESSAGE_HISTORIC flag set.
2266 *
2267 * @param place
2268 * Place we want to learn more about.
2269 * @param start_message_id
2270 * First historic message we are interested in.
2271 * @param end_message_id
2272 * Last historic message we are interested in (inclusive).
2273 * @param method_prefix
2274 * Only retrieve messages with this method prefix.
2275 * @param flags
2276 * OR'ed GNUNET_PSYC_HistoryReplayFlags
2277 * @param slicer
2278 * Slicer to use for retrieved messages.
2279 * Can be the same as the slicer of the place.
2280 * @param result_cb
2281 * Function called after all messages retrieved.
2282 * NULL if not needed.
2283 * @param cls Closure for @a result_cb.
2284 */
2285struct GNUNET_SOCIAL_HistoryRequest *
2286GNUNET_SOCIAL_place_history_replay (struct GNUNET_SOCIAL_Place *plc,
2287 uint64_t start_message_id,
2288 uint64_t end_message_id,
2289 const char *method_prefix,
2290 uint32_t flags,
2291 struct GNUNET_PSYC_Slicer *slicer,
2292 GNUNET_ResultCallback result_cb,
2293 void *cls)
2294{
2295 return place_history_replay (plc, start_message_id, end_message_id, 0,
2296 method_prefix, flags, slicer, result_cb, cls);
2297}
2298
2299
2300/**
2301 * Learn about the history of a place.
2302 *
2303 * Sends messages through the slicer function of the place where
2304 * start_message_id <= message_id <= end_message_id.
2305 * The messages will have the #GNUNET_PSYC_MESSAGE_HISTORIC flag set.
2306 *
2307 * To get the latest message, use 0 for both the start and end message ID.
2308 *
2309 * @param place
2310 * Place we want to learn more about.
2311 * @param message_limit
2312 * Maximum number of historic messages we are interested in.
2313 * @param method_prefix
2314 * Only retrieve messages with this method prefix.
2315 * @param flags
2316 * OR'ed GNUNET_PSYC_HistoryReplayFlags
2317 * @param result_cb
2318 * Function called after all messages retrieved.
2319 * NULL if not needed.
2320 * @param cls Closure for @a result_cb.
2321 */
2322struct GNUNET_SOCIAL_HistoryRequest *
2323GNUNET_SOCIAL_place_history_replay_latest (struct GNUNET_SOCIAL_Place *plc,
2324 uint64_t message_limit,
2325 const char *method_prefix,
2326 uint32_t flags,
2327 struct GNUNET_PSYC_Slicer *slicer,
2328 GNUNET_ResultCallback result_cb,
2329 void *cls)
2330{
2331 return place_history_replay (plc, 0, 0, message_limit, method_prefix, flags,
2332 slicer, result_cb, cls);
2333}
2334
2335
2336/**
2337 * Cancel learning about the history of a place.
2338 *
2339 * @param hist
2340 * History lesson to cancel.
2341 */
2342void
2343GNUNET_SOCIAL_place_history_replay_cancel (struct GNUNET_SOCIAL_HistoryRequest *hist)
2344{
2345 GNUNET_OP_remove (hist->plc->op, hist->op_id);
2346 GNUNET_free (hist);
2347}
2348
2349
2350/**
2351 * Request matching state variables.
2352 */
2353static struct GNUNET_SOCIAL_LookHandle *
2354place_state_get (struct GNUNET_SOCIAL_Place *plc,
2355 uint16_t type, const char *name,
2356 GNUNET_PSYC_StateVarCallback var_cb,
2357 GNUNET_ResultCallback result_cb, void *cls)
2358{
2359 struct GNUNET_PSYC_StateRequestMessage *req;
2360 struct GNUNET_SOCIAL_LookHandle *look = GNUNET_malloc (sizeof (*look));
2361 look->plc = plc;
2362 look->var_cb = var_cb;
2363 look->result_cb = result_cb;
2364 look->cls = cls;
2365 look->op_id = GNUNET_OP_add (plc->op, &op_recv_state_result, look, NULL);
2366
2367 GNUNET_assert (NULL != name);
2368 size_t name_size = strnlen (name, GNUNET_MAX_MESSAGE_SIZE
2369 - sizeof (*req)) + 1;
2370 struct GNUNET_MQ_Envelope *
2371 env = GNUNET_MQ_msg_extra (req, name_size, type);
2372 req->op_id = GNUNET_htonll (look->op_id);
2373 GNUNET_memcpy (&req[1], name, name_size);
2374
2375 GNUNET_MQ_send (plc->mq, env);
2376 return look;
2377}
2378
2379
2380/**
2381 * Look at a particular object in the place.
2382 *
2383 * The best matching object is returned (its name might be less specific than
2384 * what was requested).
2385 *
2386 * @param place
2387 * The place where to look.
2388 * @param full_name
2389 * Full name of the object.
2390 * @param value_size
2391 * Set to the size of the returned value.
2392 *
2393 * @return NULL if there is no such object at this place.
2394 */
2395struct GNUNET_SOCIAL_LookHandle *
2396GNUNET_SOCIAL_place_look_at (struct GNUNET_SOCIAL_Place *plc,
2397 const char *full_name,
2398 GNUNET_PSYC_StateVarCallback var_cb,
2399 GNUNET_ResultCallback result_cb,
2400 void *cls)
2401{
2402 return place_state_get (plc, GNUNET_MESSAGE_TYPE_PSYC_STATE_GET,
2403 full_name, var_cb, result_cb, cls);
2404}
2405
2406
2407/**
2408 * Look for objects in the place with a matching name prefix.
2409 *
2410 * @param place
2411 * The place where to look.
2412 * @param name_prefix
2413 * Look at objects with names beginning with this value.
2414 * @param var_cb
2415 * Function to call for each object found.
2416 * @param cls
2417 * Closure for callback function.
2418 *
2419 * @return Handle that can be used to stop looking at objects.
2420 */
2421struct GNUNET_SOCIAL_LookHandle *
2422GNUNET_SOCIAL_place_look_for (struct GNUNET_SOCIAL_Place *plc,
2423 const char *name_prefix,
2424 GNUNET_PSYC_StateVarCallback var_cb,
2425 GNUNET_ResultCallback result_cb,
2426 void *cls)
2427{
2428 return place_state_get (plc, GNUNET_MESSAGE_TYPE_PSYC_STATE_GET_PREFIX,
2429 name_prefix, var_cb, result_cb, cls);
2430}
2431
2432
2433/**
2434 * Cancel a state request operation.
2435 *
2436 * @param sr
2437 * Handle for the operation to cancel.
2438 */
2439void
2440GNUNET_SOCIAL_place_look_cancel (struct GNUNET_SOCIAL_LookHandle *look)
2441{
2442 GNUNET_OP_remove (look->plc->op, look->op_id);
2443 GNUNET_free (look);
2444}
2445
2446
2447static void
2448op_recv_zone_add_place_result (void *cls, int64_t result,
2449 const void *err_msg, uint16_t err_msg_size)
2450{
2451 LOG (GNUNET_ERROR_TYPE_DEBUG,
2452 "Received zone add place result: %" PRId64 ".\n", result);
2453
2454 struct ZoneAddPlaceHandle *add_plc = cls;
2455 if (NULL != add_plc->result_cb)
2456 add_plc->result_cb (add_plc->result_cls, result, err_msg, err_msg_size);
2457
2458 GNUNET_free (add_plc);
2459}
2460
2461
2462/**
2463 * Advertise @e place in the GNS zone of @e ego.
2464 *
2465 * @param app
2466 * Application handle.
2467 * @param ego
2468 * Ego.
2469 * @param place_pub_key
2470 * Public key of place to add.
2471 * @param name
2472 * The name for the PLACE record to put in the zone.
2473 * @param password
2474 * Password used to encrypt the record or NULL to keep it cleartext.
2475 * @param relay_count
2476 * Number of elements in the @a relays array.
2477 * @param relays
2478 * List of relays to put in the PLACE record to advertise
2479 * as entry points to the place in addition to the origin.
2480 * @param expiration_time
2481 * Expiration time of the record, use 0 to remove the record.
2482 * @param result_cb
2483 * Function called with the result of the operation.
2484 * @param result_cls
2485 * Closure for @a result_cb
2486 *
2487 * @return #GNUNET_OK if the request was sent,
2488 * #GNUNET_SYSERR on error, e.g. the name/password is too long.
2489 */
2490int
2491GNUNET_SOCIAL_zone_add_place (const struct GNUNET_SOCIAL_App *app,
2492 const struct GNUNET_SOCIAL_Ego *ego,
2493 const char *name,
2494 const char *password,
2495 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
2496 const struct GNUNET_PeerIdentity *origin,
2497 uint32_t relay_count,
2498 const struct GNUNET_PeerIdentity *relays,
2499 struct GNUNET_TIME_Absolute expiration_time,
2500 GNUNET_ResultCallback result_cb,
2501 void *result_cls)
2502{
2503 struct ZoneAddPlaceRequest *preq;
2504 size_t name_size = strlen (name) + 1;
2505 size_t password_size = strlen (password) + 1;
2506 size_t relay_size = relay_count * sizeof (*relays);
2507 size_t payload_size = name_size + password_size + relay_size;
2508
2509 if (GNUNET_MAX_MESSAGE_SIZE < sizeof (*preq) + payload_size)
2510 return GNUNET_SYSERR;
2511
2512 struct GNUNET_MQ_Envelope *
2513 env = GNUNET_MQ_msg_extra (preq, payload_size,
2514 GNUNET_MESSAGE_TYPE_SOCIAL_ZONE_ADD_PLACE);
2515 preq->expiration_time = GNUNET_htonll (expiration_time.abs_value_us);
2516 preq->ego_pub_key = ego->pub_key;
2517 preq->place_pub_key = *place_pub_key;
2518 preq->origin = *origin;
2519 preq->relay_count = htonl (relay_count);
2520
2521 char *p = (char *) &preq[1];
2522 GNUNET_memcpy (p, name, name_size);
2523 p += name_size;
2524 GNUNET_memcpy (p, password, password_size);
2525 p += password_size;
2526 GNUNET_memcpy (p, relays, relay_size);
2527
2528 struct ZoneAddPlaceHandle * add_plc = GNUNET_malloc (sizeof (*add_plc));
2529 add_plc->result_cb = result_cb;
2530 add_plc->result_cls = result_cls;
2531
2532 preq->op_id = GNUNET_htonll (GNUNET_OP_add (app->op,
2533 op_recv_zone_add_place_result,
2534 add_plc, NULL));
2535
2536 GNUNET_MQ_send (app->mq, env);
2537 return GNUNET_OK;
2538}
2539
2540
2541static void
2542op_recv_zone_add_nym_result (void *cls, int64_t result,
2543 const void *err_msg, uint16_t err_msg_size)
2544{
2545 LOG (GNUNET_ERROR_TYPE_DEBUG,
2546 "Received zone add nym result: %" PRId64 ".\n", result);
2547
2548 struct ZoneAddNymHandle *add_nym = cls;
2549 if (NULL != add_nym->result_cb)
2550 add_nym->result_cb (add_nym->result_cls, result, err_msg, err_msg_size);
2551
2552 GNUNET_free (add_nym);
2553}
2554
2555
2556/**
2557 * Add nym to the GNS zone of @e ego.
2558 *
2559 * @param cfg
2560 * Configuration.
2561 * @param ego
2562 * Ego.
2563 * @param name
2564 * The name for the PKEY record to put in the zone.
2565 * @param nym_pub_key
2566 * Public key of nym to add.
2567 * @param expiration_time
2568 * Expiration time of the record, use 0 to remove the record.
2569 * @param result_cb
2570 * Function called with the result of the operation.
2571 * @param result_cls
2572 * Closure for @a result_cb
2573 *
2574 * @return #GNUNET_OK if the request was sent,
2575 * #GNUNET_SYSERR on error, e.g. the name is too long.
2576 */
2577int
2578GNUNET_SOCIAL_zone_add_nym (const struct GNUNET_SOCIAL_App *app,
2579 const struct GNUNET_SOCIAL_Ego *ego,
2580 const char *name,
2581 const struct GNUNET_CRYPTO_EcdsaPublicKey *nym_pub_key,
2582 struct GNUNET_TIME_Absolute expiration_time,
2583 GNUNET_ResultCallback result_cb,
2584 void *result_cls)
2585{
2586 struct ZoneAddNymRequest *nreq;
2587
2588 size_t name_size = strlen (name) + 1;
2589 if (GNUNET_MAX_MESSAGE_SIZE < sizeof (*nreq) + name_size)
2590 return GNUNET_SYSERR;
2591
2592 struct GNUNET_MQ_Envelope *
2593 env = GNUNET_MQ_msg_extra (nreq, name_size,
2594 GNUNET_MESSAGE_TYPE_SOCIAL_ZONE_ADD_NYM);
2595 nreq->expiration_time = GNUNET_htonll (expiration_time.abs_value_us);
2596 nreq->ego_pub_key = ego->pub_key;
2597 nreq->nym_pub_key = *nym_pub_key;
2598 GNUNET_memcpy (&nreq[1], name, name_size);
2599
2600 struct ZoneAddNymHandle *add_nym = GNUNET_malloc (sizeof (*add_nym));
2601 add_nym->result_cb = result_cb;
2602 add_nym->result_cls = result_cls;
2603
2604 nreq->op_id = GNUNET_htonll (GNUNET_OP_add (app->op,
2605 op_recv_zone_add_nym_result,
2606 add_nym, NULL));
2607
2608 GNUNET_MQ_send (app->mq, env);
2609 return GNUNET_OK;
2610}
2611
2612
2613/*** APP ***/
2614
2615
2616static void
2617app_connect (struct GNUNET_SOCIAL_App *app);
2618
2619
2620static void
2621app_reconnect (void *cls)
2622{
2623 app_connect (cls);
2624}
2625
2626
2627/**
2628 * App client disconnected from service.
2629 *
2630 * Reconnect after backoff period.
2631 */
2632static void
2633app_disconnected (void *cls, enum GNUNET_MQ_Error error)
2634{
2635 struct GNUNET_SOCIAL_App *app = cls;
2636
2637 LOG (GNUNET_ERROR_TYPE_DEBUG,
2638 "App client disconnected (%d), re-connecting\n",
2639 (int) error);
2640 if (NULL != app->mq)
2641 {
2642 GNUNET_MQ_destroy (app->mq);
2643 app->mq = NULL;
2644 }
2645
2646 app->reconnect_task = GNUNET_SCHEDULER_add_delayed (app->reconnect_delay,
2647 app_reconnect,
2648 app);
2649 app->reconnect_delay = GNUNET_TIME_STD_BACKOFF (app->reconnect_delay);
2650}
2651
2652
2653static void
2654app_connect (struct GNUNET_SOCIAL_App *app)
2655{
2656 struct GNUNET_MQ_MessageHandler handlers[] = {
2657 GNUNET_MQ_hd_var_size (app_ego,
2658 GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO,
2659 struct AppEgoMessage,
2660 app),
2661 GNUNET_MQ_hd_fixed_size (app_ego_end,
2662 GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO_END,
2663 struct GNUNET_MessageHeader,
2664 app),
2665 GNUNET_MQ_hd_var_size (app_place,
2666 GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE,
2667 struct AppPlaceMessage,
2668 app),
2669 GNUNET_MQ_hd_fixed_size (app_place_end,
2670 GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE_END,
2671 struct GNUNET_MessageHeader,
2672 app),
2673 GNUNET_MQ_hd_var_size (app_result,
2674 GNUNET_MESSAGE_TYPE_PSYC_RESULT_CODE,
2675 struct GNUNET_OperationResultMessage,
2676 app),
2677 GNUNET_MQ_handler_end ()
2678 };
2679
2680 app->mq = GNUNET_CLIENT_connect (app->cfg, "social",
2681 handlers, app_disconnected, app);
2682 GNUNET_assert (NULL != app->mq);
2683 GNUNET_MQ_send_copy (app->mq, app->connect_env);
2684}
2685
2686
2687/**
2688 * Connect application to the social service.
2689 *
2690 * The @host_place_cb and @guest_place_cb functions are
2691 * initially called for each entered places,
2692 * then later each time a new place is entered with the current application ID.
2693 *
2694 * @param cfg
2695 * Configuration.
2696 * @param id
2697 * Application ID.
2698 * @param ego_cb
2699 * Function to notify about an available ego.
2700 * @param host_cb
2701 * Function to notify about a place entered as host.
2702 * @param guest_cb
2703 * Function to notify about a place entered as guest.
2704 * @param cls
2705 * Closure for the callbacks.
2706 *
2707 * @return Handle that can be used to stop listening.
2708 */
2709struct GNUNET_SOCIAL_App *
2710GNUNET_SOCIAL_app_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
2711 const char *id,
2712 GNUNET_SOCIAL_AppEgoCallback ego_cb,
2713 GNUNET_SOCIAL_AppHostPlaceCallback host_cb,
2714 GNUNET_SOCIAL_AppGuestPlaceCallback guest_cb,
2715 GNUNET_SOCIAL_AppConnectedCallback connected_cb,
2716 void *cls)
2717{
2718 uint16_t app_id_size = strnlen (id, GNUNET_SOCIAL_APP_MAX_ID_SIZE);
2719 if (GNUNET_SOCIAL_APP_MAX_ID_SIZE == app_id_size)
2720 return NULL;
2721 app_id_size++;
2722
2723 struct GNUNET_SOCIAL_App *app = GNUNET_malloc (sizeof *app);
2724 app->cfg = cfg;
2725 app->ego_cb = ego_cb;
2726 app->host_cb = host_cb;
2727 app->guest_cb = guest_cb;
2728 app->connected_cb = connected_cb;
2729 app->cb_cls = cls;
2730 app->egos = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
2731 app->op = GNUNET_OP_create ();
2732 app->id = GNUNET_malloc (app_id_size);
2733 GNUNET_memcpy (app->id, id, app_id_size);
2734
2735 struct AppConnectRequest *creq;
2736 app->connect_env = GNUNET_MQ_msg_extra (creq, app_id_size,
2737 GNUNET_MESSAGE_TYPE_SOCIAL_APP_CONNECT);
2738 GNUNET_memcpy (&creq[1], app->id, app_id_size);
2739
2740 app_connect (app);
2741 return app;
2742}
2743
2744
2745static void
2746app_cleanup (struct GNUNET_SOCIAL_App *app)
2747{
2748 if (NULL != app->mq)
2749 {
2750 GNUNET_MQ_destroy (app->mq);
2751 app->mq = NULL;
2752 }
2753 if (NULL != app->disconnect_cb)
2754 {
2755 app->disconnect_cb (app->disconnect_cls);
2756 app->disconnect_cb = NULL;
2757 }
2758 GNUNET_free (app);
2759}
2760
2761/**
2762 * Disconnect application.
2763 *
2764 * @param app
2765 * Application handle.
2766 * @param disconnect_cb
2767 * Disconnect callback.
2768 * @param disconnect_cls
2769 * Disconnect closure.
2770 */
2771void
2772GNUNET_SOCIAL_app_disconnect (struct GNUNET_SOCIAL_App *app,
2773 GNUNET_ContinuationCallback disconnect_cb,
2774 void *disconnect_cls)
2775{
2776 if (NULL == app) return;
2777
2778 app->disconnect_cb = disconnect_cb;
2779 app->disconnect_cls = disconnect_cls;
2780
2781 if (NULL != app->mq)
2782 {
2783 struct GNUNET_MQ_Envelope *env = GNUNET_MQ_get_last_envelope (app->mq);
2784 if (NULL != env)
2785 {
2786 GNUNET_MQ_notify_sent (env, (GNUNET_SCHEDULER_TaskCallback) app_cleanup, app);
2787 }
2788 else
2789 {
2790 app_cleanup (app);
2791 }
2792 }
2793 else
2794 {
2795 app_cleanup (app);
2796 }
2797}
2798
2799
2800/**
2801 * Detach application from a place.
2802 *
2803 * Removes the place from the entered places list for this application.
2804 * Note: this does not disconnect from the place.
2805 *
2806 * @see GNUNET_SOCIAL_host_disconnect() and GNUNET_SOCIAL_guest_disconnect()
2807 *
2808 * @param app
2809 * Application.
2810 * @param plc
2811 * Place.
2812 */
2813void
2814GNUNET_SOCIAL_app_detach (struct GNUNET_SOCIAL_App *app,
2815 struct GNUNET_SOCIAL_Place *plc)
2816{
2817 struct AppDetachRequest *dreq;
2818 struct GNUNET_MQ_Envelope *
2819 env = GNUNET_MQ_msg (dreq, GNUNET_MESSAGE_TYPE_SOCIAL_APP_DETACH);
2820 dreq->place_pub_key = plc->pub_key;
2821 dreq->ego_pub_key = plc->ego_pub_key;
2822
2823 GNUNET_MQ_send (app->mq, env);
2824}
2825
2826
2827/* end of social_api.c */
diff --git a/src/social/test_social.c b/src/social/test_social.c
deleted file mode 100644
index feac3c591..000000000
--- a/src/social/test_social.c
+++ /dev/null
@@ -1,1449 +0,0 @@
1/*
2 * This file is part of GNUnet
3 * Copyright (C) 2013 GNUnet e.V.
4 *
5 * GNUnet is free software: you can redistribute it and/or modify it
6 * under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License,
8 * or (at your option) any later version.
9 *
10 * GNUnet is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20/**
21 * @file social/test_social.c
22 * @brief Tests for the Social API.
23 * @author Gabor X Toth
24 */
25
26#include <inttypes.h>
27
28#include "platform.h"
29#include "gnunet_crypto_lib.h"
30#include "gnunet_common.h"
31#include "gnunet_util_lib.h"
32#include "gnunet_testing_lib.h"
33#include "gnunet_psyc_util_lib.h"
34#include "gnunet_social_service.h"
35#include "gnunet_identity_service.h"
36
37#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
38
39#define DATA2ARG(data) data, sizeof (data)
40
41/**
42 * Return value from 'main'.
43 */
44int res;
45
46struct GNUNET_SOCIAL_App *app;
47const char *app_id = "test";
48
49/**
50 * Handle for task for timeout termination.
51 */
52struct GNUNET_SCHEDULER_Task *end_badly_task;
53
54const struct GNUNET_CONFIGURATION_Handle *cfg;
55
56struct GNUNET_PeerIdentity this_peer;
57
58struct GNUNET_IDENTITY_Handle *id;
59
60const struct GNUNET_IDENTITY_Ego *identity_host_ego;
61const struct GNUNET_IDENTITY_Ego *identity_guest_ego;
62
63const struct GNUNET_SOCIAL_Ego *host_ego;
64const struct GNUNET_SOCIAL_Ego *guest_ego;
65
66const char *host_name = "Host One";
67const char *guest_name = "Guest One";
68
69struct GNUNET_CRYPTO_EddsaPrivateKey *place_key;
70struct GNUNET_CRYPTO_EcdsaPrivateKey *guest_key;
71
72struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
73struct GNUNET_HashCode place_pub_hash;
74
75const struct GNUNET_CRYPTO_EcdsaPublicKey *guest_pub_key;
76const struct GNUNET_CRYPTO_EcdsaPublicKey *host_pub_key;
77
78struct GNUNET_PSYC_Slicer *host_slicer;
79struct GNUNET_PSYC_Slicer *guest_slicer;
80
81struct GNUNET_SOCIAL_Host *hst;
82struct GNUNET_SOCIAL_Guest *gst;
83
84struct GNUNET_SOCIAL_Place *hst_plc;
85struct GNUNET_SOCIAL_Place *gst_plc;
86
87struct GNUNET_SOCIAL_Nym *nym_eject;
88
89struct GuestEnterMessage
90{
91 struct GNUNET_PSYC_Message *msg;
92 const char *method_name;
93 struct GNUNET_PSYC_Environment *env;
94 void *data;
95 uint16_t data_size;
96} guest_enter_msg;
97
98struct TransmitClosure
99{
100 struct GNUNET_SOCIAL_Announcement *host_ann;
101 struct GNUNET_SOCIAL_TalkRequest *guest_talk;
102 struct GNUNET_PSYC_Environment *env;
103 char *data[16];
104 uint8_t data_delay[16];
105 uint8_t data_count;
106 uint8_t paused;
107 uint8_t n;
108} tmit;
109
110struct ResultClosure {
111 uint32_t n;
112} mod_foo_bar_rcls;
113
114uint8_t join_req_count;
115struct GNUNET_PSYC_Message *join_resp;
116
117uint32_t counter;
118
119uint8_t is_guest_nym_added = GNUNET_NO;
120uint8_t is_host_reconnected = GNUNET_NO;
121uint8_t is_guest_reconnected = GNUNET_NO;
122
123enum
124{
125 TEST_NONE = 0,
126 TEST_IDENTITIES_CREATE = 1,
127 TEST_HOST_ENTER = 2,
128 TEST_GUEST_ENTER = 3,
129 TEST_HOST_ANSWER_DOOR_REFUSE = 4,
130 TEST_GUEST_RECV_ENTRY_DCSN_REFUSE = 5,
131 TEST_HOST_ANSWER_DOOR_ADMIT = 6,
132 TEST_GUEST_RECV_ENTRY_DCSN_ADMIT = 7,
133 TEST_HOST_ANNOUNCE = 8,
134 TEST_HOST_ANNOUNCE_END = 9,
135 TEST_GUEST_TALK = 10,
136 TEST_HOST_ANNOUNCE2 = 11,
137 TEST_HOST_ANNOUNCE2_END = 12,
138 TEST_GUEST_HISTORY_REPLAY = 13,
139 TEST_GUEST_HISTORY_REPLAY_LATEST = 14,
140 TEST_GUEST_LOOK_AT = 15,
141 TEST_GUEST_LOOK_FOR = 16,
142 TEST_GUEST_LEAVE = 17,
143 TEST_ZONE_ADD_PLACE = 18,
144 TEST_GUEST_ENTER_BY_NAME = 19,
145 TEST_RECONNECT = 20,
146 TEST_GUEST_LEAVE2 = 21,
147 TEST_HOST_LEAVE = 22,
148} test;
149
150
151static void
152schedule_guest_leave (void *cls);
153
154
155static void
156host_answer_door (void *cls,
157 struct GNUNET_SOCIAL_Nym *nym,
158 const char *method_name,
159 struct GNUNET_PSYC_Environment *env,
160 const void *data,
161 size_t data_size);
162
163static void
164host_enter ();
165
166static void
167guest_init ();
168
169static void
170guest_enter ();
171
172static void
173guest_enter_by_name ();
174
175static void
176guest_talk ();
177
178static void
179host_announce2 ();
180
181
182/**
183 * Terminate the test case (failure).
184 *
185 * @param cls NULL
186 */
187static void
188end_badly (void *cls)
189{
190 end_badly_task = NULL;
191 GNUNET_SCHEDULER_shutdown ();
192 res = 2;
193 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
194 "Test FAILED.\n");
195}
196
197
198/**
199 * Terminate the test case (failure).
200 *
201 * @param cls NULL
202 */
203static void
204end_shutdown (void *cls)
205{
206 if (NULL != id)
207 {
208 GNUNET_IDENTITY_disconnect (id);
209 id = NULL;
210 }
211
212 if (NULL != guest_slicer)
213 {
214 GNUNET_PSYC_slicer_destroy (guest_slicer);
215 guest_slicer = NULL;
216 }
217
218 if (NULL != host_slicer)
219 {
220 GNUNET_PSYC_slicer_destroy (host_slicer);
221 host_slicer = NULL;
222 }
223 if (NULL != end_badly_task)
224 {
225 GNUNET_SCHEDULER_cancel (end_badly_task);
226 end_badly_task = NULL;
227 }
228 if (NULL != gst)
229 {
230 GNUNET_SOCIAL_guest_leave (gst, NULL, NULL, NULL);
231 gst = NULL;
232 gst_plc = NULL;
233 }
234 if (NULL != hst)
235 {
236 GNUNET_SOCIAL_host_leave (hst, NULL, NULL, NULL);
237 hst = NULL;
238 hst_plc = NULL;
239 }
240 GNUNET_SOCIAL_app_disconnect (app, NULL, NULL);
241}
242
243
244/**
245 * Terminate the test case (success).
246 *
247 * @param cls NULL
248 */
249static void
250end_normally (void *cls)
251{
252 GNUNET_SCHEDULER_shutdown ();
253 res = 0;
254 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, "Test PASSED.\n");
255}
256
257
258/**
259 * Finish the test case (successfully).
260 */
261static void
262end ()
263{
264 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
265 "Test #%u: Ending tests.\n", test);
266
267 if (end_badly_task != NULL)
268 {
269 GNUNET_SCHEDULER_cancel (end_badly_task);
270 end_badly_task = NULL;
271 }
272 GNUNET_SCHEDULER_add_now (&end_normally, NULL);
273}
274
275
276static void
277transmit_resume (void *cls)
278{
279 struct TransmitClosure *tmit = cls;
280
281 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
282 "Test #%u: Transmission resumed.\n", test);
283 if (NULL != tmit->host_ann)
284 GNUNET_SOCIAL_host_announce_resume (tmit->host_ann);
285 else
286 GNUNET_SOCIAL_guest_talk_resume (tmit->guest_talk);
287}
288
289
290static int
291notify_data (void *cls, uint16_t *data_size, void *data)
292{
293 struct TransmitClosure *tmit = cls;
294 if (NULL != tmit->env)
295 {
296 GNUNET_PSYC_env_destroy (tmit->env);
297 tmit->env = NULL;
298 }
299 if (0 == tmit->data_count)
300 {
301 *data_size = 0;
302 return GNUNET_YES;
303 }
304
305 uint16_t size = strlen (tmit->data[tmit->n]);
306 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
307 "Test #%u: Transmit notify data: %u bytes available, "
308 "processing fragment %u/%u (size %u).\n",
309 test, *data_size, tmit->n + 1, tmit->data_count, size);
310 if (*data_size < size)
311 {
312 *data_size = 0;
313 GNUNET_assert (0);
314 return GNUNET_SYSERR;
315 }
316
317 if (GNUNET_YES != tmit->paused && 0 < tmit->data_delay[tmit->n])
318 {
319 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
320 "Test #%u: Transmission paused.\n", test);
321 tmit->paused = GNUNET_YES;
322 GNUNET_SCHEDULER_add_delayed (
323 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
324 tmit->data_delay[tmit->n]),
325 &transmit_resume, tmit);
326 *data_size = 0;
327 return GNUNET_NO;
328 }
329 tmit->paused = GNUNET_NO;
330
331 *data_size = size;
332 GNUNET_memcpy (data, tmit->data[tmit->n], size);
333
334 return ++tmit->n < tmit->data_count ? GNUNET_NO : GNUNET_YES;
335}
336
337
338static void
339host_left ()
340{
341 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
342 "Test #%u: The host has left the place.\n", test);
343 end ();
344}
345
346
347static void
348schedule_host_leave (void *cls)
349{
350 test = TEST_HOST_LEAVE;
351 GNUNET_SOCIAL_host_leave (hst, NULL, &host_left, NULL);
352 hst = NULL;
353 hst_plc = NULL;
354}
355
356
357static void
358host_farewell2 (void *cls,
359 const struct GNUNET_SOCIAL_Nym *nym,
360 struct GNUNET_PSYC_Environment *env)
361{
362 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
363 "Nym left the place again.\n");
364 GNUNET_SCHEDULER_add_now (&schedule_host_leave, NULL);
365}
366
367
368static void
369host_reconnected (void *cls, int result,
370 const struct GNUNET_CRYPTO_EddsaPublicKey *home_pub_key,
371 uint64_t max_message_id)
372{
373 place_pub_key = *home_pub_key;
374 GNUNET_CRYPTO_hash (&place_pub_key, sizeof (place_pub_key), &place_pub_hash);
375 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
376 "Test #%u: Host reconnected to place %s\n",
377 test, GNUNET_h2s (&place_pub_hash));
378
379 is_host_reconnected = GNUNET_YES;
380 if (GNUNET_YES == is_guest_reconnected)
381 {
382 GNUNET_assert (NULL != gst);
383 GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL);
384 }
385}
386
387
388static void
389guest_reconnected (void *cls, int result,
390 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
391 uint64_t max_message_id)
392{
393 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
394 "Test #%u: Guest reconnected to place: %d\n",
395 test, result);
396 GNUNET_assert (0 <= result);
397
398 is_guest_reconnected = GNUNET_YES;
399 if (GNUNET_YES == is_host_reconnected)
400 {
401 GNUNET_assert (NULL != gst);
402 GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL);
403 }
404}
405
406
407static void
408app_connected (void *cls)
409{
410 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
411 "Test #%u: App connected: %p\n", test, cls);
412}
413
414
415static void
416app_recv_host (void *cls,
417 struct GNUNET_SOCIAL_HostConnection *hconn,
418 struct GNUNET_SOCIAL_Ego *ego,
419 const struct GNUNET_CRYPTO_EddsaPublicKey *host_pub_key,
420 enum GNUNET_SOCIAL_AppPlaceState place_state)
421{
422 struct GNUNET_HashCode host_pub_hash;
423
424 GNUNET_CRYPTO_hash (host_pub_key,
425 sizeof (*host_pub_key),
426 &host_pub_hash);
427
428 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
429 "Test #%u: Got app host place notification: %s\n",
430 test,
431 GNUNET_h2s (&host_pub_hash));
432
433 if (test == TEST_RECONNECT)
434 {
435 if (0 == memcmp (&place_pub_key, host_pub_key, sizeof (*host_pub_key)))
436 {
437 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
438 "Test #%u: Reconnecting to host place: %s\n",
439 test, GNUNET_h2s (&host_pub_hash));
440 hst = GNUNET_SOCIAL_host_enter_reconnect (hconn, host_slicer,
441 &host_reconnected,
442 &host_answer_door,
443 &host_farewell2,
444 NULL);
445 }
446 }
447}
448
449
450static void
451app_recv_guest (void *cls,
452 struct GNUNET_SOCIAL_GuestConnection *gconn,
453 struct GNUNET_SOCIAL_Ego *ego,
454 const struct GNUNET_CRYPTO_EddsaPublicKey *guest_pub_key,
455 enum GNUNET_SOCIAL_AppPlaceState place_state)
456{
457 struct GNUNET_HashCode guest_pub_hash;
458
459 GNUNET_CRYPTO_hash (guest_pub_key,
460 sizeof (*guest_pub_key),
461 &guest_pub_hash);
462
463 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
464 "Test #%u: Got app guest place notification: %s\n",
465 test, GNUNET_h2s (&guest_pub_hash));
466
467 if (test == TEST_RECONNECT)
468 {
469 if (0 == memcmp (&place_pub_key,
470 guest_pub_key,
471 sizeof (*guest_pub_key)))
472 {
473 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
474 "Test #%u: Reconnecting to guest place: %s\n",
475 test, GNUNET_h2s (&guest_pub_hash));
476 gst = GNUNET_SOCIAL_guest_enter_reconnect (gconn,
477 GNUNET_PSYC_SLAVE_JOIN_NONE,
478 guest_slicer,
479 &guest_reconnected,
480 NULL);
481 GNUNET_assert (NULL != gst);
482 }
483 }
484}
485
486
487static void
488enter_if_ready ()
489{
490 if (NULL == host_ego || NULL == guest_ego)
491 {
492 return;
493 }
494 host_enter ();
495 guest_init ();
496}
497
498
499static void
500app_recv_ego (void *cls,
501 struct GNUNET_SOCIAL_Ego *ego,
502 const struct GNUNET_CRYPTO_EcdsaPublicKey *ego_pub_key,
503 const char *name)
504{
505 char *ego_pub_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (ego_pub_key);
506 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
507 "Test #%u: Got app ego notification: %p %s %s\n",
508 test, ego, name, ego_pub_str);
509 GNUNET_free (ego_pub_str);
510
511 if (NULL != strstr (name, host_name))
512 {
513 host_ego = ego;
514 host_pub_key = ego_pub_key;
515 if (TEST_IDENTITIES_CREATE == test)
516 {
517 enter_if_ready ();
518 }
519 else
520 {
521 GNUNET_assert (TEST_RECONNECT == test);
522 }
523 }
524 else if (NULL != strstr (name, guest_name))
525 {
526 guest_ego = ego;
527 guest_pub_key = ego_pub_key;
528 if (TEST_IDENTITIES_CREATE == test)
529 {
530 enter_if_ready ();
531 }
532 else
533 {
534 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
535 "test = %d\n",
536 test);
537 GNUNET_assert (TEST_RECONNECT == test);
538 }
539 }
540}
541
542
543static void
544schedule_reconnect (void *cls)
545{
546 test = TEST_RECONNECT;
547 GNUNET_SOCIAL_host_disconnect (hst, NULL, NULL);
548 GNUNET_SOCIAL_guest_disconnect (gst, NULL, NULL);
549 hst = NULL;
550 gst = NULL;
551
552 GNUNET_SOCIAL_app_disconnect (app, NULL, NULL);
553 app = GNUNET_SOCIAL_app_connect (cfg, app_id,
554 &app_recv_ego,
555 &app_recv_host,
556 &app_recv_guest,
557 &app_connected,
558 NULL);
559}
560
561
562static void
563host_recv_zone_add_place_result (void *cls, int64_t result,
564 const void *data, uint16_t data_size)
565{
566 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
567 "Test #%u: Zone add place result: %" PRId64 " (%.*s).\n",
568 test, result, data_size, (const char *) data);
569 GNUNET_assert (GNUNET_YES == result);
570
571 GNUNET_assert (GNUNET_YES == is_guest_nym_added);
572 guest_enter_by_name ();
573}
574
575
576static void
577zone_add_place ()
578{
579 test = TEST_ZONE_ADD_PLACE;
580 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
581 "Test #%u: Adding place to zone.\n", test);
582
583 GNUNET_SOCIAL_zone_add_place (app, host_ego, "home", "let.me*in!",
584 &place_pub_key, &this_peer, 1, &this_peer,
585 GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_MINUTES),
586 host_recv_zone_add_place_result, app);
587}
588
589
590static void
591host_farewell (void *cls,
592 const struct GNUNET_SOCIAL_Nym *nym,
593 struct GNUNET_PSYC_Environment *env)
594{
595 const struct GNUNET_CRYPTO_EcdsaPublicKey *
596 nym_key = GNUNET_SOCIAL_nym_get_pub_key (nym);
597
598 char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (nym_key);
599 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
600 "Test #%u: Farewell: nym %s (%s) has left the place.\n",
601 test, GNUNET_h2s (GNUNET_SOCIAL_nym_get_pub_key_hash (nym)), str);
602 GNUNET_free (str);
603 GNUNET_assert (1 == GNUNET_PSYC_env_get_count (env));
604 if (0 != memcmp (guest_pub_key, nym_key, sizeof (*nym_key)))
605 {
606 str = GNUNET_CRYPTO_ecdsa_public_key_to_string (guest_pub_key);
607 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
608 "Test #%u: Farewell: nym does not match guest: %s\n",
609 test, str);
610 GNUNET_free (str);
611 GNUNET_assert (0);
612 }
613 zone_add_place ();
614}
615
616
617static void
618guest_left (void *cls)
619{
620 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
621 "Test #%u: The guest has left the place.\n", test);
622}
623
624
625static void
626guest_leave ()
627{
628 if (test < TEST_RECONNECT)
629 test = TEST_GUEST_LEAVE;
630 else
631 test = TEST_GUEST_LEAVE2;
632
633 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
634 GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET,
635 "_notice_place_leave", DATA2ARG ("Leaving."));
636 GNUNET_SOCIAL_guest_leave (gst, env, &guest_left, NULL);
637 GNUNET_PSYC_env_destroy (env);
638 gst = NULL;
639 gst_plc = NULL;
640}
641
642
643static void
644schedule_guest_leave (void *cls)
645{
646 guest_leave ();
647}
648
649
650static void
651guest_look_for_result (void *cls,
652 int64_t result_code,
653 const void *data,
654 uint16_t data_size)
655{
656 struct ResultClosure *rcls = cls;
657 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
658 "Test #%u: guest_look_for_result: %" PRId64 "\n",
659 test, result_code);
660 GNUNET_assert (GNUNET_OK == result_code);
661 GNUNET_assert (6 == rcls->n);
662 GNUNET_free (rcls);
663 GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL);
664}
665
666
667static void
668guest_look_for_var (void *cls,
669 const struct GNUNET_MessageHeader *mod,
670 const char *name,
671 const void *value,
672 uint32_t value_size,
673 uint32_t full_value_size)
674{
675 struct ResultClosure *rcls = cls;
676 rcls->n++;
677 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
678 "Test #%u: guest_look_for_var: %s\n%.*s\n",
679 test, name, value_size, (const char *) value);
680}
681
682
683static void
684guest_look_for ()
685{
686 test = TEST_GUEST_LOOK_FOR;
687 struct ResultClosure *rcls = GNUNET_malloc (sizeof (*rcls));
688 GNUNET_SOCIAL_place_look_for (gst_plc, "_foo", guest_look_for_var, guest_look_for_result, rcls);
689}
690
691
692static void
693guest_look_at_result (void *cls, int64_t result_code,
694 const void *data, uint16_t data_size)
695{
696 struct ResultClosure *rcls = cls;
697
698 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
699 "Test #%u: guest_look_at_result: %" PRId64 "\n",
700 test, result_code);
701 GNUNET_assert (GNUNET_OK == result_code);
702 GNUNET_assert (1 == rcls->n);
703 GNUNET_free (rcls);
704 guest_look_for ();
705}
706
707
708static void
709guest_look_at_var (void *cls,
710 const struct GNUNET_MessageHeader *mod,
711 const char *name,
712 const void *value,
713 uint32_t value_size,
714 uint32_t full_value_size)
715{
716 struct ResultClosure *rcls = cls;
717 rcls->n++;
718
719 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
720 "Test #%u: guest_look_at_var: %s\n%.*s\n",
721 test ,name, value_size, (const char *) value);
722}
723
724
725static void
726guest_look_at ()
727{
728 test = TEST_GUEST_LOOK_AT;
729 struct ResultClosure *rcls = GNUNET_malloc (sizeof (*rcls));
730 GNUNET_SOCIAL_place_look_at (gst_plc, "_foo_bar", guest_look_at_var, guest_look_at_result, rcls);
731}
732
733
734static void
735guest_recv_history_replay_latest_result (void *cls, int64_t result,
736 const void *data, uint16_t data_size)
737{
738 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
739 "Test #%u: Guest received latest history replay result "
740 "(%" PRIu32 " messages, %" PRId64 " fragments):\n"
741 "%.*s\n",
742 test, counter, result, data_size, (const char *) data);
743 //GNUNET_assert (2 == counter); /* message count */
744 //GNUNET_assert (7 == result); /* fragment count */
745
746 guest_look_at ();
747}
748
749
750static void
751guest_history_replay_latest ()
752{
753 test = TEST_GUEST_HISTORY_REPLAY_LATEST;
754 counter = 0;
755 GNUNET_SOCIAL_place_history_replay_latest (gst_plc, 3, "",
756 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
757 guest_slicer,
758 &guest_recv_history_replay_latest_result,
759 NULL);
760}
761
762
763static void
764guest_recv_history_replay_result (void *cls, int64_t result,
765 const void *data, uint16_t data_size)
766{
767 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
768 "Test #%u: Guest received history replay result: %" PRId64 "\n"
769 "%.*s\n",
770 test, result, data_size, (const char *) data);
771// GNUNET_assert (2 == counter); /* message count */
772// GNUNET_assert (7 == result); /* fragment count */
773
774 guest_history_replay_latest ();
775}
776
777
778static void
779guest_history_replay ()
780{
781 test = TEST_GUEST_HISTORY_REPLAY;
782 counter = 0;
783 GNUNET_SOCIAL_place_history_replay (gst_plc, 1, 3, "",
784 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
785 guest_slicer,
786 &guest_recv_history_replay_result,
787 NULL);
788}
789
790
791static void
792guest_recv_method (void *cls,
793 const struct GNUNET_PSYC_MessageHeader *msg,
794 const struct GNUNET_PSYC_MessageMethod *meth,
795 uint64_t message_id,
796 const char *method_name)
797{
798 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
799 "Test #%u: Guest received method for message ID %" PRIu64 ":\n"
800 "%s (flags: %x)\n",
801 test, message_id, method_name, ntohl (meth->flags));
802 /** @todo FIXME: check message */
803}
804
805
806static void
807guest_recv_modifier (void *cls,
808 const struct GNUNET_PSYC_MessageHeader *msg,
809 const struct GNUNET_MessageHeader *pmsg,
810 uint64_t message_id,
811 enum GNUNET_PSYC_Operator oper,
812 const char *name,
813 const void *value,
814 uint16_t value_size,
815 uint16_t full_value_size)
816{
817 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
818 "Test #%u: Guest received modifier for message ID %" PRIu64 ":\n"
819 "%c%s: %.*s (size: %u)\n",
820 test, message_id, oper, name, value_size, (const char *) value, value_size);
821 /** @todo FIXME: check modifier */
822}
823
824static void
825guest_recv_mod_foo_bar (void *cls,
826 const struct GNUNET_PSYC_MessageHeader *msg,
827 const struct GNUNET_MessageHeader *pmsg,
828 uint64_t message_id,
829 enum GNUNET_PSYC_Operator oper,
830 const char *name,
831 const void *value,
832 uint16_t value_size,
833 uint16_t full_value_size)
834{
835 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
836 "Test #%u: Guest received modifier matching _foo_bar for message ID %" PRIu64 ":\n"
837 "%c%s: %.*s (size: %u)\n",
838 test, message_id, oper, name, value_size, (const char *) value, value_size);
839 struct ResultClosure *rc = cls;
840 rc->n++;
841 /** @todo FIXME: check modifier */
842}
843
844
845static void
846guest_recv_data (void *cls,
847 const struct GNUNET_PSYC_MessageHeader *msg,
848 const struct GNUNET_MessageHeader *pmsg,
849 uint64_t message_id,
850 const void *data,
851 uint16_t data_size)
852{
853 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
854 "Test #%u: Guest received data for message ID %" PRIu64 ":\n"
855 "%.*s\n",
856 test, message_id, data_size, (const char *) data);
857 /** @todo FIXME: check data */
858}
859
860
861static void
862guest_recv_eom (void *cls,
863 const struct GNUNET_PSYC_MessageHeader *msg,
864 const struct GNUNET_MessageHeader *pmsg,
865 uint64_t message_id,
866 uint8_t is_cancelled)
867{
868 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
869 "Test #%u: Guest received end of message ID %" PRIu64
870 ", cancelled: %u\n",
871 test, message_id, is_cancelled);
872
873 switch (test)
874 {
875 case TEST_HOST_ANNOUNCE:
876 test = TEST_HOST_ANNOUNCE_END;
877 break;
878
879 case TEST_HOST_ANNOUNCE_END:
880 guest_talk ();
881 break;
882
883 case TEST_HOST_ANNOUNCE2:
884 test = TEST_HOST_ANNOUNCE2_END;
885 break;
886
887 case TEST_HOST_ANNOUNCE2_END:
888 guest_history_replay ();
889 break;
890
891 case TEST_GUEST_HISTORY_REPLAY:
892 case TEST_GUEST_HISTORY_REPLAY_LATEST:
893 counter++;
894 break;
895
896 default:
897 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "invalid test: %d\n", test);
898 GNUNET_assert (0);
899 }
900}
901
902
903static void
904host_recv_method (void *cls,
905 const struct GNUNET_PSYC_MessageHeader *msg,
906 const struct GNUNET_PSYC_MessageMethod *meth,
907 uint64_t message_id,
908 const char *method_name)
909{
910 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
911 "Test #%u: Host received method for message ID %" PRIu64 ":\n"
912 "%s\n",
913 test, message_id, method_name);
914 /** @todo FIXME: check message */
915}
916
917
918static void
919host_recv_modifier (void *cls,
920 const struct GNUNET_PSYC_MessageHeader *msg,
921 const struct GNUNET_MessageHeader *pmsg,
922 uint64_t message_id,
923 enum GNUNET_PSYC_Operator oper,
924 const char *name,
925 const void *value,
926 uint16_t value_size,
927 uint16_t full_value_size)
928{
929 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
930 "Test #%u: Host received modifier for message ID %" PRIu64 ":\n"
931 "%c%s: %.*s\n",
932 test, message_id, oper, name, value_size, (const char *) value);
933}
934
935
936static void
937host_recv_data (void *cls,
938 const struct GNUNET_PSYC_MessageHeader *msg,
939 const struct GNUNET_MessageHeader *pmsg,
940 uint64_t message_id,
941 const void *data,
942 uint16_t data_size)
943{
944 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
945 "Test #%u: Host received data for message ID %" PRIu64 ":\n"
946 "%.*s\n",
947 test, message_id, data_size, (const char *) data);
948}
949
950
951static void
952host_recv_eom (void *cls,
953 const struct GNUNET_PSYC_MessageHeader *msg,
954 const struct GNUNET_MessageHeader *pmsg,
955 uint64_t message_id,
956 uint8_t is_cancelled)
957{
958 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
959 "Test #%u: Host received end of message ID %" PRIu64
960 ", cancelled: %u\n",
961 test, message_id, is_cancelled);
962
963 switch (test)
964 {
965 case TEST_HOST_ANNOUNCE:
966 test = TEST_HOST_ANNOUNCE_END;
967 break;
968
969 case TEST_HOST_ANNOUNCE_END:
970 guest_talk ();
971 break;
972
973 case TEST_HOST_ANNOUNCE2:
974 test = TEST_HOST_ANNOUNCE2_END;
975 break;
976
977 case TEST_HOST_ANNOUNCE2_END:
978 guest_history_replay ();
979 break;
980
981 case TEST_GUEST_TALK:
982 host_announce2 ();
983 break;
984
985 default:
986 if (TEST_GUEST_LEAVE <= test)
987 break;
988 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Invalid test: #%u\n", test);
989 GNUNET_assert (0);
990 }
991}
992
993
994static void
995guest_talk ()
996{
997 test = TEST_GUEST_TALK;
998
999 tmit = (struct TransmitClosure) {};
1000 tmit.env = GNUNET_PSYC_env_create ();
1001 GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN,
1002 "_bar_foo", DATA2ARG ("one two three"));
1003 GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN,
1004 "_bar_baz", DATA2ARG ("four five"));
1005 tmit.data[0] = "zzz xxx yyy ";
1006 tmit.data[1] = "zyx wvu tsr qpo.\n";
1007 tmit.data_delay[1] = 1;
1008 tmit.data[2] = "testing ten nine eight.\n";
1009 tmit.data_count = 3;
1010
1011 tmit.guest_talk
1012 = GNUNET_SOCIAL_guest_talk (gst, "_converse_guest", tmit.env,
1013 &notify_data, &tmit,
1014 GNUNET_SOCIAL_TALK_NONE);
1015}
1016
1017
1018static void
1019host_announce ()
1020{
1021 test = TEST_HOST_ANNOUNCE;
1022
1023 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1024 "Test #%u: Host announcement.\n", test);
1025
1026 tmit = (struct TransmitClosure) {};
1027 tmit.env = GNUNET_PSYC_env_create ();
1028 GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN,
1029 "_foo", DATA2ARG ("bar baz"));
1030 GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN,
1031 "_foo_bar", DATA2ARG ("foo bar"));
1032 GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN,
1033 "_foo_bar_baz", DATA2ARG ("foo bar baz"));
1034 tmit.data[0] = "aaa bbb ccc ";
1035 tmit.data[1] = "abc def ghi jkl.\n";
1036 tmit.data_delay[1] = 1;
1037 tmit.data[2] = "testing one two three ";
1038 tmit.data[3] = "four five.\n";
1039 tmit.data_count = 4;
1040
1041 tmit.host_ann
1042 = GNUNET_SOCIAL_host_announce (hst, "_converse_host", tmit.env,
1043 &notify_data, &tmit,
1044 GNUNET_SOCIAL_ANNOUNCE_NONE);
1045}
1046
1047
1048static void
1049host_announce2 ()
1050{
1051 GNUNET_assert (2 == mod_foo_bar_rcls.n);
1052 GNUNET_PSYC_slicer_modifier_remove (guest_slicer, "_foo_bar",
1053 guest_recv_mod_foo_bar);
1054
1055 test = TEST_HOST_ANNOUNCE2;
1056
1057 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1058 "Test #%u: Host announcement 2.\n", test);
1059
1060 tmit = (struct TransmitClosure) {};
1061 tmit.env = GNUNET_PSYC_env_create ();
1062 GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN,
1063 "_foo2", DATA2ARG ("BAR BAZ"));
1064 GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN,
1065 "_foo2_bar", DATA2ARG ("FOO BAR"));
1066 GNUNET_PSYC_env_add (tmit.env, GNUNET_PSYC_OP_ASSIGN,
1067 "_foo2_bar_baz", DATA2ARG ("FOO BAR BAZ"));
1068 tmit.data[0] = "AAA BBB CCC ";
1069 tmit.data[1] = "ABC DEF GHI JKL.\n";
1070 tmit.data[2] = "TESTING ONE TWO THREE.\n";
1071 tmit.data_count = 3;
1072
1073 tmit.host_ann
1074 = GNUNET_SOCIAL_host_announce (hst, "_converse_host_two", tmit.env,
1075 &notify_data, &tmit,
1076 GNUNET_SOCIAL_ANNOUNCE_NONE);
1077}
1078
1079
1080static void
1081guest_recv_entry_decision (void *cls,
1082 int is_admitted,
1083 const struct GNUNET_PSYC_Message *entry_msg)
1084{
1085 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1086 "Test #%u: Guest received entry decision (try %u): %d.\n",
1087 test, join_req_count, is_admitted);
1088
1089 if (NULL != entry_msg)
1090 {
1091 struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
1092 const char *method_name = NULL;
1093 const void *data = NULL;
1094 uint16_t data_size = 0;
1095 struct GNUNET_PSYC_MessageHeader *
1096 pmsg = GNUNET_PSYC_message_header_create_from_psyc (entry_msg);
1097 GNUNET_PSYC_message_parse (pmsg, &method_name, env, &data, &data_size);
1098 GNUNET_free (pmsg);
1099
1100 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1101 "%s\n%.*s\n",
1102 method_name, data_size, (const char *) data);
1103 /** @todo FIXME: check response message */
1104 }
1105
1106 switch (test)
1107 {
1108 case TEST_GUEST_RECV_ENTRY_DCSN_REFUSE:
1109 GNUNET_assert (GNUNET_NO == is_admitted);
1110 test = TEST_HOST_ANSWER_DOOR_ADMIT;
1111 GNUNET_SOCIAL_guest_disconnect (gst, &guest_enter, NULL);
1112 break;
1113
1114 case TEST_GUEST_RECV_ENTRY_DCSN_ADMIT:
1115 GNUNET_assert (GNUNET_YES == is_admitted);
1116 host_announce ();
1117 break;
1118
1119 case TEST_GUEST_ENTER_BY_NAME:
1120 GNUNET_SCHEDULER_add_now (&schedule_reconnect, NULL);
1121 break;
1122
1123 default:
1124 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "invalid test: %d\n", test);
1125 GNUNET_assert (0);
1126 }
1127}
1128
1129
1130static void
1131host_answer_door (void *cls,
1132 struct GNUNET_SOCIAL_Nym *nym,
1133 const char *method_name,
1134 struct GNUNET_PSYC_Environment *env,
1135 const void *data,
1136 size_t data_size)
1137{
1138 join_req_count++;
1139
1140 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1141 "Test #%u: Host received entry request from guest (try %u).\n",
1142 (uint8_t) test, join_req_count);
1143 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1144 "%s\n%.*s\n",
1145 method_name, (int) data_size, (const char *) data);
1146
1147 switch (test)
1148 {
1149 case TEST_HOST_ANSWER_DOOR_REFUSE:
1150 test = TEST_GUEST_RECV_ENTRY_DCSN_REFUSE;
1151 join_resp = GNUNET_PSYC_message_create ("_notice_place_refuse", env,
1152 DATA2ARG ("Go away!"));
1153 GNUNET_SOCIAL_host_entry_decision (hst, nym, GNUNET_NO, join_resp);
1154 break;
1155
1156 case TEST_HOST_ANSWER_DOOR_ADMIT:
1157 test = TEST_GUEST_RECV_ENTRY_DCSN_ADMIT;
1158 // fall through
1159
1160 case TEST_GUEST_ENTER_BY_NAME:
1161 join_resp = GNUNET_PSYC_message_create ("_notice_place_admit", env,
1162 DATA2ARG ("Welcome, nym!"));
1163 GNUNET_SOCIAL_host_entry_decision (hst, nym, GNUNET_YES, join_resp);
1164 break;
1165
1166 default:
1167 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Invalid test: #%u\n", test);
1168 GNUNET_assert (0);
1169 }
1170}
1171
1172
1173static void
1174guest_recv_local_enter (void *cls, int result,
1175 const struct GNUNET_CRYPTO_EddsaPublicKey *place_pub_key,
1176 uint64_t max_message_id)
1177{
1178 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1179 "Test #%u: Guest entered local place: %d\n",
1180 test, result);
1181 GNUNET_assert (GNUNET_OK == result);
1182}
1183
1184
1185static void
1186guest_enter ()
1187{
1188 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1189 "Test #%u: Entering place as guest.\n", test);
1190
1191 struct GuestEnterMessage *emsg = &guest_enter_msg;
1192
1193 emsg->method_name = "_request_enter";
1194 emsg->env = GNUNET_PSYC_env_create ();
1195 GNUNET_PSYC_env_add (emsg->env, GNUNET_PSYC_OP_ASSIGN,
1196 "_abc", "abc def", 7);
1197 GNUNET_PSYC_env_add (emsg->env, GNUNET_PSYC_OP_ASSIGN,
1198 "_abc_def", "abc def ghi", 11);
1199 emsg->data = "let me in";
1200 emsg->data_size = strlen (emsg->data) + 1;
1201 emsg->msg = GNUNET_PSYC_message_create (emsg->method_name, emsg->env,
1202 emsg->data, emsg->data_size);
1203
1204 gst = GNUNET_SOCIAL_guest_enter (app, guest_ego, &place_pub_key,
1205 GNUNET_PSYC_SLAVE_JOIN_NONE,
1206 &this_peer, 0, NULL, emsg->msg, guest_slicer,
1207 guest_recv_local_enter,
1208 guest_recv_entry_decision, NULL);
1209 gst_plc = GNUNET_SOCIAL_guest_get_place (gst);
1210
1211 GNUNET_SOCIAL_place_msg_proc_set (gst_plc, "_converse",
1212 GNUNET_SOCIAL_MSG_PROC_SAVE);
1213}
1214
1215
1216static void
1217guest_enter_by_name ()
1218{
1219 test = TEST_GUEST_ENTER_BY_NAME;
1220 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1221 "Test #%u: Entering place by name as guest.\n", test);
1222
1223 struct GuestEnterMessage *emsg = &guest_enter_msg;
1224
1225 emsg->method_name = "_request_enter";
1226 emsg->env = GNUNET_PSYC_env_create ();
1227 GNUNET_PSYC_env_add (emsg->env, GNUNET_PSYC_OP_ASSIGN,
1228 "_abc", "abc def", 7);
1229 GNUNET_PSYC_env_add (emsg->env, GNUNET_PSYC_OP_ASSIGN,
1230 "_abc_def", "abc def ghi", 11);
1231 emsg->data = "let me in";
1232 emsg->data_size = strlen (emsg->data) + 1;
1233 emsg->msg = GNUNET_PSYC_message_create (emsg->method_name, emsg->env,
1234 emsg->data, emsg->data_size);
1235
1236 gst = GNUNET_SOCIAL_guest_enter_by_name (app, guest_ego,
1237 "home.host.gnu", "let.me*in!",
1238 emsg->msg, guest_slicer,
1239 guest_recv_local_enter,
1240 guest_recv_entry_decision, NULL);
1241 gst_plc = GNUNET_SOCIAL_guest_get_place (gst);
1242}
1243
1244
1245static void
1246app_recv_zone_add_nym_result (void *cls, int64_t result,
1247 const void *data, uint16_t data_size)
1248{
1249 GNUNET_assert (GNUNET_YES == result);
1250 is_guest_nym_added = GNUNET_YES;
1251}
1252
1253
1254static void
1255guest_init ()
1256{
1257 guest_pub_key = GNUNET_SOCIAL_ego_get_pub_key (guest_ego);
1258
1259 guest_slicer = GNUNET_PSYC_slicer_create ();
1260 GNUNET_PSYC_slicer_method_add (guest_slicer, "", NULL,
1261 guest_recv_method, guest_recv_modifier,
1262 guest_recv_data, guest_recv_eom, NULL);
1263 GNUNET_PSYC_slicer_modifier_add (guest_slicer, "_foo_bar",
1264 guest_recv_mod_foo_bar, &mod_foo_bar_rcls);
1265 test = TEST_HOST_ANSWER_DOOR_REFUSE;
1266
1267 GNUNET_SOCIAL_zone_add_nym (app, guest_ego, "host", host_pub_key,
1268 GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_MINUTES),
1269 app_recv_zone_add_nym_result, NULL);
1270}
1271
1272
1273static void
1274id_host_created (void *cls, const char *emsg)
1275{
1276 if (NULL != emsg)
1277 {
1278 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1279 "Test #%u: Could not create host identity: %s\n",
1280 test, emsg);
1281#if ! DEBUG_TEST_SOCIAL
1282 GNUNET_assert (0);
1283#endif
1284 }
1285
1286}
1287
1288
1289static void
1290id_guest_created (void *cls, const char *emsg)
1291{
1292 if (NULL != emsg)
1293 {
1294 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1295 "Test #%u: Could not create guest identity: %s\n",
1296 test, emsg);
1297#if ! DEBUG_TEST_SOCIAL
1298 GNUNET_assert (0);
1299#endif
1300 }
1301 //if (NULL != guest_ego)
1302 // guest_init ();
1303}
1304
1305
1306static void
1307host_entered (void *cls, int result,
1308 const struct GNUNET_CRYPTO_EddsaPublicKey *home_pub_key,
1309 uint64_t max_message_id)
1310{
1311 place_pub_key = *home_pub_key;
1312 GNUNET_CRYPTO_hash (&place_pub_key, sizeof (place_pub_key), &place_pub_hash);
1313 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1314 "Test #%u: Host entered place %s\n",
1315 test, GNUNET_h2s (&place_pub_hash));
1316 guest_enter ();
1317}
1318
1319
1320static void
1321host_enter ()
1322{
1323 host_slicer = GNUNET_PSYC_slicer_create ();
1324 GNUNET_PSYC_slicer_method_add (host_slicer, "", NULL,
1325 host_recv_method, host_recv_modifier,
1326 host_recv_data, host_recv_eom, NULL);
1327
1328 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1329 "Test #%u: Entering place as host.\n", test);
1330 test = TEST_HOST_ENTER;
1331 hst = GNUNET_SOCIAL_host_enter (app, host_ego,
1332 GNUNET_PSYC_CHANNEL_PRIVATE,
1333 host_slicer, host_entered,
1334 host_answer_door, host_farewell, NULL);
1335 hst_plc = GNUNET_SOCIAL_host_get_place (hst);
1336
1337 GNUNET_SOCIAL_place_msg_proc_set (hst_plc, "_converse",
1338 GNUNET_SOCIAL_MSG_PROC_RELAY);
1339}
1340
1341
1342static void
1343start_app_if_ready ()
1344{
1345 if (NULL == identity_host_ego || NULL == identity_guest_ego)
1346 {
1347 return;
1348 }
1349 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1350 "starting app...\n");
1351 app = GNUNET_SOCIAL_app_connect (cfg,
1352 app_id,
1353 app_recv_ego,
1354 app_recv_host,
1355 app_recv_guest,
1356 app_connected,
1357 NULL);
1358}
1359
1360
1361static void
1362identity_ego_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego,
1363 void **ctx, const char *name)
1364{
1365 if (NULL != ego)
1366 {
1367 if (ego == identity_host_ego)
1368 {
1369 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1370 "Host ego deleted\n");
1371 }
1372 else if (ego == identity_guest_ego)
1373 {
1374 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1375 "Guest ego deleted\n");
1376 }
1377 else if (0 == strcmp (name, host_name))
1378 {
1379 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1380 "Created ego %s\n",
1381 name);
1382 identity_host_ego = ego;
1383 start_app_if_ready ();
1384 }
1385 else if (0 == strcmp (name, guest_name))
1386 {
1387 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
1388 "Created guest ego %s\n",
1389 name);
1390 identity_guest_ego = ego;
1391 start_app_if_ready ();
1392 }
1393 }
1394}
1395
1396
1397/**
1398 * Main function of the test, run from scheduler.
1399 *
1400 * @param cls NULL
1401 * @param cfg configuration we use (also to connect to Social service)
1402 * @param peer handle to access more of the peer (not used)
1403 */
1404static void
1405#if DEBUG_TEST_SOCIAL
1406run (void *cls, char *const *args, const char *cfgfile,
1407 const struct GNUNET_CONFIGURATION_Handle *c)
1408#else
1409run (void *cls,
1410 const struct GNUNET_CONFIGURATION_Handle *c,
1411 struct GNUNET_TESTING_Peer *peer)
1412#endif
1413{
1414 cfg = c;
1415 res = 1;
1416 end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
1417 &end_badly, NULL);
1418 GNUNET_SCHEDULER_add_shutdown (&end_shutdown,
1419 NULL);
1420 GNUNET_CRYPTO_get_peer_identity (cfg, &this_peer);
1421
1422 id = GNUNET_IDENTITY_connect (cfg, &identity_ego_cb, NULL);
1423
1424 test = TEST_IDENTITIES_CREATE;
1425 GNUNET_IDENTITY_create (id, host_name, &id_host_created, NULL);
1426 GNUNET_IDENTITY_create (id, guest_name, &id_guest_created, NULL);
1427}
1428
1429
1430int
1431main (int argc, char *argv[])
1432{
1433 res = 1;
1434#if DEBUG_TEST_SOCIAL
1435 const struct GNUNET_GETOPT_CommandLineOption opts[] = {
1436 GNUNET_GETOPT_OPTION_END
1437 };
1438 if (GNUNET_OK != GNUNET_PROGRAM_run (argc, argv, "test-social",
1439 "test-social [options]",
1440 opts, &run, NULL))
1441 return 1;
1442#else
1443 if (0 != GNUNET_TESTING_peer_run ("test-social", "test_social.conf", &run, NULL))
1444 return 1;
1445#endif
1446 return res;
1447}
1448
1449/* end of test_social.c */
diff --git a/src/social/test_social.conf b/src/social/test_social.conf
deleted file mode 100644
index bc487760f..000000000
--- a/src/social/test_social.conf
+++ /dev/null
@@ -1,19 +0,0 @@
1@INLINE@ ../../contrib/conf/gnunet/no_forcestart.conf
2
3[PATHS]
4GNUNET_TEST_HOME = $GNUNET_TMP/gnunet-test-social/
5
6[social]
7IMMEDIATE_START = YES
8
9[transport]
10PLUGINS = tcp
11
12[nat]
13DISABLEV6 = YES
14ENABLE_UPNP = NO
15BEHIND_NAT = NO
16ALLOW_NAT = NO
17INTERNAL_ADDRESS = 127.0.0.1
18EXTERNAL_ADDRESS = 127.0.0.1
19
diff --git a/src/sq/sq.c b/src/sq/sq.c
index 36200aa26..e74071b81 100644
--- a/src/sq/sq.c
+++ b/src/sq/sq.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
diff --git a/src/testbed/test_testbed_api_template.conf b/src/testbed/test_testbed_api_template.conf
index 381c1bd85..43ae06f81 100644
--- a/src/testbed/test_testbed_api_template.conf
+++ b/src/testbed/test_testbed_api_template.conf
@@ -43,3 +43,7 @@ RETURN_LOCAL_ADDRESSES = YES
43 43
44[peerinfo] 44[peerinfo]
45NO_IO = YES 45NO_IO = YES
46
47[rps]
48START_ON_DEMAND = NO
49IMMEDIATE_START = NO
diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am
index 727bfb134..39e5f1574 100644
--- a/src/testing/Makefile.am
+++ b/src/testing/Makefile.am
@@ -95,4 +95,5 @@ test_testing_sharedservices_LDADD = \
95 $(top_builddir)/src/util/libgnunetutil.la 95 $(top_builddir)/src/util/libgnunetutil.la
96 96
97EXTRA_DIST = \ 97EXTRA_DIST = \
98 test_testing_defaults.conf 98 test_testing_defaults.conf \
99 test_testing_sharedservices.conf
diff --git a/src/testing/test_testing_defaults.conf b/src/testing/test_testing_defaults.conf
index e6a18bc86..2e7c39113 100644
--- a/src/testing/test_testing_defaults.conf
+++ b/src/testing/test_testing_defaults.conf
@@ -19,3 +19,7 @@ INTERNAL_ADDRESS = 127.0.0.1
19EXTERNAL_ADDRESS = 127.0.0.1 19EXTERNAL_ADDRESS = 127.0.0.1
20USE_LOCALADDR = NO 20USE_LOCALADDR = NO
21 21
22
23[rps]
24START_ON_DEMAND = NO
25IMMEDIATE_START = NO
diff --git a/src/testing/test_testing_sharedservices.conf b/src/testing/test_testing_sharedservices.conf
index 24ce1b358..92eac7e71 100644
--- a/src/testing/test_testing_sharedservices.conf
+++ b/src/testing/test_testing_sharedservices.conf
@@ -24,3 +24,7 @@ INTERNAL_ADDRESS = 127.0.0.1
24EXTERNAL_ADDRESS = 127.0.0.1 24EXTERNAL_ADDRESS = 127.0.0.1
25USE_LOCALADDR = NO 25USE_LOCALADDR = NO
26 26
27
28[rps]
29START_ON_DEMAND = NO
30IMMEDIATE_START = NO
diff --git a/src/testing/testing.c b/src/testing/testing.c
index b34815364..7dbd97294 100644
--- a/src/testing/testing.c
+++ b/src/testing/testing.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -786,7 +786,7 @@ update_config (void *cls,
786 struct UpdateContext *uc = cls; 786 struct UpdateContext *uc = cls;
787 unsigned int ival; 787 unsigned int ival;
788 char cval[12]; 788 char cval[12];
789 char uval[128]; 789 char uval[PATH_MAX];
790 char *single_variable; 790 char *single_variable;
791 char *per_host_variable; 791 char *per_host_variable;
792 unsigned long long num_per_host; 792 unsigned long long num_per_host;
@@ -839,7 +839,9 @@ update_config (void *cls,
839 GNUNET_CONFIGURATION_get_value_yesno (uc->cfg, "testing", 839 GNUNET_CONFIGURATION_get_value_yesno (uc->cfg, "testing",
840 single_variable)) 840 single_variable))
841 { 841 {
842 GNUNET_snprintf (uval, sizeof (uval), "%s/%s.sock", 842 GNUNET_snprintf (uval,
843 sizeof (uval),
844 "%s/%s.sock",
843 uc->gnunet_home, section); 845 uc->gnunet_home, section);
844 value = uval; 846 value = uval;
845 } 847 }
diff --git a/src/topology/friends.c b/src/topology/friends.c
index 4278e1266..f23724444 100644
--- a/src/topology/friends.c
+++ b/src/topology/friends.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
diff --git a/src/topology/test_gnunet_daemon_topology_data.conf b/src/topology/test_gnunet_daemon_topology_data.conf
index 43d3da375..8d8636bff 100644
--- a/src/topology/test_gnunet_daemon_topology_data.conf
+++ b/src/topology/test_gnunet_daemon_topology_data.conf
@@ -24,3 +24,7 @@ USE_HOSTNAME = NO
24 24
25[nse] 25[nse]
26WORKBITS = 0 26WORKBITS = 0
27
28[rps]
29START_ON_DEMAND = NO
30IMMEDIATE_START = NO
diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am
index 3de46cf6f..9cf16ddb6 100644
--- a/src/transport/Makefile.am
+++ b/src/transport/Makefile.am
@@ -154,6 +154,7 @@ endif
154 154
155lib_LTLIBRARIES = \ 155lib_LTLIBRARIES = \
156 libgnunettransport.la \ 156 libgnunettransport.la \
157 libgnunettransportaddress.la \
157 libgnunettransportcore.la \ 158 libgnunettransportcore.la \
158 libgnunettransportcommunicator.la \ 159 libgnunettransportcommunicator.la \
159 libgnunettransportmonitor.la \ 160 libgnunettransportmonitor.la \
@@ -197,6 +198,15 @@ libgnunettransport_la_LDFLAGS = \
197 198
198 199
199 200
201libgnunettransportaddress_la_SOURCES = \
202 transport_api2_address.c
203libgnunettransportaddress_la_LIBADD = \
204 $(top_builddir)/src/util/libgnunetutil.la \
205 $(GN_LIBINTL)
206libgnunettransportaddress_la_LDFLAGS = \
207 $(GN_LIB_LDFLAGS) $(WINFLAGS) \
208 -version-info 0:0:0
209
200libgnunettransportcore_la_SOURCES = \ 210libgnunettransportcore_la_SOURCES = \
201 transport_api2_core.c 211 transport_api2_core.c
202libgnunettransportcore_la_LIBADD = \ 212libgnunettransportcore_la_LIBADD = \
@@ -271,7 +281,7 @@ gnunet_communicator_udp_LDADD = \
271 $(top_builddir)/src/nt/libgnunetnt.la \ 281 $(top_builddir)/src/nt/libgnunetnt.la \
272 $(top_builddir)/src/statistics/libgnunetstatistics.la \ 282 $(top_builddir)/src/statistics/libgnunetstatistics.la \
273 $(top_builddir)/src/util/libgnunetutil.la \ 283 $(top_builddir)/src/util/libgnunetutil.la \
274 $(LIBGCRYPT_LIBS) 284 $(LIBGCRYPT_LIBS)
275 285
276 286
277gnunet_helper_transport_wlan_SOURCES = \ 287gnunet_helper_transport_wlan_SOURCES = \
@@ -1339,6 +1349,7 @@ test_transport_api_slow_ats_LDADD = \
1339 1349
1340 1350
1341EXTRA_DIST = \ 1351EXTRA_DIST = \
1352communicator-unix.conf \
1342test_plugin_hostkey \ 1353test_plugin_hostkey \
1343test_plugin_hostkey.ecc \ 1354test_plugin_hostkey.ecc \
1344test_delay \ 1355test_delay \
diff --git a/src/transport/gnunet-communicator-tcp.c b/src/transport/gnunet-communicator-tcp.c
index 93f510be0..47bffa2ba 100644
--- a/src/transport/gnunet-communicator-tcp.c
+++ b/src/transport/gnunet-communicator-tcp.c
@@ -24,7 +24,7 @@
24 * @author Christian Grothoff 24 * @author Christian Grothoff
25 * 25 *
26 * TODO: 26 * TODO:
27 * - add and use util/ check for IPv6 availability (#V6) 27 * - add and use util/ check for IPv6 availability (#5553)
28 * - support DNS names in BINDTO option (#5528) 28 * - support DNS names in BINDTO option (#5528)
29 * - support NAT connection reversal method (#5529) 29 * - support NAT connection reversal method (#5529)
30 * - support other TCP-specific NAT traversal methods (#5531) 30 * - support other TCP-specific NAT traversal methods (#5531)
diff --git a/src/transport/gnunet-communicator-udp.c b/src/transport/gnunet-communicator-udp.c
index c88f7f6f5..550ba7c85 100644
--- a/src/transport/gnunet-communicator-udp.c
+++ b/src/transport/gnunet-communicator-udp.c
@@ -24,14 +24,14 @@
24 * @author Christian Grothoff 24 * @author Christian Grothoff
25 * 25 *
26 * TODO: 26 * TODO:
27 * - add and use util/ check for IPv6 availability (#V6) 27 * - add and use util/ check for IPv6 availability (#5553)
28 * - consider imposing transmission limits in the absence 28 * - consider imposing transmission limits in the absence
29 * of ACKs; or: maybe this should be done at TNG service level? 29 * of ACKs; or: maybe this should be done at TNG service level?
30 * (at least the receiver might want to enforce limits on 30 * (at least the receiver might want to enforce limits on
31 * KX/DH operations per sender in here) 31 * KX/DH operations per sender in here) (#5552)
32 * - overall, we should look more into flow control support 32 * - overall, we should look more into flow control support
33 * (either in backchannel, or general solution in TNG service) 33 * (either in backchannel, or general solution in TNG service)
34 * - handle addresses discovered from broadcasts (#BC) 34 * - handle addresses discovered from broadcasts (#5551)
35 * (think: what was the story again on address validation? 35 * (think: what was the story again on address validation?
36 * where is the API for that!?!) 36 * where is the API for that!?!)
37 * - support DNS names in BINDTO option (#5528) 37 * - support DNS names in BINDTO option (#5528)
@@ -1672,7 +1672,7 @@ sock_read (void *cls)
1672 "# broadcasts received", 1672 "# broadcasts received",
1673 1, 1673 1,
1674 GNUNET_NO); 1674 GNUNET_NO);
1675 // FIXME #BC: we effectively just got a HELLO! 1675 // FIXME #5551: we effectively just got a HELLO!
1676 // trigger verification NOW! 1676 // trigger verification NOW!
1677 return; 1677 return;
1678 } 1678 }
diff --git a/src/transport/gnunet-service-tng.c b/src/transport/gnunet-service-tng.c
index d392b3a46..7d7d04375 100644
--- a/src/transport/gnunet-service-tng.c
+++ b/src/transport/gnunet-service-tng.c
@@ -46,16 +46,17 @@
46 * #6 to ensure flow control and RTT are OK, we always do the 46 * #6 to ensure flow control and RTT are OK, we always do the
47 * 'validation', even if address comes from PEERSTORE 47 * 'validation', even if address comes from PEERSTORE
48 * #7 48 * #7
49 * - ACK handling / retransmission 49 * - ACK handling / retransmission
50 * - address verification
50 * - track RTT, distance, loss, etc. 51 * - track RTT, distance, loss, etc.
51 * - DV data structures: 52 * - DV data structures:
52 * + learning 53 * + learning
53 * + forgetting 54 * + forgetting
54 * + using them! 55 * + using them!
55 * - routing of messages (using DV data structures!) 56 * - routing of messages (using DV data structures!)
56 * - handling of DV-boxed messages that need to be forwarded 57 * - handling of DV-boxed messages that need to be forwarded
57 * - backchannel message encryption & decryption 58 * - backchannel message encryption & decryption
58 * - 59 * -
59 * 60 *
60 * Easy: 61 * Easy:
61 * - use ATS bandwidth allocation callback and schedule transmissions! 62 * - use ATS bandwidth allocation callback and schedule transmissions!
@@ -72,7 +73,7 @@
72 * (requires planning at receiver, and additional MST-style demultiplex 73 * (requires planning at receiver, and additional MST-style demultiplex
73 * at receiver!) 74 * at receiver!)
74 * - could avoid copying body of message into each fragment and keep 75 * - could avoid copying body of message into each fragment and keep
75 * fragments as just pointers into the original message and only 76 * fragments as just pointers into the original message and only
76 * fully build fragments just before transmission (optimization, should 77 * fully build fragments just before transmission (optimization, should
77 * reduce CPU and memory use) 78 * reduce CPU and memory use)
78 * 79 *
@@ -141,7 +142,7 @@
141/** 142/**
142 * How many messages can we have pending for a given communicator 143 * How many messages can we have pending for a given communicator
143 * process before we start to throttle that communicator? 144 * process before we start to throttle that communicator?
144 * 145 *
145 * Used if a communicator might be CPU-bound and cannot handle the traffic. 146 * Used if a communicator might be CPU-bound and cannot handle the traffic.
146 */ 147 */
147#define COMMUNICATOR_TOTAL_QUEUE_LIMIT 512 148#define COMMUNICATOR_TOTAL_QUEUE_LIMIT 512
@@ -150,7 +151,7 @@
150 * How many messages can we have pending for a given session (queue to 151 * How many messages can we have pending for a given session (queue to
151 * a particular peer via a communicator) process before we start to 152 * a particular peer via a communicator) process before we start to
152 * throttle that queue? 153 * throttle that queue?
153 * 154 *
154 * Used if ATS assigns more bandwidth to a particular transmission 155 * Used if ATS assigns more bandwidth to a particular transmission
155 * method than that transmission method can right now handle. (Yes, 156 * method than that transmission method can right now handle. (Yes,
156 * ATS should eventually notice utilization below allocation and 157 * ATS should eventually notice utilization below allocation and
@@ -195,7 +196,7 @@ struct TransportBackchannelEncapsulationMessage
195 196
196 // FIXME: probably should add random IV here as well, 197 // FIXME: probably should add random IV here as well,
197 // especially if we re-use ephemeral keys! 198 // especially if we re-use ephemeral keys!
198 199
199 /** 200 /**
200 * HMAC over the ciphertext of the encrypted, variable-size 201 * HMAC over the ciphertext of the encrypted, variable-size
201 * body that follows. Verified via DH of @e target and 202 * body that follows. Verified via DH of @e target and
@@ -224,8 +225,8 @@ struct EphemeralConfirmation
224 * only interpret the value as a mononic time and reject 225 * only interpret the value as a mononic time and reject
225 * "older" values than the last one observed. Even with this, 226 * "older" values than the last one observed. Even with this,
226 * there is no real guarantee against replay achieved here, 227 * there is no real guarantee against replay achieved here,
227 * as the latest timestamp is not persisted. This is 228 * as the latest timestamp is not persisted. This is
228 * necessary as we do not want to require synchronized 229 * necessary as we do not want to require synchronized
229 * clocks and may not have a bidirectional communication 230 * clocks and may not have a bidirectional communication
230 * channel. Communicators must protect against replay 231 * channel. Communicators must protect against replay
231 * attacks when using backchannel communication! 232 * attacks when using backchannel communication!
@@ -373,17 +374,17 @@ struct TransportFragmentBox
373 /** 374 /**
374 * Original message ID for of the message that all the1 375 * Original message ID for of the message that all the1
375 * fragments belong to. Must be the same for all fragments. 376 * fragments belong to. Must be the same for all fragments.
376 */ 377 */
377 struct GNUNET_ShortHashCode msg_uuid; 378 struct GNUNET_ShortHashCode msg_uuid;
378 379
379 /** 380 /**
380 * Offset of this fragment in the overall message. 381 * Offset of this fragment in the overall message.
381 */ 382 */
382 uint16_t frag_off GNUNET_PACKED; 383 uint16_t frag_off GNUNET_PACKED;
383 384
384 /** 385 /**
385 * Total size of the message that is being fragmented. 386 * Total size of the message that is being fragmented.
386 */ 387 */
387 uint16_t msg_size GNUNET_PACKED; 388 uint16_t msg_size GNUNET_PACKED;
388 389
389}; 390};
@@ -412,13 +413,13 @@ struct TransportFragmentAckMessage
412 /** 413 /**
413 * Bitfield of up to 64 additional fragments following the 414 * Bitfield of up to 64 additional fragments following the
414 * @e msg_uuid being acknowledged by this message. 415 * @e msg_uuid being acknowledged by this message.
415 */ 416 */
416 uint64_t extra_acks GNUNET_PACKED; 417 uint64_t extra_acks GNUNET_PACKED;
417 418
418 /** 419 /**
419 * Original message ID for of the message that all the 420 * Original message ID for of the message that all the
420 * fragments belong to. 421 * fragments belong to.
421 */ 422 */
422 struct GNUNET_ShortHashCode msg_uuid; 423 struct GNUNET_ShortHashCode msg_uuid;
423 424
424 /** 425 /**
@@ -444,7 +445,7 @@ struct TransportFragmentAckMessage
444 * to a subset of their neighbours to limit discoverability of the 445 * to a subset of their neighbours to limit discoverability of the
445 * network topology). To the extend that the @e bidirectional bits 446 * network topology). To the extend that the @e bidirectional bits
446 * are set, peers may learn the inverse paths even if they did not 447 * are set, peers may learn the inverse paths even if they did not
447 * initiate. 448 * initiate.
448 * 449 *
449 * Unless received on a bidirectional queue and @e num_hops just 450 * Unless received on a bidirectional queue and @e num_hops just
450 * zero, peers that can forward to the initator should always try to 451 * zero, peers that can forward to the initator should always try to
@@ -469,13 +470,13 @@ struct TransportDVLearn
469 * to possibly instantly learn a path in both directions. Each peer 470 * to possibly instantly learn a path in both directions. Each peer
470 * should shift this value by one to the left, and then set the 471 * should shift this value by one to the left, and then set the
471 * lowest bit IF the current sender can be reached from it (without 472 * lowest bit IF the current sender can be reached from it (without
472 * DV routing). 473 * DV routing).
473 */ 474 */
474 uint16_t bidirectional GNUNET_PACKED; 475 uint16_t bidirectional GNUNET_PACKED;
475 476
476 /** 477 /**
477 * Peers receiving this message and delaying forwarding to other 478 * Peers receiving this message and delaying forwarding to other
478 * peers for any reason should increment this value such as to 479 * peers for any reason should increment this value such as to
479 * enable the origin to determine the actual network-only delay 480 * enable the origin to determine the actual network-only delay
480 * in addition to the real-time delay (assuming the message loops 481 * in addition to the real-time delay (assuming the message loops
481 * back to the origin). 482 * back to the origin).
@@ -486,11 +487,11 @@ struct TransportDVLearn
486 * Identity of the peer that started this learning activity. 487 * Identity of the peer that started this learning activity.
487 */ 488 */
488 struct GNUNET_PeerIdentity initiator; 489 struct GNUNET_PeerIdentity initiator;
489 490
490 /* Followed by @e num_hops `struct GNUNET_PeerIdentity` values, 491 /* Followed by @e num_hops `struct GNUNET_PeerIdentity` values,
491 excluding the initiator of the DV trace; the last entry is the 492 excluding the initiator of the DV trace; the last entry is the
492 current sender; the current peer must not be included. */ 493 current sender; the current peer must not be included. */
493 494
494}; 495};
495 496
496 497
@@ -527,7 +528,7 @@ struct TransportDVBox
527 * Number of hops this messages includes. In NBO. 528 * Number of hops this messages includes. In NBO.
528 */ 529 */
529 uint16_t num_hops GNUNET_PACKED; 530 uint16_t num_hops GNUNET_PACKED;
530 531
531 /** 532 /**
532 * Identity of the peer that originated the message. 533 * Identity of the peer that originated the message.
533 */ 534 */
@@ -577,7 +578,7 @@ enum ClientType
577/** 578/**
578 * Entry in our cache of ephemeral keys we currently use. 579 * Entry in our cache of ephemeral keys we currently use.
579 * This way, we only sign an ephemeral once per @e target, 580 * This way, we only sign an ephemeral once per @e target,
580 * and then can re-use it over multiple 581 * and then can re-use it over multiple
581 * #GNUNET_MESSAGE_TYPE_TRANSPORT_BACKCHANNEL_ENCAPSULATION 582 * #GNUNET_MESSAGE_TYPE_TRANSPORT_BACKCHANNEL_ENCAPSULATION
582 * messages (as signing is expensive). 583 * messages (as signing is expensive).
583 */ 584 */
@@ -645,39 +646,39 @@ struct DistanceVectorHop
645 646
646 /** 647 /**
647 * Kept in a MDLL, sorted by @e timeout. 648 * Kept in a MDLL, sorted by @e timeout.
648 */ 649 */
649 struct DistanceVectorHop *next_dv; 650 struct DistanceVectorHop *next_dv;
650 651
651 /** 652 /**
652 * Kept in a MDLL, sorted by @e timeout. 653 * Kept in a MDLL, sorted by @e timeout.
653 */ 654 */
654 struct DistanceVectorHop *prev_dv; 655 struct DistanceVectorHop *prev_dv;
655 656
656 /** 657 /**
657 * Kept in a MDLL. 658 * Kept in a MDLL.
658 */ 659 */
659 struct DistanceVectorHop *next_neighbour; 660 struct DistanceVectorHop *next_neighbour;
660 661
661 /** 662 /**
662 * Kept in a MDLL. 663 * Kept in a MDLL.
663 */ 664 */
664 struct DistanceVectorHop *prev_neighbour; 665 struct DistanceVectorHop *prev_neighbour;
665 666
666 /** 667 /**
667 * What would be the next hop to @e target? 668 * What would be the next hop to @e target?
668 */ 669 */
669 struct Neighbour *next_hop; 670 struct Neighbour *next_hop;
670 671
671 /** 672 /**
672 * Distance vector entry this hop belongs with. 673 * Distance vector entry this hop belongs with.
673 */ 674 */
674 struct DistanceVector *dv; 675 struct DistanceVector *dv;
675 676
676 /** 677 /**
677 * Array of @e distance hops to the target, excluding @e next_hop. 678 * Array of @e distance hops to the target, excluding @e next_hop.
678 * NULL if the entire path is us to @e next_hop to `target`. Allocated 679 * NULL if the entire path is us to @e next_hop to `target`. Allocated
679 * at the end of this struct. 680 * at the end of this struct.
680 */ 681 */
681 const struct GNUNET_PeerIdentity *path; 682 const struct GNUNET_PeerIdentity *path;
682 683
683 /** 684 /**
@@ -685,11 +686,11 @@ struct DistanceVectorHop
685 * while learning? 686 * while learning?
686 */ 687 */
687 struct GNUNET_TIME_Absolute timeout; 688 struct GNUNET_TIME_Absolute timeout;
688 689
689 /** 690 /**
690 * How many hops in total to the `target` (excluding @e next_hop and `target` itself), 691 * How many hops in total to the `target` (excluding @e next_hop and `target` itself),
691 * thus 0 still means a distance of 2 hops (to @e next_hop and then to `target`)? 692 * thus 0 still means a distance of 2 hops (to @e next_hop and then to `target`)?
692 */ 693 */
693 unsigned int distance; 694 unsigned int distance;
694}; 695};
695 696
@@ -708,12 +709,12 @@ struct DistanceVector
708 709
709 /** 710 /**
710 * Known paths to @e target. 711 * Known paths to @e target.
711 */ 712 */
712 struct DistanceVectorHop *dv_head; 713 struct DistanceVectorHop *dv_head;
713 714
714 /** 715 /**
715 * Known paths to @e target. 716 * Known paths to @e target.
716 */ 717 */
717 struct DistanceVectorHop *dv_tail; 718 struct DistanceVectorHop *dv_tail;
718 719
719 /** 720 /**
@@ -737,19 +738,19 @@ struct QueueEntry
737 738
738 /** 739 /**
739 * Kept as a DLL. 740 * Kept as a DLL.
740 */ 741 */
741 struct QueueEntry *next; 742 struct QueueEntry *next;
742 743
743 /** 744 /**
744 * Kept as a DLL. 745 * Kept as a DLL.
745 */ 746 */
746 struct QueueEntry *prev; 747 struct QueueEntry *prev;
747 748
748 /** 749 /**
749 * ATS session this entry is queued with. 750 * ATS session this entry is queued with.
750 */ 751 */
751 struct GNUNET_ATS_Session *session; 752 struct GNUNET_ATS_Session *session;
752 753
753 /** 754 /**
754 * Message ID used for this message with the queue used for transmission. 755 * Message ID used for this message with the queue used for transmission.
755 */ 756 */
@@ -785,12 +786,12 @@ struct GNUNET_ATS_Session
785 786
786 /** 787 /**
787 * Head of DLL of unacked transmission requests. 788 * Head of DLL of unacked transmission requests.
788 */ 789 */
789 struct QueueEntry *queue_head; 790 struct QueueEntry *queue_head;
790 791
791 /** 792 /**
792 * End of DLL of unacked transmission requests. 793 * End of DLL of unacked transmission requests.
793 */ 794 */
794 struct QueueEntry *queue_tail; 795 struct QueueEntry *queue_tail;
795 796
796 /** 797 /**
@@ -816,9 +817,9 @@ struct GNUNET_ATS_Session
816 /** 817 /**
817 * Task scheduled for the time when this queue can (likely) transmit the 818 * Task scheduled for the time when this queue can (likely) transmit the
818 * next message. Still needs to check with the @e tracker_out to be sure. 819 * next message. Still needs to check with the @e tracker_out to be sure.
819 */ 820 */
820 struct GNUNET_SCHEDULER_Task *transmit_task; 821 struct GNUNET_SCHEDULER_Task *transmit_task;
821 822
822 /** 823 /**
823 * Our current RTT estimate for this ATS session. 824 * Our current RTT estimate for this ATS session.
824 */ 825 */
@@ -826,9 +827,9 @@ struct GNUNET_ATS_Session
826 827
827 /** 828 /**
828 * Message ID generator for transmissions on this queue. 829 * Message ID generator for transmissions on this queue.
829 */ 830 */
830 uint64_t mid_gen; 831 uint64_t mid_gen;
831 832
832 /** 833 /**
833 * Unique identifier of this ATS session with the communicator. 834 * Unique identifier of this ATS session with the communicator.
834 */ 835 */
@@ -858,7 +859,7 @@ struct GNUNET_ATS_Session
858 * Length of the DLL starting at @e queue_head. 859 * Length of the DLL starting at @e queue_head.
859 */ 860 */
860 unsigned int queue_length; 861 unsigned int queue_length;
861 862
862 /** 863 /**
863 * Network type offered by this ATS session. 864 * Network type offered by this ATS session.
864 */ 865 */
@@ -883,14 +884,14 @@ struct GNUNET_ATS_Session
883 884
884/** 885/**
885 * Information we keep for a message that we are reassembling. 886 * Information we keep for a message that we are reassembling.
886 */ 887 */
887struct ReassemblyContext 888struct ReassemblyContext
888{ 889{
889 890
890 /** 891 /**
891 * Original message ID for of the message that all the 892 * Original message ID for of the message that all the
892 * fragments belong to. 893 * fragments belong to.
893 */ 894 */
894 struct GNUNET_ShortHashCode msg_uuid; 895 struct GNUNET_ShortHashCode msg_uuid;
895 896
896 /** 897 /**
@@ -900,7 +901,7 @@ struct ReassemblyContext
900 901
901 /** 902 /**
902 * Entry in the reassembly heap (sorted by expiration). 903 * Entry in the reassembly heap (sorted by expiration).
903 */ 904 */
904 struct GNUNET_CONTAINER_HeapNode *hn; 905 struct GNUNET_CONTAINER_HeapNode *hn;
905 906
906 /** 907 /**
@@ -918,7 +919,7 @@ struct ReassemblyContext
918 * task is for the latter case. 919 * task is for the latter case.
919 */ 920 */
920 struct GNUNET_SCHEDULER_Task *ack_task; 921 struct GNUNET_SCHEDULER_Task *ack_task;
921 922
922 /** 923 /**
923 * At what time will we give up reassembly of this message? 924 * At what time will we give up reassembly of this message?
924 */ 925 */
@@ -941,7 +942,7 @@ struct ReassemblyContext
941 * to be acknowledged in the next cummulative ACK. 942 * to be acknowledged in the next cummulative ACK.
942 */ 943 */
943 uint64_t extra_acks; 944 uint64_t extra_acks;
944 945
945 /** 946 /**
946 * Unique ID of the lowest fragment UUID to be acknowledged in the 947 * Unique ID of the lowest fragment UUID to be acknowledged in the
947 * next cummulative ACK. Only valid if @e num_acks > 0. 948 * next cummulative ACK. Only valid if @e num_acks > 0.
@@ -953,7 +954,7 @@ struct ReassemblyContext
953 * whenever we send a #GNUNET_MESSAGE_TYPE_TRANSPORT_FRAGMENT_ACK. 954 * whenever we send a #GNUNET_MESSAGE_TYPE_TRANSPORT_FRAGMENT_ACK.
954 */ 955 */
955 unsigned int num_acks; 956 unsigned int num_acks;
956 957
957 /** 958 /**
958 * How big is the message we are reassembling in total? 959 * How big is the message we are reassembling in total?
959 */ 960 */
@@ -986,21 +987,21 @@ struct Neighbour
986 * Map with `struct ReassemblyContext` structs for fragments under 987 * Map with `struct ReassemblyContext` structs for fragments under
987 * reassembly. May be NULL if we currently have no fragments from 988 * reassembly. May be NULL if we currently have no fragments from
988 * this @e pid (lazy initialization). 989 * this @e pid (lazy initialization).
989 */ 990 */
990 struct GNUNET_CONTAINER_MultiShortmap *reassembly_map; 991 struct GNUNET_CONTAINER_MultiShortmap *reassembly_map;
991 992
992 /** 993 /**
993 * Heap with `struct ReassemblyContext` structs for fragments under 994 * Heap with `struct ReassemblyContext` structs for fragments under
994 * reassembly. May be NULL if we currently have no fragments from 995 * reassembly. May be NULL if we currently have no fragments from
995 * this @e pid (lazy initialization). 996 * this @e pid (lazy initialization).
996 */ 997 */
997 struct GNUNET_CONTAINER_Heap *reassembly_heap; 998 struct GNUNET_CONTAINER_Heap *reassembly_heap;
998 999
999 /** 1000 /**
1000 * Task to free old entries from the @e reassembly_heap and @e reassembly_map. 1001 * Task to free old entries from the @e reassembly_heap and @e reassembly_map.
1001 */ 1002 */
1002 struct GNUNET_SCHEDULER_Task *reassembly_timeout_task; 1003 struct GNUNET_SCHEDULER_Task *reassembly_timeout_task;
1003 1004
1004 /** 1005 /**
1005 * Head of list of messages pending for this neighbour. 1006 * Head of list of messages pending for this neighbour.
1006 */ 1007 */
@@ -1014,13 +1015,13 @@ struct Neighbour
1014 /** 1015 /**
1015 * Head of MDLL of DV hops that have this neighbour as next hop. Must be 1016 * Head of MDLL of DV hops that have this neighbour as next hop. Must be
1016 * purged if this neighbour goes down. 1017 * purged if this neighbour goes down.
1017 */ 1018 */
1018 struct DistanceVectorHop *dv_head; 1019 struct DistanceVectorHop *dv_head;
1019 1020
1020 /** 1021 /**
1021 * Tail of MDLL of DV hops that have this neighbour as next hop. Must be 1022 * Tail of MDLL of DV hops that have this neighbour as next hop. Must be
1022 * purged if this neighbour goes down. 1023 * purged if this neighbour goes down.
1023 */ 1024 */
1024 struct DistanceVectorHop *dv_tail; 1025 struct DistanceVectorHop *dv_tail;
1025 1026
1026 /** 1027 /**
@@ -1035,7 +1036,7 @@ struct Neighbour
1035 1036
1036 /** 1037 /**
1037 * Task run to cleanup pending messages that have exceeded their timeout. 1038 * Task run to cleanup pending messages that have exceeded their timeout.
1038 */ 1039 */
1039 struct GNUNET_SCHEDULER_Task *timeout_task; 1040 struct GNUNET_SCHEDULER_Task *timeout_task;
1040 1041
1041 /** 1042 /**
@@ -1052,15 +1053,15 @@ struct Neighbour
1052 1053
1053 /** 1054 /**
1054 * What is the earliest timeout of any message in @e pending_msg_tail? 1055 * What is the earliest timeout of any message in @e pending_msg_tail?
1055 */ 1056 */
1056 struct GNUNET_TIME_Absolute earliest_timeout; 1057 struct GNUNET_TIME_Absolute earliest_timeout;
1057 1058
1058}; 1059};
1059 1060
1060 1061
1061/** 1062/**
1062 * Types of different pending messages. 1063 * Types of different pending messages.
1063 */ 1064 */
1064enum PendingMessageType 1065enum PendingMessageType
1065{ 1066{
1066 1067
@@ -1084,7 +1085,7 @@ enum PendingMessageType
1084 */ 1085 */
1085 PMT_ACKNOWLEDGEMENT = 3 1086 PMT_ACKNOWLEDGEMENT = 3
1086 1087
1087 1088
1088}; 1089};
1089 1090
1090 1091
@@ -1101,13 +1102,13 @@ enum PendingMessageType
1101 * either calculate the next fragment (based on @e frag_off) from the 1102 * either calculate the next fragment (based on @e frag_off) from the
1102 * current node, or, if all fragments have already been created, 1103 * current node, or, if all fragments have already been created,
1103 * descend to the @e head_frag. Even though the node was already 1104 * descend to the @e head_frag. Even though the node was already
1104 * fragmented, the fragment may be too big if the fragment was 1105 * fragmented, the fragment may be too big if the fragment was
1105 * generated for a queue with a larger MTU. In this case, the node 1106 * generated for a queue with a larger MTU. In this case, the node
1106 * may be fragmented again, thus creating a tree. 1107 * may be fragmented again, thus creating a tree.
1107 * 1108 *
1108 * When acknowledgements for fragments are received, the tree 1109 * When acknowledgements for fragments are received, the tree
1109 * must be pruned, removing those parts that were already 1110 * must be pruned, removing those parts that were already
1110 * acknowledged. When fragments are sent over a reliable 1111 * acknowledged. When fragments are sent over a reliable
1111 * channel, they can be immediately removed. 1112 * channel, they can be immediately removed.
1112 * 1113 *
1113 * If a message is ever fragmented, then the original "full" message 1114 * If a message is ever fragmented, then the original "full" message
@@ -1130,7 +1131,7 @@ struct PendingMessage
1130 * Kept in a MDLL of messages from this @a client (if @e pmt is #PMT_CORE) 1131 * Kept in a MDLL of messages from this @a client (if @e pmt is #PMT_CORE)
1131 */ 1132 */
1132 struct PendingMessage *next_client; 1133 struct PendingMessage *next_client;
1133 1134
1134 /** 1135 /**
1135 * Kept in a MDLL of messages from this @a client (if @e pmt is #PMT_CORE) 1136 * Kept in a MDLL of messages from this @a client (if @e pmt is #PMT_CORE)
1136 */ 1137 */
@@ -1140,7 +1141,7 @@ struct PendingMessage
1140 * Kept in a MDLL of messages from this @a cpm (if @e pmt is #PMT_FRAGMENT_BOx) 1141 * Kept in a MDLL of messages from this @a cpm (if @e pmt is #PMT_FRAGMENT_BOx)
1141 */ 1142 */
1142 struct PendingMessage *next_frag; 1143 struct PendingMessage *next_frag;
1143 1144
1144 /** 1145 /**
1145 * Kept in a MDLL of messages from this @a cpm (if @e pmt is #PMT_FRAGMENT_BOX) 1146 * Kept in a MDLL of messages from this @a cpm (if @e pmt is #PMT_FRAGMENT_BOX)
1146 */ 1147 */
@@ -1148,24 +1149,24 @@ struct PendingMessage
1148 1149
1149 /** 1150 /**
1150 * This message, reliability boxed. Only possibly available if @e pmt is #PMT_CORE. 1151 * This message, reliability boxed. Only possibly available if @e pmt is #PMT_CORE.
1151 */ 1152 */
1152 struct PendingMessage *bpm; 1153 struct PendingMessage *bpm;
1153 1154
1154 /** 1155 /**
1155 * Target of the request. 1156 * Target of the request.
1156 */ 1157 */
1157 struct Neighbour *target; 1158 struct Neighbour *target;
1158 1159
1159 /** 1160 /**
1160 * Client that issued the transmission request, if @e pmt is #PMT_CORE. 1161 * Client that issued the transmission request, if @e pmt is #PMT_CORE.
1161 */ 1162 */
1162 struct TransportClient *client; 1163 struct TransportClient *client;
1163 1164
1164 /** 1165 /**
1165 * Head of a MDLL of fragments created for this core message. 1166 * Head of a MDLL of fragments created for this core message.
1166 */ 1167 */
1167 struct PendingMessage *head_frag; 1168 struct PendingMessage *head_frag;
1168 1169
1169 /** 1170 /**
1170 * Tail of a MDLL of fragments created for this core message. 1171 * Tail of a MDLL of fragments created for this core message.
1171 */ 1172 */
@@ -1175,7 +1176,7 @@ struct PendingMessage
1175 * Our parent in the fragmentation tree. 1176 * Our parent in the fragmentation tree.
1176 */ 1177 */
1177 struct PendingMessage *frag_parent; 1178 struct PendingMessage *frag_parent;
1178 1179
1179 /** 1180 /**
1180 * At what time should we give up on the transmission (and no longer retry)? 1181 * At what time should we give up on the transmission (and no longer retry)?
1181 */ 1182 */
@@ -1191,12 +1192,12 @@ struct PendingMessage
1191 * initialized if @e msg_uuid_set is #GNUNET_YES). 1192 * initialized if @e msg_uuid_set is #GNUNET_YES).
1192 */ 1193 */
1193 struct GNUNET_ShortHashCode msg_uuid; 1194 struct GNUNET_ShortHashCode msg_uuid;
1194 1195
1195 /** 1196 /**
1196 * Counter incremented per generated fragment. 1197 * Counter incremented per generated fragment.
1197 */ 1198 */
1198 uint32_t frag_uuidgen; 1199 uint32_t frag_uuidgen;
1199 1200
1200 /** 1201 /**
1201 * Type of the pending message. 1202 * Type of the pending message.
1202 */ 1203 */
@@ -1209,14 +1210,14 @@ struct PendingMessage
1209 1210
1210 /** 1211 /**
1211 * Offset at which we should generate the next fragment. 1212 * Offset at which we should generate the next fragment.
1212 */ 1213 */
1213 uint16_t frag_off; 1214 uint16_t frag_off;
1214 1215
1215 /** 1216 /**
1216 * #GNUNET_YES once @e msg_uuid was initialized 1217 * #GNUNET_YES once @e msg_uuid was initialized
1217 */ 1218 */
1218 int16_t msg_uuid_set; 1219 int16_t msg_uuid_set;
1219 1220
1220 /* Followed by @e bytes_msg to transmit */ 1221 /* Followed by @e bytes_msg to transmit */
1221}; 1222};
1222 1223
@@ -1316,7 +1317,7 @@ struct TransportClient
1316 struct { 1317 struct {
1317 1318
1318 /** 1319 /**
1319 * Head of list of messages pending for this client, sorted by 1320 * Head of list of messages pending for this client, sorted by
1320 * transmission time ("next_attempt" + possibly internal prioritization). 1321 * transmission time ("next_attempt" + possibly internal prioritization).
1321 */ 1322 */
1322 struct PendingMessage *pending_msg_head; 1323 struct PendingMessage *pending_msg_head;
@@ -1384,7 +1385,7 @@ struct TransportClient
1384 * is globally unable to keep up. 1385 * is globally unable to keep up.
1385 */ 1386 */
1386 unsigned int total_queue_length; 1387 unsigned int total_queue_length;
1387 1388
1388 /** 1389 /**
1389 * Characteristics of this communicator. 1390 * Characteristics of this communicator.
1390 */ 1391 */
@@ -1559,7 +1560,7 @@ free_distance_vector_hop (struct DistanceVectorHop *dvh)
1559 GNUNET_free (dvh); 1560 GNUNET_free (dvh);
1560 if (NULL == dv->dv_head) 1561 if (NULL == dv->dv_head)
1561 { 1562 {
1562 GNUNET_assert (GNUNET_YES == 1563 GNUNET_assert (GNUNET_YES ==
1563 GNUNET_CONTAINER_multipeermap_remove (dv_routes, 1564 GNUNET_CONTAINER_multipeermap_remove (dv_routes,
1564 &dv->target, 1565 &dv->target,
1565 dv)); 1566 dv));
@@ -1764,7 +1765,7 @@ free_reassembly_cb (void *cls,
1764 struct ReassemblyContext *rc = value; 1765 struct ReassemblyContext *rc = value;
1765 (void) cls; 1766 (void) cls;
1766 (void) key; 1767 (void) key;
1767 1768
1768 free_reassembly_context (rc); 1769 free_reassembly_context (rc);
1769 return GNUNET_OK; 1770 return GNUNET_OK;
1770} 1771}
@@ -1779,7 +1780,7 @@ static void
1779free_neighbour (struct Neighbour *neighbour) 1780free_neighbour (struct Neighbour *neighbour)
1780{ 1781{
1781 struct DistanceVectorHop *dvh; 1782 struct DistanceVectorHop *dvh;
1782 1783
1783 GNUNET_assert (NULL == neighbour->session_head); 1784 GNUNET_assert (NULL == neighbour->session_head);
1784 GNUNET_assert (GNUNET_YES == 1785 GNUNET_assert (GNUNET_YES ==
1785 GNUNET_CONTAINER_multipeermap_remove (neighbours, 1786 GNUNET_CONTAINER_multipeermap_remove (neighbours,
@@ -1881,25 +1882,25 @@ cores_send_disconnect_info (const struct GNUNET_PeerIdentity *pid)
1881 1882
1882/** 1883/**
1883 * We believe we are ready to transmit a message on a queue. Double-checks 1884 * We believe we are ready to transmit a message on a queue. Double-checks
1884 * with the queue's "tracker_out" and then gives the message to the 1885 * with the queue's "tracker_out" and then gives the message to the
1885 * communicator for transmission (updating the tracker, and re-scheduling 1886 * communicator for transmission (updating the tracker, and re-scheduling
1886 * itself if applicable). 1887 * itself if applicable).
1887 * 1888 *
1888 * @param cls the `struct GNUNET_ATS_Session` to process transmissions for 1889 * @param cls the `struct GNUNET_ATS_Session` to process transmissions for
1889 */ 1890 */
1890static void 1891static void
1891transmit_on_queue (void *cls); 1892transmit_on_queue (void *cls);
1892 1893
1893 1894
1894/** 1895/**
1895 * Schedule next run of #transmit_on_queue(). Does NOTHING if 1896 * Schedule next run of #transmit_on_queue(). Does NOTHING if
1896 * we should run immediately or if the message queue is empty. 1897 * we should run immediately or if the message queue is empty.
1897 * Test for no task being added AND queue not being empty to 1898 * Test for no task being added AND queue not being empty to
1898 * transmit immediately afterwards! This function must only 1899 * transmit immediately afterwards! This function must only
1899 * be called if the message queue is non-empty! 1900 * be called if the message queue is non-empty!
1900 * 1901 *
1901 * @param queue the queue to do scheduling for 1902 * @param queue the queue to do scheduling for
1902 */ 1903 */
1903static void 1904static void
1904schedule_transmit_on_queue (struct GNUNET_ATS_Session *queue) 1905schedule_transmit_on_queue (struct GNUNET_ATS_Session *queue)
1905{ 1906{
@@ -1914,7 +1915,7 @@ schedule_transmit_on_queue (struct GNUNET_ATS_Session *queue)
1914 GNUNET_STATISTICS_update (GST_stats, 1915 GNUNET_STATISTICS_update (GST_stats,
1915 "# Transmission throttled due to communicator queue limit", 1916 "# Transmission throttled due to communicator queue limit",
1916 1, 1917 1,
1917 GNUNET_NO); 1918 GNUNET_NO);
1918 return; 1919 return;
1919 } 1920 }
1920 if (queue->queue_length >= SESSION_QUEUE_LIMIT) 1921 if (queue->queue_length >= SESSION_QUEUE_LIMIT)
@@ -1922,10 +1923,10 @@ schedule_transmit_on_queue (struct GNUNET_ATS_Session *queue)
1922 GNUNET_STATISTICS_update (GST_stats, 1923 GNUNET_STATISTICS_update (GST_stats,
1923 "# Transmission throttled due to session queue limit", 1924 "# Transmission throttled due to session queue limit",
1924 1, 1925 1,
1925 GNUNET_NO); 1926 GNUNET_NO);
1926 return; 1927 return;
1927 } 1928 }
1928 1929
1929 wsize = (0 == queue->mtu) 1930 wsize = (0 == queue->mtu)
1930 ? pm->bytes_msg /* FIXME: add overheads? */ 1931 ? pm->bytes_msg /* FIXME: add overheads? */
1931 : queue->mtu; 1932 : queue->mtu;
@@ -2213,7 +2214,7 @@ check_client_send (void *cls,
2213 * Free fragment tree below @e root, excluding @e root itself. 2214 * Free fragment tree below @e root, excluding @e root itself.
2214 * 2215 *
2215 * @param root root of the tree to free 2216 * @param root root of the tree to free
2216 */ 2217 */
2217static void 2218static void
2218free_fragment_tree (struct PendingMessage *root) 2219free_fragment_tree (struct PendingMessage *root)
2219{ 2220{
@@ -2328,7 +2329,7 @@ check_queue_timeouts (void *cls)
2328 GNUNET_NO); 2329 GNUNET_NO);
2329 client_send_response (pm, 2330 client_send_response (pm,
2330 GNUNET_NO, 2331 GNUNET_NO,
2331 0); 2332 0);
2332 continue; 2333 continue;
2333 } 2334 }
2334 earliest_timeout = GNUNET_TIME_absolute_min (earliest_timeout, 2335 earliest_timeout = GNUNET_TIME_absolute_min (earliest_timeout,
@@ -2407,7 +2408,7 @@ handle_client_send (void *cls,
2407 target->earliest_timeout.abs_value_us = pm->timeout.abs_value_us; 2408 target->earliest_timeout.abs_value_us = pm->timeout.abs_value_us;
2408 if (NULL != target->timeout_task) 2409 if (NULL != target->timeout_task)
2409 GNUNET_SCHEDULER_cancel (target->timeout_task); 2410 GNUNET_SCHEDULER_cancel (target->timeout_task);
2410 target->timeout_task 2411 target->timeout_task
2411 = GNUNET_SCHEDULER_add_at (target->earliest_timeout, 2412 = GNUNET_SCHEDULER_add_at (target->earliest_timeout,
2412 &check_queue_timeouts, 2413 &check_queue_timeouts,
2413 target); 2414 target);
@@ -2542,7 +2543,7 @@ expire_ephemerals (void *cls)
2542 * one, cache it and return it. 2543 * one, cache it and return it.
2543 * 2544 *
2544 * @param pid peer to look up ephemeral for 2545 * @param pid peer to look up ephemeral for
2545 * @param private_key[out] set to the private key 2546 * @param private_key[out] set to the private key
2546 * @param ephemeral_key[out] set to the key 2547 * @param ephemeral_key[out] set to the key
2547 * @param ephemeral_sender_sig[out] set to the signature 2548 * @param ephemeral_sender_sig[out] set to the signature
2548 * @param ephemeral_validity[out] set to the validity expiration time 2549 * @param ephemeral_validity[out] set to the validity expiration time
@@ -2556,7 +2557,7 @@ lookup_ephemeral (const struct GNUNET_PeerIdentity *pid,
2556{ 2557{
2557 struct EphemeralCacheEntry *ece; 2558 struct EphemeralCacheEntry *ece;
2558 struct EphemeralConfirmation ec; 2559 struct EphemeralConfirmation ec;
2559 2560
2560 ece = GNUNET_CONTAINER_multipeermap_get (ephemeral_map, 2561 ece = GNUNET_CONTAINER_multipeermap_get (ephemeral_map,
2561 pid); 2562 pid);
2562 if ( (NULL != ece) && 2563 if ( (NULL != ece) &&
@@ -2618,7 +2619,7 @@ route_message (const struct GNUNET_PeerIdentity *target,
2618 GNUNET_free (hdr); 2619 GNUNET_free (hdr);
2619} 2620}
2620 2621
2621 2622
2622/** 2623/**
2623 * Communicator requests backchannel transmission. Process the request. 2624 * Communicator requests backchannel transmission. Process the request.
2624 * 2625 *
@@ -2636,7 +2637,7 @@ handle_communicator_backchannel (void *cls,
2636 struct TransportBackchannelRequestPayload ppay; 2637 struct TransportBackchannelRequestPayload ppay;
2637 char *mpos; 2638 char *mpos;
2638 uint16_t msize; 2639 uint16_t msize;
2639 2640
2640 /* encapsulate and encrypt message */ 2641 /* encapsulate and encrypt message */
2641 msize = ntohs (cb->header.size) - sizeof (*cb) + sizeof (struct TransportBackchannelRequestPayload); 2642 msize = ntohs (cb->header.size) - sizeof (*cb) + sizeof (struct TransportBackchannelRequestPayload);
2642 enc = GNUNET_malloc (sizeof (*enc) + msize); 2643 enc = GNUNET_malloc (sizeof (*enc) + msize);
@@ -2871,7 +2872,7 @@ struct CommunicatorMessageContext
2871 * 2872 *
2872 * @param cmc context for demultiplexing 2873 * @param cmc context for demultiplexing
2873 * @param msg message to demultiplex 2874 * @param msg message to demultiplex
2874 */ 2875 */
2875static void 2876static void
2876demultiplex_with_cmc (struct CommunicatorMessageContext *cmc, 2877demultiplex_with_cmc (struct CommunicatorMessageContext *cmc,
2877 const struct GNUNET_MessageHeader *msg); 2878 const struct GNUNET_MessageHeader *msg);
@@ -2949,7 +2950,7 @@ handle_raw_message (void *cls,
2949 env); 2950 env);
2950 } 2951 }
2951 /* FIXME: consider doing this _only_ once the message 2952 /* FIXME: consider doing this _only_ once the message
2952 was drained from the CORE MQs to extend flow control to CORE! 2953 was drained from the CORE MQs to extend flow control to CORE!
2953 (basically, increment counter in cmc, decrement on MQ send continuation! */ 2954 (basically, increment counter in cmc, decrement on MQ send continuation! */
2954 finish_cmc_handling (cmc); 2955 finish_cmc_handling (cmc);
2955} 2956}
@@ -2974,12 +2975,12 @@ check_fragment_box (void *cls,
2974 GNUNET_break_op (0); 2975 GNUNET_break_op (0);
2975 return GNUNET_SYSERR; 2976 return GNUNET_SYSERR;
2976 } 2977 }
2977 if (bsize + ntohs (fb->frag_off) > ntohs (fb->msg_size)) 2978 if (bsize + ntohs (fb->frag_off) > ntohs (fb->msg_size))
2978 { 2979 {
2979 GNUNET_break_op (0); 2980 GNUNET_break_op (0);
2980 return GNUNET_SYSERR; 2981 return GNUNET_SYSERR;
2981 } 2982 }
2982 if (ntohs (fb->frag_off) >= ntohs (fb->msg_size)) 2983 if (ntohs (fb->frag_off) >= ntohs (fb->msg_size))
2983 { 2984 {
2984 GNUNET_break_op (0); 2985 GNUNET_break_op (0);
2985 return GNUNET_SYSERR; 2986 return GNUNET_SYSERR;
@@ -3046,7 +3047,7 @@ handle_fragment_box (void *cls,
3046 if (NULL == n) 3047 if (NULL == n)
3047 { 3048 {
3048 struct GNUNET_SERVICE_Client *client = cmc->tc->client; 3049 struct GNUNET_SERVICE_Client *client = cmc->tc->client;
3049 3050
3050 GNUNET_break (0); 3051 GNUNET_break (0);
3051 finish_cmc_handling (cmc); 3052 finish_cmc_handling (cmc);
3052 GNUNET_SERVICE_client_drop (client); 3053 GNUNET_SERVICE_client_drop (client);
@@ -3096,7 +3097,7 @@ handle_fragment_box (void *cls,
3096 finish_cmc_handling (cmc); 3097 finish_cmc_handling (cmc);
3097 return; 3098 return;
3098 } 3099 }
3099 3100
3100 /* reassemble */ 3101 /* reassemble */
3101 fsize = ntohs (fb->header.size) - sizeof (*fb); 3102 fsize = ntohs (fb->header.size) - sizeof (*fb);
3102 frag_off = ntohs (fb->frag_off); 3103 frag_off = ntohs (fb->frag_off);
@@ -3112,7 +3113,7 @@ handle_fragment_box (void *cls,
3112 rc->msg_missing--; 3113 rc->msg_missing--;
3113 } 3114 }
3114 } 3115 }
3115 3116
3116 /* Compute cummulative ACK */ 3117 /* Compute cummulative ACK */
3117 frag_uuid = ntohl (fb->frag_uuid); 3118 frag_uuid = ntohl (fb->frag_uuid);
3118 cdelay = GNUNET_TIME_absolute_get_duration (rc->last_frag); 3119 cdelay = GNUNET_TIME_absolute_get_duration (rc->last_frag);
@@ -3151,7 +3152,7 @@ handle_fragment_box (void *cls,
3151 ( (rc->frag_uuid < frag_uuid + 64) && 3152 ( (rc->frag_uuid < frag_uuid + 64) &&
3152 (rc->extra_acks == (rc->extra_acks & ~ ((1LLU << (64 - (rc->frag_uuid - frag_uuid))) - 1LLU))) ) ) ) 3153 (rc->extra_acks == (rc->extra_acks & ~ ((1LLU << (64 - (rc->frag_uuid - frag_uuid))) - 1LLU))) ) ) )
3153 { 3154 {
3154 /* can fit ack by shifting extra acks and starting at 3155 /* can fit ack by shifting extra acks and starting at
3155 frag_uid, test above esured that the bits we will 3156 frag_uid, test above esured that the bits we will
3156 shift 'extra_acks' by are all zero. */ 3157 shift 'extra_acks' by are all zero. */
3157 rc->extra_acks <<= (rc->frag_uuid - frag_uuid); 3158 rc->extra_acks <<= (rc->frag_uuid - frag_uuid);
@@ -3162,8 +3163,8 @@ handle_fragment_box (void *cls,
3162 if (65 == rc->num_acks) /* FIXME: maybe use smaller threshold? This is very aggressive. */ 3163 if (65 == rc->num_acks) /* FIXME: maybe use smaller threshold? This is very aggressive. */
3163 ack_now = GNUNET_YES; /* maximum acks received */ 3164 ack_now = GNUNET_YES; /* maximum acks received */
3164 // FIXME: possibly also ACK based on RTT (but for that we'd need to 3165 // FIXME: possibly also ACK based on RTT (but for that we'd need to
3165 // determine the session used for the ACK first!) 3166 // determine the session used for the ACK first!)
3166 3167
3167 /* is reassembly complete? */ 3168 /* is reassembly complete? */
3168 if (0 != rc->msg_missing) 3169 if (0 != rc->msg_missing)
3169 { 3170 {
@@ -3187,7 +3188,7 @@ handle_fragment_box (void *cls,
3187 msg); 3188 msg);
3188 /* FIXME: really free here? Might be bad if fragments are still 3189 /* FIXME: really free here? Might be bad if fragments are still
3189 en-route and we forget that we finished this reassembly immediately! 3190 en-route and we forget that we finished this reassembly immediately!
3190 -> keep around until timeout? 3191 -> keep around until timeout?
3191 -> shorten timeout based on ACK? */ 3192 -> shorten timeout based on ACK? */
3192 free_reassembly_context (rc); 3193 free_reassembly_context (rc);
3193} 3194}
@@ -3204,7 +3205,7 @@ handle_fragment_ack (void *cls,
3204 const struct TransportFragmentAckMessage *fa) 3205 const struct TransportFragmentAckMessage *fa)
3205{ 3206{
3206 struct CommunicatorMessageContext *cmc = cls; 3207 struct CommunicatorMessageContext *cmc = cls;
3207 3208
3208 // FIXME: do work: identify original message; then identify fragments being acked; 3209 // FIXME: do work: identify original message; then identify fragments being acked;
3209 // remove those from the tree to prevent retransmission; 3210 // remove those from the tree to prevent retransmission;
3210 // compute RTT 3211 // compute RTT
@@ -3248,10 +3249,10 @@ handle_reliability_box (void *cls,
3248 3249
3249 /* FIXME: implement cummulative ACKs and ack_countdown, 3250 /* FIXME: implement cummulative ACKs and ack_countdown,
3250 then setting the avg_ack_delay field below: */ 3251 then setting the avg_ack_delay field below: */
3251 ack = GNUNET_malloc (sizeof (*ack) + 3252 ack = GNUNET_malloc (sizeof (*ack) +
3252 sizeof (struct GNUNET_ShortHashCode)); 3253 sizeof (struct GNUNET_ShortHashCode));
3253 ack->header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_ACK); 3254 ack->header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_ACK);
3254 ack->header.size = htons (sizeof (*ack) + 3255 ack->header.size = htons (sizeof (*ack) +
3255 sizeof (struct GNUNET_ShortHashCode)); 3256 sizeof (struct GNUNET_ShortHashCode));
3256 memcpy (&ack[1], 3257 memcpy (&ack[1],
3257 &rb->msg_uuid, 3258 &rb->msg_uuid,
@@ -3276,7 +3277,7 @@ handle_reliability_ack (void *cls,
3276 const struct TransportReliabilityAckMessage *ra) 3277 const struct TransportReliabilityAckMessage *ra)
3277{ 3278{
3278 struct CommunicatorMessageContext *cmc = cls; 3279 struct CommunicatorMessageContext *cmc = cls;
3279 3280
3280 // FIXME: do work: find message that was acknowledged, and 3281 // FIXME: do work: find message that was acknowledged, and
3281 // remove from transmission queue; update RTT. 3282 // remove from transmission queue; update RTT.
3282 finish_cmc_handling (cmc); 3283 finish_cmc_handling (cmc);
@@ -3331,7 +3332,7 @@ handle_backchannel_encapsulation (void *cls,
3331 // FIXME: check HMAC 3332 // FIXME: check HMAC
3332 // FIXME: decrypt payload 3333 // FIXME: decrypt payload
3333 // FIXME: forward to specified communicator! 3334 // FIXME: forward to specified communicator!
3334 // (using GNUNET_MESSAGE_TYPE_TRANSPORT_COMMUNICATOR_BACKCHANNEL_INCOMING) 3335 // (using GNUNET_MESSAGE_TYPE_TRANSPORT_COMMUNICATOR_BACKCHANNEL_INCOMING)
3335 finish_cmc_handling (cmc); 3336 finish_cmc_handling (cmc);
3336} 3337}
3337 3338
@@ -3388,7 +3389,7 @@ handle_dv_learn (void *cls,
3388 const struct TransportDVLearn *dvl) 3389 const struct TransportDVLearn *dvl)
3389{ 3390{
3390 struct CommunicatorMessageContext *cmc = cls; 3391 struct CommunicatorMessageContext *cmc = cls;
3391 3392
3392 // FIXME: learn path from DV message (if bi-directional flags are set) 3393 // FIXME: learn path from DV message (if bi-directional flags are set)
3393 // FIXME: expand DV message, forward on (unless path is getting too long) 3394 // FIXME: expand DV message, forward on (unless path is getting too long)
3394 finish_cmc_handling (cmc); 3395 finish_cmc_handling (cmc);
@@ -3419,7 +3420,7 @@ check_dv_box (void *cls,
3419 return GNUNET_SYSERR; 3420 return GNUNET_SYSERR;
3420 } 3421 }
3421 isize = ntohs (inbox->size); 3422 isize = ntohs (inbox->size);
3422 if (size != sizeof (*dvb) + num_hops * sizeof (struct GNUNET_PeerIdentity) + isize) 3423 if (size != sizeof (*dvb) + num_hops * sizeof (struct GNUNET_PeerIdentity) + isize)
3423 { 3424 {
3424 GNUNET_break_op (0); 3425 GNUNET_break_op (0);
3425 return GNUNET_SYSERR; 3426 return GNUNET_SYSERR;
@@ -3455,14 +3456,14 @@ handle_dv_box (void *cls,
3455 { 3456 {
3456 // FIXME: if we are not the target, shorten path and forward along. 3457 // FIXME: if we are not the target, shorten path and forward along.
3457 // Try from the _end_ of hops array if we know the given 3458 // Try from the _end_ of hops array if we know the given
3458 // neighbour (shortening the path!). 3459 // neighbour (shortening the path!).
3459 // NOTE: increment total_hops! 3460 // NOTE: increment total_hops!
3460 finish_cmc_handling (cmc); 3461 finish_cmc_handling (cmc);
3461 return; 3462 return;
3462 } 3463 }
3463 /* We are the target. Unbox and handle message. */ 3464 /* We are the target. Unbox and handle message. */
3464 cmc->im.sender = dvb->origin; 3465 cmc->im.sender = dvb->origin;
3465 cmc->total_hops = ntohs (dvb->total_hops); 3466 cmc->total_hops = ntohs (dvb->total_hops);
3466 demultiplex_with_cmc (cmc, 3467 demultiplex_with_cmc (cmc,
3467 inbox); 3468 inbox);
3468} 3469}
@@ -3516,7 +3517,7 @@ handle_incoming_msg (void *cls,
3516 * 3517 *
3517 * @param cmc context for demultiplexing 3518 * @param cmc context for demultiplexing
3518 * @param msg message to demultiplex 3519 * @param msg message to demultiplex
3519 */ 3520 */
3520static void 3521static void
3521demultiplex_with_cmc (struct CommunicatorMessageContext *cmc, 3522demultiplex_with_cmc (struct CommunicatorMessageContext *cmc,
3522 const struct GNUNET_MessageHeader *msg) 3523 const struct GNUNET_MessageHeader *msg)
@@ -3606,7 +3607,7 @@ tracker_update_in_cb (void *cls)
3606 struct GNUNET_ATS_Session *queue = cls; 3607 struct GNUNET_ATS_Session *queue = cls;
3607 struct GNUNET_TIME_Relative in_delay; 3608 struct GNUNET_TIME_Relative in_delay;
3608 unsigned int rsize; 3609 unsigned int rsize;
3609 3610
3610 rsize = (0 == queue->mtu) ? IN_PACKET_SIZE_WITHOUT_MTU : queue->mtu; 3611 rsize = (0 == queue->mtu) ? IN_PACKET_SIZE_WITHOUT_MTU : queue->mtu;
3611 in_delay = GNUNET_BANDWIDTH_tracker_get_delay (&queue->tracker_in, 3612 in_delay = GNUNET_BANDWIDTH_tracker_get_delay (&queue->tracker_in,
3612 rsize); 3613 rsize);
@@ -3632,7 +3633,7 @@ set_pending_message_uuid (struct PendingMessage *pm)
3632 3633
3633 3634
3634/** 3635/**
3635 * Fragment the given @a pm to the given @a mtu. Adds 3636 * Fragment the given @a pm to the given @a mtu. Adds
3636 * additional fragments to the neighbour as well. If the 3637 * additional fragments to the neighbour as well. If the
3637 * @a mtu is too small, generates and error for the @a pm 3638 * @a mtu is too small, generates and error for the @a pm
3638 * and returns NULL. 3639 * and returns NULL.
@@ -3648,7 +3649,7 @@ fragment_message (struct PendingMessage *pm,
3648 struct PendingMessage *ff; 3649 struct PendingMessage *ff;
3649 3650
3650 set_pending_message_uuid (pm); 3651 set_pending_message_uuid (pm);
3651 3652
3652 /* This invariant is established in #handle_add_queue_message() */ 3653 /* This invariant is established in #handle_add_queue_message() */
3653 GNUNET_assert (mtu > sizeof (struct TransportFragmentBox)); 3654 GNUNET_assert (mtu > sizeof (struct TransportFragmentBox));
3654 3655
@@ -3756,7 +3757,7 @@ reliability_box_message (struct PendingMessage *pm)
3756 if (NULL != pm->bpm) 3757 if (NULL != pm->bpm)
3757 return pm->bpm; /* already computed earlier: do nothing */ 3758 return pm->bpm; /* already computed earlier: do nothing */
3758 GNUNET_assert (NULL == pm->head_frag); 3759 GNUNET_assert (NULL == pm->head_frag);
3759 if (pm->bytes_msg + sizeof (rbox) > UINT16_MAX) 3760 if (pm->bytes_msg + sizeof (rbox) > UINT16_MAX)
3760 { 3761 {
3761 /* failed hard */ 3762 /* failed hard */
3762 GNUNET_break (0); 3763 GNUNET_break (0);
@@ -3766,7 +3767,7 @@ reliability_box_message (struct PendingMessage *pm)
3766 return NULL; 3767 return NULL;
3767 } 3768 }
3768 bpm = GNUNET_malloc (sizeof (struct PendingMessage) + 3769 bpm = GNUNET_malloc (sizeof (struct PendingMessage) +
3769 sizeof (rbox) + 3770 sizeof (rbox) +
3770 pm->bytes_msg); 3771 pm->bytes_msg);
3771 bpm->target = pm->target; 3772 bpm->target = pm->target;
3772 bpm->frag_parent = pm; 3773 bpm->frag_parent = pm;
@@ -3796,12 +3797,12 @@ reliability_box_message (struct PendingMessage *pm)
3796 3797
3797/** 3798/**
3798 * We believe we are ready to transmit a message on a queue. Double-checks 3799 * We believe we are ready to transmit a message on a queue. Double-checks
3799 * with the queue's "tracker_out" and then gives the message to the 3800 * with the queue's "tracker_out" and then gives the message to the
3800 * communicator for transmission (updating the tracker, and re-scheduling 3801 * communicator for transmission (updating the tracker, and re-scheduling
3801 * itself if applicable). 3802 * itself if applicable).
3802 * 3803 *
3803 * @param cls the `struct GNUNET_ATS_Session` to process transmissions for 3804 * @param cls the `struct GNUNET_ATS_Session` to process transmissions for
3804 */ 3805 */
3805static void 3806static void
3806transmit_on_queue (void *cls) 3807transmit_on_queue (void *cls)
3807{ 3808{
@@ -3818,7 +3819,7 @@ transmit_on_queue (void *cls)
3818 if (NULL == (pm = n->pending_msg_head)) 3819 if (NULL == (pm = n->pending_msg_head))
3819 { 3820 {
3820 /* no message pending, nothing to do here! */ 3821 /* no message pending, nothing to do here! */
3821 return; 3822 return;
3822 } 3823 }
3823 schedule_transmit_on_queue (queue); 3824 schedule_transmit_on_queue (queue);
3824 if (NULL != queue->transmit_task) 3825 if (NULL != queue->transmit_task)
@@ -3874,7 +3875,7 @@ transmit_on_queue (void *cls)
3874 queue->tc->details.communicator.total_queue_length++; 3875 queue->tc->details.communicator.total_queue_length++;
3875 GNUNET_MQ_send (queue->tc->mq, 3876 GNUNET_MQ_send (queue->tc->mq,
3876 env); 3877 env);
3877 3878
3878 // FIXME: do something similar to the logic below 3879 // FIXME: do something similar to the logic below
3879 // in defragmentation / reliability ACK handling! 3880 // in defragmentation / reliability ACK handling!
3880 3881
@@ -3892,7 +3893,7 @@ transmit_on_queue (void *cls)
3892 (PMT_FRAGMENT_BOX == s->pmt) ) 3893 (PMT_FRAGMENT_BOX == s->pmt) )
3893 { 3894 {
3894 struct PendingMessage *pos; 3895 struct PendingMessage *pos;
3895 3896
3896 /* Fragment sent over reliabile channel */ 3897 /* Fragment sent over reliabile channel */
3897 free_fragment_tree (s); 3898 free_fragment_tree (s);
3898 pos = s->frag_parent; 3899 pos = s->frag_parent;
@@ -3912,9 +3913,9 @@ transmit_on_queue (void *cls)
3912 pos->head_frag, 3913 pos->head_frag,
3913 pos->tail_frag, 3914 pos->tail_frag,
3914 s); 3915 s);
3915 GNUNET_free (s); 3916 GNUNET_free (s);
3916 } 3917 }
3917 3918
3918 /* Was this the last applicable fragmment? */ 3919 /* Was this the last applicable fragmment? */
3919 if ( (NULL == pm->head_frag) && 3920 if ( (NULL == pm->head_frag) &&
3920 (pm->frag_off == pm->bytes_msg) ) 3921 (pm->frag_off == pm->bytes_msg) )
@@ -3981,7 +3982,7 @@ transmit_on_queue (void *cls)
3981 s); 3982 s);
3982 } 3983 }
3983 } 3984 }
3984 3985
3985 /* finally, re-schedule queue transmission task itself */ 3986 /* finally, re-schedule queue transmission task itself */
3986 schedule_transmit_on_queue (queue); 3987 schedule_transmit_on_queue (queue);
3987} 3988}
@@ -4023,13 +4024,13 @@ tracker_excess_out_cb (void *cls)
4023{ 4024{
4024 /* FIXME: trigger excess bandwidth report to core? Right now, 4025 /* FIXME: trigger excess bandwidth report to core? Right now,
4025 this is done internally within transport_api2_core already, 4026 this is done internally within transport_api2_core already,
4026 but we probably want to change the logic and trigger it 4027 but we probably want to change the logic and trigger it
4027 from here via a message instead! */ 4028 from here via a message instead! */
4028 /* TODO: maybe inform ATS at this point? */ 4029 /* TODO: maybe inform ATS at this point? */
4029 GNUNET_STATISTICS_update (GST_stats, 4030 GNUNET_STATISTICS_update (GST_stats,
4030 "# Excess outbound bandwidth reported", 4031 "# Excess outbound bandwidth reported",
4031 1, 4032 1,
4032 GNUNET_NO); 4033 GNUNET_NO);
4033} 4034}
4034 4035
4035 4036
@@ -4047,7 +4048,7 @@ tracker_excess_in_cb (void *cls)
4047 GNUNET_STATISTICS_update (GST_stats, 4048 GNUNET_STATISTICS_update (GST_stats,
4048 "# Excess inbound bandwidth reported", 4049 "# Excess inbound bandwidth reported",
4049 1, 4050 1,
4050 GNUNET_NO); 4051 GNUNET_NO);
4051} 4052}
4052 4053
4053 4054
@@ -4126,7 +4127,7 @@ handle_add_queue_message (void *cls,
4126 .nt = queue->nt, 4127 .nt = queue->nt,
4127 .cc = tc->details.communicator.cc 4128 .cc = tc->details.communicator.cc
4128 }; 4129 };
4129 4130
4130 queue->sr = GNUNET_ATS_session_add (ats, 4131 queue->sr = GNUNET_ATS_session_add (ats,
4131 &neighbour->pid, 4132 &neighbour->pid,
4132 queue->address, 4133 queue->address,
@@ -4224,7 +4225,7 @@ handle_send_message_ack (void *cls,
4224{ 4225{
4225 struct TransportClient *tc = cls; 4226 struct TransportClient *tc = cls;
4226 struct QueueEntry *queue; 4227 struct QueueEntry *queue;
4227 4228
4228 if (CT_COMMUNICATOR != tc->type) 4229 if (CT_COMMUNICATOR != tc->type)
4229 { 4230 {
4230 GNUNET_break (0); 4231 GNUNET_break (0);
@@ -4251,12 +4252,12 @@ handle_send_message_ack (void *cls,
4251 queue = qe; 4252 queue = qe;
4252 break; 4253 break;
4253 } 4254 }
4254 break; 4255 break;
4255 } 4256 }
4256 if (NULL == queue) 4257 if (NULL == queue)
4257 { 4258 {
4258 /* this should never happen */ 4259 /* this should never happen */
4259 GNUNET_break (0); 4260 GNUNET_break (0);
4260 GNUNET_SERVICE_client_drop (tc->client); 4261 GNUNET_SERVICE_client_drop (tc->client);
4261 return; 4262 return;
4262 } 4263 }
@@ -4286,10 +4287,10 @@ handle_send_message_ack (void *cls,
4286 GNUNET_STATISTICS_update (GST_stats, 4287 GNUNET_STATISTICS_update (GST_stats,
4287 "# Transmission throttled due to session queue limit", 4288 "# Transmission throttled due to session queue limit",
4288 -1, 4289 -1,
4289 GNUNET_NO); 4290 GNUNET_NO);
4290 schedule_transmit_on_queue (queue->session); 4291 schedule_transmit_on_queue (queue->session);
4291 } 4292 }
4292 4293
4293 /* TODO: we also should react on the status! */ 4294 /* TODO: we also should react on the status! */
4294 // FIXME: this probably requires queue->pm = s assignment! 4295 // FIXME: this probably requires queue->pm = s assignment!
4295 // FIXME: react to communicator status about transmission request. We got: 4296 // FIXME: react to communicator status about transmission request. We got:
@@ -4452,7 +4453,7 @@ ats_suggestion_cb (void *cls,
4452 GNUNET_STATISTICS_update (GST_stats, 4453 GNUNET_STATISTICS_update (GST_stats,
4453 "# ATS suggestions ignored due to missing communicator", 4454 "# ATS suggestions ignored due to missing communicator",
4454 1, 4455 1,
4455 GNUNET_NO); 4456 GNUNET_NO);
4456 return; 4457 return;
4457 } 4458 }
4458 /* forward suggestion for queue creation to communicator */ 4459 /* forward suggestion for queue creation to communicator */
@@ -4481,7 +4482,7 @@ ats_suggestion_cb (void *cls,
4481 * 4482 *
4482 * @param cls the `struct TransportClient` 4483 * @param cls the `struct TransportClient`
4483 * @param cqr confirmation message 4484 * @param cqr confirmation message
4484 */ 4485 */
4485static void 4486static void
4486handle_queue_create_ok (void *cls, 4487handle_queue_create_ok (void *cls,
4487 const struct GNUNET_TRANSPORT_CreateQueueResponse *cqr) 4488 const struct GNUNET_TRANSPORT_CreateQueueResponse *cqr)
@@ -4501,7 +4502,7 @@ handle_queue_create_ok (void *cls,
4501 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 4502 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
4502 "Request #%u for communicator to create queue succeeded\n", 4503 "Request #%u for communicator to create queue succeeded\n",
4503 (unsigned int) ntohs (cqr->request_id)); 4504 (unsigned int) ntohs (cqr->request_id));
4504 GNUNET_SERVICE_client_continue (tc->client); 4505 GNUNET_SERVICE_client_continue (tc->client);
4505} 4506}
4506 4507
4507 4508
@@ -4512,7 +4513,7 @@ handle_queue_create_ok (void *cls,
4512 * 4513 *
4513 * @param cls the `struct TransportClient` 4514 * @param cls the `struct TransportClient`
4514 * @param cqr failure message 4515 * @param cqr failure message
4515 */ 4516 */
4516static void 4517static void
4517handle_queue_create_fail (void *cls, 4518handle_queue_create_fail (void *cls,
4518 const struct GNUNET_TRANSPORT_CreateQueueResponse *cqr) 4519 const struct GNUNET_TRANSPORT_CreateQueueResponse *cqr)
@@ -4532,7 +4533,61 @@ handle_queue_create_fail (void *cls,
4532 "# ATS suggestions failed in queue creation at communicator", 4533 "# ATS suggestions failed in queue creation at communicator",
4533 1, 4534 1,
4534 GNUNET_NO); 4535 GNUNET_NO);
4535 GNUNET_SERVICE_client_continue (tc->client); 4536 GNUNET_SERVICE_client_continue (tc->client);
4537}
4538
4539
4540/**
4541 * Check #GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_CONSIDER_VERIFY
4542 * messages. We do nothing here, real verification is done later.
4543 *
4544 * @param cls a `struct TransportClient *`
4545 * @param msg message to verify
4546 * @return #GNUNET_OK
4547 */
4548static int
4549check_address_consider_verify (void *cls,
4550 const struct GNUNET_TRANSPORT_AddressToVerify *hdr)
4551{
4552 (void) cls;
4553 (void) hdr;
4554 return GNUNET_OK;
4555}
4556
4557
4558/**
4559 * Given another peers address, consider checking it for validity
4560 * and then adding it to the Peerstore.
4561 *
4562 * @param cls a `struct TransportClient`
4563 * @param hdr message containing the raw address data and
4564 * signature in the body, see #GNUNET_HELLO_extract_address()
4565 */
4566static void
4567handle_address_consider_verify (void *cls,
4568 const struct GNUNET_TRANSPORT_AddressToVerify *hdr)
4569{
4570 char *address;
4571 enum GNUNET_NetworkType nt;
4572 struct GNUNET_TIME_Absolute expiration;
4573
4574 (void) cls;
4575 // FIXME: pre-check: do we know this address already?
4576 // FIXME: pre-check: rate-limit signature verification / validation!
4577 address = GNUNET_HELLO_extract_address (&hdr[1],
4578 ntohs (hdr->header.size) - sizeof (*hdr),
4579 &hdr->peer,
4580 &nt,
4581 &expiration);
4582 if (NULL == address)
4583 {
4584 GNUNET_break_op (0);
4585 return;
4586 }
4587 if (0 == GNUNET_TIME_absolute_get_remaining (expiration).rel_value_us)
4588 return; /* expired */
4589 // FIXME: do begin actual verification here!
4590 GNUNET_free (address);
4536} 4591}
4537 4592
4538 4593
@@ -4775,6 +4830,10 @@ GNUNET_SERVICE_MAIN
4775 GNUNET_MESSAGE_TYPE_TRANSPORT_QUEUE_SETUP, 4830 GNUNET_MESSAGE_TYPE_TRANSPORT_QUEUE_SETUP,
4776 struct GNUNET_TRANSPORT_AddQueueMessage, 4831 struct GNUNET_TRANSPORT_AddQueueMessage,
4777 NULL), 4832 NULL),
4833 GNUNET_MQ_hd_var_size (address_consider_verify,
4834 GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_CONSIDER_VERIFY,
4835 struct GNUNET_TRANSPORT_AddressToVerify,
4836 NULL),
4778 GNUNET_MQ_hd_fixed_size (del_queue_message, 4837 GNUNET_MQ_hd_fixed_size (del_queue_message,
4779 GNUNET_MESSAGE_TYPE_TRANSPORT_QUEUE_TEARDOWN, 4838 GNUNET_MESSAGE_TYPE_TRANSPORT_QUEUE_TEARDOWN,
4780 struct GNUNET_TRANSPORT_DelQueueMessage, 4839 struct GNUNET_TRANSPORT_DelQueueMessage,
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c
index 8d22d0c7a..6abe8d2d2 100644
--- a/src/transport/gnunet-service-transport_validation.c
+++ b/src/transport/gnunet-service-transport_validation.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -1115,7 +1115,8 @@ GST_validation_handle_ping (const struct GNUNET_PeerIdentity *sender,
1115 } 1115 }
1116 ping = (const struct TransportPingMessage *) hdr; 1116 ping = (const struct TransportPingMessage *) hdr;
1117 if (0 != 1117 if (0 !=
1118 memcmp (&ping->target, &GST_my_identity, 1118 memcmp (&ping->target,
1119 &GST_my_identity,
1119 sizeof (struct GNUNET_PeerIdentity))) 1120 sizeof (struct GNUNET_PeerIdentity)))
1120 { 1121 {
1121 GNUNET_STATISTICS_update (GST_stats, 1122 GNUNET_STATISTICS_update (GST_stats,
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c
index d93c4423c..a0dd80617 100644
--- a/src/transport/plugin_transport_tcp.c
+++ b/src/transport/plugin_transport_tcp.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -1471,6 +1471,12 @@ tcp_nat_port_map_callback (void *cls,
1471 args = sizeof (t4); 1471 args = sizeof (t4);
1472 break; 1472 break;
1473 case AF_INET6: 1473 case AF_INET6:
1474 if (IN6_IS_ADDR_LINKLOCAL (&((struct sockaddr_in6 *) addr)->sin6_addr))
1475 {
1476 /* skip link local, we don't allow them in
1477 #tcp_plugin_check_address() */
1478 return;
1479 }
1474 GNUNET_assert(addrlen == sizeof(struct sockaddr_in6)); 1480 GNUNET_assert(addrlen == sizeof(struct sockaddr_in6));
1475 memset (&t6, 0, sizeof(t6)); 1481 memset (&t6, 0, sizeof(t6));
1476 GNUNET_memcpy (&t6.ipv6_addr, 1482 GNUNET_memcpy (&t6.ipv6_addr,
diff --git a/src/transport/transport.h b/src/transport/transport.h
index 931ba4810..c0e02c3d9 100644
--- a/src/transport/transport.h
+++ b/src/transport/transport.h
@@ -1081,6 +1081,32 @@ struct GNUNET_TRANSPORT_MonitorData
1081 1081
1082}; 1082};
1083 1083
1084
1085/**
1086 * Request to verify address.
1087 */
1088struct GNUNET_TRANSPORT_AddressToVerify
1089{
1090
1091 /**
1092 * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_CONSIDER_VERIFY.
1093 */
1094 struct GNUNET_MessageHeader header;
1095
1096 /**
1097 * Reserved. 0.
1098 */
1099 uint32_t reserved;
1100
1101 /**
1102 * Peer the address is from.
1103 */
1104 struct GNUNET_PeerIdentity peer;
1105
1106 /* followed by variable-size raw address */
1107};
1108
1109
1084#endif 1110#endif
1085 1111
1086GNUNET_NETWORK_STRUCT_END 1112GNUNET_NETWORK_STRUCT_END
diff --git a/src/transport/transport_api2_address.c b/src/transport/transport_api2_address.c
new file mode 100644
index 000000000..1ff599efb
--- /dev/null
+++ b/src/transport/transport_api2_address.c
@@ -0,0 +1,249 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2009-2013, 2016, 2018, 2019 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19*/
20
21/**
22 * @file transport/transport_api2_address.c
23 * @brief library to inform the transport service about addresses to be validated
24 * @author Christian Grothoff
25 */
26#include "platform.h"
27#include "gnunet_util_lib.h"
28#include "gnunet_constants.h"
29#include "gnunet_protocols.h"
30#include "gnunet_transport_address_service.h"
31#include "gnunet_ats_transport_service.h"
32#include "transport.h"
33
34#define LOG(kind,...) GNUNET_log_from (kind, "transport-api-address",__VA_ARGS__)
35
36
37/**
38 * Handle for the transport service (includes all of the
39 * state for the transport service).
40 */
41struct GNUNET_TRANSPORT_AddressHandle
42{
43
44 /**
45 * My client connection to the transport service.
46 */
47 struct GNUNET_MQ_Handle *mq;
48
49 /**
50 * My configuration.
51 */
52 const struct GNUNET_CONFIGURATION_Handle *cfg;
53
54 /**
55 * ID of the task trying to reconnect to the service.
56 */
57 struct GNUNET_SCHEDULER_Task *reconnect_task;
58
59 /**
60 * Delay until we try to reconnect.
61 */
62 struct GNUNET_TIME_Relative reconnect_delay;
63
64};
65
66
67/**
68 * Function that will schedule the job that will try
69 * to connect us again to the client.
70 *
71 * @param h transport service to reconnect
72 */
73static void
74disconnect_and_schedule_reconnect (struct GNUNET_TRANSPORT_AddressHandle *h);
75
76
77/**
78 * Generic error handler, called with the appropriate
79 * error code and the same closure specified at the creation of
80 * the message queue.
81 * Not every message queue implementation supports an error handler.
82 *
83 * @param cls closure with the `struct GNUNET_TRANSPORT_AddressHandle *`
84 * @param error error code
85 */
86static void
87mq_error_handler (void *cls,
88 enum GNUNET_MQ_Error error)
89{
90 struct GNUNET_TRANSPORT_AddressHandle *h = cls;
91
92 LOG (GNUNET_ERROR_TYPE_DEBUG,
93 "Error receiving from transport service, disconnecting temporarily.\n");
94 disconnect_and_schedule_reconnect (h);
95}
96
97
98/**
99 * Try again to connect to transport service.
100 *
101 * @param cls the handle to the transport service
102 */
103static void
104reconnect (void *cls)
105{
106 struct GNUNET_TRANSPORT_AddressHandle *h = cls;
107 struct GNUNET_MQ_MessageHandler handlers[] = {
108 GNUNET_MQ_handler_end ()
109 };
110
111 h->reconnect_task = NULL;
112 LOG (GNUNET_ERROR_TYPE_DEBUG,
113 "Connecting to transport service.\n");
114 GNUNET_assert (NULL == h->mq);
115 h->mq = GNUNET_CLIENT_connect (h->cfg,
116 "transport",
117 handlers,
118 &mq_error_handler,
119 h);
120}
121
122
123/**
124 * Disconnect from the transport service.
125 *
126 * @param h transport service to disconnect
127 */
128static void
129disconnect (struct GNUNET_TRANSPORT_AddressHandle *h)
130{
131 if (NULL != h->mq)
132 {
133 GNUNET_MQ_destroy (h->mq);
134 h->mq = NULL;
135 }
136}
137
138
139/**
140 * Function that will schedule the job that will try
141 * to connect us again to the client.
142 *
143 * @param h transport service to reconnect
144 */
145static void
146disconnect_and_schedule_reconnect (struct GNUNET_TRANSPORT_AddressHandle *h)
147{
148 GNUNET_assert (NULL == h->reconnect_task);
149 disconnect (h);
150 LOG (GNUNET_ERROR_TYPE_DEBUG,
151 "Scheduling task to reconnect to transport service in %s.\n",
152 GNUNET_STRINGS_relative_time_to_string (h->reconnect_delay,
153 GNUNET_YES));
154 h->reconnect_task =
155 GNUNET_SCHEDULER_add_delayed (h->reconnect_delay,
156 &reconnect,
157 h);
158 h->reconnect_delay = GNUNET_TIME_STD_BACKOFF (h->reconnect_delay);
159}
160
161
162/**
163 * Connect to the transport service.
164 *
165 * @param cfg configuration to use
166 * @return NULL on error
167 */
168struct GNUNET_TRANSPORT_AddressHandle *
169GNUNET_TRANSPORT_address_connect (const struct GNUNET_CONFIGURATION_Handle *cfg)
170{
171 struct GNUNET_TRANSPORT_AddressHandle *h;
172
173 h = GNUNET_new (struct GNUNET_TRANSPORT_AddressHandle);
174 h->cfg = cfg;
175 h->reconnect_delay = GNUNET_TIME_UNIT_ZERO;
176 LOG (GNUNET_ERROR_TYPE_DEBUG,
177 "Connecting to transport service\n");
178 reconnect (h);
179 if (NULL == h->mq)
180 {
181 GNUNET_free (h);
182 return NULL;
183 }
184 return h;
185}
186
187
188/**
189 * Disconnect from the transport service.
190 *
191 * @param handle handle to the service as returned from #GNUNET_TRANSPORT_address_connect()
192 */
193void
194GNUNET_TRANSPORT_address_disconnect (struct GNUNET_TRANSPORT_AddressHandle *handle)
195{
196 LOG (GNUNET_ERROR_TYPE_DEBUG,
197 "Transport disconnect called!\n");
198 /* this disconnects all neighbours... */
199 disconnect (handle);
200 /* and now we stop trying to connect again... */
201 if (NULL != handle->reconnect_task)
202 {
203 GNUNET_SCHEDULER_cancel (handle->reconnect_task);
204 handle->reconnect_task = NULL;
205 }
206 GNUNET_free (handle);
207}
208
209
210/**
211 * The client has learned about a possible address for peer @a pid
212 * (i.e. via broadcast, multicast, DHT, ...). The transport service
213 * should consider validating it. Note that the plugin is NOT expected
214 * to have verified the signature, the transport service must decide
215 * whether to check the signature.
216 *
217 * While the notification is sent to @a ch asynchronously, this API
218 * does not return a handle as the delivery of addresses is simply
219 * unreliable, and if @a ch is down, the data provided will simply be
220 * lost.
221 *
222 * @param ch communicator handle
223 * @param pid peer the address is for
224 * @param raw raw address data
225 * @param raw_size number of bytes in @a raw
226 */
227void
228GNUNET_TRANSPORT_address_try (struct GNUNET_TRANSPORT_AddressHandle *ch,
229 const struct GNUNET_PeerIdentity *pid,
230 const void *raw,
231 const size_t raw_size)
232{
233 struct GNUNET_MQ_Envelope *env;
234 struct GNUNET_TRANSPORT_AddressToVerify *hdr;
235
236 env = GNUNET_MQ_msg_extra (hdr,
237 raw_size,
238 GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_CONSIDER_VERIFY);
239 hdr->peer = *pid;
240 memcpy (&hdr[1],
241 raw,
242 raw_size);
243 GNUNET_MQ_send (ch->mq,
244 env);
245}
246
247
248
249/* end of transport_api2_address.c */
diff --git a/src/transport/transport_api_core.c b/src/transport/transport_api_core.c
index b144ef6b6..75287b5e7 100644
--- a/src/transport/transport_api_core.c
+++ b/src/transport/transport_api_core.c
@@ -558,7 +558,7 @@ handle_connect (void *cls,
558 &cim->id); 558 &cim->id);
559 if (NULL != n) 559 if (NULL != n)
560 { 560 {
561 GNUNET_break (0); 561 GNUNET_break (0); /* FIXME: this assertion seems to fail sometimes!? */
562 disconnect_and_schedule_reconnect (h); 562 disconnect_and_schedule_reconnect (h);
563 return; 563 return;
564 } 564 }
diff --git a/src/util/.gitignore b/src/util/.gitignore
index 7b190ca76..dfa6c7947 100644
--- a/src/util/.gitignore
+++ b/src/util/.gitignore
@@ -73,3 +73,4 @@ test_hexcoder
73test_regex 73test_regex
74test_tun 74test_tun
75gnunet-timeout 75gnunet-timeout
76python27_location
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index 625ff87a2..0ba06f4bb 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -41,7 +41,7 @@ if USE_COVERAGE
41endif 41endif
42 42
43if ENABLE_BENCHMARK 43if ENABLE_BENCHMARK
44 BENCHMARK = benchmark.c 44 BENCHMARK = benchmark.c benchmark.h
45 PTHREAD = -lpthread 45 PTHREAD = -lpthread
46endif 46endif
47 47
@@ -225,8 +225,13 @@ gnunet_timeout_SOURCES = \
225 gnunet-timeout-w32.c 225 gnunet-timeout-w32.c
226endif 226endif
227 227
228# This is horrible, but compared to the alternatives and the solution
229# which preceded this it is a good compromise and good enough for one
230# file. Everyone else is invited to patch it locally.
228 231
229do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g' 232xENV=$(shell which env)
233
234do_subst = $(SED) -e 's,[@]ENV[@],${xENV},g'
230 235
231gnunet-qr: gnunet-qr.py.in Makefile 236gnunet-qr: gnunet-qr.py.in Makefile
232 $(do_subst) < $(top_srcdir)/src/util/gnunet-qr.py.in > gnunet-qr 237 $(do_subst) < $(top_srcdir)/src/util/gnunet-qr.py.in > gnunet-qr
diff --git a/src/util/container_multihashmap.c b/src/util/container_multihashmap.c
index cf5c2a334..7605ea151 100644
--- a/src/util/container_multihashmap.c
+++ b/src/util/container_multihashmap.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -417,7 +417,7 @@ GNUNET_CONTAINER_multihashmap_iterate (struct GNUNET_CONTAINER_MultiHashMap *map
417 } 417 }
418 } 418 }
419 } 419 }
420 GNUNET_assert (--map->next_cache_off < NEXT_CACHE_SIZE); 420 GNUNET_assert (--map->next_cache_off < NEXT_CACHE_SIZE);
421 return count; 421 return count;
422} 422}
423 423
@@ -764,18 +764,19 @@ grow (struct GNUNET_CONTAINER_MultiHashMap *map)
764 unsigned int new_len; 764 unsigned int new_len;
765 unsigned int idx; 765 unsigned int idx;
766 766
767 map->modification_counter++;
768
769 old_map = map->map; 767 old_map = map->map;
770 old_len = map->map_length; 768 old_len = map->map_length;
769 GNUNET_assert (0 != old_len);
771 new_len = old_len * 2; 770 new_len = old_len * 2;
772 /* if we would exceed heap size limit for the _first_ time, 771 if (0 == new_len) /* 2^31 * 2 == 0 */
773 try staying just below the limit */ 772 new_len = old_len; /* never use 0 */
774 if ( (new_len * sizeof (union MapEntry) > GNUNET_MAX_MALLOC_CHECKED) && 773 if (new_len == old_len)
775 ((old_len+1) * sizeof (union MapEntry) < GNUNET_MAX_MALLOC_CHECKED) ) 774 return; /* nothing changed */
776 new_len = GNUNET_MAX_MALLOC_CHECKED / sizeof (union MapEntry); 775 new_map = GNUNET_malloc_large (new_len *
777 new_map = GNUNET_new_array (new_len, 776 sizeof (union MapEntry));
778 union MapEntry); 777 if (NULL == new_map)
778 return; /* grow not possible */
779 map->modification_counter++;
779 map->map_length = new_len; 780 map->map_length = new_len;
780 map->map = new_map; 781 map->map = new_map;
781 for (unsigned int i = 0; i < old_len; i++) 782 for (unsigned int i = 0; i < old_len; i++)
diff --git a/src/util/container_multihashmap32.c b/src/util/container_multihashmap32.c
index 4b19c7c10..a614c04ae 100644
--- a/src/util/container_multihashmap32.c
+++ b/src/util/container_multihashmap32.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -146,8 +146,13 @@ GNUNET_CONTAINER_multihashmap32_create (unsigned int len)
146 146
147 GNUNET_assert (len > 0); 147 GNUNET_assert (len > 0);
148 ret = GNUNET_new (struct GNUNET_CONTAINER_MultiHashMap32); 148 ret = GNUNET_new (struct GNUNET_CONTAINER_MultiHashMap32);
149 ret->map = GNUNET_new_array (len, 149 ret->map = GNUNET_malloc_large (len *
150 struct MapEntry *); 150 sizeof (struct MapEntry *));
151 if (NULL == ret->map)
152 {
153 GNUNET_free (ret);
154 return NULL;
155 }
151 ret->map_length = len; 156 ret->map_length = len;
152 return ret; 157 return ret;
153} 158}
@@ -268,7 +273,7 @@ GNUNET_CONTAINER_multihashmap32_iterate (struct GNUNET_CONTAINER_MultiHashMap32
268 e->key, 273 e->key,
269 e->value)) 274 e->value))
270 { 275 {
271 GNUNET_assert (--map->next_cache_off < NEXT_CACHE_SIZE); 276 GNUNET_assert (--map->next_cache_off < NEXT_CACHE_SIZE);
272 return GNUNET_SYSERR; 277 return GNUNET_SYSERR;
273 } 278 }
274 } 279 }
@@ -463,13 +468,18 @@ grow (struct GNUNET_CONTAINER_MultiHashMap32 *map)
463 unsigned int new_len; 468 unsigned int new_len;
464 unsigned int idx; 469 unsigned int idx;
465 470
466 map->modification_counter++;
467
468 old_map = map->map; 471 old_map = map->map;
469 old_len = map->map_length; 472 old_len = map->map_length;
470 new_len = old_len * 2; 473 new_len = old_len * 2;
471 new_map = GNUNET_new_array (new_len, 474 if (0 == new_len) /* 2^31 * 2 == 0 */
472 struct MapEntry *); 475 new_len = old_len; /* never use 0 */
476 if (new_len == old_len)
477 return; /* nothing changed */
478 new_map = GNUNET_malloc_large (new_len *
479 sizeof (struct MapEntry *));
480 if (NULL == new_map)
481 return; /* grow not possible */
482 map->modification_counter++;
473 map->map_length = new_len; 483 map->map_length = new_len;
474 map->map = new_map; 484 map->map = new_map;
475 for (unsigned int i = 0; i < old_len; i++) 485 for (unsigned int i = 0; i < old_len; i++)
diff --git a/src/util/container_multipeermap.c b/src/util/container_multipeermap.c
index 8fa23df72..613efc0a9 100644
--- a/src/util/container_multipeermap.c
+++ b/src/util/container_multipeermap.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -200,8 +200,13 @@ GNUNET_CONTAINER_multipeermap_create (unsigned int len,
200 200
201 GNUNET_assert (len > 0); 201 GNUNET_assert (len > 0);
202 map = GNUNET_new (struct GNUNET_CONTAINER_MultiPeerMap); 202 map = GNUNET_new (struct GNUNET_CONTAINER_MultiPeerMap);
203 map->map = GNUNET_new_array (len, 203 map->map = GNUNET_malloc_large (len *
204 union MapEntry); 204 sizeof (union MapEntry));
205 if (NULL == map->map)
206 {
207 GNUNET_free (map);
208 return NULL;
209 }
205 map->map_length = len; 210 map->map_length = len;
206 map->use_small_entries = do_not_copy_keys; 211 map->use_small_entries = do_not_copy_keys;
207 return map; 212 return map;
@@ -493,7 +498,7 @@ GNUNET_CONTAINER_multipeermap_remove (struct GNUNET_CONTAINER_MultiPeerMap *map,
493 if (NULL == p) 498 if (NULL == p)
494 map->map[i].bme = bme->next; 499 map->map[i].bme = bme->next;
495 else 500 else
496 p->next = bme->next; 501 p->next = bme->next;
497 update_next_cache_bme (map, 502 update_next_cache_bme (map,
498 bme); 503 bme);
499 GNUNET_free (bme); 504 GNUNET_free (bme);
@@ -685,18 +690,23 @@ grow (struct GNUNET_CONTAINER_MultiPeerMap *map)
685 unsigned int old_len; 690 unsigned int old_len;
686 unsigned int new_len; 691 unsigned int new_len;
687 unsigned int idx; 692 unsigned int idx;
688 unsigned int i;
689
690 map->modification_counter++;
691 693
692 old_map = map->map; 694 old_map = map->map;
693 old_len = map->map_length; 695 old_len = map->map_length;
696 GNUNET_assert (0 != old_len);
694 new_len = old_len * 2; 697 new_len = old_len * 2;
695 new_map = GNUNET_new_array (new_len, 698 if (0 == new_len) /* 2^31 * 2 == 0 */
696 union MapEntry); 699 new_len = old_len; /* never use 0 */
700 if (new_len == old_len)
701 return; /* nothing changed */
702 new_map = GNUNET_malloc_large (new_len *
703 sizeof (union MapEntry));
704 if (NULL == new_map)
705 return; /* grow not possible */
706 map->modification_counter++;
697 map->map_length = new_len; 707 map->map_length = new_len;
698 map->map = new_map; 708 map->map = new_map;
699 for (i = 0; i < old_len; i++) 709 for (unsigned int i = 0; i < old_len; i++)
700 { 710 {
701 if (map->use_small_entries) 711 if (map->use_small_entries)
702 { 712 {
@@ -829,7 +839,7 @@ GNUNET_CONTAINER_multipeermap_get_multiple (struct GNUNET_CONTAINER_MultiPeerMap
829 int count; 839 int count;
830 union MapEntry me; 840 union MapEntry me;
831 union MapEntry *ce; 841 union MapEntry *ce;
832 842
833 ce = &map->next_cache[map->next_cache_off]; 843 ce = &map->next_cache[map->next_cache_off];
834 GNUNET_assert (++map->next_cache_off < NEXT_CACHE_SIZE); 844 GNUNET_assert (++map->next_cache_off < NEXT_CACHE_SIZE);
835 count = 0; 845 count = 0;
@@ -903,7 +913,7 @@ GNUNET_CONTAINER_multipeermap_get_random (const struct GNUNET_CONTAINER_MultiPee
903{ 913{
904 unsigned int off; 914 unsigned int off;
905 union MapEntry me; 915 union MapEntry me;
906 916
907 if (0 == map->size) 917 if (0 == map->size)
908 return 0; 918 return 0;
909 if (NULL == it) 919 if (NULL == it)
diff --git a/src/util/container_multishortmap.c b/src/util/container_multishortmap.c
index a48581b6a..966e23d35 100644
--- a/src/util/container_multishortmap.c
+++ b/src/util/container_multishortmap.c
@@ -11,7 +11,7 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
@@ -183,8 +183,8 @@ struct GNUNET_CONTAINER_MultiShortmapIterator
183 * Create a multi hash map. 183 * Create a multi hash map.
184 * 184 *
185 * @param len initial size (map will grow as needed) 185 * @param len initial size (map will grow as needed)
186 * @param do_not_copy_keys GNUNET_NO is always safe and should be used by default; 186 * @param do_not_copy_keys #GNUNET_NO is always safe and should be used by default;
187 * GNUNET_YES means that on 'put', the 'key' does not have 187 * #GNUNET_YES means that on 'put', the 'key' does not have
188 * to be copied as the destination of the pointer is 188 * to be copied as the destination of the pointer is
189 * guaranteed to be life as long as the value is stored in 189 * guaranteed to be life as long as the value is stored in
190 * the hashmap. This can significantly reduce memory 190 * the hashmap. This can significantly reduce memory
@@ -202,8 +202,13 @@ GNUNET_CONTAINER_multishortmap_create (unsigned int len,
202 202
203 GNUNET_assert (len > 0); 203 GNUNET_assert (len > 0);
204 map = GNUNET_new (struct GNUNET_CONTAINER_MultiShortmap); 204 map = GNUNET_new (struct GNUNET_CONTAINER_MultiShortmap);
205 map->map = GNUNET_new_array (len, 205 map->map = GNUNET_malloc_large (len *
206 union MapEntry); 206 sizeof (union MapEntry));
207 if (NULL == map->map)
208 {
209 GNUNET_free (map);
210 return NULL;
211 }
207 map->map_length = len; 212 map->map_length = len;
208 map->use_small_entries = do_not_copy_keys; 213 map->use_small_entries = do_not_copy_keys;
209 return map; 214 return map;
@@ -355,7 +360,7 @@ GNUNET_CONTAINER_multishortmap_iterate (struct GNUNET_CONTAINER_MultiShortmap *m
355 if (map->use_small_entries) 360 if (map->use_small_entries)
356 { 361 {
357 struct SmallMapEntry *sme; 362 struct SmallMapEntry *sme;
358 363
359 ce->sme = me.sme; 364 ce->sme = me.sme;
360 while (NULL != (sme = ce->sme)) 365 while (NULL != (sme = ce->sme))
361 { 366 {
@@ -366,7 +371,7 @@ GNUNET_CONTAINER_multishortmap_iterate (struct GNUNET_CONTAINER_MultiShortmap *m
366 sme->value)) ) 371 sme->value)) )
367 { 372 {
368 GNUNET_assert (--map->next_cache_off < NEXT_CACHE_SIZE); 373 GNUNET_assert (--map->next_cache_off < NEXT_CACHE_SIZE);
369 return GNUNET_SYSERR; 374 return GNUNET_SYSERR;
370 } 375 }
371 count++; 376 count++;
372 } 377 }
@@ -458,7 +463,7 @@ GNUNET_CONTAINER_multishortmap_remove (struct GNUNET_CONTAINER_MultiShortmap *ma
458 if (map->use_small_entries) 463 if (map->use_small_entries)
459 { 464 {
460 struct SmallMapEntry *p = NULL; 465 struct SmallMapEntry *p = NULL;
461 466
462 for (struct SmallMapEntry *sme = me.sme; NULL != sme; sme = sme->next) 467 for (struct SmallMapEntry *sme = me.sme; NULL != sme; sme = sme->next)
463 { 468 {
464 if ((0 == memcmp (key, 469 if ((0 == memcmp (key,
@@ -482,7 +487,7 @@ GNUNET_CONTAINER_multishortmap_remove (struct GNUNET_CONTAINER_MultiShortmap *ma
482 else 487 else
483 { 488 {
484 struct BigMapEntry *p = NULL; 489 struct BigMapEntry *p = NULL;
485 490
486 for (struct BigMapEntry *bme = me.bme; NULL != bme; bme = bme->next) 491 for (struct BigMapEntry *bme = me.bme; NULL != bme; bme = bme->next)
487 { 492 {
488 if ((0 == memcmp (key, 493 if ((0 == memcmp (key,
@@ -686,13 +691,18 @@ grow (struct GNUNET_CONTAINER_MultiShortmap *map)
686 unsigned int new_len; 691 unsigned int new_len;
687 unsigned int idx; 692 unsigned int idx;
688 693
689 map->modification_counter++;
690
691 old_map = map->map; 694 old_map = map->map;
692 old_len = map->map_length; 695 old_len = map->map_length;
693 new_len = old_len * 2; 696 new_len = old_len * 2;
694 new_map = GNUNET_new_array (new_len, 697 if (0 == new_len) /* 2^31 * 2 == 0 */
695 union MapEntry); 698 new_len = old_len; /* never use 0 */
699 if (new_len == old_len)
700 return; /* nothing changed */
701 new_map = GNUNET_malloc_large (new_len *
702 sizeof (union MapEntry));
703 if (NULL == new_map)
704 return; /* grow not possible */
705 map->modification_counter++;
696 map->map_length = new_len; 706 map->map_length = new_len;
697 map->map = new_map; 707 map->map = new_map;
698 for (unsigned int i = 0; i < old_len; i++) 708 for (unsigned int i = 0; i < old_len; i++)
diff --git a/src/util/dnsparser.c b/src/util/dnsparser.c
index 2baa76ef2..7546ca1e9 100644
--- a/src/util/dnsparser.c
+++ b/src/util/dnsparser.c
@@ -25,15 +25,19 @@
25 * @author Christian Grothoff 25 * @author Christian Grothoff
26 */ 26 */
27#include "platform.h" 27#include "platform.h"
28#if HAVE_LIBIDN2
28#if HAVE_IDN2_H 29#if HAVE_IDN2_H
29#include <idn2.h> 30#include <idn2.h>
30#elif HAVE_IDN2_IDN2_H 31#elif HAVE_IDN2_IDN2_H
31#include <idn2/idn2.h> 32#include <idn2/idn2.h>
32#elif HAVE_IDNA_H 33#endif
34#elif HAVE_LIBIDN
35#if HAVE_IDNA_H
33#include <idna.h> 36#include <idna.h>
34#elif HAVE_IDN_IDNA_H 37#elif HAVE_IDN_IDNA_H
35#include <idn/idna.h> 38#include <idn/idna.h>
36#endif 39#endif
40#endif
37#if WINDOWS 41#if WINDOWS
38#include <idn-free.h> 42#include <idn-free.h>
39#endif 43#endif
@@ -1084,12 +1088,19 @@ GNUNET_DNSPARSER_builder_add_cert (char *dst,
1084{ 1088{
1085 struct GNUNET_TUN_DnsCertRecord dcert; 1089 struct GNUNET_TUN_DnsCertRecord dcert;
1086 1090
1091#ifdef __clang__
1092#pragma clang diagnostic push
1093#pragma clang diagnostic ignored "-Wtautological-constant-out-of-range-compare"
1094#endif
1087 if ( (cert->cert_type > UINT16_MAX) || 1095 if ( (cert->cert_type > UINT16_MAX) ||
1088 (cert->algorithm > UINT8_MAX) ) 1096 (cert->algorithm > UINT8_MAX) )
1089 { 1097 {
1090 GNUNET_break (0); 1098 GNUNET_break (0);
1091 return GNUNET_SYSERR; 1099 return GNUNET_SYSERR;
1092 } 1100 }
1101#ifdef __clang__
1102#pragma clang diagnostic pop
1103#endif
1093 if (*off + sizeof (struct GNUNET_TUN_DnsCertRecord) + cert->certificate_size > dst_len) 1104 if (*off + sizeof (struct GNUNET_TUN_DnsCertRecord) + cert->certificate_size > dst_len)
1094 return GNUNET_NO; 1105 return GNUNET_NO;
1095 dcert.cert_type = htons ((uint16_t) cert->cert_type); 1106 dcert.cert_type = htons ((uint16_t) cert->cert_type);
diff --git a/src/util/gnunet-qr.py.in b/src/util/gnunet-qr.py.in
index a5918fdf8..ceed8bd77 100755
--- a/src/util/gnunet-qr.py.in
+++ b/src/util/gnunet-qr.py.in
@@ -1,4 +1,6 @@
1#!@PYTHON@ 1#!@ENV@ python2.7
2from __future__ import print_function
3from builtins import str
2import sys 4import sys
3import getopt 5import getopt
4import subprocess 6import subprocess
@@ -100,7 +102,7 @@ if __name__ == '__main__':
100 cmd += " " + str(a) 102 cmd += " " + str(a)
101 if (verbose): 103 if (verbose):
102 print('Running `' + cmd +'`') 104 print('Running `' + cmd +'`')
103 res=subprocess.call(args) 105 res = subprocess.call(args)
104 if (0 != res): 106 if (0 != res):
105 print('Failed to add URI ' + str(symbol.data)) 107 print('Failed to add URI ' + str(symbol.data))
106 else: 108 else:
diff --git a/src/util/gnunet-service-resolver.c b/src/util/gnunet-service-resolver.c
index d85885d64..0df213588 100644
--- a/src/util/gnunet-service-resolver.c
+++ b/src/util/gnunet-service-resolver.c
@@ -773,6 +773,41 @@ pack (const char *hostname,
773 return GNUNET_OK; 773 return GNUNET_OK;
774} 774}
775 775
776static void
777cache_answers(const char* name,
778 struct GNUNET_DNSPARSER_Record *records,
779 unsigned int num_records)
780{
781 struct ResolveCache *rc;
782 struct GNUNET_DNSPARSER_Record *record;
783 struct RecordListEntry *rle;
784
785 for (unsigned int i = 0; i != num_records; i++)
786 {
787 record = &records[i];
788
789 for (rc = cache_head; NULL != rc; rc = rc->next)
790 if (0 == strcasecmp (rc->hostname,
791 name))
792 break;
793 if (NULL == rc)
794 {
795 rc = GNUNET_new (struct ResolveCache);
796 rc->hostname = GNUNET_strdup (name);
797 GNUNET_CONTAINER_DLL_insert (cache_head,
798 cache_tail,
799 rc);
800 cache_size++;
801 }
802 /* TODO: ought to check first if we have this exact record
803 already in the cache! */
804 rle = GNUNET_new (struct RecordListEntry);
805 rle->record = GNUNET_DNSPARSER_duplicate_record (record);
806 GNUNET_CONTAINER_DLL_insert (rc->records_head,
807 rc->records_tail,
808 rle);
809 }
810}
776 811
777/** 812/**
778 * We got a result from DNS. Add it to the cache and 813 * We got a result from DNS. Add it to the cache and
@@ -784,39 +819,47 @@ pack (const char *hostname,
784 */ 819 */
785static void 820static void
786handle_resolve_result (void *cls, 821handle_resolve_result (void *cls,
787 const struct GNUNET_TUN_DnsHeader *dns, 822 const struct GNUNET_TUN_DnsHeader *dns,
788 size_t dns_len) 823 size_t dns_len)
789{ 824{
790 struct ActiveLookup *al = cls; 825 struct ActiveLookup *al = cls;
791 struct GNUNET_DNSPARSER_Packet *parsed; 826 struct GNUNET_DNSPARSER_Packet *parsed;
792 struct ResolveCache *rc;
793 827
794 parsed = GNUNET_DNSPARSER_parse ((const char *)dns, 828 parsed = GNUNET_DNSPARSER_parse ((const char *)dns,
795 dns_len); 829 dns_len);
796 if (NULL == parsed) 830 if (NULL == parsed)
797 { 831 {
798 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 832 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
799 "Failed to parse DNS reply (hostname %s, request ID %u)\n", 833 "Failed to parse DNS reply (hostname %s, request ID %u)\n",
800 al->hostname, 834 al->hostname,
801 al->dns_id); 835 al->dns_id);
802 return; 836 return;
803 } 837 }
804 if (al->dns_id != ntohs (parsed->id)) 838 if (al->dns_id != ntohs (parsed->id))
805 { 839 {
806 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 840 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
807 "Request ID in DNS reply does not match\n"); 841 "Request ID in DNS reply does not match\n");
808 GNUNET_DNSPARSER_free_packet (parsed); 842 GNUNET_DNSPARSER_free_packet (parsed);
809 return; 843 return;
810 } 844 }
811 if (0 == parsed->num_answers + parsed->num_authority_records + parsed->num_additional_records) 845 if (0 == parsed->num_answers + parsed->num_authority_records + parsed->num_additional_records)
812 { 846 {
813 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 847 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
814 "DNS reply (hostname %s, request ID %u) contains no answers\n", 848 "DNS reply (hostname %s, request ID %u) contains no answers\n",
815 al->hostname, 849 al->hostname,
816 (unsigned int) al->client_request_id); 850 (unsigned int) al->client_request_id);
851 /* resume by trying again from cache */
852 if (GNUNET_NO ==
853 try_cache (al->hostname,
854 al->record_type,
855 al->client_request_id,
856 al->client))
857 /* cache failed, tell client we could not get an answer */
858 {
859 send_end_msg (al->client_request_id,
860 al->client);
861 }
817 GNUNET_DNSPARSER_free_packet (parsed); 862 GNUNET_DNSPARSER_free_packet (parsed);
818 send_end_msg (al->client_request_id,
819 al->client);
820 free_active_lookup (al); 863 free_active_lookup (al);
821 return; 864 return;
822 } 865 }
@@ -829,84 +872,13 @@ handle_resolve_result (void *cls,
829 al->hostname, 872 al->hostname,
830 (unsigned int) al->client_request_id); 873 (unsigned int) al->client_request_id);
831 /* add to cache */ 874 /* add to cache */
832 for (unsigned int i = 0; i != parsed->num_answers; i++) 875 cache_answers(al->hostname,
833 { 876 parsed->answers, parsed->num_answers);
834 struct GNUNET_DNSPARSER_Record *record = &parsed->answers[i]; 877 cache_answers(al->hostname,
835 struct RecordListEntry *rle; 878 parsed->authority_records, parsed->num_authority_records);
836 879 cache_answers(al->hostname,
837 for (rc = cache_head; NULL != rc; rc = rc->next) 880 parsed->additional_records, parsed->num_additional_records);
838 if (0 == strcasecmp (rc->hostname,
839 record->name))
840 break;
841 if (NULL == rc)
842 {
843 rc = GNUNET_new (struct ResolveCache);
844 rc->hostname = GNUNET_strdup (record->name);
845 GNUNET_CONTAINER_DLL_insert (cache_head,
846 cache_tail,
847 rc);
848 cache_size++;
849 }
850 /* TODO: ought to check first if we have this exact record
851 already in the cache! */
852 rle = GNUNET_new (struct RecordListEntry);
853 rle->record = GNUNET_DNSPARSER_duplicate_record (record);
854 GNUNET_CONTAINER_DLL_insert (rc->records_head,
855 rc->records_tail,
856 rle);
857 }
858 for (unsigned int i = 0; i != parsed->num_authority_records; i++)
859 {
860 struct GNUNET_DNSPARSER_Record *record = &parsed->authority_records[i];
861 struct RecordListEntry *rle;
862
863 for (rc = cache_head; NULL != rc; rc = rc->next)
864 if (0 == strcasecmp (rc->hostname,
865 record->name))
866 break;
867 if (NULL == rc)
868 {
869 rc = GNUNET_new (struct ResolveCache);
870 rc->hostname = GNUNET_strdup (record->name);
871 GNUNET_CONTAINER_DLL_insert (cache_head,
872 cache_tail,
873 rc);
874 cache_size++;
875 }
876 /* TODO: ought to check first if we have this exact record
877 already in the cache! */
878 rle = GNUNET_new (struct RecordListEntry);
879 rle->record = GNUNET_DNSPARSER_duplicate_record (record);
880 GNUNET_CONTAINER_DLL_insert (rc->records_head,
881 rc->records_tail,
882 rle);
883 }
884 for (unsigned int i = 0; i != parsed->num_additional_records; i++)
885 {
886 struct GNUNET_DNSPARSER_Record *record = &parsed->additional_records[i];
887 struct RecordListEntry *rle;
888 881
889 for (rc = cache_head; NULL != rc; rc = rc->next)
890 if (0 == strcasecmp (rc->hostname,
891 record->name))
892 break;
893 if (NULL == rc)
894 {
895 rc = GNUNET_new (struct ResolveCache);
896 rc->hostname = GNUNET_strdup (record->name);
897 GNUNET_CONTAINER_DLL_insert (cache_head,
898 cache_tail,
899 rc);
900 cache_size++;
901 }
902 /* TODO: ought to check first if we have this exact record
903 already in the cache! */
904 rle = GNUNET_new (struct RecordListEntry);
905 rle->record = GNUNET_DNSPARSER_duplicate_record (record);
906 GNUNET_CONTAINER_DLL_insert (rc->records_head,
907 rc->records_tail,
908 rle);
909 }
910 /* see if we need to do the 2nd request for AAAA records */ 882 /* see if we need to do the 2nd request for AAAA records */
911 if ( (GNUNET_DNSPARSER_TYPE_ALL == al->record_type) && 883 if ( (GNUNET_DNSPARSER_TYPE_ALL == al->record_type) &&
912 (GNUNET_NO == al->did_aaaa) ) 884 (GNUNET_NO == al->did_aaaa) )
@@ -968,7 +940,7 @@ handle_resolve_timeout (void *cls)
968 940
969 al->timeout_task = NULL; 941 al->timeout_task = NULL;
970 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 942 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
971 "DNS lookup timeout!\n"); 943 "DNS lookup timeout!\n");
972 send_end_msg (al->client_request_id, 944 send_end_msg (al->client_request_id,
973 al->client); 945 al->client);
974 free_active_lookup (al); 946 free_active_lookup (al);
@@ -987,9 +959,9 @@ handle_resolve_timeout (void *cls)
987 */ 959 */
988static int 960static int
989resolve_and_cache (const char* hostname, 961resolve_and_cache (const char* hostname,
990 uint16_t record_type, 962 uint16_t record_type,
991 uint32_t client_request_id, 963 uint32_t client_request_id,
992 struct GNUNET_SERVICE_Client *client) 964 struct GNUNET_SERVICE_Client *client)
993{ 965{
994 char *packet_buf; 966 char *packet_buf;
995 size_t packet_size; 967 size_t packet_size;
@@ -998,8 +970,8 @@ resolve_and_cache (const char* hostname,
998 uint16_t type; 970 uint16_t type;
999 971
1000 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 972 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1001 "resolve_and_cache `%s'\n", 973 "resolve_and_cache `%s'\n",
1002 hostname); 974 hostname);
1003 dns_id = (uint16_t) GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_NONCE, 975 dns_id = (uint16_t) GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_NONCE,
1004 UINT16_MAX); 976 UINT16_MAX);
1005 977
@@ -1015,7 +987,7 @@ resolve_and_cache (const char* hostname,
1015 &packet_size)) 987 &packet_size))
1016 { 988 {
1017 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 989 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1018 "Failed to pack query for hostname `%s'\n", 990 "Failed to pack query for hostname `%s'\n",
1019 hostname); 991 hostname);
1020 return GNUNET_SYSERR; 992 return GNUNET_SYSERR;
1021 } 993 }
@@ -1031,19 +1003,19 @@ resolve_and_cache (const char* hostname,
1031 al); 1003 al);
1032 al->resolve_handle = 1004 al->resolve_handle =
1033 GNUNET_DNSSTUB_resolve (dnsstub_ctx, 1005 GNUNET_DNSSTUB_resolve (dnsstub_ctx,
1034 packet_buf, 1006 packet_buf,
1035 packet_size, 1007 packet_size,
1036 &handle_resolve_result, 1008 &handle_resolve_result,
1037 al); 1009 al);
1038 GNUNET_free (packet_buf); 1010 GNUNET_free (packet_buf);
1039 GNUNET_CONTAINER_DLL_insert (lookup_head, 1011 GNUNET_CONTAINER_DLL_insert (lookup_head,
1040 lookup_tail, 1012 lookup_tail,
1041 al); 1013 al);
1042 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1014 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1043 "Resolving %s, client_request_id = %u, dns_id = %u\n", 1015 "Resolving %s, client_request_id = %u, dns_id = %u\n",
1044 hostname, 1016 hostname,
1045 (unsigned int) client_request_id, 1017 (unsigned int) client_request_id,
1046 (unsigned int) dns_id); 1018 (unsigned int) dns_id);
1047 return GNUNET_OK; 1019 return GNUNET_OK;
1048} 1020}
1049 1021
@@ -1059,29 +1031,29 @@ resolve_and_cache (const char* hostname,
1059 */ 1031 */
1060static void 1032static void
1061process_get (const char *hostname, 1033process_get (const char *hostname,
1062 uint16_t record_type, 1034 uint16_t record_type,
1063 uint32_t client_request_id, 1035 uint32_t client_request_id,
1064 struct GNUNET_SERVICE_Client *client) 1036 struct GNUNET_SERVICE_Client *client)
1065{ 1037{
1066 char fqdn[255]; 1038 char fqdn[255];
1067 1039
1068 if ( (NULL != my_domain) && 1040 if ( (NULL != my_domain) &&
1069 (NULL == strchr (hostname, 1041 (NULL == strchr (hostname,
1070 (unsigned char) '.')) && 1042 (unsigned char) '.')) &&
1071 (strlen (hostname) + strlen (my_domain) <= 253) ) 1043 (strlen (hostname) + strlen (my_domain) <= 253) )
1072 { 1044 {
1073 GNUNET_snprintf (fqdn, 1045 GNUNET_snprintf (fqdn,
1074 sizeof (fqdn), 1046 sizeof (fqdn),
1075 "%s.%s", 1047 "%s.%s",
1076 hostname, 1048 hostname,
1077 my_domain); 1049 my_domain);
1078 } 1050 }
1079 else if (strlen (hostname) < 255) 1051 else if (strlen (hostname) < 255)
1080 { 1052 {
1081 GNUNET_snprintf (fqdn, 1053 GNUNET_snprintf (fqdn,
1082 sizeof (fqdn), 1054 sizeof (fqdn),
1083 "%s", 1055 "%s",
1084 hostname); 1056 hostname);
1085 } 1057 }
1086 else 1058 else
1087 { 1059 {
@@ -1117,7 +1089,7 @@ process_get (const char *hostname,
1117 */ 1089 */
1118static int 1090static int
1119check_get (void *cls, 1091check_get (void *cls,
1120 const struct GNUNET_RESOLVER_GetMessage *get) 1092 const struct GNUNET_RESOLVER_GetMessage *get)
1121{ 1093{
1122 uint16_t size; 1094 uint16_t size;
1123 int direction; 1095 int direction;
@@ -1134,23 +1106,23 @@ check_get (void *cls,
1134 af = ntohl (get->af); 1106 af = ntohl (get->af);
1135 switch (af) 1107 switch (af)
1136 { 1108 {
1137 case AF_INET: 1109 case AF_INET:
1138 if (size != sizeof (struct in_addr)) 1110 if (size != sizeof (struct in_addr))
1139 { 1111 {
1140 GNUNET_break (0); 1112 GNUNET_break (0);
1141 return GNUNET_SYSERR; 1113 return GNUNET_SYSERR;
1142 } 1114 }
1143 break; 1115 break;
1144 case AF_INET6: 1116 case AF_INET6:
1145 if (size != sizeof (struct in6_addr)) 1117 if (size != sizeof (struct in6_addr))
1146 { 1118 {
1119 GNUNET_break (0);
1120 return GNUNET_SYSERR;
1121 }
1122 break;
1123 default:
1147 GNUNET_break (0); 1124 GNUNET_break (0);
1148 return GNUNET_SYSERR; 1125 return GNUNET_SYSERR;
1149 }
1150 break;
1151 default:
1152 GNUNET_break (0);
1153 return GNUNET_SYSERR;
1154 } 1126 }
1155 return GNUNET_OK; 1127 return GNUNET_OK;
1156} 1128}
@@ -1164,7 +1136,7 @@ check_get (void *cls,
1164 */ 1136 */
1165static void 1137static void
1166handle_get (void *cls, 1138handle_get (void *cls,
1167 const struct GNUNET_RESOLVER_GetMessage *msg) 1139 const struct GNUNET_RESOLVER_GetMessage *msg)
1168{ 1140{
1169 struct GNUNET_SERVICE_Client *client = cls; 1141 struct GNUNET_SERVICE_Client *client = cls;
1170 int direction; 1142 int direction;
@@ -1183,36 +1155,36 @@ handle_get (void *cls,
1183 switch (af) 1155 switch (af)
1184 { 1156 {
1185 case AF_UNSPEC: 1157 case AF_UNSPEC:
1186 { 1158 {
1187 process_get (hostname, 1159 process_get (hostname,
1188 GNUNET_DNSPARSER_TYPE_ALL, 1160 GNUNET_DNSPARSER_TYPE_ALL,
1189 client_request_id, 1161 client_request_id,
1190 client); 1162 client);
1191 break; 1163 break;
1192 } 1164 }
1193 case AF_INET: 1165 case AF_INET:
1194 { 1166 {
1195 process_get (hostname, 1167 process_get (hostname,
1196 GNUNET_DNSPARSER_TYPE_A, 1168 GNUNET_DNSPARSER_TYPE_A,
1197 client_request_id, 1169 client_request_id,
1198 client); 1170 client);
1199 break; 1171 break;
1200 } 1172 }
1201 case AF_INET6: 1173 case AF_INET6:
1202 { 1174 {
1203 process_get (hostname, 1175 process_get (hostname,
1204 GNUNET_DNSPARSER_TYPE_AAAA, 1176 GNUNET_DNSPARSER_TYPE_AAAA,
1205 client_request_id, 1177 client_request_id,
1206 client); 1178 client);
1207 break; 1179 break;
1208 } 1180 }
1209 default: 1181 default:
1210 { 1182 {
1211 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1183 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1212 "got invalid af: %d\n", 1184 "got invalid af: %d\n",
1213 af); 1185 af);
1214 GNUNET_assert (0); 1186 GNUNET_assert (0);
1215 } 1187 }
1216 } 1188 }
1217 } 1189 }
1218 else 1190 else
@@ -1246,7 +1218,7 @@ shutdown_task (void *cls)
1246 while (NULL != hosts_head) 1218 while (NULL != hosts_head)
1247 free_hosts_entry (hosts_head); 1219 free_hosts_entry (hosts_head);
1248 GNUNET_DNSSTUB_stop (dnsstub_ctx); 1220 GNUNET_DNSSTUB_stop (dnsstub_ctx);
1249 GNUNET_free (my_domain); 1221 GNUNET_free_non_null (my_domain);
1250} 1222}
1251 1223
1252 1224
@@ -1261,9 +1233,9 @@ shutdown_task (void *cls)
1261 */ 1233 */
1262static void 1234static void
1263add_host (const char *hostname, 1235add_host (const char *hostname,
1264 uint16_t rec_type, 1236 uint16_t rec_type,
1265 const void *data, 1237 const void *data,
1266 size_t data_size) 1238 size_t data_size)
1267{ 1239{
1268 struct ResolveCache *rc; 1240 struct ResolveCache *rc;
1269 struct RecordListEntry *rle; 1241 struct RecordListEntry *rle;
@@ -1275,18 +1247,18 @@ add_host (const char *hostname,
1275 rec->dns_traffic_class = GNUNET_TUN_DNS_CLASS_INTERNET; 1247 rec->dns_traffic_class = GNUNET_TUN_DNS_CLASS_INTERNET;
1276 rec->name = GNUNET_strdup (hostname); 1248 rec->name = GNUNET_strdup (hostname);
1277 rec->data.raw.data = GNUNET_memdup (data, 1249 rec->data.raw.data = GNUNET_memdup (data,
1278 data_size); 1250 data_size);
1279 rec->data.raw.data_len = data_size; 1251 rec->data.raw.data_len = data_size;
1280 rle = GNUNET_new (struct RecordListEntry); 1252 rle = GNUNET_new (struct RecordListEntry);
1281 rle->record = rec; 1253 rle->record = rec;
1282 rc = GNUNET_new (struct ResolveCache); 1254 rc = GNUNET_new (struct ResolveCache);
1283 rc->hostname = GNUNET_strdup (hostname); 1255 rc->hostname = GNUNET_strdup (hostname);
1284 GNUNET_CONTAINER_DLL_insert (rc->records_head, 1256 GNUNET_CONTAINER_DLL_insert (rc->records_head,
1285 rc->records_tail, 1257 rc->records_tail,
1286 rle); 1258 rle);
1287 GNUNET_CONTAINER_DLL_insert (hosts_head, 1259 GNUNET_CONTAINER_DLL_insert (hosts_head,
1288 hosts_tail, 1260 hosts_tail,
1289 rc); 1261 rc);
1290} 1262}
1291 1263
1292 1264
@@ -1298,7 +1270,7 @@ add_host (const char *hostname,
1298 */ 1270 */
1299static void 1271static void
1300extract_hosts (const char *line, 1272extract_hosts (const char *line,
1301 size_t line_len) 1273 size_t line_len)
1302{ 1274{
1303 const char *c; 1275 const char *c;
1304 struct in_addr v4; 1276 struct in_addr v4;
@@ -1308,19 +1280,19 @@ extract_hosts (const char *line,
1308 1280
1309 /* ignore everything after '#' */ 1281 /* ignore everything after '#' */
1310 c = memrchr (line, 1282 c = memrchr (line,
1311 (unsigned char) '#', 1283 (unsigned char) '#',
1312 line_len); 1284 line_len);
1313 if (NULL != c) 1285 if (NULL != c)
1314 line_len = c - line; 1286 line_len = c - line;
1315 /* ignore leading whitespace */ 1287 /* ignore leading whitespace */
1316 while ( (0 < line_len) && 1288 while ( (0 < line_len) &&
1317 isspace ((unsigned char) *line) ) 1289 isspace ((unsigned char) *line) )
1318 { 1290 {
1319 line++; 1291 line++;
1320 line_len--; 1292 line_len--;
1321 } 1293 }
1322 tbuf = GNUNET_strndup (line, 1294 tbuf = GNUNET_strndup (line,
1323 line_len); 1295 line_len);
1324 tok = strtok (tbuf, " \t"); 1296 tok = strtok (tbuf, " \t");
1325 if (NULL == tok) 1297 if (NULL == tok)
1326 { 1298 {
@@ -1328,24 +1300,24 @@ extract_hosts (const char *line,
1328 return; 1300 return;
1329 } 1301 }
1330 if (1 == inet_pton (AF_INET, 1302 if (1 == inet_pton (AF_INET,
1331 tok, 1303 tok,
1332 &v4)) 1304 &v4))
1333 { 1305 {
1334 while (NULL != (tok = strtok (NULL, " \t"))) 1306 while (NULL != (tok = strtok (NULL, " \t")))
1335 add_host (tok, 1307 add_host (tok,
1336 GNUNET_DNSPARSER_TYPE_A, 1308 GNUNET_DNSPARSER_TYPE_A,
1337 &v4, 1309 &v4,
1338 sizeof (struct in_addr)); 1310 sizeof (struct in_addr));
1339 } 1311 }
1340 else if (1 == inet_pton (AF_INET6, 1312 else if (1 == inet_pton (AF_INET6,
1341 tok, 1313 tok,
1342 &v6)) 1314 &v6))
1343 { 1315 {
1344 while (NULL != (tok = strtok (NULL, " \t"))) 1316 while (NULL != (tok = strtok (NULL, " \t")))
1345 add_host (tok, 1317 add_host (tok,
1346 GNUNET_DNSPARSER_TYPE_AAAA, 1318 GNUNET_DNSPARSER_TYPE_AAAA,
1347 &v6, 1319 &v6,
1348 sizeof (struct in6_addr)); 1320 sizeof (struct in6_addr));
1349 } 1321 }
1350 GNUNET_free (tbuf); 1322 GNUNET_free (tbuf);
1351} 1323}
@@ -1364,36 +1336,36 @@ load_etc_hosts (void)
1364 size_t read_offset; 1336 size_t read_offset;
1365 1337
1366 fh = GNUNET_DISK_file_open ("/etc/hosts", 1338 fh = GNUNET_DISK_file_open ("/etc/hosts",
1367 GNUNET_DISK_OPEN_READ, 1339 GNUNET_DISK_OPEN_READ,
1368 GNUNET_DISK_PERM_NONE); 1340 GNUNET_DISK_PERM_NONE);
1369 if (NULL == fh) 1341 if (NULL == fh)
1370 { 1342 {
1371 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1343 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1372 "Failed to open /etc/hosts"); 1344 "Failed to open /etc/hosts");
1373 return; 1345 return;
1374 } 1346 }
1375 if (GNUNET_OK != 1347 if (GNUNET_OK !=
1376 GNUNET_DISK_file_handle_size (fh, 1348 GNUNET_DISK_file_handle_size (fh,
1377 &bytes_read)) 1349 &bytes_read))
1378 { 1350 {
1379 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 1351 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1380 "Could not determin size of /etc/hosts. " 1352 "Could not determin size of /etc/hosts. "
1381 "DNS resolution will not be possible.\n"); 1353 "DNS resolution will not be possible.\n");
1382 GNUNET_DISK_file_close (fh); 1354 GNUNET_DISK_file_close (fh);
1383 return; 1355 return;
1384 } 1356 }
1385 if ((size_t) bytes_read > SIZE_MAX) 1357 if ((size_t) bytes_read > SIZE_MAX)
1386 { 1358 {
1387 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 1359 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1388 "/etc/hosts file too large to mmap. " 1360 "/etc/hosts file too large to mmap. "
1389 "DNS resolution will not be possible.\n"); 1361 "DNS resolution will not be possible.\n");
1390 GNUNET_DISK_file_close (fh); 1362 GNUNET_DISK_file_close (fh);
1391 return; 1363 return;
1392 } 1364 }
1393 buf = GNUNET_DISK_file_map (fh, 1365 buf = GNUNET_DISK_file_map (fh,
1394 &mh, 1366 &mh,
1395 GNUNET_DISK_MAP_TYPE_READ, 1367 GNUNET_DISK_MAP_TYPE_READ,
1396 (size_t) bytes_read); 1368 (size_t) bytes_read);
1397 read_offset = 0; 1369 read_offset = 0;
1398 while (read_offset < (size_t) bytes_read) 1370 while (read_offset < (size_t) bytes_read)
1399 { 1371 {
@@ -1406,7 +1378,7 @@ load_etc_hosts (void)
1406 break; 1378 break;
1407 line_len = newline - buf - read_offset; 1379 line_len = newline - buf - read_offset;
1408 extract_hosts (buf + read_offset, 1380 extract_hosts (buf + read_offset,
1409 line_len); 1381 line_len);
1410 read_offset += line_len + 1; 1382 read_offset += line_len + 1;
1411 } 1383 }
1412 GNUNET_DISK_file_unmap (mh); 1384 GNUNET_DISK_file_unmap (mh);
@@ -1423,8 +1395,8 @@ load_etc_hosts (void)
1423 */ 1395 */
1424static void 1396static void
1425init_cb (void *cls, 1397init_cb (void *cls,
1426 const struct GNUNET_CONFIGURATION_Handle *cfg, 1398 const struct GNUNET_CONFIGURATION_Handle *cfg,
1427 struct GNUNET_SERVICE_Handle *sh) 1399 struct GNUNET_SERVICE_Handle *sh)
1428{ 1400{
1429 char **dns_servers; 1401 char **dns_servers;
1430 int num_dns_servers; 1402 int num_dns_servers;
@@ -1433,23 +1405,23 @@ init_cb (void *cls,
1433 (void) sh; 1405 (void) sh;
1434 load_etc_hosts (); 1406 load_etc_hosts ();
1435 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, 1407 GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
1436 cls); 1408 cls);
1437 dnsstub_ctx = GNUNET_DNSSTUB_start (128); 1409 dnsstub_ctx = GNUNET_DNSSTUB_start (128);
1438 dns_servers = NULL; 1410 dns_servers = NULL;
1439 num_dns_servers = lookup_dns_servers (&dns_servers); 1411 num_dns_servers = lookup_dns_servers (&dns_servers);
1440 if (0 >= num_dns_servers) 1412 if (0 >= num_dns_servers)
1441 { 1413 {
1442 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 1414 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1443 _("No DNS server available. DNS resolution will not be possible.\n")); 1415 _("No DNS server available. DNS resolution will not be possible.\n"));
1444 return; 1416 return;
1445 } 1417 }
1446 for (int i = 0; i < num_dns_servers; i++) 1418 for (int i = 0; i < num_dns_servers; i++)
1447 { 1419 {
1448 int result = GNUNET_DNSSTUB_add_dns_ip (dnsstub_ctx, dns_servers[i]); 1420 int result = GNUNET_DNSSTUB_add_dns_ip (dnsstub_ctx, dns_servers[i]);
1449 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1421 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1450 "Adding DNS server '%s': %s\n", 1422 "Adding DNS server '%s': %s\n",
1451 dns_servers[i], 1423 dns_servers[i],
1452 GNUNET_OK == result ? "success" : "failure"); 1424 GNUNET_OK == result ? "success" : "failure");
1453 GNUNET_free (dns_servers[i]); 1425 GNUNET_free (dns_servers[i]);
1454 } 1426 }
1455 GNUNET_free_non_null (dns_servers); 1427 GNUNET_free_non_null (dns_servers);
@@ -1466,8 +1438,8 @@ init_cb (void *cls,
1466 */ 1438 */
1467static void * 1439static void *
1468connect_cb (void *cls, 1440connect_cb (void *cls,
1469 struct GNUNET_SERVICE_Client *c, 1441 struct GNUNET_SERVICE_Client *c,
1470 struct GNUNET_MQ_Handle *mq) 1442 struct GNUNET_MQ_Handle *mq)
1471{ 1443{
1472 (void) cls; 1444 (void) cls;
1473 (void) mq; 1445 (void) mq;
@@ -1485,8 +1457,8 @@ connect_cb (void *cls,
1485 */ 1457 */
1486static void 1458static void
1487disconnect_cb (void *cls, 1459disconnect_cb (void *cls,
1488 struct GNUNET_SERVICE_Client *c, 1460 struct GNUNET_SERVICE_Client *c,
1489 void *internal_cls) 1461 void *internal_cls)
1490{ 1462{
1491 struct ActiveLookup *n; 1463 struct ActiveLookup *n;
1492 (void) cls; 1464 (void) cls;
@@ -1515,9 +1487,9 @@ GNUNET_SERVICE_MAIN
1515 &disconnect_cb, 1487 &disconnect_cb,
1516 NULL, 1488 NULL,
1517 GNUNET_MQ_hd_var_size (get, 1489 GNUNET_MQ_hd_var_size (get,
1518 GNUNET_MESSAGE_TYPE_RESOLVER_REQUEST, 1490 GNUNET_MESSAGE_TYPE_RESOLVER_REQUEST,
1519 struct GNUNET_RESOLVER_GetMessage, 1491 struct GNUNET_RESOLVER_GetMessage,
1520 NULL), 1492 NULL),
1521 GNUNET_MQ_handler_end ()); 1493 GNUNET_MQ_handler_end ());
1522 1494
1523 1495
diff --git a/src/util/mq.c b/src/util/mq.c
index d2f5add19..72ab8b72d 100644
--- a/src/util/mq.c
+++ b/src/util/mq.c
@@ -964,6 +964,7 @@ GNUNET_MQ_send_cancel (struct GNUNET_MQ_Envelope *ev)
964 { 964 {
965 /* complex case, we already started with transmitting 965 /* complex case, we already started with transmitting
966 the message using the callbacks. */ 966 the message using the callbacks. */
967 GNUNET_assert (GNUNET_NO == mq->in_flight);
967 GNUNET_assert (0 < mq->queue_length); 968 GNUNET_assert (0 < mq->queue_length);
968 mq->queue_length--; 969 mq->queue_length--;
969 mq->cancel_impl (mq, 970 mq->cancel_impl (mq,
diff --git a/src/util/scheduler.c b/src/util/scheduler.c
index dd0d5d5cf..3bd7ccec7 100644
--- a/src/util/scheduler.c
+++ b/src/util/scheduler.c
@@ -658,8 +658,8 @@ sighandler_shutdown ()
658 int old_errno = errno; /* backup errno */ 658 int old_errno = errno; /* backup errno */
659 659
660 if (getpid () != my_pid) 660 if (getpid () != my_pid)
661 exit (1); /* we have fork'ed since the signal handler was created, 661 _exit (1); /* we have fork'ed since the signal handler was created,
662 * ignore the signal, see https://gnunet.org/vfork discussion */ 662 * ignore the signal, see https://gnunet.org/vfork discussion */
663 GNUNET_DISK_file_write (GNUNET_DISK_pipe_handle 663 GNUNET_DISK_file_write (GNUNET_DISK_pipe_handle
664 (shutdown_pipe_handle, GNUNET_DISK_PIPE_END_WRITE), 664 (shutdown_pipe_handle, GNUNET_DISK_PIPE_END_WRITE),
665 &c, sizeof (c)); 665 &c, sizeof (c));
diff --git a/src/util/service.c b/src/util/service.c
index 5117f006f..f38e4b353 100644
--- a/src/util/service.c
+++ b/src/util/service.c
@@ -888,6 +888,8 @@ accept_client (void *cls)
888 start_client (slc->sh, 888 start_client (slc->sh,
889 sock); 889 sock);
890 } 890 }
891 if (0 != sh->suspend_state)
892 return;
891 slc->listen_task 893 slc->listen_task
892 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 894 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
893 slc->listen_socket, 895 slc->listen_socket,