[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r36367 - in gnunet: po src/consensus src/set
From: |
gnunet |
Subject: |
[GNUnet-SVN] r36367 - in gnunet: po src/consensus src/set |
Date: |
Tue, 22 Sep 2015 03:20:28 +0200 |
Author: dold
Date: 2015-09-22 03:20:28 +0200 (Tue, 22 Sep 2015)
New Revision: 36367
Modified:
gnunet/po/POTFILES.in
gnunet/po/de.po
gnunet/po/es.po
gnunet/po/fr.po
gnunet/po/sv.po
gnunet/po/vi.po
gnunet/po/zh_CN.po
gnunet/src/consensus/consensus_protocol.h
gnunet/src/consensus/gnunet-service-consensus.c
gnunet/src/consensus/test_consensus.conf
gnunet/src/set/gnunet-service-set.c
gnunet/src/set/gnunet-service-set.h
Log:
work on CONSENSUS and SET
- byzantine consensus work in progress
- fix SET generation handling
Modified: gnunet/po/POTFILES.in
===================================================================
--- gnunet/po/POTFILES.in 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/po/POTFILES.in 2015-09-22 01:20:28 UTC (rev 36367)
@@ -211,6 +211,7 @@
src/namecache/gnunet-namecache.c
src/namecache/gnunet-service-namecache.c
src/namecache/namecache_api.c
+src/namecache/plugin_namecache_flat.c
src/namecache/plugin_namecache_postgres.c
src/namecache/plugin_namecache_sqlite.c
src/namestore/gnunet-namestore.c
@@ -218,6 +219,7 @@
src/namestore/gnunet-service-namestore.c
src/namestore/namestore_api.c
src/namestore/namestore_api_monitor.c
+src/namestore/plugin_namestore_flat.c
src/namestore/plugin_namestore_postgres.c
src/namestore/plugin_namestore_sqlite.c
src/namestore/plugin_rest_namestore.c
@@ -225,6 +227,7 @@
src/nat/gnunet-helper-nat-client-windows.c
src/nat/gnunet-helper-nat-server.c
src/nat/gnunet-helper-nat-server-windows.c
+src/nat/gnunet-nat.c
src/nat/gnunet-nat-server.c
src/nat/nat_auto.c
src/nat/nat.c
@@ -281,6 +284,8 @@
src/scalarproduct/gnunet-scalarproduct.c
src/scalarproduct/gnunet-service-scalarproduct_alice.c
src/scalarproduct/gnunet-service-scalarproduct_bob.c
+src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
+src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c
src/scalarproduct/scalarproduct_api.c
src/secretsharing/gnunet-secretsharing-profiler.c
src/secretsharing/gnunet-service-secretsharing.c
Modified: gnunet/po/de.po
===================================================================
--- gnunet/po/de.po 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/po/de.po 2015-09-22 01:20:28 UTC (rev 36367)
@@ -10,7 +10,7 @@
msgstr ""
"Project-Id-Version: gnunet 0.10.1\n"
"Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2015-07-24 15:20+0200\n"
+"POT-Creation-Date: 2015-09-06 02:18+0200\n"
"PO-Revision-Date: 2015-03-08 16:16+0100\n"
"Last-Translator: Mario Blättermann <address@hidden>\n"
"Language-Team: German <address@hidden>\n"
@@ -352,13 +352,11 @@
"%llu\n"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3290
-#: src/ats-tests/gnunet-solver-eval.c:918
+#: src/ats/gnunet-ats-solver-eval.c:3290 src/ats-tests/gnunet-solver-eval.c:918
msgid "solver to use"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3293
-#: src/ats-tests/gnunet-solver-eval.c:921
+#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:921
#: src/ats-tests/gnunet-solver-eval.c:924
msgid "experiment to use"
msgstr ""
@@ -638,56 +636,56 @@
msgid "Print information about ATS state"
msgstr "Informationen über andere GNUnet Knoten ausgeben."
-#: src/cadet/gnunet-cadet.c:376
+#: src/cadet/gnunet-cadet.c:458
#, fuzzy, c-format
msgid "Invalid target `%s'\n"
msgstr "Ungültiger Parameter: `%s'\n"
-#: src/cadet/gnunet-cadet.c:643
+#: src/cadet/gnunet-cadet.c:735
#, fuzzy, c-format
msgid "Invalid peer ID `%s'\n"
msgstr "Ungültige Antwort auf `%s'.\n"
-#: src/cadet/gnunet-cadet.c:686
+#: src/cadet/gnunet-cadet.c:778
#, fuzzy, c-format
msgid "Invalid tunnel owner `%s'\n"
msgstr "Ungültiger Parameter: `%s'\n"
-#: src/cadet/gnunet-cadet.c:752
-msgid "You must NOT give a TARGETwhen using 'request all' options\n"
+#: src/cadet/gnunet-cadet.c:844
+msgid "You must NOT give a TARGET when using 'request all' options\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:849
+#: src/cadet/gnunet-cadet.c:941
msgid "provide information about a particular connection"
msgstr ""
-#: src/cadet/gnunet-cadet.c:852
+#: src/cadet/gnunet-cadet.c:944
msgid "activate echo mode"
msgstr ""
-#: src/cadet/gnunet-cadet.c:855
+#: src/cadet/gnunet-cadet.c:947
msgid "dump debug information to STDERR"
msgstr ""
-#: src/cadet/gnunet-cadet.c:861
+#: src/cadet/gnunet-cadet.c:953
msgid "port to listen to (default; 0)"
msgstr ""
-#: src/cadet/gnunet-cadet.c:864
+#: src/cadet/gnunet-cadet.c:956
#, fuzzy
msgid "provide information about a patricular peer"
msgstr "Informationen über andere GNUnet Knoten ausgeben."
-#: src/cadet/gnunet-cadet.c:867
+#: src/cadet/gnunet-cadet.c:959
#, fuzzy
msgid "provide information about all peers"
msgstr "Informationen über andere GNUnet Knoten ausgeben."
-#: src/cadet/gnunet-cadet.c:870
+#: src/cadet/gnunet-cadet.c:962
msgid "provide information about a particular tunnel"
msgstr ""
-#: src/cadet/gnunet-cadet.c:873
+#: src/cadet/gnunet-cadet.c:965
#, fuzzy
msgid "provide information about all tunnels"
msgstr "Informationen über andere GNUnet Knoten ausgeben."
@@ -1410,20 +1408,20 @@
msgid "# PAYLOAD dropped (out of order)"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:177
+#: src/core/gnunet-service-core_neighbours.c:178
msgid "# sessions terminated by transport disconnect"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:193
-#: src/core/gnunet-service-core_neighbours.c:355
+#: src/core/gnunet-service-core_neighbours.c:194
+#: src/core/gnunet-service-core_neighbours.c:362
msgid "# neighbour entries allocated"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:264
+#: src/core/gnunet-service-core_neighbours.c:270
msgid "# encrypted bytes given to transport"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:438
+#: src/core/gnunet-service-core_neighbours.c:448
#, fuzzy, c-format
msgid "Unsupported message of type %u (%u bytes) received from peer `%s'\n"
msgstr "Ungültige `%s' Nachricht von Knoten `%s' empfangen.\n"
@@ -1470,7 +1468,7 @@
msgstr ""
#: src/datacache/datacache.c:119 src/datacache/datacache.c:294
-#: src/datastore/gnunet-service-datastore.c:853
+#: src/datastore/gnunet-service-datastore.c:866
msgid "# bytes stored"
msgstr "# gespeicherte Bytes"
@@ -1546,38 +1544,38 @@
msgid "Failed to transmit request to drop database.\n"
msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
-#: src/datastore/datastore_api.c:394
+#: src/datastore/datastore_api.c:395
msgid "# queue entry timeouts"
msgstr ""
-#: src/datastore/datastore_api.c:443
+#: src/datastore/datastore_api.c:450
msgid "# queue overflows"
msgstr ""
-#: src/datastore/datastore_api.c:471
+#: src/datastore/datastore_api.c:478
#, fuzzy
msgid "# queue entries created"
msgstr "# PING Nachrichten erstellt"
-#: src/datastore/datastore_api.c:491
+#: src/datastore/datastore_api.c:498
msgid "# Requests dropped from datastore queue"
msgstr ""
-#: src/datastore/datastore_api.c:533
+#: src/datastore/datastore_api.c:540
msgid "# datastore connections (re)created"
msgstr ""
-#: src/datastore/datastore_api.c:621
+#: src/datastore/datastore_api.c:628
#, fuzzy
msgid "# transmission request failures"
msgstr "# Klartext PONG Nachrichten empfangen"
-#: src/datastore/datastore_api.c:645
+#: src/datastore/datastore_api.c:652
#, fuzzy
msgid "# bytes sent to datastore"
msgstr "# bytes in der Datenbank"
-#: src/datastore/datastore_api.c:787
+#: src/datastore/datastore_api.c:794
#, fuzzy
msgid "Failed to receive status response from database."
msgstr ""
@@ -1584,55 +1582,55 @@
"\n"
"Fehler beim Empfangen der Antwort von gnunetd.\n"
-#: src/datastore/datastore_api.c:801
+#: src/datastore/datastore_api.c:808
msgid "Error reading response from datastore service"
msgstr ""
-#: src/datastore/datastore_api.c:813 src/datastore/datastore_api.c:819
+#: src/datastore/datastore_api.c:820 src/datastore/datastore_api.c:826
msgid "Invalid error message received from datastore service"
msgstr "Ungültige Fehlermeldung vom Datenspeicherdienst empfangen"
-#: src/datastore/datastore_api.c:823
+#: src/datastore/datastore_api.c:830
msgid "# status messages received"
msgstr "# empfangene Statusmeldungen"
-#: src/datastore/datastore_api.c:893
+#: src/datastore/datastore_api.c:909
#, fuzzy
msgid "# PUT requests executed"
msgstr "# dht Anfragen weitergeleitet"
-#: src/datastore/datastore_api.c:959
+#: src/datastore/datastore_api.c:975
#, fuzzy
msgid "# RESERVE requests executed"
msgstr "# dht Anfragen weitergeleitet"
-#: src/datastore/datastore_api.c:1020
+#: src/datastore/datastore_api.c:1036
msgid "# RELEASE RESERVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1080
+#: src/datastore/datastore_api.c:1096
#, fuzzy
msgid "# UPDATE requests executed"
msgstr "# dht Anfragen weitergeleitet"
-#: src/datastore/datastore_api.c:1144
+#: src/datastore/datastore_api.c:1160
#, fuzzy
msgid "# REMOVE requests executed"
msgstr "# dht Anfragen weitergeleitet"
-#: src/datastore/datastore_api.c:1248
+#: src/datastore/datastore_api.c:1264
msgid "# Results received"
msgstr "# empfangene Ergebnisse"
-#: src/datastore/datastore_api.c:1315
+#: src/datastore/datastore_api.c:1331
msgid "# GET REPLICATION requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1378
+#: src/datastore/datastore_api.c:1394
msgid "# GET ZERO ANONYMITY requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1447
+#: src/datastore/datastore_api.c:1463
msgid "# GET requests executed"
msgstr "# ausgeführte GET-Anfragen"
@@ -1657,29 +1655,29 @@
msgid "Manipulate GNUnet datastore"
msgstr "sqlite Datenspeicher"
-#: src/datastore/gnunet-service-datastore.c:365
+#: src/datastore/gnunet-service-datastore.c:372
msgid "# bytes expired"
msgstr "# abgelaufene Bytes"
-#: src/datastore/gnunet-service-datastore.c:439
+#: src/datastore/gnunet-service-datastore.c:447
msgid "# bytes purged (low-priority)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:497
+#: src/datastore/gnunet-service-datastore.c:505
#: src/gns/gnunet-gns-helper-service-w32.c:223
msgid "Transmission to client failed!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:528
+#: src/datastore/gnunet-service-datastore.c:536
#: src/gns/gnunet-gns-helper-service-w32.c:262
msgid "Shutdown in progress, aborting transmission.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:643
+#: src/datastore/gnunet-service-datastore.c:652
msgid "# results found"
msgstr "# gefundene Ergebnisse"
-#: src/datastore/gnunet-service-datastore.c:686
+#: src/datastore/gnunet-service-datastore.c:696
#, c-format
msgid ""
"Insufficient space (%llu bytes are available) to satisfy `%s' request for "
@@ -1686,7 +1684,7 @@
"%llu bytes\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:697
+#: src/datastore/gnunet-service-datastore.c:707
#, c-format
msgid ""
"The requested amount (%llu bytes) is larger than the cache size (%llu "
@@ -1693,134 +1691,134 @@
"bytes)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:701
+#: src/datastore/gnunet-service-datastore.c:711
msgid ""
"Insufficient space to satisfy request and requested amount is larger than "
"cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:707
+#: src/datastore/gnunet-service-datastore.c:717
msgid "Insufficient space to satisfy request"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:712
-#: src/datastore/gnunet-service-datastore.c:767
-#: src/datastore/gnunet-service-datastore.c:1019
-#: src/datastore/gnunet-service-datastore.c:1597
+#: src/datastore/gnunet-service-datastore.c:723
+#: src/datastore/gnunet-service-datastore.c:779
+#: src/datastore/gnunet-service-datastore.c:1035
+#: src/datastore/gnunet-service-datastore.c:1630
msgid "# reserved"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:780
+#: src/datastore/gnunet-service-datastore.c:793
msgid "Could not find matching reservation"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:865
+#: src/datastore/gnunet-service-datastore.c:879
#, c-format
msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1071
+#: src/datastore/gnunet-service-datastore.c:1088
#, fuzzy
msgid "# GET requests received"
msgstr "# Client Trace-Anfragen empfangen"
-#: src/datastore/gnunet-service-datastore.c:1083
+#: src/datastore/gnunet-service-datastore.c:1101
msgid "# requests filtered by bloomfilter"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1121
+#: src/datastore/gnunet-service-datastore.c:1141
#, fuzzy
msgid "# UPDATE requests received"
msgstr "# Client Trace-Anfragen empfangen"
-#: src/datastore/gnunet-service-datastore.c:1149
+#: src/datastore/gnunet-service-datastore.c:1170
#, fuzzy
msgid "# GET REPLICATION requests received"
msgstr "# Client Trace-Anfragen empfangen"
-#: src/datastore/gnunet-service-datastore.c:1182
+#: src/datastore/gnunet-service-datastore.c:1204
#, fuzzy
msgid "# GET ZERO ANONYMITY requests received"
msgstr "# Client Trace-Anfragen empfangen"
-#: src/datastore/gnunet-service-datastore.c:1207
+#: src/datastore/gnunet-service-datastore.c:1233
msgid "Content not found"
msgstr "Kein Inhalt gefunden"
-#: src/datastore/gnunet-service-datastore.c:1215
+#: src/datastore/gnunet-service-datastore.c:1244
msgid "# bytes removed (explicit request)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1247
+#: src/datastore/gnunet-service-datastore.c:1277
#, fuzzy
msgid "# REMOVE requests received"
msgstr "# Client Trace-Anfragen empfangen"
-#: src/datastore/gnunet-service-datastore.c:1291
+#: src/datastore/gnunet-service-datastore.c:1321
#, c-format
msgid ""
"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1296
+#: src/datastore/gnunet-service-datastore.c:1326
#, c-format
msgid "New payload: %lld\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1349
+#: src/datastore/gnunet-service-datastore.c:1379
#, c-format
msgid "Loading `%s' datastore plugin\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1360
+#: src/datastore/gnunet-service-datastore.c:1390
#, fuzzy, c-format
msgid "Failed to load datastore plugin for `%s'\n"
msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
-#: src/datastore/gnunet-service-datastore.c:1429
-#: src/datastore/gnunet-service-datastore.c:1490
+#: src/datastore/gnunet-service-datastore.c:1459
+#: src/datastore/gnunet-service-datastore.c:1522
msgid "Bloomfilter construction complete.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1477
+#: src/datastore/gnunet-service-datastore.c:1509
msgid "Rebuilding bloomfilter. Please be patient.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1487
+#: src/datastore/gnunet-service-datastore.c:1519
msgid "Plugin does not support get_keys function. Please fix!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1625
-#: src/datastore/gnunet-service-datastore.c:1636
+#: src/datastore/gnunet-service-datastore.c:1661
+#: src/datastore/gnunet-service-datastore.c:1673
#, fuzzy, c-format
msgid "No `%s' specified for `%s' in configuration!\n"
msgstr "In der Konfigurationsdatei wurden keine Anwendungen definiert!\n"
-#: src/datastore/gnunet-service-datastore.c:1630
+#: src/datastore/gnunet-service-datastore.c:1667
#, fuzzy, c-format
msgid "# bytes used in file-sharing datastore `%s'"
msgstr "# bytes erlaubt in der Datenbank"
-#: src/datastore/gnunet-service-datastore.c:1641
+#: src/datastore/gnunet-service-datastore.c:1679
msgid "# quota"
msgstr "# Kontingent"
-#: src/datastore/gnunet-service-datastore.c:1643
+#: src/datastore/gnunet-service-datastore.c:1681
msgid "# cache size"
msgstr "# Zwischenspeichergröße"
-#: src/datastore/gnunet-service-datastore.c:1656
+#: src/datastore/gnunet-service-datastore.c:1696
#, c-format
msgid "Could not use specified filename `%s' for bloomfilter.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1674
-#: src/datastore/gnunet-service-datastore.c:1690
+#: src/datastore/gnunet-service-datastore.c:1714
+#: src/datastore/gnunet-service-datastore.c:1730
#, fuzzy, c-format
msgid "Failed to remove bogus bloomfilter file `%s'\n"
msgstr "Datei wurde als `%s' gespeichert.\n"
-#: src/datastore/gnunet-service-datastore.c:1720
+#: src/datastore/gnunet-service-datastore.c:1760
msgid "Failed to initialize bloomfilter.\n"
msgstr "Bloomfilter konnte nicht initialisiert werden.\n"
@@ -1879,7 +1877,7 @@
#: src/namecache/plugin_namecache_sqlite.c:193
#: src/namestore/plugin_namestore_sqlite.c:204
#: src/peerstore/plugin_peerstore_sqlite.c:479
-#: src/psycstore/plugin_psycstore_sqlite.c:324
+#: src/psycstore/plugin_psycstore_sqlite.c:325
#, c-format
msgid "Unable to initialize SQLite: %s.\n"
msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
@@ -1955,9 +1953,9 @@
msgstr ""
#: src/dht/gnunet-dht-get.c:204 src/dht/gnunet-dht-monitor.c:271
-#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:755
-#: src/fs/gnunet-download.c:328 src/fs/gnunet-publish.c:961
-#: src/fs/gnunet-search.c:307 src/fs/gnunet-unindex.c:168
+#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:794
+#: src/fs/gnunet-download.c:327 src/fs/gnunet-publish.c:954
+#: src/fs/gnunet-search.c:306 src/fs/gnunet-unindex.c:167
#: src/nse/gnunet-nse-profiler.c:873
msgid "be verbose (print progress information)"
msgstr ""
@@ -1974,8 +1972,7 @@
msgid "Prints all packets that go through the DHT."
msgstr ""
-#: src/dht/gnunet_dht_profiler.c:1393
-#: src/testbed/gnunet-testbed-profiler.c:267
+#: src/dht/gnunet_dht_profiler.c:1393 src/testbed/gnunet-testbed-profiler.c:267
#, c-format
msgid "Exiting as the number of peers is %u\n"
msgstr ""
@@ -2193,8 +2190,7 @@
msgid "# GET requests given to datacache"
msgstr ""
-#: src/dht/gnunet-service-dht_hello.c:84
-#: src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
msgid "# HELLOs obtained from peerinfo"
msgstr ""
@@ -3063,7 +3059,7 @@
msgid "Failed to connect to datastore."
msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden."
-#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:443
+#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:441
#, fuzzy, c-format
msgid "Publishing failed: %s"
msgstr ""
@@ -3070,49 +3066,49 @@
"\n"
"Fehler beim Uploaden der Datei: %s\n"
-#: src/fs/fs_publish.c:709 src/fs/fs_publish.c:726 src/fs/fs_publish.c:765
-#: src/fs/fs_publish.c:786 src/fs/fs_publish.c:810 src/fs/fs_publish.c:1060
+#: src/fs/fs_publish.c:707 src/fs/fs_publish.c:724 src/fs/fs_publish.c:763
+#: src/fs/fs_publish.c:784 src/fs/fs_publish.c:808 src/fs/fs_publish.c:1058
#, fuzzy, c-format
msgid "Can not index file `%s': %s. Will try to insert instead.\n"
msgstr "Indizieren der Datei `%s' schlug fehl. Versuch Datei einzufügen...\n"
-#: src/fs/fs_publish.c:711
+#: src/fs/fs_publish.c:709
msgid "timeout on index-start request to `fs' service"
msgstr ""
-#: src/fs/fs_publish.c:723
+#: src/fs/fs_publish.c:721
#, fuzzy
msgid "unknown error"
msgstr "Unbekannter Fehler"
-#: src/fs/fs_publish.c:767
+#: src/fs/fs_publish.c:765
msgid "failed to compute hash"
msgstr ""
-#: src/fs/fs_publish.c:787
+#: src/fs/fs_publish.c:785
msgid "filename too long"
msgstr "Dateiname zu lang"
-#: src/fs/fs_publish.c:812
+#: src/fs/fs_publish.c:810
#, fuzzy
msgid "could not connect to `fs' service"
msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
-#: src/fs/fs_publish.c:835
+#: src/fs/fs_publish.c:833
#, fuzzy, c-format
msgid "Failed to get file identifiers for `%s'\n"
msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-#: src/fs/fs_publish.c:899 src/fs/fs_publish.c:940
+#: src/fs/fs_publish.c:897 src/fs/fs_publish.c:938
msgid "Can not create LOC URI. Will continue with CHK instead.\n"
msgstr ""
-#: src/fs/fs_publish.c:1014
+#: src/fs/fs_publish.c:1012
#, fuzzy, c-format
msgid "Recursive upload failed at `%s': %s"
msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
-#: src/fs/fs_publish.c:1022
+#: src/fs/fs_publish.c:1020
#, fuzzy, c-format
msgid "Recursive upload failed: %s"
msgstr ""
@@ -3119,22 +3115,22 @@
"\n"
"Fehler beim Uploaden der Datei: %s\n"
-#: src/fs/fs_publish.c:1062
+#: src/fs/fs_publish.c:1060
#, fuzzy
msgid "needs to be an actual file"
msgstr "`%s' ist keine normale Datei.\n"
-#: src/fs/fs_publish.c:1301
+#: src/fs/fs_publish.c:1299
#, fuzzy, c-format
msgid "Datastore failure: %s"
msgstr "Verbindung fehlgeschlagen: %s\n"
-#: src/fs/fs_publish.c:1392
+#: src/fs/fs_publish.c:1390
#, c-format
msgid "Reserving space for %u entries and %llu bytes for publication\n"
msgstr ""
-#: src/fs/fs_publish_ksk.c:219
+#: src/fs/fs_publish_ksk.c:224
#, fuzzy
msgid "Could not connect to datastore."
msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
@@ -3315,48 +3311,48 @@
msgid "Failed to save state to file %s\n"
msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
-#: src/fs/gnunet-auto-share.c:402
+#: src/fs/gnunet-auto-share.c:415
#, c-format
msgid "Publication of `%s' done\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:490
+#: src/fs/gnunet-auto-share.c:504
#, c-format
msgid "Publishing `%s'\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:499
+#: src/fs/gnunet-auto-share.c:514
#, fuzzy, c-format
msgid "Failed to run `%s'\n"
msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-#: src/fs/gnunet-auto-share.c:688
+#: src/fs/gnunet-auto-share.c:725
#, fuzzy, c-format
msgid ""
"You must specify one and only one directory name for automatic publication.\n"
msgstr "Sie dürfen nur eine Datei zum Deindizieren angeben.\n"
-#: src/fs/gnunet-auto-share.c:739 src/fs/gnunet-publish.c:908
+#: src/fs/gnunet-auto-share.c:778 src/fs/gnunet-publish.c:901
msgid "set the desired LEVEL of sender-anonymity"
msgstr "Gewünschten Grad LEVEL an Sender-Anonymität festlegen"
-#: src/fs/gnunet-auto-share.c:743 src/fs/gnunet-publish.c:912
+#: src/fs/gnunet-auto-share.c:782 src/fs/gnunet-publish.c:905
msgid "disable adding the creation time to the metadata of the uploaded file"
msgstr ""
-#: src/fs/gnunet-auto-share.c:746 src/fs/gnunet-publish.c:915
+#: src/fs/gnunet-auto-share.c:785 src/fs/gnunet-publish.c:908
msgid "do not use libextractor to add keywords or metadata"
msgstr ""
-#: src/fs/gnunet-auto-share.c:749 src/fs/gnunet-publish.c:939
+#: src/fs/gnunet-auto-share.c:788 src/fs/gnunet-publish.c:932
msgid "specify the priority of the content"
msgstr "Die Priorität des Inhalts angeben"
-#: src/fs/gnunet-auto-share.c:752 src/fs/gnunet-publish.c:946
+#: src/fs/gnunet-auto-share.c:791 src/fs/gnunet-publish.c:939
msgid "set the desired replication LEVEL"
msgstr ""
-#: src/fs/gnunet-auto-share.c:772
+#: src/fs/gnunet-auto-share.c:815
msgid "Automatically publish files from a directory on GNUnet"
msgstr ""
@@ -3426,65 +3422,65 @@
msgid "Downloading `%s' done (%s/s).\n"
msgstr "Dateien aus dem GNUnet herunterladen."
-#: src/fs/gnunet-download.c:209 src/fs/gnunet-publish.c:319
-#: src/fs/gnunet-search.c:206 src/fs/gnunet-unindex.c:108
+#: src/fs/gnunet-download.c:208 src/fs/gnunet-publish.c:297
+#: src/fs/gnunet-search.c:205 src/fs/gnunet-unindex.c:107
#, c-format
msgid "Unexpected status: %d\n"
msgstr ""
-#: src/fs/gnunet-download.c:234
+#: src/fs/gnunet-download.c:233
#, fuzzy
msgid "You need to specify a URI argument.\n"
msgstr "Sie müssen einen Empfänger angeben!\n"
-#: src/fs/gnunet-download.c:240 src/fs/gnunet-publish.c:734
+#: src/fs/gnunet-download.c:239 src/fs/gnunet-publish.c:728
#, fuzzy, c-format
msgid "Failed to parse URI: %s\n"
msgstr "Datei `%s' hat URI: %s\n"
-#: src/fs/gnunet-download.c:247
+#: src/fs/gnunet-download.c:246
msgid "Only CHK or LOC URIs supported.\n"
msgstr ""
-#: src/fs/gnunet-download.c:254
+#: src/fs/gnunet-download.c:253
msgid "Target filename must be specified.\n"
msgstr ""
-#: src/fs/gnunet-download.c:268 src/fs/gnunet-publish.c:878
-#: src/fs/gnunet-search.c:256 src/fs/gnunet-unindex.c:140
+#: src/fs/gnunet-download.c:267 src/fs/gnunet-publish.c:872
+#: src/fs/gnunet-search.c:255 src/fs/gnunet-unindex.c:139
#, fuzzy, c-format
msgid "Could not initialize `%s' subsystem.\n"
msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
-#: src/fs/gnunet-download.c:305 src/fs/gnunet-search.c:295
+#: src/fs/gnunet-download.c:304 src/fs/gnunet-search.c:294
msgid "set the desired LEVEL of receiver-anonymity"
msgstr "Den Grad LEVEL der gewünschten Empfänger-Anonymität setzen"
-#: src/fs/gnunet-download.c:308
+#: src/fs/gnunet-download.c:307
msgid "delete incomplete downloads (when aborted with CTRL-C)"
msgstr ""
-#: src/fs/gnunet-download.c:311 src/fs/gnunet-search.c:298
+#: src/fs/gnunet-download.c:310 src/fs/gnunet-search.c:297
msgid "only search the local peer (no P2P network search)"
msgstr ""
-#: src/fs/gnunet-download.c:314
+#: src/fs/gnunet-download.c:313
msgid "write the file to FILENAME"
msgstr "Die Datei in DATEINAME schreiben"
-#: src/fs/gnunet-download.c:318
+#: src/fs/gnunet-download.c:317
msgid "set the maximum number of parallel downloads that is allowed"
msgstr ""
-#: src/fs/gnunet-download.c:322
+#: src/fs/gnunet-download.c:321
msgid "set the maximum number of parallel requests for blocks that is allowed"
msgstr ""
-#: src/fs/gnunet-download.c:325
+#: src/fs/gnunet-download.c:324
msgid "download a GNUnet directory recursively"
msgstr "Das GNUnet-Verzeichnis rekursiv herunterladen"
-#: src/fs/gnunet-download.c:339
+#: src/fs/gnunet-download.c:338
msgid ""
"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
"chk/...)"
@@ -3515,137 +3511,137 @@
msgid "run a testbed to measure file-sharing performance"
msgstr ""
-#: src/fs/gnunet-publish.c:238 src/fs/gnunet-publish.c:250
+#: src/fs/gnunet-publish.c:221 src/fs/gnunet-publish.c:233
#, c-format
msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
msgstr ""
-#: src/fs/gnunet-publish.c:257
+#: src/fs/gnunet-publish.c:241
#, fuzzy, c-format
msgid "Error publishing: %s.\n"
msgstr "Fehler beim Download: %s\n"
-#: src/fs/gnunet-publish.c:268
+#: src/fs/gnunet-publish.c:248
#, c-format
msgid "Publishing `%s' done.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:273
+#: src/fs/gnunet-publish.c:253
#, fuzzy, c-format
msgid "URI is `%s'.\n"
msgstr "Ich bin Peer `%s'.\n"
-#: src/fs/gnunet-publish.c:281
+#: src/fs/gnunet-publish.c:261
#, fuzzy, c-format
msgid "Namespace URI is `%s'.\n"
msgstr "Ich bin Peer `%s'.\n"
-#: src/fs/gnunet-publish.c:299
+#: src/fs/gnunet-publish.c:277
#, fuzzy
msgid "Starting cleanup after abort\n"
msgstr "`%s' Startvorgang abgeschlossen.\n"
-#: src/fs/gnunet-publish.c:306
+#: src/fs/gnunet-publish.c:284
#, fuzzy
msgid "Cleanup after abort completed.\n"
msgstr "`%s' Startvorgang abgeschlossen.\n"
-#: src/fs/gnunet-publish.c:312
+#: src/fs/gnunet-publish.c:290
#, fuzzy
msgid "Cleanup after abort failed.\n"
msgstr "`%s' Startvorgang abgeschlossen.\n"
-#: src/fs/gnunet-publish.c:447
+#: src/fs/gnunet-publish.c:432
#, fuzzy, c-format
msgid "Meta data for file `%s' (%s)\n"
msgstr "Daten des Moduls `%s' werden aktualisiert\n"
-#: src/fs/gnunet-publish.c:449
+#: src/fs/gnunet-publish.c:437
#, fuzzy, c-format
msgid "Keywords for file `%s' (%s)\n"
msgstr "Schlüsselwörter für Datei `%s':\n"
-#: src/fs/gnunet-publish.c:594
+#: src/fs/gnunet-publish.c:591
#, fuzzy
msgid "Could not publish\n"
msgstr "`%s': Kann nicht senden.\n"
-#: src/fs/gnunet-publish.c:619
+#: src/fs/gnunet-publish.c:616
#, fuzzy
msgid "Could not start publishing.\n"
msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
-#: src/fs/gnunet-publish.c:653
+#: src/fs/gnunet-publish.c:650
#, fuzzy, c-format
msgid "Scanning directory `%s'.\n"
msgstr "==> Verzeichnis `%s':\n"
-#: src/fs/gnunet-publish.c:657
+#: src/fs/gnunet-publish.c:654
#, fuzzy, c-format
msgid "Scanning file `%s'.\n"
msgstr "Binde Konfigurationsdatei `%s' ein\n"
-#: src/fs/gnunet-publish.c:663
+#: src/fs/gnunet-publish.c:660
#, c-format
msgid "There was trouble processing file `%s', skipping it.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:670
+#: src/fs/gnunet-publish.c:667
#, fuzzy
msgid "Preprocessing complete.\n"
msgstr "GNUnet wurde erfolgreich heruntergefahren.\n"
-#: src/fs/gnunet-publish.c:675
+#: src/fs/gnunet-publish.c:672
#, c-format
msgid "Extracting meta data from file `%s' complete.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:682
+#: src/fs/gnunet-publish.c:679
msgid "Meta data extraction has finished.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:691
+#: src/fs/gnunet-publish.c:688
#, fuzzy
msgid "Internal error scanning directory.\n"
msgstr "=\tFehler beim Lesen des Verzeichnisses.\n"
-#: src/fs/gnunet-publish.c:723
+#: src/fs/gnunet-publish.c:716
#, c-format
msgid "Selected pseudonym `%s' unknown\n"
msgstr ""
-#: src/fs/gnunet-publish.c:755
+#: src/fs/gnunet-publish.c:749
#, fuzzy, c-format
msgid "Failed to access `%s': %s\n"
msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-#: src/fs/gnunet-publish.c:769
+#: src/fs/gnunet-publish.c:763
msgid ""
"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
"installed?\n"
msgstr ""
-#: src/fs/gnunet-publish.c:825
+#: src/fs/gnunet-publish.c:819
#, c-format
msgid "Cannot extract metadata from a URI!\n"
msgstr ""
-#: src/fs/gnunet-publish.c:832
+#: src/fs/gnunet-publish.c:826
#, c-format
msgid "You must specify one and only one filename for insertion.\n"
msgstr "Sie dürfen nur eine einzige Datei zum Einfügen angeben.\n"
-#: src/fs/gnunet-publish.c:838
+#: src/fs/gnunet-publish.c:832
#, fuzzy, c-format
msgid "You must NOT specify an URI and a filename.\n"
msgstr "Sie müssen einen Empfänger angeben!\n"
-#: src/fs/gnunet-publish.c:846 src/vpn/gnunet-vpn.c:209
+#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:209
#, fuzzy, c-format
msgid "Option `%s' is required when using option `%s'.\n"
msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
-#: src/fs/gnunet-publish.c:857 src/fs/gnunet-publish.c:865
+#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
#: src/transport/gnunet-transport.c:1928 src/transport/gnunet-transport.c:1958
#: src/transport/gnunet-transport.c:1989
#, c-format
@@ -3652,7 +3648,7 @@
msgid "Option `%s' makes no sense without option `%s'.\n"
msgstr "Die Option »%s« ergibt keinen Sinn ohne die Option »%s«.\n"
-#: src/fs/gnunet-publish.c:919
+#: src/fs/gnunet-publish.c:912
msgid ""
"print list of extracted keywords that would be used, but do not perform "
"upload"
@@ -3660,7 +3656,7 @@
"Liste der extrahierten Schlüsselworte, die verwendet werden würden, "
"ausgeben, aber keinen Upload durchführen"
-#: src/fs/gnunet-publish.c:923
+#: src/fs/gnunet-publish.c:916
msgid ""
"add an additional keyword for the top-level file or directory (this option "
"can be specified multiple times)"
@@ -3668,13 +3664,13 @@
"Ein zusätzliches Schlüsselwort für die Datei oder das Verzeichnis auf der "
"obersten Ebene hinzufügen (diese Option kann mehrmals angegeben werden)"
-#: src/fs/gnunet-publish.c:927
+#: src/fs/gnunet-publish.c:920
msgid "set the meta-data for the given TYPE to the given VALUE"
msgstr ""
"Die Meta-Daten des angegebenen Typs TYPE auf den angegebenen Wert VALUE "
"setzen"
-#: src/fs/gnunet-publish.c:930
+#: src/fs/gnunet-publish.c:923
msgid ""
"do not index, perform full insertion (stores entire file in encrypted form "
"in GNUnet database)"
@@ -3682,7 +3678,7 @@
"Nicht indizieren, sondern komplett einfügen (speichert die gesamte Datei in "
"verschlüsselter Form in der GNUnet-Datenbank)"
-#: src/fs/gnunet-publish.c:935
+#: src/fs/gnunet-publish.c:928
msgid ""
"specify ID of an updated version to be published in the future (for "
"namespace insertions only)"
@@ -3690,19 +3686,19 @@
"ID einer aktualisierten Version angeben, die in der Zukunft veröffentlicht "
"werden soll. (nur für das Einfügen in Namensräume)"
-#: src/fs/gnunet-publish.c:943
+#: src/fs/gnunet-publish.c:936
msgid "publish the files under the pseudonym NAME (place file into namespace)"
msgstr ""
"Die Datei unter dem Pseudonym NAME veröffentlichen (platziert die Datei in "
"einem Namensraum)"
-#: src/fs/gnunet-publish.c:949
+#: src/fs/gnunet-publish.c:942
msgid ""
"only simulate the process but do not do any actual publishing (useful to "
"compute URIs)"
msgstr ""
-#: src/fs/gnunet-publish.c:953
+#: src/fs/gnunet-publish.c:946
msgid ""
"set the ID of this version of the publication (for namespace insertions only)"
msgstr ""
@@ -3709,13 +3705,13 @@
"Die ID dieser Version der Veröffentlichung setzen (nur für das Einfügen in "
"Namensräume)"
-#: src/fs/gnunet-publish.c:957
+#: src/fs/gnunet-publish.c:950
msgid ""
"URI to be published (can be used instead of passing a file to add keywords "
"to the file with the respective URI)"
msgstr ""
-#: src/fs/gnunet-publish.c:973
+#: src/fs/gnunet-publish.c:966
msgid "Publish a file or directory on GNUnet"
msgstr ""
@@ -3729,28 +3725,28 @@
msgid "Error searching: %s.\n"
msgstr "Fehler beim Verlassen der DHT.\n"
-#: src/fs/gnunet-search.c:246
+#: src/fs/gnunet-search.c:245
msgid "Could not create keyword URI from arguments.\n"
msgstr ""
-#: src/fs/gnunet-search.c:270
+#: src/fs/gnunet-search.c:269
#, fuzzy
msgid "Could not start searching.\n"
msgstr "Fehler beim Starten der Collection.\n"
-#: src/fs/gnunet-search.c:301
+#: src/fs/gnunet-search.c:300
msgid "write search results to file starting with PREFIX"
msgstr ""
-#: src/fs/gnunet-search.c:304
+#: src/fs/gnunet-search.c:303
msgid "automatically terminate search after DELAY"
msgstr ""
-#: src/fs/gnunet-search.c:311
+#: src/fs/gnunet-search.c:310
msgid "automatically terminate search after VALUE results are found"
msgstr ""
-#: src/fs/gnunet-search.c:322
+#: src/fs/gnunet-search.c:321
msgid "Search GNUnet for files that were published on GNUnet"
msgstr ""
@@ -4138,17 +4134,17 @@
msgid "Unindexing done.\n"
msgstr "Dateien deindizieren."
-#: src/fs/gnunet-unindex.c:130
+#: src/fs/gnunet-unindex.c:129
#, fuzzy, c-format
msgid "You must specify one and only one filename for unindexing.\n"
msgstr "Sie dürfen nur eine Datei zum Deindizieren angeben.\n"
-#: src/fs/gnunet-unindex.c:147
+#: src/fs/gnunet-unindex.c:146
#, fuzzy
msgid "Could not start unindex operation.\n"
msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n"
-#: src/fs/gnunet-unindex.c:179
+#: src/fs/gnunet-unindex.c:178
msgid "Unindex a file that was previously indexed with gnunet-publish."
msgstr ""
@@ -4552,68 +4548,68 @@
msgid "GNS REST API initialized\n"
msgstr " Verbindung fehlgeschlagen\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:291
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
#, c-format
msgid "Unable to parse IPv4 address `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:312
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
#, fuzzy, c-format
msgid "Failed to serialize NS record with value `%s'\n"
msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:334
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
#, c-format
msgid "Failed to serialize CNAME record with value `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:418
+#: src/gnsrecord/plugin_gnsrecord_dns.c:486
#, c-format
msgid "Failed to serialize CERT record with %u bytes\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:455
+#: src/gnsrecord/plugin_gnsrecord_dns.c:522
#, fuzzy, c-format
msgid "Unable to parse SOA record `%s'\n"
msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:474
+#: src/gnsrecord/plugin_gnsrecord_dns.c:541
#, c-format
msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:497
+#: src/gnsrecord/plugin_gnsrecord_dns.c:564
#, fuzzy, c-format
msgid "Failed to serialize PTR record with value `%s'\n"
msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:520
+#: src/gnsrecord/plugin_gnsrecord_dns.c:587
#, fuzzy, c-format
msgid "Unable to parse MX record `%s'\n"
msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:535
+#: src/gnsrecord/plugin_gnsrecord_dns.c:602
#, fuzzy, c-format
msgid "Failed to serialize MX record with hostname `%s'\n"
msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:562
+#: src/gnsrecord/plugin_gnsrecord_dns.c:629
#, fuzzy, c-format
msgid "Unable to parse SRV record `%s'\n"
msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:578
+#: src/gnsrecord/plugin_gnsrecord_dns.c:645
#, fuzzy, c-format
msgid "Failed to serialize SRV record with target `%s'\n"
msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:595
+#: src/gnsrecord/plugin_gnsrecord_dns.c:662
#, c-format
msgid "Unable to parse IPv6 address `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:619
-#: src/gnsrecord/plugin_gnsrecord_dns.c:635
+#: src/gnsrecord/plugin_gnsrecord_dns.c:686
+#: src/gnsrecord/plugin_gnsrecord_dns.c:702
#, fuzzy, c-format
msgid "Unable to parse TLSA record string `%s'\n"
msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
@@ -5132,6 +5128,31 @@
msgid "Namecache failed to cache block"
msgstr ""
+#: src/namecache/plugin_namecache_flat.c:119
+#: src/namecache/plugin_namecache_flat.c:236
+#: src/namestore/plugin_namestore_flat.c:184
+#: src/namestore/plugin_namestore_flat.c:352
+#, fuzzy, c-format
+msgid "Unable to initialize file: %s.\n"
+msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
+
+#: src/namecache/plugin_namecache_flat.c:130
+#: src/namestore/plugin_namestore_flat.c:195
+#, fuzzy, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/namecache/plugin_namecache_flat.c:142
+#: src/namestore/plugin_namestore_flat.c:207
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/namecache/plugin_namecache_flat.c:391
+#, fuzzy
+msgid "flat plugin running\n"
+msgstr "Sqlite-Datenbank läuft\n"
+
#: src/namecache/plugin_namecache_postgres.c:89
#: src/namestore/plugin_namestore_postgres.c:96
#, fuzzy
@@ -5230,8 +5251,7 @@
msgid "Invalid public key for reverse lookup `%s'\n"
msgstr ""
-#: src/namestore/gnunet-namestore.c:868
-#: src/peerinfo-tool/gnunet-peerinfo.c:817
+#: src/namestore/gnunet-namestore.c:868 src/peerinfo-tool/gnunet-peerinfo.c:817
#, fuzzy, c-format
msgid "Invalid URI `%s'\n"
msgstr "Ungültiger Parameter: `%s'\n"
@@ -5389,11 +5409,20 @@
msgid "Namestore failed to store record\n"
msgstr ""
+#: src/namestore/plugin_namestore_flat.c:650
+#, fuzzy
+msgid "flat file database running\n"
+msgstr "Sqlite-Datenbank läuft\n"
+
#: src/namestore/plugin_rest_namestore.c:1023
#, fuzzy
msgid "Namestore REST API initialized\n"
msgstr " Verbindung fehlgeschlagen\n"
+#: src/nat/gnunet-nat.c:160
+msgid "GNUnet NAT traversal autoconfigure daemon"
+msgstr ""
+
#: src/nat/gnunet-nat-server.c:279
#, c-format
msgid "Please pass valid port number as the first argument! (got `%s')\n"
@@ -5403,54 +5432,59 @@
msgid "GNUnet NAT traversal test helper daemon"
msgstr ""
-#: src/nat/nat_auto.c:179
+#: src/nat/nat_auto.c:394
msgid "NAT traversal with ICMP Server succeeded.\n"
msgstr ""
-#: src/nat/nat_auto.c:180
+#: src/nat/nat_auto.c:395
msgid "NAT traversal with ICMP Server failed.\n"
msgstr ""
-#: src/nat/nat_auto.c:201
+#: src/nat/nat_auto.c:416
msgid "Testing connection reversal with ICMP server.\n"
msgstr ""
-#: src/nat/nat_auto.c:249
+#: src/nat/nat_auto.c:448
#, fuzzy, c-format
msgid "Detected external IP `%s'\n"
msgstr "Ungültiger RPC `%s' empfangen.\n"
-#: src/nat/nat_auto.c:327
+#: src/nat/nat_auto.c:579
msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
msgstr ""
-#: src/nat/nat_auto.c:343
+#: src/nat/nat_auto.c:597
#, c-format
msgid "Detected internal network address `%s'.\n"
msgstr ""
-#: src/nat/nat_auto.c:406
+#: src/nat/nat_auto.c:669 src/nat/nat_test.c:364
+#, fuzzy
+msgid "Failed to connect to `gnunet-nat-server'\n"
+msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
+
+#: src/nat/nat_auto.c:715
msgid "upnpc found, enabling its use\n"
msgstr ""
-#: src/nat/nat_auto.c:407
+#: src/nat/nat_auto.c:716
#, fuzzy
msgid "upnpc not found\n"
msgstr "Kommando `%s' wurde nicht gefunden!\n"
-#: src/nat/nat_auto.c:437
+#: src/nat/nat_auto.c:748
msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
msgstr ""
-#: src/nat/nat_auto.c:445 src/nat/nat_auto.c:490
+#: src/nat/nat_auto.c:756 src/nat/nat_auto.c:804
msgid "test_icmp_server not possible, as we are not behind NAT\n"
msgstr ""
-#: src/nat/nat_auto.c:453 src/nat/nat_auto.c:498
+#: src/nat/nat_auto.c:764 src/nat/nat_auto.c:812
msgid "No working gnunet-helper-nat-server found\n"
msgstr ""
-#: src/nat/nat_auto.c:483
+#: src/nat/nat_auto.c:797
msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
msgstr ""
@@ -5464,26 +5498,26 @@
msgid "Failed to start %s\n"
msgstr "Fehler beim Starten der Collection.\n"
-#: src/nat/nat.c:1286
+#: src/nat/nat.c:1305
msgid "Error while running upnp client:\n"
msgstr ""
-#: src/nat/nat.c:1356
+#: src/nat/nat.c:1375
#, fuzzy, c-format
msgid "Failed to run upnp client for port %u\n"
msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
-#: src/nat/nat.c:1498
+#: src/nat/nat.c:1517
msgid "malformed"
msgstr ""
-#: src/nat/nat.c:1552
+#: src/nat/nat.c:1571
msgid ""
"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
"disabling UPnP \n"
msgstr ""
-#: src/nat/nat.c:1680 src/nat/nat.c:1692
+#: src/nat/nat.c:1700 src/nat/nat.c:1712
#, c-format
msgid ""
"Configuration requires `%s', but binary is not installed properly (SUID bit "
@@ -5490,93 +5524,93 @@
"not set). Option disabled.\n"
msgstr ""
-#: src/nat/nat.c:1830
+#: src/nat/nat.c:1855
msgid "Internal IP address not known, cannot use ICMP NAT traversal method\n"
msgstr ""
-#: src/nat/nat.c:1846
+#: src/nat/nat.c:1871
#, c-format
msgid "Running gnunet-helper-nat-client %s %s %u\n"
msgstr ""
-#: src/nat/nat.c:1931
+#: src/nat/nat.c:1958
msgid "Operation Successful"
msgstr ""
-#: src/nat/nat.c:1933
+#: src/nat/nat.c:1960
msgid "Internal Failure (IPC, ...)"
msgstr ""
-#: src/nat/nat.c:1935
+#: src/nat/nat.c:1962
msgid "Failure in network subsystem, check permissions."
msgstr ""
-#: src/nat/nat.c:1937
+#: src/nat/nat.c:1964
msgid "Encountered timeout while performing operation"
msgstr ""
-#: src/nat/nat.c:1939
+#: src/nat/nat.c:1966
msgid "detected that we are offline"
msgstr ""
-#: src/nat/nat.c:1941
+#: src/nat/nat.c:1968
#, fuzzy
msgid "`upnpc` command not found"
msgstr "Kommando `%s' wurde nicht gefunden!\n"
-#: src/nat/nat.c:1943
+#: src/nat/nat.c:1970
#, fuzzy
msgid "Failed to run `upnpc` command"
msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-#: src/nat/nat.c:1945
+#: src/nat/nat.c:1972
msgid "`upnpc' command took too long, process killed"
msgstr ""
-#: src/nat/nat.c:1947
+#: src/nat/nat.c:1974
msgid "`upnpc' command failed to establish port mapping"
msgstr ""
-#: src/nat/nat.c:1949
+#: src/nat/nat.c:1976
msgid "`external-ip' command not found"
msgstr ""
-#: src/nat/nat.c:1951
+#: src/nat/nat.c:1978
#, fuzzy
msgid "Failed to run `external-ip` command"
msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-#: src/nat/nat.c:1953
+#: src/nat/nat.c:1980
#, fuzzy
msgid "`external-ip' command output invalid"
msgstr "Kommando `%s' wurde nicht gefunden!\n"
-#: src/nat/nat.c:1955
+#: src/nat/nat.c:1982
msgid "no valid address was returned by `external-ip'"
msgstr ""
-#: src/nat/nat.c:1957
+#: src/nat/nat.c:1984
#, fuzzy
msgid "Could not determine interface with internal/local network address"
msgstr "Öffentliche IP-Adresse konnte nicht ermittelt werden.\n"
-#: src/nat/nat.c:1959
+#: src/nat/nat.c:1986
msgid "No functioning gnunet-helper-nat-server installation found"
msgstr ""
-#: src/nat/nat.c:1961
+#: src/nat/nat.c:1988
msgid "NAT test could not be initialized"
msgstr ""
-#: src/nat/nat.c:1963
+#: src/nat/nat.c:1990
msgid "NAT test timeout reached"
msgstr ""
-#: src/nat/nat.c:1965
+#: src/nat/nat.c:1992
msgid "could not register NAT"
msgstr ""
-#: src/nat/nat.c:1967
+#: src/nat/nat.c:1994
msgid "No working gnunet-helper-nat-client installation found"
msgstr ""
@@ -5590,17 +5624,12 @@
msgid "`upnpc' command not found\n"
msgstr "Kommando `%s' wurde nicht gefunden!\n"
-#: src/nat/nat_test.c:360
-#, fuzzy
-msgid "Failed to connect to `gnunet-nat-server'\n"
-msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-
-#: src/nat/nat_test.c:462
+#: src/nat/nat_test.c:467
#, c-format
msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
msgstr ""
-#: src/nat/nat_test.c:497
+#: src/nat/nat_test.c:502
#, fuzzy
msgid "NAT test failed to start NAT library\n"
msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
@@ -5641,8 +5670,8 @@
msgid "Measure quality and performance of the NSE service."
msgstr ""
-#: src/nse/gnunet-service-nse.c:1537
-#: src/revocation/gnunet-service-revocation.c:827 src/util/gnunet-scrypt.c:260
+#: src/nse/gnunet-service-nse.c:1541
+#: src/revocation/gnunet-service-revocation.c:848 src/util/gnunet-scrypt.c:260
msgid "Value is too large.\n"
msgstr ""
@@ -5902,7 +5931,7 @@
msgstr ""
#: src/peerstore/plugin_peerstore_sqlite.c:398
-#: src/psycstore/plugin_psycstore_sqlite.c:281
+#: src/psycstore/plugin_psycstore_sqlite.c:282
#, c-format
msgid ""
"Error executing SQL query: %s\n"
@@ -5910,7 +5939,7 @@
msgstr ""
#: src/peerstore/plugin_peerstore_sqlite.c:422
-#: src/psycstore/plugin_psycstore_sqlite.c:258
+#: src/psycstore/plugin_psycstore_sqlite.c:259
#, c-format
msgid ""
"Error preparing SQL query: %s\n"
@@ -5967,43 +5996,48 @@
msgid "Failed to get master counters!\n"
msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
-#: src/psycstore/gnunet-service-psycstore.c:645
-#, fuzzy
-msgid "Failed to begin modifying state!\n"
+#: src/psycstore/gnunet-service-psycstore.c:657
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
-#: src/psycstore/gnunet-service-psycstore.c:656
+#: src/psycstore/gnunet-service-psycstore.c:667
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
#, fuzzy
msgid "Failed to end modifying state!\n"
msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-#: src/psycstore/gnunet-service-psycstore.c:686
+#: src/psycstore/gnunet-service-psycstore.c:706
msgid "Tried to set invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:700
+#: src/psycstore/gnunet-service-psycstore.c:720
#, fuzzy
msgid "Failed to begin synchronizing state!\n"
msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
-#: src/psycstore/gnunet-service-psycstore.c:717
+#: src/psycstore/gnunet-service-psycstore.c:737
#, fuzzy
msgid "Failed to end synchronizing state!\n"
msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-#: src/psycstore/gnunet-service-psycstore.c:737
-#: src/psycstore/gnunet-service-psycstore.c:756
+#: src/psycstore/gnunet-service-psycstore.c:757
+#: src/psycstore/gnunet-service-psycstore.c:776
#, fuzzy
msgid "Failed to reset state!\n"
msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-#: src/psycstore/gnunet-service-psycstore.c:779
-#: src/psycstore/gnunet-service-psycstore.c:830
+#: src/psycstore/gnunet-service-psycstore.c:799
+#: src/psycstore/gnunet-service-psycstore.c:850
msgid "Tried to get invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:806
-#: src/psycstore/gnunet-service-psycstore.c:845
+#: src/psycstore/gnunet-service-psycstore.c:826
+#: src/psycstore/gnunet-service-psycstore.c:865
#, fuzzy
msgid "Failed to get state variable!\n"
msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
@@ -6013,7 +6047,7 @@
msgid "`%s' failed at %s:%d with error: %s (%d)\n"
msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
-#: src/psycstore/plugin_psycstore_sqlite.c:1907
+#: src/psycstore/plugin_psycstore_sqlite.c:1923
#, fuzzy
msgid "SQLite database running\n"
msgstr "SQL Datenbank beschädigt, Ergebnis wird ignoriert.\n"
@@ -6275,36 +6309,36 @@
msgid "test if the public key KEY has been revoked"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:427
+#: src/revocation/gnunet-service-revocation.c:481
msgid "# unsupported revocations received via set union"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:436
+#: src/revocation/gnunet-service-revocation.c:490
#, fuzzy
msgid "# revocation messages received via set union"
msgstr "# verschlüsselter PING Nachrichten empfangen"
-#: src/revocation/gnunet-service-revocation.c:441
+#: src/revocation/gnunet-service-revocation.c:495
#, c-format
msgid "Error computing revocation set union with %s\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:445
+#: src/revocation/gnunet-service-revocation.c:499
#, fuzzy
msgid "# revocation set unions failed"
msgstr " Verbindung fehlgeschlagen\n"
-#: src/revocation/gnunet-service-revocation.c:454
+#: src/revocation/gnunet-service-revocation.c:508
#, fuzzy
msgid "# revocation set unions completed"
msgstr "# Klartext PONG Nachrichten empfangen"
-#: src/revocation/gnunet-service-revocation.c:493
-#: src/revocation/gnunet-service-revocation.c:759
+#: src/revocation/gnunet-service-revocation.c:547
+#: src/revocation/gnunet-service-revocation.c:780
msgid "SET service crashed, terminating revocation service\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:851
+#: src/revocation/gnunet-service-revocation.c:872
#, fuzzy
msgid "Could not open revocation database file!"
msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n"
@@ -6368,7 +6402,9 @@
msgstr ""
#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1419
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1564
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1549
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1193
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1252
#, fuzzy
msgid "Connect to CADET failed\n"
msgstr " Verbindung fehlgeschlagen\n"
@@ -6634,7 +6670,7 @@
msgid "Error loading sensor from file: %s\n"
msgstr "Fehler beim Lesen von »%s«: %s\n"
-#: src/set/gnunet-service-set.c:1531
+#: src/set/gnunet-service-set.c:1960
#, fuzzy
msgid "Could not connect to cadet service\n"
msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
@@ -6759,7 +6795,7 @@
msgid "Could not save some persistent statistics\n"
msgstr ""
-#: src/statistics/statistics_api.c:1090
+#: src/statistics/statistics_api.c:1088
msgid ""
"Failed to receive acknowledgement from statistics service, some statistics "
"might have been lost!\n"
@@ -8359,7 +8395,7 @@
msgid "# sessions allocated"
msgstr "# Sitzungsschlüssel akzeptiert"
-#: src/transport/transport_api.c:812
+#: src/transport/transport_api.c:827
#, fuzzy, c-format
msgid "Received unexpected message of type %u in %s:%u\n"
msgstr "Es wurde eine unbekannte Testbed Nachricht des Typs %u empfangen.\n"
@@ -8403,17 +8439,17 @@
msgid "Metadata `%s' failed to deserialize"
msgstr ""
-#: src/util/client.c:263 src/util/client.c:889 src/util/service.c:621
+#: src/util/client.c:264 src/util/client.c:894 src/util/service.c:621
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
-#: src/util/client.c:267 src/util/client.c:894 src/util/service.c:625
+#: src/util/client.c:268 src/util/client.c:899 src/util/service.c:625
#, c-format
msgid "Using `%s' instead\n"
msgstr ""
-#: src/util/client.c:362
+#: src/util/client.c:367
#, c-format
msgid ""
"Could not determine valid hostname and port for service `%s' from "
@@ -8420,17 +8456,17 @@
"configuration.\n"
msgstr ""
-#: src/util/client.c:370
+#: src/util/client.c:375
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
-#: src/util/client.c:1039
+#: src/util/client.c:1044
#, fuzzy, c-format
msgid "Could not connect to service `%s', configuration broken.\n"
msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
-#: src/util/client.c:1051
+#: src/util/client.c:1056
#, fuzzy, c-format
msgid "Failure to transmit request to service `%s'\n"
msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
@@ -8516,12 +8552,12 @@
"as an environmental variable\n"
msgstr ""
-#: src/util/connection.c:424
+#: src/util/connection.c:429
#, c-format
msgid "Access denied to `%s'\n"
msgstr "Zugriff verweigert auf »%s«\n"
-#: src/util/connection.c:441
+#: src/util/connection.c:446
#, c-format
msgid "Accepting connection from `%s': %p\n"
msgstr ""
@@ -8589,17 +8625,17 @@
msgstr ""
"libgcrypt hat nicht die erwartete Version (Version %s wird vorausgesetzt).\n"
-#: src/util/crypto_rsa.c:981
+#: src/util/crypto_rsa.c:999
#, fuzzy, c-format
msgid "RSA signature verification failed at %s:%d: %s\n"
msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n"
-#: src/util/disk.c:1221
+#: src/util/disk.c:1226
#, fuzzy, c-format
msgid "Expected `%s' to be a directory!\n"
msgstr "`%s' erwartet, dass `%s' ein Verzeichnis ist!\n"
-#: src/util/disk.c:1444 src/util/service.c:1328
+#: src/util/disk.c:1449 src/util/service.c:1328
#, fuzzy, c-format
msgid "Cannot obtain information about user `%s': %s\n"
msgstr "Fehler beim Speichern der Konfigurationsdatei: `%s': %s.\n"
@@ -9100,6 +9136,16 @@
msgid "signal (%d, %p) returned %d.\n"
msgstr "Aufruf von `%s' gibt %d zurück.\n"
+#: src/util/socks.c:592
+#, c-format
+msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
+msgstr ""
+
+#: src/util/socks.c:605
+#, c-format
+msgid "Attempting to proxy service `%s' to invalid port %d or hostname `%s'.\n"
+msgstr ""
+
#: src/util/strings.c:146
msgid "b"
msgstr "b"
Modified: gnunet/po/es.po
===================================================================
--- gnunet/po/es.po 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/po/es.po 2015-09-22 01:20:28 UTC (rev 36367)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gnunet 0.9.5a\n"
"Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2015-07-24 15:20+0200\n"
+"POT-Creation-Date: 2015-09-06 02:18+0200\n"
"PO-Revision-Date: 2013-02-23 17:50+0100\n"
"Last-Translator: Miguel Ángel Arruga Vivas <address@hidden>\n"
"Language-Team: Spanish <address@hidden>\n"
@@ -378,14 +378,12 @@
"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
"de banda predeterminado %llu\n"
-#: src/ats/gnunet-ats-solver-eval.c:3290
-#: src/ats-tests/gnunet-solver-eval.c:918
+#: src/ats/gnunet-ats-solver-eval.c:3290 src/ats-tests/gnunet-solver-eval.c:918
#, fuzzy
msgid "solver to use"
msgstr "valor a establecer"
-#: src/ats/gnunet-ats-solver-eval.c:3293
-#: src/ats-tests/gnunet-solver-eval.c:921
+#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:921
#: src/ats-tests/gnunet-solver-eval.c:924
msgid "experiment to use"
msgstr ""
@@ -694,57 +692,57 @@
msgid "Print information about ATS state"
msgstr "Imprime información acerca del estado del ATS"
-#: src/cadet/gnunet-cadet.c:376
+#: src/cadet/gnunet-cadet.c:458
#, fuzzy, c-format
msgid "Invalid target `%s'\n"
msgstr "Parámetro no válido «%s»\n"
-#: src/cadet/gnunet-cadet.c:643
+#: src/cadet/gnunet-cadet.c:735
#, fuzzy, c-format
msgid "Invalid peer ID `%s'\n"
msgstr "URI no válida: «%s»\n"
-#: src/cadet/gnunet-cadet.c:686
+#: src/cadet/gnunet-cadet.c:778
#, fuzzy, c-format
msgid "Invalid tunnel owner `%s'\n"
msgstr "Formato de tiempo no válido «%s»\n"
-#: src/cadet/gnunet-cadet.c:752
-msgid "You must NOT give a TARGETwhen using 'request all' options\n"
+#: src/cadet/gnunet-cadet.c:844
+msgid "You must NOT give a TARGET when using 'request all' options\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:849
+#: src/cadet/gnunet-cadet.c:941
#, fuzzy
msgid "provide information about a particular connection"
msgstr "proveer información acerca de un túnel en particular"
-#: src/cadet/gnunet-cadet.c:852
+#: src/cadet/gnunet-cadet.c:944
msgid "activate echo mode"
msgstr ""
-#: src/cadet/gnunet-cadet.c:855
+#: src/cadet/gnunet-cadet.c:947
msgid "dump debug information to STDERR"
msgstr ""
-#: src/cadet/gnunet-cadet.c:861
+#: src/cadet/gnunet-cadet.c:953
msgid "port to listen to (default; 0)"
msgstr ""
-#: src/cadet/gnunet-cadet.c:864
+#: src/cadet/gnunet-cadet.c:956
#, fuzzy
msgid "provide information about a patricular peer"
msgstr "proveer información acerca de un túnel en particular"
-#: src/cadet/gnunet-cadet.c:867
+#: src/cadet/gnunet-cadet.c:959
#, fuzzy
msgid "provide information about all peers"
msgstr "proveer información acerca de un túnel en particular"
-#: src/cadet/gnunet-cadet.c:870
+#: src/cadet/gnunet-cadet.c:962
msgid "provide information about a particular tunnel"
msgstr "proveer información acerca de un túnel en particular"
-#: src/cadet/gnunet-cadet.c:873
+#: src/cadet/gnunet-cadet.c:965
#, fuzzy
msgid "provide information about all tunnels"
msgstr "proveer información acerca de un túnel en particular"
@@ -1481,20 +1479,20 @@
msgid "# PAYLOAD dropped (out of order)"
msgstr "# bytes omitidos (fuera de secuencia)"
-#: src/core/gnunet-service-core_neighbours.c:177
+#: src/core/gnunet-service-core_neighbours.c:178
msgid "# sessions terminated by transport disconnect"
msgstr "# sesiones terminadas por desconexión de transporte"
-#: src/core/gnunet-service-core_neighbours.c:193
-#: src/core/gnunet-service-core_neighbours.c:355
+#: src/core/gnunet-service-core_neighbours.c:194
+#: src/core/gnunet-service-core_neighbours.c:362
msgid "# neighbour entries allocated"
msgstr "# entradas de vecinos alojadas"
-#: src/core/gnunet-service-core_neighbours.c:264
+#: src/core/gnunet-service-core_neighbours.c:270
msgid "# encrypted bytes given to transport"
msgstr "# bytes cifrados dados al transporte"
-#: src/core/gnunet-service-core_neighbours.c:438
+#: src/core/gnunet-service-core_neighbours.c:448
#, c-format
msgid "Unsupported message of type %u (%u bytes) received from peer `%s'\n"
msgstr "Mensaje no soportado del tipo %u (%u bytes) recibido del par «%s»\n"
@@ -1539,7 +1537,7 @@
msgstr "# actualizaciones de mi mapa de tipos"
#: src/datacache/datacache.c:119 src/datacache/datacache.c:294
-#: src/datastore/gnunet-service-datastore.c:853
+#: src/datastore/gnunet-service-datastore.c:866
msgid "# bytes stored"
msgstr "# bytes almacenados"
@@ -1620,85 +1618,85 @@
"Se produjo un fallo al transmitir la petición de eliminación a la base de "
"datos.\n"
-#: src/datastore/datastore_api.c:394
+#: src/datastore/datastore_api.c:395
msgid "# queue entry timeouts"
msgstr "# expiraciones de plazo en la cola de entradas"
-#: src/datastore/datastore_api.c:443
+#: src/datastore/datastore_api.c:450
msgid "# queue overflows"
msgstr "# desbordamientos de la cola"
-#: src/datastore/datastore_api.c:471
+#: src/datastore/datastore_api.c:478
msgid "# queue entries created"
msgstr "# entradas creadas en la cola"
-#: src/datastore/datastore_api.c:491
+#: src/datastore/datastore_api.c:498
msgid "# Requests dropped from datastore queue"
msgstr "# Peticiones omitidas de la cola del almacén de datos"
-#: src/datastore/datastore_api.c:533
+#: src/datastore/datastore_api.c:540
msgid "# datastore connections (re)created"
msgstr "# conexiones a almacenes de datos (re)creadas"
-#: src/datastore/datastore_api.c:621
+#: src/datastore/datastore_api.c:628
msgid "# transmission request failures"
msgstr "# fallos en peticiones de transmisión"
-#: src/datastore/datastore_api.c:645
+#: src/datastore/datastore_api.c:652
msgid "# bytes sent to datastore"
msgstr "# bytes mandados al almacén de datos"
-#: src/datastore/datastore_api.c:787
+#: src/datastore/datastore_api.c:794
msgid "Failed to receive status response from database."
msgstr ""
"Se produjo un fallo al recibir el estado de respuesta de la base de datos."
-#: src/datastore/datastore_api.c:801
+#: src/datastore/datastore_api.c:808
msgid "Error reading response from datastore service"
msgstr "Error leyendo respuesta del servicio de almacenamiento de datos"
-#: src/datastore/datastore_api.c:813 src/datastore/datastore_api.c:819
+#: src/datastore/datastore_api.c:820 src/datastore/datastore_api.c:826
msgid "Invalid error message received from datastore service"
msgstr ""
"Mensaje de error no válido recibido del servicio de almacenamiento de datos"
-#: src/datastore/datastore_api.c:823
+#: src/datastore/datastore_api.c:830
msgid "# status messages received"
msgstr "# mensajes de estado recibidos"
-#: src/datastore/datastore_api.c:893
+#: src/datastore/datastore_api.c:909
msgid "# PUT requests executed"
msgstr "# peticiones «PUT» ejecutadas"
-#: src/datastore/datastore_api.c:959
+#: src/datastore/datastore_api.c:975
msgid "# RESERVE requests executed"
msgstr "# peticiones «RESERVE» ejecutadas"
-#: src/datastore/datastore_api.c:1020
+#: src/datastore/datastore_api.c:1036
msgid "# RELEASE RESERVE requests executed"
msgstr "# Peticiones «RELEASE RESERVE» ejecutadas"
-#: src/datastore/datastore_api.c:1080
+#: src/datastore/datastore_api.c:1096
msgid "# UPDATE requests executed"
msgstr "# peticiones «UPDATE» ejecutadas"
-#: src/datastore/datastore_api.c:1144
+#: src/datastore/datastore_api.c:1160
msgid "# REMOVE requests executed"
msgstr "# peticiones «REMOVE» ejecutadas"
-#: src/datastore/datastore_api.c:1248
+#: src/datastore/datastore_api.c:1264
msgid "# Results received"
msgstr "# Resultados recibidos"
-#: src/datastore/datastore_api.c:1315
+#: src/datastore/datastore_api.c:1331
msgid "# GET REPLICATION requests executed"
msgstr "# peticiones «GET REPLICATION» ejecutadas"
-#: src/datastore/datastore_api.c:1378
+#: src/datastore/datastore_api.c:1394
msgid "# GET ZERO ANONYMITY requests executed"
msgstr "# peticiones «GET ZERO ANONYMITY» ejecutadas"
-#: src/datastore/datastore_api.c:1447
+#: src/datastore/datastore_api.c:1463
msgid "# GET requests executed"
msgstr "# peticiones «GET» ejecutadas"
@@ -1723,29 +1721,29 @@
msgid "Manipulate GNUnet datastore"
msgstr "Manipular ficheros de configuración de GNUnet"
-#: src/datastore/gnunet-service-datastore.c:365
+#: src/datastore/gnunet-service-datastore.c:372
msgid "# bytes expired"
msgstr "# bytes expirados"
-#: src/datastore/gnunet-service-datastore.c:439
+#: src/datastore/gnunet-service-datastore.c:447
msgid "# bytes purged (low-priority)"
msgstr "# bytes purgados (baja prioridad)"
-#: src/datastore/gnunet-service-datastore.c:497
+#: src/datastore/gnunet-service-datastore.c:505
#: src/gns/gnunet-gns-helper-service-w32.c:223
msgid "Transmission to client failed!\n"
msgstr "¡La transmisión con el cliente ha fallado!\n"
-#: src/datastore/gnunet-service-datastore.c:528
+#: src/datastore/gnunet-service-datastore.c:536
#: src/gns/gnunet-gns-helper-service-w32.c:262
msgid "Shutdown in progress, aborting transmission.\n"
msgstr "Apagado en proceso, abortando transmisión.\n"
-#: src/datastore/gnunet-service-datastore.c:643
+#: src/datastore/gnunet-service-datastore.c:652
msgid "# results found"
msgstr "# resultados encontrados"
-#: src/datastore/gnunet-service-datastore.c:686
+#: src/datastore/gnunet-service-datastore.c:696
#, c-format
msgid ""
"Insufficient space (%llu bytes are available) to satisfy `%s' request for "
@@ -1754,7 +1752,7 @@
"Espacio insuficiente (%llu bytes están disponibles) para satisfacer la "
"petición «%s» de %llu bytes\n"
-#: src/datastore/gnunet-service-datastore.c:697
+#: src/datastore/gnunet-service-datastore.c:707
#, c-format
msgid ""
"The requested amount (%llu bytes) is larger than the cache size (%llu "
@@ -1763,7 +1761,7 @@
"La cantidad solicitada (%llu bytes) es mayor que el tamaño de la caché (%llu "
"bytes)\n"
-#: src/datastore/gnunet-service-datastore.c:701
+#: src/datastore/gnunet-service-datastore.c:711
msgid ""
"Insufficient space to satisfy request and requested amount is larger than "
"cache size"
@@ -1771,61 +1769,61 @@
"Espacio insuficiente para satisfacer la petición y la cantidad pedida es "
"mayor que el tamaño de la caché"
-#: src/datastore/gnunet-service-datastore.c:707
+#: src/datastore/gnunet-service-datastore.c:717
msgid "Insufficient space to satisfy request"
msgstr "Espacio insuficiente para satisfacer la petición"
-#: src/datastore/gnunet-service-datastore.c:712
-#: src/datastore/gnunet-service-datastore.c:767
-#: src/datastore/gnunet-service-datastore.c:1019
-#: src/datastore/gnunet-service-datastore.c:1597
+#: src/datastore/gnunet-service-datastore.c:723
+#: src/datastore/gnunet-service-datastore.c:779
+#: src/datastore/gnunet-service-datastore.c:1035
+#: src/datastore/gnunet-service-datastore.c:1630
msgid "# reserved"
msgstr "# reservado"
-#: src/datastore/gnunet-service-datastore.c:780
+#: src/datastore/gnunet-service-datastore.c:793
msgid "Could not find matching reservation"
msgstr "No se pudo encontrar una reserva coincidente"
-#: src/datastore/gnunet-service-datastore.c:865
+#: src/datastore/gnunet-service-datastore.c:879
#, c-format
msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
msgstr ""
"Se necesitan %llu bytes más de espacio (%llu permitidos, usando %llu)\n"
-#: src/datastore/gnunet-service-datastore.c:1071
+#: src/datastore/gnunet-service-datastore.c:1088
msgid "# GET requests received"
msgstr "# peticiones «GET» recibidas"
-#: src/datastore/gnunet-service-datastore.c:1083
+#: src/datastore/gnunet-service-datastore.c:1101
msgid "# requests filtered by bloomfilter"
msgstr "# peticiones filtradas por el «bloomfilter»"
-#: src/datastore/gnunet-service-datastore.c:1121
+#: src/datastore/gnunet-service-datastore.c:1141
msgid "# UPDATE requests received"
msgstr "# peticiones «UPDATE» recibidas"
-#: src/datastore/gnunet-service-datastore.c:1149
+#: src/datastore/gnunet-service-datastore.c:1170
msgid "# GET REPLICATION requests received"
msgstr "# peticiones «GET REPLICATION» recibidas"
-#: src/datastore/gnunet-service-datastore.c:1182
+#: src/datastore/gnunet-service-datastore.c:1204
msgid "# GET ZERO ANONYMITY requests received"
msgstr "# peticiones «GET ZERO ANONYMITY» recibidas"
-#: src/datastore/gnunet-service-datastore.c:1207
+#: src/datastore/gnunet-service-datastore.c:1233
msgid "Content not found"
msgstr "Contenido no encontrado"
-#: src/datastore/gnunet-service-datastore.c:1215
+#: src/datastore/gnunet-service-datastore.c:1244
msgid "# bytes removed (explicit request)"
msgstr "# bytes eliminados (petición explícita)"
-#: src/datastore/gnunet-service-datastore.c:1247
+#: src/datastore/gnunet-service-datastore.c:1277
msgid "# REMOVE requests received"
msgstr "# peticiones «REMOVE» recibidas"
# Miguel: ¿Cómo traducir «payload»? ¿Código cargado?
-#: src/datastore/gnunet-service-datastore.c:1291
+#: src/datastore/gnunet-service-datastore.c:1321
#, fuzzy, c-format
msgid ""
"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
@@ -1833,62 +1831,62 @@
"El «payload» del almacén de datos es impreciso (%lld < %lld). Intentando "
"repararlo.\n"
-#: src/datastore/gnunet-service-datastore.c:1296
+#: src/datastore/gnunet-service-datastore.c:1326
#, c-format
msgid "New payload: %lld\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1349
+#: src/datastore/gnunet-service-datastore.c:1379
#, c-format
msgid "Loading `%s' datastore plugin\n"
msgstr "Cargando el módulo del almacén de datos «%s»\n"
-#: src/datastore/gnunet-service-datastore.c:1360
+#: src/datastore/gnunet-service-datastore.c:1390
#, c-format
msgid "Failed to load datastore plugin for `%s'\n"
msgstr ""
"Se produjo un fallo al inicializar el módulo del almacén de datos para «%s»\n"
-#: src/datastore/gnunet-service-datastore.c:1429
-#: src/datastore/gnunet-service-datastore.c:1490
+#: src/datastore/gnunet-service-datastore.c:1459
+#: src/datastore/gnunet-service-datastore.c:1522
msgid "Bloomfilter construction complete.\n"
msgstr "Construcción de «bloomfilter» completa.\n"
-#: src/datastore/gnunet-service-datastore.c:1477
+#: src/datastore/gnunet-service-datastore.c:1509
msgid "Rebuilding bloomfilter. Please be patient.\n"
msgstr "Reconstruyendo «bloomfilter». Por favor, tenga paciencia.\n"
-#: src/datastore/gnunet-service-datastore.c:1487
+#: src/datastore/gnunet-service-datastore.c:1519
msgid "Plugin does not support get_keys function. Please fix!\n"
msgstr "El módulo no soporta la función «get_keys». Por favor, corríjalo.\n"
-#: src/datastore/gnunet-service-datastore.c:1625
-#: src/datastore/gnunet-service-datastore.c:1636
+#: src/datastore/gnunet-service-datastore.c:1661
+#: src/datastore/gnunet-service-datastore.c:1673
#, c-format
msgid "No `%s' specified for `%s' in configuration!\n"
msgstr "¡No se ha especificado ningún «%s» para «%s» en la configuración!\n"
-#: src/datastore/gnunet-service-datastore.c:1630
+#: src/datastore/gnunet-service-datastore.c:1667
#, c-format
msgid "# bytes used in file-sharing datastore `%s'"
msgstr "# bytes usados en el almacén de ficheros compartidos «%s»"
-#: src/datastore/gnunet-service-datastore.c:1641
+#: src/datastore/gnunet-service-datastore.c:1679
msgid "# quota"
msgstr "# cuota"
-#: src/datastore/gnunet-service-datastore.c:1643
+#: src/datastore/gnunet-service-datastore.c:1681
msgid "# cache size"
msgstr "# tamaño de la caché"
-#: src/datastore/gnunet-service-datastore.c:1656
+#: src/datastore/gnunet-service-datastore.c:1696
#, c-format
msgid "Could not use specified filename `%s' for bloomfilter.\n"
msgstr ""
"No se pudo usar el nombre de fichero especificado «%s» para «bloomfilter».\n"
-#: src/datastore/gnunet-service-datastore.c:1674
-#: src/datastore/gnunet-service-datastore.c:1690
+#: src/datastore/gnunet-service-datastore.c:1714
+#: src/datastore/gnunet-service-datastore.c:1730
#, c-format
msgid "Failed to remove bogus bloomfilter file `%s'\n"
msgstr ""
@@ -1895,7 +1893,7 @@
"Se produjo un fallo al borrar el fichero de configuración defectuoso de "
"«bloomfilter» «%s»:\n"
-#: src/datastore/gnunet-service-datastore.c:1720
+#: src/datastore/gnunet-service-datastore.c:1760
msgid "Failed to initialize bloomfilter.\n"
msgstr "Se produjo un fallo al inicializar «bloomfilter».\n"
@@ -1953,7 +1951,7 @@
#: src/namecache/plugin_namecache_sqlite.c:193
#: src/namestore/plugin_namestore_sqlite.c:204
#: src/peerstore/plugin_peerstore_sqlite.c:479
-#: src/psycstore/plugin_psycstore_sqlite.c:324
+#: src/psycstore/plugin_psycstore_sqlite.c:325
#, c-format
msgid "Unable to initialize SQLite: %s.\n"
msgstr "Imposible inicializar SQLite: %s.\n"
@@ -2036,9 +2034,9 @@
msgstr "opción para usar el demultiplexado de la DHT siempre"
#: src/dht/gnunet-dht-get.c:204 src/dht/gnunet-dht-monitor.c:271
-#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:755
-#: src/fs/gnunet-download.c:328 src/fs/gnunet-publish.c:961
-#: src/fs/gnunet-search.c:307 src/fs/gnunet-unindex.c:168
+#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:794
+#: src/fs/gnunet-download.c:327 src/fs/gnunet-publish.c:954
+#: src/fs/gnunet-search.c:306 src/fs/gnunet-unindex.c:167
#: src/nse/gnunet-nse-profiler.c:873
msgid "be verbose (print progress information)"
msgstr "ser prolijo (imprime información de progreso)"
@@ -2056,8 +2054,7 @@
msgid "Prints all packets that go through the DHT."
msgstr "Imprime todos los paquetes que pasan por la DHT."
-#: src/dht/gnunet_dht_profiler.c:1393
-#: src/testbed/gnunet-testbed-profiler.c:267
+#: src/dht/gnunet_dht_profiler.c:1393 src/testbed/gnunet-testbed-profiler.c:267
#, fuzzy, c-format
msgid "Exiting as the number of peers is %u\n"
msgstr "El número máximo de conexiones es %u\n"
@@ -2279,8 +2276,7 @@
msgid "# GET requests given to datacache"
msgstr "# Peticiones «GET» realizadas a la caché de datos"
-#: src/dht/gnunet-service-dht_hello.c:84
-#: src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
msgid "# HELLOs obtained from peerinfo"
msgstr "# «HELLO» obtenidos de «peerinfo»"
@@ -3173,74 +3169,74 @@
msgid "Failed to connect to datastore."
msgstr "Se produjo un fallo al conectar con el almacén de datos."
-#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:443
+#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:441
#, c-format
msgid "Publishing failed: %s"
msgstr "Publicación fallida: %s"
-#: src/fs/fs_publish.c:709 src/fs/fs_publish.c:726 src/fs/fs_publish.c:765
-#: src/fs/fs_publish.c:786 src/fs/fs_publish.c:810 src/fs/fs_publish.c:1060
+#: src/fs/fs_publish.c:707 src/fs/fs_publish.c:724 src/fs/fs_publish.c:763
+#: src/fs/fs_publish.c:784 src/fs/fs_publish.c:808 src/fs/fs_publish.c:1058
#, c-format
msgid "Can not index file `%s': %s. Will try to insert instead.\n"
msgstr "No se pudo indexar el fichero «%s»: %s. Se intentará insertar.\n"
-#: src/fs/fs_publish.c:711
+#: src/fs/fs_publish.c:709
msgid "timeout on index-start request to `fs' service"
msgstr ""
"expiración del plazo en la petición de inicio de indexado (index-start) al "
"servicio «fs»"
-#: src/fs/fs_publish.c:723
+#: src/fs/fs_publish.c:721
msgid "unknown error"
msgstr "error desconocido"
-#: src/fs/fs_publish.c:767
+#: src/fs/fs_publish.c:765
msgid "failed to compute hash"
msgstr "se produjo un fallo al calcular el hash"
-#: src/fs/fs_publish.c:787
+#: src/fs/fs_publish.c:785
msgid "filename too long"
msgstr "nombre de fichero demasiado largo"
-#: src/fs/fs_publish.c:812
+#: src/fs/fs_publish.c:810
msgid "could not connect to `fs' service"
msgstr "no se pudo conectar con el servicio «fs»"
-#: src/fs/fs_publish.c:835
+#: src/fs/fs_publish.c:833
#, c-format
msgid "Failed to get file identifiers for `%s'\n"
msgstr ""
"Se produjo un fallo al obtener los identificadores de fichero para «%s»\n"
-#: src/fs/fs_publish.c:899 src/fs/fs_publish.c:940
+#: src/fs/fs_publish.c:897 src/fs/fs_publish.c:938
msgid "Can not create LOC URI. Will continue with CHK instead.\n"
msgstr ""
-#: src/fs/fs_publish.c:1014
+#: src/fs/fs_publish.c:1012
#, c-format
msgid "Recursive upload failed at `%s': %s"
msgstr "La subida recursiva falló en «%s»: %s"
-#: src/fs/fs_publish.c:1022
+#: src/fs/fs_publish.c:1020
#, c-format
msgid "Recursive upload failed: %s"
msgstr "Subida recursiva fallida: %s"
-#: src/fs/fs_publish.c:1062
+#: src/fs/fs_publish.c:1060
msgid "needs to be an actual file"
msgstr "tiene que ser un fichero de verdad"
-#: src/fs/fs_publish.c:1301
+#: src/fs/fs_publish.c:1299
#, fuzzy, c-format
msgid "Datastore failure: %s"
msgstr "# «PUT» en el almacén de datos fallidos"
-#: src/fs/fs_publish.c:1392
+#: src/fs/fs_publish.c:1390
#, c-format
msgid "Reserving space for %u entries and %llu bytes for publication\n"
msgstr "Reservando espacio para %u entradas y %llu bytes para publicación\n"
-#: src/fs/fs_publish_ksk.c:219
+#: src/fs/fs_publish_ksk.c:224
msgid "Could not connect to datastore."
msgstr "No se pudo conectar con el almacén de datos."
@@ -3429,22 +3425,22 @@
msgid "Failed to save state to file %s\n"
msgstr "Se produjo un fallo al guardar el estado en el fichero %s\n"
-#: src/fs/gnunet-auto-share.c:402
+#: src/fs/gnunet-auto-share.c:415
#, c-format
msgid "Publication of `%s' done\n"
msgstr "Publicación de «%s» finalizada\n"
-#: src/fs/gnunet-auto-share.c:490
+#: src/fs/gnunet-auto-share.c:504
#, c-format
msgid "Publishing `%s'\n"
msgstr "Publicando «%s»\n"
-#: src/fs/gnunet-auto-share.c:499
+#: src/fs/gnunet-auto-share.c:514
#, c-format
msgid "Failed to run `%s'\n"
msgstr "Se produjo un fallo al ejecutar «%s»\n"
-#: src/fs/gnunet-auto-share.c:688
+#: src/fs/gnunet-auto-share.c:725
#, c-format
msgid ""
"You must specify one and only one directory name for automatic publication.\n"
@@ -3452,28 +3448,28 @@
"Debes especificar uno y solo un nombre de directorio para publicación "
"automática.\n"
-#: src/fs/gnunet-auto-share.c:739 src/fs/gnunet-publish.c:908
+#: src/fs/gnunet-auto-share.c:778 src/fs/gnunet-publish.c:901
msgid "set the desired LEVEL of sender-anonymity"
msgstr "establece el nivel LEVEL deseado de anonimato del emisor"
-#: src/fs/gnunet-auto-share.c:743 src/fs/gnunet-publish.c:912
+#: src/fs/gnunet-auto-share.c:782 src/fs/gnunet-publish.c:905
msgid "disable adding the creation time to the metadata of the uploaded file"
msgstr ""
"deshabilitar añadir tiempo de creación a los metadatos del fichero subido"
-#: src/fs/gnunet-auto-share.c:746 src/fs/gnunet-publish.c:915
+#: src/fs/gnunet-auto-share.c:785 src/fs/gnunet-publish.c:908
msgid "do not use libextractor to add keywords or metadata"
msgstr "no usar libextractor para añadir palabras clave o metadatos"
-#: src/fs/gnunet-auto-share.c:749 src/fs/gnunet-publish.c:939
+#: src/fs/gnunet-auto-share.c:788 src/fs/gnunet-publish.c:932
msgid "specify the priority of the content"
msgstr "especificar la prioridad del contenido"
-#: src/fs/gnunet-auto-share.c:752 src/fs/gnunet-publish.c:946
+#: src/fs/gnunet-auto-share.c:791 src/fs/gnunet-publish.c:939
msgid "set the desired replication LEVEL"
msgstr "establece el nivel LEVEL deseado de replicación"
-#: src/fs/gnunet-auto-share.c:772
+#: src/fs/gnunet-auto-share.c:815
msgid "Automatically publish files from a directory on GNUnet"
msgstr "Publicar automáticamente ficheros de un directorio en GNUnet"
@@ -3542,64 +3538,64 @@
msgid "Downloading `%s' done (%s/s).\n"
msgstr "Finalizada descarga «%s» (%s/s).\n"
-#: src/fs/gnunet-download.c:209 src/fs/gnunet-publish.c:319
-#: src/fs/gnunet-search.c:206 src/fs/gnunet-unindex.c:108
+#: src/fs/gnunet-download.c:208 src/fs/gnunet-publish.c:297
+#: src/fs/gnunet-search.c:205 src/fs/gnunet-unindex.c:107
#, c-format
msgid "Unexpected status: %d\n"
msgstr "Estado inesperado: %d\n"
-#: src/fs/gnunet-download.c:234
+#: src/fs/gnunet-download.c:233
msgid "You need to specify a URI argument.\n"
msgstr "Tiene que especificar una URI como parámetro.\n"
-#: src/fs/gnunet-download.c:240 src/fs/gnunet-publish.c:734
+#: src/fs/gnunet-download.c:239 src/fs/gnunet-publish.c:728
#, c-format
msgid "Failed to parse URI: %s\n"
msgstr "Se produjo un fallo al procesar la URI: %s\n"
-#: src/fs/gnunet-download.c:247
+#: src/fs/gnunet-download.c:246
msgid "Only CHK or LOC URIs supported.\n"
msgstr "Sólo URI «CHK» o «LOC» soportadas.\n"
-#: src/fs/gnunet-download.c:254
+#: src/fs/gnunet-download.c:253
msgid "Target filename must be specified.\n"
msgstr "El nombre de fichero de destino debe ser especificado.\n"
-#: src/fs/gnunet-download.c:268 src/fs/gnunet-publish.c:878
-#: src/fs/gnunet-search.c:256 src/fs/gnunet-unindex.c:140
+#: src/fs/gnunet-download.c:267 src/fs/gnunet-publish.c:872
+#: src/fs/gnunet-search.c:255 src/fs/gnunet-unindex.c:139
#, c-format
msgid "Could not initialize `%s' subsystem.\n"
msgstr "No se pudo inicializar el subsistema «%s».\n"
-#: src/fs/gnunet-download.c:305 src/fs/gnunet-search.c:295
+#: src/fs/gnunet-download.c:304 src/fs/gnunet-search.c:294
msgid "set the desired LEVEL of receiver-anonymity"
msgstr "establece el nivel LEVEL deseado de anonimato del receptor"
-#: src/fs/gnunet-download.c:308
+#: src/fs/gnunet-download.c:307
msgid "delete incomplete downloads (when aborted with CTRL-C)"
msgstr "borra descargas incompletas (cuando fueron abortadas con CTRL-C="
-#: src/fs/gnunet-download.c:311 src/fs/gnunet-search.c:298
+#: src/fs/gnunet-download.c:310 src/fs/gnunet-search.c:297
msgid "only search the local peer (no P2P network search)"
msgstr "únicamente buscar en el par local (no buscar en la red P2P)"
-#: src/fs/gnunet-download.c:314
+#: src/fs/gnunet-download.c:313
msgid "write the file to FILENAME"
msgstr "escribe los datos al nombre del fichero proporcionado (FILENAME)"
-#: src/fs/gnunet-download.c:318
+#: src/fs/gnunet-download.c:317
msgid "set the maximum number of parallel downloads that is allowed"
msgstr "establece el número máximo de descargas paralelas permitido"
-#: src/fs/gnunet-download.c:322
+#: src/fs/gnunet-download.c:321
msgid "set the maximum number of parallel requests for blocks that is allowed"
msgstr "establece el número máximo de peticiones de bloque paralelas permitido"
-#: src/fs/gnunet-download.c:325
+#: src/fs/gnunet-download.c:324
msgid "download a GNUnet directory recursively"
msgstr "descarga un directorio de GNUnet recursivamente"
-#: src/fs/gnunet-download.c:339
+#: src/fs/gnunet-download.c:338
msgid ""
"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
"chk/...)"
@@ -3635,107 +3631,107 @@
"ejecuta una batería de pruebas para medir el rendimiento de la compartición "
"de ficheros"
-#: src/fs/gnunet-publish.c:238 src/fs/gnunet-publish.c:250
+#: src/fs/gnunet-publish.c:221 src/fs/gnunet-publish.c:233
#, c-format
msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
msgstr "Publicando «%s» en %llu/%llu (%s restantes)\n"
-#: src/fs/gnunet-publish.c:257
+#: src/fs/gnunet-publish.c:241
#, c-format
msgid "Error publishing: %s.\n"
msgstr "Error publicando: %s.\n"
-#: src/fs/gnunet-publish.c:268
+#: src/fs/gnunet-publish.c:248
#, c-format
msgid "Publishing `%s' done.\n"
msgstr "Publicación «%s» finalizada.\n"
-#: src/fs/gnunet-publish.c:273
+#: src/fs/gnunet-publish.c:253
#, c-format
msgid "URI is `%s'.\n"
msgstr "La URI es «%s».\n"
-#: src/fs/gnunet-publish.c:281
+#: src/fs/gnunet-publish.c:261
#, fuzzy, c-format
msgid "Namespace URI is `%s'.\n"
msgstr "La URI es «%s».\n"
-#: src/fs/gnunet-publish.c:299
+#: src/fs/gnunet-publish.c:277
#, fuzzy
msgid "Starting cleanup after abort\n"
msgstr "Limpieza completada\n"
-#: src/fs/gnunet-publish.c:306
+#: src/fs/gnunet-publish.c:284
#, fuzzy
msgid "Cleanup after abort completed.\n"
msgstr "Limpieza completada\n"
-#: src/fs/gnunet-publish.c:312
+#: src/fs/gnunet-publish.c:290
#, fuzzy
msgid "Cleanup after abort failed.\n"
msgstr "Limpieza completada\n"
-#: src/fs/gnunet-publish.c:447
+#: src/fs/gnunet-publish.c:432
#, c-format
msgid "Meta data for file `%s' (%s)\n"
msgstr "Metadatos para el fichero «%s» (%s)\n"
-#: src/fs/gnunet-publish.c:449
+#: src/fs/gnunet-publish.c:437
#, c-format
msgid "Keywords for file `%s' (%s)\n"
msgstr "Palabras clave para el fichero «%s» (%s)\n"
-#: src/fs/gnunet-publish.c:594
+#: src/fs/gnunet-publish.c:591
msgid "Could not publish\n"
msgstr "No se pudo publicar\n"
-#: src/fs/gnunet-publish.c:619
+#: src/fs/gnunet-publish.c:616
msgid "Could not start publishing.\n"
msgstr "No se pudo empezar a publicar.\n"
-#: src/fs/gnunet-publish.c:653
+#: src/fs/gnunet-publish.c:650
#, c-format
msgid "Scanning directory `%s'.\n"
msgstr "Escaneando directorio «%s».\n"
-#: src/fs/gnunet-publish.c:657
+#: src/fs/gnunet-publish.c:654
#, c-format
msgid "Scanning file `%s'.\n"
msgstr "Escaneando fichero «%s».\n"
-#: src/fs/gnunet-publish.c:663
+#: src/fs/gnunet-publish.c:660
#, c-format
msgid "There was trouble processing file `%s', skipping it.\n"
msgstr "Hubo un problema procesando el fichero «%s», omitiéndolo.\n"
-#: src/fs/gnunet-publish.c:670
+#: src/fs/gnunet-publish.c:667
msgid "Preprocessing complete.\n"
msgstr "Preprocesado completo.\n"
-#: src/fs/gnunet-publish.c:675
+#: src/fs/gnunet-publish.c:672
#, c-format
msgid "Extracting meta data from file `%s' complete.\n"
msgstr "Extracción de metadatos del fichero «%s» completa.\n"
-#: src/fs/gnunet-publish.c:682
+#: src/fs/gnunet-publish.c:679
msgid "Meta data extraction has finished.\n"
msgstr "La extracción de metadatos ha finalizado.\n"
-#: src/fs/gnunet-publish.c:691
+#: src/fs/gnunet-publish.c:688
msgid "Internal error scanning directory.\n"
msgstr "Error interno escaneando directorio.\n"
-#: src/fs/gnunet-publish.c:723
+#: src/fs/gnunet-publish.c:716
#, fuzzy, c-format
msgid "Selected pseudonym `%s' unknown\n"
msgstr "Espacio de nombres «%s» desconocido.\n"
-#: src/fs/gnunet-publish.c:755
+#: src/fs/gnunet-publish.c:749
#, c-format
msgid "Failed to access `%s': %s\n"
msgstr "Se produjo un fallo al acceder «%s»: %s\n"
-#: src/fs/gnunet-publish.c:769
+#: src/fs/gnunet-publish.c:763
msgid ""
"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
"installed?\n"
@@ -3743,27 +3739,27 @@
"Se produjo un fallo al iniciar el meta-escáner de directorios. ¿Está "
"«gnunet-helper-publish-fs» instalado?\n"
-#: src/fs/gnunet-publish.c:825
+#: src/fs/gnunet-publish.c:819
#, c-format
msgid "Cannot extract metadata from a URI!\n"
msgstr "¡No se pueden extraer metadatos de una URI!\n"
-#: src/fs/gnunet-publish.c:832
+#: src/fs/gnunet-publish.c:826
#, c-format
msgid "You must specify one and only one filename for insertion.\n"
msgstr "Se debe especificar uno y solo un nombre de fichero para insertar.\n"
-#: src/fs/gnunet-publish.c:838
+#: src/fs/gnunet-publish.c:832
#, c-format
msgid "You must NOT specify an URI and a filename.\n"
msgstr "No se puede especificar una URI y un nombre de fichero.\n"
-#: src/fs/gnunet-publish.c:846 src/vpn/gnunet-vpn.c:209
+#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:209
#, c-format
msgid "Option `%s' is required when using option `%s'.\n"
msgstr "La opción «%s» es obligatoria cuando se usa la opción «%s».\n"
-#: src/fs/gnunet-publish.c:857 src/fs/gnunet-publish.c:865
+#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
#: src/transport/gnunet-transport.c:1928 src/transport/gnunet-transport.c:1958
#: src/transport/gnunet-transport.c:1989
#, c-format
@@ -3770,7 +3766,7 @@
msgid "Option `%s' makes no sense without option `%s'.\n"
msgstr "La opción «%s» no tiene sentido sin la opción «%s».\n"
-#: src/fs/gnunet-publish.c:919
+#: src/fs/gnunet-publish.c:912
msgid ""
"print list of extracted keywords that would be used, but do not perform "
"upload"
@@ -3778,7 +3774,7 @@
"imprimir una lista de las palabras clave extraídas que podrían ser usadas, "
"pero sin realizar la subida"
-#: src/fs/gnunet-publish.c:923
+#: src/fs/gnunet-publish.c:916
msgid ""
"add an additional keyword for the top-level file or directory (this option "
"can be specified multiple times)"
@@ -3786,11 +3782,11 @@
"añadir una palabra clave adicional para el fichero del nivel más alto o el "
"directorio (esta opción puede ser especificada varias veces)"
-#: src/fs/gnunet-publish.c:927
+#: src/fs/gnunet-publish.c:920
msgid "set the meta-data for the given TYPE to the given VALUE"
msgstr "establece los metadatos para el tipo TYPE dado al valor VALUE dado"
-#: src/fs/gnunet-publish.c:930
+#: src/fs/gnunet-publish.c:923
msgid ""
"do not index, perform full insertion (stores entire file in encrypted form "
"in GNUnet database)"
@@ -3798,7 +3794,7 @@
"no indexar, hacer inserciones totales (almacena el fichero entero de forma "
"cifrada en la base de datos de GNUnet)"
-#: src/fs/gnunet-publish.c:935
+#: src/fs/gnunet-publish.c:928
msgid ""
"specify ID of an updated version to be published in the future (for "
"namespace insertions only)"
@@ -3806,13 +3802,13 @@
"especificar la ID de una versión actualizada para ser publicada en el futuro "
"(para inserciones en el espacio de nombres únicamente)"
-#: src/fs/gnunet-publish.c:943
+#: src/fs/gnunet-publish.c:936
msgid "publish the files under the pseudonym NAME (place file into namespace)"
msgstr ""
"publicar los ficheros bajo el seudónimo NAME (coloca el fichero en el "
"espacio)"
-#: src/fs/gnunet-publish.c:949
+#: src/fs/gnunet-publish.c:942
msgid ""
"only simulate the process but do not do any actual publishing (useful to "
"compute URIs)"
@@ -3820,7 +3816,7 @@
"únicamente simular el proceso pero no publicar nada realmente (útil para "
"calcular URI)"
-#: src/fs/gnunet-publish.c:953
+#: src/fs/gnunet-publish.c:946
msgid ""
"set the ID of this version of the publication (for namespace insertions only)"
msgstr ""
@@ -3827,7 +3823,7 @@
"establece la ID de esta versión de la publicación (para inserciones en el "
"espacio únicamente)"
-#: src/fs/gnunet-publish.c:957
+#: src/fs/gnunet-publish.c:950
msgid ""
"URI to be published (can be used instead of passing a file to add keywords "
"to the file with the respective URI)"
@@ -3835,7 +3831,7 @@
"URI a ser publicada (puede ser usado en vez de pasar un fichero para añadir "
"claves con el fichero con la URI respectiva)"
-#: src/fs/gnunet-publish.c:973
+#: src/fs/gnunet-publish.c:966
msgid "Publish a file or directory on GNUnet"
msgstr "Publicar un fichero o un directorio en GNUnet"
@@ -3851,27 +3847,27 @@
msgid "Error searching: %s.\n"
msgstr "Error buscando: %s.\n"
-#: src/fs/gnunet-search.c:246
+#: src/fs/gnunet-search.c:245
msgid "Could not create keyword URI from arguments.\n"
msgstr "No se pudo crear URI de palabra clave a partir de los parámetros.\n"
-#: src/fs/gnunet-search.c:270
+#: src/fs/gnunet-search.c:269
msgid "Could not start searching.\n"
msgstr "No se pudo empezar a buscar.\n"
-#: src/fs/gnunet-search.c:301
+#: src/fs/gnunet-search.c:300
msgid "write search results to file starting with PREFIX"
msgstr "escribir resultados de búsqueda al fichero que empiecen por «PREFIX»"
-#: src/fs/gnunet-search.c:304
+#: src/fs/gnunet-search.c:303
msgid "automatically terminate search after DELAY"
msgstr "terminar búsqueda automáticamente después de «DELAY»"
-#: src/fs/gnunet-search.c:311
+#: src/fs/gnunet-search.c:310
msgid "automatically terminate search after VALUE results are found"
msgstr "terminar búsqueda después de «VALUE» resultados encontrados"
-#: src/fs/gnunet-search.c:322
+#: src/fs/gnunet-search.c:321
msgid "Search GNUnet for files that were published on GNUnet"
msgstr "Buscar en GNUnet ficheros que han sido publicados en GNUnet"
@@ -4248,16 +4244,16 @@
msgid "Unindexing done.\n"
msgstr "Desindexado finalizado.\n"
-#: src/fs/gnunet-unindex.c:130
+#: src/fs/gnunet-unindex.c:129
#, c-format
msgid "You must specify one and only one filename for unindexing.\n"
msgstr "Se debe especificar uno y solo un fichero para desindexar.\n"
-#: src/fs/gnunet-unindex.c:147
+#: src/fs/gnunet-unindex.c:146
msgid "Could not start unindex operation.\n"
msgstr "No se pudo empezar la operación de desindexado.\n"
-#: src/fs/gnunet-unindex.c:179
+#: src/fs/gnunet-unindex.c:178
msgid "Unindex a file that was previously indexed with gnunet-publish."
msgstr "Desindexa un fichero previamente indexado con «gnunet-publish»."
@@ -4670,12 +4666,12 @@
msgid "GNS REST API initialized\n"
msgstr "Conexión fallida\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:291
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
#, c-format
msgid "Unable to parse IPv4 address `%s'\n"
msgstr "No se pudo procesar la dirección IPv4 «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:312
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
#, fuzzy, c-format
msgid "Failed to serialize NS record with value `%s'\n"
msgstr ""
@@ -4682,7 +4678,7 @@
"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
"de «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:334
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
#, fuzzy, c-format
msgid "Failed to serialize CNAME record with value `%s'\n"
msgstr ""
@@ -4689,7 +4685,7 @@
"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
"de «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:418
+#: src/gnsrecord/plugin_gnsrecord_dns.c:486
#, fuzzy, c-format
msgid "Failed to serialize CERT record with %u bytes\n"
msgstr ""
@@ -4696,17 +4692,17 @@
"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
"de «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:455
+#: src/gnsrecord/plugin_gnsrecord_dns.c:522
#, c-format
msgid "Unable to parse SOA record `%s'\n"
msgstr "No se pudo procesar el registro SOA «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:474
+#: src/gnsrecord/plugin_gnsrecord_dns.c:541
#, fuzzy, c-format
msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:497
+#: src/gnsrecord/plugin_gnsrecord_dns.c:564
#, fuzzy, c-format
msgid "Failed to serialize PTR record with value `%s'\n"
msgstr ""
@@ -4713,12 +4709,12 @@
"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
"de «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:520
+#: src/gnsrecord/plugin_gnsrecord_dns.c:587
#, c-format
msgid "Unable to parse MX record `%s'\n"
msgstr "No se pudo procesar el registro MX «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:535
+#: src/gnsrecord/plugin_gnsrecord_dns.c:602
#, fuzzy, c-format
msgid "Failed to serialize MX record with hostname `%s'\n"
msgstr ""
@@ -4725,12 +4721,12 @@
"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
"de «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:562
+#: src/gnsrecord/plugin_gnsrecord_dns.c:629
#, fuzzy, c-format
msgid "Unable to parse SRV record `%s'\n"
msgstr "No se pudo procesar el registro SOA «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:578
+#: src/gnsrecord/plugin_gnsrecord_dns.c:645
#, fuzzy, c-format
msgid "Failed to serialize SRV record with target `%s'\n"
msgstr ""
@@ -4737,13 +4733,13 @@
"Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
"de «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:595
+#: src/gnsrecord/plugin_gnsrecord_dns.c:662
#, c-format
msgid "Unable to parse IPv6 address `%s'\n"
msgstr "No se pudo procesar dirección IPv4 «%s»\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:619
-#: src/gnsrecord/plugin_gnsrecord_dns.c:635
+#: src/gnsrecord/plugin_gnsrecord_dns.c:686
+#: src/gnsrecord/plugin_gnsrecord_dns.c:702
#, c-format
msgid "Unable to parse TLSA record string `%s'\n"
msgstr "No se pudo procesar la cadena de registro TLSA «%s»\n"
@@ -5290,6 +5286,31 @@
msgid "Namecache failed to cache block"
msgstr "El almacén de nombres no pudo añadir el registro"
+#: src/namecache/plugin_namecache_flat.c:119
+#: src/namecache/plugin_namecache_flat.c:236
+#: src/namestore/plugin_namestore_flat.c:184
+#: src/namestore/plugin_namestore_flat.c:352
+#, fuzzy, c-format
+msgid "Unable to initialize file: %s.\n"
+msgstr "Imposible inicializar SQLite: %s.\n"
+
+#: src/namecache/plugin_namecache_flat.c:130
+#: src/namestore/plugin_namestore_flat.c:195
+#, fuzzy, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr "Se produjo un fallo al crear los índices\n"
+
+#: src/namecache/plugin_namecache_flat.c:142
+#: src/namestore/plugin_namestore_flat.c:207
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "Se produjo un fallo al crear los índices\n"
+
+#: src/namecache/plugin_namecache_flat.c:391
+#, fuzzy
+msgid "flat plugin running\n"
+msgstr "Base de datos sqlite ejecutándose\n"
+
#: src/namecache/plugin_namecache_postgres.c:89
#: src/namestore/plugin_namestore_postgres.c:96
msgid "Failed to create indices\n"
@@ -5386,8 +5407,7 @@
msgid "Invalid public key for reverse lookup `%s'\n"
msgstr "Parámetro no válido «%s»\n"
-#: src/namestore/gnunet-namestore.c:868
-#: src/peerinfo-tool/gnunet-peerinfo.c:817
+#: src/namestore/gnunet-namestore.c:868 src/peerinfo-tool/gnunet-peerinfo.c:817
#, c-format
msgid "Invalid URI `%s'\n"
msgstr "URI no válida: «%s»\n"
@@ -5553,11 +5573,21 @@
msgid "Namestore failed to store record\n"
msgstr "El almacén de nombres no pudo añadir el registro\n"
+#: src/namestore/plugin_namestore_flat.c:650
+#, fuzzy
+msgid "flat file database running\n"
+msgstr "Base de datos de plantilla ejecutándose\n"
+
#: src/namestore/plugin_rest_namestore.c:1023
#, fuzzy
msgid "Namestore REST API initialized\n"
msgstr "Conexión fallida\n"
+#: src/nat/gnunet-nat.c:160
+#, fuzzy
+msgid "GNUnet NAT traversal autoconfigure daemon"
+msgstr "Demonio de ayuda en las pruebas de recorrido NAT de GNUnet"
+
#: src/nat/gnunet-nat-server.c:279
#, c-format
msgid "Please pass valid port number as the first argument! (got `%s')\n"
@@ -5569,54 +5599,58 @@
msgid "GNUnet NAT traversal test helper daemon"
msgstr "Demonio de ayuda en las pruebas de recorrido NAT de GNUnet"
-#: src/nat/nat_auto.c:179
+#: src/nat/nat_auto.c:394
msgid "NAT traversal with ICMP Server succeeded.\n"
msgstr "Recorrido NAT con servidor ICMP satisfactorio.\n"
-#: src/nat/nat_auto.c:180
+#: src/nat/nat_auto.c:395
msgid "NAT traversal with ICMP Server failed.\n"
msgstr "Recorrido NAT con servidor ICMP fallido.\n"
-#: src/nat/nat_auto.c:201
+#: src/nat/nat_auto.c:416
msgid "Testing connection reversal with ICMP server.\n"
msgstr "Probando conexión inversa con el servidor ICMP.\n"
-#: src/nat/nat_auto.c:249
+#: src/nat/nat_auto.c:448
#, c-format
msgid "Detected external IP `%s'\n"
msgstr "Detectada IP externa «%s»\n"
-#: src/nat/nat_auto.c:327
+#: src/nat/nat_auto.c:579
msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
msgstr ""
"Este sistema tiene una dirección IPv6 global, fijando IPv6 a habilitado.\n"
-#: src/nat/nat_auto.c:343
+#: src/nat/nat_auto.c:597
#, c-format
msgid "Detected internal network address `%s'.\n"
msgstr "Detectada dirección de la red interna «%s».\n"
-#: src/nat/nat_auto.c:406
+#: src/nat/nat_auto.c:669 src/nat/nat_test.c:364
+msgid "Failed to connect to `gnunet-nat-server'\n"
+msgstr "Se produjo un fallo al conectar con «gnunet-nat-server»\n"
+
+#: src/nat/nat_auto.c:715
msgid "upnpc found, enabling its use\n"
msgstr "«upnpc» encontrado, habilitando su uso\n"
-#: src/nat/nat_auto.c:407
+#: src/nat/nat_auto.c:716
msgid "upnpc not found\n"
msgstr "«upnpc» no encontrado\n"
-#: src/nat/nat_auto.c:437
+#: src/nat/nat_auto.c:748
msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
msgstr ""
-#: src/nat/nat_auto.c:445 src/nat/nat_auto.c:490
+#: src/nat/nat_auto.c:756 src/nat/nat_auto.c:804
msgid "test_icmp_server not possible, as we are not behind NAT\n"
msgstr ""
-#: src/nat/nat_auto.c:453 src/nat/nat_auto.c:498
+#: src/nat/nat_auto.c:764 src/nat/nat_auto.c:812
msgid "No working gnunet-helper-nat-server found\n"
msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n"
-#: src/nat/nat_auto.c:483
+#: src/nat/nat_auto.c:797
msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
msgstr ""
@@ -5630,27 +5664,27 @@
msgid "Failed to start %s\n"
msgstr "Se produjo un fallo al arrancar %s\n"
-#: src/nat/nat.c:1286
+#: src/nat/nat.c:1305
msgid "Error while running upnp client:\n"
msgstr ""
-#: src/nat/nat.c:1356
+#: src/nat/nat.c:1375
#, fuzzy, c-format
msgid "Failed to run upnp client for port %u\n"
msgstr ""
"Se produjo un fallo al inicializar la clave de la máquina desde el par %u\n"
-#: src/nat/nat.c:1498
+#: src/nat/nat.c:1517
msgid "malformed"
msgstr "mal formado"
-#: src/nat/nat.c:1552
+#: src/nat/nat.c:1571
msgid ""
"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
"disabling UPnP \n"
msgstr ""
-#: src/nat/nat.c:1680 src/nat/nat.c:1692
+#: src/nat/nat.c:1700 src/nat/nat.c:1712
#, c-format
msgid ""
"Configuration requires `%s', but binary is not installed properly (SUID bit "
@@ -5659,98 +5693,98 @@
"La configuración requiere «%s», pero el binario no está instalado de forma "
"correcta (SUID bit no activado). Opción deshabilitada.\n"
-#: src/nat/nat.c:1830
+#: src/nat/nat.c:1855
msgid "Internal IP address not known, cannot use ICMP NAT traversal method\n"
msgstr ""
"Direcciones internas IP no conocidas, no se puede usar el método del "
"recorrido NAT ICMP\n"
-#: src/nat/nat.c:1846
+#: src/nat/nat.c:1871
#, c-format
msgid "Running gnunet-helper-nat-client %s %s %u\n"
msgstr "Ejecutando gnunet-helper-nat-client %s %s %u\n"
-#: src/nat/nat.c:1931
+#: src/nat/nat.c:1958
msgid "Operation Successful"
msgstr ""
-#: src/nat/nat.c:1933
+#: src/nat/nat.c:1960
msgid "Internal Failure (IPC, ...)"
msgstr ""
-#: src/nat/nat.c:1935
+#: src/nat/nat.c:1962
msgid "Failure in network subsystem, check permissions."
msgstr ""
-#: src/nat/nat.c:1937
+#: src/nat/nat.c:1964
msgid "Encountered timeout while performing operation"
msgstr ""
-#: src/nat/nat.c:1939
+#: src/nat/nat.c:1966
msgid "detected that we are offline"
msgstr ""
-#: src/nat/nat.c:1941
+#: src/nat/nat.c:1968
#, fuzzy
msgid "`upnpc` command not found"
msgstr "comando «upnpc» no encontrado\n"
-#: src/nat/nat.c:1943
+#: src/nat/nat.c:1970
#, fuzzy
msgid "Failed to run `upnpc` command"
msgstr "Se produjo un fallo al ejecutar «%s»\n"
-#: src/nat/nat.c:1945
+#: src/nat/nat.c:1972
#, fuzzy
msgid "`upnpc' command took too long, process killed"
msgstr "comando «upnpc» no encontrado\n"
-#: src/nat/nat.c:1947
+#: src/nat/nat.c:1974
msgid "`upnpc' command failed to establish port mapping"
msgstr ""
-#: src/nat/nat.c:1949
+#: src/nat/nat.c:1976
#, fuzzy
msgid "`external-ip' command not found"
msgstr "comando «external-ip» no encontrado\n"
-#: src/nat/nat.c:1951
+#: src/nat/nat.c:1978
#, fuzzy
msgid "Failed to run `external-ip` command"
msgstr "Se produjo un fallo al ejecutar «%s»\n"
-#: src/nat/nat.c:1953
+#: src/nat/nat.c:1980
#, fuzzy
msgid "`external-ip' command output invalid"
msgstr "comando «external-ip» no encontrado\n"
-#: src/nat/nat.c:1955
+#: src/nat/nat.c:1982
msgid "no valid address was returned by `external-ip'"
msgstr ""
-#: src/nat/nat.c:1957
+#: src/nat/nat.c:1984
#, fuzzy
msgid "Could not determine interface with internal/local network address"
msgstr "No se pudo determinar la ruta de instalación de los módulos.\n"
-#: src/nat/nat.c:1959
+#: src/nat/nat.c:1986
#, fuzzy
msgid "No functioning gnunet-helper-nat-server installation found"
msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n"
-#: src/nat/nat.c:1961
+#: src/nat/nat.c:1988
msgid "NAT test could not be initialized"
msgstr ""
-#: src/nat/nat.c:1963
+#: src/nat/nat.c:1990
msgid "NAT test timeout reached"
msgstr ""
-#: src/nat/nat.c:1965
+#: src/nat/nat.c:1992
msgid "could not register NAT"
msgstr ""
-#: src/nat/nat.c:1967
+#: src/nat/nat.c:1994
#, fuzzy
msgid "No working gnunet-helper-nat-client installation found"
msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n"
@@ -5763,11 +5797,7 @@
msgid "`upnpc' command not found\n"
msgstr "comando «upnpc» no encontrado\n"
-#: src/nat/nat_test.c:360
-msgid "Failed to connect to `gnunet-nat-server'\n"
-msgstr "Se produjo un fallo al conectar con «gnunet-nat-server»\n"
-
-#: src/nat/nat_test.c:462
+#: src/nat/nat_test.c:467
#, c-format
msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
msgstr ""
@@ -5774,7 +5804,7 @@
"Se produjo un fallo al crear el «socket» de escucha asociado a «%s» para "
"pruebas NAT: %s\n"
-#: src/nat/nat_test.c:497
+#: src/nat/nat_test.c:502
#, fuzzy
msgid "NAT test failed to start NAT library\n"
msgstr "El almacén de nombres no pudo añadir el registro\n"
@@ -5818,8 +5848,8 @@
msgid "Measure quality and performance of the NSE service."
msgstr "Medir la calidad y rendimiento del servicio NSE."
-#: src/nse/gnunet-service-nse.c:1537
-#: src/revocation/gnunet-service-revocation.c:827 src/util/gnunet-scrypt.c:260
+#: src/nse/gnunet-service-nse.c:1541
+#: src/revocation/gnunet-service-revocation.c:848 src/util/gnunet-scrypt.c:260
msgid "Value is too large.\n"
msgstr ""
@@ -6092,7 +6122,7 @@
msgstr ""
#: src/peerstore/plugin_peerstore_sqlite.c:398
-#: src/psycstore/plugin_psycstore_sqlite.c:281
+#: src/psycstore/plugin_psycstore_sqlite.c:282
#, fuzzy, c-format
msgid ""
"Error executing SQL query: %s\n"
@@ -6100,7 +6130,7 @@
msgstr "Error abriendo fichero «%s»: %s\n"
#: src/peerstore/plugin_peerstore_sqlite.c:422
-#: src/psycstore/plugin_psycstore_sqlite.c:258
+#: src/psycstore/plugin_psycstore_sqlite.c:259
#, fuzzy, c-format
msgid ""
"Error preparing SQL query: %s\n"
@@ -6157,43 +6187,48 @@
msgid "Failed to get master counters!\n"
msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-#: src/psycstore/gnunet-service-psycstore.c:645
-#, fuzzy
-msgid "Failed to begin modifying state!\n"
+#: src/psycstore/gnunet-service-psycstore.c:657
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
msgstr "Se produjo un fallo al cargar el estado: %s\n"
-#: src/psycstore/gnunet-service-psycstore.c:656
+#: src/psycstore/gnunet-service-psycstore.c:667
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Se produjo un fallo al cargar el estado: %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
#, fuzzy
msgid "Failed to end modifying state!\n"
msgstr "Se produjo un fallo al cargar el estado: %s\n"
-#: src/psycstore/gnunet-service-psycstore.c:686
+#: src/psycstore/gnunet-service-psycstore.c:706
msgid "Tried to set invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:700
+#: src/psycstore/gnunet-service-psycstore.c:720
#, fuzzy
msgid "Failed to begin synchronizing state!\n"
msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-#: src/psycstore/gnunet-service-psycstore.c:717
+#: src/psycstore/gnunet-service-psycstore.c:737
#, fuzzy
msgid "Failed to end synchronizing state!\n"
msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-#: src/psycstore/gnunet-service-psycstore.c:737
-#: src/psycstore/gnunet-service-psycstore.c:756
+#: src/psycstore/gnunet-service-psycstore.c:757
+#: src/psycstore/gnunet-service-psycstore.c:776
#, fuzzy
msgid "Failed to reset state!\n"
msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-#: src/psycstore/gnunet-service-psycstore.c:779
-#: src/psycstore/gnunet-service-psycstore.c:830
+#: src/psycstore/gnunet-service-psycstore.c:799
+#: src/psycstore/gnunet-service-psycstore.c:850
msgid "Tried to get invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:806
-#: src/psycstore/gnunet-service-psycstore.c:845
+#: src/psycstore/gnunet-service-psycstore.c:826
+#: src/psycstore/gnunet-service-psycstore.c:865
#, fuzzy
msgid "Failed to get state variable!\n"
msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
@@ -6203,7 +6238,7 @@
msgid "`%s' failed at %s:%d with error: %s (%d)\n"
msgstr "«%s» falló en %s: %d con el error: %s\n"
-#: src/psycstore/plugin_psycstore_sqlite.c:1907
+#: src/psycstore/plugin_psycstore_sqlite.c:1923
#, fuzzy
msgid "SQLite database running\n"
msgstr "Base de datos sqlite ejecutándose\n"
@@ -6477,37 +6512,37 @@
msgid "test if the public key KEY has been revoked"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:427
+#: src/revocation/gnunet-service-revocation.c:481
#, fuzzy
msgid "# unsupported revocations received via set union"
msgstr "Opciones de paquete IPv4 recibidas. Ignoradas.\n"
-#: src/revocation/gnunet-service-revocation.c:436
+#: src/revocation/gnunet-service-revocation.c:490
#, fuzzy
msgid "# revocation messages received via set union"
msgstr "# mensajes «DATA» recibidos vía WLAN"
-#: src/revocation/gnunet-service-revocation.c:441
+#: src/revocation/gnunet-service-revocation.c:495
#, c-format
msgid "Error computing revocation set union with %s\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:445
+#: src/revocation/gnunet-service-revocation.c:499
#, fuzzy
msgid "# revocation set unions failed"
msgstr "# sesiones wlan creadas"
-#: src/revocation/gnunet-service-revocation.c:454
+#: src/revocation/gnunet-service-revocation.c:508
#, fuzzy
msgid "# revocation set unions completed"
msgstr "# transmisiones de fragmentos completadas"
-#: src/revocation/gnunet-service-revocation.c:493
-#: src/revocation/gnunet-service-revocation.c:759
+#: src/revocation/gnunet-service-revocation.c:547
+#: src/revocation/gnunet-service-revocation.c:780
msgid "SET service crashed, terminating revocation service\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:851
+#: src/revocation/gnunet-service-revocation.c:872
#, fuzzy
msgid "Could not open revocation database file!"
msgstr "No se pudo conectar con el almacén de datos."
@@ -6571,7 +6606,9 @@
msgstr ""
#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1419
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1564
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1549
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1193
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1252
#, fuzzy
msgid "Connect to CADET failed\n"
msgstr "Conexión fallida (¿bug?)\n"
@@ -6850,7 +6887,7 @@
"\n"
"Error subiendo el fichero %s\n"
-#: src/set/gnunet-service-set.c:1531
+#: src/set/gnunet-service-set.c:1960
#, fuzzy
msgid "Could not connect to cadet service\n"
msgstr "¡No se pudo conectar al servicio %s!\n"
@@ -6978,7 +7015,7 @@
msgid "Could not save some persistent statistics\n"
msgstr "No se pudieron guardar algunas estadísticas persistentes\n"
-#: src/statistics/statistics_api.c:1090
+#: src/statistics/statistics_api.c:1088
msgid ""
"Failed to receive acknowledgement from statistics service, some statistics "
"might have been lost!\n"
@@ -8683,7 +8720,7 @@
msgid "# sessions allocated"
msgstr "# sesiones WLAN alojadas"
-#: src/transport/transport_api.c:812
+#: src/transport/transport_api.c:827
#, c-format
msgid "Received unexpected message of type %u in %s:%u\n"
msgstr "Recibido mensaje inesperado del tipo %u en %s:%u\n"
@@ -8726,18 +8763,18 @@
msgid "Metadata `%s' failed to deserialize"
msgstr "Se produjo un fallo al deserializar los metadatos «%s»"
-#: src/util/client.c:263 src/util/client.c:889 src/util/service.c:621
+#: src/util/client.c:264 src/util/client.c:894 src/util/service.c:621
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
"La ruta tipo UNIX «%s» es demasiado larga, la longitud máxima es %llu\n"
-#: src/util/client.c:267 src/util/client.c:894 src/util/service.c:625
+#: src/util/client.c:268 src/util/client.c:899 src/util/service.c:625
#, c-format
msgid "Using `%s' instead\n"
msgstr "Usando «%s» en su defecto\n"
-#: src/util/client.c:362
+#: src/util/client.c:367
#, c-format
msgid ""
"Could not determine valid hostname and port for service `%s' from "
@@ -8746,17 +8783,17 @@
"No se pudo determinar un nombre de máquina y un puerto válidos para el "
"servicio «%s» a partir de la configuración.\n"
-#: src/util/client.c:370
+#: src/util/client.c:375
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr "Se necesita un nombre de máquina no vacío para el servicio «%s».\n"
-#: src/util/client.c:1039
+#: src/util/client.c:1044
#, fuzzy, c-format
msgid "Could not connect to service `%s', configuration broken.\n"
msgstr "No se pudo conectar con el servicio «%s», no debe estar corriendo.\n"
-#: src/util/client.c:1051
+#: src/util/client.c:1056
#, c-format
msgid "Failure to transmit request to service `%s'\n"
msgstr "Se produjo un fallo al transmitir la petición al servicio «%s»\n"
@@ -8842,12 +8879,12 @@
"as an environmental variable\n"
msgstr ""
-#: src/util/connection.c:424
+#: src/util/connection.c:429
#, c-format
msgid "Access denied to `%s'\n"
msgstr "Acceso denegado a «%s»\n"
-#: src/util/connection.c:441
+#: src/util/connection.c:446
#, c-format
msgid "Accepting connection from `%s': %p\n"
msgstr "Aceptando conexión desde «%s»: %p\n"
@@ -8921,17 +8958,17 @@
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "libgcrypt no tiene la versión esperada (se necesita la versión %s).\n"
-#: src/util/crypto_rsa.c:981
+#: src/util/crypto_rsa.c:999
#, c-format
msgid "RSA signature verification failed at %s:%d: %s\n"
msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n"
-#: src/util/disk.c:1221
+#: src/util/disk.c:1226
#, c-format
msgid "Expected `%s' to be a directory!\n"
msgstr "¡Se esperaba que «%s» fuera un directorio!\n"
-#: src/util/disk.c:1444 src/util/service.c:1328
+#: src/util/disk.c:1449 src/util/service.c:1328
#, c-format
msgid "Cannot obtain information about user `%s': %s\n"
msgstr "No se pudo obtener información acerca del usuario «%s»: %s\n"
@@ -9450,6 +9487,16 @@
msgid "signal (%d, %p) returned %d.\n"
msgstr "señal (%d, %p) devolvió %d.\n"
+#: src/util/socks.c:592
+#, c-format
+msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
+msgstr ""
+
+#: src/util/socks.c:605
+#, c-format
+msgid "Attempting to proxy service `%s' to invalid port %d or hostname `%s'.\n"
+msgstr ""
+
#: src/util/strings.c:146
msgid "b"
msgstr "b"
Modified: gnunet/po/fr.po
===================================================================
--- gnunet/po/fr.po 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/po/fr.po 2015-09-22 01:20:28 UTC (rev 36367)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gnunet 0.10.1\n"
"Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2015-07-24 15:20+0200\n"
+"POT-Creation-Date: 2015-09-06 02:18+0200\n"
"PO-Revision-Date: 2015-03-24 01:41+0100\n"
"Last-Translator: Stéphane Aulery <address@hidden>\n"
"Language-Team: French <address@hidden>\n"
@@ -342,13 +342,11 @@
"%llu\n"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3290
-#: src/ats-tests/gnunet-solver-eval.c:918
+#: src/ats/gnunet-ats-solver-eval.c:3290 src/ats-tests/gnunet-solver-eval.c:918
msgid "solver to use"
msgstr "solveur utilisé"
-#: src/ats/gnunet-ats-solver-eval.c:3293
-#: src/ats-tests/gnunet-solver-eval.c:921
+#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:921
#: src/ats-tests/gnunet-solver-eval.c:924
msgid "experiment to use"
msgstr ""
@@ -625,54 +623,54 @@
msgid "Print information about ATS state"
msgstr ""
-#: src/cadet/gnunet-cadet.c:376
+#: src/cadet/gnunet-cadet.c:458
#, c-format
msgid "Invalid target `%s'\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:643
+#: src/cadet/gnunet-cadet.c:735
#, c-format
msgid "Invalid peer ID `%s'\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:686
+#: src/cadet/gnunet-cadet.c:778
#, c-format
msgid "Invalid tunnel owner `%s'\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:752
-msgid "You must NOT give a TARGETwhen using 'request all' options\n"
+#: src/cadet/gnunet-cadet.c:844
+msgid "You must NOT give a TARGET when using 'request all' options\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:849
+#: src/cadet/gnunet-cadet.c:941
msgid "provide information about a particular connection"
msgstr ""
-#: src/cadet/gnunet-cadet.c:852
+#: src/cadet/gnunet-cadet.c:944
msgid "activate echo mode"
msgstr ""
-#: src/cadet/gnunet-cadet.c:855
+#: src/cadet/gnunet-cadet.c:947
msgid "dump debug information to STDERR"
msgstr ""
-#: src/cadet/gnunet-cadet.c:861
+#: src/cadet/gnunet-cadet.c:953
msgid "port to listen to (default; 0)"
msgstr ""
-#: src/cadet/gnunet-cadet.c:864
+#: src/cadet/gnunet-cadet.c:956
msgid "provide information about a patricular peer"
msgstr ""
-#: src/cadet/gnunet-cadet.c:867
+#: src/cadet/gnunet-cadet.c:959
msgid "provide information about all peers"
msgstr ""
-#: src/cadet/gnunet-cadet.c:870
+#: src/cadet/gnunet-cadet.c:962
msgid "provide information about a particular tunnel"
msgstr ""
-#: src/cadet/gnunet-cadet.c:873
+#: src/cadet/gnunet-cadet.c:965
msgid "provide information about all tunnels"
msgstr ""
@@ -1365,20 +1363,20 @@
msgid "# PAYLOAD dropped (out of order)"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:177
+#: src/core/gnunet-service-core_neighbours.c:178
msgid "# sessions terminated by transport disconnect"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:193
-#: src/core/gnunet-service-core_neighbours.c:355
+#: src/core/gnunet-service-core_neighbours.c:194
+#: src/core/gnunet-service-core_neighbours.c:362
msgid "# neighbour entries allocated"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:264
+#: src/core/gnunet-service-core_neighbours.c:270
msgid "# encrypted bytes given to transport"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:438
+#: src/core/gnunet-service-core_neighbours.c:448
#, c-format
msgid "Unsupported message of type %u (%u bytes) received from peer `%s'\n"
msgstr ""
@@ -1421,7 +1419,7 @@
msgstr ""
#: src/datacache/datacache.c:119 src/datacache/datacache.c:294
-#: src/datastore/gnunet-service-datastore.c:853
+#: src/datastore/gnunet-service-datastore.c:866
msgid "# bytes stored"
msgstr ""
@@ -1494,83 +1492,83 @@
msgid "Failed to transmit request to drop database.\n"
msgstr ""
-#: src/datastore/datastore_api.c:394
+#: src/datastore/datastore_api.c:395
msgid "# queue entry timeouts"
msgstr ""
-#: src/datastore/datastore_api.c:443
+#: src/datastore/datastore_api.c:450
msgid "# queue overflows"
msgstr ""
-#: src/datastore/datastore_api.c:471
+#: src/datastore/datastore_api.c:478
msgid "# queue entries created"
msgstr ""
-#: src/datastore/datastore_api.c:491
+#: src/datastore/datastore_api.c:498
msgid "# Requests dropped from datastore queue"
msgstr ""
-#: src/datastore/datastore_api.c:533
+#: src/datastore/datastore_api.c:540
msgid "# datastore connections (re)created"
msgstr ""
-#: src/datastore/datastore_api.c:621
+#: src/datastore/datastore_api.c:628
msgid "# transmission request failures"
msgstr ""
-#: src/datastore/datastore_api.c:645
+#: src/datastore/datastore_api.c:652
msgid "# bytes sent to datastore"
msgstr ""
-#: src/datastore/datastore_api.c:787
+#: src/datastore/datastore_api.c:794
msgid "Failed to receive status response from database."
msgstr ""
-#: src/datastore/datastore_api.c:801
+#: src/datastore/datastore_api.c:808
msgid "Error reading response from datastore service"
msgstr ""
-#: src/datastore/datastore_api.c:813 src/datastore/datastore_api.c:819
+#: src/datastore/datastore_api.c:820 src/datastore/datastore_api.c:826
msgid "Invalid error message received from datastore service"
msgstr ""
-#: src/datastore/datastore_api.c:823
+#: src/datastore/datastore_api.c:830
msgid "# status messages received"
msgstr ""
-#: src/datastore/datastore_api.c:893
+#: src/datastore/datastore_api.c:909
msgid "# PUT requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:959
+#: src/datastore/datastore_api.c:975
msgid "# RESERVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1020
+#: src/datastore/datastore_api.c:1036
msgid "# RELEASE RESERVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1080
+#: src/datastore/datastore_api.c:1096
msgid "# UPDATE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1144
+#: src/datastore/datastore_api.c:1160
msgid "# REMOVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1248
+#: src/datastore/datastore_api.c:1264
msgid "# Results received"
msgstr ""
-#: src/datastore/datastore_api.c:1315
+#: src/datastore/datastore_api.c:1331
msgid "# GET REPLICATION requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1378
+#: src/datastore/datastore_api.c:1394
msgid "# GET ZERO ANONYMITY requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1447
+#: src/datastore/datastore_api.c:1463
msgid "# GET requests executed"
msgstr ""
@@ -1594,29 +1592,29 @@
msgid "Manipulate GNUnet datastore"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:365
+#: src/datastore/gnunet-service-datastore.c:372
msgid "# bytes expired"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:439
+#: src/datastore/gnunet-service-datastore.c:447
msgid "# bytes purged (low-priority)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:497
+#: src/datastore/gnunet-service-datastore.c:505
#: src/gns/gnunet-gns-helper-service-w32.c:223
msgid "Transmission to client failed!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:528
+#: src/datastore/gnunet-service-datastore.c:536
#: src/gns/gnunet-gns-helper-service-w32.c:262
msgid "Shutdown in progress, aborting transmission.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:643
+#: src/datastore/gnunet-service-datastore.c:652
msgid "# results found"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:686
+#: src/datastore/gnunet-service-datastore.c:696
#, c-format
msgid ""
"Insufficient space (%llu bytes are available) to satisfy `%s' request for "
@@ -1623,7 +1621,7 @@
"%llu bytes\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:697
+#: src/datastore/gnunet-service-datastore.c:707
#, c-format
msgid ""
"The requested amount (%llu bytes) is larger than the cache size (%llu "
@@ -1630,129 +1628,129 @@
"bytes)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:701
+#: src/datastore/gnunet-service-datastore.c:711
msgid ""
"Insufficient space to satisfy request and requested amount is larger than "
"cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:707
+#: src/datastore/gnunet-service-datastore.c:717
msgid "Insufficient space to satisfy request"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:712
-#: src/datastore/gnunet-service-datastore.c:767
-#: src/datastore/gnunet-service-datastore.c:1019
-#: src/datastore/gnunet-service-datastore.c:1597
+#: src/datastore/gnunet-service-datastore.c:723
+#: src/datastore/gnunet-service-datastore.c:779
+#: src/datastore/gnunet-service-datastore.c:1035
+#: src/datastore/gnunet-service-datastore.c:1630
msgid "# reserved"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:780
+#: src/datastore/gnunet-service-datastore.c:793
msgid "Could not find matching reservation"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:865
+#: src/datastore/gnunet-service-datastore.c:879
#, c-format
msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1071
+#: src/datastore/gnunet-service-datastore.c:1088
msgid "# GET requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1083
+#: src/datastore/gnunet-service-datastore.c:1101
msgid "# requests filtered by bloomfilter"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1121
+#: src/datastore/gnunet-service-datastore.c:1141
msgid "# UPDATE requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1149
+#: src/datastore/gnunet-service-datastore.c:1170
msgid "# GET REPLICATION requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1182
+#: src/datastore/gnunet-service-datastore.c:1204
msgid "# GET ZERO ANONYMITY requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1207
+#: src/datastore/gnunet-service-datastore.c:1233
msgid "Content not found"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1215
+#: src/datastore/gnunet-service-datastore.c:1244
msgid "# bytes removed (explicit request)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1247
+#: src/datastore/gnunet-service-datastore.c:1277
msgid "# REMOVE requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1291
+#: src/datastore/gnunet-service-datastore.c:1321
#, c-format
msgid ""
"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1296
+#: src/datastore/gnunet-service-datastore.c:1326
#, c-format
msgid "New payload: %lld\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1349
+#: src/datastore/gnunet-service-datastore.c:1379
#, c-format
msgid "Loading `%s' datastore plugin\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1360
+#: src/datastore/gnunet-service-datastore.c:1390
#, c-format
msgid "Failed to load datastore plugin for `%s'\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1429
-#: src/datastore/gnunet-service-datastore.c:1490
+#: src/datastore/gnunet-service-datastore.c:1459
+#: src/datastore/gnunet-service-datastore.c:1522
msgid "Bloomfilter construction complete.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1477
+#: src/datastore/gnunet-service-datastore.c:1509
msgid "Rebuilding bloomfilter. Please be patient.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1487
+#: src/datastore/gnunet-service-datastore.c:1519
msgid "Plugin does not support get_keys function. Please fix!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1625
-#: src/datastore/gnunet-service-datastore.c:1636
+#: src/datastore/gnunet-service-datastore.c:1661
+#: src/datastore/gnunet-service-datastore.c:1673
#, c-format
msgid "No `%s' specified for `%s' in configuration!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1630
+#: src/datastore/gnunet-service-datastore.c:1667
#, c-format
msgid "# bytes used in file-sharing datastore `%s'"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1641
+#: src/datastore/gnunet-service-datastore.c:1679
msgid "# quota"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1643
+#: src/datastore/gnunet-service-datastore.c:1681
msgid "# cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1656
+#: src/datastore/gnunet-service-datastore.c:1696
#, c-format
msgid "Could not use specified filename `%s' for bloomfilter.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1674
-#: src/datastore/gnunet-service-datastore.c:1690
+#: src/datastore/gnunet-service-datastore.c:1714
+#: src/datastore/gnunet-service-datastore.c:1730
#, c-format
msgid "Failed to remove bogus bloomfilter file `%s'\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1720
+#: src/datastore/gnunet-service-datastore.c:1760
msgid "Failed to initialize bloomfilter.\n"
msgstr ""
@@ -1809,7 +1807,7 @@
#: src/namecache/plugin_namecache_sqlite.c:193
#: src/namestore/plugin_namestore_sqlite.c:204
#: src/peerstore/plugin_peerstore_sqlite.c:479
-#: src/psycstore/plugin_psycstore_sqlite.c:324
+#: src/psycstore/plugin_psycstore_sqlite.c:325
#, c-format
msgid "Unable to initialize SQLite: %s.\n"
msgstr ""
@@ -1884,9 +1882,9 @@
msgstr ""
#: src/dht/gnunet-dht-get.c:204 src/dht/gnunet-dht-monitor.c:271
-#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:755
-#: src/fs/gnunet-download.c:328 src/fs/gnunet-publish.c:961
-#: src/fs/gnunet-search.c:307 src/fs/gnunet-unindex.c:168
+#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:794
+#: src/fs/gnunet-download.c:327 src/fs/gnunet-publish.c:954
+#: src/fs/gnunet-search.c:306 src/fs/gnunet-unindex.c:167
#: src/nse/gnunet-nse-profiler.c:873
msgid "be verbose (print progress information)"
msgstr ""
@@ -1903,8 +1901,7 @@
msgid "Prints all packets that go through the DHT."
msgstr ""
-#: src/dht/gnunet_dht_profiler.c:1393
-#: src/testbed/gnunet-testbed-profiler.c:267
+#: src/dht/gnunet_dht_profiler.c:1393 src/testbed/gnunet-testbed-profiler.c:267
#, c-format
msgid "Exiting as the number of peers is %u\n"
msgstr ""
@@ -2117,8 +2114,7 @@
msgid "# GET requests given to datacache"
msgstr ""
-#: src/dht/gnunet-service-dht_hello.c:84
-#: src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
msgid "# HELLOs obtained from peerinfo"
msgstr ""
@@ -2940,71 +2936,71 @@
msgid "Failed to connect to datastore."
msgstr ""
-#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:443
+#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:441
#, c-format
msgid "Publishing failed: %s"
msgstr ""
-#: src/fs/fs_publish.c:709 src/fs/fs_publish.c:726 src/fs/fs_publish.c:765
-#: src/fs/fs_publish.c:786 src/fs/fs_publish.c:810 src/fs/fs_publish.c:1060
+#: src/fs/fs_publish.c:707 src/fs/fs_publish.c:724 src/fs/fs_publish.c:763
+#: src/fs/fs_publish.c:784 src/fs/fs_publish.c:808 src/fs/fs_publish.c:1058
#, c-format
msgid "Can not index file `%s': %s. Will try to insert instead.\n"
msgstr ""
-#: src/fs/fs_publish.c:711
+#: src/fs/fs_publish.c:709
msgid "timeout on index-start request to `fs' service"
msgstr ""
-#: src/fs/fs_publish.c:723
+#: src/fs/fs_publish.c:721
msgid "unknown error"
msgstr ""
-#: src/fs/fs_publish.c:767
+#: src/fs/fs_publish.c:765
msgid "failed to compute hash"
msgstr ""
-#: src/fs/fs_publish.c:787
+#: src/fs/fs_publish.c:785
msgid "filename too long"
msgstr ""
-#: src/fs/fs_publish.c:812
+#: src/fs/fs_publish.c:810
msgid "could not connect to `fs' service"
msgstr ""
-#: src/fs/fs_publish.c:835
+#: src/fs/fs_publish.c:833
#, c-format
msgid "Failed to get file identifiers for `%s'\n"
msgstr ""
-#: src/fs/fs_publish.c:899 src/fs/fs_publish.c:940
+#: src/fs/fs_publish.c:897 src/fs/fs_publish.c:938
msgid "Can not create LOC URI. Will continue with CHK instead.\n"
msgstr ""
-#: src/fs/fs_publish.c:1014
+#: src/fs/fs_publish.c:1012
#, c-format
msgid "Recursive upload failed at `%s': %s"
msgstr ""
-#: src/fs/fs_publish.c:1022
+#: src/fs/fs_publish.c:1020
#, c-format
msgid "Recursive upload failed: %s"
msgstr ""
-#: src/fs/fs_publish.c:1062
+#: src/fs/fs_publish.c:1060
msgid "needs to be an actual file"
msgstr ""
-#: src/fs/fs_publish.c:1301
+#: src/fs/fs_publish.c:1299
#, fuzzy, c-format
msgid "Datastore failure: %s"
msgstr "pa_stream_new() échoué : %s\n"
-#: src/fs/fs_publish.c:1392
+#: src/fs/fs_publish.c:1390
#, c-format
msgid "Reserving space for %u entries and %llu bytes for publication\n"
msgstr ""
-#: src/fs/fs_publish_ksk.c:219
+#: src/fs/fs_publish_ksk.c:224
msgid "Could not connect to datastore."
msgstr ""
@@ -3172,48 +3168,48 @@
msgid "Failed to save state to file %s\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:402
+#: src/fs/gnunet-auto-share.c:415
#, c-format
msgid "Publication of `%s' done\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:490
+#: src/fs/gnunet-auto-share.c:504
#, c-format
msgid "Publishing `%s'\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:499
+#: src/fs/gnunet-auto-share.c:514
#, c-format
msgid "Failed to run `%s'\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:688
+#: src/fs/gnunet-auto-share.c:725
#, c-format
msgid ""
"You must specify one and only one directory name for automatic publication.\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:739 src/fs/gnunet-publish.c:908
+#: src/fs/gnunet-auto-share.c:778 src/fs/gnunet-publish.c:901
msgid "set the desired LEVEL of sender-anonymity"
msgstr ""
-#: src/fs/gnunet-auto-share.c:743 src/fs/gnunet-publish.c:912
+#: src/fs/gnunet-auto-share.c:782 src/fs/gnunet-publish.c:905
msgid "disable adding the creation time to the metadata of the uploaded file"
msgstr ""
-#: src/fs/gnunet-auto-share.c:746 src/fs/gnunet-publish.c:915
+#: src/fs/gnunet-auto-share.c:785 src/fs/gnunet-publish.c:908
msgid "do not use libextractor to add keywords or metadata"
msgstr ""
-#: src/fs/gnunet-auto-share.c:749 src/fs/gnunet-publish.c:939
+#: src/fs/gnunet-auto-share.c:788 src/fs/gnunet-publish.c:932
msgid "specify the priority of the content"
msgstr ""
-#: src/fs/gnunet-auto-share.c:752 src/fs/gnunet-publish.c:946
+#: src/fs/gnunet-auto-share.c:791 src/fs/gnunet-publish.c:939
msgid "set the desired replication LEVEL"
msgstr ""
-#: src/fs/gnunet-auto-share.c:772
+#: src/fs/gnunet-auto-share.c:815
msgid "Automatically publish files from a directory on GNUnet"
msgstr ""
@@ -3280,64 +3276,64 @@
msgid "Downloading `%s' done (%s/s).\n"
msgstr ""
-#: src/fs/gnunet-download.c:209 src/fs/gnunet-publish.c:319
-#: src/fs/gnunet-search.c:206 src/fs/gnunet-unindex.c:108
+#: src/fs/gnunet-download.c:208 src/fs/gnunet-publish.c:297
+#: src/fs/gnunet-search.c:205 src/fs/gnunet-unindex.c:107
#, c-format
msgid "Unexpected status: %d\n"
msgstr ""
-#: src/fs/gnunet-download.c:234
+#: src/fs/gnunet-download.c:233
msgid "You need to specify a URI argument.\n"
msgstr ""
-#: src/fs/gnunet-download.c:240 src/fs/gnunet-publish.c:734
+#: src/fs/gnunet-download.c:239 src/fs/gnunet-publish.c:728
#, c-format
msgid "Failed to parse URI: %s\n"
msgstr ""
-#: src/fs/gnunet-download.c:247
+#: src/fs/gnunet-download.c:246
msgid "Only CHK or LOC URIs supported.\n"
msgstr ""
-#: src/fs/gnunet-download.c:254
+#: src/fs/gnunet-download.c:253
msgid "Target filename must be specified.\n"
msgstr ""
-#: src/fs/gnunet-download.c:268 src/fs/gnunet-publish.c:878
-#: src/fs/gnunet-search.c:256 src/fs/gnunet-unindex.c:140
+#: src/fs/gnunet-download.c:267 src/fs/gnunet-publish.c:872
+#: src/fs/gnunet-search.c:255 src/fs/gnunet-unindex.c:139
#, c-format
msgid "Could not initialize `%s' subsystem.\n"
msgstr ""
-#: src/fs/gnunet-download.c:305 src/fs/gnunet-search.c:295
+#: src/fs/gnunet-download.c:304 src/fs/gnunet-search.c:294
msgid "set the desired LEVEL of receiver-anonymity"
msgstr ""
-#: src/fs/gnunet-download.c:308
+#: src/fs/gnunet-download.c:307
msgid "delete incomplete downloads (when aborted with CTRL-C)"
msgstr ""
-#: src/fs/gnunet-download.c:311 src/fs/gnunet-search.c:298
+#: src/fs/gnunet-download.c:310 src/fs/gnunet-search.c:297
msgid "only search the local peer (no P2P network search)"
msgstr ""
-#: src/fs/gnunet-download.c:314
+#: src/fs/gnunet-download.c:313
msgid "write the file to FILENAME"
msgstr ""
-#: src/fs/gnunet-download.c:318
+#: src/fs/gnunet-download.c:317
msgid "set the maximum number of parallel downloads that is allowed"
msgstr ""
-#: src/fs/gnunet-download.c:322
+#: src/fs/gnunet-download.c:321
msgid "set the maximum number of parallel requests for blocks that is allowed"
msgstr ""
-#: src/fs/gnunet-download.c:325
+#: src/fs/gnunet-download.c:324
msgid "download a GNUnet directory recursively"
msgstr ""
-#: src/fs/gnunet-download.c:339
+#: src/fs/gnunet-download.c:338
msgid ""
"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
"chk/...)"
@@ -3367,130 +3363,130 @@
msgid "run a testbed to measure file-sharing performance"
msgstr ""
-#: src/fs/gnunet-publish.c:238 src/fs/gnunet-publish.c:250
+#: src/fs/gnunet-publish.c:221 src/fs/gnunet-publish.c:233
#, c-format
msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
msgstr ""
-#: src/fs/gnunet-publish.c:257
+#: src/fs/gnunet-publish.c:241
#, c-format
msgid "Error publishing: %s.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:268
+#: src/fs/gnunet-publish.c:248
#, c-format
msgid "Publishing `%s' done.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:273
+#: src/fs/gnunet-publish.c:253
#, c-format
msgid "URI is `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:281
+#: src/fs/gnunet-publish.c:261
#, c-format
msgid "Namespace URI is `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:299
+#: src/fs/gnunet-publish.c:277
msgid "Starting cleanup after abort\n"
msgstr ""
-#: src/fs/gnunet-publish.c:306
+#: src/fs/gnunet-publish.c:284
msgid "Cleanup after abort completed.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:312
+#: src/fs/gnunet-publish.c:290
msgid "Cleanup after abort failed.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:447
+#: src/fs/gnunet-publish.c:432
#, c-format
msgid "Meta data for file `%s' (%s)\n"
msgstr ""
-#: src/fs/gnunet-publish.c:449
+#: src/fs/gnunet-publish.c:437
#, c-format
msgid "Keywords for file `%s' (%s)\n"
msgstr ""
-#: src/fs/gnunet-publish.c:594
+#: src/fs/gnunet-publish.c:591
msgid "Could not publish\n"
msgstr ""
-#: src/fs/gnunet-publish.c:619
+#: src/fs/gnunet-publish.c:616
msgid "Could not start publishing.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:653
+#: src/fs/gnunet-publish.c:650
#, c-format
msgid "Scanning directory `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:657
+#: src/fs/gnunet-publish.c:654
#, c-format
msgid "Scanning file `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:663
+#: src/fs/gnunet-publish.c:660
#, c-format
msgid "There was trouble processing file `%s', skipping it.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:670
+#: src/fs/gnunet-publish.c:667
msgid "Preprocessing complete.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:675
+#: src/fs/gnunet-publish.c:672
#, c-format
msgid "Extracting meta data from file `%s' complete.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:682
+#: src/fs/gnunet-publish.c:679
msgid "Meta data extraction has finished.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:691
+#: src/fs/gnunet-publish.c:688
msgid "Internal error scanning directory.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:723
+#: src/fs/gnunet-publish.c:716
#, c-format
msgid "Selected pseudonym `%s' unknown\n"
msgstr ""
-#: src/fs/gnunet-publish.c:755
+#: src/fs/gnunet-publish.c:749
#, c-format
msgid "Failed to access `%s': %s\n"
msgstr ""
-#: src/fs/gnunet-publish.c:769
+#: src/fs/gnunet-publish.c:763
msgid ""
"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
"installed?\n"
msgstr ""
-#: src/fs/gnunet-publish.c:825
+#: src/fs/gnunet-publish.c:819
#, c-format
msgid "Cannot extract metadata from a URI!\n"
msgstr ""
-#: src/fs/gnunet-publish.c:832
+#: src/fs/gnunet-publish.c:826
#, c-format
msgid "You must specify one and only one filename for insertion.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:838
+#: src/fs/gnunet-publish.c:832
#, c-format
msgid "You must NOT specify an URI and a filename.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:846 src/vpn/gnunet-vpn.c:209
+#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:209
#, c-format
msgid "Option `%s' is required when using option `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:857 src/fs/gnunet-publish.c:865
+#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
#: src/transport/gnunet-transport.c:1928 src/transport/gnunet-transport.c:1958
#: src/transport/gnunet-transport.c:1989
#, c-format
@@ -3497,56 +3493,56 @@
msgid "Option `%s' makes no sense without option `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:919
+#: src/fs/gnunet-publish.c:912
msgid ""
"print list of extracted keywords that would be used, but do not perform "
"upload"
msgstr ""
-#: src/fs/gnunet-publish.c:923
+#: src/fs/gnunet-publish.c:916
msgid ""
"add an additional keyword for the top-level file or directory (this option "
"can be specified multiple times)"
msgstr ""
-#: src/fs/gnunet-publish.c:927
+#: src/fs/gnunet-publish.c:920
msgid "set the meta-data for the given TYPE to the given VALUE"
msgstr ""
-#: src/fs/gnunet-publish.c:930
+#: src/fs/gnunet-publish.c:923
msgid ""
"do not index, perform full insertion (stores entire file in encrypted form "
"in GNUnet database)"
msgstr ""
-#: src/fs/gnunet-publish.c:935
+#: src/fs/gnunet-publish.c:928
msgid ""
"specify ID of an updated version to be published in the future (for "
"namespace insertions only)"
msgstr ""
-#: src/fs/gnunet-publish.c:943
+#: src/fs/gnunet-publish.c:936
msgid "publish the files under the pseudonym NAME (place file into namespace)"
msgstr ""
-#: src/fs/gnunet-publish.c:949
+#: src/fs/gnunet-publish.c:942
msgid ""
"only simulate the process but do not do any actual publishing (useful to "
"compute URIs)"
msgstr ""
-#: src/fs/gnunet-publish.c:953
+#: src/fs/gnunet-publish.c:946
msgid ""
"set the ID of this version of the publication (for namespace insertions only)"
msgstr ""
-#: src/fs/gnunet-publish.c:957
+#: src/fs/gnunet-publish.c:950
msgid ""
"URI to be published (can be used instead of passing a file to add keywords "
"to the file with the respective URI)"
msgstr ""
-#: src/fs/gnunet-publish.c:973
+#: src/fs/gnunet-publish.c:966
msgid "Publish a file or directory on GNUnet"
msgstr ""
@@ -3560,27 +3556,27 @@
msgid "Error searching: %s.\n"
msgstr ""
-#: src/fs/gnunet-search.c:246
+#: src/fs/gnunet-search.c:245
msgid "Could not create keyword URI from arguments.\n"
msgstr ""
-#: src/fs/gnunet-search.c:270
+#: src/fs/gnunet-search.c:269
msgid "Could not start searching.\n"
msgstr ""
-#: src/fs/gnunet-search.c:301
+#: src/fs/gnunet-search.c:300
msgid "write search results to file starting with PREFIX"
msgstr ""
-#: src/fs/gnunet-search.c:304
+#: src/fs/gnunet-search.c:303
msgid "automatically terminate search after DELAY"
msgstr ""
-#: src/fs/gnunet-search.c:311
+#: src/fs/gnunet-search.c:310
msgid "automatically terminate search after VALUE results are found"
msgstr ""
-#: src/fs/gnunet-search.c:322
+#: src/fs/gnunet-search.c:321
msgid "Search GNUnet for files that were published on GNUnet"
msgstr ""
@@ -3936,16 +3932,16 @@
msgid "Unindexing done.\n"
msgstr ""
-#: src/fs/gnunet-unindex.c:130
+#: src/fs/gnunet-unindex.c:129
#, c-format
msgid "You must specify one and only one filename for unindexing.\n"
msgstr ""
-#: src/fs/gnunet-unindex.c:147
+#: src/fs/gnunet-unindex.c:146
msgid "Could not start unindex operation.\n"
msgstr ""
-#: src/fs/gnunet-unindex.c:179
+#: src/fs/gnunet-unindex.c:178
msgid "Unindex a file that was previously indexed with gnunet-publish."
msgstr ""
@@ -4334,68 +4330,68 @@
msgid "GNS REST API initialized\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:291
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
#, c-format
msgid "Unable to parse IPv4 address `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:312
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
#, c-format
msgid "Failed to serialize NS record with value `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:334
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
#, c-format
msgid "Failed to serialize CNAME record with value `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:418
+#: src/gnsrecord/plugin_gnsrecord_dns.c:486
#, c-format
msgid "Failed to serialize CERT record with %u bytes\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:455
+#: src/gnsrecord/plugin_gnsrecord_dns.c:522
#, c-format
msgid "Unable to parse SOA record `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:474
+#: src/gnsrecord/plugin_gnsrecord_dns.c:541
#, c-format
msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:497
+#: src/gnsrecord/plugin_gnsrecord_dns.c:564
#, c-format
msgid "Failed to serialize PTR record with value `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:520
+#: src/gnsrecord/plugin_gnsrecord_dns.c:587
#, c-format
msgid "Unable to parse MX record `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:535
+#: src/gnsrecord/plugin_gnsrecord_dns.c:602
#, c-format
msgid "Failed to serialize MX record with hostname `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:562
+#: src/gnsrecord/plugin_gnsrecord_dns.c:629
#, c-format
msgid "Unable to parse SRV record `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:578
+#: src/gnsrecord/plugin_gnsrecord_dns.c:645
#, c-format
msgid "Failed to serialize SRV record with target `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:595
+#: src/gnsrecord/plugin_gnsrecord_dns.c:662
#, c-format
msgid "Unable to parse IPv6 address `%s'\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:619
-#: src/gnsrecord/plugin_gnsrecord_dns.c:635
+#: src/gnsrecord/plugin_gnsrecord_dns.c:686
+#: src/gnsrecord/plugin_gnsrecord_dns.c:702
#, c-format
msgid "Unable to parse TLSA record string `%s'\n"
msgstr ""
@@ -4900,6 +4896,30 @@
msgid "Namecache failed to cache block"
msgstr ""
+#: src/namecache/plugin_namecache_flat.c:119
+#: src/namecache/plugin_namecache_flat.c:236
+#: src/namestore/plugin_namestore_flat.c:184
+#: src/namestore/plugin_namestore_flat.c:352
+#, c-format
+msgid "Unable to initialize file: %s.\n"
+msgstr ""
+
+#: src/namecache/plugin_namecache_flat.c:130
+#: src/namestore/plugin_namestore_flat.c:195
+#, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr ""
+
+#: src/namecache/plugin_namecache_flat.c:142
+#: src/namestore/plugin_namestore_flat.c:207
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "pa_stream_new() échoué : %s\n"
+
+#: src/namecache/plugin_namecache_flat.c:391
+msgid "flat plugin running\n"
+msgstr ""
+
#: src/namecache/plugin_namecache_postgres.c:89
#: src/namestore/plugin_namestore_postgres.c:96
msgid "Failed to create indices\n"
@@ -4996,8 +5016,7 @@
msgid "Invalid public key for reverse lookup `%s'\n"
msgstr ""
-#: src/namestore/gnunet-namestore.c:868
-#: src/peerinfo-tool/gnunet-peerinfo.c:817
+#: src/namestore/gnunet-namestore.c:868 src/peerinfo-tool/gnunet-peerinfo.c:817
#, c-format
msgid "Invalid URI `%s'\n"
msgstr ""
@@ -5153,10 +5172,18 @@
msgid "Namestore failed to store record\n"
msgstr ""
+#: src/namestore/plugin_namestore_flat.c:650
+msgid "flat file database running\n"
+msgstr ""
+
#: src/namestore/plugin_rest_namestore.c:1023
msgid "Namestore REST API initialized\n"
msgstr ""
+#: src/nat/gnunet-nat.c:160
+msgid "GNUnet NAT traversal autoconfigure daemon"
+msgstr ""
+
#: src/nat/gnunet-nat-server.c:279
#, c-format
msgid "Please pass valid port number as the first argument! (got `%s')\n"
@@ -5166,53 +5193,57 @@
msgid "GNUnet NAT traversal test helper daemon"
msgstr ""
-#: src/nat/nat_auto.c:179
+#: src/nat/nat_auto.c:394
msgid "NAT traversal with ICMP Server succeeded.\n"
msgstr ""
-#: src/nat/nat_auto.c:180
+#: src/nat/nat_auto.c:395
msgid "NAT traversal with ICMP Server failed.\n"
msgstr ""
-#: src/nat/nat_auto.c:201
+#: src/nat/nat_auto.c:416
msgid "Testing connection reversal with ICMP server.\n"
msgstr ""
-#: src/nat/nat_auto.c:249
+#: src/nat/nat_auto.c:448
#, c-format
msgid "Detected external IP `%s'\n"
msgstr ""
-#: src/nat/nat_auto.c:327
+#: src/nat/nat_auto.c:579
msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
msgstr ""
-#: src/nat/nat_auto.c:343
+#: src/nat/nat_auto.c:597
#, c-format
msgid "Detected internal network address `%s'.\n"
msgstr ""
-#: src/nat/nat_auto.c:406
+#: src/nat/nat_auto.c:669 src/nat/nat_test.c:364
+msgid "Failed to connect to `gnunet-nat-server'\n"
+msgstr ""
+
+#: src/nat/nat_auto.c:715
msgid "upnpc found, enabling its use\n"
msgstr ""
-#: src/nat/nat_auto.c:407
+#: src/nat/nat_auto.c:716
msgid "upnpc not found\n"
msgstr ""
-#: src/nat/nat_auto.c:437
+#: src/nat/nat_auto.c:748
msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
msgstr ""
-#: src/nat/nat_auto.c:445 src/nat/nat_auto.c:490
+#: src/nat/nat_auto.c:756 src/nat/nat_auto.c:804
msgid "test_icmp_server not possible, as we are not behind NAT\n"
msgstr ""
-#: src/nat/nat_auto.c:453 src/nat/nat_auto.c:498
+#: src/nat/nat_auto.c:764 src/nat/nat_auto.c:812
msgid "No working gnunet-helper-nat-server found\n"
msgstr ""
-#: src/nat/nat_auto.c:483
+#: src/nat/nat_auto.c:797
msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
msgstr ""
@@ -5226,26 +5257,26 @@
msgid "Failed to start %s\n"
msgstr ""
-#: src/nat/nat.c:1286
+#: src/nat/nat.c:1305
msgid "Error while running upnp client:\n"
msgstr ""
-#: src/nat/nat.c:1356
+#: src/nat/nat.c:1375
#, c-format
msgid "Failed to run upnp client for port %u\n"
msgstr ""
-#: src/nat/nat.c:1498
+#: src/nat/nat.c:1517
msgid "malformed"
msgstr ""
-#: src/nat/nat.c:1552
+#: src/nat/nat.c:1571
msgid ""
"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
"disabling UPnP \n"
msgstr ""
-#: src/nat/nat.c:1680 src/nat/nat.c:1692
+#: src/nat/nat.c:1700 src/nat/nat.c:1712
#, c-format
msgid ""
"Configuration requires `%s', but binary is not installed properly (SUID bit "
@@ -5252,88 +5283,88 @@
"not set). Option disabled.\n"
msgstr ""
-#: src/nat/nat.c:1830
+#: src/nat/nat.c:1855
msgid "Internal IP address not known, cannot use ICMP NAT traversal method\n"
msgstr ""
-#: src/nat/nat.c:1846
+#: src/nat/nat.c:1871
#, c-format
msgid "Running gnunet-helper-nat-client %s %s %u\n"
msgstr ""
-#: src/nat/nat.c:1931
+#: src/nat/nat.c:1958
msgid "Operation Successful"
msgstr ""
-#: src/nat/nat.c:1933
+#: src/nat/nat.c:1960
msgid "Internal Failure (IPC, ...)"
msgstr ""
-#: src/nat/nat.c:1935
+#: src/nat/nat.c:1962
msgid "Failure in network subsystem, check permissions."
msgstr ""
-#: src/nat/nat.c:1937
+#: src/nat/nat.c:1964
msgid "Encountered timeout while performing operation"
msgstr ""
-#: src/nat/nat.c:1939
+#: src/nat/nat.c:1966
msgid "detected that we are offline"
msgstr ""
-#: src/nat/nat.c:1941
+#: src/nat/nat.c:1968
msgid "`upnpc` command not found"
msgstr ""
-#: src/nat/nat.c:1943
+#: src/nat/nat.c:1970
msgid "Failed to run `upnpc` command"
msgstr ""
-#: src/nat/nat.c:1945
+#: src/nat/nat.c:1972
msgid "`upnpc' command took too long, process killed"
msgstr ""
-#: src/nat/nat.c:1947
+#: src/nat/nat.c:1974
msgid "`upnpc' command failed to establish port mapping"
msgstr ""
-#: src/nat/nat.c:1949
+#: src/nat/nat.c:1976
msgid "`external-ip' command not found"
msgstr ""
-#: src/nat/nat.c:1951
+#: src/nat/nat.c:1978
msgid "Failed to run `external-ip` command"
msgstr ""
-#: src/nat/nat.c:1953
+#: src/nat/nat.c:1980
msgid "`external-ip' command output invalid"
msgstr ""
-#: src/nat/nat.c:1955
+#: src/nat/nat.c:1982
msgid "no valid address was returned by `external-ip'"
msgstr ""
-#: src/nat/nat.c:1957
+#: src/nat/nat.c:1984
msgid "Could not determine interface with internal/local network address"
msgstr ""
-#: src/nat/nat.c:1959
+#: src/nat/nat.c:1986
msgid "No functioning gnunet-helper-nat-server installation found"
msgstr ""
-#: src/nat/nat.c:1961
+#: src/nat/nat.c:1988
msgid "NAT test could not be initialized"
msgstr ""
-#: src/nat/nat.c:1963
+#: src/nat/nat.c:1990
msgid "NAT test timeout reached"
msgstr ""
-#: src/nat/nat.c:1965
+#: src/nat/nat.c:1992
msgid "could not register NAT"
msgstr ""
-#: src/nat/nat.c:1967
+#: src/nat/nat.c:1994
msgid "No working gnunet-helper-nat-client installation found"
msgstr ""
@@ -5345,16 +5376,12 @@
msgid "`upnpc' command not found\n"
msgstr ""
-#: src/nat/nat_test.c:360
-msgid "Failed to connect to `gnunet-nat-server'\n"
-msgstr ""
-
-#: src/nat/nat_test.c:462
+#: src/nat/nat_test.c:467
#, c-format
msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
msgstr ""
-#: src/nat/nat_test.c:497
+#: src/nat/nat_test.c:502
msgid "NAT test failed to start NAT library\n"
msgstr ""
@@ -5394,8 +5421,8 @@
msgid "Measure quality and performance of the NSE service."
msgstr ""
-#: src/nse/gnunet-service-nse.c:1537
-#: src/revocation/gnunet-service-revocation.c:827 src/util/gnunet-scrypt.c:260
+#: src/nse/gnunet-service-nse.c:1541
+#: src/revocation/gnunet-service-revocation.c:848 src/util/gnunet-scrypt.c:260
msgid "Value is too large.\n"
msgstr ""
@@ -5644,7 +5671,7 @@
msgstr ""
#: src/peerstore/plugin_peerstore_sqlite.c:398
-#: src/psycstore/plugin_psycstore_sqlite.c:281
+#: src/psycstore/plugin_psycstore_sqlite.c:282
#, c-format
msgid ""
"Error executing SQL query: %s\n"
@@ -5652,7 +5679,7 @@
msgstr ""
#: src/peerstore/plugin_peerstore_sqlite.c:422
-#: src/psycstore/plugin_psycstore_sqlite.c:258
+#: src/psycstore/plugin_psycstore_sqlite.c:259
#, c-format
msgid ""
"Error preparing SQL query: %s\n"
@@ -5702,38 +5729,44 @@
msgid "Failed to get master counters!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:645
-msgid "Failed to begin modifying state!\n"
+#: src/psycstore/gnunet-service-psycstore.c:657
+#, c-format
+msgid "Failed to begin modifying state: %d\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:656
+#: src/psycstore/gnunet-service-psycstore.c:667
+#, c-format
+msgid "Failed to modify state: %d\n"
+msgstr ""
+
+#: src/psycstore/gnunet-service-psycstore.c:675
msgid "Failed to end modifying state!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:686
+#: src/psycstore/gnunet-service-psycstore.c:706
msgid "Tried to set invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:700
+#: src/psycstore/gnunet-service-psycstore.c:720
msgid "Failed to begin synchronizing state!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:717
+#: src/psycstore/gnunet-service-psycstore.c:737
msgid "Failed to end synchronizing state!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:737
-#: src/psycstore/gnunet-service-psycstore.c:756
+#: src/psycstore/gnunet-service-psycstore.c:757
+#: src/psycstore/gnunet-service-psycstore.c:776
msgid "Failed to reset state!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:779
-#: src/psycstore/gnunet-service-psycstore.c:830
+#: src/psycstore/gnunet-service-psycstore.c:799
+#: src/psycstore/gnunet-service-psycstore.c:850
msgid "Tried to get invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:806
-#: src/psycstore/gnunet-service-psycstore.c:845
+#: src/psycstore/gnunet-service-psycstore.c:826
+#: src/psycstore/gnunet-service-psycstore.c:865
msgid "Failed to get state variable!\n"
msgstr ""
@@ -5742,7 +5775,7 @@
msgid "`%s' failed at %s:%d with error: %s (%d)\n"
msgstr ""
-#: src/psycstore/plugin_psycstore_sqlite.c:1907
+#: src/psycstore/plugin_psycstore_sqlite.c:1923
msgid "SQLite database running\n"
msgstr ""
@@ -5993,33 +6026,33 @@
msgid "test if the public key KEY has been revoked"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:427
+#: src/revocation/gnunet-service-revocation.c:481
msgid "# unsupported revocations received via set union"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:436
+#: src/revocation/gnunet-service-revocation.c:490
msgid "# revocation messages received via set union"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:441
+#: src/revocation/gnunet-service-revocation.c:495
#, c-format
msgid "Error computing revocation set union with %s\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:445
+#: src/revocation/gnunet-service-revocation.c:499
msgid "# revocation set unions failed"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:454
+#: src/revocation/gnunet-service-revocation.c:508
msgid "# revocation set unions completed"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:493
-#: src/revocation/gnunet-service-revocation.c:759
+#: src/revocation/gnunet-service-revocation.c:547
+#: src/revocation/gnunet-service-revocation.c:780
msgid "SET service crashed, terminating revocation service\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:851
+#: src/revocation/gnunet-service-revocation.c:872
msgid "Could not open revocation database file!"
msgstr ""
@@ -6081,7 +6114,9 @@
msgstr ""
#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1419
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1564
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1549
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1193
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1252
msgid "Connect to CADET failed\n"
msgstr ""
@@ -6326,7 +6361,7 @@
msgid "Error loading sensor from file: %s\n"
msgstr ""
-#: src/set/gnunet-service-set.c:1531
+#: src/set/gnunet-service-set.c:1960
msgid "Could not connect to cadet service\n"
msgstr ""
@@ -6447,7 +6482,7 @@
msgid "Could not save some persistent statistics\n"
msgstr ""
-#: src/statistics/statistics_api.c:1090
+#: src/statistics/statistics_api.c:1088
msgid ""
"Failed to receive acknowledgement from statistics service, some statistics "
"might have been lost!\n"
@@ -7981,7 +8016,7 @@
msgid "# sessions allocated"
msgstr ""
-#: src/transport/transport_api.c:812
+#: src/transport/transport_api.c:827
#, c-format
msgid "Received unexpected message of type %u in %s:%u\n"
msgstr ""
@@ -8024,17 +8059,17 @@
msgid "Metadata `%s' failed to deserialize"
msgstr ""
-#: src/util/client.c:263 src/util/client.c:889 src/util/service.c:621
+#: src/util/client.c:264 src/util/client.c:894 src/util/service.c:621
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
-#: src/util/client.c:267 src/util/client.c:894 src/util/service.c:625
+#: src/util/client.c:268 src/util/client.c:899 src/util/service.c:625
#, c-format
msgid "Using `%s' instead\n"
msgstr ""
-#: src/util/client.c:362
+#: src/util/client.c:367
#, c-format
msgid ""
"Could not determine valid hostname and port for service `%s' from "
@@ -8041,17 +8076,17 @@
"configuration.\n"
msgstr ""
-#: src/util/client.c:370
+#: src/util/client.c:375
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
-#: src/util/client.c:1039
+#: src/util/client.c:1044
#, c-format
msgid "Could not connect to service `%s', configuration broken.\n"
msgstr ""
-#: src/util/client.c:1051
+#: src/util/client.c:1056
#, c-format
msgid "Failure to transmit request to service `%s'\n"
msgstr ""
@@ -8133,12 +8168,12 @@
"as an environmental variable\n"
msgstr ""
-#: src/util/connection.c:424
+#: src/util/connection.c:429
#, c-format
msgid "Access denied to `%s'\n"
msgstr ""
-#: src/util/connection.c:441
+#: src/util/connection.c:446
#, c-format
msgid "Accepting connection from `%s': %p\n"
msgstr ""
@@ -8203,17 +8238,17 @@
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr ""
-#: src/util/crypto_rsa.c:981
+#: src/util/crypto_rsa.c:999
#, c-format
msgid "RSA signature verification failed at %s:%d: %s\n"
msgstr ""
-#: src/util/disk.c:1221
+#: src/util/disk.c:1226
#, c-format
msgid "Expected `%s' to be a directory!\n"
msgstr ""
-#: src/util/disk.c:1444 src/util/service.c:1328
+#: src/util/disk.c:1449 src/util/service.c:1328
#, c-format
msgid "Cannot obtain information about user `%s': %s\n"
msgstr ""
@@ -8702,6 +8737,16 @@
msgid "signal (%d, %p) returned %d.\n"
msgstr ""
+#: src/util/socks.c:592
+#, c-format
+msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
+msgstr ""
+
+#: src/util/socks.c:605
+#, c-format
+msgid "Attempting to proxy service `%s' to invalid port %d or hostname `%s'.\n"
+msgstr ""
+
#: src/util/strings.c:146
msgid "b"
msgstr ""
Modified: gnunet/po/sv.po
===================================================================
--- gnunet/po/sv.po 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/po/sv.po 2015-09-22 01:20:28 UTC (rev 36367)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: GNUnet 0.7.0b\n"
"Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2015-07-24 15:20+0200\n"
+"POT-Creation-Date: 2015-09-06 02:18+0200\n"
"PO-Revision-Date: 2006-01-21 17:16+0100\n"
"Last-Translator: Daniel Nylander <address@hidden>\n"
"Language-Team: Swedish <address@hidden>\n"
@@ -352,13 +352,11 @@
"%llu\n"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3290
-#: src/ats-tests/gnunet-solver-eval.c:918
+#: src/ats/gnunet-ats-solver-eval.c:3290 src/ats-tests/gnunet-solver-eval.c:918
msgid "solver to use"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3293
-#: src/ats-tests/gnunet-solver-eval.c:921
+#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:921
#: src/ats-tests/gnunet-solver-eval.c:924
msgid "experiment to use"
msgstr ""
@@ -643,58 +641,58 @@
msgid "Print information about ATS state"
msgstr "Skriv ut information om GNUnets motparter."
-#: src/cadet/gnunet-cadet.c:376
+#: src/cadet/gnunet-cadet.c:458
#, fuzzy, c-format
msgid "Invalid target `%s'\n"
msgstr "Ogiltigt argument: \"%s\"\n"
-#: src/cadet/gnunet-cadet.c:643
+#: src/cadet/gnunet-cadet.c:735
#, fuzzy, c-format
msgid "Invalid peer ID `%s'\n"
msgstr "Ogiltiga argument: "
-#: src/cadet/gnunet-cadet.c:686
+#: src/cadet/gnunet-cadet.c:778
#, fuzzy, c-format
msgid "Invalid tunnel owner `%s'\n"
msgstr "Ogiltigt format för IP: \"%s\"\n"
-#: src/cadet/gnunet-cadet.c:752
-msgid "You must NOT give a TARGETwhen using 'request all' options\n"
+#: src/cadet/gnunet-cadet.c:844
+msgid "You must NOT give a TARGET when using 'request all' options\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:849
+#: src/cadet/gnunet-cadet.c:941
#, fuzzy
msgid "provide information about a particular connection"
msgstr "Skriv ut information om GNUnets motparter."
-#: src/cadet/gnunet-cadet.c:852
+#: src/cadet/gnunet-cadet.c:944
msgid "activate echo mode"
msgstr ""
-#: src/cadet/gnunet-cadet.c:855
+#: src/cadet/gnunet-cadet.c:947
msgid "dump debug information to STDERR"
msgstr ""
-#: src/cadet/gnunet-cadet.c:861
+#: src/cadet/gnunet-cadet.c:953
msgid "port to listen to (default; 0)"
msgstr ""
-#: src/cadet/gnunet-cadet.c:864
+#: src/cadet/gnunet-cadet.c:956
#, fuzzy
msgid "provide information about a patricular peer"
msgstr "Skriv ut information om GNUnets motparter."
-#: src/cadet/gnunet-cadet.c:867
+#: src/cadet/gnunet-cadet.c:959
#, fuzzy
msgid "provide information about all peers"
msgstr "Skriv ut information om GNUnets motparter."
-#: src/cadet/gnunet-cadet.c:870
+#: src/cadet/gnunet-cadet.c:962
#, fuzzy
msgid "provide information about a particular tunnel"
msgstr "Skriv ut information om GNUnets motparter."
-#: src/cadet/gnunet-cadet.c:873
+#: src/cadet/gnunet-cadet.c:965
#, fuzzy
msgid "provide information about all tunnels"
msgstr "Skriv ut information om GNUnets motparter."
@@ -1437,21 +1435,21 @@
msgid "# PAYLOAD dropped (out of order)"
msgstr "# byte kastade via UDP (utgående)"
-#: src/core/gnunet-service-core_neighbours.c:177
+#: src/core/gnunet-service-core_neighbours.c:178
#, fuzzy
msgid "# sessions terminated by transport disconnect"
msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
-#: src/core/gnunet-service-core_neighbours.c:193
-#: src/core/gnunet-service-core_neighbours.c:355
+#: src/core/gnunet-service-core_neighbours.c:194
+#: src/core/gnunet-service-core_neighbours.c:362
msgid "# neighbour entries allocated"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:264
+#: src/core/gnunet-service-core_neighbours.c:270
msgid "# encrypted bytes given to transport"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:438
+#: src/core/gnunet-service-core_neighbours.c:448
#, c-format
msgid "Unsupported message of type %u (%u bytes) received from peer `%s'\n"
msgstr ""
@@ -1498,7 +1496,7 @@
msgstr ""
#: src/datacache/datacache.c:119 src/datacache/datacache.c:294
-#: src/datastore/gnunet-service-datastore.c:853
+#: src/datastore/gnunet-service-datastore.c:866
#, fuzzy
msgid "# bytes stored"
msgstr "# byte krypterade"
@@ -1577,91 +1575,91 @@
msgid "Failed to transmit request to drop database.\n"
msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
-#: src/datastore/datastore_api.c:394
+#: src/datastore/datastore_api.c:395
msgid "# queue entry timeouts"
msgstr ""
-#: src/datastore/datastore_api.c:443
+#: src/datastore/datastore_api.c:450
msgid "# queue overflows"
msgstr ""
-#: src/datastore/datastore_api.c:471
+#: src/datastore/datastore_api.c:478
#, fuzzy
msgid "# queue entries created"
msgstr "# PING-meddelanden skapade"
-#: src/datastore/datastore_api.c:491
+#: src/datastore/datastore_api.c:498
msgid "# Requests dropped from datastore queue"
msgstr ""
-#: src/datastore/datastore_api.c:533
+#: src/datastore/datastore_api.c:540
#, fuzzy
msgid "# datastore connections (re)created"
msgstr "Nätverksanslutning"
-#: src/datastore/datastore_api.c:621
+#: src/datastore/datastore_api.c:628
#, fuzzy
msgid "# transmission request failures"
msgstr "# klartext PONG-meddelanden mottagna"
-#: src/datastore/datastore_api.c:645
+#: src/datastore/datastore_api.c:652
#, fuzzy
msgid "# bytes sent to datastore"
msgstr "# byte krypterade"
-#: src/datastore/datastore_api.c:787
+#: src/datastore/datastore_api.c:794
#, fuzzy
msgid "Failed to receive status response from database."
msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n"
-#: src/datastore/datastore_api.c:801
+#: src/datastore/datastore_api.c:808
msgid "Error reading response from datastore service"
msgstr ""
-#: src/datastore/datastore_api.c:813 src/datastore/datastore_api.c:819
+#: src/datastore/datastore_api.c:820 src/datastore/datastore_api.c:826
#, fuzzy
msgid "Invalid error message received from datastore service"
msgstr "Ogiltigt meddelande mottogs den %s:%d."
-#: src/datastore/datastore_api.c:823
+#: src/datastore/datastore_api.c:830
#, fuzzy
msgid "# status messages received"
msgstr "# krypterade PONG-meddelanden mottagna"
-#: src/datastore/datastore_api.c:893
+#: src/datastore/datastore_api.c:909
msgid "# PUT requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:959
+#: src/datastore/datastore_api.c:975
msgid "# RESERVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1020
+#: src/datastore/datastore_api.c:1036
msgid "# RELEASE RESERVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1080
+#: src/datastore/datastore_api.c:1096
msgid "# UPDATE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1144
+#: src/datastore/datastore_api.c:1160
msgid "# REMOVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1248
+#: src/datastore/datastore_api.c:1264
#, fuzzy
msgid "# Results received"
msgstr "# byte mottogs via TCP"
-#: src/datastore/datastore_api.c:1315
+#: src/datastore/datastore_api.c:1331
msgid "# GET REPLICATION requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1378
+#: src/datastore/datastore_api.c:1394
msgid "# GET ZERO ANONYMITY requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1447
+#: src/datastore/datastore_api.c:1463
msgid "# GET requests executed"
msgstr ""
@@ -1686,30 +1684,30 @@
msgid "Manipulate GNUnet datastore"
msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
-#: src/datastore/gnunet-service-datastore.c:365
+#: src/datastore/gnunet-service-datastore.c:372
#, fuzzy
msgid "# bytes expired"
msgstr "# byte mottogs via TCP"
-#: src/datastore/gnunet-service-datastore.c:439
+#: src/datastore/gnunet-service-datastore.c:447
msgid "# bytes purged (low-priority)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:497
+#: src/datastore/gnunet-service-datastore.c:505
#: src/gns/gnunet-gns-helper-service-w32.c:223
msgid "Transmission to client failed!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:528
+#: src/datastore/gnunet-service-datastore.c:536
#: src/gns/gnunet-gns-helper-service-w32.c:262
msgid "Shutdown in progress, aborting transmission.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:643
+#: src/datastore/gnunet-service-datastore.c:652
msgid "# results found"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:686
+#: src/datastore/gnunet-service-datastore.c:696
#, c-format
msgid ""
"Insufficient space (%llu bytes are available) to satisfy `%s' request for "
@@ -1716,7 +1714,7 @@
"%llu bytes\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:697
+#: src/datastore/gnunet-service-datastore.c:707
#, c-format
msgid ""
"The requested amount (%llu bytes) is larger than the cache size (%llu "
@@ -1723,133 +1721,133 @@
"bytes)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:701
+#: src/datastore/gnunet-service-datastore.c:711
msgid ""
"Insufficient space to satisfy request and requested amount is larger than "
"cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:707
+#: src/datastore/gnunet-service-datastore.c:717
msgid "Insufficient space to satisfy request"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:712
-#: src/datastore/gnunet-service-datastore.c:767
-#: src/datastore/gnunet-service-datastore.c:1019
-#: src/datastore/gnunet-service-datastore.c:1597
+#: src/datastore/gnunet-service-datastore.c:723
+#: src/datastore/gnunet-service-datastore.c:779
+#: src/datastore/gnunet-service-datastore.c:1035
+#: src/datastore/gnunet-service-datastore.c:1630
msgid "# reserved"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:780
+#: src/datastore/gnunet-service-datastore.c:793
msgid "Could not find matching reservation"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:865
+#: src/datastore/gnunet-service-datastore.c:879
#, c-format
msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1071
+#: src/datastore/gnunet-service-datastore.c:1088
#, fuzzy
msgid "# GET requests received"
msgstr "# byte mottogs via TCP"
-#: src/datastore/gnunet-service-datastore.c:1083
+#: src/datastore/gnunet-service-datastore.c:1101
msgid "# requests filtered by bloomfilter"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1121
+#: src/datastore/gnunet-service-datastore.c:1141
#, fuzzy
msgid "# UPDATE requests received"
msgstr "# byte mottogs via TCP"
-#: src/datastore/gnunet-service-datastore.c:1149
+#: src/datastore/gnunet-service-datastore.c:1170
msgid "# GET REPLICATION requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1182
+#: src/datastore/gnunet-service-datastore.c:1204
msgid "# GET ZERO ANONYMITY requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1207
+#: src/datastore/gnunet-service-datastore.c:1233
#, fuzzy
msgid "Content not found"
msgstr "Kommando \"%s\" hittades inte!\n"
-#: src/datastore/gnunet-service-datastore.c:1215
+#: src/datastore/gnunet-service-datastore.c:1244
msgid "# bytes removed (explicit request)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1247
+#: src/datastore/gnunet-service-datastore.c:1277
#, fuzzy
msgid "# REMOVE requests received"
msgstr "# byte mottogs via TCP"
-#: src/datastore/gnunet-service-datastore.c:1291
+#: src/datastore/gnunet-service-datastore.c:1321
#, c-format
msgid ""
"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1296
+#: src/datastore/gnunet-service-datastore.c:1326
#, c-format
msgid "New payload: %lld\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1349
+#: src/datastore/gnunet-service-datastore.c:1379
#, c-format
msgid "Loading `%s' datastore plugin\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1360
+#: src/datastore/gnunet-service-datastore.c:1390
#, fuzzy, c-format
msgid "Failed to load datastore plugin for `%s'\n"
msgstr "Kunde inte slå upp \"%s\": %s\n"
-#: src/datastore/gnunet-service-datastore.c:1429
-#: src/datastore/gnunet-service-datastore.c:1490
+#: src/datastore/gnunet-service-datastore.c:1459
+#: src/datastore/gnunet-service-datastore.c:1522
msgid "Bloomfilter construction complete.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1477
+#: src/datastore/gnunet-service-datastore.c:1509
msgid "Rebuilding bloomfilter. Please be patient.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1487
+#: src/datastore/gnunet-service-datastore.c:1519
msgid "Plugin does not support get_keys function. Please fix!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1625
-#: src/datastore/gnunet-service-datastore.c:1636
+#: src/datastore/gnunet-service-datastore.c:1661
+#: src/datastore/gnunet-service-datastore.c:1673
#, fuzzy, c-format
msgid "No `%s' specified for `%s' in configuration!\n"
msgstr "Inga applikationer definierade i konfiguration!\n"
-#: src/datastore/gnunet-service-datastore.c:1630
+#: src/datastore/gnunet-service-datastore.c:1667
#, fuzzy, c-format
msgid "# bytes used in file-sharing datastore `%s'"
msgstr "# byte krypterade"
-#: src/datastore/gnunet-service-datastore.c:1641
+#: src/datastore/gnunet-service-datastore.c:1679
msgid "# quota"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1643
+#: src/datastore/gnunet-service-datastore.c:1681
msgid "# cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1656
+#: src/datastore/gnunet-service-datastore.c:1696
#, c-format
msgid "Could not use specified filename `%s' for bloomfilter.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1674
-#: src/datastore/gnunet-service-datastore.c:1690
+#: src/datastore/gnunet-service-datastore.c:1714
+#: src/datastore/gnunet-service-datastore.c:1730
#, fuzzy, c-format
msgid "Failed to remove bogus bloomfilter file `%s'\n"
msgstr "Kunde inte spara konfigurationsfil \"%s\":"
-#: src/datastore/gnunet-service-datastore.c:1720
+#: src/datastore/gnunet-service-datastore.c:1760
#, fuzzy
msgid "Failed to initialize bloomfilter.\n"
msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
@@ -1909,7 +1907,7 @@
#: src/namecache/plugin_namecache_sqlite.c:193
#: src/namestore/plugin_namestore_sqlite.c:204
#: src/peerstore/plugin_peerstore_sqlite.c:479
-#: src/psycstore/plugin_psycstore_sqlite.c:324
+#: src/psycstore/plugin_psycstore_sqlite.c:325
#, fuzzy, c-format
msgid "Unable to initialize SQLite: %s.\n"
msgstr "Kunde inte initiera SQLite.\n"
@@ -1986,9 +1984,9 @@
msgstr ""
#: src/dht/gnunet-dht-get.c:204 src/dht/gnunet-dht-monitor.c:271
-#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:755
-#: src/fs/gnunet-download.c:328 src/fs/gnunet-publish.c:961
-#: src/fs/gnunet-search.c:307 src/fs/gnunet-unindex.c:168
+#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:794
+#: src/fs/gnunet-download.c:327 src/fs/gnunet-publish.c:954
+#: src/fs/gnunet-search.c:306 src/fs/gnunet-unindex.c:167
#: src/nse/gnunet-nse-profiler.c:873
msgid "be verbose (print progress information)"
msgstr ""
@@ -2005,8 +2003,7 @@
msgid "Prints all packets that go through the DHT."
msgstr ""
-#: src/dht/gnunet_dht_profiler.c:1393
-#: src/testbed/gnunet-testbed-profiler.c:267
+#: src/dht/gnunet_dht_profiler.c:1393 src/testbed/gnunet-testbed-profiler.c:267
#, fuzzy, c-format
msgid "Exiting as the number of peers is %u\n"
msgstr "Maximalt antal chattklienter uppnått.\n"
@@ -2230,8 +2227,7 @@
msgid "# GET requests given to datacache"
msgstr "# byte mottogs via TCP"
-#: src/dht/gnunet-service-dht_hello.c:84
-#: src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
#, fuzzy
msgid "# HELLOs obtained from peerinfo"
msgstr "Meddelande mottaget från klient är ogiltig.\n"
@@ -3108,7 +3104,7 @@
msgid "Failed to connect to datastore."
msgstr "Misslyckades att ansluta till gnunetd.\n"
-#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:443
+#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:441
#, fuzzy, c-format
msgid "Publishing failed: %s"
msgstr ""
@@ -3115,49 +3111,49 @@
"\n"
"Fel vid uppladdning av fil: %s\n"
-#: src/fs/fs_publish.c:709 src/fs/fs_publish.c:726 src/fs/fs_publish.c:765
-#: src/fs/fs_publish.c:786 src/fs/fs_publish.c:810 src/fs/fs_publish.c:1060
+#: src/fs/fs_publish.c:707 src/fs/fs_publish.c:724 src/fs/fs_publish.c:763
+#: src/fs/fs_publish.c:784 src/fs/fs_publish.c:808 src/fs/fs_publish.c:1058
#, fuzzy, c-format
msgid "Can not index file `%s': %s. Will try to insert instead.\n"
msgstr "Indexering av fil \"%s\" misslyckades. Försöker att infoga fil...\n"
-#: src/fs/fs_publish.c:711
+#: src/fs/fs_publish.c:709
msgid "timeout on index-start request to `fs' service"
msgstr ""
-#: src/fs/fs_publish.c:723
+#: src/fs/fs_publish.c:721
#, fuzzy
msgid "unknown error"
msgstr "Okänt fel"
-#: src/fs/fs_publish.c:767
+#: src/fs/fs_publish.c:765
msgid "failed to compute hash"
msgstr ""
-#: src/fs/fs_publish.c:787
+#: src/fs/fs_publish.c:785
msgid "filename too long"
msgstr ""
-#: src/fs/fs_publish.c:812
+#: src/fs/fs_publish.c:810
#, fuzzy
msgid "could not connect to `fs' service"
msgstr "Kunde inte ansluta till gnunetd.\n"
-#: src/fs/fs_publish.c:835
+#: src/fs/fs_publish.c:833
#, fuzzy, c-format
msgid "Failed to get file identifiers for `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/fs/fs_publish.c:899 src/fs/fs_publish.c:940
+#: src/fs/fs_publish.c:897 src/fs/fs_publish.c:938
msgid "Can not create LOC URI. Will continue with CHK instead.\n"
msgstr ""
-#: src/fs/fs_publish.c:1014
+#: src/fs/fs_publish.c:1012
#, fuzzy, c-format
msgid "Recursive upload failed at `%s': %s"
msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
-#: src/fs/fs_publish.c:1022
+#: src/fs/fs_publish.c:1020
#, fuzzy, c-format
msgid "Recursive upload failed: %s"
msgstr ""
@@ -3164,21 +3160,21 @@
"\n"
"Fel vid uppladdning av fil: %s\n"
-#: src/fs/fs_publish.c:1062
+#: src/fs/fs_publish.c:1060
msgid "needs to be an actual file"
msgstr ""
-#: src/fs/fs_publish.c:1301
+#: src/fs/fs_publish.c:1299
#, fuzzy, c-format
msgid "Datastore failure: %s"
msgstr " Anslutning misslyckades (fel?)\n"
-#: src/fs/fs_publish.c:1392
+#: src/fs/fs_publish.c:1390
#, c-format
msgid "Reserving space for %u entries and %llu bytes for publication\n"
msgstr ""
-#: src/fs/fs_publish_ksk.c:219
+#: src/fs/fs_publish_ksk.c:224
#, fuzzy
msgid "Could not connect to datastore."
msgstr "Kunde inte ansluta till gnunetd.\n"
@@ -3359,12 +3355,12 @@
msgid "Failed to save state to file %s\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/fs/gnunet-auto-share.c:402
+#: src/fs/gnunet-auto-share.c:415
#, c-format
msgid "Publication of `%s' done\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:490
+#: src/fs/gnunet-auto-share.c:504
#, fuzzy, c-format
msgid "Publishing `%s'\n"
msgstr ""
@@ -3371,38 +3367,38 @@
"\n"
"Fel vid uppladdning av fil: %s\n"
-#: src/fs/gnunet-auto-share.c:499
+#: src/fs/gnunet-auto-share.c:514
#, fuzzy, c-format
msgid "Failed to run `%s'\n"
msgstr "Misslyckades att starta samling.\n"
-#: src/fs/gnunet-auto-share.c:688
+#: src/fs/gnunet-auto-share.c:725
#, fuzzy, c-format
msgid ""
"You must specify one and only one directory name for automatic publication.\n"
msgstr "Du måste ange en och endast en fil att avindexera.\n"
-#: src/fs/gnunet-auto-share.c:739 src/fs/gnunet-publish.c:908
+#: src/fs/gnunet-auto-share.c:778 src/fs/gnunet-publish.c:901
msgid "set the desired LEVEL of sender-anonymity"
msgstr ""
-#: src/fs/gnunet-auto-share.c:743 src/fs/gnunet-publish.c:912
+#: src/fs/gnunet-auto-share.c:782 src/fs/gnunet-publish.c:905
msgid "disable adding the creation time to the metadata of the uploaded file"
msgstr ""
-#: src/fs/gnunet-auto-share.c:746 src/fs/gnunet-publish.c:915
+#: src/fs/gnunet-auto-share.c:785 src/fs/gnunet-publish.c:908
msgid "do not use libextractor to add keywords or metadata"
msgstr ""
-#: src/fs/gnunet-auto-share.c:749 src/fs/gnunet-publish.c:939
+#: src/fs/gnunet-auto-share.c:788 src/fs/gnunet-publish.c:932
msgid "specify the priority of the content"
msgstr "ange prioritet för innehållet"
-#: src/fs/gnunet-auto-share.c:752 src/fs/gnunet-publish.c:946
+#: src/fs/gnunet-auto-share.c:791 src/fs/gnunet-publish.c:939
msgid "set the desired replication LEVEL"
msgstr ""
-#: src/fs/gnunet-auto-share.c:772
+#: src/fs/gnunet-auto-share.c:815
msgid "Automatically publish files from a directory on GNUnet"
msgstr ""
@@ -3472,65 +3468,65 @@
msgid "Downloading `%s' done (%s/s).\n"
msgstr "Uppladdning vägrades!"
-#: src/fs/gnunet-download.c:209 src/fs/gnunet-publish.c:319
-#: src/fs/gnunet-search.c:206 src/fs/gnunet-unindex.c:108
+#: src/fs/gnunet-download.c:208 src/fs/gnunet-publish.c:297
+#: src/fs/gnunet-search.c:205 src/fs/gnunet-unindex.c:107
#, c-format
msgid "Unexpected status: %d\n"
msgstr ""
-#: src/fs/gnunet-download.c:234
+#: src/fs/gnunet-download.c:233
#, fuzzy
msgid "You need to specify a URI argument.\n"
msgstr "Du måste ange en och endast en fil att avindexera.\n"
-#: src/fs/gnunet-download.c:240 src/fs/gnunet-publish.c:734
+#: src/fs/gnunet-download.c:239 src/fs/gnunet-publish.c:728
#, fuzzy, c-format
msgid "Failed to parse URI: %s\n"
msgstr "Fil \"%s\" har URI: %s\n"
-#: src/fs/gnunet-download.c:247
+#: src/fs/gnunet-download.c:246
msgid "Only CHK or LOC URIs supported.\n"
msgstr ""
-#: src/fs/gnunet-download.c:254
+#: src/fs/gnunet-download.c:253
msgid "Target filename must be specified.\n"
msgstr ""
-#: src/fs/gnunet-download.c:268 src/fs/gnunet-publish.c:878
-#: src/fs/gnunet-search.c:256 src/fs/gnunet-unindex.c:140
+#: src/fs/gnunet-download.c:267 src/fs/gnunet-publish.c:872
+#: src/fs/gnunet-search.c:255 src/fs/gnunet-unindex.c:139
#, fuzzy, c-format
msgid "Could not initialize `%s' subsystem.\n"
msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
-#: src/fs/gnunet-download.c:305 src/fs/gnunet-search.c:295
+#: src/fs/gnunet-download.c:304 src/fs/gnunet-search.c:294
msgid "set the desired LEVEL of receiver-anonymity"
msgstr ""
-#: src/fs/gnunet-download.c:308
+#: src/fs/gnunet-download.c:307
msgid "delete incomplete downloads (when aborted with CTRL-C)"
msgstr ""
-#: src/fs/gnunet-download.c:311 src/fs/gnunet-search.c:298
+#: src/fs/gnunet-download.c:310 src/fs/gnunet-search.c:297
msgid "only search the local peer (no P2P network search)"
msgstr ""
-#: src/fs/gnunet-download.c:314
+#: src/fs/gnunet-download.c:313
msgid "write the file to FILENAME"
msgstr "skriv filen till FILNAMN"
-#: src/fs/gnunet-download.c:318
+#: src/fs/gnunet-download.c:317
msgid "set the maximum number of parallel downloads that is allowed"
msgstr ""
-#: src/fs/gnunet-download.c:322
+#: src/fs/gnunet-download.c:321
msgid "set the maximum number of parallel requests for blocks that is allowed"
msgstr ""
-#: src/fs/gnunet-download.c:325
+#: src/fs/gnunet-download.c:324
msgid "download a GNUnet directory recursively"
msgstr "hämta en GNUnet-katalog rekursivt"
-#: src/fs/gnunet-download.c:339
+#: src/fs/gnunet-download.c:338
msgid ""
"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
"chk/...)"
@@ -3561,137 +3557,137 @@
msgid "run a testbed to measure file-sharing performance"
msgstr ""
-#: src/fs/gnunet-publish.c:238 src/fs/gnunet-publish.c:250
+#: src/fs/gnunet-publish.c:221 src/fs/gnunet-publish.c:233
#, c-format
msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
msgstr ""
-#: src/fs/gnunet-publish.c:257
+#: src/fs/gnunet-publish.c:241
#, fuzzy, c-format
msgid "Error publishing: %s.\n"
msgstr "Fel vid nedladdning: %s\n"
-#: src/fs/gnunet-publish.c:268
+#: src/fs/gnunet-publish.c:248
#, c-format
msgid "Publishing `%s' done.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:273
+#: src/fs/gnunet-publish.c:253
#, fuzzy, c-format
msgid "URI is `%s'.\n"
msgstr "Jag är ändpunkt \"%s\".\n"
-#: src/fs/gnunet-publish.c:281
+#: src/fs/gnunet-publish.c:261
#, fuzzy, c-format
msgid "Namespace URI is `%s'.\n"
msgstr "Jag är ändpunkt \"%s\".\n"
-#: src/fs/gnunet-publish.c:299
+#: src/fs/gnunet-publish.c:277
#, fuzzy
msgid "Starting cleanup after abort\n"
msgstr "\"%s\" uppstart klar.\n"
-#: src/fs/gnunet-publish.c:306
+#: src/fs/gnunet-publish.c:284
#, fuzzy
msgid "Cleanup after abort completed.\n"
msgstr "\"%s\" uppstart klar.\n"
-#: src/fs/gnunet-publish.c:312
+#: src/fs/gnunet-publish.c:290
#, fuzzy
msgid "Cleanup after abort failed.\n"
msgstr "\"%s\" uppstart klar.\n"
-#: src/fs/gnunet-publish.c:447
+#: src/fs/gnunet-publish.c:432
#, fuzzy, c-format
msgid "Meta data for file `%s' (%s)\n"
msgstr "Uppdaterar data för modul \"%s\"\n"
-#: src/fs/gnunet-publish.c:449
+#: src/fs/gnunet-publish.c:437
#, fuzzy, c-format
msgid "Keywords for file `%s' (%s)\n"
msgstr "Nyckelord för fil \"%s\":\n"
-#: src/fs/gnunet-publish.c:594
+#: src/fs/gnunet-publish.c:591
#, fuzzy
msgid "Could not publish\n"
msgstr "Kunde inte köra \"%s\": %s\n"
-#: src/fs/gnunet-publish.c:619
+#: src/fs/gnunet-publish.c:616
#, fuzzy
msgid "Could not start publishing.\n"
msgstr "Kunde inte slå upp \"%s\": %s\n"
-#: src/fs/gnunet-publish.c:653
+#: src/fs/gnunet-publish.c:650
#, fuzzy, c-format
msgid "Scanning directory `%s'.\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/fs/gnunet-publish.c:657
+#: src/fs/gnunet-publish.c:654
#, fuzzy, c-format
msgid "Scanning file `%s'.\n"
msgstr "Startade samling \"%s\".\n"
-#: src/fs/gnunet-publish.c:663
+#: src/fs/gnunet-publish.c:660
#, c-format
msgid "There was trouble processing file `%s', skipping it.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:670
+#: src/fs/gnunet-publish.c:667
#, fuzzy
msgid "Preprocessing complete.\n"
msgstr "Nedstängning klar.\n"
-#: src/fs/gnunet-publish.c:675
+#: src/fs/gnunet-publish.c:672
#, fuzzy, c-format
msgid "Extracting meta data from file `%s' complete.\n"
msgstr "Uppdaterar data för modul \"%s\"\n"
-#: src/fs/gnunet-publish.c:682
+#: src/fs/gnunet-publish.c:679
msgid "Meta data extraction has finished.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:691
+#: src/fs/gnunet-publish.c:688
#, fuzzy
msgid "Internal error scanning directory.\n"
msgstr "=\tFel vid läsning av katalog.\n"
-#: src/fs/gnunet-publish.c:723
+#: src/fs/gnunet-publish.c:716
#, fuzzy, c-format
msgid "Selected pseudonym `%s' unknown\n"
msgstr "Namnrymd \"%s\" skapad(rot: %s).\n"
-#: src/fs/gnunet-publish.c:755
+#: src/fs/gnunet-publish.c:749
#, fuzzy, c-format
msgid "Failed to access `%s': %s\n"
msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
-#: src/fs/gnunet-publish.c:769
+#: src/fs/gnunet-publish.c:763
msgid ""
"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
"installed?\n"
msgstr ""
-#: src/fs/gnunet-publish.c:825
+#: src/fs/gnunet-publish.c:819
#, c-format
msgid "Cannot extract metadata from a URI!\n"
msgstr ""
-#: src/fs/gnunet-publish.c:832
+#: src/fs/gnunet-publish.c:826
#, fuzzy, c-format
msgid "You must specify one and only one filename for insertion.\n"
msgstr "Du måste ange en och endast en fil att avindexera.\n"
-#: src/fs/gnunet-publish.c:838
+#: src/fs/gnunet-publish.c:832
#, fuzzy, c-format
msgid "You must NOT specify an URI and a filename.\n"
msgstr "Du måste ange en och endast en fil att avindexera.\n"
-#: src/fs/gnunet-publish.c:846 src/vpn/gnunet-vpn.c:209
+#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:209
#, fuzzy, c-format
msgid "Option `%s' is required when using option `%s'.\n"
msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n"
-#: src/fs/gnunet-publish.c:857 src/fs/gnunet-publish.c:865
+#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
#: src/transport/gnunet-transport.c:1928 src/transport/gnunet-transport.c:1958
#: src/transport/gnunet-transport.c:1989
#, c-format
@@ -3698,56 +3694,56 @@
msgid "Option `%s' makes no sense without option `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:919
+#: src/fs/gnunet-publish.c:912
msgid ""
"print list of extracted keywords that would be used, but do not perform "
"upload"
msgstr ""
-#: src/fs/gnunet-publish.c:923
+#: src/fs/gnunet-publish.c:916
msgid ""
"add an additional keyword for the top-level file or directory (this option "
"can be specified multiple times)"
msgstr ""
-#: src/fs/gnunet-publish.c:927
+#: src/fs/gnunet-publish.c:920
msgid "set the meta-data for the given TYPE to the given VALUE"
msgstr ""
-#: src/fs/gnunet-publish.c:930
+#: src/fs/gnunet-publish.c:923
msgid ""
"do not index, perform full insertion (stores entire file in encrypted form "
"in GNUnet database)"
msgstr ""
-#: src/fs/gnunet-publish.c:935
+#: src/fs/gnunet-publish.c:928
msgid ""
"specify ID of an updated version to be published in the future (for "
"namespace insertions only)"
msgstr ""
-#: src/fs/gnunet-publish.c:943
+#: src/fs/gnunet-publish.c:936
msgid "publish the files under the pseudonym NAME (place file into namespace)"
msgstr ""
-#: src/fs/gnunet-publish.c:949
+#: src/fs/gnunet-publish.c:942
msgid ""
"only simulate the process but do not do any actual publishing (useful to "
"compute URIs)"
msgstr ""
-#: src/fs/gnunet-publish.c:953
+#: src/fs/gnunet-publish.c:946
msgid ""
"set the ID of this version of the publication (for namespace insertions only)"
msgstr ""
-#: src/fs/gnunet-publish.c:957
+#: src/fs/gnunet-publish.c:950
msgid ""
"URI to be published (can be used instead of passing a file to add keywords "
"to the file with the respective URI)"
msgstr ""
-#: src/fs/gnunet-publish.c:973
+#: src/fs/gnunet-publish.c:966
msgid "Publish a file or directory on GNUnet"
msgstr ""
@@ -3761,29 +3757,29 @@
msgid "Error searching: %s.\n"
msgstr "Fel vid lämning av DHT.\n"
-#: src/fs/gnunet-search.c:246
+#: src/fs/gnunet-search.c:245
#, fuzzy
msgid "Could not create keyword URI from arguments.\n"
msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
-#: src/fs/gnunet-search.c:270
+#: src/fs/gnunet-search.c:269
#, fuzzy
msgid "Could not start searching.\n"
msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
-#: src/fs/gnunet-search.c:301
+#: src/fs/gnunet-search.c:300
msgid "write search results to file starting with PREFIX"
msgstr ""
-#: src/fs/gnunet-search.c:304
+#: src/fs/gnunet-search.c:303
msgid "automatically terminate search after DELAY"
msgstr ""
-#: src/fs/gnunet-search.c:311
+#: src/fs/gnunet-search.c:310
msgid "automatically terminate search after VALUE results are found"
msgstr ""
-#: src/fs/gnunet-search.c:322
+#: src/fs/gnunet-search.c:321
msgid "Search GNUnet for files that were published on GNUnet"
msgstr ""
@@ -4171,17 +4167,17 @@
msgid "Unindexing done.\n"
msgstr "Avindexera filer."
-#: src/fs/gnunet-unindex.c:130
+#: src/fs/gnunet-unindex.c:129
#, fuzzy, c-format
msgid "You must specify one and only one filename for unindexing.\n"
msgstr "Du måste ange en och endast en fil att avindexera.\n"
-#: src/fs/gnunet-unindex.c:147
+#: src/fs/gnunet-unindex.c:146
#, fuzzy
msgid "Could not start unindex operation.\n"
msgstr "Kunde inte komma åt namnrymdsinformation.\n"
-#: src/fs/gnunet-unindex.c:179
+#: src/fs/gnunet-unindex.c:178
msgid "Unindex a file that was previously indexed with gnunet-publish."
msgstr ""
@@ -4586,68 +4582,68 @@
msgid "GNS REST API initialized\n"
msgstr " Anslutning misslyckades\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:291
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
#, fuzzy, c-format
msgid "Unable to parse IPv4 address `%s'\n"
msgstr "Ogiltigt svar på \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:312
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
#, fuzzy, c-format
msgid "Failed to serialize NS record with value `%s'\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:334
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
#, fuzzy, c-format
msgid "Failed to serialize CNAME record with value `%s'\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:418
+#: src/gnsrecord/plugin_gnsrecord_dns.c:486
#, fuzzy, c-format
msgid "Failed to serialize CERT record with %u bytes\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:455
+#: src/gnsrecord/plugin_gnsrecord_dns.c:522
#, fuzzy, c-format
msgid "Unable to parse SOA record `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:474
+#: src/gnsrecord/plugin_gnsrecord_dns.c:541
#, fuzzy, c-format
msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:497
+#: src/gnsrecord/plugin_gnsrecord_dns.c:564
#, fuzzy, c-format
msgid "Failed to serialize PTR record with value `%s'\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:520
+#: src/gnsrecord/plugin_gnsrecord_dns.c:587
#, fuzzy, c-format
msgid "Unable to parse MX record `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:535
+#: src/gnsrecord/plugin_gnsrecord_dns.c:602
#, fuzzy, c-format
msgid "Failed to serialize MX record with hostname `%s'\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:562
+#: src/gnsrecord/plugin_gnsrecord_dns.c:629
#, fuzzy, c-format
msgid "Unable to parse SRV record `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:578
+#: src/gnsrecord/plugin_gnsrecord_dns.c:645
#, fuzzy, c-format
msgid "Failed to serialize SRV record with target `%s'\n"
msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:595
+#: src/gnsrecord/plugin_gnsrecord_dns.c:662
#, fuzzy, c-format
msgid "Unable to parse IPv6 address `%s'\n"
msgstr "Ogiltigt svar på \"%s\".\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:619
-#: src/gnsrecord/plugin_gnsrecord_dns.c:635
+#: src/gnsrecord/plugin_gnsrecord_dns.c:686
+#: src/gnsrecord/plugin_gnsrecord_dns.c:702
#, fuzzy, c-format
msgid "Unable to parse TLSA record string `%s'\n"
msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
@@ -5166,6 +5162,30 @@
msgid "Namecache failed to cache block"
msgstr ""
+#: src/namecache/plugin_namecache_flat.c:119
+#: src/namecache/plugin_namecache_flat.c:236
+#: src/namestore/plugin_namestore_flat.c:184
+#: src/namestore/plugin_namestore_flat.c:352
+#, fuzzy, c-format
+msgid "Unable to initialize file: %s.\n"
+msgstr "Kunde inte initiera SQLite.\n"
+
+#: src/namecache/plugin_namecache_flat.c:130
+#: src/namestore/plugin_namestore_flat.c:195
+#, fuzzy, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
+
+#: src/namecache/plugin_namecache_flat.c:142
+#: src/namestore/plugin_namestore_flat.c:207
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
+
+#: src/namecache/plugin_namecache_flat.c:391
+msgid "flat plugin running\n"
+msgstr ""
+
#: src/namecache/plugin_namecache_postgres.c:89
#: src/namestore/plugin_namestore_postgres.c:96
#, fuzzy
@@ -5270,8 +5290,7 @@
msgid "Invalid public key for reverse lookup `%s'\n"
msgstr "Ogiltigt argument: \"%s\"\n"
-#: src/namestore/gnunet-namestore.c:868
-#: src/peerinfo-tool/gnunet-peerinfo.c:817
+#: src/namestore/gnunet-namestore.c:868 src/peerinfo-tool/gnunet-peerinfo.c:817
#, fuzzy, c-format
msgid "Invalid URI `%s'\n"
msgstr "Ogiltiga argument: "
@@ -5433,11 +5452,19 @@
msgid "Namestore failed to store record\n"
msgstr ""
+#: src/namestore/plugin_namestore_flat.c:650
+msgid "flat file database running\n"
+msgstr ""
+
#: src/namestore/plugin_rest_namestore.c:1023
#, fuzzy
msgid "Namestore REST API initialized\n"
msgstr " Anslutning misslyckades\n"
+#: src/nat/gnunet-nat.c:160
+msgid "GNUnet NAT traversal autoconfigure daemon"
+msgstr ""
+
#: src/nat/gnunet-nat-server.c:279
#, c-format
msgid "Please pass valid port number as the first argument! (got `%s')\n"
@@ -5447,55 +5474,60 @@
msgid "GNUnet NAT traversal test helper daemon"
msgstr ""
-#: src/nat/nat_auto.c:179
+#: src/nat/nat_auto.c:394
msgid "NAT traversal with ICMP Server succeeded.\n"
msgstr ""
-#: src/nat/nat_auto.c:180
+#: src/nat/nat_auto.c:395
msgid "NAT traversal with ICMP Server failed.\n"
msgstr ""
-#: src/nat/nat_auto.c:201
+#: src/nat/nat_auto.c:416
#, fuzzy
msgid "Testing connection reversal with ICMP server.\n"
msgstr "Skriv ut information om GNUnets motparter."
-#: src/nat/nat_auto.c:249
+#: src/nat/nat_auto.c:448
#, fuzzy, c-format
msgid "Detected external IP `%s'\n"
msgstr "Mottog ogiltig RPC \"%s\".\n"
-#: src/nat/nat_auto.c:327
+#: src/nat/nat_auto.c:579
msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
msgstr ""
-#: src/nat/nat_auto.c:343
+#: src/nat/nat_auto.c:597
#, c-format
msgid "Detected internal network address `%s'.\n"
msgstr ""
-#: src/nat/nat_auto.c:406
+#: src/nat/nat_auto.c:669 src/nat/nat_test.c:364
+#, fuzzy
+msgid "Failed to connect to `gnunet-nat-server'\n"
+msgstr "Misslyckades att ansluta till gnunetd.\n"
+
+#: src/nat/nat_auto.c:715
msgid "upnpc found, enabling its use\n"
msgstr ""
-#: src/nat/nat_auto.c:407
+#: src/nat/nat_auto.c:716
#, fuzzy
msgid "upnpc not found\n"
msgstr "Kommando \"%s\" hittades inte!\n"
-#: src/nat/nat_auto.c:437
+#: src/nat/nat_auto.c:748
msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
msgstr ""
-#: src/nat/nat_auto.c:445 src/nat/nat_auto.c:490
+#: src/nat/nat_auto.c:756 src/nat/nat_auto.c:804
msgid "test_icmp_server not possible, as we are not behind NAT\n"
msgstr ""
-#: src/nat/nat_auto.c:453 src/nat/nat_auto.c:498
+#: src/nat/nat_auto.c:764 src/nat/nat_auto.c:812
msgid "No working gnunet-helper-nat-server found\n"
msgstr ""
-#: src/nat/nat_auto.c:483
+#: src/nat/nat_auto.c:797
msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
msgstr ""
@@ -5509,26 +5541,26 @@
msgid "Failed to start %s\n"
msgstr "Misslyckades att starta samling.\n"
-#: src/nat/nat.c:1286
+#: src/nat/nat.c:1305
msgid "Error while running upnp client:\n"
msgstr ""
-#: src/nat/nat.c:1356
+#: src/nat/nat.c:1375
#, fuzzy, c-format
msgid "Failed to run upnp client for port %u\n"
msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
-#: src/nat/nat.c:1498
+#: src/nat/nat.c:1517
msgid "malformed"
msgstr ""
-#: src/nat/nat.c:1552
+#: src/nat/nat.c:1571
msgid ""
"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
"disabling UPnP \n"
msgstr ""
-#: src/nat/nat.c:1680 src/nat/nat.c:1692
+#: src/nat/nat.c:1700 src/nat/nat.c:1712
#, c-format
msgid ""
"Configuration requires `%s', but binary is not installed properly (SUID bit "
@@ -5535,94 +5567,94 @@
"not set). Option disabled.\n"
msgstr ""
-#: src/nat/nat.c:1830
+#: src/nat/nat.c:1855
msgid "Internal IP address not known, cannot use ICMP NAT traversal method\n"
msgstr ""
-#: src/nat/nat.c:1846
+#: src/nat/nat.c:1871
#, c-format
msgid "Running gnunet-helper-nat-client %s %s %u\n"
msgstr ""
-#: src/nat/nat.c:1931
+#: src/nat/nat.c:1958
msgid "Operation Successful"
msgstr ""
-#: src/nat/nat.c:1933
+#: src/nat/nat.c:1960
msgid "Internal Failure (IPC, ...)"
msgstr ""
-#: src/nat/nat.c:1935
+#: src/nat/nat.c:1962
msgid "Failure in network subsystem, check permissions."
msgstr ""
-#: src/nat/nat.c:1937
+#: src/nat/nat.c:1964
msgid "Encountered timeout while performing operation"
msgstr ""
-#: src/nat/nat.c:1939
+#: src/nat/nat.c:1966
msgid "detected that we are offline"
msgstr ""
-#: src/nat/nat.c:1941
+#: src/nat/nat.c:1968
#, fuzzy
msgid "`upnpc` command not found"
msgstr "Kommando \"%s\" hittades inte!\n"
-#: src/nat/nat.c:1943
+#: src/nat/nat.c:1970
#, fuzzy
msgid "Failed to run `upnpc` command"
msgstr "Misslyckades att starta samling.\n"
-#: src/nat/nat.c:1945
+#: src/nat/nat.c:1972
#, fuzzy
msgid "`upnpc' command took too long, process killed"
msgstr "Kommando \"%s\" hittades inte!\n"
-#: src/nat/nat.c:1947
+#: src/nat/nat.c:1974
msgid "`upnpc' command failed to establish port mapping"
msgstr ""
-#: src/nat/nat.c:1949
+#: src/nat/nat.c:1976
#, fuzzy
msgid "`external-ip' command not found"
msgstr "Kommando \"%s\" hittades inte!\n"
-#: src/nat/nat.c:1951
+#: src/nat/nat.c:1978
#, fuzzy
msgid "Failed to run `external-ip` command"
msgstr "Misslyckades att starta samling.\n"
-#: src/nat/nat.c:1953
+#: src/nat/nat.c:1980
msgid "`external-ip' command output invalid"
msgstr ""
-#: src/nat/nat.c:1955
+#: src/nat/nat.c:1982
msgid "no valid address was returned by `external-ip'"
msgstr ""
-#: src/nat/nat.c:1957
+#: src/nat/nat.c:1984
#, fuzzy
msgid "Could not determine interface with internal/local network address"
msgstr "Kunde inte fastställa min publika IPv6-adress.\n"
-#: src/nat/nat.c:1959
+#: src/nat/nat.c:1986
msgid "No functioning gnunet-helper-nat-server installation found"
msgstr ""
-#: src/nat/nat.c:1961
+#: src/nat/nat.c:1988
msgid "NAT test could not be initialized"
msgstr ""
-#: src/nat/nat.c:1963
+#: src/nat/nat.c:1990
msgid "NAT test timeout reached"
msgstr ""
-#: src/nat/nat.c:1965
+#: src/nat/nat.c:1992
msgid "could not register NAT"
msgstr ""
-#: src/nat/nat.c:1967
+#: src/nat/nat.c:1994
msgid "No working gnunet-helper-nat-client installation found"
msgstr ""
@@ -5634,17 +5666,12 @@
msgid "`upnpc' command not found\n"
msgstr ""
-#: src/nat/nat_test.c:360
-#, fuzzy
-msgid "Failed to connect to `gnunet-nat-server'\n"
-msgstr "Misslyckades att ansluta till gnunetd.\n"
-
-#: src/nat/nat_test.c:462
+#: src/nat/nat_test.c:467
#, c-format
msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
msgstr ""
-#: src/nat/nat_test.c:497
+#: src/nat/nat_test.c:502
#, fuzzy
msgid "NAT test failed to start NAT library\n"
msgstr "Misslyckades att starta samling.\n"
@@ -5689,8 +5716,8 @@
msgid "Measure quality and performance of the NSE service."
msgstr "Kan inte tillgå tjänsten"
-#: src/nse/gnunet-service-nse.c:1537
-#: src/revocation/gnunet-service-revocation.c:827 src/util/gnunet-scrypt.c:260
+#: src/nse/gnunet-service-nse.c:1541
+#: src/revocation/gnunet-service-revocation.c:848 src/util/gnunet-scrypt.c:260
msgid "Value is too large.\n"
msgstr ""
@@ -5950,7 +5977,7 @@
msgstr ""
#: src/peerstore/plugin_peerstore_sqlite.c:398
-#: src/psycstore/plugin_psycstore_sqlite.c:281
+#: src/psycstore/plugin_psycstore_sqlite.c:282
#, fuzzy, c-format
msgid ""
"Error executing SQL query: %s\n"
@@ -5958,7 +5985,7 @@
msgstr "Fel vid skapandet av användare"
#: src/peerstore/plugin_peerstore_sqlite.c:422
-#: src/psycstore/plugin_psycstore_sqlite.c:258
+#: src/psycstore/plugin_psycstore_sqlite.c:259
#, fuzzy, c-format
msgid ""
"Error preparing SQL query: %s\n"
@@ -6015,43 +6042,48 @@
msgid "Failed to get master counters!\n"
msgstr "Kunde inte skapa värdnyckel!\n"
-#: src/psycstore/gnunet-service-psycstore.c:645
-#, fuzzy
-msgid "Failed to begin modifying state!\n"
+#: src/psycstore/gnunet-service-psycstore.c:657
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
msgstr "Misslyckades att starta samling.\n"
-#: src/psycstore/gnunet-service-psycstore.c:656
+#: src/psycstore/gnunet-service-psycstore.c:667
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Misslyckades att starta samling.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
#, fuzzy
msgid "Failed to end modifying state!\n"
msgstr "Misslyckades att starta samling.\n"
-#: src/psycstore/gnunet-service-psycstore.c:686
+#: src/psycstore/gnunet-service-psycstore.c:706
msgid "Tried to set invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:700
+#: src/psycstore/gnunet-service-psycstore.c:720
#, fuzzy
msgid "Failed to begin synchronizing state!\n"
msgstr "Kunde inte skapa värdnyckel!\n"
-#: src/psycstore/gnunet-service-psycstore.c:717
+#: src/psycstore/gnunet-service-psycstore.c:737
#, fuzzy
msgid "Failed to end synchronizing state!\n"
msgstr "Kunde inte skapa värdnyckel!\n"
-#: src/psycstore/gnunet-service-psycstore.c:737
-#: src/psycstore/gnunet-service-psycstore.c:756
+#: src/psycstore/gnunet-service-psycstore.c:757
+#: src/psycstore/gnunet-service-psycstore.c:776
#, fuzzy
msgid "Failed to reset state!\n"
msgstr "Kunde inte skapa värdnyckel!\n"
-#: src/psycstore/gnunet-service-psycstore.c:779
-#: src/psycstore/gnunet-service-psycstore.c:830
+#: src/psycstore/gnunet-service-psycstore.c:799
+#: src/psycstore/gnunet-service-psycstore.c:850
msgid "Tried to get invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:806
-#: src/psycstore/gnunet-service-psycstore.c:845
+#: src/psycstore/gnunet-service-psycstore.c:826
+#: src/psycstore/gnunet-service-psycstore.c:865
#, fuzzy
msgid "Failed to get state variable!\n"
msgstr "Kunde inte skapa värdnyckel!\n"
@@ -6061,7 +6093,7 @@
msgid "`%s' failed at %s:%d with error: %s (%d)\n"
msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
-#: src/psycstore/plugin_psycstore_sqlite.c:1907
+#: src/psycstore/plugin_psycstore_sqlite.c:1923
msgid "SQLite database running\n"
msgstr ""
@@ -6333,37 +6365,37 @@
msgid "test if the public key KEY has been revoked"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:427
+#: src/revocation/gnunet-service-revocation.c:481
#, fuzzy
msgid "# unsupported revocations received via set union"
msgstr "# byte mottogs via TCP"
-#: src/revocation/gnunet-service-revocation.c:436
+#: src/revocation/gnunet-service-revocation.c:490
#, fuzzy
msgid "# revocation messages received via set union"
msgstr "# krypterade PONG-meddelanden mottagna"
-#: src/revocation/gnunet-service-revocation.c:441
+#: src/revocation/gnunet-service-revocation.c:495
#, c-format
msgid "Error computing revocation set union with %s\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:445
+#: src/revocation/gnunet-service-revocation.c:499
#, fuzzy
msgid "# revocation set unions failed"
msgstr "# sessionsnycklar accepterade"
-#: src/revocation/gnunet-service-revocation.c:454
+#: src/revocation/gnunet-service-revocation.c:508
#, fuzzy
msgid "# revocation set unions completed"
msgstr "# klartext PONG-meddelanden mottagna"
-#: src/revocation/gnunet-service-revocation.c:493
-#: src/revocation/gnunet-service-revocation.c:759
+#: src/revocation/gnunet-service-revocation.c:547
+#: src/revocation/gnunet-service-revocation.c:780
msgid "SET service crashed, terminating revocation service\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:851
+#: src/revocation/gnunet-service-revocation.c:872
#, fuzzy
msgid "Could not open revocation database file!"
msgstr "Kunde inte ansluta till gnunetd.\n"
@@ -6427,7 +6459,9 @@
msgstr ""
#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1419
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1564
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1549
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1193
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1252
#, fuzzy
msgid "Connect to CADET failed\n"
msgstr " Anslutning misslyckades (fel?)\n"
@@ -6700,7 +6734,7 @@
"\n"
"Fel vid uppladdning av fil: %s\n"
-#: src/set/gnunet-service-set.c:1531
+#: src/set/gnunet-service-set.c:1960
#, fuzzy
msgid "Could not connect to cadet service\n"
msgstr "Kunde inte ansluta till gnunetd.\n"
@@ -6826,7 +6860,7 @@
msgid "Could not save some persistent statistics\n"
msgstr "Kunde inte skapa värdnyckel!\n"
-#: src/statistics/statistics_api.c:1090
+#: src/statistics/statistics_api.c:1088
msgid ""
"Failed to receive acknowledgement from statistics service, some statistics "
"might have been lost!\n"
@@ -8473,7 +8507,7 @@
msgid "# sessions allocated"
msgstr "# sessionsnycklar accepterade"
-#: src/transport/transport_api.c:812
+#: src/transport/transport_api.c:827
#, fuzzy, c-format
msgid "Received unexpected message of type %u in %s:%u\n"
msgstr "Mottog skadat meddelande från motpart \"%s\"i %s:%d.\n"
@@ -8518,17 +8552,17 @@
msgid "Metadata `%s' failed to deserialize"
msgstr ""
-#: src/util/client.c:263 src/util/client.c:889 src/util/service.c:621
+#: src/util/client.c:264 src/util/client.c:894 src/util/service.c:621
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
-#: src/util/client.c:267 src/util/client.c:894 src/util/service.c:625
+#: src/util/client.c:268 src/util/client.c:899 src/util/service.c:625
#, fuzzy, c-format
msgid "Using `%s' instead\n"
msgstr "%s: flagga \"%s\" är tvetydig\n"
-#: src/util/client.c:362
+#: src/util/client.c:367
#, c-format
msgid ""
"Could not determine valid hostname and port for service `%s' from "
@@ -8535,17 +8569,17 @@
"configuration.\n"
msgstr ""
-#: src/util/client.c:370
+#: src/util/client.c:375
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
-#: src/util/client.c:1039
+#: src/util/client.c:1044
#, fuzzy, c-format
msgid "Could not connect to service `%s', configuration broken.\n"
msgstr "Kunde inte ansluta till gnunetd.\n"
-#: src/util/client.c:1051
+#: src/util/client.c:1056
#, fuzzy, c-format
msgid "Failure to transmit request to service `%s'\n"
msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
@@ -8627,12 +8661,12 @@
"as an environmental variable\n"
msgstr ""
-#: src/util/connection.c:424
+#: src/util/connection.c:429
#, fuzzy, c-format
msgid "Access denied to `%s'\n"
msgstr "Åtkomst nekad för \"%s\" vid %s:%d.\n"
-#: src/util/connection.c:441
+#: src/util/connection.c:446
#, c-format
msgid "Accepting connection from `%s': %p\n"
msgstr ""
@@ -8699,17 +8733,17 @@
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "libgcrypt har inte den förväntande versionen (version %s krävs).\n"
-#: src/util/crypto_rsa.c:981
+#: src/util/crypto_rsa.c:999
#, fuzzy, c-format
msgid "RSA signature verification failed at %s:%d: %s\n"
msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
-#: src/util/disk.c:1221
+#: src/util/disk.c:1226
#, fuzzy, c-format
msgid "Expected `%s' to be a directory!\n"
msgstr "\"%s\" förväntade att \"%s\" skulle vara en katalog!\n"
-#: src/util/disk.c:1444 src/util/service.c:1328
+#: src/util/disk.c:1449 src/util/service.c:1328
#, fuzzy, c-format
msgid "Cannot obtain information about user `%s': %s\n"
msgstr "Kan inte öppna konfigurationsfil \"%s\".\n"
@@ -9211,6 +9245,16 @@
msgid "signal (%d, %p) returned %d.\n"
msgstr "Anrop till \"%s\" returnerade %d.\n"
+#: src/util/socks.c:592
+#, c-format
+msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
+msgstr ""
+
+#: src/util/socks.c:605
+#, c-format
+msgid "Attempting to proxy service `%s' to invalid port %d or hostname `%s'.\n"
+msgstr ""
+
#: src/util/strings.c:146
msgid "b"
msgstr "b"
Modified: gnunet/po/vi.po
===================================================================
--- gnunet/po/vi.po 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/po/vi.po 2015-09-22 01:20:28 UTC (rev 36367)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: gnunet 0.8.0a\n"
"Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2015-07-24 15:20+0200\n"
+"POT-Creation-Date: 2015-09-06 02:18+0200\n"
"PO-Revision-Date: 2008-09-10 22:05+0930\n"
"Last-Translator: Clytie Siddall <address@hidden>\n"
"Language-Team: Vietnamese <address@hidden>\n"
@@ -358,13 +358,11 @@
"%llu\n"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3290
-#: src/ats-tests/gnunet-solver-eval.c:918
+#: src/ats/gnunet-ats-solver-eval.c:3290 src/ats-tests/gnunet-solver-eval.c:918
msgid "solver to use"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3293
-#: src/ats-tests/gnunet-solver-eval.c:921
+#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:921
#: src/ats-tests/gnunet-solver-eval.c:924
msgid "experiment to use"
msgstr ""
@@ -651,58 +649,58 @@
msgid "Print information about ATS state"
msgstr "In ra thông tin về các đồng đẳng GNUnet."
-#: src/cadet/gnunet-cadet.c:376
+#: src/cadet/gnunet-cadet.c:458
#, fuzzy, c-format
msgid "Invalid target `%s'\n"
msgstr "Đối số không hợp lệ cho « %s ».\n"
-#: src/cadet/gnunet-cadet.c:643
+#: src/cadet/gnunet-cadet.c:735
#, fuzzy, c-format
msgid "Invalid peer ID `%s'\n"
msgstr "Dữ liệu nhập không hợp lệ.\n"
-#: src/cadet/gnunet-cadet.c:686
+#: src/cadet/gnunet-cadet.c:778
#, fuzzy, c-format
msgid "Invalid tunnel owner `%s'\n"
msgstr "Địa chỉ IP định dạng sai: %s\n"
-#: src/cadet/gnunet-cadet.c:752
-msgid "You must NOT give a TARGETwhen using 'request all' options\n"
+#: src/cadet/gnunet-cadet.c:844
+msgid "You must NOT give a TARGET when using 'request all' options\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:849
+#: src/cadet/gnunet-cadet.c:941
#, fuzzy
msgid "provide information about a particular connection"
msgstr "In ra thông tin về các đồng đẳng GNUnet."
-#: src/cadet/gnunet-cadet.c:852
+#: src/cadet/gnunet-cadet.c:944
msgid "activate echo mode"
msgstr ""
-#: src/cadet/gnunet-cadet.c:855
+#: src/cadet/gnunet-cadet.c:947
msgid "dump debug information to STDERR"
msgstr ""
-#: src/cadet/gnunet-cadet.c:861
+#: src/cadet/gnunet-cadet.c:953
msgid "port to listen to (default; 0)"
msgstr ""
-#: src/cadet/gnunet-cadet.c:864
+#: src/cadet/gnunet-cadet.c:956
#, fuzzy
msgid "provide information about a patricular peer"
msgstr "In ra thông tin về các đồng đẳng GNUnet."
-#: src/cadet/gnunet-cadet.c:867
+#: src/cadet/gnunet-cadet.c:959
#, fuzzy
msgid "provide information about all peers"
msgstr "In ra thông tin về các đồng đẳng GNUnet."
-#: src/cadet/gnunet-cadet.c:870
+#: src/cadet/gnunet-cadet.c:962
#, fuzzy
msgid "provide information about a particular tunnel"
msgstr "In ra thông tin về các đồng đẳng GNUnet."
-#: src/cadet/gnunet-cadet.c:873
+#: src/cadet/gnunet-cadet.c:965
#, fuzzy
msgid "provide information about all tunnels"
msgstr "In ra thông tin về các đồng đẳng GNUnet."
@@ -1443,21 +1441,21 @@
msgid "# PAYLOAD dropped (out of order)"
msgstr "# các byte loại bỏ bởi UDP (đi ra)"
-#: src/core/gnunet-service-core_neighbours.c:177
+#: src/core/gnunet-service-core_neighbours.c:178
#, fuzzy
msgid "# sessions terminated by transport disconnect"
msgstr "# Các quảng cáo đồng đẳng bị hủy do trọng tải"
-#: src/core/gnunet-service-core_neighbours.c:193
-#: src/core/gnunet-service-core_neighbours.c:355
+#: src/core/gnunet-service-core_neighbours.c:194
+#: src/core/gnunet-service-core_neighbours.c:362
msgid "# neighbour entries allocated"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:264
+#: src/core/gnunet-service-core_neighbours.c:270
msgid "# encrypted bytes given to transport"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:438
+#: src/core/gnunet-service-core_neighbours.c:448
#, c-format
msgid "Unsupported message of type %u (%u bytes) received from peer `%s'\n"
msgstr ""
@@ -1505,7 +1503,7 @@
msgstr ""
#: src/datacache/datacache.c:119 src/datacache/datacache.c:294
-#: src/datastore/gnunet-service-datastore.c:853
+#: src/datastore/gnunet-service-datastore.c:866
#, fuzzy
msgid "# bytes stored"
msgstr "# các byte trong kho dữ liệu"
@@ -1584,40 +1582,40 @@
msgid "Failed to transmit request to drop database.\n"
msgstr ""
-#: src/datastore/datastore_api.c:394
+#: src/datastore/datastore_api.c:395
msgid "# queue entry timeouts"
msgstr ""
-#: src/datastore/datastore_api.c:443
+#: src/datastore/datastore_api.c:450
msgid "# queue overflows"
msgstr ""
-#: src/datastore/datastore_api.c:471
+#: src/datastore/datastore_api.c:478
#, fuzzy
msgid "# queue entries created"
msgstr "# các truy vấn lỗ hổng được định tuyến"
-#: src/datastore/datastore_api.c:491
+#: src/datastore/datastore_api.c:498
#, fuzzy
msgid "# Requests dropped from datastore queue"
msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
-#: src/datastore/datastore_api.c:533
+#: src/datastore/datastore_api.c:540
#, fuzzy
msgid "# datastore connections (re)created"
msgstr "# các kết nối dht"
-#: src/datastore/datastore_api.c:621
+#: src/datastore/datastore_api.c:628
#, fuzzy
msgid "# transmission request failures"
msgstr "# các sự truyền PONG bị lỗi"
-#: src/datastore/datastore_api.c:645
+#: src/datastore/datastore_api.c:652
#, fuzzy
msgid "# bytes sent to datastore"
msgstr "# các byte trong kho dữ liệu"
-#: src/datastore/datastore_api.c:787
+#: src/datastore/datastore_api.c:794
#, fuzzy
msgid "Failed to receive status response from database."
msgstr ""
@@ -1624,58 +1622,58 @@
"\n"
"Không nhận được đáp ứng từ gnunetd.\n"
-#: src/datastore/datastore_api.c:801
+#: src/datastore/datastore_api.c:808
msgid "Error reading response from datastore service"
msgstr ""
-#: src/datastore/datastore_api.c:813 src/datastore/datastore_api.c:819
+#: src/datastore/datastore_api.c:820 src/datastore/datastore_api.c:826
#, fuzzy
msgid "Invalid error message received from datastore service"
msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n"
-#: src/datastore/datastore_api.c:823
+#: src/datastore/datastore_api.c:830
#, fuzzy
msgid "# status messages received"
msgstr "# các thông báo phát hiện dht được nhận"
-#: src/datastore/datastore_api.c:893
+#: src/datastore/datastore_api.c:909
#, fuzzy
msgid "# PUT requests executed"
msgstr "# các yêu cầu dht được định tuyến"
-#: src/datastore/datastore_api.c:959
+#: src/datastore/datastore_api.c:975
#, fuzzy
msgid "# RESERVE requests executed"
msgstr "# các yêu cầu dht được định tuyến"
-#: src/datastore/datastore_api.c:1020
+#: src/datastore/datastore_api.c:1036
msgid "# RELEASE RESERVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1080
+#: src/datastore/datastore_api.c:1096
#, fuzzy
msgid "# UPDATE requests executed"
msgstr "# các yêu cầu dht được định tuyến"
-#: src/datastore/datastore_api.c:1144
+#: src/datastore/datastore_api.c:1160
#, fuzzy
msgid "# REMOVE requests executed"
msgstr "# các yêu cầu dht được định tuyến"
-#: src/datastore/datastore_api.c:1248
+#: src/datastore/datastore_api.c:1264
#, fuzzy
msgid "# Results received"
msgstr "# các kết quả dht được nhận"
-#: src/datastore/datastore_api.c:1315
+#: src/datastore/datastore_api.c:1331
msgid "# GET REPLICATION requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1378
+#: src/datastore/datastore_api.c:1394
msgid "# GET ZERO ANONYMITY requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1447
+#: src/datastore/datastore_api.c:1463
#, fuzzy
msgid "# GET requests executed"
msgstr "# các yêu cầu dht được định tuyến"
@@ -1701,30 +1699,30 @@
msgid "Manipulate GNUnet datastore"
msgstr "cập nhật một giá trị trong tập tin cấu hình"
-#: src/datastore/gnunet-service-datastore.c:365
+#: src/datastore/gnunet-service-datastore.c:372
#, fuzzy
msgid "# bytes expired"
msgstr "# các byte được nhận"
-#: src/datastore/gnunet-service-datastore.c:439
+#: src/datastore/gnunet-service-datastore.c:447
msgid "# bytes purged (low-priority)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:497
+#: src/datastore/gnunet-service-datastore.c:505
#: src/gns/gnunet-gns-helper-service-w32.c:223
msgid "Transmission to client failed!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:528
+#: src/datastore/gnunet-service-datastore.c:536
#: src/gns/gnunet-gns-helper-service-w32.c:262
msgid "Shutdown in progress, aborting transmission.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:643
+#: src/datastore/gnunet-service-datastore.c:652
msgid "# results found"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:686
+#: src/datastore/gnunet-service-datastore.c:696
#, c-format
msgid ""
"Insufficient space (%llu bytes are available) to satisfy `%s' request for "
@@ -1731,7 +1729,7 @@
"%llu bytes\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:697
+#: src/datastore/gnunet-service-datastore.c:707
#, c-format
msgid ""
"The requested amount (%llu bytes) is larger than the cache size (%llu "
@@ -1738,135 +1736,135 @@
"bytes)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:701
+#: src/datastore/gnunet-service-datastore.c:711
msgid ""
"Insufficient space to satisfy request and requested amount is larger than "
"cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:707
+#: src/datastore/gnunet-service-datastore.c:717
msgid "Insufficient space to satisfy request"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:712
-#: src/datastore/gnunet-service-datastore.c:767
-#: src/datastore/gnunet-service-datastore.c:1019
-#: src/datastore/gnunet-service-datastore.c:1597
+#: src/datastore/gnunet-service-datastore.c:723
+#: src/datastore/gnunet-service-datastore.c:779
+#: src/datastore/gnunet-service-datastore.c:1035
+#: src/datastore/gnunet-service-datastore.c:1630
msgid "# reserved"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:780
+#: src/datastore/gnunet-service-datastore.c:793
msgid "Could not find matching reservation"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:865
+#: src/datastore/gnunet-service-datastore.c:879
#, c-format
msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1071
+#: src/datastore/gnunet-service-datastore.c:1088
#, fuzzy
msgid "# GET requests received"
msgstr "# các yêu cầu get (lấy) dht được nhận"
-#: src/datastore/gnunet-service-datastore.c:1083
+#: src/datastore/gnunet-service-datastore.c:1101
#, fuzzy
msgid "# requests filtered by bloomfilter"
msgstr "# các yêu cầu được lọc theo bộ lọc bloom"
-#: src/datastore/gnunet-service-datastore.c:1121
+#: src/datastore/gnunet-service-datastore.c:1141
#, fuzzy
msgid "# UPDATE requests received"
msgstr "# các yêu cầu get (lấy) dht được nhận"
-#: src/datastore/gnunet-service-datastore.c:1149
+#: src/datastore/gnunet-service-datastore.c:1170
#, fuzzy
msgid "# GET REPLICATION requests received"
msgstr "# các yêu cầu get (lấy) dht được nhận"
-#: src/datastore/gnunet-service-datastore.c:1182
+#: src/datastore/gnunet-service-datastore.c:1204
#, fuzzy
msgid "# GET ZERO ANONYMITY requests received"
msgstr "# các yêu cầu get (lấy) dht được nhận"
-#: src/datastore/gnunet-service-datastore.c:1207
+#: src/datastore/gnunet-service-datastore.c:1233
msgid "Content not found"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1215
+#: src/datastore/gnunet-service-datastore.c:1244
msgid "# bytes removed (explicit request)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1247
+#: src/datastore/gnunet-service-datastore.c:1277
#, fuzzy
msgid "# REMOVE requests received"
msgstr "# các yêu cầu get (lấy) dht được nhận"
-#: src/datastore/gnunet-service-datastore.c:1291
+#: src/datastore/gnunet-service-datastore.c:1321
#, c-format
msgid ""
"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1296
+#: src/datastore/gnunet-service-datastore.c:1326
#, c-format
msgid "New payload: %lld\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1349
+#: src/datastore/gnunet-service-datastore.c:1379
#, c-format
msgid "Loading `%s' datastore plugin\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1360
+#: src/datastore/gnunet-service-datastore.c:1390
#, fuzzy, c-format
msgid "Failed to load datastore plugin for `%s'\n"
msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
-#: src/datastore/gnunet-service-datastore.c:1429
-#: src/datastore/gnunet-service-datastore.c:1490
+#: src/datastore/gnunet-service-datastore.c:1459
+#: src/datastore/gnunet-service-datastore.c:1522
msgid "Bloomfilter construction complete.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1477
+#: src/datastore/gnunet-service-datastore.c:1509
msgid "Rebuilding bloomfilter. Please be patient.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1487
+#: src/datastore/gnunet-service-datastore.c:1519
msgid "Plugin does not support get_keys function. Please fix!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1625
-#: src/datastore/gnunet-service-datastore.c:1636
+#: src/datastore/gnunet-service-datastore.c:1661
+#: src/datastore/gnunet-service-datastore.c:1673
#, c-format
msgid "No `%s' specified for `%s' in configuration!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1630
+#: src/datastore/gnunet-service-datastore.c:1667
#, fuzzy, c-format
msgid "# bytes used in file-sharing datastore `%s'"
msgstr "# các byte được phép trong kho dữ liệu"
-#: src/datastore/gnunet-service-datastore.c:1641
+#: src/datastore/gnunet-service-datastore.c:1679
msgid "# quota"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1643
+#: src/datastore/gnunet-service-datastore.c:1681
msgid "# cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1656
+#: src/datastore/gnunet-service-datastore.c:1696
#, c-format
msgid "Could not use specified filename `%s' for bloomfilter.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1674
-#: src/datastore/gnunet-service-datastore.c:1690
+#: src/datastore/gnunet-service-datastore.c:1714
+#: src/datastore/gnunet-service-datastore.c:1730
#, fuzzy, c-format
msgid "Failed to remove bogus bloomfilter file `%s'\n"
msgstr "Không thể lưu tập tin cấu hình « %s »:"
-#: src/datastore/gnunet-service-datastore.c:1720
+#: src/datastore/gnunet-service-datastore.c:1760
#, fuzzy
msgid "Failed to initialize bloomfilter.\n"
msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
@@ -1929,7 +1927,7 @@
#: src/namecache/plugin_namecache_sqlite.c:193
#: src/namestore/plugin_namestore_sqlite.c:204
#: src/peerstore/plugin_peerstore_sqlite.c:479
-#: src/psycstore/plugin_psycstore_sqlite.c:324
+#: src/psycstore/plugin_psycstore_sqlite.c:325
#, c-format
msgid "Unable to initialize SQLite: %s.\n"
msgstr "Không thể sơ khởi SQLite: %s.\n"
@@ -2008,9 +2006,9 @@
msgstr ""
#: src/dht/gnunet-dht-get.c:204 src/dht/gnunet-dht-monitor.c:271
-#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:755
-#: src/fs/gnunet-download.c:328 src/fs/gnunet-publish.c:961
-#: src/fs/gnunet-search.c:307 src/fs/gnunet-unindex.c:168
+#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:794
+#: src/fs/gnunet-download.c:327 src/fs/gnunet-publish.c:954
+#: src/fs/gnunet-search.c:306 src/fs/gnunet-unindex.c:167
#: src/nse/gnunet-nse-profiler.c:873
msgid "be verbose (print progress information)"
msgstr ""
@@ -2027,8 +2025,7 @@
msgid "Prints all packets that go through the DHT."
msgstr ""
-#: src/dht/gnunet_dht_profiler.c:1393
-#: src/testbed/gnunet-testbed-profiler.c:267
+#: src/dht/gnunet_dht_profiler.c:1393 src/testbed/gnunet-testbed-profiler.c:267
#, fuzzy, c-format
msgid "Exiting as the number of peers is %u\n"
msgstr "tăng sổ tối đa các kết nối TCP/IP"
@@ -2250,8 +2247,7 @@
msgid "# GET requests given to datacache"
msgstr "# các yêu cầu get (lấy) dht được nhận"
-#: src/dht/gnunet-service-dht_hello.c:84
-#: src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
#, fuzzy
msgid "# HELLOs obtained from peerinfo"
msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n"
@@ -3134,73 +3130,73 @@
msgid "Failed to connect to datastore."
msgstr "Không kết nối được đến trình nền gnunetd."
-#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:443
+#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:441
#, fuzzy, c-format
msgid "Publishing failed: %s"
msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
-#: src/fs/fs_publish.c:709 src/fs/fs_publish.c:726 src/fs/fs_publish.c:765
-#: src/fs/fs_publish.c:786 src/fs/fs_publish.c:810 src/fs/fs_publish.c:1060
+#: src/fs/fs_publish.c:707 src/fs/fs_publish.c:724 src/fs/fs_publish.c:763
+#: src/fs/fs_publish.c:784 src/fs/fs_publish.c:808 src/fs/fs_publish.c:1058
#, fuzzy, c-format
msgid "Can not index file `%s': %s. Will try to insert instead.\n"
msgstr "Lỗi đánh chỉ mục tập tin « %s ». Đề nghị: thử chèn tập tin.\n"
-#: src/fs/fs_publish.c:711
+#: src/fs/fs_publish.c:709
msgid "timeout on index-start request to `fs' service"
msgstr ""
-#: src/fs/fs_publish.c:723
+#: src/fs/fs_publish.c:721
#, fuzzy
msgid "unknown error"
msgstr "Lỗi không rõ"
-#: src/fs/fs_publish.c:767
+#: src/fs/fs_publish.c:765
msgid "failed to compute hash"
msgstr ""
-#: src/fs/fs_publish.c:787
+#: src/fs/fs_publish.c:785
#, fuzzy
msgid "filename too long"
msgstr "tên tập tin"
-#: src/fs/fs_publish.c:812
+#: src/fs/fs_publish.c:810
msgid "could not connect to `fs' service"
msgstr ""
-#: src/fs/fs_publish.c:835
+#: src/fs/fs_publish.c:833
#, fuzzy, c-format
msgid "Failed to get file identifiers for `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/fs/fs_publish.c:899 src/fs/fs_publish.c:940
+#: src/fs/fs_publish.c:897 src/fs/fs_publish.c:938
msgid "Can not create LOC URI. Will continue with CHK instead.\n"
msgstr ""
-#: src/fs/fs_publish.c:1014
+#: src/fs/fs_publish.c:1012
#, fuzzy, c-format
msgid "Recursive upload failed at `%s': %s"
msgstr "%s bị lỗi tại %s:%d: « %s »\n"
-#: src/fs/fs_publish.c:1022
+#: src/fs/fs_publish.c:1020
#, fuzzy, c-format
msgid "Recursive upload failed: %s"
msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
-#: src/fs/fs_publish.c:1062
+#: src/fs/fs_publish.c:1060
msgid "needs to be an actual file"
msgstr ""
-#: src/fs/fs_publish.c:1301
+#: src/fs/fs_publish.c:1299
#, fuzzy, c-format
msgid "Datastore failure: %s"
msgstr "Kho dữ liệu đầy.\n"
-#: src/fs/fs_publish.c:1392
+#: src/fs/fs_publish.c:1390
#, c-format
msgid "Reserving space for %u entries and %llu bytes for publication\n"
msgstr ""
-#: src/fs/fs_publish_ksk.c:219
+#: src/fs/fs_publish_ksk.c:224
#, fuzzy
msgid "Could not connect to datastore."
msgstr "« %s »: Không thể kết nối.\n"
@@ -3378,48 +3374,48 @@
msgid "Failed to save state to file %s\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/fs/gnunet-auto-share.c:402
+#: src/fs/gnunet-auto-share.c:415
#, c-format
msgid "Publication of `%s' done\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:490
+#: src/fs/gnunet-auto-share.c:504
#, fuzzy, c-format
msgid "Publishing `%s'\n"
msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
-#: src/fs/gnunet-auto-share.c:499
+#: src/fs/gnunet-auto-share.c:514
#, fuzzy, c-format
msgid "Failed to run `%s'\n"
msgstr "Lỗi bắt đầu thu thập.\n"
-#: src/fs/gnunet-auto-share.c:688
+#: src/fs/gnunet-auto-share.c:725
#, fuzzy, c-format
msgid ""
"You must specify one and only one directory name for automatic publication.\n"
msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
-#: src/fs/gnunet-auto-share.c:739 src/fs/gnunet-publish.c:908
+#: src/fs/gnunet-auto-share.c:778 src/fs/gnunet-publish.c:901
msgid "set the desired LEVEL of sender-anonymity"
msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người gửi"
-#: src/fs/gnunet-auto-share.c:743 src/fs/gnunet-publish.c:912
+#: src/fs/gnunet-auto-share.c:782 src/fs/gnunet-publish.c:905
msgid "disable adding the creation time to the metadata of the uploaded file"
msgstr "tắt thêm giờ tạo vào siêu dữ liệu của tập tin đã tải lên"
-#: src/fs/gnunet-auto-share.c:746 src/fs/gnunet-publish.c:915
+#: src/fs/gnunet-auto-share.c:785 src/fs/gnunet-publish.c:908
msgid "do not use libextractor to add keywords or metadata"
msgstr ""
-#: src/fs/gnunet-auto-share.c:749 src/fs/gnunet-publish.c:939
+#: src/fs/gnunet-auto-share.c:788 src/fs/gnunet-publish.c:932
msgid "specify the priority of the content"
msgstr "xác định mức ưu tiên của nội dung"
-#: src/fs/gnunet-auto-share.c:752 src/fs/gnunet-publish.c:946
+#: src/fs/gnunet-auto-share.c:791 src/fs/gnunet-publish.c:939
msgid "set the desired replication LEVEL"
msgstr ""
-#: src/fs/gnunet-auto-share.c:772
+#: src/fs/gnunet-auto-share.c:815
#, fuzzy
msgid "Automatically publish files from a directory on GNUnet"
msgstr "Tự động chia sẻ một thư mục."
@@ -3490,68 +3486,68 @@
msgid "Downloading `%s' done (%s/s).\n"
msgstr "Tiến trình tải lên « %s » đã tiếp tục lại.\n"
-#: src/fs/gnunet-download.c:209 src/fs/gnunet-publish.c:319
-#: src/fs/gnunet-search.c:206 src/fs/gnunet-unindex.c:108
+#: src/fs/gnunet-download.c:208 src/fs/gnunet-publish.c:297
+#: src/fs/gnunet-search.c:205 src/fs/gnunet-unindex.c:107
#, fuzzy, c-format
msgid "Unexpected status: %d\n"
msgstr "Gặp sự kiện bất thường: %d\n"
-#: src/fs/gnunet-download.c:234
+#: src/fs/gnunet-download.c:233
#, fuzzy
msgid "You need to specify a URI argument.\n"
msgstr "KHÔNG cho phép ghi rõ cả hai địa chỉ URI và tên tập tin.\n"
-#: src/fs/gnunet-download.c:240 src/fs/gnunet-publish.c:734
+#: src/fs/gnunet-download.c:239 src/fs/gnunet-publish.c:728
#, fuzzy, c-format
msgid "Failed to parse URI: %s\n"
msgstr "Tập tin « %s » có URI: %s\n"
-#: src/fs/gnunet-download.c:247
+#: src/fs/gnunet-download.c:246
msgid "Only CHK or LOC URIs supported.\n"
msgstr ""
-#: src/fs/gnunet-download.c:254
+#: src/fs/gnunet-download.c:253
msgid "Target filename must be specified.\n"
msgstr ""
-#: src/fs/gnunet-download.c:268 src/fs/gnunet-publish.c:878
-#: src/fs/gnunet-search.c:256 src/fs/gnunet-unindex.c:140
+#: src/fs/gnunet-download.c:267 src/fs/gnunet-publish.c:872
+#: src/fs/gnunet-search.c:255 src/fs/gnunet-unindex.c:139
#, fuzzy, c-format
msgid "Could not initialize `%s' subsystem.\n"
msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
-#: src/fs/gnunet-download.c:305 src/fs/gnunet-search.c:295
+#: src/fs/gnunet-download.c:304 src/fs/gnunet-search.c:294
#, fuzzy
msgid "set the desired LEVEL of receiver-anonymity"
msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người gửi"
-#: src/fs/gnunet-download.c:308
+#: src/fs/gnunet-download.c:307
msgid "delete incomplete downloads (when aborted with CTRL-C)"
msgstr "xoá việc tải về không hoàn thành (khi hủy bở dùng CTRL-C)"
-#: src/fs/gnunet-download.c:311 src/fs/gnunet-search.c:298
+#: src/fs/gnunet-download.c:310 src/fs/gnunet-search.c:297
msgid "only search the local peer (no P2P network search)"
msgstr ""
-#: src/fs/gnunet-download.c:314
+#: src/fs/gnunet-download.c:313
msgid "write the file to FILENAME"
msgstr "ghi tập tin vào TÊN_TẬP_TIN"
-#: src/fs/gnunet-download.c:318
+#: src/fs/gnunet-download.c:317
#, fuzzy
msgid "set the maximum number of parallel downloads that is allowed"
msgstr "đặt số tối đa các việc tải xuống đồng thời được phép"
-#: src/fs/gnunet-download.c:322
+#: src/fs/gnunet-download.c:321
#, fuzzy
msgid "set the maximum number of parallel requests for blocks that is allowed"
msgstr "đặt số tối đa các việc tải xuống đồng thời được phép"
-#: src/fs/gnunet-download.c:325
+#: src/fs/gnunet-download.c:324
msgid "download a GNUnet directory recursively"
msgstr "tải xuống đệ quy một thư mục GNUnet"
-#: src/fs/gnunet-download.c:339
+#: src/fs/gnunet-download.c:338
msgid ""
"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
"chk/...)"
@@ -3582,136 +3578,136 @@
msgid "run a testbed to measure file-sharing performance"
msgstr ""
-#: src/fs/gnunet-publish.c:238 src/fs/gnunet-publish.c:250
+#: src/fs/gnunet-publish.c:221 src/fs/gnunet-publish.c:233
#, c-format
msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
msgstr ""
-#: src/fs/gnunet-publish.c:257
+#: src/fs/gnunet-publish.c:241
#, fuzzy, c-format
msgid "Error publishing: %s.\n"
msgstr "Gặp lỗi khi tải xuống: %s\n"
-#: src/fs/gnunet-publish.c:268
+#: src/fs/gnunet-publish.c:248
#, c-format
msgid "Publishing `%s' done.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:273
+#: src/fs/gnunet-publish.c:253
#, fuzzy, c-format
msgid "URI is `%s'.\n"
msgstr "Tôi là đồng đẳng « %s ».\n"
-#: src/fs/gnunet-publish.c:281
+#: src/fs/gnunet-publish.c:261
#, fuzzy, c-format
msgid "Namespace URI is `%s'.\n"
msgstr "Tôi là đồng đẳng « %s ».\n"
-#: src/fs/gnunet-publish.c:299
+#: src/fs/gnunet-publish.c:277
#, fuzzy
msgid "Starting cleanup after abort\n"
msgstr "Hoàn thành khởi chạy « %s ».\n"
-#: src/fs/gnunet-publish.c:306
+#: src/fs/gnunet-publish.c:284
#, fuzzy
msgid "Cleanup after abort completed.\n"
msgstr "Hoàn thành khởi chạy « %s ».\n"
-#: src/fs/gnunet-publish.c:312
+#: src/fs/gnunet-publish.c:290
#, fuzzy
msgid "Cleanup after abort failed.\n"
msgstr "Hoàn thành khởi chạy « %s ».\n"
-#: src/fs/gnunet-publish.c:447
+#: src/fs/gnunet-publish.c:432
#, fuzzy, c-format
msgid "Meta data for file `%s' (%s)\n"
msgstr "Đang cập nhật dữ liệu cho mô-đun « %s »\n"
-#: src/fs/gnunet-publish.c:449
+#: src/fs/gnunet-publish.c:437
#, fuzzy, c-format
msgid "Keywords for file `%s' (%s)\n"
msgstr "Từ khoá cho tập tin « %s »:\n"
-#: src/fs/gnunet-publish.c:594
+#: src/fs/gnunet-publish.c:591
#, fuzzy
msgid "Could not publish\n"
msgstr "Không thể truy cập đến « %s »: %s\n"
-#: src/fs/gnunet-publish.c:619
+#: src/fs/gnunet-publish.c:616
#, fuzzy
msgid "Could not start publishing.\n"
msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
-#: src/fs/gnunet-publish.c:653
+#: src/fs/gnunet-publish.c:650
#, fuzzy, c-format
msgid "Scanning directory `%s'.\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/fs/gnunet-publish.c:657
+#: src/fs/gnunet-publish.c:654
#, fuzzy, c-format
msgid "Scanning file `%s'.\n"
msgstr "Đang bắt đầu tài về « %s »\n"
-#: src/fs/gnunet-publish.c:663
+#: src/fs/gnunet-publish.c:660
#, c-format
msgid "There was trouble processing file `%s', skipping it.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:670
+#: src/fs/gnunet-publish.c:667
msgid "Preprocessing complete.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:675
+#: src/fs/gnunet-publish.c:672
#, fuzzy, c-format
msgid "Extracting meta data from file `%s' complete.\n"
msgstr "Đang cập nhật dữ liệu cho mô-đun « %s »\n"
-#: src/fs/gnunet-publish.c:682
+#: src/fs/gnunet-publish.c:679
msgid "Meta data extraction has finished.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:691
+#: src/fs/gnunet-publish.c:688
#, fuzzy
msgid "Internal error scanning directory.\n"
msgstr "=\tLỗi đọc thư mục.\n"
-#: src/fs/gnunet-publish.c:723
+#: src/fs/gnunet-publish.c:716
#, fuzzy, c-format
msgid "Selected pseudonym `%s' unknown\n"
msgstr "Không gian tên « %s » có đánh giá %d.\n"
-#: src/fs/gnunet-publish.c:755
+#: src/fs/gnunet-publish.c:749
#, fuzzy, c-format
msgid "Failed to access `%s': %s\n"
msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
-#: src/fs/gnunet-publish.c:769
+#: src/fs/gnunet-publish.c:763
msgid ""
"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
"installed?\n"
msgstr ""
-#: src/fs/gnunet-publish.c:825
+#: src/fs/gnunet-publish.c:819
#, c-format
msgid "Cannot extract metadata from a URI!\n"
msgstr "Không thể trích siêu dữ liệu ra một địa chỉ URI.\n"
-#: src/fs/gnunet-publish.c:832
+#: src/fs/gnunet-publish.c:826
#, c-format
msgid "You must specify one and only one filename for insertion.\n"
msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
-#: src/fs/gnunet-publish.c:838
+#: src/fs/gnunet-publish.c:832
#, c-format
msgid "You must NOT specify an URI and a filename.\n"
msgstr "KHÔNG cho phép ghi rõ cả hai địa chỉ URI và tên tập tin.\n"
-#: src/fs/gnunet-publish.c:846 src/vpn/gnunet-vpn.c:209
+#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:209
#, c-format
msgid "Option `%s' is required when using option `%s'.\n"
msgstr "Tùy chọn « %s » cần thiết khi dùng tùy chọn « %s ».\n"
-#: src/fs/gnunet-publish.c:857 src/fs/gnunet-publish.c:865
+#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
#: src/transport/gnunet-transport.c:1928 src/transport/gnunet-transport.c:1958
#: src/transport/gnunet-transport.c:1989
#, c-format
@@ -3718,7 +3714,7 @@
msgid "Option `%s' makes no sense without option `%s'.\n"
msgstr "Tùy chọn « %s » không có nghĩa khi không có tùy chọn « %s ».\n"
-#: src/fs/gnunet-publish.c:919
+#: src/fs/gnunet-publish.c:912
msgid ""
"print list of extracted keywords that would be used, but do not perform "
"upload"
@@ -3726,7 +3722,7 @@
"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 "
"tải lên"
-#: src/fs/gnunet-publish.c:923
+#: src/fs/gnunet-publish.c:916
msgid ""
"add an additional keyword for the top-level file or directory (this option "
"can be specified multiple times)"
@@ -3734,11 +3730,11 @@
"thêm một từ khoá bổ sung cho tập tin hoặc thư mục ở cấp đầu (có thể chỉ ra "
"tùy chọn này nhiều lần)"
-#: src/fs/gnunet-publish.c:927
+#: src/fs/gnunet-publish.c:920
msgid "set the meta-data for the given TYPE to the given VALUE"
msgstr "đặt siêu dữ liệu cho KIỂU đưa ra thành GIÁ_TRỊ chỉ ra"
-#: src/fs/gnunet-publish.c:930
+#: src/fs/gnunet-publish.c:923
msgid ""
"do not index, perform full insertion (stores entire file in encrypted form "
"in GNUnet database)"
@@ -3746,7 +3742,7 @@
"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 "
"mã hóa trong cơ sở dữ liệu GNUnet)"
-#: src/fs/gnunet-publish.c:935
+#: src/fs/gnunet-publish.c:928
msgid ""
"specify ID of an updated version to be published in the future (for "
"namespace insertions only)"
@@ -3754,12 +3750,12 @@
"chỉ ra mã số của một phiên bản đã cập nhật để công bố trong tương lai (chỉ "
"cho sự chèn không gian tên)"
-#: src/fs/gnunet-publish.c:943
+#: src/fs/gnunet-publish.c:936
msgid "publish the files under the pseudonym NAME (place file into namespace)"
msgstr ""
"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)"
-#: src/fs/gnunet-publish.c:949
+#: src/fs/gnunet-publish.c:942
#, fuzzy
msgid ""
"only simulate the process but do not do any actual publishing (useful to "
@@ -3767,13 +3763,13 @@
msgstr ""
"chỉ mô phỏng tiến trình, không thật công bố (có ích để tính địa chỉ URI)"
-#: src/fs/gnunet-publish.c:953
+#: src/fs/gnunet-publish.c:946
msgid ""
"set the ID of this version of the publication (for namespace insertions only)"
msgstr ""
"đặt mã số của phiên bản này của sự công bố (chỉ cho chèn không gian tên)"
-#: src/fs/gnunet-publish.c:957
+#: src/fs/gnunet-publish.c:950
msgid ""
"URI to be published (can be used instead of passing a file to add keywords "
"to the file with the respective URI)"
@@ -3781,7 +3777,7 @@
"Đị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 "
"từ khoá vào tập tin có địa chỉ URI tương ứng)"
-#: src/fs/gnunet-publish.c:973
+#: src/fs/gnunet-publish.c:966
msgid "Publish a file or directory on GNUnet"
msgstr ""
@@ -3795,29 +3791,29 @@
msgid "Error searching: %s.\n"
msgstr "Gặp lỗi khi tải xuống: %s\n"
-#: src/fs/gnunet-search.c:246
+#: src/fs/gnunet-search.c:245
#, fuzzy
msgid "Could not create keyword URI from arguments.\n"
msgstr "Không thể tạo miền tên.\n"
-#: src/fs/gnunet-search.c:270
+#: src/fs/gnunet-search.c:269
#, fuzzy
msgid "Could not start searching.\n"
msgstr "Không thể tạo miền tên.\n"
-#: src/fs/gnunet-search.c:301
+#: src/fs/gnunet-search.c:300
msgid "write search results to file starting with PREFIX"
msgstr ""
-#: src/fs/gnunet-search.c:304
+#: src/fs/gnunet-search.c:303
msgid "automatically terminate search after DELAY"
msgstr ""
-#: src/fs/gnunet-search.c:311
+#: src/fs/gnunet-search.c:310
msgid "automatically terminate search after VALUE results are found"
msgstr ""
-#: src/fs/gnunet-search.c:322
+#: src/fs/gnunet-search.c:321
#, fuzzy
msgid "Search GNUnet for files that were published on GNUnet"
msgstr "Không hiển thị kết quả tìm kiếm cho tập tin được chúng ta tải lên"
@@ -4217,17 +4213,17 @@
msgid "Unindexing done.\n"
msgstr "Bỏ chỉ mục tập tin."
-#: src/fs/gnunet-unindex.c:130
+#: src/fs/gnunet-unindex.c:129
#, fuzzy, c-format
msgid "You must specify one and only one filename for unindexing.\n"
msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
-#: src/fs/gnunet-unindex.c:147
+#: src/fs/gnunet-unindex.c:146
#, fuzzy
msgid "Could not start unindex operation.\n"
msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
-#: src/fs/gnunet-unindex.c:179
+#: src/fs/gnunet-unindex.c:178
msgid "Unindex a file that was previously indexed with gnunet-publish."
msgstr ""
@@ -4635,68 +4631,68 @@
msgid "GNS REST API initialized\n"
msgstr "Lỗi sơ khởi lõi.\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:291
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
#, fuzzy, c-format
msgid "Unable to parse IPv4 address `%s'\n"
msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:312
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
#, fuzzy, c-format
msgid "Failed to serialize NS record with value `%s'\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:334
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
#, fuzzy, c-format
msgid "Failed to serialize CNAME record with value `%s'\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:418
+#: src/gnsrecord/plugin_gnsrecord_dns.c:486
#, fuzzy, c-format
msgid "Failed to serialize CERT record with %u bytes\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:455
+#: src/gnsrecord/plugin_gnsrecord_dns.c:522
#, fuzzy, c-format
msgid "Unable to parse SOA record `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:474
+#: src/gnsrecord/plugin_gnsrecord_dns.c:541
#, fuzzy, c-format
msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:497
+#: src/gnsrecord/plugin_gnsrecord_dns.c:564
#, fuzzy, c-format
msgid "Failed to serialize PTR record with value `%s'\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:520
+#: src/gnsrecord/plugin_gnsrecord_dns.c:587
#, fuzzy, c-format
msgid "Unable to parse MX record `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:535
+#: src/gnsrecord/plugin_gnsrecord_dns.c:602
#, fuzzy, c-format
msgid "Failed to serialize MX record with hostname `%s'\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:562
+#: src/gnsrecord/plugin_gnsrecord_dns.c:629
#, fuzzy, c-format
msgid "Unable to parse SRV record `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:578
+#: src/gnsrecord/plugin_gnsrecord_dns.c:645
#, fuzzy, c-format
msgid "Failed to serialize SRV record with target `%s'\n"
msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:595
+#: src/gnsrecord/plugin_gnsrecord_dns.c:662
#, fuzzy, c-format
msgid "Unable to parse IPv6 address `%s'\n"
msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:619
-#: src/gnsrecord/plugin_gnsrecord_dns.c:635
+#: src/gnsrecord/plugin_gnsrecord_dns.c:686
+#: src/gnsrecord/plugin_gnsrecord_dns.c:702
#, fuzzy, c-format
msgid "Unable to parse TLSA record string `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
@@ -5227,6 +5223,31 @@
msgid "Namecache failed to cache block"
msgstr ""
+#: src/namecache/plugin_namecache_flat.c:119
+#: src/namecache/plugin_namecache_flat.c:236
+#: src/namestore/plugin_namestore_flat.c:184
+#: src/namestore/plugin_namestore_flat.c:352
+#, fuzzy, c-format
+msgid "Unable to initialize file: %s.\n"
+msgstr "Không thể sơ khởi SQLite: %s.\n"
+
+#: src/namecache/plugin_namecache_flat.c:130
+#: src/namestore/plugin_namestore_flat.c:195
+#, fuzzy, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr "Không thể tạo miền tên.\n"
+
+#: src/namecache/plugin_namecache_flat.c:142
+#: src/namestore/plugin_namestore_flat.c:207
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "Không thể tạo miền tên.\n"
+
+#: src/namecache/plugin_namecache_flat.c:391
+#, fuzzy
+msgid "flat plugin running\n"
+msgstr "kho dữ liệu sqlite"
+
#: src/namecache/plugin_namecache_postgres.c:89
#: src/namestore/plugin_namestore_postgres.c:96
#, fuzzy
@@ -5325,8 +5346,7 @@
msgid "Invalid public key for reverse lookup `%s'\n"
msgstr "Đối số không hợp lệ cho « %s ».\n"
-#: src/namestore/gnunet-namestore.c:868
-#: src/peerinfo-tool/gnunet-peerinfo.c:817
+#: src/namestore/gnunet-namestore.c:868 src/peerinfo-tool/gnunet-peerinfo.c:817
#, fuzzy, c-format
msgid "Invalid URI `%s'\n"
msgstr "Dữ liệu nhập không hợp lệ.\n"
@@ -5487,11 +5507,20 @@
msgid "Namestore failed to store record\n"
msgstr ""
+#: src/namestore/plugin_namestore_flat.c:650
+#, fuzzy
+msgid "flat file database running\n"
+msgstr "kho dữ liệu sqlite"
+
#: src/namestore/plugin_rest_namestore.c:1023
#, fuzzy
msgid "Namestore REST API initialized\n"
msgstr "Lỗi sơ khởi lõi.\n"
+#: src/nat/gnunet-nat.c:160
+msgid "GNUnet NAT traversal autoconfigure daemon"
+msgstr ""
+
#: src/nat/gnunet-nat-server.c:279
#, c-format
msgid "Please pass valid port number as the first argument! (got `%s')\n"
@@ -5501,54 +5530,59 @@
msgid "GNUnet NAT traversal test helper daemon"
msgstr ""
-#: src/nat/nat_auto.c:179
+#: src/nat/nat_auto.c:394
msgid "NAT traversal with ICMP Server succeeded.\n"
msgstr ""
-#: src/nat/nat_auto.c:180
+#: src/nat/nat_auto.c:395
msgid "NAT traversal with ICMP Server failed.\n"
msgstr ""
-#: src/nat/nat_auto.c:201
+#: src/nat/nat_auto.c:416
#, fuzzy
msgid "Testing connection reversal with ICMP server.\n"
msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
-#: src/nat/nat_auto.c:249
+#: src/nat/nat_auto.c:448
#, c-format
msgid "Detected external IP `%s'\n"
msgstr ""
-#: src/nat/nat_auto.c:327
+#: src/nat/nat_auto.c:579
msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
msgstr ""
-#: src/nat/nat_auto.c:343
+#: src/nat/nat_auto.c:597
#, fuzzy, c-format
msgid "Detected internal network address `%s'.\n"
msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n"
-#: src/nat/nat_auto.c:406
+#: src/nat/nat_auto.c:669 src/nat/nat_test.c:364
+#, fuzzy
+msgid "Failed to connect to `gnunet-nat-server'\n"
+msgstr "Lỗi kết nối đến gnunetd.\n"
+
+#: src/nat/nat_auto.c:715
msgid "upnpc found, enabling its use\n"
msgstr ""
-#: src/nat/nat_auto.c:407
+#: src/nat/nat_auto.c:716
msgid "upnpc not found\n"
msgstr ""
-#: src/nat/nat_auto.c:437
+#: src/nat/nat_auto.c:748
msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
msgstr ""
-#: src/nat/nat_auto.c:445 src/nat/nat_auto.c:490
+#: src/nat/nat_auto.c:756 src/nat/nat_auto.c:804
msgid "test_icmp_server not possible, as we are not behind NAT\n"
msgstr ""
-#: src/nat/nat_auto.c:453 src/nat/nat_auto.c:498
+#: src/nat/nat_auto.c:764 src/nat/nat_auto.c:812
msgid "No working gnunet-helper-nat-server found\n"
msgstr ""
-#: src/nat/nat_auto.c:483
+#: src/nat/nat_auto.c:797
msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
msgstr ""
@@ -5562,26 +5596,26 @@
msgid "Failed to start %s\n"
msgstr "Lỗi bắt đầu thu thập.\n"
-#: src/nat/nat.c:1286
+#: src/nat/nat.c:1305
msgid "Error while running upnp client:\n"
msgstr ""
-#: src/nat/nat.c:1356
+#: src/nat/nat.c:1375
#, fuzzy, c-format
msgid "Failed to run upnp client for port %u\n"
msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
-#: src/nat/nat.c:1498
+#: src/nat/nat.c:1517
msgid "malformed"
msgstr ""
-#: src/nat/nat.c:1552
+#: src/nat/nat.c:1571
msgid ""
"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
"disabling UPnP \n"
msgstr ""
-#: src/nat/nat.c:1680 src/nat/nat.c:1692
+#: src/nat/nat.c:1700 src/nat/nat.c:1712
#, c-format
msgid ""
"Configuration requires `%s', but binary is not installed properly (SUID bit "
@@ -5588,91 +5622,91 @@
"not set). Option disabled.\n"
msgstr ""
-#: src/nat/nat.c:1830
+#: src/nat/nat.c:1855
msgid "Internal IP address not known, cannot use ICMP NAT traversal method\n"
msgstr ""
-#: src/nat/nat.c:1846
+#: src/nat/nat.c:1871
#, c-format
msgid "Running gnunet-helper-nat-client %s %s %u\n"
msgstr ""
-#: src/nat/nat.c:1931
+#: src/nat/nat.c:1958
msgid "Operation Successful"
msgstr ""
-#: src/nat/nat.c:1933
+#: src/nat/nat.c:1960
msgid "Internal Failure (IPC, ...)"
msgstr ""
-#: src/nat/nat.c:1935
+#: src/nat/nat.c:1962
msgid "Failure in network subsystem, check permissions."
msgstr ""
-#: src/nat/nat.c:1937
+#: src/nat/nat.c:1964
msgid "Encountered timeout while performing operation"
msgstr ""
-#: src/nat/nat.c:1939
+#: src/nat/nat.c:1966
msgid "detected that we are offline"
msgstr ""
-#: src/nat/nat.c:1941
+#: src/nat/nat.c:1968
msgid "`upnpc` command not found"
msgstr ""
-#: src/nat/nat.c:1943
+#: src/nat/nat.c:1970
#, fuzzy
msgid "Failed to run `upnpc` command"
msgstr "Lỗi bắt đầu thu thập.\n"
-#: src/nat/nat.c:1945
+#: src/nat/nat.c:1972
msgid "`upnpc' command took too long, process killed"
msgstr ""
-#: src/nat/nat.c:1947
+#: src/nat/nat.c:1974
msgid "`upnpc' command failed to establish port mapping"
msgstr ""
-#: src/nat/nat.c:1949
+#: src/nat/nat.c:1976
msgid "`external-ip' command not found"
msgstr ""
-#: src/nat/nat.c:1951
+#: src/nat/nat.c:1978
#, fuzzy
msgid "Failed to run `external-ip` command"
msgstr "Lỗi bắt đầu thu thập.\n"
-#: src/nat/nat.c:1953
+#: src/nat/nat.c:1980
msgid "`external-ip' command output invalid"
msgstr ""
-#: src/nat/nat.c:1955
+#: src/nat/nat.c:1982
msgid "no valid address was returned by `external-ip'"
msgstr ""
-#: src/nat/nat.c:1957
+#: src/nat/nat.c:1984
#, fuzzy
msgid "Could not determine interface with internal/local network address"
msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
-#: src/nat/nat.c:1959
+#: src/nat/nat.c:1986
msgid "No functioning gnunet-helper-nat-server installation found"
msgstr ""
-#: src/nat/nat.c:1961
+#: src/nat/nat.c:1988
msgid "NAT test could not be initialized"
msgstr ""
-#: src/nat/nat.c:1963
+#: src/nat/nat.c:1990
msgid "NAT test timeout reached"
msgstr ""
-#: src/nat/nat.c:1965
+#: src/nat/nat.c:1992
msgid "could not register NAT"
msgstr ""
-#: src/nat/nat.c:1967
+#: src/nat/nat.c:1994
msgid "No working gnunet-helper-nat-client installation found"
msgstr ""
@@ -5684,17 +5718,12 @@
msgid "`upnpc' command not found\n"
msgstr ""
-#: src/nat/nat_test.c:360
-#, fuzzy
-msgid "Failed to connect to `gnunet-nat-server'\n"
-msgstr "Lỗi kết nối đến gnunetd.\n"
-
-#: src/nat/nat_test.c:462
+#: src/nat/nat_test.c:467
#, c-format
msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
msgstr ""
-#: src/nat/nat_test.c:497
+#: src/nat/nat_test.c:502
#, fuzzy
msgid "NAT test failed to start NAT library\n"
msgstr "Lỗi bắt đầu thu thập.\n"
@@ -5739,8 +5768,8 @@
msgid "Measure quality and performance of the NSE service."
msgstr "Không thể truy cập đến dịch vụ"
-#: src/nse/gnunet-service-nse.c:1537
-#: src/revocation/gnunet-service-revocation.c:827 src/util/gnunet-scrypt.c:260
+#: src/nse/gnunet-service-nse.c:1541
+#: src/revocation/gnunet-service-revocation.c:848 src/util/gnunet-scrypt.c:260
#, fuzzy
msgid "Value is too large.\n"
msgstr "Giá trị không nằm trong phạm vi được phép."
@@ -6010,7 +6039,7 @@
msgstr ""
#: src/peerstore/plugin_peerstore_sqlite.c:398
-#: src/psycstore/plugin_psycstore_sqlite.c:281
+#: src/psycstore/plugin_psycstore_sqlite.c:282
#, fuzzy, c-format
msgid ""
"Error executing SQL query: %s\n"
@@ -6018,7 +6047,7 @@
msgstr "Gặp lỗi khi tạo người dùng"
#: src/peerstore/plugin_peerstore_sqlite.c:422
-#: src/psycstore/plugin_psycstore_sqlite.c:258
+#: src/psycstore/plugin_psycstore_sqlite.c:259
#, fuzzy, c-format
msgid ""
"Error preparing SQL query: %s\n"
@@ -6075,43 +6104,48 @@
msgid "Failed to get master counters!\n"
msgstr "Lỗi lấy thông kê về truyền tải.\n"
-#: src/psycstore/gnunet-service-psycstore.c:645
-#, fuzzy
-msgid "Failed to begin modifying state!\n"
+#: src/psycstore/gnunet-service-psycstore.c:657
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
msgstr "Lỗi bắt đầu thu thập.\n"
-#: src/psycstore/gnunet-service-psycstore.c:656
+#: src/psycstore/gnunet-service-psycstore.c:667
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Lỗi bắt đầu thu thập.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
#, fuzzy
msgid "Failed to end modifying state!\n"
msgstr "Lỗi bắt đầu thu thập.\n"
-#: src/psycstore/gnunet-service-psycstore.c:686
+#: src/psycstore/gnunet-service-psycstore.c:706
msgid "Tried to set invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:700
+#: src/psycstore/gnunet-service-psycstore.c:720
#, fuzzy
msgid "Failed to begin synchronizing state!\n"
msgstr "Lỗi lấy thông kê về truyền tải.\n"
-#: src/psycstore/gnunet-service-psycstore.c:717
+#: src/psycstore/gnunet-service-psycstore.c:737
#, fuzzy
msgid "Failed to end synchronizing state!\n"
msgstr "Lỗi lấy thông kê về truyền tải.\n"
-#: src/psycstore/gnunet-service-psycstore.c:737
-#: src/psycstore/gnunet-service-psycstore.c:756
+#: src/psycstore/gnunet-service-psycstore.c:757
+#: src/psycstore/gnunet-service-psycstore.c:776
#, fuzzy
msgid "Failed to reset state!\n"
msgstr "Lỗi lấy thông kê về truyền tải.\n"
-#: src/psycstore/gnunet-service-psycstore.c:779
-#: src/psycstore/gnunet-service-psycstore.c:830
+#: src/psycstore/gnunet-service-psycstore.c:799
+#: src/psycstore/gnunet-service-psycstore.c:850
msgid "Tried to get invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:806
-#: src/psycstore/gnunet-service-psycstore.c:845
+#: src/psycstore/gnunet-service-psycstore.c:826
+#: src/psycstore/gnunet-service-psycstore.c:865
#, fuzzy
msgid "Failed to get state variable!\n"
msgstr "Lỗi lấy thông kê về truyền tải.\n"
@@ -6121,7 +6155,7 @@
msgid "`%s' failed at %s:%d with error: %s (%d)\n"
msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
-#: src/psycstore/plugin_psycstore_sqlite.c:1907
+#: src/psycstore/plugin_psycstore_sqlite.c:1923
#, fuzzy
msgid "SQLite database running\n"
msgstr "kho dữ liệu sqlite"
@@ -6392,37 +6426,37 @@
msgid "test if the public key KEY has been revoked"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:427
+#: src/revocation/gnunet-service-revocation.c:481
#, fuzzy
msgid "# unsupported revocations received via set union"
msgstr "# các yêu cầu danh sách máy được nhận"
-#: src/revocation/gnunet-service-revocation.c:436
+#: src/revocation/gnunet-service-revocation.c:490
#, fuzzy
msgid "# revocation messages received via set union"
msgstr "# các thông báo PONG đã mật mã được nhận"
-#: src/revocation/gnunet-service-revocation.c:441
+#: src/revocation/gnunet-service-revocation.c:495
#, c-format
msgid "Error computing revocation set union with %s\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:445
+#: src/revocation/gnunet-service-revocation.c:499
#, fuzzy
msgid "# revocation set unions failed"
msgstr "# các khoá phiên chạy được chấp nhận"
-#: src/revocation/gnunet-service-revocation.c:454
+#: src/revocation/gnunet-service-revocation.c:508
#, fuzzy
msgid "# revocation set unions completed"
msgstr "# các sự truyền PONG bị lỗi"
-#: src/revocation/gnunet-service-revocation.c:493
-#: src/revocation/gnunet-service-revocation.c:759
+#: src/revocation/gnunet-service-revocation.c:547
+#: src/revocation/gnunet-service-revocation.c:780
msgid "SET service crashed, terminating revocation service\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:851
+#: src/revocation/gnunet-service-revocation.c:872
#, fuzzy
msgid "Could not open revocation database file!"
msgstr "« %s »: Không thể kết nối.\n"
@@ -6486,7 +6520,9 @@
msgstr ""
#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1419
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1564
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1549
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1193
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1252
#, fuzzy
msgid "Connect to CADET failed\n"
msgstr " Không kết nối được (lỗi ?)\n"
@@ -6760,7 +6796,7 @@
"\n"
"Gặp lỗi khi tải lên tập tin: %s"
-#: src/set/gnunet-service-set.c:1531
+#: src/set/gnunet-service-set.c:1960
#, fuzzy
msgid "Could not connect to cadet service\n"
msgstr "Không thể kết nối tới %s:%u: %s\n"
@@ -6886,7 +6922,7 @@
msgid "Could not save some persistent statistics\n"
msgstr "Không thể tạo miền tên.\n"
-#: src/statistics/statistics_api.c:1090
+#: src/statistics/statistics_api.c:1088
msgid ""
"Failed to receive acknowledgement from statistics service, some statistics "
"might have been lost!\n"
@@ -8534,7 +8570,7 @@
msgid "# sessions allocated"
msgstr "# các khoá phiên chạy được chấp nhận"
-#: src/transport/transport_api.c:812
+#: src/transport/transport_api.c:827
#, fuzzy, c-format
msgid "Received unexpected message of type %u in %s:%u\n"
msgstr "Nhận được thông báo bị hỏng từ đồng đẳng « %s » trong %s:%d.\n"
@@ -8578,17 +8614,17 @@
msgid "Metadata `%s' failed to deserialize"
msgstr ""
-#: src/util/client.c:263 src/util/client.c:889 src/util/service.c:621
+#: src/util/client.c:264 src/util/client.c:894 src/util/service.c:621
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
-#: src/util/client.c:267 src/util/client.c:894 src/util/service.c:625
+#: src/util/client.c:268 src/util/client.c:899 src/util/service.c:625
#, fuzzy, c-format
msgid "Using `%s' instead\n"
msgstr "%s: tùy chọn « %s » là mơ hồ\n"
-#: src/util/client.c:362
+#: src/util/client.c:367
#, c-format
msgid ""
"Could not determine valid hostname and port for service `%s' from "
@@ -8595,17 +8631,17 @@
"configuration.\n"
msgstr ""
-#: src/util/client.c:370
+#: src/util/client.c:375
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
-#: src/util/client.c:1039
+#: src/util/client.c:1044
#, fuzzy, c-format
msgid "Could not connect to service `%s', configuration broken.\n"
msgstr "Không thể kết nối tới %s:%u: %s\n"
-#: src/util/client.c:1051
+#: src/util/client.c:1056
#, fuzzy, c-format
msgid "Failure to transmit request to service `%s'\n"
msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
@@ -8691,12 +8727,12 @@
"as an environmental variable\n"
msgstr ""
-#: src/util/connection.c:424
+#: src/util/connection.c:429
#, fuzzy, c-format
msgid "Access denied to `%s'\n"
msgstr "Không đủ quyền cho « %s ».\n"
-#: src/util/connection.c:441
+#: src/util/connection.c:446
#, c-format
msgid "Accepting connection from `%s': %p\n"
msgstr ""
@@ -8763,17 +8799,17 @@
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "libgcrypt không có phiên bản mong đợi (yêu cầu phiên bản %s).\n"
-#: src/util/crypto_rsa.c:981
+#: src/util/crypto_rsa.c:999
#, c-format
msgid "RSA signature verification failed at %s:%d: %s\n"
msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
-#: src/util/disk.c:1221
+#: src/util/disk.c:1226
#, c-format
msgid "Expected `%s' to be a directory!\n"
msgstr "Mong đợi « %s » là một thư mục.\n"
-#: src/util/disk.c:1444 src/util/service.c:1328
+#: src/util/disk.c:1449 src/util/service.c:1328
#, c-format
msgid "Cannot obtain information about user `%s': %s\n"
msgstr "Không thể lấy thông tin về người dùng « %s »: %s\n"
@@ -9271,6 +9307,16 @@
msgid "signal (%d, %p) returned %d.\n"
msgstr ""
+#: src/util/socks.c:592
+#, c-format
+msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
+msgstr ""
+
+#: src/util/socks.c:605
+#, c-format
+msgid "Attempting to proxy service `%s' to invalid port %d or hostname `%s'.\n"
+msgstr ""
+
#: src/util/strings.c:146
msgid "b"
msgstr "b"
Modified: gnunet/po/zh_CN.po
===================================================================
--- gnunet/po/zh_CN.po 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/po/zh_CN.po 2015-09-22 01:20:28 UTC (rev 36367)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gnunet-0.8.1\n"
"Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2015-07-24 15:20+0200\n"
+"POT-Creation-Date: 2015-09-06 02:18+0200\n"
"PO-Revision-Date: 2011-07-09 12:12+0800\n"
"Last-Translator: Wylmer Wang <address@hidden>\n"
"Language-Team: Chinese (simplified) <address@hidden>\n"
@@ -351,13 +351,11 @@
"%llu\n"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3290
-#: src/ats-tests/gnunet-solver-eval.c:918
+#: src/ats/gnunet-ats-solver-eval.c:3290 src/ats-tests/gnunet-solver-eval.c:918
msgid "solver to use"
msgstr ""
-#: src/ats/gnunet-ats-solver-eval.c:3293
-#: src/ats-tests/gnunet-solver-eval.c:921
+#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:921
#: src/ats-tests/gnunet-solver-eval.c:924
msgid "experiment to use"
msgstr ""
@@ -642,58 +640,58 @@
msgid "Print information about ATS state"
msgstr "无法获取有关用户“%s”的信息:%s\n"
-#: src/cadet/gnunet-cadet.c:376
+#: src/cadet/gnunet-cadet.c:458
#, fuzzy, c-format
msgid "Invalid target `%s'\n"
msgstr "“%s”的参数无效。\n"
-#: src/cadet/gnunet-cadet.c:643
+#: src/cadet/gnunet-cadet.c:735
#, fuzzy, c-format
msgid "Invalid peer ID `%s'\n"
msgstr "无效条目。\n"
-#: src/cadet/gnunet-cadet.c:686
+#: src/cadet/gnunet-cadet.c:778
#, fuzzy, c-format
msgid "Invalid tunnel owner `%s'\n"
msgstr "IP 格式无效:“%s”\n"
-#: src/cadet/gnunet-cadet.c:752
-msgid "You must NOT give a TARGETwhen using 'request all' options\n"
+#: src/cadet/gnunet-cadet.c:844
+msgid "You must NOT give a TARGET when using 'request all' options\n"
msgstr ""
-#: src/cadet/gnunet-cadet.c:849
+#: src/cadet/gnunet-cadet.c:941
#, fuzzy
msgid "provide information about a particular connection"
msgstr "无法获取有关用户“%s”的信息:%s\n"
-#: src/cadet/gnunet-cadet.c:852
+#: src/cadet/gnunet-cadet.c:944
msgid "activate echo mode"
msgstr ""
-#: src/cadet/gnunet-cadet.c:855
+#: src/cadet/gnunet-cadet.c:947
msgid "dump debug information to STDERR"
msgstr ""
-#: src/cadet/gnunet-cadet.c:861
+#: src/cadet/gnunet-cadet.c:953
msgid "port to listen to (default; 0)"
msgstr ""
-#: src/cadet/gnunet-cadet.c:864
+#: src/cadet/gnunet-cadet.c:956
#, fuzzy
msgid "provide information about a patricular peer"
msgstr "无法获取有关用户“%s”的信息:%s\n"
-#: src/cadet/gnunet-cadet.c:867
+#: src/cadet/gnunet-cadet.c:959
#, fuzzy
msgid "provide information about all peers"
msgstr "无法获取有关用户“%s”的信息:%s\n"
-#: src/cadet/gnunet-cadet.c:870
+#: src/cadet/gnunet-cadet.c:962
#, fuzzy
msgid "provide information about a particular tunnel"
msgstr "无法获取有关用户“%s”的信息:%s\n"
-#: src/cadet/gnunet-cadet.c:873
+#: src/cadet/gnunet-cadet.c:965
#, fuzzy
msgid "provide information about all tunnels"
msgstr "无法获取有关用户“%s”的信息:%s\n"
@@ -1403,20 +1401,20 @@
msgid "# PAYLOAD dropped (out of order)"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:177
+#: src/core/gnunet-service-core_neighbours.c:178
msgid "# sessions terminated by transport disconnect"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:193
-#: src/core/gnunet-service-core_neighbours.c:355
+#: src/core/gnunet-service-core_neighbours.c:194
+#: src/core/gnunet-service-core_neighbours.c:362
msgid "# neighbour entries allocated"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:264
+#: src/core/gnunet-service-core_neighbours.c:270
msgid "# encrypted bytes given to transport"
msgstr ""
-#: src/core/gnunet-service-core_neighbours.c:438
+#: src/core/gnunet-service-core_neighbours.c:448
#, c-format
msgid "Unsupported message of type %u (%u bytes) received from peer `%s'\n"
msgstr ""
@@ -1461,7 +1459,7 @@
msgstr ""
#: src/datacache/datacache.c:119 src/datacache/datacache.c:294
-#: src/datastore/gnunet-service-datastore.c:853
+#: src/datastore/gnunet-service-datastore.c:866
msgid "# bytes stored"
msgstr ""
@@ -1535,83 +1533,83 @@
msgid "Failed to transmit request to drop database.\n"
msgstr ""
-#: src/datastore/datastore_api.c:394
+#: src/datastore/datastore_api.c:395
msgid "# queue entry timeouts"
msgstr ""
-#: src/datastore/datastore_api.c:443
+#: src/datastore/datastore_api.c:450
msgid "# queue overflows"
msgstr ""
-#: src/datastore/datastore_api.c:471
+#: src/datastore/datastore_api.c:478
msgid "# queue entries created"
msgstr ""
-#: src/datastore/datastore_api.c:491
+#: src/datastore/datastore_api.c:498
msgid "# Requests dropped from datastore queue"
msgstr ""
-#: src/datastore/datastore_api.c:533
+#: src/datastore/datastore_api.c:540
msgid "# datastore connections (re)created"
msgstr ""
-#: src/datastore/datastore_api.c:621
+#: src/datastore/datastore_api.c:628
msgid "# transmission request failures"
msgstr ""
-#: src/datastore/datastore_api.c:645
+#: src/datastore/datastore_api.c:652
msgid "# bytes sent to datastore"
msgstr ""
-#: src/datastore/datastore_api.c:787
+#: src/datastore/datastore_api.c:794
msgid "Failed to receive status response from database."
msgstr ""
-#: src/datastore/datastore_api.c:801
+#: src/datastore/datastore_api.c:808
msgid "Error reading response from datastore service"
msgstr ""
-#: src/datastore/datastore_api.c:813 src/datastore/datastore_api.c:819
+#: src/datastore/datastore_api.c:820 src/datastore/datastore_api.c:826
msgid "Invalid error message received from datastore service"
msgstr ""
-#: src/datastore/datastore_api.c:823
+#: src/datastore/datastore_api.c:830
msgid "# status messages received"
msgstr ""
-#: src/datastore/datastore_api.c:893
+#: src/datastore/datastore_api.c:909
msgid "# PUT requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:959
+#: src/datastore/datastore_api.c:975
msgid "# RESERVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1020
+#: src/datastore/datastore_api.c:1036
msgid "# RELEASE RESERVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1080
+#: src/datastore/datastore_api.c:1096
msgid "# UPDATE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1144
+#: src/datastore/datastore_api.c:1160
msgid "# REMOVE requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1248
+#: src/datastore/datastore_api.c:1264
msgid "# Results received"
msgstr ""
-#: src/datastore/datastore_api.c:1315
+#: src/datastore/datastore_api.c:1331
msgid "# GET REPLICATION requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1378
+#: src/datastore/datastore_api.c:1394
msgid "# GET ZERO ANONYMITY requests executed"
msgstr ""
-#: src/datastore/datastore_api.c:1447
+#: src/datastore/datastore_api.c:1463
msgid "# GET requests executed"
msgstr ""
@@ -1636,29 +1634,29 @@
msgid "Manipulate GNUnet datastore"
msgstr "更改配置文件中的一个值"
-#: src/datastore/gnunet-service-datastore.c:365
+#: src/datastore/gnunet-service-datastore.c:372
msgid "# bytes expired"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:439
+#: src/datastore/gnunet-service-datastore.c:447
msgid "# bytes purged (low-priority)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:497
+#: src/datastore/gnunet-service-datastore.c:505
#: src/gns/gnunet-gns-helper-service-w32.c:223
msgid "Transmission to client failed!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:528
+#: src/datastore/gnunet-service-datastore.c:536
#: src/gns/gnunet-gns-helper-service-w32.c:262
msgid "Shutdown in progress, aborting transmission.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:643
+#: src/datastore/gnunet-service-datastore.c:652
msgid "# results found"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:686
+#: src/datastore/gnunet-service-datastore.c:696
#, c-format
msgid ""
"Insufficient space (%llu bytes are available) to satisfy `%s' request for "
@@ -1665,7 +1663,7 @@
"%llu bytes\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:697
+#: src/datastore/gnunet-service-datastore.c:707
#, c-format
msgid ""
"The requested amount (%llu bytes) is larger than the cache size (%llu "
@@ -1672,129 +1670,129 @@
"bytes)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:701
+#: src/datastore/gnunet-service-datastore.c:711
msgid ""
"Insufficient space to satisfy request and requested amount is larger than "
"cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:707
+#: src/datastore/gnunet-service-datastore.c:717
msgid "Insufficient space to satisfy request"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:712
-#: src/datastore/gnunet-service-datastore.c:767
-#: src/datastore/gnunet-service-datastore.c:1019
-#: src/datastore/gnunet-service-datastore.c:1597
+#: src/datastore/gnunet-service-datastore.c:723
+#: src/datastore/gnunet-service-datastore.c:779
+#: src/datastore/gnunet-service-datastore.c:1035
+#: src/datastore/gnunet-service-datastore.c:1630
msgid "# reserved"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:780
+#: src/datastore/gnunet-service-datastore.c:793
msgid "Could not find matching reservation"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:865
+#: src/datastore/gnunet-service-datastore.c:879
#, c-format
msgid "Need %llu bytes more space (%llu allowed, using %llu)\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1071
+#: src/datastore/gnunet-service-datastore.c:1088
msgid "# GET requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1083
+#: src/datastore/gnunet-service-datastore.c:1101
msgid "# requests filtered by bloomfilter"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1121
+#: src/datastore/gnunet-service-datastore.c:1141
msgid "# UPDATE requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1149
+#: src/datastore/gnunet-service-datastore.c:1170
msgid "# GET REPLICATION requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1182
+#: src/datastore/gnunet-service-datastore.c:1204
msgid "# GET ZERO ANONYMITY requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1207
+#: src/datastore/gnunet-service-datastore.c:1233
msgid "Content not found"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1215
+#: src/datastore/gnunet-service-datastore.c:1244
msgid "# bytes removed (explicit request)"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1247
+#: src/datastore/gnunet-service-datastore.c:1277
msgid "# REMOVE requests received"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1291
+#: src/datastore/gnunet-service-datastore.c:1321
#, c-format
msgid ""
"Datastore payload must have been inaccurate (%lld < %lld). Recomputing it.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1296
+#: src/datastore/gnunet-service-datastore.c:1326
#, c-format
msgid "New payload: %lld\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1349
+#: src/datastore/gnunet-service-datastore.c:1379
#, c-format
msgid "Loading `%s' datastore plugin\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1360
+#: src/datastore/gnunet-service-datastore.c:1390
#, fuzzy, c-format
msgid "Failed to load datastore plugin for `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/datastore/gnunet-service-datastore.c:1429
-#: src/datastore/gnunet-service-datastore.c:1490
+#: src/datastore/gnunet-service-datastore.c:1459
+#: src/datastore/gnunet-service-datastore.c:1522
msgid "Bloomfilter construction complete.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1477
+#: src/datastore/gnunet-service-datastore.c:1509
msgid "Rebuilding bloomfilter. Please be patient.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1487
+#: src/datastore/gnunet-service-datastore.c:1519
msgid "Plugin does not support get_keys function. Please fix!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1625
-#: src/datastore/gnunet-service-datastore.c:1636
+#: src/datastore/gnunet-service-datastore.c:1661
+#: src/datastore/gnunet-service-datastore.c:1673
#, c-format
msgid "No `%s' specified for `%s' in configuration!\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1630
+#: src/datastore/gnunet-service-datastore.c:1667
#, c-format
msgid "# bytes used in file-sharing datastore `%s'"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1641
+#: src/datastore/gnunet-service-datastore.c:1679
msgid "# quota"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1643
+#: src/datastore/gnunet-service-datastore.c:1681
msgid "# cache size"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1656
+#: src/datastore/gnunet-service-datastore.c:1696
#, c-format
msgid "Could not use specified filename `%s' for bloomfilter.\n"
msgstr ""
-#: src/datastore/gnunet-service-datastore.c:1674
-#: src/datastore/gnunet-service-datastore.c:1690
+#: src/datastore/gnunet-service-datastore.c:1714
+#: src/datastore/gnunet-service-datastore.c:1730
#, fuzzy, c-format
msgid "Failed to remove bogus bloomfilter file `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/datastore/gnunet-service-datastore.c:1720
+#: src/datastore/gnunet-service-datastore.c:1760
#, fuzzy
msgid "Failed to initialize bloomfilter.\n"
msgstr "初始化“%s”服务失败。\n"
@@ -1855,7 +1853,7 @@
#: src/namecache/plugin_namecache_sqlite.c:193
#: src/namestore/plugin_namestore_sqlite.c:204
#: src/peerstore/plugin_peerstore_sqlite.c:479
-#: src/psycstore/plugin_psycstore_sqlite.c:324
+#: src/psycstore/plugin_psycstore_sqlite.c:325
#, c-format
msgid "Unable to initialize SQLite: %s.\n"
msgstr "无法初始化 SQLite:%s。\n"
@@ -1934,9 +1932,9 @@
msgstr ""
#: src/dht/gnunet-dht-get.c:204 src/dht/gnunet-dht-monitor.c:271
-#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:755
-#: src/fs/gnunet-download.c:328 src/fs/gnunet-publish.c:961
-#: src/fs/gnunet-search.c:307 src/fs/gnunet-unindex.c:168
+#: src/dht/gnunet-dht-put.c:213 src/fs/gnunet-auto-share.c:794
+#: src/fs/gnunet-download.c:327 src/fs/gnunet-publish.c:954
+#: src/fs/gnunet-search.c:306 src/fs/gnunet-unindex.c:167
#: src/nse/gnunet-nse-profiler.c:873
msgid "be verbose (print progress information)"
msgstr ""
@@ -1953,8 +1951,7 @@
msgid "Prints all packets that go through the DHT."
msgstr ""
-#: src/dht/gnunet_dht_profiler.c:1393
-#: src/testbed/gnunet-testbed-profiler.c:267
+#: src/dht/gnunet_dht_profiler.c:1393 src/testbed/gnunet-testbed-profiler.c:267
#, fuzzy, c-format
msgid "Exiting as the number of peers is %u\n"
msgstr "增加 TCP/IP 的最大连接数"
@@ -2169,8 +2166,7 @@
msgid "# GET requests given to datacache"
msgstr ""
-#: src/dht/gnunet-service-dht_hello.c:84
-#: src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
msgid "# HELLOs obtained from peerinfo"
msgstr ""
@@ -3002,72 +2998,72 @@
msgid "Failed to connect to datastore."
msgstr ""
-#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:443
+#: src/fs/fs_publish.c:127 src/fs/fs_publish.c:441
#, c-format
msgid "Publishing failed: %s"
msgstr ""
-#: src/fs/fs_publish.c:709 src/fs/fs_publish.c:726 src/fs/fs_publish.c:765
-#: src/fs/fs_publish.c:786 src/fs/fs_publish.c:810 src/fs/fs_publish.c:1060
+#: src/fs/fs_publish.c:707 src/fs/fs_publish.c:724 src/fs/fs_publish.c:763
+#: src/fs/fs_publish.c:784 src/fs/fs_publish.c:808 src/fs/fs_publish.c:1058
#, c-format
msgid "Can not index file `%s': %s. Will try to insert instead.\n"
msgstr ""
-#: src/fs/fs_publish.c:711
+#: src/fs/fs_publish.c:709
msgid "timeout on index-start request to `fs' service"
msgstr ""
-#: src/fs/fs_publish.c:723
+#: src/fs/fs_publish.c:721
#, fuzzy
msgid "unknown error"
msgstr "未知错误"
-#: src/fs/fs_publish.c:767
+#: src/fs/fs_publish.c:765
msgid "failed to compute hash"
msgstr ""
-#: src/fs/fs_publish.c:787
+#: src/fs/fs_publish.c:785
msgid "filename too long"
msgstr ""
-#: src/fs/fs_publish.c:812
+#: src/fs/fs_publish.c:810
msgid "could not connect to `fs' service"
msgstr ""
-#: src/fs/fs_publish.c:835
+#: src/fs/fs_publish.c:833
#, fuzzy, c-format
msgid "Failed to get file identifiers for `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/fs/fs_publish.c:899 src/fs/fs_publish.c:940
+#: src/fs/fs_publish.c:897 src/fs/fs_publish.c:938
msgid "Can not create LOC URI. Will continue with CHK instead.\n"
msgstr ""
-#: src/fs/fs_publish.c:1014
+#: src/fs/fs_publish.c:1012
#, c-format
msgid "Recursive upload failed at `%s': %s"
msgstr ""
-#: src/fs/fs_publish.c:1022
+#: src/fs/fs_publish.c:1020
#, c-format
msgid "Recursive upload failed: %s"
msgstr ""
-#: src/fs/fs_publish.c:1062
+#: src/fs/fs_publish.c:1060
msgid "needs to be an actual file"
msgstr ""
-#: src/fs/fs_publish.c:1301
+#: src/fs/fs_publish.c:1299
#, fuzzy, c-format
msgid "Datastore failure: %s"
msgstr "“%s”已连接到“%s”。\n"
-#: src/fs/fs_publish.c:1392
+#: src/fs/fs_publish.c:1390
#, c-format
msgid "Reserving space for %u entries and %llu bytes for publication\n"
msgstr ""
-#: src/fs/fs_publish_ksk.c:219
+#: src/fs/fs_publish_ksk.c:224
msgid "Could not connect to datastore."
msgstr ""
@@ -3242,48 +3238,48 @@
msgid "Failed to save state to file %s\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/fs/gnunet-auto-share.c:402
+#: src/fs/gnunet-auto-share.c:415
#, c-format
msgid "Publication of `%s' done\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:490
+#: src/fs/gnunet-auto-share.c:504
#, c-format
msgid "Publishing `%s'\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:499
+#: src/fs/gnunet-auto-share.c:514
#, fuzzy, c-format
msgid "Failed to run `%s'\n"
msgstr "运行 %s失败:%s %d\n"
-#: src/fs/gnunet-auto-share.c:688
+#: src/fs/gnunet-auto-share.c:725
#, c-format
msgid ""
"You must specify one and only one directory name for automatic publication.\n"
msgstr ""
-#: src/fs/gnunet-auto-share.c:739 src/fs/gnunet-publish.c:908
+#: src/fs/gnunet-auto-share.c:778 src/fs/gnunet-publish.c:901
msgid "set the desired LEVEL of sender-anonymity"
msgstr ""
-#: src/fs/gnunet-auto-share.c:743 src/fs/gnunet-publish.c:912
+#: src/fs/gnunet-auto-share.c:782 src/fs/gnunet-publish.c:905
msgid "disable adding the creation time to the metadata of the uploaded file"
msgstr ""
-#: src/fs/gnunet-auto-share.c:746 src/fs/gnunet-publish.c:915
+#: src/fs/gnunet-auto-share.c:785 src/fs/gnunet-publish.c:908
msgid "do not use libextractor to add keywords or metadata"
msgstr ""
-#: src/fs/gnunet-auto-share.c:749 src/fs/gnunet-publish.c:939
+#: src/fs/gnunet-auto-share.c:788 src/fs/gnunet-publish.c:932
msgid "specify the priority of the content"
msgstr ""
-#: src/fs/gnunet-auto-share.c:752 src/fs/gnunet-publish.c:946
+#: src/fs/gnunet-auto-share.c:791 src/fs/gnunet-publish.c:939
msgid "set the desired replication LEVEL"
msgstr ""
-#: src/fs/gnunet-auto-share.c:772
+#: src/fs/gnunet-auto-share.c:815
msgid "Automatically publish files from a directory on GNUnet"
msgstr ""
@@ -3353,65 +3349,65 @@
msgid "Downloading `%s' done (%s/s).\n"
msgstr ""
-#: src/fs/gnunet-download.c:209 src/fs/gnunet-publish.c:319
-#: src/fs/gnunet-search.c:206 src/fs/gnunet-unindex.c:108
+#: src/fs/gnunet-download.c:208 src/fs/gnunet-publish.c:297
+#: src/fs/gnunet-search.c:205 src/fs/gnunet-unindex.c:107
#, c-format
msgid "Unexpected status: %d\n"
msgstr ""
-#: src/fs/gnunet-download.c:234
+#: src/fs/gnunet-download.c:233
#, fuzzy
msgid "You need to specify a URI argument.\n"
msgstr "您必须指定一个昵称\n"
-#: src/fs/gnunet-download.c:240 src/fs/gnunet-publish.c:734
+#: src/fs/gnunet-download.c:239 src/fs/gnunet-publish.c:728
#, fuzzy, c-format
msgid "Failed to parse URI: %s\n"
msgstr "运行 %s失败:%s %d\n"
-#: src/fs/gnunet-download.c:247
+#: src/fs/gnunet-download.c:246
msgid "Only CHK or LOC URIs supported.\n"
msgstr ""
-#: src/fs/gnunet-download.c:254
+#: src/fs/gnunet-download.c:253
msgid "Target filename must be specified.\n"
msgstr ""
-#: src/fs/gnunet-download.c:268 src/fs/gnunet-publish.c:878
-#: src/fs/gnunet-search.c:256 src/fs/gnunet-unindex.c:140
+#: src/fs/gnunet-download.c:267 src/fs/gnunet-publish.c:872
+#: src/fs/gnunet-search.c:255 src/fs/gnunet-unindex.c:139
#, fuzzy, c-format
msgid "Could not initialize `%s' subsystem.\n"
msgstr "初始化“%s”服务失败。\n"
-#: src/fs/gnunet-download.c:305 src/fs/gnunet-search.c:295
+#: src/fs/gnunet-download.c:304 src/fs/gnunet-search.c:294
msgid "set the desired LEVEL of receiver-anonymity"
msgstr ""
-#: src/fs/gnunet-download.c:308
+#: src/fs/gnunet-download.c:307
msgid "delete incomplete downloads (when aborted with CTRL-C)"
msgstr ""
-#: src/fs/gnunet-download.c:311 src/fs/gnunet-search.c:298
+#: src/fs/gnunet-download.c:310 src/fs/gnunet-search.c:297
msgid "only search the local peer (no P2P network search)"
msgstr ""
-#: src/fs/gnunet-download.c:314
+#: src/fs/gnunet-download.c:313
msgid "write the file to FILENAME"
msgstr ""
-#: src/fs/gnunet-download.c:318
+#: src/fs/gnunet-download.c:317
msgid "set the maximum number of parallel downloads that is allowed"
msgstr ""
-#: src/fs/gnunet-download.c:322
+#: src/fs/gnunet-download.c:321
msgid "set the maximum number of parallel requests for blocks that is allowed"
msgstr ""
-#: src/fs/gnunet-download.c:325
+#: src/fs/gnunet-download.c:324
msgid "download a GNUnet directory recursively"
msgstr ""
-#: src/fs/gnunet-download.c:339
+#: src/fs/gnunet-download.c:338
msgid ""
"Download files from GNUnet using a GNUnet CHK or LOC URI (gnunet://fs/"
"chk/...)"
@@ -3441,132 +3437,132 @@
msgid "run a testbed to measure file-sharing performance"
msgstr ""
-#: src/fs/gnunet-publish.c:238 src/fs/gnunet-publish.c:250
+#: src/fs/gnunet-publish.c:221 src/fs/gnunet-publish.c:233
#, c-format
msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
msgstr ""
-#: src/fs/gnunet-publish.c:257
+#: src/fs/gnunet-publish.c:241
#, c-format
msgid "Error publishing: %s.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:268
+#: src/fs/gnunet-publish.c:248
#, c-format
msgid "Publishing `%s' done.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:273
+#: src/fs/gnunet-publish.c:253
#, c-format
msgid "URI is `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:281
+#: src/fs/gnunet-publish.c:261
#, c-format
msgid "Namespace URI is `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:299
+#: src/fs/gnunet-publish.c:277
msgid "Starting cleanup after abort\n"
msgstr ""
-#: src/fs/gnunet-publish.c:306
+#: src/fs/gnunet-publish.c:284
msgid "Cleanup after abort completed.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:312
+#: src/fs/gnunet-publish.c:290
msgid "Cleanup after abort failed.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:447
+#: src/fs/gnunet-publish.c:432
#, fuzzy, c-format
msgid "Meta data for file `%s' (%s)\n"
msgstr "打开日志文件“%s”失败:%s\n"
-#: src/fs/gnunet-publish.c:449
+#: src/fs/gnunet-publish.c:437
#, fuzzy, c-format
msgid "Keywords for file `%s' (%s)\n"
msgstr "无法解析“%s”(%s):%s\n"
-#: src/fs/gnunet-publish.c:594
+#: src/fs/gnunet-publish.c:591
#, fuzzy
msgid "Could not publish\n"
msgstr "无法解析“%s”(%s):%s\n"
-#: src/fs/gnunet-publish.c:619
+#: src/fs/gnunet-publish.c:616
msgid "Could not start publishing.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:653
+#: src/fs/gnunet-publish.c:650
#, fuzzy, c-format
msgid "Scanning directory `%s'.\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/fs/gnunet-publish.c:657
+#: src/fs/gnunet-publish.c:654
#, fuzzy, c-format
msgid "Scanning file `%s'.\n"
msgstr "未知的命令“%s”。\n"
-#: src/fs/gnunet-publish.c:663
+#: src/fs/gnunet-publish.c:660
#, c-format
msgid "There was trouble processing file `%s', skipping it.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:670
+#: src/fs/gnunet-publish.c:667
msgid "Preprocessing complete.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:675
+#: src/fs/gnunet-publish.c:672
#, fuzzy, c-format
msgid "Extracting meta data from file `%s' complete.\n"
msgstr "打开日志文件“%s”失败:%s\n"
-#: src/fs/gnunet-publish.c:682
+#: src/fs/gnunet-publish.c:679
msgid "Meta data extraction has finished.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:691
+#: src/fs/gnunet-publish.c:688
#, fuzzy
msgid "Internal error scanning directory.\n"
msgstr "未知错误。\n"
-#: src/fs/gnunet-publish.c:723
+#: src/fs/gnunet-publish.c:716
#, c-format
msgid "Selected pseudonym `%s' unknown\n"
msgstr ""
-#: src/fs/gnunet-publish.c:755
+#: src/fs/gnunet-publish.c:749
#, fuzzy, c-format
msgid "Failed to access `%s': %s\n"
msgstr "打开日志文件“%s”失败:%s\n"
-#: src/fs/gnunet-publish.c:769
+#: src/fs/gnunet-publish.c:763
msgid ""
"Failed to start meta directory scanner. Is gnunet-helper-publish-fs "
"installed?\n"
msgstr ""
-#: src/fs/gnunet-publish.c:825
+#: src/fs/gnunet-publish.c:819
#, c-format
msgid "Cannot extract metadata from a URI!\n"
msgstr ""
-#: src/fs/gnunet-publish.c:832
+#: src/fs/gnunet-publish.c:826
#, c-format
msgid "You must specify one and only one filename for insertion.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:838
+#: src/fs/gnunet-publish.c:832
#, c-format
msgid "You must NOT specify an URI and a filename.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:846 src/vpn/gnunet-vpn.c:209
+#: src/fs/gnunet-publish.c:840 src/vpn/gnunet-vpn.c:209
#, c-format
msgid "Option `%s' is required when using option `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:857 src/fs/gnunet-publish.c:865
+#: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
#: src/transport/gnunet-transport.c:1928 src/transport/gnunet-transport.c:1958
#: src/transport/gnunet-transport.c:1989
#, c-format
@@ -3573,56 +3569,56 @@
msgid "Option `%s' makes no sense without option `%s'.\n"
msgstr ""
-#: src/fs/gnunet-publish.c:919
+#: src/fs/gnunet-publish.c:912
msgid ""
"print list of extracted keywords that would be used, but do not perform "
"upload"
msgstr ""
-#: src/fs/gnunet-publish.c:923
+#: src/fs/gnunet-publish.c:916
msgid ""
"add an additional keyword for the top-level file or directory (this option "
"can be specified multiple times)"
msgstr ""
-#: src/fs/gnunet-publish.c:927
+#: src/fs/gnunet-publish.c:920
msgid "set the meta-data for the given TYPE to the given VALUE"
msgstr ""
-#: src/fs/gnunet-publish.c:930
+#: src/fs/gnunet-publish.c:923
msgid ""
"do not index, perform full insertion (stores entire file in encrypted form "
"in GNUnet database)"
msgstr ""
-#: src/fs/gnunet-publish.c:935
+#: src/fs/gnunet-publish.c:928
msgid ""
"specify ID of an updated version to be published in the future (for "
"namespace insertions only)"
msgstr ""
-#: src/fs/gnunet-publish.c:943
+#: src/fs/gnunet-publish.c:936
msgid "publish the files under the pseudonym NAME (place file into namespace)"
msgstr ""
-#: src/fs/gnunet-publish.c:949
+#: src/fs/gnunet-publish.c:942
msgid ""
"only simulate the process but do not do any actual publishing (useful to "
"compute URIs)"
msgstr ""
-#: src/fs/gnunet-publish.c:953
+#: src/fs/gnunet-publish.c:946
msgid ""
"set the ID of this version of the publication (for namespace insertions only)"
msgstr ""
-#: src/fs/gnunet-publish.c:957
+#: src/fs/gnunet-publish.c:950
msgid ""
"URI to be published (can be used instead of passing a file to add keywords "
"to the file with the respective URI)"
msgstr ""
-#: src/fs/gnunet-publish.c:973
+#: src/fs/gnunet-publish.c:966
msgid "Publish a file or directory on GNUnet"
msgstr ""
@@ -3636,27 +3632,27 @@
msgid "Error searching: %s.\n"
msgstr "创建用户出错"
-#: src/fs/gnunet-search.c:246
+#: src/fs/gnunet-search.c:245
msgid "Could not create keyword URI from arguments.\n"
msgstr ""
-#: src/fs/gnunet-search.c:270
+#: src/fs/gnunet-search.c:269
msgid "Could not start searching.\n"
msgstr ""
-#: src/fs/gnunet-search.c:301
+#: src/fs/gnunet-search.c:300
msgid "write search results to file starting with PREFIX"
msgstr ""
-#: src/fs/gnunet-search.c:304
+#: src/fs/gnunet-search.c:303
msgid "automatically terminate search after DELAY"
msgstr ""
-#: src/fs/gnunet-search.c:311
+#: src/fs/gnunet-search.c:310
msgid "automatically terminate search after VALUE results are found"
msgstr ""
-#: src/fs/gnunet-search.c:322
+#: src/fs/gnunet-search.c:321
msgid "Search GNUnet for files that were published on GNUnet"
msgstr ""
@@ -4019,16 +4015,16 @@
msgid "Unindexing done.\n"
msgstr ""
-#: src/fs/gnunet-unindex.c:130
+#: src/fs/gnunet-unindex.c:129
#, c-format
msgid "You must specify one and only one filename for unindexing.\n"
msgstr ""
-#: src/fs/gnunet-unindex.c:147
+#: src/fs/gnunet-unindex.c:146
msgid "Could not start unindex operation.\n"
msgstr ""
-#: src/fs/gnunet-unindex.c:179
+#: src/fs/gnunet-unindex.c:178
msgid "Unindex a file that was previously indexed with gnunet-publish."
msgstr ""
@@ -4426,68 +4422,68 @@
msgid "GNS REST API initialized\n"
msgstr ""
-#: src/gnsrecord/plugin_gnsrecord_dns.c:291
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
#, fuzzy, c-format
msgid "Unable to parse IPv4 address `%s'\n"
msgstr "无效的进程优先级“%s”\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:312
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
#, fuzzy, c-format
msgid "Failed to serialize NS record with value `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:334
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
#, fuzzy, c-format
msgid "Failed to serialize CNAME record with value `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:418
+#: src/gnsrecord/plugin_gnsrecord_dns.c:486
#, fuzzy, c-format
msgid "Failed to serialize CERT record with %u bytes\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:455
+#: src/gnsrecord/plugin_gnsrecord_dns.c:522
#, fuzzy, c-format
msgid "Unable to parse SOA record `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:474
+#: src/gnsrecord/plugin_gnsrecord_dns.c:541
#, fuzzy, c-format
msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:497
+#: src/gnsrecord/plugin_gnsrecord_dns.c:564
#, fuzzy, c-format
msgid "Failed to serialize PTR record with value `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:520
+#: src/gnsrecord/plugin_gnsrecord_dns.c:587
#, fuzzy, c-format
msgid "Unable to parse MX record `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:535
+#: src/gnsrecord/plugin_gnsrecord_dns.c:602
#, fuzzy, c-format
msgid "Failed to serialize MX record with hostname `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:562
+#: src/gnsrecord/plugin_gnsrecord_dns.c:629
#, fuzzy, c-format
msgid "Unable to parse SRV record `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:578
+#: src/gnsrecord/plugin_gnsrecord_dns.c:645
#, fuzzy, c-format
msgid "Failed to serialize SRV record with target `%s'\n"
msgstr "解析配置文件“%s”失败\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:595
+#: src/gnsrecord/plugin_gnsrecord_dns.c:662
#, fuzzy, c-format
msgid "Unable to parse IPv6 address `%s'\n"
msgstr "无效的进程优先级“%s”\n"
-#: src/gnsrecord/plugin_gnsrecord_dns.c:619
-#: src/gnsrecord/plugin_gnsrecord_dns.c:635
+#: src/gnsrecord/plugin_gnsrecord_dns.c:686
+#: src/gnsrecord/plugin_gnsrecord_dns.c:702
#, fuzzy, c-format
msgid "Unable to parse TLSA record string `%s'\n"
msgstr "解析配置文件“%s”失败\n"
@@ -4998,6 +4994,31 @@
msgid "Namecache failed to cache block"
msgstr ""
+#: src/namecache/plugin_namecache_flat.c:119
+#: src/namecache/plugin_namecache_flat.c:236
+#: src/namestore/plugin_namestore_flat.c:184
+#: src/namestore/plugin_namestore_flat.c:352
+#, fuzzy, c-format
+msgid "Unable to initialize file: %s.\n"
+msgstr "无法初始化 SQLite:%s。\n"
+
+#: src/namecache/plugin_namecache_flat.c:130
+#: src/namestore/plugin_namestore_flat.c:195
+#, fuzzy, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr "发送消息失败。\n"
+
+#: src/namecache/plugin_namecache_flat.c:142
+#: src/namestore/plugin_namestore_flat.c:207
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "发送消息失败。\n"
+
+#: src/namecache/plugin_namecache_flat.c:391
+#, fuzzy
+msgid "flat plugin running\n"
+msgstr "sqlite 数据仓库"
+
#: src/namecache/plugin_namecache_postgres.c:89
#: src/namestore/plugin_namestore_postgres.c:96
#, fuzzy
@@ -5096,8 +5117,7 @@
msgid "Invalid public key for reverse lookup `%s'\n"
msgstr "“%s”的参数无效。\n"
-#: src/namestore/gnunet-namestore.c:868
-#: src/peerinfo-tool/gnunet-peerinfo.c:817
+#: src/namestore/gnunet-namestore.c:868 src/peerinfo-tool/gnunet-peerinfo.c:817
#, fuzzy, c-format
msgid "Invalid URI `%s'\n"
msgstr "无效条目。\n"
@@ -5258,10 +5278,19 @@
msgid "Namestore failed to store record\n"
msgstr ""
+#: src/namestore/plugin_namestore_flat.c:650
+#, fuzzy
+msgid "flat file database running\n"
+msgstr "sqlite 数据仓库"
+
#: src/namestore/plugin_rest_namestore.c:1023
msgid "Namestore REST API initialized\n"
msgstr ""
+#: src/nat/gnunet-nat.c:160
+msgid "GNUnet NAT traversal autoconfigure daemon"
+msgstr ""
+
#: src/nat/gnunet-nat-server.c:279
#, c-format
msgid "Please pass valid port number as the first argument! (got `%s')\n"
@@ -5271,53 +5300,57 @@
msgid "GNUnet NAT traversal test helper daemon"
msgstr ""
-#: src/nat/nat_auto.c:179
+#: src/nat/nat_auto.c:394
msgid "NAT traversal with ICMP Server succeeded.\n"
msgstr ""
-#: src/nat/nat_auto.c:180
+#: src/nat/nat_auto.c:395
msgid "NAT traversal with ICMP Server failed.\n"
msgstr ""
-#: src/nat/nat_auto.c:201
+#: src/nat/nat_auto.c:416
msgid "Testing connection reversal with ICMP server.\n"
msgstr ""
-#: src/nat/nat_auto.c:249
+#: src/nat/nat_auto.c:448
#, c-format
msgid "Detected external IP `%s'\n"
msgstr ""
-#: src/nat/nat_auto.c:327
+#: src/nat/nat_auto.c:579
msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
msgstr ""
-#: src/nat/nat_auto.c:343
+#: src/nat/nat_auto.c:597
#, fuzzy, c-format
msgid "Detected internal network address `%s'.\n"
msgstr "GNUnet 现在使用 IP 地址 %s。\n"
-#: src/nat/nat_auto.c:406
+#: src/nat/nat_auto.c:669 src/nat/nat_test.c:364
+msgid "Failed to connect to `gnunet-nat-server'\n"
+msgstr ""
+
+#: src/nat/nat_auto.c:715
msgid "upnpc found, enabling its use\n"
msgstr ""
-#: src/nat/nat_auto.c:407
+#: src/nat/nat_auto.c:716
msgid "upnpc not found\n"
msgstr ""
-#: src/nat/nat_auto.c:437
+#: src/nat/nat_auto.c:748
msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
msgstr ""
-#: src/nat/nat_auto.c:445 src/nat/nat_auto.c:490
+#: src/nat/nat_auto.c:756 src/nat/nat_auto.c:804
msgid "test_icmp_server not possible, as we are not behind NAT\n"
msgstr ""
-#: src/nat/nat_auto.c:453 src/nat/nat_auto.c:498
+#: src/nat/nat_auto.c:764 src/nat/nat_auto.c:812
msgid "No working gnunet-helper-nat-server found\n"
msgstr ""
-#: src/nat/nat_auto.c:483
+#: src/nat/nat_auto.c:797
msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
msgstr ""
@@ -5331,26 +5364,26 @@
msgid "Failed to start %s\n"
msgstr "运行 %s失败:%s %d\n"
-#: src/nat/nat.c:1286
+#: src/nat/nat.c:1305
msgid "Error while running upnp client:\n"
msgstr ""
-#: src/nat/nat.c:1356
+#: src/nat/nat.c:1375
#, fuzzy, c-format
msgid "Failed to run upnp client for port %u\n"
msgstr "初始化“%s”服务失败。\n"
-#: src/nat/nat.c:1498
+#: src/nat/nat.c:1517
msgid "malformed"
msgstr ""
-#: src/nat/nat.c:1552
+#: src/nat/nat.c:1571
msgid ""
"UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
"disabling UPnP \n"
msgstr ""
-#: src/nat/nat.c:1680 src/nat/nat.c:1692
+#: src/nat/nat.c:1700 src/nat/nat.c:1712
#, c-format
msgid ""
"Configuration requires `%s', but binary is not installed properly (SUID bit "
@@ -5357,91 +5390,91 @@
"not set). Option disabled.\n"
msgstr ""
-#: src/nat/nat.c:1830
+#: src/nat/nat.c:1855
msgid "Internal IP address not known, cannot use ICMP NAT traversal method\n"
msgstr ""
-#: src/nat/nat.c:1846
+#: src/nat/nat.c:1871
#, c-format
msgid "Running gnunet-helper-nat-client %s %s %u\n"
msgstr ""
-#: src/nat/nat.c:1931
+#: src/nat/nat.c:1958
msgid "Operation Successful"
msgstr ""
-#: src/nat/nat.c:1933
+#: src/nat/nat.c:1960
msgid "Internal Failure (IPC, ...)"
msgstr ""
-#: src/nat/nat.c:1935
+#: src/nat/nat.c:1962
msgid "Failure in network subsystem, check permissions."
msgstr ""
-#: src/nat/nat.c:1937
+#: src/nat/nat.c:1964
msgid "Encountered timeout while performing operation"
msgstr ""
-#: src/nat/nat.c:1939
+#: src/nat/nat.c:1966
msgid "detected that we are offline"
msgstr ""
-#: src/nat/nat.c:1941
+#: src/nat/nat.c:1968
msgid "`upnpc` command not found"
msgstr ""
-#: src/nat/nat.c:1943
+#: src/nat/nat.c:1970
#, fuzzy
msgid "Failed to run `upnpc` command"
msgstr "运行 %s失败:%s %d\n"
-#: src/nat/nat.c:1945
+#: src/nat/nat.c:1972
msgid "`upnpc' command took too long, process killed"
msgstr ""
-#: src/nat/nat.c:1947
+#: src/nat/nat.c:1974
msgid "`upnpc' command failed to establish port mapping"
msgstr ""
-#: src/nat/nat.c:1949
+#: src/nat/nat.c:1976
msgid "`external-ip' command not found"
msgstr ""
-#: src/nat/nat.c:1951
+#: src/nat/nat.c:1978
#, fuzzy
msgid "Failed to run `external-ip` command"
msgstr "运行 %s失败:%s %d\n"
-#: src/nat/nat.c:1953
+#: src/nat/nat.c:1980
msgid "`external-ip' command output invalid"
msgstr ""
-#: src/nat/nat.c:1955
+#: src/nat/nat.c:1982
msgid "no valid address was returned by `external-ip'"
msgstr ""
-#: src/nat/nat.c:1957
+#: src/nat/nat.c:1984
#, fuzzy
msgid "Could not determine interface with internal/local network address"
msgstr "无法确定用户界面定义文件。"
-#: src/nat/nat.c:1959
+#: src/nat/nat.c:1986
msgid "No functioning gnunet-helper-nat-server installation found"
msgstr ""
-#: src/nat/nat.c:1961
+#: src/nat/nat.c:1988
msgid "NAT test could not be initialized"
msgstr ""
-#: src/nat/nat.c:1963
+#: src/nat/nat.c:1990
msgid "NAT test timeout reached"
msgstr ""
-#: src/nat/nat.c:1965
+#: src/nat/nat.c:1992
msgid "could not register NAT"
msgstr ""
-#: src/nat/nat.c:1967
+#: src/nat/nat.c:1994
msgid "No working gnunet-helper-nat-client installation found"
msgstr ""
@@ -5453,16 +5486,12 @@
msgid "`upnpc' command not found\n"
msgstr ""
-#: src/nat/nat_test.c:360
-msgid "Failed to connect to `gnunet-nat-server'\n"
-msgstr ""
-
-#: src/nat/nat_test.c:462
+#: src/nat/nat_test.c:467
#, c-format
msgid "Failed to create listen socket bound to `%s' for NAT test: %s\n"
msgstr ""
-#: src/nat/nat_test.c:497
+#: src/nat/nat_test.c:502
#, fuzzy
msgid "NAT test failed to start NAT library\n"
msgstr "初始化“%s”服务失败。\n"
@@ -5505,8 +5534,8 @@
msgid "Measure quality and performance of the NSE service."
msgstr "无法访问该服务"
-#: src/nse/gnunet-service-nse.c:1537
-#: src/revocation/gnunet-service-revocation.c:827 src/util/gnunet-scrypt.c:260
+#: src/nse/gnunet-service-nse.c:1541
+#: src/revocation/gnunet-service-revocation.c:848 src/util/gnunet-scrypt.c:260
#, fuzzy
msgid "Value is too large.\n"
msgstr "值不在合法范围内。"
@@ -5767,7 +5796,7 @@
msgstr ""
#: src/peerstore/plugin_peerstore_sqlite.c:398
-#: src/psycstore/plugin_psycstore_sqlite.c:281
+#: src/psycstore/plugin_psycstore_sqlite.c:282
#, fuzzy, c-format
msgid ""
"Error executing SQL query: %s\n"
@@ -5775,7 +5804,7 @@
msgstr "创建用户出错"
#: src/peerstore/plugin_peerstore_sqlite.c:422
-#: src/psycstore/plugin_psycstore_sqlite.c:258
+#: src/psycstore/plugin_psycstore_sqlite.c:259
#, fuzzy, c-format
msgid ""
"Error preparing SQL query: %s\n"
@@ -5832,43 +5861,48 @@
msgid "Failed to get master counters!\n"
msgstr "发送消息失败。\n"
-#: src/psycstore/gnunet-service-psycstore.c:645
-#, fuzzy
-msgid "Failed to begin modifying state!\n"
+#: src/psycstore/gnunet-service-psycstore.c:657
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
msgstr "运行 %s失败:%s %d\n"
-#: src/psycstore/gnunet-service-psycstore.c:656
+#: src/psycstore/gnunet-service-psycstore.c:667
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "运行 %s失败:%s %d\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
#, fuzzy
msgid "Failed to end modifying state!\n"
msgstr "运行 %s失败:%s %d\n"
-#: src/psycstore/gnunet-service-psycstore.c:686
+#: src/psycstore/gnunet-service-psycstore.c:706
msgid "Tried to set invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:700
+#: src/psycstore/gnunet-service-psycstore.c:720
#, fuzzy
msgid "Failed to begin synchronizing state!\n"
msgstr "发送消息失败。\n"
-#: src/psycstore/gnunet-service-psycstore.c:717
+#: src/psycstore/gnunet-service-psycstore.c:737
#, fuzzy
msgid "Failed to end synchronizing state!\n"
msgstr "发送消息失败。\n"
-#: src/psycstore/gnunet-service-psycstore.c:737
-#: src/psycstore/gnunet-service-psycstore.c:756
+#: src/psycstore/gnunet-service-psycstore.c:757
+#: src/psycstore/gnunet-service-psycstore.c:776
#, fuzzy
msgid "Failed to reset state!\n"
msgstr "发送消息失败。\n"
-#: src/psycstore/gnunet-service-psycstore.c:779
-#: src/psycstore/gnunet-service-psycstore.c:830
+#: src/psycstore/gnunet-service-psycstore.c:799
+#: src/psycstore/gnunet-service-psycstore.c:850
msgid "Tried to get invalid state variable name!\n"
msgstr ""
-#: src/psycstore/gnunet-service-psycstore.c:806
-#: src/psycstore/gnunet-service-psycstore.c:845
+#: src/psycstore/gnunet-service-psycstore.c:826
+#: src/psycstore/gnunet-service-psycstore.c:865
#, fuzzy
msgid "Failed to get state variable!\n"
msgstr "发送消息失败。\n"
@@ -5878,7 +5912,7 @@
msgid "`%s' failed at %s:%d with error: %s (%d)\n"
msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
-#: src/psycstore/plugin_psycstore_sqlite.c:1907
+#: src/psycstore/plugin_psycstore_sqlite.c:1923
#, fuzzy
msgid "SQLite database running\n"
msgstr "sqlite 数据仓库"
@@ -6139,20 +6173,20 @@
msgid "test if the public key KEY has been revoked"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:427
+#: src/revocation/gnunet-service-revocation.c:481
msgid "# unsupported revocations received via set union"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:436
+#: src/revocation/gnunet-service-revocation.c:490
msgid "# revocation messages received via set union"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:441
+#: src/revocation/gnunet-service-revocation.c:495
#, c-format
msgid "Error computing revocation set union with %s\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:445
+#: src/revocation/gnunet-service-revocation.c:499
#, fuzzy
msgid "# revocation set unions failed"
msgstr ""
@@ -6159,16 +6193,16 @@
"\n"
"按任意键继续\n"
-#: src/revocation/gnunet-service-revocation.c:454
+#: src/revocation/gnunet-service-revocation.c:508
msgid "# revocation set unions completed"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:493
-#: src/revocation/gnunet-service-revocation.c:759
+#: src/revocation/gnunet-service-revocation.c:547
+#: src/revocation/gnunet-service-revocation.c:780
msgid "SET service crashed, terminating revocation service\n"
msgstr ""
-#: src/revocation/gnunet-service-revocation.c:851
+#: src/revocation/gnunet-service-revocation.c:872
#, fuzzy
msgid "Could not open revocation database file!"
msgstr "无法连接到 %s:%u:%s\n"
@@ -6232,7 +6266,9 @@
msgstr ""
#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1419
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1564
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1549
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1193
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1252
#, fuzzy
msgid "Connect to CADET failed\n"
msgstr "“%s”已连接到“%s”。\n"
@@ -6500,7 +6536,7 @@
msgid "Error loading sensor from file: %s\n"
msgstr "创建用户出错"
-#: src/set/gnunet-service-set.c:1531
+#: src/set/gnunet-service-set.c:1960
#, fuzzy
msgid "Could not connect to cadet service\n"
msgstr "无法连接到 %s:%u:%s\n"
@@ -6626,7 +6662,7 @@
msgid "Could not save some persistent statistics\n"
msgstr "初始化“%s”服务失败。\n"
-#: src/statistics/statistics_api.c:1090
+#: src/statistics/statistics_api.c:1088
msgid ""
"Failed to receive acknowledgement from statistics service, some statistics "
"might have been lost!\n"
@@ -8213,7 +8249,7 @@
msgid "# sessions allocated"
msgstr ""
-#: src/transport/transport_api.c:812
+#: src/transport/transport_api.c:827
#, c-format
msgid "Received unexpected message of type %u in %s:%u\n"
msgstr ""
@@ -8257,17 +8293,17 @@
msgid "Metadata `%s' failed to deserialize"
msgstr ""
-#: src/util/client.c:263 src/util/client.c:889 src/util/service.c:621
+#: src/util/client.c:264 src/util/client.c:894 src/util/service.c:621
#, c-format
msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
msgstr ""
-#: src/util/client.c:267 src/util/client.c:894 src/util/service.c:625
+#: src/util/client.c:268 src/util/client.c:899 src/util/service.c:625
#, fuzzy, c-format
msgid "Using `%s' instead\n"
msgstr "%s:选项“%s”有歧义\n"
-#: src/util/client.c:362
+#: src/util/client.c:367
#, c-format
msgid ""
"Could not determine valid hostname and port for service `%s' from "
@@ -8274,17 +8310,17 @@
"configuration.\n"
msgstr ""
-#: src/util/client.c:370
+#: src/util/client.c:375
#, c-format
msgid "Need a non-empty hostname for service `%s'.\n"
msgstr ""
-#: src/util/client.c:1039
+#: src/util/client.c:1044
#, fuzzy, c-format
msgid "Could not connect to service `%s', configuration broken.\n"
msgstr "无法连接到 %s:%u:%s\n"
-#: src/util/client.c:1051
+#: src/util/client.c:1056
#, c-format
msgid "Failure to transmit request to service `%s'\n"
msgstr ""
@@ -8366,12 +8402,12 @@
"as an environmental variable\n"
msgstr ""
-#: src/util/connection.c:424
+#: src/util/connection.c:429
#, fuzzy, c-format
msgid "Access denied to `%s'\n"
msgstr "“%s”已连接到“%s”。\n"
-#: src/util/connection.c:441
+#: src/util/connection.c:446
#, c-format
msgid "Accepting connection from `%s': %p\n"
msgstr ""
@@ -8438,17 +8474,17 @@
msgid "libgcrypt has not the expected version (version %s is required).\n"
msgstr "libgcrypt 的版本不符合预期(要求版本 %s)。\n"
-#: src/util/crypto_rsa.c:981
+#: src/util/crypto_rsa.c:999
#, fuzzy, c-format
msgid "RSA signature verification failed at %s:%d: %s\n"
msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
-#: src/util/disk.c:1221
+#: src/util/disk.c:1226
#, c-format
msgid "Expected `%s' to be a directory!\n"
msgstr "“%s”应为目录!\n"
-#: src/util/disk.c:1444 src/util/service.c:1328
+#: src/util/disk.c:1449 src/util/service.c:1328
#, c-format
msgid "Cannot obtain information about user `%s': %s\n"
msgstr "无法获取有关用户“%s”的信息:%s\n"
@@ -8943,6 +8979,16 @@
msgid "signal (%d, %p) returned %d.\n"
msgstr ""
+#: src/util/socks.c:592
+#, c-format
+msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
+msgstr ""
+
+#: src/util/socks.c:605
+#, c-format
+msgid "Attempting to proxy service `%s' to invalid port %d or hostname `%s'.\n"
+msgstr ""
+
#: src/util/strings.c:146
msgid "b"
msgstr "b"
Modified: gnunet/src/consensus/consensus_protocol.h
===================================================================
--- gnunet/src/consensus/consensus_protocol.h 2015-09-16 13:18:29 UTC (rev
36366)
+++ gnunet/src/consensus/consensus_protocol.h 2015-09-22 01:20:28 UTC (rev
36367)
@@ -37,6 +37,9 @@
/**
* Sent as context message for set reconciliation.
+ *
+ * Essentially contains all the fields
+ * from 'struct TaskKey', but in NBO.
*/
struct GNUNET_CONSENSUS_RoundContextMessage
{
@@ -44,9 +47,44 @@
* Type: GNUNET_MESSAGE_TYPE_CONSENSUS_P2P_ROUND_CONTEXT
*/
struct GNUNET_MessageHeader header;
- uint32_t round;
- uint32_t exp_repetition;
- uint32_t exp_subround;
+
+ /**
+ * A value from 'enum PhaseKind'.
+ */
+ uint16_t kind;
+
+ /**
+ * Number of the first peer
+ * in canonical order.
+ */
+ int16_t peer1;
+
+ /**
+ * Number of the second peer in canonical order.
+ */
+ int16_t peer2;
+
+ /**
+ * Repetition of the gradecast phase.
+ */
+ int16_t repetition;
+
+ /**
+ * Leader in the gradecast phase.
+ *
+ * Can be different from both peer1 and peer2.
+ */
+ int16_t leader;
+
+ /**
+ * Non-zero if this set reconciliation
+ * had elements removed because they were contested.
+ *
+ * Will be considered when grading broadcasts.
+ *
+ * Ignored for set operations that are not within gradecasts.
+ */
+ uint16_t is_contested;
};
GNUNET_NETWORK_STRUCT_END
Modified: gnunet/src/consensus/gnunet-service-consensus.c
===================================================================
--- gnunet/src/consensus/gnunet-service-consensus.c 2015-09-16 13:18:29 UTC
(rev 36366)
+++ gnunet/src/consensus/gnunet-service-consensus.c 2015-09-22 01:20:28 UTC
(rev 36367)
@@ -34,234 +34,410 @@
#include "consensus.h"
-/**
- * Log macro that prefixes the local peer and the peer we are in contact with.
- *
- * @param kind log level
- * @param cpi ConsensusPeerInformation of the partner peer
- * @param m log message
- */
-#define LOG_PP(kind, cpi, m,...) GNUNET_log (kind, "P%d for P%d: " m, \
- cpi->session->local_peer_idx, (int) (cpi -
cpi->session->info),##__VA_ARGS__)
+GNUNET_NETWORK_STRUCT_BEGIN
/**
- * Number of exponential rounds, used in the exp and completion round.
+ * Tuple of integers that together
+ * identify a task uniquely.
*/
-#define NUM_EXP_REPETITIONS 4
+struct TaskKey {
+ /**
+ * A value from 'enum PhaseKind'.
+ */
+ uint16_t kind GNUNET_PACKED;
+ /**
+ * Number of the first peer
+ * in canonical order.
+ */
+ int16_t peer1 GNUNET_PACKED;
-/* forward declarations */
-
-/* mutual recursion with struct ConsensusSession */
-struct ConsensusPeerInformation;
-
-/* mutual recursion with round_over */
-static void
-subround_over (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
-
-/**
- * Describes the current round a consensus session is in.
- */
-enum ConsensusRound
-{
/**
- * Not started the protocol yet.
+ * Number of the second peer in canonical order.
*/
- CONSENSUS_ROUND_BEGIN=0,
+ int16_t peer2 GNUNET_PACKED;
+
/**
- * Distribution of elements with the exponential scheme.
+ * Repetition of the gradecast phase.
*/
- CONSENSUS_ROUND_EXCHANGE,
+ int16_t repetition GNUNET_PACKED;
+
/**
- * Collect and distribute missing values.
+ * Leader in the gradecast phase.
+ *
+ * Can be different from both peer1 and peer2.
*/
- CONSENSUS_ROUND_COMPLETION,
+ int16_t leader GNUNET_PACKED;
+};
+
+
+enum ReferendumVote
+{
+ VOTE_NONE = 0,
+ VOTE_ADD = 1,
+ VOTE_REMOVE = 2,
+ VOTE_CONTESTED = 3
+};
+
+
+struct SetKey
+{
+ int set_kind GNUNET_PACKED;
+ int k1 GNUNET_PACKED;
+ int k2 GNUNET_PACKED;
+};
+
+
+struct SetEntry
+{
+ struct SetKey key;
+ struct GNUNET_SET_Handle *h;
/**
- * Consensus concluded. After timeout and finished communication with client,
- * consensus session will be destroyed.
+ * GNUNET_YES if the set resulted
+ * from applying a referendum with contested
+ * elements.
*/
- CONSENSUS_ROUND_FINISH
+ int is_contested;
};
-/**
- * Information about the current round.
- */
-struct RoundInfo
+struct DiffKey
{
+ int diff_kind GNUNET_PACKED;
+ int k1 GNUNET_PACKED;
+ int k2 GNUNET_PACKED;
+};
+
+struct RfnKey
+{
+ int rfn_kind GNUNET_PACKED;
+ int k1 GNUNET_PACKED;
+ int k2 GNUNET_PACKED;
+};
+
+
+GNUNET_NETWORK_STRUCT_END
+
+enum PhaseKind
+{
+ PHASE_KIND_ALL_TO_ALL,
+ PHASE_KIND_GRADECAST_LEADER,
+ PHASE_KIND_GRADECAST_ECHO,
+ PHASE_KIND_GRADECAST_ECHO_GRADE,
+ PHASE_KIND_GRADECAST_CONFIRM,
+ PHASE_KIND_GRADECAST_CONFIRM_GRADE,
+ PHASE_KIND_GRADECAST_APPLY_RESULT,
+ PHASE_KIND_FINISH,
+};
+
+
+enum ActionType
+{
/**
- * The current main round.
+ * Do a set reconciliation with another peer (or via looback).
*/
- enum ConsensusRound round;
+ ACTION_RECONCILE,
/**
- * The current exp round repetition, valid if
- * the main round is an exp round.
+ * Apply a referendum with a threshold
+ * to a set and/or a diff.
*/
- uint32_t exp_repetition;
+ ACTION_EVAL_RFN,
/**
- * The current exp subround, valid if
- * the main round is an exp round.
+ * Apply a diff to a set.
*/
- uint32_t exp_subround;
+ ACTION_APPLY_DIFF,
+ ACTION_FINISH,
};
+enum SetKind
+{
+ SET_KIND_NONE = 0,
+ SET_KIND_CURRENT,
+ SET_KIND_LEADER,
+ SET_KIND_ECHO_RESULT,
+};
-/**
- * A consensus session consists of one local client and the remote authorities.
+enum DiffKind
+{
+ DIFF_KIND_NONE = 0,
+ DIFF_KIND_LEADER,
+ DIFF_KIND_GRADECAST_RESULT,
+};
+
+enum RfnKind
+{
+ RFN_KIND_NONE = 0,
+ RFN_KIND_ECHO,
+ RFN_KIND_CONFIRM,
+};
+
+
+/*
+ * Node in the consensus task graph.
*/
-struct ConsensusSession
+struct TaskEntry
{
+ struct TaskKey key;
+
+ struct Step *step;
+
+ int is_running;
+
+ int is_finished;
+
+ enum ActionType action;
+
+ struct SetKey input_set;
+ struct DiffKey input_diff;
+ struct RfnKey input_rfn;
+ struct SetKey output_set;
+ struct DiffKey output_diff;
+ struct RfnKey output_rfn;
+
/**
- * Consensus sessions are kept in a DLL.
+ * Threshold when evaluating referendums.
*/
- struct ConsensusSession *next;
+ uint16_t threshold;
/**
- * Consensus sessions are kept in a DLL.
+ * Operation that is running for this task.
*/
- struct ConsensusSession *prev;
+ struct GNUNET_SET_OperationHandle *op;
- /**
- * Global consensus identification, computed
- * from the session id and participating authorities.
- */
- struct GNUNET_HashCode global_id;
+ struct GNUNET_SET_Handle *commited_set;
+};
+
+struct Step
+{
/**
- * Client that inhabits the session
+ * All steps of one session are in a
+ * linked list for easier deallocation.
*/
- struct GNUNET_SERVER_Client *client;
+ struct Step *prev;
/**
- * Queued messages to the client.
+ * All steps of one session are in a
+ * linked list for easier deallocation.
*/
- struct GNUNET_MQ_Handle *client_mq;
+ struct Step *next;
- /**
- * Time when the conclusion of the consensus should begin.
+ struct ConsensusSession *session;
+
+ struct TaskEntry **tasks;
+ unsigned int tasks_len;
+ unsigned int tasks_cap;
+
+ unsigned int finished_tasks;
+
+ /*
+ * Tasks that have this task as dependency.
+ *
+ * We store pointers to subordinates rather
+ * than to prerequisites since it makes
+ * tracking the readiness of a task easier.
*/
- struct GNUNET_TIME_Absolute conclude_start;
+ struct Step **subordinates;
+ unsigned int subordinates_len;
+ unsigned int subordinates_cap;
/**
- * Timeout for all rounds together, single rounds will schedule a timeout
task
- * with a fraction of the conclude timeout.
- * Only valid once the current round is not CONSENSUS_ROUND_BEGIN.
+ * Counter for the prerequisites of
+ * this step.
*/
- struct GNUNET_TIME_Absolute conclude_deadline;
+ size_t pending_prereq;
- /**
- * Timeout task identifier for the current round or subround.
+ /*
+ * Task that will run this step despite
+ * any pending prerequisites.
*/
- struct GNUNET_SCHEDULER_Task * round_timeout_tid;
+ struct GNUNET_SCHEDULER_Task *timeout_task;
- /**
- * Number of other peers in the consensus.
+ unsigned int is_running;
+
+ unsigned int is_finished;
+
+ /*
+ * Round that this step should start.
+ * If not all prerequisites have run,
+ * the task will run anyway.
*/
- unsigned int num_peers;
+ unsigned int start_round;
- /**
- * Information about the other peers,
- * their state, etc.
+ /*
+ * Number of rounds this step occupies.
+ *
+ * Some steps are more expensive, and thus
+ * are allocated more rounds.
*/
- struct ConsensusPeerInformation *info;
+ unsigned int num_rounds;
/**
- * Index of the local peer in the peers array
+ * Human-readable name for
+ * the task, used for debugging.
*/
- unsigned int local_peer_idx;
+ char *debug_name;
+};
- /**
- * Current round
+struct RfnPeerInfo
+{
+ /* Peers can propose changes,
+ * but they are only accepted once
+ * the whole set operation is done. */
+ int is_commited;
+};
+
+struct RfnElementInfo
+{
+ struct GNUNET_SET_Element *element;
+
+ /*
+ * Vote (or VOTE_NONE) from every peer
+ * in the session about the element.
*/
- enum ConsensusRound current_round;
+ int *votes;
+};
- /**
- * Permutation of peers for the current round,
+
+struct ReferendumEntry
+{
+ struct RfnKey key;
+
+ /*
+ * Elements where there is at least one proposed change.
+ *
+ * Maps the hash of the GNUNET_SET_Element
+ * to 'struct RfnElementInfo'.
*/
- uint32_t *shuffle;
+ struct GNUNET_CONTAINER_MultiHashMap *rfn_elements;
/**
- * Inverse permutation of peers for the current round,
+ * Stores, for every peer in the session,
+ * whether the peer finished the whole referendum.
+ *
+ * Votes from peers are only counted if they're
+ * marked as commited (#GNUNET_YES) in the referendum.
+ *
+ * Otherwise (#GNUNET_NO), the requested changes are
+ * not counted for majority votes or thresholds.
*/
- uint32_t *shuffle_inv;
+ int *peer_commited;
+};
+
+struct DiffElementInfo
+{
+ struct GNUNET_SET_Element *element;
+
/**
- * Current round of the exponential scheme.
+ * Positive weight for 'add', negative
+ * weights for 'remove'.
*/
- uint32_t exp_repetition;
+ int weight;
+};
+
+/**
+ * Weighted diff.
+ */
+struct DiffEntry
+{
+ struct DiffKey key;
+ struct GNUNET_CONTAINER_MultiHashMap *changes;
+};
+
+
+
+/**
+ * A consensus session consists of one local client and the remote authorities.
+ */
+struct ConsensusSession
+{
/**
- * Current sub-round of the exponential scheme.
+ * Consensus sessions are kept in a DLL.
*/
- uint32_t exp_subround;
+ struct ConsensusSession *next;
/**
- * The partner for the current exp-round.
- * The local peer will initiate the set reconciliation with the
- * outgoing peer.
+ * Consensus sessions are kept in a DLL.
*/
- struct ConsensusPeerInformation *partner_outgoing;
+ struct ConsensusSession *prev;
+ unsigned int num_client_insert_pending;
+
+ struct GNUNET_CONTAINER_MultiHashMap *setmap;
+ struct GNUNET_CONTAINER_MultiHashMap *rfnmap;
+ struct GNUNET_CONTAINER_MultiHashMap *diffmap;
+
/**
- * The partner for the current exp-round
- * The incoming peer will initiate the set reconciliation with
- * the incoming peer.
+ * Array of peers with length 'num_peers'.
*/
- struct ConsensusPeerInformation *partner_incoming;
+ int *peers_ignored;
- /**
- * The consensus set of this session.
+ /*
+ * Mapping from (hashed) TaskKey to TaskEntry.
+ *
+ * We map the application_id for a round to the task that should be
+ * executed, so we don't have to go through all task whenever we get
+ * an incoming set op request.
*/
- struct GNUNET_SET_Handle *element_set;
+ struct GNUNET_CONTAINER_MultiHashMap *taskmap;
+ struct Step *steps_head;
+ struct Step *steps_tail;
+
+ int conclude_started;
+
+ int conclude_done;
+
/**
- * Listener for requests from other peers.
- * Uses the session's global id as app id.
+ * Global consensus identification, computed
+ * from the session id and participating authorities.
+ */
+ struct GNUNET_HashCode global_id;
+
+ /**
+ * Client that inhabits the session
*/
- struct GNUNET_SET_ListenHandle *set_listener;
-};
+ struct GNUNET_SERVER_Client *client;
-
-/**
- * Information about a peer that is in a consensus session.
- */
-struct ConsensusPeerInformation
-{
/**
- * Peer identitty of the peer in the consensus session
+ * Queued messages to the client.
*/
- struct GNUNET_PeerIdentity peer_id;
+ struct GNUNET_MQ_Handle *client_mq;
/**
- * Back-reference to the consensus session,
- * to that ConsensusPeerInformation can be used as a closure
+ * Time when the conclusion of the consensus should begin.
*/
- struct ConsensusSession *session;
+ struct GNUNET_TIME_Absolute conclude_start;
/**
- * Have we finished the set operation for this (sub-)round?
+ * Timeout for all rounds together, single rounds will schedule a timeout
task
+ * with a fraction of the conclude timeout.
+ * Only valid once the current round is not CONSENSUS_ROUND_BEGIN.
*/
- int set_op_finished;
+ struct GNUNET_TIME_Absolute conclude_deadline;
+ struct GNUNET_PeerIdentity *peers;
+
/**
- * Set operation we are currently executing with this peer.
+ * Number of other peers in the consensus.
*/
- struct GNUNET_SET_OperationHandle *set_op;
+ unsigned int num_peers;
/**
- * Set operation we are planning on executing with this peer.
+ * Index of the local peer in the peers array
*/
- struct GNUNET_SET_OperationHandle *delayed_set_op;
+ unsigned int local_peer_idx;
/**
- * Info about the round of the delayed set operation.
+ * Listener for requests from other peers.
+ * Uses the session's global id as app id.
*/
- struct RoundInfo delayed_round_info;
+ struct GNUNET_SET_ListenHandle *set_listener;
};
-
/**
* Linked list of sessions this peer participates in.
*/
@@ -288,34 +464,126 @@
static struct GNUNET_PeerIdentity my_peer;
-/**
- * Check if the current subround has finished.
- * Must only be called when an exp-round is the current round.
- *
- * @param session session to check for exp-round completion
- * @return GNUNET_YES if the subround has finished,
- * GNUNET_NO if not
- */
-static int
-have_exp_subround_finished (const struct ConsensusSession *session)
+static void
+finish_task (struct TaskEntry *task);
+
+static void
+run_task_remote_union (struct ConsensusSession *session, struct TaskEntry
*task);
+
+static void
+run_task_eval_rfn (struct ConsensusSession *session, struct TaskEntry *task);
+
+static void
+run_task_apply_diff (struct ConsensusSession *session, struct TaskEntry *task);
+
+static void
+run_ready_steps (struct ConsensusSession *session);
+
+static const char *
+phasename (uint16_t phase)
{
- int not_finished;
+ switch (phase)
+ {
+ case PHASE_KIND_ALL_TO_ALL: return "ALL_TO_ALL";
+ case PHASE_KIND_FINISH: return "FINISH";
+ case PHASE_KIND_GRADECAST_LEADER: return "GRADECAST_LEADER";
+ case PHASE_KIND_GRADECAST_ECHO: return "GRADECAST_ECHO";
+ case PHASE_KIND_GRADECAST_ECHO_GRADE: return "GRADECAST_ECHO_GRADE";
+ case PHASE_KIND_GRADECAST_CONFIRM: return "GRADECAST_CONFIRM";
+ case PHASE_KIND_GRADECAST_CONFIRM_GRADE: return "GRADECAST_CONFIRM_GRADE";
+ case PHASE_KIND_GRADECAST_APPLY_RESULT: return "GRADECAST_APPLY_RESULT";
+ default: return "(unknown)";
+ }
+}
- GNUNET_assert (CONSENSUS_ROUND_EXCHANGE == session->current_round);
- not_finished = 0;
- if ( (NULL != session->partner_outgoing) &&
- (GNUNET_NO == session->partner_outgoing->set_op_finished) )
- not_finished++;
- if ( (NULL != session->partner_incoming) &&
- (GNUNET_NO == session->partner_incoming->set_op_finished) )
- not_finished++;
- if (0 == not_finished)
- return GNUNET_YES;
- return GNUNET_NO;
+static const char *
+setname (uint16_t kind)
+{
+ switch (kind)
+ {
+ case SET_KIND_CURRENT: return "CURRENT";
+ case SET_KIND_LEADER: return "LEADER";
+ case SET_KIND_NONE: return "NONE";
+ default: return "(unknown)";
+ }
}
+static const char *
+rfnname (uint16_t kind)
+{
+ switch (kind)
+ {
+ case RFN_KIND_NONE: return "NONE";
+ case RFN_KIND_ECHO: return "ECHO";
+ case RFN_KIND_CONFIRM: return "CONFIRM";
+ default: return "(unknown)";
+ }
+}
+static const char *
+diffname (uint16_t kind)
+{
+ switch (kind)
+ {
+ case DIFF_KIND_NONE: return "NONE";
+ case DIFF_KIND_LEADER: return "LEADER";
+ case DIFF_KIND_GRADECAST_RESULT: return "GRADECAST_RESULT";
+ default: return "(unknown)";
+ }
+}
+
+static const char *
+debug_str_task_key (struct TaskKey *tk)
+{
+ static char buf[256];
+
+ snprintf (buf, sizeof (buf),
+ "TaskKey kind=%s, p1=%d, p2=%d, l=%d, rep=%d",
+ phasename (tk->kind), tk->peer1, tk->peer2,
+ tk->leader, tk->repetition);
+
+ return buf;
+}
+
+static const char *
+debug_str_diff_key (struct DiffKey *dk)
+{
+ static char buf[256];
+
+ snprintf (buf, sizeof (buf),
+ "DiffKey kind=%s, k1=%d, k2=%d",
+ diffname (dk->diff_kind), dk->k1, dk->k2);
+
+ return buf;
+}
+
+static const char *
+debug_str_set_key (struct SetKey *sk)
+{
+ static char buf[256];
+
+ snprintf (buf, sizeof (buf),
+ "SetKey kind=%s, k1=%d, k2=%d",
+ setname (sk->set_kind), sk->k1, sk->k2);
+
+ return buf;
+}
+
+
+static const char *
+debug_str_rfn_key (struct RfnKey *rk)
+{
+ static char buf[256];
+
+ snprintf (buf, sizeof (buf),
+ "RfnKey kind=%s, k1=%d, k2=%d",
+ rfnname (rk->rfn_kind), rk->k1, rk->k2);
+
+ return buf;
+}
+
+
/**
* Destroy a session, free all resources associated with it.
*
@@ -325,11 +593,6 @@
destroy_session (struct ConsensusSession *session)
{
GNUNET_CONTAINER_DLL_remove (sessions_head, sessions_tail, session);
- if (NULL != session->element_set)
- {
- GNUNET_SET_destroy (session->element_set);
- session->element_set = NULL;
- }
if (NULL != session->set_listener)
{
GNUNET_SET_listen_cancel (session->set_listener);
@@ -345,38 +608,13 @@
GNUNET_SERVER_client_disconnect (session->client);
session->client = NULL;
}
- if (NULL != session->shuffle)
- {
- GNUNET_free (session->shuffle);
- session->shuffle = NULL;
- }
- if (NULL != session->shuffle_inv)
- {
- GNUNET_free (session->shuffle_inv);
- session->shuffle_inv = NULL;
- }
- if (NULL != session->info)
- {
- int i;
- for (i = 0; i < session->num_peers; i++)
- {
- struct ConsensusPeerInformation *cpi;
- cpi = &session->info[i];
- if (NULL != cpi->set_op)
- {
- GNUNET_SET_operation_cancel (cpi->set_op);
- cpi->set_op = NULL;
- }
- }
- GNUNET_free (session->info);
- session->info = NULL;
- }
GNUNET_free (session);
}
/**
- * Iterator for set elements. [FIXME: bad comment]
+ * Send the final result set of the consensus to the client, element by
+ * element.
*
* @param cls closure
* @param element the current element, NULL if all elements have been
@@ -387,7 +625,8 @@
send_to_client_iter (void *cls,
const struct GNUNET_SET_Element *element)
{
- struct ConsensusSession *session = cls;
+ struct TaskEntry *task = (struct TaskEntry *) cls;
+ struct ConsensusSession *session = task->step->session;
struct GNUNET_MQ_Envelope *ev;
if (NULL != element)
@@ -417,186 +656,110 @@
/**
- * Start the next round.
- * This function can be invoked as a timeout task, or called manually (tc will
be NULL then).
+ * Callback for set operation results. Called for each element
+ * in the result set.
*
- * @param cls the session
- * @param tc task context, for when this task is invoked by the scheduler,
- * NULL if invoked for another reason
+ * @param cls closure
+ * @param element a result element, only valid if status is
GNUNET_SET_STATUS_OK
+ * @param status see enum GNUNET_SET_Status
*/
static void
-round_over (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+set_result_cb_loop (void *cls,
+ const struct GNUNET_SET_Element *element,
+ enum GNUNET_SET_Status status)
{
- struct ConsensusSession *session;
- unsigned int i;
- int res;
+ /* Nothing to do here.
+ This is the callback for looped local set operations, everything is
+ handled by the first callback */
- /* don't kick off next round if we're shutting down */
- if ((NULL != tc) && (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
- return;
+ struct TaskEntry *task = cls;
+ struct ConsensusSession *session = task->step->session;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: skipping looped set result for {%s}, status %u\n",
+ session->local_peer_idx,
+ debug_str_task_key (&task->key),
+ status);
+}
- session = cls;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%d: round over\n",
session->local_peer_idx);
- if (tc != NULL)
- session->round_timeout_tid = NULL;
+static struct SetEntry *
+lookup_set (struct ConsensusSession *session, struct SetKey *key)
+{
+ struct GNUNET_HashCode hash;
- if (session->round_timeout_tid != NULL)
- {
- GNUNET_SCHEDULER_cancel (session->round_timeout_tid);
- session->round_timeout_tid = NULL;
- }
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: looking up set {%s}\n",
+ session->local_peer_idx,
+ debug_str_set_key (key));
- for (i = 0; i < session->num_peers; i++)
- {
- if (NULL != session->info[i].set_op)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%d: canceling stray op with
P%d\n",
- session->local_peer_idx, i);
- GNUNET_SET_operation_cancel (session->info[i].set_op);
- session->info[i].set_op = NULL;
- }
- /* we're in the new round, nothing finished yet */
- session->info[i].set_op_finished = GNUNET_NO;
- }
-
- switch (session->current_round)
- {
- case CONSENSUS_ROUND_BEGIN:
- session->current_round = CONSENSUS_ROUND_EXCHANGE;
- session->exp_repetition = 0;
- subround_over (session, NULL);
- break;
- case CONSENSUS_ROUND_EXCHANGE:
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%d: finished, sending elements to
client\n",
- session->local_peer_idx);
- session->current_round = CONSENSUS_ROUND_FINISH;
- res = GNUNET_SET_iterate (session->element_set, send_to_client_iter,
session);
- if (GNUNET_SYSERR == res)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "can't iterate set: set
invalid\n");
- }
- else if (GNUNET_NO == res)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "can't iterate set: iterator
already active\n");
- }
- break;
- default:
- GNUNET_assert (0);
- }
+ GNUNET_assert (SET_KIND_NONE != key->set_kind);
+ GNUNET_CRYPTO_hash (key, sizeof (struct SetKey), &hash);
+ return GNUNET_CONTAINER_multihashmap_get (session->setmap, &hash);
}
-/**
- * Create a new permutation for the session's peers in session->shuffle.
- * Uses a Fisher-Yates shuffle with pseudo-randomness coming from
- * both the global session id and the current round index.
- *
- * @param session the session to create the new permutation for
- */
-static void
-shuffle (struct ConsensusSession *session)
+static struct DiffEntry *
+lookup_diff (struct ConsensusSession *session, struct DiffKey *key)
{
- uint32_t i;
- uint32_t randomness[session->num_peers-1];
+ struct GNUNET_HashCode hash;
- if (NULL == session->shuffle)
- session->shuffle = GNUNET_malloc (session->num_peers * sizeof
(*session->shuffle));
- if (NULL == session->shuffle_inv)
- session->shuffle_inv = GNUNET_malloc (session->num_peers * sizeof
(*session->shuffle_inv));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: looking up diff {%s}\n",
+ session->local_peer_idx,
+ debug_str_diff_key (key));
- GNUNET_CRYPTO_kdf (randomness, sizeof (randomness),
- &session->exp_repetition, sizeof (uint32_t),
- &session->global_id, sizeof (struct GNUNET_HashCode),
- NULL);
+ GNUNET_assert (DIFF_KIND_NONE != key->diff_kind);
+ GNUNET_CRYPTO_hash (key, sizeof (struct DiffKey), &hash);
+ return GNUNET_CONTAINER_multihashmap_get (session->diffmap, &hash);
+}
- for (i = 0; i < session->num_peers; i++)
- session->shuffle[i] = i;
- for (i = session->num_peers - 1; i > 0; i--)
- {
- uint32_t x;
- uint32_t tmp;
- x = randomness[i-1] % session->num_peers;
- tmp = session->shuffle[x];
- session->shuffle[x] = session->shuffle[i];
- session->shuffle[i] = tmp;
- }
+static struct ReferendumEntry *
+lookup_rfn (struct ConsensusSession *session, struct RfnKey *key)
+{
+ struct GNUNET_HashCode hash;
- /* create the inverse */
- for (i = 0; i < session->num_peers; i++)
- session->shuffle_inv[session->shuffle[i]] = i;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: looking up rfn {%s}\n",
+ session->local_peer_idx,
+ debug_str_rfn_key (key));
+
+ GNUNET_assert (RFN_KIND_NONE != key->rfn_kind);
+ GNUNET_CRYPTO_hash (key, sizeof (struct RfnKey), &hash);
+ return GNUNET_CONTAINER_multihashmap_get (session->rfnmap, &hash);
}
-/**
- * Find and set the partner_incoming and partner_outgoing of our peer,
- * one of them may not exist (and thus set to NULL) if the number of peers
- * in the session is not a power of two.
- *
- * @param session the consensus session
- */
static void
-find_partners (struct ConsensusSession *session)
+diff_insert (struct DiffEntry *diff,
+ int weight,
+ const struct GNUNET_SET_Element *element)
{
- unsigned int arc;
- unsigned int num_ghosts;
- unsigned int largest_arc;
- int partner_idx;
+ GNUNET_assert (0);
+}
- /* shuffled local index */
- int my_idx = session->shuffle[session->local_peer_idx];
- /* distance to neighboring peer in current subround */
- arc = 1 << session->exp_subround;
- largest_arc = 1;
- while (largest_arc < session->num_peers)
- largest_arc <<= 1;
- num_ghosts = largest_arc - session->num_peers;
- // GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "largest arc: %u\n", largest_arc);
- // GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "arc: %u\n", arc);
- // GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "num ghosts: %u\n", num_ghosts);
+static void
+rfn_vote (struct ReferendumEntry *rfn,
+ uint16_t voting_peer,
+ uint16_t num_peers,
+ int vote,
+ const struct GNUNET_SET_Element *element)
+{
+ GNUNET_assert (voting_peer < num_peers);
+ GNUNET_assert (0);
+}
- if (0 == (my_idx & arc))
- {
- /* we are outgoing */
- partner_idx = (my_idx + arc) % session->num_peers;
- session->partner_outgoing =
&session->info[session->shuffle_inv[partner_idx]];
- GNUNET_assert (GNUNET_NO == session->partner_outgoing->set_op_finished);
- /* are we a 'ghost' of a peer that would exist if
- * the number of peers was a power of two, and thus have to partner
- * with an additional peer?
- */
- if (my_idx < num_ghosts)
- {
- int ghost_partner_idx;
- // GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "my index %d, arc %d, peers
%u\n", my_idx, arc, session->num_peers);
- ghost_partner_idx = (my_idx - (int) arc) % (int) session->num_peers;
- /* platform dependent; modulo sometimes returns negative values */
- if (ghost_partner_idx < 0)
- ghost_partner_idx += session->num_peers;
- /* we only need to have a ghost partner if the partner is outgoing */
- if (0 == (ghost_partner_idx & arc))
- {
- // GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ghost partner is %d\n",
ghost_partner_idx);
- session->partner_incoming =
&session->info[session->shuffle_inv[ghost_partner_idx]];
- GNUNET_assert (GNUNET_NO ==
session->partner_incoming->set_op_finished);
- return;
- }
- }
- session->partner_incoming = NULL;
- return;
- }
- /* we only have an incoming connection */
- partner_idx = (my_idx - (int) arc) % (int) session->num_peers;
- if (partner_idx < 0)
- partner_idx += session->num_peers;
- session->partner_outgoing = NULL;
- session->partner_incoming =
&session->info[session->shuffle_inv[partner_idx]];
- GNUNET_assert (GNUNET_NO == session->partner_incoming->set_op_finished);
+uint16_t
+task_other_peer (struct TaskEntry *task)
+{
+ uint16_t me = task->step->session->local_peer_idx;
+ if (task->key.peer1 == me)
+ return task->key.peer2;
+ return task->key.peer1;
}
-
/**
* Callback for set operation results. Called for each element
* in the result set.
@@ -610,270 +773,778 @@
const struct GNUNET_SET_Element *element,
enum GNUNET_SET_Status status)
{
- struct ConsensusPeerInformation *cpi = cls;
- unsigned int remote_idx = cpi - cpi->session->info;
- unsigned int local_idx = cpi->session->local_peer_idx;
+ struct TaskEntry *task = cls;
+ struct ConsensusSession *session = task->step->session;
+ struct SetEntry *output_set = NULL;
+ struct DiffEntry *output_diff = NULL;
+ struct ReferendumEntry *output_rfn = NULL;
+ unsigned int other_idx;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: got set result for {%s}, status %u\n",
+ session->local_peer_idx,
+ debug_str_task_key (&task->key),
+ status);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: set result from P%u with status
%u\n",
- local_idx, remote_idx, (unsigned int) status);
+ if (GNUNET_NO == task->is_running)
+ {
+ GNUNET_break_op (0);
+ return;
+ }
- GNUNET_assert ((cpi == cpi->session->partner_outgoing) ||
- (cpi == cpi->session->partner_incoming));
+ if (GNUNET_YES == task->is_finished)
+ {
+ GNUNET_break_op (0);
+ return;
+ }
+ if (task->key.peer1 == session->local_peer_idx)
+ other_idx = task->key.peer2;
+ else if (task->key.peer2 == session->local_peer_idx)
+ other_idx = task->key.peer1;
+ else
+ {
+ /* error in task graph construction */
+ GNUNET_assert (0);
+ }
+
+ if (SET_KIND_NONE != task->output_set.set_kind)
+ output_set = lookup_set (session, &task->output_set);
+
+ if (DIFF_KIND_NONE != task->output_diff.diff_kind)
+ output_diff = lookup_diff (session, &task->output_diff);
+
+ if (RFN_KIND_NONE != task->output_rfn.rfn_kind)
+ output_rfn = lookup_rfn (session, &task->output_rfn);
+
+ if (GNUNET_YES == session->peers_ignored[other_idx])
+ {
+ /* We should have never started or commited to an operation
+ with an ignored peer. */
+ GNUNET_break (0);
+ return;
+ }
+
switch (status)
{
+ // case GNUNET_SET_STATUS_MISSING_LOCAL:
case GNUNET_SET_STATUS_OK:
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: set result from P%u:
element\n",
- local_idx, remote_idx);
- break;
- case GNUNET_SET_STATUS_FAILURE:
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: set result from P%u:
failure\n",
- local_idx, remote_idx);
- cpi->set_op = NULL;
- return;
- case GNUNET_SET_STATUS_HALF_DONE:
- case GNUNET_SET_STATUS_DONE:
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: set result from P%u: done\n",
- local_idx, remote_idx);
- cpi->set_op_finished = GNUNET_YES;
- cpi->set_op = NULL;
- if (have_exp_subround_finished (cpi->session) == GNUNET_YES)
+ if (NULL != output_set)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: all reconciliations of
subround done\n",
- local_idx);
- subround_over (cpi->session, NULL);
+ // FIXME: record pending adds, use callback
+ GNUNET_SET_add_element (output_set->h,
+ element,
+ NULL,
+ NULL);
+
}
- else
+ if (NULL != output_diff)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: waiting for further set
results\n",
- local_idx);
+ diff_insert (output_diff, 1, element);
}
- return;
- default:
+ if (NULL != output_rfn)
+ {
+ rfn_vote (output_rfn, task_other_peer (task), session->num_peers,
VOTE_ADD, element);
+ }
+ // XXX: add result to structures in task
+ break;
+ //case GNUNET_SET_STATUS_MISSING_REMOTE:
+ // // XXX: add result to structures in task
+ // break;
+ case GNUNET_SET_STATUS_DONE:
+ // XXX: check first if any changes to the underlying
+ // set are still pending
+ // XXX: commit other peer in referendum
+ finish_task (task);
+ break;
+ case GNUNET_SET_STATUS_FAILURE:
+ // XXX: cleanup
GNUNET_break (0);
return;
- }
-
- switch (cpi->session->current_round)
- {
- case CONSENSUS_ROUND_COMPLETION:
- case CONSENSUS_ROUND_EXCHANGE:
- GNUNET_SET_add_element (cpi->session->element_set, element, NULL, NULL);
- break;
default:
- GNUNET_break (0);
- return;
+ /* not reached */
+ GNUNET_assert (0);
}
}
+
/**
- * Compare the round the session is in with the round of the given context
message.
- *
- * @param session a consensus session
- * @param ri a round context message
- * @return 0 if it's the same round, -1 if the session is in an earlier round,
- * 1 if the session is in a later round
+ * Commit the appropriate set for a
+ * task.
*/
-static int
-rounds_compare (struct ConsensusSession *session,
- struct RoundInfo* ri)
+static void
+commit_set (struct ConsensusSession *session,
+ struct TaskEntry *task)
{
- if (session->current_round < ri->round)
- return -1;
- if (session->current_round > ri->round)
- return 1;
- if (session->current_round == CONSENSUS_ROUND_EXCHANGE)
- {
- if (session->exp_repetition < ri->exp_repetition)
- return -1;
- if (session->exp_repetition > ri->exp_repetition)
- return 1;
- if (session->exp_subround < ri->exp_subround)
- return -1;
- if (session->exp_subround > ri->exp_subround)
- return 1;
- return 0;
- }
- /* other rounds have no subrounds / repetitions to compare */
- return 0;
+ struct SetEntry *set;
+
+ GNUNET_assert (NULL != task->op);
+ set = lookup_set (session, &task->input_set);
+ GNUNET_assert (NULL != set);
+ GNUNET_SET_commit (task->op, set->h);
}
-/**
- * Do the next subround in the exp-scheme.
- * This function can be invoked as a timeout task, or called manually (tc will
be NULL then).
- *
- * @param cls the session
- * @param tc task context, for when this task is invoked by the scheduler,
- * NULL if invoked for another reason
- */
static void
-subround_over (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+put_diff (struct ConsensusSession *session,
+ struct DiffEntry *diff)
{
- struct ConsensusSession *session;
- struct GNUNET_TIME_Relative subround_timeout;
- int i;
+ struct GNUNET_HashCode hash;
- /* don't kick off next subround if we're shutting down */
- if ((NULL != tc) && (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
- return;
+ GNUNET_CRYPTO_hash (&diff->key, sizeof (struct DiffKey), &hash);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (session->diffmap, &hash,
diff,
+
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+}
- session = cls;
+static void
+put_set (struct ConsensusSession *session,
+ struct SetEntry *set)
+{
+ struct GNUNET_HashCode hash;
- GNUNET_assert (CONSENSUS_ROUND_EXCHANGE == session->current_round);
+ GNUNET_assert (NULL != set->h);
- if (tc != NULL)
+ GNUNET_CRYPTO_hash (&set->key, sizeof (struct SetKey), &hash);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (session->setmap, &hash,
set,
+
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+}
+
+
+static void
+put_rfn (struct ConsensusSession *session,
+ struct ReferendumEntry *rfn)
+{
+ struct GNUNET_HashCode hash;
+
+ GNUNET_CRYPTO_hash (&rfn->key, sizeof (struct RfnKey), &hash);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (session->rfnmap, &hash,
rfn,
+
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+}
+
+
+
+static void
+output_cloned_cb (void *cls, struct GNUNET_SET_Handle *copy)
+{
+ struct TaskEntry *task = (struct TaskEntry *) cls;
+ struct ConsensusSession *session = task->step->session;
+ struct SetEntry *set = GNUNET_new (struct SetEntry);
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: Received lazy copy, storing output set %s\n",
+ session->local_peer_idx, debug_str_set_key (&task->output_set));
+
+ set->key = task->output_set;
+ set->h = copy;
+ put_set (task->step->session, set);
+ run_task_remote_union (task->step->session, task);
+}
+
+
+static void
+run_task_remote_union (struct ConsensusSession *session, struct TaskEntry
*task)
+{
+ struct SetEntry *input;
+
+ input = lookup_set (session, &task->input_set);
+ GNUNET_assert (NULL != input);
+ GNUNET_assert (NULL != input->h);
+
+ /* We create the outputs for the operation here
+ (rather than in the set operation callback)
+ because we want something valid in there, even
+ if the other peer doesn't talk to us */
+
+ if (SET_KIND_NONE != task->output_set.set_kind)
{
- session->round_timeout_tid = NULL;
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "P%u: consensus subround timed
out\n",
- session->local_peer_idx);
+ /* If we don't have an existing output set,
+ we clone the input set. */
+ if (NULL == lookup_set (session, &task->output_set))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Output set missing, copying from input set\n");
+ /* Since the cloning is asynchronous,
+ we'll retry the current function once the copy
+ has been provided by the SET service. */
+ GNUNET_SET_copy_lazy (input->h, output_cloned_cb, task);
+ return;
+ }
}
- /* cancel timeout */
- if (session->round_timeout_tid != NULL)
+ if (RFN_KIND_NONE != task->output_rfn.rfn_kind)
{
- GNUNET_SCHEDULER_cancel (session->round_timeout_tid);
- session->round_timeout_tid = NULL;
+ if (NULL == lookup_rfn (session, &task->output_rfn))
+ {
+ struct ReferendumEntry *rfn;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: output rfn <%s> missing, creating.\n",
+ session->local_peer_idx,
+ debug_str_rfn_key (&task->output_rfn));
+
+ rfn = GNUNET_new (struct ReferendumEntry);
+ rfn->key = task->output_rfn;
+ rfn->rfn_elements = GNUNET_CONTAINER_multihashmap_create (8, GNUNET_NO);
+ rfn->peer_commited = GNUNET_new_array (session->num_peers, int);
+ put_rfn (session, rfn);
+ }
}
- for (i = 0; i < session->num_peers; i++)
+ if (task->key.peer1 == session->local_peer_idx)
{
- if (NULL != session->info[i].set_op)
+ struct GNUNET_CONSENSUS_RoundContextMessage rcm = { 0 };
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: Looking up set {%s} to run remote union\n",
+ session->local_peer_idx,
+ debug_str_set_key (&task->input_set));
+
+ rcm.header.type = htons (GNUNET_MESSAGE_TYPE_CONSENSUS_P2P_ROUND_CONTEXT);
+ rcm.header.size = htons (sizeof (struct
GNUNET_CONSENSUS_RoundContextMessage));
+
+ rcm.kind = htons (task->key.kind);
+ rcm.peer1 = htons (task->key.peer1);
+ rcm.peer2 = htons (task->key.peer2);
+ rcm.leader = htons (task->key.leader);
+ rcm.repetition = htons (task->key.repetition);
+
+ GNUNET_assert (NULL == task->op);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: initiating set op with P%u, our
set is %s\n",
+ session->local_peer_idx, task->key.peer2, debug_str_set_key
(&task->input_set));
+
+ // XXX: maybe this should be done while
+ // setting up tasks alreays?
+ task->op = GNUNET_SET_prepare (&session->peers[task->key.peer2],
+ &session->global_id,
+ &rcm.header,
+ GNUNET_SET_RESULT_ADDED, /* XXX: will be
obsolete soon */
+ set_result_cb,
+ task);
+
+ /* Referendums must be materialized as a set before */
+ GNUNET_assert (RFN_KIND_NONE == task->input_rfn.rfn_kind);
+
+ if (GNUNET_OK != GNUNET_SET_commit (task->op, input->h))
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%d: canceling stray op with
P%d\n",
- session->local_peer_idx, i);
- GNUNET_SET_operation_cancel (session->info[i].set_op);
- session->info[i].set_op = NULL;
+ GNUNET_break (0);
+ /* XXX: cleanup? */
+ return;
}
- /* we're in the new round, nothing finished yet */
- session->info[i].set_op_finished = GNUNET_NO;
}
+ else if (task->key.peer2 == session->local_peer_idx)
+ {
+ /* Wait for the other peer to contact us */
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: waiting set op with P%u\n",
+ session->local_peer_idx, task->key.peer1);
- if (session->exp_repetition >= NUM_EXP_REPETITIONS)
+ if (NULL != task->op)
+ {
+ GNUNET_assert (NULL == task->commited_set);
+ commit_set (session, task);
+ }
+ }
+ else
{
- round_over (session, NULL);
- return;
+ /* We made an error while constructing the task graph. */
+ GNUNET_assert (0);
}
+}
- if (session->exp_repetition == 0)
+
+static int
+rfn_majority (uint16_t num_peers,
+ struct ReferendumEntry *rfn,
+ struct RfnElementInfo *ri,
+ uint16_t threshold)
+{
+ unsigned int votes_add = 0;
+ unsigned int votes_remove = 0;
+ unsigned int num_commited = 0;
+ unsigned int maj_thresh;
+ unsigned int nv;
+ unsigned int tv;
+ unsigned int i;
+
+ for (i = 0; i < num_peers; i++)
{
- /* initialize everything for the log-rounds */
- session->exp_repetition = 1;
- session->exp_subround = 0;
- if (NULL == session->shuffle)
- session->shuffle = GNUNET_malloc ((sizeof (int)) * session->num_peers);
- if (NULL == session->shuffle_inv)
- session->shuffle_inv = GNUNET_malloc ((sizeof (int)) *
session->num_peers);
- for (i = 0; i < session->num_peers; i++)
- session->shuffle[i] = session->shuffle_inv[i] = i;
+ if (GNUNET_NO == rfn->peer_commited[i])
+ continue;
+ num_commited++;
+ if (ri->votes[i] == VOTE_ADD)
+ votes_add++;
+ if (ri->votes[i] == VOTE_REMOVE)
+ votes_remove++;
}
- else if (session->exp_subround + 1 >= (int) ceil (log2 (session->num_peers)))
+
+ /* Threshold to reach a majority among
+ submitted votes, may not be enough for the
+ global threshold. */
+ maj_thresh = (num_commited + 1) / 2;
+ /* Vote are relative to our local set, so it can only be
+ either all add or all remove */
+ GNUNET_assert ( (0 == votes_add) || (0 == votes_remove) );
+
+ if (votes_add > 0)
{
- /* subrounds done, start new log-round */
- session->exp_repetition++;
- session->exp_subround = 0;
- shuffle (session);
+ nv = votes_add;
+ tv = VOTE_ADD;
}
+ else if (votes_remove > 0)
+ {
+ nv = votes_remove;
+ tv = VOTE_REMOVE;
+ }
else
{
- session->exp_subround++;
+ nv = 0;
+ tv = VOTE_NONE;
}
- subround_timeout =
- GNUNET_TIME_relative_divide (GNUNET_TIME_absolute_get_difference
(session->conclude_start, session->conclude_deadline),
- 2 * NUM_EXP_REPETITIONS * ((int) ceil (log2
(session->num_peers))));
+ if ( (nv >= maj_thresh) && (nv >= threshold) )
+ return tv;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "subround timeout: %u ms\n",
subround_timeout.rel_value_us / 1000);
+ if ( ((num_commited - nv) >= maj_thresh) && ((num_commited - nv) >=
threshold) )
+ return VOTE_NONE;
- session->round_timeout_tid = GNUNET_SCHEDULER_add_delayed (subround_timeout,
subround_over, session);
+ return VOTE_CONTESTED;
+}
- /* determine the incoming and outgoing partner */
- find_partners (session);
- GNUNET_assert (session->partner_outgoing !=
&session->info[session->local_peer_idx]);
- GNUNET_assert (session->partner_incoming !=
&session->info[session->local_peer_idx]);
+struct SetChangeProgressCls
+{
+ int num_pending;
+ struct TaskEntry *task;
+};
- /* initiate set operation with the outgoing partner */
- if (NULL != session->partner_outgoing)
+
+static void
+eval_rfn_done (struct TaskEntry *task)
+{
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: EVAL_REFERENDUM done for task {%s}\n",
+ task->step->session->local_peer_idx, debug_str_task_key
(&task->key));
+
+ finish_task (task);
+}
+
+
+static void
+eval_rfn_progress (void *cls)
+{
+ struct SetChangeProgressCls *erc = cls;
+
+ GNUNET_assert (erc->num_pending > 0);
+
+ erc->num_pending--;
+
+ if (0 == erc->num_pending)
{
- struct GNUNET_CONSENSUS_RoundContextMessage *msg;
- msg = GNUNET_new (struct GNUNET_CONSENSUS_RoundContextMessage);
- msg->header.type = htons (GNUNET_MESSAGE_TYPE_CONSENSUS_P2P_ROUND_CONTEXT);
- msg->header.size = htons (sizeof *msg);
- msg->round = htonl (session->current_round);
- msg->exp_repetition = htonl (session->exp_repetition);
- msg->exp_subround = htonl (session->exp_subround);
+ struct TaskEntry *task = erc->task;
+ GNUNET_free (erc);
+ eval_rfn_done (task);
+ }
+}
- if (NULL != session->partner_outgoing->set_op)
+
+static void
+eval_rfn_copy_cb (void *cls, struct GNUNET_SET_Handle *copy)
+{
+ struct TaskEntry *task = (struct TaskEntry *) cls;
+ struct ConsensusSession *session = task->step->session;
+ struct SetEntry *set;
+
+ set = GNUNET_new (struct SetEntry);
+ set->h = copy;
+ set->key = task->output_set;
+
+ put_set (session, set);
+
+ run_task_eval_rfn (session, task);
+}
+
+
+/**
+ * Take an input set and an input referendum,
+ * apply the referendum with a threshold to the input
+ * set and store the result in the output set and/or output diff.
+ */
+static void
+run_task_eval_rfn (struct ConsensusSession *session, struct TaskEntry *task)
+{
+ struct GNUNET_CONTAINER_MultiHashMapIterator *iter;
+ struct ReferendumEntry *input_rfn;
+ struct RfnElementInfo *ri;
+ struct SetEntry *output_set = NULL;
+ struct DiffEntry *output_diff = NULL;
+ struct SetChangeProgressCls *progress_cls;
+
+ /* Have at least one output */
+ GNUNET_assert ( (task->output_set.set_kind != SET_KIND_NONE) ||
+ (task->output_diff.diff_kind != DIFF_KIND_NONE));
+
+ /* Not allowed as output */
+ GNUNET_assert ( (task->output_rfn.rfn_kind == RFN_KIND_NONE));
+
+ if (SET_KIND_NONE != task->output_set.set_kind)
+ {
+ /* We have a set output, thus the output set must
+ exist or copy it from the input set */
+ output_set = lookup_set (session, &task->output_set);
+ if (NULL == output_set)
{
- GNUNET_break (0);
- GNUNET_SET_operation_cancel (session->partner_outgoing->set_op);
+ struct SetEntry *input_set;
+
+ input_set = lookup_set (session, &task->input_set);
+ GNUNET_assert (NULL != input_set);
+ GNUNET_SET_copy_lazy (input_set->h,
+ eval_rfn_copy_cb,
+ task);
+ /* We'll be called again, this time with the
+ set ready. */
+ return;
}
- session->partner_outgoing->set_op =
- GNUNET_SET_prepare (&session->partner_outgoing->peer_id,
- &session->global_id,
- (struct GNUNET_MessageHeader *) msg,
- GNUNET_SET_RESULT_ADDED,
- set_result_cb, session->partner_outgoing);
- GNUNET_free (msg);
- if (GNUNET_OK != GNUNET_SET_commit (session->partner_outgoing->set_op,
session->element_set))
+ }
+
+ if (DIFF_KIND_NONE != task->output_diff.diff_kind)
+ {
+ output_diff = lookup_diff (session, &task->output_diff);
+ if (NULL == output_diff)
{
- GNUNET_break (0);
- session->partner_outgoing->set_op = NULL;
- session->partner_outgoing->set_op_finished = GNUNET_YES;
+ output_diff = GNUNET_new (struct DiffEntry);
+ output_diff->key = task->output_diff;
+ output_diff->changes = GNUNET_CONTAINER_multihashmap_create (8,
GNUNET_NO);
+ put_diff (session, output_diff);
}
}
- /* commit to the delayed set operation */
- if ((NULL != session->partner_incoming) && (NULL !=
session->partner_incoming->delayed_set_op))
+ progress_cls = GNUNET_new (struct SetChangeProgressCls);
+
+ input_rfn = lookup_rfn (session, &task->input_rfn);
+
+ GNUNET_assert (NULL != input_rfn);
+
+ iter = GNUNET_CONTAINER_multihashmap_iterator_create
(input_rfn->rfn_elements);
+ GNUNET_assert (NULL != iter);
+
+ while (GNUNET_YES == GNUNET_CONTAINER_multihashmap_iterator_next (iter,
NULL, (const void **) &ri))
{
- int cmp = rounds_compare (session,
&session->partner_incoming->delayed_round_info);
-
- if (NULL != session->partner_incoming->set_op)
+ int majority_vote = rfn_majority (session->num_peers, input_rfn, ri,
task->threshold);
+ switch (majority_vote)
{
- GNUNET_break (0);
- GNUNET_SET_operation_cancel (session->partner_incoming->set_op);
- session->partner_incoming->set_op = NULL;
+ case VOTE_ADD:
+ if (NULL != output_set)
+ {
+ progress_cls->num_pending++;
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_SET_add_element (output_set->h,
+ ri->element,
+ eval_rfn_progress,
+ progress_cls));
+ }
+ if (NULL != output_diff)
+ {
+ diff_insert (output_diff, 1, ri->element);
+ }
+ break;
+ case VOTE_CONTESTED:
+ if (NULL != output_set)
+ output_set->is_contested = GNUNET_YES;
+ /* fallthrough */
+ case VOTE_REMOVE:
+ if (NULL != output_set)
+ {
+ progress_cls->num_pending++;
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_SET_remove_element (output_set->h,
+ ri->element,
+ eval_rfn_progress,
+ progress_cls));
+ }
+ if (NULL != output_diff)
+ {
+ diff_insert (output_diff, -1, ri->element);
+ }
+ break;
+ case VOTE_NONE:
+ /* Nothing to do. */
+ break;
+ default:
+ /* not reached */
+ GNUNET_assert (0);
}
- if (cmp == 0)
+ }
+ GNUNET_CONTAINER_multihashmap_iterator_destroy (iter);
+
+ if (progress_cls->num_pending == 0)
+ {
+ // call closure right now, no pending ops
+ GNUNET_free (progress_cls);
+ eval_rfn_done (task);
+ }
+}
+
+
+static void
+apply_diff_copy_cb (void *cls, struct GNUNET_SET_Handle *copy)
+{
+ struct TaskEntry *task = (struct TaskEntry *) cls;
+ struct ConsensusSession *session = task->step->session;
+ struct SetEntry *set;
+
+ set = GNUNET_new (struct SetEntry);
+ set->h = copy;
+ set->key = task->output_set;
+
+ put_set (session, set);
+
+ run_task_apply_diff (session, task);
+}
+
+
+static void
+apply_diff_done (struct TaskEntry *task)
+{
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "P%u: APPLY_DIFF done for task {%s}\n",
+ task->step->session->local_peer_idx, debug_str_task_key
(&task->key));
+ finish_task (task);
+}
+
+
+static void
+apply_diff_progress (void *cls)
+{
+ struct SetChangeProgressCls *erc = cls;
+
+ GNUNET_assert (erc->num_pending > 0);
+
+ erc->num_pending--;
+
+ if (0 == erc->num_pending)
+ {
+ struct TaskEntry *task = erc->task;
+ GNUNET_free (erc);
+ apply_diff_done (task);
+ }
+}
+
+
+static void
+run_task_apply_diff (struct ConsensusSession *session, struct TaskEntry *task)
+{
+ struct SetEntry *output_set;
+ struct DiffEntry *input_diff;
+ struct GNUNET_CONTAINER_MultiHashMapIterator *iter;
+ struct DiffElementInfo *di;
+ struct SetChangeProgressCls *progress_cls;
+
+ GNUNET_assert (task->output_set.set_kind != SET_KIND_NONE);
+ GNUNET_assert (task->input_diff.diff_kind != DIFF_KIND_NONE);
+
+ input_diff = lookup_diff (session, &task->input_diff);
+
+ GNUNET_assert (NULL != input_diff);
+
+ output_set = lookup_set (session, &task->output_set);
+
+ if (NULL == output_set)
+ {
+ struct SetEntry *input_set;
+
+ input_set = lookup_set (session, &task->input_set);
+ GNUNET_assert (NULL != input_set);
+ GNUNET_SET_copy_lazy (input_set->h,
+ apply_diff_copy_cb,
+ task);
+ /* We'll be called again, this time with the
+ set ready. */
+ return;
+ }
+
+ progress_cls = GNUNET_new (struct SetChangeProgressCls);
+
+ iter = GNUNET_CONTAINER_multihashmap_iterator_create (input_diff->changes);
+
+ while (GNUNET_YES == GNUNET_CONTAINER_multihashmap_iterator_next (iter,
NULL, (const void **) &di))
+ {
+ if (di->weight > 0)
{
- if (GNUNET_OK != GNUNET_SET_commit
(session->partner_incoming->delayed_set_op, session->element_set))
- {
- GNUNET_break (0);
- }
- session->partner_incoming->set_op =
session->partner_incoming->delayed_set_op;
- session->partner_incoming->delayed_set_op = NULL;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%d resumed delayed round with
P%d\n",
- session->local_peer_idx, (int) (session->partner_incoming -
session->info));
+ progress_cls->num_pending++;
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_SET_remove_element (output_set->h,
+ di->element,
+ apply_diff_progress,
+ progress_cls));
}
- else
+ else if (di->weight < 0)
{
- /* this should not happen -- a round has been skipped! */
- GNUNET_break_op (0);
+ progress_cls->num_pending++;
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_SET_add_element (output_set->h,
+ di->element,
+ apply_diff_progress,
+ progress_cls));
}
}
+ GNUNET_CONTAINER_multihashmap_iterator_destroy (iter);
+
+ if (progress_cls->num_pending == 0)
+ {
+ // call closure right now, no pending ops
+ GNUNET_free (progress_cls);
+ apply_diff_done (task);
+ }
+}
+
+
+static void
+run_task_finish (struct ConsensusSession *session, struct TaskEntry *task)
+{
+ struct SetEntry *final_set;
+
+ final_set = lookup_set (session, &task->input_set);
+
+ GNUNET_assert (NULL != final_set);
+
+
+ GNUNET_SET_iterate (final_set->h,
+ send_to_client_iter,
+ task);
+}
+
+static void
+run_task (struct ConsensusSession *session, struct TaskEntry *task)
+{
+ GNUNET_assert (GNUNET_NO == task->is_running);
+ GNUNET_assert (GNUNET_NO == task->is_finished);
+
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: running task {%s}\n",
session->local_peer_idx, debug_str_task_key (&task->key));
+
+ switch (task->action)
+ {
+ case ACTION_RECONCILE:
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: running ACTION_RECONCILE
task\n", session->local_peer_idx);
+ run_task_remote_union (session, task);
+ break;
+ case ACTION_EVAL_RFN:
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: running ACTION_EVAL_RFN
task\n", session->local_peer_idx);
+ run_task_eval_rfn (session, task);
+ break;
+ case ACTION_APPLY_DIFF:
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: running ACTION_APPLY_DIFF
task\n", session->local_peer_idx);
+ run_task_apply_diff (session, task);
+ break;
+ case ACTION_FINISH:
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: running ACTION_FINISH
task\n", session->local_peer_idx);
+ run_task_finish (session, task);
+ break;
+ default:
+ /* not reached */
+ GNUNET_assert (0);
+ }
+ task->is_running = GNUNET_YES;
+}
+
+
+static void finish_step (struct Step *step)
+{
+ unsigned int i;
+
+ GNUNET_assert (step->finished_tasks == step->tasks_len);
+ GNUNET_assert (GNUNET_YES == step->is_running);
+ GNUNET_assert (GNUNET_NO == step->is_finished);
+
#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "All tasks of step `%s' with %u subordinates finished.\n",
+ step->debug_name,
+ step->subordinates_len);
+#endif
+
+ for (i = 0; i < step->subordinates_len; i++)
{
- int in;
- int out;
- if (session->partner_outgoing == NULL)
- out = -1;
- else
- out = (int) (session->partner_outgoing - session->info);
- if (session->partner_incoming == NULL)
- in = -1;
- else
- in = (int) (session->partner_incoming - session->info);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: doing exp-round, r=%d, sub=%d,
in: %d, out: %d\n", session->local_peer_idx,
- session->exp_repetition, session->exp_subround, in, out);
+ GNUNET_assert (step->subordinates[i]->pending_prereq > 0);
+ step->subordinates[i]->pending_prereq--;
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Decreased pending_prereq to %u for step `%s'.\n",
+ step->subordinates[i]->pending_prereq,
+ step->subordinates[i]->debug_name);
+
+#endif
}
-#endif /* GNUNET_EXTRA_LOGGING */
+ step->is_finished = GNUNET_YES;
+
+ // XXX: maybe schedule as task to avoid recursion?
+ run_ready_steps (step->session);
}
+/*
+ * Run all steps of the session that don't any
+ * more dependencies.
+ */
+static void
+run_ready_steps (struct ConsensusSession *session)
+{
+ struct Step *step;
+
+ step = session->steps_head;
+
+ while (NULL != step)
+ {
+ if ( (GNUNET_NO == step->is_running) && (0 == step->pending_prereq) )
+ {
+ size_t i;
+
+ GNUNET_assert (0 == step->finished_tasks);
+
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: Running step `%s' of round
%d:%d with %d tasks and %d subordinates\n",
+ session->local_peer_idx,
+ step->debug_name,
+ step->start_round, step->num_rounds, step->tasks_len,
step->subordinates_len);
+#endif
+
+ step->is_running = GNUNET_YES;
+ for (i = 0; i < step->tasks_len; i++)
+ run_task (session, step->tasks[i]);
+
+ /* Sometimes there is no task to trigger finishing the step, so we have
to do it here. */
+ if ( (step->finished_tasks == step->tasks_len) && (GNUNET_NO ==
step->is_finished))
+ finish_step (step);
+
+ /* Running the next ready steps will be triggered by task completion */
+ return;
+ }
+ step = step->next;
+ }
+
+ return;
+}
+
+
+
+static void
+finish_task (struct TaskEntry *task)
+{
+ GNUNET_assert (GNUNET_NO == task->is_finished);
+ task->is_finished = GNUNET_YES;
+
+ task->step->finished_tasks++;
+
+ if (task->step->finished_tasks == task->step->tasks_len)
+ finish_step (task->step);
+}
+
+
/**
* Search peer in the list of peers in session.
*
@@ -886,7 +1557,7 @@
{
int i;
for (i = 0; i < session->num_peers; i++)
- if (0 == memcmp (peer, &session->info[i].peer_id, sizeof *peer))
+ if (0 == memcmp (peer, &session->peers[i], sizeof (struct
GNUNET_PeerIdentity)))
return i;
return -1;
}
@@ -899,27 +1570,24 @@
* exactly the same peers, the global id will be different.
*
* @param session session to generate the global id for
- * @param session_id local id of the consensus session
+ * @param local_session_id local id of the consensus session
*/
static void
compute_global_id (struct ConsensusSession *session,
- const struct GNUNET_HashCode *session_id)
+ const struct GNUNET_HashCode *local_session_id)
{
- int i;
- struct GNUNET_HashCode tmp;
- struct GNUNET_HashCode phash;
+ const char *salt = "gnunet-service-consensus/session_id";
- /* FIXME: use kdf? */
-
- session->global_id = *session_id;
- for (i = 0; i < session->num_peers; ++i)
- {
- GNUNET_CRYPTO_hash (&session->info[i].peer_id, sizeof (struct
GNUNET_PeerIdentity), &phash);
- GNUNET_CRYPTO_hash_xor (&session->global_id, &phash, &tmp);
- session->global_id = tmp;
- GNUNET_CRYPTO_hash (&session->global_id, sizeof (struct
GNUNET_PeerIdentity), &tmp);
- session->global_id = tmp;
- }
+ GNUNET_assert (GNUNET_YES ==
+ GNUNET_CRYPTO_kdf (&session->global_id,
+ sizeof (struct GNUNET_HashCode),
+ salt,
+ strlen (salt),
+ session->peers,
+ session->num_peers * sizeof (struct
GNUNET_PeerIdentity),
+ local_session_id,
+ sizeof (struct GNUNET_HashCode),
+ NULL));
}
@@ -948,7 +1616,6 @@
unsigned int local_peer_in_list;
uint32_t listed_peers;
const struct GNUNET_PeerIdentity *msg_peers;
- struct GNUNET_PeerIdentity *peers;
unsigned int i;
GNUNET_assert (NULL != join_msg);
@@ -973,25 +1640,27 @@
if (GNUNET_NO == local_peer_in_list)
session->num_peers++;
- peers = GNUNET_malloc (session->num_peers * sizeof (struct
GNUNET_PeerIdentity));
+ session->peers = GNUNET_malloc (session->num_peers * sizeof (struct
GNUNET_PeerIdentity));
if (GNUNET_NO == local_peer_in_list)
- peers[session->num_peers - 1] = my_peer;
+ session->peers[session->num_peers - 1] = my_peer;
- memcpy (peers, msg_peers, listed_peers * sizeof (struct
GNUNET_PeerIdentity));
- qsort (peers, session->num_peers, sizeof (struct GNUNET_PeerIdentity),
&peer_id_cmp);
+ memcpy (session->peers, msg_peers, listed_peers * sizeof (struct
GNUNET_PeerIdentity));
+ qsort (session->peers, session->num_peers, sizeof (struct
GNUNET_PeerIdentity), &peer_id_cmp);
+}
- session->info = GNUNET_malloc (session->num_peers * sizeof (struct
ConsensusPeerInformation));
- for (i = 0; i < session->num_peers; ++i)
- {
- /* initialize back-references, so consensus peer information can
- * be used as closure */
- session->info[i].session = session;
- session->info[i].peer_id = peers[i];
- }
+static struct TaskEntry *
+lookup_task (struct ConsensusSession *session,
+ struct TaskKey *key)
+{
+ struct GNUNET_HashCode hash;
- GNUNET_free (peers);
+
+ GNUNET_CRYPTO_hash (key, sizeof (struct TaskKey), &hash);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Looking up task hash %s\n",
+ GNUNET_h2s (&hash));
+ return GNUNET_CONTAINER_multihashmap_get (session->taskmap, &hash);
}
@@ -1017,12 +1686,10 @@
struct GNUNET_SET_Request *request)
{
struct ConsensusSession *session = cls;
- struct GNUNET_CONSENSUS_RoundContextMessage *msg = (struct
GNUNET_CONSENSUS_RoundContextMessage *) context_msg;
- struct ConsensusPeerInformation *cpi;
- struct GNUNET_SET_OperationHandle *set_op;
- struct RoundInfo round_info;
- int index;
- int cmp;
+ struct TaskKey tk;
+ struct TaskEntry *task;
+ struct GNUNET_CONSENSUS_RoundContextMessage *cm;
+ GNUNET_SET_ResultIterator my_result_cb;
if (NULL == context_msg)
{
@@ -1030,85 +1697,524 @@
return;
}
- index = get_peer_idx (other_peer, session);
+ if (GNUNET_MESSAGE_TYPE_CONSENSUS_P2P_ROUND_CONTEXT != ntohs
(context_msg->type))
+ {
+ GNUNET_break_op (0);
+ return;
+ }
- if (index < 0)
+ if (sizeof (struct GNUNET_CONSENSUS_RoundContextMessage) != ntohs
(context_msg->size))
{
GNUNET_break_op (0);
return;
}
- round_info.round = ntohl (msg->round);
- round_info.exp_repetition = ntohl (msg->exp_repetition);
- round_info.exp_subround = ntohl (msg->exp_subround);
+ cm = (struct GNUNET_CONSENSUS_RoundContextMessage *) context_msg;
- cpi = &session->info[index];
+ tk = ((struct TaskKey) {
+ .kind = ntohs (cm->kind),
+ .peer1 = ntohs (cm->peer1),
+ .peer2 = ntohs (cm->peer2),
+ .repetition = ntohs (cm->repetition),
+ .leader = ntohs (cm->leader),
+ });
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%d got set request from P%d\n",
session->local_peer_idx, index);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: got req for task %s\n",
+ session->local_peer_idx, debug_str_task_key (&tk));
- switch (session->current_round)
+ task = lookup_task (session, &tk);
+
+ if (NULL == task)
{
- case CONSENSUS_ROUND_BEGIN:
- /* we're in the begin round, so requests for the exchange round may
- * come in, they will be delayed for now! */
- case CONSENSUS_ROUND_EXCHANGE:
- cmp = rounds_compare (session, &round_info);
- if (cmp > 0)
- {
- /* the other peer is too late */
- LOG_PP (GNUNET_ERROR_TYPE_DEBUG, cpi, "too late for the current
round\n");
- return;
- }
- /* kill old request, if any. this is legal,
- * as the other peer would not make a new request if it would want to
- * complete the old one! */
- if (NULL != cpi->set_op)
- {
- LOG_PP (GNUNET_ERROR_TYPE_INFO, cpi, "got new request from same peer,
canceling old one\n");
- GNUNET_SET_operation_cancel (cpi->set_op);
- cpi->set_op = NULL;
- }
- set_op = GNUNET_SET_accept (request, GNUNET_SET_RESULT_ADDED,
- set_result_cb, &session->info[index]);
- if (cmp == 0)
- {
- /* we're in exactly the right round for the incoming request */
- if (cpi != cpi->session->partner_incoming)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "P%u: got request from %u (with
matching round), "
- "but incoming partner is %d\n",
cpi->session->local_peer_idx, cpi - cpi->session->info,
- ((NULL == cpi->session->partner_incoming) ? -1 :
(cpi->session->partner_incoming - cpi->session->info)));
- GNUNET_SET_operation_cancel (set_op);
- return;
- }
- cpi->set_op = set_op;
- if (GNUNET_OK != GNUNET_SET_commit (set_op, session->element_set))
- {
- GNUNET_break (0);
- }
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%d commited to set request from
P%d\n", session->local_peer_idx, index);
- }
- else
- {
- /* we still have wait until we have finished the current round,
- * as the other peer's round is larger */
- cpi->delayed_set_op = set_op;
- cpi->delayed_round_info = round_info;
- /* The current setop is finished, as we canceled the current setop
above. */
- cpi->set_op_finished = GNUNET_YES;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%d delaying set request from
P%d\n", session->local_peer_idx, index);
- }
- break;
- default:
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "P%d got unexpected set request in
round %d from P%d\n",
- session->local_peer_idx, session->current_round, index);
- GNUNET_break_op (0);
- return;
+ GNUNET_break_op (0);
+ return;
}
+
+ if (ACTION_RECONCILE != task->action)
+ {
+ GNUNET_break_op (0);
+ return;
+ }
+
+ if (GNUNET_YES == task->is_finished)
+ {
+ GNUNET_break_op (0);
+ return;
+ }
+
+ if (task->key.peer2 != session->local_peer_idx)
+ {
+ /* We're being asked, so we must be thne 2nd peer. */
+ GNUNET_break_op (0);
+ return;
+ }
+
+ if (task->key.peer1 == task->key.peer2)
+ my_result_cb = set_result_cb_loop;
+ else
+ my_result_cb = set_result_cb;
+
+ task->op = GNUNET_SET_accept (request,
+ GNUNET_SET_RESULT_ADDED, /* XXX: obsolete soon
*/
+ my_result_cb,
+ task);
+
+ /* If the task hasn't been started yet,
+ we wait for that until we commit. */
+
+ if (GNUNET_YES == task->is_running)
+ {
+ commit_set (session, task);
+ }
}
+
+static void
+put_task (struct GNUNET_CONTAINER_MultiHashMap *taskmap,
+ struct TaskEntry *t)
+{
+ struct GNUNET_HashCode round_hash;
+ struct Step *s;
+
+ GNUNET_assert (NULL != t->step);
+
+ t = GNUNET_memdup (t, sizeof (struct TaskEntry));
+
+ s = t->step;
+
+ if (s->tasks_len == s->tasks_cap)
+ {
+ unsigned int target_size = 3 * (s->tasks_cap + 1) / 2;
+ GNUNET_array_grow (s->tasks,
+ s->tasks_cap,
+ target_size);
+ }
+
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_assert (NULL != s->debug_name);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Putting task <%s> into step `%s'\n",
+ debug_str_task_key (&t->key),
+ s->debug_name);
+#endif
+
+ s->tasks[s->tasks_len] = t;
+ s->tasks_len++;
+
+ GNUNET_CRYPTO_hash (&t->key, sizeof (struct TaskKey), &round_hash);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (taskmap, &round_hash, t,
+
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+}
+
+
+static void
+install_step_timeouts (struct ConsensusSession *session)
+{
+ /* Given the fully constructed task graph
+ with rounds for tasks, we can give the tasks timeouts. */
+
+ /* XXX: implement! */
+}
+
+
+
+/*
+ * Arrange two peers in some canonical order.
+ */
+static void
+arrange_peers (uint16_t *p1, uint16_t *p2, uint16_t n)
+{
+ uint16_t a;
+ uint16_t b;
+
+ GNUNET_assert (*p1 < n);
+ GNUNET_assert (*p2 < n);
+
+ if (*p1 < *p2)
+ {
+ a = *p1;
+ b = *p2;
+ }
+ else
+ {
+ a = *p2;
+ b = *p1;
+ }
+
+ /* For uniformly random *p1, *p2,
+ this condition is true with 50% chance */
+ if (((b - a) + n) % n <= n / 2)
+ {
+ *p1 = a;
+ *p2 = b;
+ }
+ else
+ {
+ *p1 = b;
+ *p2 = a;
+ }
+}
+
+
/**
+ * Record @a dep as a dependency of @step.
+ */
+static void
+step_depend_on (struct Step *step, struct Step *dep)
+{
+ /* We're not checking for cyclic dependencies,
+ but this is a cheap sanity check. */
+ GNUNET_assert (step != dep);
+ GNUNET_assert (NULL != step);
+ GNUNET_assert (NULL != dep);
+ // XXX: make rounds work
+ //GNUNET_assert (dep->start_round <= step->start_round);
+
+#ifdef GNUNET_EXTRA_LOGGING
+ /* Make sure we have complete debugging information.
+ Also checks that we don't screw up too badly
+ constructing the task graph. */
+ GNUNET_assert (NULL != step->debug_name);
+ GNUNET_assert (NULL != dep->debug_name);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Making step `%s' depend on `%s'\n",
+ step->debug_name,
+ dep->debug_name);
+#endif
+
+ if (dep->subordinates_cap == dep->subordinates_len)
+ {
+ unsigned int target_size = 3 * (dep->subordinates_cap + 1) / 2;
+ GNUNET_array_grow (dep->subordinates,
+ dep->subordinates_cap,
+ target_size);
+ }
+
+ GNUNET_assert (dep->subordinates_len <= dep->subordinates_cap);
+
+ dep->subordinates[dep->subordinates_len] = step;
+ dep->subordinates_len++;
+
+ step->pending_prereq++;
+}
+
+
+static struct Step *
+create_step (struct ConsensusSession *session, int start_round, int num_rounds)
+{
+ struct Step *step;
+ step = GNUNET_new (struct Step);
+ step->session = session;
+ step->start_round = start_round;
+ step->num_rounds = num_rounds;
+ GNUNET_CONTAINER_DLL_insert_tail (session->steps_head,
+ session->steps_tail,
+ step);
+ return step;
+}
+
+
+/**
+ * Construct the task graph for a single
+ * gradecast.
+ */
+static void
+construct_task_graph_gradecast (struct ConsensusSession *session,
+ uint16_t rep,
+ uint16_t lead,
+ struct Step *step_before,
+ struct Step *step_after)
+{
+ uint16_t n = session->num_peers;
+ uint16_t t = n / 3;
+
+ uint16_t me = session->local_peer_idx;
+
+ uint16_t p1;
+ uint16_t p2;
+
+ /* The task we're currently setting up. */
+ struct TaskEntry task;
+
+ struct Step *step;
+ struct Step *prev_step;
+
+ uint16_t round;
+
+ unsigned int k;
+
+ round = step_before->start_round + step_before->num_rounds;
+
+ /* gcast step 1: leader disseminates */
+
+ step = create_step (session, round, 1);
+
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_asprintf (&step->debug_name, "disseminate leader %u rep %u", lead,
rep);
+#endif
+ step_depend_on (step, step_before);
+
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "P%d: Considering leader %d\n",
session->local_peer_idx, lead);
+
+ if (lead == me)
+ {
+ for (k = 0; k < n; k++)
+ {
+ if (k == me)
+ continue;
+ p1 = me;
+ p2 = k;
+ arrange_peers (&p1, &p2, n);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "P%d: GC LEADER(1): %d %d %d %d\n",
session->local_peer_idx, p1, p2, rep, lead);
+ task = ((struct TaskEntry) {
+ .step = step,
+ .action = ACTION_RECONCILE,
+ .key = (struct TaskKey) { PHASE_KIND_GRADECAST_LEADER, p1, p2, rep, me
},
+ .input_set = (struct SetKey) { SET_KIND_CURRENT, rep },
+ .output_set = (struct SetKey) { SET_KIND_NONE },
+ });
+ put_task (session->taskmap, &task);
+ }
+ /* We run this task to make sure that the leader
+ has the stored the SET_KIND_LEADER set of himself,
+ so he can participate in the rest of the gradecast
+ without the code having to handle any special cases. */
+ task = ((struct TaskEntry) {
+ .step = step,
+ .action = ACTION_RECONCILE,
+ .key = (struct TaskKey) { PHASE_KIND_GRADECAST_LEADER, me, me, rep, me },
+ .input_set = (struct SetKey) { SET_KIND_CURRENT, rep },
+ .output_set = (struct SetKey) { SET_KIND_LEADER, rep, me },
+ .output_diff = (struct DiffKey) { DIFF_KIND_LEADER, rep, me },
+ });
+ put_task (session->taskmap, &task);
+ }
+ else
+ {
+ p1 = me;
+ p2 = lead;
+ arrange_peers (&p1, &p2, n);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "P%d: GC LEADER(2): %d %d %d %d\n",
session->local_peer_idx, p1, p2, rep, lead);
+ task = ((struct TaskEntry) {
+ .step = step,
+ .action = ACTION_RECONCILE,
+ .key = (struct TaskKey) { PHASE_KIND_GRADECAST_LEADER, p1, p2, rep,
lead},
+ .input_set = (struct SetKey) { SET_KIND_CURRENT, rep },
+ .output_set = (struct SetKey) { SET_KIND_LEADER, rep, lead },
+ .output_diff = (struct DiffKey) { DIFF_KIND_LEADER, rep, lead },
+ });
+ put_task (session->taskmap, &task);
+ }
+
+ /* gcast phase 2: echo */
+ prev_step = step;
+ step = create_step (session, round, 1);
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_asprintf (&step->debug_name, "echo leader %u rep %u", lead, rep);
+#endif
+ step_depend_on (step, prev_step);
+
+ for (k = 0; k < n; k++)
+ {
+ p1 = k;
+ p2 = me;
+ arrange_peers (&p1, &p2, n);
+ task = ((struct TaskEntry) {
+ .step = step,
+ .action = ACTION_RECONCILE,
+ .key = (struct TaskKey) { PHASE_KIND_GRADECAST_ECHO, p1, p2, rep, lead },
+ .input_set = (struct SetKey) { SET_KIND_LEADER, rep, lead },
+ .output_rfn = (struct RfnKey) { RFN_KIND_ECHO, rep, lead },
+ });
+ put_task (session->taskmap, &task);
+ }
+
+ prev_step = step;
+ step = create_step (session, round, 1);
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_asprintf (&step->debug_name, "echo grade leader %u rep %u", lead,
rep);
+#endif
+ step_depend_on (step, prev_step);
+
+ arrange_peers (&p1, &p2, n);
+ task = ((struct TaskEntry) {
+ .key = (struct TaskKey) { PHASE_KIND_GRADECAST_ECHO_GRADE, -1, -1, rep,
lead },
+ .step = step,
+ .action = ACTION_EVAL_RFN,
+ .input_set = (struct SetKey) { SET_KIND_LEADER, rep, lead },
+ .input_rfn = (struct RfnKey) { RFN_KIND_ECHO, rep, lead },
+ .output_set = (struct SetKey) { SET_KIND_ECHO_RESULT, rep, lead },
+ .threshold = n - t,
+ });
+ put_task (session->taskmap, &task);
+
+ prev_step = step;
+ step = create_step (session, round, 1);
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_asprintf (&step->debug_name, "confirm leader %u rep %u", lead, rep);
+#endif
+ step_depend_on (step, prev_step);
+
+ /* gcast phase 3: confirmation and grading */
+ for (k = 0; k < n; k++)
+ {
+ p1 = k;
+ p2 = me;
+ arrange_peers (&p1, &p2, n);
+ task = ((struct TaskEntry) {
+ .step = step,
+ .action = ACTION_RECONCILE,
+ .key = (struct TaskKey) { PHASE_KIND_GRADECAST_CONFIRM, p1, p2, rep,
lead},
+ .input_set = (struct SetKey) { SET_KIND_ECHO_RESULT, rep, lead },
+ .output_rfn = (struct RfnKey) { RFN_KIND_CONFIRM, rep, lead },
+ });
+ put_task (session->taskmap, &task);
+ }
+
+ prev_step = step;
+ step = create_step (session, round, 1);
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_asprintf (&step->debug_name, "confirm grade leader %u rep %u", lead,
rep);
+#endif
+ step_depend_on (step, prev_step);
+
+ // evaluate ConfirmationReferendum and
+ // apply it to the LeaderReferendum
+ task = ((struct TaskEntry) {
+ .step = step,
+ .key = (struct TaskKey) { PHASE_KIND_GRADECAST_CONFIRM_GRADE, -1, -1, rep,
lead },
+ .action = ACTION_EVAL_RFN,
+ .input_rfn = (struct RfnKey) { RFN_KIND_ECHO, rep, lead },
+ .output_diff = (struct DiffKey) { DIFF_KIND_GRADECAST_RESULT, rep },
+ });
+ put_task (session->taskmap, &task);
+
+ step_depend_on (step_after, step);
+}
+
+
+static void
+construct_task_graph (struct ConsensusSession *session)
+{
+ uint16_t n = session->num_peers;
+ uint16_t t = n / 3;
+
+ uint16_t me = session->local_peer_idx;
+
+ uint16_t p1;
+ uint16_t p2;
+
+ /* The task we're currently setting up. */
+ struct TaskEntry task;
+
+ /* Current leader */
+ unsigned int lead;
+
+ struct Step *step;
+ struct Step *prev_step;
+
+ unsigned int round = 0;
+
+ unsigned int i;
+
+ // XXX: introduce first step,
+ // where we wait for all insert acks
+ // from the set service
+
+ /* faster but brittle all-to-all */
+
+ // XXX: Not implemented yet
+
+ /* all-to-all step */
+
+ step = create_step (session, round, 1);
+
+#ifdef GNUNET_EXTRA_LOGGING
+ step->debug_name = GNUNET_strdup ("all to all");
+#endif
+
+ for (i = 0; i < n; i++)
+ {
+ p1 = me;
+ p2 = i;
+ arrange_peers (&p1, &p2, n);
+ task = ((struct TaskEntry) {
+ .key = (struct TaskKey) { PHASE_KIND_ALL_TO_ALL, p1, p2, -1, -1 },
+ .step = step,
+ .action = ACTION_RECONCILE,
+ .input_set = (struct SetKey) { SET_KIND_CURRENT, 0 },
+ .output_set = (struct SetKey) { SET_KIND_CURRENT, 0 },
+ });
+ put_task (session->taskmap, &task);
+ }
+
+ round++;
+
+ prev_step = step;
+ step = NULL;
+
+ /* Byzantine union */
+
+ /* sequential repetitions of the gradecasts */
+ for (i = 0; i < t + 1; i++)
+ {
+ struct Step *step_rep_start;
+ struct Step *step_rep_end;
+
+ step_rep_start = create_step (session, round, 1);
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_asprintf (&step_rep_start->debug_name, "gradecast start rep %u",
i);
+#endif
+
+ step_depend_on (step_rep_start, prev_step);
+
+ step_rep_end = create_step (session, round, 1);
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_asprintf (&step_rep_end->debug_name, "gradecast end rep %u", i);
+#endif
+
+ /* parallel gradecasts */
+ for (lead = 0; lead < n; lead++)
+ construct_task_graph_gradecast (session, i, lead, step_rep_start,
step_rep_end);
+
+ // TODO: add peers to ignore list,
+ //
+ // evaluate ConfirmationReferendum and
+ // apply it to the LeaderReferendum
+ task = ((struct TaskEntry) {
+ .step = step_rep_end,
+ .key = (struct TaskKey) { PHASE_KIND_GRADECAST_APPLY_RESULT, -1, -1, i,
-1},
+ .action = ACTION_APPLY_DIFF,
+ .input_set = (struct SetKey) { SET_KIND_CURRENT, i },
+ .input_diff = (struct DiffKey) { DIFF_KIND_GRADECAST_RESULT, i },
+ .output_set = (struct SetKey) { SET_KIND_CURRENT, i + 1 },
+ });
+ put_task (session->taskmap, &task);
+
+ prev_step = step_rep_end;
+ }
+
+ /* There is no next gradecast round, thus the final
+ start step is the overall end step of the gradecasts */
+ step = create_step (session, round, 1);
+#ifdef GNUNET_EXTRA_LOGGING
+ GNUNET_asprintf (&step->debug_name, "finish");
+#endif
+ step_depend_on (step, prev_step);
+
+ task = ((struct TaskEntry) {
+ .step = step,
+ .key = (struct TaskKey) { PHASE_KIND_FINISH, -1, -1, -1, -1 },
+ .input_set = (struct SetKey) { SET_KIND_CURRENT, t + 1 },
+ .action = ACTION_FINISH,
+ });
+
+ put_task (session->taskmap, &task);
+}
+
+
+/**
* Initialize the session, continue receiving messages from the owning client
*
* @param session the session to initialize
@@ -1124,9 +2230,9 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "session with %u peers\n",
session->num_peers);
compute_global_id (session, &join_msg->session_id);
- /* check if some local client already owns the session.
- * it is only legal to have a session with an existing global id
- * if all other sessions with this global id are finished.*/
+ /* Check if some local client already owns the session.
+ It is only legal to have a session with an existing global id
+ if all other sessions with this global id are finished.*/
other_session = sessions_head;
while (NULL != other_session)
{
@@ -1133,12 +2239,12 @@
if ((other_session != session) &&
(0 == GNUNET_CRYPTO_hash_cmp (&session->global_id,
&other_session->global_id)))
{
- if (CONSENSUS_ROUND_FINISH != other_session->current_round)
- {
- GNUNET_break (0);
- destroy_session (session);
- return;
- }
+ //if (CONSENSUS_ROUND_FINISH != other_session->current_round)
+ //{
+ // GNUNET_break (0);
+ // destroy_session (session);
+ // return;
+ //}
break;
}
other_session = other_session->next;
@@ -1152,12 +2258,30 @@
session->local_peer_idx = get_peer_idx (&my_peer, session);
GNUNET_assert (-1 != session->local_peer_idx);
- session->element_set = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION);
- GNUNET_assert (NULL != session->element_set);
session->set_listener = GNUNET_SET_listen (cfg, GNUNET_SET_OPERATION_UNION,
&session->global_id,
set_listen_cb, session);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%d is the local peer\n",
session->local_peer_idx);
+
+ session->setmap = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
+ session->taskmap = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
+ session->diffmap = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
+ session->rfnmap = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
+
+ {
+ struct SetEntry *client_set;
+ client_set = GNUNET_new (struct SetEntry);
+ client_set->h = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION);
+ client_set->key = ((struct SetKey) { SET_KIND_CURRENT, 0, 0 });
+ put_set (session, client_set);
+ }
+
+ session->peers_ignored = GNUNET_new_array (session->num_peers, int);
+
+ /* Just construct the task graph,
+ but don't run anything until the client calls conclude. */
+ construct_task_graph (session);
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "session %s initialized\n", GNUNET_h2s
(&session->global_id));
}
@@ -1212,6 +2336,13 @@
}
+static void
+client_insert_done (void *cls)
+{
+ // FIXME: implement
+}
+
+
/**
* Called when a client performs an insert operation.
*
@@ -1228,6 +2359,7 @@
struct GNUNET_CONSENSUS_ElementMessage *msg;
struct GNUNET_SET_Element *element;
ssize_t element_size;
+ struct GNUNET_SET_Handle *initial_set;
session = get_session_by_client (client);
@@ -1238,7 +2370,7 @@
return;
}
- if (CONSENSUS_ROUND_BEGIN != session->current_round)
+ if (GNUNET_YES == session->conclude_started)
{
GNUNET_break (0);
GNUNET_SERVER_client_disconnect (client);
@@ -1258,11 +2390,19 @@
element->size = element_size;
memcpy (&element[1], &msg[1], element_size);
element->data = &element[1];
- GNUNET_SET_add_element (session->element_set, element, NULL, NULL);
+ {
+ struct SetKey key = { SET_KIND_CURRENT, 0, 0 };
+ struct SetEntry *entry;
+ entry = lookup_set (session, &key);
+ GNUNET_assert (NULL != entry);
+ initial_set = entry->h;
+ }
+ session->num_client_insert_pending++;
+ GNUNET_SET_add_element (initial_set, element, client_insert_done, session);
GNUNET_free (element);
GNUNET_SERVER_receive_done (client, GNUNET_OK);
- // GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: element added\n",
session->local_peer_idx);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: element added\n",
session->local_peer_idx);
}
@@ -1280,7 +2420,6 @@
{
struct ConsensusSession *session;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "conclude requested\n");
session = get_session_by_client (client);
if (NULL == session)
{
@@ -1289,24 +2428,24 @@
GNUNET_SERVER_client_disconnect (client);
return;
}
- if (CONSENSUS_ROUND_BEGIN != session->current_round)
+
+ if (GNUNET_YES == session->conclude_started)
{
- /* client requested conclude twice */
+ /* conclude started twice */
GNUNET_break (0);
+ GNUNET_SERVER_client_disconnect (client);
+ destroy_session (session);
return;
}
- if (session->num_peers <= 1)
- {
- session->current_round = CONSENSUS_ROUND_FINISH;
- GNUNET_SET_iterate (session->element_set, send_to_client_iter, session);
- }
- else
- {
- /* the 'begin' round is over, start with the next, actual round */
- round_over (session, NULL);
- }
- GNUNET_assert (CONSENSUS_ROUND_BEGIN != session->current_round);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "conclude requested\n");
+
+ session->conclude_started = GNUNET_YES;
+
+ install_step_timeouts (session);
+ run_ready_steps (session);
+
+
GNUNET_SERVER_receive_done (client, GNUNET_OK);
}
@@ -1343,17 +2482,11 @@
session = get_session_by_client (client);
if (NULL == session)
return;
- if ((CONSENSUS_ROUND_BEGIN == session->current_round) ||
- (CONSENSUS_ROUND_FINISH == session->current_round))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "client disconnected, destroying
session\n");
- destroy_session (session);
- return;
- }
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "client disconnected, but waiting for
consensus to finish\n");
+ // FIXME: destroy if we can
}
+
/**
* Start processing consensus requests.
*
Modified: gnunet/src/consensus/test_consensus.conf
===================================================================
--- gnunet/src/consensus/test_consensus.conf 2015-09-16 13:18:29 UTC (rev
36366)
+++ gnunet/src/consensus/test_consensus.conf 2015-09-22 01:20:28 UTC (rev
36367)
@@ -1,6 +1,8 @@
address@hidden@ ../../contrib/no_forcestart.conf
+
[consensus]
#PREFIX = gdbserver :12345
-#PREFIX = valgrind
+PREFIX = valgrind
OPTIONS = -L INFO
[transport]
@@ -9,14 +11,17 @@
[set]
OPTIONS = -L INFO
#PREFIX = valgrind --leak-check=full
-#PREFIX = valgrind
+PREFIX = valgrind
[testbed]
OVERLAY_TOPOLOGY = CLIQUE
[hostlist]
-SERVERS =
+AUTOSTART = NO
+[revocation]
+AUTOSTART = NO
+
[nat]
# Use addresses from the local network interfaces (inluding loopback, but also
others)
USE_LOCALADDR = YES
Modified: gnunet/src/set/gnunet-service-set.c
===================================================================
--- gnunet/src/set/gnunet-service-set.c 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/src/set/gnunet-service-set.c 2015-09-22 01:20:28 UTC (rev 36367)
@@ -339,7 +339,12 @@
{
struct MutationEvent *mut;
int is_present;
+ unsigned int i;
+ /* If ee->mutations is NULL,
+ the element was added in generation 0,
+ and there are no removes, thus the element
+ is part of any generation we query. */
if (NULL == ee->mutations)
return GNUNET_YES;
@@ -349,22 +354,38 @@
return GNUNET_NO;
}
- is_present = GNUNET_YES;
+ is_present = GNUNET_NO;
- // Could be made faster with binary search, but lists
- // are small, so why bother.
- for (mut = ee->mutations; 0 != mut->generation; mut++)
+ /* Could be made faster with binary search, but lists
+ are small, so why bother. */
+ for (i = 0; i < ee->mutations_size; i++)
{
- if ( (mut->generation > query_generation) ||
- (GNUNET_YES == is_excluded_generation (mut->generation, excluded,
excluded_size)) )
+ mut = &ee->mutations[i];
+
+ if (mut->generation > query_generation)
{
+ /* The mutation doesn't apply to our generation
+ anymore. We can'b break here, since mutations aren't
+ sorted by generation. */
continue;
}
- // This would be an inconsistency in how we manage mutations.
+ if (GNUNET_YES == is_excluded_generation (mut->generation, excluded,
excluded_size))
+ {
+ /* The generation is excluded (because it belongs to another
+ fork via a lazy copy) and thus mutations aren't considered
+ for membership testing. */
+ continue;
+ }
+
+ /* This would be an inconsistency in how we manage mutations. */
if ( (GNUNET_YES == is_present) && (GNUNET_YES == mut->added) )
GNUNET_assert (0);
+ /* Likewise. */
+ if ( (GNUNET_NO == is_present) && (GNUNET_NO == mut->added) )
+ GNUNET_assert (0);
+
is_present = mut->added;
}
@@ -816,7 +837,9 @@
ee->mutations = NULL;
ee->mutations_size = 0;
ee->element_hash = hash;
- } else if (GNUNET_YES == _GSS_is_element_of_set (ee, set)) {
+ }
+ else if (GNUNET_YES == _GSS_is_element_of_set (ee, set))
+ {
/* same element inserted twice */
GNUNET_break (0);
return;
@@ -829,7 +852,6 @@
.added = GNUNET_YES
};
GNUNET_array_append (ee->mutations, ee->mutations_size, mut);
- ee->mutations_size += 1;
}
GNUNET_break (GNUNET_YES ==
@@ -888,7 +910,6 @@
.added = GNUNET_NO
};
GNUNET_array_append (ee->mutations, ee->mutations_size, mut);
- ee->mutations_size += 1;
}
set->vt->remove (set->state, ee);
}
@@ -1263,8 +1284,6 @@
GNUNET_array_append (set->excluded_generations,
set->excluded_generations_size,
r);
-
- set->excluded_generations_size += 1;
}
/**
Modified: gnunet/src/set/gnunet-service-set.h
===================================================================
--- gnunet/src/set/gnunet-service-set.h 2015-09-16 13:18:29 UTC (rev 36366)
+++ gnunet/src/set/gnunet-service-set.h 2015-09-22 01:20:28 UTC (rev 36367)
@@ -323,6 +323,9 @@
*/
struct MutationEvent *mutations;
+ /**
+ * Number of elements in the array @a mutations.
+ */
unsigned int mutations_size;
/**
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r36367 - in gnunet: po src/consensus src/set,
gnunet <=